summaryrefslogtreecommitdiffstats
path: root/Modules/FeatureSummary.cmake
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2007-08-07 19:41:57 (GMT)
committerAlexander Neundorf <neundorf@kde.org>2007-08-07 19:41:57 (GMT)
commit8d7b502337470c3e18d35a6b5e205e657482c2fe (patch)
tree1af3c841051c00beecda76858a3a6836d40a4947 /Modules/FeatureSummary.cmake
parentf6d8942ac86e3a480febc93961e1dd0aba2f0b0d (diff)
downloadCMake-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.cmake64
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)
+