include Makeconf emu-objs := $(addsuffix .o,$(modules)) test-targets := $(patsubst %,tests/%.bin, $(tests)) clean-objs := $(emu-objs) $(test-targets) libemu.a vgbc .PHONY: all test clean all: vgbc $(test-targets) clean: rm -rf $(clean-objs) test: $(test-targets) @for test in $(tests); do \ if ./tests/$$test.bin; then \ echo "-- $$test successful"; \ else \ echo "-- $$test failed"; \ exit 1; \ fi \ done %.o: %.cpp g++ $(CXX_FLAGS) -c -o $@ $^ libemu.a: $(emu-objs) ar -rc $@ $^ tests/%.bin: tests/%.cpp libemu.a g++ $(CXX_FLAGS) -o $@ $^ vgbc: main.c libemu.a g++ $(CXX_FLAGS) -o $@ $^