diff options
author | Alexander Neundorf <neundorf@kde.org> | 2008-11-16 19:03:49 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2008-11-16 19:03:49 +0000 |
commit | 806d9ba50d86b67889b7666d651ff6ab7a55d2f4 (patch) | |
tree | b80ccb637cb2b5066cfaee7065189ad273107091 /modules | |
parent | 61ecb1d7e50e0ccc0c1f062a9d90f5763b9ea0fb (diff) | |
download | extra-cmake-modules-806d9ba50d86b67889b7666d651ff6ab7a55d2f4.tar.gz extra-cmake-modules-806d9ba50d86b67889b7666d651ff6ab7a55d2f4.tar.bz2 |
-load the enhanced StrigiConfig.cmake if available. If this succeeds, there is no need to search for the headers
and libraries or test for the API anymore, since all that information is provided ready-to-use
by StrigiConfig.cmake
Alex
CCMAIL: jvdoever@gmail.com
svn path=/trunk/KDE/kdelibs/; revision=885206
Diffstat (limited to 'modules')
-rw-r--r-- | modules/FindStrigi.cmake | 214 |
1 files changed, 114 insertions, 100 deletions
diff --git a/modules/FindStrigi.cmake b/modules/FindStrigi.cmake index 843dc358..391b4189 100644 --- a/modules/FindStrigi.cmake +++ b/modules/FindStrigi.cmake @@ -9,78 +9,99 @@ # STRIGI_THROUGH_ANALYZER_PREFIX - strigi plugin prefix -include(FindLibraryWithDebug) -include(MacroPushRequiredVars) - if(NOT STRIGI_MIN_VERSION) set(STRIGI_MIN_VERSION "0.5.9") endif(NOT STRIGI_MIN_VERSION) -if (WIN32) - file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _program_FILES_DIR) -endif(WIN32) - file(TO_CMAKE_PATH "$ENV{STRIGI_HOME}" strigi_home) -if (NOT WIN32) - if(NOT strigi_home) - find_package(PkgConfig) - if(PKG_CONFIG_EXECUTABLE) - pkg_check_modules(STRIGI libstreamanalyzer>=${STRIGI_MIN_VERSION}) - endif(PKG_CONFIG_EXECUTABLE) - endif(NOT strigi_home) -endif(NOT WIN32) - -if (NOT STRIGI_INCLUDEDIR) - find_path(STRIGI_INCLUDE_DIR strigi/streamanalyzer.h - PATHS - ${strigi_home}/include - ${STRIGI_INCLUDEDIR} - ${_program_FILES_DIR}/strigi/include - ) - set( STRIGI_INCLUDEDIR ${STRIGI_INCLUDE_DIR} ) -else (NOT STRIGI_INCLUDEDIR) - set( STRIGI_INCLUDE_DIR ${STRIGI_INCLUDEDIR} ) -endif (NOT STRIGI_INCLUDEDIR) - - -find_library_with_debug(STRIGI_STREAMANALYZER_LIBRARY - WIN32_DEBUG_POSTFIX d - NAMES streamanalyzer - PATHS - ${strigi_home}/lib - ${STRIGI_LIBRARY_DIRS} - ${_program_FILES_DIR}/strigi/lib -) - - -find_library_with_debug(STRIGI_STREAMS_LIBRARY - WIN32_DEBUG_POSTFIX d - NAMES streams - PATHS - ${strigi_home}/lib - ${STRIGI_LIBRARY_DIRS} - ${_program_FILES_DIR}/strigi/lib -) - -find_library_with_debug(STRIGI_STRIGIQTDBUSCLIENT_LIBRARY - WIN32_DEBUG_POSTFIX d - NAMES strigiqtdbusclient - PATHS - ${strigi_home}/lib - ${STRIGI_LIBRARY_DIRS} - ${_program_FILES_DIR}/strigi/lib -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Strigi - "Couldn't find Strigi streams and streamanalyzer libraries. Set the environment variable STRIGI_HOME (or CMAKE_PREFIX_PATH if using CMake >=2.6) to the strigi install dir." - STRIGI_STREAMS_LIBRARY STRIGI_STREAMANALYZER_LIBRARY STRIGI_INCLUDE_DIR) - -if (STRIGI_FOUND) - # Check for the SIC change between 0.5.9 and 0.6.0... - - macro(MACRO_CHECK_STRIGI_API_SCREWUP _RETTYPE _RESULT) +# Try to find and load the StrigiConfig.cmake installed by kdesupport/strigi +find_package(Strigi NO_MODULE PATHS "${strigi_home}/lib/strigi" "${strigi_home}/lib64/strigi") + +# If StrigiConfig.cmake (installed by kdesupport/Strigi) has been found +# and it contains all necessary information (since November 16th, 2008), use the information +# included there, otherwise search it in the same way as any non-cmake project. +# This variable is set by StrigiConfig.cmake . Alex +if (STRIGI_CONFIG_FOUND_AND_HAS_COMPLETE_INFORMATION) + set (_strigiErrorMessage "Couldn't find Strigi streams and streamanalyzer libraries. Set the environment variable STRIGI_HOME (or CMAKE_PREFIX_PATH) to the strigi install dir.") + set(STRIGI_VERSION_OK TRUE) + if(STRIGI_VERSION VERSION_LESS ${STRIGI_MIN_VERSION}) + set(_strigiErrorMessage "Strigi version ${STRIGI_VERSION} found, but at least version ${STRIGI_MIN_VERSION} is required") + set(STRIGI_VERSION_OK FALSE) + endif(STRIGI_VERSION VERSION_LESS ${STRIGI_MIN_VERSION}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Strigi + "${_strigiErrorMessage}" + STRIGI_STREAMS_LIBRARY STRIGI_STREAMANALYZER_LIBRARY STRIGI_INCLUDE_DIR STRIGI_VERSION_OK) + +else(STRIGI_CONFIG_FOUND_AND_HAS_COMPLETE_INFORMATION) + # this else() branch is for finding strigi versions before November 16th, 2008. Alex + include(FindLibraryWithDebug) + include(MacroPushRequiredVars) + + if (WIN32) + file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _program_FILES_DIR) + endif(WIN32) + + if (NOT WIN32) + if(NOT strigi_home) + find_package(PkgConfig) + if(PKG_CONFIG_EXECUTABLE) + pkg_check_modules(STRIGI libstreamanalyzer>=${STRIGI_MIN_VERSION}) + endif(PKG_CONFIG_EXECUTABLE) + endif(NOT strigi_home) + endif(NOT WIN32) + + if (NOT STRIGI_INCLUDEDIR) + find_path(STRIGI_INCLUDE_DIR strigi/streamanalyzer.h + PATHS + ${strigi_home}/include + ${STRIGI_INCLUDEDIR} + ${_program_FILES_DIR}/strigi/include + ) + set( STRIGI_INCLUDEDIR ${STRIGI_INCLUDE_DIR} ) + else (NOT STRIGI_INCLUDEDIR) + set( STRIGI_INCLUDE_DIR ${STRIGI_INCLUDEDIR} ) + endif (NOT STRIGI_INCLUDEDIR) + + + find_library_with_debug(STRIGI_STREAMANALYZER_LIBRARY + WIN32_DEBUG_POSTFIX d + NAMES streamanalyzer + PATHS + ${strigi_home}/lib + ${STRIGI_LIBRARY_DIRS} + ${_program_FILES_DIR}/strigi/lib + ) + + find_library_with_debug(STRIGI_STREAMS_LIBRARY + WIN32_DEBUG_POSTFIX d + NAMES streams + PATHS + ${strigi_home}/lib + ${STRIGI_LIBRARY_DIRS} + ${_program_FILES_DIR}/strigi/lib + ) + + find_library_with_debug(STRIGI_STRIGIQTDBUSCLIENT_LIBRARY + WIN32_DEBUG_POSTFIX d + NAMES strigiqtdbusclient + PATHS + ${strigi_home}/lib + ${STRIGI_LIBRARY_DIRS} + ${_program_FILES_DIR}/strigi/lib + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Strigi + "Couldn't find Strigi streams and streamanalyzer libraries. Set the environment variable STRIGI_HOME (or CMAKE_PREFIX_PATH if using CMake >=2.6) to the strigi install dir." + STRIGI_STREAMS_LIBRARY STRIGI_STREAMANALYZER_LIBRARY STRIGI_INCLUDE_DIR) + + if (STRIGI_FOUND) + # Check for the SIC change between 0.5.9 and 0.6.0... + + macro(MACRO_CHECK_STRIGI_API_SCREWUP _RETTYPE _RESULT) set (_STRIGI_API_SCREWUP_SOURCE_CODE " #include <strigi/streamendanalyzer.h> using namespace Strigi; @@ -99,53 +120,46 @@ int main() return 0; } ") - check_cxx_source_compiles("${_STRIGI_API_SCREWUP_SOURCE_CODE}" ${_RESULT}) - endmacro(MACRO_CHECK_STRIGI_API_SCREWUP) - - include(CheckCXXSourceCompiles) - macro_push_required_vars() - set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${STRIGI_INCLUDEDIR} ) - set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${STRIGI_STREAMS_LIBRARY} ${STRIGI_STREAMANALYZER_LIBRARY} ) - macro_check_strigi_api_screwup( "signed char" STRIGI_NEEDS_SIGNED_CHAR ) - macro_check_strigi_api_screwup( "char" STRIGI_NEEDS_CHAR ) - set( STRIGI_NEEDS_SIGNED_CHAR ${STRIGI_NEEDS_SIGNED_CHAR} CACHE BOOL "TRUE if strigi is 0.6.0 or later" ) - set( STRIGI_NEEDS_CHAR ${STRIGI_NEEDS_CHAR} CACHE BOOL "TRUE if strigi is 0.5.9 or before" ) - if (STRIGI_NEEDS_SIGNED_CHAR) - message(STATUS "Strigi API needs 'signed char'") - else (STRIGI_NEEDS_SIGNED_CHAR) - if (STRIGI_NEEDS_CHAR) - message(STATUS "Strigi API needs 'char'") - else (STRIGI_NEEDS_CHAR) - message(FATAL_ERROR "Strigi was found, but a simple test program does not compile, check CMakeFiles/CMakeError.log") - endif (STRIGI_NEEDS_CHAR) - endif (STRIGI_NEEDS_SIGNED_CHAR) - macro_pop_required_vars() -endif (STRIGI_FOUND) + check_cxx_source_compiles("${_STRIGI_API_SCREWUP_SOURCE_CODE}" ${_RESULT}) + endmacro(MACRO_CHECK_STRIGI_API_SCREWUP) + + include(CheckCXXSourceCompiles) + macro_push_required_vars() + set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${STRIGI_INCLUDEDIR} ) + set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${STRIGI_STREAMS_LIBRARY} ${STRIGI_STREAMANALYZER_LIBRARY} ) + macro_check_strigi_api_screwup( "signed char" STRIGI_NEEDS_SIGNED_CHAR ) + macro_check_strigi_api_screwup( "char" STRIGI_NEEDS_CHAR ) + set( STRIGI_NEEDS_SIGNED_CHAR ${STRIGI_NEEDS_SIGNED_CHAR} CACHE BOOL "TRUE if strigi is 0.6.0 or later" ) + set( STRIGI_NEEDS_CHAR ${STRIGI_NEEDS_CHAR} CACHE BOOL "TRUE if strigi is 0.5.9 or before" ) + if (STRIGI_NEEDS_SIGNED_CHAR) + message(STATUS "Strigi API needs 'signed char'") + else (STRIGI_NEEDS_SIGNED_CHAR) + if (STRIGI_NEEDS_CHAR) + message(STATUS "Strigi API needs 'char'") + else (STRIGI_NEEDS_CHAR) + message(FATAL_ERROR "Strigi was found, but a simple test program does not compile, check CMakeFiles/CMakeError.log") + endif (STRIGI_NEEDS_CHAR) + endif (STRIGI_NEEDS_SIGNED_CHAR) + macro_pop_required_vars() + endif (STRIGI_FOUND) + +endif (STRIGI_CONFIG_FOUND_AND_HAS_COMPLETE_INFORMATION) if(WIN32) # this is needed to have mingw, cygwin and msvc libs installed in one directory if(MSVC) set(STRIGI_LINE_ANALYZER_PREFIX msvc_strigila_) - elseif(CYGWIN) - set(STRIGI_LINE_ANALYZER_PREFIX cyg_strigila_) - elseif(MINGW) - set(STRIGI_LINE_ANALYZER_PREFIX mingw_strigila_) - endif(MSVC) -else(WIN32) - set(STRIGI_LINE_ANALYZER_PREFIX strigila_) -endif(WIN32) - -if(WIN32) - # this is needed to have mingw, cygwin and msvc libs installed in one directory - if(MSVC) set(STRIGI_THROUGH_ANALYZER_PREFIX msvc_strigita_) elseif(CYGWIN) + set(STRIGI_LINE_ANALYZER_PREFIX cyg_strigila_) set(STRIGI_THROUGH_ANALYZER_PREFIX cyg_strigita_) elseif(MINGW) + set(STRIGI_LINE_ANALYZER_PREFIX mingw_strigila_) set(STRIGI_THROUGH_ANALYZER_PREFIX mingw_strigita_) endif(MSVC) else(WIN32) + set(STRIGI_LINE_ANALYZER_PREFIX strigila_) set(STRIGI_THROUGH_ANALYZER_PREFIX strigita_) endif(WIN32) |