Qt image dialog
[texmacs.git] / src / cmake / CheckCSourceCompiles.cmake
blob5f85c3d9a5738b67036f1ab4660b0d3a3bed25c4
1 # - Check if the source code provided in the SOURCE argument compiles.
3 # modified version from cmake distribution
4 # added link directory settings
7 # CHECK_C_SOURCE_COMPILES(SOURCE VAR)
8 # - macro which checks if the source code compiles
9 #  SOURCE   - source code to try to compile
10 #  VAR      - variable to store whether the source code compiled
12 # The following variables may be set before calling this macro to
13 # modify the way the check is run:
15 #  CMAKE_REQUIRED_FLAGS = string of compile command line flags
16 #  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
17 #  CMAKE_REQUIRED_INCLUDES = list of include directories
18 #  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
19 #  CMAKE_REQUIRED_LIBDIRS  = list of libraries directories for linking
21 MACRO(CHECK_C_SOURCE_COMPILES SOURCE VAR)
22   IF("${VAR}" MATCHES "^${VAR}$")
23     SET(MACRO_CHECK_FUNCTION_DEFINITIONS
24       "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
25     IF(CMAKE_REQUIRED_LIBRARIES)
26       SET(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
27         "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
28     ELSE(CMAKE_REQUIRED_LIBRARIES)
29       SET(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
30     ENDIF(CMAKE_REQUIRED_LIBRARIES)
31     IF(CMAKE_REQUIRED_LIBDIRS)
32       SET(CHECK_C_SOURCE_COMPILES_ADD_LIBDIRS
33         "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LIBDIRS}")
34     ELSE(CMAKE_REQUIRED_LIBDIRS)
35       SET(CHECK_C_SOURCE_COMPILES_ADD_LIBDIRS)
36     ENDIF(CMAKE_REQUIRED_LIBDIRS)
37     IF(CMAKE_REQUIRED_INCLUDES)
38       SET(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
39         "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
40     ELSE(CMAKE_REQUIRED_INCLUDES)
41       SET(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
42     ENDIF(CMAKE_REQUIRED_INCLUDES)
43     FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
44       "${SOURCE}\n")
46     MESSAGE(STATUS "Performing Test ${VAR}")
47     TRY_COMPILE(${VAR}
48       ${CMAKE_BINARY_DIR}
49       ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
50       COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
51       CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
52       "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
53       "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
54       "${CHECK_C_SOURCE_COMPILES_ADD_LIBDIRS}"
55       OUTPUT_VARIABLE OUTPUT)
56     IF(${VAR})
57       SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
58       MESSAGE(STATUS "Performing Test ${VAR} - Success")
59       FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
60         "Performing C SOURCE FILE Test ${VAR} succeded with the following output:\n"
61         "${OUTPUT}\n"
62         "Source file was:\n${SOURCE}\n")
63     ELSE(${VAR})
64       MESSAGE(STATUS "Performing Test ${VAR} - Failed")
65       SET(${VAR} "" CACHE INTERNAL "Test ${VAR}")
66       FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
67         "Performing C SOURCE FILE Test ${VAR} failed with the following output:\n"
68         "${OUTPUT}\n"
69         "Source file was:\n${SOURCE}\n")
70     ENDIF(${VAR})
71   ENDIF("${VAR}" MATCHES "^${VAR}$")
72 ENDMACRO(CHECK_C_SOURCE_COMPILES)