1 # - Check if the DIR symbol exists like in AC_HEADER_DIRENT.
\r
2 # CHECK_DIRSYMBOL_EXISTS(FILES VARIABLE)
\r
4 # FILES - include files to check
\r
5 # VARIABLE - variable to return result
\r
7 # This module is a small but important variation on CheckSymbolExists.cmake.
\r
8 # The symbol always searched for is DIR, and the test programme follows
\r
9 # the AC_HEADER_DIRENT test programme rather than the CheckSymbolExists.cmake
\r
10 # test programme which always fails since DIR tends to be typedef'd
\r
11 # rather than #define'd.
\r
13 # The following variables may be set before calling this macro to
\r
14 # modify the way the check is run:
\r
16 # CMAKE_REQUIRED_FLAGS = string of compile command line flags
\r
17 # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
\r
18 # CMAKE_REQUIRED_INCLUDES = list of include directories
\r
19 # CMAKE_REQUIRED_LIBRARIES = list of libraries to link
\r
21 MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE)
\r
22 IF(NOT DEFINED ${VARIABLE})
\r
23 SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
\r
24 SET(MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
\r
25 IF(CMAKE_REQUIRED_LIBRARIES)
\r
26 SET(CHECK_DIRSYMBOL_EXISTS_LIBS
\r
27 "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
\r
28 ELSE(CMAKE_REQUIRED_LIBRARIES)
\r
29 SET(CHECK_DIRSYMBOL_EXISTS_LIBS)
\r
30 ENDIF(CMAKE_REQUIRED_LIBRARIES)
\r
31 IF(CMAKE_REQUIRED_INCLUDES)
\r
32 SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES
\r
33 "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
\r
34 ELSE(CMAKE_REQUIRED_INCLUDES)
\r
35 SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES)
\r
36 ENDIF(CMAKE_REQUIRED_INCLUDES)
\r
37 FOREACH(FILE ${FILES})
\r
38 SET(CMAKE_CONFIGURABLE_FILE_CONTENT
\r
39 "${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n")
\r
41 SET(CMAKE_CONFIGURABLE_FILE_CONTENT
\r
42 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\nint main()\n{if ((DIR *) 0) return 0;}\n")
\r
44 CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
\r
45 "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c" @ONLY)
\r
47 MESSAGE(STATUS "Looking for DIR in ${FILES}")
\r
48 TRY_COMPILE(${VARIABLE}
\r
50 ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c
\r
51 COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
\r
53 -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS}
\r
54 "${CHECK_DIRSYMBOL_EXISTS_LIBS}"
\r
55 "${CMAKE_DIRSYMBOL_EXISTS_INCLUDES}"
\r
56 OUTPUT_VARIABLE OUTPUT)
\r
58 MESSAGE(STATUS "Looking for DIR in ${FILES} - found")
\r
59 SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol DIR")
\r
60 FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log
\r
61 "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT "
\r
62 "passed with the following output:\n"
\r
63 "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n"
\r
64 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
\r
66 MESSAGE(STATUS "Looking for DIR in ${FILES} - not found.")
\r
67 SET(${VARIABLE} "" CACHE INTERNAL "Have symbol DIR")
\r
68 FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
\r
69 "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT "
\r
70 "failed with the following output:\n"
\r
71 "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n"
\r
72 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
\r
74 ENDIF(NOT DEFINED ${VARIABLE})
\r
75 ENDMACRO(CHECK_DIRSYMBOL_EXISTS)
\r