diff options
author | Alexander Neundorf <neundorf@kde.org> | 2006-04-07 23:24:44 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2006-04-07 23:24:44 +0000 |
commit | deae55ead451379ee6da03832987a840de8900d4 (patch) | |
tree | aa42e7c816c1668f2b40f82faebd82a92dcdf190 | |
parent | fecb3eb2efb021bd6d385eaadd5665e3394ddf13 (diff) | |
download | extra-cmake-modules-deae55ead451379ee6da03832987a840de8900d4.tar.gz extra-cmake-modules-deae55ead451379ee6da03832987a840de8900d4.tar.bz2 |
-fix link error in kdewidgets
-fix error in kate (the ui_ prefix was missing)
-change RPATH handling once again:
-renamed "TOOL" to "RUN_UNINSTALLED"
RPATH_STYLE is gone
if CMAKE_SKIP_RPATH is enabled, no RPATH will be used
if it is enabled, all except the RUN_UNINSTALLED apps will be built with RPATH to the install dir,
apps with RUN_UNINSTALLED set will be built with RPATH to the build dir, and relinked during make install
Alex
svn path=/trunk/KDE/kdelibs/; revision=527381
-rw-r--r-- | modules/FindKDE4Internal.cmake | 104 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 57 |
2 files changed, 44 insertions, 117 deletions
diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake index ba1c0394..4a18ffe0 100644 --- a/modules/FindKDE4Internal.cmake +++ b/modules/FindKDE4Internal.cmake @@ -210,37 +210,6 @@ option(KDE4_BUILD_TESTS "Build the tests") option(KDE4_USE_QT_EMB "link to Qt-embedded, don't use X") -# RPATH handling -set(RPATH_STYLE "default" CACHE STRING "Determine RPATH handling") -set(KDE4_NEED_WRAPPER_SCRIPTS FALSE) -if (UNIX) - - if ("${RPATH_STYLE}" MATCHES "none") - set(RPATH_STYLE_MATCHED TRUE) - set(KDE4_NEED_WRAPPER_SCRIPTS TRUE) - endif ("${RPATH_STYLE}" MATCHES "none") - - if (NOT APPLE) - if ("${RPATH_STYLE}" MATCHES "install") - set(RPATH_STYLE_MATCHED TRUE) - set(KDE4_NEED_WRAPPER_SCRIPTS TRUE) - endif ("${RPATH_STYLE}" MATCHES "install") - - if ("${RPATH_STYLE}" MATCHES "both") - set(RPATH_STYLE_MATCHED TRUE) - endif ("${RPATH_STYLE}" MATCHES "both") - - endif (NOT APPLE) - - if(NOT RPATH_STYLE_MATCHED) - set(RPATH_STYLE_MATCHED TRUE) - endif(NOT RPATH_STYLE_MATCHED) -endif (UNIX) - -# set it to false again until the next kde release of cmake is required -# set(KDE4_NEED_WRAPPER_SCRIPTS FALSE) - - #now try to find some kde stuff #are we trying to compile kdelibs ? @@ -269,26 +238,21 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) endif ("${CMAKE_GENERATOR}" MATCHES "MSYS") set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} ) + # CMAKE_CFG_INTDIR is the output subdirectory created e.g. by XCode and MSVC + set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp ) + set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler ) + set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc ) else (WIN32) set(KDE4_DCOPIDL_EXECUTABLE ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl ) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib ) -# set(KDE4_LD_LIBRARY_PATH LD_LIBRARY_PATH=${LIBRARY_OUTPUT_PATH}\$\${LD_LIBRARY_PATH+:\$\$LD_LIBRARY_PATH} ) + set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp.sh ) + set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler.sh ) + set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc.sh ) endif (WIN32) set(KDE4_LIB_DIR ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) set(KDE4_KALYPTUS_DIR ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/ ) - # CMAKE_CFG_INTDIR is the output subdirectory created e.g. by XCode and MSVC - if (KDE4_NEED_WRAPPER_SCRIPTS) - set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp.sh ) - set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler.sh ) - set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc.sh ) - else (KDE4_NEED_WRAPPER_SCRIPTS) - set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp ) - set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler ) - set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc ) - endif (KDE4_NEED_WRAPPER_SCRIPTS) - # when building kdelibs, make the dcop and kcfg rules depend on the binaries... set( _KDE4_DCOPIDL2CPP_DEP dcopidl2cpp) set( _KDE4_KCONFIG_COMPILER_DEP kconfig_compiler) @@ -478,60 +442,20 @@ if (UNIX) set( _KDE4_PLATFORM_INCLUDE_DIRS /usr/local/include ) # the rest is RPATH handling - set(RPATH_STYLE_MATCHED FALSE) - - if ("${RPATH_STYLE}" MATCHES "none") - # no relinking, needs LD_LIBRARY_PATH - set(RPATH_STYLE_MATCHED TRUE) - set(CMAKE_SKIP_RPATH TRUE) - endif ("${RPATH_STYLE}" MATCHES "none") - - if (NOT APPLE) - if ("${RPATH_STYLE}" MATCHES "install") - # no relinking, needs LD_LIBRARY_PATH from the builddir - set(RPATH_STYLE_MATCHED TRUE) - set(CMAKE_SKIP_BUILD_RPATH TRUE) - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR} ${QT_LIBRARY_DIR} ) - # building something else than kdelibs/ ? - # then add the dir where the kde libraries are installed - if (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${KDE4_LIB_DIR} ) - endif (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - - endif ("${RPATH_STYLE}" MATCHES "install") - - if ("${RPATH_STYLE}" MATCHES "both") - # no relinking, prefers the lib in the builddir over the installed one - set(RPATH_STYLE_MATCHED TRUE) - set(CMAKE_SKIP_BUILD_RPATH TRUE) - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - set(CMAKE_INSTALL_RPATH ${LIBRARY_OUTPUT_PATH} ${CMAKE_INSTALL_PREFIX}/lib ) - - set(CMAKE_INSTALL_RPATH ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR} ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR} ${QT_LIBRARY_DIR} ) - # building something else than kdelibs/ ? - # then add the dir where the kde libraries are installed - if (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${KDE4_LIB_DIR} ) - endif (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - - endif ("${RPATH_STYLE}" MATCHES "both") - - endif (NOT APPLE) - - if(NOT RPATH_STYLE_MATCHED) - # rpath to the builddir, relinking to the install dir + if (APPLE) + set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR}) + else (APPLE) set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR} ${QT_LIBRARY_DIR} ) # building something else than kdelibs/ ? # then add the dir where the kde libraries are installed if (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${KDE4_LIB_DIR} ) + set(CMAKE_INSTALL_RPATH ${KDE4_LIB_DIR} ${CMAKE_INSTALL_RPATH} ) endif (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR}) - endif(NOT RPATH_STYLE_MATCHED) - + set(CMAKE_SKIP_BUILD_RPATH TRUE) + set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + endif (APPLE) endif (UNIX) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 606be87b..03504cfc 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -366,27 +366,44 @@ MACRO (KDE4_CREATE_FINAL_FILES _filenameCPP _filenameC ) foreach (_current_FILE ${ARGN}) STRING(REGEX MATCH ".+\\.c$" _isCFile ${_current_FILE}) if (_isCFile) - FILE(APPEND ${_filenameC} "#include \"${_current_FILE}\"\n") + file(APPEND ${_filenameC} "#include \"${_current_FILE}\"\n") else (_isCFile) - FILE(APPEND ${_filenameCPP} "#include \"${_current_FILE}\"\n") + file(APPEND ${_filenameCPP} "#include \"${_current_FILE}\"\n") endif (_isCFile) endforeach (_current_FILE) ENDMACRO (KDE4_CREATE_FINAL_FILES) -MACRO (KDE4_HANDLE_RPATH _target_NAME) - if (KDE4_NEED_WRAPPER_SCRIPTS) +macro (KDE4_HANDLE_RPATH _target_NAME _type) + if (UNIX) + + # set the RPATH related properties + if (NOT CMAKE_SKIP_RPATH) + if (${_type} STREQUAL "GUI") + set_target_properties(${_target_NAME} PROPERTIES SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE) + endif (${_type} STREQUAL "GUI") + + if (${_type} STREQUAL "NOGUI") + set_target_properties(${_target_NAME} PROPERTIES SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE) + endif (${_type} STREQUAL "NOGUI") + + if (${_type} STREQUAL "RUN_UNINSTALLED") + set_target_properties(${_target_NAME} PROPERTIES SKIP_BUILD_RPATH FALSE BUILD_WITH_INSTALL_RPATH FALSE) + endif (${_type} STREQUAL "RUN_UNINSTALLED") + endif (NOT CMAKE_SKIP_RPATH) + if (APPLE) set(_library_path_variable "DYLD_LIBRARY_PATH") else (APPLE) set(_library_path_variable "LD_LIBRARY_PATH") endif (APPLE) + set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR}:${KDE4_LIB_DIR}:${QT_LIBRARY_DIR}") get_target_property(_executable ${_target_NAME} LOCATION ) configure_file(${KDE4_MODULE_DIR}/kde4_exec_via_sh.cmake ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${_target_NAME}.sh) - endif (KDE4_NEED_WRAPPER_SCRIPTS) -ENDMACRO (KDE4_HANDLE_RPATH) + endif (UNIX) +endmacro (KDE4_HANDLE_RPATH) MACRO (KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) @@ -443,14 +460,13 @@ MACRO (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) ADD_EXECUTABLE(${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) - KDE4_HANDLE_RPATH(${_target_NAME}) + KDE4_HANDLE_RPATH(${_target_NAME} GUI) TARGET_LINK_LIBRARIES(${_target_NAME} kdeinit_${_target_NAME}) # endif (WIN32) ENDMACRO (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME) - -MACRO (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) +macro (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) set(_first_SRC ${_first_ARG} ) set(_add_executable_param) @@ -471,11 +487,11 @@ MACRO (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) set(_first_SRC) set(_add_executable_param) endif (${_first_ARG} STREQUAL "NOGUI") - if (${_first_ARG} STREQUAL "TOOL") - set(_type "TOOL") + if (${_first_ARG} STREQUAL "RUN_UNINSTALLED") + set(_type "RUN_UNINSTALLED") set(_first_SRC) set(_add_executable_param) - endif (${_first_ARG} STREQUAL "TOOL") + endif (${_first_ARG} STREQUAL "RUN_UNINSTALLED") if (KDE4_ENABLE_FINAL) kde4_create_final_files(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_first_SRC} ${ARGN}) @@ -484,22 +500,9 @@ MACRO (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) add_executable(${_target_NAME} ${_add_executable_param} ${_first_SRC} ${ARGN} ) endif (KDE4_ENABLE_FINAL) - # and now the RPATH handling... - if (${_type} STREQUAL "GUI") -# set_target_properties(${_target_NAME} SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE) - endif (${_type} STREQUAL "GUI") - - if (${_type} STREQUAL "NOGUI") -# set_target_properties(${_target_NAME} SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE) - endif (${_type} STREQUAL "NOGUI") - - if (${_type} STREQUAL "TOOL") -# set_target_properties(${_target_NAME} SKIP_BUILD_RPATH FALSE BUILD_WITH_INSTALL_RPATH FALSE) - endif (${_type} STREQUAL "TOOL") - - kde4_handle_rpath(${_target_NAME}) + kde4_handle_rpath(${_target_NAME} ${_type}) -ENDMACRO (KDE4_ADD_EXECUTABLE _target_NAME) +endmacro (KDE4_ADD_EXECUTABLE _target_NAME) MACRO (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) |