1# PrintableOptions.cmake 2# 3# Provides functions to manage printable options, 4# which can be printed at the end of the configuration 5# 6# add_printable_variable_bare(_name) 7# adds variable named _name to the list of prinable options 8# 9# add_printable_option(_name _description _default_value) 10# the same as option() command, only also notes this option for later printing 11# 12# add_printable_variable(_name _description _default_value) 13# sets a new cached STRING variable and adds it to the list of printable options 14# 15# add_printable_variable_path(_name _description _default_value) 16# sets a new cached PATH variable and adds it to the list of printable options 17# 18# print_build_options() 19# prints all the build options previously added with the above functions 20 21macro(add_printable_variable_bare _name) 22 if("${_name}" STREQUAL "") 23 message(FATAL_ERROR "variable name cannot be empty") 24 endif("${_name}" STREQUAL "") 25 list(APPEND _printable_options ${_name}) 26endmacro() 27 28macro(add_printable_option _name _description _default_value) 29 if("${_name}" STREQUAL "") 30 message(FATAL_ERROR "option name cannot be empty") 31 endif("${_name}" STREQUAL "") 32 option(${_name} ${_description} ${_default_value}) 33 add_printable_variable_bare(${_name}) 34endmacro() 35 36macro(add_printable_variable _name _description _default_value) 37 if("${_name}" STREQUAL "") 38 message(FATAL_ERROR "variable name cannot be empty") 39 endif("${_name}" STREQUAL "") 40 set(${_name} ${_default_value} CACHE STRING ${_description}) 41 add_printable_variable_bare(${_name}) 42endmacro() 43 44macro(add_printable_variable_path _name _description _default_value) 45 if("${_name}" STREQUAL "") 46 message(FATAL_ERROR "path variable name cannot be empty") 47 endif("${_name}" STREQUAL "") 48 set(${_name} ${_default_value} CACHE PATH ${_description}) 49 add_printable_variable_bare(${_name}) 50endmacro() 51 52macro(add_printable_variable_filepath _name _description _default_value) 53 if("${_name}" STREQUAL "") 54 message(FATAL_ERROR "filepath variable name cannot be empty") 55 endif("${_name}" STREQUAL "") 56 set(${_name} ${_default_value} CACHE FILEPATH ${_description}) 57 add_printable_variable_bare(${_name}) 58endmacro() 59 60function(print_build_options) 61 message(STATUS "Configure options:") 62 63 set(max_len 0) 64 foreach(opt IN LISTS _printable_options) 65 string(LENGTH "${opt}" len) 66 if(max_len LESS len) 67 set(max_len ${len}) 68 endif(max_len LESS len) 69 endforeach() 70 math(EXPR max_len "${max_len} + 2") 71 72 foreach(opt IN LISTS _printable_options) 73 string(LENGTH "${opt}" len) 74 set(str " ${opt} ") 75 foreach (IGNORE RANGE ${len} ${max_len}) 76 set(str "${str}.") 77 endforeach () 78 set(str "${str} ${${opt}}") 79 80 message(STATUS ${str}) 81 endforeach() 82endfunction() 83