FeatureSummary.cmake 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # - Macros for generating a summary of enabled/disabled features
  2. #
  3. # PRINT_ENABLED_FEATURES()
  4. # Print a summary of all enabled features. By default all successfull
  5. # FIND_PACKAGE() calls will appear here, except the ones which used the QUIET keyword.
  6. # Additional features can be added by appending an entry to the global ENABLED_FEATURES
  7. # property. If SET_FEATURE_INFO() is used for that feature, the output will be much
  8. # more informative.
  9. #
  10. # PRINT_DISABLED_FEATURES()
  11. # Same as PRINT_ENABLED_FEATURES(), but for disabled features. It can be extended
  12. # the same way by adding to the global property DISABLED_FEATURES.
  13. #
  14. # SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ] )
  15. # Use this macro to set up information about the named feature, which will
  16. # then be displayed by PRINT_ENABLED/DISABLED_FEATURES().
  17. # Example: SET_FEATURE_INFO(LibXml2 "XML processing library." "http://xmlsoft.org/")
  18. #
  19. MACRO(SET_FEATURE_INFO _name _desc)
  20. SET(_url "${ARGV2}")
  21. SET(_comment "${ARGV3}")
  22. SET_PROPERTY(GLOBAL PROPERTY ${_name}_DESCRIPTION "${_desc}" )
  23. IF(_url MATCHES ".+")
  24. SET_PROPERTY(GLOBAL PROPERTY ${_name}_URL "${_url}" )
  25. ENDIF(_url MATCHES ".+")
  26. IF(_comment MATCHES ".+")
  27. SET_PROPERTY(GLOBAL PROPERTY ${_name}_COMMENT "${_comment}" )
  28. ENDIF(_comment MATCHES ".+")
  29. ENDMACRO(SET_FEATURE_INFO)
  30. MACRO(_PRINT_FEATURES _property _text)
  31. SET(_currentFeatureText "${_text}")
  32. GET_PROPERTY(_EnabledFeatures GLOBAL PROPERTY ${_property})
  33. FOREACH(_currentFeature ${_EnabledFeatures})
  34. SET(_currentFeatureText "${_currentFeatureText}\n${_currentFeature}")
  35. GET_PROPERTY(_info GLOBAL PROPERTY ${_currentFeature}_DESCRIPTION)
  36. IF(_info)
  37. SET(_currentFeatureText "${_currentFeatureText} , ${_info}")
  38. ENDIF(_info)
  39. GET_PROPERTY(_info GLOBAL PROPERTY ${_currentFeature}_URL)
  40. IF(_info)
  41. SET(_currentFeatureText "${_currentFeatureText} , <${_info}>")
  42. ENDIF(_info)
  43. GET_PROPERTY(_info GLOBAL PROPERTY ${_currentFeature}_COMMENT)
  44. IF(_info)
  45. SET(_currentFeatureText "${_currentFeatureText} , ${_info}")
  46. ENDIF(_info)
  47. ENDFOREACH(_currentFeature)
  48. MESSAGE(STATUS "${_currentFeatureText}\n")
  49. ENDMACRO(_PRINT_FEATURES)
  50. MACRO(PRINT_ENABLED_FEATURES)
  51. _PRINT_FEATURES( ENABLED_FEATURES "Enabled features:")
  52. ENDMACRO(PRINT_ENABLED_FEATURES)
  53. MACRO(PRINT_DISABLED_FEATURES)
  54. _PRINT_FEATURES( DISABLED_FEATURES "Disabled features:")
  55. ENDMACRO(PRINT_DISABLED_FEATURES)