1 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
3 project(NetRadiant C CXX)
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)
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)
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}
26 if(CMAKE_EXECUTABLE_SUFFIX)
27 set(RADIANT_EXECUTABLE ${CMAKE_EXECUTABLE_SUFFIX})
29 execute_process(COMMAND uname -m
30 OUTPUT_VARIABLE RADIANT_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
33 set(RADIANT_ABOUTMSG "Custom build" CACHE STRING "About message")
34 message(STATUS "Building ${PROJECT_NAME} ${RADIANT_VERSION_STRING} ${RADIANT_ABOUTMSG}")
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)
44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${CMAKE_CXX_STANDARD}")
46 message(SEND_ERROR "Requires C++${CMAKE_CXX_STANDARD} or better")
49 message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${CMAKE_CXX_STANDARD}")
52 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
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)
58 if(CMAKE_BUILD_TYPE MATCHES Debug)
59 add_definitions(-D_DEBUG=1)
62 find_package(OpenGL REQUIRED)
64 add_definitions(-DRADIANT_EXECUTABLE="${RADIANT_EXECUTABLE}")
67 -DGTK_DISABLE_SINGLE_INCLUDES
69 #-DGDK_DISABLE_DEPRECATED
70 #-DGTK_DISABLE_DEPRECATED
78 find_package(X11 REQUIRED)
79 include_directories(${X11_INCLUDE_DIR})
86 configure_file("${CMAKE_SOURCE_DIR}/include/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
99 include/idatastream.cpp
100 include/idatastream.h
105 include/ifilesystem.cpp
106 include/ifilesystem.h
107 include/ifiletypes.cpp
113 include/iglrender.cpp
127 include/ireference.cpp
131 include/iscenegraph.cpp
132 include/iscenegraph.h
133 include/iscriplib.cpp
135 include/iselection.cpp
141 include/itextstream.cpp
142 include/itextstream.h
143 include/itextures.cpp
151 include/modelskin.cpp
153 include/moduleobserver.cpp
154 include/moduleobserver.h
155 include/modulesystem.cpp
156 include/modulesystem.h
159 include/namespace.cpp
161 include/preferencesystem.cpp
162 include/preferencesystem.h
163 include/qerplugin.cpp
165 include/renderable.cpp
167 include/selectable.cpp
169 include/stream_version.h
172 include/windowobserver.cpp
173 include/windowobserver.h
176 add_subdirectory(libs)
178 add_subdirectory(contrib)
179 add_subdirectory(plugins)
181 add_subdirectory(radiant build)
183 add_subdirectory(tools)
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")
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"
200 add_custom_command(OUTPUT games
201 COMMAND make game_packs
202 DEPENDS download-gamepacks.sh install-gamepacks.sh install-gamepack.sh
204 if(DOWNLOAD_GAMEPACKS)
205 add_custom_target(game_packs_all ALL DEPENDS games)