# HG changeset patch # User Matti Hamalainen # Date 1575557960 -7200 # Node ID 6905d02bca2de2533936b45bd67c5cde70bf052b # Parent 4de11a54215af7985c8e6d04c516f59c233829dd Build system improvements. diff -r 4de11a54215a -r 6905d02bca2d Makefile --- 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) diff -r 4de11a54215a -r 6905d02bca2d Makefile.gen --- 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