build: make the build emit relative paths
This commit is contained in:
39
Makefile
39
Makefile
@@ -2,16 +2,16 @@ CONFIG=config.mak
|
||||
|
||||
include $(CONFIG)
|
||||
|
||||
COV_DIR=$(OUT)coverage/
|
||||
APP_DIR=$(SRC_DIR)apps/
|
||||
COV_DIR=./coverage
|
||||
APP_DIR=$(SRC_DIR)apps
|
||||
CC=gcc
|
||||
SHELL=/bin/bash
|
||||
|
||||
CCFLAGS = -Wall -Werror
|
||||
CCFLAGS += -std=c99 -D_POSIX_C_SOURCE=200809L
|
||||
CCFLAGS += -std=c11 -D_POSIX_C_SOURCE=200809L
|
||||
CCFLAGS += -I$(SRC_DIR)
|
||||
|
||||
CCFLAGS += -I/usr/include/glib-2.0/
|
||||
CCFLAGS += -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
|
||||
LDFLAGS += -lglib-2.0
|
||||
|
||||
CCFLAGS += $(CCFLAGS_EXTRA)
|
||||
@@ -19,31 +19,33 @@ 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))
|
||||
APP_OBJS = $(filter $(OUT)apps/%, $(ALL_OBJS))
|
||||
C_SOURCES = $(shell find $(SRC_DIR) -name "*.c" -type f -print)
|
||||
ALL_OBJS = $(patsubst $(SRC_DIR)/%.c, %.o, $(C_SOURCES))
|
||||
APP_OBJS = $(filter apps/%, $(ALL_OBJS))
|
||||
TEST_OBJS = $(call FILTER,/tests/, $(ALL_OBJS))
|
||||
OBJS = $(filter-out $(TEST_OBJS) $(APP_OBJS), $(ALL_OBJS))
|
||||
APPS = $(patsubst %.o, %, $(APP_OBJS))
|
||||
|
||||
.PHONY: all
|
||||
all: gbdb gbasm tests
|
||||
all: $(APPS)
|
||||
|
||||
.PHONY: gbdb gbasm
|
||||
gbdb: $(OUT)apps/gbdb
|
||||
gbasm: $(OUT)apps/gbasm
|
||||
gbdb: apps/gbdb
|
||||
gbasm: apps/gbasm
|
||||
threading: apps/threading
|
||||
|
||||
.PHONY: gbasm-test tests
|
||||
.PHONY: gbasm-test tests threading
|
||||
|
||||
TESTS = $(patsubst %.o, %, $(filter %/test.o, $(ALL_OBJS)))
|
||||
tests: $(TESTS)
|
||||
|
||||
$(ALL_OBJS): $(CONFIG)
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
.PHONY: info
|
||||
info:
|
||||
$(info SRC_DIR is ${SRC_DIR})
|
||||
$(info OUT is ${OUT})
|
||||
$(info C_SOURCES is ${C_SOURCES})
|
||||
$(info OBJSs is ${OBJS})
|
||||
$(info ALL_OBJS is ${ALL_OBJS})
|
||||
@@ -51,10 +53,10 @@ info:
|
||||
$(info TEST_OBJS is ${TEST_OBJS})
|
||||
|
||||
|
||||
$(OUT)%.o: $(SRC_DIR)%.c $(CONFIG)
|
||||
$(ALL_OBJS): %.o: $(SRC_DIR)/%.c $(CONFIG)
|
||||
@echo " CC $@"
|
||||
$(shell mkdir -p $(@D))
|
||||
$(CC) -c $(CCFLAGS) -o $@ $<
|
||||
@$(CC) -c $(CCFLAGS) -o $@ $<
|
||||
|
||||
objs: $(OBJS)
|
||||
$(info OBJS=$(OBJS))
|
||||
@@ -62,9 +64,8 @@ objs: $(OBJS)
|
||||
.SECONDEXPANSION:
|
||||
$(APPS) $(TESTS): $(OBJS) $$@.o
|
||||
@echo " LD $@"
|
||||
@echo " objs=$^"
|
||||
@$(shell mkdir -p $(@D))
|
||||
$(CC) $^ $(LDFLAGS) -o $@
|
||||
@$(CC) $^ $(LDFLAGS) -o $@
|
||||
|
||||
.PHONY: check cov-report
|
||||
|
||||
@@ -86,11 +87,11 @@ COV_BASE=$(COV_DIR)cov_base.info
|
||||
.PHONY: $(COV_BASE)
|
||||
$(COV_BASE):
|
||||
@mkdir -p $(COV_DIR)
|
||||
@lcov -q -c -i -d $(OUT) -o $(COV_BASE)
|
||||
@lcov -q -c -i -d ./ -o $(COV_BASE)
|
||||
|
||||
$(COV_DIR)coverage.info coverage: $(TESTS) $(COV_BASE)
|
||||
$(call run_tests)
|
||||
@lcov -q -c -d $(OUT) -o $(COV_DIR)results.info -t results
|
||||
@lcov -q -c -d ./ -o $(COV_DIR)results.info -t results
|
||||
@lcov -q -a $(COV_DIR)results.info -o $(COV_DIR)coverage.info
|
||||
@lcov --summary $(COV_DIR)coverage.info
|
||||
|
||||
@@ -103,7 +104,7 @@ coverage-report: coverage
|
||||
.PHONY: clean realclean cov-clean
|
||||
|
||||
cov-clean:
|
||||
@find $(OUT) \( -iname *.gcno -o -iname *.gcda \) -delete
|
||||
@find ./ \( -iname *.gcno -o -iname *.gcda \) -delete
|
||||
@rm -rf $(COV_DIR)
|
||||
|
||||
clean: cov-clean
|
||||
|
||||
Reference in New Issue
Block a user