12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # Check if the system has the specified function; treat glibc "stub"
- # functions as nonexistent:
- # CHECK_FUNCTION_EXISTS_GLIBC (FUNCTION FUNCVAR)
- #
- # FUNCTION - the function(s) where the prototype should be declared
- # FUNCVAR - variable to define if the function does exist
- #
- # In particular, this understands the glibc convention of
- # defining macros __stub_XXXX or __stub___XXXX if the function
- # does appear in the library but is merely a stub that does nothing.
- # By detecting this case, we can select alternate behavior on
- # platforms that don't support this functionality.
- #
- # The following variables may be set before calling this macro to
- # modify the way the check is run:
- #
- # CMAKE_REQUIRED_FLAGS = string of compile command line flags
- # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
- # CMAKE_REQUIRED_INCLUDES = list of include directories
- # Copyright (c) 2009, Michihiro NAKAJIMA
- #
- # Redistribution and use is allowed according to the terms of the BSD license.
- # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
- INCLUDE(CheckFunctionExists)
- GET_FILENAME_COMPONENT(_selfdir_CheckFunctionExistsGlibc
- "${CMAKE_CURRENT_LIST_FILE}" PATH)
- MACRO (CHECK_FUNCTION_EXISTS_GLIBC _FUNC _FUNCVAR)
- IF(NOT DEFINED ${_FUNCVAR})
- SET(CHECK_STUB_FUNC_1 "__stub_${_FUNC}")
- SET(CHECK_STUB_FUNC_2 "__stub___${_FUNC}")
- CONFIGURE_FILE( ${_selfdir_CheckFunctionExistsGlibc}/CheckFuncs_stub.c.in
- ${CMAKE_CURRENT_BINARY_DIR}/cmake.tmp/CheckFuncs_stub.c)
- TRY_COMPILE(__stub
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/cmake.tmp/CheckFuncs_stub.c
- COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
- CMAKE_FLAGS
- -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
- "${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}")
- IF (__stub)
- SET("${_FUNCVAR}" "" CACHE INTERNAL "Have function ${_FUNC}")
- ELSE (__stub)
- CHECK_FUNCTION_EXISTS("${_FUNC}" "${_FUNCVAR}")
- ENDIF (__stub)
- ENDIF(NOT DEFINED ${_FUNCVAR})
- ENDMACRO (CHECK_FUNCTION_EXISTS_GLIBC)
|