Deal with a few common themes in downstream patches applied by OpenBSD, FreeBSD, Gentoo Linux, and possibly others.

-Respect CC and CXX if already set in the environment.
-Respect CFLAGS, CXXFLAGS, and LDFLAGS if set or specified.
-Give packagers the setting "PACKAGE_REPOSITORY=1" to prevent us from adding our own optimization parameters.

git-svn-id: https://svn.eduke32.com/eduke32@4547 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2014-07-22 11:19:25 +00:00
parent a5fb5f6795
commit 68b56adbe2
2 changed files with 66 additions and 41 deletions

View file

@ -420,7 +420,7 @@ makesdlkeytrans$(EXESUFFIX): $(ENGINE_OBJ)/makesdlkeytrans.$o
$(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(UTIL_LIBS) $(SDL_INCLUDES) $(RECIPE_RESULT_ONESTEP) $(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(UTIL_LIBS) $(SDL_INCLUDES) $(RECIPE_RESULT_ONESTEP)
arttool$(EXESUFFIX): $(ENGINE_OBJ)/arttool.$o arttool$(EXESUFFIX): $(ENGINE_OBJ)/arttool.$o
$(ONESTEP_STATUS) $(ONESTEP_STATUS)
$(RECIPE_IF) $(L_CXX) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB) $(UTIL_LIBS) $(RECIPE_RESULT_ONESTEP) $(RECIPE_IF) $(L_CXX) $(CPPONLYFLAGS) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB) $(UTIL_LIBS) $(RECIPE_RESULT_ONESTEP)
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c
$(COMPILE_STATUS) $(COMPILE_STATUS)
@ -490,7 +490,7 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.m
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.cpp $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.cpp
$(COMPILE_STATUS) $(COMPILE_STATUS)
$(RECIPE_IF) $(CXX) $(CXXFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.c $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.c
$(COMPILE_STATUS) $(COMPILE_STATUS)
@ -506,11 +506,11 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.c
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.cpp $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.cpp
$(COMPILE_STATUS) $(COMPILE_STATUS)
$(RECIPE_IF) $(CXX) $(CXXFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.cc $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.cc
$(COMPILE_STATUS) $(COMPILE_STATUS)
$(RECIPE_IF) $(CXX) $(CXXFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
$(ENGINE_OBJ)/%.$o: $(DUKE3D_RSRC)/%.c $(ENGINE_OBJ)/%.$o: $(DUKE3D_RSRC)/%.c
$(COMPILE_STATUS) $(COMPILE_STATUS)
@ -536,7 +536,7 @@ $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.m
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.cpp $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.cpp
$(COMPILE_STATUS) $(COMPILE_STATUS)
$(RECIPE_IF) $(CXX) $(CXXFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE)
$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/jmact/%.c $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/jmact/%.c
$(COMPILE_STATUS) $(COMPILE_STATUS)

View file

@ -1,26 +1,51 @@
# Use colored output # OS package maintainers: Please try invoking make with PACKAGE_REPOSITORY=1 to see if that meets your needs before patching out our optimizations entirely.
PACKAGE_REPOSITORY ?= 0
# Use colored output. Disable for build system debugging.
PRETTY_OUTPUT ?= 1 PRETTY_OUTPUT ?= 1
# Tools # Tools
CROSS= CROSS=
CC=$(CROSS)gcc ifneq ($(CROSS),)
CXX=$(CROSS)g++ undefine CC
AS=nasm undefine CXX
AR=$(CROSS)ar undefine AR
RC=$(CROSS)windres undefine RC
RANLIB=$(CROSS)ranlib undefine RANLIB
STRIP=$(CROSS)strip undefine STRIP
endif
CC?=$(CROSS)gcc
CXX?=$(CROSS)g++
AR?=$(CROSS)ar
RC?=$(CROSS)windres
RANLIB?=$(CROSS)ranlib
STRIP?=$(CROSS)strip
AS?=nasm
PKG_CONFIG?=pkg-config
# Override defaults that absolutely will not work.
ifeq ($(CC),cc)
override CC=gcc
endif
ifeq ($(AS),as)
override AS=nasm
endif
L_CC=$(CC) L_CC=$(CC)
L_CXX=$(CXX) L_CXX=$(CXX)
CLANG?=0 CLANG?=0
ifeq ($(findstring clang,$(CC)),clang)
override CLANG=1
endif
ifneq (0,$(CLANG)) ifneq (0,$(CLANG))
CC=clang -x c -std=gnu89 CC=clang -x c
CXX=clang -x c++ CXX=clang -x c++
L_CC=clang -std=gnu89 L_CC=clang
L_CXX=clang L_CXX=clang
endif endif
@ -224,32 +249,28 @@ ifndef LTO
endif endif
endif endif
COMMONFLAGS=$(ARCH)
COMMONFLAGS=-O$(OPTLEVEL)
COMPILERFLAGS= COMPILERFLAGS=
ifneq (,$(ARCH)) ifeq ($(PACKAGE_REPOSITORY),0)
COMMONFLAGS+= $(ARCH) COMMONFLAGS += $(OPTIMIZATIONS)
endif endif
COMMONFLAGS+= $(OPTOPT) OPTIMIZATIONS=-O$(OPTLEVEL) $(OPTOPT)
ifneq ($(RELEASE)$(DEBUGANYWAY),10) DEBUGFLAG=-g
# debug build or DEBUGANYWAY=1 --> -g flag ifneq (0,$(CLANG))
ifneq (0,$(CLANG)) ifneq ($(PLATFORM),WII)
COMMONFLAGS += -g DEBUGFLAG=-ggdb
else
ifeq ($(PLATFORM), WII)
COMMONFLAGS += -g
else
COMMONFLAGS += -ggdb
endif
endif endif
endif endif
ifneq ($(RELEASE)$(DEBUGANYWAY),10)
# debug build or DEBUGANYWAY=1 --> -g flag
OPTIMIZATIONS += $(DEBUGFLAG)
endif
CONLYFLAGS=-Wimplicit -Wdeclaration-after-statement CONLYFLAGS=-std=gnu89 -Wimplicit -Wdeclaration-after-statement
CXXFLAGS= -fno-exceptions -fno-rtti -Wno-write-strings CPPONLYFLAGS= -fno-exceptions -fno-rtti -Wno-write-strings
ASFORMAT=elf$(SYSBITS) ASFORMAT=elf$(SYSBITS)
ASFLAGS=-s -f $(ASFORMAT) #-g ASFLAGS=-s -f $(ASFORMAT) #-g
LINKERFLAGS= LINKERFLAGS=
@ -355,7 +376,7 @@ endif
# XXX: I (Helixhorned) only know that there's no -Wnarrowing on my OS X 10.6 using GCC 4.2. # XXX: I (Helixhorned) only know that there's no -Wnarrowing on my OS X 10.6 using GCC 4.2.
ifeq (1,$(strip $(shell expr $(GCC_MAJOR) \>= 4))) ifeq (1,$(strip $(shell expr $(GCC_MAJOR) \>= 4)))
ifeq (1,$(strip $(shell expr $(GCC_MINOR) \>= 3))) ifeq (1,$(strip $(shell expr $(GCC_MINOR) \>= 3)))
CXXFLAGS+= -Wno-narrowing CPPONLYFLAGS+= -Wno-narrowing
endif endif
endif endif
@ -546,8 +567,6 @@ ifneq (0,$(FORCEWARNINGS))
COMPILERFLAGS+= -DFORCE_WARNINGS COMPILERFLAGS+= -DFORCE_WARNINGS
endif endif
LINKERFLAGS+= $(OPTOPT)
# This should come from the environment: # This should come from the environment:
ifdef EDUKE32_MY_DEVELOPER_ID ifdef EDUKE32_MY_DEVELOPER_ID
COMPILERFLAGS+= -DMY_DEVELOPER_ID=$(EDUKE32_MY_DEVELOPER_ID) COMPILERFLAGS+= -DMY_DEVELOPER_ID=$(EDUKE32_MY_DEVELOPER_ID)
@ -839,19 +858,19 @@ ifeq ($(RENDERTYPE),SDL)
ifeq (1,$(WITHOUT_GTK)) ifeq (1,$(WITHOUT_GTK))
HAVE_GTK2=0 HAVE_GTK2=0
else else
ifneq (No,$(shell pkg-config --exists gtk+-2.0 || echo No)) ifneq (No,$(shell $(PKG_CONFIG) --exists gtk+-2.0 || echo No))
HAVE_GTK2=1 HAVE_GTK2=1
# On my 64bit Gentoo box I have Cairo enabled which means the libs list includes # On my 64bit Gentoo box I have Cairo enabled which means the libs list includes
# -lpangocairo-1.0 and -lcairo, however the 32bit compatibility libraries don't # -lpangocairo-1.0 and -lcairo, however the 32bit compatibility libraries don't
# include cairo, so we need to filter out those -l switches in order to link # include cairo, so we need to filter out those -l switches in order to link
ifneq ($(LINKED_GTK),0) ifneq ($(LINKED_GTK),0)
ifeq ($(GTKCOMPAT32),1) ifeq ($(GTKCOMPAT32),1)
LIBS+= $(shell pkg-config --libs gtk+-2.0 | sed 's/\s-l\(pango\)\{0,1\}cairo\S*\s/ /g') LIBS+= $(shell $(PKG_CONFIG) --libs gtk+-2.0 | sed 's/\s-l\(pango\)\{0,1\}cairo\S*\s/ /g')
else else
LIBS+= $(shell pkg-config --libs gtk+-2.0) LIBS+= $(shell $(PKG_CONFIG) --libs gtk+-2.0)
endif endif
endif endif
COMPILERFLAGS += -DHAVE_GTK2 $(shell pkg-config --cflags gtk+-2.0) COMPILERFLAGS += -DHAVE_GTK2 $(shell $(PKG_CONFIG) --cflags gtk+-2.0)
else else
HAVE_GTK2=0 HAVE_GTK2=0
endif endif
@ -959,7 +978,7 @@ endif
COMPILER=$(CC) $(CONLYFLAGS) COMPILER=$(CC) $(CONLYFLAGS)
LINKER=$(L_CC) LINKER=$(L_CC)
ifneq ($(CPLUSPLUS),0) ifneq ($(CPLUSPLUS),0)
COMPILER=$(CXX) $(CXXFLAGS) COMPILER=$(CXX) $(CPPONLYFLAGS)
LINKER=$(L_CXX) LINKER=$(L_CXX)
endif endif
@ -969,6 +988,12 @@ endif
ifneq (,$(CFLAGS)) ifneq (,$(CFLAGS))
COMMONFLAGS+= $(CFLAGS) COMMONFLAGS+= $(CFLAGS)
endif endif
ifneq (,$(CXXFLAGS))
CPPONLYFLAGS+= $(CXXFLAGS)
endif
ifneq (,$(LDFLAGS))
LINKERFLAGS+= $(LDFLAGS)
endif
ifeq ($(PRETTY_OUTPUT),1) ifeq ($(PRETTY_OUTPUT),1)
RECIPE_IF = if RECIPE_IF = if