2010-12-09 17:19:19 +00:00
CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.2 )
2010-06-05 17:34:55 +00:00
PROJECT ( MegaGlest )
2010-12-11 13:01:06 +00:00
#SET(CMAKE_VERBOSE_MAKEFILE ON)
2010-12-12 08:10:18 +00:00
#
# *NOTE: For now we assume some variation of GCC Compiler (or MingW for Windows binaries)
# VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze
#
# build type defaults to release
if ( NOT DEFINED CMAKE_BUILD_TYPE )
set ( CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." )
endif ( NOT DEFINED CMAKE_BUILD_TYPE )
# add additional CMake modules
list ( APPEND CMAKE_MODULE_PATH ${ CMAKE_SOURCE_DIR } /mk/cmake/Modules )
MESSAGE ( STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}" )
2011-05-04 07:16:44 +00:00
FUNCTION ( Subversion_IS_WC FOLDER RESULT_VAR )
IF ( Subversion_FOUND )
# SVN info does not like .. as paths, so be sure that we use a full path
GET_FILENAME_COMPONENT ( ABS_FOLDER ${ FOLDER } ABSOLUTE )
EXECUTE_PROCESS ( COMMAND ${ Subversion_SVN_EXECUTABLE } info ${ ABS_FOLDER }
R E S U L T _ V A R I A B L E I N F O _ R E S U L T
O U T P U T _ V A R I A B L E I G N O R E D
E R R O R _ V A R I A B L E I G N O R E D )
IF ( INFO_RESULT EQUAL 0 )
SET ( ${ RESULT_VAR } TRUE PARENT_SCOPE )
ELSE ( )
SET ( ${ RESULT_VAR } FALSE PARENT_SCOPE )
ENDIF ( )
ELSE ( )
MESSAGE ( STATUS "Cannot check whether folder ${FOLDER} is a svn working copy because svn was not found. Returning FALSE." )
SET ( ${ RESULT_VAR } FALSE PARENT_SCOPE )
ENDIF ( )
ENDFUNCTION ( )
2010-12-12 08:10:18 +00:00
## Compiler flags
IF ( CMAKE_COMPILER_IS_GNUCXX OR MINGW )
IF ( CMAKE_COMPILER_IS_GNUCXX )
MESSAGE ( STATUS "Detected GNUC Compiler..." )
ELSEIF ( MINGW )
MESSAGE ( STATUS "Detected MINGW Compiler..." )
ENDIF ( )
2010-12-17 20:55:46 +00:00
if ( NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE )
set ( CMAKE_BUILD_TYPE RelWithDebInfo )
endif ( NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE )
2010-12-12 08:10:18 +00:00
# Default compiler flags
#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") ## Strip binary
2011-01-06 23:31:07 +00:00
# For gcc warning options see: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2011-01-02 10:29:13 +00:00
IF ( NOT MINGW )
2011-01-06 23:31:07 +00:00
# For tons of verbose warnings add: -Wall
ADD_DEFINITIONS ( "-Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -rdynamic" )
2011-01-02 10:29:13 +00:00
ELSE ( )
2011-05-24 22:51:45 +00:00
ADD_DEFINITIONS ( "-Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUNICODE" )
2011-01-02 10:29:13 +00:00
ENDIF ( )
2010-12-12 08:10:18 +00:00
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
# Debug compiler flags
SET ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3" )
# Release compiler flags
2010-12-25 21:23:20 +00:00
SET ( CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE} -O3 " )
2010-12-12 08:10:18 +00:00
SET ( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s" ) ## Strip binary
# Release with debug info compiler flags
2010-12-25 21:23:20 +00:00
SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 " )
2010-12-12 08:10:18 +00:00
# Release minimum size compiler flags
2010-12-25 21:23:20 +00:00
SET ( CMAKE_CXX_FLAGS_MINSIZEREL "-O3 ${CMAKE_CXX_FLAGS_MINSIZEREL} -O3 " )
2010-12-12 08:10:18 +00:00
SET ( CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s" ) ## Strip binary
2011-05-15 02:31:00 +00:00
SET ( HAS_SVN "FALSE" )
2011-02-02 20:12:45 +00:00
OPTION ( WANT_SVN_STAMP "use svn stamp" ON )
IF ( WANT_SVN_STAMP )
# The stuff below gets SVN Global Revision # but ONLY when calling cmake!
# the FindSubversion.cmake module is part of the standard distribution
include ( FindSubversion )
2011-05-04 07:16:44 +00:00
Subversion_IS_WC ( ${ PROJECT_SOURCE_DIR } HAS_SVN )
IF ( ${ HAS_SVN } STREQUAL "TRUE" )
MESSAGE ( STATUS "Found SVN and using SVN version stamping..." )
# extract working copy information for SOURCE_DIR into MY_XXX variables
Subversion_WC_INFO ( ${ PROJECT_SOURCE_DIR } MG )
#add_definitions(-DSVNVERSION="${MG_WC_REVISION}")
ENDIF ( )
2011-02-02 20:12:45 +00:00
ENDIF ( )
2010-12-12 08:10:18 +00:00
SET ( SVN_VERSION_CMD "-DSVNVERSION='\\\" ${ MG_WC_REVISION } \\\"'")
2011-05-15 02:31:00 +00:00
IF ( UNIX AND NOT APPLE AND ${ HAS_SVN } STREQUAL "TRUE" )
2010-12-12 08:10:18 +00:00
# We do some funky character escaping to get the right stuff written out to
# the final Makefile so we get the SVN Global Revsion #
SET ( SVN_VERSION_CMD "-DSVNVERSION='\\\" `svnversion -n ${ PROJECT_SOURCE_DIR } `\\\ "'" )
ENDIF ( )
2011-05-03 23:34:25 +00:00
IF ( CMAKE_INSTALL_PREFIX STREQUAL "" )
MESSAGE ( STATUS "*NOTE: NOT USING a Custom Data Install Path..." )
ELSE ( )
2011-05-14 17:31:40 +00:00
IF ( NOT MEGAGLEST_BIN_INSTALL_PATH )
SET ( MEGAGLEST_BIN_INSTALL_PATH "bin/" CACHE STRING "The installation path for binaries (this is appended to the CMAKE_INSTALL_PREFIX)" )
ENDIF ( )
IF ( NOT MEGAGLEST_DATA_INSTALL_PATH )
SET ( MEGAGLEST_DATA_INSTALL_PATH "share/megaglest/" CACHE STRING "The installation path for data files (this is appended to the CMAKE_INSTALL_PREFIX)" )
ENDIF ( )
IF ( NOT MEGAGLEST_DESKTOP_INSTALL_PATH )
SET ( MEGAGLEST_DESKTOP_INSTALL_PATH "share/applications/" CACHE STRING "The installation path for desktop files (this is appended to the CMAKE_INSTALL_PREFIX)" )
ENDIF ( )
IF ( NOT MEGAGLEST_ICON_INSTALL_PATH )
SET ( MEGAGLEST_ICON_INSTALL_PATH "share/pixmaps/" CACHE STRING "The installation path for icon files (this is appended to the CMAKE_INSTALL_PREFIX)" )
ENDIF ( )
2011-05-26 14:36:43 +00:00
IF ( NOT MEGAGLEST_MANPAGE_INSTALL_PATH )
SET ( MEGAGLEST_MANPAGE_INSTALL_PATH "share/man/man6/" CACHE STRING "The installation path for manpage files (this is appended to the CMAKE_INSTALL_PREFIX)" )
ENDIF ( )
2011-05-14 17:31:40 +00:00
IF ( NOT CUSTOM_DATA_INSTALL_PATH )
SET ( CUSTOM_DATA_INSTALL_PATH "'\\\" ${ CMAKE_INSTALL_PREFIX } / ${ MEGAGLEST_DATA_INSTALL_PATH } \\\"'" CACHE STRING "The FULL installation path for data files (this is build automatically by combining CMAKE_INSTALL_PREFIX and MEGAGLEST_DATA_INSTALL_PATH)" )
ENDIF ( )
2011-05-03 23:34:25 +00:00
SET ( CUSTOM_DATA_INSTALL_PATH_VALUE "-DCUSTOM_DATA_INSTALL_PATH=${CUSTOM_DATA_INSTALL_PATH}" )
MESSAGE ( STATUS "*NOTE: Custom Data Install Path is [${CUSTOM_DATA_INSTALL_PATH}]" )
ENDIF ( )
SET ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SVN_VERSION_CMD} ${CUSTOM_DATA_INSTALL_PATH_VALUE}" )
SET ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SVN_VERSION_CMD} ${CUSTOM_DATA_INSTALL_PATH_VALUE}" )
SET ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SVN_VERSION_CMD} ${CUSTOM_DATA_INSTALL_PATH_VALUE}" )
SET ( CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${SVN_VERSION_CMD} ${CUSTOM_DATA_INSTALL_PATH_VALUE}" )
2010-12-12 08:10:18 +00:00
# We do some funky character escaping to get the right stuff written out to
# the final Makefile so we get the SVN Global Revsion #
string ( REPLACE "'" "\" " CMAKE_CXX_FLAGS_DEBUG " ${ CMAKE_CXX_FLAGS_DEBUG } " )
string ( REPLACE "'" "\" " CMAKE_CXX_FLAGS_RELEASE " ${ CMAKE_CXX_FLAGS_RELEASE } " )
string ( REPLACE "'" "\" " CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${ CMAKE_CXX_FLAGS_RELWITHDEBINFO } " )
string ( REPLACE "'" "\" " CMAKE_CXX_FLAGS_MINSIZEREL " ${ CMAKE_CXX_FLAGS_MINSIZEREL } " )
IF ( CMAKE_BUILD_TYPE STREQUAL Debug )
message ( "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}" )
ELSEIF ( CMAKE_BUILD_TYPE STREQUAL Release )
message ( "CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}" )
ELSEIF ( CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO )
message ( "CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" )
ELSEIF ( CMAKE_BUILD_TYPE STREQUAL MINSIZEREL )
message ( "CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}" )
ENDIF ( )
# Win32 specific Compiler Flags
IF ( WIN32 )
ADD_DEFINITIONS ( "-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB" )
2011-01-04 02:55:45 +00:00
ELSE ( )
2011-02-11 19:16:06 +00:00
ADD_DEFINITIONS ( "-DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB" )
2010-12-12 08:10:18 +00:00
ENDIF ( )
ENDIF ( )
2010-06-05 17:34:55 +00:00
2010-12-11 06:32:21 +00:00
IF ( WIN32 )
SET ( CMAKE_LIBRARY_PATH ${ CMAKE_LIBRARY_PATH }
2010-12-23 00:00:30 +00:00
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / l i b
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / x e r c e s - c - s r c _ 2 _ 8 _ 0 / l i b
2010-12-27 09:01:40 +00:00
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / w x W i d g e t s - 2 . 8 . 1 0 / l i b )
2010-12-11 06:32:21 +00:00
SET ( CMAKE_INCLUDE_PATH ${ CMAKE_INCLUDE_PATH }
2010-12-23 00:00:30 +00:00
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / i n c l u d e
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / o p e n a l - s o f t - 1 . 1 2 . 8 5 4 / i n c l u d e
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / o p e n a l - s o f t - 1 . 1 2 . 8 5 4
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / x e r c e s - c - s r c _ 2 _ 8 _ 0 / i n c l u d e
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / l i b o g g - 1 . 2 . 1 / i n c l u d e
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / l u a - 5 . 1 / s r c
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / j p e g - 8 b
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / l p n g 1 4 1
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / z l i b - 1 . 2 . 5
2011-01-01 11:39:04 +00:00
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / c u r l - 7 . 2 1 . 3 / i n c l u d e
2010-12-23 00:00:30 +00:00
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / S D L - 1 . 2 . x / i n c l u d e
$ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e / w i n 3 2 _ d e p s / w x W i d g e t s - 2 . 8 . 1 0 / i n c l u d e )
2010-12-11 06:32:21 +00:00
link_directories ( ${ PROJECT_SOURCE_DIR } /source/win32_deps/lib )
link_directories ( ${ PROJECT_SOURCE_DIR } /source/win32_deps/xerces-c-src_2_8_0/lib )
2010-12-11 15:05:43 +00:00
link_directories ( ${ PROJECT_SOURCE_DIR } /source/win32_deps/wxWidgets-2.8.10/lib )
2010-12-11 06:32:21 +00:00
include_directories ( "${PROJECT_SOURCE_DIR}/source/win32_deps/Microsoft\ DirectX\ SDK \(November 2007\)/Include" )
include_directories ( ${ PROJECT_SOURCE_DIR } /source/win32_deps/openal-soft-1.12.854/include )
ENDIF ( )
2011-05-03 23:34:25 +00:00
2011-05-04 07:51:48 +00:00
# Check if sources exist
2011-05-04 21:00:34 +00:00
IF ( EXISTS "${PROJECT_SOURCE_DIR}/source/" )
2011-05-04 07:51:48 +00:00
MESSAGE ( STATUS "**Found game source code." )
2011-05-04 21:00:34 +00:00
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/shared_lib )
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/glest_game )
2011-05-04 07:51:48 +00:00
#if(wxWidgets_FOUND)
2011-05-04 21:00:34 +00:00
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/glest_map_editor )
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/g3d_viewer )
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/configurator )
2011-05-04 07:51:48 +00:00
#else()
# MESSAGE(STATUS "WARNING... the following game tools will NOT be built since we cannot find wxWidgets on this machine")
# MESSAGE(STATUS "map editor, g3d viewer, configurator")
#endif()
2011-05-04 21:00:34 +00:00
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /source/tools/glexemel )
2011-05-04 07:51:48 +00:00
IF ( APPLE )
2011-05-04 21:00:34 +00:00
include ( ${ PROJECT_SOURCE_DIR } /mk/macosx/CMakeLists.txt )
2011-05-04 07:51:48 +00:00
ENDIF ( APPLE )
ENDIF ( )
2011-05-03 07:58:59 +00:00
2011-05-04 07:51:48 +00:00
# Check if data exist
2011-05-04 21:00:34 +00:00
IF ( EXISTS "${PROJECT_SOURCE_DIR}/data/glest_game/" )
2011-05-04 07:51:48 +00:00
MESSAGE ( STATUS "**Found game data." )
2011-05-04 21:00:34 +00:00
ADD_SUBDIRECTORY ( ${ PROJECT_SOURCE_DIR } /data/glest_game )
2011-05-04 07:51:48 +00:00
ENDIF ( )
2011-05-15 02:24:54 +00:00
MARK_AS_ADVANCED ( SDLMAIN_LIBRARY )
MARK_AS_ADVANCED ( SDL_INCLUDE_DIR )
MARK_AS_ADVANCED ( SDL_LIBRARY )