diff options
-rw-r--r-- | modules/FindSharedMimeInfo.cmake | 55 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 27 | ||||
-rw-r--r-- | modules/MacroEnsureVersion.cmake | 36 |
3 files changed, 118 insertions, 0 deletions
diff --git a/modules/FindSharedMimeInfo.cmake b/modules/FindSharedMimeInfo.cmake new file mode 100644 index 00000000..89c2275d --- /dev/null +++ b/modules/FindSharedMimeInfo.cmake @@ -0,0 +1,55 @@ +# - Try to find the shared-mime-info package +# Once done this will define +# +# SHARED_MIME_INFO_FOUND - system has the shared-mime-info package +# UPDATE_MIME_DATABASE_EXECUTABLE - the update-mime-database executable +# +# Copyright (c) 2007, Pino Toscano, <toscano.pino@tiscali.it> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# the minimum version of shared-mime-database we require +set(SHARED_MIME_INFO_MINIMUM_VERSION "0.18") + +if (UPDATE_MIME_DATABASE_EXECUTABLE) + + # in cache already + set(SHARED_MIME_INFO_FOUND TRUE) + +else (UPDATE_MIME_DATABASE_EXECUTABLE) + + include (MacroEnsureVersion) + + find_program (UPDATE_MIME_DATABASE_EXECUTABLE NAMES update-mime-database) + + if (UPDATE_MIME_DATABASE_EXECUTABLE) + + exec_program (${UPDATE_MIME_DATABASE_EXECUTABLE} ARGS -v RETURN_VALUE _null OUTPUT_VARIABLE _smiVersionRaw) + + string(REGEX REPLACE "update-mime-database \\(shared-mime-info\\) ([0-9]\\.[0-9]+).*" + "\\1" smiVersion "${_smiVersionRaw}") + + set (SHARED_MIME_INFO_FOUND TRUE) + endif (UPDATE_MIME_DATABASE_EXECUTABLE) + + if (SHARED_MIME_INFO_FOUND) + if (NOT SharedMimeInfo_FIND_QUIETLY) + message(STATUS "Found shared-mime-info version: ${smiVersion}") + + macro_ensure_version2(${SHARED_MIME_INFO_MINIMUM_VERSION} ${smiVersion} _smiVersion_OK) + if (NOT _smiVersion_OK) + message(STATUS "WARNING: the found version of shared-mime-info (${smiVersion}) is below the minimum required (${SHARED_MIME_INFO_MINIMUM_VERSION})") + endif (NOT _smiVersion_OK) + + endif (NOT SharedMimeInfo_FIND_QUIETLY) + else (SHARED_MIME_INFO_FOUND) + if (SharedMimeInfo_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find shared-mime-info") + endif (SharedMimeInfo_FIND_REQUIRED) + endif (SHARED_MIME_INFO_FOUND) + + # ensure that they are cached + set(UPDATE_MIME_DATABASE_EXECUTABLE ${UPDATE_MIME_DATABASE_EXECUTABLE} CACHE INTERNAL "The update-mime-database executable") + +endif (UPDATE_MIME_DATABASE_EXECUTABLE) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 62cb3770..63beaec8 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -18,6 +18,7 @@ # KDE4_INSTALL_HANDBOOK # KDE4_CREATE_PO_FILES # KDE4_INSTALL_PO_FILES +# KDE4_INSTALL_XDG_MIMETYPES # Copyright (c) 2006, 2007, Alexander Neundorf, <neundorf@kde.org> # Copyright (c) 2006, 2007, Laurent Montel, <montel@kde.org> @@ -924,3 +925,29 @@ macro(KDE4_CREATE_EXPORTS_HEADER _outputFile _libName) # contents have changed. Otherwise we would have a lot of recompiles. configure_file(${KDE4_MODULE_DIR}/kde4exportsheader.h.in ${_outputFile}) endmacro(KDE4_CREATE_EXPORTS_HEADER _outputFile _libName) + + +macro (INSTALL_XDG_MIMETYPES _path ) + + foreach (_current_FILE ${ARGN}) + + install(FILES ${_current_FILE} DESTINATION ${_path}/share/mime/packages) + + install(CODE " +#message(STATUS \"DESTDIR: <\$ENV{DESTDIR}>\") +set(MYFOO \"\$ENV{DESTDIR}\") +#message(STATUS \"MYFOO: <\${MYFOO}>\") +if (NOT MYFOO) + exec_program(update-mime-database ARGS ${_path}/share/mime/) +endif (NOT MYFOO) +") + + endforeach (_current_FILE) + +endmacro (INSTALL_XDG_MIMETYPES) + +macro (KDE4_INSTALL_XDG_MIMETYPES) + + install_xdg_mimetypes(${CMAKE_INSTALL_PREFIX} ${ARGN}) + +endmacro (KDE4_INSTALL_XDG_MIMETYPES) diff --git a/modules/MacroEnsureVersion.cmake b/modules/MacroEnsureVersion.cmake index 9d936ce7..c6df537a 100644 --- a/modules/MacroEnsureVersion.cmake +++ b/modules/MacroEnsureVersion.cmake @@ -33,3 +33,39 @@ MACRO(MACRO_ENSURE_VERSION requested_version found_version var_too_old) endif (found_vers_num LESS req_vers_num) ENDMACRO(MACRO_ENSURE_VERSION) + + +# This macro compares version numbers of the form "x.y" +# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) +# will set FOO_VERSIN_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION +# where both have to be in a 2-part-version format, leading and trailing +# text is ok, e.g. +# MACRO_ENSURE_VERSION( "0.5" "foo 0.6" VERSION_OK) +# which means 0.5 is required and "foo 0.6" is what was found on the system + +# Copyright (c) 2006, David Faure, <faure@kde.org> +# Copyright (c) 2007, Pino Toscano, <pino@kde.org> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +MACRO(MACRO_ENSURE_VERSION2 requested_version found_version var_too_old) + + # parse the parts of the version string + STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" req_major_vers "${requested_version}") + STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" req_minor_vers "${requested_version}") + + STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+.*" "\\1" found_major_vers "${found_version}") + STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+).*" "\\1" found_minor_vers "${found_version}") + + # compute an overall version number which can be compared at once + MATH(EXPR req_vers_num "${req_major_vers}*100 + ${req_minor_vers}") + MATH(EXPR found_vers_num "${found_major_vers}*100 + ${found_minor_vers}") + + if (found_vers_num LESS req_vers_num) + set( ${var_too_old} FALSE ) + else (found_vers_num LESS req_vers_num) + set( ${var_too_old} TRUE ) + endif (found_vers_num LESS req_vers_num) + +ENDMACRO(MACRO_ENSURE_VERSION2) |