Files
commandergenius/CMakeLists.txt
2009-08-11 10:29:49 +00:00

201 lines
5.8 KiB
CMake

# CMake file for development of OLX
# this file is not intendent (yet) as a system for building final releases
# use compile.sh instead
cmake_minimum_required(VERSION 2.4)
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)
cmake_policy(SET CMP0005 OLD)
cmake_policy(SET CMP0003 OLD)
#include(PCHSupport_26.cmake)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)
OPTION(DEBUG "enable debug build" Yes)
OPTION(STLPORT "STLport support" No)
OPTION(GCOREDUMPER "Google Coredumper support" No)
#OPTION(PCH "Precompiled header (CMake 2.6 only)" No)
OPTION(ADVASSERT "Advanced assert" No)
OPTION(SDL "SDL support (probably will not work without)" Yes)
OPTION(OPENGL "OpenGL support" Yes)
OPTION(OGG "Ogg/Vorbis support" Yes)
IF (DEBUG)
SET(CMAKE_BUILD_TYPE Debug)
ELSE (DEBUG)
SET(CMAKE_BUILD_TYPE Release)
ENDIF (DEBUG)
# 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)
ELSE (CYGWIN)
ENDIF (CYGWIN)
ELSE(UNIX)
IF(WIN32)
ELSE(WIN32)
ENDIF(WIN32)
ENDIF(UNIX)
MESSAGE( "DEBUG = ${DEBUG}" )
MESSAGE( "STLPORT = ${STLPORT}" )
MESSAGE( "GCOREDUMPER = ${GCOREDUMPER}" )
MESSAGE( "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}" )
MESSAGE( "CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}" )
MESSAGE( "CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}" )
MESSAGE( "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" )
# commented out because only devs need these options anyway
#MESSAGE( "PCH = ${PCH} (Precompiled header, CMake 2.6 only)" )
#MESSAGE( "ADVASSERT = ${ADVASSERT}" )
MESSAGE( "OPENGL = ${OPENGL}" )
MESSAGE( "OGG = ${OGG}" )
EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/bin OUTPUT_VARIABLE NULL)
PROJECT(commandergenius)
# main includes
INCLUDE_DIRECTORIES(optional-includes/generated)
INCLUDE_DIRECTORIES(src)
IF(ADVASSERT)
INCLUDE_DIRECTORIES(optional-includes/advanced-assert)
ENDIF(ADVASSERT)
AUX_SOURCE_DIRECTORY(src ROOT_S)
AUX_SOURCE_DIRECTORY(src/ai AI_S)
AUX_SOURCE_DIRECTORY(src/fileio FILEIO_S)
AUX_SOURCE_DIRECTORY(src/hqp HQP_S)
AUX_SOURCE_DIRECTORY(src/scale2x SCALE2X_S)
AUX_SOURCE_DIRECTORY(src/sdl SDL_S)
AUX_SOURCE_DIRECTORY(src/sdl/sound SDLSOUND_S)
AUX_SOURCE_DIRECTORY(src/sdl/video SDLVIDEO_S)
AUX_SOURCE_DIRECTORY(src/vorbis VORBIS_S)
AUX_SOURCE_DIRECTORY(src/vorticon VORTICON_S)
AUX_SOURCE_DIRECTORY(src/cinematics CINEMATICS_S)
AUX_SOURCE_DIRECTORY(src/dialog DIALOG_S)
SET(ALL_SRCS ${ROOT_S} ${AI_S} ${FILEIO_S} ${HQP_S} ${SCALE2X_S} ${SDL_S} ${SDLSOUND_S} ${SDLVIDEO_S} ${VORTICON_S} ${CINEMATICS_S} ${DIALOG_S})
IF (OGG)
ADD_DEFINITIONS(-DBUILD_WITH_OGG)
SET(ALL_SRCS ${ALL_SRCS} ${VORBIS_S})
ENDIF (OGG)
IF (SDL)
ADD_DEFINITIONS(-DBUILD_SDL)
ENDIF (SDL)
IF (OPENGL)
ADD_DEFINITIONS(-DUSE_OPENGL)
ENDIF (OPENGL)
IF (GCOREDUMPER)
INCLUDE_DIRECTORIES(libs/coredumper/src)
ADD_DEFINITIONS(-DGCOREDUMPER)
AUX_SOURCE_DIRECTORY(libs/coredumper/src COREDUMPER_SRCS)
SET(ALL_SRCS ${ALL_SRCS} ${COREDUMPER_SRCS})
ENDIF (GCOREDUMPER)
IF (STLPORT)
INCLUDE_DIRECTORIES(/usr/include/stlport)
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)
IF(DEBUG)
ADD_DEFINITIONS(-DDEBUG=1)
ENDIF(DEBUG)
IF(WIN32)
# EXEC_PROGRAM("${CMAKE_BINARY_DIR}/svn_revision.exe" ARGS "${CMAKE_SOURCE_DIR}/optional-includes/generated/Version_generated.h" "${CMAKE_SOURCE_DIR}")
# ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -DHAVE_BOOST -DZLIB_WIN32_NODLL)
SET(OPTIMIZE_COMPILER_FLAG /Ox /Ob2 /Oi /Ot /GL)
IF(DEBUG)
ADD_DEFINITIONS(-DUSE_DEFAULT_MSC_DELEAKER)
ELSE(DEBUG)
ADD_DEFINITIONS(${OPTIMIZE_COMPILER_FLAG})
ENDIF(DEBUG)
ELSE(WIN32)
ADD_DEFINITIONS(-Wall)
# EXEC_PROGRAM(sh ARGS ${CMAKE_CURRENT_SOURCE_DIR}/get_version.sh OUTPUT_VARIABLE OLXVER)
# string(REGEX REPLACE "[\r\n]" " " OLXVER "${OLXVER}")
# MESSAGE( "OLX_VERSION = ${OLXVER}" )
# Escaping backslashes overkill, yay.
# EXEC_PROGRAM(sh ARGS -c echo\\ \\\\\#define\\ LX_VERSION\\ \\\\\\"${OLXVER}\\\\\\" > optional-includes/generated/Version_generated.h OUTPUT_VARIABLE DUMMY)
IF(SDL)
EXEC_PROGRAM(sdl-config ARGS --cflags OUTPUT_VARIABLE SDLCFLAGS)
string(REGEX REPLACE "[\r\n]" " " SDLCFLAGS "${SDLCFLAGS}")
ADD_DEFINITIONS(${SDLCFLAGS})
ENDIF(SDL)
ADD_DEFINITIONS("-pthread")
SET(OPTIMIZE_COMPILER_FLAG -O3)
ENDIF(WIN32)
ADD_EXECUTABLE(commandergenius ${ALL_SRCS})
#IF(PCH)
# EXEC_PROGRAM(./update_precompiled_header.sh OUTPUT_VARIABLE NULL)
# ADD_PRECOMPILED_HEADER(openlierox include/PrecompiledHeader.hpp 1)
#ENDIF(PCH)
IF(SDL)
TARGET_LINK_LIBRARIES(commandergenius SDL)
ENDIF(SDL)
IF(WIN32)
TARGET_LINK_LIBRARIES(commandergenius wsock32 wininet dbghelp
"${CMAKE_SOURCE_DIR}/build/msvc/libs/SDLmain.lib"
"${CMAKE_SOURCE_DIR}/build/msvc/libs/bgd.lib")
SET_TARGET_PROPERTIES(commandergenius PROPERTIES OUTPUT_NAME "../../../bin/Commander Genius")
# Add debug info to release build in linker flags
SET_TARGET_PROPERTIES(openlierox PROPERTIES LINK_FLAGS "${LINK_FLAGS}
/LTCG
/DEBUG
/MAP:\"${CMAKE_SOURCE_DIR}/bin/CommanderGenius.map\"
/MAPINFO:EXPORTS
/NODEFAULTLIB:\"LIBC\"
/INCREMENTAL:NO")
ELSE(WIN32)
IF(SDL)
EXEC_PROGRAM(sdl-config ARGS --libs OUTPUT_VARIABLE SDLLIBS)
STRING(REGEX REPLACE "[\r\n]" " " SDLLIBS "${SDLLIBS}")
TARGET_LINK_LIBRARIES(commandergenius ${SDLLIBS})
ENDIF(SDL)
IF(OGG)
TARGET_LINK_LIBRARIES(commandergenius ogg vorbis vorbisfile)
ENDIF(OGG)
IF (STLPORT)
TARGET_LINK_LIBRARIES(commandergenius stlportstlg)
ENDIF (STLPORT)
SET_TARGET_PROPERTIES(commandergenius PROPERTIES OUTPUT_NAME bin/commandergenius)
ENDIF(WIN32)