| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- cmake_policy(SET CMP0075 NEW)
- enable_language(C)
- enable_language(CXX)
- function(test_check_result isSucceed functionName)
- if(isSucceed AND NOT IS_NEED_SUCCESS)
- message(SEND_ERROR "${functionName}: check succeeded instead of failure")
- elseif((NOT isSucceed) AND IS_NEED_SUCCESS)
- message(SEND_ERROR "${functionName}: check failed instead of success")
- endif()
- endfunction()
- # Common variables
- set(validCSourceCode "int main() {return 0;}")
- ###
- # Checking checkers
- ###
- # It uses common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
- # include(CheckCCompilerFlag)
- # Also checks common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
- include(CheckCSourceCompiles)
- check_c_source_compiles("${validCSourceCode}" CHECK_C_SOURCE_COMPILES_SUCCEED)
- test_check_result("${CHECK_C_SOURCE_COMPILES_SUCCEED}" check_c_source_compiles)
- # Also checks common internal function `CMAKE_CHECK_SOURCE_RUNS()`
- include(CheckCSourceRuns)
- check_c_source_runs("${validCSourceCode}" CHECK_C_SOURCE_RUNS_SUCCEED)
- test_check_result("${CHECK_C_SOURCE_RUNS_SUCCEED}" check_c_source_runs)
- # Shares code with similar C checkers
- # include(CheckCXXCompilerFlag)
- # include(CheckCXXSourceCompiles)
- # include(CheckCXXSourceRuns)
- # include(CheckCXXSymbolExists)
- # Shares code with similar C checkers
- # include(CheckCompilerFlag)
- # include(CheckSourceCompiles)
- # include(CheckSourceRuns)
- # Shares code with similar C checkers
- # include(CheckFortranCompilerFlag)
- # include(CheckFortranFunctionExists) # No way to test it
- # include(CheckFortranSourceCompiles)
- # include(CheckFortranSourceRuns)
- include(CheckFunctionExists)
- check_function_exists (memcpy CHECK_FUNCTION_EXISTS_SUCCEED)
- test_check_result("${CHECK_FUNCTION_EXISTS_SUCCEED}" check_function_exists)
- include(CheckIncludeFile)
- check_include_file("stddef.h" CHECK_INCLUDE_FILE_SUCCEED)
- test_check_result("${CHECK_INCLUDE_FILE_SUCCEED}" check_include_file)
- include(CheckIncludeFileCXX)
- check_include_file_cxx("stddef.h" CHECK_INCLUDE_FILE_CXX_SUCCEED)
- test_check_result("${CHECK_INCLUDE_FILE_CXX_SUCCEED}" check_include_file_cxx)
- include(CheckIncludeFiles)
- check_include_files("stddef.h;stdlib.h" CHECK_INCLUDE_FILES_SUCCEED)
- test_check_result("${CHECK_INCLUDE_FILES_SUCCEED}" check_include_files)
- include(CheckLibraryExists)
- block(PROPAGATE HAVE_LIBM)
- unset(CMAKE_REQUIRED_LIBRARIES)
- unset(CMAKE_REQUIRED_LINK_DIRECTORIES)
- check_library_exists(m ceil "" HAVE_LIBM)
- endblock()
- if(HAVE_LIBM)
- check_library_exists(m ceil "" CHECK_LIBRARY_EXISTS_SUCCEED)
- test_check_result("${CHECK_LIBRARY_EXISTS_SUCCEED}" check_library_exists)
- endif()
- # Shares code with similar C checkers
- # include(CheckOBJCCompilerFlag)
- # include(CheckOBJCSourceCompiles)
- # include(CheckOBJCSourceRuns)
- # Shares code with similar C checkers
- # include(CheckOBJCXXCompilerFlag)
- # include(CheckOBJCXXSourceCompiles)
- # include(CheckOBJCXXSourceRuns)
- include(CheckPrototypeDefinition)
- block(PROPAGATE CHECK_PROTOTYPE_DEFINITION_WORKS)
- unset(CMAKE_REQUIRED_LIBRARIES)
- unset(CMAKE_REQUIRED_LINK_DIRECTORIES)
- check_prototype_definition(memmove
- "void *memmove(void *dest, const void *src, size_t n)"
- "NULL"
- "string.h"
- CHECK_PROTOTYPE_DEFINITION_SUCCEED)
- endblock()
- if (CHECK_PROTOTYPE_DEFINITION_WORKS)
- check_prototype_definition(memmove
- "void *memmove(void *dest, const void *src, size_t n)"
- "NULL"
- "string.h"
- CHECK_PROTOTYPE_DEFINITION_SUCCEED)
- test_check_result("${CHECK_PROTOTYPE_DEFINITION_SUCCEED}" check_prototype_definition)
- endif()
- # It uses common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
- # include(CheckStructHasMember)
- include(CheckSymbolExists)
- check_symbol_exists(errno "errno.h" CHECK_SYMBOL_EXISTS_SUCCEED)
- test_check_result("${CHECK_SYMBOL_EXISTS_SUCCEED}" check_symbol_exists)
- include(CheckTypeSize)
- check_type_size(int SIZEOF_INT)
- test_check_result("${HAVE_SIZEOF_INT}" check_type_size)
- include(CheckVariableExists)
- check_variable_exists(myTestVar CHECK_VARIABLE_EXISTS_SUCCEED)
- test_check_result("${CHECK_VARIABLE_EXISTS_SUCCEED}" check_variable_exists)
|