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