From 829475ed94008b3e1e6a1bafcbd9e84d3f42e314 Mon Sep 17 00:00:00 2001 From: Jim Huang Date: Tue, 20 Mar 2018 06:15:44 +0800 Subject: [PATCH] Clean up top-level build rules The ideal build system is modular and extensive. Directory mk/ is used for placeholder of various build targets and helpers. --- Makefile | 19 +++---------------- mk/common.mk | 32 ++++++++++++++++++++++++-------- mk/java.mk | 1 + 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 7b6b4d4..04ba02a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -SRC ?= ./src OUT ?= ./build +SRC := src CFLAGS = -Os -fPIC -g LDFLAGS = -lpthread @@ -57,14 +57,11 @@ OBJS += \ endif OBJS := $(addprefix $(OUT)/, $(OBJS)) -deps := $(OBJS:%.o=%.o.d) - -SHELL_HACK := $(shell mkdir -p $(OUT)) -SHELL_HACK := $(shell mkdir -p $(addprefix $(OUT)/,jni)) +#deps := $(OBJS:%.o=%.o.d) $(OUT)/test-%.o: tests/test-%.c $(VECHO) " CC\t$@\n" - $(Q)$(CC) -o $@ $(CFLAGS) -I src -c -MMD -MF $@.d $< + $(Q)$(CC) -o $@ $(CFLAGS) -I $(SRC) -c -MMD -MF $@.d $< $(OUT)/%.o: $(SRC)/%.c $(VECHO) " CC\t$@\n" @@ -83,16 +80,6 @@ $(OUT)/test-multi_pow_%: tests/test-multi_pow_%.py $(OUT)/libdcurl.so $(call py_prepare_cmd) $(Q)chmod +x $@ -$(OUT)/test-%.done: $(OUT)/test-% - $(Q)$(PRINTF) "*** Validating $< ***\n" - $(Q)./$< && $(PRINTF) "\t$(PASS_COLOR)[ Verified ]$(NO_COLOR)\n" -check: $(addsuffix .done, $(TESTS)) - -clean: - $(RM) -r $(OUT) -distclean: clean - $(RM) local.mk - include mk/common.mk include mk/python.mk -include $(deps) diff --git a/mk/common.mk b/mk/common.mk index 54ddba7..6712a92 100644 --- a/mk/common.mk +++ b/mk/common.mk @@ -1,21 +1,32 @@ +# Always ensure directory build exist +SHELL_HACK := $(shell mkdir -p $(OUT)) + +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) + PRINTF = printf +else + PRINTF = env printf +endif + # Control the build verbosity ifeq ("$(VERBOSE)","1") Q := VECHO = @true else Q := @ - VECHO = @printf + VECHO = @$(PRINTF) endif +# dependency of source files +deps := $(OBJS:%.o=%.o.d) + +# Test suite PASS_COLOR = \e[32;01m NO_COLOR = \e[0m - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Darwin) - PRINTF = printf -else - PRINTF = env printf -endif +$(OUT)/test-%.done: $(OUT)/test-% + $(Q)$(PRINTF) "*** Validating $< ***\n" + $(Q)./$< && $(PRINTF) "\t$(PASS_COLOR)[ Verified ]$(NO_COLOR)\n" +check: $(addsuffix .done, $(TESTS)) config: $(OUT)/config-timestamp @@ -23,3 +34,8 @@ $(OUT)/config-timestamp: $(OUT)/local.mk $(Q)touch $@ $(OUT)/local.mk: $(Q)cp -f mk/defs.mk $@ + +clean: + $(RM) -r $(OUT) +distclean: clean + $(RM) local.mk diff --git a/mk/java.mk b/mk/java.mk index 5ddc232..89313fd 100644 --- a/mk/java.mk +++ b/mk/java.mk @@ -29,6 +29,7 @@ ifndef CURL $(error "curl is not available.") endif +SHELL_HACK := $(shell mkdir -p $(addprefix $(OUT)/,jni)) SHELL_HACK := $(shell mkdir -p $(OUT)/com/iota/iri/hash) GITHUB_REPO ?= chenwei-tw/iri/feat/new_pow_interface