diff --git a/Makefile b/Makefile index 502f3cc..9b44abc 100644 --- a/Makefile +++ b/Makefile @@ -19,13 +19,23 @@ LDFLAGS += -lglib-2.0 CCFLAGS += $(CCFLAGS_EXTRA) LDFLAGS += $(LDFLAGS_EXTRA) +FILTER = $(foreach v,$(2),$(if $(findstring $(1),$(v)),$(v),)) + C_SOURCES = $(shell find $(SRC_DIR) -name "*.c") -ALL_OBJS = $(patsubst $(SRC_DIR)/%.c, $(OUT)/%.o, $(C_SOURCES)) +ALL_OBJS = $(patsubst $(SRC_DIR)%.c, $(OUT)%.o, $(C_SOURCES)) APP_OBJS = $(filter $(OUT)/apps/%, $(ALL_OBJS)) -TEST_OBJS = $(filter $(OUT)%test.o, $(ALL_OBJS)) +TEST_OBJS = $(call FILTER,/tests/, $(ALL_OBJS)) OBJS = $(filter-out $(TEST_OBJS) $(APP_OBJS), $(ALL_OBJS)) APPS = $(patsubst %.o, %, $(APP_OBJS)) +$(info SRC_DIR is ${SRC_DIR}) +$(info OUT is ${OUT}) +$(info C_SOURCES is ${C_SOURCES}) +$(info OBJSs ${OBJS}) +$(info ALL_OBJS is ${ALL_OBJS}) +$(info APP_OBJS is ${APP_OBJS}) +$(info TEST_OBJS is ${TEST_OBJS}) + .PHONY: all all: gbdb gbasm tests @@ -38,19 +48,21 @@ gbasm: $(OUT)/apps/gbasm TESTS = $(patsubst %.o, %, $(filter %/test.o, $(ALL_OBJS))) tests: $(TESTS) -$(ALL_APPS) $(ALL_OBJS): $(CONFIG) +$(ALL_OBJS): $(CONFIG) -$(OUT)/%.o: $(SRC_DIR)/%.c $(CONFIG) +$(OUT)%.o: $(SRC_DIR)%.c $(CONFIG) @echo " CC $@" - @$(shell mkdir -p $(@D)) - @$(CC) -c $(CCFLAGS) -o $@ $< + $(shell mkdir -p $(@D)) + $(CC) -c $(CCFLAGS) -o $@ $< +objs: $(OBJS) + $(info OBJS=$(OBJS)) .SECONDEXPANSION: $(APPS) $(TESTS): $(OBJS) $$@.o @echo " LD $@" @$(shell mkdir -p $(@D)) - @$(CC) $^ $(LDFLAGS) -o $@ + $(CC) $^ $(LDFLAGS) -o $@ .PHONY: check cov-report diff --git a/configure b/configure index c5015c3..4fcfacc 100755 --- a/configure +++ b/configure @@ -6,7 +6,7 @@ MAKEFILE=Makefile debug="no" coverage="no" release="no" -output_dir=$(pwd) +output_dir="." proj_dir=$(dirname "$BASH_SOURCE") for arg in $@; do