Skip to content

Commit

Permalink
CMake: Show configuration summary on first configuration
Browse files Browse the repository at this point in the history
or when feature changes are detected, even when the log-level is set
to NOTICE (which is the default for non-developer-builds).

We want to show the summary during the first configuration so we don't
force users to look into the config.summary file.

We want not to show the summary upon reconfigurations, to keep regular
reconfigurations as quiet as possibe, so it's easy to notice any new
warnings.

Amends e2a0ddb
Amends 384dfce

Pick-to: 6.2 6.3 6.4
Fixes: QTBUG-104127
Change-Id: I506f33b4bae9da8957e04bb69c206bf00e3f7b0e
Reviewed-by: Jörg Bornemann <[email protected]>
Reviewed-by: Kai Koehne <[email protected]>
  • Loading branch information
alcroito committed Jun 10, 2022
1 parent 47c545d commit dd5c860
Showing 1 changed file with 38 additions and 5 deletions.
43 changes: 38 additions & 5 deletions cmake/QtBuildInformation.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -82,30 +82,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}")
Expand Down

0 comments on commit dd5c860

Please sign in to comment.