diff options
author | Alexander Neundorf <neundorf@kde.org> | 2006-02-05 11:42:03 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2006-02-05 11:42:03 +0000 |
commit | 339f98743f4621ce092d5c4f530bf31a47e862e1 (patch) | |
tree | da84fea430e693e42948420641b57ebf055ed8a6 | |
parent | a25005cff76d7aa55440e1354c948d2cdfe1b203 (diff) | |
download | extra-cmake-modules-339f98743f4621ce092d5c4f530bf31a47e862e1.tar.gz extra-cmake-modules-339f98743f4621ce092d5c4f530bf31a47e862e1.tar.bz2 |
-correct fix for multiple inc dirs for check_include_files
-reset local variables to empty
Alex
svn path=/trunk/KDE/kdelibs/; revision=505915
-rw-r--r-- | modules/CheckCXXSourceCompiles.cmake | 2 | ||||
-rw-r--r-- | modules/CheckIncludeFiles.cmake | 5 | ||||
-rwxr-xr-x | modules/CheckSymbolExists.cmake | 65 |
3 files changed, 69 insertions, 3 deletions
diff --git a/modules/CheckCXXSourceCompiles.cmake b/modules/CheckCXXSourceCompiles.cmake index 43055dee..a4785756 100644 --- a/modules/CheckCXXSourceCompiles.cmake +++ b/modules/CheckCXXSourceCompiles.cmake @@ -12,6 +12,8 @@ MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR) IF("${VAR}" MATCHES "^${VAR}$")
SET(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
IF(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
diff --git a/modules/CheckIncludeFiles.cmake b/modules/CheckIncludeFiles.cmake index 016402af..52870101 100644 --- a/modules/CheckIncludeFiles.cmake +++ b/modules/CheckIncludeFiles.cmake @@ -14,7 +14,7 @@ MACRO(CHECK_INCLUDE_FILES INCLUDE VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") - STRING(REGEX REPLACE ";" "\\\\;" CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}") +# STRING(REGEX REPLACE ";" "\\\\;" CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}") SET(CHECK_INCLUDE_FILES_CONTENT "/* */\n") SET(MACRO_CHECK_INCLUDE_FILES_FLAGS ${CMAKE_REQUIRED_FLAGS}) @@ -32,9 +32,8 @@ MACRO(CHECK_INCLUDE_FILES INCLUDE VARIABLE) ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckIncludeFiles.c CMAKE_FLAGS -# -DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDE_DIR} -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS} - ${CHECK_INCLUDE_FILES_INCLUDE_DIRS} + "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}" OUTPUT_VARIABLE OUTPUT) IF(${VARIABLE}) MESSAGE(STATUS "Looking for include files ${VARIABLE} - found") diff --git a/modules/CheckSymbolExists.cmake b/modules/CheckSymbolExists.cmake new file mode 100755 index 00000000..ce3e4afa --- /dev/null +++ b/modules/CheckSymbolExists.cmake @@ -0,0 +1,65 @@ +# - Check if the symbol exists in include files +# CHECK_SYMBOL_EXISTS(SYMBOL FILES VARIABLE) +# +# SYMBOL - symbol +# FILES - include files to check +# VARIABLE - variable to return result +# +# If CMAKE_REQUIRED_FLAGS is set then those flags will be passed into the +# compile of the program likewise if CMAKE_REQUIRED_LIBRARIES is set then +# those libraries will be linked against the test program. If CMAKE_REQUIRED_INCLUDES +# is set then these directories will be added to the include search path. + + +MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE) + IF("${VARIABLE}" MATCHES "^${VARIABLE}$") + SET(CHECK_SYMBOL_EXISTS_CONTENT "/* */\n") + SET(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) + SET(CHECK_SYMBOL_EXISTS_LIBS) + SET(CHECK_SYMBOL_EXISTS_ADD_INCLUDES) + IF(CMAKE_REQUIRED_LIBRARIES) + SET(CHECK_SYMBOL_EXISTS_LIBS + "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") + ENDIF(CMAKE_REQUIRED_LIBRARIES) + IF(CMAKE_REQUIRED_INCLUDES) + SET(CHECK_SYMBOL_EXISTS_ADD_INCLUDES + "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") + ENDIF(CMAKE_REQUIRED_INCLUDES) + FOREACH(FILE ${FILES}) + SET(CHECK_SYMBOL_EXISTS_CONTENT + "${CHECK_SYMBOL_EXISTS_CONTENT}#include <${FILE}>\n") + ENDFOREACH(FILE) + SET(CHECK_SYMBOL_EXISTS_CONTENT + "${CHECK_SYMBOL_EXISTS_CONTENT}\nvoid cmakeRequireSymbol(int dummy,...){(void)dummy;}\nint main()\n{\n#ifndef ${SYMBOL}\n cmakeRequireSymbol(0,&${SYMBOL});\n#endif\n return 0;\n}\n") + + FILE(WRITE ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckSymbolExists.c + "${CHECK_SYMBOL_EXISTS_CONTENT}") + + MESSAGE(STATUS "Looking for ${SYMBOL}") + TRY_COMPILE(${VARIABLE} + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckSymbolExists.c + CMAKE_FLAGS + -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS} + "${CHECK_SYMBOL_EXISTS_ADD_INCLUDES}" + "${CHECK_SYMBOL_EXISTS_LIBS}" + OUTPUT_VARIABLE OUTPUT) + IF(${VARIABLE}) + MESSAGE(STATUS "Looking for ${SYMBOL} - found") + SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log + "Determining if the ${SYMBOL} " + "exist passed with the following output:\n" + "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckSymbolExists.c:\n" + "${CHECK_SYMBOL_EXISTS_CONTENT}\n") + ELSE(${VARIABLE}) + MESSAGE(STATUS "Looking for ${SYMBOL} - not found.") + SET(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}") + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log + "Determining if the ${SYMBOL} " + "exist failed with the following output:\n" + "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckSymbolExists.c:\n" + "${CHECK_SYMBOL_EXISTS_CONTENT}\n") + ENDIF(${VARIABLE}) + ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$") +ENDMACRO(CHECK_SYMBOL_EXISTS) |