diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cfa064f1..dba551ea2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3058,20 +3058,19 @@ message(STATUS "Compiler: ${CMAKE_C_COMPILER}") message(STATUS "Revision: ${SDL_REVISION}") message(STATUS "") message(STATUS "Subsystems:") -foreach(_SUB ${SDL_SUBSYSTEMS}) + +find_stringlength_longest_item(SDL_SUBSYSTEMS maxLength) +foreach(_SUB IN LISTS SDL_SUBSYSTEMS) + string(LENGTH ${_SUB} _SUBLEN) + math(EXPR _PADLEN "(${maxLength} + 1) - ${_SUBLEN}") + string(RANDOM LENGTH ${_PADLEN} ALPHABET " " _PADDING) string(TOUPPER ${_SUB} _OPT) - message_bool_option(${_SUB} SDL_${_OPT}) + message_bool_option(${_SUB} SDL_${_OPT} ${_PADDING}) endforeach() message(STATUS "") message(STATUS "Options:") list(SORT ALLOPTIONS) -foreach(_OPT ${ALLOPTIONS}) - # Get the padding - string(LENGTH ${_OPT} _OPTLEN) - math(EXPR _PADLEN "(${LONGESTOPTIONNAME} + 1) - ${_OPTLEN}") - string(RANDOM LENGTH ${_PADLEN} ALPHABET " " _PADDING) - message_tested_option(${_OPT} ${_PADDING}) -endforeach() +message_dictlist(ALLOPTIONS) if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") message(STATUS "") message(STATUS " CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}") diff --git a/cmake/macros.cmake b/cmake/macros.cmake index f148810e1..8ef44445c 100644 --- a/cmake/macros.cmake +++ b/cmake/macros.cmake @@ -37,10 +37,14 @@ macro(MESSAGE_ERROR _TEXT) endmacro() macro(MESSAGE_BOOL_OPTION _NAME _VALUE) + set(_PAD "\t") + if(${ARGC} EQUAL 3) + set(_PAD ${ARGV2}) + endif() if(${_VALUE}) - message(STATUS " ${_NAME}:\tON") + message(STATUS " ${_NAME}:${_PAD}ON") else() - message(STATUS " ${_NAME}:\tOFF") + message(STATUS " ${_NAME}:${_PAD}OFF") endif() endmacro() @@ -94,6 +98,28 @@ function(LISTTOSTRREV _LIST _OUTPUT) set($_OUTPUT} "${res}" PARENT_SCOPE) endfunction() +function(find_stringlength_longest_item inList outLength) + set(maxLength 0) + foreach(item IN LISTS ${inList}) + string(LENGTH "${item}" slen) + if(slen GREATER maxLength) + set(maxLength ${slen}) + endif() + endforeach() + set("${outLength}" ${maxLength} PARENT_SCOPE) +endfunction() + +function(message_dictlist inList) + find_stringlength_longest_item(${inList} maxLength) + foreach(name IN LISTS ${inList}) + # Get the padding + string(LENGTH ${name} nameLength) + math(EXPR padLength "(${maxLength} + 1) - ${nameLength}") + string(RANDOM LENGTH ${padLength} ALPHABET " " padding) + message_tested_option(${name} ${padding}) + endforeach() +endfunction() + if(CMAKE_VERSION VERSION_LESS 3.16.0 OR SDL3_SUBPROJECT) # - CMake versions <3.16 do not support the OBJC language # - When SDL is built as a subproject and when the main project does not enable OBJC,