]> icculus.org git repositories - taylor/freespace2.git/blob - CMakeLists.txt
get fonttool cleaned up and working
[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   src/freespace2/main.cpp
52 )
53
54 include(includes.cmake)
55
56 set(FS_BINARY freespace2)
57
58 if(FS1)
59   add_definitions(-DMAKE_FS1)
60   if(DEMO)
61     add_definitions(-DDEMO -DFS1_DEMO)
62     set(FS_BINARY freespace_demo)
63   else()
64     set(FS_BINARY freespace)
65   endif()
66 else()
67   if(DEMO)
68     add_definitions(-DFS2_DEMO)
69     set(FS_BINARY freespace2_demo)
70   else()
71     set(FS_BINARY freespace2)
72   endif()
73 endif()
74
75 add_executable(${FS_BINARY} ${fs_SOURCE} ${fs_INCLUDES})
76
77 target_link_libraries(
78   ${FS_BINARY}
79   code
80   ${SDL2_LIBRARIES}
81   ${OPENGL_LIBRARIES}
82   ${OPENAL_LIBRARY}
83 )
84
85 add_executable(ac
86   EXCLUDE_FROM_ALL
87   src/ac/ac.cpp
88   src/ac/ac_stubs.cpp
89   src/ac/convert.cpp
90 )
91
92 target_link_libraries(
93   ac
94   code
95   ${SDL2_LIBRARIES}
96   ${OPENGL_LIBRARIES}
97   ${OPENAL_LIBRARY}
98 )
99
100 add_executable(cfilearchiver
101   EXCLUDE_FROM_ALL
102   src/cfilearchiver/cfilearchiver.cpp
103 )
104
105 add_executable(cryptstring
106   EXCLUDE_FROM_ALL
107   src/cryptstring/cryptstring.cpp
108 )
109
110 add_executable(nebedit
111   EXCLUDE_FROM_ALL
112   src/nebedit/nebedit.cpp
113   src/nebedit/nebstubs.cpp
114 )
115
116 target_link_libraries(
117   nebedit
118   code
119   ${SDL2_LIBRARIES}
120   ${OPENGL_LIBRARIES}
121   ${OPENAL_LIBRARY}
122 )
123
124 add_executable(pofview
125   EXCLUDE_FROM_ALL
126   src/pofview/childfrm.cpp
127   src/pofview/mainfrm.cpp
128   src/pofview/objecttree.cpp
129   src/pofview/pofview.cpp
130   src/pofview/pofviewdoc.cpp
131   src/pofview/pofviewstubs.cpp
132   src/pofview/pofviewview.cpp
133   src/pofview/stdafx.cpp
134 )
135
136 add_executable(scramble
137   EXCLUDE_FROM_ALL
138   src/parse/encrypt.cpp
139   src/scramble/scramble.cpp
140 )
141
142 add_executable(fonttool
143   EXCLUDE_FROM_ALL
144   src/fonttool/fontstubs.cpp
145   src/fonttool/fontcreate.cpp
146   src/fonttool/fontkern.cpp
147   src/fonttool/fontkerncopy.cpp
148   src/fonttool/fonttool.cpp
149 )
150
151 add_custom_command(TARGET fonttool
152   POST_BUILD
153   COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/src/fonttool"
154   COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/src/fonttool/fonttool.pcx" "${CMAKE_CURRENT_BINARY_DIR}/src/fonttool"
155 )
156
157 target_link_libraries(
158   fonttool
159   code
160   ${SDL2_LIBRARIES}
161   ${OPENGL_LIBRARIES}
162   ${OPENAL_LIBRARY}
163 )
164
165 add_custom_target(tools)
166
167 add_dependencies(tools
168   cfilearchiver
169   scramble
170   cryptstring
171   fonttool
172 )
173
174 include(custom.cmake OPTIONAL)