diff --git kde-modules/KDEInstallDirs.cmake kde-modules/KDEInstallDirs.cmake index 52b2eb212f3941ea48ba864433e11919e83b2367..b79b66d37296cbf8a49440e759a92f99b075db95 100644 --- kde-modules/KDEInstallDirs.cmake +++ kde-modules/KDEInstallDirs.cmake @@ -259,6 +259,10 @@ if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GN endif() endif() endif() +elseif (APPLE) + # for now we don't change the current behaviour by default + option(APPLE_FORCE_UNIX_DIRS "Force enable installation to standard Unix locations on Mac" ON) + option(APPLE_SUPPRESS_INSTALLDIRS_WARNING "Suppress warnings about the chosen install locations on Mac" OFF) endif() set(_gnu_install_dirs_vars @@ -466,6 +470,9 @@ if(NOT DEFINED KDE_INSTALL_USE_QT_SYS_PATHS) if(qt_install_prefix_dir STREQUAL "${CMAKE_INSTALL_PREFIX}") message(STATUS "Installing in the same prefix as Qt, adopting their path scheme.") set(_default_KDE_INSTALL_USE_QT_SYS_PATHS ON) + elseif(APPLE AND NOT APPLE_FORCE_UNIX_DIRS) + message(STATUS "Using native Mac installation locations, adopting Qt's path scheme.") + set(_default_KDE_INSTALL_USE_QT_SYS_PATHS ON) endif() endif() @@ -532,20 +539,41 @@ if (WIN32) _define_relative(DATAROOTDIR BINDIR "data" "read-only architecture-independent data root" SHARE_INSTALL_PREFIX) + set(KDE_INSTALL_CROSSPLATFORM_DATAROOTDIR ${KDE_INSTALL_DATAROOTDIR}) +elseif(APPLE AND NOT APPLE_FORCE_UNIX_DIRS) + _define_absolute(DATAROOTDIR "/Library/Application Support" + "read-only architecture-independent data root") + _define_absolute(CROSSPLATFORM_DATAROOTDIR "share" + "read-only architecture-independent data root" + SHARE_INSTALL_PREFIX) else() _define_absolute(DATAROOTDIR "share" "read-only architecture-independent data root" SHARE_INSTALL_PREFIX) + set(KDE_INSTALL_CROSSPLATFORM_DATAROOTDIR ${KDE_INSTALL_DATAROOTDIR}) endif() _define_relative(DATADIR DATAROOTDIR "" "read-only architecture-independent data" DATA_INSTALL_DIR) -_define_non_cache(DATADIR_KF5 "${CMAKE_INSTALL_DATADIR}/kf5") +if(APPLE AND NOT APPLE_FORCE_UNIX_DIRS) + _define_non_cache(DATADIR_KF5 "/Library/Application Support/kf5") +else() + _define_non_cache(DATADIR_KF5 "${CMAKE_INSTALL_DATADIR}/kf5") +endif() if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED) set(KF5_DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR_KF5}") endif() +if (NOT APPLE_SUPPRESS_INSTALLDIRS_WARNING) + if(APPLE_FORCE_UNIX_DIRS) + # for now we print a regular status message for the traditional default + message(STATUS "Using standard Unix installation directories under ${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_DATAROOTDIR}") + else() + message(WARNING "Using Mac-specific installation directories under ${KDE_INSTALL_DATAROOTDIR}") + endif() +endif() + # Qt-specific data vars if(KDE_INSTALL_USE_QT_SYS_PATHS) query_qmake(qt_docs_dir QT_INSTALL_DOCS) @@ -584,40 +612,40 @@ _define_relative(KTEMPLATESDIR DATAROOTDIR "kdevappwizard/templates" "Kapptemplate and Kdevelop templates") # Cross-desktop or other system things -_define_relative(ICONDIR DATAROOTDIR "icons" +_define_relative(ICONDIR CROSSPLATFORM_DATAROOTDIR "icons" "icons" ICON_INSTALL_DIR) -_define_relative(LOCALEDIR DATAROOTDIR "locale" +_define_relative(LOCALEDIR CROSSPLATFORM_DATAROOTDIR "locale" "knotify description files" LOCALE_INSTALL_DIR) -_define_relative(SOUNDDIR DATAROOTDIR "sounds" +_define_relative(SOUNDDIR CROSSPLATFORM_DATAROOTDIR "sounds" "sound files" SOUND_INSTALL_DIR) -_define_relative(TEMPLATEDIR DATAROOTDIR "templates" +_define_relative(TEMPLATEDIR CROSSPLATFORM_DATAROOTDIR "templates" "templates" TEMPLATES_INSTALL_DIR) -_define_relative(WALLPAPERDIR DATAROOTDIR "wallpapers" +_define_relative(WALLPAPERDIR CROSSPLATFORM_DATAROOTDIR "wallpapers" "desktop wallpaper images" WALLPAPER_INSTALL_DIR) -_define_relative(APPDIR DATAROOTDIR "applications" +_define_relative(APPDIR CROSSPLATFORM_DATAROOTDIR "applications" "application desktop files" XDG_APPS_INSTALL_DIR) -_define_relative(DESKTOPDIR DATAROOTDIR "desktop-directories" +_define_relative(DESKTOPDIR CROSSPLATFORM_DATAROOTDIR "desktop-directories" "desktop directories" XDG_DIRECTORY_INSTALL_DIR) -_define_relative(MIMEDIR DATAROOTDIR "mime/packages" +_define_relative(MIMEDIR CROSSPLATFORM_DATAROOTDIR "mime/packages" "mime description files" XDG_MIME_INSTALL_DIR) -_define_relative(METAINFODIR DATAROOTDIR "metainfo" +_define_relative(METAINFODIR CROSSPLATFORM_DATAROOTDIR "metainfo" "AppStream component metadata") -_define_relative(QCHDIR DATAROOTDIR "doc/qch" +_define_relative(QCHDIR CROSSPLATFORM_DATAROOTDIR "doc/qch" "documentation bundles in QCH format") -_define_relative(MANDIR DATAROOTDIR "man" +_define_relative(MANDIR UNIXCROSSPLATFORM_DATAROOTDIR "man" "man documentation" MAN_INSTALL_DIR) -_define_relative(INFODIR DATAROOTDIR "info" +_define_relative(INFODIR CROSSPLATFORM_DATAROOTDIR "info" "info documentation") -_define_relative(DBUSDIR DATAROOTDIR "dbus-1" +_define_relative(DBUSDIR CROSSPLATFORM_DATAROOTDIR "dbus-1" "D-Bus") _define_relative(DBUSINTERFACEDIR DBUSDIR "interfaces" "D-Bus interfaces"