diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 71 |
1 files changed, 32 insertions, 39 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8640832..674c627 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,14 +20,14 @@ 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}") + 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}") @@ -47,10 +47,27 @@ if(NOT CMAKE_BUILD_TYPE) endif() # Global compile flags -# These are specific to GCC/MinGW; for other compilers, change as necessary -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") +# These are specific to GCC/MinGW/clang; for other compilers, change as necessary +# The flags are used throughout src/ subdir +set(COLOBOT_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wold-style-cast -std=c++11") +set(COLOBOT_CXX_FLAGS_RELEASE "-O2") +set(COLOBOT_CXX_FLAGS_DEBUG "-g -O0") + +# Compiler detection +if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") + execute_process( + COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (NOT (GCC_VERSION VERSION_GREATER 4.6 OR GCC_VERSION VERSION_EQUAL 4.6)) + message(FATAL_ERROR "${PROJECT_NAME} requires GCC 4.6 or greater.") + else() + message(STATUS "Detected GCC version 4.6+") + endif() +elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + message(STATUS "Detected Clang compiler") +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() # Asserts can be enabled/disabled regardless of build type option(ASSERTS "Enable assert()s" ON) @@ -67,6 +84,7 @@ option(INSTALL_DOCS "Install Doxygen-generated documentation" OFF) # Build openal sound support option(OPENAL_SOUND "Build openal sound support" OFF) + ## # Required packages ## @@ -85,17 +103,11 @@ set(Boost_USE_STATIC_RUNTIME OFF) set(Boost_ADDITIONALVERSION "1.51" "1.51.0") find_package(Boost COMPONENTS system filesystem regex REQUIRED) -# GLEW requirement depends on platform -# By default it is auto detected -# This setting may be used to override -# Possible values: -# - auto -> determine automatically -# - 1 -> always enable -# - 0 -> always disable -set(USE_GLEW auto) # This is useful on Windows, if linking against standard GLEW dll fails option(GLEW_STATIC "Link statically with GLEW" OFF) +find_package(GLEW REQUIRED) + ## # Additional settings to use when cross-compiling with MXE (http://mxe.cc/) @@ -113,38 +125,19 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") set(PLATFORM_WINDOWS 1) set(PLATFORM_LINUX 0) set(PLATFORM_OTHER 0) - - # On Windows, GLEW is required - if (${USE_GLEW} MATCHES "auto") - set(USE_GLEW 1) - endif() elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") message(STATUS "Linux system detected") set(PLATFORM_WINDOWS 0) set(PLATFORM_LINUX 1) set(PLATFORM_OTHER 0) - - # On Linux, we should be fine without GLEW - if (${USE_GLEW} MATCHES "auto") - set(USE_GLEW 0) - endif() else() message(STATUS "Other system detected") set(PLATFORM_WINDOWS 0) set(PLATFORM_LINUX 0) set(PLATFORM_OTHER 1) - - # Use GLEW to be safe - if (${USE_GLEW} MATCHES "auto") - set(USE_GLEW 1) - endif() endif() -if(${USE_GLEW}) - find_package(GLEW REQUIRED) -endif() - if(NOT ${ASSERTS}) add_definitions(-DNDEBUG) endif() |