changeset 474:b3b8f90bbbe6

Improve build system.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 02 Jul 2018 00:01:50 +0300
parents ea8c37f03e2c
children 77d1af382e08
files Makefile.gen Makefile.inc
diffstat 2 files changed, 22 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.gen	Sat Jun 09 16:44:37 2018 +0300
+++ b/Makefile.gen	Mon Jul 02 00:01:50 2018 +0300
@@ -23,8 +23,7 @@
 include $(THLIBS)/Makefile.inc
 
 $(TESTS_BIN): $(addprefix $(OBJPATH),$(TESTS_OBJ)) $(THLIBS_A)
-	@echo " LINK $@"
-	@$(CC) $(CFLAGS) -o $@ $+ $(LDFLAGS)
+	$(LINK_BIN)
 
 check: $(TESTS_BIN)
 	$(TESTS_BIN) -v
--- a/Makefile.inc	Sat Jun 09 16:44:37 2018 +0300
+++ b/Makefile.inc	Mon Jul 02 00:01:50 2018 +0300
@@ -14,10 +14,18 @@
 MKDIR ?= mkdir
 MKDIR_P ?= $(MKDIR) -p
 
-NOBUILD_TARGETS += $(OBJPATH) $(BINPATH)
+
+THLIBS_A = $(OBJPATH)thlibs.a
+THLIBS_DEP += $(THLIBS)th_types.h $(THLIBS)th_util.h
+
+
+NOBUILD_TARGETS +=
 NOINST_TARGETS += $(THLIBS_A)
 
-THLIBS_DEP += $(THLIBS)th_types.h $(THLIBS)th_util.h
+
+COMPILE_OBJ = @if test ! -d $(OBJPATH); then mkdir -p $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $<
+LINK_BIN = @if test ! -d $(BINPATH); then mkdir -p $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS)
+
 
 ##
 ## Target rules
@@ -28,21 +36,18 @@
 $(THLIBS)th_string.c: $(addprefix $(THLIBS), th_printf1.c th_strmatch.c th_string.h)
 	@touch $@
 
-$(OBJPATH) $(BINPATH):
-	@echo " MKDIR $@"
-	@$(MKDIR_P) $@
+
+$(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS_DEP)
+	$(COMPILE_OBJ)
 
 $(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS)%.h $(THLIBS_DEP)
-	@echo " CC $@"
-	@$(CC) $(CFLAGS) -c -o $@ $<
+	$(COMPILE_OBJ) -I$(THLIBS)
 
 $(OBJPATH)%.o: %.c %.h $(THLIBS_DEP)
-	@echo " CC $@"
-	@$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)
+	$(COMPILE_OBJ) -I$(THLIBS)
 
 $(OBJPATH)%.o: %.c $(THLIBS_DEP)
-	@echo " CC $@"
-	@$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)
+	$(COMPILE_OBJ) -I$(THLIBS)
 
 
 $(THLIBS_A): $(addprefix $(OBJPATH),$(THLIBS_OBJ))
@@ -54,9 +59,11 @@
 ##
 ## Generate endian check and config.h
 ##
-$(ENDIANCHK_BIN): $(THLIBS)endianchk.c | $(BINPATH) $(OBJPATH)
-	@echo " CC $@"
-	@$(CC) $(CFLAGS) -o $@ $<
+$(OBJPATH)endianchk.o: $(THLIBS)endianchk.c
+	$(COMPILE_OBJ)
+
+$(ENDIANCHK_BIN): $(OBJPATH)endianchk.o
+	$(LINK_BIN)
 
 config.h: $(ENDIANCHK_BIN)
 	$(ENDIANCHK_BIN) > $@