changeset 40:6905d02bca2d

Build system improvements.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 05 Dec 2019 16:59:20 +0200
parents 4de11a54215a
children eaa3e8575c12
files Makefile Makefile.gen
diffstat 2 files changed, 51 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Thu Dec 05 12:47:29 2019 +0200
+++ b/Makefile	Thu Dec 05 16:59:20 2019 +0200
@@ -1,4 +1,5 @@
 BINEXT ?= 
+OBJPATH ?= ./obj/unix/
 
 SDL_CFLAGS ?= $(shell pkg-config --cflags sdl2)
 SDL_LDFLAGS ?= $(shell pkg-config --libs sdl2)
--- a/Makefile.gen	Thu Dec 05 12:47:29 2019 +0200
+++ b/Makefile.gen	Thu Dec 05 16:59:20 2019 +0200
@@ -1,23 +1,60 @@
-CFLAGS ?= -O3 -W -Wall -DGL_GLEXT_PROTOTYPES -std=c++11
+CXXFLAGS ?= -O3 -W -Wall -DGL_GLEXT_PROTOTYPES -std=c++11
 LDFLAGS ?= 
-CFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS)
+CXXFLAGS += $(SDL_CFLAGS) $(GL_CFLAGS)
+
+MKDIR ?= mkdir
+MKDIR_P ?= $(MKDIR) -p
+BINPATH ?= ./
 
 TARGETS = gldragon$(BINEXT) ply2bin$(BINEXT)
+NOBUILD_TARGETS +=
+NOINST_TARGETS += 
+CLEAN_TARGETS +=
+DISTCLEAN_TARGETS += 
 
-all: $(TARGETS)
 
-%.o: %.cpp %.h
-	$(CXX) $(CFLAGS) -c -o $@ $<
-
-%.o: %.cpp
-	$(CXX) $(CFLAGS) -c -o $@ $<
+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
 
 
-gldragon$(BINEXT): gldragon.o dmmodel.o dmutil.o
-	$(CXX) -o $@ $+ $(LDFLAGS) $(SDL_LDFLAGS) $(GL_LDFLAGS)
+###
+### Target rules
+###
+all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
+
+
+$(OBJPATH)%.o: %.cpp %.h
+	$(COMPILE_CXX_OBJ)
+
+$(OBJPATH)%.o: %.cpp
+	$(COMPILE_CXX_OBJ)
+
 
-ply2bin$(BINEXT): ply2bin.o dmmodel.o dmutil.o
-	$(CXX) -o $@ $+ $(LDFLAGS) $(TOOL_LDFLAGS)
+gldragon$(BINEXT): $(OBJPATH)gldragon.o $(OBJPATH)dmmodel.o $(OBJPATH)dmutil.o
+	$(LINK_CXX_BIN) $(LDFLAGS) $(SDL_LDFLAGS) $(GL_LDFLAGS)
+
+ply2bin$(BINEXT): $(OBJPATH)ply2bin.o $(OBJPATH)dmmodel.o $(OBJPATH)dmutil.o
+	$(LINK_CXX_BIN) $(LDFLAGS) $(TOOL_LDFLAGS)
+
 
+###
+### Special targets
+###
 clean:
-	$(RM) $(TARGETS) *.o
+	-$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o
+
+distclean: clean
+	-$(RM) $(DISTCLEAN_TARGETS) *~ core *.core
+
+.PHONY: clean distclean all