summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2013-01-10 09:48:15 +0100
committerDidier Raboud <odyx@debian.org>2013-01-10 10:13:21 +0100
commit4444fde9d7dc8a4b060e97bac7235aba37de02dd (patch)
tree9f282c7905e96e1048ffeebed78161a08797839e /CMakeLists.txt
parent3c94a6987007b60355dedb9db5c7bdef48b28369 (diff)
downloadcolobot-4444fde9d7dc8a4b060e97bac7235aba37de02dd.tar.gz
colobot-4444fde9d7dc8a4b060e97bac7235aba37de02dd.tar.bz2
colobot-4444fde9d7dc8a4b060e97bac7235aba37de02dd.zip
Use correct C++11/C++0x flags depending on the used compiler
See http://gcc.gnu.org/projects/cxx0x.html for details.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt25
1 files changed, 15 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 674c627..2e309d2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -46,29 +46,34 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE debug)
endif()
-# Global compile flags
-# 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()
+ if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
+ message(STATUS "Detected GCC version 4.7+")
+ set(CXX11_FLAGS "-std=c++11")
+ elseif (GCC_VERSION VERSION_GREATER 4.6 OR GCC_VERSION VERSION_EQUAL 4.6)
message(STATUS "Detected GCC version 4.6+")
+ set(CXX11_FLAGS "-std=c++0x")
+ else()
+ message(FATAL_ERROR "${PROJECT_NAME} requires GCC 4.6 or greater.")
endif()
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
message(STATUS "Detected Clang compiler")
+ set(CXX11_FLAGS "-std=c++11")
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()
+# Global compile flags
+# 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 ${CXX11_FLAGS}")
+set(COLOBOT_CXX_FLAGS_RELEASE "-O2")
+set(COLOBOT_CXX_FLAGS_DEBUG "-g -O0")
+
# Asserts can be enabled/disabled regardless of build type
option(ASSERTS "Enable assert()s" ON)