diff options
author | Alexander Neundorf <neundorf@kde.org> | 2007-08-07 19:41:57 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2007-08-07 19:41:57 (GMT) |
commit | 8d7b502337470c3e18d35a6b5e205e657482c2fe (patch) | |
tree | 1af3c841051c00beecda76858a3a6836d40a4947 /Modules/FeatureSummary.cmake | |
parent | f6d8942ac86e3a480febc93961e1dd0aba2f0b0d (diff) | |
download | CMake-8d7b502337470c3e18d35a6b5e205e657482c2fe.zip CMake-8d7b502337470c3e18d35a6b5e205e657482c2fe.tar.gz CMake-8d7b502337470c3e18d35a6b5e205e657482c2fe.tar.bz2 |
ENH: add global properties for collecting enabled/disabled features during
the cmake run and add macros print_enabled/disabled_features() and
set_feature_info(), so projects can get a nice overview at the end of the
cmake run what has been found and what hasn't
FIND_PACKAGE() automatically adds the packages to these global properties,
except when used with QUIET
Maybe this can also be useful for packagers to find out dependencies of
projects.
Alex
Diffstat (limited to 'Modules/FeatureSummary.cmake')
-rw-r--r-- | Modules/FeatureSummary.cmake | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Modules/FeatureSummary.cmake b/Modules/FeatureSummary.cmake new file mode 100644 index 0000000..40d6d7f --- /dev/null +++ b/Modules/FeatureSummary.cmake @@ -0,0 +1,64 @@ +# - Macros for generating a summary of enabled/disabled features +# +# PRINT_ENABLED_FEATURES() +# Print a summary of all enabled features. By default all successfull +# FIND_PACKAGE() calls will appear here, except the ones which used the QUIET keyword. +# Additional features can be added by appending an entry to the global ENABLED_FEATURES +# property. If SET_FEATURE_INFO() is used for that feature, the output will be much +# more informative. +# +# PRINT_DISABLED_FEATURES() +# Same as PRINT_ENABLED_FEATURES(), but for disabled features. It can be extended +# the same way by adding to the global property DISABLED_FEATURES. +# +# SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ] ) +# Use this macro to set up information about the named feature, which will +# then be displayed by PRINT_ENABLED/DISABLED_FEATURES(). +# Example: SET_FEATURE_INFO(LibXml2 "XML processing library." "http://xmlsoft.org/") +# + + +MACRO(SET_FEATURE_INFO _name _desc) + SET(_url "${ARGV2}") + SET(_comment "${ARGV3}") + SET_PROPERTIES(GLOBAL PROPERTIES ${_name}_DESCRIPTION "${_desc}" ) + IF(_url MATCHES ".+") + SET_PROPERTIES(GLOBAL PROPERTIES ${_name}_URL "${_url}" ) + ENDIF(_url MATCHES ".+") + IF(_comment MATCHES ".+") + SET_PROPERTIES(GLOBAL PROPERTIES ${_name}_COMMENT "${_comment}" ) + ENDIF(_comment MATCHES ".+") +ENDMACRO(SET_FEATURE_INFO) + + +MACRO(_PRINT_FEATURES _property _text) + SET(_currentFeatureText "${_text}") + GET_PROPERTY(_EnabledFeatures GLOBAL ${_property}) + FOREACH(_currentFeature ${_EnabledFeatures}) + SET(_currentFeatureText "${_currentFeatureText}\n${_currentFeature}") + GET_PROPERTY(_info GLOBAL ${_currentFeature}_DESCRIPTION) + IF(_info) + SET(_currentFeatureText "${_currentFeatureText} , ${_info}") + ENDIF(_info) + GET_PROPERTY(_info GLOBAL ${_currentFeature}_URL) + IF(_info) + SET(_currentFeatureText "${_currentFeatureText} , <${_info}>") + ENDIF(_info) + GET_PROPERTY(_info GLOBAL ${_currentFeature}_COMMENT) + IF(_info) + SET(_currentFeatureText "${_currentFeatureText} , ${_info}") + ENDIF(_info) + ENDFOREACH(_currentFeature) + MESSAGE(STATUS "${_currentFeatureText}\n") +ENDMACRO(_PRINT_FEATURES) + + +MACRO(PRINT_ENABLED_FEATURES) + _PRINT_FEATURES( ENABLED_FEATURES "Enabled features:") +ENDMACRO(PRINT_ENABLED_FEATURES) + + +MACRO(PRINT_DISABLED_FEATURES) + _PRINT_FEATURES( DISABLED_FEATURES "Disabled features:") +ENDMACRO(PRINT_DISABLED_FEATURES) + |