# 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(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)
ENDIF (DEDICATED_ONLY)

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

PROJECT(openlierox)

# main includes
INCLUDE_DIRECTORIES(include pstreams)

# TODO: don't hardcode path here
INCLUDE_DIRECTORIES(/usr/include/libxml2)
INCLUDE_DIRECTORIES(/usr/include/hawknl)
IF (HAWKNL_BUILTIN)
	INCLUDE_DIRECTORIES(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)
SET(ALL_SRCS src/main.cpp ${CLIENT_SRCS} ${COMMON_SRCS} ${SERVER_SRCS})

IF (HAWKNL_BUILTIN)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/crc.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/errorstr.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/nl.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/sock.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/group.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/loopback.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/err.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/thread.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/mutex.c)
	SET(ALL_SRCS ${ALL_SRCS} hawknl/src/condition.c)
	SET(ALL_SRCS ${ALL_SRCS} 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(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 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)
