From 7db29836a59c17a5565d16fdbc5c5903f73302ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Tue, 30 Aug 2022 16:30:00 +0200 Subject: [PATCH] cmake: Use same default optimization level as Makefiles. Support overriding optimization level in COMMON_OPT, CCOMMON_OPT, and FCOMMON_OPT. --- CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c92356e78..101a96c989 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,36 @@ if(MSVC AND MSVC_STATIC_CRT) endforeach() endif() +# Set default optimization level +if (NOT MSVC) + # Filter out cmake's default optimization level from release and debug flags. + # They would override any optimization level set in COMMON_OPTs + set(CompilerLangs + CXX + C + Fortran + ASM + ) + foreach(CompilerLang ${CompilerLangs}) + string(REGEX REPLACE "-O[0-9]|-Ofast|-Og|-Os" + "" CMAKE_${CompilerLang}_FLAGS_RELEASE + "${CMAKE_${CompilerLang}_FLAGS_RELEASE}") + string(REGEX REPLACE "-O[0-9]|-Ofast|-Og|-Os" + "" CMAKE_${CompilerLang}_FLAGS_DEDUG + "${CMAKE_${CompilerLang}_FLAGS_DEDUG}") + endforeach() + # Prepend default optimization level to COMMON_OPTs + if (CMAKE_BUILD_TYPE EQUAL "DEBUG") + set(COMMON_OPT "-Og ${COMMON_OPT}") + set(CCOMMON_OPT "-Og ${CCOMMON_OPT}") + set(FCOMMON_OPT "-Og ${FCOMMON_OPT}") + else () + set(COMMON_OPT "-O2 ${COMMON_OPT}") + set(CCOMMON_OPT "-O2 ${CCOMMON_OPT}") + set(FCOMMON_OPT "-O2 ${FCOMMON_OPT}") + endif () +endif () + message(WARNING "CMake support is experimental. It does not yet support all build options and may not produce the same Makefiles that OpenBLAS ships with.") include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake")