# Shared make information between Build engine and games

ENGINELIB=libengine.a
EDITORLIB=libbuild.a

SDLCONFIG=sdl-config
SDL_FRAMEWORK	= 0

# Overridden for OSes that don't have the cutdown stdc++ that is supc++
STDCPPLIB=-lsupc++

BUILDCFLAGS=

# Detect the platform if it wasn't explicitly given to us from
# the outside world. This allows cross-compilation by overriding
# CC and giving us PLATFORM specifically.
#
ifndef PLATFORM
	uname=$(strip $(shell uname -s))
	PLATFORM=UNKNOWN
	ifeq ($(findstring Linux,$(uname)),Linux)
		PLATFORM=LINUX
	endif
	ifeq ($(findstring BSD,$(uname)),BSD)
		PLATFORM=BSD
	endif
	ifeq ($(findstring MINGW,$(uname)),MINGW)
		PLATFORM=WINDOWS
	endif
	ifeq ($(findstring Darwin,$(uname)),Darwin)
		PLATFORM=DARWIN
	endif
	ifeq ($(findstring BeOS,$(uname)),BeOS)
		PLATFORM=BEOS
	endif
	ifeq ($(findstring skyos,$(uname)),skyos)
		PLATFORM=SKYOS
	endif
	ifeq ($(findstring QNX,$(uname)),QNX)
		PLATFORM=QNX
	endif
	ifeq ($(findstring SunOS,$(uname)),SunOS)
		PLATFORM=SUNOS
	endif
	ifeq ($(findstring syllable,$(uname)),syllable)
		PLATFORM=SYLLABLE
	endif
endif

ifeq ($(PLATFORM),LINUX)
	RENDERTYPE=SDL
	BUILDCFLAGS+= -DHAVE_INTTYPES
	GTKCOMPAT32=0

	ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
		ifeq (1,$(BUILD32_ON_64))
			# On my 64bit Gentoo these are the 32bit emulation libs
			LIBS+= -m32 -L/emul/linux/x86/usr/lib
			BUILDCFLAGS+= -m32
			# Override WITHOUT_GTK=0
			GTKCOMPAT32=1
		else
			override NOASM=1
		endif
	endif
endif
ifeq ($(PLATFORM),DARWIN)
	RENDERTYPE	= SDL
	BUILDCFLAGS	+= -DHAVE_INTTYPES
	GTKCOMPAT32	= 0
	SDL_FRAMEWORK	= 1
	# ASM won't work on PowerPC and currently throws errors on i386 too :-/
	override NOASM	= 1
endif
ifeq ($(PLATFORM),WINDOWS)
	RENDERTYPE ?= WIN
	BUILDCFLAGS+= -DHAVE_INTTYPES
	EXESUFFIX=.exe
	LIBS+= -lmingwex -lwinmm -L$(DXROOT)/lib -lwsock32 -lcomctl32 #-lshfolder
endif
ifeq ($(PLATFORM),BSD)
	RENDERTYPE=SDL
	BUILDCFLAGS+= -DHAVE_INTTYPES
endif
ifeq ($(PLATFORM),BEOS)
	RENDERTYPE=SDL
	STDCPPLIB=-lstdc++
endif
ifeq ($(PLATFORM),SKYOS)
	RENDERTYPE=SDL
	EXESUFFIX=.app
	override NOASM=1
	BUILDCFLAGS+= -DUNDERSCORES
	SDLCONFIG=
	SDLCONFIG_CFLAGS=-I/boot/programs/sdk/include/sdl
	LIBS+= -lSDL -lnet
endif
ifeq ($(PLATFORM),QNX)
	RENDERTYPE=SDL
	override USE_OPENGL=0
	override NOASM=1
	STDCPPLIB=-lstdc++
	LIBS+= -lsocket
endif
ifeq ($(PLATFORM),SUNOS)
	RENDERTYPE=SDL
	override USE_OPENGL=0
	override NOASM=1
	STDCPPLIB=-lstdc++
	LIBS+= -lsocket -lnsl
endif
ifeq ($(PLATFORM),SYLLABLE)
	RENDERTYPE=SDL
	override USE_OPENGL=0
	override NOASM=1
endif

ifeq ($(RENDERTYPE),SDL)
	ifeq ($(SDL_FRAMEWORK),1)
		LIBS		+= -Wl,-framework,SDL
		SDLCONFIG_CFLAGS+= -I/Library/Frameworks/SDL.framework/Headers
	else
	ifneq ($(SDLCONFIG),)
		LIBS+= $(shell $(SDLCONFIG) --libs)
		SDLCONFIG_CFLAGS+=$(shell $(SDLCONFIG) --cflags)
	endif
	endif

	ifeq (1,$(WITHOUT_GTK))
		HAVE_GTK2=0
	else
		ifneq (No,$(shell pkg-config --exists gtk+-2.0 || echo No))
			HAVE_GTK2=1
			# 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
			# include cairo, so we need to filter out those -l switches in order to link
			ifneq ($(LINKED_GTK),0)
				ifeq ($(GTKCOMPAT32),1)
					LIBS+= $(shell pkg-config --libs gtk+-2.0 | sed 's/\s-l\(pango\)\{0,1\}cairo\S*\s/ /g')
				else
					LIBS+= $(shell pkg-config --libs gtk+-2.0)
				endif
			endif
		else
			HAVE_GTK2=0
		endif
	endif
else
	ifeq ($(RENDERTYPE),WIN)
		LIBS+= -mwindows -ldxguid
	endif
endif

BUILDCFLAGS+= -DRENDERTYPE$(RENDERTYPE)=1

ifneq (0,$(SUPERBUILD))
  BUILDCFLAGS+= -DSUPERBUILD
endif
ifneq (0,$(POLYMOST))
  BUILDCFLAGS+= -DPOLYMOST
endif
ifneq (0,$(USE_OPENGL))
  BUILDCFLAGS+= -DUSE_OPENGL
endif
ifneq (0,$(NOASM))
  BUILDCFLAGS+= -DNOASM
endif
ifneq (0,$(LINKED_GTK))
  BUILDCFLAGS+= -DLINKED_GTK
endif

ifneq (0,$(POLYMER))
 ifneq (0,$(POLYMOST))
  ifneq (0,$(USE_OPENGL))
   BUILDCFLAGS+= -DPOLYMER
  endif
 endif
endif