From: Viktor Szakats Date: Wed, 13 Nov 2024 01:16:31 +0000 (+0100) Subject: cmake: restore cmake args list in `buildinfo.txt` X-Git-Tag: curl-8_11_1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9eb5c7cff915789c14031c18cd0704a998050ac1;p=thirdparty%2Fcurl.git cmake: restore cmake args list in `buildinfo.txt` This feature was recently dropped because of a bad side-effect of silencing unused cmake command-line option warnings. Fix this issue by retrieving variable values using `get_property()`, instead of accessing the variables directly. It allows restoring this feature without the bad side-effect. Also limit the logic to CI runs. Follow-up to 96edb5f611c9e54da1ae824d9dc0e219619c24c0 #15501 Closes #15563 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a0f2d1bf4..52aa1177c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,26 @@ cmake_minimum_required(VERSION 3.7...3.16 FATAL_ERROR) message(STATUS "Using CMake version ${CMAKE_VERSION}") +# Collect command-line arguments for buildinfo.txt. +# Must reside at the top of the script to work as expected. +set(_cmake_args "") +if(NOT "$ENV{CURL_BUILDINFO}$ENV{CURL_CI}$ENV{CI}" STREQUAL "") + get_cmake_property(_cache_vars CACHE_VARIABLES) + foreach(_cache_var IN ITEMS ${_cache_vars}) + get_property(_cache_var_helpstring CACHE ${_cache_var} PROPERTY HELPSTRING) + if(_cache_var_helpstring STREQUAL "No help, variable specified on the command line.") + get_property(_cache_var_type CACHE ${_cache_var} PROPERTY TYPE) + get_property(_cache_var_value CACHE ${_cache_var} PROPERTY VALUE) + if(_cache_var_type STREQUAL "UNINITIALIZED") + set(_cache_var_type) + else() + set(_cache_var_type ":${_cache_var_type}") + endif() + set(_cmake_args "${_cmake_args} -D${_cache_var}${_cache_var_type}=\"${_cache_var_value}\"") + endif() + endforeach() +endif() + function(curl_dumpvars) # Dump all defined variables with their values message("::group::CMake Variable Dump") get_cmake_property(_vars VARIABLES) @@ -2289,6 +2309,7 @@ set(_buildinfo "\ buildinfo.configure.tool: cmake buildinfo.configure.command: ${CMAKE_COMMAND} buildinfo.configure.version: ${CMAKE_VERSION} +buildinfo.configure.args:${_cmake_args} buildinfo.configure.generator: ${CMAKE_GENERATOR} buildinfo.configure.make: ${CMAKE_MAKE_PROGRAM} buildinfo.host.cpu: ${CMAKE_HOST_SYSTEM_PROCESSOR}