aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2007-03-19 13:41:24 +0000
committerDavid Faure <faure@kde.org>2007-03-19 13:41:24 +0000
commit7187b3101f91daf34441a9903add8d71cd52d4ee (patch)
tree1bc0d31c92cf8680c8f689dada48285bfa95b298
parent9d360e3f7c8d25a3e55584381521f775d703e982 (diff)
downloadextra-cmake-modules-7187b3101f91daf34441a9903add8d71cd52d4ee.tar.gz
extra-cmake-modules-7187b3101f91daf34441a9903add8d71cd52d4ee.tar.bz2
shared-mime-info related macros by Pino Toscano (thanks!)
svn path=/trunk/KDE/kdelibs/; revision=644190
-rw-r--r--modules/FindSharedMimeInfo.cmake55
-rw-r--r--modules/KDE4Macros.cmake27
-rw-r--r--modules/MacroEnsureVersion.cmake36
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)