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 <alexandru.croitor@qt.io>
This commit is contained in:
Thiago Macieira 2021-10-12 13:39:37 -07:00
parent 63d80c7c4b
commit cb0ea39895
13 changed files with 23 additions and 138 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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")

View File

@ -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)

View File

@ -97,8 +97,7 @@ function(qt_internal_add_headers_clean_target
"$<${compile_flags_exist_genex}:$<JOIN:${target_compile_flags_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()

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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")

View File

@ -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
)

View File

@ -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
)

View File

@ -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
)

View File

@ -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