diff options
author | Alexander Neundorf <neundorf@kde.org> | 2006-02-04 12:15:29 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2006-02-04 12:15:29 +0000 |
commit | fb0d05a8363b1f37c24f995b9565cb90c8625256 (patch) | |
tree | f1cadba99909fb7577f86cc0e860a378b4a6a17d | |
parent | 817117aaa55be6d5c8ef3867630c9a9545da5520 (diff) | |
download | extra-cmake-modules-fb0d05a8363b1f37c24f995b9565cb90c8625256.tar.gz extra-cmake-modules-fb0d05a8363b1f37c24f995b9565cb90c8625256.tar.bz2 |
-renamed optional_find_package() to macro_optional_find_package(), to make it clear it is a macro and not a builtin command
-kjsembed compiles
-CheckCXXSourceCompiles now support multiple include paths
-compile fix in kjsembed/value_binding.cpp: prefer the local global.h, otherwise it might end up with the global.h from kio/kio/, depending on the order of include directories
-use the new "-o" switch for dcopidl
-add a (temporary) workaround for David's uic problem
Alex
svn path=/trunk/KDE/kdelibs/; revision=505580
The following changes were in SVN, but were removed from git:
M pics/CMakeLists.txt
-rw-r--r-- | modules/CheckCXXSourceCompiles.cmake | 53 | ||||
-rw-r--r-- | modules/CheckIncludeFiles.cmake | 14 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 46 | ||||
-rw-r--r-- | modules/MacroLibrary.cmake | 5 | ||||
-rw-r--r-- | modules/MacroOptionalFindPackage.cmake (renamed from modules/OptionalFindPackage.cmake) | 8 | ||||
-rw-r--r-- | modules/kde4uic.cmake | 8 |
6 files changed, 93 insertions, 41 deletions
diff --git a/modules/CheckCXXSourceCompiles.cmake b/modules/CheckCXXSourceCompiles.cmake new file mode 100644 index 00000000..dc696d1f --- /dev/null +++ b/modules/CheckCXXSourceCompiles.cmake @@ -0,0 +1,53 @@ +# - Check if the source code provided in the SOURCE argument compiles. +# CHECK_CXX_SOURCE_COMPILES(SOURCE VAR) +# - macro which checks if the source code compiles\ +# SOURCE - source code to try to compile +# VAR - variable to store size if the type exists. +# Checks the following optional VARIABLES (not arguments) +# CMAKE_REQUIRED_LIBRARIES - Link to extra libraries +# CMAKE_REQUIRED_FLAGS - Extra flags to C compiler +# CMAKE_REQUIRED_INCLUDES - Extra include directories +# + +MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR) + IF("${VAR}" MATCHES "^${VAR}$") + SET(MACRO_CHECK_FUNCTION_DEFINITIONS + "-D${VAR} ${CMAKE_REQUIRED_FLAGS}") + IF(CMAKE_REQUIRED_LIBRARIES) + SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES + "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") + ENDIF(CMAKE_REQUIRED_LIBRARIES) + IF(CMAKE_REQUIRED_INCLUDES) + SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES + "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") + STRING(REGEX REPLACE ";" "\\\\;" CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}") + ENDIF(CMAKE_REQUIRED_INCLUDES) + FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/src.cxx" + "${SOURCE}") + + MESSAGE(STATUS "Performing Test ${VAR}") + TRY_COMPILE(${VAR} + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/src.cxx + CMAKE_FLAGS + "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}" + "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}" + OUTPUT_VARIABLE OUTPUT) + IF(${VAR}) + SET(${VAR} 1 CACHE INTERNAL "Test ${FUNCTION}") + MESSAGE(STATUS "Performing Test ${VAR} - Success") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log + "Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n" + "${OUTPUT}\n" + "Source file was:\n${SOURCE}\n" APPEND) + ELSE(${VAR}) + MESSAGE(STATUS "Performing Test ${VAR} - Failed") + SET(${VAR} "" CACHE INTERNAL "Test ${FUNCTION}") + WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log + "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n" + "${OUTPUT}\n" + "Source file was:\n${SOURCE}\n" APPEND) + ENDIF(${VAR}) + ENDIF("${VAR}" MATCHES "^${VAR}$") +ENDMACRO(CHECK_CXX_SOURCE_COMPILES) + diff --git a/modules/CheckIncludeFiles.cmake b/modules/CheckIncludeFiles.cmake index 8d1b0fb3..016402af 100644 --- a/modules/CheckIncludeFiles.cmake +++ b/modules/CheckIncludeFiles.cmake @@ -12,18 +12,10 @@ MACRO(CHECK_INCLUDE_FILES INCLUDE VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") - SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS ) -# IF(CMAKE_REQUIRED_INCLUDES) -# SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS -# "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") -# ENDIF(CMAKE_REQUIRED_INCLUDES) - SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS -DINCLUDE_DIRECTORIES=) - FOREACH(_inc_DIR ${CMAKE_REQUIRED_INCLUDES}) - SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}${_inc_DIR}\;") - ENDFOREACH(_inc_DIR ${CMAKE_REQUIRED_INCLUDES}) - SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS} ") - + SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") + 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}) FOREACH(FILE ${INCLUDE}) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 37c3cc84..9a4858c1 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -10,7 +10,7 @@ # KDE4_PLACEHOLDER # KDE4_CREATE_FINAL_FILE # KDE4_ADD_KPART -# KDE4_ADD_KLM +# KDE4_ADD_KDEINIT_EXECUTABLE # KDE4_ADD_EXECUTABLE @@ -32,14 +32,6 @@ MACRO(KDE4_ADD_FILE_DEPENDANCY file) ENDMACRO(KDE4_ADD_FILE_DEPENDANCY) -IF (UNIX) - # dcopidl needs the redirection under unix - SET (_KDE4_GT ">") -ELSE (UNIX) - # but not under windows - SET (_KDE4_GT ) -ENDIF (UNIX) - #create the kidl and skeletion file for dcop stuff #usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers}) MACRO(KDE4_ADD_DCOP_SKELS _sources) @@ -57,7 +49,7 @@ MACRO(KDE4_ADD_DCOP_SKELS _sources) ADD_CUSTOM_COMMAND(OUTPUT ${_kidl} COMMAND ${KDE4_DCOPIDL_EXECUTABLE} - ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} ${_KDE4_GT} ${_kidl} + ARGS --srcdir ${KDE4_KALYPTUS_DIR} -o ${_kidl} ${_tmp_FILE} DEPENDS ${_tmp_FILE} ) ENDIF (NOT HAVE_${_basename}_KIDL_RULE) @@ -79,6 +71,7 @@ MACRO(KDE4_ADD_DCOP_SKELS _sources) ENDMACRO(KDE4_ADD_DCOP_SKELS) + MACRO(KDE4_ADD_DCOP_STUBS _sources) FOREACH (_current_FILE ${ARGN}) @@ -87,16 +80,14 @@ MACRO(KDE4_ADD_DCOP_STUBS _sources) GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE) SET(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp) -# SET(_stub_H ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.h) SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl) - IF (NOT HAVE_${_basename}_KIDL_RULE) SET(HAVE_${_basename}_KIDL_RULE ON) ADD_CUSTOM_COMMAND(OUTPUT ${_kidl} COMMAND ${KDE4_DCOPIDL_EXECUTABLE} - ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} ${_KDE4_GT} ${_kidl} + ARGS --srcdir ${KDE4_KALYPTUS_DIR} -o ${_kidl} ${_tmp_FILE} DEPENDS ${_tmp_FILE} ) ENDIF (NOT HAVE_${_basename}_KIDL_RULE) @@ -117,6 +108,7 @@ MACRO(KDE4_ADD_DCOP_STUBS _sources) ENDMACRO(KDE4_ADD_DCOP_STUBS) + MACRO(KDE4_ADD_KCFG_FILES _sources) FOREACH (_current_FILE ${ARGN}) @@ -192,6 +184,7 @@ MACRO(KDE4_ADD_UI_FILES _sources ) ENDFOREACH (_current_FILE) ENDMACRO(KDE4_ADD_UI_FILES) + #create the implementation files from the ui files and add them to the list of sources #usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files}) MACRO(KDE4_ADD_UI3_FILES _sources ) @@ -291,6 +284,7 @@ MACRO(KDE4_AUTOMOC) ENDFOREACH (_current_FILE) ENDMACRO(KDE4_AUTOMOC) + MACRO(KDE4_INSTALL_ICONS _theme _defaultpath ) ADD_CUSTOM_TARGET(install_icons ) SET_TARGET_PROPERTIES(install_icons PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake ) @@ -299,16 +293,15 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath ) FILE(GLOB _icons *.png) FOREACH(_current_ICON ${_icons} ) - STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}") + STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}") STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\2" _group "${_current_ICON}") - STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}") - IF( ${_size} STREQUAL ${_name} ) - MESSAGE(STATUS "icon: ${_current_ICON} can't be parse" ) - ELSE( ${_size} STREQUAL ${_name} ) - SET(_icon_GROUP "actions") + STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}") + # if the string doesn't match the pattern, the result is the full string, so all three have the same content + IF( NOT ${_size} STREQUAL ${_name} ) + SET(_icon_GROUP "actions") IF(${_group} STREQUAL "mime") - SET(_icon_GROUP "mimetypes") + SET(_icon_GROUP "mimetypes") ENDIF(${_group} STREQUAL "mime") IF(${_group} STREQUAL "filesys") @@ -331,8 +324,8 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath ) SET(_ICON_INSTALL_NAME ${CMAKE_INSTALL_PREFIX}/${_defaultpath}/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name}) FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "MESSAGE(STATUS \"Installing ${_ICON_INSTALL_NAME}\") \n") FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${_ICON_INSTALL_NAME} COPYONLY) \n") - ENDIF( ${_size} STREQUAL ${_name} ) - ENDFOREACH (_current_ICON) + ENDIF( NOT ${_size} STREQUAL ${_name} ) + ENDFOREACH (_current_ICON) FILE(GLOB _icons *.svgz) FOREACH(_current_ICON ${_icons} ) STRING(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\1" _group "${_current_ICON}") @@ -367,14 +360,17 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath ) ENDFOREACH (_current_ICON) ENDMACRO(KDE4_INSTALL_ICONS _theme _defaultpath) + # for the case that something should be added to every CMakeLists.txt at the top MACRO(KDE4_HEADER) ENDMACRO(KDE4_HEADER) + # same as above, but at the end MACRO(KDE4_FOOTER) ENDMACRO(KDE4_FOOTER) + MACRO(KDE4_CREATE_LIBTOOL_FILE _target) GET_TARGET_PROPERTY(_target_location ${_target} LOCATION) @@ -448,7 +444,8 @@ MACRO(KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) ENDMACRO(KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) -MACRO(KDE4_ADD_KLM _target_NAME ) + +MACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) CONFIGURE_FILE(${KDE4_MODULE_DIR}/kde4init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) @@ -470,7 +467,7 @@ MACRO(KDE4_ADD_KLM _target_NAME ) TARGET_LINK_LIBRARIES( ${_target_NAME} kdeinit_${_target_NAME} ) # ENDIF (WIN32) -ENDMACRO(KDE4_ADD_KLM _target_NAME) +ENDMACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME) MACRO(KDE4_ADD_EXECUTABLE _target_NAME ) @@ -484,6 +481,7 @@ MACRO(KDE4_ADD_EXECUTABLE _target_NAME ) ENDMACRO(KDE4_ADD_EXECUTABLE _target_NAME) + MACRO(KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) #is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix, otherwise set the prefix empty diff --git a/modules/MacroLibrary.cmake b/modules/MacroLibrary.cmake new file mode 100644 index 00000000..25abc38d --- /dev/null +++ b/modules/MacroLibrary.cmake @@ -0,0 +1,5 @@ +# - include MacroLibrary offers a collection of macros which extend the built-in cmake commands +# OPTIONAL_FIND_PACKAGE( <name> [QUIT] ) + +INCLUDE (MacroOptionalFindPackage) + diff --git a/modules/OptionalFindPackage.cmake b/modules/MacroOptionalFindPackage.cmake index 2642a993..4ad64a41 100644 --- a/modules/OptionalFindPackage.cmake +++ b/modules/MacroOptionalFindPackage.cmake @@ -1,5 +1,5 @@ -# - OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION() -# OPTIONAL_FIND_PACKAGE( <name> [QUIT] ) +# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION() +# MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] ) # This macro is a combination of OPTION() and FIND_PACKAGE(), it # works like FIND_PACKAGE(), but additionally it automatically creates # an option name WITH_<name>, which can be disabled via the cmake GUI. @@ -7,10 +7,10 @@ # The standard <name>_FOUND variables can be used in the same way # as when using the normal FIND_PACKAGE() -MACRO(OPTIONAL_FIND_PACKAGE _name ) +MACRO(MACRO_OPTIONAL_FIND_PACKAGE _name ) OPTION(WITH_${_name} "Search for ${_name} package" ON) IF (WITH_${_name}) FIND_PACKAGE(${_name} ${ARGN}) ENDIF (WITH_${_name}) -ENDMACRO(OPTIONAL_FIND_PACKAGE) +ENDMACRO(MACRO_OPTIONAL_FIND_PACKAGE) diff --git a/modules/kde4uic.cmake b/modules/kde4uic.cmake index 42382aac..16bce3a8 100644 --- a/modules/kde4uic.cmake +++ b/modules/kde4uic.cmake @@ -37,11 +37,15 @@ ENDIF (KDE4_HEADER) #replace tr218n("") with QString::null to avoid waring from KLocale STRING(REGEX REPLACE "tr2i18n\\(\"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" ) STRING(REGEX REPLACE "tr2i18n\\(\"\", \"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" ) +#replace image15_data with img15_filename to make enable_final work +STRING(REGEX REPLACE "image([0-9]+)_data" "img\\1_${KDE_UIC_BASENAME}" _uic_CONTENTS "${_uic_CONTENTS}") + +# workaround which removes the stderr messages from uic, will be removed as soon as +# I switch to EXEC_PROCESS() in the calls above STRING(REGEX REPLACE "\nuic3: [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" ) STRING(REGEX REPLACE "\n'[^\n]+' [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" ) +STRING(REGEX REPLACE "\nWarning: [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" ) -#replace image15_data with img15_filename to make enable_final work -STRING(REGEX REPLACE "image([0-9]+)_data" "img\\1_${KDE_UIC_BASENAME}" _uic_CONTENTS "${_uic_CONTENTS}") FILE(WRITE ${KDE_UIC_CPP_FILE} "#include <kdialog.h>\n#include <klocale.h>\n\n${_uic_CONTENTS}\n") |