## Initialize variables DU_NUM=du4 RO_PATH=public-ro/mlc RO_PATH_DU=${RO_PATH}/${DU_NUM} RO_PATH_COMMON=public-ro/common RW_PATH=public-rw/SWI098 RW_PATH_DU=${RW_PATH}/${DU_NUM} CFLAGS+=-Wall -I. -I${RO_PATH_DU}/h/ -I${RO_PATH}/h/ -I${RO_PATH_COMMON}/h/ -I${RW_PATH_DU} ## Final build of the program program: gen_ainstr.hpp gen_icinstr.hpp gen_icopcodes.hpp gen_icinstrtab.o gen_icfactory.o gen_aifactory.o ${DU_NUM}.o ${DU_NUM}g.o ${DU_NUM}baseerrtab.o duseemptyerrtab.o duerr.o dutables.o abstract_ic.o flat_icblock.o ic_instr.o labeled_icblock.o uid_gen.o flex.o ${DU_NUM}sem.o ${CXX} ${LDFLAGS} -o program gen_icinstrtab.o gen_icfactory.o gen_aifactory.o ${DU_NUM}.o ${DU_NUM}g.o ${DU_NUM}baseerrtab.o duseemptyerrtab.o duerr.o dutables.o abstract_ic.o flat_icblock.o ic_instr.o labeled_icblock.o uid_gen.o flex.o ${DU_NUM}sem.o ## Sources in ${RO_PATH_DU}/src ${DU_NUM}.o: ${RO_PATH_DU}/h/${DU_NUM}.h ${RO_PATH_DU}/h/${DU_NUM}tok.h ${RO_PATH}/h/duerr.h ${RO_PATH}/h/dutables.h ${RO_PATH_DU}/src/${DU_NUM}.cpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_DU}/src/${DU_NUM}.cpp ${DU_NUM}baseerrtab.o: ${RO_PATH}/h/duerr.h ${RO_PATH_DU}/src/${DU_NUM}baseerrtab.cpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_DU}/src/${DU_NUM}baseerrtab.cpp ## Sources in ${RO_PATH}/src duerr.o: ${RO_PATH}/h/duerr.h ${RO_PATH}/src/duerr.cpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH}/src/duerr.cpp duseemptyerrtab.o: ${RO_PATH}/h/duerr.h ${RO_PATH}/src/dusememptyerrtab.cpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH}/src/dusememptyerrtab.cpp dutables.o: ${RO_PATH}/h/dutables.h ${RO_PATH_COMMON}/h/literal_storage.hpp ${RO_PATH}/h/duerr.h ${RO_PATH}/src/dutables.cpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH}/src/dutables.cpp ## Sources in ${RO_PATH_COMMON}/src abstract_ic.o: ${RO_PATH_COMMON}/h/abstract_ic.hpp ${RO_PATH_COMMON}/h/flat_icblock.hpp ${RO_PATH_COMMON}/h/labeled_icblock.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_COMMON}/src/abstract_ic.cpp flat_icblock.o: ${RO_PATH_COMMON}/h/flat_icblock.hpp ${RO_PATH_COMMON}/h/file_seq.hpp ${RO_PATH_COMMON}/h/ic_factory.hpp ${RO_PATH_COMMON}/h/ic_instr.hpp ${RO_PATH_COMMON}/h/ic_instrtab.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_COMMON}/src/flat_icblock.cpp ic_instr.o: ${RO_PATH_COMMON}/h/ic_instr.hpp ${RO_PATH_COMMON}/h/ic_instrtab.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_COMMON}/src/ic_instr.cpp labeled_icblock.o: ${RO_PATH_COMMON}/h/labeled_icblock.hpp ${RO_PATH_COMMON}/h/ic_instrtab.hpp ${RO_PATH_COMMON}/h/ai_factory.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_COMMON}/src/labeled_icblock.cpp uid_gen.o: ${RO_PATH_COMMON}/h/uid_gen.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RO_PATH_COMMON}/src/uid_gen.cpp ## bison ${DU_NUM}g.o: ${DU_NUM}g.cpp ${RO_PATH_DU}/h/${DU_NUM}.h ${RO_PATH}/h/duerr.h ${RW_PATH_DU}/${DU_NUM}lval.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c $< ${DU_NUM}g.cpp: ${RW_PATH_DU}/${DU_NUM}g.y bison --report=all -d -o $@ $< ${DU_NUM}g.hpp: ${DU_NUM}g.cpp ${DU_NUM}sem.o: ${RW_PATH_DU}/${DU_NUM}sem.cpp ${RW_PATH_DU}/${DU_NUM}sem.h ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c ${RW_PATH_DU}/${DU_NUM}sem.cpp ## flex flex.o: flex.cpp ${RO_PATH}/h/duerr.h ${RO_PATH_DU}/h/${DU_NUM}.h ${RO_PATH_DU}/h/${DU_NUM}tok.h ${DU_NUM}g.hpp ${RW_PATH_DU}/${DU_NUM}lval.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c flex.cpp flex.cpp: ${RW_PATH_DU}/${DU_NUM}l.lex flex -Cf -b -p -p -o $@ $< ## XML stuff gen_aifactory.cpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genaifctrc.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_ainstr.hpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genainstrh.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_icfactory.cpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genicfctrc.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_icinstr.hpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genicinstrh.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_icopcodes.hpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genicoph.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_icinstrtab.cpp: xsltproc --output $@ ${RO_PATH_COMMON}/xml/genictabc.xslt ${RO_PATH_COMMON}/xml/icminstr.xml gen_icinstrtab.o: gen_icinstrtab.cpp gen_ainstr.hpp gen_icinstr.hpp gen_icopcodes.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c gen_icinstrtab.cpp gen_icfactory.o: gen_icfactory.cpp gen_ainstr.hpp gen_icinstr.hpp gen_icopcodes.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c gen_icfactory.cpp gen_aifactory.o: gen_aifactory.cpp gen_ainstr.hpp gen_icinstr.hpp gen_icopcodes.hpp ${CXX} ${CPPFLAGS} ${CFLAGS} -o $@ -c gen_aifactory.cpp ## Clean up clean: rm -f flex.cpp *.o program du*-test* lex.backup ${DU_NUM}g.* gen_* ## Checking of results check: program ${DU_NUM}-test1 ${DU_NUM}-test1: @./program ${RO_PATH_DU}/tests/$@.mls > $@.out @dos2unix -k $@.out >/dev/null 2>&1 @if diff -u ${RO_PATH_DU}/tests/$@.out $@.out > $@.diff; then \ echo $@ " OK ;)"; \ else \ echo "problem, nefunguje vse jak ma. rozdil ve vysledcich je v souboru :" $@.diff; \ fi @rm -f $@.out