diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 219e27ed..c010761d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -83,7 +83,7 @@ jobs: INNOSETUP_REF: is-6_5_4 DSSP_CHANNEL: nightly DSSP_VERSION: 0.1.0-nightly.20261019.1 - MACOSX_DEPLOYMENT_TARGET: 13.0 + MACOSX_DEPLOYMENT_TARGET: '13.0' BUILD_DIR: ${{ github.workspace }}/build/build INSTALL_DIR: ${{ github.workspace }}/build/install CCACHE_DIR: ${{ github.workspace }}/build/ccache diff --git a/CMakeLists.txt b/CMakeLists.txt index 94ae9fbf..b94172ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,14 @@ cmake_minimum_required(VERSION 3.19) cmake_policy(SET CMP0141 NEW) +# The oldest macOS that Qt 6.11 supports, unless the MACOSX_DEPLOYMENT_TARGET environment variable +# or the cache specifies another. Info.plist records it as LSMinimumSystemVersion. The variable +# must be set before project(). +if(CMAKE_HOST_APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET AND + NOT DEFINED ENV{MACOSX_DEPLOYMENT_TARGET}) + set(CMAKE_OSX_DEPLOYMENT_TARGET 13.0 CACHE STRING "Minimum macOS version") +endif() + project(DiffScope VERSION 0.2.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) @@ -15,7 +23,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) option(APPLICATION_BUILD_TESTS "Build test cases" OFF) option(APPLICATION_INSTALL "Install this project" ON) option(APPLICATION_ENABLE_DEVEL "Install developer files" OFF) -option(APPLICATION_INSTALL_MSVC_RUNTIME "Install MSVC runtime" OFF) option(APPLICATION_CONFIGURE_INSTALLER "Configure installer" OFF) # ---------------------------------- @@ -37,6 +44,8 @@ if(APPLICATION_INSTALL) include(CMakePackageConfigHelpers) if(MSVC) set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION "") + # sleefdft from vcpkg, a dependency of Rubber Band, requires the OpenMP runtime vcomp140.dll + set(CMAKE_INSTALL_OPENMP_LIBRARIES ON) include(InstallRequiredSystemLibraries) endif() endif() diff --git a/scripts/vcpkg b/scripts/vcpkg index 32bb8d6e..7acffe30 160000 --- a/scripts/vcpkg +++ b/scripts/vcpkg @@ -1 +1 @@ -Subproject commit 32bb8d6e808082a8d3af51ca1b91785fbc2edab4 +Subproject commit 7acffe30cb3fc5de2196603de20c9d68c5018415 diff --git a/src/app/info.plist.in b/src/app/info.plist.in index c10a6e46..fbc8031b 100644 --- a/src/app/info.plist.in +++ b/src/app/info.plist.in @@ -36,6 +36,9 @@ CSResourcesFileMapped + LSMinimumSystemVersion + @CMAKE_OSX_DEPLOYMENT_TARGET@ + NSHumanReadableCopyright @RC_COPYRIGHT@ diff --git a/src/libs/3rdparty/dspxmodel b/src/libs/3rdparty/dspxmodel index 13d950af..d91aab2e 160000 --- a/src/libs/3rdparty/dspxmodel +++ b/src/libs/3rdparty/dspxmodel @@ -1 +1 @@ -Subproject commit 13d950af2a7b9c1aa6a8c260832497c47de0b477 +Subproject commit d91aab2e0167bab7fd2603b261468a2d0f96d4dc diff --git a/src/libs/3rdparty/scopicflow b/src/libs/3rdparty/scopicflow index 7d458e9e..2c4ac3d6 160000 --- a/src/libs/3rdparty/scopicflow +++ b/src/libs/3rdparty/scopicflow @@ -1 +1 @@ -Subproject commit 7d458e9efe80486d48c0f5a73bcf9af361a29509 +Subproject commit 2c4ac3d6d5e18f432c898bde48e4dac097d4d5f8 diff --git a/src/share/install.cmake b/src/share/install.cmake index 11ee0ddc..adfaa2a7 100644 --- a/src/share/install.cmake +++ b/src/share/install.cmake @@ -8,37 +8,30 @@ install(DIRECTORY ${CK_BUILD_MAIN_DIR}/share/ qm_find_qt(Core) -set(_plugins - generic/qtuiotouchplugin - iconengines/qsvgicon - imageformats/q* - networkinformation/qnetworklistmanager - tls/q* +# QT_PLUGINS deploys the plugins of every Qt module in the deployment. The OpenSSL backend requires +# OpenSSL, which the deployment does not include. The QML debugging plugins serve development only. +# Qt SQL is in the deployment only as a dependency of Qt Quick Local Storage, which DiffScope does +# not use, therefore the SQL drivers are excluded with the module. +set(_qt_plugins_exclude + generic/qinsighttracker + tls/qopensslbackend + qmltooling/qmldbg_debugger + qmltooling/qmldbg_inspector + qmltooling/qmldbg_local + qmltooling/qmldbg_messages + qmltooling/qmldbg_native + qmltooling/qmldbg_nativedebugger + qmltooling/qmldbg_preview + qmltooling/qmldbg_profiler + qmltooling/qmldbg_quickeventreplay + qmltooling/qmldbg_quickprofiler + qmltooling/qmldbg_server + qmltooling/qmldbg_tcp ) -if(WIN32) - # Windows - list(APPEND _plugins - platforms/qwindows - styles/qmodernwindowsstyle - ) -elseif(APPLE) - # Mac - list(APPEND _plugins - platforms/qcocoa - styles/qmacstyle - platforminputcontexts/q* - printsupport/q* - virtualkeyboard/q* - ) -else() - # Linux - list(APPEND _plugins - platforms/qxcb - platforminputcontexts/* - xcbglintegrations/* - ) -endif() +set(_qt_plugins_exclude_modules + Sql +) if(WIN32) set(_lib_dir ${CK_INSTALL_RUNTIME_DIR}) @@ -61,8 +54,10 @@ if(UNIX AND NOT APPLE) list(APPEND _exclude "^/(usr/)?lib(64)?/") endif() +# Qt Labs Folder List Model is imported by the non-native file and folder dialogs of Qt Quick +# Dialogs. DiffScope imports no other Qt Labs module. set(_qml - Qt/labs + Qt/labs/folderlistmodel Qt5Compat QtCore QtQml @@ -85,8 +80,10 @@ if(_vcpkg_lib_dir) ") endif() -qm_deploy_directory(${CMAKE_INSTALL_PREFIX} - PLUGINS ${_plugins} +qm_deploy_directory(. + QT_PLUGINS + QT_PLUGINS_EXCLUDE ${_qt_plugins_exclude} + QT_PLUGINS_EXCLUDE_MODULES ${_qt_plugins_exclude_modules} LIBRARY_DIR ${_lib_dir} PLUGIN_DIR ${CK_INSTALL_LIBRARY_DIR}/Qt/plugins EXTRA_SEARCHING_PATHS ${_extra_search_path} @@ -100,12 +97,6 @@ if(_vcpkg_lib_dir) install(CODE "set(ENV{LD_LIBRARY_PATH} \"\${_old_ld_library_path}\")") endif() -# Install vcruntime -if(MSVC AND APPLICATION_INSTALL_MSVC_RUNTIME) - set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION "${OUTPUT_DIR}") - include(InstallRequiredSystemLibraries) -endif() - if(APPLE) install(DIRECTORY ${CMAKE_INSTALL_PREFIX}/qml/ DESTINATION ${CK_INSTALL_QML_DIR}