## 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:=

# 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 = 0

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
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))
    LIBS+= -lvpx
endif

ifneq (0,$(RELEASE))
    # Debugging disabled
    debug=-fomit-frame-pointer -funswitch-loops -O$(OPTLEVEL)
    ifneq (0,$(LTO))
        LIBS+= -flto
        debug+= -flto
    endif
else
    # Debugging enabled
    debug=-ggdb -O0 -DDEBUGGINGAIDS
    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 (0,$(DEBUGANYWAY))
    debug+=-ggdb
endif

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))

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	-Wstrict-overflow=1 #-Wwrite-strings -Waddress -Wlogical-op
ifneq (0,$(USE_LIBPNG))
    BASECFLAGS+= -DUSE_LIBPNG
endif
ifneq (0,$(USE_LIBVPX))
    BASECFLAGS+= -DUSE_LIBVPX
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=