From f0165eb624403c26989d1039c076d61536cc3074 Mon Sep 17 00:00:00 2001 From: "Daniele E. Domenichelli" Date: Fri, 20 Jan 2017 19:02:29 +0100 Subject: FeatureSummary: Allow lists of dependencies in ADD_FEATURE_INFO --- Modules/FeatureSummary.cmake | 14 ++++++++++++-- .../FeatureSummaryMultipleDepends-stdout.txt | 10 ++++++++++ .../FeatureSummary/FeatureSummaryMultipleDepends.cmake | 12 ++++++++++++ Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake | 1 + 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends-stdout.txt create mode 100644 Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends.cmake diff --git a/Modules/FeatureSummary.cmake b/Modules/FeatureSummary.cmake index dce0330..490c956 100644 --- a/Modules/FeatureSummary.cmake +++ b/Modules/FeatureSummary.cmake @@ -477,7 +477,8 @@ endfunction() add_feature_info( ) Use this macro to add information about a feature with the given ````. - ```` contains whether this feature is enabled or not. + ```` contains whether this feature is enabled or not. It can be a + variable or a list of conditions. ```` is a text describing the feature. The information can be displayed using ``feature_summary()`` for ``ENABLED_FEATURES`` and ``DISABLED_FEATURES`` respectively. @@ -489,7 +490,16 @@ endfunction() option(WITH_FOO "Help for foo" ON) add_feature_info(Foo WITH_FOO "The Foo feature provides very cool stuff.") #]=======================================================================] -function(ADD_FEATURE_INFO _name _enabled _desc) +function(ADD_FEATURE_INFO _name _depends _desc) + set(_enabled 1) + foreach(_d ${_depends}) + string(REGEX REPLACE " +" ";" _d "${_d}") + if(${_d}) + else() + set(_enabled 0) + break() + endif() + endforeach() if (${_enabled}) set_property(GLOBAL APPEND PROPERTY ENABLED_FEATURES "${_name}") else () diff --git a/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends-stdout.txt b/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends-stdout.txt new file mode 100644 index 0000000..d5875e0 --- /dev/null +++ b/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends-stdout.txt @@ -0,0 +1,10 @@ +-- The following features have been enabled: + + \* Bar, Bar\. + \* Baz, Baz\. + \* Goo, Goo\. + +-- The following features have been disabled: + + \* Foo, Foo\. + \* Fez, Fez\. diff --git a/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends.cmake b/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends.cmake new file mode 100644 index 0000000..f355ae7 --- /dev/null +++ b/Tests/RunCMake/FeatureSummary/FeatureSummaryMultipleDepends.cmake @@ -0,0 +1,12 @@ +include(FeatureSummary) + +set(WITH_FOO 1) +set(WITH_BAR 0) + +add_feature_info(Foo "WITH_FOO;WITH_BAR" "Foo.") +add_feature_info(Bar "WITH_FOO;NOT WITH_BAR" "Bar.") +add_feature_info(Baz "WITH_FOO AND NOT WITH_BAR" "Baz.") +add_feature_info(Goo "WITH_FOO OR WITH_BAR" "Goo.") +add_feature_info(Fez "NOT WITH_FOO OR WITH_BAR" "Fez.") + +feature_summary(WHAT ALL) diff --git a/Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake b/Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake index 585a6ee..97c23f9 100644 --- a/Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake +++ b/Tests/RunCMake/FeatureSummary/RunCMakeTest.cmake @@ -13,3 +13,4 @@ run_cmake(FeatureSummaryTypes) run_cmake(FeatureSummaryFatalOnMissingRequiredPackages) run_cmake(FeatureSummaryIncludeQuietPackages) run_cmake(FeatureSummaryQuietOnEmpty) +run_cmake(FeatureSummaryMultipleDepends) -- cgit v0.12