Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
876cf60
Initial upgrade to Qt6
ksuprynowicz Sep 6, 2025
bc17f35
Initial work on upgrading QML to Qt6
ksuprynowicz Sep 6, 2025
fa8f6b0
Get Qt6 compiling and running, get QML starting
ada-tv Sep 7, 2025
510754f
Comment out enough QML to get the desktop starting, though framebuffe…
ada-tv Sep 7, 2025
bd892bc
VrMenu fixes for Qt6, part 1
ksuprynowicz Sep 9, 2025
db3589c
VRMenu fixes for Qt6
ksuprynowicz Sep 14, 2025
50a5d05
QQuickWebEngineView fixes for Qt6
ksuprynowicz Sep 14, 2025
2f6f4dd
Fix QML OpenGL contexts
ksuprynowicz Sep 19, 2025
226c7a4
Fix a handful of Qt6 crashes, flow now works properly
ada-tv Sep 19, 2025
05364f8
Metaobject-related fixes
ksuprynowicz Sep 27, 2025
7594f31
Add a check for catching MOC-related invoke bug
ksuprynowicz Sep 27, 2025
d002c02
Remove glm::quat from scripting API
ksuprynowicz Sep 27, 2025
d8dbf09
Remove glm::vec3 from scripting API
ksuprynowicz Sep 27, 2025
bab5c94
Smaller script API types fixes for Qt6
ksuprynowicz Sep 27, 2025
010a267
Work around QVariant copy bug
ksuprynowicz Sep 28, 2025
320bd98
More workarounds for MOC typedef bug
ksuprynowicz Sep 28, 2025
1d734d5
Fixed memory safety issue in ScriptObjectV8Proxy
ksuprynowicz Sep 30, 2025
aa0f26c
Re-enable QML rendering
ksuprynowicz Sep 30, 2025
985582a
Qt6: QML render target now set up properly, QML web entities rendering
ada-tv Oct 1, 2025
5aac563
Removed properties with missing font
ksuprynowicz Oct 1, 2025
6145db6
Fixed glm::mat4 typedefs for MOC
ksuprynowicz Oct 1, 2025
ba58050
Qt6 QML fixes
ksuprynowicz Oct 2, 2025
cd36d60
Re-enable desktop on Qt6
ksuprynowicz Oct 3, 2025
30b38f9
Fix webengine UI crash
ksuprynowicz Oct 5, 2025
2f2bd61
QML fixes for Qt 6
ksuprynowicz Oct 5, 2025
85c0dfc
Workaround for broken window inputs
ksuprynowicz Oct 5, 2025
152ae53
Re-enable FileDialog on Qt6
ksuprynowicz Oct 6, 2025
ad2bb92
Make file dialog show files on Qt6
ksuprynowicz Oct 7, 2025
b5cd646
Fix Sampler.cpp for Qt6
ksuprynowicz Oct 13, 2025
9deb8b0
Memory safety fixes
ksuprynowicz Oct 14, 2025
448a21a
Fix most of compiler warnings on Qt6
ksuprynowicz Oct 15, 2025
f21d5ee
Move Reource cache from QSharedPointer to std::shared_ptr
ksuprynowicz Oct 17, 2025
2f37823
Fix issues with resource pointers
ksuprynowicz Oct 18, 2025
85fe435
Resource shared_ptr fixes
ksuprynowicz Oct 20, 2025
8571098
Resource pointer fixes
ksuprynowicz Oct 21, 2025
b287f4c
Fixes for Resource Qt events after deleteLater()
ksuprynowicz Oct 24, 2025
2d2fe50
Fix voxels memory issue
ksuprynowicz Oct 24, 2025
533f309
Temporary workaround for text entity fade crash
ksuprynowicz Oct 24, 2025
6bf8d41
Fix webentities on Qt6
ksuprynowicz Oct 24, 2025
3a23260
Fix message dialogs and partially fix graphics settings
ada-tv Oct 9, 2025
db3ea3a
Use new callback syntax in TabletHome, workaround for Qt::TimerType e…
ada-tv Oct 13, 2025
1d8af75
Possible fix for QTimer* bug in script engine
ksuprynowicz Oct 25, 2025
643c7b7
QNetworkReply signal fixes
ksuprynowicz Oct 25, 2025
9397493
Fix vec4 in script engine
ksuprynowicz Oct 25, 2025
70f4d2c
Add experimental Qt 6.8.3 package.
JulianGro Oct 21, 2025
28ca7a9
Quazip is required for building.
JulianGro Oct 21, 2025
95fc072
Update conanfile.py
JulianGro Oct 21, 2025
d4f7115
Use shared fontconfig and freetype to avoid Qt linking issues.
JulianGro Oct 21, 2025
b11cdd0
Use Qt source package on Ubuntu 22.04 PR builds.
JulianGro Oct 21, 2025
9b61a0b
Enable with_dbus as it is required by Qt WebEngine.
JulianGro Oct 22, 2025
19e51c9
Use shared NSS, as NSS' Conan recipe doesn't support static building …
JulianGro Oct 22, 2025
314666e
Use shared NSPR, since NSS cannot link against static NSPR.
JulianGro Oct 22, 2025
698cc92
Avoid `undefined symbol` errors when building NSS.
JulianGro Oct 24, 2025
48f2b45
Use upstream Qt package, since all current changes have been upstreamed.
JulianGro Oct 24, 2025
9dfd515
Fix `libraries\shared\src\shared\platform\WinHelper.cpp(30,10): error…
RTUnreal Oct 25, 2025
d250618
Fix building against system Quazip.
JulianGro Oct 27, 2025
755e69b
Fix FBX support on Qt6
ksuprynowicz Oct 29, 2025
d483e0a
Add new QML files
ada-tv Oct 26, 2025
ddf7ce4
Change window theme, new chat app, new settings app
ada-tv Oct 26, 2025
f5808a3
Move keyboard and login screen into staging dir
ada-tv Oct 26, 2025
ed9cdfd
Fully functional running scripts dialog
ada-tv Oct 27, 2025
8553e61
sed all of the tabs into 4-spaces (oops)
ada-tv Oct 27, 2025
3d71e1b
Mostly-functional contacts app, easy profile picture setting
ada-tv Oct 27, 2025
29ba931
Functional file picker
ada-tv Oct 27, 2025
a2ae63b
Asset dialog opens, not functional yet
ada-tv Oct 27, 2025
382b89c
Kinda-functional asset browser
ada-tv Oct 29, 2025
37cafb5
Mostly-functional settings menu
ada-tv Oct 29, 2025
f400828
Polish
ada-tv Oct 29, 2025
76f3d66
moc macro typo
ada-tv Oct 30, 2025
41619ce
Use and bundle Roboto instead of DejaVu Sans
ada-tv Oct 30, 2025
919bacc
Add the old settings menu items back as a fallback
ada-tv Oct 30, 2025
f635232
fix removed qt5 headers
RTUnreal Nov 7, 2025
ed2537b
fix incorrect initialization of array
RTUnreal Nov 7, 2025
f0781e3
fix wrong typing?
RTUnreal Nov 7, 2025
22acdfe
fix debug only vars being used in non debug env
RTUnreal Nov 7, 2025
25811b5
fix usage of not (yet) supported c++20 syntax
RTUnreal Oct 28, 2025
449033a
fix windows gl.h not being initialized properly?
RTUnreal Nov 7, 2025
b784693
fix file encoding issue
RTUnreal Oct 29, 2025
613f610
fix some plugin errors
RTUnreal Oct 31, 2025
06987f9
fix application event handler
RTUnreal Nov 7, 2025
abe4801
fix correct debug output of ScriptException
RTUnreal Nov 7, 2025
079106f
fix typing and implement more QDebug stuff
RTUnreal Nov 7, 2025
f2d3ab3
fix more errors
RTUnreal Nov 4, 2025
3255202
Angle was removed from Qt6 for Windows.
JulianGro Nov 5, 2025
c688af9
switch from `fromUint128` to default constructor
RTUnreal Nov 5, 2025
1256a5a
explicitly construct QByteArray
RTUnreal Nov 5, 2025
4dc3940
fix changed class name
RTUnreal Nov 7, 2025
ebf228e
Fixed mouse movement issue on Qt6
ksuprynowicz Nov 8, 2025
c5d4fc6
Fix mouse and touches on Web entities
ada-tv Nov 13, 2025
59d094b
Use virtual pointer device on QML desktop
ada-tv Nov 13, 2025
ef710c1
Fix timestamps for offscreen UI
ksuprynowicz Nov 15, 2025
001ade6
Qt6 input events debugging and fixes
ksuprynowicz Nov 15, 2025
b2de7d2
Fix MOC issue with pointer scripting on Qt6
ksuprynowicz Nov 16, 2025
ef188e7
Fix web entity inputs
ksuprynowicz Nov 29, 2025
cc7f1db
Post-rebase fixes
ksuprynowicz Jan 5, 2026
8026ecc
Fixes for existing overhauled QML
ada-tv Nov 6, 2025
485d2ed
First pass of More app and Places app
ada-tv Nov 6, 2025
c77cb76
Sort by ID instead of alphabetically, quicker 'has users' button, pla…
ada-tv Nov 7, 2025
e6f0f40
More app retries, mistake fixups
ada-tv Nov 7, 2025
7a5cc2f
Use periodic shuffling in Places app, prefer places with thumbnails
ada-tv Nov 7, 2025
90401d7
Add nametag visibility to settings
ada-tv Nov 7, 2025
5ee7859
Show domain in user count, place portals
ada-tv Nov 7, 2025
f5e02e1
Fix avatar app edit having empty fields if the "add new" button was c…
ada-tv Nov 7, 2025
6c59bb5
Widen portal text entity, update todo list
ada-tv Nov 8, 2025
9ddc488
Restore HTML places app and shelve the QML one for later
ada-tv Nov 8, 2025
1d7063d
External app list support in More app
ada-tv Nov 14, 2025
a09cdcb
More settings
ada-tv Nov 15, 2025
8181384
Remove YouTube forced 30 FPS on Web entities, WidgetZoo scroll backgr…
ada-tv Nov 15, 2025
d552a22
Image embeds in chat app
ada-tv Nov 25, 2025
82e3f05
Merge pull request #1887 from ada-tv/qt6/qml-overhaul2
ksuprynowicz Jan 18, 2026
2e2afb1
nix: update to qt6
RTUnreal Sep 21, 2025
af1f0b9
downgrade to cmake 3
RTUnreal Nov 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/pr_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
runner: ubuntu-latest
arch: amd64
build_type: full
qt_source: system
qt_source: source
rendering_backend: OpenGL
- os: Ubuntu 22.04 Vulkan
image: docker.io/overte/overte-full-build:2025-10-24-ubuntu-22.04-amd64 # Container image used for building. Built from /tools/ci-script/linux-ci/Dockerfile_x
Expand All @@ -64,7 +64,7 @@ jobs:
runner: ubuntu-24.04-arm
arch: aarch64
build_type: full
qt_source: system
qt_source: source
rendering_backend: GLES
- os: Ubuntu 22.04 Vulkan
image: docker.io/overte/overte-full-build:2026-01-01-ubuntu-22.04-aarch64
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ if (ANDROID)
add_definitions(-DANDROID_APP_INTERFACE)
endif()
else ()
set(PLATFORM_QT_COMPONENTS WebEngine Xml)
set(PLATFORM_QT_COMPONENTS WebEngineCore Xml)
endif()


Expand All @@ -168,7 +168,7 @@ else()
endif()

foreach(PLATFORM_QT_COMPONENT ${PLATFORM_QT_COMPONENTS})
list(APPEND PLATFORM_QT_LIBRARIES "Qt5::${PLATFORM_QT_COMPONENT}")
list(APPEND PLATFORM_QT_LIBRARIES "Qt6::${PLATFORM_QT_COMPONENT}")
endforeach()

message(STATUS "Use optimized IK: " ${OVERTE_USE_OPTIMIZED_IK})
Expand Down
2 changes: 1 addition & 1 deletion android/apps/framePlayer/src/main/cpp/qml/main.qml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import QtQuick 2.2
import QtQuick.Dialogs 1.1
import QtQuick.Dialogs
import Qt.labs.folderlistmodel 2.11

Item {
Expand Down
2 changes: 1 addition & 1 deletion android/apps/interface/src/main/cpp/native.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ Java_io_highfidelity_hifiinterface_fragment_LoginFragment_retrieveAccessToken(JN

QMetaObject::invokeMethod(accountManager.data(), "requestAccessTokenWithAuthCode",
Q_ARG(const QString&, authCode), Q_ARG(const QString&, clientId),
Q_ARG(const QString&, clientSecret), Q_ARG(const QString&, redirectUri));
Q_GENERIC_ARG(const QString&, clientSecret), Q_GENERIC_ARG(const QString&, redirectUri));

}

Expand Down
2 changes: 1 addition & 1 deletion assignment-client/src/Agent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ void Agent::processAgentAvatarAudio() {
if (_numAvatarSoundSentBytes == (int)audioData->getNumBytes()) {
// we're done with this sound object - so set our pointer back to NULL
// and our sent bytes back to zero
_avatarSound.clear();
_avatarSound.reset();
_numAvatarSoundSentBytes = 0;
_flushEncoder = true;

Expand Down
2 changes: 1 addition & 1 deletion assignment-client/src/AgentScriptingInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public slots:
* }, 1000);
* }());
*/
void playAvatarSound(SharedSoundPointer avatarSound) const { _agent->playAvatarSound(avatarSound); }
void playAvatarSound(std::shared_ptr<Sound> avatarSound) const { _agent->playAvatarSound(avatarSound); }

private:
Agent* _agent;
Expand Down
3 changes: 2 additions & 1 deletion assignment-client/src/AssignmentClientMonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,8 @@ void AssignmentClientMonitor::spawnChildClient() {

void AssignmentClientMonitor::checkSpares() {
auto nodeList = DependencyManager::get<NodeList>();
QUuid aSpareId = "";
// QT6TODO: it was originally composed for empty QString, is it null UUID?
QUuid aSpareId {};
unsigned int spareCount = 0;
unsigned int totalCount = 0;

Expand Down
3 changes: 2 additions & 1 deletion assignment-client/src/assets/AssetServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <QtGui/QImageReader>
#include <QtCore/QVector>
#include <QtCore/QUrlQuery>
#include <QtCore5Compat/QRegExp>

#include <ClientServerUtils.h>
#include <NodeType.h>
Expand Down Expand Up @@ -434,7 +435,7 @@ void AssetServer::completeSetup() {
// Check the asset directory to output some information about what we have
auto files = _filesDirectory.entryList(QDir::Files);

QRegExp hashFileRegex { AssetUtils::ASSET_HASH_REGEX_STRING };
QRegularExpression hashFileRegex { AssetUtils::ASSET_HASH_REGEX_STRING };
auto hashedFiles = files.filter(hashFileRegex);

qCInfo(asset_server) << "There are" << hashedFiles.size() << "asset files in the asset directory.";
Expand Down
6 changes: 3 additions & 3 deletions assignment-client/src/avatars/ScriptableAvatar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,14 @@ void ScriptableAvatar::stopAnimation() {
QMetaObject::invokeMethod(this, "stopAnimation");
return;
}
_animation.clear();
_animation.reset();
}

AnimationDetails ScriptableAvatar::getAnimationDetails() {
if (QThread::currentThread() != thread()) {
AnimationDetails result;
BLOCKING_INVOKE_METHOD(this, "getAnimationDetails",
Q_RETURN_ARG(AnimationDetails, result));
Q_GENERIC_RETURN_ARG(AnimationDetails, result));
return result;
}
return _animationDetails;
Expand Down Expand Up @@ -222,7 +222,7 @@ void ScriptableAvatar::update(float deltatime) {
}

} else {
_animation.clear();
_animation.reset();
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions assignment-client/src/octree/OctreeHeadlessViewer.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ public slots:
* @function EntityViewer.setPosition
* @param {Vec3} position - The position of the view frustum.
*/
void setPosition(const glm::vec3& position) { _hasViewFrustum = true; _viewFrustum.setPosition(position); }
void setPosition(const glm::vec<3,float,glm::packed_highp>& position) { _hasViewFrustum = true; _viewFrustum.setPosition(position); }

/*@jsdoc
* Sets the orientation of the view frustum.
* @function EntityViewer.setOrientation
* @param {Quat} orientation - The orientation of the view frustum.
*/
void setOrientation(const glm::quat& orientation) { _hasViewFrustum = true; _viewFrustum.setOrientation(orientation); }
void setOrientation(const glm::qua<float,glm::packed_highp>& orientation) { _hasViewFrustum = true; _viewFrustum.setOrientation(orientation); }

/*@jsdoc
* Sets the radius of the center "keyhole" in the view frustum.
Expand Down Expand Up @@ -99,14 +99,14 @@ public slots:
* @function EntityViewer.getPosition
* @returns {Vec3} The position of the view frustum.
*/
const glm::vec3& getPosition() const { return _viewFrustum.getPosition(); }
const glm::vec<3,float,glm::packed_highp>& getPosition() const { return _viewFrustum.getPosition(); }

/*@jsdoc
* Gets the orientation of the view frustum.
* @function EntityViewer.getOrientation
* @returns {Quat} The orientation of the view frustum.
*/
const glm::quat& getOrientation() const { return _viewFrustum.getOrientation(); }
const glm::qua<float,glm::packed_highp>& getOrientation() const { return _viewFrustum.getOrientation(); }


// getters for LOD and PPS
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/MemoryDebugger.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ if ( OVERTE_MEMORY_DEBUGGING)
# The '-DSTACK_PROTECTOR' argument below disables the usage of this function in the code. This should be fine as it only works on the latest Intel hardware,
# and is an optimization that should make no functional difference.

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -U_FORTIFY_SOURCE -DSTACK_PROTECTOR -fstack-protector-strong -fno-omit-frame-pointer")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak ")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -U_FORTIFY_SOURCE -DSTACK_PROTECTOR -fstack-protector-strong -fno-omit-frame-pointer -fsanitize-recover=address")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -fsanitize-recover=address")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -fsanitize-recover=address")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# https://docs.microsoft.com/en-us/cpp/sanitizers/asan?view=msvc-160
# Supported experimentally starting from VS2019 v16.4, and officially from v16.9.
Expand Down
4 changes: 2 additions & 2 deletions cmake/macros/PackageLibrariesForDeployment.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT)
if (WIN32)
set(PLUGIN_PATH "plugins")

get_target_property(Qt_Core_Location Qt5::Core LOCATION)
get_target_property(Qt_Core_Location Qt6::Core LOCATION)
get_filename_component(QT_BIN_DIR ${Qt_Core_Location} DIRECTORY)
find_program(WINDEPLOYQT_COMMAND windeployqt PATHS ${QT_BIN_DIR})

Expand All @@ -23,7 +23,7 @@ macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT)
endif ()

# add a post-build command to call windeployqt to copy Qt plugins
set(CMD "${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} --no-compiler-runtime --no-opengl-sw --no-angle -no-system-d3d-compiler")
set(CMD "${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} --no-compiler-runtime --no-opengl-sw -no-system-d3d-compiler")

file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/windeploy-${TARGET_NAME}.bat" "${CMD} %*")
add_custom_command(
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/SetupHifiLibrary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ macro(SETUP_HIFI_LIBRARY)
endif ()

set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Core5Compat)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()

# Don't make scribed shaders, generated entity files, generated pipelines, or QT resource files cumulative
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/SetupHifiProject.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ macro(SETUP_HIFI_PROJECT)
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/includes")

set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Core5Compat)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED)

# disable /OPT:REF and /OPT:ICF for the Debug builds
# This will prevent the following linker warnings
Expand All @@ -41,7 +41,7 @@ macro(SETUP_HIFI_PROJECT)
endif()

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()
target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})

Expand Down
4 changes: 2 additions & 2 deletions cmake/macros/SetupHifiTestCase.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,10 @@ macro(SETUP_HIFI_TESTCASE)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Test)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} REQUIRED)

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()
target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})

Expand Down
18 changes: 13 additions & 5 deletions cmake/macros/TargetQuazip.cmake
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
#
#
# Copyright 2015 High Fidelity, Inc.
# Copyright 2025 Overte e.V.
# Created by Leonardo Murillo on 2015/11/20
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
#
#
macro(TARGET_QUAZIP)
# System QuaZip sets `IMPORTED_GLOBAL` for itself when finding it using find_package().
# Running find_package() a second time shouldn't do anything, since the package was already found,
# yet it fails with:
# `Attempt to promote imported target "QuaZip::QuaZip" to global scope (by setting IMPORTED_GLOBAL) which is not built in this directory.`
# We avoid this error by guarding against running find_package() multiple times.
if(OVERTE_USE_SYSTEM_LIBS)
find_package(PkgConfig REQUIRED)
pkg_check_modules(QuaZip REQUIRED quazip1-qt5)
pkg_check_modules(QuaZip REQUIRED quazip1-qt6)
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${QuaZip_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME} ${QuaZip_LINK_LIBRARIES})
else()
find_package(QuaZip-Qt5 REQUIRED)
target_link_libraries(${TARGET_NAME} QuaZip::QuaZip)
if(NOT TARGET QuaZip::QuaZip) # if target doesn't exist.
find_package(QuaZip-Qt6 REQUIRED)
endif()
target_link_libraries(${TARGET_NAME} QuaZip::QuaZip)
endif()
endmacro()
10 changes: 5 additions & 5 deletions cmake/modules/FindQt5LinguistToolsMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================

function(QT5_CREATE_TRANSLATION_CUSTOM _qm_files)
function(QT6_CREATE_TRANSLATION_CUSTOM _qm_files)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
Expand Down Expand Up @@ -76,20 +76,20 @@ function(QT5_CREATE_TRANSLATION_CUSTOM _qm_files)
get_source_file_property(_qm_output_location ${_ts_file} OUTPUT_LOCATION)
add_custom_command(
OUTPUT ${_tmpts_file}
COMMAND ${Qt5_LUPDATE_EXECUTABLE}
COMMAND ${Qt6_LUPDATE_EXECUTABLE}
ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
COMMAND ${CMAKE_COMMAND} -E copy ${_ts_file} ${_tmpts_file}
DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
if( _qm_output_location )
set_property(SOURCE ${_tmpts_file} PROPERTY OUTPUT_LOCATION ${_qm_output_location})
endif()
endforeach()
qt5_add_translation(${_qm_files} ${_my_temptsfiles})
qt6_add_translation(${_qm_files} ${_my_temptsfiles})
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()


function(QT5_ADD_TRANSLATION _qm_files)
function(QT6_ADD_TRANSLATION _qm_files)
foreach(_current_FILE ${ARGN})
get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
get_filename_component(qm ${_abs_FILE} NAME_WE)
Expand All @@ -102,7 +102,7 @@ function(QT5_ADD_TRANSLATION _qm_files)
endif()

add_custom_command(OUTPUT ${qm}
COMMAND ${Qt5_LRELEASE_EXECUTABLE}
COMMAND ${Qt6_LRELEASE_EXECUTABLE}
ARGS ${_abs_FILE} -qm ${qm}
DEPENDS ${_abs_FILE} VERBATIM
)
Expand Down
17 changes: 12 additions & 5 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class Overte(ConanFile):
"openssl*:shared": "True",
"qt*:shared": "True",
"qt*:gui": "True",
"qt*:qt5compat": "True", # Required by Quazip 1.4 and probably us
"qt*:qtdeclarative": "True",
"qt*:qtimageformats": "True", # WebP texture support
"qt*:qtlocation": "True",
Expand All @@ -38,6 +39,12 @@ class Overte(ConanFile):
"qt*:qtwebview": "True",
"qt*:qtxmlpatterns": "True",
"qt*:qttools": "True", # windeployqt for Windows
"qt*:with_dbus": "True", # Required for Qt on Linux. Can be disabled for Windows.
"fontconfig*:shared": "True", # For Qt on Linux. Building with static fontconfig and freetype fails: https://github.com/conan-io/conan-center-index/issues/17142
"freetype*:shared": "True", # For Qt on Linux.
"nss*:shared": "True", # Dependency of Qt. "NSS recipe cannot yet build static library."
"nspr*:shared": "True", # NSS, which is a dependency of Qt, cannot link to statis NSPR.
"sqlite*:shared": "True", # Avoid `undefined symbol` errors when building NSS.
"glad*:spec": "gl",
"glad*:gl_profile": "core",
"glad*:gl_version": "4.5",
Expand Down Expand Up @@ -97,7 +104,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.17-2025.06.07@overte/stable#550a40fc9cbe089ea59a727a3f038a31", force=True)
self.requires("qt/6.8.3", force=True)

if self.settings.os == "Windows":
self.requires("neuron/12.2@overte/prebuild")
Expand Down Expand Up @@ -137,8 +144,8 @@ def generate(self):
if self.settings.compiler == "gcc":
self.output.status("GCC compiler detected, setting default flags.")
tc.cache_variables.update({
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-Og -ggdb3",
"CMAKE_C_FLAGS_DEBUG_INIT": "-Og -ggdb3",
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-O0 -ggdb3",
"CMAKE_C_FLAGS_DEBUG_INIT": "-O0 -ggdb3",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -ggdb2",
"CMAKE_C_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -ggdb2",
"CMAKE_CXX_FLAGS_RELEASE_INIT": "-O3 -DNDEBUG",
Expand All @@ -147,8 +154,8 @@ def generate(self):
elif self.settings.compiler == "clang":
self.output.status("Clang compiler detected, setting default flags.")
tc.cache_variables.update({
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-Og -g",
"CMAKE_C_FLAGS_DEBUG_INIT": "-Og -g",
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-O0 -g",
"CMAKE_C_FLAGS_DEBUG_INIT": "-O0 -g",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -g",
"CMAKE_C_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -g",
"CMAKE_CXX_FLAGS_RELEASE_INIT": "-O3 -DNDEBUG",
Expand Down
3 changes: 2 additions & 1 deletion domain-server/src/ContentSettingsBackupHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <quazip/quazip.h>
#include <quazip/quazipfile.h>
#include <quazip/quazipdir.h>
#include <QtCore5Compat/QRegExp>

#if !defined(__clang__) && defined(__GNUC__)
#pragma GCC diagnostic pop
Expand Down Expand Up @@ -102,7 +103,7 @@ std::pair<bool, QString> ContentSettingsBackupHandler::recoverBackup(const QStri
zipFile.close();

if (zipFile.getZipError() != UNZ_OK) {
QString errorStr("Failed to unzip " + CONTENT_SETTINGS_BACKUP_FILENAME + ": " + zipFile.getZipError());
QString errorStr("Failed to unzip " + CONTENT_SETTINGS_BACKUP_FILENAME + ": " + QString::number(zipFile.getZipError()));
qCritical() << errorStr;
return { false, errorStr };
}
Expand Down
Loading
Loading