]> git.xonotic.org Git - xonotic/netradiant.git/blob - CMakeLists.txt
Merge branch 'Spike29/fix182' into 'master'
[xonotic/netradiant.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
2
3 project(NetRadiant C CXX)
4
5 #-----------------------------------------------------------------------
6 # Builtins: configuration
7 #-----------------------------------------------------------------------
8
9 set(BUILTINS_INSTALL_DIR "${CMAKE_BINARY_DIR}/builtins")
10 set(BUILTINS_INCLUDE_DIR "${BUILTINS_INSTALL_DIR}/include")
11 set(BUILTINS_LIB_DIR "${BUILTINS_INSTALL_DIR}/lib")
12 set(BUILTINS_PKGCONFIG_DIR "${BUILTINS_INSTALL_DIR}/lib/pkgconfig")
13
14 option(BUILTIN_GTKGLEXT "Builtin GtkGLExt" OFF)
15 option(BUILTIN_GTKTHEME_MOJAVE "Builtin Mojave GTK theme" OFF)
16
17 if(NOT CMAKE_BUILD_TYPE)
18     set(CMAKE_BUILD_TYPE Release)
19 endif()
20
21 if (APPLE)
22     set(BUILTIN_GTKGLEXT ON)
23     set(BUILTIN_GTKTHEME_MOJAVE ON)
24 endif ()
25
26 set(BUILTIN_GTKGLEXT_BUILT OFF CACHE INTERNAL "...")
27 if (EXISTS "${BUILTINS_PKGCONFIG_DIR}/gtkglext-1.0.pc")
28     set(BUILTIN_GTKGLEXT_BUILT ON)
29 endif ()
30
31 if (EXISTS "${BUILTINS_INCLUDE_DIR}")
32     include_directories("${BUILTINS_INCLUDE_DIR}")
33 endif ()
34
35 if (EXISTS "${BUILTINS_LIB_DIR}")
36     set(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}:${BUILTINS_LIB_DIR}")
37     link_directories("${BUILTINS_LIB_DIR}")
38 endif ()
39
40 if (EXISTS "${BUILTINS_PKGCONFIG_DIR}")
41     set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${BUILTINS_PKGCONFIG_DIR}")
42 endif ()
43
44 #-----------------------------------------------------------------------
45 # CMake modules
46 #-----------------------------------------------------------------------
47
48 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
49
50 #-----------------------------------------------------------------------
51 # Submodules
52 #-----------------------------------------------------------------------
53
54 if (EXISTS "${PROJECT_SOURCE_DIR}/libs/crunch/inc/crn_decomp.h")
55     set(DEFAULT_BUILD_CRUNCH ON CACHE INTERNAL "...")
56 else ()
57     set(DEFAULT_BUILD_CRUNCH OFF CACHE INTERNAL "...")
58 endif ()
59
60 #-----------------------------------------------------------------------
61 # Build options
62 #-----------------------------------------------------------------------
63
64 option(BUILD_RADIANT "Build the GUI" ON)
65 option(BUILD_TOOLS "Build the tools" ON)
66 option(BUILD_CRUNCH "Build Crunch image support" ${DEFAULT_BUILD_CRUNCH})
67 option(DOWNLOAD_GAMEPACKS "Download game packs" ON)
68 option(USE_WERROR "Build with -Werror -pedantic-errors" OFF)
69 option(FHS_INSTALL "Install according to Filesystem Hierarchy Standard" OFF)
70 option(FHS_INSTALL_ABSOLUTE "Install using absolute paths (requires FHS_INSTALL)" OFF)
71
72 set(BUILD_BINARIES OFF CACHE INTERNAL "...")
73 if (BUILD_RADIANT OR BUILD_TOOLS)
74     set(BUILD_BINARIES ON)
75 endif ()
76
77 if (BUILD_BINARIES)
78     if (WIN32
79         OR APPLE
80         OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux"
81         OR "${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" )
82         set(BUNDLING_SUPPORTED ON)
83     endif()
84
85     if (BUNDLING_SUPPORTED)
86         if(WIN32 AND NOT CMAKE_CROSSCOMPILING)
87             set(BUNDLE_LIBRARIES_DEFAULT ON)
88         else ()
89             set(BUNDLE_LIBRARIES_DEFAULT OFF)
90         endif ()
91
92         option(BUNDLE_LIBRARIES "Bundle libraries" ${BUNDLE_LIBRARIES_DEFAULT})
93     endif ()
94
95     if (BUNDLE_LIBRARIES AND BUNDLING_SUPPORTED)
96         set(FHS_INSTALL OFF CACHE PATH "Disabled because of BUNDLE_LIBRARIES is enabled" FORCE)
97     endif ()
98
99     if (NOT FHS_INSTALL AND FHS_INSTALL_ABSOLUTE)
100         set(FHS_INSTALL_ABSOLUTE OFF CACHE PATH "Disabled because of FHS_INSTALL is disabled" FORCE)
101     endif ()
102 endif ()
103
104 #-----------------------------------------------------------------------
105 # Paths
106 #-----------------------------------------------------------------------
107
108 if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
109     set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/install" CACHE PATH "..." FORCE)
110 endif ()
111
112 if (APPLE)
113     set(APPLE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/NetRadiant.app)
114     set(FINAL_INSTALL_PREFIX ${APPLE_INSTALL_PREFIX}/Contents/Prefix)
115 else ()
116     set(FINAL_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
117 endif ()
118
119 set(RADIANT_NAME "NetRadiant" CACHE INTERNAL "...")
120 add_definitions(-DRADIANT_NAME="${RADIANT_NAME}")
121 set(RADIANT_BASENAME "netradiant" CACHE INTERNAL "...")
122 add_definitions(-DRADIANT_BASENAME="${RADIANT_BASENAME}")
123
124 set(RADIANT_BIN_DIR ${FINAL_INSTALL_PREFIX} CACHE INTERNAL "...")
125 set(RADIANT_LIB_DIR ${FINAL_INSTALL_PREFIX}/lib CACHE INTERNAL "...")
126 set(RADIANT_ADDONS_DIR ${FINAL_INSTALL_PREFIX} CACHE INTERNAL "...")
127 set(RADIANT_SHARE_DIR ${FINAL_INSTALL_PREFIX}/share CACHE INTERNAL "...")
128 set(RADIANT_DATA_DIR ${FINAL_INSTALL_PREFIX} CACHE INTERNAL "...")
129
130 if (FHS_INSTALL)
131     add_definitions(-DRADIANT_FHS_INSTALL='ON')
132
133     set(RADIANT_BIN_DIR ${FINAL_INSTALL_PREFIX}/bin)
134     set(RADIANT_LIB_DIR ${FINAL_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
135     set(RADIANT_ADDONS_DIR ${RADIANT_LIB_DIR}/${RADIANT_BASENAME})
136     set(RADIANT_SHARE_DIR ${FINAL_INSTALL_PREFIX}/share)
137     set(RADIANT_DATA_DIR ${RADIANT_SHARE_DIR}/${RADIANT_BASENAME})
138     set(RADIANT_LIB_DIR ${FINAL_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
139
140     if (FHS_INSTALL_ABSOLUTE)
141         add_definitions(-DRADIANT_ADDONS_DIR="${RADIANT_ADDONS_DIR}")
142         add_definitions(-DRADIANT_DATA_DIR="${RADIANT_DATA_DIR}")
143     else ()
144         add_definitions(-DRADIANT_LIB_ARCH="${CMAKE_LIBRARY_ARCHITECTURE}")
145     endif ()
146 endif ()
147
148
149 set(GAMEPACKS_DOWNLOAD_DIR ${PROJECT_BINARY_DIR}/download CACHE PATH "Where to store downloaded game packs")
150
151 #-----------------------------------------------------------------------
152 # Version
153 #-----------------------------------------------------------------------
154
155 # CMake 3.0+ would allow this in project()
156 set(RADIANT_VERSION_MAJOR 1)
157 set(RADIANT_VERSION_MINOR 5)
158 set(RADIANT_VERSION_PATCH 0)
159 set(RADIANT_VERSION "${RADIANT_VERSION_MAJOR}.${RADIANT_VERSION_MINOR}.${RADIANT_VERSION_PATCH}")
160
161 set(RADIANT_ABOUTMSG "Custom build" CACHE STRING "About message")
162
163 set(RADIANT_VERSION_STRING "${RADIANT_VERSION}n")
164
165 if (NOT DEFINED GIT_VERSION)
166      find_package(Git REQUIRED)
167
168      execute_process(
169           COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
170           WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
171           OUTPUT_VARIABLE GIT_VERSION
172           OUTPUT_STRIP_TRAILING_WHITESPACE
173      )
174
175      if (GIT_VERSION)
176          set(RADIANT_VERSION_STRING "${RADIANT_VERSION_STRING}-git-${GIT_VERSION}")
177      endif ()
178 endif ()
179
180 message(STATUS "Building ${PROJECT_NAME} ${RADIANT_VERSION_STRING} ${RADIANT_ABOUTMSG}")
181
182 #-----------------------------------------------------------------------
183 # Language standard
184 #-----------------------------------------------------------------------
185
186 if (BUILD_BINARIES)
187     set(CMAKE_CXX_STANDARD 11)
188     set(CMAKE_CXX_STANDARD_REQUIRED ON)
189     set(CMAKE_CXX_EXTENSIONS OFF)
190
191     if (CMAKE_VERSION VERSION_LESS "3.1")
192         if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
193             include(CheckCXXCompilerFlag)
194             check_cxx_compiler_flag(--std=c++${CMAKE_CXX_STANDARD} STD_CXX)
195             if (STD_CXX)
196                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${CMAKE_CXX_STANDARD}")
197             else ()
198                 message(SEND_ERROR "Requires C++${CMAKE_CXX_STANDARD} or better")
199             endif ()
200         else ()
201             message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${CMAKE_CXX_STANDARD}")
202         endif ()
203     endif ()
204 endif ()
205
206 #-----------------------------------------------------------------------
207 # Flags
208 #-----------------------------------------------------------------------
209
210 if (BUILD_BINARIES)
211     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
212
213     macro (addflags_c args)
214         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${args}")
215     endmacro ()
216
217     macro (addflags_cxx args)
218         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${args}")
219     endmacro ()
220
221     macro (addflags args)
222         addflags_c("${args}")
223         addflags_cxx("${args}")
224     endmacro ()
225
226     addflags("-fno-strict-aliasing")
227     if (NOT WIN32)
228         addflags("-fvisibility=hidden")
229     endif ()
230
231     if (USE_WERROR)
232         addflags("-Werror")
233         addflags("-pedantic-errors")
234     endif ()
235
236     addflags("-Wall")
237     addflags("-Wextra")
238     addflags("-pedantic")
239
240     addflags_c("-Wno-deprecated-declarations") # vfs.c: g_strdown
241
242     addflags("-Wno-unused-function")
243     addflags("-Wno-unused-variable")
244     addflags("-Wno-unused-parameter")
245
246     if (APPLE)
247         add_definitions(-DGL_SILENCE_DEPRECATION=1)
248     endif()
249
250     set(CMAKE_POSITION_INDEPENDENT_CODE 1)
251 endif ()
252
253 if (BUILD_RADIANT)
254     set(GTK_TARGET 2 CACHE STRING "GTK target")
255     add_definitions(-DGTK_TARGET=${GTK_TARGET})
256
257     if (WIN32)
258         add_definitions(-DWORKAROUND_WINDOWS_FLOATING_WINDOW=1)
259
260         if (GTK_TARGET EQUAL 2)
261             add_definitions(-DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1)
262         endif ()
263     elseif (APPLE)
264         if (GTK_TARGET EQUAL 2)
265             add_definitions(-DWORKAROUND_MACOS_GTK2_DESTROY=1)
266             add_definitions(-DWORKAROUND_MACOS_GTK2_GLWIDGET=1)
267             add_definitions(-DWORKAROUND_MACOS_GTK2_LAGGYPOINTER=1)
268         endif ()
269     endif()
270 endif ()
271
272 #-----------------------------------------------------------------------
273 # Defs
274 #-----------------------------------------------------------------------
275
276 if (BUILD_BINARIES)
277     add_definitions(-DRADIANT_VERSION="${RADIANT_VERSION}")
278     add_definitions(-DRADIANT_VERSION_STRING="${RADIANT_VERSION_STRING}")
279
280     if (NOT CMAKE_BUILD_TYPE MATCHES Release)
281         add_definitions(-D_DEBUG=1)
282     endif ()
283 endif ()
284
285 if (BUILD_RADIANT)
286     add_definitions(-DRADIANT_ABOUTMSG="${RADIANT_ABOUTMSG}")
287
288     macro (disable_deprecated name gtk2only)
289         add_definitions(-D${name}_DISABLE_SINGLE_INCLUDES)
290         if ((${gtk2only} EQUAL 0) OR (GTK_TARGET EQUAL 2))
291             add_definitions(-D${name}_DISABLE_DEPRECATED)
292         endif ()
293     endmacro ()
294
295     disable_deprecated(ATK 0)
296     disable_deprecated(G 0)
297     disable_deprecated(GDK 0)
298     disable_deprecated(GDK_PIXBUF 0)
299     disable_deprecated(GTK 1)
300     disable_deprecated(PANGO 0)
301 endif ()
302
303 if (BUILD_BINARIES)
304     add_custom_target(binaries ALL)
305
306     if(APPLE OR ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
307         link_directories(
308             /usr/local/lib
309         )
310     endif ()
311
312     if (WIN32)
313         add_definitions(
314             -DWIN32=1
315             -D_WIN32=1
316         )
317     else ()
318         add_definitions(
319             -DPOSIX=1
320         )
321     endif ()
322 endif ()
323
324 if (BUILD_RADIANT AND NOT APPLE AND NOT WIN32)
325     set(XWINDOWS ON)
326     find_package(X11 REQUIRED)
327     include_directories(${X11_INCLUDE_DIR})
328     add_definitions(-DXWINDOWS=1)
329 endif ()
330
331 if (BUILD_BINARIES)
332     include_directories("${PROJECT_SOURCE_DIR}/include")
333     include_directories("${PROJECT_SOURCE_DIR}/libs")
334
335     macro (copy_dlls target)
336         if (BUNDLE_LIBRARIES AND BUNDLING_SUPPORTED)
337             add_custom_command(TARGET ${target} POST_BUILD
338                 COMMAND "${PROJECT_SOURCE_DIR}/library-bundler"
339                 "register" "${PROJECT_BINARY_DIR}" "$<TARGET_FILE:${target}>"
340                 VERBATIM
341             )
342             add_dependencies(bundle ${target})
343         endif ()
344     endmacro ()
345 endif ()
346
347 #-----------------------------------------------------------------------
348 # Bundle
349 #-----------------------------------------------------------------------
350
351 if (BUILD_BINARIES)
352     if (BUNDLE_LIBRARIES AND BUNDLING_SUPPORTED)
353         add_subdirectory(bundle)
354     endif ()
355 endif ()
356
357 #-----------------------------------------------------------------------
358 # Builtins: targets
359 #-----------------------------------------------------------------------
360
361 add_custom_target(builtins)
362
363 if (BUILTIN_GTKGLEXT OR BUILTIN_GTKTHEME_MOJAVE)
364     include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
365 endif ()
366
367 if (BUILTIN_GTKGLEXT)
368     set(GTKGLEXT_PKGNAMES "gdk-2.0 gtk+-2.0 glib-2.0")
369
370     if (NOT APPLE)
371         set(GTKGLEXT_PKGNAMES "${GTKGLEXT_PKGNAMES} gl")
372     endif ()
373
374     execute_process(COMMAND pkg-config --libs ${GTKGLEXT_PKGNAMES}
375         OUTPUT_VARIABLE GTKGLEXT_LDFLAGS
376         OUTPUT_STRIP_TRAILING_WHITESPACE
377     )
378
379     set(GTKGLEXT_LDFLAGS "$ENV{LDFLAGS} -lm ${GTKGLEXT_LDFLAGS}")
380
381     execute_process(COMMAND pkg-config --cflags ${GTKGLEXT_PKGNAMES}
382         OUTPUT_VARIABLE GTKGLEXT_CFLAGS
383         OUTPUT_STRIP_TRAILING_WHITESPACE
384     )
385
386     set(GTKGLEXT_CFLAGS "$ENV{CFLAGS} ${GTKGLEXT_CFLAGS}")
387
388
389     set(CONFIGURE_OPTIONS --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf --disable-dependency-tracking --without-x)
390
391     if (CMAKE_BUILD_TYPE MATCHES Release)
392         set(CONFIGURE_OPTIONS ${CONFIGURE_OPTIONS} --disable-debug)
393     endif ()
394
395     if (APPLE)
396         set(GTKGLEXT_GIT_TAG macos)
397     else ()
398         set(GTKGLEXT_GIT_TAG fixes)
399     endif ()
400
401     if (APPLE)
402         set(GTKGLEXT_CFLAGS "${GTKGLEXT_CFLAGS} -DGL_SILENCE_DEPRECATION=1 -Wno-deprecated-declarations")
403     endif ()
404
405     ExternalProject_Add(gtkglext
406         GIT_REPOSITORY https://gitlab.gnome.org/illwieckz/gtkglext.git
407         GIT_TAG ${GTKGLEXT_GIT_TAG}
408         BUILD_IN_SOURCE ON
409         CONFIGURE_COMMAND export CCFLAGS=${GTKGLEXT_CFLAGS}
410         CONFIGURE_COMMAND && export LDFLAGS=${GTKGLEXT_LDFLAGS}
411         CONFIGURE_COMMAND && export NOCONFIGURE=1
412         CONFIGURE_COMMAND && ./autogen.sh
413         CONFIGURE_COMMAND && ./configure --prefix "${BUILTINS_INSTALL_DIR}" ${CONFIGURE_OPTIONS}
414         BUILD_COMMAND $(MAKE)
415         BUILD_COMMAND CFLAGS=${GTKGLEXT_CFLAGS}
416         BUILD_COMMAND LDFLAGS=${GTKGLEXT_LDFLAGS}
417         INSTALL_COMMAND $(MAKE) install
418     )
419
420     include_directories("${BUILTINS_INCLUDE_DIR}/gtkglext-1.0")
421     include_directories("${BUILTINS_LIB_DIR}/gtkglext-1.0/include")
422
423     add_dependencies(builtins gtkglext)
424     set_target_properties(gtkglext PROPERTIES EXCLUDE_FROM_ALL ON)
425 endif ()
426
427 if (BUNDLE_LIBRARIES)
428     # It was required to tell cmake to not patch rpath on macos builtins.
429     # It was also required to tell cmake to not patch rpath on freebsd binaries.
430     # Patching rpath is done in library_bundler instead so we can skip this
431     # step entirely when bundling.
432     set(CMAKE_SKIP_RPATH ON)
433 endif()
434
435 if (BUILTIN_GTKTHEME_MOJAVE)
436     ExternalProject_Add(gtktheme-mojave
437         GIT_REPOSITORY https://github.com/vinceliuice/Mojave-gtk-theme.git
438         GIT_TAG master
439         BUILD_IN_SOURCE ON
440         CONFIGURE_COMMAND echo
441         BUILD_COMMAND echo
442         INSTALL_COMMAND ./install.sh -o standard -a standard -s standard -i standard -d "${PROJECT_BINARY_DIR}/themes"
443     )
444     add_dependencies(builtins gtktheme-mojave)
445     set_target_properties(gtktheme-mojave PROPERTIES EXCLUDE_FROM_ALL ON)
446 endif ()
447
448 #-----------------------------------------------------------------------
449 # Libraries
450 #-----------------------------------------------------------------------
451
452 if (BUILD_BINARIES)
453     add_subdirectory(libs)
454 endif ()
455
456 if (BUILD_RADIANT)
457     add_subdirectory(include)
458 endif ()
459
460 #-----------------------------------------------------------------------
461 # Plugins
462 #-----------------------------------------------------------------------
463
464 if (BUILD_RADIANT)
465     add_subdirectory(contrib)
466 endif ()
467
468 #-----------------------------------------------------------------------
469 # Modules
470 #-----------------------------------------------------------------------
471
472 if (BUILD_RADIANT)
473     add_subdirectory(plugins)
474 endif ()
475
476 #-----------------------------------------------------------------------
477 # Radiant
478 #-----------------------------------------------------------------------
479
480 if (BUILD_BINARIES)
481     macro (radiant_tool name)
482         add_dependencies(binaries ${name})
483
484         if (WIN32)
485             add_executable(${name} ${ARGN} ${PROJECT_SOURCE_DIR}/include/lib.rc)
486         else ()
487             add_executable(${name} ${ARGN})
488         endif()
489
490         copy_dlls(${name})
491
492         install(
493             TARGETS ${name}
494             RUNTIME DESTINATION ${RADIANT_BIN_DIR}
495         )
496     endmacro ()
497
498     if (BUILD_RADIANT)
499         add_subdirectory(radiant)
500     endif ()
501 endif ()
502
503 #-----------------------------------------------------------------------
504 # Tools
505 #-----------------------------------------------------------------------
506
507 if (BUILD_TOOLS)
508     add_subdirectory(tools)
509
510     file(GLOB DATA_FILES "${PROJECT_SOURCE_DIR}/setup/data/tools/*")
511
512     if (NOT (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR))
513         # Copy data files from sources to the build directory
514         message(STATUS "Copying data files")
515         file(COPY ${DATA_FILES} DESTINATION "${PROJECT_BINARY_DIR}")
516     endif ()
517 endif ()
518
519 #-----------------------------------------------------------------------
520 # Game packs
521 #-----------------------------------------------------------------------
522
523 set(GAMEPACKS_LICENSE_LIST free CACHE STRING "Download game packs by license")
524 set(GAMEPACKS_NAME_LIST none CACHE STRING "Download game packs by name")
525
526 if (DOWNLOAD_GAMEPACKS)
527     add_custom_target(gamepacks ALL
528        COMMAND "${PROJECT_SOURCE_DIR}/gamepack-manager" --license ${GAMEPACKS_LICENSE_LIST} --name ${GAMEPACKS_NAME_LIST} --download-dir "${GAMEPACKS_DOWNLOAD_DIR}" --install-dir "${PROJECT_BINARY_DIR}/gamepacks" --download --install
529        COMMENT "Downloading game packs"
530     )
531 endif ()
532
533 #-----------------------------------------------------------------------
534 # Install
535 #-----------------------------------------------------------------------
536
537 if (BUILD_BINARIES)
538     install(DIRECTORY
539         setup/data/tools/base
540         setup/data/tools/bitmaps
541         setup/data/tools/gl
542         setup/data/tools/plugins
543         docs
544         DESTINATION ${RADIANT_DATA_DIR}
545     )
546
547     install(FILES
548         setup/data/tools/global.xlink
549         DESTINATION ${RADIANT_DATA_DIR}
550     )
551 endif ()
552
553 if (DOWNLOAD_GAMEPACKS)
554     install(DIRECTORY
555         ${PROJECT_BINARY_DIR}/gamepacks
556         DESTINATION ${RADIANT_DATA_DIR}
557     )
558 endif ()
559
560 if (BUILD_BINARIES AND FHS_INSTALL AND NOT WIN32 AND NOT APPLE)
561     install(FILES
562         icons/netradiant.png
563         DESTINATION ${RADIANT_SHARE_DIR}/pixmaps
564     )
565     install(FILES
566         icons/netradiant.desktop
567         DESTINATION ${RADIANT_SHARE_DIR}/applications
568     )
569     install(FILES
570         icons/x-netradiant-map.xml
571         DESTINATION ${RADIANT_SHARE_DIR}/mime/application
572     )
573 endif ()
574
575 if (APPLE)
576     install(DIRECTORY
577         setup/macos/Contents
578         DESTINATION ${APPLE_INSTALL_PREFIX}
579     )
580     install(DIRECTORY
581     ${PROJECT_BINARY_DIR}/themes
582         DESTINATION ${APPLE_INSTALL_PREFIX}/Contents/Prefix/share
583     )
584     install(PROGRAMS
585         setup/macos/NetRadiant
586         DESTINATION ${APPLE_INSTALL_PREFIX}/Contents/MacOS
587     )
588 endif ()
589
590 include(cmake/scripts/package.cmake)