Home | History | Annotate | Download | only in modules
      1 # - Check if the prototype for a function exists.
      2 # CHECK_PROTOTYPE_EXISTS (FUNCTION HEADER VARIABLE)
      3 #
      4 #  FUNCTION - the name of the function you are looking for
      5 #  HEADER - the header(s) where the prototype should be declared
      6 #  VARIABLE - variable to store the result
      7 #
      8 # The following variables may be set before calling this macro to
      9 # modify the way the check is run:
     10 #
     11 #  CMAKE_REQUIRED_FLAGS = string of compile command line flags
     12 #  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
     13 #  CMAKE_REQUIRED_INCLUDES = list of include directories
     14 
     15 INCLUDE(CheckCXXSourceCompiles)
     16 
     17 MACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT)
     18    SET(_INCLUDE_FILES)
     19    FOREACH (it ${_HEADER})
     20       SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
     21    ENDFOREACH (it)
     22 
     23    SET(_CHECK_PROTO_EXISTS_SOURCE_CODE "
     24 ${_INCLUDE_FILES}
     25 int main()
     26 {
     27 #ifndef ${_SYMBOL}
     28    int i = sizeof(&${_SYMBOL});
     29 #endif
     30   return 0;
     31 }
     32 ")
     33    CHECK_CXX_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT})
     34 ENDMACRO (CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT)
     35 
     36