diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 3b764c13da..78a7b5a804 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -5,7 +5,7 @@ # Created by Leonardo Murillo on 12/16/2015. # Copyright 2015 High Fidelity, Inc. # Copyright 2021 Vircadia contributors. -# Copyright 2022-2025 Overte e.V. +# Copyright 2022-2026 Overte e.V. # # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -127,6 +127,17 @@ macro(GENERATE_INSTALLERS) "The resulting AppImage will not be able to run on most machines. " "Set APPIMAGE_IGNORE_OPTIMIZATION to continue anyway.") endif() + + # Find and pass QMake to GenerateAppImage.cmake, since QMake tells linuxdeploy-plugin-qt where to find Qt. + find_package(Qt5 COMPONENTS Core REQUIRED) + get_target_property(Qt_Core_Location Qt5::Core LOCATION) + get_filename_component(QT_BIN_DIR ${Qt_Core_Location} DIRECTORY) + find_program(QMAKE_EXECUTABLE qmake PATHS ${QT_BIN_DIR} PATH_SUFFIXES qt5/bin NO_DEFAULT_PATH) + # Every variable starting with CPACK_* is automatically available inside CPack scripts. + set(CPACK_QMAKE_EXECUTABLE ${QMAKE_EXECUTABLE}) + if (NOT CPACK_QMAKE_EXECUTABLE) + message(FATAL_ERROR "Could not find QMake at ${QT_BIN_DIR}. QMake is required by linuxdeploy-plugin-qt for finding Qt.") + endif () endif () # configure a cpack properties file for custom variables in template diff --git a/cmake/modules/GenerateAppImage.cmake b/cmake/modules/GenerateAppImage.cmake index 68190569f6..60b77c9d73 100644 --- a/cmake/modules/GenerateAppImage.cmake +++ b/cmake/modules/GenerateAppImage.cmake @@ -5,7 +5,7 @@ # This gets called by cmake/macros/GenerateInstaller.cmake and is intended to package Interface AppImages only. # # Created by Julian Groß on 2025-04-12. -# Copyright 2025 Overte e.V. +# Copyright 2025-2026 Overte e.V. # # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -62,6 +62,8 @@ execute_process( # https://github.com/probonopd/linuxdeployqt/issues/35 # https://github.com/probonopd/linuxdeployqt/issues/35#issuecomment-382994446 LINUXDEPLOY_EXCLUDED_LIBRARIES=libnss3.so\;libnssutil3.so + # QMake tells linuxdeploy-plugin-qt where to find Qt. + QMAKE=${CPACK_QMAKE_EXECUTABLE} ${LINUXDEPLOY_EXECUTABLE} --appdir=${CPACK_TEMPORARY_DIRECTORY} --executable=${CPACK_PACKAGE_DIRECTORY}/interface/interface diff --git a/conanfile.py b/conanfile.py index 0967c64695..3efb85df7c 100644 --- a/conanfile.py +++ b/conanfile.py @@ -36,6 +36,7 @@ class Overte(ConanFile): "qt*:qtwebengine": "True", "qt*:qtwebsockets": "True", "qt*:qtwebview": "True", + "qt*:qtx11extras": "True", # Required by gpu-frame-player on Linux "qt*:qtxmlpatterns": "True", "qt*:qttools": "True", # windeployqt for Windows "glad*:spec": "gl", @@ -71,11 +72,11 @@ def requirements(self): self.requires("openexr/3.1.9") self.requires("openvr/2.2.3@overte/stable") self.requires("openxr/1.1.46@overte/stable") - self.requires("opus/1.4") + self.requires("opus/1.5.2") self.requires("polyvox/2025.09.19@overte/experimental#76ce908c1078988dceae5ad32ead2909") self.requires("quazip/1.4") self.requires("scribe/2019.02@overte/stable") - self.requires("sdl/2.32.8") + self.requires("sdl/2.32.10") self.requires("spirv-cross/1.3.268.0") self.requires("spirv-tools/1.3.268.0") self.requires("steamworks/158a@overte/prebuild") @@ -85,9 +86,6 @@ def requirements(self): self.requires("zlib/1.3.1") self.requires("glm/0.9.9.5", force=True) # FIXME: update to version 1.0.1 self.requires("jsoncpp/1.9.6", force=True) - # Fixes build errors on GCC 15. Check if this is still required when upgrading from sdl/2.30.3. - # https://github.com/conan-io/conan-center-index/issues/27265 - self.requires("libiconv/1.18", force=True) openssl = "openssl/1.1.1q" if self.options.qt_source == "system": @@ -97,7 +95,7 @@ def requirements(self): elif self.options.qt_source == "aqt": self.requires("qt/5.15.2@overte/aqt", force=True) else: - self.requires("qt/5.15.18-2026.01.04@overte/stable#30ca36fa18268c7c2de55c3d11102ab7", force=True) + self.requires("qt/5.15.18-2026.01.04@overte/stable#4fc772a2dbcd84731eb6ff9904e6e358", force=True) if self.settings.os == "Windows": self.requires("neuron/12.2@overte/prebuild") diff --git a/tools/conan-profiles/linux b/tools/conan-profiles/linux index d47214207a..63f9be5644 100644 --- a/tools/conan-profiles/linux +++ b/tools/conan-profiles/linux @@ -14,3 +14,25 @@ tools.build:cxxflags=['-include', 'cstdint'] [options] # Required for building oneTBB. hwloc/*:shared=True + +# Options required for building Qt +# Some Qt options are here rather than Overte's conanfile.py to allow for easier usage during Qt package development. +# Version conflict and not needed. +qt*:with_mysql=False +# PulseAudio is used for audio output on Linux. +qt*:with_pulseaudio=True +# Required by qt:with_pulseaudio +pulseaudio*:with_glib=True +# Required for PulseAudio support in Qt. +qt*:with_glib=True +# libpq build error and not needed (PostgreSQL). +qt*:with_pq=False +# Open Database Connectivity +# Avoid additional dependency on iconv. +qt*:with_odbc=False +# Build as shared, to avoid: `Invalid: NSS recipe cannot yet build static library. Contributions are welcome.` +# Required by Qt WebEngine +nss*:shared=True +nspr*:shared=True +# Work around `undefined reference` errors when building NSS. +sqlite3*:shared=True