# HG changeset patch # User Matti Hamalainen # Date 1578963781 -7200 # Node ID cc1c35357e396e339b5f215767931ccb98faf583 # Parent 9ee0edff3940d60b54edb9bede55f348d9e974f8 Build system cleanups. diff -r 9ee0edff3940 -r cc1c35357e39 Makefile --- a/Makefile Sun Jan 05 13:03:35 2020 +0200 +++ b/Makefile Tue Jan 14 03:03:01 2020 +0200 @@ -1,5 +1,12 @@ +### +### Generic UNIX targets +### + #CXXFLAGS ?= -DGL_GLEXT_PROTOTYPES -BINEXT ?= +#LDFLAGS ?= + +BINPATH ?= ./ +BINEXT ?= OBJPATH ?= ./obj/unix/ SDL_CFLAGS ?= $(shell pkg-config --cflags sdl2) diff -r 9ee0edff3940 -r cc1c35357e39 Makefile.cross-mingw --- a/Makefile.cross-mingw Sun Jan 05 13:03:35 2020 +0200 +++ b/Makefile.cross-mingw Tue Jan 14 03:03:01 2020 +0200 @@ -1,4 +1,22 @@ +### +### For Win32/Win64 version cross-compilation via MinGW +### compiler suite under Linux/Unix +### +# +# This Makefile assumes that you have MinGW installed under /usr +# the way Debian MinGW packages do. It also assumes that you have +# built/installed libogg, Tremor, libpng16, SDL2 ad SDL2_ttf under +# __ /usr/local __ (not /usr!) in similar fashion. +# +# For differing configurations you will have to either edit this +# file or alternatively provide make parameters, e.g. +# +# make -f Makefile.cross-mingw MINGW=64 BINTOOL_PREFIX=foo-bar-zoo +# + CXXFLAGS ?= + +BINPATH ?= ./ BINEXT ?= .exe diff -r 9ee0edff3940 -r cc1c35357e39 Makefile.gen --- 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) diff -r 9ee0edff3940 -r cc1c35357e39 dmrender.h --- a/dmrender.h Sun Jan 05 13:03:35 2020 +0200 +++ b/dmrender.h Tue Jan 14 03:03:01 2020 +0200 @@ -100,6 +100,25 @@ return true; } + virtual bool deleteModelShaders(DMModel &model) + { + (void) model; + return false; + } + + virtual bool deleteSceneShaders(DMSimpleScene &scene) + { + if (useShaders) + { + for (DMModel &model : scene.models) + { + if (!deleteModelShaders(model)) + return false; + } + } + return true; + } + virtual bool setupLight(const int n, DMLight &light) { (void) n;