cmake: improve options summary with per-library values.

segment the options based on libraries, makes it easier to read.
This commit is contained in:
Gustavo Sverzut Barbieri 2017-01-26 15:50:05 -02:00
parent 85a095f0a8
commit ba9938b950
1 changed files with 43 additions and 15 deletions

View File

@ -124,7 +124,14 @@ function(EFL_OPTION _name _help _defval)
endif()
endif()
if(EFL_LIB_CURRENT)
if(NOT DEFINED EFL_ALL_OPTIONS_${EFL_LIB_CURRENT})
LIST_APPEND_GLOBAL(EFL_ALL_OPTIONS EFL_ALL_OPTIONS_${EFL_LIB_CURRENT})
endif()
LIST_APPEND_GLOBAL(EFL_ALL_OPTIONS_${EFL_LIB_CURRENT} ${_name})
else()
LIST_APPEND_GLOBAL(EFL_ALL_OPTIONS ${_name})
endif()
SET_GLOBAL(EFL_OPTION_DEFAULT_${_name} "${_defval}" "Default value for ${_name}")
SET_GLOBAL(EFL_OPTION_TYPE_${_name} "${_vartype}" "Type of ${_name}")
@ -183,13 +190,11 @@ function(EFL_OPTION_SET_MESSAGE _name _message)
SET_GLOBAL(EFL_OPTION_MESSAGE_${_name} "${_message}")
endfunction()
# EFL_OPTIONS_SUMMARY()
# Shows the summary of options, their values and related messages.
function(EFL_OPTIONS_SUMMARY)
message(STATUS "EFL Options Summary:")
message(STATUS " CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
message(STATUS " CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
foreach(_o ${EFL_ALL_OPTIONS})
# _EFL_OPTIONS_SUMMARY_INTERNAL(Prefix Option)
#
# Internal function for EFL_OPTIONS_SUMMARY().
function(_EFL_OPTIONS_SUMMARY_INTERNAL _prefix _o)
set(_v ${${_o}})
set(_d ${EFL_OPTION_DEFAULT_${_o}})
if(EFL_OPTION_DEPENDS_MISSING_${_o})
@ -204,8 +209,28 @@ function(EFL_OPTIONS_SUMMARY)
else()
set(_m)
endif()
message(STATUS " ${_o}=${_v} (${_i})${_m}")
message(STATUS "${_prefix}${_o}=${_v} (${_i})${_m}")
endfunction()
# EFL_OPTIONS_SUMMARY()
# Shows the summary of options, their values and related messages.
function(EFL_OPTIONS_SUMMARY)
message(STATUS "EFL ${PROJECT_VERSION} Options Summary:")
message(STATUS " CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
message(STATUS " CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
foreach(_o ${EFL_ALL_OPTIONS})
if(_o MATCHES "^EFL_ALL_OPTIONS_")
string(REGEX REPLACE "^EFL_ALL_OPTIONS_" "" _name "${_o}")
message(STATUS "")
message(STATUS " ${_name} options:")
foreach(_so ${${_o}})
_EFL_OPTIONS_SUMMARY_INTERNAL(" " ${_so})
endforeach()
else()
_EFL_OPTIONS_SUMMARY_INTERNAL(" " ${_o})
endif()
endforeach()
message(STATUS "")
message(STATUS "EFL Libraries:")
foreach(_o ${EFL_ALL_LIBS})
message(STATUS " ${_o}${_mods}")
@ -221,6 +246,7 @@ function(EFL_OPTIONS_SUMMARY)
endforeach()
if(EFL_PKG_CONFIG_MISSING_OPTIONAL)
message(STATUS "")
message(STATUS "The following pkg-config optional modules are missing:")
foreach(_m ${EFL_PKG_CONFIG_MISSING_OPTIONAL})
message(STATUS " ${_m}")
@ -835,6 +861,8 @@ function(EFL_LIB _target)
set(EFL_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/tests/${_target})
set(EFL_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/tests/${_target})
unset(EFL_ALL_OPTIONS_${EFL_LIB_CURRENT} CACHE)
set(DESCRIPTION)
set(PKG_CONFIG_REQUIRES)
set(PKG_CONFIG_REQUIRES_PRIVATE)