CXX=g++ CXXOPTS=-Og -ggdb -Wall -Wextra -pedantic -std=c++14 -flto LDOPTS= iffexplore_CXXSRCS ::= iffexplore.cc IffFile.cc util.cc exceptions.cc iffexplore_LIBS ::= treexplore_CXXSRCS ::= treexplore.cc TreFile.cc IffFile.cc util.cc exceptions.cc treexplore_LIBS ::= font2png_CXXSRCS ::= font2png.cc font2png_LIBS ::= -lpng mvedecode_CXXSRCS ::= mvedecode.cc TreFile.cc IffFile.cc util.cc MveDecoder.cc exceptions.cc mvedecode_LIBS ::= -lSDL2 progs ::= iffexplore treexplore mvedecode all: $(progs) objs/%.o: %.cc $(CXX) $(CXXOPTS) -c -MMD -MP -o $@ $< @cp objs/$*.d objs/$*.P; rm -f objs/$*.d %.pb.cc %.pb.h: %.proto protoc --cpp_out=. $< $(progs): %: $(CXX) $(CXXOPTS) $(LDOPTS) -o $@ $^ $($(@)_LIBS) clean: rm -f $(progs)\ $(foreach prog,$(progs),$(addprefix objs/,$($(prog)_CXXSRCS:.cc=.o)))\ $(foreach prog,$(progs),$(addprefix objs/,$($(prog)_CXXSRCS:.cc=.P))) .PHONY: clean all -include $(foreach prog,$(progs),$(addprefix objs/,$($(prog)_CXXSRCS:.cc=.P))) .SECONDEXPANSION: $(progs): %: $$(addprefix objs/,$$($$@_CXXSRCS:.cc=.o))