[openssl-commits] [openssl] master update
Richard Levitte
levitte at openssl.org
Thu Mar 8 16:24:18 UTC 2018
The branch master has been updated
via b92013602b6666314ad200d48e10a1aaa2c5b2fa (commit)
via 310f28df2e5317a96a4390117af17dab34706d67 (commit)
via 150624bcf54c285183f596976641d57e3cb9a52f (commit)
via 2ab92ae9dca7c4a9dc3b8468333b10aff7629c5a (commit)
via 72d7f221ee7a3909496c240bab85770b48b515dd (commit)
via b6954f3b3f9f18d885a521d6581d1b442c1d04ac (commit)
via abe256e7951e6d57f8f6b4364ea696eb4ead3852 (commit)
via 48dcca265c9cb0c26459240ab1858577dacf9e67 (commit)
from d420729b9e709b7a6fc227a073f526d86d8767e6 (commit)
- Log -----------------------------------------------------------------
commit b92013602b6666314ad200d48e10a1aaa2c5b2fa
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Mar 8 14:16:18 2018 +0100
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 at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit 310f28df2e5317a96a4390117af17dab34706d67
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Mar 8 00:17:29 2018 +0100
Configurations/README: update documentation on flags
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit 150624bcf54c285183f596976641d57e3cb9a52f
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Mar 8 00:16:47 2018 +0100
Configure et al: get rid of last traces of plib_lflags / PLIB_LDFLAGS
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit 2ab92ae9dca7c4a9dc3b8468333b10aff7629c5a
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Mar 7 22:44:59 2018 +0100
config: Pass diverse flags to Configure via the environment
Passing flags "discovered" by 'config' on the command line to
'Configure' mixes them up with flags given by the user. That is
contrary to their intention, so they need to be passed in a different
manner.
Enter the environment variables __CNF_CPPDEFINES, __CNF_CPPINCLUDES,
__CNF_CPPFLAGS, __CNF_CFLAGS, __CNF_CXXFLAGS, __CNF_LDFLAGS, and
__CNF_LDLIBS, initialised by 'config', and then used by Configure to
initialise these %config values: defines, includes, cppflags, cflags,
cxxflags, lflags, and ex_libs.
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit 72d7f221ee7a3909496c240bab85770b48b515dd
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Mar 7 13:29:41 2018 +0100
Configurations/10-main.conf: Duplicate cflags to cxxflags
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit b6954f3b3f9f18d885a521d6581d1b442c1d04ac
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Mar 7 13:29:04 2018 +0100
Add space to asoutflag value where appropriate
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit abe256e7951e6d57f8f6b4364ea696eb4ead3852
Author: Richard Levitte <levitte at openssl.org>
Date: Tue Mar 6 20:35:30 2018 +0100
Make "make variables" config attributes for overridable flags
With the support of "make variables" comes the possibility for the
user to override them. However, we need to make a difference between
defaults that we use (and that should be overridable by the user) and
flags that are crucial for building OpenSSL (should not be
overridable).
Typically, overridable flags are those setting optimization levels,
warnings levels, that kind of thing, while non-overridable flags are,
for example, macros that indicate aspects of how the config target
should be treated, such as L_ENDIAN and B_ENDIAN.
We do that differentiation by allowing upper case attributes in the
config targets, named exactly like the "make variables" we support,
and reserving the lower case attributes for non-overridable project
flags.
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
commit 48dcca265c9cb0c26459240ab1858577dacf9e67
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Mar 7 20:31:15 2018 +0100
Configure et al: rename all dso_* to module_* in shared-info.pl
Because there are already attributes with the dso_ prefix that are
used instead of the corresponding lib_ attributes rather than in
addition to them, it gets confusing to have similar or exactly the
same attributes working with different semantics on Unix.
So we rename those by changing the prefix dso_ to module_, and having
those work just like the shared_ attributes, but for DSOs.
Reviewed-by: Andy Polyakov <appro at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5534)
-----------------------------------------------------------------------
Summary of changes:
Configurations/00-base-templates.conf | 42 +--
Configurations/10-main.conf | 541 ++++++++++++++++++----------------
Configurations/50-djgpp.conf | 5 +-
Configurations/50-haiku.conf | 9 +-
Configurations/50-masm.conf | 5 +-
Configurations/90-team.conf | 6 +-
Configurations/README | 67 +++--
Configurations/descrip.mms.tmpl | 209 ++++++++++---
Configurations/shared-info.pl | 8 +-
Configurations/unix-Makefile.tmpl | 172 ++++++++---
Configurations/windows-makefile.tmpl | 176 ++++++++---
Configure | 147 +++++----
INSTALL | 24 +-
apps/CA.pl.in | 2 +-
apps/tsget.in | 2 +-
config | 103 +++++--
crypto/build.info | 2 +-
tools/c_rehash.in | 2 +-
18 files changed, 967 insertions(+), 555 deletions(-)
diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf
index 0350997..310a370 100644
--- a/Configurations/00-base-templates.conf
+++ b/Configurations/00-base-templates.conf
@@ -46,16 +46,16 @@ my %targets=(
build_scheme => [ "unified", "unix" ],
build_file => "Makefile",
- ar => "ar",
- arflags => "r",
- cc => "cc",
- hashbangperl => "/usr/bin/env perl",
- ranlib => sub { which("$config{cross_compile_prefix}ranlib")
+ AR => "ar",
+ ARFLAGS => "r",
+ CC => "cc",
+ HASHBANGPERL => "/usr/bin/env perl",
+ RANLIB => sub { which("$config{cross_compile_prefix}ranlib")
? "ranlib" : "" },
- rc => "windres",
+ RC => "windres",
#### THESE WILL BE ENABLED IN OpenSSL 1.2
- #hashbangperl => "PERL", # Only Unix actually cares
+ #HASHBANGPERL => "PERL", # Only Unix actually cares
},
BASE_common => {
@@ -84,19 +84,19 @@ my %targets=(
inherit_from => [ "BASE_common" ],
template => 1,
- ar => "ar",
- arflags => "r",
- cc => "cc",
+ AR => "ar",
+ ARFLAGS => "r",
+ CC => "cc",
lflags =>
sub { $withargs{zlib_lib} ? "-L".$withargs{zlib_lib} : () },
ex_libs =>
sub { !defined($disabled{zlib})
&& defined($disabled{"zlib-dynamic"})
? "-lz" : () },
- hashbangperl => "/usr/bin/env perl", # Only Unix actually cares
- ranlib => sub { which("$config{cross_compile_prefix}ranlib")
+ HASHBANGPERL => "/usr/bin/env perl", # Only Unix actually cares
+ RANLIB => sub { which("$config{cross_compile_prefix}ranlib")
? "ranlib" : "" },
- rc => "windres",
+ RC => "windres",
build_scheme => [ "unified", "unix" ],
build_file => "Makefile",
@@ -116,16 +116,16 @@ my %targets=(
return ();
},
- ld => "link",
- lflags => "/nologo",
- loutflag => "/out:",
- ar => "lib",
- arflags => "/nologo",
+ LD => "link",
+ LDFLAGS => "/nologo",
+ ldoutflag => "/out:",
+ AR => "lib",
+ ARFLAGS => "/nologo",
aroutflag => "/out:",
- rc => "rc",
+ RC => "rc",
rcoutflag => "/fo",
- mt => "mt",
- mtflags => "-nologo",
+ MT => "mt",
+ MTFLAGS => "-nologo",
mtinflag => "-manifest ",
mtoutflag => "-outputresource:",
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 7f07752..69439e4 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -6,16 +6,19 @@ my $vc_win64a_info = {};
sub vc_win64a_info {
unless (%$vc_win64a_info) {
if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
- $vc_win64a_info = { as => "nasm",
- asflags => "-f win64 -DNEAR -Ox -g",
- asoutflag => "-o" };
+ $vc_win64a_info = { AS => "nasm",
+ ASFLAGS => "-g",
+ asflags => "-Ox -f win64 -DNEAR",
+ asoutflag => "-o " };
} elsif ($disabled{asm}) {
- $vc_win64a_info = { as => "ml64",
- asflags => "/c /Cp /Cx /Zi",
+ $vc_win64a_info = { AS => "ml64",
+ ASFLAGS => "/Zi",
+ asflags => "/c /Cp /Cx",
asoutflag => "/Fo" };
} else {
$die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n");
- $vc_win64a_info = { as => "{unknown}",
+ $vc_win64a_info = { AS => "{unknown}",
+ ASFLAGS => "",
asflags => "",
asoutflag => "" };
}
@@ -29,18 +32,21 @@ sub vc_win32_info {
my $ver=`nasm -v 2>NUL`;
my $vew=`nasmw -v 2>NUL`;
if ($ver ne "" || $vew ne "") {
- $vc_win32_info = { as => $ver ge $vew ? "nasm" : "nasmw",
+ $vc_win32_info = { AS => $ver ge $vew ? "nasm" : "nasmw",
+ ASFLAGS => "",
asflags => "-f win32",
- asoutflag => "-o",
+ asoutflag => "-o ",
perlasm_scheme => "win32n" };
} elsif ($disabled{asm}) {
- $vc_win32_info = { as => "ml",
- asflags => "/nologo /Cp /coff /c /Cx /Zi",
+ $vc_win32_info = { AS => "ml",
+ ASFLAGS => "/nologo /Zi",
+ asflags => "/Cp /coff /c /Cx",
asoutflag => "/Fo",
perlasm_scheme => "win32" };
} else {
$die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n");
- $vc_win32_info = { as => "{unknown}",
+ $vc_win32_info = { AS => "{unknown}",
+ ASFLAGS => "",
asflags => "",
asoutflag => "",
perlasm_scheme => "win32" };
@@ -150,9 +156,10 @@ sub vms_info {
if ($config{target} =~ /-ia64/) {
`PIPE ias -H 2> NL:`;
if ($? == 0) {
- $vms_info->{as} = "ias";
- $vms_info->{asflags} = '-d debug "-N" vms_upcase';
- $vms_info->{asoutflag} = "-o";
+ $vms_info->{AS} = "ias";
+ $vms_info->{ASFLAGS} = '-d debug';
+ $vms_info->{asflags} = '"-N" vms_upcase';
+ $vms_info->{asoutflag} = "-o ";
$vms_info->{perlasm_scheme} = "ias";
}
}
@@ -165,24 +172,24 @@ my %targets = (
#### Basic configs that should work on any 32-bit box
"gcc" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cflags => picker(debug => "-O0 -g",
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
release => "-O3"),
thread_scheme => "(unknown)",
bn_ops => "BN_LLONG",
},
"cc" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-O",
+ CC => "cc",
+ CFLAGS => "-O",
thread_scheme => "(unknown)",
},
#### VOS Configurations
"vos-gcc" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cflags => picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => picker(default => "-Wall",
debug => "-O0 -g",
release => "-O3"),
cppflags => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN",
@@ -210,11 +217,11 @@ my %targets = (
# /usr/ccs/bin/as. Failure to comply will result in compile
# failures [at least] in 32-bit build.
inherit_from => [ "solaris-common", asm("x86_elf_asm") ],
- cc => "gcc",
- cflags => add_before(picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => add_before(picker(default => "-Wall",
debug => "-O0 -g",
- release => "-O3 -fomit-frame-pointer"),
- threads("-pthread")),
+ release => "-O3 -fomit-frame-pointer")),
+ cflags => add(threads("-pthread")),
cppflags => add("-DL_ENDIAN"),
ex_libs => add(threads("-pthread")),
bn_ops => "BN_LLONG",
@@ -231,11 +238,11 @@ my %targets = (
# to consider using gcc shared build even with vendor compiler:-)
# -- <appro at openssl.org>
inherit_from => [ "solaris-common", asm("x86_64_asm") ],
- cc => "gcc",
- cflags => add_before(picker(default => "-m64 -Wall",
+ CC => "gcc",
+ CFLAGS => add_before(picker(default => "-Wall",
debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ release => "-O3")),
+ cflags => add_before("-m64", threads("-pthread")),
cppflags => add("-DL_ENDIAN"),
ex_libs => add(threads("-pthread")),
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -260,10 +267,10 @@ my %targets = (
#
"solaris64-x86_64-cc" => {
inherit_from => [ "solaris-common", asm("x86_64_asm") ],
- cc => "cc",
- cflags => add_before(picker(default => "-xarch=generic64 -xstrconst -Xa",
- debug => "-g",
+ CC => "cc",
+ CFLAGS => add_before(picker(debug => "-g",
release => "-xO5 -xdepend -xbuiltin")),
+ cflags => add_before("-xarch=generic64 -xstrconst -Xa"),
cppflags => add("-DL_ENDIAN", threads("-D_REENTRANT")),
thread_scheme => "pthreads",
lflags => add(threads("-mt")),
@@ -278,11 +285,11 @@ my %targets = (
#### SPARC Solaris with GNU C setups
"solaris-sparcv7-gcc" => {
inherit_from => [ "solaris-common" ],
- cc => "gcc",
- cflags => add_before(picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => add_before(picker(default => "-Wall",
debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ release => "-O3")),
+ cflags => add(threads("-pthread")),
cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
ex_libs => add(threads("-pthread")),
bn_ops => "BN_LLONG RC4_CHAR",
@@ -312,10 +319,10 @@ my %targets = (
# SC5.0 note: Compiler common patch 107357-01 or later is required!
"solaris-sparcv7-cc" => {
inherit_from => [ "solaris-common" ],
- cc => "cc",
- cflags => add_before(picker(default => "-xstrconst -Xa",
- debug => "-g",
+ CC => "cc",
+ CFLAGS => add_before(picker(debug => "-g",
release => "-xO5 -xdepend")),
+ cflags => add_before("-xstrconst -Xa"),
cppflags => add("-DB_ENDIAN -DBN_DIV2W",
threads("-D_REENTRANT")),
lflags => add(threads("-mt")),
@@ -344,10 +351,10 @@ my %targets = (
# Only N32 and N64 ABIs are supported.
"irix-mips3-gcc" => {
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
- cc => "gcc",
- cflags => combine(picker(default => "-mabi=n32",
- debug => "-g -O0",
- release => "-O3")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-g -O0",
+ release => "-O3"),
+ cflags => "-mabi=n32",
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
threads("-D_SGI_MP_SOURCE")),
ex_libs => add(threads("-lpthread")),
@@ -361,10 +368,10 @@ my %targets = (
},
"irix-mips3-cc" => {
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
- debug => "-g -O0",
- release => "-O2")),
+ CC => "cc",
+ CFLAGS => picker(debug => "-g -O0",
+ release => "-O2"),
+ cflags => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
threads("-D_SGI_MP_SOURCE")),
ex_libs => add(threads("-lpthread")),
@@ -379,10 +386,10 @@ my %targets = (
# N64 ABI builds.
"irix64-mips4-gcc" => {
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
- cc => "gcc",
- cflags => combine(picker(default => "-mabi=64 -mips4",
- debug => "-g -O0",
- release => "-O3")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-g -O0",
+ release => "-O3"),
+ cflags => "-mabi=64 -mips4",
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
threads("-D_SGI_MP_SOURCE")),
ex_libs => add(threads("-lpthread")),
@@ -396,13 +403,14 @@ my %targets = (
},
"irix64-mips4-cc" => {
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
- debug => "-g -O0",
- release => "-O2")),
+ CC => "cc",
+ CFLAGS => picker(debug => "-g -O0",
+ release => "-O2"),
+ cppflags => threads("-D_SGI_MP_SOURCE"),
+ cflags => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
threads("-D_SGI_MP_SOURCE")),
- ex_libs => add(threads("-lpthread")),
+ ex_libs => threads("-lpthread"),
bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
thread_scheme => "pthreads",
perlasm_scheme => "64",
@@ -441,10 +449,10 @@ my %targets = (
# thus adequate performance is provided even with PA-RISC 1.1 build.
"hpux-parisc-gcc" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cflags => combine(picker(debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O3"),
+ cflags => add(threads("-pthread")),
cppflags => "-DB_ENDIAN -DBN_DIV2W",
ex_libs => add("-Wl,+s -ldld", threads("-pthread")),
bn_ops => "BN_LLONG",
@@ -461,8 +469,8 @@ my %targets = (
},
"hpux64-parisc2-gcc" => {
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
- cc => "gcc",
- cflags => combine(picker(debug => "-O0 -g",
+ CC => "gcc",
+ CFLAGS => combine(picker(debug => "-O0 -g",
release => "-O3")),
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
ex_libs => add("-ldl"),
@@ -479,10 +487,10 @@ my %targets = (
# More attempts at unified 10.X and 11.X targets for HP C compiler.
"hpux-parisc-cc" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => combine(picker(default => "+Optrs_strongly_typed -Ae +ESlit",
- debug => "+O0 +d -g",
- release => "+O3")),
+ CC => "cc",
+ CFLAGS => picker(debug => "+O0 +d -g",
+ release => "+O3"),
+ cflags => "+Optrs_strongly_typed -Ae +ESlit",
cppflags => combine("-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
threads("-D_REENTRANT")),
ex_libs => add("-Wl,+s -ldld",threads("-lpthread")),
@@ -501,10 +509,10 @@ my %targets = (
},
"hpux64-parisc2-cc" => {
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
- debug => "+O0 +d -g",
- release => "+O3")),
+ CC => "cc",
+ CFLAGS => picker(debug => "+O0 +d -g",
+ release => "+O3") ,
+ cflags => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
cppflags => combine("-DB_ENDIAN -DMD32_XARRAY",
threads("-D_REENTRANT")),
ex_libs => add("-ldl",threads("-lpthread")),
@@ -521,10 +529,10 @@ my %targets = (
# HP/UX IA-64 targets
"hpux-ia64-cc" => {
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-Ae +DD32 +Olit=all -z",
- debug => "+O0 +d -g",
- release => "+O2")),
+ CC => "cc",
+ CFLAGS => picker(debug => "+O0 +d -g",
+ release => "+O2"),
+ cflags => "-Ae +DD32 +Olit=all -z",
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
ex_libs => add("-ldl",threads("-lpthread")),
bn_ops => "SIXTY_FOUR_BIT",
@@ -538,10 +546,10 @@ my %targets = (
},
"hpux64-ia64-cc" => {
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-Ae +DD64 +Olit=all -z",
- debug => "+O0 +d -g",
- release => "+O3")),
+ CC => "cc",
+ CFLAGS => picker(debug => "+O0 +d -g",
+ release => "+O3"),
+ cflags => "-Ae +DD64 +Olit=all -z",
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
ex_libs => add("-ldl", threads("-lpthread")),
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -556,10 +564,10 @@ my %targets = (
# GCC builds...
"hpux-ia64-gcc" => {
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
- cc => "gcc",
- cflags => combine(picker(debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O3"),
+ cflags => add(threads("-pthread")),
cppflags => "-DB_ENDIAN",
ex_libs => add("-ldl", threads("-pthread")),
bn_ops => "SIXTY_FOUR_BIT",
@@ -573,11 +581,10 @@ my %targets = (
},
"hpux64-ia64-gcc" => {
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
- cc => "gcc",
- cflags => combine(picker(default => "-mlp64",
- debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O3"),
+ cflags => combine("-mlp64", threads("-pthread")),
cppflags => "-DB_ENDIAN",
ex_libs => add("-ldl", threads("-pthread")),
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -593,8 +600,8 @@ my %targets = (
#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
"MPE/iX-gcc" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cflags => "-O3",
+ CC => "gcc",
+ CFLAGS => "-O3",
cppflags => "-D_ENDIAN -DBN_DIV2W -D_POSIX_SOURCE -D_SOCKET_SOURCE",
includes => add("/SYSLOG/PUB"),
sys_id => "MPE",
@@ -610,8 +617,9 @@ my %targets = (
#### but not anymore...
"tru64-alpha-gcc" => {
inherit_from => [ "BASE_unix", asm("alpha_asm") ],
- cc => "gcc",
- cflags => combine("-std=c9x -O3", threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => "-O3",
+ cflags => add("-std=c9x", threads("-pthread")),
cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -622,9 +630,10 @@ my %targets = (
},
"tru64-alpha-cc" => {
inherit_from => [ "BASE_unix", asm("alpha_asm") ],
- cc => "cc",
- cflags => combine("-std1 -tune host -fast -readonly_strings",
- threads("-pthread")),
+ CC => "cc",
+ CFLAGS => "-tune host -fast",
+ cflags => add("-std1 -readonly_strings",
+ threads("-pthread")),
cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -642,16 +651,16 @@ my %targets = (
# throw in -D[BL]_ENDIAN, whichever appropriate...
"linux-generic32" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cxx => "g++",
- cflags => combine(picker(default => "-Wall",
- debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
- cxxflags => combine(picker(default => "-std=c++11 -Wall",
- debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ CC => "gcc",
+ CXX => "g++",
+ CFLAGS => picker(default => "-Wall",
+ debug => "-O0 -g",
+ release => "-O3"),
+ CXXFLAGS => picker(default => "-Wall",
+ debug => "-O0 -g",
+ release => "-O3"),
+ cflags => threads("-pthread"),
+ cxxflags => combine("-std=c++11", threads("-pthread")),
cppflags => "-DOPENSSL_USE_NODELETE",
ex_libs => add("-ldl", threads("-pthread")),
bn_ops => "BN_LLONG RC4_CHAR",
@@ -674,6 +683,7 @@ my %targets = (
"linux-ppc64" => {
inherit_from => [ "linux-generic64", asm("ppc64_asm") ],
cflags => add("-m64"),
+ cxxflags => add("-m64"),
cppflags => add("-DB_ENDIAN"),
perlasm_scheme => "linux64",
multilib => "64",
@@ -681,6 +691,7 @@ my %targets = (
"linux-ppc64le" => {
inherit_from => [ "linux-generic64", asm("ppc64_asm") ],
cflags => add("-m64"),
+ cxxflags => add("-m64"),
cppflags => add("-DL_ENDIAN"),
perlasm_scheme => "linux64le",
},
@@ -727,6 +738,7 @@ my %targets = (
"linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
inherit_from => [ "linux-generic32", asm("aarch64_asm") ],
cflags => add("-mabi=ilp32"),
+ cxxflags => add("-mabi=ilp32"),
bn_ops => "SIXTY_FOUR_BIT RC4_CHAR",
perlasm_scheme => "linux64",
},
@@ -736,6 +748,7 @@ my %targets = (
# support, if no -march was specified at command line.
inherit_from => [ "linux-generic32", asm("mips32_asm") ],
cflags => add("-mabi=32"),
+ cxxflags => add("-mabi=32"),
cppflags => add("-DBN_DIV3W"),
perlasm_scheme => "o32",
},
@@ -744,6 +757,7 @@ my %targets = (
"linux-mips64" => {
inherit_from => [ "linux-generic32", asm("mips64_asm") ],
cflags => add("-mabi=n32"),
+ cxxflags => add("-mabi=n32"),
cppflags => add("-DBN_DIV3W"),
bn_ops => "SIXTY_FOUR_BIT RC4_CHAR",
perlasm_scheme => "n32",
@@ -752,6 +766,7 @@ my %targets = (
"linux64-mips64" => {
inherit_from => [ "linux-generic64", asm("mips64_asm") ],
cflags => add("-mabi=64"),
+ cxxflags => add("-mabi=64"),
cppflags => add("-DBN_DIV3W"),
perlasm_scheme => "64",
multilib => "64",
@@ -762,14 +777,14 @@ my %targets = (
#### machines where gcc doesn't understand -m32 and -m64
"linux-elf" => {
inherit_from => [ "linux-generic32", asm("x86_elf_asm") ],
- cflags => add(picker(release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
cppflags => add("-DL_ENDIAN"),
bn_ops => "BN_LLONG",
},
"linux-aout" => {
inherit_from => [ "BASE_unix", asm("x86_asm") ],
- cc => "gcc",
- cflags => add(picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => add(picker(default => "-Wall",
debug => "-O0 -g",
release => "-O3 -fomit-frame-pointer")),
cppflags => add("-DL_ENDIAN"),
@@ -781,21 +796,23 @@ my %targets = (
#### X86 / X86_64 targets
"linux-x86" => {
inherit_from => [ "linux-generic32", asm("x86_asm") ],
- cflags => add(picker(default => "-m32",
- release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
+ cflags => add("-m32"),
+ cxxflags => add("-m32"),
cppflags => add("-DL_ENDIAN"),
bn_ops => "BN_LLONG",
perlasm_scheme => "elf",
},
"linux-x86-clang" => {
inherit_from => [ "linux-x86" ],
- cc => "clang",
- cxx => "clang++",
- cflags => add("-Wextra"),
+ CC => "clang",
+ CXX => "clang++",
+ CFLAGS => add("-Wextra"),
},
"linux-x86_64" => {
inherit_from => [ "linux-generic64", asm("x86_64_asm") ],
cflags => add("-m64"),
+ cxxflags => add("-m64"),
cppflags => add("-DL_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT_LONG",
perlasm_scheme => "elf",
@@ -803,13 +820,14 @@ my %targets = (
},
"linux-x86_64-clang" => {
inherit_from => [ "linux-x86_64" ],
- cc => "clang",
- cxx => "clang++",
- cflags => add("-Wextra"),
+ CC => "clang",
+ CXX => "clang++",
+ CFLAGS => add("-Wextra"),
},
"linux-x32" => {
inherit_from => [ "linux-generic32", asm("x86_64_asm") ],
cflags => add("-mx32"),
+ cxxflags => add("-mx32"),
cppflags => add("-DL_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT",
perlasm_scheme => "elf32",
@@ -824,6 +842,7 @@ my %targets = (
"linux64-s390x" => {
inherit_from => [ "linux-generic64", asm("s390x_asm") ],
cflags => add("-m64"),
+ cxxflags => add("-m64"),
cppflags => add("-DB_ENDIAN"),
perlasm_scheme => "64",
multilib => "64",
@@ -847,6 +866,7 @@ my %targets = (
#
inherit_from => [ "linux-generic32", asm("s390x_asm") ],
cflags => add("-m31 -Wa,-mzarch"),
+ cxxflags => add("-m31 -Wa,-mzarch"),
cppflags => add("-DB_ENDIAN"),
bn_asm_src => sub { my $r=join(" ", at _); $r=~s|asm/s390x\.S|bn_asm.c|; $r; },
perlasm_scheme => "31",
@@ -857,34 +877,39 @@ my %targets = (
"linux-sparcv8" => {
inherit_from => [ "linux-generic32", asm("sparcv8_asm") ],
cflags => add("-mcpu=v8"),
- cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
+ cxxflags => add("-mcpu=v8"),
+ lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
},
"linux-sparcv9" => {
# it's a real mess with -mcpu=ultrasparc option under Linux,
# but -Wa,-Av8plus should do the trick no matter what.
inherit_from => [ "linux-generic32", asm("sparcv9_asm") ],
cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
- cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
+ cxxflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
+ lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
},
"linux64-sparcv9" => {
# GCC 3.1 is a requirement
inherit_from => [ "linux-generic64", asm("sparcv9_asm") ],
cflags => add("-m64 -mcpu=ultrasparc"),
- cppflags => add("-DB_ENDIAN"),
+ cxxflags => add("-m64 -mcpu=ultrasparc"),
+ lib_cppflags => add("-DB_ENDIAN"),
bn_ops => "BN_LLONG RC4_CHAR",
multilib => "64",
},
"linux-alpha-gcc" => {
inherit_from => [ "linux-generic64", asm("alpha_asm") ],
- cppflags => add("-DL_ENDIAN"),
+ lib_cppflags => add("-DL_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT_LONG",
},
"linux-c64xplus" => {
inherit_from => [ "BASE_unix" ],
# TI_CGT_C6000_7.3.x is a requirement
- cc => "cl6x",
- cflags => "--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden",
+ CC => "cl6x",
+ CFLAGS => "-o2 -ox -ms",
+ cflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
+ cxxflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
cppflags => combine("-DOPENSSL_SMALL_FOOTPRINT",
threads("-D_REENTRANT")),
bn_ops => "BN_LLONG",
@@ -932,12 +957,13 @@ my %targets = (
# systems are perfectly capable of executing binaries targeting
# Froyo. Keep in mind that in the nutshell Android builds are
# about JNI, i.e. shared libraries, not applications.
- cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
+ cflags => add("-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack"),
+ cxxflags => add("-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack"),
bin_cflags => "-pie",
},
"android-x86" => {
inherit_from => [ "android", asm("x86_asm") ],
- cflags => add(picker(release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
bn_ops => "BN_LLONG",
perlasm_scheme => "android",
},
@@ -972,7 +998,8 @@ my %targets = (
"android64" => {
inherit_from => [ "linux-generic64" ],
- cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
+ cflags => add("-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack"),
+ cxxflags => add("-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack"),
bin_cflags => "-pie",
},
"android64-aarch64" => {
@@ -1007,11 +1034,11 @@ my %targets = (
# -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
# expands it as -lc_r, which seems to be sufficient?
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => combine(picker(default => "-Wall",
- debug => "-O0 -g",
- release => "-O3"),
- threads("-pthread")),
+ CC => "cc",
+ CFLAGS => picker(default => "-Wall",
+ debug => "-O0 -g",
+ release => "-O3"),
+ cflags => threads("-pthread"),
cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"),
ex_libs => add(threads("-pthread")),
enable => add("devcryptoeng"),
@@ -1029,7 +1056,7 @@ my %targets = (
"BSD-x86" => {
inherit_from => [ "BSD-generic32", asm("x86_asm") ],
- cflags => add(picker(release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
cppflags => add("-DL_ENDIAN"),
bn_ops => "BN_LLONG",
shared_target => "bsd-shared",
@@ -1069,8 +1096,8 @@ my %targets = (
"bsdi-elf-gcc" => {
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
- cc => "gcc",
- cflags => "-fomit-frame-pointer -O3 -Wall",
+ CC => "gcc",
+ CFLAGS => "-fomit-frame-pointer -O3 -Wall",
cppflags => "-DPERL5 -DL_ENDIAN",
ex_libs => add("-ldl"),
bn_ops => "BN_LLONG",
@@ -1083,16 +1110,16 @@ my %targets = (
"nextstep" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-O -Wall",
+ CC => "cc",
+ CFLAGS => "-O -Wall",
unistd => "<libc.h>",
bn_ops => "BN_LLONG",
thread_scheme => "(unknown)",
},
"nextstep3.3" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-O3 -Wall",
+ CC => "cc",
+ CFLAGS => "-O3 -Wall",
unistd => "<libc.h>",
bn_ops => "BN_LLONG",
thread_scheme => "(unknown)",
@@ -1101,14 +1128,14 @@ my %targets = (
# QNX
"qnx4" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "",
+ CC => "cc",
+ CFLAGS => "",
cppflags => "-DL_ENDIAN -DTERMIO",
thread_scheme => "(unknown)",
},
"QNX6" => {
inherit_from => [ "BASE_unix" ],
- cc => "gcc",
+ CC => "gcc",
ex_libs => add("-lsocket"),
dso_scheme => "dlfcn",
shared_target => "bsd-gcc-shared",
@@ -1117,8 +1144,8 @@ my %targets = (
},
"QNX6-i386" => {
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
- cc => "gcc",
- cflags => "-O2 -Wall",
+ CC => "gcc",
+ CFLAGS => "-O2 -Wall",
cppflags => "-DL_ENDIAN",
ex_libs => add("-lsocket"),
dso_scheme => "dlfcn",
@@ -1140,24 +1167,26 @@ my %targets = (
# UnixWare 2.0x fails destest with -O.
"unixware-2.0" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => combine(threads("-Kthread")),
+ CC => "cc",
+ cflags => threads("-Kthread"),
cppflags => "-DFILIO_H -DNO_STRINGS_H",
ex_libs => add("-lsocket -lnsl -lresolv -lx"),
thread_scheme => "uithreads",
},
"unixware-2.1" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => combine("-O", threads("-Kthread")),
+ CC => "cc",
+ CFLAGS => "-O",
+ cflags => threads("-Kthread"),
cppflags => "-DFILIO_H",
ex_libs => add("-lsocket -lnsl -lresolv -lx"),
thread_scheme => "uithreads",
},
"unixware-7" => {
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
- cc => "cc",
- cflags => combine("-O -Kalloca", threads("-Kthread")),
+ CC => "cc",
+ CFLAGS => "-O",
+ cflags => combine("-Kalloca", threads("-Kthread")),
cppflags => "-DFILIO_H",
ex_libs => add("-lsocket -lnsl"),
thread_scheme => "uithreads",
@@ -1170,8 +1199,8 @@ my %targets = (
},
"unixware-7-gcc" => {
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
- cc => "gcc",
- cflags => combine("-O3 -fomit-frame-pointer -Wall"),
+ CC => "gcc",
+ CFLAGS => "-O3 -fomit-frame-pointer -Wall",
cppflags => add("-DL_ENDIAN -DFILIO_H",
threads("-D_REENTRANT")),
ex_libs => add("-lsocket -lnsl"),
@@ -1218,10 +1247,10 @@ my %targets = (
# current value of $OBJECT_MODE.
"aix-gcc" => {
inherit_from => [ "BASE_unix", asm("ppc32_asm") ],
- cc => "gcc",
- cflags => combine(picker(debug => "-O0 -g",
- release => "-O"),
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O"),
+ cflags => add(threads("-pthread")),
cppflags => "-DB_ENDIAN",
ex_libs => add(threads("-pthread")),
sys_id => "AIX",
@@ -1236,11 +1265,10 @@ my %targets = (
},
"aix64-gcc" => {
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
- cc => "gcc",
- cflags => combine(picker(default => "-maix64",
- debug => "-O0 -g",
- release => "-O"),
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O"),
+ cflags => combine("-maix64", threads("-pthread")),
cppflags => "-DB_ENDIAN",
ex_libs => add(threads("-pthread")),
sys_id => "AIX",
@@ -1255,10 +1283,10 @@ my %targets = (
},
"aix-cc" => {
inherit_from => [ "BASE_unix", asm("ppc32_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-q32 -qmaxmem=16384 -qro -qroconst",
- debug => "-O0 -g",
- release => "-O"),
+ CC => "cc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O"),
+ cflags => combine("-q32 -qmaxmem=16384 -qro -qroconst",
threads("-qthreaded")),
cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")),
sys_id => "AIX",
@@ -1274,10 +1302,10 @@ my %targets = (
},
"aix64-cc" => {
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
- cc => "cc",
- cflags => combine(picker(default => "-q64 -qmaxmem=16384 -qro -qroconst",
- debug => "-O0 -g",
- release => "-O"),
+ CC => "cc",
+ CFLAGS => picker(debug => "-O0 -g",
+ release => "-O"),
+ cflags => combine("-q64 -qmaxmem=16384 -qro -qroconst",
threads("-qthreaded")),
cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")),
sys_id => "AIX",
@@ -1295,8 +1323,9 @@ my %targets = (
# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
"BS2000-OSD" => {
inherit_from => [ "BASE_unix" ],
- cc => "c89",
- cflags => "-O -XLLML -XLLMK -XL",
+ CC => "c89",
+ CFLAGS => "-O",
+ cflags => "-XLLML -XLLMK -XL",
cppflags => "-DB_ENDIAN -DCHARSET_EBCDIC",
ex_libs => add("-lsocket -lnsl"),
bn_ops => "THIRTY_TWO_BIT RC4_CHAR",
@@ -1317,9 +1346,12 @@ my %targets = (
"VC-common" => {
inherit_from => [ "BASE_Windows" ],
template => 1,
- cc => "cl",
- cpp => '$(CC) /EP /C',
- cflags => "-W3 -wd4090 -Gs0 -GF -Gy -nologo",
+ CC => "cl",
+ CPP => '$(CC) /EP /C',
+ CFLAGS => "-W3 -wd4090 -nologo",
+ LDFLAGS => add("/debug"),
+ coutflag => "/Fo",
+ cflags => '-Gs0 -GF -Gy',
defines => add("OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN",
"L_ENDIAN", "_CRT_SECURE_NO_DEPRECATE",
"_WINSOCK_DEPRECATED_NO_WARNINGS",
@@ -1333,11 +1365,9 @@ my %targets = (
}
return [ @defs ];
}),
- coutflag => "/Fo",
lib_cflags => add("/Zi /Fdossl_static"),
dso_cflags => "/Zi /Fddso",
bin_cflags => "/Zi /Fdapp",
- lflags => add("/debug"),
shared_ldflag => "/dll",
shared_target => "win-shared", # meaningless except it gives Configure a hint
thread_scheme => "winthreads",
@@ -1347,15 +1377,15 @@ my %targets = (
"VC-noCE-common" => {
inherit_from => [ "VC-common" ],
template => 1,
+ CFLAGS => add(picker(debug => '/Od',
+ release => '/O2')),
cflags => add(picker(debug =>
sub {
- ($disabled{shared} ? "" : "/MDd")
- ." /Od";
+ ($disabled{shared} ? "" : "/MDd");
},
release =>
sub {
- ($disabled{shared} ? "" : "/MD")
- ." /O2";
+ ($disabled{shared} ? "" : "/MD");
})),
defines => add(picker(default => [ "UNICODE", "_UNICODE" ],
debug => [ "DEBUG", "_DEBUG" ])),
@@ -1396,8 +1426,8 @@ my %targets = (
"VC-WIN64I" => {
inherit_from => [ "VC-WIN64-common", asm("ia64_asm"),
sub { $disabled{shared} ? () : "ia64_uplink" } ],
- as => "ias",
- asflags => "-d debug",
+ AS => "ias",
+ ASFLAGS => "-d debug",
asoutflag => "-o",
sys_id => "WIN64I",
bn_asm_src => sub { return undef unless @_;
@@ -1408,9 +1438,10 @@ my %targets = (
"VC-WIN64A" => {
inherit_from => [ "VC-WIN64-common", asm("x86_64_asm"),
sub { $disabled{shared} ? () : "x86_64_uplink" } ],
- as => sub { vc_win64a_info()->{as} },
- asflags => sub { vc_win64a_info()->{asflags} },
+ AS => sub { vc_win64a_info()->{AS} },
+ ASFLAGS => sub { vc_win64a_info()->{ASFLAGS} },
asoutflag => sub { vc_win64a_info()->{asoutflag} },
+ asflags => sub { vc_win64a_info()->{asflags} },
sys_id => "WIN64A",
bn_asm_src => sub { return undef unless @_;
my $r=join(" ", at _); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
@@ -1422,10 +1453,11 @@ my %targets = (
# configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
inherit_from => [ "VC-noCE-common", asm("x86_asm"),
sub { $disabled{shared} ? () : "uplink_common" } ],
- cflags => add("-WX"),
- as => sub { vc_win32_info()->{as} },
- asflags => sub { vc_win32_info()->{asflags} },
+ CFLAGS => add("-WX"),
+ AS => sub { vc_win32_info()->{AS} },
+ ASFLAGS => sub { vc_win32_info()->{ASFLAGS} },
asoutflag => sub { vc_win32_info()->{asoutflag} },
+ asflags => sub { vc_win32_info()->{asflags} },
ex_libs => add(sub {
my @ex_libs = ();
# WIN32 UNICODE build gets linked with unicows.lib for
@@ -1441,33 +1473,33 @@ my %targets = (
},
"VC-CE" => {
inherit_from => [ "VC-common" ],
- as => "ml",
- asflags => "/nologo /Cp /coff /c /Cx /Zi",
+ AS => "ml",
+ ASFLAGS => "/nologo",
asoutflag => "/Fo",
- cc => "cl",
+ asflags => "/Cp /coff /c /Cx /Zi",
+ CC => "cl",
+ CFLAGS => picker(default => '/W3 /WX /nologo',
+ debug => "/Od",
+ release => "/O1i"),
+ CPPDEFINES => picker(debug => [ "DEBUG", "_DEBUG" ]),
+ LDFLAGS => add("/nologo /opt:ref"),
cflags =>
- picker(default =>
- combine('/W3 /WX /GF /Gy /nologo',
- sub { vc_wince_info()->{cflags}; },
- sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
- ? ($disabled{shared} ? " /MT" : " /MD")
- : " /MC"; }),
- debug => "/Od",
- release => "/O1i"),
+ combine('/GF /Gy',
+ sub { vc_wince_info()->{cflags}; },
+ sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
+ ? ($disabled{shared} ? " /MT" : " /MD")
+ : " /MC"; }),
cppflags => sub { vc_wince_info()->{cppflags}; },
- defines =>
- picker(default => [ "UNICODE", "_UNICODE", "OPENSSL_SYS_WINCE",
- "WIN32_LEAN_AND_MEAN", "L_ENDIAN", "DSO_WIN32",
- "NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT" ],
- debug => [ "DEBUG", "_DEBUG" ]),
+ defines => [ "UNICODE", "_UNICODE", "L_ENDIAN", "DSO_WIN32",
+ "NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT",
+ "WIN32_LEAN_AND_MEAN" ],
includes =>
add(combine(sub { defined(env('WCECOMPAT'))
? '$(WCECOMPAT)/include' : (); },
sub { defined(env('PORTSDK_LIBPATH'))
? '$(PORTSDK_LIBPATH)/../../include'
: (); })),
- lflags => add(combine("/nologo /opt:ref",
- sub { vc_wince_info()->{lflags}; },
+ lflags => add(combine(sub { vc_wince_info()->{lflags}; },
sub { defined(env('PORTSDK_LIBPATH'))
? "/entry:mainCRTstartup" : (); })),
sys_id => "WINCE",
@@ -1498,12 +1530,14 @@ my %targets = (
"mingw" => {
inherit_from => [ "BASE_unix", asm("x86_asm"),
sub { $disabled{shared} ? () : "x86_uplink" } ],
- cc => "gcc",
- cflags => picker(default => "-m32 -Wall",
+ CC => "gcc",
+ CFLAGS => picker(default => "-Wall",
debug => "-g -O0",
release => "-O3 -fomit-frame-pointer"),
- cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN",
- "-DUNICODE -D_UNICODE", threads("-D_MT")),
+ cflags => "-m32",
+ cppflags => combine("-DL_ENDIAN -DUNICODE -D_UNICODE",
+ "-DWIN32_LEAN_AND_MEAN",
+ threads("-D_MT")),
sys_id => "MINGW32",
ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
@@ -1528,12 +1562,14 @@ my %targets = (
# environment. And as mingw64 is always consistent with itself,
# Applink is never engaged and can as well be omitted.
inherit_from => [ "BASE_unix", asm("x86_64_asm") ],
- cc => "gcc",
- cflags => picker(default => "-m64 -Wall",
+ CC => "gcc",
+ CFLAGS => picker(default => "-Wall",
debug => "-g -O0",
release => "-O3"),
- cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN",
- "-DUNICODE -D_UNICODE", threads("-D_MT")),
+ cflags => "-m64",
+ cppflags => combine("-DL_ENDIAN -DUNICODE -D_UNICODE",
+ "-DWIN32_LEAN_AND_MEAN",
+ threads("-D_MT")),
sys_id => "MINGW64",
ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
@@ -1552,8 +1588,8 @@ my %targets = (
#### UEFI
"UEFI" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-O",
+ CC => "cc",
+ CFLAGS => "-O",
cppflags => "-DL_ENDIAN",
sys_id => "UEFI",
},
@@ -1561,9 +1597,9 @@ my %targets = (
#### UWIN
"UWIN" => {
inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-O -Wall",
- cppflags => "-DTERMIOS -DL_ENDIAN",
+ CC => "cc",
+ CFLAGS => "-O -Wall",
+ lib_cppflags => "-DTERMIOS -DL_ENDIAN",
sys_id => "UWIN",
bn_ops => "BN_LLONG",
dso_scheme => "win32",
@@ -1572,8 +1608,8 @@ my %targets = (
#### Cygwin
"Cygwin-x86" => {
inherit_from => [ "BASE_unix", asm("x86_asm") ],
- cc => "gcc",
- cflags => picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => picker(default => "-Wall",
debug => "-g -O0",
release => "-O3 -fomit-frame-pointer"),
cppflags => "-DTERMIOS -DL_ENDIAN",
@@ -1588,8 +1624,8 @@ my %targets = (
},
"Cygwin-x86_64" => {
inherit_from => [ "BASE_unix", asm("x86_64_asm") ],
- cc => "gcc",
- cflags => picker(default => "-Wall",
+ CC => "gcc",
+ CFLAGS => picker(default => "-Wall",
debug => "-g -O0",
release => "-O3"),
cppflags => "-DTERMIOS -DL_ENDIAN",
@@ -1624,13 +1660,12 @@ my %targets = (
"darwin-common" => {
inherit_from => [ "BASE_unix" ],
template => 1,
- cc => "cc",
- cflags => picker(default => "",
- debug => "-g -O0",
+ CC => "cc",
+ CFLAGS => picker(debug => "-g -O0",
release => "-O3"),
cppflags => threads("-D_REENTRANT"),
+ lflags => "-Wl,-search_paths_first",
sys_id => "MACOSX",
- plib_lflags => "-Wl,-search_paths_first",
bn_ops => "BN_LLONG RC4_CHAR",
thread_scheme => "pthreads",
perlasm_scheme => "osx32",
@@ -1659,15 +1694,16 @@ my %targets = (
},
"darwin-i386-cc" => {
inherit_from => [ "darwin-common", asm("x86_asm") ],
- cflags => add(picker(default => "-arch i386",
- release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
+ cflags => add("-arch i386"),
cppflags => add("-DL_ENDIAN"),
bn_ops => "BN_LLONG RC4_INT",
perlasm_scheme => "macosx",
},
"darwin64-x86_64-cc" => {
inherit_from => [ "darwin-common", asm("x86_64_asm") ],
- cflags => add("-arch x86_64 -Wall"),
+ CFLAGS => add("-Wall"),
+ cflags => add("-arch x86_64"),
cppflags => add("-DL_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT_LONG",
perlasm_scheme => "macosx",
@@ -1714,9 +1750,9 @@ my %targets = (
"hurd-x86" => {
inherit_from => [ "BASE_unix" ],
inherit_from => [ asm("x86_elf_asm") ],
- cc => "gcc",
- cflags => combine("-O3 -fomit-frame-pointer -Wall",
- threads("-pthread")),
+ CC => "gcc",
+ CFLAGS => "-O3 -fomit-frame-pointer -Wall",
+ cflags => threads("-pthread"),
cppflags => "-DL_ENDIAN",
ex_libs => add("-ldl", threads("-pthread")),
bn_ops => "BN_LLONG",
@@ -1730,8 +1766,9 @@ my %targets = (
##### VxWorks for various targets
"vxworks-ppc60x" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
- cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall",
+ CC => "ccppc",
+ CFLAGS => "-O2 -Wall -fstrength-reduce",
+ cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -fno-builtin -fno-strict-aliasing",
cppflags => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32",
"_DTOOL_FAMILY=gnu -DTOOL=gnu",
"-I\$(WIND_BASE)/target/usr/h",
@@ -1742,8 +1779,9 @@ my %targets = (
},
"vxworks-ppcgen" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
- cflags => "-mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall",
+ CC => "ccppc",
+ CFLAGS => "-O1 -Wall",
+ cflags => "-mrtp -msoft-float -mstrict-align -fno-builtin -fno-strict-aliasing",
cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32",
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
"-I\$(WIND_BASE)/target/usr/h",
@@ -1754,8 +1792,9 @@ my %targets = (
},
"vxworks-ppc405" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
- cflags => "-g -msoft-float -mlongcall",
+ CC => "ccppc",
+ CFLAGS => "-g",
+ cflags => "-msoft-float -mlongcall",
cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405",
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
"-I\$(WIND_BASE)/target/h"),
@@ -1764,8 +1803,9 @@ my %targets = (
},
"vxworks-ppc750" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
- cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall \$(DEBUG_FLAG)",
+ CC => "ccppc",
+ CFLAGS => "-ansi -fvolatile -Wall \$(DEBUG_FLAG)",
+ cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
"-I\$(WIND_BASE)/target/h"),
sys_id => "VXWORKS",
@@ -1773,8 +1813,9 @@ my %targets = (
},
"vxworks-ppc750-debug" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
- cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -g",
+ CC => "ccppc",
+ CFLAGS => "-ansi -fvolatile -Wall -g",
+ cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
"-DPEDANTIC -DDEBUG",
"-I\$(WIND_BASE)/target/h"),
@@ -1783,7 +1824,7 @@ my %targets = (
},
"vxworks-ppc860" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccppc",
+ CC => "ccppc",
cflags => "-nostdinc -msoft-float",
cppflags => combine("-DCPU=PPC860 -DNO_STRINGS_H",
"-I\$(WIND_BASE)/target/h"),
@@ -1792,7 +1833,7 @@ my %targets = (
},
"vxworks-simlinux" => {
inherit_from => [ "BASE_unix" ],
- cc => "ccpentium",
+ CC => "ccpentium",
cflags => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -fno-builtin -fno-defer-pop",
cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
"-DL_ENDIAN -DCPU=SIMLINUX -DNO_STRINGS_H",
@@ -1806,8 +1847,9 @@ my %targets = (
},
"vxworks-mips" => {
inherit_from => [ "BASE_unix", asm("mips32_asm") ],
- cc => "ccmips",
- cflags => "-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop",
+ CC => "ccmips",
+ CFLAGS => "-O -G 0",
+ cflags => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop",
cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
"-DCPU=MIPS32 -DNO_STRINGS_H",
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
@@ -1826,7 +1868,7 @@ my %targets = (
#### uClinux
"uClinux-dist" => {
inherit_from => [ "BASE_unix" ],
- cc => sub { env('CC') },
+ CC => sub { env('CC') },
cppflags => threads("-D_REENTRANT"),
ex_libs => add("\$(LDLIBS)"),
bn_ops => "BN_LLONG",
@@ -1839,7 +1881,7 @@ my %targets = (
},
"uClinux-dist64" => {
inherit_from => [ "BASE_unix" ],
- cc => sub { env('CC') },
+ CC => sub { env('CC') },
cppflags => threads("-D_REENTRANT"),
ex_libs => add("\$(LDLIBS)"),
bn_ops => "SIXTY_FOUR_BIT_LONG",
@@ -1859,9 +1901,9 @@ my %targets = (
"vms-generic" => {
inherit_from => [ "BASE_VMS" ],
template => 1,
- cc => "CC/DECC",
- cpp => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:',
- cflags =>
+ CC => "CC/DECC",
+ CPP => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:',
+ CFLAGS =>
combine(picker(default => "/STANDARD=(ISOC94,RELAXED)/NOLIST/PREFIX=ALL",
debug => "/NOOPTIMIZE/DEBUG",
release => "/OPTIMIZE/NODEBUG"),
@@ -1887,9 +1929,10 @@ my %targets = (
dso_scheme => "vms",
thread_scheme => "pthreads",
- as => sub { vms_info()->{as} },
- asflags => sub { vms_info()->{asflags} },
+ AS => sub { vms_info()->{AS} },
+ ASFLAGS => sub { vms_info()->{ASFLAGS} },
asoutflag => sub { vms_info()->{asoutflag} },
+ asflags => sub { vms_info()->{asflags} },
perlasm_scheme => sub { vms_info()->{perlasm_scheme} },
apps_aux_src => "vms_term_sock.c",
diff --git a/Configurations/50-djgpp.conf b/Configurations/50-djgpp.conf
index b4d19e2..a8853a8 100644
--- a/Configurations/50-djgpp.conf
+++ b/Configurations/50-djgpp.conf
@@ -5,8 +5,9 @@
my %targets = (
"DJGPP" => {
inherit_from => [ asm("x86_asm") ],
- cc => "gcc",
- cflags => "-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall",
+ CC => "gcc",
+ CFLAGS => "-fomit-frame-pointer -O2 -Wall",
+ cflags => "-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN",
sys_id => "MSDOS",
lflags => add("-L/dev/env/WATT_ROOT/lib"),
ex_libs => add("-lwatt"),
diff --git a/Configurations/50-haiku.conf b/Configurations/50-haiku.conf
index b57e148..cd6d10e 100644
--- a/Configurations/50-haiku.conf
+++ b/Configurations/50-haiku.conf
@@ -1,10 +1,11 @@
my %targets = (
"haiku-common" => {
template => 1,
- cc => "cc",
- cflags => add_before(picker(default => "-DL_ENDIAN -Wall -include \$(SRCDIR)/os-dep/haiku.h",
+ CC => "cc",
+ CFLAGS => add_before(picker(default => "-Wall",
debug => "-g -O0",
- release => "-O2"),
+ release => "-O2")),
+ cflags => add_before("-DL_ENDIAN -include \$(SRCDIR)/os-dep/haiku.h",
threads("-D_REENTRANT")),
sys_id => "HAIKU",
ex_libs => "-lnetwork",
@@ -18,7 +19,7 @@ my %targets = (
},
"haiku-x86" => {
inherit_from => [ "haiku-common", asm("x86_elf_asm") ],
- cflags => add(picker(release => "-fomit-frame-pointer")),
+ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
bn_ops => "BN_LLONG",
},
"haiku-x86_64" => {
diff --git a/Configurations/50-masm.conf b/Configurations/50-masm.conf
index e2b54e3..2c55ddd 100644
--- a/Configurations/50-masm.conf
+++ b/Configurations/50-masm.conf
@@ -11,9 +11,10 @@ my %targets = (
"VC-WIN64A-masm" => {
inherit_from => [ "VC-WIN64-common", asm("x86_64_asm"),
sub { $disabled{shared} ? () : "x86_64_uplink" } ],
- as => "ml64",
- asflags => "/nologo /c /Cp /Cx /Zi",
+ AS => "ml64",
+ ASFLAGS => "/nologo /Zi",
asoutflag => "/Fo",
+ asflags => "/c /Cp /Cx",
sys_id => "WIN64A",
bn_asm_src => sub { return undef unless @_;
my $r=join(" ", at _); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
diff --git a/Configurations/90-team.conf b/Configurations/90-team.conf
index 3138218..a5cc6da 100644
--- a/Configurations/90-team.conf
+++ b/Configurations/90-team.conf
@@ -5,7 +5,7 @@ my %targets = (
"purify" => {
inherit_from => [ 'BASE_unix' ],
cc => "purify gcc",
- cflags => "-g -Wall",
+ CFLAGS => "-g -Wall",
thread_scheme => "(unknown)",
ex_libs => add(" ","-lsocket -lnsl"),
},
@@ -81,8 +81,8 @@ my %targets = (
},
"dist" => {
inherit_from => [ 'BASE_unix' ],
- cc => "cc",
- cflags => "-O",
+ CC => "cc",
+ CFLAGS => "-O",
thread_scheme => "(unknown)",
},
"debug-test-64-clang" => {
diff --git a/Configurations/README b/Configurations/README
index 8d32a25..d809824 100644
--- a/Configurations/README
+++ b/Configurations/README
@@ -45,19 +45,24 @@ In each table entry, the following keys are significant:
Note: if the same feature is both enabled
and disabled, disable wins.
+ as => The assembler command. This is not always
+ used (for example on Unix, where the C
+ compiler is used instead).
+ asflags => Default assembler command flags [4].
cpp => The C preprocessor command, normally not
given, as the build file defaults are
usually good enough.
- cppflags => The C preprocessor flags.
+ cppflags => Default C preprocessor flags [4].
defines => As an alternative, macro definitions may be
- given here instead of in `cppflags'. If
- given here, they MUST be as an array of the
- string such as "MACRO=value", or just
+ given here instead of in `cppflags' [4].
+ If given here, they MUST be as an array of
+ the string such as "MACRO=value", or just
"MACRO" for definitions without value.
includes => As an alternative, inclusion directories
- may be given here instead of in `cppflags'.
- If given here, the MUST be an array of
- strings, one directory specification each.
+ may be given here instead of in `cppflags'
+ [4]. If given here, the MUST be an array
+ of strings, one directory specification
+ each.
cc => The C compiler command, usually one of "cc",
"gcc" or "clang". This command is normally
also used to link object files and
@@ -67,14 +72,9 @@ In each table entry, the following keys are significant:
also used when linking a program where at
least one of the object file is made from
C++ source.
- cflags => Flags that are used at all times when
- compiling C object files.
- cxxflags => Flags that are used at all times when
- compiling C++ object files. If unset, it
- gets the same value as cflags.
- shared_cflag => Extra compilation flags used when
- compiling for shared libraries, typically
- something like "-fPIC".
+ cflags => Defaults C compiler flags [4].
+ cxxflags => Default C++ compiler flags [4]. If unset,
+ it gets the same value as cflags.
(linking is a complex thing, see [3] below)
ld => Linker command, usually not defined
@@ -82,13 +82,24 @@ In each table entry, the following keys are significant:
instead).
(NOTE: this is here for future use, it's
not implemented yet)
- lflags => Flags that are used when linking apps.
- shared_ldflag => Flags that are used when linking shared
- or dynamic libraries.
- plib_lflags => Extra linking flags to appear just before
- the libraries on the command line.
+ lflags => Default flags used when linking apps,
+ shared libraries or DSOs [4].
ex_libs => Extra libraries that are needed when
- linking.
+ linking shared libraries, DSOs or programs.
+
+ shared_cppflags => Extra C preprocessor flags used when
+ processing C files for shared libraries.
+ shared_cflag => Extra C compiler flags used when compiling
+ for shared libraries, typically something
+ like "-fPIC".
+ shared_ldflag => Extra linking flags used when linking
+ shared libraries.
+ module_cppflags
+ module_cflags
+ module_ldflags => Has the same function as the corresponding
+ `shared_' attributes, but for building DSOs.
+ When unset, they get the same values as the
+ corresponding `shared_' attributes.
ar => The library archive command, the default is
"ar".
@@ -338,18 +349,20 @@ In each table entry, the following keys are significant:
of this file):
shared libraries:
- {ld} $(CFLAGS) {shared_ldflag} -shared -o libfoo.so \
- -Wl,--whole-archive libfoo.a -Wl,--no-whole-archive \
- {plib_lflags} -lcrypto {ex_libs}
+ {ld} $(CFLAGS) {lflags} {shared_ldflag} -o libfoo.so \
+ foo/something.o foo/somethingelse.o {ex_libs}
shared objects:
- {ld} $(CFLAGS) {shared_ldflag} -shared -o libeng.so \
- blah1.o blah2.o {plib_lflags} -lcrypto {ex_libs}
+ {ld} $(CFLAGS) {lflags} {module_ldflags} -o libeng.so \
+ blah1.o blah2.o -lcrypto {ex_libs}
applications:
{ld} $(CFLAGS) {lflags} -o app \
- app1.o utils.o {plib_lflags} -lssl -lcrypto {ex_libs}
+ app1.o utils.o -lssl -lcrypto {ex_libs}
+[4] There are variants of these attribute, prefixed with `lib_',
+ `dso_' or `bin_'. Those variants replace the unprefixed attribute
+ when building library, DSO or program modules specifically.
Historically, the target configurations came in form of a string with
values separated by colons. This use is deprecated. The string form
diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index 2364644..e8780e4 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -171,51 +171,168 @@ OPENSSLDIR_C={- $osslprefix -}DATAROOT:[000000]
# Where installed engines reside, for C
ENGINESDIR_C={- $osslprefix -}ENGINES{- $sover_dirname.$target{pointer_size} -}:
-CC= {- $config{cc} -}
-CPP= {- $config{cpp} -}
-DEFINES={- our $defines = join(",",
- '__dummy', # To make comma processing easier
- @{$config{defines}}) -}
-INCLUDES={- our $includes = join(',', @{$config{includes}}) -}
-CPPFLAGS='qual_includes'{- our $cppflags = join('', @{$config{cppflags}}) -}
-CPPFLAGS_Q={- (my $x = $cppflags) =~ s|"|""|g;
- (my $d = $defines) =~ s|"|""|g;
- $x .= "/INCLUDE=($includes)" if $includes;
- $x .= "/DEFINE=($d)";
- $x; -}
-CFLAGS={- join('', @{$config{cflags}}) -}
-LDFLAGS= {- join('', @{$config{lflags}}) -}
-EX_LIBS= {- join('', map { ','.$_ } @{$config{ex_libs}}) -}
-
-LIB_DEFINES=$(DEFINES){- join("", (map { ",$_" }
- @{$target{shared_defines}},
- 'OPENSSLDIR="""$(OPENSSLDIR_C)"""',
- 'ENGINESDIR="""$(ENGINESDIR_C)"""')) -}
-LIB_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(LIB_DEFINES))
-LIB_CFLAGS=$(CFLAGS){- $target{lib_cflags} // "" -}
-DSO_DEFINES=$(DEFINES){- join("", (map { ",$_" } @{$target{dso_defines}})) -}
-DSO_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(DSO_DEFINES))
-DSO_CFLAGS=$(CFLAGS){- $target{dso_cflags} // "" -}
-BIN_DEFINES=$(DEFINES){- join("", (map { ",$_" } @{$target{bin_defines}})) -}
-BIN_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(BIN_DEFINES))
-BIN_CFLAGS=$(CFLAGS){- $target{bin_cflags} // "" -}
-NO_INST_LIB_CFLAGS=$(CFLAGS){- $target{no_inst_lib_cflags}
- // $target{lib_cflags}
- // "" -}
-NO_INST_DSO_CFLAGS=$(CFLAGS){- $target{no_inst_dso_cflags}
- // $target{dso_cflags}
- // "" -}
-NO_INST_BIN_CFLAGS=$(CFLAGS){- $target{no_inst_bin_cflags}
- // $target{bin_cflags}
- // "" -}
+##### User defined commands and flags ################################
+
+CC={- $config{CC} -}
+CPP={- $config{CPP} -}
+DEFINES={- our $defines1 = join('', map { ",$_" } @{$config{CPPDEFINES}}) -}
+INCLUDES={- our $includes1 = join('', map { ",$_" } @{$config{CPPINCLUDES}}) -}
+CPPFLAGS={- our $cppflags1 = join('', @{$config{CPPFLAGS}}) -}
+CFLAGS={- join('', @{$config{CFLAGS}}) -}
+LDFLAGS={- join('', @{$config{LFLAGS}}) -}
+EX_LIBS={- join('', map { ",$_" } @{$config{LDLIBS}}) -}
PERL={- $config{perl} -}
-AS={- $config{as} -}
-ASFLAGS={- join(' ', @{$config{asflags}}) -}
+AS={- $config{AS} -}
+ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
+
+##### Special command flags ##########################################
+
ASOUTFLAG={- $target{asoutflag} -}$(OSSL_EMPTY)
+
+##### Project flags ##################################################
+
+# Variables starting with CNF_ are common variables for all product types
+
+CNF_ASFLAGS={- join('', $target{asflags} || (),
+ @{$config{asflags}}) -}
+CNF_DEFINES={- our $defines2 = join('', map { ",$_" } @{$target{defines}},
+ @{$config{defines}}) -}
+CNF_INCLUDES={- our $includes2 = join(',', @{$target{includes}},
+ @{$config{includes}}) -}
+CNF_CPPFLAGS={- our $cppflags2 = join('', $target{cppflags} || (),
+ @{$config{cppflags}}) -}
+CNF_CFLAGS={- join('', $target{cflags} || (),
+ @{$config{cflags}}) -}
+CNF_CXXFLAGS={- join('', $target{cxxflags} || (),
+ @{$config{cxxflags}}) -}
+CNF_LDFLAGS={- join('', $target{lflags} || (),
+ @{$config{lflags}}) -}
+CNF_EX_LIBS={- join('', map{ ",$_" } @{$target{ex_libs}},
+ @{$config{ex_libs}}) -}
+
+# Variables starting with LIB_ are used to build library object files
+# and shared libraries.
+# Variables starting with DSO_ are used to build DSOs and their object files.
+# Variables starting with BIN_ are used to build programs and their object
+# files.
+
+LIB_ASFLAGS={- join(' ', $target{lib_asflags} || (),
+ @{$config{lib_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+LIB_DEFINES={- join('', (map { ",$_" } @{$target{lib_defines}},
+ @{$target{shared_defines}},
+ @{$config{lib_defines}},
+ @{$config{shared_defines}},
+ 'OPENSSLDIR="""$(OPENSSLDIR_C)"""',
+ 'ENGINESDIR="""$(ENGINESDIR_C)"""'),
+ '$(CNF_DEFINES)', '$(DEFINES)') -}
+LIB_INCLUDES={- join(',', @{$target{lib_includes}},
+ @{$target{shared_includes}},
+ @{$config{lib_includes}},
+ @{$config{shared_includes}}) -}
+LIB_CPPFLAGS={- join('', "'qual_includes'",
+ '/DEFINE=(__dummy$(LIB_DEFINES))',
+ $target{lib_cppflags} || (),
+ $target{shared_cppflags} || (),
+ @{$config{lib_cppflags}},
+ @{$config{shared_cppflag}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+LIB_CFLAGS={- join('', $target{lib_cflags} || (),
+ $target{shared_cflag} || (),
+ @{$config{lib_cflags}},
+ @{$config{shared_cflag}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+LIB_LDFLAGS={- join('', $target{lib_lflags} || (),
+ $target{shared_ldflag} || (),
+ @{$config{lib_lflags}},
+ @{$config{shared_ldflag}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+LIB_EX_LIBS=$(CNF_EX_LIBS)$(EX_LIBS)
+DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
+ $target{module_asflags} || (),
+ @{$config{dso_asflags}},
+ @{$config{module_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+DSO_DEFINES={- join('', (map { ",$_" } @{$target{dso_defines}},
+ @{$target{module_defines}},
+ @{$config{dso_defines}},
+ @{$config{module_defines}}),
+ '$(CNF_DEFINES)', '$(DEFINES)') -}
+DSO_INCLUDES={- join(',', @{$target{dso_includes}},
+ @{$target{module_includes}},
+ @{$config{dso_includes}},
+ @{$config{module_includes}}) -}
+DSO_CPPFLAGS={- join('', "'qual_includes'",
+ '/DEFINE=(__dummy$(DSO_DEFINES))',
+ $target{dso_cppflags} || (),
+ $target{module_cppflags} || (),
+ @{$config{dso_cppflags}},
+ @{$config{module_cppflags}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+DSO_CFLAGS={- join('', $target{dso_cflags} || (),
+ $target{module_cflags} || (),
+ @{$config{dso_cflags}},
+ @{$config{module_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+DSO_LDFLAGS={- join('', $target{dso_lflags} || (),
+ $target{module_ldflags} || (),
+ @{$config{dso_lflags}},
+ @{$config{module_ldflags}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+BIN_ASFLAGS={- join(' ', $target{bin_asflags} || (),
+ @{$config{bin_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+BIN_DEFINES={- join('', (map { ",$_" } @{$target{bin_defines}},
+ @{$config{bin_defines}}),
+ '$(CNF_DEFINES)', '$(DEFINES)') -}
+BIN_INCLUDES={- join(',', @{$target{bin_includes}},
+ @{$config{bin_includes}}) -}
+BIN_CPPFLAGS={- join('', "'qual_includes'",
+ '/DEFINE=(__dummy$(DSO_DEFINES))',
+ $target{bin_cppflags} || (),
+ @{$config{bin_cppflag}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+BIN_CFLAGS={- join('', $target{bin_cflag} || (),
+ @{$config{bin_cflag}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+BIN_LDFLAGS={- join('', $target{bin_lflags} || (),
+ @{$config{bin_lflags}} || (),
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+NO_INST_LIB_CFLAGS={- join('', $target{no_inst_lib_cflags}
+ // $target{lib_cflags}
+ // (),
+ $target{shared_cflag} || (),
+ @{$config{lib_cflags}},
+ @{$config{shared_cflag}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+NO_INST_DSO_CFLAGS={- join('', $target{no_inst_lib_cflags}
+ // $target{lib_cflags}
+ // (),
+ $target{dso_cflags} || (),
+ @{$config{lib_cflags}},
+ @{$config{dso_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+NO_INST_BIN_CFLAGS={- join('', $target{no_inst_bin_cflags}
+ // $target{bin_cflags}
+ // (),
+ @{$config{bin_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+
PERLASM_SCHEME={- $target{perlasm_scheme} -}
+# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
+CPPFLAGS_Q={- (my $c = $cppflags1.$cppflags2) =~ s|"|""|g;
+ (my $d = $defines1.$defines2) =~ s|"|""|g;
+ my $i = join(',', $includes1 || (), $includes2 || ());
+ my $x = $c;
+ $x .= "/INCLUDE=($i)" if $i;
+ $x .= "/DEFINE=($d)" if $d;
+ $x; -}
+
# .FIRST and .LAST are special targets with MMS and MMK.
# The defines in there are for C. includes that look like
# this:
@@ -666,6 +783,7 @@ EOF
my @incs_cmds = includes({ lib => '$(LIB_INCLUDES)',
dso => '$(DSO_INCLUDES)',
bin => '$(BIN_INCLUDES)' } -> {$args{intent}},
+ '$(CNF_INCLUDES)',
'$(INCLUDES)',
@{$args{incs}});
my $incs_on = join("\n\t\@ ", @{$incs_cmds[0]}) || '!';
@@ -725,11 +843,14 @@ EOF
my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
if ($srcs[0] =~ /\.asm$/) {
+ my $asflags = { lib => ' $(LIB_ASFLAGS)',
+ dso => ' $(DSO_ASFLAGS)',
+ bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
return <<"EOF";
$obj.OBJ : $deps
${before}
SET DEFAULT $forward
- \$(AS) \$(ASFLAGS) \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
+ \$(AS) $asflags \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
SET DEFAULT $backward
EOF
}
@@ -817,8 +938,8 @@ $shlib.EXE : $lib.OLB $deps
$write_opt1
$write_opt2
CLOSE OPT_FILE
- LINK \$(LDFLAGS)/SHARE=\$\@ $defs[0]-translated/OPT,-
- $lib-components.OPT/OPT \$(EX_LIBS)
+ LINK \$(LIB_LDFLAGS)/SHARE=\$\@ $defs[0]-translated/OPT,-
+ $lib-components.OPT/OPT \$(LIB_EX_LIBS)
DELETE $defs[0]-translated;*,$lib-components.OPT;*
PURGE $shlib.EXE,$shlib.MAP
EOF
@@ -861,7 +982,7 @@ $lib.EXE : $deps
$write_opt1
$write_opt2
CLOSE OPT_FILE
- LINK \$(LDFLAGS)/SHARE=\$\@ $lib.OPT/OPT \$(EX_LIBS)
+ LINK \$(DSO_LDFLAGS)/SHARE=\$\@ $lib.OPT/OPT \$(DSO_EX_LIBS)
- PURGE $lib.EXE,$lib.OPT,$lib.MAP
EOF
. ($config{target} =~ m|alpha| ? "" : <<"EOF"
@@ -949,7 +1070,7 @@ $bin.EXE : $deps
@ CLOSE OPT_FILE
TYPE $bin.opt ! For debugging
- pipe SPAWN/WAIT/NOLOG/OUT=$bin.LINKLOG -
- LINK \$(LDFLAGS)/EXEC=\$\@ $bin.OPT/OPT \$(EX_LIBS) ; -
+ LINK \$(BIN_LDFLAGS)/EXEC=\$\@ $bin.OPT/OPT \$(BIN_EX_LIBS) ; -
link_status = \$status ; link_severity = link_status .AND. 7
@ search_severity = 1
-@ IF link_severity .EQ. 0 THEN -
diff --git a/Configurations/shared-info.pl b/Configurations/shared-info.pl
index 9716348..f3c4cb6 100644
--- a/Configurations/shared-info.pl
+++ b/Configurations/shared-info.pl
@@ -13,12 +13,12 @@
sub detect_gnu_ld {
my @lines =
- `$config{cross_compile_prefix}$config{cc} -Wl,-V /dev/null 2>&1`;
+ `$config{CROSS_COMPILE}$config{CC} -Wl,-V /dev/null 2>&1`;
return grep /^GNU ld/, @lines;
}
sub detect_gnu_cc {
my @lines =
- `$config{cross_compile_prefix}$config{cc} -v 2>&1`;
+ `$config{CROSS_COMPILE}$config{CC} -v 2>&1`;
return grep /gcc/, @lines;
}
@@ -42,7 +42,7 @@ my %shared_info;
};
},
'darwin-shared' => {
- dso_lflags => '-bundle',
+ module_ldflags => '-bundle',
shared_ldflag => '-dynamiclib -current_version $(SHLIB_VERSION_NUMBER) -compatibility_version $(SHLIB_VERSION_NUMBER)',
shared_sonameflag => '-install_name $(INSTALLTOP)/$(LIBDIR)/',
},
@@ -61,7 +61,7 @@ my %shared_info;
'alpha-osf1-shared' => sub {
return $shared_info{'gnu-shared'} if detect_gnu_ld();
return {
- dso_lflags => '-shared -Wl,-Bsymbolic',
+ module_ldflags => '-shared -Wl,-Bsymbolic',
shared_ldflag => '-shared -Wl,-Bsymbolic -set_version $(SHLIB_VERSION_NUMBER)',
};
},
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index fd1f109..588c6c1 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -188,60 +188,136 @@ HTMLSUFFIX=html
# For "optional" echo messages, to get "real" silence
ECHO = echo
-CROSS_COMPILE= {- $config{cross_compile_prefix} -}
-CPPFLAGS={- our $cppflags = join(" ",
- (map { "-D".$_} @{$config{defines}}),
- (map { "-I".$_} @{$config{includes}}),
- @{$config{cppflags}}) -}
-CPPFLAGS_Q={- $cppflags =~ s|([\\"])|\\$1|g; $cppflags -}
-CC= $(CROSS_COMPILE){- $config{cc} -}
-CFLAGS={- join(' ', @{$config{cflags}}) -}
-CXX={- $config{cxx} ? "\$(CROSS_COMPILE)$config{cxx}" : '' -}
-CXXFLAGS={- join(' ', @{$config{cxxflags}}) -}
-LDFLAGS= {- join(' ', @{$config{lflags}}) -}
-PLIB_LDFLAGS= {- join(' ', @{$config{plib_lflags}}) -}
-EX_LIBS= {- join(' ', @{$config{ex_libs}}) -}
-
-LIB_CPPFLAGS={- join(' ', '$(CPPFLAGS)',
- $target{shared_cppflag} || (),
- (map { '-D'.$_ }
- ('OPENSSLDIR="\"$(OPENSSLDIR)\""',
- 'ENGINESDIR="\"$(ENGINESDIR)\""'))) -}
-LIB_CFLAGS={- join(' ', '$(CFLAGS)', $target{shared_cflag} || ()) -}
-LIB_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{shared_cxxflag} || ()) -}
-LIB_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{shared_ldflag} || (), $config{shared_ldflag} || ()) -}
-DSO_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
-DSO_CFLAGS={- join(' ', '$(CFLAGS)', $target{dso_cflags} || ()) -}
-DSO_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{dso_cxxflags} || ()) -}
-DSO_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{dso_lflags} || ()) -}
-BIN_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{bin_cppflags} || ()) -}
-BIN_CFLAGS={- join(' ', '$(CFLAGS)', $target{bin_cflags} || ()) -}
-BIN_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{bin_cxxflags} || ()) -}
-BIN_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{bin_lflags} || ()) -}
+##### User defined commands and flags ################################
+
+# We let the C compiler driver to take care of .s files. This is done in
+# order to be excused from maintaining a separate set of architecture
+# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
+# gcc, then the driver will automatically translate it to -xarch=v8plus
+# and pass it down to assembler. In any case, we do not define AS or
+# ASFLAGS for this reason.
+
+CROSS_COMPILE={- $config{CROSS_COMPILE} -}
+CC=$(CROSS_COMPILE){- $config{CC} -}
+CXX={- $config{CXX} ? "\$(CROSS_COMPILE)$config{CXX}" : '' -}
+CPPFLAGS={- our $cppflags1 = join(" ",
+ (map { "-D".$_} @{$config{CPPDEFINES}}),
+ (map { "-I".$_} @{$config{CPPINCLUDES}}),
+ @{$config{CPPFLAGS}}) -}
+CFLAGS={- join(' ', @{$config{CFLAGS}}) -}
+CXXFLAGS={- join(' ', @{$config{CXXFLAGS}}) -}
+LDFLAGS= {- join(' ', @{$config{LDFLAGS}}) -}
+EX_LIBS= {- join(' ', @{$config{LDLIBS}}) -}
+
+MAKEDEPEND={- $config{makedepprog} -}
PERL={- $config{perl} -}
-AR=$(CROSS_COMPILE){- $config{ar} -}
-ARFLAGS= {- join(' ', @{$config{arflags}}) -}
-RANLIB={- $config{ranlib} ? "\$(CROSS_COMPILE)$config{ranlib}" : "true"; -}
-RC= $(CROSS_COMPILE){- $target{rc} || "windres" -}
-RCFLAGS={- join(' ', @{$config{rcflags}}) -} {- $target{shared_rcflag} -}
+AR=$(CROSS_COMPILE){- $config{AR} -}
+ARFLAGS= {- join(' ', @{$config{ARFLAGS}}) -}
+RANLIB={- $config{RANLIB} ? "\$(CROSS_COMPILE)$config{RANLIB}" : "true"; -}
+RC= $(CROSS_COMPILE){- $config{RC} -}
+RCFLAGS={- join(' ', @{$config{RCFLAGS}}) -} {- $target{shared_rcflag} -}
+
RM= rm -f
RMDIR= rmdir
-TAR= {- $target{tar} || "tar" -}
-TARFLAGS= {- $target{tarflags} -}
-MAKEDEPEND={- $config{makedepprog} -}
+TAR= {- $target{TAR} || "tar" -}
+TARFLAGS= {- $target{TARFLAGS} -}
BASENAME= openssl
NAME= $(BASENAME)-$(VERSION)
TARFILE= ../$(NAME).tar
-# We let the C compiler driver to take care of .s files. This is done in
-# order to be excused from maintaining a separate set of architecture
-# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
-# gcc, then the driver will automatically translate it to -xarch=v8plus
-# and pass it down to assembler. In any case, we do not define AS or
-# ASFLAGS for this reason.
+##### Project flags ##################################################
+
+# Variables starting with CNF_ are common variables for all product types
+
+CNF_CPPFLAGS={- our $cppflags2 =
+ join(' ', $target{cppflags} || (),
+ (map { "-D".$_} @{$target{defines}},
+ @{$config{defines}}),
+ (map { "-I".$_} @{$target{includes}},
+ @{$config{includes}}),
+ @{$config{cppflags}}) -}
+CNF_CFLAGS={- join(' ', $target{cflags} || (),
+ @{$config{cflags}}) -}
+CNF_CXXFLAGS={- join(' ', $target{cxxflags} || (),
+ @{$config{cxxflags}}) -}
+CNF_LDFLAGS={- join(' ', $target{lflags} || (),
+ @{$config{lflags}}) -}
+CNF_EX_LIBS={- join(' ', $target{ex_libs} || (),
+ @{$config{ex_libs}}) -}
+
+# Variables starting with LIB_ are used to build library object files
+# and shared libraries.
+# Variables starting with DSO_ are used to build DSOs and their object files.
+# Variables starting with BIN_ are used to build programs and their object
+# files.
+
+LIB_CPPFLAGS={- join(' ', $target{lib_cppflags} || (),
+ $target{shared_cppflag} || (),
+ (map { '-D'.$_ }
+ @{$config{lib_defines}},
+ @{$config{shared_defines}},
+ 'OPENSSLDIR="\"$(OPENSSLDIR)\""',
+ 'ENGINESDIR="\"$(ENGINESDIR)\""'),
+ @{$config{lib_cppflags}},
+ @{$config{shared_cppflag}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+LIB_CFLAGS={- join(' ', $target{lib_cflags} || (),
+ $target{shared_cflag} || (),
+ @{$config{lib_cflags}},
+ @{$config{shared_cflag}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+LIB_CXXFLAGS={- join(' ', $target{lib_cxxflags} || (),
+ $target{shared_cxxflag} || (),
+ @{$config{lib_cxxflags}},
+ @{$config{shared_cxxflag}},
+ '$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
+LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (),
+ $config{shared_ldflag} || (),
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
+ $target{module_cppflags} || (),
+ @{$config{dso_cppflags}},
+ @{$config{module_cppflags}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+DSO_CFLAGS={- join(' ', $target{dso_cflags} || (),
+ $target{module_cflags} || (),
+ @{$config{dso_cflags}},
+ @{$config{module_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+DSO_CXXFLAGS={- join(' ', $target{dso_cxxflags} || (),
+ $target{module_cxxflags} || (),
+ @{$config{dso_cxxflags}},
+ @{$config{module_cxxflag}},
+ '$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
+DSO_LDFLAGS={- join(' ', $target{dso_ldflags} || (),
+ $target{module_ldflags} || (),
+ @{$config{dso_ldflags}},
+ @{$config{module_ldflags}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (),
+ @{$config{bin_cppflags}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+BIN_CFLAGS={- join(' ', $target{bin_cflags} || (),
+ @{$config{bin_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+BIN_CXXFLAGS={- join(' ', $target{bin_cxxflags} || (),
+ @{$config{bin_cxxflags}},
+ '$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
+BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
+ @{$config{bin_lflags}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+
+# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
+CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
+ $cppflags2 =~ s|([\\"])|\\$1|g;
+ join(' ', $cppflags1 || (), $cppflags2 || ()) -}
+
PERLASM_SCHEME= {- $target{perlasm_scheme} -}
# For x86 assembler: Set PROCESSOR to 386 if you want to support
@@ -771,7 +847,7 @@ libcrypto.pc:
echo 'Description: OpenSSL cryptography library'; \
echo 'Version: '$(VERSION); \
echo 'Libs: -L$${libdir} -lcrypto'; \
- echo 'Libs.private: $(EX_LIBS)'; \
+ echo 'Libs.private: $(LIB_EX_LIBS)'; \
echo 'Cflags: -I$${includedir}' ) > libcrypto.pc
libssl.pc:
@@ -1024,7 +1100,7 @@ EOF
$target: $deps
\$(CC) \$(LIB_CFLAGS) $linkflags\$(LIB_LDFLAGS)$shared_soname$shared_imp \\
-o $target_full$shared_def $objs \\
- \$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
+ $linklibs \$(LIB_EX_LIBS)
EOF
if (windowsdll()) {
$recipe .= <<"EOF";
@@ -1067,7 +1143,7 @@ EOF
$target: $objs $deps
\$(CC) \$(DSO_CFLAGS) $linkflags\$(DSO_LDFLAGS) \\
-o $target $objs \\
- \$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
+ $linklibs \$(DSO_EX_LIBS)
EOF
}
sub obj2lib {
@@ -1115,7 +1191,7 @@ $bin$exeext: $objs $deps
rm -f $bin$exeext
\$\${LDCMD:-$cmd} $cmdflags $linkflags\$(BIN_LDFLAGS) \\
-o $bin$exeext $objs \\
- \$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
+ $linklibs \$(BIN_EX_LIBS)
EOF
}
sub in2script {
diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl
index dd0c849..83f893d 100644
--- a/Configurations/windows-makefile.tmpl
+++ b/Configurations/windows-makefile.tmpl
@@ -163,50 +163,139 @@ ENGINESDIR=$(ENGINESDIR_dev)$(ENGINESDIR_dir)
libdir={- file_name_is_absolute($libdir)
? $libdir : '$(INSTALLTOP)\$(LIBDIR)' -}
-CC={- $config{cc} -}
-CPP={- $config{cpp} -}
-CPPFLAGS={- our $cppflags = join(" ",
- (map { "-D".$_} @{$config{defines}}),
- (map { " /I ".$_} @{$config{includes}}),
- @{$config{cppflags}}) -}
-CPPFLAGS_Q={- $cppflags =~ s|([\\"])|\\$1|g; $cppflags -}
-CFLAGS={- join(' ', @{$config{cflags}}) -}
-COUTFLAG={- $target{coutflag} || "/Fo" -}$(OSSL_EMPTY)
-RC={- $config{rc} -}
-RCOUTFLAG={- $target{rcoutflag} || "/fo" -}$(OSSL_EMPTY)
-LD={- $config{ld} -}
-LDFLAGS={- join(' ', @{$config{lflags}}) -}
-LDOUTFLAG={- $target{loutflag} || "/out:" -}$(OSSL_EMPTY)
-EX_LIBS={- join(' ', @{$config{ex_libs}}) -}
-
-LIB_CPPFLAGS={- join(' ', '$(CPPFLAGS)',
- $target{shared_cppflag} || (),
- (map { quotify_l("-D".$_) }
- "OPENSSLDIR=\"$openssldir\"",
- "ENGINESDIR=\"$enginesdir\"")) -}
-LIB_CFLAGS={- join(' ', '$(CFLAGS)', $target{lib_cflags} || (), $target{shared_cflag} || ()) -}
-LIB_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{shared_ldflag} || (), $config{shared_ldflag} || ()) -}
-DSO_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
-DSO_CFLAGS={- join(' ', '$(CFLAGS)', $target{dso_cflags} || ()) -}
-DSO_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{dso_ldflag} || ()) -}
-BIN_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
-BIN_CFLAGS={- join(' ', '$(CFLAGS)', $target{bin_cflags} || ()) -}
-BIN_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{bin_lflags} || ()) -}
+##### User defined commands and flags ################################
+
+CC={- $config{CC} -}
+CPP={- $config{CPP} -}
+CPPFLAGS={- our $cppflags1 = join(" ",
+ (map { "-D".$_} @{$config{CPPDEFINES}}),
+ (map { " /I ".$_} @{$config{CPPINCLUDES}}),
+ @{$config{CPPFLAGS}}) -}
+CFLAGS={- join(' ', @{$config{CFLAGS}}) -}
+LD={- $config{LD} -}
+LDFLAGS={- join(' ', @{$config{LDFLAGS}}) -}
+EX_LIBS={- join(' ', @{$config{LDLIBS}}) -}
PERL={- $config{perl} -}
-AR={- $config{ar} -}
-ARFLAGS= {- join(' ', @{$config{arflags}}) -}
-AROUTFLAG={- $target{aroutflag} || "/out:" -}$(OSSL_EMPTY)
+AR={- $config{AR} -}
+ARFLAGS= {- join(' ', @{$config{ARFLAGS}}) -}
+
+MT={- $config{MT} -}
+MTFLAGS= {- join(' ', @{$config{MTFLAGS}}) -}
+
+AS={- $config{AS} -}
+ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
-MT={- $config{mt} -}
-MTFLAGS= {- join(' ', @{$config{mtflags}}) -}
-MTINFLAG={- $target{mtinflag} || "-manifest " -}$(OSSL_EMPTY)
-MTOUTFLAG={- $target{mtoutflag} || "-outputresource:" -}$(OSSL_EMPTY)
+RC={- $config{RC} -}
-AS={- $config{as} -}
-ASFLAGS={- join(' ', @{$config{asflags}}) -}
+##### Special command flags ##########################################
+
+COUTFLAG={- $target{coutflag} -}$(OSSL_EMPTY)
+LDOUTFLAG={- $target{ldoutflag} -}$(OSSL_EMPTY)
+AROUTFLAG={- $target{aroutflag} -}$(OSSL_EMPTY)
+MTINFLAG={- $target{mtinflag} -}$(OSSL_EMPTY)
+MTOUTFLAG={- $target{mtoutflag} -}$(OSSL_EMPTY)
ASOUTFLAG={- $target{asoutflag} -}$(OSSL_EMPTY)
+RCOUTFLAG={- $target{rcoutflag} -}$(OSSL_EMPTY)
+
+##### Project flags ##################################################
+
+# Variables starting with CNF_ are common variables for all product types
+
+CNF_ASFLAGS={- join(' ', $target{asflags} || (),
+ @{$config{asflags}}) -}
+CNF_CPPFLAGS={- our $cppfags2 =
+ join(' ', $target{cppflags} || (),
+ (map { quotify_l("-D".$_) } @{$target{defines}},
+ @{$config{defines}}),
+ (map { quotify_l("-I".$_) } @{$target{includes}},
+ @{$config{includes}}),
+ @{$config{cppflags}}) -}
+CNF_CFLAGS={- join(' ', $target{cflags} || (),
+ @{$config{cflags}}) -}
+CNF_CXXFLAGS={- join(' ', $target{cxxflags} || (),
+ @{$config{cxxflags}}) -}
+CNF_LDFLAGS={- join(' ', $target{lflags} || (),
+ @{$config{lflags}}) -}
+CNF_EX_LIBS={- join(' ', $target{ex_libs} || (),
+ @{$config{ex_libs}}) -}
+
+# Variables starting with LIB_ are used to build library object files
+# and shared libraries.
+# Variables starting with DSO_ are used to build DSOs and their object files.
+# Variables starting with BIN_ are used to build programs and their object
+# files.
+
+LIB_ASFLAGS={- join(' ', $target{lib_asflags} || (),
+ @{$config{lib_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+LIB_CPPFLAGS={- join(' ', $target{lib_cppflags} || (),
+ $target{shared_cppflag} || (),
+ (map { quotify_l("-D".$_) }
+ @{$target{lib_defines}},
+ @{$target{shared_defines}},
+ @{$config{lib_defines}},
+ @{$config{shared_defines}},
+ "OPENSSLDIR=\"$openssldir\"",
+ "ENGINESDIR=\"$enginesdir\""),
+ (map { quotify_l("-I".$_) }
+ @{$target{lib_includes}},
+ @{$target{shared_includes}},
+ @{$config{lib_includes}},
+ @{$config{shared_includes}}),
+ @{$config{lib_cppflags}},
+ @{$config{shared_cppflag}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+LIB_CFLAGS={- join(' ', $target{lib_cflags} || (),
+ $target{shared_cflag} || (),
+ @{$config{lib_cflags}},
+ @{$config{shared_cflag}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (),
+ $config{shared_ldflag} || (),
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
+ $target{module_asflags} || (),
+ @{$config{dso_asflags}},
+ @{$config{module_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
+ $target{module_cppflags} || (),
+ @{$config{dso_cppflags}},
+ @{$config{module_cppflags}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+DSO_CFLAGS={- join(' ', $target{dso_cflags} || (),
+ $target{module_cflags} || (),
+ @{$config{dso_cflags}},
+ @{$config{module_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+DSO_LDFLAGS={- join(' ', $target{dso_lflags} || (),
+ $target{module_ldflags} || (),
+ @{$config{dso_lflags}},
+ @{$config{module_ldflags}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+BIN_ASFLAGS={- join(' ', $target{bin_asflags} || (),
+ @{$config{bin_asflags}},
+ '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
+BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (),
+ @{$config{bin_cppflags}},
+ '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
+BIN_CFLAGS={- join(' ', $target{bin_cflags} || (),
+ @{$config{bin_cflags}},
+ '$(CNF_CFLAGS)', '$(CFLAGS)') -}
+BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
+ @{$config{bin_lflags}},
+ '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
+BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
+
+# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
+CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
+ $cppflags2 =~ s|([\\"])|\\$1|g;
+ join(' ', $cppflags1 || (), $cppflags2 || ()) -}
+
PERLASM_SCHEME= {- $target{perlasm_scheme} -}
PROCESSOR= {- $config{processor} -}
@@ -484,6 +573,9 @@ EOF
$cflags .= { lib => ' $(LIB_CPPFLAGS)',
dso => ' $(DSO_CPPFLAGS)',
bin => ' $(BIN_CPPFLAGS)' } -> {$args{intent}};
+ my $asflags = { lib => ' $(LIB_ASFLAGS)',
+ dso => ' $(DSO_ASFLAGS)',
+ bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
my $makedepprog = $config{makedepprog};
if ($srcs[0] =~ /\.rc$/) {
return <<"EOF";
@@ -495,7 +587,7 @@ EOF
if ($srcs[0] =~ /\.asm$/) {
return <<"EOF";
$obj$objext: $deps
- \$(AS) \$(ASFLAGS) \$(ASOUTFLAG)\$\@ $srcs
+ \$(AS) $asflags \$(ASOUTFLAG)\$\@ $srcs
EOF
}
return <<"EOF" if (!$disabled{makedepend});
@@ -542,7 +634,7 @@ $target: $deps
\$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) \\
/implib:\$@ \$(LDOUTFLAG)$shlib$shlibext$shared_def @<< || (DEL /Q \$(\@B).* $shlib.* && EXIT 1)
$objs
-$linklibs\$(EX_LIBS)
+$linklibs\$(LIB_EX_LIBS)
<<
IF EXIST $shlib$shlibext.manifest \\
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$shlib$shlibext.manifest \$(MTOUTFLAG)$shlib$shlibext
@@ -573,7 +665,7 @@ EXPORTS
v_check @2
<<
$objs
-$linklibs \$(EX_LIBS)
+$linklibs \$(DSO_EX_LIBS)
<<
IF EXIST $dso$dsoext.manifest \\
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$dso$dsoext.manifest \$(MTOUTFLAG)$dso$dsoext
@@ -613,7 +705,7 @@ $bin$exeext: $deps
\$(LD) \$(LDFLAGS) \$(BIN_LDFLAGS) \$(LDOUTFLAG)$bin$exeext @<<
$objs
setargv.obj
-$linklibs\$(EX_LIBS)
+$linklibs\$(BIN_EX_LIBS)
<<
IF EXIST $bin$exeext.manifest \\
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$bin$exeext.manifest \$(MTOUTFLAG)$bin$exeext
diff --git a/Configure b/Configure
index 6f70e18..1b6a7b6 100755
--- a/Configure
+++ b/Configure
@@ -568,15 +568,31 @@ my %user_synonyms = (
HASHBANGPERL=> 'PERL',
RC => 'WINDRES',
);
-my %user_to_target = (
- # If not given here, the value is the lc of the key
- CPPDEFINES => 'defines',
- CPPINCLUDES => 'includes',
- CROSS_COMPILE => 'cross_compile_prefix',
- LDFLAGS => 'lflags',
- LDLIBS => 'ex_libs',
+
+# Some target attributes have been renamed, this is the translation table
+my %target_attr_translate =(
+ ar => 'AR',
+ as => 'AS',
+ cc => 'CC',
+ cxx => 'CXX',
+ cpp => 'CPP',
+ hashbangperl => 'HASHBANGPERL',
+ ld => 'LD',
+ mt => 'MT',
+ ranlib => 'RANLIB',
+ rc => 'RC',
+ rm => 'RM',
);
+# Initialisers coming from 'config' scripts
+$config{defines} = [ split(/$list_separator_re/, env('__CNF_CPPDEFINES')) ],
+$config{includes} = [ split(/$list_separator_re/, env('__CNF_CPPINCLUDES')) ],
+$config{cppflags} = [ env('__CNF_CPPFLAGS') || () ],
+$config{cflags} = [ env('__CNF_CFLAGS') || () ],
+$config{cxxflags} = [ env('__CNF_CXXFLAGS') || () ],
+$config{lflags} = [ env('__CNF_LDFLAGS') || () ],
+$config{ex_libs} = [ env('__CNF_LDLIBS') || () ],
+
$config{openssl_api_defines}=[];
$config{openssl_algorithm_defines}=[];
$config{openssl_thread_defines}=[];
@@ -605,10 +621,10 @@ while (@argvcopy)
{
$user{$1} = ref $user{$1} eq "ARRAY" ? [] : undef;
}
- if (exists $useradd{$1})
- {
- $useradd{$1} = [];
- }
+ #if (exists $useradd{$1})
+ # {
+ # $useradd{$1} = [];
+ # }
next;
}
@@ -875,6 +891,18 @@ while (@argvcopy)
}
}
+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;
@@ -969,13 +997,19 @@ my %target = resolve_config($target);
&usage if (!%target || $target{template});
+foreach (keys %target_attr_translate) {
+ $target{$target_attr_translate{$_}} = $target{$_}
+ if $target{$_};
+ delete $target{$_};
+}
+
%target = ( %{$table{DEFAULTS}}, %target );
# Make the flags to build DSOs the same as for shared libraries unless they
# are already defined
-$target{dso_cflags} = $target{shared_cflag} unless defined $target{dso_cflags};
-$target{dso_cxxflags} = $target{shared_cxxflag} unless defined $target{dso_cxxflags};
-$target{dso_lflags} = $target{shared_ldflag} unless defined $target{dso_lflags};
+$target{module_cflags} = $target{shared_cflag} unless defined $target{module_cflags};
+$target{module_cxxflags} = $target{shared_cxxflag} unless defined $target{module_cxxflags};
+$target{module_ldflags} = $target{shared_ldflag} unless defined $target{module_ldflags};
{
my $shared_info_pl =
catfile(dirname($0), "Configurations", "shared-info.pl");
@@ -997,10 +1031,10 @@ $target{dso_lflags} = $target{shared_ldflag} unless defined $target{dso_lflags};
# Windows and VMS.
if (defined $si) {
# Just as above, copy certain shared_* attributes to the corresponding
- # dso_ attribute unless the latter is already defined
- $si->{dso_cflags} = $si->{shared_cflag} unless defined $si->{dso_cflags};
- $si->{dso_cxxflags} = $si->{shared_cxxflag} unless defined $si->{dso_cxxflags};
- $si->{dso_lflags} = $si->{shared_ldflag} unless defined $si->{dso_lflags};
+ # module_ attribute unless the latter is already defined
+ $si->{module_cflags} = $si->{shared_cflag} unless defined $si->{module_cflags};
+ $si->{module_cxxflags} = $si->{shared_cxxflag} unless defined $si->{module_cxxflags};
+ $si->{module_ldflags} = $si->{shared_ldflag} unless defined $si->{module_ldflags};
foreach (sort keys %$si) {
$target{$_} = defined $target{$_}
? add($si->{$_})->($target{$_})
@@ -1031,7 +1065,8 @@ foreach my $feature (@{$target{enable}}) {
}
}
-$target{cxxflags}//=$target{cflags} if $target{cxx};
+$target{CXXFLAGS}//=$target{CFLAGS} if $target{CXX};
+$target{cxxflags}//=$target{cflags} if $target{CXX};
$target{exe_extension}="";
$target{exe_extension}=".exe" if ($config{target} eq "DJGPP"
|| $config{target} =~ /^(?:Cygwin|mingw)/);
@@ -1048,7 +1083,6 @@ $target{dso_extension}=$target{shared_extension_simple};
# the default string.
$config{perl} = ($^O ne "VMS" ? $^X : "perl");
foreach (keys %user) {
- my $target_key = $user_to_target{$_} // lc $_;
my $ref_type = ref $user{$_};
# Temporary function. Takes an intended ref type (empty string or "ARRAY")
@@ -1074,12 +1108,11 @@ foreach (keys %user) {
return $value;
};
- $config{$target_key} =
+ $config{$_} =
$mkvalue->($ref_type, $user{$_})
- || $mkvalue->($ref_type, $target{$target_key});
- delete $config{$target_key} unless defined $config{$target_key};
+ || $mkvalue->($ref_type, $target{$_});
+ delete $config{$_} unless defined $config{$_};
}
-$config{plib_lflags} = [ $target{plib_lflags} ];
# Allow overriding the build file name
$config{build_file} = env('BUILDFILE') || $target{build_file} || "Makefile";
@@ -1149,10 +1182,10 @@ foreach my $checker (($builder_platform."-".$target{build_file}."-checker.pm",
push @{$config{defines}}, "NDEBUG" if $config{build_type} eq "release";
-if ($target =~ /^mingw/ && `$config{cc} --target-help 2>&1` =~ m/-mno-cygwin/m)
+if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m)
{
push @{$config{cflags}}, "-mno-cygwin";
- push @{$config{cxxflags}}, "-mno-cygwin" if $config{cxx};
+ push @{$config{cxxflags}}, "-mno-cygwin" if $config{CXX};
push @{$config{shared_ldflag}}, "-mno-cygwin";
}
@@ -1164,7 +1197,7 @@ if ($target =~ /linux.*-mips/ && !$disabled{asm}
$value = '-mips2' if ($target =~ /mips32/);
$value = '-mips3' if ($target =~ /mips64/);
unshift @{$config{cflags}}, $value;
- unshift @{$config{cxxflags}}, $value if $config{cxx};
+ unshift @{$config{cxxflags}}, $value if $config{CXX};
}
# The DSO code currently always implements all functions so that no
@@ -1246,7 +1279,7 @@ if ($disabled{"dynamic-engine"}) {
unless ($disabled{asan}) {
push @{$config{cflags}}, "-fsanitize=address";
- push @{$config{cxxflags}}, "-fsanitize=address" if $config{cxx};
+ push @{$config{cxxflags}}, "-fsanitize=address" if $config{CXX};
}
unless ($disabled{ubsan}) {
@@ -1254,18 +1287,18 @@ unless ($disabled{ubsan}) {
# platforms.
push @{$config{cflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all";
push @{$config{cxxflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all"
- if $config{cxx};
+ if $config{CXX};
}
unless ($disabled{msan}) {
push @{$config{cflags}}, "-fsanitize=memory";
- push @{$config{cxxflags}}, "-fsanitize=memory" if $config{cxx};
+ push @{$config{cxxflags}}, "-fsanitize=memory" if $config{CXX};
}
unless ($disabled{"fuzz-libfuzzer"} && $disabled{"fuzz-afl"}
&& $disabled{asan} && $disabled{ubsan} && $disabled{msan}) {
push @{$config{cflags}}, "-fno-omit-frame-pointer", "-g";
- push @{$config{cxxflags}}, "-fno-omit-frame-pointer", "-g" if $config{cxx};
+ push @{$config{cxxflags}}, "-fno-omit-frame-pointer", "-g" if $config{CXX};
}
#
# Platform fix-ups
@@ -1275,9 +1308,9 @@ unless ($disabled{"fuzz-libfuzzer"} && $disabled{"fuzz-afl"}
if ($disabled{pic})
{
foreach (qw(shared_cflag shared_cxxflag shared_cppflag
- shared_defines shared_includes shared_ldflag
- dso_cflags dso_cxxflags dso_cppflags
- dso_defines dso_includes dso_lflags))
+ shared_defines shared_includes shared_ldflag
+ module_cflags module_cxxflags module_cppflags
+ module_defines module_includes module_lflags))
{
delete $config{$_};
$target{$_} = "";
@@ -1357,7 +1390,7 @@ unless ($disabled{asm}) {
}
}
-my %predefined = compiler_predefined($config{cc});
+my %predefined = compiler_predefined($config{CC});
# Check for makedepend capabilities.
if (!$disabled{makedepend}) {
@@ -1368,7 +1401,7 @@ if (!$disabled{makedepend}) {
} elsif ($predefined{__GNUC__} >= 3) {
# We know that GNU C version 3 and up as well as all clang
# versions support dependency generation
- $config{makedepprog} = "\$(CROSS_COMPILE)$config{cc}";
+ $config{makedepprog} = "\$(CROSS_COMPILE)$config{CC}";
} else {
# In all other cases, we look for 'makedepend', and disable the
# capability if not found.
@@ -1410,7 +1443,7 @@ die "Exactly one of SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT can be set
$config{cflags} = [ map { (my $x = $_) =~ s/([\\\"])/\\$1/g; $x }
@{$config{cflags}} ];
$config{cxxflags} = [ map { (my $x = $_) =~ s/([\\\"])/\\$1/g; $x }
- @{$config{cxxflags}} ] if $config{cxx};
+ @{$config{cxxflags}} ] if $config{CXX};
if (defined($config{api})) {
$config{openssl_api_defines} = [ "OPENSSL_MIN_API=".$apitable->{$config{api}} ];
@@ -1420,7 +1453,7 @@ if (defined($config{api})) {
if (defined($predefined{__clang__}) && !$disabled{asm}) {
push @{$config{cflags}}, "-Qunused-arguments";
- push @{$config{cxxflags}}, "-Qunused-arguments" if $config{cxx};
+ push @{$config{cxxflags}}, "-Qunused-arguments" if $config{CXX};
}
if ($strict_warnings)
@@ -1436,7 +1469,7 @@ if ($strict_warnings)
push @{$config{cflags}}, $wopt
unless grep { $_ eq $wopt } @{$config{cflags}};
push @{$config{cxxflags}}, $wopt
- if ($config{cxx}
+ if ($config{CXX}
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
}
if (defined($predefined{__clang__}))
@@ -1446,7 +1479,7 @@ if ($strict_warnings)
push @{$config{cflags}}, $wopt
unless grep { $_ eq $wopt } @{$config{cflags}};
push @{$config{cxxflags}}, $wopt
- if ($config{cxx}
+ if ($config{CXX}
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
}
}
@@ -1459,7 +1492,7 @@ unless ($disabled{"crypto-mdebug-backtrace"})
push @{$config{cflags}}, $wopt
unless grep { $_ eq $wopt } @{$config{cflags}};
push @{$config{cxxflags}}, $wopt
- if ($config{cxx}
+ if ($config{CXX}
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
}
if ($target =~ /^BSD-/)
@@ -1472,7 +1505,7 @@ unless ($disabled{afalgeng}) {
$config{afalgeng}="";
if ($target =~ m/^linux/) {
my $minver = 4*10000 + 1*100 + 0;
- if ($config{cross_compile_prefix} eq "") {
+ if ($config{CROSS_COMPILE} eq "") {
my $verstr = `uname -r`;
my ($ma, $mi1, $mi2) = split("\\.", $verstr);
($mi2) = $mi2 =~ /(\d+)/;
@@ -1499,12 +1532,10 @@ foreach (keys %useradd) {
die "internal error: \$useradd{$_} isn't an ARRAY\n"
unless ref $useradd{$_} eq 'ARRAY';
- my $target_key = $user_to_target{$_} // lc $_;
-
- if (defined $config{$target_key}) {
- push @{$config{$target_key}}, @{$useradd{$_}};
+ if (defined $config{$_}) {
+ push @{$config{$_}}, @{$useradd{$_}};
} else {
- $config{$target_key} = [ @{$useradd{$_}} ];
+ $config{$_} = [ @{$useradd{$_}} ];
}
}
@@ -2168,7 +2199,7 @@ foreach (grep /_(asm|aux)_src$/, keys %target) {
print "Creating configdata.pm\n";
open(OUT,">configdata.pm") || die "unable to create configdata.pm: $!\n";
print OUT <<"EOF";
-#! $config{hashbangperl}
+#! $config{HASHBANGPERL}
package configdata;
@@ -2306,10 +2337,9 @@ EOF
}
print OUT
"# The following data is only used when this files is use as a script\n";
-print OUT "my \%makevars = (\n";
+print OUT "my \@makevars = (\n";
foreach (sort keys %user) {
- print OUT ' ',$_,' ' x (20 - length $_),'=> ',
- "'",$user_to_target{$_} || lc $_,"',\n";
+ print OUT " '",$_,"',\n";
}
print OUT ");\n";
print OUT "my \%disabled_info = (\n";
@@ -2440,17 +2470,17 @@ _____
}
if ($dump || $makevars) {
print "\nMakevars:\n\n";
- foreach my $var (sort keys %makevars) {
+ foreach my $var (@makevars) {
my $prefix = '';
- $prefix = $config{cross_compile_prefix}
+ $prefix = $config{CROSS_COMPILE}
if grep { $var eq $_ } @user_crossable;
$prefix //= '';
print ' ',$var,' ' x (16 - length $var),'= ',
- (ref $config{$makevars{$var}} eq 'ARRAY'
- ? join(' ', @{$config{$makevars{$var}}})
- : $prefix.$config{$makevars{$var}}),
+ (ref $config{$var} eq 'ARRAY'
+ ? join(' ', @{$config{$var}})
+ : $prefix.$config{$var}),
"\n"
- if defined $config{$makevars{$var}};
+ if defined $config{$var};
}
my @buildfile = ($config{builddir}, $config{build_file});
@@ -3012,7 +3042,7 @@ sub compiler_predefined {
unless $default_compiler;
if (! $predefined{$default_compiler}) {
- my $cc = "$config{cross_compile_prefix}$default_compiler";
+ my $cc = "$config{CROSS_COMPILE}$default_compiler";
$predefined{$default_compiler} = {};
@@ -3085,7 +3115,6 @@ sub print_table_entry
"ld",
"lflags",
"loutflag",
- "plib_lflags",
"ex_libs",
"bn_ops",
"apps_aux_src",
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
diff --git a/apps/CA.pl.in b/apps/CA.pl.in
index 784c22f..bbaf6a9 100644
--- a/apps/CA.pl.in
+++ b/apps/CA.pl.in
@@ -1,4 +1,4 @@
-#!{- $config{hashbangperl} -}
+#!{- $config{HASHBANGPERL} -}
# Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
diff --git a/apps/tsget.in b/apps/tsget.in
index 71bcc24..c3420db 100644
--- a/apps/tsget.in
+++ b/apps/tsget.in
@@ -1,4 +1,4 @@
-#!{- $config{hashbangperl} -}
+#!{- $config{HASHBANGPERL} -}
# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2002 The OpenTSA Project. All rights reserved.
#
diff --git a/config b/config
index 00f9087..92dfa4a 100755
--- a/config
+++ b/config
@@ -40,6 +40,15 @@ EOF
esac
done
+# Environment that's being passed to Configure
+__CNF_CPPDEFINES=
+__CNF_CPPINCLUDES=
+__CNF_CPPFLAGS=
+__CNF_CFLAGS=
+__CNF_CXXFLAGS=
+__CNF_LDFLAGS=
+__CNF_LDLIBS=
+
# First get uname entries that we use below
[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
@@ -504,10 +513,12 @@ case "$GUESSOS" in
OUT="darwin64-x86_64-cc"
fi ;;
armv6+7-*-iphoneos)
- options="$options -arch%20armv6 -arch%20armv7"
+ __CNF_CFLAGS="$__CNF_CFLAGS -arch%20armv6 -arch%20armv7"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch%20armv6 -arch%20armv7"
OUT="iphoneos-cross" ;;
*-*-iphoneos)
- options="$options -arch%20${MACHINE}"
+ __CNF_CFLAGS="$__CNF_CFLAGS -arch%20${MACHINE}"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch%20${MACHINE}"
OUT="iphoneos-cross" ;;
arm64-*-iphoneos|*-*-ios64)
OUT="ios64-cross" ;;
@@ -519,9 +530,12 @@ case "$GUESSOS" in
esac
if [ "$CC" = "gcc" ]; then
case ${ISA:-generic} in
- EV5|EV45) options="$options -mcpu=ev5";;
- EV56|PCA56) options="$options -mcpu=ev56";;
- *) options="$options -mcpu=ev6";;
+ EV5|EV45) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev5"
+ __CNF_CXXFLAGS="$__CNF_CFLAGS -mcpu=ev5";;
+ EV56|PCA56) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev56"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev56";;
+ *) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev6"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev6";;
esac
fi
;;
@@ -538,7 +552,12 @@ case "$GUESSOS" in
OUT="linux-ppc64"
else
OUT="linux-ppc"
- (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null) || options="$options -m32"
+ if (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null); then
+ :;
+ else
+ __CNF_CFLAGS="$__CNF_CFLAGS -m32"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -m32"
+ fi
fi
;;
ppc64le-*-linux2) OUT="linux-ppc64le" ;;
@@ -574,7 +593,8 @@ case "$GUESSOS" in
sun4u*) OUT="linux-sparcv9" ;;
sun4m) OUT="linux-sparcv8" ;;
sun4d) OUT="linux-sparcv8" ;;
- *) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
+ *) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
esac ;;
parisc*-*-linux2)
# 64-bit builds under parisc64 linux are not supported and
@@ -596,16 +616,25 @@ case "$GUESSOS" in
CPUSCHEDULE=`echo $CPUSCHEDULE|sed -e 's/7300LC/7100LC/' -e 's/8.00/8000/'`
# Finish Model transformations
- options="$options -DB_ENDIAN -mschedule=$CPUSCHEDULE -march=$CPUARCH"
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN"
+ __CNF_CFLAGS="$__CNF_CFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
OUT="linux-generic32" ;;
armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
- armv[7-9]*-*-linux2) OUT="linux-armv4"; options="$options -march=armv7-a" ;;
+ armv[7-9]*-*-linux2) OUT="linux-armv4"
+ __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a"
+ ;;
arm*-*-linux2) OUT="linux-armv4" ;;
aarch64-*-linux2) OUT="linux-aarch64" ;;
- sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
- sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
- m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
- s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
+ sh*b-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
+ sh*-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
+ m68k*-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
+ s390-*-linux2) OUT="linux-generic32";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
s390x-*-linux2)
# To be uncommented when glibc bug is fixed, see Configure...
#if egrep -e '^features.* highgprs' /proc/cpuinfo >/dev/null ; then
@@ -687,9 +716,12 @@ case "$GUESSOS" in
;;
*-*-sunos4) OUT="sunos-$CC" ;;
- *86*-*-bsdi4) OUT="BSD-x86-elf"; options="$options no-sse2 -ldl" ;;
- alpha*-*-*bsd*) OUT="BSD-generic64"; options="$options -DL_ENDIAN" ;;
- powerpc64-*-*bsd*) OUT="BSD-generic64"; options="$options -DB_ENDIAN" ;;
+ *86*-*-bsdi4) OUT="BSD-x86-elf"; options="$options no-sse2";
+ __CNF_LDFLAGS="$__CNF_LDFLAGS -ldl" ;;
+ alpha*-*-*bsd*) OUT="BSD-generic64";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
+ powerpc64-*-*bsd*) OUT="BSD-generic64";
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
sparc64-*-*bsd*) OUT="BSD-sparc64" ;;
ia64-*-*bsd*) OUT="BSD-ia64" ;;
x86_64-*-dragonfly*) OUT="BSD-x86_64" ;;
@@ -716,7 +748,8 @@ case "$GUESSOS" in
if [ "$CC" = "gcc" ]; then
OUT="unixware-7-gcc" ; options="$options no-sse2"
else
- OUT="unixware-7" ; options="$options no-sse2 -D__i386__"
+ OUT="unixware-7" ; options="$options no-sse2"
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__"
fi
;;
*-*-[Uu]nix[Ww]are20*) OUT="unixware-2.0"; options="$options no-sse2 no-sha512" ;;
@@ -763,7 +796,7 @@ case "$GUESSOS" in
else # Motorola(?) CPU
OUT="hpux-$CC"
fi
- options="$options -D_REENTRANT" ;;
+ __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D_REENTRANT" ;;
*-hpux) OUT="hpux-parisc-$CC" ;;
*-aix)
[ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITMODE) 2>/dev/null`
@@ -802,7 +835,9 @@ case "$GUESSOS" in
*-*-qnx6) OUT="QNX6" ;;
x86-*-android|i?86-*-android) OUT="android-x86" ;;
armv[7-9]*-*-android)
- OUT="android-armeabi"; options="$options -march=armv7-a" ;;
+ OUT="android-armeabi"
+ __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a";;
arm*-*-android) OUT="android-armeabi" ;;
*) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
esac
@@ -816,7 +851,7 @@ esac
# See whether we can compile Atalla support
#if [ -f /usr/include/atasi.h ]
#then
-# options="$options -DATALLA"
+# __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DATALLA"
#fi
if [ -n "$CONFIG_OPTIONS" ]; then
@@ -824,9 +859,11 @@ if [ -n "$CONFIG_OPTIONS" ]; then
fi
if expr "$options" : '.*no\-asm' > /dev/null; then :; else
- sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \
- grep \\--noexecstack >/dev/null && \
- options="$options -Wa,--noexecstack"
+ if sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \
+ grep \\--noexecstack >/dev/null; then
+ __CNF_CFLAGS="$__CNF_CFLAGS -Wa,--noexecstack"
+ __CNF_CXXFLAGS="$__CNF_CXXFLAGS -Wa,--noexecstack"
+ fi
fi
# gcc < 2.8 does not support -march=ultrasparc
@@ -900,12 +937,28 @@ OUT="$OUT"
$PERL $THERE/Configure LIST | grep "$OUT" > /dev/null
if [ $? = "0" ]; then
if [ "$VERBOSE" = "true" ]; then
- echo $PERL $THERE/Configure $OUT $options
+ echo /usr/bin/env \
+ __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
+ __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
+ __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
+ __CNF_CFLAGS="'$__CNF_CFLAGS'" \
+ __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
+ __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
+ __CNF_LDLIBS="'$__CNF_LDLIBS'" \
+ $PERL $THERE/Configure $OUT $options
fi
if [ "$DRYRUN" = "false" ]; then
# eval to make sure quoted options, possibly with spaces inside,
# are treated right
- eval $PERL $THERE/Configure $OUT $options
+ eval /usr/bin/env \
+ __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
+ __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
+ __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
+ __CNF_CFLAGS="'$__CNF_CFLAGS'" \
+ __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
+ __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
+ __CNF_LDLIBS="'$__CNF_LDLIBS'" \
+ $PERL $THERE/Configure $OUT $options
fi
else
echo "This system ($OUT) is not supported. See file INSTALL for details."
diff --git a/crypto/build.info b/crypto/build.info
index 0a8f6e2..c406a11 100644
--- a/crypto/build.info
+++ b/crypto/build.info
@@ -11,7 +11,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
DEPEND[cversion.o]=buildinf.h
-GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
+GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CNF_CFLAGS) $(CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
DEPEND[buildinf.h]=../configdata.pm
GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)
diff --git a/tools/c_rehash.in b/tools/c_rehash.in
index e658222..3a9e44a 100644
--- a/tools/c_rehash.in
+++ b/tools/c_rehash.in
@@ -1,4 +1,4 @@
-#!{- $config{hashbangperl} -}
+#!{- $config{HASHBANGPERL} -}
# {- join("\n# ", @autowarntext) -}
# Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
More information about the openssl-commits
mailing list