summaryrefslogtreecommitdiffstats
path: root/cmake/QtCompilerOptimization.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtCompilerOptimization.cmake')
-rw-r--r--cmake/QtCompilerOptimization.cmake54
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()