From d66ae206dd94c0911333f29752438ebd5fd1ee50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 27 Jan 2018 21:59:06 +0100 Subject: NOISSUE move bundle utilities magic back to the application folder This may fix macOS issues? --- application/CMakeLists.txt | 72 ++++++++++++++++++++++++++++++++++++ application/install_prereqs.cmake.in | 27 ++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 application/install_prereqs.cmake.in (limited to 'application') diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt index 1ecbdb6d..37fc7a32 100644 --- a/application/CMakeLists.txt +++ b/application/CMakeLists.txt @@ -272,3 +272,75 @@ install(TARGETS MultiMC LIBRARY DESTINATION ${LIBRARY_DEST_DIR} COMPONENT Runtime RUNTIME DESTINATION ${BINARY_DEST_DIR} COMPONENT Runtime ) + +#### The MultiMC bundle mess! #### +# Bundle utilities are used to complete the portable packages - they add all the libraries that would otherwise be missing on the target system. +# NOTE: it seems that this absolutely has to be here, and nowhere else. +if(INSTALL_BUNDLE STREQUAL "full") + # Add qt.conf - this makes Qt stop looking for things outside the bundle + install( + CODE "file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RESOURCES_DEST_DIR}/qt.conf\" \" \")" + COMPONENT Runtime + ) + # Bundle plugins + if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + # Image formats + install( + DIRECTORY "${QT_PLUGINS_DIR}/imageformats" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "tga|tiff|mng|webp" EXCLUDE + ) + # Icon engines + install( + DIRECTORY "${QT_PLUGINS_DIR}/iconengines" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "fontawesome" EXCLUDE + ) + # Platform plugins + install( + DIRECTORY "${QT_PLUGINS_DIR}/platforms" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "minimal|linuxfb|offscreen" EXCLUDE + ) + else() + # Image formats + install( + DIRECTORY "${QT_PLUGINS_DIR}/imageformats" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "tga|tiff|mng|webp" EXCLUDE + REGEX "d\\." EXCLUDE + REGEX "_debug\\." EXCLUDE + REGEX "\\.dSYM" EXCLUDE + ) + # Icon engines + install( + DIRECTORY "${QT_PLUGINS_DIR}/iconengines" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "fontawesome" EXCLUDE + REGEX "d\\." EXCLUDE + REGEX "_debug\\." EXCLUDE + REGEX "\\.dSYM" EXCLUDE + ) + # Platform plugins + install( + DIRECTORY "${QT_PLUGINS_DIR}/platforms" + DESTINATION ${PLUGIN_DEST_DIR} + COMPONENT Runtime + REGEX "minimal|linuxfb|offscreen" EXCLUDE + REGEX "d\\." EXCLUDE + REGEX "_debug\\." EXCLUDE + REGEX "\\.dSYM" EXCLUDE + ) + endif() + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/install_prereqs.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake" + @ONLY + ) + install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake" COMPONENT Runtime) +endif() diff --git a/application/install_prereqs.cmake.in b/application/install_prereqs.cmake.in new file mode 100644 index 00000000..2906a4ec --- /dev/null +++ b/application/install_prereqs.cmake.in @@ -0,0 +1,27 @@ +set(CMAKE_MODULE_PATH "@CMAKE_MODULE_PATH@") + +file(GLOB_RECURSE QTPLUGINS "${CMAKE_INSTALL_PREFIX}/@PLUGIN_DEST_DIR@/*@CMAKE_SHARED_LIBRARY_SUFFIX@") +function(gp_resolved_file_type_override resolved_file type_var) + if(resolved_file MATCHES "^/(usr/)?lib/libQt") + set(${type_var} other PARENT_SCOPE) + elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libxcb-") + set(${type_var} other PARENT_SCOPE) + elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libicu") + set(${type_var} other PARENT_SCOPE) + elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libpng") + set(${type_var} other PARENT_SCOPE) + elseif(resolved_file MATCHES "^/(usr/)?lib(.+)?/libproxy") + set(${type_var} other PARENT_SCOPE) + elseif((resolved_file MATCHES "^/(usr/)?lib(.+)?/libstdc\\+\\+") AND (UNIX AND NOT APPLE)) + set(${type_var} other PARENT_SCOPE) + endif() +endfunction() + +set(gp_tool "@CMAKE_GP_TOOL@") +set(gp_cmd_paths ${gp_cmd_paths} + "@CMAKE_GP_CMD_PATHS@" +) + +include(BundleUtilities) +fixup_bundle("@APPS@" "${QTPLUGINS}" "@DIRS@") + -- cgit v1.2.3