Merged in AnonymousMan/swg-src/AnonymousMan/fixed-a-minor-typo-in-readme_linuxmd...
[swg-src.git] / src / CMakeLists.txt
blob3be8f45740a1fc3f0450c738111c32dec10b0494
1 cmake_policy(SET CMP0003 OLD) # or cmake_policy(VERSION 2.4)\r
2 \r
3 cmake_minimum_required(VERSION 2.8)\r
4 \r
5 project(swgnge C CXX)\r
6 \r
7 if(WIN32)\r
8 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/win32")\r
9 elseif(UNIX)\r
10 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux")\r
11 endif()\r
13 set(SWG_ROOT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})\r
14 set(SWG_ENGINE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/engine)\r
15 set(SWG_EXTERNALS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external)\r
16 set(SWG_EXTERNALS_FIND ${CMAKE_CURRENT_SOURCE_DIR}/external/3rd/library)\r
17 set(SWG_GAME_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/game)\r
19 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)\r
21 find_package(BISON REQUIRED)\r
22 find_package(Boost REQUIRED)\r
23 find_package(FLEX REQUIRED)\r
24 find_package(JNI REQUIRED)\r
25 find_package(LibXml2 REQUIRED)\r
26 find_package(Oracle REQUIRED)\r
27 find_package(PCRE REQUIRED)\r
28 find_package(Perl REQUIRED)\r
29 find_package(Threads)\r
30 find_package(ZLIB REQUIRED)\r
31 find_package(Curl REQUIRED)\r
33 if(WIN32)\r
34         find_package(Iconv REQUIRED)\r
35         #Dont-Build-PDB RELEASE build use the following (by either commenting---uncommenting the line as needed)\r
36         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB:libc.lib /SAFESEH:NO")\r
38         ####################################\r
39         #Do-Build-PDB RELEASE build use the following (by either commenting---uncommenting the line as needed)\r
40         #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DWIN32 -Dwin32 -DUDP_LIBRARY -DDEBUG_LEVEL=0 -DPRODUCTION=1 /Oi /Ot /Oy /O2 /GF /Gy /Zi /MT -D_USE_32BIT_TIME_T=1 -D_MBCS -DPLATFORM_BASE_SINGLE_THREAD -D_CRT_SECURE_NO_WARNINGS /MP /wd4244 /wd4996 /wd4018 /wd4351 /Zc:wchar_t- /Ob1 /FC")\r
41         #Dont-Build-PDB RELEASE build use the following (by either commenting---uncommenting the line as needed)\r
42         set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DWIN32 -Dwin32 -DUDP_LIBRARY -DDEBUG_LEVEL=0 -DPRODUCTION=1 /Oi /Ot /Oy /O2 /GF /Gy /MT -D_USE_32BIT_TIME_T=1 -D_MBCS -DPLATFORM_BASE_SINGLE_THREAD -D_CRT_SECURE_NO_WARNINGS /MP /wd4244 /wd4996 /wd4018 /wd4351 /Zc:wchar_t- /Ob1 /FC")\r
43  \r
44         ####################################\r
45         #Standard DEBUG build use the following (by either commenting---uncommenting the line as needed)\r
46         set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DWIN32 -Dwin32 -D_DEBUG -DUDP_LIBRARY -DDEBUG_LEVEL=2 -DPRODUCTION=0 /MTd -D_USE_32BIT_TIME_T=1 -D_MBCS -DPLATFORM_BASE_SINGLE_THREAD -D_CRT_SECURE_NO_WARNINGS /MP /wd4244 /wd4996 /wd4018 /wd4351 /Zc:wchar_t- /Ob1 /FC")\r
47  \r
48 elseif(UNIX)\r
49         find_package(Curses REQUIRED)\r
51         set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -DDEBUG_LEVEL=2 -DPRODUCTION=0 -g -pipe -O0 -Wall -Wno-overloaded-virtual -Wno-missing-braces -Wno-unused-private-field -Wno-format -Wno-unused-but-set-variable -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder -Wno-unused-const-variable -Wno-unknown-warning-option")\r
52         set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDEBUG_LEVEL=0 -DPRODUCTION=1 -march=native -pipe -mtune=native -O2 -Wno-overloaded-virtual -Wno-missing-braces -Wno-unused-private-field -Wno-format -Wno-unused-but-set-variable -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder -Wno-unused-const-variable -Wno-unknown-warning-option")\r
53         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0")\r
55         add_definitions(-DLINUX -D_REENTRANT -Dlinux -D_USING_STL -D__STL_NO_BAD_ALLOC -D_GNU_SOURCE -D_XOPEN_SOURCE=500)\r
56 endif()\r
58 add_subdirectory(external)\r
59 add_subdirectory(engine)\r
60 add_subdirectory(game)\r