| enable_language(C) | |
| enable_language(CXX) | |
| # Warning options after the first entry are ignored for compatibility. | |
| set(CMAKE_REQUIRED_FLAGS | |
| "-DCHECK_REQUIRED_FLAGS -Drequired_flag_function=memcpy -Drequired_flag_library=memcpy -Drequired_flag_type=int" | |
| "-Wseen-by-cmake") | |
| set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_LIST_DIR}") | |
| include(CheckFunctionExists) | |
| include(CheckIncludeFile) | |
| include(CheckIncludeFileCXX) | |
| include(CheckIncludeFiles) | |
| include(CheckLibraryExists) | |
| include(CheckPrototypeDefinition) | |
| include(CheckTypeSize) | |
| function(run_tests) | |
| if(${ARGC} GREATER 1) | |
| set(${ARGN}) | |
| endif() | |
| check_function_exists(required_flag_function CHECK_FUNCTION_EXISTS_RESULT) | |
| check_include_file(CheckRequiredFlags.h CHECK_INCLUDE_FILE_RESULT) | |
| check_include_file_cxx(CheckRequiredFlags.h CHECK_INCLUDE_FILE_CXX_RESULT) | |
| check_include_files("stddef.h;CheckRequiredFlags.h" CHECK_INCLUDE_FILES_RESULT) | |
| check_library_exists("" required_flag_library "" CHECK_LIBRARY_EXISTS_RESULT) | |
| check_prototype_definition( | |
| required_flag_prototype | |
| "int required_flag_prototype(int value)" | |
| "value" | |
| "CheckRequiredFlags.h" | |
| CHECK_PROTOTYPE_DEFINITION_RESULT | |
| ) | |
| check_type_size(required_flag_type CHECK_TYPE_SIZE_RESULT) | |
| foreach(result IN ITEMS | |
| CHECK_FUNCTION_EXISTS_RESULT | |
| CHECK_INCLUDE_FILE_RESULT | |
| CHECK_INCLUDE_FILE_CXX_RESULT | |
| CHECK_INCLUDE_FILES_RESULT | |
| CHECK_LIBRARY_EXISTS_RESULT | |
| CHECK_PROTOTYPE_DEFINITION_RESULT | |
| CHECK_TYPE_SIZE_RESULT | |
| ) | |
| if(NOT ${result}) | |
| message(SEND_ERROR "${result} did not honor CMAKE_REQUIRED_FLAGS") | |
| endif() | |
| unset(CACHE{${result}}) | |
| endforeach() | |
| unset(CACHE{HAVE_CHECK_TYPE_SIZE_RESULT}) | |
| endfunction() | |
| run_tests() | |
| run_tests(CMAKE_REQUIRED_LINK_OPTIONS REQUIRED-NOTFOUND) | |
| run_tests(CMAKE_REQUIRED_LIBRARIES REQUIRED-NOTFOUND) |