diff options
author | Alex Merry <kde@randomguy3.me.uk> | 2014-02-14 13:22:35 +0000 |
---|---|---|
committer | Alex Merry <kde@randomguy3.me.uk> | 2014-02-15 12:12:58 +0000 |
commit | 3d931552b72972adb0cefe79cc4d9586671d5224 (patch) | |
tree | afd633b95d1f533fad790c25cf2297d10621f563 /find-modules | |
parent | 3e0832bcbdf88156cefdf640582f7f9f0abbd63a (diff) | |
download | extra-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.cmake | 88 |
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") |