]> git.xonotic.org Git - xonotic/darkplaces.git/blob - CMakeLists.txt
a81a0e93937c9c97ef006fd69435a68f5eb009f2
[xonotic/darkplaces.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
2
3 project(darkplaces C)
4
5 include(buildsys/build.cmake) # Utility and helper functions and macros
6 include(buildsys/dependencies.cmake)
7 include(game/default/dpconfig.cmake) # Initial build options
8
9 unset(CMAKE_C_FLAGS_MINSIZEREL CACHE)
10 unset(CMAKE_C_FLAGS_RELWITHDEBINFO CACHE)
11
12 unset(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL CACHE)
13 unset(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO CACHE)
14
15 if(NOT FIRST_CONFIG)
16         unset(CMAKE_C_FLAGS CACHE)
17         unset(CMAKE_C_FLAGS_RELEASE CACHE)
18         unset(CMAKE_C_FLAGS_DEBUG CACHE)
19
20         unset(CMAKE_EXE_LINKER_FLAGS CACHE)
21         unset(CMAKE_EXE_LINKER_FLAGS_RELEASE CACHE)
22         unset(CMAKE_EXE_LINKER_FLAGS_DEBUG CACHE)
23
24         set(CMAKE_C_FLAGS "" CACHE STRING "")
25         set(CMAKE_C_FLAGS_RELEASE "" CACHE STRING "")
26         set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "")
27         set(CMAKE_C_FLAGS_PROFILE "" CACHE STRING "")
28         set(CMAKE_C_FLAGS_PROFILERELEASE "" CACHE STRING "")
29
30         set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "")
31         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "")
32         set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "")
33         set(CMAKE_EXE_LINKER_FLAGS_PROFILE "" CACHE STRING "")
34         set(CMAKE_EXE_LINKER_FLAGS_PROFILERELEASE "" CACHE STRING "")
35
36         set(FIRST_CONFIG TRUE CACHE INTERNAL "")
37 endif()
38
39 if(NOT MSVC)
40         set(CMAKE_CONFIGURATION_TYPES "Release;Debug;Profile;ProfileRelease" CACHE STRING "" FORCE)
41 else()
42         set(CMAKE_CONFIGURATION_TYPES "Release;Debug" CACHE STRING "" FORCE)
43 endif()
44
45 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${CMAKE_CONFIGURATION_TYPES}")
46 mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
47
48 if(NOT CMAKE_BUILD_TYPE)
49         set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the build type")
50 endif()
51
52 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/buildsys/module)
53 set(GAME_PROJECT "" CACHE STRING "Name of game project")
54 set(GAME_PROJECT_DIR "" CACHE PATH "Location of game project")
55
56 set(OBJ_COMMON
57         bih.c
58         crypto.c
59         cd_shared.c
60         cl_cmd.c
61         cl_collision.c
62         cl_demo.c
63         cl_ents.c
64         cl_ents4.c
65         cl_ents5.c
66         cl_ents_nq.c
67         cl_ents_qw.c
68         cl_input.c
69         cl_main.c
70         cl_parse.c
71         cl_particles.c
72         cl_screen.c
73         cl_video.c
74         cl_video_libavw.c
75         clvm_cmds.c
76         cmd.c
77         collision.c
78         com_crc16.c
79         com_ents.c
80         com_ents4.c
81         com_game.c
82         com_infostring.c
83         com_msg.c
84         common.c
85         console.c
86         csprogs.c
87         curves.c
88         cvar.c
89         dpvsimpledecode.c
90         filematch.c
91         fractalnoise.c
92         fs.c
93         ft2.c
94         utf8lib.c
95         gl_backend.c
96         gl_draw.c
97         gl_rmain.c
98         gl_rsurf.c
99         gl_textures.c
100         hmac.c
101         host.c
102         image.c
103         image_png.c
104         jpeg.c
105         keys.c
106         lhnet.c
107         libcurl.c
108         mathlib.c
109         matrixlib.c
110         mdfour.c
111         meshqueue.c
112         mod_skeletal_animatevertices_sse.c
113         mod_skeletal_animatevertices_generic.c
114         model_alias.c
115         model_brush.c
116         model_shared.c
117         model_sprite.c
118         netconn.c
119         palette.c
120         polygon.c
121         portals.c
122         protocol.c
123         prvm_cmds.c
124         prvm_edict.c
125         prvm_exec.c
126         r_explosion.c
127         r_lightning.c
128         r_modules.c
129         r_shadow.c
130         r_sky.c
131         r_sprites.c
132         r_stats.c
133         sbar.c
134         sv_ccmds.c
135         sv_demo.c
136         sv_ents.c
137         sv_ents4.c
138         sv_ents5.c
139         sv_ents_csqc.c
140         sv_ents_nq.c
141         sv_main.c
142         sv_move.c
143         sv_phys.c
144         sv_save.c
145         sv_send.c
146         sv_user.c
147         svbsp.c
148         svvm_cmds.c
149         sys_shared.c
150         taskqueue.c
151         vid_shared.c
152         view.c
153         wad.c
154         world.c
155         zone.c
156 )
157 set(OBJ_HEADERS
158         bih.h
159         bspfile.h
160         cap_avi.h
161         cap_ogg.h
162         cap.h
163         cdaudio.h
164         cl_collision.h
165         cl_parse.h
166         cl_particles.h
167         cl_screen.h
168         cl_video_libavw.h
169         cl_video.h
170         client.h
171         clprogdefs.h
172         clvm_cmds.h
173         cmd.h
174         collision.h
175         com_game.h
176         com_infostring.h
177         com_list.h
178         common.h
179         console.h
180         crypto.h
181         csprogs.h
182         curves.h
183         cvar.h
184         darkplaces.h
185         dpvsimpledecode.h
186         draw.h
187         filematch.h
188         fs.h
189         ft2_defs.h
190         ft2_fontdefs.h
191         ft2.h
192         gl_backend.h
193         glquake.h
194         hmac.h
195         host.h
196         image_png.h
197         image.h
198         input.h
199         jpeg.h
200         keys.h
201         lhfont.h
202         lhnet.h
203         libcurl.h
204         mathlib.h
205         matrixlib.h
206         mdfour.h
207         menu.h
208         meshqueue.h
209         mod_skeletal_animatevertices_generic.h
210         mod_skeletal_animatevertices_sse.h
211         model_alias.h
212         model_brush.h
213         model_dpmodel.h
214         model_hlmdl.h
215         model_iqm.h
216         model_psk.h
217         model_q1bsp.h
218         model_q2bsp.h
219         model_q3bsp.h
220         model_shared.h
221         model_sprite.h
222         model_vbsp.h
223         model_zymotic.h
224         modelgen.h
225         mprogdefs.h
226         netconn.h
227         palette.h
228         pmove.h
229         polygon.h
230         portals.h
231         pr_comp.h
232         progdefs.h
233         progs.h
234         progsvm.h
235         protocol.h
236         prvm_cmds.h
237         prvm_execprogram.h
238         prvm_offsets.h
239         qdefs.h
240         qstats.h
241         qtypes.h
242         quakedef.h
243         r_modules.h
244         r_qshader.h
245         r_shadow.h
246         r_stats.h
247         r_textures.h
248         render.h
249         resource.h
250         sbar.h
251         screen.h
252         server.h
253         shader_glsl.h
254         snd_main.h
255         snd_ogg.h
256         snd_wav.h
257         snd_xmp.h
258         sound.h
259         spritegn.h
260         sv_demo.h
261         svbsp.h
262         sys.h
263         taskqueue.h
264         thread.h
265         timing.h
266         utf8lib.h
267         vid.h
268         view.h
269         vpk.h
270         wad.h
271         world.h
272         zone.h
273 )
274 set(OBJ_SND_COMMON snd_main.c snd_mem.c snd_mix.c snd_ogg.c snd_wav.c)
275 set(OBJ_VIDEO_CAPTURE cap_avi.c cap_ogg.c)
276 set(OBJ_MENU menu.c mvm_cmds.c)
277 set(OBJ_SV ${OBJ_COMMON} builddate.c sys_unix.c vid_null.c snd_null.c thread_null.c)
278 set(OBJ_CL ${OBJ_COMMON} builddate.c snd_sdl.c sys_sdl.c vid_sdl.c thread_sdl.c)
279 set(OBJ_RC ${ENGINE_BUILD_WINRC})
280
281 # Make the headers show up in IDEs
282 add_custom_target(headers EXCLUDE_FROM_ALL SOURCES ${OBJ_HEADERS})
283
284 dp_build("${GAME_PROJECT}" "${GAME_PROJECT_DIR}")