]> de.git.xonotic.org Git - xonotic/darkplaces.git/blob - CMakeLists.txt
Add spawn2, a new spawn builtin
[xonotic/darkplaces.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
2 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
3 project(darkplaces C)
4
5 set(DP_CLIENT 1)
6 set(DP_SERVER 1)
7
8 set(DP_IOS 0)
9
10 set(DP_MENU 1)
11 set(DP_CD 1)
12 set(DP_VIDEO_CAPTURE 1)
13
14 set(USE_ZLIB 1)
15 set(USE_JPEG 1)
16
17 set(SOURCE_COMMON
18         builddate.c
19         bih.c bih.h
20         crypto.c crypto.h
21         cl_collision.c cl_collision.h
22         cl_demo.c
23         cl_dyntexture.c cl_dyntexture.h
24         cl_input.c
25         cl_main.c
26         cl_parse.c
27         cl_particles.c
28         cl_screen.c cl_screen.h
29         cl_video.c cl_video.h
30         clvm_cmds.c clvm_cmds.h
31         cmd.c cmd.h
32         collision.c collision.h
33         common.c common.h
34         console.c console.h
35         csprogs.c csprogs.h
36         curves.c curves.h
37         cvar.c cvar.h
38         dpsoftrast.c dpsoftrast.h
39         dpvsimpledecode.c dpvsimpledecode.h
40         filematch.c
41         fractalnoise.c
42         fs.c fs.h
43         ft2.c ft2.h ft2_defs.h ft2_fontdefs.h
44         utf8lib.c utf8lib.h
45         gl_backend.c gl_backend.h
46         gl_draw.c lhfont.h
47         gl_rmain.c
48         gl_rsurf.c
49         gl_textures.c
50         hmac.c hmac.h
51         host.c
52         host_cmd.c
53         image.c image.h
54         image_png.c image_png.h
55         jpeg.c jpeg.h
56         keys.c keys.h
57         lhnet.c lhnet.h
58         libcurl.c libcurl.h
59         mathlib.c mathlib.h
60         matrixlib.c matrixlib.h
61         mdfour.c mdfour.h
62         meshqueue.c meshqueue.h
63         mod_skeletal_animatevertices_sse.c mod_skeletal_animatevertices_sse.h
64         mod_skeletal_animatevertices_generic.c mod_skeletal_animatevertices_generic.h
65         model_alias.c model_alias.h
66         model_brush.c model_brush.h
67         model_shared.c model_shared.h
68         model_sprite.c model_sprite.h
69         netconn.c netconn.h
70         palette.c palette.h
71         polygon.c polygon.h
72         portals.c portals.h
73         protocol.c protocol.h
74         prvm_cmds.c prvm_cmds.h
75         prvm_edict.c
76         prvm_exec.c
77         r_explosion.c
78         r_lerpanim.c r_lerpanim.h
79         r_lightning.c
80         r_modules.c r_modules.h
81         r_shadow.c r_shadow.h
82         r_sky.c
83         r_sprites.c
84         sbar.c sbar.h
85         sv_demo.c sv_demo.h
86         sv_main.c
87         sv_move.c
88         sv_phys.c
89         sv_user.c
90         svbsp.c svbsp.h
91         svvm_cmds.c
92         sys_shared.c
93         vid_shared.c vid.h
94         view.c
95         wad.c wad.h
96         world.c world.h
97         zone.c zone.h
98         )
99 set(SOURCE_CLIENT)
100 set(SOURCE_SERVER)
101
102 set(DP_DEFS)
103 set(DP_DEFS_CLIENT)
104 set(DP_DEFS_SERVER)
105
106 if (DP_MENU)
107     list(APPEND DP_DEFS -DCONFIG_MENU)
108     list(APPEND SOURCE_COMMON
109             menu.c menu.h
110             mprogdefs.h
111             mvm_cmds.c
112             )
113 endif ()
114
115 if (DP_CD)
116     list(APPEND DP_DEFS_CLIENT -DCONFIG_CD)
117     list(APPEND SOURCE_CLIENT cd_shared.c cdaudio.h)
118     list(APPEND SOURCE_CLIENT cd_sdl.c)
119 endif ()
120
121 if (DP_VIDEO_CAPTURE)
122     list(APPEND DP_DEFS_CLIENT -DCONFIG_VIDEO_CAPTURE)
123     list(APPEND SOURCE_CLIENT
124             cap_avi.c cap_avi.h
125             cap_ogg.c cap_ogg.h
126             )
127 endif ()
128
129 if (WIN32)
130     list(APPEND SOURCE_COMMON conproc.c conproc.h)
131 endif ()
132
133 if (DP_IOS)
134     list(APPEND DP_DEFS -D__IPHONEOS__)
135     set(CMAKE_OSX_SYSROOT iphoneos)
136     set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
137     set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.xonotic\${PRODUCT_NAME:identifier}")
138 endif ()
139
140 list(APPEND SOURCE_CLIENT vid_sdl.c)
141 list(APPEND SOURCE_SERVER vid_null.c)
142
143 list(APPEND SOURCE_CLIENT
144         snd_main.c snd_main.h
145         snd_mem.c
146         snd_mix.c
147         snd_ogg.c snd_ogg.h
148         snd_wav.c snd_wav.h
149         )
150 list(APPEND SOURCE_CLIENT snd_sdl.c)
151 list(APPEND SOURCE_SERVER snd_null.c)
152
153 list(APPEND SOURCE_COMMON sys.h)
154 list(APPEND SOURCE_CLIENT sys_sdl.c)
155 if (WIN32)
156     list(APPEND SOURCE_SERVER sys_win.c)
157 else ()
158     list(APPEND SOURCE_SERVER sys_linux.c)
159 endif ()
160
161 list(APPEND SOURCE_COMMON thread.h)
162 list(APPEND SOURCE_CLIENT thread_sdl.c)
163 list(APPEND SOURCE_SERVER thread_null.c)
164
165 if (DP_SERVER)
166     add_executable(darkplaces-dedicated WIN32 MACOSX_BUNDLE ${SOURCE_SERVER} ${SOURCE_COMMON})
167 endif ()
168 if (DP_CLIENT)
169     add_executable(darkplaces WIN32 MACOSX_BUNDLE ${SOURCE_CLIENT} ${SOURCE_COMMON})
170 endif ()
171
172 if (DP_SERVER)
173     target_compile_definitions(darkplaces-dedicated PRIVATE ${DP_DEFS} ${DP_DEFS_SERVER})
174 endif ()
175 if (DP_CLIENT)
176     target_compile_definitions(darkplaces PRIVATE ${DP_DEFS} ${DP_DEFS_CLIENT})
177 endif ()
178
179 set(LIBS_COMMON ${CMAKE_DL_LIBS})
180 if (TARGET d0_blind_id)
181     list(APPEND LIBS_COMMON d0_blind_id)
182     # list(APPEND DP_DEFS -DLINK_TO_CRYPTO)
183 endif ()
184 if (UNIX)
185     list(APPEND LIBS_COMMON m)
186 endif ()
187 if (WIN32)
188     list(APPEND LIBS_COMMON ws2_32 winmm)
189 endif ()
190 if (APPLE)
191     list(APPEND LIBS_COMMON "-framework IOKit")
192 endif ()
193
194 function(target_requires_zlib target)
195     if (NOT USE_ZLIB)
196         return()
197     endif ()
198     find_package(ZLIB REQUIRED)
199     target_include_directories(${target} PRIVATE ${ZLIB_INCLUDE_DIRS})
200     target_link_libraries(${target} PRIVATE ${ZLIB_LIBRARIES})
201     target_compile_definitions(${target} PRIVATE -DLINK_TO_ZLIB)
202 endfunction()
203
204 function(target_requires_jpeg target)
205     if (NOT USE_JPEG)
206         return()
207     endif ()
208     find_package(JPEG REQUIRED)
209     if (NOT JPEG_INCLUDE_DIRS)
210         set(JPEG_INCLUDE_DIRS ${JPEG_INCLUDE_DIR})
211     endif ()
212     target_include_directories(${target} PRIVATE ${JPEG_INCLUDE_DIRS})
213     target_link_libraries(${target} PRIVATE ${JPEG_LIBRARIES})
214     target_compile_definitions(${target} PRIVATE -DLINK_TO_LIBJPEG)
215 endfunction()
216
217 if (DP_SERVER)
218     target_link_libraries(darkplaces-dedicated PRIVATE ${LIBS_COMMON})
219     target_requires_zlib(darkplaces-dedicated)
220 endif ()
221
222 if (DP_CLIENT)
223     target_link_libraries(darkplaces PRIVATE ${LIBS_COMMON})
224     target_requires_zlib(darkplaces)
225
226     find_package(SDL2 REQUIRED)
227     if (NOT SDL2_INCLUDE_DIRS)
228         set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
229     endif ()
230     if (NOT SDL2_LIBRARIES)
231         set(SDL2_LIBRARIES ${SDL2_LIBRARY})
232     endif ()
233     target_include_directories(darkplaces PRIVATE ${SDL2_INCLUDE_DIRS})
234     target_link_libraries(darkplaces PRIVATE ${SDL2_LIBRARIES})
235
236     if (NOT DP_IOS)
237         target_requires_jpeg(darkplaces)
238     endif ()
239 endif ()