2012-09-29 15:19:23 +00:00
|
|
|
##
|
|
|
|
# Main CMake project file
|
|
|
|
# Contains global options and definitions
|
|
|
|
##
|
2012-04-14 23:02:51 +00:00
|
|
|
|
|
|
|
cmake_minimum_required(VERSION 2.8)
|
|
|
|
|
2012-06-25 17:59:17 +00:00
|
|
|
project(colobot C CXX)
|
2012-04-14 23:02:51 +00:00
|
|
|
|
2012-12-27 16:10:45 +00:00
|
|
|
##
|
|
|
|
# Project version
|
|
|
|
##
|
|
|
|
set(COLOBOT_VERSION_CODENAME "Gold")
|
|
|
|
set(COLOBOT_VERSION_MAJOR 0)
|
|
|
|
set(COLOBOT_VERSION_MINOR 1)
|
2014-11-02 12:36:48 +00:00
|
|
|
set(COLOBOT_VERSION_REVISION 4)
|
2012-12-27 16:10:45 +00:00
|
|
|
|
2013-06-24 19:31:01 +00:00
|
|
|
# Used on official releases
|
2014-11-02 12:36:48 +00:00
|
|
|
set(COLOBOT_VERSION_RELEASE_CODENAME "-alpha")
|
2013-06-24 19:31:01 +00:00
|
|
|
# Used on unreleased, development builds
|
2014-11-02 12:36:48 +00:00
|
|
|
#set(COLOBOT_VERSION_UNRELEASED "+alpha")
|
2012-12-27 16:10:45 +00:00
|
|
|
|
|
|
|
# Append git characteristics to version
|
2013-12-27 10:15:36 +00:00
|
|
|
if(DEFINED COLOBOT_VERSION_UNRELEASED)
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
|
|
|
find_package(Git)
|
|
|
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
2014-06-25 20:49:16 +00:00
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
2013-12-27 10:15:36 +00:00
|
|
|
OUTPUT_VARIABLE GIT_BRANCH
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
2014-06-25 20:49:16 +00:00
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
2013-12-27 10:15:36 +00:00
|
|
|
OUTPUT_VARIABLE GIT_REVISION
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
set(COLOBOT_VERSION_UNRELEASED "${COLOBOT_VERSION_UNRELEASED}-git-${GIT_BRANCH}~r${GIT_REVISION}")
|
|
|
|
set(COLOBOT_VERSION_DISPLAY "git-${GIT_BRANCH}~r${GIT_REVISION}")
|
|
|
|
else()
|
|
|
|
set(COLOBOT_VERSION_DISPLAY "${COLOBOT_VERSION_CODENAME}-${COLOBOT_VERSION_UNRELEASED}")
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
set(COLOBOT_VERSION_DISPLAY "${COLOBOT_VERSION_MAJOR}.${COLOBOT_VERSION_MINOR}.${COLOBOT_VERSION_REVISION}${COLOBOT_VERSION_RELEASE_CODENAME}")
|
2012-12-27 16:10:45 +00:00
|
|
|
endif()
|
|
|
|
|
2013-06-24 19:31:01 +00:00
|
|
|
set(COLOBOT_VERSION_FULL "${COLOBOT_VERSION_MAJOR}.${COLOBOT_VERSION_MINOR}.${COLOBOT_VERSION_REVISION}${COLOBOT_VERSION_UNRELEASED}${COLOBOT_VERSION_RELEASE_CODENAME}")
|
2012-12-27 16:10:45 +00:00
|
|
|
message(STATUS "Building Colobot \"${COLOBOT_VERSION_CODENAME}\" (${COLOBOT_VERSION_FULL})")
|
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
|
2013-10-23 12:22:20 +00:00
|
|
|
##
|
|
|
|
# Platform detection and some related checks
|
|
|
|
##
|
|
|
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Windows")
|
|
|
|
message(STATUS "Build for Windows system")
|
|
|
|
set(PLATFORM_WINDOWS 1)
|
2013-11-27 17:53:28 +00:00
|
|
|
set(PLATFORM_GNU 0)
|
2013-10-23 12:22:20 +00:00
|
|
|
set(PLATFORM_LINUX 0)
|
|
|
|
set(PLATFORM_MACOSX 0)
|
|
|
|
set(PLATFORM_OTHER 0)
|
2013-11-20 09:39:06 +00:00
|
|
|
|
|
|
|
# Platform-dependent implementation of system.h
|
|
|
|
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
2013-10-23 12:22:20 +00:00
|
|
|
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
|
|
|
message(STATUS "Build for Linux system")
|
|
|
|
set(PLATFORM_WINDOWS 0)
|
|
|
|
set(PLATFORM_LINUX 1)
|
2013-11-27 17:53:28 +00:00
|
|
|
set(PLATFORM_GNU 1)
|
2013-10-23 12:22:20 +00:00
|
|
|
set(PLATFORM_MACOSX 0)
|
|
|
|
set(PLATFORM_OTHER 0)
|
2013-11-20 09:39:06 +00:00
|
|
|
|
|
|
|
# Platform-dependent implementation of system.h
|
|
|
|
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
2013-11-27 17:53:28 +00:00
|
|
|
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "kFreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "GNU")
|
|
|
|
message(STATUS "Build for kFreeBSD system")
|
|
|
|
set(PLATFORM_WINDOWS 0)
|
|
|
|
set(PLATFORM_LINUX 0)
|
|
|
|
set(PLATFORM_GNU 1)
|
|
|
|
set(PLATFORM_MACOSX 0)
|
|
|
|
set(PLATFORM_OTHER 0)
|
|
|
|
|
|
|
|
# Platform-dependent implementation of system.h
|
|
|
|
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
2013-10-23 12:22:20 +00:00
|
|
|
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|
|
|
message(STATUS "Build for Mac OSX system")
|
|
|
|
set(PLATFORM_WINDOWS 0)
|
|
|
|
set(PLATFORM_LINUX 0)
|
2013-11-27 17:53:28 +00:00
|
|
|
set(PLATFORM_GNU 0)
|
2013-10-23 12:22:20 +00:00
|
|
|
set(PLATFORM_MACOSX 1)
|
|
|
|
set(PLATFORM_OTHER 0)
|
2013-10-29 13:54:11 +00:00
|
|
|
|
2013-11-20 09:39:06 +00:00
|
|
|
# Platform-dependent implementation of system.h
|
|
|
|
set(SYSTEM_CPP_MODULE "system_macosx.cpp")
|
|
|
|
|
2013-10-29 13:54:11 +00:00
|
|
|
set(USE_SDL_MAIN 1) # fixes SDL_main
|
2013-10-23 12:22:20 +00:00
|
|
|
else()
|
|
|
|
message(STATUS "Build for other system")
|
|
|
|
set(PLATFORM_WINDOWS 0)
|
|
|
|
set(PLATFORM_LINUX 0)
|
2013-11-27 17:53:28 +00:00
|
|
|
set(PLATFORM_GNU 0)
|
2013-10-23 12:22:20 +00:00
|
|
|
set(PLATFORM_MACOSX 0)
|
|
|
|
set(PLATFORM_OTHER 1)
|
2013-11-20 09:39:06 +00:00
|
|
|
|
|
|
|
# Platform-dependent implementation of system.h
|
|
|
|
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
2013-10-23 12:22:20 +00:00
|
|
|
endif()
|
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
|
|
|
|
##
|
|
|
|
# Build options
|
|
|
|
##
|
|
|
|
|
2013-06-21 23:11:37 +00:00
|
|
|
# Build targets should be placed in the root build directory
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
|
|
|
|
# Include cmake directory with some additional scripts
|
2013-06-24 11:07:33 +00:00
|
|
|
set(CMAKE_MODULE_PATH "${colobot_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
2013-06-21 23:11:37 +00:00
|
|
|
|
2013-01-08 21:12:09 +00:00
|
|
|
# Compiler detection
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
|
2013-01-10 08:48:15 +00:00
|
|
|
if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
|
|
|
|
message(STATUS "Detected GCC version 4.7+")
|
2013-01-16 00:45:38 +00:00
|
|
|
set(CXX11_FLAGS "-std=gnu++11")
|
2013-01-10 08:48:15 +00:00
|
|
|
elseif (GCC_VERSION VERSION_GREATER 4.6 OR GCC_VERSION VERSION_EQUAL 4.6)
|
2013-01-08 21:12:09 +00:00
|
|
|
message(STATUS "Detected GCC version 4.6+")
|
2013-03-25 08:49:42 +00:00
|
|
|
set(CXX11_FLAGS "-std=c++0x -Doverride=")
|
2013-01-10 08:48:15 +00:00
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "${PROJECT_NAME} requires GCC 4.6 or greater.")
|
2013-01-08 21:12:09 +00:00
|
|
|
endif()
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
|
|
|
message(STATUS "Detected Clang compiler")
|
2013-01-10 08:48:15 +00:00
|
|
|
set(CXX11_FLAGS "-std=c++11")
|
2013-01-08 21:12:09 +00:00
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "Your C++ compiler doesn't seem to support C++11.\n"
|
|
|
|
"Supported compilers at this time are GCC 4.6+ and clang.")
|
|
|
|
endif()
|
2012-09-29 15:19:23 +00:00
|
|
|
|
2013-03-27 19:53:28 +00:00
|
|
|
|
2013-01-10 08:48:15 +00:00
|
|
|
# Global compile flags
|
|
|
|
# These are specific to GCC/MinGW/clang; for other compilers, change as necessary
|
2013-02-03 19:03:36 +00:00
|
|
|
# The flags are used throughout src/ and test/ subdirs
|
2013-03-27 19:53:28 +00:00
|
|
|
|
|
|
|
# Special flags for boost
|
|
|
|
set(Boost_FLAGS "-DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS")
|
|
|
|
|
|
|
|
set(COLOBOT_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wold-style-cast ${CXX11_FLAGS} ${Boost_FLAGS}")
|
2013-01-10 08:48:15 +00:00
|
|
|
set(COLOBOT_CXX_FLAGS_RELEASE "-O2")
|
|
|
|
set(COLOBOT_CXX_FLAGS_DEBUG "-g -O0")
|
|
|
|
|
2013-12-20 19:19:21 +00:00
|
|
|
# Flags for gtest
|
|
|
|
set(COLOBOT_GTEST_CXX_FLAGS "-pthread")
|
|
|
|
|
2013-03-22 17:19:53 +00:00
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
# Asserts can be enabled/disabled regardless of build type
|
|
|
|
option(ASSERTS "Enable assert()s" ON)
|
|
|
|
|
2013-06-21 23:11:37 +00:00
|
|
|
# Development build can be enabled/disabled regardless of build type
|
|
|
|
option(DEV_BUILD "Enable development build (enables some debugging tools, local setting paths, etc.)" OFF)
|
|
|
|
|
2014-10-18 18:00:30 +00:00
|
|
|
# Portable build - load all data from current directory
|
|
|
|
option(PORTABLE "Portable build" OFF)
|
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
# Building tests can be enabled/disabled
|
2013-06-21 23:11:37 +00:00
|
|
|
option(TESTS "Build tests" OFF)
|
|
|
|
|
|
|
|
# Building tool programs can be enabled/disabled
|
|
|
|
option(TOOLS "Build tool programs" OFF)
|
2012-09-29 15:19:23 +00:00
|
|
|
|
|
|
|
# CBot can also be a static library
|
|
|
|
option(CBOT_STATIC "Build CBot as static libary" OFF)
|
|
|
|
|
2013-03-22 17:19:53 +00:00
|
|
|
# Generate desktop files, manpage, etc.
|
2013-03-24 21:24:04 +00:00
|
|
|
option(DESKTOP "Generate desktop files, manpages, etc" ON)
|
2013-03-22 17:19:53 +00:00
|
|
|
|
2012-12-19 23:23:12 +00:00
|
|
|
# Doxygen docs are optional for installation
|
|
|
|
option(INSTALL_DOCS "Install Doxygen-generated documentation" OFF)
|
|
|
|
|
2013-06-22 20:32:20 +00:00
|
|
|
# Build OpenAL sound support
|
|
|
|
option(OPENAL_SOUND "Build OpenAL sound support" ON)
|
2012-09-29 15:19:23 +00:00
|
|
|
|
2013-06-16 19:39:21 +00:00
|
|
|
# Change to false in case static boost libraries are not available
|
2013-06-22 20:32:20 +00:00
|
|
|
option(BOOST_STATIC "Link with static boost libraries" OFF)
|
|
|
|
|
|
|
|
# This is useful on Windows, if linking against standard GLEW dll fails
|
|
|
|
option(GLEW_STATIC "Link statically with GLEW" OFF)
|
2013-01-05 22:03:06 +00:00
|
|
|
|
2013-10-24 19:32:18 +00:00
|
|
|
# Sometimes helpful if there are different versions of gmock/gtest installed on system vs bundled
|
|
|
|
option(FORCE_BUNDLED_GTEST "Force the use of bundled gtest" OFF)
|
|
|
|
option(FORCE_BUNDLED_GMOCK "Force the use of bundled gmock" OFF)
|
2013-06-24 11:28:18 +00:00
|
|
|
|
|
|
|
# Default build type if not given is debug
|
|
|
|
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
|
|
|
message(STATUS "Build type not specified - assuming debug")
|
|
|
|
set(CMAKE_BUILD_TYPE debug)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Warn about development build
|
|
|
|
if(DEV_BUILD)
|
|
|
|
message("Building with development extensions")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
##
|
2013-03-22 17:19:53 +00:00
|
|
|
# Searching for packages
|
2012-09-29 15:19:23 +00:00
|
|
|
##
|
|
|
|
|
2012-07-28 21:36:12 +00:00
|
|
|
find_package(OpenGL 1.4 REQUIRED)
|
|
|
|
find_package(SDL 1.2.10 REQUIRED)
|
|
|
|
find_package(SDL_image 1.2 REQUIRED)
|
2012-08-03 21:23:13 +00:00
|
|
|
find_package(SDL_ttf 2.0 REQUIRED)
|
2012-07-28 21:36:12 +00:00
|
|
|
find_package(PNG 1.2 REQUIRED)
|
2012-12-19 23:23:12 +00:00
|
|
|
find_package(Gettext REQUIRED)
|
2014-06-20 21:41:38 +00:00
|
|
|
find_package(PhysFS REQUIRED)
|
2012-06-25 17:59:17 +00:00
|
|
|
|
2013-06-22 20:32:20 +00:00
|
|
|
set(Boost_USE_STATIC_LIBS ${BOOST_STATIC})
|
2013-06-16 19:39:21 +00:00
|
|
|
set(Boost_USE_MULTITHREADED ON)
|
|
|
|
set(Boost_USE_STATIC_RUNTIME OFF)
|
2012-09-20 21:04:37 +00:00
|
|
|
|
|
|
|
set(Boost_ADDITIONALVERSION "1.51" "1.51.0")
|
2012-09-26 22:30:47 +00:00
|
|
|
find_package(Boost COMPONENTS system filesystem regex REQUIRED)
|
2012-09-20 21:04:37 +00:00
|
|
|
|
2013-01-05 22:03:06 +00:00
|
|
|
find_package(GLEW REQUIRED)
|
|
|
|
|
2013-06-24 11:28:18 +00:00
|
|
|
if (OPENAL_SOUND)
|
2013-03-22 17:19:53 +00:00
|
|
|
find_package(OpenAL REQUIRED)
|
2013-10-23 08:02:41 +00:00
|
|
|
include_directories(${OPENAL_INCLUDE_DIR})
|
2013-06-24 11:07:33 +00:00
|
|
|
find_package(LibSndFile REQUIRED)
|
2013-03-22 17:19:53 +00:00
|
|
|
endif()
|
|
|
|
|
2012-04-14 23:02:51 +00:00
|
|
|
|
2013-06-24 11:28:18 +00:00
|
|
|
if(NOT ASSERTS)
|
2012-09-29 15:19:23 +00:00
|
|
|
add_definitions(-DNDEBUG)
|
|
|
|
endif()
|
|
|
|
|
2013-06-24 11:28:18 +00:00
|
|
|
if(TESTS)
|
2013-02-16 21:37:43 +00:00
|
|
|
add_definitions(-DTESTS -DTEST_VIRTUAL=virtual)
|
2012-10-11 21:09:29 +00:00
|
|
|
else()
|
2012-12-29 13:35:14 +00:00
|
|
|
add_definitions(-DTEST_VIRTUAL=)
|
2012-09-29 15:19:23 +00:00
|
|
|
endif()
|
2012-04-14 23:02:51 +00:00
|
|
|
|
2013-06-26 18:40:11 +00:00
|
|
|
if(DEV_BUILD)
|
2013-06-27 17:43:06 +00:00
|
|
|
add_definitions(-DDEV_BUILD)
|
2013-06-26 18:40:11 +00:00
|
|
|
endif()
|
2012-09-08 01:05:12 +00:00
|
|
|
|
2013-03-23 23:03:37 +00:00
|
|
|
##
|
|
|
|
# Additional settings to use when cross-compiling with MXE (http://mxe.cc/)
|
|
|
|
##
|
|
|
|
|
|
|
|
include("${colobot_SOURCE_DIR}/cmake/mxe.cmake")
|
|
|
|
|
|
|
|
##
|
|
|
|
# Additional settings for MSYS
|
|
|
|
##
|
|
|
|
include("${colobot_SOURCE_DIR}/cmake/msys.cmake")
|
|
|
|
|
|
|
|
|
|
|
|
##
|
2013-10-23 12:22:20 +00:00
|
|
|
# Clipboard support needs X11 libraries
|
2013-03-23 23:03:37 +00:00
|
|
|
##
|
2013-11-27 17:53:28 +00:00
|
|
|
if(PLATFORM_GNU OR PLATFORM_MACOSX)
|
2013-10-23 12:22:20 +00:00
|
|
|
find_package(X11 REQUIRED)
|
|
|
|
if(PLATFORM_MACOSX)
|
|
|
|
# Add the includes for X11
|
|
|
|
include_directories("/opt/X11/include")
|
|
|
|
endif()
|
2013-03-23 23:03:37 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2013-04-11 11:37:15 +00:00
|
|
|
##
|
|
|
|
# Clipboard support
|
|
|
|
##
|
2013-06-16 19:39:21 +00:00
|
|
|
set(CLIPBOARD_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/clipboard/include)
|
2013-06-21 23:11:37 +00:00
|
|
|
add_subdirectory(lib/clipboard)
|
2013-04-11 11:37:15 +00:00
|
|
|
|
|
|
|
|
2013-06-24 11:07:33 +00:00
|
|
|
##
|
|
|
|
# Localename
|
|
|
|
##
|
|
|
|
set(LOCALENAME_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/localename)
|
|
|
|
add_subdirectory(lib/localename)
|
|
|
|
|
|
|
|
|
2012-12-19 23:23:12 +00:00
|
|
|
##
|
|
|
|
# Doxygen docs
|
|
|
|
##
|
|
|
|
|
|
|
|
find_package(Doxygen)
|
|
|
|
|
|
|
|
if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
|
|
|
add_custom_target(doc
|
|
|
|
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
COMMENT "Generating API documentation with Doxygen" VERBATIM)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2012-09-29 15:19:23 +00:00
|
|
|
##
|
|
|
|
# Targets
|
|
|
|
##
|
2012-09-08 01:05:12 +00:00
|
|
|
|
2012-12-19 23:23:12 +00:00
|
|
|
# Installation paths defined before compiling sources
|
2013-06-24 11:28:18 +00:00
|
|
|
if(PLATFORM_WINDOWS)
|
|
|
|
if(MXE)
|
2013-05-03 20:23:36 +00:00
|
|
|
# We need to use STRING because PATH doesn't accept relative paths
|
|
|
|
set(COLOBOT_INSTALL_BIN_DIR ./ CACHE STRING "Colobot binary directory")
|
|
|
|
set(COLOBOT_INSTALL_LIB_DIR ./ CACHE STRING "Colobot libraries directory")
|
|
|
|
set(COLOBOT_INSTALL_DATA_DIR ./data CACHE STRING "Colobot shared data directory")
|
|
|
|
set(COLOBOT_INSTALL_I18N_DIR ./lang CACHE STRING "Colobot translations directory")
|
|
|
|
set(COLOBOT_INSTALL_DOC_DIR ./doc CACHE STRING "Colobot documentation directory")
|
|
|
|
else()
|
|
|
|
set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/ CACHE PATH "Colobot binary directory")
|
|
|
|
set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/ CACHE PATH "Colobot libraries directory")
|
|
|
|
set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/data CACHE PATH "Colobot shared data directory")
|
2013-06-24 11:07:33 +00:00
|
|
|
set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/lang CACHE PATH "Colobot translations directory")
|
2013-05-03 20:23:36 +00:00
|
|
|
set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/doc CACHE PATH "Colobot documentation directory")
|
|
|
|
endif()
|
2013-10-31 10:56:32 +00:00
|
|
|
elseif(PLATFORM_MACOSX)
|
2013-11-08 09:06:06 +00:00
|
|
|
set(COLOBOT_INSTALL_BIN_DIR ../MacOS CACHE STRING "Colobot binary directory")
|
|
|
|
set(COLOBOT_INSTALL_LIB_DIR ../MacOS CACHE STRING "Colobot libraries directory")
|
|
|
|
set(COLOBOT_INSTALL_DATA_DIR . CACHE STRING "Colobot shared data directory")
|
|
|
|
set(COLOBOT_INSTALL_I18N_DIR i18n CACHE SRING "Colobot translations directory")
|
|
|
|
set(COLOBOT_INSTALL_DOC_DIR doc CACHE STRING "Colobot documentation directory")
|
2013-03-22 21:24:35 +00:00
|
|
|
else()
|
|
|
|
set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory")
|
|
|
|
set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/colobot CACHE PATH "Colobot libraries directory")
|
|
|
|
set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/games/colobot CACHE PATH "Colobot shared data directory")
|
|
|
|
set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/share/locale CACHE PATH "Colobot translations directory")
|
|
|
|
set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/colobot CACHE PATH "Colobot documentation directory")
|
|
|
|
endif()
|
2012-12-17 09:11:56 +00:00
|
|
|
|
2012-06-25 17:59:17 +00:00
|
|
|
# Subdirectory with sources
|
2013-06-21 23:11:37 +00:00
|
|
|
add_subdirectory(src)
|
|
|
|
|
|
|
|
add_subdirectory(po)
|
|
|
|
|
2013-06-24 11:28:18 +00:00
|
|
|
if(DESKTOP)
|
2013-10-29 13:30:58 +00:00
|
|
|
add_subdirectory(desktop)
|
2013-06-21 23:11:37 +00:00
|
|
|
endif()
|
2012-10-05 20:07:58 +00:00
|
|
|
|
2014-08-12 18:03:56 +00:00
|
|
|
if(TESTS)
|
|
|
|
# Google Test library
|
|
|
|
find_path(GTEST_SRC_DIR NAMES src/gtest.cc src/gtest-all.cc PATHS /usr/src PATH_SUFFIXES gtest)
|
|
|
|
find_path(GTEST_INCLUDE_DIR gtest/gtest.h PATHS /usr/include)
|
|
|
|
if(NOT(FORCE_BUNDLED_GTEST) AND GTEST_SRC_DIR AND GTEST_INCLUDE_DIR)
|
|
|
|
message(STATUS "Using system gtest library in ${GTEST_SRC_DIR}")
|
|
|
|
else()
|
|
|
|
message(STATUS "Using bundled gtest library")
|
|
|
|
set(GTEST_SRC_DIR ${colobot_SOURCE_DIR}/lib/gtest)
|
|
|
|
set(GTEST_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gtest/include)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_subdirectory(${GTEST_SRC_DIR} lib/gtest)
|
|
|
|
|
|
|
|
# Google Mock library
|
|
|
|
find_path(GMOCK_SRC_DIR NAMES src/gmock.cc src/gmock-all.cc PATHS /usr/src PATH_SUFFIXES gmock)
|
|
|
|
find_path(GMOCK_INCLUDE_DIR gmock/gmock.h PATHS /usr/include)
|
|
|
|
if(NOT(FORCE_BUNDLED_GMOCK) AND GMOCK_SRC_DIR AND GMOCK_INCLUDE_DIR)
|
|
|
|
message(STATUS "Using system gmock library in ${GMOCK_SRC_DIR}")
|
|
|
|
|
|
|
|
include_directories(${GMOCK_SRC_DIR})
|
|
|
|
# gmock-all.cc includes all other sources
|
|
|
|
add_library(gmock STATIC ${GMOCK_SRC_DIR}/src/gmock-all.cc)
|
|
|
|
else()
|
|
|
|
message(STATUS "Using bundled gmock library")
|
|
|
|
set(GMOCK_SRC_DIR ${colobot_SOURCE_DIR}/lib/gmock)
|
|
|
|
set(GMOCK_INCLUDE_DIR ${colobot_SOURCE_DIR}/lib/gmock/include)
|
|
|
|
add_subdirectory(${GMOCK_SRC_DIR} lib/gmock)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# Tests targets
|
|
|
|
enable_testing()
|
|
|
|
add_subdirectory(test)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
2012-12-17 17:38:36 +00:00
|
|
|
|
2012-12-19 23:23:12 +00:00
|
|
|
##
|
|
|
|
# Installation
|
|
|
|
##
|
2012-12-17 17:38:36 +00:00
|
|
|
|
2013-01-02 13:23:17 +00:00
|
|
|
# Data: check if the submodule handles its own installation
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/data/CMakeLists.txt")
|
2013-02-03 19:03:36 +00:00
|
|
|
message(STATUS "Data directory will install itself.")
|
|
|
|
add_subdirectory(data)
|
2013-01-02 13:23:17 +00:00
|
|
|
else()
|
2013-02-03 19:03:36 +00:00
|
|
|
message(WARNING "Data directory is not available; make sure colobot-data is installed in ${COLOBOT_INSTALL_DATA_DIR}.")
|
2013-01-02 13:23:17 +00:00
|
|
|
endif()
|
2012-12-19 23:23:12 +00:00
|
|
|
|
|
|
|
# Documentation
|
|
|
|
if(INSTALL_DOCS AND DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/ DESTINATION ${COLOBOT_INSTALL_DOC_DIR} OPTIONAL)
|
|
|
|
endif()
|