]> icculus.org git repositories - taylor/freespace2.git/blob - CMakeLists.txt
initial switch to cmake
[taylor/freespace2.git] / CMakeLists.txt
1
2 project(freespace2)
3
4 cmake_minimum_required(VERSION 2.6)
5
6
7 include(CheckCXXCompilerFlag)
8 include(CheckCXXSourceCompiles)
9 include(CheckTypeSize)
10 include(FindPkgConfig)
11
12 pkg_search_module(SDL2 REQUIRED sdl2 >= 2.0.1)
13
14 find_package(OpenGL)
15 find_package(OpenAL)
16
17 option(FS1 "Build original FreeSpace" OFF)
18 option(DEMO "Create demo build" OFF)
19
20 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
21   message(STATUS "Setting build type to 'Debug' as none was specified.")
22   set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
23   # Set the possible values of build type for cmake-gui
24   set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
25     "MinSizeRel" "RelWithDebInfo")
26 endif()
27
28
29 if(NOT WIN32)
30   add_definitions(-DPLAT_UNIX)
31   add_definitions(-Wall -Wno-format-y2k -Wno-deprecated)
32   add_definitions(-fsigned-char)
33
34   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DNDEBUG -g -O2")
35   set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -DNDEBUG -Os")
36   set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -O2")
37   set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
38 endif()
39
40 add_subdirectory(src)
41
42 include_directories(
43   ${PROJECT_SOURCE_DIR}/include
44   ${SDL2_INCLUDE_DIRS}
45   ${OPENAL_INCLUDE_DIR}
46 )
47
48 set(fs_SOURCE
49   src/freespace2/freespace.cpp
50   src/freespace2/levelpaging.cpp
51 )
52
53 if(WIN32)
54   set(fs_SOURCE
55     ${fs_SOURCE}
56     src/freespace2/winmain.cpp
57   )
58 else()
59   set(fs_SOURCE
60     ${fs_SOURCE}
61     src/freespace2/unixmain.cpp
62   )
63 endif()
64
65 set(FS_BINARY freespace2)
66
67 if(FS1)
68   add_definitions(-DMAKE_FS1)
69   if(DEMO)
70     add_definitions(-DDEMO -DFS1_DEMO)
71     set(FS_BINARY freespace_demo)
72   else()
73     set(FS_BINARY freespace)
74   endif()
75 else()
76   if(DEMO)
77     add_definitions(-DFS2_DEMO)
78     set(FS_BINARY freespace2_demo)
79   else()
80     set(FS_BINARY freespace2)
81   endif()
82 endif()
83
84 add_executable(${FS_BINARY} ${fs_SOURCE})
85
86 target_link_libraries(
87   ${FS_BINARY}
88   code
89   ${SDL2_LIBRARIES}
90   ${OPENGL_LIBRARIES}
91   ${OPENAL_LIBRARY}
92 )
93
94 add_executable(cfilearchiver
95   EXCLUDE_FROM_ALL
96   src/cfilearchiver/cfilearchiver.cpp
97 )
98
99 add_executable(scramble
100   EXCLUDE_FROM_ALL
101   src/platform/unix.cpp
102   src/parse/encrypt.cpp
103   src/scramble/scramble.cpp
104 )
105
106 add_executable(cryptstring
107   EXCLUDE_FROM_ALL
108   src/cryptstring/cryptstring.cpp
109 )
110
111 add_executable(fonttool
112   EXCLUDE_FROM_ALL
113   src/fonttool/fontstubs.cpp
114   src/fonttool/fontcreate.cpp
115   src/fonttool/fontkern.cpp
116   src/fonttool/fontkerncopy.cpp
117   src/fonttool/fonttool.cpp
118 )
119
120 target_link_libraries(
121   fonttool
122   code
123   ${SDL2_LIBRARIES}
124   ${OPENGL_LIBRARIES}
125   ${OPENAL_LIBRARY}
126 )
127
128 add_custom_target(tools)
129
130 add_dependencies(tools
131   cfilearchiver
132   scramble
133   cryptstring
134   fonttool
135 )
136
137 include(custom.cmake OPTIONAL)