Details
-
Bug
-
Resolution: Duplicate
-
Not Evaluated
-
None
-
6.0.0 Beta4
-
None
-
Cmake version 3.18.4
Clang version 11.0.0
Target: x86_64-pc-windows-msvc
Description
When building Qt6 beta 4 with clang, it fails to build qtbase with missing SIMD functions.
[3/6697] Building CXX object qtbase/src/corelib/CMakeFiles/Core.dir/Debug/global/qsimd.cpp.obj FAILED: qtbase/src/corelib/CMakeFiles/Core.dir/Debug/global/qsimd.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG_~1.EXE -DCore_EXPORTS -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB -DQT_CORE_QOBJECT_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_MOC_COMPAT -DQT_NO_FOREACH -DQT_NO_USING_NAMESPACE -DQT_USE_QSTRINGBUILDER -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_USE_MATH_DEFINES -D_WIN64 -DCMAKE_INTDIR=\"Debug\" -Iqtbase/src/corelib/Core_autogen/include_Debug -Iqtbase/include -Iqtbase/include/QtCore -Iqtbase/src/corelib -Iqtbase/src/corelib/global -Iqtbase/src/corelib/../3rdparty/tinycbor/src -Iqtbase/include/QtCore/6.0.0 -Iqtbase/include/QtCore/6.0.0/QtCore -Iqtbase/src/corelib/../3rdparty/double-conversion/.. -Iqtbase/src/corelib/../3rdparty/double-conversion/include -Iqtbase/src/corelib/.rcc -Iqtbase/mkspecs/win32-clang-msvc -Iqtbase/src/3rdparty/pcre2/src -isystem C:/Strawberry/c/include -g -Xclang -gcodeview -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -fvisibility-inlines-hidden -Wall -Wextra -Wno-ignored-attributes -std=c++17 -Xclang -include-pch -Xclang D:/Dev/Github/Qt6/qtbase/src/corelib/CMakeFiles/Core.dir/Debug/cmake_pch.hxx.pch -Xclang -include -Xclang D:/Dev/Github/Qt6/qtbase/src/corelib/CMakeFiles/Core.dir/Debug/cmake_pch.hxx -MD -MT qtbase/src/corelib/CMakeFiles/Core.dir/Debug/global/qsimd.cpp.obj -MF qtbase\src\corelib\CMakeFiles\Core.dir\Debug\global\qsimd.cpp.obj.d -o qtbase/src/corelib/CMakeFiles/Core.dir/Debug/global/qsimd.cpp.obj -c qtbase/src/corelib/global/qsimd.cpp qtbase/src/corelib/global/qsimd.cpp:660:44: error: use of undeclared identifier '_rdrand64_step' using randuint = ExtractParameter<decltype(_rdrandXX_step)>::Type; ^ qtbase/src/corelib/global/qsimd.cpp:647:28: note: expanded from macro '_rdrandXX_step' # define _rdrandXX_step _rdrand64_step ^ qtbase/src/corelib/global/qsimd.cpp:671:25: error: use of undeclared identifier 'randuint' while (ptr + sizeof(randuint) / sizeof(*ptr) <= end) { ^ qtbase/src/corelib/global/qsimd.cpp:672:45: error: unknown type name 'randuint' if (_rdseedXX_step(reinterpret_cast<randuint *>(ptr)) == 0) ^ qtbase/src/corelib/global/qsimd.cpp:672:13: error: use of undeclared identifier '_rdseed64_step' if (_rdseedXX_step(reinterpret_cast<randuint *>(ptr)) == 0) ^ qtbase/src/corelib/global/qsimd.cpp:648:28: note: expanded from macro '_rdseedXX_step' # define _rdseedXX_step _rdseed64_step ^ qtbase/src/corelib/global/qsimd.cpp:674:23: error: use of undeclared identifier 'randuint' ptr += sizeof(randuint) / sizeof(*ptr); ^ qtbase/src/corelib/global/qsimd.cpp:677:32: error: use of undeclared identifier 'randuint' if (sizeof(*ptr) != sizeof(randuint) && ptr != end) { ^ qtbase/src/corelib/global/qsimd.cpp:678:13: error: use of undeclared identifier '_rdseed32_step' if (_rdseed32_step(ptr) == 0) ^ qtbase/src/corelib/global/qsimd.cpp:696:25: error: use of undeclared identifier 'randuint' while (ptr + sizeof(randuint)/sizeof(*ptr) <= end) { ^ qtbase/src/corelib/global/qsimd.cpp:697:45: error: unknown type name 'randuint' if (_rdrandXX_step(reinterpret_cast<randuint *>(ptr))) ^ qtbase/src/corelib/global/qsimd.cpp:697:13: error: use of undeclared identifier '_rdrand64_step' if (_rdrandXX_step(reinterpret_cast<randuint *>(ptr))) ^ qtbase/src/corelib/global/qsimd.cpp:647:28: note: expanded from macro '_rdrandXX_step' # define _rdrandXX_step _rdrand64_step ^ qtbase/src/corelib/global/qsimd.cpp:698:27: error: use of undeclared identifier 'randuint' ptr += sizeof(randuint)/sizeof(*ptr); ^ qtbase/src/corelib/global/qsimd.cpp:703:35: error: use of undeclared identifier 'randuint' while (sizeof(*ptr) != sizeof(randuint) && ptr != end) { ^ qtbase/src/corelib/global/qsimd.cpp:704:19: error: use of undeclared identifier '_rdrand32_step' bool ok = _rdrand32_step(ptr); ^ 13 errors generated. [28/6697] Building CXX object qtbase/src/corelib/CMakeFiles/Core.dir/Debug/kernel/qmetatype.cpp.obj ninja: build stopped: subcommand failed.
I think the problem is with the #ifdef logic inside Clang's flavor of immintrin.h.
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \ defined(__RDRND__) static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd"))) _rdrand16_step(unsigned short *__p) { return __builtin_ia32_rdrand16_step(__p); } static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd"))) _rdrand32_step(unsigned int *__p) { return __builtin_ia32_rdrand32_step(__p); } #ifdef __x86_64__ static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd"))) _rdrand64_step(unsigned long long *__p) { return __builtin_ia32_rdrand64_step(__p); } #endif #endif /* __RDRND__ */
Attachments
Issue Links
- duplicates
-
QTBUG-88081 Failed to build Qt from source through clang-cl
- Closed
- relates to
-
QTBUG-98253 Failed to build from source through clang-cl 13.0.0
- Closed