# CMake file for development of OLX
# this file is not intendent (yet) as a system for building final releases
# use compile.sh instead

OPTION(DEBUG "enable debug build" Yes)
OPTION(DEDICATED_ONLY "dedicated_only - without gfx and sound" No)
OPTION(WITH_G15 "G15 support" No)
OPTION(X11CLIPBOARD "X11 clipboard" Yes)
OPTION(HAWKNL_BUILTIN "HawkNL builtin support" No)
OPTION(STLPORT "STLport support" No)
SET(CFLAGS "" CACHE STRING "Additional compiler flags")

IF (DEBUG)
	SET(CMAKE_BUILD_TYPE Debug)
ELSE (DEBUG)
	SET(CMAKE_BUILD_TYPE Release)
ENDIF (DEBUG)


IF (DEDICATED_ONLY)
	SET(X11CLIPBOARD No)
	SET(WITH_G15 No)
ENDIF (DEDICATED_ONLY)

# Platform specific things can be put here
# Compilers and other specific variables can be found here:
# http://www.cmake.org/Wiki/CMake_Useful_Variables
IF(UNIX)
	IF(APPLE)
	ELSE(APPLE)
	ENDIF(APPLE)

	IF (CYGWIN)
		SET(WITH_G15 No) # Linux library as of now
	ELSE (CYGWIN)
	ENDIF (CYGWIN)
ELSE(UNIX)
	IF(WIN32)
		SET(WITH_G15 No)
	ELSE(WIN32)
	ENDIF(WIN32)
ENDIF(UNIX)


MESSAGE( "DEBUG = ${DEBUG}" )
MESSAGE( "DEDICATED_ONLY = ${DEDICATED_ONLY}" )
MESSAGE( "WITH_G15 = ${WITH_G15}" )
MESSAGE( "X11CLIPBOARD = ${X11CLIPBOARD}" )
MESSAGE( "HAWKNL_BUILTIN = ${HAWKNL_BUILTIN}" )
MESSAGE( "STLPORT = ${STLPORT}" )
MESSAGE( "CFLAGS = ${CFLAGS}" )

PROJECT(openlierox)

# main includes
INCLUDE_DIRECTORIES(include libs/pstreams)

# TODO: don't hardcode path here
INCLUDE_DIRECTORIES(/usr/include/libxml2)
INCLUDE_DIRECTORIES(/usr/include/hawknl)
IF (HAWKNL_BUILTIN)
	INCLUDE_DIRECTORIES(libs/hawknl/include)
ENDIF (HAWKNL_BUILTIN)

IF (STLPORT)
	INCLUDE_DIRECTORIES(/usr/include/stlport)
	ADD_DEFINITIONS(-D_PTHREADS)
	ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64) # hm, don't know, at least it works for me (ppc32/amd32)
	# debugging stuff for STLport
	ADD_DEFINITIONS(-D_STLP_DEBUG=1)
	ADD_DEFINITIONS(-D_STLP_DEBUG_LEVEL=_STLP_STANDARD_DBG_LEVEL)
	ADD_DEFINITIONS(-D_STLP_SHRED_BYTE=0xA3)
	ADD_DEFINITIONS(-D_STLP_DEBUG_UNINITIALIZED=1)
	ADD_DEFINITIONS(-D_STLP_DEBUG_ALLOC=1)
ENDIF (STLPORT)

AUX_SOURCE_DIRECTORY(src/client CLIENT_SRCS)
AUX_SOURCE_DIRECTORY(src/common COMMON_SRCS)
AUX_SOURCE_DIRECTORY(src/server SERVER_SRCS)
AUX_SOURCE_DIRECTORY(src/mods/openliero OPENLIERO_SRCS)
SET(ALL_SRCS src/main.cpp ${CLIENT_SRCS} ${COMMON_SRCS} ${SERVER_SRCS} ${OPENLIERO_SRCS})

IF (HAWKNL_BUILTIN)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/crc.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/errorstr.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/nl.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/sock.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/group.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/loopback.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/err.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/thread.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/mutex.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/condition.c)
	SET(ALL_SRCS ${ALL_SRCS} libs/hawknl/src/nltime.c)
ENDIF (HAWKNL_BUILTIN)

ADD_DEFINITIONS(-Wall)

IF(DEBUG)
	ADD_DEFINITIONS(-DDEBUG=1 -D_AI_DEBUG)
ENDIF(DEBUG)

ADD_DEFINITIONS("-DLX_VERSION=\\\"`cat VERSION`_r`svn info | grep \"Revision:\" | cut -d \" \" -f 2`\\\"")
IF(X11CLIPBOARD)
	ADD_DEFINITIONS("-DX11CLIPBOARD")
ENDIF(X11CLIPBOARD)
IF(DEDICATED_ONLY)
	ADD_DEFINITIONS("-DDEDICATED_ONLY")
ENDIF(DEDICATED_ONLY)

ADD_DEFINITIONS("`sdl-config --cflags`")
ADD_DEFINITIONS("-pthread")

IF(WITH_G15)
	ADD_DEFINITIONS("-DWITH_G15")
ENDIF(WITH_G15)

IF(CFLAGS)
	ADD_DEFINITIONS(${CFLAGS})
ENDIF(CFLAGS)

ADD_EXECUTABLE(openlierox ${ALL_SRCS})
SET_TARGET_PROPERTIES(openlierox PROPERTIES OUTPUT_NAME bin/openlierox)

TARGET_LINK_LIBRARIES(openlierox `sdl-config --libs` SDL SDL_image pthread z xml2)

IF (NOT DEDICATED_ONLY)
	TARGET_LINK_LIBRARIES(openlierox SDL_mixer gd)
ENDIF (NOT DEDICATED_ONLY)
IF (NOT HAWKNL_BUILTIN)
	TARGET_LINK_LIBRARIES(openlierox NL)
ENDIF (NOT HAWKNL_BUILTIN)
IF(X11CLIPBOARD)
	TARGET_LINK_LIBRARIES(openlierox X11)
ENDIF(X11CLIPBOARD)
IF (STLPORT)
	TARGET_LINK_LIBRARIES(openlierox stlportstlg)
ENDIF (STLPORT)
IF (WITH_G15)
	TARGET_LINK_LIBRARIES(openlierox g15daemon_client g15render)
ENDIF (WITH_G15)
