diff options
Diffstat (limited to 'comfignat.mk')
| -rw-r--r-- | comfignat.mk | 41 | 
1 files changed, 23 insertions, 18 deletions
| diff --git a/comfignat.mk b/comfignat.mk index bfe60ba..be030f0 100644 --- a/comfignat.mk +++ b/comfignat.mk @@ -424,21 +424,28 @@ usage_relevant = ${filter ${usage_directory_variables},${1}}  # relevant directory variables. If given a single variable name, it returns  # that name if the variable is usage-relevant, or an empty string if it isn't. -maybe_relative_to = \ -   ${if ${or ${filter-out 1,${words ${relocatable_package}}}, \ -             ${filter-out true false,${relocatable_package}}}, \ -        ${error relocatable_package must be "true" or "false"} \ -       ,${if ${filter true,${relocatable_package}} \ -            ,${call relative_to,${1},${2}},${1}}} +checked_boolean = ${or ${and ${filter 1,${words ${${1}}}}, \ +                             ${filter true false,${${1}}}}, \ +                       ${error ${1} must be "true" or "false"}} +# checked_boolean takes the name of a variable and checks that its value is a +# single word, and that that word is either "true" or "false". If so it returns +# the value; otherwise it complains and stops the execution. + +checked_true = ${filter true,${call checked_boolean,${1}}} +# checked_true takes the name of a variable and checks that it has a boolean +# value. It then returns an empty string for "false" or a non-empty string for +# "true". + +maybe_relative_to = ${if ${call checked_true,relocatable_package} \ +                        ,${call relative_to,${1},${2}},${1}}  # maybe_relative_to converts an absolute pathname into a relative one if a  # relocatable package is desired.  # Parameters:  #    1: an absolute pathname to maybe convert to relative  #    2: the absolute base pathname that 1 may be made relative to -# First check that the value of relocatable_package is a single word and that -# that word is either "true" or "false". Complain and stop if that isn't so. -# Then, if relocatable_package is "true", let relative_to convert the pathname, +# If relocatable_package is "true", then let relative_to convert the pathname,  # otherwise return parameter 1 unchanged. +# It is checked that relocatable_package has a boolean value.  embed_pathname = ${call maybe_relative_to,${${1}},${if ${filter bindir,${1}} \                                                        ,${libexecdir},${bindir}}} @@ -541,15 +548,13 @@ ${eval ${foreach var,${builder_directory_variables}, \  option_values = \     ${foreach option,${options}, \ -             ${if ${and ${filter-out environment,${origin ${option}}}, \ -                        ${filter 1,${words ${${option}}}}, \ -                        ${filter true false,${${option}}}}, \ -                  ${option}=${${option}}, \ -                  ${error ${option} must be "true" or "false"}}} -# For each variable listed in options, check that it didn't come from the -# environment (to prevent accidents), that its value is a single word, and that -# that word is either "true" or "false". If so, output a name/value pair; -# otherwise complain and stop. +             ${if ${filter-out undefined environment,${origin ${option}}}, \ +                  ${option}=${call checked_boolean,${option}}, \ +                  ${error ${option} has no default value and must be set to \ +                          "true" or "false" on the command line}}} +# For each variable listed in options, check that it exists, that it didn't +# come from the environment (to prevent accidents), and that it has a boolean +# value. If so, output a name/value pair; otherwise complain and stop.  # Convey boolean options to Gnatprep.  options_preprocessing = ${addprefix -D,${option_values}} |