# HG changeset patch # User Matti Hamalainen # Date 1530478910 -10800 # Node ID b3b8f90bbbe660b4ac827130cd8b971195923b1f # Parent ea8c37f03e2c9ef7399bb1cc5919a810df9a78c7 Improve build system. diff -r ea8c37f03e2c -r b3b8f90bbbe6 Makefile.gen --- 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 diff -r ea8c37f03e2c -r b3b8f90bbbe6 Makefile.inc --- 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) > $@