45 lines
1.4 KiB
CMake
45 lines
1.4 KiB
CMake
function(check_builtin_exist SYMBOL VARIABLE)
|
|
set(
|
|
SOURCE_FILE
|
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckBuiltinExists.c"
|
|
)
|
|
set(
|
|
CMAKE_CONFIGURABLE_FILE_CONTENT
|
|
"int main(int argc, char** argv) { (void)argv; return ${SYMBOL}(argc); }\n"
|
|
)
|
|
configure_file(
|
|
"${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
|
|
"${SOURCE_FILE}"
|
|
@ONLY
|
|
)
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
message(STATUS "Looking for ${SYMBOL}")
|
|
endif()
|
|
try_compile(${VARIABLE}
|
|
${CMAKE_BINARY_DIR}
|
|
${SOURCE_FILE}
|
|
OUTPUT_VARIABLE OUTPUT
|
|
)
|
|
if(${VARIABLE})
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
message(STATUS "Looking for ${SYMBOL} - found")
|
|
endif()
|
|
set(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}" PARENT_SCOPE)
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
|
"Determining if the ${SYMBOL} "
|
|
"exist passed with the following output:\n"
|
|
"${OUTPUT}\nFile ${SOURCEFILE}:\n"
|
|
"${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
|
|
else()
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
message(STATUS "Looking for ${SYMBOL} - not found")
|
|
endif()
|
|
set(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}" PARENT_SCOPE)
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
|
"Determining if the ${SYMBOL} "
|
|
"exist failed with the following output:\n"
|
|
"${OUTPUT}\nFile ${SOURCEFILE}:\n"
|
|
"${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
|
|
endif()
|
|
endfunction()
|