]> git.xonotic.org Git - xonotic/netradiant.git/blob - CMakeLists.txt
-DGTK_DISABLE_DEPRECATED
[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 set(Q3MAP_VERSION 2.5.17n)
11 set(Q3MAP_STREAM_VERSION 1)
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
17 if(GIT_VERSION)
18     set(RADIANT_VERSION_STRING "${RADIANT_VERSION_STRING}-git-${GIT_VERSION}")
19     set(Q3MAP_VERSION "${Q3MAP_VERSION}-git-${GIT_VERSION}")
20     add_custom_target(version_git ALL
21         COMMAND [ "`git rev-parse --short HEAD`" != "${GIT_VERSION}" ] && ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR}
22         VERBATIM
23     )
24 endif()
25
26 if(CMAKE_EXECUTABLE_SUFFIX)
27     set(RADIANT_EXECUTABLE ${CMAKE_EXECUTABLE_SUFFIX})
28 else()
29     execute_process(COMMAND uname -m
30         OUTPUT_VARIABLE RADIANT_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
31 endif()
32
33 set(RADIANT_ABOUTMSG "Custom build" CACHE STRING "About message")
34 message(STATUS "Building ${PROJECT_NAME} ${RADIANT_VERSION_STRING} ${RADIANT_ABOUTMSG}")
35
36
37 set(CMAKE_CXX_STANDARD 11)
38 set(CMAKE_CXX_STANDARD_REQUIRED ON)
39 # For some reason the above flags don't really work...
40 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
41     include(CheckCXXCompilerFlag)
42     check_cxx_compiler_flag(--std=c++${CMAKE_CXX_STANDARD} STD_CXX)
43     if(STD_CXX)
44         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${CMAKE_CXX_STANDARD}")
45     else()
46         message(SEND_ERROR "Requires C++${CMAKE_CXX_STANDARD} or better")
47     endif()
48 else()
49     message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${CMAKE_CXX_STANDARD}")
50 endif()
51
52 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
53
54 # Enable Debug by default, can be changed with -D CMAKE_BUILD_TYPE=Release
55 if(NOT CMAKE_BUILD_TYPE)
56     set(CMAKE_BUILD_TYPE Debug)
57 endif()
58 if(CMAKE_BUILD_TYPE MATCHES Debug)
59     add_definitions(-D_DEBUG=1)
60 endif()
61
62 find_package(OpenGL REQUIRED)
63
64 add_definitions(-DRADIANT_EXECUTABLE="${RADIANT_EXECUTABLE}")
65
66 add_definitions(
67         -DGTK_DISABLE_SINGLE_INCLUDES
68         -DGSEAL_ENABLE
69         #-DGDK_DISABLE_DEPRECATED
70         #-DGTK_DISABLE_DEPRECATED
71 )
72
73 if(NOT WIN32)
74     add_definitions(
75         -DPOSIX=1
76         -DXWINDOWS=1
77     )
78     find_package(X11 REQUIRED)
79     include_directories(${X11_INCLUDE_DIR})
80 else()
81     add_definitions(
82         -D_WIN32
83     )
84 endif()
85
86 configure_file("${CMAKE_SOURCE_DIR}/include/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
87 set(INCLUDELIST
88     include/aboutmsg.h
89     include/cullable.cpp
90     include/cullable.h
91     include/editable.cpp
92     include/editable.h
93     include/iarchive.cpp
94     include/iarchive.h
95     include/ibrush.cpp
96     include/ibrush.h
97     include/icamera.cpp
98     include/icamera.h
99     include/idatastream.cpp
100     include/idatastream.h
101     include/ieclass.cpp
102     include/ieclass.h
103     include/ientity.cpp
104     include/ientity.h
105     include/ifilesystem.cpp
106     include/ifilesystem.h
107     include/ifiletypes.cpp
108     include/ifiletypes.h
109     include/ifilter.cpp
110     include/ifilter.h
111     include/igl.cpp
112     include/igl.h
113     include/iglrender.cpp
114     include/iglrender.h
115     include/igtkgl.cpp
116     include/igtkgl.h
117     include/iimage.cpp
118     include/iimage.h
119     include/imap.cpp
120     include/imap.h
121     include/imodel.cpp
122     include/imodel.h
123     include/ipatch.cpp
124     include/ipatch.h
125     include/iplugin.cpp
126     include/iplugin.h
127     include/ireference.cpp
128     include/ireference.h
129     include/irender.cpp
130     include/irender.h
131     include/iscenegraph.cpp
132     include/iscenegraph.h
133     include/iscriplib.cpp
134     include/iscriplib.h
135     include/iselection.cpp
136     include/iselection.h
137     include/ishaders.cpp
138     include/ishaders.h
139     include/itexdef.cpp
140     include/itexdef.h
141     include/itextstream.cpp
142     include/itextstream.h
143     include/itextures.cpp
144     include/itextures.h
145     include/itoolbar.cpp
146     include/itoolbar.h
147     include/iundo.cpp
148     include/iundo.h
149     include/mapfile.cpp
150     include/mapfile.h
151     include/modelskin.cpp
152     include/modelskin.h
153     include/moduleobserver.cpp
154     include/moduleobserver.h
155     include/modulesystem.cpp
156     include/modulesystem.h
157     include/nameable.cpp
158     include/nameable.h
159     include/namespace.cpp
160     include/namespace.h
161     include/preferencesystem.cpp
162     include/preferencesystem.h
163     include/qerplugin.cpp
164     include/qerplugin.h
165     include/renderable.cpp
166     include/renderable.h
167     include/selectable.cpp
168     include/selectable.h
169     include/stream_version.h
170     include/version.h
171     include/warnings.h
172     include/windowobserver.cpp
173     include/windowobserver.h
174 )
175
176 add_subdirectory(libs)
177
178 add_subdirectory(contrib)
179 add_subdirectory(plugins)
180
181 add_subdirectory(radiant build)
182
183 add_subdirectory(tools)
184
185 if(NOT (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR))
186     # Copy data files from sources to the build directory
187     message(STATUS "Copying data files")
188     file(GLOB DATA_FILES "${CMAKE_SOURCE_DIR}/setup/data/tools/*")
189     file(COPY ${DATA_FILES} DESTINATION "${CMAKE_BINARY_DIR}")
190     file(GLOB DATA_FILES "${CMAKE_SOURCE_DIR}/docs/*")
191     file(COPY ${DATA_FILES} DESTINATION "${CMAKE_BINARY_DIR}/docs")
192 endif()
193
194 option(DOWNLOAD_GAMEPACKS "Download game packs" ON)
195 add_custom_target(game_packs
196     COMMAND ${CMAKE_COMMAND} -E make_directory games
197     COMMAND DOWNLOAD_GAMEPACKS=yes SOURCE_DIR="${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/install-gamepacks.sh" "${CMAKE_BINARY_DIR}"
198     COMMENT "Downloading game packs"
199 )
200 add_custom_command(OUTPUT games
201         COMMAND make game_packs
202         DEPENDS download-gamepacks.sh install-gamepacks.sh install-gamepack.sh
203 )
204 if(DOWNLOAD_GAMEPACKS)
205     add_custom_target(game_packs_all ALL DEPENDS games)
206 endif()