diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-01-04 00:05:28 +0100 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-01-04 00:05:28 +0100 |
commit | 89a3f586a224328b430ba2483ce5c12b33709c6a (patch) | |
tree | 691e1da1e297f7ea9045be5454747ca454680cb2 /CMakeLists.txt | |
parent | c9335534d6bc7a59dbabf6976d41fd1e5edc8ab3 (diff) | |
parent | 1d42c71645548ae86b438c84898a07b539f262ac (diff) | |
download | colobot-89a3f586a224328b430ba2483ce5c12b33709c6a.tar.gz colobot-89a3f586a224328b430ba2483ce5c12b33709c6a.tar.bz2 colobot-89a3f586a224328b430ba2483ce5c12b33709c6a.zip |
Merge branch 'dev' into dev-graphics
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 110 |
1 files changed, 103 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7090d2d..399ae96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,32 @@ cmake_minimum_required(VERSION 2.8) project(colobot C CXX) +## +# Project version +## +set(COLOBOT_VERSION_CODENAME "Gold") +set(COLOBOT_VERSION_MAJOR 0) +set(COLOBOT_VERSION_MINOR 1) +set(COLOBOT_VERSION_REVISION 0) + +# Comment out when releasing +set(COLOBOT_VERSION_UNRELEASED "~pre-alpha") + +# Append git characteristics to version +if(DEFINED COLOBOT_VERSION_UNRELEASED AND EXISTS "${CMAKE_SOURCE_DIR}/.git") + find_package(Git) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + OUTPUT_VARIABLE GIT_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(COLOBOT_VERSION_UNRELEASED "${COLOBOT_VERSION_UNRELEASED}-git-${GIT_BRANCH}~r${GIT_REVISION}") +endif() + +set(COLOBOT_VERSION_FULL "${COLOBOT_VERSION_MAJOR}.${COLOBOT_VERSION_MINOR}.${COLOBOT_VERSION_REVISION}${COLOBOT_VERSION_UNRELEASED}") +message(STATUS "Building Colobot \"${COLOBOT_VERSION_CODENAME}\" (${COLOBOT_VERSION_FULL})") + # Include cmake directory with some additional scripts set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake") @@ -16,12 +42,15 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake") ## # Global build type -set(CMAKE_BUILD_TYPE debug) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE debug) +endif() # Global compile flags # These are specific to GCC/MinGW; for other compilers, change as necessary -set(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -Wold-style-cast -std=gnu++0x") -set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wold-style-cast -std=gnu++0x") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wold-style-cast -std=gnu++0x") +set(CMAKE_CXX_FLAGS_RELEASE "-O2") +set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") # Asserts can be enabled/disabled regardless of build type option(ASSERTS "Enable assert()s" ON) @@ -32,6 +61,11 @@ option(TESTS "Enable tests" ON) # CBot can also be a static library option(CBOT_STATIC "Build CBot as static libary" OFF) +# Doxygen docs are optional for installation +option(INSTALL_DOCS "Install Doxygen-generated documentation" OFF) + +# Build openal sound support +option(OPENAL_SOUND "Build openal sound support" OFF) ## # Required packages @@ -42,6 +76,7 @@ find_package(SDL 1.2.10 REQUIRED) find_package(SDL_image 1.2 REQUIRED) find_package(SDL_ttf 2.0 REQUIRED) find_package(PNG 1.2 REQUIRED) +find_package(Gettext REQUIRED) set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) @@ -118,7 +153,22 @@ if(${TESTS}) add_definitions(-DTEST_VIRTUAL=virtual) enable_testing() else() - add_definitions(-DTEST_VIRTUAL) + add_definitions(-DTEST_VIRTUAL=) +endif() + + +## +# 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() @@ -128,11 +178,57 @@ endif() if(${TESTS}) # Google Test library - set(GTEST_DIR "${colobot_SOURCE_DIR}/lib/gtest") - add_subdirectory(lib/gtest bin/test) + 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(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} bin/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(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} bin/gmock) + endif() + endif() +# Installation paths defined before compiling sources +set(COLOBOT_INSTALL_BIN_DIR games CACHE PATH "Colobot binary directory") +set(COLOBOT_INSTALL_DATA_DIR share/games/colobot CACHE PATH "Colobot shared data directory") +set(COLOBOT_INSTALL_LIB_DIR lib/colobot CACHE PATH "Colobot libraries directory") +set(COLOBOT_INSTALL_DOC_DIR share/doc/colobot CACHE PATH "Colobot documentation directory") +set(COLOBOT_INSTALL_I18N_DIR share/locale CACHE PATH "Colobot translations directory") + # Subdirectory with sources add_subdirectory(src bin) -INSTALL_FILES(/share/games/colobot ../data) + +## +# Installation +## + +file(GLOB DATA_FILES "data/*") + +# Data +install(DIRECTORY data/ DESTINATION ${COLOBOT_INSTALL_DATA_DIR}) + +# 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() |