FindSharedMimeInfo.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #.rst:
  2. # FindSharedMimeInfo
  3. # ------------------
  4. #
  5. # Try to find the shared-mime-info package.
  6. #
  7. # This will define the following variables:
  8. #
  9. # ``SharedMimeInfo_FOUND``
  10. # True if system has the shared-mime-info package
  11. # ``UPDATE_MIME_DATABASE_EXECUTABLE``
  12. # The update-mime-database executable
  13. #
  14. # and the following imported targets:
  15. #
  16. # ``SharedMimeInfo::UpdateMimeDatabase``
  17. # The update-mime-database executable
  18. #
  19. # The follow macro is available::
  20. #
  21. # update_xdg_mimetypes(<path>)
  22. #
  23. # Updates the XDG mime database at install time (unless the ``$DESTDIR``
  24. # environment variable is set, in which case it is up to package managers to
  25. # perform this task).
  26. #
  27. # Since pre-1.0.0.
  28. #=============================================================================
  29. # SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>
  30. # SPDX-FileCopyrightText: 2007 Pino Toscano <toscano.pino@tiscali.it>
  31. #
  32. # SPDX-License-Identifier: BSD-3-Clause
  33. #=============================================================================
  34. include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
  35. ecm_find_package_version_check(SharedMimeInfo)
  36. find_program (UPDATE_MIME_DATABASE_EXECUTABLE NAMES update-mime-database)
  37. if (UPDATE_MIME_DATABASE_EXECUTABLE)
  38. execute_process(
  39. COMMAND "${UPDATE_MIME_DATABASE_EXECUTABLE}" -v
  40. OUTPUT_VARIABLE _smiVersionRaw
  41. ERROR_VARIABLE _smiVersionRaw)
  42. string(REGEX REPLACE "update-mime-database \\([a-zA-Z\\-]+\\) ([0-9]\\.[0-9]+).*"
  43. "\\1" SharedMimeInfo_VERSION_STRING "${_smiVersionRaw}")
  44. endif()
  45. include(FindPackageHandleStandardArgs)
  46. find_package_handle_standard_args(SharedMimeInfo
  47. FOUND_VAR
  48. SharedMimeInfo_FOUND
  49. REQUIRED_VARS
  50. UPDATE_MIME_DATABASE_EXECUTABLE
  51. VERSION_VAR
  52. SharedMimeInfo_VERSION_STRING)
  53. if(SharedMimeInfo_FOUND AND NOT TARGET SharedMimeInfo::UpdateMimeDatabase)
  54. add_executable(SharedMimeInfo::UpdateMimeDatabase IMPORTED)
  55. set_target_properties(SharedMimeInfo::UpdateMimeDatabase PROPERTIES
  56. IMPORTED_LOCATION "${UPDATE_MIME_DATABASE_EXECUTABLE}"
  57. )
  58. endif()
  59. mark_as_advanced(UPDATE_MIME_DATABASE_EXECUTABLE)
  60. function(UPDATE_XDG_MIMETYPES _path)
  61. get_filename_component(_xdgmimeDir "${_path}" NAME)
  62. if("${_xdgmimeDir}" STREQUAL packages )
  63. get_filename_component(_xdgmimeDir "${_path}" PATH)
  64. else()
  65. set(_xdgmimeDir "${_path}")
  66. endif()
  67. # Note that targets and most variables are not available to install code
  68. install(CODE "
  69. set(DESTDIR_VALUE \"\$ENV{DESTDIR}\")
  70. if (NOT DESTDIR_VALUE)
  71. # under Windows relative paths are used, that's why it runs from CMAKE_INSTALL_PREFIX
  72. message(STATUS \"Updating MIME database at \${CMAKE_INSTALL_PREFIX}/${_xdgmimeDir}\")
  73. execute_process(COMMAND \"${UPDATE_MIME_DATABASE_EXECUTABLE}\" -n \"${_xdgmimeDir}\"
  74. WORKING_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}\")
  75. endif (NOT DESTDIR_VALUE)
  76. ")
  77. endfunction()
  78. include(FeatureSummary)
  79. set_package_properties(SharedMimeInfo PROPERTIES
  80. URL https://freedesktop.org/wiki/Software/shared-mime-info/
  81. DESCRIPTION "A database of common MIME types")