From e6cb6129e8b0cd466fdee741e5e1053713197f31 Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Fri, 14 Mar 2008 18:16:06 -0400 Subject: [PATCH] ENH: preparations for cross compiling KDE4 Alex --- Modules/FindKDE4.cmake | 85 ++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/Modules/FindKDE4.cmake b/Modules/FindKDE4.cmake index c4fd3fb12..3d32fcc0d 100644 --- a/Modules/FindKDE4.cmake +++ b/Modules/FindKDE4.cmake @@ -11,51 +11,64 @@ FILE(TO_CMAKE_PATH "$ENV{KDEDIRS}" _KDEDIRS) +# when cross compiling, searching kde4-config in order to run it later on +# doesn't make a lot of sense. We'll have to do something about this. +# Searching always in the target environment ? Then we get at least the correct one, +# still it can't be used to run it. Alex + # For KDE4 kde-config has been renamed to kde4-config FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config - PATH_SUFFIXES bin # the suffix is for the paths coming from KDEDIRS + # the suffix must be used since KDEDIRS can be a list of directories which don't have bin/ appended + PATH_SUFFIXES bin PATHS - ${CMAKE_INSTALL_PREFIX}/bin + ${CMAKE_INSTALL_PREFIX} ${_KDEDIRS} - /opt/kde4/bin + /opt/kde4 NO_DEFAULT_PATH + ONLY_CMAKE_FIND_ROOT_PATH ) -FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config ) +FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config ONLY_CMAKE_FIND_ROOT_PATH) -IF (KDE4_KDECONFIG_EXECUTABLE) - # then ask kde4-config for the kde data dirs - EXECUTE_PROCESS(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path data OUTPUT_VARIABLE _data_DIR ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - - FILE(TO_CMAKE_PATH "${_data_DIR}" _data_DIR) - - # then check the data dirs for FindKDE4Internal.cmake - FIND_PATH(KDE4_DATA_DIR cmake/modules/FindKDE4Internal.cmake ${_data_DIR}) - - # if it has been found... - IF (KDE4_DATA_DIR) - - SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${KDE4_DATA_DIR}/cmake/modules) - - IF (KDE4_FIND_QUIETLY) - SET(_quiet QUIET) - ENDIF (KDE4_FIND_QUIETLY) - - IF (KDE4_FIND_REQUIRED) - SET(_req REQUIRED) - ENDIF (KDE4_FIND_REQUIRED) - - # use FindKDE4Internal.cmake to do the rest - FIND_PACKAGE(KDE4Internal ${_req} ${_quiet}) - ELSE (KDE4_DATA_DIR) - IF (KDE4_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "ERROR: cmake/modules/FindKDE4Internal.cmake not found in ${_data_DIR}") - ENDIF (KDE4_FIND_REQUIRED) - ENDIF (KDE4_DATA_DIR) - -ELSE (KDE4_KDECONFIG_EXECUTABLE) +IF (NOT KDE4_KDECONFIG_EXECUTABLE) IF (KDE4_FIND_REQUIRED) MESSAGE(FATAL_ERROR "ERROR: Could not find KDE4 kde4-config") ENDIF (KDE4_FIND_REQUIRED) -ENDIF (KDE4_KDECONFIG_EXECUTABLE) +ENDIF (NOT KDE4_KDECONFIG_EXECUTABLE) + +# when cross compiling, KDE4_DATA_DIR may be already preset +IF(NOT KDE4_DATA_DIR) + IF(CMAKE_CROSSCOMPILING) + # when cross compiling, don't run kde4-config but use its location as install dir + GET_FILENAME_COMPONENT(KDE4_DATA_DIR "${KDE4_KDECONFIG_EXECUTABLE}" PATH) + GET_FILENAME_COMPONENT(KDE4_DATA_DIR "${KDE4_DATA_DIR}" PATH) + ELSE(CMAKE_CROSSCOMPILING) + # then ask kde4-config for the kde data dirs + EXECUTE_PROCESS(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path data OUTPUT_VARIABLE _data_DIR ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + FILE(TO_CMAKE_PATH "${_data_DIR}" _data_DIR) + # then check the data dirs for FindKDE4Internal.cmake + FIND_PATH(KDE4_DATA_DIR cmake/modules/FindKDE4Internal.cmake ${_data_DIR}) + ENDIF(CMAKE_CROSSCOMPILING) +ENDIF(NOT KDE4_DATA_DIR) + +# if it has been found... +IF (KDE4_DATA_DIR) + + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${KDE4_DATA_DIR}/cmake/modules) + + IF (KDE4_FIND_QUIETLY) + SET(_quiet QUIET) + ENDIF (KDE4_FIND_QUIETLY) + + IF (KDE4_FIND_REQUIRED) + SET(_req REQUIRED) + ENDIF (KDE4_FIND_REQUIRED) + + # use FindKDE4Internal.cmake to do the rest + FIND_PACKAGE(KDE4Internal ${_req} ${_quiet}) +ELSE (KDE4_DATA_DIR) + IF (KDE4_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "ERROR: cmake/modules/FindKDE4Internal.cmake not found in ${_data_DIR}") + ENDIF (KDE4_FIND_REQUIRED) +ENDIF (KDE4_DATA_DIR)