
prog   := complete-pdf romanize
srcdir := Util Page_no TOC PDF
warn   := -Wall -Wextra -Werror

allobj := $(foreach dir, $(srcdir), $(patsubst %.cc, %.o, \
  $(filter $(patsubst %.h, %.cc, $(wildcard $(dir)/*.h)), \
  $(wildcard $(dir)/*.cc))))

include Makefile-optim
clean := cleanless clean
.PHONY: FORCE all allobj $(clean)
all: $(prog)
ifeq ($(strip $(filter $(clean), $(MAKECMDGOALS))),)
  include $(patsubst %.cc, %.d, $(wildcard *.cc))
endif
allobj: $(allobj)
$(foreach dir, $(srcdir), $(dir)/%): FORCE; $(MAKE) -C $(@D) $(@F)
%.d: %.cc; g++ -MM $< | sed -e 's/:/ $*.d:/' >$@
%.o:; g++ $(warn) $(optim) -c $< -o $*.o

complete-pdf: complete-pdf.o $(allobj)
	g++ $(warn) $(optim) -lpoppler $^ -o $@

romanize: romanize.o Util/roman_numeral.o
	g++ $(warn) $(optim) $^ -o $@

a.out: test.o $(allobj)
	g++ $(warn) $(optim) -lpoppler $^ -o $@

cleanless:
	$(foreach dir, $(srcdir), $(MAKE) -C $(dir) clean ;)
	rm -fv *.d *.o *.gch a.out
clean: cleanless; rm -fv $(prog)

