]> icculus.org git repositories - taylor/freespace2.git/blob - CMakeLists.txt
merge updated toolset
[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 find_package(wxWidgets COMPONENTS core base gl)
17
18 include(${wxWidgets_USE_FILE})
19
20 option(FS1 "Build original FreeSpace" OFF)
21 option(DEMO "Create demo build" OFF)
22
23 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
24   message(STATUS "Setting build type to 'Debug' as none was specified.")
25   set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
26   # Set the possible values of build type for cmake-gui
27   set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
28     "MinSizeRel" "RelWithDebInfo")
29 endif()
30
31
32 if(NOT WIN32)
33   add_definitions(-DPLAT_UNIX)
34   add_definitions(-Wall -Wno-format-y2k -Wno-deprecated)
35   add_definitions(-fsigned-char)
36
37   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DNDEBUG -g -O2")
38   set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -DNDEBUG -Os")
39   set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -O2")
40   set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
41 endif()
42
43
44 add_subdirectory(src)
45
46 include_directories(
47   ${PROJECT_SOURCE_DIR}/include
48   ${SDL2_INCLUDE_DIRS}
49   ${OPENAL_INCLUDE_DIR}
50   ${wxWidgets_INCLUDE_DIRS}
51 )
52
53 set(fs_SOURCE
54   src/freespace2/freespace.cpp
55   src/freespace2/levelpaging.cpp
56   src/freespace2/main.cpp
57 )
58
59 include(includes.cmake)
60
61 set(FS_BINARY freespace2)
62
63 if(FS1)
64   add_definitions(-DMAKE_FS1)
65   if(DEMO)
66     add_definitions(-DDEMO -DFS1_DEMO)
67     set(FS_BINARY freespace_demo)
68   else()
69     set(FS_BINARY freespace)
70   endif()
71 else()
72   if(DEMO)
73     add_definitions(-DFS2_DEMO)
74     set(FS_BINARY freespace2_demo)
75   else()
76     set(FS_BINARY freespace2)
77   endif()
78 endif()
79
80 add_executable(${FS_BINARY} ${fs_SOURCE} ${fs_INCLUDES})
81
82 target_link_libraries(
83   ${FS_BINARY}
84   code
85   ${SDL2_LIBRARIES}
86   ${OPENGL_LIBRARIES}
87   ${OPENAL_LIBRARY}
88 )
89
90 add_executable(ac
91   EXCLUDE_FROM_ALL
92   src/ac/ac.cpp
93   src/ac/ac_stubs.cpp
94   src/ac/convert.cpp
95 )
96
97 target_link_libraries(
98   ac
99   code
100   ${SDL2_LIBRARIES}
101   ${OPENGL_LIBRARIES}
102   ${OPENAL_LIBRARY}
103 )
104
105 add_executable(cfilearchiver
106   EXCLUDE_FROM_ALL
107   src/cfilearchiver/cfilearchiver.cpp
108 )
109
110 add_executable(cryptstring
111   EXCLUDE_FROM_ALL
112   src/cryptstring/cryptstring.cpp
113 )
114
115 add_executable(nebedit
116   EXCLUDE_FROM_ALL
117   src/nebedit/nebedit.cpp
118   src/nebedit/nebstubs.cpp
119 )
120
121 target_link_libraries(
122   nebedit
123   code
124   ${SDL2_LIBRARIES}
125   ${OPENGL_LIBRARIES}
126   ${OPENAL_LIBRARY}
127   ${wxWidgets_LIBRARIES}
128 )
129
130 add_executable(pofview
131   EXCLUDE_FROM_ALL
132   src/pofview/pofview.cpp
133   src/pofview/pofviewdialogs.cpp
134   src/pofview/pofviewcanvas.cpp
135   src/pofview/pofviewstubs.cpp
136   src/pofview/res/pofview_ico.xpm
137   src/pofview/res/tool_about.xpm
138   src/pofview/res/tool_damaged.xpm
139   src/pofview/res/tool_debris.xpm
140   src/pofview/res/tool_detail1.xpm
141   src/pofview/res/tool_detail2.xpm
142   src/pofview/res/tool_detail3.xpm
143   src/pofview/res/tool_detail4.xpm
144   src/pofview/res/tool_detail5.xpm
145   src/pofview/res/tool_detail6.xpm
146   src/pofview/res/tool_lights.xpm
147   src/pofview/res/tool_tree.xpm
148 )
149
150 target_link_libraries(
151   pofview
152   code
153   ${SDL2_LIBRARIES}
154   ${OPENGL_LIBRARIES}
155   ${OPENAL_LIBRARY}
156   ${wxWidgets_LIBRARIES}
157 )
158
159 if(NOT WIN32)
160   set_target_properties(pofview PROPERTIES COMPILE_FLAGS -std=c++11)
161 endif()
162
163 add_executable(scramble
164   EXCLUDE_FROM_ALL
165   src/parse/encrypt.cpp
166   src/scramble/scramble.cpp
167 )
168
169 add_executable(fonttool
170   EXCLUDE_FROM_ALL
171   src/fonttool/fontstubs.cpp
172   src/fonttool/fontcreate.cpp
173   src/fonttool/fontkern.cpp
174   src/fonttool/fontkerncopy.cpp
175   src/fonttool/fonttool.cpp
176 )
177
178 add_custom_command(TARGET fonttool
179   POST_BUILD
180   COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/src/fonttool"
181   COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/src/fonttool/fonttool.pcx" "${CMAKE_CURRENT_BINARY_DIR}/src/fonttool"
182 )
183
184 target_link_libraries(
185   fonttool
186   code
187   ${SDL2_LIBRARIES}
188   ${OPENGL_LIBRARIES}
189   ${OPENAL_LIBRARY}
190 )
191
192 add_custom_target(tools)
193
194 add_dependencies(tools
195   ac
196   nebedit
197   cfilearchiver
198   scramble
199   cryptstring
200   fonttool
201 )
202
203 include(custom.cmake OPTIONAL)