From e7c69c95e4a2048ed5a43d1a13c92fe1b7b37936 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Tue, 14 Feb 2017 09:30:55 +0100 Subject: [PATCH] packaging (macOS): Handle plugins, qt.conf, strip --- packaging/CMakeLists.txt | 8 ++++++-- packaging/custom_install.cmake.in | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index f87e2e2f9..b20aba2f3 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -401,8 +401,12 @@ foreach(_qt_plugin ${MAPPER_QT_PLUGINS}) OR _qt_plugin_location MATCHES "${alternative_pattern}") message(" ${_qt_plugin} plugin library - found") list(APPEND MAPPER_QT_PLUGINS_FOUND "${_qt_plugin}") - if(NOT APPLE) - get_filename_component(_qt_plugin_dir "${_qt_plugin}" PATH) + get_filename_component(_qt_plugin_dir "${_qt_plugin}" PATH) + if(APPLE) + install( + FILES "${_qt_plugin_location}" + DESTINATION "${MAPPER_RUNTIME_DESTINATION}${MAPPER_MACOS_SUBDIR}/../PlugIns/${_qt_plugin_dir}") + else() install( FILES "${_qt_plugin_location}" DESTINATION "${MAPPER_LIBRARY_DESTINATION}/plugins/${_qt_plugin_dir}") diff --git a/packaging/custom_install.cmake.in b/packaging/custom_install.cmake.in index 3a985d5fb..e82cf54fb 100644 --- a/packaging/custom_install.cmake.in +++ b/packaging/custom_install.cmake.in @@ -66,7 +66,15 @@ function(fixup_bundle_portable runtime dirs) endforeach() endif() elseif(APPLE) + file(GLOB_RECURSE plugins "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${runtime_destination}@MAPPER_MACOS_SUBDIR@/../PlugIns/*.dylib") + list(APPEND runtime "${plugins}") fixup_bundle("$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${runtime_destination}/Mapper.app" "${runtime}" "${dirs}") + if (CMAKE_INSTALL_DO_STRIP AND NOT "@CMAKE_STRIP@" STREQUAL "") + file(GLOB dylibs "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${runtime_destination}@MAPPER_MACOS_SUBDIR@/*.dylib") + foreach(item ${dylibs} ${runtime}) + execute_process(COMMAND "@CMAKE_STRIP@" -x "${item}") + endforeach() + endif() elseif(UNIX) # Add required symlinks. execute_process(COMMAND ldconfig -n "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}@MAPPER_LIBRARY_DESTINATION@") @@ -79,8 +87,10 @@ function(handle_qt_conf) handle_crosscompiling() set(qt_conf "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${runtime_destination}/qt.conf") if(EXISTS "${qt_conf}") + message(STATUS "Skipping ${qt_conf}") return() elseif(WIN32) + message(STATUS "Writing ${qt_conf}") file(RELATIVE_PATH rel_path "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/@MAPPER_RUNTIME_DESTINATION@" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/@MAPPER_LIBRARY_DESTINATION@") @@ -91,6 +101,13 @@ function(handle_qt_conf) [Paths] Plugins=${rel_path}/plugins Translations=${rel_path}/translations +") + elseif(APPLE) + set(qt_conf "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}${runtime_destination}@MAPPER_MACOS_SUBDIR@/../Resources/qt.conf") + message(STATUS "Writing ${qt_conf}") + file(WRITE "${qt_conf}" "\ +[Paths] +Plugins=PlugIns ") endif() endfunction() @@ -103,5 +120,5 @@ if(runtime_destination STREQUAL "/.") endif() set(runtime "") set(dirs "@MAPPER_LIB_HINTS@") -fixup_bundle_portable("${runtime}" "${dirs}") handle_qt_conf() +fixup_bundle_portable("${runtime}" "${dirs}")