diff options
Diffstat (limited to 'cmake/QtCompilerOptimization.cmake')
-rw-r--r-- | cmake/QtCompilerOptimization.cmake | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/cmake/QtCompilerOptimization.cmake b/cmake/QtCompilerOptimization.cmake index fc2922089c..4716888752 100644 --- a/cmake/QtCompilerOptimization.cmake +++ b/cmake/QtCompilerOptimization.cmake @@ -122,3 +122,57 @@ if (ICC) 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). +# +# 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) + 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 OR ICC) + 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") +endif() + +# Android Clang +if(CLANG AND ANDROID) + set(QT_CFLAGS_OPTIMIZE "-Oz") + set(QT_CFLAGS_OPTIMIZE_FULL "-Oz") +endif() + +# qcc +if (QCC) + set(QT_CFLAGS_OPTIMIZE "-O2") + 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() |