Rethink templates.
authorRichard Levitte <levitte@openssl.org>
Tue, 10 Mar 2015 21:04:44 +0000 (22:04 +0100)
committerRichard Levitte <levitte@openssl.org>
Mon, 16 Mar 2015 21:16:30 +0000 (22:16 +0100)
commitb124552999b0b05cdccc891191b89bf562ba2b90
tree8af5b1fdbbc0f1bd615a3574e5d609933d3bcbb8
parent70e4f10346da354915c343d37302eadaed40b1dd
Rethink templates.

Because base templates express inheritance of values, the attribute is
renamed to 'inherit_from', and texts about this talk about 'inheritance(s)'
rather than base templates.

As they were previously implemented, base templates that were listed
together would override one another, the first one acting as defaults for
the next and so on.

However, it was pointed out that a strength of inheritance would be to
base configurations on several templates - for example one for CPU, one
for operating system and one for compiler - and that requires a different
way of combining those templates.  With this change, inherited values
from several inheritances are concatenated by default (keep on reading).

Also, in-string templates with the double-curly syntax are removed,
replaced with the possibility to have a configuration value be a coderef
(i.e. a 'sub { /* your code goes here */ }') that gets the list of values
from all inheritances as the list @_.  The result of executing such a
coderef on a list of values is assumed to become a string.  ANY OTHER
FORM OF VALUE WILL CURRENTLY BREAK.

As a matter of fact, an attribute in the current config with no value is
assumed to have this coderef as value:

    sub { join(' ', @_) }

While we're at it, rename debug-[cl]flags to debug_[cl]flags and
nodebug-[cl]flags to release_[cl]flags.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Configure