comparison Makefile.inc @ 474:b3b8f90bbbe6

Improve build system.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 02 Jul 2018 00:01:50 +0300
parents 8d31605c2f0f
children 1013ddd2759b
comparison
equal deleted inserted replaced
473:ea8c37f03e2c 474:b3b8f90bbbe6
12 12
13 INSTALL ?= install 13 INSTALL ?= install
14 MKDIR ?= mkdir 14 MKDIR ?= mkdir
15 MKDIR_P ?= $(MKDIR) -p 15 MKDIR_P ?= $(MKDIR) -p
16 16
17 NOBUILD_TARGETS += $(OBJPATH) $(BINPATH) 17
18 THLIBS_A = $(OBJPATH)thlibs.a
19 THLIBS_DEP += $(THLIBS)th_types.h $(THLIBS)th_util.h
20
21
22 NOBUILD_TARGETS +=
18 NOINST_TARGETS += $(THLIBS_A) 23 NOINST_TARGETS += $(THLIBS_A)
19 24
20 THLIBS_DEP += $(THLIBS)th_types.h $(THLIBS)th_util.h 25
26 COMPILE_OBJ = @if test ! -d $(OBJPATH); then mkdir -p $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $<
27 LINK_BIN = @if test ! -d $(BINPATH); then mkdir -p $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS)
28
21 29
22 ## 30 ##
23 ## Target rules 31 ## Target rules
24 ## 32 ##
25 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) 33 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
26 34
27 35
28 $(THLIBS)th_string.c: $(addprefix $(THLIBS), th_printf1.c th_strmatch.c th_string.h) 36 $(THLIBS)th_string.c: $(addprefix $(THLIBS), th_printf1.c th_strmatch.c th_string.h)
29 @touch $@ 37 @touch $@
30 38
31 $(OBJPATH) $(BINPATH): 39
32 @echo " MKDIR $@" 40 $(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS_DEP)
33 @$(MKDIR_P) $@ 41 $(COMPILE_OBJ)
34 42
35 $(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS)%.h $(THLIBS_DEP) 43 $(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS)%.h $(THLIBS_DEP)
36 @echo " CC $@" 44 $(COMPILE_OBJ) -I$(THLIBS)
37 @$(CC) $(CFLAGS) -c -o $@ $<
38 45
39 $(OBJPATH)%.o: %.c %.h $(THLIBS_DEP) 46 $(OBJPATH)%.o: %.c %.h $(THLIBS_DEP)
40 @echo " CC $@" 47 $(COMPILE_OBJ) -I$(THLIBS)
41 @$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)
42 48
43 $(OBJPATH)%.o: %.c $(THLIBS_DEP) 49 $(OBJPATH)%.o: %.c $(THLIBS_DEP)
44 @echo " CC $@" 50 $(COMPILE_OBJ) -I$(THLIBS)
45 @$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)
46 51
47 52
48 $(THLIBS_A): $(addprefix $(OBJPATH),$(THLIBS_OBJ)) 53 $(THLIBS_A): $(addprefix $(OBJPATH),$(THLIBS_OBJ))
49 @echo " AR $@ $(THLIBS_OBJ)" 54 @echo " AR $@ $(THLIBS_OBJ)"
50 @$(AR) cru $@ $(addprefix $(OBJPATH),$(THLIBS_OBJ)) 55 @$(AR) cru $@ $(addprefix $(OBJPATH),$(THLIBS_OBJ))
52 @$(RANLIB) $@ 57 @$(RANLIB) $@
53 58
54 ## 59 ##
55 ## Generate endian check and config.h 60 ## Generate endian check and config.h
56 ## 61 ##
57 $(ENDIANCHK_BIN): $(THLIBS)endianchk.c | $(BINPATH) $(OBJPATH) 62 $(OBJPATH)endianchk.o: $(THLIBS)endianchk.c
58 @echo " CC $@" 63 $(COMPILE_OBJ)
59 @$(CC) $(CFLAGS) -o $@ $< 64
65 $(ENDIANCHK_BIN): $(OBJPATH)endianchk.o
66 $(LINK_BIN)
60 67
61 config.h: $(ENDIANCHK_BIN) 68 config.h: $(ENDIANCHK_BIN)
62 $(ENDIANCHK_BIN) > $@ 69 $(ENDIANCHK_BIN) > $@
63 70
64 71