configure: add a proper configure script
It's not very good, but it supports all of the options by the previous far-worse Makefile configure targets, and also now supports out-of-tree builds. Also include the relevent updates to the .buildbot script and .gitignore.
This commit is contained in:
62
Makefile
Executable file → Normal file
62
Makefile
Executable file → Normal file
@@ -1,82 +1,50 @@
|
||||
build=OUT
|
||||
COV_DIR=$(OUT)/coverage/
|
||||
SRC_DIR=src
|
||||
APP_DIR=src/apps/
|
||||
OUT=build
|
||||
CONFIG = config.mak
|
||||
|
||||
include $(CONFIG)
|
||||
|
||||
CONFIGURE = $(SRC_DIR)/
|
||||
|
||||
COV_DIR=$(OUT)/coverage/
|
||||
APP_DIR=$(SRC_DIR)/apps/
|
||||
CC=gcc
|
||||
|
||||
CCFLAGS = -Wall -Werror
|
||||
CCFLAGS += -std=c99 -D_POSIX_C_SOURCE=200809L
|
||||
CCFLAGS += -I$(SRC_DIR)
|
||||
|
||||
.PHONY: release debug
|
||||
|
||||
CONFIG = $(OUT)/.config.mk
|
||||
|
||||
-include $(CONFIG)
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
CCFLAGS += -DLOG_LEVEL=5 -DDEBUG
|
||||
CCFLAGS += -O0 -ggdb
|
||||
endif
|
||||
|
||||
ifeq ($(COVERAGE), 1)
|
||||
LDFLAGS += -lgcov --coverage
|
||||
CCFLAGS += -O0 --coverage
|
||||
CCFLAGS += -fprofile-arcs -ftest-coverage
|
||||
endif
|
||||
|
||||
ifeq ($(RELEASE), 1)
|
||||
CCFLAGS += -O3
|
||||
endif
|
||||
|
||||
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)
|
||||
LDFLAGS += $(LDFLAGS_EXTRA)
|
||||
|
||||
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))
|
||||
TEST_OBJS = $(filter $(OUT)%test.o, $(ALL_OBJS))
|
||||
OBJS = $(filter-out $(TEST_OBJS) $(APP_OBJS), $(ALL_OBJS))
|
||||
APPS = $(patsubst %.o, %, $(APP_OBJS))
|
||||
|
||||
.PHONY: all
|
||||
all: gbdb gbasm tests
|
||||
|
||||
.PHONY: config-debug config-release config-default config-coverage
|
||||
|
||||
$(CONFIG):
|
||||
@mkdir -p $(OUT)
|
||||
|
||||
config-debug: $(CONFIG)
|
||||
@echo "DEBUG=1" > $(CONFIG)
|
||||
|
||||
config-release: $(CONFIG)
|
||||
@echo "RELEASE=1" > $(CONFIG)
|
||||
|
||||
config-coverage: $(CONFIG)
|
||||
@echo "COVERAGE=1" > $(CONFIG)
|
||||
|
||||
config-default: $(CONFIG)
|
||||
@echo "" > $(CONFIG)
|
||||
|
||||
.PHONY: gbdb gbasm
|
||||
|
||||
gbdb: $(OUT)/apps/gbdb
|
||||
gbasm: $(OUT)/apps/gbasm
|
||||
|
||||
.PHONY: gbasm-test sample-test tests
|
||||
.PHONY: gbasm-test tests
|
||||
|
||||
TESTS = $(patsubst %.o, %, $(filter %/test.o, $(ALL_OBJS)))
|
||||
tests: $(TESTS)
|
||||
|
||||
$(ALL_APPS) $(ALL_OBJS): $(CONFIG)
|
||||
|
||||
$(OUT)/%.o: $(SRC_DIR)/%.c
|
||||
$(OUT)/%.o: $(SRC_DIR)/%.c $(CONFIG)
|
||||
@echo " CC $@"
|
||||
@$(shell mkdir -p $(@D))
|
||||
@$(CC) -c $(CCFLAGS) -o $@ $<
|
||||
|
||||
|
||||
.SECONDEXPANSION:
|
||||
$(APPS) $(TESTS): $(OBJS) $$@.o
|
||||
@echo " LD $@"
|
||||
@@ -89,7 +57,7 @@ $(APPS) $(TESTS): $(OBJS) $$@.o
|
||||
define run_tests =
|
||||
@for i in $(TESTS); do \
|
||||
echo " TEST $$i"; \
|
||||
$$i; \
|
||||
$$i | sed 's/^/ /'; \
|
||||
if [ $$? -ne 0 ]; then \
|
||||
exit 1; \
|
||||
fi; \
|
||||
|
||||
Reference in New Issue
Block a user