1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
TXT=$(wildcard *.txt)
OUT=$(TXT:.txt=.out)
all: codes.dat
# Extract originally shipped codes.
codes.out: ../../codes.dat Makefile
# Avoid interactive prompt from "dat".
rm -f *codes
dat -e $< '*'
# Inject column 2.
sed -e 's/\r//g' *codes | awk -F'\t' '{out=$$1"\tGeneric"; for (i=2;i<=NF;i++) { out=out"\t"$$i }; print out}' > $@
# Inject origin column from public codes.
%.out: %.txt Makefile
# Inject column 2 based on file name.
set -e; \
origin=$$(echo $< | cut -d- -f2 | cut -d. -f1); \
awk -F"\t" '{out=$$1"\t'$$origin'"; for (i=2;i<=NF;i++) { out=out"\t"$$i }; print out}' $< > $@
# Build Allegro objects based on code prefix.
codes.dat: codes.out $(OUT)
# Use only unique entries, without ;-prefixed comments.
sort -u $^ | grep -v '^;' >all.out
rm -f $@.new
set -e; for code in $$(cut -c1 all.out | sort -u); do \
lower=$$(echo $$code | tr A-Z a-z); \
grep ^$$code all.out > $${lower}codes; \
dat -a $@.new $${lower}codes; \
done
mv $@.new $@
clean:
rm -rf *codes *.out codes.dat*
|