| |
| enable_language(C) |
| |
| cmake_policy(SET CMP0054 NEW) |
| |
| set (lib_name "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}lib${CMAKE_STATIC_LIBRARY_SUFFIX}") |
| if (CMAKE_SYSTEM_NAME STREQUAL "Windows") |
| if (RunCMake_C_COMPILER_ID STREQUAL "MSVC") |
| if (CMAKE_SIZEOF_VOID_P EQUAL 4) |
| set (undef_flag /INCLUDE:_func) |
| else() |
| set (undef_flag /INCLUDE:func) |
| endif() |
| else() |
| if (CMAKE_SIZEOF_VOID_P EQUAL 4) |
| set (undef_flag -u _func) |
| else() |
| set (undef_flag -u func) |
| endif() |
| endif() |
| elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") |
| set (undef_flag -u _func) |
| else() |
| set (undef_flag -u func) |
| endif() |
| |
| set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) |
| try_compile(result ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib.c |
| COPY_FILE "${lib_name}") |
| |
| set(CMAKE_TRY_COMPILE_TARGET_TYPE EXECUTABLE) |
| try_compile(result ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/main.c |
| OUTPUT_VARIABLE out |
| LINK_OPTIONS ${undef_flag} "${lib_name}") |
| |
| if(NOT result) |
| message(FATAL_ERROR "try_compile(... LINK_OPTIONS ...) failed:\n${out}") |
| endif() |