aboutsummaryrefslogtreecommitdiff
path: root/find-modules
diff options
context:
space:
mode:
authorAlex Merry <kde@randomguy3.me.uk>2014-02-14 13:22:35 +0000
committerAlex Merry <kde@randomguy3.me.uk>2014-02-15 12:12:58 +0000
commit3d931552b72972adb0cefe79cc4d9586671d5224 (patch)
treeafd633b95d1f533fad790c25cf2297d10621f563 /find-modules
parent3e0832bcbdf88156cefdf640582f7f9f0abbd63a (diff)
downloadextra-cmake-modules-3d931552b72972adb0cefe79cc4d9586671d5224.tar.gz
extra-cmake-modules-3d931552b72972adb0cefe79cc4d9586671d5224.tar.bz2
Add a cleaned up version of FindSharedMimeInfo.cmake
This is used by many projects (including any that install any extra mime info). REVIEW: 115749
Diffstat (limited to 'find-modules')
-rw-r--r--find-modules/FindSharedMimeInfo.cmake88
1 files changed, 88 insertions, 0 deletions
diff --git a/find-modules/FindSharedMimeInfo.cmake b/find-modules/FindSharedMimeInfo.cmake
new file mode 100644
index 00000000..8dc6f1c4
--- /dev/null
+++ b/find-modules/FindSharedMimeInfo.cmake
@@ -0,0 +1,88 @@
+# Try to find the shared-mime-info package
+#
+# This will define
+#
+# SharedMimeInfo_FOUND - True if system has the shared-mime-info package
+# UPDATE_MIME_DATABASE_EXECUTABLE - The update-mime-database executable
+#
+# In addition, the following targets are defined:
+#
+# SharedMimeInfo::UpdateMimeDatabase
+#
+# The follow macro is available:
+#
+# update_xdg_mimetypes(path)
+#
+# Updates the XDG mime database at install time (unless the DESTDIR environment
+# variable is set, in which case it is up to package managers to perform this
+# task).
+#
+
+
+# Copyright (c) 2007, Pino Toscano, <toscano.pino@tiscali.it>
+# Copyright (c) 2013-2014, Alex Merry, <alex.merry@kdemail.net>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "CMake 2.8.12 is required by FindSharedMimeInfo.cmake")
+endif()
+if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+ message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindSharedMimeInfo.cmake")
+endif()
+
+find_program (UPDATE_MIME_DATABASE_EXECUTABLE NAMES update-mime-database)
+
+if (UPDATE_MIME_DATABASE_EXECUTABLE)
+ execute_process(
+ COMMAND "${UPDATE_MIME_DATABASE_EXECUTABLE}" -v
+ OUTPUT_VARIABLE _smiVersionRaw
+ ERROR_VARIABLE _smiVersionRaw)
+
+ string(REGEX REPLACE "update-mime-database \\([a-zA-Z\\-]+\\) ([0-9]\\.[0-9]+).*"
+ "\\1" SharedMimeInfo_VERSION_STRING "${_smiVersionRaw}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SharedMimeInfo
+ FOUND_VAR
+ SharedMimeInfo_FOUND
+ REQUIRED_VARS
+ UPDATE_MIME_DATABASE_EXECUTABLE
+ VERSION_VAR
+ SharedMimeInfo_VERSION_STRING)
+
+if(SharedMimeInfo_FOUND AND NOT TARGET SharedMimeInfo::UpdateMimeDatabase)
+ add_executable(SharedMimeInfo::UpdateMimeDatabase IMPORTED)
+ set_target_properties(SharedMimeInfo::UpdateMimeDatabase PROPERTIES
+ IMPORTED_LOCATION "${UPDATE_MIME_DATABASE_EXECUTABLE}"
+ )
+endif()
+
+mark_as_advanced(UPDATE_MIME_DATABASE_EXECUTABLE)
+
+function(UPDATE_XDG_MIMETYPES _path)
+ get_filename_component(_xdgmimeDir "${_path}" NAME)
+ if("${_xdgmimeDir}" STREQUAL packages )
+ get_filename_component(_xdgmimeDir "${_path}" PATH)
+ else("${_xdgmimeDir}" STREQUAL packages )
+ set(_xdgmimeDir "${_path}")
+ endif("${_xdgmimeDir}" STREQUAL packages )
+
+ # Note that targets and most variables are not available to install code
+ install(CODE "
+set(DESTDIR_VALUE \"\$ENV{DESTDIR}\")
+if (NOT DESTDIR_VALUE)
+ # under Windows relative paths are used, that's why it runs from CMAKE_INSTALL_PREFIX
+ message(STATUS \"Updating MIME database at \${CMAKE_INSTALL_PREFIX}/${_xdgmimeDir}\")
+ execute_process(COMMAND \"${UPDATE_MIME_DATABASE_EXECUTABLE}\" \"${_xdgmimeDir}\"
+ WORKING_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}\")
+endif (NOT DESTDIR_VALUE)
+")
+endfunction()
+
+include(FeatureSummary)
+set_package_properties(SharedMimeInfo PROPERTIES
+ URL http://freedesktop.org/wiki/Software/shared-mime-info/
+ DESCRIPTION "A database of common MIME types")