cb0ea39895
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>
152 lines
4.9 KiB
CMake
152 lines
4.9 KiB
CMake
if (QCC)
|
|
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 "-mavx")
|
|
set(QT_CFLAGS_AVX2 "-mavx2")
|
|
set(QT_CFLAGS_ARCH_HASWELL "-march=haswell")
|
|
set(QT_CFLAGS_AESNI "-maes")
|
|
set(QT_CFLAGS_SHANI "-msha")
|
|
endif()
|
|
|
|
if (MSVC)
|
|
if (QT_64BIT)
|
|
# SSE2 is mandatory on 64-bit mode, so skip the option. It triggers:
|
|
# cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2'
|
|
set(QT_CFLAGS_SSE2 "")
|
|
else()
|
|
set(QT_CFLAGS_SSE2 "-arch:SSE2")
|
|
endif()
|
|
set(QT_CFLAGS_SSE3 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSSE3 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSE4_1 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSE4_2 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_AESNI "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SHANI "${QT_CFLAGS_SSE2}")
|
|
|
|
# FIXME to be Visual Studio version specific, like in mkspecs/common/msvc-version.conf
|
|
set(QT_CFLAGS_AVX "-arch:AVX")
|
|
set(QT_CFLAGS_AVX2 "-arch:AVX2")
|
|
set(QT_CFLAGS_F16C "-arch:AVX")
|
|
set(QT_CFLAGS_RDRND "")
|
|
set(QT_CFLAGS_RDSEED "")
|
|
set(QT_CFLAGS_AVX512F "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512ER "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512CD "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512PF "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512DQ "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512BW "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512VL "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512IFMA "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512VBMI "-arch:AVX512")
|
|
endif()
|
|
|
|
if(GCC OR CLANG)
|
|
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_F16C "-mf16c")
|
|
set(QT_CFLAGS_RDRND "-mrdrnd")
|
|
set(QT_CFLAGS_RDSEED "-mrdseed")
|
|
set(QT_CFLAGS_AVX "-mavx")
|
|
set(QT_CFLAGS_AVX2 "-mavx2")
|
|
set(QT_CFLAGS_ARCH_HASWELL "-march=haswell")
|
|
set(QT_CFLAGS_AVX512F "-mavx512f")
|
|
set(QT_CFLAGS_AVX512ER "-mavx512er")
|
|
set(QT_CFLAGS_AVX512CD "-mavx512cd")
|
|
set(QT_CFLAGS_AVX512PF "-mavx512pf")
|
|
set(QT_CFLAGS_AVX512DQ "-mavx512dq")
|
|
set(QT_CFLAGS_AVX512BW "-mavx512bw")
|
|
set(QT_CFLAGS_AVX512VL "-mavx512vl")
|
|
set(QT_CFLAGS_AVX512IFMA "-mavx512ifma")
|
|
set(QT_CFLAGS_AVX512VBMI "-mavx512vbmi")
|
|
set(QT_CFLAGS_AESNI "-maes")
|
|
set(QT_CFLAGS_SHANI "-msha")
|
|
if(NOT UIKIT AND NOT QT_64BIT)
|
|
set(QT_CFLAGS_NEON "-mfpu=neon")
|
|
endif()
|
|
set(QT_CFLAGS_MIPS_DSP "-mdsp")
|
|
set(QT_CFLAGS_MIPS_DSPR2 "-mdspr2")
|
|
endif()
|
|
|
|
if (winrt) # FIXME: Correct variable
|
|
set(QT_CFLAGS_SSE2 "-arch:SSE2")
|
|
set(QT_CFLAGS_SSE3 "-arch:SSE2")
|
|
set(QT_CFLAGS_SSSE3 "-arch:SSE2")
|
|
set(QT_CFLAGS_SSE4_1 "-arch:SSE2")
|
|
set(QT_CFLAGS_SSE4_2 "-arch:SSE2")
|
|
set(QT_CFLAGS_AVX "-arch:AVX")
|
|
set(QT_CFLAGS_AVX2 "-arch:AVX")
|
|
set(QT_CFLAGS_AESNI "-arch:SSE2")
|
|
set(QT_CFLAGS_SHANI "-arch:SSE2")
|
|
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).
|
|
#
|
|
# TODO: Missing mkspecs flags we don't handle below: win32-clang-g++, win32-clang-msvc, rtems-base
|
|
#
|
|
# gcc and clang base
|
|
if(GCC OR CLANG AND NOT WASM)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-Og")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-Os")
|
|
|
|
if(CLANG)
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# Flags that CMake might set, aka flags the compiler would see as valid values.
|
|
if(GCC OR CLANG OR QCC)
|
|
set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "-O0" "-O1" "-O2" "-O3" "-Os" "-Oz")
|
|
endif()
|
|
|
|
|
|
# Windows MSVC
|
|
if(MSVC)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-Od")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-O1")
|
|
set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "/O2" "/O1" "/Od" "/Ob0" "/Ob1" "/Ob2" "/O0" "-O0")
|
|
|
|
if(CLANG)
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "/clang:-O3")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "/clang:-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# Android Clang
|
|
if(CLANG AND ANDROID)
|
|
if(QT_FEATURE_ltcg)
|
|
# When using LTCG, the linker cannot cope with -Oz. See QTBUG-89472 for details.
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
else()
|
|
set(QT_CFLAGS_OPTIMIZE "-Oz")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# qcc
|
|
if (QCC)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
endif()
|
|
|
|
if(WASM)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-Os")
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-g2")
|
|
|
|
set(QT_CFLAGS_SSE2 -O2 -msimd128 -msse -msse2)
|
|
|
|
endif()
|