From 2969da6ce4dff66cb5b92e49714fc8783fa936c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20M=C3=BCthing?= <muething@dune-project.org> Date: Tue, 19 May 2015 09:25:29 +0200 Subject: [PATCH] [Release][CMake] Add support for compile options in DuneEnableAllPackages --- cmake/modules/DuneEnableAllPackages.cmake | 32 ++++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/cmake/modules/DuneEnableAllPackages.cmake b/cmake/modules/DuneEnableAllPackages.cmake index 998891e7a..fdc9acc74 100644 --- a/cmake/modules/DuneEnableAllPackages.cmake +++ b/cmake/modules/DuneEnableAllPackages.cmake @@ -12,6 +12,7 @@ # # dune_enable_all_packages(INCLUDE_DIRS [include_dirs] # COMPILE_DEFINITIONS [compile_definitions] +# COMPILE_OPTIONS [compile_options] # MODULE_LIBRARIES [libraries] # [VERBOSE] [APPEND] # ) @@ -51,6 +52,7 @@ # # # dune_register_package_flags(COMPILE_DEFINITIONS [flags] +# COMPILE_OPTIONS [options] # INCLUDE_DIRS {includes] # LIBRARIES [libs] # [APPEND] @@ -77,7 +79,7 @@ function(dune_register_package_flags) include(CMakeParseArguments) set(OPTIONS APPEND) set(SINGLEARGS) - set(MULTIARGS COMPILE_DEFINITIONS INCLUDE_DIRS LIBRARIES) + set(MULTIARGS COMPILE_DEFINITIONS COMPILE_OPTIONS INCLUDE_DIRS LIBRARIES) cmake_parse_arguments(REGISTRY "${OPTIONS}" "${SINGLEARGS}" "${MULTIARGS}" ${ARGN}) if(REGISTRY_UNPARSED_ARGUMENTS) @@ -88,13 +90,16 @@ function(dune_register_package_flags) set_property(GLOBAL APPEND PROPERTY ALL_PKG_INCS "${REGISTRY_INCLUDE_DIRS}") set_property(GLOBAL APPEND PROPERTY ALL_PKG_LIBS "${REGISTRY_LIBRARIES}") set_property(GLOBAL APPEND PROPERTY ALL_PKG_DEFS "${REGISTRY_COMPILE_DEFINITIONS}") + set_property(GLOBAL APPEND PROPERTY ALL_PKG_OPTS "${REGISTRY_COMPILE_OPTIONS}") else(REGISTRY_APPEND) get_property(all_incs GLOBAL PROPERTY ALL_PKG_INCS) get_property(all_libs GLOBAL PROPERTY ALL_PKG_LIBS) get_property(all_defs GLOBAL PROPERTY ALL_PKG_DEFS) + get_property(all_defs GLOBAL PROPERTY ALL_PKG_OPTS) set_property(GLOBAL PROPERTY ALL_PKG_INCS "${REGISTRY_INCLUDE_DIRS}" "${all_incs}") set_property(GLOBAL PROPERTY ALL_PKG_LIBS "${REGISTRY_LIBRARIES}" "${all_libs}") set_property(GLOBAL PROPERTY ALL_PKG_DEFS "${REGISTRY_COMPILE_DEFINITIONS}" "${all_defs}") + set_property(GLOBAL PROPERTY ALL_PKG_OPTS "${REGISTRY_COMPILE_OPTIONS}" "${all_opts}") endif(REGISTRY_APPEND) endfunction(dune_register_package_flags) @@ -140,14 +145,30 @@ function(dune_enable_all_packages) # add compile definitions to all targets in module get_property(all_defs GLOBAL PROPERTY ALL_PKG_DEFS) - foreach(def ${all_defs}) - add_definitions("-D${def}") - endforeach(def in ${all_defs}) + add_definitions(${all_defs}) # verbose output of compile definitions if(DUNE_ENABLE_ALL_PACKAGES_VERBOSE) message("Compile definitions for this project: ${all_defs}") endif(DUNE_ENABLE_ALL_PACKAGES_VERBOSE) + # handle additional compile options specified in dune_enable_all_packages + if(DUNE_ENABLE_ALL_PACKAGES_COMPILE_OPTIONS) + if(DUNE_ENABLE_ALL_PACKAGES_APPEND) + set_property(GLOBAL APPEND PROPERTY ALL_PKG_OPTS "${DUNE_ENABLE_ALL_PACKAGES_COMPILE_OPTIONS}") + else(DUNE_ENABLE_ALL_PACKAGES_APPEND) + get_property(all_opts GLOBAL PROPERTY ALL_PKG_OPTS) + set_property(GLOBAL PROPERTY ALL_PKG_OPTS "${DUNE_ENABLE_ALL_PACKAGES_COMPILE_OPTIONS}" "${all_opts}") + endif(DUNE_ENABLE_ALL_PACKAGES_APPEND) + endif(DUNE_ENABLE_ALL_PACKAGES_COMPILE_OPTIONS) + + # add compile options to all targets in module + get_property(all_opts GLOBAL PROPERTY ALL_PKG_OPTS) + add_compile_options(${all_opts}) + # verbose output of compile definitions + if(DUNE_ENABLE_ALL_PACKAGES_VERBOSE) + message("Compile options for this project: ${all_opts}") + endif(DUNE_ENABLE_ALL_PACKAGES_VERBOSE) + # handle libraries # this is a little tricky because the libraries defined within the current module require special # handling to avoid tripping over CMake policies CMP022 and CMP038 @@ -212,6 +233,9 @@ function(dune_target_enable_all_packages) get_property(all_defs GLOBAL PROPERTY ALL_PKG_DEFS) target_compile_definitions(${_target} PUBLIC ${all_defs}) + get_property(all_opts GLOBAL PROPERTY ALL_PKG_OPTS) + target_compile_options(${_target} PUBLIC ${all_opts}) + get_property(all_libs GLOBAL PROPERTY ALL_PKG_LIBS) target_link_libraries(${_target} PUBLIC ${DUNE_LIBS} ${all_libs}) -- GitLab