CMake
- Fixed the C++11 config to actually check for availability of C++11 before trying to use it. - Custom CXX flags no longer ignored on some platforms.
This commit is contained in:
committed by
Paul Beckingham
parent
cc1c063925
commit
0d096a5a42
@@ -15,12 +15,35 @@ set (PROJECT_VERSION "2.4.2")
|
|||||||
OPTION(USE_GNUTLS "Build gnutls support." ON)
|
OPTION(USE_GNUTLS "Build gnutls support." ON)
|
||||||
|
|
||||||
message ("CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")
|
message ("CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
||||||
|
include (CheckCXXCompilerFlag)
|
||||||
|
|
||||||
|
# NOTE: If we are to actually use C++11 features, we should either require
|
||||||
|
# a compiler that supports the -std=c++11 flag or check for the
|
||||||
|
# features used.
|
||||||
|
# Relying on -std=c++0x or even -std=gnu++0x is highly volatile.
|
||||||
|
|
||||||
|
CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11)
|
||||||
|
CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X)
|
||||||
|
CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X)
|
||||||
|
|
||||||
|
if (_HAS_CXX11)
|
||||||
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
|
elseif (_HAS_CXX0X)
|
||||||
|
message (WARNING "Enabling -std=c++0x draft compile flag. Please try using an up to date compiler if you run into any problems!")
|
||||||
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||||
|
elseif (_HAS_GNU0X)
|
||||||
|
message (WARNING "Enabling -std=gnu++0x draft compile flag. You're probably in for a bad time, please try using an up to date compiler!")
|
||||||
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
|
||||||
|
else (_HAS_CXX11)
|
||||||
|
message (FATAL_ERROR "C++11 support missing. Try upgrading your C++ compiler! If you have a good reason for using an outdated compiler, please let us know at support@taskwarrior.org!")
|
||||||
|
endif (_HAS_CXX11)
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
set (LINUX true)
|
set (LINUX true)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
set (DARWIN true)
|
set (DARWIN true)
|
||||||
set (CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
|
set (CMAKE_CXX_FLAGS "-stdlib=libc++")
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
|
||||||
set (KFREEBSD true)
|
set (KFREEBSD true)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||||
@@ -35,7 +58,6 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
|
|||||||
set (GNUHURD true)
|
set (GNUHURD true)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
|
||||||
set (CYGWIN true)
|
set (CYGWIN true)
|
||||||
set (CMAKE_CXX_FLAGS "-std=gnu++0x")
|
|
||||||
else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
set (UNKNOWN true)
|
set (UNKNOWN true)
|
||||||
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
|||||||
Reference in New Issue
Block a user