Configure: disallow the mixture of compiling flags and env / make variables Note that this might give surprising results if someone forgets an environment variable that has been set previously. Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5534)
diff --git a/Configure b/Configure index bb951bd..1b6a7b6 100755 --- a/Configure +++ b/Configure
@@ -621,10 +621,10 @@ { $user{$1} = ref $user{$1} eq "ARRAY" ? [] : undef; } - if (exists $useradd{$1}) - { - $useradd{$1} = []; - } + #if (exists $useradd{$1}) + # { + # $useradd{$1} = []; + # } next; } @@ -891,6 +891,18 @@ } } +if (grep { scalar @$_ > 0 } values %useradd) { + my $detected_env = join(', ', grep { @{$useradd{$_}} || env($_) } + sort keys %useradd); + if ($detected_env) { + die <<"_____"; +***** Mixing env / make variables and additional compiler/linker flags as +***** configure command line option is not permitted. +***** Affected env / make variables: $detected_env +_____ + } +} + foreach (keys %user) { my $value = env($_); $value //= defined $user_synonyms{$_} ? env($user_synonyms{$_}) : undef;
diff --git a/INSTALL b/INSTALL index 3c8548d..0875833 100644 --- a/INSTALL +++ b/INSTALL
@@ -581,30 +581,12 @@ RCFLAGS Flags for the Windows reources manipulator. RM The command to remove files and directories. - These can be mixed with flags given on the command line. - Any variable assignment resets any corresponding flags - given before it, so for example: + These cannot be mixed with compiling / linking flags given + on the command line. In other words, something like this + isn't permitted. ./config -DFOO CPPFLAGS=-DBAR -DCOOKIE - Will end up having 'CPPFLAGS=-DBAR -DCOOKIE'. - - Here is how the flags documented above are collected as - augmentation of these variables: - - -Dxxx xxx is collected in CPPDEFINES - -Ixxx xxx is collected in CPPINCLUDES - -Wp,xxx collected in CPPFLAGS - -Lxxx collected in LDFLAGS - -lxxx collected in LDLIBS - -Wp,xxx collected in LDLIBS - -rpath xxx collected in LDLIBS - -R xxx collected in LDLIBS - -framework xxx collected in LDLIBS - -static collected in LDLIBS - -xxx collected in CFLAGS - +xxx collected in CFLAGS - reconf reconfigure Reconfigure from earlier data. This fetches the previous