You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.0 KiB
64 lines
2.0 KiB
|
|
# Copyright (C) 2013-2015 Daniel Scharrer |
|
# |
|
# This software is provided 'as-is', without any express or implied |
|
# warranty. In no event will the author(s) be held liable for any damages |
|
# arising from the use of this software. |
|
# |
|
# Permission is granted to anyone to use this software for any purpose, |
|
# including commercial applications, and to alter it and redistribute it |
|
# freely, subject to the following restrictions: |
|
# |
|
# 1. The origin of this software must not be misrepresented; you must not |
|
# claim that you wrote the original software. If you use this software |
|
# in a product, an acknowledgment in the product documentation would be |
|
# appreciated but is not required. |
|
# 2. Altered source versions must be plainly marked as such, and must not be |
|
# misrepresented as being the original software. |
|
# 3. This notice may not be removed or altered from any source distribution. |
|
|
|
include(CheckCXXSourceCompiles) |
|
include(CompileCheck) |
|
|
|
set(_HAS_CXX11 0) |
|
get_filename_component(CXX11_CHECK_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) |
|
|
|
function(enable_cxx11) |
|
if(MSVC) |
|
if(NOT MSVC_VERSION LESS 1600) |
|
set(_HAS_CXX11 1 PARENT_SCOPE) |
|
endif() |
|
else() |
|
add_cxxflag("-std=c++11") |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE) |
|
if(FLAG_FOUND OR NOT CMAKE_COMPILER_IS_GNUCXX) |
|
if(SET_WARNING_FLAGS) |
|
add_cxxflag("-pedantic") |
|
endif() |
|
set(_HAS_CXX11 1 PARENT_SCOPE) |
|
endif() |
|
endif() |
|
endfunction(enable_cxx11) |
|
|
|
function(check_cxx11 CHECK RESULTVAR) |
|
if(${_HAS_CXX11}) |
|
if(MSVC AND ARGC GREATER 2) |
|
if(MSVC_VERSION LESS ARGV2) |
|
set(result) |
|
else() |
|
set(result 1) |
|
endif() |
|
else() |
|
string(REGEX REPLACE "[^a-zA-Z0-9_][^a-zA-Z0-9_]*" "-" check "${CHECK}") |
|
set(file "${CXX11_CHECK_DIR}/check-cxx11-${check}.cpp") |
|
check_compile(result "${file}" "${CHECK}" "C++11 feature") |
|
endif() |
|
if("${result}" STREQUAL "") |
|
set(${RESULTVAR} OFF PARENT_SCOPE) |
|
else() |
|
set(${RESULTVAR} ON PARENT_SCOPE) |
|
endif() |
|
else() |
|
set(${RESULTVAR} OFF PARENT_SCOPE) |
|
endif() |
|
endfunction()
|
|
|