From 2e90c0797e26ae2cfb95d5eb33c44b392a872f6c Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 12:30:36 -0600 Subject: [PATCH 1/7] Fix and include doc for tribits_get_package_enable_status() in users/maintainers guide I had forgotten to do this when I wrote this code and this documentation. This is an important function that defines how TriBITS treats internal and external packages in a uniform way. I also fixed some typos on the documentation. --- .../core/package_arch/TribitsGetPackageEnableStatus.cmake | 8 ++++---- tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake index 2cfeb4946..5d99b5f84 100644 --- a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake +++ b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake @@ -10,8 +10,8 @@ # @FUNCTION: tribits_get_package_enable_status() # -# Function that determines if a given external or internal package's enable -# status (e.g. 'ON' or 'OFF') +# Function that determines a given external or internal package's enable +# status (e.g. 'ON' or 'OFF' or any valid CMake bool) # # Usage:: # @@ -21,8 +21,8 @@ # On return, if non-empty, the variable ```` will contain # the actual value of ``${${PROJECT_NAME}_ENABLE_}`` or # ``${TPL_ENABLE_}`` or will return empty "". If -# ``${packageName}_PACKAGE_BUILD_STATUS == "INTERNAL", then only the value of -# ``${PROJECT_NAME}_ENABLE_`` will be considered. +# ``${packageName}_PACKAGE_BUILD_STATUS == "INTERNAL"``, then only the value +# of ``${PROJECT_NAME}_ENABLE_`` will be considered. # # On return, if non-empty, the variable ```` will be # either ``${${PROJECT_NAME}_ENABLE_}`` or diff --git a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst index 15e079ea7..f5618c6d6 100644 --- a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst +++ b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst @@ -31,6 +31,7 @@ @FUNCTION: tribits_find_most_recent_binary_file_timestamp() + @FUNCTION: tribits_find_most_recent_file_timestamp() + @FUNCTION: tribits_find_most_recent_source_file_timestamp() + +@FUNCTION: tribits_get_package_enable_status() + @FUNCTION: tribits_install_headers() + @MACRO: tribits_include_directories() + @MACRO: tribits_pkg_export_cache_var() + From ddae17412f85d3a4db8e886f21989997490e401c Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 14:40:53 -0600 Subject: [PATCH 2/7] Add new function tribits_package_is_not_explicitly_disabled() This makes the logic in the code a little more understandable I think. I was looking over the code and I thought that this could be improved. This will get used in more code in future commits. NOTE: This gets tested through existing tests by usage in higher-level code (like the DependencyUnitTests tests). We will also need other functions like this to make the code more self-documenting. I also: * Added a tailing impl comment to help try to explain something. * Put the documented functions back in alphabetical order (moved tribits_process_enabled_standard_tpl()). --- .../TribitsAdjustPackageEnables.cmake | 16 ++++++++--- .../TribitsGetPackageEnableStatus.cmake | 28 +++++++++++++++++++ .../TribitsMacroFunctionDocTemplate.rst | 3 +- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index 120f2f65d..04b4c0ccb 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -426,12 +426,14 @@ macro(tribits_disable_parents_subpackages parentPackageName) set(subpkgFullName ${parentPackageName}${tap2_subPkgName}) - if (NOT ${PROJECT_NAME}_ENABLE_${subpkgFullName} STREQUAL "OFF") - set(packageBeingDisabledVarName ${PROJECT_NAME}_ENABLE_${subpkgFullName}) + set(subpkgBeingDisabledVarName ${PROJECT_NAME}_ENABLE_${subpkgFullName}) + tribits_package_is_not_explicitly_disabled(${subpkgBeingDisabledVarName} + subpkgIsNotExplicitlyDisabled) + if (subpkgIsNotExplicitlyDisabled) message("-- " - "Setting subpackage enable ${packageBeingDisabledVarName}=OFF" + "Setting subpackage enable ${subpkgBeingDisabledVarName}=OFF" " because parent package ${PROJECT_NAME}_ENABLE_${parentPackageName}=OFF") - set(${packageBeingDisabledVarName} OFF) + set(${subpkgBeingDisabledVarName} OFF) endif() endforeach() @@ -439,6 +441,12 @@ macro(tribits_disable_parents_subpackages parentPackageName) endif() endmacro() +# +# NOTE: Above, we don't need to use the function +# tribits_get_package_enable_status() because a subpackage in this context +# will never be an external package and therefore the enable var name will +# always be ${PROJECT_NAME}_ENABLE_${subpkgFullName}. (At least I can't think +# of a use case where that would occur.) # Macro that disables forward package that depends on the passed-in package diff --git a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake index 5d99b5f84..ab046e2bd 100644 --- a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake +++ b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake @@ -61,6 +61,34 @@ function(tribits_get_package_enable_status packageName packageEnableOut endfunction() +# @FUNCTION: tribits_package_is_not_explicitly_disabled() +# +# Function that determines if a package's enable variable is **not** +# explicitly disabled (i.e. is empty or evaluates to true). +# +# Usage:: +# +# tribits_package_is_not_explicitly_disabled(( +# ) +# +# On return, the value of ```` will set to +# ``TRUE`` if the variable ```` is empty "" or if it +# evaluates to true in CMake. Otherwise, +# ```` will set to ``FALSE`` on return. +# +function(tribits_package_is_not_explicitly_disabled packageEnableVarName + packageIsNotExplicitlyDisabledOut + ) + if (("${${packageEnableVarName}}" STREQUAL "") OR ${packageEnableVarName}) + set(packageIsNotExplicitlyDisabled TRUE) + else() + set(packageIsNotExplicitlyDisabled FALSE) + endif() + set(${packageIsNotExplicitlyDisabledOut} ${packageIsNotExplicitlyDisabled} + PARENT_SCOPE) +endfunction() + + # @FUNCTION: tribits_assert_package_enable_status() # # Function that asserts that if both ``${PROJECT_NAME}_ENABLE_${packageName}`` diff --git a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst index f5618c6d6..2db51625f 100644 --- a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst +++ b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst @@ -39,9 +39,10 @@ @MACRO: tribits_package_decl() + @MACRO: tribits_package_def() + @MACRO: tribits_package_define_dependencies() + +@MACRO: tribits_process_enabled_standard_tpl() + +@FUNCTION: tribits_package_is_not_explicitly_disabled() + @MACRO: tribits_package_postprocess() + @MACRO: tribits_process_subpackages() + -@MACRO: tribits_process_enabled_standard_tpl() + @MACRO: tribits_project() + @MACRO: tribits_project_define_extra_repositories() + @MACRO: tribits_project_enable_all() + From c84ee479489d5926e6b53508c37bd927237b756d Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 15:41:37 -0600 Subject: [PATCH 3/7] Add new function tribits_package_is_explicitly_disabled() This makes the code more understandable. NOTE: There is no specific unit test for this but it is tested indirectly through higher-level code and tests (like DependencyUnitTests tests). --- .../TribitsAdjustPackageEnables.cmake | 7 +++-- .../TribitsGetPackageEnableStatus.cmake | 28 +++++++++++++++++++ .../TribitsMacroFunctionDocTemplate.rst | 1 + 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index 04b4c0ccb..ccf0621f3 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -418,9 +418,10 @@ endmacro() # macro(tribits_disable_parents_subpackages parentPackageName) - if(NOT ${PROJECT_NAME}_ENABLE_${parentPackageName} - AND (NOT ${PROJECT_NAME}_ENABLE_${parentPackageName} STREQUAL "") - ) + tribits_package_is_explicitly_disabled(${PROJECT_NAME}_ENABLE_${parentPackageName} + parentPackageIsExplicityDisabled) + + if(parentPackageIsExplicityDisabled) foreach(tap2_subPkgName IN LISTS ${parentPackageName}_SUBPACKAGES) diff --git a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake index ab046e2bd..2240142fb 100644 --- a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake +++ b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake @@ -61,6 +61,34 @@ function(tribits_get_package_enable_status packageName packageEnableOut endfunction() +# @FUNCTION: tribits_package_is_explicitly_disabled() +# +# Function that determines if a package's enable variable is +# explicitly disabled (i.e. evaluates to false but is not emapty). +# +# Usage:: +# +# tribits_package_is_explicitly_disabled(( +# ) +# +# On return, the value of ```` will set to +# ``TRUE`` if the variable ```` evaluates to false and +# is not empty "". Otherwise, ```` will set +# to ``FALSE`` on return. +# +function(tribits_package_is_explicitly_disabled packageEnableVarName + packageIsExplicitlyDisabledOut + ) + if ((NOT ${packageEnableVarName}) AND (NOT "${${packageEnableVarName}}" STREQUAL "")) + set(packageIsExplicitlyDisabled TRUE) + else() + set(packageIsExplicitlyDisabled FALSE) + endif() + set(${packageIsExplicitlyDisabledOut} ${packageIsExplicitlyDisabled} + PARENT_SCOPE) +endfunction() + + # @FUNCTION: tribits_package_is_not_explicitly_disabled() # # Function that determines if a package's enable variable is **not** diff --git a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst index 2db51625f..b9f257677 100644 --- a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst +++ b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst @@ -40,6 +40,7 @@ @MACRO: tribits_package_def() + @MACRO: tribits_package_define_dependencies() + @MACRO: tribits_process_enabled_standard_tpl() + +@FUNCTION: tribits_package_is_explicitly_disabled() + @FUNCTION: tribits_package_is_not_explicitly_disabled() + @MACRO: tribits_package_postprocess() + @MACRO: tribits_process_subpackages() + From 7d0e8e8d36f1678853bf3897137b44bc14404dc9 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 15:47:39 -0600 Subject: [PATCH 4/7] Remove the function tribits_package_is_not_explicitly_disabled() You don't need a function tribits_package_is_not_explicitly_disabled() if you have a function tribits_package_is_explicitly_disabled(). The code is just a clear if you NOT the variable being returned from tribits_package_is_explicitly_disabled() --- .../TribitsAdjustPackageEnables.cmake | 6 ++-- .../TribitsGetPackageEnableStatus.cmake | 28 ------------------- .../TribitsMacroFunctionDocTemplate.rst | 1 - 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index ccf0621f3..cf4ab88af 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -428,9 +428,9 @@ macro(tribits_disable_parents_subpackages parentPackageName) set(subpkgFullName ${parentPackageName}${tap2_subPkgName}) set(subpkgBeingDisabledVarName ${PROJECT_NAME}_ENABLE_${subpkgFullName}) - tribits_package_is_not_explicitly_disabled(${subpkgBeingDisabledVarName} - subpkgIsNotExplicitlyDisabled) - if (subpkgIsNotExplicitlyDisabled) + tribits_package_is_explicitly_disabled(${subpkgBeingDisabledVarName} + subpkgIExplicitlyDisabled) + if (NOT subpkgIsExplicitlyDisabled) message("-- " "Setting subpackage enable ${subpkgBeingDisabledVarName}=OFF" " because parent package ${PROJECT_NAME}_ENABLE_${parentPackageName}=OFF") diff --git a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake index 2240142fb..aaa3bf827 100644 --- a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake +++ b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake @@ -89,34 +89,6 @@ function(tribits_package_is_explicitly_disabled packageEnableVarName endfunction() -# @FUNCTION: tribits_package_is_not_explicitly_disabled() -# -# Function that determines if a package's enable variable is **not** -# explicitly disabled (i.e. is empty or evaluates to true). -# -# Usage:: -# -# tribits_package_is_not_explicitly_disabled(( -# ) -# -# On return, the value of ```` will set to -# ``TRUE`` if the variable ```` is empty "" or if it -# evaluates to true in CMake. Otherwise, -# ```` will set to ``FALSE`` on return. -# -function(tribits_package_is_not_explicitly_disabled packageEnableVarName - packageIsNotExplicitlyDisabledOut - ) - if (("${${packageEnableVarName}}" STREQUAL "") OR ${packageEnableVarName}) - set(packageIsNotExplicitlyDisabled TRUE) - else() - set(packageIsNotExplicitlyDisabled FALSE) - endif() - set(${packageIsNotExplicitlyDisabledOut} ${packageIsNotExplicitlyDisabled} - PARENT_SCOPE) -endfunction() - - # @FUNCTION: tribits_assert_package_enable_status() # # Function that asserts that if both ``${PROJECT_NAME}_ENABLE_${packageName}`` diff --git a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst index b9f257677..c6b1e4768 100644 --- a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst +++ b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst @@ -41,7 +41,6 @@ @MACRO: tribits_package_define_dependencies() + @MACRO: tribits_process_enabled_standard_tpl() + @FUNCTION: tribits_package_is_explicitly_disabled() + -@FUNCTION: tribits_package_is_not_explicitly_disabled() + @MACRO: tribits_package_postprocess() + @MACRO: tribits_process_subpackages() + @MACRO: tribits_project() + From 5d4e5b2dd10214cf8e421856c4eb71736e560ff5 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 16:08:01 -0600 Subject: [PATCH 5/7] Add new function tribits_package_is_enabled_or_unset() This helps to make the code more clear. NOTE: This is tested as part of higher-level code and tests (e.g. DependencyUnitTests tests). --- .../TribitsAdjustPackageEnables.cmake | 4 ++- .../TribitsGetPackageEnableStatus.cmake | 28 +++++++++++++++++++ .../TribitsMacroFunctionDocTemplate.rst | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index cf4ab88af..f43490eac 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -945,7 +945,9 @@ macro(tribits_private_disable_required_package_enables fwdDepPkgName packageName libraryDep ) tribits_get_package_enable_status(${fwdDepPkgName} "" fwdDepPkgEnableVarName) - if (${fwdDepPkgEnableVarName} OR "${${fwdDepPkgEnableVarName}}" STREQUAL "") + tribits_package_is_enabled_or_unset(${fwdDepPkgEnableVarName} + fwdDepPkgIsEnabledOrUnset) + if (fwdDepPkgIsEnabledOrUnset) if ("${libraryDep}" STREQUAL "TRUE") tribits_private_print_disable_required_package_enable( ${packageName} ${fwdDepPkgEnableVarName} diff --git a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake index aaa3bf827..062c44c35 100644 --- a/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake +++ b/tribits/core/package_arch/TribitsGetPackageEnableStatus.cmake @@ -61,6 +61,34 @@ function(tribits_get_package_enable_status packageName packageEnableOut endfunction() +# @FUNCTION: tribits_package_is_enabled_or_unset() +# +# Function that determines if a package's enable variable evaluates to true or +# is unset. +# +# Usage:: +# +# tribits_package_is_enabled_or_unset(( +# ) +# +# On return, the value of ```` will set to +# ``TRUE`` if the variable ```` evaluates to true and +# or is empty "". Otherwise, ```` will set +# to ``FALSE`` on return. +# +function(tribits_package_is_enabled_or_unset packageEnableVarName + packageIsEnabledOrUnsetOut + ) + if (${packageEnableVarName} OR ("${${packageEnableVarName}}" STREQUAL "")) + set(packageIsEnabledOrUnset TRUE) + else() + set(packageIsEnabledOrUnset FALSE) + endif() + set(${packageIsEnabledOrUnsetOut} ${packageIsEnabledOrUnset} + PARENT_SCOPE) +endfunction() + + # @FUNCTION: tribits_package_is_explicitly_disabled() # # Function that determines if a package's enable variable is diff --git a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst index c6b1e4768..1546777bf 100644 --- a/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst +++ b/tribits/doc/guides/TribitsMacroFunctionDocTemplate.rst @@ -40,6 +40,7 @@ @MACRO: tribits_package_def() + @MACRO: tribits_package_define_dependencies() + @MACRO: tribits_process_enabled_standard_tpl() + +@FUNCTION: tribits_package_is_enabled_or_unset() + @FUNCTION: tribits_package_is_explicitly_disabled() + @MACRO: tribits_package_postprocess() + @MACRO: tribits_process_subpackages() + From dadc3e56a4b4a8a82d8f11873597146807c5f5ba Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 16:29:33 -0600 Subject: [PATCH 6/7] Remove tribits_set_package_enable_based_on_project_enable() Turns out the function tribits_set_package_enable_based_on_project_enable() was never called to default disable a package. I updated the one call to this function to call tribits_set_package_enable_based_on_project_enable_on() instead. --- .../TribitsAdjustPackageEnables.cmake | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index f43490eac..7fb527bd5 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -522,7 +522,7 @@ macro(tribits_apply_all_package_enables packageName) tribits_implicit_package_enable_is_allowed( "" ${packageName} processThisPackageEnable ) if (packageIsPmpp AND processThisPackageEnable) - tribits_set_package_enable_based_on_project_enable( + tribits_enable_package_based_on_project_enable_on( ${PROJECT_NAME}_ENABLE_ALL_PACKAGES ${PROJECT_NAME}_ENABLE_${packageName} ) endif() endmacro() @@ -608,9 +608,9 @@ macro(tribits_apply_test_example_enables packageName) if (${PROJECT_NAME}_ENABLE_${packageName}) tribits_is_primary_meta_project_package(${packageName} packageIsPmmp) if (packageIsPmmp) - tribits_set_package_enable_based_on_project_enable_on( + tribits_enable_package_based_on_project_enable_on( ${PROJECT_NAME}_ENABLE_TESTS ${packageName}_ENABLE_TESTS ) - tribits_set_package_enable_based_on_project_enable_on( + tribits_enable_package_based_on_project_enable_on( ${PROJECT_NAME}_ENABLE_EXAMPLES ${packageName}_ENABLE_EXAMPLES ) endif() endif() @@ -1059,37 +1059,10 @@ macro(tribits_private_disable_optional_package_enables fwdDepPkgName packageNa endmacro() -# Set an individual package variable enable variable (to ON or OFF) based on a -# global enable value -# -macro(tribits_set_package_enable_based_on_project_enable projectEnableVar - packageEnableVar - ) - - if ("${${packageEnableVar}}" STREQUAL "") - if (${projectEnableVar}) - message("-- " "Setting ${packageEnableVar}=ON") - set(${packageEnableVar} ON) - elseif ( (NOT ${projectEnableVar}) - AND (NOT "${projectEnableVar}" STREQUAL "") - ) - message("-- " "Setting ${packageEnableVar}=OFF") - set(${packageEnableVar} OFF) - else() - # Otherwise, we will leave it up the the individual package - # to decide? - endif() - else() - # "${packageEnableVar} not at the default empty '' - endif() - -endmacro() - - # Set an individual package test or examples enable to on only if global # enable var is on # -macro(tribits_set_package_enable_based_on_project_enable_on projectEnableVar +macro(tribits_enable_package_based_on_project_enable_on projectEnableVar packageEnableVar ) if (("${${packageEnableVar}}" STREQUAL "") AND ${projectEnableVar}) From 36a1fba0158b1df8fa477968812243fc292b1b50 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 30 Aug 2024 15:51:46 -0600 Subject: [PATCH 7/7] Use tribits_package_is_xxx() functions in more places * Use tribits_package_is_explicitly_disabled() * Use tribits_package_is_enabled_or_unset() --- .../TribitsAdjustPackageEnables.cmake | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake index 7fb527bd5..d62d67fbb 100644 --- a/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake +++ b/tribits/core/package_arch/TribitsAdjustPackageEnables.cmake @@ -454,7 +454,8 @@ endmacro() # macro(tribits_disable_forward_required_dep_packages packageName) tribits_get_package_enable_status(${packageName} packageEnable "") - if ((NOT packageEnable) AND (NOT "${packageEnable}" STREQUAL "")) + tribits_package_is_explicitly_disabled(packageEnable packageIsExplicitlyDisabled) + if (packageIsExplicitlyDisabled) foreach(fwdDepPkg IN LISTS ${packageName}_FORWARD_LIB_DEFINED_DEPENDENCIES) if (${fwdDepPkg}_LIB_DEP_REQUIRED_${packageName}) tribits_private_disable_required_package_enables(${fwdDepPkg} @@ -484,13 +485,13 @@ macro(tribits_enable_parents_subpackages parentPackageName) foreach(tap2_subPkgName IN LISTS ${parentPackageName}_SUBPACKAGES) set(subpkgFullName ${parentPackageName}${tap2_subPkgName}) + tribits_package_is_explicitly_disabled(${PROJECT_NAME}_ENABLE_${subpkgFullName} + subpkgIsExplicitlyDisabled) - if (NOT ${PROJECT_NAME}_ENABLE_${subpkgFullName} AND - NOT "${${PROJECT_NAME}_ENABLE_${subpkgFullName}}" STREQUAL "" - ) - # The subpackage is already disabled and is not just empty! + if (subpkgIsExplicitlyDisabled) + # The subpackage is already explicitly disabled elseif (${PROJECT_NAME}_ENABLE_${subpkgFullName}) - # The subpackage is already enabled so there is no reason to enable it! + # The subpackage is already enabled so there is no reason to enable it else() # The subpackage is not hard off or on so turn it on by default tribits_implicit_package_enable_is_allowed( "" ${subpkgFullName} @@ -557,8 +558,9 @@ endmacro() # ${parentPackageName)_ENABLE_TESTS is explicitly disabled. # macro(tribits_apply_package_examples_disable parentPackageName) - if ( (NOT ${parentPackageName}_ENABLE_TESTS) - AND (NOT "${${parentPackageName}_ENABLE_TESTS}" STREQUAL "") + tribits_package_is_explicitly_disabled(${parentPackageName}_ENABLE_TESTS + parentPackageTestsIsExplicitlyDisabled) + if (parentPackageTestsIsExplicitlyDisabled AND ("${${parentPackageName}_ENABLE_EXAMPLES}" STREQUAL "") ) message("-- " "Setting" @@ -583,7 +585,9 @@ macro(tribits_apply_subpackage_tests_or_examples_disables parentPackageName testsOrExamples ) set(parentPkgEnableVar ${parentPackageName}_ENABLE_${testsOrExamples}) - if ((NOT ${parentPkgEnableVar}) AND (NOT "${${parentPkgEnableVar}}" STREQUAL "")) + tribits_package_is_explicitly_disabled(${parentPkgEnableVar} + parentPkgIsExplicitlyDisabled) + if (parentPkgIsExplicitlyDisabled) foreach(subpkgName IN LISTS ${parentPackageName}_SUBPACKAGES) set(fullSpkgName ${parentPackageName}${subpkgName}) if (${PROJECT_NAME}_ENABLE_${fullSpkgName}) @@ -955,18 +959,18 @@ macro(tribits_private_disable_required_package_enables set(${fwdDepPkgEnableVarName} OFF) else() set(depTypeStr "test/example") - if (${fwdDepPkgName}_ENABLE_TESTS - OR "${${fwdDepPkgName}_ENABLE_TESTS}" STREQUAL "" - ) + tribits_package_is_enabled_or_unset(${fwdDepPkgName}_ENABLE_TESTS + fwdDepPkgEnableTestsIsEnabledOrUnset) + if (fwdDepPkgEnableTestsIsEnabledOrUnset) tribits_private_print_disable_required_package_enable( ${packageName} ${fwdDepPkgName}_ENABLE_TESTS ${fwdDepPkgName} "${depTypeStr}" ) set(${fwdDepPkgName}_ENABLE_TESTS OFF) endif() - if (${fwdDepPkgName}_ENABLE_EXAMPLES - OR "${${fwdDepPkgName}_ENABLE_EXAMPLES}" STREQUAL "" - ) + tribits_package_is_enabled_or_unset(${fwdDepPkgName}_ENABLE_EXAMPLES + fwdDepPkgEnableExamplesIsEnabledOrUnset) + if (fwdDepPkgEnableExamplesIsEnabledOrUnset) tribits_private_print_disable_required_package_enable( ${packageName} ${fwdDepPkgName}_ENABLE_EXAMPLES ${fwdDepPkgName} "${depTypeStr}" ) @@ -1024,9 +1028,9 @@ endfunction() macro(tribits_private_disable_optional_package_enables fwdDepPkgName packageName) - if (${fwdDepPkgName}_ENABLE_${packageName} - OR "${${fwdDepPkgName}_ENABLE_${packageName}}" STREQUAL "" - ) + tribits_package_is_enabled_or_unset(${fwdDepPkgName}_ENABLE_${packageName} + fwdDepPkgEnablePackageIsEnabledOrUnset) + if (fwdDepPkgEnablePackageIsEnabledOrUnset) # Always disable the conditional enable but only print the message if the # package is enabled or if a disable overrides an enable if (${PROJECT_NAME}_ENABLE_${fwdDepPkgName}) @@ -1043,10 +1047,9 @@ macro(tribits_private_disable_optional_package_enables fwdDepPkgName packageNa " on disabled package ${packageName}") endif() endif() - if (${fwdDepPkgName}_ENABLE_${packageName} - AND (NOT ${PROJECT_NAME}_ENABLE_${packageName}) - AND (NOT "${${PROJECT_NAME}_ENABLE_${packageName}}" STREQUAL "") - ) + tribits_package_is_explicitly_disabled(${PROJECT_NAME}_ENABLE_${packageName} + packageIsExplicitlyDisabled) + if (${fwdDepPkgName}_ENABLE_${packageName} AND packageIsExplicitlyDisabled) message("-- " "NOTE: ${fwdDepPkgName}_ENABLE_${packageName}=" "${${fwdDepPkgName}_ENABLE_${packageName}} but" " ${PROJECT_NAME}_ENABLE_${packageName}=" @@ -1117,7 +1120,9 @@ endmacro() macro(tribits_private_postprocess_optional_package_enable packageName optDepPkg) tribits_get_package_enable_status(${optDepPkg} optDepPkgEnable optDepPkgEnableVar) - tribits_get_package_enable_status(${packageName} packageEnable packageEnableVar) + tribits_get_package_enable_status(${packageName} packageEnable packageEnableVar) + tribits_package_is_explicitly_disabled(${packageName}_ENABLE_${optDepPkg} + package_Enable_OptDeptPkg_IsExplicitlyDisabled) if (${packageName}_ENABLE_${optDepPkg} AND optDepPkgEnable) message("-- " "NOTE:" @@ -1133,10 +1138,7 @@ macro(tribits_private_postprocess_optional_package_enable packageName optDepPk message("-- " "NOT setting ${packageName}_ENABLE_${optDepPkg}=ON" " since ${optDepPkg} is NOT enabled at this point!") endif() - elseif ((NOT "${${packageName}_ENABLE_${optDepPkg}}" STREQUAL "") - AND (NOT ${packageName}_ENABLE_${optDepPkg}) - AND optDepPkgEnable - ) + elseif (package_Enable_OptDeptPkg_IsExplicitlyDisabled AND optDepPkgEnable) message("-- " "NOTE: ${packageName}_ENABLE_${optDepPkg}=" "${${packageName}_ENABLE_${optDepPkg}} is already set so not enabling even" " though ${optDepPkgEnableVar}="