Details
Description
Using GCC 14.2.0, quick3d build fails to link with bundled embree for x86 targets.
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:205: error: undefined reference to 'embree::BVH8Factory::BVH8Triangle4vMB(embree::Scene*, embree::BVHFactory::BuildVariant, embree::BVHFactory::IntersectVaria
nt)'
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:204: error: undefined reference to 'embree::BVH8Factory::BVH8Triangle4iMB(embree::Scene*, embree::BVHFactory::BuildVariant, embree::BVHFactory::IntersectVaria
nt)'
| /usr/src/debug/qtquick3d/6.9.0/src/3rdparty/embree/kernels/common/scene.cpp:167: error: undefined reference to 'embree::BVH8Factory::BVH8QuantizedTriangle4(embree::Scene*)'
The AVX code paths are not correctly disabled. This is caused by change of behavior in GCC 14 (bug or feature?), where undef'ing _AVX_ is reversed by GCC pragmas from GCC headers.
GCC issue can be reproduced with simple test code
#undef __AVX__ // from gcc/x86_64-poky-linux/14.2.0/include/x86gprintrin.h #pragma GCC push_options #pragma GCC target("general-regs-only") #pragma GCC pop_options #ifdef __AVX__ #error avx defined again #endif