benchmark/cmake/CXXFeatureCheck.cmake

35 lines
948 B
CMake
Raw Normal View History

2014-07-31 22:20:20 +08:00
# - Compile and run code to check for C++ features
#
# This functions compiles a source file under the `cmake` folder
# and adds the corresponding `HAVE_[FILENAME]` flag to the CMake
# environment
#
# cxx_feature_check(<FLAG> [<VARIANT>])
2014-07-31 22:20:20 +08:00
#
# - Example
#
# include(CXXFeatureCheck)
# cxx_feature_check(STD_REGEX)
2014-07-31 22:20:20 +08:00
# Requires CMake 2.6+
if(__cxx_feature_check)
2014-07-31 22:20:20 +08:00
return()
endif()
set(__cxx_feature_check INCLUDED)
2014-07-31 22:20:20 +08:00
function(cxx_feature_check FILE)
string(TOLOWER ${FILE} FILE)
string(TOUPPER ${FILE} VAR)
string(TOUPPER "HAVE_${VAR}" FEATURE)
message("-- Performing Test ${FEATURE}")
try_run(RUN_${FEATURE} COMPILE_${FEATURE} ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp)
if(RUN_${FEATURE} EQUAL 0)
message("-- Performing Test ${FEATURE} -- Success")
set(HAVE_${VAR} 1 PARENT_SCOPE)
add_definitions(-DHAVE_${VAR})
else()
message("-- Performing Test ${FEATURE} -- Failed")
endif()
endfunction()