diff --git a/cmake/QtBuildInformation.cmake b/cmake/QtBuildInformation.cmake index 3c01529db4b..bb611f4f0e0 100644 --- a/cmake/QtBuildInformation.cmake +++ b/cmake/QtBuildInformation.cmake @@ -64,30 +64,63 @@ from the build directory \n") set(QT_INTERNAL_BUILD_INSTRUCTIONS_SHOWN "TRUE" CACHE STRING "" FORCE) endfunction() +function(qt_configure_print_summary_helper summary_reports force_show) + # We force show the summary by temporarily (within the scope of the function) resetting the + # current log level. + if(force_show) + set(CMAKE_MESSAGE_LOG_LEVEL "STATUS") + endif() + message(STATUS "Configure summary:\n${__qt_configure_reports}") +endfunction() + function(qt_configure_print_summary) # Evaluate all recorded commands. qt_configure_eval_commands() set(summary_file "${CMAKE_BINARY_DIR}/config.summary") file(WRITE "${summary_file}" "") - # Show Qt-specific configure summary and any notes, wranings, etc. + + get_property(features_possibly_changed GLOBAL PROPERTY _qt_dirty_build) + + # Show Qt-specific configuration summary. if(__qt_configure_reports) - if(NOT QT_INTERNAL_SUMMARY_INSTRUCTIONS_SHOWN) + # We want to show the the summary file and log level messages only on first configuration + # or when we detect a feature change, to keep most reconfiguration output as quiet as + # possible. Currently feature change detection is not entirely reliable. + if(NOT QT_INTERNAL_SUMMARY_INSTRUCTIONS_SHOWN OR features_possibly_changed) message("") message( - "-- Configuration summary has been written to ${CMAKE_BINARY_DIR}/config.summary") + "-- Configuration summary shown below. It has also been written to" + " ${CMAKE_BINARY_DIR}/config.summary") message( - "-- Configure with --log-level=STATUS or higher to increase the output verbosity.") + "-- Configure with --log-level=STATUS or higher to increase " + "CMake's message verbosity. " + "The log level does not persist across reconfigurations.") endif() # Need 2 flushes to ensure no interleaved input is printed due to a mix of message(STATUS) # and message(NOTICE) calls. execute_process(COMMAND ${CMAKE_COMMAND} -E echo " ") - message(STATUS "Configure summary:\n${__qt_configure_reports}") + + # We want to show the configuration summary only on first configuration or when we detect + # a feature change, to keep most reconfiguration output as quiet as possible. + # Currently feature change detection is not entirely reliable. + if(NOT QT_INTERNAL_SUMMARY_INSTRUCTIONS_SHOWN OR features_possibly_changed) + set(force_show_summary TRUE) + else() + set(force_show_summary FALSE) + endif() + + qt_configure_print_summary_helper( + "Configuration summary:\n${__qt_configure_reports}" + ${force_show_summary}) + execute_process(COMMAND ${CMAKE_COMMAND} -E echo " ") file(APPEND "${summary_file}" "${__qt_configure_reports}") endif() + + # Show Qt specific notes, warnings, errors. if(__qt_configure_notes) message("${__qt_configure_notes}") file(APPEND "${summary_file}" "${__qt_configure_notes}")