include Makeconf test-srcs := $(wildcard tests/*.cpp) emu-objs := $(addsuffix .o,$(modules)) test-objs := $(patsubst %.cpp,%.o,$(test-srcs)) clean-objs := $(emu-objs) $(test-objs) libemu.a vgbc vgbc.test vgbc.inspect main.o headers := $(wildcard */*.h) .PHONY: all test clean all: vgbc clean: rm -rf $(clean-objs) test: vgbc.test @echo " ... run test $<"; \ ./$< $(if $(V),-s,) %.o: %.cpp $(headers) @echo " ... build $@"; \ g++ $(CXX_FLAGS) -c -o $@ $< libemu.a: $(emu-objs) @echo " ... pack $@"; \ ar -rc $@ $^ vgbc: main.o libemu.a @echo " ==> link $@"; \ g++ $(CXX_FLAGS) -o $@ $^ vgbc.test: $(test-objs) libemu.a @echo " ==> link $@"; \ g++ $(CXX_FLAGS) -o $@ $^ vgbc.inspect: cartridge/inspector.o libemu.a @echo " ==> link $@"; \ g++ $(CXX_FLAGS) -o $@ $^