## common definitions for Makefile, build/Makefile, source/enet/Makefile and ## source/jaudiolib/Makefile # Use colored output PRETTY_OUTPUT ?= 1 # DirectX SDK location - if nonempty, overrides the DXROOTs of the individual # Makefiles. Should be set to an absolute path since this Makefile is included # at different directory levels DXROOT_OVERRIDE:= # Mac OS X Frameworks location # Like above, use absolute paths. APPLE_FRAMEWORKS ?=/Library/Frameworks # Engine options # USE_OPENGL - enables basic OpenGL Polymost renderer # POLYMER - enables fancy Polymer renderer # NOASM - disables the use of inline assembly pragmas # LINKED_GTK - enables compile-time linkage to GTK # POLYMER = 1 USE_OPENGL = 1 NOASM = 0 LINKED_GTK = 0 BUILD32_ON_64 ?= 0 # DO NOT SET THIS TO 1 AND COMMIT IT. NEDMALLOC = 0 USE_LIBPNG ?= 0 USE_LIBVPX ?= 1 ifeq (0,$(USE_OPENGL)) POLYMER = 0 USE_LIBVPX = 0 endif # Debugging/Build options # RELEASE - 1 = no debugging # DEBUGANYWAY - 1 = include debug symbols even when generating release code # KRANDDEBUG - 1 = include logging of krand() calls for debugging the demo system # EFENCE - 1 = compile with Electric Fence for malloc() debugging # OPTLEVEL - 0..3 = GCC optimization strategy # LTO - 1 = enable link-time optimization, for GCC 4.5 and up # RELEASE?=1 DEBUGANYWAY?=0 KRANDDEBUG?=0 EFENCE?=0 DMALLOC?=0 OPTLEVEL?=2 PROFILER?=0 MUDFLAP?=0 LTO?=0 ifneq (0,$(KRANDDEBUG)) RELEASE=0 endif ifneq (0,$(PROFILER)) DEBUGANYWAY=1 endif # Tools CC=gcc CXX=g++ AS=nasm AR=ar RC=windres RANLIB=ranlib STRIP=strip # compiler flags etc. LIBS=-lm ifneq (0,$(USE_LIBPNG)) LIBS+= -lpng endif ifneq (0,$(USE_LIBVPX)) # On Windows, we link statically to libvpx LIBS+= -lvpx endif ifneq ($(RELEASE)$(DEBUGANYWAY),10) # debug build or DEBUGANYWAY=1 --> -g flag ifeq ($(CC),clang) debug=-g else debug=-ggdb endif endif ifneq (0,$(RELEASE)) # Debugging disabled debug+= -O$(OPTLEVEL) ifneq ($(CC),clang) debug+= -funswitch-loops endif ifeq (0,$(DEBUGANYWAY)) debug+= -fomit-frame-pointer -DNDEBUG endif ifneq (0,$(LTO)) LIBS+= -flto debug+= -DUSING_LTO -flto endif else # Debugging enabled debug+= -O0 ifeq (0,$(DEBUGANYWAY)) debug+= -DDEBUGGINGAIDS else debug+= -DDEBUGGINGAIDS=2 endif ifeq ($(CC),clang) # CLANG_MAJOR := $(shell clang -dM -E -x c /dev/null | grep __clang_major__ | awk '{ print $$3 }') debug+= -fcatch-undefined-behavior # ifeq ($(CLANG_MAJOR),3) # debug+= -faddress-sanitizer # endif endif ifeq ($(PLATFORM),LINUX) LIBS+=-rdynamic endif ifneq (0,$(MUDFLAP)) LIBS+= -lmudflapth debug+= -fmudflapth endif ifneq (0,$(PROFILER)) # might need to be disabled for Darwin: LIBS+= -lprofiler debug+= -pg endif ifneq (0,$(KRANDDEBUG)) debug+=-DKRANDDEBUG=1 endif endif ifneq ($(CC),clang) W_NO_UNUSED_RESULT := $(shell echo '' | $(CC) -E -Wno-unused-result - 2>/dev/null && echo -Wno-unused-result) W_NO_UNUSED_RESULT := $(findstring -Wno-unused-result,$(W_NO_UNUSED_RESULT)) else W_NO_UNUSED_RESULT := endif BASECFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \ -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -D_FORTIFY_SOURCE=2 \ $(F_JUMP_TABLES) $(W_NO_UNUSED_RESULT) $(ARCH) \ -Wextra #-Wwrite-strings -Waddress -Wlogical-op ifeq ($(CC),clang) BASECFLAGS+= -Wno-unused-value -Wno-parentheses endif ifneq (3,$(GCC_MAJOR)) BASECFLAGS+= -Wstrict-overflow=1 endif ifneq (0,$(USE_LIBPNG)) BASECFLAGS+= -DUSE_LIBPNG endif ifneq (0,$(USE_LIBVPX)) BASECFLAGS+= -DUSE_LIBVPX endif ifneq (0,$(EFENCE)) LIBS+= -lefence BASECFLAGS+= -DEFENCE endif ifneq (0,$(DMALLOC)) LIBS+= -ldmalloc BASECFLAGS+= -DDMALLOC endif BASECXXFLAGS= -fno-exceptions -fno-rtti BASEASFLAGS=-s #-g # Misc. stuff that is constant between Makefiles EROOT:=build # will be potentially overridden in build/Makefile.shared EXESUFFIX=