From cb0ea3989598a83b2326f63e7da1669018a965e5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 12 Oct 2021 13:39:37 -0700 Subject: [PATCH] CMake: remove support for building Qt with the old Intel compiler This hasn't worked for some time. It's not in our CI and I don't think it was working at all. When I tried to build it, I ran into several problems with C++17 and an Internal Compiler Error I did not have any interest in working around. After discussing with the Intel compiler team, it was decided that fixing those issues in the old compiler is not going to happen. Instead, their recommendation is to adopt the new LLVM-based compiler, which the last commit added support for. This commit does not remove qmake support for the old ICC. It's possible someone is using qmake with a non-Qt6 project and ICC. Change-Id: Icb2516126f674e7b8bb3fffd16ad6350ddbd49e5 Reviewed-by: Alexandru Croitor --- cmake/QtBuild.cmake | 2 - cmake/QtBuildInformation.cmake | 2 - cmake/QtCompilerOptimization.cmake | 56 +------------------ cmake/QtFlagHandlingHelpers.cmake | 6 +- cmake/QtHeadersClean.cmake | 48 ++++++---------- cmake/QtInternalTargets.cmake | 14 ----- cmake/QtPlatformSupport.cmake | 1 - cmake/QtPriHelpers.cmake | 4 -- cmake/QtProcessConfigureArgs.cmake | 3 - src/corelib/CMakeLists.txt | 8 +-- src/plugins/platforms/xcb/CMakeLists.txt | 2 +- .../corelib/global/qnumeric/CMakeLists.txt | 11 ---- tests/auto/tools/moc/CMakeLists.txt | 4 +- 13 files changed, 23 insertions(+), 138 deletions(-) diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index cf79f3d9718..eff4cc9a266 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -306,8 +306,6 @@ elseif(LINUX) set(QT_DEFAULT_MKSPEC linux-g++) elseif(CLANG) set(QT_DEFAULT_MKSPEC linux-clang) - elseif(ICC) - set(QT_DEFAULT_MKSPEC linux-icc-64) endif() elseif(ANDROID) if(GCC) diff --git a/cmake/QtBuildInformation.cmake b/cmake/QtBuildInformation.cmake index 81daae5f13d..a3adf810947 100644 --- a/cmake/QtBuildInformation.cmake +++ b/cmake/QtBuildInformation.cmake @@ -296,8 +296,6 @@ function(qt_configure_process_add_summary_build_type_and_config) string(APPEND message "clang (Intel LLVM)") elseif(CLANG) string(APPEND message "clang") - elseif(ICC) - string(APPEND message "intel_icc") elseif(QCC) string(APPEND message "rim_qcc") elseif(GCC) diff --git a/cmake/QtCompilerOptimization.cmake b/cmake/QtCompilerOptimization.cmake index 69029a59de6..f2ae3c31433 100644 --- a/cmake/QtCompilerOptimization.cmake +++ b/cmake/QtCompilerOptimization.cmake @@ -85,50 +85,6 @@ if (winrt) # FIXME: Correct variable set(QT_CFLAGS_SHANI "-arch:SSE2") endif() -if (ICC) - if (MSVC) - set(QT_CFLAGS_SSE2 "-QxSSE2") - set(QT_CFLAGS_SSE3 "-QxSSE3") - set(QT_CFLAGS_SSSE3 "-QxSSSE3") - set(QT_CFLAGS_SSE4_1 "-QxSSE4.1") - set(QT_CFLAGS_SSE4_2 "-QxSSE4.2") - set(QT_CFLAGS_AVX "-QxAVX") - set(QT_CFLAGS_AVX2 "-QxCORE-AVX2") - set(QT_CFLAGS_AVX512F "-QxCOMMON-AVX512") - set(QT_CFLAGS_AVX512CD "-QxCOMMON-AVX512") - set(QT_CFLAGS_AVX512ER "-QxMIC-AVX512") - set(QT_CFLAGS_AVX512PF "-QxMIC-AVX512") - set(QT_CFLAGS_AVX512DQ "-QxCORE-AVX512") - set(QT_CFLAGS_AVX512BW "-QxCORE-AVX512") - set(QT_CFLAGS_AVX512VL "-QxCORE-AVX512") - set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}") - set(QT_CFLAGS_AESNI "-QxSSE2") - set(QT_CFLAGS_RDRND "") - set(QT_CFLAGS_RDSEED "") - set(QT_CFLAGS_SHANI "-QxSSE4.2") - else() - set(QT_CFLAGS_SSE2 "-msse2") - set(QT_CFLAGS_SSE3 "-msse3") - set(QT_CFLAGS_SSSE3 "-mssse3") - set(QT_CFLAGS_SSE4_1 "-msse4.1") - set(QT_CFLAGS_SSE4_2 "-msse4.2") - set(QT_CFLAGS_AVX "-march=core-avx") - set(QT_CFLAGS_AVX2 "-march=core-avx2") - set(QT_CFLAGS_AVX512F "-march=broadwell -xCOMMON-AVX512") - set(QT_CFLAGS_AVX512CD "-march=broadwell -xCOMMON-AVX512") - set(QT_CFLAGS_AVX512ER "-march=knl") - set(QT_CFLAGS_AVX512PF "-march=knl") - set(QT_CFLAGS_AVX512DQ "-march=skylake-avx512") - set(QT_CFLAGS_AVX512BW "-march=skylake-avx512") - set(QT_CFLAGS_AVX512VL "-march=skylake-avx512") - set(QT_CFLAGS_AESNI "-maes") - set(QT_CFLAGS_F16C "${QT_CFLAGS_AVX2}") - set(QT_CFLAGS_RDRND "-mrdrnd") - set(QT_CFLAGS_RDSEED "-mrdseed") - set(QT_CFLAGS_SHANI "-msha") - endif() -endif() - # Fall through is important, so that more specific flags that might be missing are set by the # previous base cases. # This mirrors qmake's mkspecs QMAKE_CFLAGS_OPTIMIZE assignments (mostly). @@ -148,7 +104,7 @@ if(GCC OR CLANG AND NOT WASM) endif() # Flags that CMake might set, aka flags the compiler would see as valid values. -if(GCC OR CLANG OR QCC OR ICC) +if(GCC OR CLANG OR QCC) set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "-O0" "-O1" "-O2" "-O3" "-Os" "-Oz") endif() @@ -184,16 +140,6 @@ if (QCC) set(QT_CFLAGS_OPTIMIZE_FULL "-O3") endif() -if(ICC) - if(MSVC) - set(QT_CFLAGS_OPTIMIZE_FULL "-O3") - else() - # Should inherit gcc base - set(QT_CFLAGS_OPTIMIZE "-O2") - set(QT_CFLAGS_OPTIMIZE_SIZE "-Os") - endif() -endif() - if(WASM) set(QT_CFLAGS_OPTIMIZE "-O2") set(QT_CFLAGS_OPTIMIZE_FULL "-O3") diff --git a/cmake/QtFlagHandlingHelpers.cmake b/cmake/QtFlagHandlingHelpers.cmake index 11d6a3933e7..3558dd46acd 100644 --- a/cmake/QtFlagHandlingHelpers.cmake +++ b/cmake/QtFlagHandlingHelpers.cmake @@ -101,7 +101,7 @@ function(qt_internal_apply_gc_binaries target visibility) target_link_options("${target}" ${visibility} "${gc_sections_flag}") endif() - if((GCC OR CLANG OR ICC) AND NOT WASM AND NOT UIKIT AND NOT MSVC) + if((GCC OR CLANG) AND NOT WASM AND NOT UIKIT AND NOT MSVC) set(split_sections_flags "-ffunction-sections" "-fdata-sections") endif() if(split_sections_flags) @@ -161,8 +161,6 @@ function(qt_internal_set_exceptions_flags target exceptions_on) else() set(_flag "-fno-exceptions") endif() - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - set(_flag "-fno-exceptions") endif() endif() @@ -242,8 +240,6 @@ function(qt_enable_utf8_sources target) set(utf8_flags "") if(MSVC) list(APPEND utf8_flags "-utf-8") - elseif(WIN32 AND ICC) - list(APPEND utf8_flags "-Qoption,cpp,--unicode_source_kind,UTF-8") endif() if(utf8_flags) diff --git a/cmake/QtHeadersClean.cmake b/cmake/QtHeadersClean.cmake index f2596b4733e..c2b83ccb480 100644 --- a/cmake/QtHeadersClean.cmake +++ b/cmake/QtHeadersClean.cmake @@ -97,8 +97,7 @@ function(qt_internal_add_headers_clean_target "$<${compile_flags_exist_genex}:$>") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" - OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|IntelLLVM" - OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") + OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang|IntelLLVM") # Turn on some extra warnings not found in -Wall -Wextra. set(hcleanFLAGS -Wall -Wextra -Werror -Woverloaded-virtual -Wshadow -Wundef -Wfloat-equal @@ -109,38 +108,25 @@ function(qt_internal_add_headers_clean_target list(APPEND hcleanFLAGS -fPIC) endif() - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - # these warnings are disabled because explicit constructors with zero or - # multiple arguments are permitted in C++11: - # 2304: non-explicit constructor with single argument may cause implicit type - # conversion - # 2305: declaration of 'explicit' constructor without a single argument is - # redundant - # - # ICC 14+ has a bug with -Wshadow, emitting it for cases where there's no - # shadowing (issue ID 0000698329, task DPD200245740) - list(APPEND hcleanFLAGS -wd2304,2305 -Wshadow) - else() - # options accepted by GCC and Clang - list(APPEND hcleanFLAGS -Wchar-subscripts -Wold-style-cast) + # options accepted by GCC and Clang + list(APPEND hcleanFLAGS -Wchar-subscripts -Wold-style-cast) - if (NOT ((TEST_architecture_arch STREQUAL arm) - OR (TEST_architecture_arch STREQUAL mips))) - list(APPEND hcleanFLAGS -Wcast-align) + if (NOT ((TEST_architecture_arch STREQUAL arm) + OR (TEST_architecture_arch STREQUAL mips))) + list(APPEND hcleanFLAGS -Wcast-align) + endif() + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + list(APPEND hcleanFLAGS -Wzero-as-null-pointer-constant) + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.5) + list(APPEND hcleanFLAGS -Wdouble-promotion) endif() + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9) + list(APPEND hcleanFLAGS -Wfloat-conversion) - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - list(APPEND hcleanFLAGS -Wzero-as-null-pointer-constant) - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.5) - list(APPEND hcleanFLAGS -Wdouble-promotion) - endif() - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9) - list(APPEND hcleanFLAGS -Wfloat-conversion) - - # GCC 9 has a lot of false positives relating to these - list(APPEND hcleanFlags -Wno-deprecated-copy -Wno-redundant-move - -Wno-format-overflow -Wno-init-list-lifetime) - endif() + # GCC 9 has a lot of false positives relating to these + list(APPEND hcleanFlags -Wno-deprecated-copy -Wno-redundant-move + -Wno-format-overflow -Wno-init-list-lifetime) endif() endif() diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index 7bfa77d2b8a..c4bc90247ac 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -47,20 +47,6 @@ function(qt_internal_set_warnings_are_errors_flags target) if (ANDROID) list(APPEND flags -Wno-error=literal-suffix) endif() - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - # Intel CC 13.0 +, on Linux only - if (LINUX) - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "13.0.0") - # 177: function "entity" was declared but never referenced - # (too aggressive; ICC reports even for functions created due to template instantiation) - # 1224: #warning directive - # 1478: function "entity" (declared at line N) was declared deprecated - # 1786: function "entity" (declared at line N of "file") was declared deprecated ("message") - # 1881: argument must be a constant null pointer value - # (NULL in C++ is usually a literal 0) - list(APPEND flags -Werror -ww177,1224,1478,1786,1881) - endif() - endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # Only enable for versions of MSVC that are known to work # 1929 is Visual Studio 2019 version 16.0 diff --git a/cmake/QtPlatformSupport.cmake b/cmake/QtPlatformSupport.cmake index e4a33ab46f9..11b316419ad 100644 --- a/cmake/QtPlatformSupport.cmake +++ b/cmake/QtPlatformSupport.cmake @@ -32,7 +32,6 @@ qt_set01(MACOS APPLE AND NOT UIKIT) qt_set01(GCC CMAKE_CXX_COMPILER_ID STREQUAL "GNU") qt_set01(CLANG CMAKE_CXX_COMPILER_ID MATCHES "Clang|IntelLLVM") qt_set01(APPLECLANG CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") -qt_set01(ICC CMAKE_CXX_COMPILER_ID STREQUAL "Intel") qt_set01(IntelLLVM CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") qt_set01(QCC CMAKE_CXX_COMPILER_ID STREQUAL "QCC") # CMP0047 diff --git a/cmake/QtPriHelpers.cmake b/cmake/QtPriHelpers.cmake index ba7322ad036..8f7e3e9b867 100644 --- a/cmake/QtPriHelpers.cmake +++ b/cmake/QtPriHelpers.cmake @@ -724,10 +724,6 @@ QT_PATCH_VERSION = ${PROJECT_VERSION_PATCH} set(compiler_version_major_var_name "QT_GCC_MAJOR_VERSION") set(compiler_version_minor_var_name "QT_GCC_MINOR_VERSION") set(compiler_version_patch_var_name "QT_GCC_PATCH_VERSION") - elseif(ICC) - set(compiler_version_major_var_name "QT_ICC_MAJOR_VERSION") - set(compiler_version_minor_var_name "QT_ICC_MINOR_VERSION") - set(compiler_version_patch_var_name "QT_ICC_PATCH_VERSION") elseif(MSVC) set(compiler_version_major_var_name "QT_MSVC_MAJOR_VERSION") set(compiler_version_minor_var_name "QT_MSVC_MINOR_VERSION") diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake index e9aa7d32590..6cb17c4e7d6 100644 --- a/cmake/QtProcessConfigureArgs.cmake +++ b/cmake/QtProcessConfigureArgs.cmake @@ -744,9 +744,6 @@ function(guess_compiler_from_mkspec) elseif(mkspec MATCHES "-clang(-|$)" AND NOT mkspec MATCHES "android") set(c_compiler "clang") set(cxx_compiler "clang++") - elseif(mkspec MATCHES "-icc(-|$)") - set(c_compiler "icc") - set(cxx_compiler "icpc") elseif(mkspec MATCHES "-msvc(-|$)") set(c_compiler "cl") set(cxx_compiler "cl") diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 1f760cbd3aa..e1d63a34a03 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -690,12 +690,6 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_std_atomic64 WrapAtomic::WrapAtomic ) -qt_internal_extend_target(Core CONDITION ICC - COMPILE_OPTIONS - -fp-model - strict -) - qt_internal_extend_target(Core CONDITION QT_FEATURE_system_zlib LIBRARIES WrapZLIB::WrapZLIB @@ -776,7 +770,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_easingcurve tools/qtimeline.cpp tools/qtimeline.h ) -qt_internal_extend_target(Core CONDITION UNIX AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS AND NOT WASM AND (NOT ICC OR NOT MACOS) +qt_internal_extend_target(Core CONDITION UNIX AND NOT HAIKU AND NOT INTEGRITY AND NOT VXWORKS AND NOT WASM AND NOT MACOS LIBRARIES m ) diff --git a/src/plugins/platforms/xcb/CMakeLists.txt b/src/plugins/platforms/xcb/CMakeLists.txt index 48c44a92aba..c73b2de73fd 100644 --- a/src/plugins/platforms/xcb/CMakeLists.txt +++ b/src/plugins/platforms/xcb/CMakeLists.txt @@ -111,7 +111,7 @@ qt_internal_extend_target(XcbQpaPrivate CONDITION QT_FEATURE_dlopen ${CMAKE_DL_LIBS} ) -qt_internal_extend_target(XcbQpaPrivate CONDITION CLANG AND NOT ICC +qt_internal_extend_target(XcbQpaPrivate CONDITION CLANG COMPILE_OPTIONS -ftemplate-depth=1024 ) diff --git a/tests/auto/corelib/global/qnumeric/CMakeLists.txt b/tests/auto/corelib/global/qnumeric/CMakeLists.txt index 0359af03aeb..f86ddffc1d1 100644 --- a/tests/auto/corelib/global/qnumeric/CMakeLists.txt +++ b/tests/auto/corelib/global/qnumeric/CMakeLists.txt @@ -13,14 +13,3 @@ qt_internal_add_test(tst_qnumeric ## Scopes: ##################################################################### - -qt_internal_extend_target(tst_qnumeric CONDITION ICC - COMPILE_OPTIONS - -fp-model - strict -) - -qt_internal_extend_target(tst_qnumeric CONDITION intel_icl - COMPILE_OPTIONS - /fp:strict -) diff --git a/tests/auto/tools/moc/CMakeLists.txt b/tests/auto/tools/moc/CMakeLists.txt index 228af5992e9..44c9ee3fa93 100644 --- a/tests/auto/tools/moc/CMakeLists.txt +++ b/tests/auto/tools/moc/CMakeLists.txt @@ -85,11 +85,11 @@ qt_internal_extend_target(tst_moc CONDITION CMAKE_CROSSCOMPILING MOC_CROSS_COMPILED ) -if (UNIX AND (CLANG OR GCC OR ICC OR QCC)) +if (UNIX AND (CLANG OR GCC OR QCC)) qt_wrap_cpp(os9_moc os9-newlines.h) endif() -qt_internal_extend_target(tst_moc CONDITION UNIX AND (CLANG OR GCC OR ICC OR QCC) +qt_internal_extend_target(tst_moc CONDITION UNIX AND (CLANG OR GCC OR QCC) SOURCES os9-newlines.h win-newlines.h