]> git.xonotic.org Git - xonotic/netradiant.git/blob - CMakeLists.txt
Split CMakeLists.txt into subdirectories
[xonotic/netradiant.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
2
3 project(NetRadiant C CXX)
4
5 #CMake 3.0+ would allow this in project()
6 set(NetRadiant_VERSION_MAJOR 1)
7 set(NetRadiant_VERSION_MINOR 5)
8 set(NetRadiant_VERSION_PATCH 0)
9 set(NetRadiant_VERSION ${NetRadiant_VERSION_MAJOR}.${NetRadiant_VERSION_MINOR}.${NetRadiant_VERSION_PATCH})
10
11 set(Q3MAP_VERSION = 2.5.17n)
12
13 set(RADIANT_VERSION_STRING "${NetRadiant_VERSION}n${GIT_VERSION}")
14 execute_process(COMMAND git rev-parse --short HEAD
15     OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
16 if(GIT_VERSION)
17     set(RADIANT_VERSION_STRING "${RADIANT_VERSION_STRING}-git-${GIT_VERSION}")
18     set(Q3MAP_VERSION "${Q3MAP_VERSION}-git-${GIT_VERSION}")
19 endif()
20
21 if(WIN32)
22     set(RADIANT_EXECUTABLE "exe")
23 else()
24     execute_process(COMMAND uname -m
25         OUTPUT_VARIABLE RADIANT_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
26 endif()
27 set(RADIANT_ABOUTMSG "Custom build" CACHE STRING "About message")
28
29 message(STATUS "Building ${PROJECT_NAME} ${RADIANT_VERSION_STRING} ${RADIANT_ABOUTMSG}")
30
31
32 set(CMAKE_CXX_STANDARD 11)
33 set(CMAKE_CXX_STANDARD_REQUIRED ON)
34 # For some reason the above flags don't really work...
35 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
36     include(CheckCXXCompilerFlag)
37     check_cxx_compiler_flag(--std=c++${CMAKE_CXX_STANDARD} STD_CXX)
38     if(STD_CXX)
39         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${CMAKE_CXX_STANDARD}")
40     else()
41         message(SEND_ERROR "Requires C++${CMAKE_CXX_STANDARD} or better")
42     endif()
43 else()
44     message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${CMAKE_CXX_STANDARD}")
45 endif()
46
47 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
48
49 # Enable Debug by default, can be changed with -D CMAKE_BUILD_TYPE=Release
50 if(CMAKE_BUILD_TYPE STREQUAL "")
51     set(CMAKE_BUILD_TYPE Debug)
52     add_definitions(-D_DEBUG=1)
53 else()
54 endif()
55
56 find_package(LibXml2 REQUIRED)
57 include_directories(${LIBXML2_INCLUDE_DIR})
58
59 find_package(GTK2 REQUIRED)
60 include_directories(${GTK2_INCLUDE_DIRS} ${GTK2_GDK_INCLUDE_DIR} ${GTK2_GLIB_INCLUDE_DIR})
61
62 find_package(GtkGLExt REQUIRED)
63 include_directories(${GTKGL_INCLUDE_DIRS})
64
65 find_package(OpenGL REQUIRED)
66
67 add_definitions(
68     -DRADIANT_VERSION="${RADIANT_VERSION_STRING}"
69     -DRADIANT_MAJOR_VERSION="${NetRadiant_VERSION_MINOR}"
70     -DRADIANT_MINOR_VERSION="${NetRadiant_VERSION_PATCH}"
71     -DRADIANT_ABOUTMSG="${RADIANT_ABOUTMSG}"
72     -DRADIANT_EXECUTABLE="${RADIANT_EXECUTABLE}"
73 )
74 if(NOT WIN32)
75     add_definitions(
76         -DPOSIX=1
77         -DXWINDOWS=1
78     )
79 else()
80     add_definitions(
81         -D_WIN32
82     )
83 endif()
84
85 set(INCLUDELIST
86     include/aboutmsg.h
87     include/cullable.cpp
88     include/cullable.h
89     include/editable.cpp
90     include/editable.h
91     include/iarchive.cpp
92     include/iarchive.h
93     include/ibrush.cpp
94     include/ibrush.h
95     include/icamera.cpp
96     include/icamera.h
97     include/idatastream.cpp
98     include/idatastream.h
99     include/ieclass.cpp
100     include/ieclass.h
101     include/ientity.cpp
102     include/ientity.h
103     include/ifilesystem.cpp
104     include/ifilesystem.h
105     include/ifiletypes.cpp
106     include/ifiletypes.h
107     include/ifilter.cpp
108     include/ifilter.h
109     include/igl.cpp
110     include/igl.h
111     include/iglrender.cpp
112     include/iglrender.h
113     include/igtkgl.cpp
114     include/igtkgl.h
115     include/iimage.cpp
116     include/iimage.h
117     include/imap.cpp
118     include/imap.h
119     include/imodel.cpp
120     include/imodel.h
121     include/ipatch.cpp
122     include/ipatch.h
123     include/iplugin.cpp
124     include/iplugin.h
125     include/ireference.cpp
126     include/ireference.h
127     include/irender.cpp
128     include/irender.h
129     include/iscenegraph.cpp
130     include/iscenegraph.h
131     include/iscriplib.cpp
132     include/iscriplib.h
133     include/iselection.cpp
134     include/iselection.h
135     include/ishaders.cpp
136     include/ishaders.h
137     include/itexdef.cpp
138     include/itexdef.h
139     include/itextstream.cpp
140     include/itextstream.h
141     include/itextures.cpp
142     include/itextures.h
143     include/itoolbar.cpp
144     include/itoolbar.h
145     include/iundo.cpp
146     include/iundo.h
147     include/mapfile.cpp
148     include/mapfile.h
149     include/modelskin.cpp
150     include/modelskin.h
151     include/moduleobserver.cpp
152     include/moduleobserver.h
153     include/modulesystem.cpp
154     include/modulesystem.h
155     include/nameable.cpp
156     include/nameable.h
157     include/namespace.cpp
158     include/namespace.h
159     include/preferencesystem.cpp
160     include/preferencesystem.h
161     include/qerplugin.cpp
162     include/qerplugin.h
163     include/renderable.cpp
164     include/renderable.h
165     include/selectable.cpp
166     include/selectable.h
167     include/stream_version.h
168     include/version.h
169     include/warnings.h
170     include/windowobserver.cpp
171     include/windowobserver.h
172 )
173 include_directories(include)
174
175 add_subdirectory(libs)
176 include_directories(libs)
177 add_subdirectory(contrib)
178 add_subdirectory(plugins)
179
180 set(RADIANTLIST
181     radiant/autosave.cpp
182     radiant/autosave.h
183     radiant/brush.cpp
184     radiant/brush.h
185     radiant/brush_primit.cpp
186     radiant/brush_primit.h
187     radiant/brushmanip.cpp
188     radiant/brushmanip.h
189     radiant/brushmodule.cpp
190     radiant/brushmodule.h
191     radiant/brushnode.cpp
192     radiant/brushnode.h
193     radiant/brushtokens.cpp
194     radiant/brushtokens.h
195     radiant/brushxml.cpp
196     radiant/brushxml.h
197     radiant/build.cpp
198     radiant/build.h
199     radiant/camwindow.cpp
200     radiant/camwindow.h
201     radiant/clippertool.cpp
202     radiant/clippertool.h
203     radiant/commands.cpp
204     radiant/commands.h
205     radiant/console.cpp
206     radiant/console.h
207     radiant/csg.cpp
208     radiant/csg.h
209     radiant/dialog.cpp
210     radiant/dialog.h
211     radiant/eclass.cpp
212     radiant/eclass.h
213     radiant/eclass_def.cpp
214     radiant/eclass_def.h
215     radiant/eclass_doom3.cpp
216     radiant/eclass_doom3.h
217     radiant/eclass_fgd.cpp
218     radiant/eclass_fgd.h
219     radiant/eclass_xml.cpp
220     radiant/eclass_xml.h
221     radiant/entity.cpp
222     radiant/entity.h
223     radiant/entityinspector.cpp
224     radiant/entityinspector.h
225     radiant/entitylist.cpp
226     radiant/entitylist.h
227     radiant/environment.cpp
228     radiant/environment.h
229     radiant/error.cpp
230     radiant/error.h
231     radiant/feedback.cpp
232     radiant/feedback.h
233     radiant/filetypes.cpp
234     radiant/filetypes.h
235     radiant/filters.cpp
236     radiant/filters.h
237     radiant/findtexturedialog.cpp
238     radiant/findtexturedialog.h
239     radiant/glwidget.cpp
240     radiant/glwidget.h
241     radiant/grid.cpp
242     radiant/grid.h
243     radiant/groupdialog.cpp
244     radiant/groupdialog.h
245     radiant/gtkdlgs.cpp
246     radiant/gtkdlgs.h
247     radiant/gtkmisc.cpp
248     radiant/gtkmisc.h
249     radiant/help.cpp
250     radiant/help.h
251     radiant/image.cpp
252     radiant/image.h
253     radiant/main.cpp
254     radiant/main.h
255     radiant/mainframe.cpp
256     radiant/mainframe.h
257     radiant/map.cpp
258     radiant/map.h
259     radiant/mru.cpp
260     radiant/mru.h
261     radiant/multimon.cpp
262     radiant/multimon.h
263     radiant/nullmodel.cpp
264     radiant/nullmodel.h
265     radiant/parse.cpp
266     radiant/parse.h
267     radiant/patch.cpp
268     radiant/patch.h
269     radiant/patchdialog.cpp
270     radiant/patchdialog.h
271     radiant/patchmanip.cpp
272     radiant/patchmanip.h
273     radiant/patchmodule.cpp
274     radiant/patchmodule.h
275     radiant/plugin.cpp
276     radiant/plugin.h
277     radiant/pluginapi.cpp
278     radiant/pluginapi.h
279     radiant/pluginmanager.cpp
280     radiant/pluginmanager.h
281     radiant/pluginmenu.cpp
282     radiant/pluginmenu.h
283     radiant/plugintoolbar.cpp
284     radiant/plugintoolbar.h
285     radiant/points.cpp
286     radiant/points.h
287     radiant/preferencedictionary.cpp
288     radiant/preferencedictionary.h
289     radiant/preferences.cpp
290     radiant/preferences.h
291     radiant/qe3.cpp
292     radiant/qe3.h
293     radiant/qgl.cpp
294     radiant/qgl.h
295     radiant/referencecache.cpp
296     radiant/referencecache.h
297     radiant/renderer.cpp
298     radiant/renderer.h
299     radiant/renderstate.cpp
300     radiant/renderstate.h
301     radiant/resource.h
302     radiant/scenegraph.cpp
303     radiant/scenegraph.h
304     radiant/select.cpp
305     radiant/select.h
306     radiant/selection.cpp
307     radiant/selection.h
308     radiant/server.cpp
309     radiant/server.h
310     radiant/shaders.cpp
311     radiant/shaders.h
312     radiant/sockets.cpp
313     radiant/sockets.h
314     radiant/stacktrace.cpp
315     radiant/stacktrace.h
316     radiant/surfacedialog.cpp
317     radiant/surfacedialog.h
318     radiant/texmanip.cpp
319     radiant/texmanip.h
320     radiant/textureentry.cpp
321     radiant/textureentry.h
322     radiant/textures.cpp
323     radiant/textures.h
324     radiant/texwindow.cpp
325     radiant/texwindow.h
326     radiant/timer.cpp
327     radiant/timer.h
328     radiant/treemodel.cpp
329     radiant/treemodel.h
330     radiant/undo.cpp
331     radiant/undo.h
332     radiant/url.cpp
333     radiant/url.h
334     radiant/view.cpp
335     radiant/view.h
336     radiant/watchbsp.cpp
337     radiant/watchbsp.h
338     radiant/winding.cpp
339     radiant/winding.h
340     radiant/windowobservers.cpp
341     radiant/windowobservers.h
342     radiant/xmlstuff.cpp
343     radiant/xmlstuff.h
344     radiant/xywindow.cpp
345     radiant/xywindow.h
346 )
347
348 add_executable(radiant WIN32 radiant/radiant.rc ${RADIANTLIST})
349 target_link_libraries(radiant
350     ${CMAKE_DL_LIBS}
351     ${LIBXML2_LIBRARIES}
352     ${GTK2_LIBRARIES}
353     ${OPENGL_gl_LIBRARY}
354     cmdlib
355     container
356     ddslib
357     debugging
358     gtkutil
359     ${GTKGL_LIBRARIES}
360     l_net
361 #    math
362     mathlib
363     md5lib
364     memory
365     modulesystem
366     os
367     picomodel
368     profile
369     script
370     signal
371     splines
372     stream
373     string
374     xml
375 )