banner.cmake 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. if (__cmake_banner_included)
  2. return ()
  3. endif ()
  4. set ( __cmake_banner_included YES )
  5. add_library ( BANNER INTERFACE )
  6. macro ( getbanner OUTVAR )
  7. get_target_property ( ${OUTVAR} BANNER MESSAGES )
  8. endmacro ()
  9. # append any text to build info
  10. function ( bannervar msgtext )
  11. set_property ( TARGET BANNER APPEND PROPERTY MESSAGES "${msgtext}" )
  12. # printbanner ()
  13. endfunction ()
  14. function ( printbanner )
  15. getbanner ( foo )
  16. if (foo)
  17. message ( STATUS "BANNER is ${foo}" )
  18. endif ()
  19. endfunction ()
  20. function ( get_banner OUTVAR )
  21. set ( CONFIGURE_FLAGS "Configured with these definitions:" )
  22. get_target_property ( BANNER BANNER MESSAGES )
  23. foreach (var ${BANNER})
  24. unset ( CONFIGURE_FLAG )
  25. if (DEFINED CACHE{${var}})
  26. get_property ( _type CACHE ${var} PROPERTY TYPE )
  27. if (_type STREQUAL BOOL)
  28. if (${${var}})
  29. set ( CONFIGURE_FLAG "${var}=1" )
  30. else ()
  31. set ( CONFIGURE_FLAG "${var}=0" )
  32. endif ()
  33. else ()
  34. set ( CONFIGURE_FLAG "${var}=${${var}}" )
  35. endif ()
  36. elseif (DEFINED ${var})
  37. set ( CONFIGURE_FLAG "${var}=${${var}}" )
  38. # message(SEND_ERROR "Only cache variables are suitable for bannervar! ${var}")
  39. endif ()
  40. if (DEFINED CONFIGURE_FLAG)
  41. set ( CONFIGURE_FLAGS "${CONFIGURE_FLAGS} -D${CONFIGURE_FLAG}" )
  42. endif()
  43. endforeach ()
  44. set ( ${OUTVAR} "${CONFIGURE_FLAGS}" PARENT_SCOPE )
  45. endfunction ()
  46. include ( printers )
  47. function ( banner_diag )
  48. get_banner ( foo )
  49. diags ( ${foo} )
  50. endfunction ()