Mercurial > hg > forks > gldragon
diff Makefile.gen @ 77:cc1c35357e39
Build system cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 14 Jan 2020 03:03:01 +0200 |
parents | 03aa729a9e90 |
children | 159cc5f14092 |
line wrap: on
line diff
--- a/Makefile.gen Sun Jan 05 13:03:35 2020 +0200 +++ b/Makefile.gen Tue Jan 14 03:03:01 2020 +0200 @@ -1,25 +1,22 @@ +### +### Compiler flags +### CXXFLAGS += -O3 -W -Wall -std=c++11 LDFLAGS += CXXFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS) + +### +### Tools, paths and directories +### MKDIR ?= mkdir MKDIR_P ?= $(MKDIR) -p BINPATH ?= ./ -ifneq ($(V),1) -COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $< -COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CXX $<" && $(CXX) $(CXXFLAGS) -c -o $@ $< -LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+) -LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CXX) -o $@ $(filter %.o %.a,$+) -LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@ -else -COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $<" && $(CC) $(CFLAGS) -c -o $@ $< -COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CXX) $(CXXFLAGS) -c -o $@ $<" && $(CXX) $(CXXFLAGS) -c -o $@ $< -LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+) -LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CXX) -o $@ $(filter %.o %.a,$+)" && $(CXX) -o $@ $(filter %.o %.a,$+) -LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@ -endif +### +### Main targets and objects +### BINARIES = gldragon ply2bin TARGETS += \ @@ -32,7 +29,40 @@ ### -### Target rules +### Functions and compilation/link commands +### +ifneq ($(V),1) +DO_CMD=/bin/echo -E " $(1) $(2)" && $(3) +else +DO_CMD=/bin/echo -E $(3) && $(3) +endif +DO_MKDIR=if test ! -d "$(1)"; then mkdir -p "$(1)"; fi + + +COMPILE_C_OBJ = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) + +LINK_C_BIN = \ + @$(call DO_MKDIR,$(BINPATH)) ; \ + $(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) + +COMPILE_CXX_OBJ = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1)) + +LINK_CXX_BIN = \ + @$(call DO_MKDIR,$(BINPATH)) ; \ + $(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1)) + +LINK_STATIC_LIB = \ + @$(call DO_MKDIR,$(OBJPATH)) ; \ + $(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \ + $(call DO_CMD,RANLIB,$@,$(RANLIB) $@) + + +### +### Generic target rules ### all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)