summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/CMakeLists.txt
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-07-01 15:21:39 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-07-21 09:49:45 +0000
commitfbe9947bd65dd1818c48c4be426e9000d2a4e695 (patch)
tree6f541058c7b57e6141a67facefeeb3c5f12dc6c2 /src/datavisualization/CMakeLists.txt
parent7871ebc90a749975c8d405a40f8ffa547c58c462 (diff)
Fix layering violation involving AbstractDeclarative
When trying an ubsan build of qtdatavis3d, I get: abstract3dcontroller.cpp.o: undefined reference to `typeinfo for AbstractDeclarative' Turns out that AbstractDeclarative is defined in DataVisualizationQml, a separate library, which depends on DataVisualization. It seems this worked because Abstract3DController only used inline members of AbstractDeclarative, so a normal build doesn't need the class exported, even though it's curious that inline isReady() calls exported QQuickItem::isComponentLoaded() and the linker didn't complain. But an UBSan build requires the type_info, which isn't available, because the class wasn't exported, and cannot be made available because of the layering violation. To fix, Extract Superclass AbstractDeclarativeInterface that provides only the required isReady() function, but lives in DataVisualization, and have the real AbstractDeclarative inherit it. As a drive-by, make isReady() const. Manual conflict resolutions: - ported from SPDX to classical copyright headers Fixes: QTBUG-104714 Change-Id: I0eb718746355f409a4105e2d53e79b7003fd8b22 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> (cherry picked from commit 24106d1e1c818b358f919ce5cbff219b5a9f8b6a)
Diffstat (limited to 'src/datavisualization/CMakeLists.txt')
-rw-r--r--src/datavisualization/CMakeLists.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/datavisualization/CMakeLists.txt b/src/datavisualization/CMakeLists.txt
index ca75d284..74b76cc3 100644
--- a/src/datavisualization/CMakeLists.txt
+++ b/src/datavisualization/CMakeLists.txt
@@ -34,6 +34,7 @@ qt_internal_add_module(DataVisualization
data/scatteritemmodelhandler.cpp data/scatteritemmodelhandler_p.h
data/scatterrenderitem.cpp data/scatterrenderitem_p.h
data/surfaceitemmodelhandler.cpp data/surfaceitemmodelhandler_p.h
+ engine/abstractdeclarativeinterface.cpp engine/abstractdeclarativeinterface_p.h
engine/abstract3dcontroller.cpp engine/abstract3dcontroller_p.h
engine/abstract3drenderer.cpp engine/abstract3drenderer_p.h
engine/axisrendercache.cpp engine/axisrendercache_p.h