15 WARNINGS = -pedantic -Wall
16 CFLAGS = -std=gnu99 $(OPTIMIZE) $(WARNINGS)
25 v-tag = $(call v-tag.$V,$1,$2)
26 v-tag.0 = @printf " %-8s %s\n" '$1' '$2';
29 objify = $(addsuffix .o, \
31 $(filter $(addprefix %, $(SRCEXT)), \
35 compile = $(call v-tag,$1,$@)$($1) -c $(CFLAGS) $4 \
36 -MD -MF $(2:.o=.d) -o$2 $3
42 $(call compile,CC,$@,$<)
47 qp_WEBSRCS += Tbl.h Tbl.c
48 qp_WEBSRCS += qp.h qp.c qp-debug.c
49 qp_WEBSRCS += fn.h fn.c fn-debug.c
52 ALL_WEBSRCS = $(foreach w,$(WEBS:.w=), $($w_WEBSRCS))
53 CLEAN += $(ALL_WEBSRCS)
55 ALL_PDFS = $(WEBS:.w=.pdf)
56 TARGETS += $(ALL_PDFS)
57 CLEAN += $(foreach e,aux idx log out pdf scn tex toc, \
60 $(call v-tag,CWEAVE,$@)$(CWEAVE) $<
64 $(call v-tag,LATEX,$@)$(LATEX) --interaction=batchmode $<
66 otherwords = $(wordlist 2,$(words $1),$1)
69 $$(call otherwords,$$($1_WEBSRCS)): $$(firstword $$($1_WEBSRCS))
70 $$(firstword $$($1_WEBSRCS)): $1.w
71 $$(call v-tag,CTANGLE,$$<)$$(CTANGLE) $$<
73 $(foreach w,$(WEBS:.w=), $(eval $(call tangle-web,$w)))
74 %.c: %.w # don't use implicit rule
76 TARGETS += qptoy fntoy
82 qptoy_SRCS = $(COMMON_SRCS)
83 qptoy_SRCS += qp.c qp-debug.c
84 qptoy_OBJS = $(call objify,$(qptoy_SRCS))
85 DEPOBJS += $(qptoy_OBJS)
87 $(call v-tag,LD,$@)$(LD) $(LDFLAGS) -o$@ $+
90 fntoy_SRCS = $(COMMON_SRCS)
91 fntoy_SRCS += fn.c fn-debug.c
92 fntoy_OBJS = $(call objify,$(fntoy_SRCS))
93 DEPOBJS += $(fntoy_OBJS)
95 $(call v-tag,LD,$@)$(LD) $(LDFLAGS) -o$@ $+
99 clean::; rm -f $(CLEAN)
103 -include $(DEPOBJS:.o=.d)