summaryrefslogtreecommitdiff
path: root/Configure
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-08-23 17:16:48 +0200
committerRichard Levitte <levitte@openssl.org>2019-08-23 17:16:48 +0200
commitef57f7996b6a93fc0ab80ed7dc17ff7d549869ff (patch)
tree8da143d545ebf96bed831772eff20da612c4375f /Configure
parentb6b66573bdeb369636be66104687f211dfad03aa (diff)
downloadopenssl-new-ef57f7996b6a93fc0ab80ed7dc17ff7d549869ff.tar.gz
Configure: Allow 'DEFINE[]=def'
DEFINE[] definitions end up pushed in @{$config{defines}} instead of being added to the output file list of defines. This allows for the unusual case where we need something to be defined globally, so it gets picked up by anything using $(CPPFLAGS). Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> (Merged from https://github.com/openssl/openssl/pull/9679)
Diffstat (limited to 'Configure')
-rwxr-xr-xConfigure39
1 files changed, 24 insertions, 15 deletions
diff --git a/Configure b/Configure
index 30f9e61a7c..21bd348d52 100755
--- a/Configure
+++ b/Configure
@@ -1908,7 +1908,7 @@ if ($builder eq "unified") {
qr/^\s*INCLUDE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
=> sub { push @{$includes{$1}}, tokenize($expand_variables->($2))
if !@skip || $skip[$#skip] > 0 },
- qr/^\s*DEFINE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/
+ qr/^\s*DEFINE\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/
=> sub { push @{$defines{$1}}, tokenize($expand_variables->($2))
if !@skip || $skip[$#skip] > 0 },
qr/^\s*DEPEND\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/
@@ -2109,24 +2109,33 @@ EOF
}
}
- foreach (keys %defines) {
- my $dest = $_;
- my $ddest = cleanfile($sourced, $_, $blddir);
+ foreach my $dest (keys %defines) {
+ my $ddest;
- # If the destination doesn't exist in source, it can only be
- # a generated file in the build tree.
- if (! -f $ddest) {
- $ddest = cleanfile($buildd, $_, $blddir);
- if ($unified_info{rename}->{$ddest}) {
- $ddest = $unified_info{rename}->{$ddest};
+ if ($dest ne "") {
+ $ddest = cleanfile($sourced, $dest, $blddir);
+
+ # If the destination doesn't exist in source, it can only
+ # be a generated file in the build tree.
+ if (! -f $ddest) {
+ $ddest = cleanfile($buildd, $dest, $blddir);
+ if ($unified_info{rename}->{$ddest}) {
+ $ddest = $unified_info{rename}->{$ddest};
+ }
}
}
- foreach (@{$defines{$dest}}) {
- m|^([^=]*)(=.*)?$|;
+ foreach my $v (@{$defines{$dest}}) {
+ $v =~ m|^([^=]*)(=.*)?$|;
die "0 length macro name not permitted\n" if $1 eq "";
- die "$1 defined more than once\n"
- if defined $unified_info{defines}->{$ddest}->{$1};
- $unified_info{defines}->{$ddest}->{$1} = $2;
+ if ($dest ne "") {
+ die "$1 defined more than once\n"
+ if defined $unified_info{defines}->{$ddest}->{$1};
+ $unified_info{defines}->{$ddest}->{$1} = $2;
+ } else {
+ die "$1 defined more than once\n"
+ if grep { $v eq $_ } @{$config{defines}};
+ push @{$config{defines}}, $v;
+ }
}
}
}