diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/KDE4Macros.cmake | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 8f96c194..eb0de61a 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -929,6 +929,16 @@ macro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) set(_symbol "MAKE_${_symbol}_LIB") set_target_properties(${_target_NAME} PROPERTIES DEFINE_SYMBOL ${_symbol}) + # if that option is enabled, by default don't add any linked libraries to the "exported" + # link interfaces, so that executables linking against this library won't get additional + # indirect dependencies. This makes work easier for packagers and should make application + # startup somewhat faster, if I understood Dirk correctly. + if(NOT "${_add_lib_param}" STREQUAL "STATIC") + if(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX )# AND NOT APPLE) + set_target_properties(${_target_NAME} PROPERTIES LINK_INTERFACE_LIBRARIES "" ) + endif(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX)# AND NOT APPLE) + endif(NOT "${_add_lib_param}" STREQUAL "STATIC") + endmacro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) @@ -1128,7 +1138,8 @@ macro (KDE4_ADD_APP_ICON appsources pattern) list(APPEND ${appsources} ${_outfilename}.icns) # this doesn't seem to work for me - Use manual "install" instead - # SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${target}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + # TODO: test again with cmake 2.6 ? + # SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${target}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) install(FILES ${_outfilename}.icns DESTINATION ${BIN_INSTALL_DIR}/${target}.app/Contents/Resources/) @@ -1144,6 +1155,38 @@ macro (KDE4_ADD_APP_ICON appsources pattern) endmacro (KDE4_ADD_APP_ICON) +macro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES _append_or_write _filename) + if(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX )# AND NOT APPLE) + + # get all cmake variables which end in _LIB_DEPENDS + # then parse the target name out of them + # use the target name to get the LINK_INTERFACE_LIBRARIES target property + # This way for targets where INTERFACE_LINK_LIBRARIES has been set, the value set from + # export_library_dependencies() will be overridden, while for those where it hasn't been set + # the full list is preserved. + # (this is cmake 2.6 compatible, where we'll use the EXPORT() feature + # Alex + + file(${_append_or_write} "${_filename}" "# The following variables have been created by kde4_export_library_dependencies() +# The contents have been determined from the LINK_INTERFACE_LIBRARIES target property of the respective libraries. +# The option KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT has been enabled to create the file this way. +# You can modify KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT using \"make edit_cache\"\n\n") + get_cmake_property(allVars VARIABLES) + set(allLibs "") + foreach(currentVar ${allVars}) + string(REGEX REPLACE "^(.+)_LIB_DEPENDS$" "\\1" target "${currentVar}") + if(NOT "${target}" STREQUAL "${currentVar}") + get_target_property(interfaceLibs ${target} LINK_INTERFACE_LIBRARIES) + if(NOT "${interfaceLibs}" MATCHES "NOTFOUND") + file(APPEND "${_filename}" "SET(\"${currentVar}\" \"${interfaceLibs}\")\n") + endif(NOT "${interfaceLibs}" MATCHES "NOTFOUND") + endif(NOT "${target}" STREQUAL "${currentVar}") + endforeach(currentVar ${allVars}) + + endif(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX)# AND NOT APPLE) +endmacro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES) + + macro (KDE4_INSTALL_HANDBOOK _lang) message(STATUS "KDE4_INSTALL_HANDBOOK() is deprecated. Remove it please. Now all is done in KDE4_CREATE_HANDBOOK.") endmacro (KDE4_INSTALL_HANDBOOK ) |