From bd289121f71c45bd0261672e91410a2951f4fe3f Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 10 Aug 2017 11:51:35 +0200 Subject: Change compilation flags setup. Use CMAKE cache variables other than defaults ones to don't be in conflict and iterates over them with add_compile_options command Change-Id: I5e62ab1a340aca15eafeb687998c06e13a571357 Signed-off-by: Romain Forlot --- cmake/cmake.d/04-build_options.cmake | 59 ++++++++++++++++++++++-------------- cmake/config.cmake.sample | 13 ++++++-- 2 files changed, 47 insertions(+), 25 deletions(-) (limited to 'cmake') diff --git a/cmake/cmake.d/04-build_options.cmake b/cmake/cmake.d/04-build_options.cmake index b0257f9..7f990b2 100644 --- a/cmake/cmake.d/04-build_options.cmake +++ b/cmake/cmake.d/04-build_options.cmake @@ -61,29 +61,42 @@ INCLUDE(GNUInstallDirs) # Default compilation options ############################################################################ link_libraries(-Wl,--as-needed -Wl,--gc-sections) -add_compile_options(-Wall -Wextra -Wconversion) -add_compile_options(-Wno-unused-parameter) # frankly not using a parameter does it care? -add_compile_options(-Wno-sign-compare -Wno-sign-conversion) -add_compile_options(-Werror=maybe-uninitialized) -add_compile_options(-Werror=implicit-function-declaration) -add_compile_options(-ffunction-sections -fdata-sections) -add_compile_options(-fPIC) - -# TODO: make more visible readable compile (macro ? split ?) +set(COMPILE_OPTIONS "-Wall" "-Wextra" "-Wconversion" "-Wno-unused-parameter" "-Wno-sign-compare" "-Wno-sign-conversion" "-Werror=maybe-uninitialized" "-Werror=implicit-function-declaration" "-ffunction-sections" "-fdata-sections" "-fPIC" CACHE STRING "Compilation flags") +foreach(option ${COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() + +# Compilation OPTIONS depending on language +######################################### + +foreach(option ${COMPILE_OPTIONS}) + add_compile_options(${option}) +endforeach() +foreach(option ${C_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() +foreach(option ${CXX_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() + # Compilation option depending on CMAKE_BUILD_TYPE ################################################## -add_compile_options($<$:-g>) -add_compile_options($<$:-O0>) -add_compile_options($<$:-pg>) -add_compile_options($<$:-Wp,-U_FORTIFY_SOURCE>) - -add_compile_options($<$:-g>) -add_compile_options($<$:-ggdb>) -add_compile_options($<$:-Wp,-U_FORTIFY_SOURCE>) - -add_compile_options($<$:-g>) -add_compile_options($<$:-O2>) -add_compile_options($<$:--coverage>) +set(PROFILING_COMPILE_OPTIONS "-g" "-O0" "-pg" "-Wp,-U_FORTIFY_SOURCE" CACHE STRING "Compilation flags for PROFILING build type.") +set(DEBUG_COMPILE_OPTIONS "-g" "-ggdb" "-Wp,-U_FORTIFY_SOURCE" CACHE STRING "Compilation flags for DEBUG build type.") +set(CCOV_COMPILE_OPTIONS "-g" "-O2" "--coverage" CACHE STRING "Compilation flags for CCOV build type.") +set(RELEASE_COMPILE_OPTIONS "-g" "-O2" CACHE STRING "Compilation flags for RELEASE build type.") +foreach(option ${PROFILING_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() +foreach(option ${DEBUG_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() +foreach(option ${CCOV_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() +foreach(option ${RELEASE_COMPILE_OPTIONS}) + add_compile_options($<$:${option}>) +endforeach() # Env variable overload default if(DEFINED ENV{INSTALL_PREFIX}) @@ -99,8 +112,8 @@ foreach (PKG_CONFIG ${PKG_REQUIRED_LIST}) PKG_CHECK_MODULES(${XPREFIX} REQUIRED ${PKG_CONFIG}) INCLUDE_DIRECTORIES(${${XPREFIX}_INCLUDE_DIRS}) - list (APPEND link_libraries ${${XPREFIX}_LDFLAGS}) - add_compile_options (${${XPREFIX}_CFLAGS}) + list (APPEND link_libraries ${${XPREFIX}_LDOPTIONS}) + add_compile_options (${${XPREFIX}_COPTIONS}) endforeach(PKG_CONFIG) # Optional LibEfence Malloc debug library diff --git a/cmake/config.cmake.sample b/cmake/config.cmake.sample index 23f1e80..f5ac42a 100644 --- a/cmake/config.cmake.sample +++ b/cmake/config.cmake.sample @@ -80,8 +80,17 @@ set (PKG_REQUIRED_LIST # Compilation options definition # Use CMake generator expressions to specify only for a specific language -# ----------------------------------------------------------------------- -#add_compile_options() +# Values are prefilled with default options that is currently used. +# Either separate options with ";", or each options must be quoted separately +# DO NOT PUT ALL OPTION QUOTED AT ONCE , COMPILATION COULD FAILED ! +# ---------------------------------------------------------------------------- +#set(COMPILE_OPTIONS "-Wall" "-Wextra" "-Wconversion" "-Wno-unused-parameter" "-Wno-sign-compare" "-Wno-sign-conversion" "-Werror=maybe-uninitialized" "-Werror=implicit-function-declaration" "-ffunction-sections" "-fdata-sections" "-fPIC" CACHE STRING "Compilation flags") +#set(C_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C language.") +#set(CXX_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C++ language.") +#set(PROFILING_COMPILE_OPTIONS "-g" "-O0" "-pg" "-Wp,-U_FORTIFY_SOURCE" CACHE STRING "Compilation flags for PROFILING build type.") +#set(DEBUG_COMPILE_OPTIONS "-g" "-ggdb" "-Wp,-U_FORTIFY_SOURCE" CACHE STRING "Compilation flags for DEBUG build type.") +#set(CCOV_COMPILE_OPTIONS "-g" "-O2" "--coverage" CACHE STRING "Compilation flags for CCOV build type.") +#set(RELEASE_COMPILE_OPTIONS "-g" "-O2" CACHE STRING "Compilation flags for RELEASE build type.") # Print a helper message when every thing is finished # ---------------------------------------------------- -- cgit 1.2.3-korg