mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-30 18:29:11 +08:00
131 lines
4.2 KiB
Diff
131 lines
4.2 KiB
Diff
|
From 20b3eb0fd8b5f82cf432f2c06e7c5d3f533df0a5 Mon Sep 17 00:00:00 2001
|
||
|
From: Cristian Adam <cristian.adam@qt.io>
|
||
|
Date: Thu, 03 Jun 2021 12:42:07 +0200
|
||
|
Subject: [PATCH] CMake: Add support for building with clang-cl
|
||
|
|
||
|
qmake had support for building with clang-cl as the win32-clang-msvc mkspec.
|
||
|
|
||
|
Task-number: QTBUG-89642
|
||
|
Task-number: QTBUG-88081
|
||
|
Change-Id: I0709c289f90fedb121620d1e67ef841602219816
|
||
|
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
||
|
---
|
||
|
|
||
|
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
|
||
|
index bb8b146..792276e 100644
|
||
|
--- a/cmake/QtBuild.cmake
|
||
|
+++ b/cmake/QtBuild.cmake
|
||
|
@@ -285,7 +285,9 @@
|
||
|
list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS WIN64 _WIN64)
|
||
|
endif()
|
||
|
if(MSVC)
|
||
|
- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||
|
+ if (CLANG)
|
||
|
+ set(QT_DEFAULT_MKSPEC win32-clang-msvc)
|
||
|
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
|
||
|
set(QT_DEFAULT_MKSPEC win32-arm64-msvc)
|
||
|
else()
|
||
|
set(QT_DEFAULT_MKSPEC win32-msvc)
|
||
|
diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake
|
||
|
index 0c57d9e..0eeccce 100644
|
||
|
--- a/cmake/QtFlagHandlingHelpers.cmake
|
||
|
+++ b/cmake/QtFlagHandlingHelpers.cmake
|
||
|
@@ -235,7 +235,7 @@
|
||
|
function(qt_set_msvc_cplusplus_options target visibility)
|
||
|
# For MSVC we need to explicitly pass -Zc:__cplusplus to get correct __cplusplus.
|
||
|
# Check qt_config_compile_test for more info.
|
||
|
- if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND MSVC_VERSION GREATER_EQUAL 1913)
|
||
|
+ if(MSVC AND MSVC_VERSION GREATER_EQUAL 1913)
|
||
|
target_compile_options("${target}" ${visibility} "-Zc:__cplusplus" "-permissive-")
|
||
|
endif()
|
||
|
endfunction()
|
||
|
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
|
||
|
index 2c991f7..9f0c95e 100644
|
||
|
--- a/src/corelib/CMakeLists.txt
|
||
|
+++ b/src/corelib/CMakeLists.txt
|
||
|
@@ -263,4 +263,24 @@
|
||
|
# special case end
|
||
|
)
|
||
|
|
||
|
+if (MSVC AND CLANG)
|
||
|
+ foreach(subarch sse4_1 rdrnd rdseed)
|
||
|
+ if (TEST_subarch_${subarch})
|
||
|
+ qt_internal_add_simd_part(Core SIMD ${subarch}
|
||
|
+ SOURCES
|
||
|
+ global/qsimd.cpp
|
||
|
+ )
|
||
|
+ endif()
|
||
|
+ endforeach()
|
||
|
+
|
||
|
+ foreach(subarch sse4_1 aesni)
|
||
|
+ if (TEST_subarch_${subarch})
|
||
|
+ qt_internal_add_simd_part(Core SIMD ${subarch}
|
||
|
+ SOURCES
|
||
|
+ tools/qhash.cpp
|
||
|
+ )
|
||
|
+ endif()
|
||
|
+ endforeach()
|
||
|
+endif()
|
||
|
+
|
||
|
# special case begin
|
||
|
diff --git a/src/corelib/global/qt_pch.h b/src/corelib/global/qt_pch.h
|
||
|
index 5869751..6108b07 100644
|
||
|
--- a/src/corelib/global/qt_pch.h
|
||
|
+++ b/src/corelib/global/qt_pch.h
|
||
|
@@ -62,17 +62,22 @@
|
||
|
# define _POSIX_
|
||
|
# include <limits.h>
|
||
|
# undef _POSIX_
|
||
|
-#endif
|
||
|
-#include <qcoreapplication.h>
|
||
|
-#include <qcoreevent.h>
|
||
|
-#include <qiodevice.h>
|
||
|
-#include <qlist.h>
|
||
|
-#include <qvariant.h> /* All moc genereated code has this include */
|
||
|
-#include <qobject.h>
|
||
|
-#include <qregularexpression.h>
|
||
|
-#include <qscopedpointer.h>
|
||
|
-#include <qshareddata.h>
|
||
|
-#include <qstring.h>
|
||
|
-#include <qstringlist.h>
|
||
|
-#include <qtimer.h>
|
||
|
+# if defined(Q_CC_CLANG) && defined(Q_CC_MSVC)
|
||
|
+// See https://bugs.llvm.org/show_bug.cgi?id=41226
|
||
|
+# include <wchar.h>
|
||
|
+__declspec(selectany) auto *__wmemchr_symbol_loader_value = wmemchr(L"", L'0', 0);
|
||
|
+# endif
|
||
|
+# endif
|
||
|
+# include <qcoreapplication.h>
|
||
|
+# include <qcoreevent.h>
|
||
|
+# include <qiodevice.h>
|
||
|
+# include <qlist.h>
|
||
|
+# include <qvariant.h> /* All moc genereated code has this include */
|
||
|
+# include <qobject.h>
|
||
|
+# include <qregularexpression.h>
|
||
|
+# include <qscopedpointer.h>
|
||
|
+# include <qshareddata.h>
|
||
|
+# include <qstring.h>
|
||
|
+# include <qstringlist.h>
|
||
|
+# include <qtimer.h>
|
||
|
#endif
|
||
|
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
|
||
|
index 5fe4d59..04f58dd 100644
|
||
|
--- a/src/gui/CMakeLists.txt
|
||
|
+++ b/src/gui/CMakeLists.txt
|
||
|
@@ -577,6 +577,15 @@
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
+ if (MSVC AND CLANG AND TEST_subarch_sse4_1)
|
||
|
+ qt_internal_add_simd_part(Gui SIMD sse4_1
|
||
|
+ SOURCES
|
||
|
+ painting/qdrawhelper.cpp
|
||
|
+ painting/qdrawhelper_sse2.cpp
|
||
|
+ painting/qdrawhelper_ssse3.cpp
|
||
|
+ )
|
||
|
+ endif()
|
||
|
+
|
||
|
qt_internal_add_simd_part(Gui SIMD ssse3
|
||
|
SOURCES
|
||
|
image/qimage_ssse3.cpp
|