2011-08-31 21:20:17 +00:00
# OpenClonk, http://www.openclonk.org
#
2016-04-03 18:18:29 +00:00
# Copyright (c) 2009-2016, The OpenClonk Team and contributors
2011-08-31 21:20:17 +00:00
#
2013-12-17 20:01:09 +00:00
# Distributed under the terms of the ISC license; see accompanying file
# "COPYING" for details.
2011-08-31 21:20:17 +00:00
#
2013-12-17 20:01:09 +00:00
# "Clonk" is a registered trademark of Matthes Bender, used with permission.
# See accompanying file "TRADEMARK" for details.
2011-08-31 21:20:17 +00:00
#
2013-12-17 20:01:09 +00:00
# To redistribute this file separately, substitute the full license texts
# for the above references.
2010-08-01 13:49:51 +00:00
2015-12-29 02:03:22 +00:00
cmake_minimum_required ( VERSION 3.0.2 )
2016-03-31 18:28:33 +00:00
# Don't allow people to build "Release" builds because there's no reason to do that.
# Use one of RelWithDebInfo or MinSizeRel instead.
set ( CMAKE_CONFIGURATION_TYPES Debug RelWithDebInfo MinSizeRel CACHE STRING "List of supported configuration types." FORCE )
2016-06-24 21:55:57 +00:00
# Set a default build type as the empty build type is without either debug
# symbols or optimizations and thus completely useless.
if ( NOT CMAKE_BUILD_TYPE )
set ( CMAKE_BUILD_TYPE RelWithDebInfo )
endif ( )
2011-08-27 20:04:33 +00:00
project ( openclonk CXX C )
2009-05-29 20:53:15 +00:00
2015-01-18 14:25:09 +00:00
# CMP0054: Only interpret if() arguments as variables or keywords when unquoted
# (since CMake 3.1)
if ( POLICY CMP0054 )
cmake_policy ( SET CMP0054 NEW )
endif ( )
2015-01-18 14:27:17 +00:00
set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" )
2009-05-29 20:53:15 +00:00
2015-05-21 20:57:16 +00:00
include ( Version )
2009-05-29 20:53:15 +00:00
2013-03-09 13:59:07 +00:00
set ( CMAKE_ADDITIONAL_DEPS_PATH "${CMAKE_CURRENT_BINARY_DIR}/deps" CACHE PATH "Additional directory to search for libraries and headers" )
2009-08-13 16:09:00 +00:00
list ( APPEND CMAKE_PREFIX_PATH ${ CMAKE_ADDITIONAL_DEPS_PATH } )
2013-01-20 20:53:56 +00:00
2010-01-12 21:09:16 +00:00
############################################################################
# User selectable options
############################################################################
2013-03-09 13:58:30 +00:00
include ( CMakeDependentOption )
2012-02-28 17:28:16 +00:00
option ( PROJECT_FOLDERS "Put source files into subfolders in project file" ON )
2018-02-16 05:40:25 +00:00
option ( DEPLOY_QT_LIBRARIES "Deploy Qt libraries to executable path" OFF )
2016-01-22 16:50:00 +00:00
CMAKE_DEPENDENT_OPTION ( USE_COCOA "Use Apple Cocoa widgets." ON "APPLE" OFF )
CMAKE_DEPENDENT_OPTION ( USE_WIN32_WINDOWS "Use Microsoft Desktop App User Interface widgets." ON "WIN32" OFF )
2016-10-23 15:12:53 +00:00
CMAKE_DEPENDENT_OPTION ( USE_SDL_MAINLOOP "Use SDL to create windows etc. Qt editor." ON "NOT USE_COCOA AND NOT USE_WIN32_WINDOWS AND NOT HEADLESS_ONLY" OFF )
2013-03-09 13:58:30 +00:00
option ( WITH_AUTOMATIC_UPDATE "Automatic updates are downloaded from the project website." OFF )
2016-10-23 15:12:53 +00:00
option ( HEADLESS_ONLY "Only build headless parts. Somewhat reduces dependencies. (still needs libpng because that one's small and hard to remove.) Only tested with make/gcc/linux." OFF )
2010-01-12 21:09:16 +00:00
2015-12-30 12:07:36 +00:00
set_property ( GLOBAL PROPERTY USE_FOLDERS ${ PROJECT_FOLDERS } )
2010-01-12 21:09:16 +00:00
############################################################################
2015-12-22 00:09:02 +00:00
# Assemble compiler flags
2010-01-12 21:09:16 +00:00
############################################################################
include ( CheckCXXCompilerFlag )
2015-12-22 00:09:02 +00:00
2016-06-26 14:57:26 +00:00
# Required for CMake >= 3.1.0 and Qt >= 5.7
set ( CMAKE_CXX_STANDARD 14 )
2015-12-28 16:43:25 +00:00
CHECK_CXX_COMPILER_FLAG ( "-std=gnu++14" USE_GCC_STD_14 )
if ( USE_GCC_STD_14 )
2016-03-31 18:20:01 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14" )
2010-01-12 21:09:16 +00:00
endif ( )
2016-03-31 19:23:25 +00:00
# Enable link-time code generation. We have to do this manually because while
# there is a INTERPROCEDURAL_OPTIMIZATION cmake flag, it's only implemented
# for icc so far; https://cmake.org/Bug/view.php?id=15939
function ( add_linker_flags )
include ( CMakeParseArguments )
set ( options optimized debug )
set ( oneValueArgs FLAGS )
set ( multiValueArgs MODULES )
cmake_parse_arguments ( _alf "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ ARGN } )
# Adds some linker flags to all optimized build configurations
set ( _configurations "" )
if ( _alf_optimized )
list ( APPEND _configurations MINSIZEREL RELWITHDEBINFO RELEASE )
endif ( )
if ( _alf_debug )
list ( APPEND _configurations DEBUG )
endif ( )
foreach ( _module ${ _alf_MODULES } )
string ( TOUPPER "${_module}" _obj_type )
foreach ( _config ${ _configurations } )
set ( CMAKE_ ${ _obj_type } _LINKER_FLAGS_ ${ _config } "${CMAKE_${_obj_type}_LINKER_FLAGS_${_config}} ${_alf_FLAGS}" PARENT_SCOPE )
endforeach ( )
endforeach ( )
endfunction ( )
CHECK_CXX_COMPILER_FLAG ( "-flto" USE_GCC_STYLE_LTCG )
if ( USE_GCC_STYLE_LTCG )
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -flto" )
set ( CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -flto" )
add_linker_flags ( optimized MODULES exe shared FLAGS -flto )
# Use GCC's ar and ranlib wrappers if necessary, because the plain ones
# don't understand lto objects without an explicit plugin parameter
if ( CMAKE_C_COMPILER MATCHES "gcc$" )
set ( LTCG_NEEDS_AR_WRAPPER 1 )
set ( LTCG_AR_WRAPPER_PREFIX "${CMAKE_C_COMPILER}" )
elseif ( CMAKE_C_COMPILER MATCHES "cc$" )
set ( LTCG_NEEDS_AR_WRAPPER 1 )
set ( LTCG_AR_WRAPPER_PREFIX "gcc" )
else ( )
set ( LTCG_NEEDS_AR_WRAPPER 0 )
endif ( )
if ( LTCG_NEEDS_AR_WRAPPER )
find_program ( AR_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ar" )
if ( AR_WRAPPER )
message ( "Using ${AR_WRAPPER} instead of ${CMAKE_AR} to support lto objects." )
set ( CMAKE_AR "${AR_WRAPPER}" CACHE FILEPATH "Path to an ar that supports lto objects." FORCE )
endif ( )
find_program ( RANLIB_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ranlib" )
if ( RANLIB_WRAPPER )
message ( "Using ${RANLIB_WRAPPER} instead of ${CMAKE_RANLIB} to support lto objects." )
set ( CMAKE_RANLIB "${RANLIB_WRAPPER}" CACHE FILEPATH "Path to a ranlib that supports lto objects." FORCE )
endif ( )
endif ( )
2010-01-12 21:09:16 +00:00
endif ( )
2016-01-23 22:10:02 +00:00
if ( MSVC )
2017-01-07 12:29:49 +00:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
# Set up some additional flags only if we're using the MS compiler,
# and not the clang-based toolchain
# Disable non-standard conversion from string literal to (nonconst) char*
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:strictStrings" )
# Activate edit-and-continue
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI /Gy" )
endif ( )
2016-02-08 15:51:59 +00:00
2016-03-31 18:20:01 +00:00
# Enable multi-core builds
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP" )
2013-10-18 12:20:09 +00:00
2016-03-31 19:23:25 +00:00
# Enable LTCG for release builds
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Ob2 /GL" )
set ( CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Ob2 /GL" )
2016-04-16 16:31:29 +00:00
add_linker_flags ( optimized MODULES exe shared static FLAGS "/LTCG:incremental" )
2013-10-18 12:20:09 +00:00
2011-08-19 13:50:40 +00:00
# do not link the release CRT in debug builds
2016-03-31 18:20:01 +00:00
set ( CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT" )
2010-01-12 21:09:16 +00:00
set ( HAVE_PRECOMPILED_HEADERS ON CACHE INTERNAL "Compiler supports precompiled headers" )
2016-01-23 22:10:02 +00:00
2010-01-12 21:09:16 +00:00
# Suppress warnings about "non-secure" functions
add_definitions ( -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS )
# Disable warning C4244: 'conversion' conversion from 'type1' to 'type2', possible loss of data
2016-03-31 18:20:01 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244" )
2010-09-29 21:11:12 +00:00
# Disable warning C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data (64 bit build only)
2016-03-31 18:20:01 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267" )
2011-09-27 23:09:56 +00:00
endif ( )
2012-06-08 11:18:58 +00:00
2015-02-13 23:11:51 +00:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
2016-03-31 18:20:01 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wextra-tokens -Wpointer-arith -Wno-cast-align -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual" )
elseif ( CMAKE_COMPILER_IS_GNUCXX )
2018-02-06 22:30:18 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wredundant-decls -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self -Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual -Wformat-security" )
2011-09-27 23:09:56 +00:00
endif ( )
2012-06-08 11:18:58 +00:00
if ( WIN32 AND MINGW )
# Activate DEP and ASLR
2016-03-31 18:20:01 +00:00
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase" )
2011-09-27 23:09:56 +00:00
endif ( )
2015-12-22 00:09:02 +00:00
if ( UNIX )
add_definitions ( "-DOC_SYSTEM_DATA_DIR=\" ${ CMAKE_INSTALL_PREFIX } /share/games/openclonk\ "" )
endif ( )
2015-12-28 21:14:25 +00:00
if ( APPLE )
2016-07-10 21:51:52 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc -headerpad_max_install_names" )
2015-12-28 21:14:25 +00:00
endif ( )
2015-12-22 00:09:02 +00:00
############################################################################
# Check for compiler quirks and features
############################################################################
include ( CheckCXXSourceCompiles )
include ( RequireCXXSourceCompiles )
2015-12-24 23:30:11 +00:00
include ( CheckCXXSymbolExists )
2015-12-22 00:09:02 +00:00
REQUIRE_CXX_SOURCE_COMPILES ( "#include <memory>\nint main() { std::unique_ptr<int> a; std::shared_ptr<int> b; }" HAVE_C11_SMART_PTRS )
REQUIRE_CXX_SOURCE_COMPILES ( "int main() { static_assert(true, \" \"); } " HAVE_STATIC_ASSERT )
2015-12-28 21:00:06 +00:00
REQUIRE_CXX_SOURCE_COMPILES ( "#include <memory>\nint main() { auto a = std::make_unique<int>(0); return !!a; }" HAVE_MAKE_UNIQUE )
REQUIRE_CXX_SOURCE_COMPILES ( "#include <utility>\ntemplate<std::size_t... Is> int foo(std::index_sequence<Is...>) {return 0;} int main() { return foo(std::index_sequence_for<int,int>{}); }" HAVE_INDEX_SEQUENCE )
2015-12-22 00:09:02 +00:00
REQUIRE_CXX_SOURCE_COMPILES ( "template<class... T> class C; int main() { return 0; }" HAVE_VARIADIC_TEMPLATES )
# g++'s libstdc++ doesn't properly support <regex> until 4.9.
# They ship a header that declares functions, but they don't ship an
# implementation for some things (like std::regex_iterator).
# This needs to test *linking*, not compilation; cmake does both at the same
# time, so the test below works.
REQUIRE_CXX_SOURCE_COMPILES ( "#include <regex>\nint main() { std::cregex_iterator ri; }" HAVE_WORKING_REGEX " If you are using gcc, please update to gcc 4.9." )
2015-12-24 23:30:11 +00:00
check_cxx_symbol_exists ( vasprintf stdio.h HAVE_VASPRINTF )
2015-12-22 00:09:02 +00:00
2015-12-25 01:32:01 +00:00
############################################################################
# Check for required system headers
############################################################################
include ( CheckIncludeFileCXX )
include ( CheckIncludeFilesCXX )
CHECK_INCLUDE_FILE_CXX ( direct.h HAVE_DIRECT_H )
CHECK_INCLUDE_FILE_CXX ( io.h HAVE_IO_H )
CHECK_INCLUDE_FILE_CXX ( locale.h HAVE_LOCALE_H )
CHECK_INCLUDE_FILE_CXX ( share.h HAVE_SHARE_H )
CHECK_INCLUDE_FILE_CXX ( signal.h HAVE_SIGNAL_H )
CHECK_INCLUDE_FILE_CXX ( stdint.h HAVE_STDINT_H )
CHECK_INCLUDE_FILE_CXX ( inttypes.h HAVE_INTTYPES_H )
CHECK_INCLUDE_FILE_CXX ( sys/stat.h HAVE_SYS_STAT_H )
CHECK_INCLUDE_FILE_CXX ( sys/types.h HAVE_SYS_TYPES_H )
CHECK_INCLUDE_FILE_CXX ( unistd.h HAVE_UNISTD_H )
CHECK_INCLUDE_FILE_CXX ( execinfo.h HAVE_EXECINFO_H )
CHECK_INCLUDE_FILE_CXX ( poll.h HAVE_POLL_H )
CHECK_INCLUDE_FILE_CXX ( sys/inotify.h HAVE_SYS_INOTIFY_H )
CHECK_INCLUDE_FILE_CXX ( sys/timerfd.h HAVE_SYS_TIMERFD_H )
CHECK_INCLUDE_FILE_CXX ( sys/socket.h HAVE_SYS_SOCKET_H )
CHECK_INCLUDE_FILE_CXX ( sys/eventfd.h HAVE_SYS_EVENTFD_H )
CHECK_INCLUDE_FILE_CXX ( sys/file.h HAVE_SYS_FILE_H )
CHECK_INCLUDE_FILES_CXX ( "X11/Xlib.h;X11/extensions/Xrandr.h" HAVE_X11_EXTENSIONS_XRANDR_H )
2015-12-28 23:41:35 +00:00
CHECK_CXX_SOURCE_COMPILES ( "#include <getopt.h>\nint main(int argc, char * argv[]) { getopt_long(argc, argv, \" \", 0, 0 ) ; } " H A V E _ G E T O P T _ H )
2015-12-25 01:32:01 +00:00
############################################################################
# Locate libraries
############################################################################
SET ( JPEG_NAMES ${ JPEG_NAMES } libjpeg jpeg-static )
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
find_package ( Freetype REQUIRED )
include_directories (
$ { F R E E T Y P E _ I N C L U D E _ D I R S } )
link_directories (
$ { F R E E T Y P E _ L I B R A R Y _ D I R S } )
endif ( )
2016-10-30 16:21:28 +00:00
find_package ( JPEG REQUIRED )
2015-12-25 01:32:01 +00:00
find_package ( PNG REQUIRED )
find_package ( ZLIB REQUIRED )
include_directories (
2016-10-30 16:21:28 +00:00
$ { J P E G _ I N C L U D E _ D I R }
2015-12-25 01:32:01 +00:00
$ { P N G _ I N C L U D E _ D I R }
2016-10-23 15:12:53 +00:00
$ { Z L I B _ I N C L U D E _ D I R } )
2015-12-25 01:32:01 +00:00
if ( CMAKE_SYSTEM MATCHES "Windows" )
message ( STATUS "Using Win32 threading." )
else ( )
find_package ( "Threads" REQUIRED )
SET ( HAVE_PTHREAD ${ CMAKE_USE_PTHREADS_INIT } CACHE INTERNAL "libpthread available" )
endif ( )
# FINDLIB works the same as find_library, but also marks the resulting var as
# advanced so it doesn't show in GUIs by default
macro ( FINDLIB lib )
find_library ( ${ ARGV } )
mark_as_advanced ( ${ lib } )
endmacro ( FINDLIB )
if ( HAVE_EXECINFO_H )
check_cxx_symbol_exists ( backtrace execinfo.h HAVE_EXECINFO_WO_LINK )
mark_as_advanced ( HAVE_EXECINFO_WO_LINK )
if ( NOT HAVE_EXECINFO_WO_LINK )
FINDLIB ( EXECINFO_LIBRARY execinfo )
endif ( )
endif ( )
if ( NOT HAVE_GETOPT_H )
include_directories ( SYSTEM thirdparty/getopt )
add_subdirectory ( thirdparty/getopt )
2015-12-30 12:07:36 +00:00
set_property ( TARGET getopt PROPERTY FOLDER "Third-party libraries" )
2015-12-25 01:32:01 +00:00
set ( GETOPT_LIBRARIES getopt )
endif ( )
# TinyXML
find_package ( TinyXML )
if ( NOT TinyXML_FOUND )
add_subdirectory ( thirdparty/tinyxml )
2015-12-30 12:07:36 +00:00
set_property ( TARGET tinyxml PROPERTY FOLDER "Third-party libraries" )
2015-12-25 01:32:01 +00:00
set ( TinyXML_INCLUDE_DIRS thirdparty/tinyxml )
set ( TinyXML_LIBRARIES tinyxml )
set ( TinyXML_FOUND TRUE )
endif ( )
include_directories ( SYSTEM ${ TinyXML_INCLUDE_DIRS } )
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
find_package ( OpenGL )
find_package ( GLEW REQUIRED )
include_directories ( ${ GLEW_INCLUDE_DIRS } )
add_definitions ( ${ GLEW_DEFINITIONS } )
2015-12-25 01:32:01 +00:00
# On some platforms, GLEW declares the userParam parameter of
# GLDEBUGPROCARB as const void *, and on other platforms, it's void *.
# Test which one works here.
2016-10-23 15:12:53 +00:00
set ( CMAKE_REQUIRED_INCLUDES "${GLEW_INCLUDE_DIRS}" )
CHECK_CXX_SOURCE_COMPILES ( "#include <GL/glew.h>\nvoid GLAPIENTRY OpenGLDebugProc(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* message, const void* userParam) {}\nint main() { GLDEBUGPROCARB proc = &OpenGLDebugProc; }" GLDEBUGPROCARB_USERPARAM_IS_CONST )
endif ( )
2015-12-25 01:32:01 +00:00
2016-06-24 21:41:03 +00:00
if ( UNIX AND NOT APPLE )
2015-12-25 01:32:01 +00:00
FINDLIB ( X11_LIBRARIES X11 )
2017-03-21 17:34:50 +00:00
set ( Backward_DIR thirdparty/backward-cpp )
find_package ( Backward )
if ( Backward_FOUND )
set ( HAVE_BACKWARD 1 )
endif ( )
2015-12-25 01:32:01 +00:00
endif ( )
if ( WIN32 )
find_package ( DbgHelp )
if ( DBGHELP_FOUND )
include_directories ( ${ DBGHELP_INCLUDE_DIR } )
endif ( )
set ( HAVE_DBGHELP ${ DBGHELP_FOUND } )
endif ( )
find_package ( Upnp )
if ( UPNP_FOUND )
include_directories ( SYSTEM ${ UPNP_INCLUDE_DIR } )
endif ( )
find_package ( Readline )
if ( READLINE_FOUND )
include_directories ( SYSTEM ${ READLINE_INCLUDE_DIR } )
endif ( )
SET ( HAVE_LIBREADLINE ${ READLINE_FOUND } CACHE INTERNAL "libreadline available" )
find_package ( GTK3 COMPONENTS gthread gio gobject glib OPTIONAL_COMPONENTS gtksourceview )
# Select an audio library
find_package ( "Audio" )
if ( Audio_FOUND )
include_directories ( ${ Audio_INCLUDE_DIRS } )
endif ( )
# SDL
2016-02-06 14:44:19 +00:00
if ( USE_SDL_MAINLOOP )
find_package ( SDL2 REQUIRED )
2016-02-13 18:41:35 +00:00
else ( )
2016-02-06 20:12:56 +00:00
# for gamepads
find_package ( SDL2 )
2015-12-25 01:32:01 +00:00
endif ( )
2016-02-06 14:44:19 +00:00
set ( HAVE_SDL ${ SDL2_FOUND } )
2016-02-06 20:12:56 +00:00
include_directories ( SYSTEM ${ SDL2_INCLUDE_DIRS } )
2015-12-25 01:32:01 +00:00
2016-02-12 04:37:13 +00:00
# Qt5 for editor
find_path ( Qt5DIR qt.pro PATHS ${ CMAKE_ADDITIONAL_DEPS_PATH } /qt-5.5.0 )
2016-09-17 07:23:07 +00:00
find_package ( Qt5Widgets 5.4 PATHS ${ Qt5DIR } /qtbase/lib/cmake/Qt5Widgets )
2016-02-12 04:37:13 +00:00
if ( Qt5Widgets_FOUND )
SET ( WITH_QT_EDITOR ${ Qt5Widgets_FOUND } "Qt editor dialogues available" )
set ( CMAKE_AUTOMOC ON )
set ( CMAKE_AUTOUIC ON )
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set ( CMAKE_INCLUDE_CURRENT_DIR ON )
else ( )
message ( "Qt5Widgets not found. Building openclonk without editor." )
UNSET ( WITH_QT_EDITOR )
endif ( )
2015-12-25 01:24:13 +00:00
############################################################################
# generated source files
############################################################################
2016-01-10 21:28:17 +00:00
find_program ( GLIB_COMPILE_RESOURCES glib-compile-resources )
2015-12-25 01:24:13 +00:00
add_custom_command (
2016-01-10 21:28:17 +00:00
O U T P U T m a p e - r e s o u r c e . c
2015-12-25 01:24:13 +00:00
C O M M A N D
2016-01-10 21:28:17 +00:00
$ { G L I B _ C O M P I L E _ R E S O U R C E S } " - - i n t e r n a l " " - - g e n e r a t e "
" - - t a r g e t " " m a p e - r e s o u r c e . c "
" - - s o u r c e d i r " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / m a p e . x m l "
M A I N _ D E P E N D E N C Y s r c / r e s / m a p e . x m l
2015-12-25 01:24:13 +00:00
D E P E N D S
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c d . i c o
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c f . i c o
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c g . i c o
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c m . i c o
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c s . i c o
V E R B A T I M
)
2015-12-25 01:36:47 +00:00
############################################################################
# Mac OS bundle setup
############################################################################
if ( APPLE )
list ( APPEND OC_BUNDLE_RESOURCES
s r c / r e s / o c . i c n s
s r c / r e s / o c d . i c n s s r c / r e s / o c f . i c n s s r c / r e s / o c g . i c n s
s r c / r e s / C 4 P . i c n s s r c / r e s / o c s . i c n s s r c / r e s / o c u . i c n s
s r c / r e s / M o u s e _ T r a n s . p n g
s r c / r e s / C u r s o r _ T r a n s . p n g
s r c / r e s / B r u s h _ T r a n s . p n g
s r c / r e s / P l a y _ T r a n s . p n g
s r c / r e s / H a l t _ T r a n s . p n g
s r c / r e s / D y n a m i c _ T r a n s . p n g
s r c / r e s / S t a t i c _ T r a n s . p n g
s r c / r e s / E x a c t _ T r a n s . p n g
s r c / r e s / L i n e _ T r a n s . p n g
s r c / r e s / R e c t _ T r a n s . p n g
s r c / r e s / F i l l _ T r a n s . p n g
s r c / r e s / P i c k e r _ T r a n s . p n g
)
if ( CMAKE_GENERATOR STREQUAL Xcode )
list ( APPEND OC_BUNDLE_RESOURCES
s r c / r e s / M a i n M e n u . x i b
s r c / r e s / F u l l S c r e e n . x i b
s r c / r e s / E d i t o r G U I W i n d o w . x i b
s r c / r e s / E d i t o r V i e w p o r t . x i b
s r c / r e s / E d i t o r . x i b
)
else ( )
list ( APPEND OC_BUNDLE_RESOURCES
s r c / r e s / n i b / M a i n M e n u . n i b
s r c / r e s / n i b / F u l l S c r e e n . n i b
s r c / r e s / n i b / E d i t o r G U I W i n d o w . n i b
s r c / r e s / n i b / E d i t o r V i e w p o r t . n i b
s r c / r e s / n i b / E d i t o r . n i b
)
endif ( )
# Add icon resources
set_source_files_properties (
$ { O C _ B U N D L E _ R E S O U R C E S }
P R O P E R T I E S M A C O S X _ P A C K A G E _ L O C A T I O N R e s o u r c e s
)
endif ( )
2009-10-20 03:39:24 +00:00
############################################################################
# List target source files. Don't directly create a target since we condi-
# tionally add more sources depending on configuration options later.
############################################################################
# OC_CLONK_SOURCES: Sources for OpenClonk that are needed by every build.
# OC_SYSTEM_SOURCES: Sources for OpenClonk that are only needed by specific
2015-12-15 19:18:25 +00:00
# platforms.
# OC_GUI_SOURCES: Sources that are only needed by GUI applications.
2009-08-12 13:01:14 +00:00
set ( OC_CLONK_SOURCES
2009-11-25 15:04:32 +00:00
s r c / C 4 G l o b a l s . c p p
2011-10-03 15:19:24 +00:00
s r c / c 4 g r o u p / C 4 C o m p o n e n t s . h
2009-08-12 13:01:14 +00:00
s r c / c 4 g r o u p / C 4 L a n g u a g e . c p p
s r c / c 4 g r o u p / C 4 L a n g u a g e . h
2015-12-28 22:00:06 +00:00
s r c / C 4 I n c l u d e . c p p
2009-08-12 13:01:14 +00:00
s r c / C 4 I n c l u d e . h
s r c / C 4 P r o t o t y p e s . h
s r c / C 4 V e r s i o n . h
s r c / c o n f i g / C 4 C o n f i g . c p p
s r c / c o n f i g / C 4 C o n f i g . h
2009-08-12 20:03:50 +00:00
s r c / c o n f i g / C 4 C o n s t a n t s . h
2011-01-06 20:18:13 +00:00
s r c / c o n f i g / C 4 R e l o c . c p p
s r c / c o n f i g / C 4 R e l o c . h
2009-08-12 13:01:14 +00:00
s r c / c o n t r o l / C 4 C o n t r o l . c p p
s r c / c o n t r o l / C 4 C o n t r o l . h
s r c / c o n t r o l / C 4 G a m e C o n t r o l . c p p
s r c / c o n t r o l / C 4 G a m e C o n t r o l . h
s r c / c o n t r o l / C 4 G a m e P a r a m e t e r s . c p p
s r c / c o n t r o l / C 4 G a m e P a r a m e t e r s . h
s r c / c o n t r o l / C 4 G a m e S a v e . c p p
s r c / c o n t r o l / C 4 G a m e S a v e . h
2009-08-12 15:27:43 +00:00
s r c / c o n t r o l / C 4 P l a y e r C o n t r o l . c p p
s r c / c o n t r o l / C 4 P l a y e r C o n t r o l . h
2009-08-12 13:01:14 +00:00
s r c / c o n t r o l / C 4 P l a y e r I n f o . c p p
s r c / c o n t r o l / C 4 P l a y e r I n f o . h
s r c / c o n t r o l / C 4 R e c o r d . c p p
s r c / c o n t r o l / C 4 R e c o r d . h
s r c / c o n t r o l / C 4 R o u n d R e s u l t s . c p p
s r c / c o n t r o l / C 4 R o u n d R e s u l t s . h
s r c / c o n t r o l / C 4 T e a m s . c p p
s r c / c o n t r o l / C 4 T e a m s . h
s r c / e d i t o r / C 4 C o n s o l e . c p p
2010-12-13 02:11:06 +00:00
s r c / e d i t o r / C 4 C o n s o l e G U I C o m m o n . h
2011-10-03 15:19:24 +00:00
s r c / e d i t o r / C 4 C o n s o l e G U I . h
2009-08-12 13:01:14 +00:00
s r c / e d i t o r / C 4 C o n s o l e . h
s r c / e d i t o r / C 4 E d i t C u r s o r . c p p
s r c / e d i t o r / C 4 E d i t C u r s o r . h
s r c / e d i t o r / C 4 O b j e c t L i s t D l g . c p p
s r c / e d i t o r / C 4 O b j e c t L i s t D l g . h
s r c / e d i t o r / C 4 T o o l s D l g . c p p
s r c / e d i t o r / C 4 T o o l s D l g . h
2012-04-27 17:04:43 +00:00
s r c / e d i t o r / C 4 V i e w p o r t W i n d o w . c p p
s r c / e d i t o r / C 4 V i e w p o r t W i n d o w . h
s r c / g a m e / C 4 A p p l i c a t i o n . c p p
s r c / g a m e / C 4 A p p l i c a t i o n . h
s r c / g a m e / C 4 F u l l S c r e e n . c p p
s r c / g a m e / C 4 F u l l S c r e e n . h
s r c / g a m e / C 4 G a m e . c p p
s r c / g a m e / C 4 G a m e . h
2015-12-19 20:45:19 +00:00
s r c / g a m e / C 4 G a m e S c r i p t . c p p
s r c / g a m e / C 4 G a m e S c r i p t . h
2009-08-12 13:01:14 +00:00
s r c / g a m e / C 4 G a m e V e r s i o n . h
2012-04-27 17:04:43 +00:00
s r c / g a m e / C 4 G r a p h i c s S y s t e m . c p p
s r c / g a m e / C 4 G r a p h i c s S y s t e m . h
2009-08-12 13:01:14 +00:00
s r c / g a m e / C 4 P h y s i c s . h
2012-04-27 17:04:43 +00:00
s r c / g a m e / C 4 V i e w p o r t . c p p
s r c / g a m e / C 4 V i e w p o r t . h
s r c / g r a p h i c s / C 4 D r a w . c p p
s r c / g r a p h i c s / C 4 D r a w G L . c p p
s r c / g r a p h i c s / C 4 D r a w G L C t x . c p p
s r c / g r a p h i c s / C 4 D r a w G L . h
2013-01-27 22:52:16 +00:00
s r c / g r a p h i c s / C 4 D r a w M e s h G L . c p p
2012-04-27 17:04:43 +00:00
s r c / g r a p h i c s / C 4 D r a w T . c p p
s r c / g r a p h i c s / C 4 D r a w T . h
s r c / g r a p h i c s / C 4 D r a w . h
s r c / g r a p h i c s / C 4 F a c e t . c p p
s r c / g r a p h i c s / C 4 F a c e t E x . c p p
s r c / g r a p h i c s / C 4 F a c e t E x . h
s r c / g r a p h i c s / C 4 F a c e t . h
2012-11-12 01:30:16 +00:00
s r c / g r a p h i c s / C 4 F o n t L o a d e r . c p p
s r c / g r a p h i c s / C 4 F o n t L o a d e r . h
2012-04-27 17:04:43 +00:00
s r c / g r a p h i c s / C 4 G r a p h i c s R e s o u r c e . c p p
s r c / g r a p h i c s / C 4 G r a p h i c s R e s o u r c e . h
2014-11-20 10:52:14 +00:00
s r c / g r a p h i c s / C 4 S h a d e r . c p p
s r c / g r a p h i c s / C 4 S h a d e r . h
2012-04-27 17:04:43 +00:00
s r c / g r a p h i c s / C 4 S u r f a c e . c p p
s r c / g r a p h i c s / C 4 S u r f a c e . h
s r c / g r a p h i c s / C 4 S u r f a c e L o a d e r s . c p p
2009-08-12 13:01:14 +00:00
s r c / g u i / C 4 C h a t D l g . c p p
s r c / g u i / C 4 C h a t D l g . h
s r c / g u i / C 4 D o w n l o a d D l g . c p p
s r c / g u i / C 4 D o w n l o a d D l g . h
s r c / g u i / C 4 F i l e S e l D l g . c p p
s r c / g u i / C 4 F i l e S e l D l g . h
s r c / g u i / C 4 G a m e D i a l o g s . c p p
s r c / g u i / C 4 G a m e D i a l o g s . h
s r c / g u i / C 4 G a m e L o b b y . c p p
s r c / g u i / C 4 G a m e L o b b y . h
s r c / g u i / C 4 G a m e M e s s a g e . c p p
s r c / g u i / C 4 G a m e M e s s a g e . h
s r c / g u i / C 4 G a m e O p t i o n s . c p p
s r c / g u i / C 4 G a m e O p t i o n s . h
s r c / g u i / C 4 G a m e O v e r D l g . c p p
s r c / g u i / C 4 G a m e O v e r D l g . h
2016-10-22 17:59:23 +00:00
s r c / g u i / C 4 G f x E r r o r D l g . c p p
s r c / g u i / C 4 G f x E r r o r D l g . h
2009-08-12 13:01:14 +00:00
s r c / g u i / C 4 G u i B u t t o n . c p p
s r c / g u i / C 4 G u i C h e c k B o x . c p p
s r c / g u i / C 4 G u i C o m b o B o x . c p p
s r c / g u i / C 4 G u i C o n t a i n e r s . c p p
s r c / g u i / C 4 G u i . c p p
s r c / g u i / C 4 G u i D i a l o g s . c p p
s r c / g u i / C 4 G u i E d i t . c p p
s r c / g u i / C 4 G u i . h
s r c / g u i / C 4 G u i L a b e l s . c p p
s r c / g u i / C 4 G u i L i s t B o x . c p p
s r c / g u i / C 4 G u i M e n u . c p p
s r c / g u i / C 4 G u i T a b u l a r . c p p
2014-10-13 16:48:03 +00:00
s r c / g u i / C 4 S c r i p t G u i W i n d o w . c p p
2009-08-12 13:01:14 +00:00
s r c / g u i / C 4 K e y b o a r d I n p u t . c p p
s r c / g u i / C 4 K e y b o a r d I n p u t . h
s r c / g u i / C 4 L o a d e r S c r e e n . c p p
s r c / g u i / C 4 L o a d e r S c r e e n . h
s r c / g u i / C 4 M a i n M e n u . c p p
s r c / g u i / C 4 M a i n M e n u . h
s r c / g u i / C 4 M e n u . c p p
s r c / g u i / C 4 M e n u . h
s r c / g u i / C 4 M e s s a g e B o a r d . c p p
s r c / g u i / C 4 M e s s a g e B o a r d . h
s r c / g u i / C 4 M e s s a g e I n p u t . c p p
s r c / g u i / C 4 M e s s a g e I n p u t . h
s r c / g u i / C 4 M o u s e C o n t r o l . c p p
s r c / g u i / C 4 M o u s e C o n t r o l . h
s r c / g u i / C 4 P l a y e r I n f o L i s t B o x . c p p
s r c / g u i / C 4 P l a y e r I n f o L i s t B o x . h
s r c / g u i / C 4 S c o r e b o a r d . c p p
s r c / g u i / C 4 S c o r e b o a r d . h
2015-09-04 03:15:48 +00:00
s r c / g u i / C 4 S c r i p t G u i W i n d o w . c p p
s r c / g u i / C 4 S c r i p t G u i W i n d o w . h
2009-08-12 13:01:14 +00:00
s r c / g u i / C 4 S t a r t u p A b o u t D l g . c p p
s r c / g u i / C 4 S t a r t u p A b o u t D l g . h
s r c / g u i / C 4 S t a r t u p . c p p
s r c / g u i / C 4 S t a r t u p . h
s r c / g u i / C 4 S t a r t u p M a i n D l g . c p p
s r c / g u i / C 4 S t a r t u p M a i n D l g . h
s r c / g u i / C 4 S t a r t u p N e t D l g . c p p
s r c / g u i / C 4 S t a r t u p N e t D l g . h
s r c / g u i / C 4 S t a r t u p O p t i o n s D l g . c p p
s r c / g u i / C 4 S t a r t u p O p t i o n s D l g . h
s r c / g u i / C 4 S t a r t u p P l r S e l D l g . c p p
s r c / g u i / C 4 S t a r t u p P l r S e l D l g . h
s r c / g u i / C 4 S t a r t u p S c e n S e l D l g . c p p
s r c / g u i / C 4 S t a r t u p S c e n S e l D l g . h
s r c / g u i / C 4 U p p e r B o a r d . c p p
s r c / g u i / C 4 U p p e r B o a r d . h
2014-10-11 21:13:10 +00:00
s r c / l a n d s c a p e / f o w / C 4 F o W . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W . h
2014-11-17 14:35:50 +00:00
s r c / l a n d s c a p e / f o w / C 4 F o W A m b i e n t . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W A m b i e n t . h
2014-10-12 10:59:25 +00:00
s r c / l a n d s c a p e / f o w / C 4 F o W B e a m . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W B e a m . h
2014-10-11 21:13:10 +00:00
s r c / l a n d s c a p e / f o w / C 4 F o W L i g h t . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W L i g h t . h
s r c / l a n d s c a p e / f o w / C 4 F o W L i g h t S e c t i o n . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W L i g h t S e c t i o n . h
s r c / l a n d s c a p e / f o w / C 4 F o W R e g i o n . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W R e g i o n . h
2014-11-16 17:57:42 +00:00
s r c / l a n d s c a p e / f o w / C 4 F o W D r a w S t r a t e g y . c p p
s r c / l a n d s c a p e / f o w / C 4 F o W D r a w S t r a t e g y . h
s r c / l a n d s c a p e / f o w / C 4 F o W B e a m T r i a n g l e . h
2012-04-27 17:04:43 +00:00
s r c / l a n d s c a p e / C 4 L a n d s c a p e . c p p
s r c / l a n d s c a p e / C 4 L a n d s c a p e . h
s r c / l a n d s c a p e / C 4 L a n d s c a p e R e n d e r . c p p
s r c / l a n d s c a p e / C 4 L a n d s c a p e R e n d e r . h
s r c / l a n d s c a p e / C 4 M a p . c p p
s r c / l a n d s c a p e / C 4 M a p C r e a t o r S 2 . c p p
s r c / l a n d s c a p e / C 4 M a p C r e a t o r S 2 . h
s r c / l a n d s c a p e / C 4 M a p . h
2013-03-18 23:35:00 +00:00
s r c / l a n d s c a p e / C 4 M a p S c r i p t . c p p
s r c / l a n d s c a p e / C 4 M a p S c r i p t . h
2012-04-27 17:04:43 +00:00
s r c / l a n d s c a p e / C 4 M a t e r i a l . c p p
s r c / l a n d s c a p e / C 4 M a t e r i a l . h
s r c / l a n d s c a p e / C 4 P a r t i c l e s . c p p
s r c / l a n d s c a p e / C 4 P a r t i c l e s . h
s r c / l a n d s c a p e / C 4 P a t h F i n d e r . c p p
s r c / l a n d s c a p e / C 4 P a t h F i n d e r . h
s r c / l a n d s c a p e / C 4 P X S . c p p
s r c / l a n d s c a p e / C 4 P X S . h
s r c / l a n d s c a p e / C 4 S k y . c p p
s r c / l a n d s c a p e / C 4 S k y . h
s r c / l a n d s c a p e / C 4 S o l i d M a s k . c p p
s r c / l a n d s c a p e / C 4 S o l i d M a s k . h
s r c / l a n d s c a p e / C 4 T e x t u r e . c p p
s r c / l a n d s c a p e / C 4 T e x t u r e . h
2015-12-19 20:45:19 +00:00
s r c / l a n d s c a p e / C 4 T r a n s f e r Z o n e . c p p
s r c / l a n d s c a p e / C 4 T r a n s f e r Z o n e . h
2012-04-27 17:04:43 +00:00
s r c / l a n d s c a p e / C 4 W e a t h e r . c p p
s r c / l a n d s c a p e / C 4 W e a t h e r . h
2009-08-13 23:46:32 +00:00
s r c / l i b / C 4 R e c t . c p p
s r c / l i b / C 4 R e c t . h
2009-08-12 13:01:14 +00:00
s r c / l i b / S t d A d a p t o r s . h
s r c / l i b / S t d C o l o r s . h
2011-01-19 21:55:18 +00:00
s r c / l i b / S t d M e s h . c p p
s r c / l i b / S t d M e s h . h
s r c / l i b / S t d M e s h L o a d e r B i n a r y C h u n k s . c p p
s r c / l i b / S t d M e s h L o a d e r B i n a r y C h u n k s . h
2011-10-03 15:19:24 +00:00
s r c / l i b / S t d M e s h L o a d e r B i n a r y . c p p
2011-01-19 21:55:18 +00:00
s r c / l i b / S t d M e s h L o a d e r D a t a S t r e a m . h
2015-08-05 03:16:36 +00:00
s r c / l i b / S t d M e s h L o a d e r . c p p
2011-10-03 15:19:24 +00:00
s r c / l i b / S t d M e s h L o a d e r . h
2011-01-19 21:55:18 +00:00
s r c / l i b / S t d M e s h L o a d e r X m l . c p p
s r c / l i b / S t d M e s h M a t e r i a l . c p p
s r c / l i b / S t d M e s h M a t e r i a l . h
2011-08-17 21:50:33 +00:00
s r c / l i b / S t d M e s h U p d a t e . c p p
s r c / l i b / S t d M e s h U p d a t e . h
2009-08-12 13:01:14 +00:00
s r c / n e t w o r k / C 4 C l i e n t . c p p
s r c / n e t w o r k / C 4 C l i e n t . h
s r c / n e t w o r k / C 4 G a m e C o n t r o l N e t w o r k . c p p
s r c / n e t w o r k / C 4 G a m e C o n t r o l N e t w o r k . h
s r c / n e t w o r k / C 4 I n t e r a c t i v e T h r e a d . c p p
s r c / n e t w o r k / C 4 I n t e r a c t i v e T h r e a d . h
s r c / n e t w o r k / C 4 L e a g u e . c p p
s r c / n e t w o r k / C 4 L e a g u e . h
s r c / n e t w o r k / C 4 N e t w o r k 2 C l i e n t . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 C l i e n t . h
s r c / n e t w o r k / C 4 N e t w o r k 2 . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 D i a l o g s . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 D i a l o g s . h
s r c / n e t w o r k / C 4 N e t w o r k 2 . h
s r c / n e t w o r k / C 4 N e t w o r k 2 I O . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 I O . h
s r c / n e t w o r k / C 4 N e t w o r k 2 I R C . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 I R C . h
s r c / n e t w o r k / C 4 N e t w o r k 2 P l a y e r s . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 P l a y e r s . h
s r c / n e t w o r k / C 4 N e t w o r k 2 R e f e r e n c e . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 R e f e r e n c e . h
s r c / n e t w o r k / C 4 N e t w o r k 2 R e s . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 R e s D l g . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 R e s . h
s r c / n e t w o r k / C 4 N e t w o r k 2 S t a t s . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 S t a t s . h
2012-01-15 20:27:16 +00:00
s r c / n e t w o r k / C 4 N e t w o r k 2 U P n P . h
2009-08-12 13:01:14 +00:00
s r c / n e t w o r k / C 4 P a c k e t 2 . c p p
s r c / n e t w o r k / C 4 P a c k e t B a s e . h
2012-04-27 17:04:43 +00:00
s r c / o b j e c t / C 4 C o m m a n d . c p p
s r c / o b j e c t / C 4 C o m m a n d . h
s r c / o b j e c t / C 4 D e f . c p p
s r c / o b j e c t / C 4 D e f G r a p h i c s . c p p
s r c / o b j e c t / C 4 D e f G r a p h i c s . h
s r c / o b j e c t / C 4 D e f . h
s r c / o b j e c t / C 4 D e f L i s t . c p p
s r c / o b j e c t / C 4 D e f L i s t . h
s r c / o b j e c t / C 4 G a m e O b j e c t s . c p p
s r c / o b j e c t / C 4 G a m e O b j e c t s . h
s r c / o b j e c t / C 4 I D L i s t . c p p
s r c / o b j e c t / C 4 I D L i s t . h
s r c / o b j e c t / C 4 M e s h A n i m a t i o n . c p p
s r c / o b j e c t / C 4 M e s h A n i m a t i o n . h
2016-10-20 16:30:05 +00:00
s r c / o b j e c t / C 4 M e s h D e n u m e r a t o r . c p p
s r c / o b j e c t / C 4 M e s h D e n u m e r a t o r . h
2012-04-27 17:04:43 +00:00
s r c / o b j e c t / C 4 O b j e c t C o m . c p p
s r c / o b j e c t / C 4 O b j e c t C o m . h
s r c / o b j e c t / C 4 O b j e c t . c p p
s r c / o b j e c t / C 4 O b j e c t . h
s r c / o b j e c t / C 4 O b j e c t I n f o . c p p
s r c / o b j e c t / C 4 O b j e c t I n f o . h
s r c / o b j e c t / C 4 O b j e c t I n f o L i s t . c p p
s r c / o b j e c t / C 4 O b j e c t I n f o L i s t . h
s r c / o b j e c t / C 4 O b j e c t L i s t . c p p
s r c / o b j e c t / C 4 O b j e c t L i s t . h
s r c / o b j e c t / C 4 O b j e c t M e n u . c p p
s r c / o b j e c t / C 4 O b j e c t M e n u . h
s r c / o b j e c t / C 4 O b j e c t S c r i p t . c p p
2011-10-03 15:19:24 +00:00
s r c / p l a t f o r m / C 4 A p p . c p p
s r c / p l a t f o r m / C 4 A p p . h
2012-04-27 17:04:43 +00:00
s r c / p l a t f o r m / C 4 A p p W i n 3 2 I m p l . h
2009-08-12 13:01:14 +00:00
s r c / p l a t f o r m / C 4 F i l e M o n i t o r . c p p
s r c / p l a t f o r m / C 4 F i l e M o n i t o r . h
s r c / p l a t f o r m / C 4 G a m e P a d C o n . c p p
s r c / p l a t f o r m / C 4 G a m e P a d C o n . h
s r c / p l a t f o r m / C 4 M u s i c F i l e . c p p
s r c / p l a t f o r m / C 4 M u s i c F i l e . h
s r c / p l a t f o r m / C 4 M u s i c S y s t e m . c p p
s r c / p l a t f o r m / C 4 M u s i c S y s t e m . h
2011-10-03 15:19:24 +00:00
s r c / p l a t f o r m / C 4 S o u n d L o a d e r s . c p p
s r c / p l a t f o r m / C 4 S o u n d L o a d e r s . h
2014-09-21 19:46:12 +00:00
s r c / p l a t f o r m / C 4 S o u n d I n c l u d e s . h
2015-08-28 01:44:23 +00:00
s r c / p l a t f o r m / C 4 S o u n d I n s t a n c e . c p p
s r c / p l a t f o r m / C 4 S o u n d I n s t a n c e . h
s r c / p l a t f o r m / C 4 S o u n d M o d i f i e r s . c p p
s r c / p l a t f o r m / C 4 S o u n d M o d i f i e r s . h
2009-08-12 13:01:14 +00:00
s r c / p l a t f o r m / C 4 S o u n d S y s t e m . c p p
s r c / p l a t f o r m / C 4 S o u n d S y s t e m . h
2011-10-03 15:19:24 +00:00
s r c / p l a t f o r m / C 4 W i n d o w . h
2011-03-13 14:48:45 +00:00
s r c / p l a t f o r m / C 4 w i n d o w s w r a p p e r . h
2012-03-12 19:43:27 +00:00
s r c / p l a t f o r m / P l a t f o r m A b s t r a c t i o n . c p p
2010-03-08 22:59:11 +00:00
s r c / p l a t f o r m / P l a t f o r m A b s t r a c t i o n . h
2009-08-12 13:01:14 +00:00
s r c / p l a t f o r m / S t d S y n c . h
2017-04-01 22:00:06 +00:00
s r c / p l a y e r / C 4 A c h i e v e m e n t . c p p
s r c / p l a y e r / C 4 A c h i e v e m e n t . h
2012-04-27 17:04:43 +00:00
s r c / p l a y e r / C 4 P l a y e r . c p p
s r c / p l a y e r / C 4 P l a y e r . h
s r c / p l a y e r / C 4 P l a y e r L i s t . c p p
s r c / p l a y e r / C 4 P l a y e r L i s t . h
s r c / p l a y e r / C 4 R a n k S y s t e m . c p p
s r c / p l a y e r / C 4 R a n k S y s t e m . h
2014-09-24 21:08:40 +00:00
s r c / p l a y e r / C 4 S c e n a r i o P a r a m e t e r s . c p p
s r c / p l a y e r / C 4 S c e n a r i o P a r a m e t e r s . h
2010-02-24 16:40:18 +00:00
s r c / s c r i p t / C 4 A u l D e b u g . c p p
2011-10-03 15:19:24 +00:00
s r c / s c r i p t / C 4 A u l D e b u g . h
2012-02-01 21:11:46 +00:00
t h i r d p a r t y / t i m s o r t / s o r t . h
2016-10-22 16:28:15 +00:00
s r c / l i b / C 4 L o g B u f . c p p
s r c / l i b / C 4 L o g B u f . h
s r c / l i b / C 4 L o g . c p p
s r c / l i b / C 4 L o g . h
2009-08-12 13:01:14 +00:00
)
2009-09-21 04:04:52 +00:00
2016-03-26 22:22:51 +00:00
if ( WITH_QT_EDITOR )
qt5_add_resources ( qt_editor_resources "src/editor/resource.qrc" )
set ( QT_EDITOR_SOURCES
2017-05-08 04:19:28 +00:00
s r c / e d i t o r / C 4 P r o p e r t y P a t h . c p p
s r c / e d i t o r / C 4 P r o p e r t y P a t h . h
2016-03-26 22:22:51 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t . h
s r c / e d i t o r / C 4 C o n s o l e Q t S t a t e . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t S t a t e . h
2016-04-25 20:17:10 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t S h a p e s . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t S h a p e s . h
2016-03-26 22:22:51 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t P r o p L i s t V i e w e r . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t P r o p L i s t V i e w e r . h
s r c / e d i t o r / C 4 C o n s o l e Q t O b j e c t L i s t V i e w e r . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t O b j e c t L i s t V i e w e r . h
s r c / e d i t o r / C 4 C o n s o l e Q t D e f i n i t i o n L i s t V i e w e r . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t D e f i n i t i o n L i s t V i e w e r . h
s r c / e d i t o r / C 4 C o n s o l e Q t V i e w p o r t . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t V i e w p o r t . h
s r c / e d i t o r / C 4 C o n s o l e Q t N e w S c e n a r i o . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t N e w S c e n a r i o . h
s r c / e d i t o r / C 4 C o n s o l e Q t N e w S c e n a r i o . u i
2017-05-07 18:25:03 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e S t r i n g . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e S t r i n g . h
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e S t r i n g . u i
2017-05-10 02:43:56 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e O v e r v i e w . c p p
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e O v e r v i e w . h
s r c / e d i t o r / C 4 C o n s o l e Q t L o c a l i z e O v e r v i e w . u i
2016-03-26 22:22:51 +00:00
s r c / e d i t o r / C 4 C o n s o l e Q t M a i n W i n d o w . u i
s r c / e d i t o r / r e s o u r c e . q r c
$ { q t _ e d i t o r _ r e s o u r c e s }
)
endif ( )
2016-03-26 20:42:24 +00:00
2013-01-08 23:10:27 +00:00
set ( MAPE_BASE_SOURCES
2015-12-28 22:00:06 +00:00
s r c / C 4 I n c l u d e . c p p
2013-01-08 23:10:27 +00:00
s r c / l a n d s c a p e / C 4 M a p C r e a t o r S 2 . c p p
s r c / l a n d s c a p e / C 4 M a p C r e a t o r S 2 . h
2014-08-03 23:01:08 +00:00
s r c / l a n d s c a p e / C 4 M a p S c r i p t A l g o . c p p
s r c / l a n d s c a p e / C 4 M a p S c r i p t . c p p
s r c / l a n d s c a p e / C 4 M a p S c r i p t . h
2013-01-08 23:10:27 +00:00
s r c / l a n d s c a p e / C 4 M a t e r i a l . c p p
s r c / l a n d s c a p e / C 4 M a t e r i a l . h
s r c / l a n d s c a p e / C 4 T e x t u r e . c p p
s r c / l a n d s c a p e / C 4 T e x t u r e . h
s r c / l a n d s c a p e / C 4 S c e n a r i o . c p p
s r c / l a n d s c a p e / C 4 S c e n a r i o . h
2014-08-03 23:01:08 +00:00
s r c / g r a p h i c s / B i t m a p 2 5 6 . c p p
s r c / g r a p h i c s / B i t m a p 2 5 6 . h
s r c / g r a p h i c s / C S u r f a c e 8 . c p p
s r c / g r a p h i c s / C S u r f a c e 8 . h
2013-01-08 23:10:27 +00:00
s r c / l i b / C 4 N a m e L i s t . c p p
s r c / l i b / C 4 N a m e L i s t . h
s r c / l i b / C 4 R e c t . c p p
s r c / l i b / C 4 R e c t . h
2013-03-03 18:25:18 +00:00
s r c / o b j e c t / C 4 I d . c p p
s r c / o b j e c t / C 4 I d . h
2015-12-19 23:30:52 +00:00
s r c / s c r i p t / C 4 S c r i p t S t a n d a l o n e S t u b s . c p p
2013-01-08 23:10:27 +00:00
)
2009-09-21 04:04:52 +00:00
set ( MAPE_SOURCES
2014-08-04 18:51:09 +00:00
s r c / m a p e / c p p - h a n d l e s / c 4 d e f - h a n d l e . c p p
2009-09-27 01:54:47 +00:00
s r c / m a p e / c p p - h a n d l e s / g r o u p - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / g r o u p - h a n d l e . c p p
2014-10-17 22:26:45 +00:00
s r c / m a p e / c p p - h a n d l e s / l a n d s c a p e - h a n d l e . c p p
2013-01-12 13:05:54 +00:00
s r c / m a p e / c p p - h a n d l e s / l o g - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / l o g - h a n d l e . c p p
2013-01-06 23:16:43 +00:00
s r c / m a p e / c p p - h a n d l e s / m a p g e n - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / m a p g e n - h a n d l e . c p p
2009-10-01 02:54:10 +00:00
s r c / m a p e / c p p - h a n d l e s / m a t e r i a l - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / m a t e r i a l - h a n d l e . c p p
2013-01-07 20:07:58 +00:00
s r c / m a p e / c p p - h a n d l e s / r a n d o m - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / r a n d o m - h a n d l e . c p p
2012-02-18 20:10:07 +00:00
s r c / m a p e / c p p - h a n d l e s / t e x t u r e - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / t e x t u r e - h a n d l e . c p p
2013-01-10 21:30:14 +00:00
s r c / m a p e / c p p - h a n d l e s / v e r s i o n - h a n d l e . h
s r c / m a p e / c p p - h a n d l e s / v e r s i o n - h a n d l e . c p p
2013-01-08 23:10:27 +00:00
s r c / m a p e / c p p - h a n d l e s / s t u b - h a n d l e . c p p
2009-09-21 04:04:52 +00:00
s r c / m a p e / c o n f i g f i l e . c
s r c / m a p e / c o n f i g f i l e . h
s r c / m a p e / d i s k v i e w . c
s r c / m a p e / d i s k v i e w . h
s r c / m a p e / e d i t v i e w . c
s r c / m a p e / e d i t v i e w . h
s r c / m a p e / f i l e i c o n . c
s r c / m a p e / f i l e i c o n . h
s r c / m a p e / f o r w a r d . h
2009-09-27 01:54:47 +00:00
s r c / m a p e / g r o u p . c
2009-09-21 04:04:52 +00:00
s r c / m a p e / g r o u p . h
s r c / m a p e / h e a d e r . c
s r c / m a p e / h e a d e r . h
s r c / m a p e / i c o n v i e w . c
s r c / m a p e / i c o n v i e w . h
s r c / m a p e / m a p e . c
2013-01-06 23:16:43 +00:00
s r c / m a p e / m a p g e n . c
2009-09-21 04:04:52 +00:00
s r c / m a p e / m a p g e n . h
2009-10-01 02:54:10 +00:00
s r c / m a p e / m a t e r i a l . c
2009-09-21 04:04:52 +00:00
s r c / m a p e / m a t e r i a l . h
s r c / m a p e / m a t t e x v i e w . c
s r c / m a p e / m a t t e x v i e w . h
s r c / m a p e / p r e f e r e n c e s . c
s r c / m a p e / p r e f e r e n c e s . h
s r c / m a p e / p r e f e r e n c e s d i a l o g . c
s r c / m a p e / p r e f e r e n c e s d i a l o g . h
s r c / m a p e / p r e v i e w . c
s r c / m a p e / p r e v i e w . h
2013-01-07 20:07:58 +00:00
s r c / m a p e / r a n d o m . c
2009-09-21 04:04:52 +00:00
s r c / m a p e / r a n d o m . h
s r c / m a p e / s t a t u s b a r . c
s r c / m a p e / s t a t u s b a r . h
2012-02-18 20:10:07 +00:00
s r c / m a p e / t e x t u r e . c
2009-09-21 04:04:52 +00:00
s r c / m a p e / t e x t u r e . h
s r c / m a p e / w i n d o w . c
s r c / m a p e / w i n d o w . h
2016-01-10 21:28:17 +00:00
m a p e - r e s o u r c e . c
2009-09-21 04:04:52 +00:00
)
2012-03-23 21:53:56 +00:00
# source files specific to an operating system
if ( APPLE )
list ( APPEND OC_SYSTEM_SOURCES
2015-12-24 00:30:01 +00:00
s r c / p l a t f o r m / C 4 A p p M a c . m m
2012-03-23 21:53:56 +00:00
s r c / p l a t f o r m / C 4 F i l e M o n i t o r M a c . m m
2012-09-02 13:39:29 +00:00
s r c / p l a t f o r m / C 4 A p p D e l e g a t e . h
s r c / p l a t f o r m / C 4 A p p D e l e g a t e . m m
2014-01-25 15:11:55 +00:00
s r c / p l a t f o r m / S t d S c h e d u l e r M a c . m m
2015-12-15 19:18:25 +00:00
s r c / p l a t f o r m / O b j e c t i v e C A s s o c i a t e d . h
2012-03-23 21:53:56 +00:00
)
2015-12-25 01:36:47 +00:00
list ( APPEND OC_GUI_SOURCES ${ OC_BUNDLE_RESOURCES } )
2012-03-23 21:53:56 +00:00
else ( )
2013-01-08 23:10:27 +00:00
list ( APPEND OC_SYSTEM_SOURCES
2012-04-27 17:04:43 +00:00
s r c / g a m e / C l o n k M a i n . c p p
2012-03-23 21:53:56 +00:00
)
endif ( )
2009-05-29 21:05:50 +00:00
if ( WIN32 )
2009-08-12 13:01:14 +00:00
list ( APPEND OC_SYSTEM_SOURCES
2011-03-01 12:28:13 +00:00
s r c / p l a t f o r m / C 4 C r a s h H a n d l e r W i n 3 2 . c p p
2015-12-15 19:18:25 +00:00
)
list ( APPEND OC_GUI_SOURCES
2014-05-18 16:59:19 +00:00
s r c / r e s / e n g i n e . r c
2009-08-10 15:59:18 +00:00
s r c / r e s / r e s o u r c e . h
2009-05-29 21:05:50 +00:00
)
2013-11-10 18:09:32 +00:00
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/src/res/openclonk.manifest" "${CMAKE_CURRENT_BINARY_DIR}/openclonk.manifest" COPYONLY )
2010-12-27 03:49:02 +00:00
endif ( )
2015-12-25 01:32:01 +00:00
if ( NOT UPNP_FOUND )
list ( APPEND OC_SYSTEM_SOURCES
s r c / n e t w o r k / C 4 N e t w o r k 2 U P n P D u m m y . c p p
)
elseif ( UPNP_STYLE STREQUAL "Win32" )
list ( APPEND OC_SYSTEM_SOURCES
s r c / n e t w o r k / C 4 N e t w o r k 2 U P n P W i n 3 2 . c p p
)
2016-05-29 19:59:30 +00:00
elseif ( UPNP_STYLE STREQUAL "miniupnpc" )
2015-12-25 01:32:01 +00:00
list ( APPEND OC_SYSTEM_SOURCES
s r c / n e t w o r k / C 4 N e t w o r k 2 U P n P L i n u x . c p p
)
endif ( )
2012-03-23 21:53:56 +00:00
# source files specific to a GUI library
2016-08-03 14:10:36 +00:00
if ( USE_SDL_MAINLOOP )
2015-12-15 19:18:25 +00:00
list ( APPEND OC_GUI_SOURCES
2012-03-23 21:53:56 +00:00
s r c / p l a t f o r m / C 4 A p p S D L . c p p
s r c / p l a t f o r m / C 4 W i n d o w S D L . c p p
)
2016-03-20 19:43:37 +00:00
if ( WITH_QT_EDITOR )
2016-03-26 20:42:24 +00:00
list ( APPEND OC_GUI_SOURCES ${ QT_EDITOR_SOURCES } )
2016-03-20 19:43:37 +00:00
endif ( )
2016-01-22 16:50:00 +00:00
elseif ( USE_WIN32_WINDOWS )
2016-02-12 04:37:13 +00:00
if ( WITH_QT_EDITOR )
2016-03-26 20:42:24 +00:00
list ( APPEND OC_GUI_SOURCES ${ QT_EDITOR_SOURCES } )
2016-02-12 04:37:13 +00:00
else ( )
list ( APPEND OC_GUI_SOURCES
s r c / e d i t o r / C 4 C o n s o l e W i n 3 2 . c p p
)
endif ( )
2015-12-15 19:18:25 +00:00
list ( APPEND OC_GUI_SOURCES
2012-03-23 21:53:56 +00:00
s r c / p l a t f o r m / C 4 W i n d o w W i n 3 2 . c p p
)
elseif ( USE_COCOA )
2015-12-15 19:18:25 +00:00
list ( APPEND OC_GUI_SOURCES
2012-03-23 21:53:56 +00:00
s r c / p l a t f o r m / C 4 W i n d o w M a c . m m
2012-09-02 13:39:29 +00:00
s r c / p l a t f o r m / C 4 A p p D e l e g a t e + M a i n M e n u A c t i o n s . h
s r c / p l a t f o r m / C 4 A p p D e l e g a t e + M a i n M e n u A c t i o n s . m m
2012-09-02 18:51:43 +00:00
s r c / g r a p h i c s / C 4 D r a w G L M a c . h
s r c / g r a p h i c s / C 4 D r a w G L M a c . m m
2012-09-02 13:39:29 +00:00
s r c / p l a t f o r m / C 4 W i n d o w C o n t r o l l e r . h
s r c / p l a t f o r m / C 4 W i n d o w C o n t r o l l e r . m m
2012-03-23 21:53:56 +00:00
s r c / p l a t f o r m / C o c o a K e y c o d e M a p . h
2009-05-29 21:05:50 +00:00
)
2016-07-10 22:22:02 +00:00
if ( WITH_QT_EDITOR )
list ( APPEND OC_GUI_SOURCES ${ QT_EDITOR_SOURCES } )
endif ( )
2009-05-29 21:05:50 +00:00
endif ( )
2012-03-14 22:28:44 +00:00
if ( WITH_AUTOMATIC_UPDATE )
2015-12-15 19:18:25 +00:00
list ( APPEND OC_GUI_SOURCES
2012-03-14 22:28:44 +00:00
s r c / g u i / C 4 U p d a t e D l g . c p p
s r c / g u i / C 4 U p d a t e D l g . h
2009-05-29 21:05:50 +00:00
)
endif ( )
2009-08-10 15:59:18 +00:00
2009-08-29 21:12:31 +00:00
if ( PROJECT_FOLDERS )
2011-09-21 20:25:33 +00:00
source_group ( "Core" src/.* )
source_group ( "Platform abstraction" src/platform/.* )
source_group ( "Utility" src/lib/.* )
source_group ( "C4Group" src/c4group/.* )
2012-04-27 17:04:43 +00:00
source_group ( "Graphics" src/graphics/.* )
2009-08-29 21:12:31 +00:00
source_group ( "GUI" src/gui/.* )
source_group ( "Network" src/network/.* )
2012-04-27 17:04:43 +00:00
source_group ( "Object" src/object/.* )
source_group ( "Landscape" src/landscape/.* )
source_group ( "Player" src/player/.* )
source_group ( "Script" REGULAR_EXPRESSION .*script/.* )
2009-08-29 21:12:31 +00:00
source_group ( "Config" src/config/.* )
source_group ( "Control" src/control/.* )
source_group ( "Editing" src/editor/.* )
2012-02-12 18:41:48 +00:00
source_group ( "Mape" src/mape/.* )
2009-08-29 21:12:31 +00:00
endif ( )
2009-05-29 20:53:15 +00:00
include_directories (
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R }
2009-08-10 15:59:18 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c
2015-02-07 16:39:15 +00:00
)
# Mark thirdparty as system headers so we don't get warnings from them
include_directories ( SYSTEM
2011-01-25 20:28:44 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t h i r d p a r t y
2009-05-29 20:53:15 +00:00
)
2009-10-20 03:39:24 +00:00
############################################################################
# Generate output files
############################################################################
add_definitions ( -DHAVE_CONFIG_H )
2011-01-25 17:56:40 +00:00
2013-01-28 15:48:04 +00:00
add_library ( libmisc
2015-12-28 22:00:06 +00:00
s r c / C 4 I n c l u d e . c p p
2013-01-28 15:48:04 +00:00
s r c / c 4 g r o u p / C 4 G r o u p . c p p
s r c / c 4 g r o u p / C 4 G r o u p . h
s r c / c 4 g r o u p / C 4 U p d a t e . c p p
s r c / c 4 g r o u p / C 4 U p d a t e . h
s r c / c 4 g r o u p / C S t d F i l e . c p p
s r c / c 4 g r o u p / C S t d F i l e . h
2016-10-20 16:30:05 +00:00
s r c / g r a p h i c s / C 4 B l t T r a n s f o r m . c p p
s r c / g r a p h i c s / C 4 B l t T r a n s f o r m . h
2013-01-28 15:48:04 +00:00
s r c / l i b / C 4 I n p u t V a l i d a t i o n . c p p
s r c / l i b / C 4 I n p u t V a l i d a t i o n . h
2015-12-28 22:00:06 +00:00
s r c / l i b / C 4 M a r k u p . c p p
s r c / l i b / C 4 M a r k u p . h
2016-09-07 21:46:22 +00:00
s r c / l i b / C 4 R a n d o m . c p p
s r c / l i b / C 4 R a n d o m . h
2015-12-28 22:00:06 +00:00
s r c / l i b / C 4 S i m p l e L o g . c p p
2013-01-28 15:48:04 +00:00
s r c / l i b / S H A 1 . h
s r c / l i b / S t a n d a r d . c p p
s r c / l i b / S t a n d a r d . h
s r c / l i b / S t d B u f . c p p
s r c / l i b / S t d B u f . h
s r c / l i b / S t d C o m p i l e r . c p p
s r c / l i b / S t d C o m p i l e r . h
s r c / l i b / S t d R e s S t r 2 . c p p
2016-10-20 19:14:08 +00:00
s r c / n e t p u n c h e r / C 4 P u n c h e r P a c k e t . c p p
s r c / n e t p u n c h e r / C 4 P u n c h e r P a c k e t . h
2013-01-28 15:48:04 +00:00
s r c / n e t w o r k / C 4 N e t I O . c p p
s r c / n e t w o r k / C 4 N e t I O . h
2016-10-20 19:14:08 +00:00
s r c / n e t w o r k / C 4 N e t w o r k 2 A d d r e s s . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 A d d r e s s . h
2013-01-28 15:48:04 +00:00
s r c / p l a t f o r m / S t d F i l e . c p p
s r c / p l a t f o r m / S t d F i l e . h
s r c / p l a t f o r m / S t d R e g i s t r y . c p p
s r c / p l a t f o r m / S t d R e g i s t r y . h
s r c / p l a t f o r m / S t d S c h e d u l e r . c p p
2014-01-12 20:05:35 +00:00
s r c / p l a t f o r m / S t d S c h e d u l e r W i n 3 2 . c p p
s r c / p l a t f o r m / S t d S c h e d u l e r P o l l . c p p
2013-01-28 15:48:04 +00:00
s r c / p l a t f o r m / S t d S c h e d u l e r . h
2013-12-07 21:05:56 +00:00
s r c / p l a t f o r m / C 4 T i m e M i l l i s e c o n d s . c p p
2015-12-28 21:00:06 +00:00
s r c / p l a t f o r m / C 4 T i m e M i l l i s e c o n d s . h
2013-01-28 15:48:04 +00:00
s r c / z l i b / g z i o . c
s r c / z l i b / g z i o . h
s r c / z l i b / z u t i l . h
2016-04-21 22:15:30 +00:00
# pcg is a header-only library which we're listing solely so MSVC shows
# the sources in the solution explorer. We could use an INTERFACE library
# but there is no point to that because we don't need it for non-IDE
# generators and support on IDE-targetting generators is nonexistant.
t h i r d p a r t y / p c g / p c g _ e x t r a s . h p p
t h i r d p a r t y / p c g / p c g _ r a n d o m . h p p
t h i r d p a r t y / p c g / p c g _ u i n t 1 2 8 . h p p
2013-01-28 15:48:04 +00:00
)
target_link_libraries ( libmisc ${ ZLIB_LIBRARIES } )
2015-09-04 14:43:29 +00:00
if ( WIN32 )
target_link_libraries ( libmisc winmm )
endif ( )
2015-12-25 00:57:12 +00:00
if ( HAVE_PTHREAD )
target_link_libraries ( libmisc pthread )
endif ( )
if ( UNIX AND NOT APPLE )
target_link_libraries ( libmisc rt )
endif ( )
2013-01-28 15:48:04 +00:00
add_library ( libc4script
2015-12-28 22:00:06 +00:00
s r c / C 4 I n c l u d e . c p p
2013-01-28 15:48:04 +00:00
s r c / c 4 g r o u p / C 4 C o m p o n e n t H o s t . c p p
s r c / c 4 g r o u p / C 4 C o m p o n e n t H o s t . h
2016-10-22 11:19:22 +00:00
s r c / c 4 g r o u p / C 4 G r o u p S e t . c p p
s r c / c 4 g r o u p / C 4 G r o u p S e t . h
2013-01-28 15:48:04 +00:00
s r c / c 4 g r o u p / C 4 L a n g S t r i n g T a b l e . c p p
s r c / c 4 g r o u p / C 4 L a n g S t r i n g T a b l e . h
2016-10-22 11:19:22 +00:00
s r c / l i b / C 4 R a n d o m R e c o r d . c p p
2013-01-28 15:48:04 +00:00
s r c / l i b / C 4 R e a l . c p p
s r c / l i b / C 4 R e a l . h
s r c / s c r i p t / C 4 A u l . c p p
2016-10-22 11:19:22 +00:00
s r c / s c r i p t / C 4 A u l . h
s r c / s c r i p t / C 4 A u l A S T . h
2016-04-29 09:30:10 +00:00
s r c / s c r i p t / C 4 A u l C o m p i l e r . c p p
2016-10-22 11:19:22 +00:00
s r c / s c r i p t / C 4 A u l C o m p i l e r . h
2013-01-28 15:48:04 +00:00
s r c / s c r i p t / C 4 A u l D e f F u n c . h
s r c / s c r i p t / C 4 A u l E x e c . c p p
s r c / s c r i p t / C 4 A u l E x e c . h
s r c / s c r i p t / C 4 A u l F u n c . c p p
s r c / s c r i p t / C 4 A u l F u n c . h
s r c / s c r i p t / C 4 A u l L i n k . c p p
s r c / s c r i p t / C 4 A u l P a r s e . c p p
2016-04-07 18:21:43 +00:00
s r c / s c r i p t / C 4 A u l P a r s e . h
2014-05-29 22:13:48 +00:00
s r c / s c r i p t / C 4 A u l S c r i p t F u n c . c p p
s r c / s c r i p t / C 4 A u l S c r i p t F u n c . h
2017-02-13 13:53:17 +00:00
s r c / s c r i p t / C 4 A u l W a r n i n g s . h
2015-12-19 20:45:19 +00:00
s r c / s c r i p t / C 4 E f f e c t . c p p
s r c / s c r i p t / C 4 E f f e c t . h
2013-01-28 15:48:04 +00:00
s r c / s c r i p t / C 4 P r o p L i s t . c p p
s r c / s c r i p t / C 4 P r o p L i s t . h
s r c / s c r i p t / C 4 S c r i p t . c p p
s r c / s c r i p t / C 4 S c r i p t H o s t . c p p
s r c / s c r i p t / C 4 S c r i p t H o s t . h
s r c / s c r i p t / C 4 S t r i n g T a b l e . c p p
s r c / s c r i p t / C 4 S t r i n g T a b l e . h
s r c / s c r i p t / C 4 V a l u e . c p p
s r c / s c r i p t / C 4 V a l u e . h
2016-10-22 11:19:22 +00:00
s r c / s c r i p t / C 4 V a l u e A r r a y . c p p
s r c / s c r i p t / C 4 V a l u e A r r a y . h
2013-01-28 15:48:04 +00:00
s r c / s c r i p t / C 4 V a l u e M a p . c p p
s r c / s c r i p t / C 4 V a l u e M a p . h
)
2015-12-13 13:23:52 +00:00
target_link_libraries ( libc4script libmisc )
2016-10-22 16:28:15 +00:00
add_library ( libopenclonk
s r c / c 4 g r o u p / C 4 E x t r a . c p p
s r c / c 4 g r o u p / C 4 E x t r a . h
s r c / c o n t r o l / C 4 P l a y e r I n f o C o n f l i c t s . c p p
s r c / g r a p h i c s / B i t m a p 2 5 6 . c p p
s r c / g r a p h i c s / B i t m a p 2 5 6 . h
s r c / g r a p h i c s / C S u r f a c e 8 . c p p
s r c / g r a p h i c s / C S u r f a c e 8 . h
s r c / g r a p h i c s / S t d P N G . c p p
s r c / g r a p h i c s / S t d P N G . h
s r c / g u i / C 4 F o l d e r . c p p
s r c / g u i / C 4 F o l d e r . h
s r c / l a n d s c a p e / C 4 M a p S c r i p t A l g o . c p p
s r c / l a n d s c a p e / C 4 M a s s M o v e r . c p p
s r c / l a n d s c a p e / C 4 M a s s M o v e r . h
s r c / l a n d s c a p e / C 4 M a t e r i a l L i s t . c p p
s r c / l a n d s c a p e / C 4 M a t e r i a l L i s t . h
s r c / l a n d s c a p e / C 4 S c e n a r i o . c p p
s r c / l a n d s c a p e / C 4 S c e n a r i o . h
s r c / l a n d s c a p e / C 4 S c e n a r i o S e c t i o n . c p p
s r c / l a n d s c a p e / C 4 T e x t u r e S h a p e . c p p
s r c / l a n d s c a p e / C 4 T e x t u r e S h a p e . h
s r c / l i b / C 4 N a m e L i s t . c p p
s r c / l i b / C 4 N a m e L i s t . h
s r c / l i b / C 4 S t a t . c p p
s r c / l i b / C 4 S t a t . h
s r c / l i b / S t d M e s h M a t h . c p p
s r c / l i b / S t d M e s h M a t h . h
s r c / n e t w o r k / C 4 N e t w o r k 2 D i s c o v e r . c p p
s r c / n e t w o r k / C 4 N e t w o r k 2 D i s c o v e r . h
s r c / o b j e c t / C 4 A c t i o n . c p p
s r c / o b j e c t / C 4 F i n d O b j e c t . c p p
s r c / o b j e c t / C 4 F i n d O b j e c t . h
s r c / o b j e c t / C 4 I d . c p p
s r c / o b j e c t / C 4 I d . h
s r c / o b j e c t / C 4 I n f o C o r e . c p p
s r c / o b j e c t / C 4 I n f o C o r e . h
s r c / o b j e c t / C 4 M o v e m e n t . c p p
s r c / o b j e c t / C 4 O b j e c t P t r . c p p
s r c / o b j e c t / C 4 O b j e c t P t r . h
s r c / o b j e c t / C 4 S e c t o r . c p p
s r c / o b j e c t / C 4 S e c t o r . h
s r c / o b j e c t / C 4 S h a p e . c p p
s r c / o b j e c t / C 4 S h a p e . h
s r c / p l a t f o r m / C 4 T i m e M i l l i s e c o n d s . c p p
s r c / p l a t f o r m / C 4 T i m e M i l l i s e c o n d s . h
)
2016-10-22 19:33:10 +00:00
target_link_libraries ( libopenclonk ${ PNG_LIBRARIES } )
2016-10-22 11:19:22 +00:00
target_compile_definitions ( libmisc PRIVATE "COMPILED_AS_C4LIBRARY" )
target_compile_definitions ( libc4script PRIVATE "COMPILED_AS_C4LIBRARY" )
2016-10-22 16:28:15 +00:00
target_compile_definitions ( libopenclonk PRIVATE "COMPILED_AS_C4LIBRARY" )
2015-12-13 13:23:52 +00:00
2011-06-03 19:47:12 +00:00
add_executable ( c4script
2012-03-04 20:23:11 +00:00
i n c l u d e / c 4 s c r i p t / c 4 s c r i p t . h
2012-04-27 17:04:43 +00:00
s r c / s c r i p t / C 4 S c r i p t M a i n . c p p
2012-03-04 20:23:11 +00:00
s r c / s c r i p t / C 4 S c r i p t S t a n d a l o n e . c p p
2015-09-04 11:20:55 +00:00
s r c / s c r i p t / C 4 S c r i p t S t a n d a l o n e S t u b s . c p p
2011-03-07 19:53:13 +00:00
)
2015-12-30 12:07:36 +00:00
set_property ( TARGET c4script PROPERTY FOLDER "Utilities" )
2011-03-07 19:53:13 +00:00
2016-10-22 11:19:22 +00:00
target_compile_definitions ( c4script PRIVATE "USE_CONSOLE" )
2015-12-25 00:57:12 +00:00
target_link_libraries ( c4script
l i b m i s c
2016-09-08 19:45:30 +00:00
l i b c 4 s c r i p t
2017-01-07 11:05:14 +00:00
$ { G E T O P T _ L I B R A R I E S }
2015-12-25 00:57:12 +00:00
)
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
add_executable ( openclonk WIN32 MACOSX_BUNDLE
$ { O C _ S Y S T E M _ S O U R C E S }
$ { O C _ G U I _ S O U R C E S }
$ { O C _ C L O N K _ S O U R C E S }
)
2015-12-25 00:57:12 +00:00
2016-10-23 15:12:53 +00:00
target_link_libraries ( openclonk
$ { F R E E T Y P E _ L I B R A R I E S }
$ { P N G _ L I B R A R I E S }
$ { J P E G _ L I B R A R I E S }
$ { E X E C I N F O _ L I B R A R Y }
$ { S D L 2 _ L I B R A R I E S }
$ { A u d i o _ L I B R A R I E S }
$ { G E T O P T _ L I B R A R I E S }
$ { G L E W _ L I B R A R I E S }
$ { O P E N G L _ L I B R A R I E S }
$ { T i n y X M L _ L I B R A R I E S }
$ { X 1 1 _ L I B R A R I E S }
$ { X R A N D R _ L I B R A R I E S }
$ { D B G H E L P _ L I B R A R I E S }
$ { U P N P _ L I B R A R I E S }
l i b m i s c
l i b c 4 s c r i p t
l i b o p e n c l o n k
)
if ( USE_COCOA )
target_link_libraries ( openclonk "-framework Cocoa -framework AppKit -framework Quartz -framework OpenAL -framework AudioToolbox" )
endif ( )
2015-12-25 00:57:12 +00:00
2016-10-23 15:12:53 +00:00
if ( WITH_QT_EDITOR )
set_target_properties ( openclonk PROPERTIES COMPILE_DEFINITIONS WITH_QT_EDITOR )
2017-09-23 14:52:33 +00:00
target_link_libraries ( openclonk Qt5::Widgets )
2018-02-13 05:31:32 +00:00
# Deploy dependency libraries and platforms/ folder
2018-02-16 05:40:25 +00:00
if ( DEPLOY_QT_LIBRARIES )
if ( WIN32 )
include ( DeployQt )
windeployqt ( openclonk )
elseif ( APPLE )
include ( DeployQt )
macdeployqt ( nitroshare-client )
endif ( )
2018-02-13 05:31:32 +00:00
endif ( )
2016-10-23 15:12:53 +00:00
endif ( )
2017-03-21 17:34:50 +00:00
if ( HAVE_BACKWARD )
2017-09-23 14:52:33 +00:00
target_link_libraries ( openclonk Backward::Backward )
2017-03-21 17:34:50 +00:00
endif ( )
2016-02-12 04:37:13 +00:00
endif ( )
2015-12-25 00:57:12 +00:00
add_executable ( openclonk-server
$ { O C _ S Y S T E M _ S O U R C E S }
$ { O C _ C L O N K _ S O U R C E S }
s r c / p l a t f o r m / C 4 A p p T . c p p
s r c / p l a t f o r m / C 4 S t d I n P r o c . c p p
s r c / p l a t f o r m / C 4 S t d I n P r o c . h
)
2016-02-13 20:35:32 +00:00
target_compile_definitions ( openclonk-server PRIVATE "USE_CONSOLE" )
2012-11-16 16:30:52 +00:00
2015-12-15 19:18:25 +00:00
target_link_libraries ( openclonk-server
$ { P N G _ L I B R A R I E S }
$ { J P E G _ L I B R A R I E S }
$ { E X E C I N F O _ L I B R A R Y }
2016-02-15 16:30:24 +00:00
$ { S D L 2 _ L I B R A R I E S }
2015-12-25 00:57:12 +00:00
$ { R E A D L I N E _ L I B R A R I E S }
$ { A u d i o _ L I B R A R I E S }
$ { G E T O P T _ L I B R A R I E S }
$ { T i n y X M L _ L I B R A R I E S }
$ { D B G H E L P _ L I B R A R I E S }
2015-12-15 19:18:25 +00:00
l i b m i s c
2016-09-08 19:45:30 +00:00
l i b c 4 s c r i p t
2016-10-22 16:28:15 +00:00
l i b o p e n c l o n k
2015-12-15 19:18:25 +00:00
)
2016-10-23 15:12:53 +00:00
if ( UPNP_FOUND )
target_link_libraries ( openclonk-server ${ UPNP_LIBRARIES } )
endif ( )
2015-12-25 00:57:12 +00:00
if ( USE_COCOA )
target_link_libraries ( openclonk-server "-framework Cocoa" )
2012-11-16 16:30:52 +00:00
endif ( )
2017-03-21 17:34:50 +00:00
if ( HAVE_BACKWARD )
2017-09-23 14:52:33 +00:00
target_link_libraries ( openclonk-server Backward::Backward )
2017-03-21 17:34:50 +00:00
endif ( )
2013-01-14 00:38:03 +00:00
2016-10-23 15:12:53 +00:00
if ( GTK3_FOUND AND GTK3_gtksourceview_FOUND AND NOT HEADLESS_ONLY )
2015-12-25 00:57:12 +00:00
add_executable ( mape ${ MAPE_BASE_SOURCES } ${ MAPE_SOURCES } )
2016-01-18 00:12:11 +00:00
target_compile_options ( mape PRIVATE ${ GTK3_COMPILE_DEFINITIONS } ${ GTK3_gtksourceview_COMPILE_DEFINITIONS } )
2015-12-30 12:07:36 +00:00
set_property ( TARGET mape PROPERTY FOLDER "Utilities" )
2015-12-25 00:57:12 +00:00
target_include_directories ( mape PRIVATE ${ GTK3_INCLUDE_DIRS } ${ GTK3_gtksourceview_INCLUDE_DIRS } )
2012-02-12 18:41:48 +00:00
target_link_libraries ( mape
2015-12-25 00:57:12 +00:00
$ { G T K 3 _ L I B R A R I E S }
$ { G T K 3 _ g t k s o u r c e v i e w _ L I B R A R I E S }
2013-01-28 15:48:04 +00:00
l i b m i s c
2016-09-08 19:45:30 +00:00
l i b c 4 s c r i p t
2012-02-12 18:41:48 +00:00
)
2015-12-25 00:57:12 +00:00
# Suppress the console window for mape even though only a main() and not
# a WinMain() entry point is provided.
if ( MINGW )
set_target_properties ( mape PROPERTIES LINK_FLAGS -mwindows )
endif ( )
2012-02-12 18:41:48 +00:00
endif ( )
2013-01-14 00:38:03 +00:00
2015-12-25 00:57:12 +00:00
add_executable ( c4group
s r c / c 4 g r o u p / C 4 G r o u p M a i n . c p p
2009-10-20 03:39:24 +00:00
)
2015-12-30 12:07:36 +00:00
set_property ( TARGET c4group PROPERTY FOLDER "Utilities" )
2013-01-28 15:48:04 +00:00
2015-12-25 00:57:12 +00:00
target_link_libraries ( c4group
2013-01-28 15:48:04 +00:00
l i b m i s c
2011-03-07 19:53:13 +00:00
)
2015-12-25 00:57:12 +00:00
2016-09-07 21:46:22 +00:00
add_executable ( netpuncher EXCLUDE_FROM_ALL
2016-10-20 19:14:08 +00:00
s r c / n e t p u n c h e r / C 4 P u n c h e r H a s h . h
2016-09-07 21:46:22 +00:00
s r c / n e t p u n c h e r / m a i n . c p p
)
target_link_libraries ( netpuncher
l i b m i s c
)
2015-12-25 00:57:12 +00:00
if ( WIN32 )
2017-03-05 11:41:05 +00:00
target_link_libraries ( libmisc iphlpapi ws2_32 )
2015-09-19 17:20:25 +00:00
endif ( )
2015-12-25 00:57:12 +00:00
2015-12-29 02:03:22 +00:00
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $< $<CONFIG:Debug > :_DEBUG> )
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $< $<NOT:$<CONFIG:Debug > >:NDEBUG> )
2009-10-20 03:39:24 +00:00
2010-08-01 13:49:51 +00:00
# This expands some variables in Info.plist as a side-effect. XCode might then
# expand a second time, using the same syntax. Try not to get confused by this!
2015-03-15 13:49:59 +00:00
if ( APPLE AND NOT CMAKE_GENERATOR STREQUAL "Xcode" )
# If cross-compiling for OS X, EXECUTABLE_NAME needs to be set so it's
# expanded inside the Info.plist file. Otherwise you cannot rename the app
# bundle later.
# XXX: Make sure to fix this once we have more than one app bundle. No, I
# have no idea how.
set ( EXECUTABLE_NAME openclonk )
endif ( )
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
set_target_properties ( openclonk PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/src/res/Info.plist" )
endif ( )
2010-08-01 13:49:51 +00:00
2011-11-10 01:01:21 +00:00
if ( MSVC )
# set target output filenames to a per-configuration value
function ( oc_set_target_names target_name )
foreach ( CONFIG ${ CMAKE_CONFIGURATION_TYPES } )
string ( TOUPPER "${CONFIG}" CONFIG_UPPER )
string ( TOLOWER "${CONFIG}" CONFIG_LOWER )
set_target_properties ( ${ target_name } PROPERTIES RUNTIME_OUTPUT_DIRECTORY_ ${ CONFIG_UPPER } "${CMAKE_CURRENT_BINARY_DIR}" )
if ( NOT "${CONFIG}" STREQUAL "RelWithDebInfo" )
set_target_properties ( ${ target_name } PROPERTIES RUNTIME_OUTPUT_NAME_ ${ CONFIG_UPPER } "${target_name}-${CONFIG_LOWER}" )
endif ( )
endforeach ( )
endfunction ( )
2013-01-28 12:44:01 +00:00
oc_set_target_names ( openclonk )
2015-12-15 19:18:25 +00:00
oc_set_target_names ( openclonk-server )
2011-11-10 01:01:21 +00:00
oc_set_target_names ( c4group )
oc_set_target_names ( c4script )
2013-11-10 18:09:32 +00:00
# cmake does not support embedding arbitrary manifests,
# so we add it to the resource file ourselves and tell
# MSVC not to create its own.
set_property ( TARGET openclonk APPEND PROPERTY LINK_FLAGS "/MANIFEST:NO" )
2011-11-10 01:01:21 +00:00
endif ( )
2009-10-20 03:39:24 +00:00
############################################################################
2015-12-28 22:00:06 +00:00
# Precompiled header support for MSVC
2009-10-20 03:39:24 +00:00
############################################################################
if ( HAVE_PRECOMPILED_HEADERS )
2017-01-07 12:29:49 +00:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
2013-01-28 12:44:01 +00:00
get_property ( OC_SOURCES TARGET openclonk PROPERTY SOURCES )
2009-10-20 04:05:49 +00:00
foreach ( FILE ${ OC_SOURCES } )
get_filename_component ( FILE_EXT ${ FILE } EXT )
2010-01-04 02:15:50 +00:00
get_filename_component ( FILE_NAME_WE ${ FILE } NAME_WE )
2016-02-12 04:37:13 +00:00
if ( FILE_EXT STREQUAL ".cpp" AND NOT FILE STREQUAL qt_editor_resources )
# The check for .cpp is necessary since gzio.c gets compiled as C
# code, which can't use C++ PCH. Also, the auto-generated file
# qt_editor_resources does not include the PCH.
2009-10-20 04:05:49 +00:00
set_property ( SOURCE ${ FILE } PROPERTY COMPILE_FLAGS /YuC4Include.h )
endif ( )
endforeach ( )
set_property ( SOURCE src/C4Include.cpp PROPERTY COMPILE_FLAGS /YcC4Include.h )
endif ( )
2009-10-20 03:39:24 +00:00
endif ( )
2012-02-14 15:44:29 +00:00
############################################################################
# Some Xcode/OSX specific settings involving building with clang, precompiled headers...
############################################################################
if ( APPLE )
2014-01-27 07:08:27 +00:00
# for good measure - seems to be part of default OSX installation
# linking with static freetype library requires it
2015-01-23 16:11:23 +00:00
find_package ( "BZip2" REQUIRED )
target_link_libraries ( openclonk ${ BZIP2_LIBRARIES } )
2014-01-27 07:08:27 +00:00
2014-01-29 19:37:24 +00:00
if ( CMAKE_GENERATOR STREQUAL Xcode )
2014-01-27 07:08:27 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES )
set_target_properties ( openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES )
2015-12-28 21:14:25 +00:00
set_target_properties ( openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++14 objective-c++14" )
2014-01-27 07:08:27 +00:00
set_target_properties ( openclonk PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h" )
set_target_properties ( c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES )
2015-12-28 21:14:25 +00:00
set_target_properties ( c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++14 objective-c++14" )
2014-01-27 07:08:27 +00:00
set_target_properties ( c4group PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h" )
set_target_properties ( libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES )
2015-12-28 21:14:25 +00:00
set_target_properties ( libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PFE_FILE_C_DIALECTS "c++14 objective-c++14" )
2014-01-27 07:08:27 +00:00
set_target_properties ( libmisc PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/C4Include.h" )
set_target_properties ( openclonk PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES )
2014-01-31 07:16:32 +00:00
2012-02-14 15:44:29 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0" )
2015-12-28 20:42:49 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14" )
2012-02-14 15:44:29 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
endif ( )
2015-01-24 10:20:03 +00:00
add_custom_command ( TARGET openclonk
2016-06-24 13:03:27 +00:00
P O S T _ B U I L D C O M M A N D
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / o s x _ b u n d l e _ l i b s "
" $ < $ < B O O L : $ { C M A K E _ S Y S R O O T } > : - - s y s r o o t = $ { C M A K E _ S Y S R O O T } > "
2015-01-24 10:20:03 +00:00
" $ < T A R G E T _ F I L E : o p e n c l o n k > "
)
2011-03-12 21:01:23 +00:00
endif ( )
2009-10-20 03:39:24 +00:00
############################################################################
2015-12-25 00:57:12 +00:00
# Miscellaneous
2009-10-20 03:39:24 +00:00
############################################################################
2015-12-30 12:48:54 +00:00
add_subdirectory ( tests )
2009-09-20 20:03:44 +00:00
2009-05-29 20:53:15 +00:00
configure_file ( ${ CMAKE_CURRENT_SOURCE_DIR } /config.h.cmake ${ CMAKE_CURRENT_BINARY_DIR } /config.h )
2009-07-11 01:14:57 +00:00
2015-12-29 12:58:15 +00:00
# For MSVC 2015, add a Solution Items folder to the solution that contains
# a reference to the debugger visualization file.
if ( CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015" )
file ( RELATIVE_PATH NATVIS_SOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/tools/openclonk.vs14.natvis" )
file ( TO_NATIVE_PATH "${NATVIS_SOURCE_PATH}" NATVIS_SOURCE_PATH )
# We need to set the GUID of this to the cache, so CMake uses it for
# dependency resolution. As a special bonus, this makes it so the
# project has an actual version 4 GUID instead of the CMake-generated
# almost-version-3 (actually just a bunch of MD5 hex output with dashes).
set ( VS_SolutionItems_GUID "9570CE35-9E26-4091-AF06-6B0C7F9D8F69" )
set ( "Solution Items_GUID_CMAKE" "${VS_SolutionItems_GUID}" CACHE INTERNAL "Stored GUID" )
# Unfortunately CMake doesn't allow us to add solution items directly, so
# instead we abuse that it doesn't validate the TYPE parameter and instead
# passes it straight through into the .sln file.
include_external_msproject (
" S o l u t i o n I t e m s " " S o l u t i o n I t e m s "
T Y P E " 2 1 5 0 E 3 3 3 - 8 F D C - 4 2 A 3 - 9 4 7 4 - 1 A 3 9 5 6 D 4 6 D E 8 } \ " ) = \ " S o l u t i o n I t e m s \ " , \ " S o l u t i o n I t e m s \ " , \ " { $ { V S _ S o l u t i o n I t e m s _ G U I D } } \ " \ n ProjectSection ( SolutionItems ) = p r e P r o j e c t \ n $ { N A T V I S _ S O U R C E _ P A T H } = $ { N A T V I S _ S O U R C E _ P A T H } \ n E n d P r o j e c t S e c t i o n \ n #"
)
endif ( )
2014-03-25 18:11:22 +00:00
############################################################################
# Precompiled header support, gcc part (it needs the cxx flags)
############################################################################
if ( CMAKE_COMPILER_IS_GNUCXX )
include ( GccPchSupport )
2014-04-02 18:52:31 +00:00
option ( USE_GCC_PCH "Use GCC precompiled headers" OFF )
2014-03-25 18:11:22 +00:00
endif ( )
if ( USE_GCC_PCH )
add_precompiled_header ( libmisc src/C4Include.h )
add_precompiled_header ( libc4script src/C4Include.h )
add_precompiled_header ( openclonk src/C4Include.h )
2015-12-15 19:18:25 +00:00
add_precompiled_header ( openclonk-server src/C4Include.h )
2014-03-25 18:11:22 +00:00
endif ( )
2010-08-03 15:59:36 +00:00
############################################################################
# installation
############################################################################
2013-03-09 13:58:30 +00:00
# Don't allow installation for WITH_AUTOMATIC_UPDATE because otherwise
2012-02-03 22:43:18 +00:00
# the installed binary wouldn't find its game data in the system data path.
IF ( WITH_AUTOMATIC_UPDATE )
INSTALL ( CODE "MESSAGE(SEND_ERROR \" Installation is only supported for WITH_AUTOMATIC_UPDATE disabled\ ")" )
ENDIF ( )
2009-05-29 20:53:15 +00:00
2012-05-03 19:47:14 +00:00
# hack to build the data on install, see
# http://public.kitware.com/Bug/view.php?id=8438
add_custom_target ( data )
2015-12-30 12:07:36 +00:00
set_property ( TARGET data PROPERTY FOLDER "Setup" )
2012-05-03 19:47:14 +00:00
install (
C O D E
" execute_process (
C O M M A N D $ { C M A K E _ C O M M A N D } - - b u i l d $ { C M A K E _ B I N A R Y _ D I R } - - t a r g e t d a t a
2013-03-09 16:45:27 +00:00
) "
)
2012-05-03 19:47:14 +00:00
2014-01-29 12:14:13 +00:00
if ( NOT APPLE )
install (
F I L E S $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c 3 2 . p n g
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 3 2 x 3 2 / a p p s
R E N A M E o p e n c l o n k . p n g
)
install (
F I L E S $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c 6 4 . p n g
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 6 4 x 6 4 / a p p s
R E N A M E o p e n c l o n k . p n g
)
install (
F I L E S $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c 1 2 8 . p n g
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 1 2 8 x 1 2 8 / a p p s
R E N A M E o p e n c l o n k . p n g
)
install (
F I L E S $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c 2 5 6 . p n g
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 2 5 6 x 2 5 6 / a p p s
R E N A M E o p e n c l o n k . p n g
2012-05-03 19:47:14 +00:00
)
2013-03-09 16:45:27 +00:00
install (
2014-01-29 12:14:13 +00:00
F I L E S $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / s r c / r e s / o c 5 1 2 . p n g
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 5 1 2 x 5 1 2 / a p p s
R E N A M E o p e n c l o n k . p n g
2012-05-03 19:47:14 +00:00
)
2013-03-09 16:45:27 +00:00
endif ( )
2010-08-03 15:59:36 +00:00
2015-12-25 00:57:12 +00:00
# Export native tools for later use in cross-compile builds
IF ( NOT CMAKE_CROSSCOMPILING )
EXPORT ( TARGETS c4group FILE ${ CMAKE_BINARY_DIR } /NativeToolsExport.cmake NAMESPACE native- )
ENDIF ( )
# When cross-compiling, import c4group from a native build
IF ( CMAKE_CROSSCOMPILING )
SET ( IMPORT_NATIVE_TOOLS "IMPORT_NATIVE_TOOLS-NOTFOUND" CACHE FILEPATH "Export file from a native build" )
INCLUDE ( ${ IMPORT_NATIVE_TOOLS } )
SET ( native_c4group native-c4group )
ELSE ( )
SET ( native_c4group c4group )
ENDIF ( )
2014-02-07 14:52:13 +00:00
# NOTE: The scripts that does the autobuilds and ultimately the automated
# releases as well do keep their own list of group files around currently.
# So if you change anything here, change it in the release scripts as well.
# See openclonk-release-scripts.git/groupcontent.py
2011-10-11 16:59:58 +00:00
set ( OC_C4GROUPS
G r a p h i c s . o c g
M a t e r i a l . o c g
S o u n d . o c g
S y s t e m . o c g
O b j e c t s . o c d
2014-05-12 07:26:24 +00:00
D e c o r a t i o n . o c d
2012-10-10 19:28:25 +00:00
A r e n a . o c f
P a r k o u r . o c f
2015-12-12 17:04:42 +00:00
D e f e n s e . o c f
2013-10-05 15:39:14 +00:00
M i s s i o n s . o c f
2015-09-13 13:32:35 +00:00
T u t o r i a l s . o c f
2013-10-05 09:58:43 +00:00
W o r l d s . o c f
2011-10-11 16:59:58 +00:00
)
2017-12-12 09:18:15 +00:00
if ( APPLE )
list ( APPEND OC_C4GROUPS Music.ocg )
endif ( )
2011-10-11 16:59:58 +00:00
2011-09-20 17:43:22 +00:00
foreach ( group ${ OC_C4GROUPS } )
2011-10-09 16:09:48 +00:00
if ( APPLE )
2014-01-27 07:08:27 +00:00
if ( CMAKE_GENERATOR STREQUAL Xcode )
add_custom_command ( TARGET openclonk
2015-01-23 18:22:04 +00:00
P O S T _ B U I L D C O M M A N D " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / o s x _ p a c k _ g a m e d a t a . s h "
2015-01-23 17:25:02 +00:00
" $ < T A R G E T _ F I L E : $ { n a t i v e _ c 4 g r o u p } > "
2014-01-27 07:08:27 +00:00
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / p l a n e t / $ { g r o u p } "
# leave out third parameter here so the script can figure out Xcode-ish paths as usual
2015-01-23 17:25:02 +00:00
D E P E N D S " $ { n a t i v e _ c 4 g r o u p } "
2011-10-09 16:09:48 +00:00
)
2014-01-27 07:08:27 +00:00
else ( )
add_custom_command ( TARGET openclonk
2015-01-23 18:22:04 +00:00
P O S T _ B U I L D C O M M A N D " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / o s x _ p a c k _ g a m e d a t a . s h "
2015-01-23 17:25:02 +00:00
" $ < T A R G E T _ F I L E : $ { n a t i v e _ c 4 g r o u p } > "
2014-01-27 07:08:27 +00:00
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / p l a n e t / $ { g r o u p } "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / o p e n c l o n k . a p p / C o n t e n t s / R e s o u r c e s "
2015-01-23 17:25:02 +00:00
D E P E N D S " $ { n a t i v e _ c 4 g r o u p } "
2011-10-09 16:09:48 +00:00
)
2014-01-27 07:08:27 +00:00
endif ( )
2011-10-09 16:09:48 +00:00
else ( )
2012-05-03 19:47:14 +00:00
add_custom_command (
O U T P U T $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { g r o u p }
2015-01-23 17:25:02 +00:00
C O M M A N D " $ { n a t i v e _ c 4 g r o u p } " A R G S " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / p l a n e t / $ { g r o u p } " - t " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { g r o u p } "
2012-05-03 19:47:14 +00:00
M A I N _ D E P E N D E N C Y $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / p l a n e t / $ { g r o u p }
2015-01-23 17:25:02 +00:00
D E P E N D S " $ { n a t i v e _ c 4 g r o u p } "
2012-05-03 19:47:14 +00:00
V E R B A T I M
2014-01-27 07:08:27 +00:00
)
2012-10-21 13:03:24 +00:00
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } / ${ group } DESTINATION share/games/openclonk )
2011-10-09 16:09:48 +00:00
endif ( )
2009-07-12 16:46:54 +00:00
endforeach ( )
2014-01-29 12:14:13 +00:00
2017-04-01 10:14:11 +00:00
if ( NOT APPLE )
2017-12-12 09:18:15 +00:00
if ( NOT HEADLESS_ONLY )
install ( DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } /planet/Music.ocg DESTINATION share/games/openclonk )
endif ( )
2017-04-01 10:14:11 +00:00
# group files (game data)
add_custom_target ( groups DEPENDS ${ OC_C4GROUPS } )
set_property ( TARGET groups PROPERTY FOLDER "Setup" )
add_dependencies ( data groups )
# Install binaries
install ( TARGETS c4group DESTINATION bin )
endif ( )
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
if ( NOT APPLE )
# Install new files
install ( FILES ${ CMAKE_CURRENT_SOURCE_DIR } /openclonk.desktop DESTINATION share/applications )
# Update the MIME cache -- this makes the clonk:// protocol handler actually work
2017-08-12 14:56:14 +00:00
install ( CODE "message(\" Note: Run update-desktop-database to install clonk:// protocol handler\ ")" )
2016-10-23 15:12:53 +00:00
# Install software center metadata
install ( FILES ${ CMAKE_CURRENT_SOURCE_DIR } /openclonk.appdata.xml DESTINATION share/appdata )
# Install binaries
install ( TARGETS openclonk DESTINATION games )
else ( )
install ( TARGETS openclonk
B U N D L E D E S T I N A T I O N .
)
install ( TARGETS c4group c4script
R U N T I M E D E S T I N A T I O N .
)
endif ( )
2014-01-29 12:14:13 +00:00
endif ( )
2011-10-12 18:59:28 +00:00
############################################################################
# setup_openclonk.exe
############################################################################
2011-09-21 20:25:33 +00:00
find_program ( MAKENSIS makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS] )
2016-10-23 15:12:53 +00:00
if ( NOT HEADLESS_ONLY )
add_custom_command (
O U T P U T s e t u p _ o p e n c l o n k . e x e
C O M M A N D $ { M A K E N S I S } - N O C D - D S R C D I R = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } - D P R O G R A M F I L E S = $ P R O G R A M F I L E S " - D P R O D U C T _ N A M E = $ { C 4 E N G I N E N A M E } " " - D P R O D U C T _ C O M P A N Y = $ { C 4 P R O J E C T } " " - D C L O N K = $ < T A R G E T _ F I L E _ D I R : o p e n c l o n k > \ \ $ < T A R G E T _ F I L E _ N A M E : o p e n c l o n k > " " - D C 4 G R O U P = $ < T A R G E T _ F I L E _ D I R : c 4 g r o u p > \ \ $ < T A R G E T _ F I L E _ N A M E : c 4 g r o u p > " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / i n s t a l l / o c . n s i " - X O u t F i l e s e t u p _ o p e n c l o n k . e x e "
M A I N _ D E P E N D E N C Y
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / i n s t a l l / o c . n s i
D E P E N D S
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / i n s t a l l / h e a d e r . b m p
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / i n s t a l l / i n s t . i c o
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / t o o l s / i n s t a l l / u n i n s t . i c o
$ { O C _ C 4 G R O U P S } o p e n c l o n k c 4 g r o u p
V E R B A T I M
)
2011-09-20 17:43:22 +00:00
2016-10-23 15:12:53 +00:00
add_custom_target ( setup
D E P E N D S s e t u p _ o p e n c l o n k . e x e g r o u p s
)
set_property ( TARGET setup PROPERTY FOLDER "Setup" )
endif ( )
2011-09-20 17:43:22 +00:00
2010-08-03 15:59:36 +00:00
############################################################################
# CPack support
############################################################################
2010-12-30 00:21:07 +00:00
set ( CPACK_PACKAGE_NAME "openclonk" )
2010-08-03 15:59:36 +00:00
set ( CPACK_PACKAGE_VENDOR "${C4PROJECT_URL}" )
2010-12-30 00:21:07 +00:00
set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenClonk - A game mix out of tactic, strategy and Jump & Run" )
2014-12-12 20:57:52 +00:00
set ( CPACK_PACKAGE_VERSION "${C4XVER1}.${C4XVER2}" )
2010-08-03 15:59:36 +00:00
set ( CPACK_PACKAGE_VERSION_MAJOR "${C4XVER1}" )
set ( CPACK_PACKAGE_VERSION_MINOR "${C4XVER2}" )
2014-12-12 20:57:52 +00:00
set ( CPACK_PACKAGE_FILE_NAME "openclonk-${C4XVER1}.${C4XVER2}" )
set ( CPACK_SOURCE_PACKAGE_FILE_NAME "openclonk-src-${C4XVER1}.${C4XVER2}" )
2010-08-03 15:59:36 +00:00
set ( CPACK_SOURCE_GENERATOR "TGZ;ZIP" )
2010-12-30 00:21:07 +00:00
include ( CPack )