FeatureSummary.cmake 2.4 KB

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