From aebb3f7e6013e86dcc82ddab267aa0d9d7cd2994 Mon Sep 17 00:00:00 2001 From: Radovan Bast Date: Mon, 11 Apr 2016 13:06:59 +0200 Subject: [PATCH] module for saving compiler flags to cache --- modules/save_flags.cmake | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 modules/save_flags.cmake diff --git a/modules/save_flags.cmake b/modules/save_flags.cmake new file mode 100644 index 0000000..d3dd677 --- /dev/null +++ b/modules/save_flags.cmake @@ -0,0 +1,43 @@ +#.rst: +# +# Take care of updating the cache for fresh configurations. +# +# Variables modified (provided the corresponding language is enabled):: +# +# DEFAULT_Fortran_FLAGS_SET +# DEFAULT_C_FLAGS_SET +# DEFAULT_CXX_FLAGS_SET + +macro(save_compiler_flags lang) + if (NOT DEFINED DEFAULT_${lang}_FLAGS_SET) + mark_as_advanced(DEFAULT_${lang}_FLAGS_SET) + + set (DEFAULT_${lang}_FLAGS_SET ON + CACHE INTERNAL + "Flag that the default ${lang} compiler flags have been set.") + + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}" + CACHE STRING + "Flags used by the compiler during all builds." FORCE) + + set(CMAKE_${lang}_FLAGS_DEBUG "${CMAKE_${lang}_FLAGS_DEBUG}" + CACHE STRING + "Flags used by the compiler during debug builds." FORCE) + + set(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE}" + CACHE STRING + "Flags used by the compiler during release builds." FORCE) + endif() +endmacro() + +if(DEFINED CMAKE_Fortran_COMPILER_ID) + save_compiler_flags(Fortran) +endif() + +if(DEFINED CMAKE_C_COMPILER_ID) + save_compiler_flags(C) +endif() + +if(DEFINED CMAKE_CXX_COMPILER_ID) + save_compiler_flags(CXX) +endif()