1message ("-- Configuring C++11") 2message ("-- System: ${CMAKE_SYSTEM_NAME}") 3 4include (CheckCXXCompilerFlag) 5 6# NOTE: Phase out -std=gnu++0x and --std=c++0x as soon as realistically possible. 7CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11) 8CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X) 9CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X) 10 11if (_HAS_CXX11) 12 set (_CXX11_FLAGS "-std=c++11") 13elseif (_HAS_CXX0X) 14 message (WARNING "Enabling -std=c++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") 15 set (_CXX11_FLAGS "-std=c++0x") 16elseif (_HAS_GNU0X) 17 message (WARNING "Enabling -std=gnu++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") 18 set (_CXX11_FLAGS "-std=gnu++0x") 19else (_HAS_CXX11) 20 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@gothenburgbitfactory.org.") 21endif (_HAS_CXX11) 22 23if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") 24 set (LINUX true) 25elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 26 set (DARWIN true) 27 set (_CXX11_FLAGS "${_CXX11_FLAGS} -stdlib=libc++") 28elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD") 29 set (KFREEBSD true) 30elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") 31 set (FREEBSD true) 32elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") 33 set (OPENBSD true) 34elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") 35 set (NETBSD true) 36elseif (${CMAKE_SYSTEM_NAME} MATCHES "DragonFly") 37 set (DRAGONFLY true) 38elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") 39 set (SOLARIS true) 40elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU") 41 set (GNUHURD true) 42elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN") 43 set (CYGWIN true) 44 # NOTE: Not setting -std=gnu++0x leads to compile errors even with 45 # GCC 4.8.3, and debugging those leads to insanity. Adding this 46 # workaround instead of fixing Cygwin. 47 set (_CXX11_FLAGS "-std=gnu++0x") 48else (${CMAKE_SYSTEM_NAME} MATCHES "Linux") 49 set (UNKNOWN true) 50endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") 51 52set (CMAKE_CXX_FLAGS "${_CXX11_FLAGS} ${CMAKE_CXX_FLAGS}") 53set (CMAKE_CXX_FLAGS "-Wall -Wextra -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}") 54