# qc のデフォルトのフラグ(オプション) #QFLAGS = -4 SOURCES = $(wildcard *.q) .PHONY: exes asms 1 2 3 4 all clean distclean # 全てのソース(*.q)から,デフォルトのフラグで実行ファイルを生成する exes: $(patsubst %.q,%,$(SOURCES)) # 全てのソースから,デフォルトのフラグでアセンブリコード(*.s)を生成する asms: $(patsubst %.q,%.s,$(SOURCES)) # 全てのソースから,意味解析前の構文木(*1.tree)を生成する 1: $(patsubst %.q,%1.tree,$(SOURCES)) # 全てのソースから,意味解析後の構文木(*2.tree)を生成する 2: $(patsubst %.q,%2.tree,$(SOURCES)) # 全てのソースから,-3 オプションでアセンブリコード(*3.s)を生成する 3: $(patsubst %.q,%3.s,$(SOURCES)) # 全てのソースから,-4 オプションでアセンブリコード(*4.s)を生成する 4: $(patsubst %.q,%4.s,$(SOURCES)) # 全てのソースから,-3 オプションで実行コード(*3)を生成する exe3: $(patsubst %.q,%3,$(SOURCES)) # 全てのソースから,-4 オプションで実行コード(*4)を生成する exe4: $(patsubst %.q,%4,$(SOURCES)) all: 1 2 3 exe3 4 exe4 ../src/qc: $(MAKE) -C ../src # ソース(*.q)から,デフォルトのフラグでアセンブリコード(*.s)を生成する %.s: %.q ../src/qc ../src/qc $(QFLAGS) <$< >$@ # ソース(*.q)から,意味解析前の構文木(*1.tree)を生成する %1.tree: %.q ../src/qc ../src/qc -1 <$< >$@ # ソース(*.q)から,意味解析後の構文木(*2.tree)を生成する %2.tree: %.q ../src/qc ../src/qc -2 <$< >$@ # ソース(*.q)から,-3 オプションでアセンブリコード(*3.s)を生成する %3.s: %.q ../src/qc ../src/qc -3 <$< >$@ # ソース(*.q)から,-4 オプションでアセンブリコード(*4.s)を生成する %4.s: %.q ../src/qc ../src/qc -4 <$< >$@ index.html: Makefile $(SOURCES) { echo -n "
"; ls -ld .. Makefile $(SOURCES) \
	| sed -e 's/\([^ ]*\)$$/\1<\/a>/'; echo "
"; }>index.html clean: $(RM) core *.stackdump *~ distclean: clean $(RM) $(patsubst %.q,%.s,$(SOURCES)) $(RM) $(patsubst %.q,%,$(SOURCES)) $(RM) $(patsubst %.q,%[12].tree,$(SOURCES)) $(RM) $(patsubst %.q,%[34].s,$(SOURCES)) $(RM) $(patsubst %.q,%[34],$(SOURCES)) make index.html