comparison Makefile.gen @ 2418:8abdd95139d6

Build system cleanups: reordering, more comments.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 Jan 2020 03:01:00 +0200
parents 9b4958ef4af2
children 510837da62aa
comparison
equal deleted inserted replaced
2417:9b4958ef4af2 2418:8abdd95139d6
25 DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS) 25 DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS)
26 DM_LDFLAGS += $(LDFLAGS) 26 DM_LDFLAGS += $(LDFLAGS)
27 27
28 28
29 ### 29 ###
30 ### Paths and directories 30 ### Tools, paths and directories
31 ### 31 ###
32 MKDIR ?= mkdir 32 MKDIR ?= mkdir
33 MKDIR_P ?= $(MKDIR) -p 33 MKDIR_P ?= $(MKDIR) -p
34 BINPATH ?= ./ 34 BINPATH ?= ./
35 DMLIB ?= ./ 35 DMLIB ?= ./
38 38
39 TOOL_BINPATH ?= $(TOOL_SRC) 39 TOOL_BINPATH ?= $(TOOL_SRC)
40 TESTS_BINPATH ?= $(TESTS_SRC) 40 TESTS_BINPATH ?= $(TESTS_SRC)
41 41
42 DMLIB_SRC = $(DMLIB)src/ 42 DMLIB_SRC = $(DMLIB)src/
43
44 43
45 44
46 ### 45 ###
47 ### Extra debug messages etc? 46 ### Extra debug messages etc?
48 ### 47 ###
292 endif 291 endif
293 endif 292 endif
294 293
295 294
296 ### 295 ###
297 ### Functions and compilation/link commands
298 ###
299 ifneq ($(V),1)
300 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
301 else
302 DO_CMD=/bin/echo -E $(3) && $(3)
303 endif
304 DO_MKDIR=if test ! -d "$(1)"; then mkdir -p "$(1)"; fi
305
306
307 COMPILE_C_OBJ = \
308 @$(call DO_MKDIR,$(OBJPATH)) ; \
309 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
310
311 LINK_C_BIN = \
312 @$(call DO_MKDIR,$(BINPATH)) ; \
313 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
314
315 COMPILE_CXX_OBJ = \
316 @$(call DO_MKDIR,$(OBJPATH)) ; \
317 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
318
319 LINK_CXX_BIN = \
320 @$(call DO_MKDIR,$(BINPATH)) ; \
321 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
322
323 LINK_STATIC_LIB = \
324 @$(call DO_MKDIR,$(OBJPATH)) ; \
325 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
326 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
327
328
329 ###
330 ### Main targets and objects 296 ### Main targets and objects
331 ### 297 ###
332 DMLIB_A = $(OBJPATH)dmlib.a 298 DMLIB_A = $(OBJPATH)dmlib.a
333 DMLIB_OBJS += \ 299 DMLIB_OBJS += \
334 dmfile.o dmlib.o dmcurves.o dmstring.o \ 300 dmfile.o dmlib.o dmcurves.o dmstring.o \
347 313
348 NOBUILD_TARGETS += 314 NOBUILD_TARGETS +=
349 NOINST_TARGETS += 315 NOINST_TARGETS +=
350 316
351 317
318 ###
319 ### Functions and compilation/link commands
320 ###
321 ifneq ($(V),1)
322 DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
323 else
324 DO_CMD=/bin/echo -E $(3) && $(3)
325 endif
326 DO_MKDIR=if test ! -d "$(1)"; then mkdir -p "$(1)"; fi
327
328
329 COMPILE_C_OBJ = \
330 @$(call DO_MKDIR,$(OBJPATH)) ; \
331 $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
332
333 LINK_C_BIN = \
334 @$(call DO_MKDIR,$(BINPATH)) ; \
335 $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
336
337 COMPILE_CXX_OBJ = \
338 @$(call DO_MKDIR,$(OBJPATH)) ; \
339 $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
340
341 LINK_CXX_BIN = \
342 @$(call DO_MKDIR,$(BINPATH)) ; \
343 $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
344
345 LINK_STATIC_LIB = \
346 @$(call DO_MKDIR,$(OBJPATH)) ; \
347 $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
348 $(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
349
350
351 ###
352 ### Generic target rules
353 ###
352 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) 354 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
353 355
354 356
355 ###
356 ### Generic object rules
357 ###
358 $(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h 357 $(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h
359 $(COMPILE_C_OBJ) 358 $(COMPILE_C_OBJ)
360 359
361 $(OBJPATH)%.o: $(DMLIB)tests/%.c 360 $(OBJPATH)%.o: $(DMLIB)tests/%.c
362 $(COMPILE_C_OBJ) 361 $(COMPILE_C_OBJ)