Skip to content
Snippets Groups Projects
Commit e9c88282 authored by Santiago Ospina De Los Ríos's avatar Santiago Ospina De Los Ríos
Browse files

Merge branch 'issue/policy-with-project-local-scope' into 'master'

Make dune policies a project local property

Closes #385

See merge request !1441
parents 07b5c648 321d8fd8
Branches
No related tags found
2 merge requests!1470Fix wrong variable name to make target hash (2.10),!1441Make dune policies a project local property
Pipeline #74315 waiting for manual action
......@@ -3,3 +3,4 @@
add_subdirectory(modules)
add_subdirectory(scripts)
add_subdirectory(test)
\ No newline at end of file
......@@ -77,7 +77,7 @@ function(dune_get_policy _policy _var)
dune_policy_help(FATAL_ERROR "Undefined policy ${_policy}.")
endif()
endif()
get_property(_policy_set GLOBAL PROPERTY DUNE_POLICY_${_policy} SET)
get_property(_policy_set GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy} SET)
if(NOT _policy_set)
get_property(_policy_version GLOBAL PROPERTY DUNE_POLICY_${_policy}_VERSION)
get_property(_policy_module GLOBAL PROPERTY DUNE_POLICY_${_policy}_MODULE)
......@@ -85,17 +85,17 @@ function(dune_get_policy _policy _var)
set(_policy_value "NEW")
else()
get_property(_policy_doc GLOBAL PROPERTY DUNE_POLICY_${_policy} BRIEF_DOCS)
get_property(_policy_warning GLOBAL PROPERTY DUNE_POLICY_${_policy}_WARNING)
if(NOT _policy_warning)
get_property(_policy_warning GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy}_WARNING)
if(NOT _policy_warning AND NOT DUNE_POLICY_DISABLE_WARNING)
message(AUTHOR_WARNING "Policy ${_policy} is not set: ${_policy_doc} "
"Use the dune_policy(SET) command to set the policy and suppress this warning. "
"The default value ${DUNE_POLICY_DEFAULT} will be used in the meantime.")
set_property(GLOBAL PROPERTY DUNE_POLICY_${_policy}_WARNING TRUE)
set_property(GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy}_WARNING TRUE)
endif()
set(_policy_value ${DUNE_POLICY_DEFAULT})
endif()
else()
get_property(_policy_value GLOBAL PROPERTY DUNE_POLICY_${_policy})
get_property(_policy_value GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy})
endif()
set(${_var} ${_policy_value} PARENT_SCOPE)
endfunction(dune_get_policy)
......@@ -110,7 +110,7 @@ function(dune_set_policy _policy _value)
dune_policy_help(FATAL_ERROR "Undefined policy ${_policy}.")
endif()
endif()
set_property(GLOBAL PROPERTY DUNE_POLICY_${_policy} ${_value})
set_property(GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy} ${_value})
endfunction(dune_set_policy)
# generic policy method to get, set, or list policies
......@@ -129,7 +129,7 @@ function(dune_policy _method)
elseif(_method STREQUAL "LIST")
get_property(_policies GLOBAL PROPERTY DUNE_POLICIES)
foreach(_policy ${policies})
get_property(_policy_value GLOBAL PROPERTY DUNE_POLICY_${_policy})
get_property(_policy_value GLOBAL PROPERTY ${PROJECT_NAME}_POLICY_${_policy})
if(NOT _policy_value)
set(_policy_value ${DUNE_POLICY_DEFAULT})
endif()
......@@ -148,6 +148,5 @@ function(dune_define_policy _policy _module _version _doc)
BRIEF_DOCS "${_doc}" FULL_DOCS "${_doc}")
set_property(GLOBAL PROPERTY DUNE_POLICY_${_policy}_MODULE ${_module})
set_property(GLOBAL PROPERTY DUNE_POLICY_${_policy}_VERSION ${_version})
set_property(GLOBAL PROPERTY DUNE_POLICY_${_policy}_WARNING ${DUNE_POLICY_DISABLE_WARNING})
set_property(GLOBAL APPEND PROPERTY DUNE_POLICIES ${_policy})
endfunction(dune_define_policy)
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
dune_declare_test_label(LABELS buildsystem)
add_test(
NAME dunepolicytest
COMMAND ${CMAKE_COMMAND}
-DCMAKE_MODULE_PATH=${PROJECT_SOURCE_DIR}/cmake/modules
-S ${CMAKE_CURRENT_SOURCE_DIR}/dune_policy
-B ${CMAKE_CURRENT_BINARY_DIR}/dune_policy
)
set_tests_properties(dunepolicytest PROPERTIES LABELS buildsystem)
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
cmake_minimum_required(VERSION 3.16)
project(dune_policy_test VERSION 0.1)
include(DunePolicy)
dune_define_policy(_DP000X dune_policy_test 1.0 "The is a test policy")
add_subdirectory(project1)
add_subdirectory(project2)
\ No newline at end of file
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
cmake_minimum_required(VERSION 3.16)
project(_project1 VERSION 0.1)
include(DunePolicy)
dune_set_policy(_DP000X NEW)
\ No newline at end of file
# SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
cmake_minimum_required(VERSION 3.16)
project(_project2 VERSION 0.1)
include(DunePolicy)
set(DUNE_POLICY_DISABLE_WARNING ON)
dune_get_policy(_DP000X _policy)
if(_policy STREQUAL NEW)
message(FATAL_ERROR "Dune policy _DP000X should not be set to NEW")
endif()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment