diff options
author | Alexander Neundorf <neundorf@kde.org> | 2008-03-14 22:16:06 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2008-03-14 22:16:06 (GMT) |
commit | e6cb6129e8b0cd466fdee741e5e1053713197f31 (patch) | |
tree | a4e730056a889fa007e57d1b9e8da9f80a67094f | |
parent | 3b1bbcfe15c955b3e4994c4743a8ae460c72b045 (diff) | |
download | CMake-e6cb6129e8b0cd466fdee741e5e1053713197f31.zip CMake-e6cb6129e8b0cd466fdee741e5e1053713197f31.tar.gz CMake-e6cb6129e8b0cd466fdee741e5e1053713197f31.tar.bz2 |
ENH: preparations for cross compiling KDE4
Alex
-rw-r--r-- | Modules/FindKDE4.cmake | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/Modules/FindKDE4.cmake b/Modules/FindKDE4.cmake index c4fd3fb..3d32fcc 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 ) - -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) +FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config ONLY_CMAKE_FIND_ROOT_PATH) - # then check the data dirs for FindKDE4Internal.cmake - FIND_PATH(KDE4_DATA_DIR cmake/modules/FindKDE4Internal.cmake ${_data_DIR}) +IF (NOT KDE4_KDECONFIG_EXECUTABLE) + IF (KDE4_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "ERROR: Could not find KDE4 kde4-config") + ENDIF (KDE4_FIND_REQUIRED) +ENDIF (NOT KDE4_KDECONFIG_EXECUTABLE) - # if it has been found... - IF (KDE4_DATA_DIR) - SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${KDE4_DATA_DIR}/cmake/modules) +# 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 (KDE4_FIND_QUIETLY) - SET(_quiet QUIET) - ENDIF (KDE4_FIND_QUIETLY) +# if it has been found... +IF (KDE4_DATA_DIR) - IF (KDE4_FIND_REQUIRED) - SET(_req REQUIRED) - ENDIF (KDE4_FIND_REQUIRED) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${KDE4_DATA_DIR}/cmake/modules) - # 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) + IF (KDE4_FIND_QUIETLY) + SET(_quiet QUIET) + ENDIF (KDE4_FIND_QUIETLY) -ELSE (KDE4_KDECONFIG_EXECUTABLE) IF (KDE4_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "ERROR: Could not find KDE4 kde4-config") + SET(_req REQUIRED) ENDIF (KDE4_FIND_REQUIRED) -ENDIF (KDE4_KDECONFIG_EXECUTABLE) + # 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) |