mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-16 17:32:13 +00:00
57dbedf59d
Most notably, -Wdeclaration-after-statement. This and -Wpointer-arith give some warning on linux, but this is "harmless" as it's assumed that we'll be always compiling with GCC or Clang there. Also, erratum in the "Make ksqrt take uint32_t ..." commit: hypotenuse -> squared length of the hypotenuse git-svn-id: https://svn.eduke32.com/eduke32@2797 1a8010ca-5511-0410-912e-c29ae57300e0
218 lines
4.8 KiB
Text
218 lines
4.8 KiB
Text
|
|
## common definitions for Makefile, build/Makefile, source/enet/Makefile and
|
|
## source/jaudiolib/Makefile
|
|
|
|
# Use colored output
|
|
PRETTY_OUTPUT ?= 1
|
|
|
|
# Binary suffix override:
|
|
EXESUFFIX_OVERRIDE ?=
|
|
|
|
# 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
|
|
# Since the OS X startup window is generating errors, disable it by default.
|
|
OSX_STARTUPWINDOW ?= 0
|
|
|
|
# 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
|
|
# CLANG - 1 = enable the Clang/LLVM compiler
|
|
#
|
|
RELEASE?=1
|
|
DEBUGANYWAY?=0
|
|
KRANDDEBUG?=0
|
|
EFENCE?=0
|
|
DMALLOC?=0
|
|
OPTLEVEL?=2
|
|
PROFILER?=0
|
|
MUDFLAP?=0
|
|
LTO?=0
|
|
CLANG?=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
|
|
|
|
ifneq (0,$(CLANG))
|
|
CC=clang -std=gnu89
|
|
CXX=clang++
|
|
# AR=llvm-ar
|
|
# RANLIB=llvm-ranlib
|
|
endif
|
|
|
|
# compiler flags etc.
|
|
BASECONLYFLAGS=-Wimplicit
|
|
BASECXXFLAGS= -fno-exceptions -fno-rtti
|
|
BASEASFLAGS=-s #-g
|
|
BASELDFLAGS=
|
|
|
|
ifeq ($(PLATFORM),WII)
|
|
override USE_LIBPNG = 0
|
|
override USE_LIBVPX = 0
|
|
endif
|
|
|
|
LIBS=-lm
|
|
ifneq (0,$(USE_LIBPNG))
|
|
LIBS+= -lpng -lz
|
|
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
|
|
ifneq (0,$(CLANG))
|
|
debug=-g
|
|
else ifeq ($(PLATFORM), WII)
|
|
debug=-g
|
|
else
|
|
debug=-ggdb
|
|
endif
|
|
endif
|
|
|
|
ifneq (0,$(RELEASE))
|
|
# Debugging disabled
|
|
debug+= -O$(OPTLEVEL)
|
|
ifeq (0,$(CLANG))
|
|
debug+= -funswitch-loops
|
|
endif
|
|
ifeq (0,$(DEBUGANYWAY))
|
|
debug+= -fomit-frame-pointer -DNDEBUG
|
|
endif
|
|
ifneq (0,$(LTO))
|
|
BASELDFLAGS+= -flto
|
|
debug+= -DUSING_LTO -flto
|
|
endif
|
|
else
|
|
# Debugging enabled
|
|
debug+= -O0
|
|
|
|
ifeq (0,$(DEBUGANYWAY))
|
|
debug+= -DDEBUGGINGAIDS
|
|
else
|
|
debug+= -DDEBUGGINGAIDS=2
|
|
endif
|
|
|
|
ifneq (0,$(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
|
|
|
|
ifeq (0,$(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
|
|
|
|
CWARNS := -W -Wall -Wdeclaration-after-statement -Werror-implicit-function-declaration \
|
|
-Wpointer-arith \
|
|
-Wextra \
|
|
#-Wstrict-prototypes \
|
|
#-Waggregate-return \
|
|
#-Wwrite-strings \
|
|
#-Wcast-qual -Wcast-align \
|
|
#-Waddress -Wlogical-op
|
|
|
|
BASECFLAGS=$(debug) $(CWARNS) \
|
|
-funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS -D_FORTIFY_SOURCE=2 \
|
|
$(F_JUMP_TABLES) $(W_NO_UNUSED_RESULT) $(ARCH)
|
|
ifneq (0,$(CLANG))
|
|
BASECFLAGS+= -Wno-unused-value -Wno-parentheses
|
|
endif
|
|
|
|
# This should come from the environment:
|
|
ifdef EDUKE32_MY_DEVELOPER_ID
|
|
BASECFLAGS+= -DMY_DEVELOPER_ID=$(EDUKE32_MY_DEVELOPER_ID)
|
|
endif
|
|
|
|
ifneq (0,$(USE_LIBPNG))
|
|
BASECFLAGS+= -DUSE_LIBPNG
|
|
endif
|
|
ifneq (0,$(USE_LIBVPX))
|
|
BASECFLAGS+= -DUSE_LIBVPX
|
|
endif
|
|
ifneq (0,$(OSX_STARTUPWINDOW))
|
|
BASECFLAGS+= -DOSX_STARTUPWINDOW
|
|
endif
|
|
|
|
ifneq (0,$(EFENCE))
|
|
LIBS+= -lefence
|
|
BASECFLAGS+= -DEFENCE
|
|
endif
|
|
ifneq (0,$(DMALLOC))
|
|
LIBS+= -ldmalloc
|
|
BASECFLAGS+= -DDMALLOC
|
|
endif
|
|
|
|
# Misc. stuff that is constant between Makefiles
|
|
EROOT:=build
|
|
|
|
# will be potentially overridden in build/Makefile.shared
|
|
EXESUFFIX=
|