2015-11-24 05:44:58 +00:00
|
|
|
## -*- mode: perl; -*-
|
2015-02-24 22:40:22 +00:00
|
|
|
## Standard openssl configuration targets.
|
|
|
|
|
2016-03-02 15:12:22 +00:00
|
|
|
# Helper functions for the Windows configs
|
|
|
|
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" };
|
2016-04-18 18:15:33 +00:00
|
|
|
} elsif ($disabled{asm}) {
|
2016-03-02 15:12:22 +00:00
|
|
|
$vc_win64a_info = { as => "ml64",
|
|
|
|
asflags => "/c /Cp /Cx /Zi",
|
|
|
|
asoutflag => "/Fo" };
|
2016-04-18 18:15:33 +00:00
|
|
|
} else {
|
2016-08-31 17:47:35 +00:00
|
|
|
$die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n");
|
|
|
|
$vc_win64a_info = { as => "{unknown}",
|
|
|
|
asflags => "",
|
|
|
|
asoutflag => "" };
|
2016-03-02 15:12:22 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return $vc_win64a_info;
|
|
|
|
}
|
|
|
|
|
2016-04-18 18:15:33 +00:00
|
|
|
my $vc_win32_info = {};
|
|
|
|
sub vc_win32_info {
|
|
|
|
unless (%$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",
|
|
|
|
asflags => "-f win32",
|
|
|
|
asoutflag => "-o",
|
|
|
|
perlasm_scheme => "win32n" };
|
|
|
|
} elsif ($disabled{asm}) {
|
|
|
|
$vc_win32_info = { as => "ml",
|
|
|
|
asflags => "/nologo /Cp /coff /c /Cx /Zi",
|
|
|
|
asoutflag => "/Fo",
|
|
|
|
perlasm_scheme => "win32" };
|
|
|
|
} else {
|
2016-08-31 17:47:35 +00:00
|
|
|
$die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n");
|
|
|
|
$vc_win32_info = { as => "{unknown}",
|
|
|
|
asflags => "",
|
|
|
|
asoutflag => "",
|
|
|
|
perlasm_scheme => "win32" };
|
2016-04-18 18:15:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return $vc_win32_info;
|
|
|
|
}
|
|
|
|
|
2016-03-02 15:12:22 +00:00
|
|
|
my $vc_wince_info = {};
|
|
|
|
sub vc_wince_info {
|
|
|
|
unless (%$vc_wince_info) {
|
|
|
|
# sanity check
|
2017-11-29 16:41:10 +00:00
|
|
|
$die->('%OSVERSION% is not defined') if (!defined(env('OSVERSION')));
|
|
|
|
$die->('%PLATFORM% is not defined') if (!defined(env('PLATFORM')));
|
|
|
|
$die->('%TARGETCPU% is not defined') if (!defined(env('TARGETCPU')));
|
2016-03-02 15:12:22 +00:00
|
|
|
|
|
|
|
#
|
|
|
|
# Idea behind this is to mimic flags set by eVC++ IDE...
|
|
|
|
#
|
2017-11-29 16:41:10 +00:00
|
|
|
my $wcevers = env('OSVERSION'); # WCENNN
|
2016-08-31 17:47:35 +00:00
|
|
|
my $wcevernum;
|
|
|
|
my $wceverdotnum;
|
|
|
|
if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) {
|
|
|
|
$wcevernum = "$1$2";
|
|
|
|
$wceverdotnum = "$1.$2";
|
|
|
|
} else {
|
|
|
|
$die->('%OSVERSION% value is insane');
|
|
|
|
$wcevernum = "{unknown}";
|
|
|
|
$wceverdotnum = "{unknown}";
|
|
|
|
}
|
|
|
|
my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN
|
|
|
|
my $wcelflag = "/subsystem:windowsce,$wceverdotnum"; # ...,N.NN
|
2016-03-02 15:12:22 +00:00
|
|
|
|
2017-11-29 16:41:10 +00:00
|
|
|
my $wceplatf = env('PLATFORM');
|
2016-03-14 09:02:13 +00:00
|
|
|
|
|
|
|
$wceplatf =~ tr/a-z0-9 /A-Z0-9_/;
|
|
|
|
$wcecdefs .= " -DWCE_PLATFORM_$wceplatf";
|
2016-03-02 15:12:22 +00:00
|
|
|
|
2017-11-29 16:41:10 +00:00
|
|
|
my $wcetgt = env('TARGETCPU'); # just shorter name...
|
2016-03-02 15:12:22 +00:00
|
|
|
SWITCH: for($wcetgt) {
|
|
|
|
/^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
|
|
|
|
$wcelflag.=" /machine:X86"; last; };
|
|
|
|
/^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
|
|
|
|
$wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
|
|
|
|
$wcecdefs.=" -QRarch4T -QRinterwork-return";
|
|
|
|
$wcelflag.=" /machine:THUMB"; last; };
|
|
|
|
/^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
|
|
|
|
$wcelflag.=" /machine:ARM"; last; };
|
|
|
|
/^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
|
|
|
|
$wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
|
|
|
|
$wcelflag.=" /machine:MIPSFPU"; last; };
|
|
|
|
/^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
|
|
|
|
$wcecdefs.=" -DMIPSII -QMmips16";
|
|
|
|
$wcelflag.=" /machine:MIPS16"; last; };
|
|
|
|
/^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
|
|
|
|
$wcecdefs.=" -QMmips2";
|
|
|
|
$wcelflag.=" /machine:MIPS"; last; };
|
|
|
|
/^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
|
|
|
|
$wcelflag.=" /machine:MIPS"; last; };
|
|
|
|
/^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
|
|
|
|
$wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
|
|
|
|
$wcelflag.=" /machine:$wcetgt"; last; };
|
|
|
|
{ $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
|
|
|
|
$wcelflag.=" /machine:$wcetgt"; last; };
|
|
|
|
}
|
|
|
|
|
2018-01-23 12:54:55 +00:00
|
|
|
$vc_wince_info = { cppflags => $wcecdefs,
|
2016-03-02 15:12:22 +00:00
|
|
|
lflags => $wcelflag };
|
|
|
|
}
|
|
|
|
return $vc_wince_info;
|
|
|
|
}
|
|
|
|
|
2016-03-29 18:18:31 +00:00
|
|
|
# Helper functions for the VMS configs
|
|
|
|
my $vms_info = {};
|
|
|
|
sub vms_info {
|
2018-02-14 09:34:12 +00:00
|
|
|
my $pointer_size_str = $config{target} =~ m|-p(\d+)$| ? $1 : "";
|
|
|
|
|
|
|
|
# For the case where Configure iterate through all config targets, such
|
|
|
|
# as when listing them and their details, we reset info if the pointer
|
|
|
|
# size changes.
|
|
|
|
if (%$vms_info && $vms_info->{pointer_size} ne $pointer_size_str) {
|
|
|
|
$vms_info = {};
|
|
|
|
}
|
2016-04-12 14:03:02 +00:00
|
|
|
|
2018-02-14 09:34:12 +00:00
|
|
|
unless (%$vms_info) {
|
2016-04-12 14:03:02 +00:00
|
|
|
$vms_info->{disable_warns} = [ ];
|
2016-07-02 07:50:24 +00:00
|
|
|
$vms_info->{pointer_size} = $pointer_size_str;
|
2018-02-14 09:34:12 +00:00
|
|
|
if ($pointer_size_str eq "64") {
|
2016-04-12 14:03:02 +00:00
|
|
|
`PIPE CC /NOCROSS_REFERENCE /NOLIST /NOOBJECT /WARNINGS = DISABLE = ( MAYLOSEDATA3, EMPTYFILE ) NL: 2> NL:`;
|
|
|
|
if ($? == 0) {
|
|
|
|
push @{$vms_info->{disable_warns}}, "MAYLOSEDATA3";
|
|
|
|
}
|
|
|
|
}
|
2016-04-12 13:28:06 +00:00
|
|
|
|
|
|
|
unless ($disabled{zlib}) {
|
2016-04-12 14:03:02 +00:00
|
|
|
my $default_zlib = 'GNV$LIBZSHR' . $pointer_size_str;
|
2016-04-12 13:28:06 +00:00
|
|
|
if (defined($disabled{"zlib-dynamic"})) {
|
2016-04-12 14:03:02 +00:00
|
|
|
$vms_info->{zlib} = $withargs{zlib_lib} || "$default_zlib/SHARE";
|
2016-04-12 13:28:06 +00:00
|
|
|
} else {
|
2016-04-12 14:03:02 +00:00
|
|
|
$vms_info->{def_zlib} = $withargs{zlib_lib} || $default_zlib;
|
|
|
|
# In case the --with-zlib-lib value contains something like
|
|
|
|
# /SHARE or /LIB or so at the end, remove it.
|
|
|
|
$vms_info->{def_zlib} =~ s|/.*$||g;
|
2016-04-12 13:28:06 +00:00
|
|
|
}
|
|
|
|
}
|
2018-02-13 19:47:34 +00:00
|
|
|
|
|
|
|
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->{perlasm_scheme} = "ias";
|
|
|
|
}
|
|
|
|
}
|
2016-03-29 18:18:31 +00:00
|
|
|
}
|
|
|
|
return $vms_info;
|
|
|
|
}
|
2016-03-02 15:12:22 +00:00
|
|
|
|
2017-12-01 14:29:05 +00:00
|
|
|
my %targets = (
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### Basic configs that should work on any 32-bit box
|
2015-03-10 23:58:50 +00:00
|
|
|
"gcc" => {
|
2018-01-27 12:06:39 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => picker(debug => "-O0 -g",
|
|
|
|
release => "-O3"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
|
|
|
},
|
|
|
|
"cc" => {
|
2018-01-27 12:06:39 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
|
|
|
cflags => "-O",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### VOS Configurations
|
2015-03-10 23:58:50 +00:00
|
|
|
"vos-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "-Wall",
|
2016-04-06 10:47:35 +00:00
|
|
|
debug => "-O0 -g",
|
2016-03-02 18:13:26 +00:00
|
|
|
release => "-O3"),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VOS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-Wl,-map"),
|
2015-03-10 23:58:50 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
|
|
|
shared_extension => ".so",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2016-02-17 23:32:13 +00:00
|
|
|
#### Solaris configurations
|
2015-11-23 13:12:17 +00:00
|
|
|
"solaris-common" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-11-23 13:12:17 +00:00
|
|
|
template => 1,
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DFILIO_H",
|
2017-03-01 20:40:02 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl -ldl"),
|
2015-11-23 13:12:17 +00:00
|
|
|
dso_scheme => "dlfcn",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-11-23 13:12:17 +00:00
|
|
|
shared_target => "solaris-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-11-23 13:12:17 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
#### Solaris x86 with GNU C setups
|
2015-03-10 23:58:50 +00:00
|
|
|
"solaris-x86-gcc" => {
|
2016-11-12 15:01:47 +00:00
|
|
|
# NB. GNU C has to be configured to use GNU assembler, and not
|
|
|
|
# /usr/ccs/bin/as. Failure to comply will result in compile
|
|
|
|
# failures [at least] in 32-bit build.
|
2015-11-23 13:12:17 +00:00
|
|
|
inherit_from => [ "solaris-common", asm("x86_elf_asm") ],
|
2015-03-16 21:33:36 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add_before(picker(default => "-Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3 -fomit-frame-pointer"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_cflag => "-fPIC",
|
2016-08-31 14:13:10 +00:00
|
|
|
shared_ldflag => "-shared -static-libgcc",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"solaris64-x86_64-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# -shared -static-libgcc might appear controversial, but modules
|
|
|
|
# taken from static libgcc do not have relocations and linking
|
|
|
|
# them into our shared objects doesn't have any negative side
|
|
|
|
# effects. On the contrary, doing so makes it possible to use
|
|
|
|
# gcc shared build with Sun C. Given that gcc generates faster
|
|
|
|
# code [thanks to inline assembler], I would actually recommend
|
|
|
|
# to consider using gcc shared build even with vendor compiler:-)
|
2017-10-10 21:55:09 +00:00
|
|
|
# -- <appro@openssl.org>
|
2015-11-23 13:12:17 +00:00
|
|
|
inherit_from => [ "solaris-common", asm("x86_64_asm") ],
|
2015-03-16 21:33:36 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add_before(picker(default => "-m64 -Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-shared -static-libgcc",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### Solaris x86 with Sun C setups
|
2016-08-31 14:13:10 +00:00
|
|
|
# There used to be solaris-x86-cc target, but it was removed,
|
|
|
|
# primarily because vendor assembler can't assemble our modules
|
|
|
|
# with -KPIC flag. As result it, assembly support, was not even
|
|
|
|
# available as option. But its lack means lack of side-channel
|
|
|
|
# resistant code, which is incompatible with security by todays
|
|
|
|
# standards. Fortunately gcc is readily available prepackaged
|
|
|
|
# option, which we can firmly point at...
|
|
|
|
#
|
|
|
|
# On related note, solaris64-x86_64-cc target won't compile code
|
|
|
|
# paths utilizing AVX and post-Haswell instruction extensions.
|
|
|
|
# Consider switching to solaris64-x86_64-gcc even here...
|
|
|
|
#
|
2015-03-10 23:58:50 +00:00
|
|
|
"solaris64-x86_64-cc" => {
|
2015-11-23 13:12:17 +00:00
|
|
|
inherit_from => [ "solaris-common", asm("x86_64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add_before(picker(default => "-xarch=generic64 -xstrconst -Xa",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-xO5 -xdepend -xbuiltin")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => add("-DL_ENDIAN", threads("-D_REENTRANT")),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2017-12-04 15:31:26 +00:00
|
|
|
lflags => add(threads("-mt")),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf",
|
|
|
|
shared_cflag => "-KPIC",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-G -dy -z text",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### SPARC Solaris with GNU C setups
|
2015-03-10 23:58:50 +00:00
|
|
|
"solaris-sparcv7-gcc" => {
|
2015-11-23 13:12:17 +00:00
|
|
|
inherit_from => [ "solaris-common" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add_before(picker(default => "-Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_cflag => "-fPIC",
|
|
|
|
shared_ldflag => "-shared",
|
|
|
|
},
|
|
|
|
"solaris-sparcv8-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv7-gcc", asm("sparcv8_asm") ],
|
2016-02-24 23:17:59 +00:00
|
|
|
cflags => add_before("-mcpu=v8"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"solaris-sparcv9-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# -m32 should be safe to add as long as driver recognizes
|
2015-11-23 13:12:17 +00:00
|
|
|
# -mcpu=ultrasparc
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv7-gcc", asm("sparcv9_asm") ],
|
2016-04-06 10:47:35 +00:00
|
|
|
cflags => add_before("-m32 -mcpu=ultrasparc"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"solaris64-sparcv9-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv9-gcc" ],
|
2015-11-23 13:12:17 +00:00
|
|
|
cflags => sub { my $f=join(" ",@_); $f =~ s/\-m32/-m64/; $f; },
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### SPARC Solaris with Sun C setups
|
|
|
|
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
|
|
|
|
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
|
|
|
|
# SC5.0 note: Compiler common patch 107357-01 or later is required!
|
2015-03-10 23:58:50 +00:00
|
|
|
"solaris-sparcv7-cc" => {
|
2015-11-23 13:12:17 +00:00
|
|
|
inherit_from => [ "solaris-common" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add_before(picker(default => "-xstrconst -Xa",
|
2016-04-06 10:47:35 +00:00
|
|
|
debug => "-g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-xO5 -xdepend")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => add("-DB_ENDIAN -DBN_DIV2W",
|
2018-01-23 12:54:55 +00:00
|
|
|
threads("-D_REENTRANT")),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
lflags => add(threads("-mt")),
|
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_cflag => "-KPIC",
|
|
|
|
shared_ldflag => "-G -dy -z text",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
####
|
2015-03-10 23:58:50 +00:00
|
|
|
"solaris-sparcv8-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv7-cc", asm("sparcv8_asm") ],
|
2016-02-24 23:17:59 +00:00
|
|
|
cflags => add_before("-xarch=v8"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"solaris-sparcv9-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
|
2016-08-30 21:25:10 +00:00
|
|
|
cflags => add_before("-xarch=v8plus"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"solaris64-sparcv9-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
|
2016-08-30 21:25:10 +00:00
|
|
|
cflags => add_before("-xarch=v9"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### IRIX 6.x configs
|
2016-05-04 21:40:47 +00:00
|
|
|
# Only N32 and N64 ABIs are supported.
|
2015-03-10 23:58:50 +00:00
|
|
|
"irix-mips3-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-mabi=n32",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-g -O0",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
|
2016-05-04 21:40:47 +00:00
|
|
|
threads("-D_SGI_MP_SOURCE")),
|
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "RC4_CHAR SIXTY_FOUR_BIT",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "n32",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "irix-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "32",
|
|
|
|
},
|
|
|
|
"irix-mips3-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-g -O0",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-O2")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_SGI_MP_SOURCE")),
|
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "RC4_CHAR SIXTY_FOUR_BIT",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "n32",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "irix-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "32",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
# N64 ABI builds.
|
2015-03-10 23:58:50 +00:00
|
|
|
"irix64-mips4-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-mabi=64 -mips4",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-g -O0",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_SGI_MP_SOURCE")),
|
2016-05-04 21:40:47 +00:00
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "64",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "irix-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "64",
|
|
|
|
},
|
|
|
|
"irix64-mips4-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("mips64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-g -O0",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "-O2")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DBN_DIV3W",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_SGI_MP_SOURCE")),
|
|
|
|
ex_libs => add(threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "64",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "irix-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### Unified HP-UX ANSI C configs.
|
|
|
|
# Special notes:
|
|
|
|
# - Originally we were optimizing at +O4 level. It should be noted
|
|
|
|
# that the only difference between +O3 and +O4 is global inter-
|
|
|
|
# procedural analysis. As it has to be performed during the link
|
|
|
|
# stage the compiler leaves behind certain pseudo-code in lib*.a
|
|
|
|
# which might be release or even patch level specific. Generating
|
|
|
|
# the machine code for and analyzing the *whole* program appears
|
|
|
|
# to be *extremely* memory demanding while the performance gain is
|
|
|
|
# actually questionable. The situation is intensified by the default
|
|
|
|
# HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
|
|
|
|
# which is way too low for +O4. In other words, doesn't +O3 make
|
|
|
|
# more sense?
|
|
|
|
# - Keep in mind that the HP compiler by default generates code
|
|
|
|
# suitable for execution on the host you're currently compiling at.
|
2016-02-26 19:30:15 +00:00
|
|
|
# If the toolkit is meant to be used on various PA-RISC processors
|
2015-03-16 21:33:36 +00:00
|
|
|
# consider './Configure hpux-parisc-[g]cc +DAportable'.
|
2015-02-24 22:40:22 +00:00
|
|
|
# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
|
|
|
|
# 32-bit message digests. (For the moment of this writing) HP C
|
|
|
|
# doesn't seem to "digest" too many local variables (they make "him"
|
|
|
|
# chew forever:-). For more details look-up MD32_XARRAY comment in
|
|
|
|
# crypto/sha/sha_lcl.h.
|
2015-03-16 21:33:36 +00:00
|
|
|
# - originally there were 32-bit hpux-parisc2-* targets. They were
|
2016-02-26 19:30:15 +00:00
|
|
|
# scrapped, because a) they were not interchangeable with other 32-bit
|
2016-06-26 17:08:51 +00:00
|
|
|
# targets; b) performance-critical 32-bit assembly modules implement
|
|
|
|
# even PA-RISC 2.0-specific code paths, which are chosen at run-time,
|
|
|
|
# thus adequate performance is provided even with PA-RISC 1.1 build.
|
2015-03-10 23:58:50 +00:00
|
|
|
"hpux-parisc-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => "-DB_ENDIAN -DBN_DIV2W",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-Wl,+s -ldld", threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dl",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
|
|
|
shared_ldflag => "-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"hpux-parisc1_1-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "hpux-parisc-gcc", asm("parisc11_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/pa1.1",
|
|
|
|
},
|
|
|
|
"hpux64-parisc2-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(debug => "-O0 -g",
|
|
|
|
release => "-O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-ldl"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "-fpic",
|
|
|
|
shared_ldflag => "-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/pa20_64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
# More attempts at unified 10.X and 11.X targets for HP C compiler.
|
2015-03-10 23:58:50 +00:00
|
|
|
"hpux-parisc-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "+Optrs_strongly_typed -Ae +ESlit",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "+O0 +d -g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "+O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_REENTRANT")),
|
|
|
|
ex_libs => add("-Wl,+s -ldld",threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dl",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "+Z",
|
|
|
|
shared_ldflag => "-b",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"hpux-parisc1_1-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "hpux-parisc-cc", asm("parisc11_asm") ],
|
2016-02-24 23:17:59 +00:00
|
|
|
cflags => add_before("+DA1.1"),
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/pa1.1",
|
|
|
|
},
|
|
|
|
"hpux64-parisc2-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "+O0 +d -g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "+O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN -DMD32_XARRAY",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_REENTRANT")),
|
|
|
|
ex_libs => add("-ldl",threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "+Z",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-b",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/pa20_64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
# HP/UX IA-64 targets
|
2015-03-10 23:58:50 +00:00
|
|
|
"hpux-ia64-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-Ae +DD32 +Olit=all -z",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "+O0 +d -g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "+O2")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
ex_libs => add("-ldl",threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "+Z",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-b",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/hpux32",
|
|
|
|
},
|
|
|
|
"hpux64-ia64-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-Ae +DD64 +Olit=all -z",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "+O0 +d -g",
|
2018-01-23 12:54:55 +00:00
|
|
|
release => "+O3")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
ex_libs => add("-ldl", threads("-lpthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "+Z",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-b",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/hpux64",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
# GCC builds...
|
2015-03-10 23:58:50 +00:00
|
|
|
"hpux-ia64-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => "-DB_ENDIAN",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-ldl", threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "-fpic",
|
|
|
|
shared_ldflag => "-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/hpux32",
|
|
|
|
},
|
|
|
|
"hpux64-ia64-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-mlp64",
|
2016-03-14 09:02:13 +00:00
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-29 11:42:35 +00:00
|
|
|
cppflags => "-DB_ENDIAN",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-ldl", threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "hpux-shared",
|
|
|
|
shared_cflag => "-fpic",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-shared",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "/hpux64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
|
2015-03-10 23:58:50 +00:00
|
|
|
"MPE/iX-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-O3",
|
|
|
|
cppflags => "-D_ENDIAN -DBN_DIV2W -D_POSIX_SOURCE -D_SOCKET_SOURCE",
|
2018-02-08 22:26:22 +00:00
|
|
|
includes => add("/SYSLOG/PUB"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "MPE",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-L/SYSLOG/PUB"),
|
|
|
|
ex_libs => add("-lsyslog -lsocket -lcurses"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2016-05-02 08:33:42 +00:00
|
|
|
#### DEC Alpha Tru64 targets. Tru64 is marketing name for OSF/1 version 4
|
|
|
|
#### and forward. In reality 'uname -s' still returns "OSF1". Originally
|
|
|
|
#### there were even osf1-* configs targeting prior versions provided,
|
|
|
|
#### but not anymore...
|
|
|
|
"tru64-alpha-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("alpha_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-std=c9x -O3", threads("-pthread")),
|
|
|
|
cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2016-05-02 08:33:42 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "alpha-osf1-shared",
|
|
|
|
shared_extension => ".so",
|
|
|
|
},
|
|
|
|
"tru64-alpha-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("alpha_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-std1 -tune host -fast -readonly_strings",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-pthread")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "alpha-osf1-shared",
|
|
|
|
shared_ldflag => "-msym",
|
|
|
|
shared_extension => ".so",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
####
|
|
|
|
#### Variety of LINUX:-)
|
|
|
|
####
|
|
|
|
# *-generic* is endian-neutral target, but ./config is free to
|
|
|
|
# throw in -D[BL]_ENDIAN, whichever appropriate...
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-generic32" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2016-10-12 13:33:13 +00:00
|
|
|
cxx => "g++",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
cflags => combine(picker(default => "-Wall",
|
2016-04-06 10:47:35 +00:00
|
|
|
debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-27 13:56:06 +00:00
|
|
|
cxxflags => combine(picker(default => "-std=c++11 -Wall",
|
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O3"),
|
|
|
|
threads("-pthread")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DOPENSSL_USE_NODELETE",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-ldl", threads("-pthread")),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "linux-shared",
|
2018-01-23 12:54:55 +00:00
|
|
|
shared_cflag => "-fPIC",
|
2016-11-03 14:26:00 +00:00
|
|
|
shared_ldflag => "-Wl,-znodelete",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
"linux-generic64" => {
|
|
|
|
inherit_from => [ "linux-generic32" ],
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
2015-03-16 21:33:36 +00:00
|
|
|
},
|
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-ppc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32", asm("ppc32_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "linux32",
|
2015-03-16 21:33:36 +00:00
|
|
|
},
|
|
|
|
"linux-ppc64" => {
|
|
|
|
inherit_from => [ "linux-generic64", asm("ppc64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m64"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2015-03-16 21:33:36 +00:00
|
|
|
perlasm_scheme => "linux64",
|
|
|
|
multilib => "64",
|
|
|
|
},
|
|
|
|
"linux-ppc64le" => {
|
|
|
|
inherit_from => [ "linux-generic64", asm("ppc64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m64"),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2015-03-16 21:33:36 +00:00
|
|
|
perlasm_scheme => "linux64le",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-armv4" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
################################################################
|
|
|
|
# Note that -march is not among compiler options in linux-armv4
|
|
|
|
# target description. Not specifying one is intentional to give
|
|
|
|
# you choice to:
|
|
|
|
#
|
|
|
|
# a) rely on your compiler default by not specifying one;
|
|
|
|
# b) specify your target platform explicitly for optimal
|
|
|
|
# performance, e.g. -march=armv6 or -march=armv7-a;
|
|
|
|
# c) build "universal" binary that targets *range* of platforms
|
|
|
|
# by specifying minimum and maximum supported architecture;
|
|
|
|
#
|
|
|
|
# As for c) option. It actually makes no sense to specify
|
|
|
|
# maximum to be less than ARMv7, because it's the least
|
|
|
|
# requirement for run-time switch between platform-specific
|
|
|
|
# code paths. And without run-time switch performance would be
|
|
|
|
# equivalent to one for minimum. Secondly, there are some
|
|
|
|
# natural limitations that you'd have to accept and respect.
|
|
|
|
# Most notably you can *not* build "universal" binary for
|
|
|
|
# big-endian platform. This is because ARMv7 processor always
|
|
|
|
# picks instructions in little-endian order. Another similar
|
|
|
|
# limitation is that -mthumb can't "cross" -march=armv6t2
|
|
|
|
# boundary, because that's where it became Thumb-2. Well, this
|
|
|
|
# limitation is a bit artificial, because it's not really
|
|
|
|
# impossible, but it's deemed too tricky to support. And of
|
|
|
|
# course you have to be sure that your binutils are actually
|
|
|
|
# up to the task of handling maximum target platform. With all
|
|
|
|
# this in mind here is an example of how to configure
|
|
|
|
# "universal" build:
|
|
|
|
#
|
|
|
|
# ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
|
|
|
|
#
|
|
|
|
inherit_from => [ "linux-generic32", asm("armv4_asm") ],
|
|
|
|
perlasm_scheme => "linux32",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"linux-aarch64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic64", asm("aarch64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "linux64",
|
|
|
|
},
|
2015-09-23 14:43:55 +00:00
|
|
|
"linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
|
|
|
|
inherit_from => [ "linux-generic32", asm("aarch64_asm") ],
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => add("-mabi=ilp32"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT RC4_CHAR",
|
2015-09-23 14:43:55 +00:00
|
|
|
perlasm_scheme => "linux64",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-mips32" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# Configure script adds minimally required -march for assembly
|
|
|
|
# support, if no -march was specified at command line.
|
|
|
|
inherit_from => [ "linux-generic32", asm("mips32_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mabi=32"),
|
|
|
|
cppflags => add("-DBN_DIV3W"),
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "o32",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
# mips32 and mips64 below refer to contemporary MIPS Architecture
|
|
|
|
# specifications, MIPS32 and MIPS64, rather than to kernel bitness.
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-mips64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32", asm("mips64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mabi=n32"),
|
|
|
|
cppflags => add("-DBN_DIV3W"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "n32",
|
|
|
|
multilib => "32",
|
|
|
|
},
|
|
|
|
"linux64-mips64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic64", asm("mips64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mabi=64"),
|
|
|
|
cppflags => add("-DBN_DIV3W"),
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "64",
|
|
|
|
multilib => "64",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
|
|
|
#### IA-32 targets...
|
2016-11-15 08:53:01 +00:00
|
|
|
#### These two targets are a bit aged and are to be used on older Linux
|
|
|
|
#### machines where gcc doesn't understand -m32 and -m64
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-elf" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32", asm("x86_elf_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(release => "-fomit-frame-pointer")),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"linux-aout" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(default => "-Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O3 -fomit-frame-pointer")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "a.out",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
2016-11-15 08:53:01 +00:00
|
|
|
#### X86 / X86_64 targets
|
|
|
|
"linux-x86" => {
|
|
|
|
inherit_from => [ "linux-generic32", asm("x86_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(default => "-m32",
|
2016-11-15 08:53:01 +00:00
|
|
|
release => "-fomit-frame-pointer")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-11-15 08:53:01 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
|
|
|
perlasm_scheme => "elf",
|
|
|
|
},
|
|
|
|
"linux-x86-clang" => {
|
|
|
|
inherit_from => [ "linux-x86" ],
|
|
|
|
cc => "clang",
|
|
|
|
cxx => "clang++",
|
2017-09-18 14:30:28 +00:00
|
|
|
cflags => add("-Wextra"),
|
2016-11-15 08:53:01 +00:00
|
|
|
},
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-x86_64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic64", asm("x86_64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m64"),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf",
|
|
|
|
multilib => "64",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
"linux-x86_64-clang" => {
|
|
|
|
inherit_from => [ "linux-x86_64" ],
|
|
|
|
cc => "clang",
|
2016-10-14 16:04:38 +00:00
|
|
|
cxx => "clang++",
|
2017-09-18 14:30:28 +00:00
|
|
|
cflags => add("-Wextra"),
|
2015-03-16 21:33:36 +00:00
|
|
|
},
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-x32" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32", asm("x86_64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mx32"),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT",
|
2016-03-15 22:39:07 +00:00
|
|
|
perlasm_scheme => "elf32",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "x32",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
|
|
|
"linux-ia64" => {
|
|
|
|
inherit_from => [ "linux-generic64", asm("ia64_asm") ],
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-16 21:33:36 +00:00
|
|
|
},
|
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux64-s390x" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic64", asm("s390x_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m64"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "64",
|
|
|
|
multilib => "64",
|
|
|
|
},
|
|
|
|
"linux32-s390x" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
#### So called "highgprs" target for z/Architecture CPUs
|
|
|
|
# "Highgprs" is kernel feature first implemented in Linux
|
|
|
|
# 2.6.32, see /proc/cpuinfo. The idea is to preserve most
|
|
|
|
# significant bits of general purpose registers not only
|
|
|
|
# upon 32-bit process context switch, but even on
|
|
|
|
# asynchronous signal delivery to such process. This makes
|
|
|
|
# it possible to deploy 64-bit instructions even in legacy
|
|
|
|
# application context and achieve better [or should we say
|
|
|
|
# adequate] performance. The build is binary compatible with
|
|
|
|
# linux-generic32, and the idea is to be able to install the
|
|
|
|
# resulting libcrypto.so alongside generic one, e.g. as
|
|
|
|
# /lib/highgprs/libcrypto.so.x.y, for ldconfig and run-time
|
|
|
|
# linker to autodiscover. Unfortunately it doesn't work just
|
|
|
|
# yet, because of couple of bugs in glibc
|
|
|
|
# sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
|
|
|
|
#
|
|
|
|
inherit_from => [ "linux-generic32", asm("s390x_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m31 -Wa,-mzarch"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2016-03-11 15:47:02 +00:00
|
|
|
bn_asm_src => sub { my $r=join(" ",@_); $r=~s|asm/s390x\.S|bn_asm.c|; $r; },
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "31",
|
|
|
|
multilib => "/highgprs",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
|
|
|
#### SPARC Linux setups
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-sparcv8" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32", asm("sparcv8_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mcpu=v8"),
|
|
|
|
cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"linux-sparcv9" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# 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") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
|
|
|
|
cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"linux64-sparcv9" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# GCC 3.1 is a requirement
|
|
|
|
inherit_from => [ "linux-generic64", asm("sparcv9_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-m64 -mcpu=ultrasparc"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
multilib => "64",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"linux-alpha-gcc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic64", asm("alpha_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"linux-c64xplus" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-16 21:33:36 +00:00
|
|
|
# TI_CGT_C6000_7.3.x is a requirement
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cl6x",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden",
|
|
|
|
cppflags => combine("-DOPENSSL_SMALL_FOOTPRINT",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-D_REENTRANT")),
|
2015-03-10 23:58:50 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-12-15 20:52:01 +00:00
|
|
|
cpuid_asm_src => "c64xpluscpuid.s",
|
|
|
|
bn_asm_src => "asm/bn-c64xplus.asm c64xplus-gf2m.s",
|
|
|
|
aes_asm_src => "aes-c64xplus.s aes_cbc.c aes-ctr.fake",
|
|
|
|
sha1_asm_src => "sha1-c64xplus.s sha256-c64xplus.s sha512-c64xplus.s",
|
|
|
|
rc4_asm_src => "rc4-c64xplus.s",
|
|
|
|
modes_asm_src => "ghash-c64xplus.s",
|
|
|
|
chacha_asm_src => "chacha-c64xplus.s",
|
|
|
|
poly1305_asm_src => "poly1305-c64xplus.s",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "void",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "linux-shared",
|
|
|
|
shared_cflag => "--pic",
|
2016-10-18 14:11:57 +00:00
|
|
|
shared_ldflag => add("-z --sysv --shared"),
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
ranlib => "true",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### Android: linux-* but without pointers to headers and libs.
|
2015-03-30 14:47:57 +00:00
|
|
|
#
|
|
|
|
# It takes pair of prior-set environment variables to make it work:
|
|
|
|
#
|
2016-08-31 18:50:08 +00:00
|
|
|
# CROSS_SYSROOT=/some/where/android-ndk-<ver>/platforms/android-<apiver>/arch-<arch>
|
2015-03-30 14:47:57 +00:00
|
|
|
# CROSS_COMPILE=<prefix>
|
|
|
|
#
|
|
|
|
# As well as PATH adjusted to cover ${CROSS_COMPILE}gcc and company.
|
|
|
|
# For example to compile for ICS and ARM with NDK 10d, you'd:
|
|
|
|
#
|
|
|
|
# ANDROID_NDK=/some/where/android-ndk-10d
|
|
|
|
# CROSS_SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm
|
2018-01-07 13:57:25 +00:00
|
|
|
# CROSS_COMPILE=arm-linux-androideabi-
|
2016-08-31 18:50:08 +00:00
|
|
|
# PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/bin
|
2015-03-30 14:47:57 +00:00
|
|
|
#
|
2015-03-10 23:58:50 +00:00
|
|
|
"android" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "linux-generic32" ],
|
2015-03-30 14:47:57 +00:00
|
|
|
# Special note about unconditional -fPIC and -pie. The underlying
|
|
|
|
# reason is that Lollipop refuses to run non-PIE. But what about
|
|
|
|
# older systems and NDKs? -fPIC was never problem, so the only
|
2016-05-01 11:35:31 +00:00
|
|
|
# concern is -pie. Older toolchains, e.g. r4, appear to handle it
|
2015-03-30 14:47:57 +00:00
|
|
|
# and binaries turn mostly functional. "Mostly" means that oldest
|
|
|
|
# Androids, such as Froyo, fail to handle executable, but newer
|
|
|
|
# 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.
|
2016-05-01 11:35:31 +00:00
|
|
|
cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
|
|
|
|
bin_cflags => "-pie",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"android-x86" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "android", asm("x86_asm") ],
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => add(picker(release => "-fomit-frame-pointer")),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-16 21:33:36 +00:00
|
|
|
perlasm_scheme => "android",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-30 14:47:57 +00:00
|
|
|
################################################################
|
|
|
|
# Contemporary Android applications can provide multiple JNI
|
|
|
|
# providers in .apk, targeting multiple architectures. Among
|
|
|
|
# them there is "place" for two ARM flavours: generic eabi and
|
|
|
|
# armv7-a/hard-float. However, it should be noted that OpenSSL's
|
|
|
|
# ability to engage NEON is not constrained by ABI choice, nor
|
|
|
|
# is your ability to call OpenSSL from your application code
|
|
|
|
# compiled with floating-point ABI other than default 'soft'.
|
|
|
|
# [Latter thanks to __attribute__((pcs("aapcs"))) declaration.]
|
|
|
|
# This means that choice of ARM libraries you provide in .apk
|
|
|
|
# is driven by application needs. For example if application
|
|
|
|
# itself benefits from NEON or is floating-point intensive, then
|
|
|
|
# it might be appropriate to provide both libraries. Otherwise
|
|
|
|
# just generic eabi would do. But in latter case it would be
|
|
|
|
# appropriate to
|
|
|
|
#
|
|
|
|
# ./Configure android-armeabi -D__ARM_MAX_ARCH__=8
|
|
|
|
#
|
|
|
|
# in order to build "universal" binary and allow OpenSSL take
|
|
|
|
# advantage of NEON when it's available.
|
|
|
|
#
|
|
|
|
"android-armeabi" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "android", asm("armv4_asm") ],
|
2015-03-30 14:47:57 +00:00
|
|
|
},
|
2015-03-10 23:58:50 +00:00
|
|
|
"android-mips" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "android", asm("mips32_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "o32",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-04-02 21:18:10 +00:00
|
|
|
"android64" => {
|
|
|
|
inherit_from => [ "linux-generic64" ],
|
2016-05-01 11:35:31 +00:00
|
|
|
cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
|
|
|
|
bin_cflags => "-pie",
|
2015-04-02 21:18:10 +00:00
|
|
|
},
|
|
|
|
"android64-aarch64" => {
|
|
|
|
inherit_from => [ "android64", asm("aarch64_asm") ],
|
|
|
|
perlasm_scheme => "linux64",
|
2016-08-31 18:50:56 +00:00
|
|
|
},
|
|
|
|
"android64-x86_64" => {
|
|
|
|
inherit_from => [ "android64", asm("x86_64_asm") ],
|
|
|
|
perlasm_scheme => "elf",
|
2016-09-01 08:46:08 +00:00
|
|
|
},
|
|
|
|
"android64-mips64" => {
|
|
|
|
############################################################
|
|
|
|
# You are more than likely have to specify target processor
|
|
|
|
# on ./Configure command line. Trouble is that toolchain's
|
|
|
|
# default is MIPS64r6 (at least in r10d), but there are no
|
|
|
|
# such processors around (or they are too rare to spot one).
|
|
|
|
# Actual problem is that MIPS64r6 is binary incompatible
|
|
|
|
# with previous MIPS ISA versions, in sense that unlike
|
|
|
|
# prior versions original MIPS binary code will fail.
|
|
|
|
#
|
|
|
|
inherit_from => [ "android64", asm("mips64_asm") ],
|
|
|
|
perlasm_scheme => "64",
|
2015-04-02 21:18:10 +00:00
|
|
|
},
|
|
|
|
|
2015-03-18 15:56:38 +00:00
|
|
|
#### *BSD
|
2015-03-10 23:58:50 +00:00
|
|
|
"BSD-generic32" => {
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
# As for thread cflag. Idea is to maintain "collective" set of
|
2015-03-18 15:56:38 +00:00
|
|
|
# flags, which would cover all BSD flavors. -pthread applies
|
|
|
|
# to them all, but is treated differently. OpenBSD expands is
|
|
|
|
# as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
|
|
|
|
# expands it as -lc_r, which has to be accompanied by explicit
|
|
|
|
# -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
|
|
|
|
# expands it as -lc_r, which seems to be sufficient?
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-08-02 01:21:46 +00:00
|
|
|
cc => "cc",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
cflags => combine(picker(default => "-Wall",
|
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O3"),
|
2018-01-23 12:54:55 +00:00
|
|
|
threads("-pthread")),
|
|
|
|
cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"),
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2017-03-24 15:19:00 +00:00
|
|
|
enable => add("devcryptoeng"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "bsd-gcc-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
"BSD-generic64" => {
|
|
|
|
inherit_from => [ "BSD-generic32" ],
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
|
|
|
"BSD-x86" => {
|
|
|
|
inherit_from => [ "BSD-generic32", asm("x86_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(release => "-fomit-frame-pointer")),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_target => "bsd-shared",
|
2015-03-16 21:33:36 +00:00
|
|
|
perlasm_scheme => "a.out",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
"BSD-x86-elf" => {
|
|
|
|
inherit_from => [ "BSD-x86" ],
|
|
|
|
perlasm_scheme => "elf",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
"BSD-sparcv8" => {
|
|
|
|
inherit_from => [ "BSD-generic32", asm("sparcv8_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-mcpu=v8"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"BSD-sparc64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
|
|
|
|
# simply *happens* to work around a compiler bug in gcc 3.3.3,
|
|
|
|
# triggered by RIPEMD160 code.
|
|
|
|
inherit_from => [ "BSD-generic64", asm("sparcv9_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DB_ENDIAN -DMD32_REG_T=int"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"BSD-ia64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "BSD-generic64", asm("ia64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"BSD-x86_64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "BSD-generic64", asm("x86_64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"bsdi-elf-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-fomit-frame-pointer -O3 -Wall",
|
|
|
|
cppflags => "-DPERL5 -DL_ENDIAN",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-ldl"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "bsd-gcc-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-10 23:58:50 +00:00
|
|
|
"nextstep" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
|
|
|
cflags => "-O -Wall",
|
|
|
|
unistd => "<libc.h>",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"nextstep3.3" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
|
|
|
cflags => "-O3 -Wall",
|
|
|
|
unistd => "<libc.h>",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
# QNX
|
2015-03-10 23:58:50 +00:00
|
|
|
"qnx4" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "",
|
|
|
|
cppflags => "-DL_ENDIAN -DTERMIO",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"QNX6" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket"),
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "bsd-gcc-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"QNX6-i386" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-O2 -Wall",
|
|
|
|
cppflags => "-DL_ENDIAN",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket"),
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "bsd-gcc-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### SCO/Caldera targets.
|
|
|
|
#
|
|
|
|
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
|
|
|
|
# Now we only have blended unixware-* as it's the only one used by ./config.
|
|
|
|
# If you want to optimize for particular microarchitecture, bypass ./config
|
|
|
|
# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
|
|
|
|
# Note that not all targets include assembler support. Mostly because of
|
|
|
|
# lack of motivation to support out-of-date platforms with out-of-date
|
2017-10-10 21:55:09 +00:00
|
|
|
# compiler drivers and assemblers.
|
2015-02-24 22:40:22 +00:00
|
|
|
#
|
|
|
|
# UnixWare 2.0x fails destest with -O.
|
2015-03-10 23:58:50 +00:00
|
|
|
"unixware-2.0" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(threads("-Kthread")),
|
|
|
|
cppflags => "-DFILIO_H -DNO_STRINGS_H",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl -lresolv -lx"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "uithreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"unixware-2.1" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-O", threads("-Kthread")),
|
|
|
|
cppflags => "-DFILIO_H",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl -lresolv -lx"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "uithreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"unixware-7" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-O -Kalloca", threads("-Kthread")),
|
|
|
|
cppflags => "-DFILIO_H",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "uithreads",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf-1",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "svr5-shared",
|
|
|
|
shared_cflag => "-Kpic",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"unixware-7-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-O3 -fomit-frame-pointer -Wall"),
|
|
|
|
cppflags => add("-DL_ENDIAN -DFILIO_H",
|
|
|
|
threads("-D_REENTRANT")),
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf-1",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "gnu-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2017-10-10 21:55:09 +00:00
|
|
|
# SCO 5 - Ben Laurie says the -O breaks the SCO cc.
|
2015-03-10 23:58:50 +00:00
|
|
|
"sco5-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
|
|
|
cflags => "-belf",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf-1",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "svr3-shared",
|
|
|
|
shared_cflag => "-Kpic",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"sco5-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
|
|
|
cflags => "-O3 -fomit-frame-pointer",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "elf-1",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "svr3-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
#### IBM's AIX.
|
2016-09-03 20:03:55 +00:00
|
|
|
# Below targets assume AIX >=5. Caveat lector. If you are accustomed
|
|
|
|
# to control compilation "bitness" by setting $OBJECT_MODE environment
|
|
|
|
# variable, then you should know that in OpenSSL case it's considered
|
|
|
|
# only in ./config. Once configured, build procedure remains "deaf" to
|
|
|
|
# current value of $OBJECT_MODE.
|
2015-03-10 23:58:50 +00:00
|
|
|
"aix-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ppc32_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(debug => "-O0 -g",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
release => "-O"),
|
|
|
|
threads("-pthread")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DB_ENDIAN",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "AIX",
|
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "aix32",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "aix-shared",
|
2016-09-03 20:03:55 +00:00
|
|
|
shared_ldflag => "-shared -static-libgcc -Wl,-G",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2018-02-15 21:38:24 +00:00
|
|
|
arflags => "-X32 r",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"aix64-gcc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-maix64",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O"),
|
|
|
|
threads("-pthread")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DB_ENDIAN",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add(threads("-pthread")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "AIX",
|
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "aix64",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "aix-shared",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-shared -static-libgcc -Wl,-G",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2018-02-15 21:38:24 +00:00
|
|
|
arflags => "-X64 r",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"aix-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ppc32_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-q32 -qmaxmem=16384 -qro -qroconst",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O"),
|
2018-01-23 12:54:55 +00:00
|
|
|
threads("-qthreaded")),
|
|
|
|
cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "AIX",
|
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2016-09-03 20:03:55 +00:00
|
|
|
ex_libs => threads("-lpthreads"),
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "aix32",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "aix-shared",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-G",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2018-02-15 21:38:24 +00:00
|
|
|
arflags => "-X32 r",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"aix64-cc" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine(picker(default => "-q64 -qmaxmem=16384 -qro -qroconst",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
debug => "-O0 -g",
|
|
|
|
release => "-O"),
|
2018-01-23 12:54:55 +00:00
|
|
|
threads("-qthreaded")),
|
|
|
|
cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "AIX",
|
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2016-09-03 20:03:55 +00:00
|
|
|
ex_libs => threads("-lpthreads"),
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "aix64",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "aix-shared",
|
2017-12-04 15:31:26 +00:00
|
|
|
shared_ldflag => "-G",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2018-02-15 21:38:24 +00:00
|
|
|
arflags => "-X64 r",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
|
2015-03-10 23:58:50 +00:00
|
|
|
"BS2000-OSD" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "c89",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-O -XLLML -XLLMK -XL",
|
|
|
|
cppflags => "-DB_ENDIAN -DCHARSET_EBCDIC",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lsocket -lnsl"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "THIRTY_TWO_BIT RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "(unknown)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### Visual C targets
|
2015-02-24 22:40:22 +00:00
|
|
|
#
|
|
|
|
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
|
|
|
|
#
|
|
|
|
# Note about -wd4090, disable warning C4090. This warning returns false
|
|
|
|
# positives in some situations. Disabling it altogether masks both
|
|
|
|
# legitimate and false cases, but as we compile on multiple platforms,
|
|
|
|
# we rely on other compilers to catch legitimate cases.
|
2016-03-02 15:12:22 +00:00
|
|
|
#
|
|
|
|
# Also note that we force threads no matter what. Configuring "no-threads"
|
|
|
|
# is ignored.
|
2015-03-16 21:33:36 +00:00
|
|
|
"VC-common" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_Windows" ],
|
2015-03-16 21:33:36 +00:00
|
|
|
template => 1,
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cl",
|
2018-02-13 19:04:35 +00:00
|
|
|
cpp => '$(CC) /EP /C',
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-W3 -wd4090 -Gs0 -GF -Gy -nologo",
|
|
|
|
defines => add("OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN",
|
|
|
|
"L_ENDIAN", "_CRT_SECURE_NO_DEPRECATE",
|
|
|
|
"_WINSOCK_DEPRECATED_NO_WARNINGS",
|
|
|
|
sub { my @defs = ();
|
2016-04-12 14:12:53 +00:00
|
|
|
unless ($disabled{"zlib-dynamic"}) {
|
2016-10-24 13:03:57 +00:00
|
|
|
my $zlib =
|
|
|
|
$withargs{zlib_lib} // "ZLIB1";
|
2016-04-12 14:12:53 +00:00
|
|
|
push @defs,
|
|
|
|
quotify("perl",
|
2016-10-24 13:03:57 +00:00
|
|
|
'LIBZ="' . $zlib . '"');
|
2016-04-12 14:12:53 +00:00
|
|
|
}
|
|
|
|
return [ @defs ];
|
2018-01-23 12:54:55 +00:00
|
|
|
}),
|
2016-03-02 15:12:22 +00:00
|
|
|
coutflag => "/Fo",
|
2016-05-12 16:08:21 +00:00
|
|
|
lib_cflags => add("/Zi /Fdossl_static"),
|
|
|
|
dso_cflags => "/Zi /Fddso",
|
2016-03-02 15:12:22 +00:00
|
|
|
bin_cflags => "/Zi /Fdapp",
|
|
|
|
lflags => add("/debug"),
|
|
|
|
shared_ldflag => "/dll",
|
2016-03-02 13:10:21 +00:00
|
|
|
shared_target => "win-shared", # meaningless except it gives Configure a hint
|
2016-03-02 15:12:22 +00:00
|
|
|
thread_scheme => "winthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "win32",
|
2016-07-16 21:21:39 +00:00
|
|
|
apps_aux_src => add("win32_init.c"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2016-03-02 15:12:22 +00:00
|
|
|
"VC-noCE-common" => {
|
2016-03-18 22:31:17 +00:00
|
|
|
inherit_from => [ "VC-common" ],
|
2016-10-31 15:40:36 +00:00
|
|
|
template => 1,
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(debug =>
|
2016-03-02 15:12:22 +00:00
|
|
|
sub {
|
2016-04-06 15:33:03 +00:00
|
|
|
($disabled{shared} ? "" : "/MDd")
|
2018-01-23 12:54:55 +00:00
|
|
|
." /Od";
|
2016-03-02 15:12:22 +00:00
|
|
|
},
|
|
|
|
release =>
|
|
|
|
sub {
|
2016-04-06 15:33:03 +00:00
|
|
|
($disabled{shared} ? "" : "/MD")
|
2016-05-16 07:48:15 +00:00
|
|
|
." /O2";
|
2016-03-02 15:12:22 +00:00
|
|
|
})),
|
2018-01-23 12:54:55 +00:00
|
|
|
defines => add(picker(default => [ "UNICODE", "_UNICODE" ],
|
|
|
|
debug => [ "DEBUG", "_DEBUG" ])),
|
2016-04-06 15:33:03 +00:00
|
|
|
lib_cflags => add(sub { $disabled{shared} ? "/MT /Zl" : () }),
|
|
|
|
# Following might/should appears controversial, i.e. defining
|
|
|
|
# /MDd without evaluating $disabled{shared}. It works in
|
|
|
|
# non-shared build because static library is compiled with /Zl
|
|
|
|
# and bares no reference to specific RTL. And it works in
|
|
|
|
# shared build because multiple /MDd options are not prohibited.
|
|
|
|
# But why /MDd in static build? Well, basically this is just a
|
|
|
|
# reference point, which allows to catch eventual errors that
|
|
|
|
# would prevent those who want to wrap OpenSSL into own .DLL.
|
|
|
|
# Why not /MD in release build then? Well, some are likely to
|
|
|
|
# prefer [non-debug] openssl.exe to be free from Micorosoft RTL
|
|
|
|
# redistributable.
|
|
|
|
bin_cflags => add(picker(debug => "/MDd",
|
|
|
|
release => sub { $disabled{shared} ? "/MT" : () },
|
|
|
|
)),
|
2016-03-02 15:12:22 +00:00
|
|
|
bin_lflags => add("/subsystem:console /opt:ref"),
|
2016-04-15 05:53:17 +00:00
|
|
|
ex_libs => add(sub {
|
2016-03-02 15:12:22 +00:00
|
|
|
my @ex_libs = ();
|
|
|
|
push @ex_libs, 'ws2_32.lib' unless $disabled{sock};
|
|
|
|
push @ex_libs, 'gdi32.lib advapi32.lib crypt32.lib user32.lib';
|
|
|
|
return join(" ", @ex_libs);
|
2016-04-15 05:53:17 +00:00
|
|
|
}),
|
2016-03-02 15:12:22 +00:00
|
|
|
},
|
|
|
|
"VC-WIN64-common" => {
|
|
|
|
inherit_from => [ "VC-noCE-common" ],
|
2016-10-31 15:40:36 +00:00
|
|
|
template => 1,
|
2016-04-15 05:53:17 +00:00
|
|
|
ex_libs => add(sub {
|
2016-03-02 15:12:22 +00:00
|
|
|
my @ex_libs = ();
|
|
|
|
push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
|
|
|
|
return join(" ", @_, @ex_libs);
|
2016-04-15 05:53:17 +00:00
|
|
|
}),
|
2016-03-02 15:12:22 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
|
|
|
|
build_scheme => add("VC-W64", { separator => undef }),
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
"VC-WIN64I" => {
|
2016-03-18 22:31:17 +00:00
|
|
|
inherit_from => [ "VC-WIN64-common", asm("ia64_asm"),
|
|
|
|
sub { $disabled{shared} ? () : "ia64_uplink" } ],
|
2016-03-02 15:12:22 +00:00
|
|
|
as => "ias",
|
|
|
|
asflags => "-d debug",
|
|
|
|
asoutflag => "-o",
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "WIN64I",
|
2016-03-23 19:33:29 +00:00
|
|
|
bn_asm_src => sub { return undef unless @_;
|
|
|
|
my $r=join(" ",@_); $r=~s|bn-ia64.s|bn_asm.c|; $r; },
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "ias",
|
2016-03-23 19:33:29 +00:00
|
|
|
multilib => "-ia64",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"VC-WIN64A" => {
|
2016-03-18 22:31:17 +00:00
|
|
|
inherit_from => [ "VC-WIN64-common", asm("x86_64_asm"),
|
|
|
|
sub { $disabled{shared} ? () : "x86_64_uplink" } ],
|
2016-03-02 15:12:22 +00:00
|
|
|
as => sub { vc_win64a_info()->{as} },
|
|
|
|
asflags => sub { vc_win64a_info()->{asflags} },
|
|
|
|
asoutflag => sub { vc_win64a_info()->{asoutflag} },
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "WIN64A",
|
2016-03-02 15:12:22 +00:00
|
|
|
bn_asm_src => sub { return undef unless @_;
|
|
|
|
my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "auto",
|
2016-03-23 19:33:29 +00:00
|
|
|
multilib => "-x64",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"VC-WIN32" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# x86 Win32 target defaults to ANSI API, if you want UNICODE,
|
|
|
|
# configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
|
2016-03-18 22:31:17 +00:00
|
|
|
inherit_from => [ "VC-noCE-common", asm("x86_asm"),
|
2016-03-23 20:04:22 +00:00
|
|
|
sub { $disabled{shared} ? () : "uplink_common" } ],
|
2017-11-11 21:24:12 +00:00
|
|
|
cflags => add("-WX"),
|
2016-04-18 18:15:33 +00:00
|
|
|
as => sub { vc_win32_info()->{as} },
|
|
|
|
asflags => sub { vc_win32_info()->{asflags} },
|
|
|
|
asoutflag => sub { vc_win32_info()->{asoutflag} },
|
2016-04-15 05:53:17 +00:00
|
|
|
ex_libs => add(sub {
|
2016-03-02 15:12:22 +00:00
|
|
|
my @ex_libs = ();
|
|
|
|
# WIN32 UNICODE build gets linked with unicows.lib for
|
|
|
|
# backward compatibility with Win9x.
|
|
|
|
push @ex_libs, 'unicows.lib'
|
2018-01-26 18:56:44 +00:00
|
|
|
if (grep { $_ eq "UNICODE" } @{$user{CPPDEFINES}});
|
2016-03-02 15:12:22 +00:00
|
|
|
return join(" ", @ex_libs, @_);
|
2016-04-15 05:53:17 +00:00
|
|
|
}),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "WIN32",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
|
2016-04-19 21:22:55 +00:00
|
|
|
perlasm_scheme => sub { vc_win32_info()->{perlasm_scheme} },
|
2016-02-27 10:25:33 +00:00
|
|
|
build_scheme => add("VC-W32", { separator => undef }),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"VC-CE" => {
|
2016-03-02 15:12:22 +00:00
|
|
|
inherit_from => [ "VC-common" ],
|
|
|
|
as => "ml",
|
|
|
|
asflags => "/nologo /Cp /coff /c /Cx /Zi",
|
|
|
|
asoutflag => "/Fo",
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cl",
|
2016-03-02 15:12:22 +00:00
|
|
|
cflags =>
|
|
|
|
picker(default =>
|
2018-01-23 12:54:55 +00:00
|
|
|
combine('/W3 /WX /GF /Gy /nologo',
|
2016-03-02 15:12:22 +00:00
|
|
|
sub { vc_wince_info()->{cflags}; },
|
|
|
|
sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
|
|
|
|
? ($disabled{shared} ? " /MT" : " /MD")
|
|
|
|
: " /MC"; }),
|
2018-01-23 12:54:55 +00:00
|
|
|
debug => "/Od",
|
2016-03-02 15:12:22 +00:00
|
|
|
release => "/O1i"),
|
2018-01-28 12:26:01 +00:00
|
|
|
cppflags => sub { vc_wince_info()->{cppflags}; },
|
2018-01-23 12:54:55 +00:00
|
|
|
defines =>
|
|
|
|
picker(default => [ "UNICODE", "_UNICODE", "OPENSSL_SYS_WINCE",
|
|
|
|
"WIN32_LEAN_AND_MEAN", "L_ENDIAN", "DSO_WIN32",
|
|
|
|
"NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT" ],
|
|
|
|
debug => [ "DEBUG", "_DEBUG" ]),
|
|
|
|
includes =>
|
2018-02-08 22:26:22 +00:00
|
|
|
add(combine(sub { defined(env('WCECOMPAT'))
|
|
|
|
? '$(WCECOMPAT)/include' : (); },
|
|
|
|
sub { defined(env('PORTSDK_LIBPATH'))
|
|
|
|
? '$(PORTSDK_LIBPATH)/../../include'
|
|
|
|
: (); })),
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add(combine("/nologo /opt:ref",
|
|
|
|
sub { vc_wince_info()->{lflags}; },
|
|
|
|
sub { defined(env('PORTSDK_LIBPATH'))
|
|
|
|
? "/entry:mainCRTstartup" : (); })),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "WINCE",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
|
2016-04-15 05:53:17 +00:00
|
|
|
ex_libs => add(sub {
|
2016-03-02 15:12:22 +00:00
|
|
|
my @ex_libs = ();
|
|
|
|
push @ex_libs, 'ws2.lib' unless $disabled{sock};
|
|
|
|
push @ex_libs, 'crypt32.lib';
|
2017-11-29 16:41:10 +00:00
|
|
|
if (defined(env('WCECOMPAT'))) {
|
2016-03-02 15:12:22 +00:00
|
|
|
my $x = '$(WCECOMPAT)/lib';
|
2017-11-29 16:41:10 +00:00
|
|
|
if (-f "$x/env('TARGETCPU')/wcecompatex.lib") {
|
2016-03-02 15:12:22 +00:00
|
|
|
$x .= '/$(TARGETCPU)/wcecompatex.lib';
|
|
|
|
} else {
|
|
|
|
$x .= '/wcecompatex.lib';
|
|
|
|
}
|
|
|
|
push @ex_libs, $x;
|
|
|
|
}
|
|
|
|
push @ex_libs, '$(PORTSDK_LIBPATH)/portlib.lib'
|
2017-11-29 16:41:10 +00:00
|
|
|
if (defined(env('PORTSDK_LIBPATH')));
|
2016-03-02 15:12:22 +00:00
|
|
|
push @ex_libs, ' /nodefaultlib coredll.lib corelibc.lib'
|
2017-11-29 16:41:10 +00:00
|
|
|
if (env('TARGETCPU') eq "X86");
|
2016-03-02 15:12:22 +00:00
|
|
|
return @ex_libs;
|
2016-04-15 05:53:17 +00:00
|
|
|
}),
|
2016-02-27 10:25:33 +00:00
|
|
|
build_scheme => add("VC-WCE", { separator => undef }),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### MinGW
|
2015-03-10 23:58:50 +00:00
|
|
|
"mingw" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_asm"),
|
2016-02-22 12:52:46 +00:00
|
|
|
sub { $disabled{shared} ? () : "x86_uplink" } ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "-m32 -Wall",
|
|
|
|
debug => "-g -O0",
|
|
|
|
release => "-O3 -fomit-frame-pointer"),
|
|
|
|
cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN",
|
|
|
|
"-DUNICODE -D_UNICODE", threads("-D_MT")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "MINGW32",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "winthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "coff",
|
|
|
|
dso_scheme => "win32",
|
Big rename fest of MingW shared libraries
So far, MingW shared libraries were named like this
libeay32.dll + libeay32.dll.a
ssleay32.dll + ssleay32.dll.a
That naming scheme is antiquated, a reminicense of SSLeay. We're
therefore changing the scheme to something that's more like the rest
of OpenSSL.
There are two factors to remember:
- Windows libraries have no recorded SOvers, which means that the
shared library version must be encoded in the name. According to
some, it's unwise to encode extra periods in a Windows file name,
so we convert version number periods to underscores.
- MingW has multilib ability. However, DLLs need to reside with the
binaries that use them, so to allow both 32-bit and 64-bit DLLs to
reside in the same place, we add '-x64' in the name of the 64-bit
ones.
The resulting name scheme (for SOver 1.1) is this:
on x86:
libcrypto-1_1.dll + libcrypto.dll.a
libssl-1_1.dll + libssl.dll.a
on x86_64:
libcrypto-1_1-x64.dll + libcrypto.dll.a
libssl-1_1-x64.dll + libssl.dll.a
An observation is that the import lib is the same for both
architectures. Not to worry, though, as they will be installed in
PREFIX/lib/ for x86 and PREFIX/lib64/ for x86_64.
As a side effect, MingW got its own targets in Makefile.shared.
link_dso.mingw-shared and link_app.mingw-shared are aliases for the
corresponding cygwin-shared targets. link_shlib.mingw-shared is,
however, a target separated from the cygwin one.
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-16 19:37:28 +00:00
|
|
|
shared_target => "mingw-shared",
|
2018-01-23 12:54:55 +00:00
|
|
|
shared_cppflags => add("_WINDLL"),
|
2016-02-05 14:14:45 +00:00
|
|
|
shared_ldflag => "-static-libgcc",
|
2016-02-05 14:17:33 +00:00
|
|
|
shared_rcflag => "--target=pe-i386",
|
2016-01-30 04:45:29 +00:00
|
|
|
shared_extension => ".dll",
|
Big rename fest of MingW shared libraries
So far, MingW shared libraries were named like this
libeay32.dll + libeay32.dll.a
ssleay32.dll + ssleay32.dll.a
That naming scheme is antiquated, a reminicense of SSLeay. We're
therefore changing the scheme to something that's more like the rest
of OpenSSL.
There are two factors to remember:
- Windows libraries have no recorded SOvers, which means that the
shared library version must be encoded in the name. According to
some, it's unwise to encode extra periods in a Windows file name,
so we convert version number periods to underscores.
- MingW has multilib ability. However, DLLs need to reside with the
binaries that use them, so to allow both 32-bit and 64-bit DLLs to
reside in the same place, we add '-x64' in the name of the 64-bit
ones.
The resulting name scheme (for SOver 1.1) is this:
on x86:
libcrypto-1_1.dll + libcrypto.dll.a
libssl-1_1.dll + libssl.dll.a
on x86_64:
libcrypto-1_1-x64.dll + libcrypto.dll.a
libssl-1_1-x64.dll + libssl.dll.a
An observation is that the import lib is the same for both
architectures. Not to worry, though, as they will be installed in
PREFIX/lib/ for x86 and PREFIX/lib64/ for x86_64.
As a side effect, MingW got its own targets in Makefile.shared.
link_dso.mingw-shared and link_app.mingw-shared are aliases for the
corresponding cygwin-shared targets. link_shlib.mingw-shared is,
however, a target separated from the cygwin one.
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-16 19:37:28 +00:00
|
|
|
multilib => "",
|
2016-07-16 21:21:39 +00:00
|
|
|
apps_aux_src => add("win32_init.c"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"mingw64" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
# As for OPENSSL_USE_APPLINK. Applink makes it possible to use
|
|
|
|
# .dll compiled with one compiler with application compiled with
|
|
|
|
# another compiler. It's possible to engage Applink support in
|
|
|
|
# mingw64 build, but it's not done, because till mingw64
|
|
|
|
# supports structured exception handling, one can't seriously
|
|
|
|
# consider its binaries for using with non-mingw64 run-time
|
|
|
|
# environment. And as mingw64 is always consistent with itself,
|
|
|
|
# Applink is never engaged and can as well be omitted.
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_64_asm") ],
|
2015-03-16 21:33:36 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "-m64 -Wall",
|
|
|
|
debug => "-g -O0",
|
|
|
|
release => "-O3"),
|
|
|
|
cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN",
|
|
|
|
"-DUNICODE -D_UNICODE", threads("-D_MT")),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "MINGW64",
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "winthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "mingw64",
|
|
|
|
dso_scheme => "win32",
|
Big rename fest of MingW shared libraries
So far, MingW shared libraries were named like this
libeay32.dll + libeay32.dll.a
ssleay32.dll + ssleay32.dll.a
That naming scheme is antiquated, a reminicense of SSLeay. We're
therefore changing the scheme to something that's more like the rest
of OpenSSL.
There are two factors to remember:
- Windows libraries have no recorded SOvers, which means that the
shared library version must be encoded in the name. According to
some, it's unwise to encode extra periods in a Windows file name,
so we convert version number periods to underscores.
- MingW has multilib ability. However, DLLs need to reside with the
binaries that use them, so to allow both 32-bit and 64-bit DLLs to
reside in the same place, we add '-x64' in the name of the 64-bit
ones.
The resulting name scheme (for SOver 1.1) is this:
on x86:
libcrypto-1_1.dll + libcrypto.dll.a
libssl-1_1.dll + libssl.dll.a
on x86_64:
libcrypto-1_1-x64.dll + libcrypto.dll.a
libssl-1_1-x64.dll + libssl.dll.a
An observation is that the import lib is the same for both
architectures. Not to worry, though, as they will be installed in
PREFIX/lib/ for x86 and PREFIX/lib64/ for x86_64.
As a side effect, MingW got its own targets in Makefile.shared.
link_dso.mingw-shared and link_app.mingw-shared are aliases for the
corresponding cygwin-shared targets. link_shlib.mingw-shared is,
however, a target separated from the cygwin one.
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-16 19:37:28 +00:00
|
|
|
shared_target => "mingw-shared",
|
2018-01-23 12:54:55 +00:00
|
|
|
shared_cppflags => add("_WINDLL"),
|
2016-02-05 14:14:45 +00:00
|
|
|
shared_ldflag => "-static-libgcc",
|
2016-02-05 14:17:33 +00:00
|
|
|
shared_rcflag => "--target=pe-x86-64",
|
2016-01-30 04:45:29 +00:00
|
|
|
shared_extension => ".dll",
|
Big rename fest of MingW shared libraries
So far, MingW shared libraries were named like this
libeay32.dll + libeay32.dll.a
ssleay32.dll + ssleay32.dll.a
That naming scheme is antiquated, a reminicense of SSLeay. We're
therefore changing the scheme to something that's more like the rest
of OpenSSL.
There are two factors to remember:
- Windows libraries have no recorded SOvers, which means that the
shared library version must be encoded in the name. According to
some, it's unwise to encode extra periods in a Windows file name,
so we convert version number periods to underscores.
- MingW has multilib ability. However, DLLs need to reside with the
binaries that use them, so to allow both 32-bit and 64-bit DLLs to
reside in the same place, we add '-x64' in the name of the 64-bit
ones.
The resulting name scheme (for SOver 1.1) is this:
on x86:
libcrypto-1_1.dll + libcrypto.dll.a
libssl-1_1.dll + libssl.dll.a
on x86_64:
libcrypto-1_1-x64.dll + libcrypto.dll.a
libssl-1_1-x64.dll + libssl.dll.a
An observation is that the import lib is the same for both
architectures. Not to worry, though, as they will be installed in
PREFIX/lib/ for x86 and PREFIX/lib64/ for x86_64.
As a side effect, MingW got its own targets in Makefile.shared.
link_dso.mingw-shared and link_app.mingw-shared are aliases for the
corresponding cygwin-shared targets. link_shlib.mingw-shared is,
however, a target separated from the cygwin one.
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-16 19:37:28 +00:00
|
|
|
multilib => "64",
|
2016-07-16 21:21:39 +00:00
|
|
|
apps_aux_src => add("win32_init.c"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-09-09 02:51:17 +00:00
|
|
|
#### UEFI
|
|
|
|
"UEFI" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-09-09 02:51:17 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-O",
|
|
|
|
cppflags => "-DL_ENDIAN",
|
2015-09-09 02:51:17 +00:00
|
|
|
sys_id => "UEFI",
|
|
|
|
},
|
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### UWIN
|
2015-03-10 23:58:50 +00:00
|
|
|
"UWIN" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-O -Wall",
|
|
|
|
cppflags => "-DTERMIOS -DL_ENDIAN",
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "UWIN",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "win32",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### Cygwin
|
2016-01-17 16:48:53 +00:00
|
|
|
"Cygwin-x86" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "-Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-g -O0",
|
|
|
|
release => "-O3 -fomit-frame-pointer"),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DTERMIOS -DL_ENDIAN",
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "CYGWIN",
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
2016-03-15 14:30:43 +00:00
|
|
|
thread_scheme => "pthread",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "coff",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "cygwin-shared",
|
2018-01-23 12:54:55 +00:00
|
|
|
shared_cppflags => "-D_WINDLL",
|
2016-01-30 04:45:29 +00:00
|
|
|
shared_extension => ".dll",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"Cygwin-x86_64" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("x86_64_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "-Wall",
|
2016-03-02 18:13:26 +00:00
|
|
|
debug => "-g -O0",
|
|
|
|
release => "-O3"),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DTERMIOS -DL_ENDIAN",
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "CYGWIN",
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2016-03-15 14:30:43 +00:00
|
|
|
thread_scheme => "pthread",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "mingw64",
|
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "cygwin-shared",
|
2018-01-23 12:54:55 +00:00
|
|
|
shared_cppflags => "-D_WINDLL",
|
2016-01-30 04:45:29 +00:00
|
|
|
shared_extension => ".dll",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2016-01-17 17:03:04 +00:00
|
|
|
# Backward compatibility for those using this target
|
|
|
|
"Cygwin" => {
|
|
|
|
inherit_from => [ "Cygwin-x86" ]
|
|
|
|
},
|
|
|
|
# In case someone constructs the Cygwin target name themself
|
|
|
|
"Cygwin-i386" => {
|
|
|
|
inherit_from => [ "Cygwin-x86" ]
|
|
|
|
},
|
|
|
|
"Cygwin-i486" => {
|
|
|
|
inherit_from => [ "Cygwin-x86" ]
|
|
|
|
},
|
|
|
|
"Cygwin-i586" => {
|
|
|
|
inherit_from => [ "Cygwin-x86" ]
|
|
|
|
},
|
|
|
|
"Cygwin-i686" => {
|
|
|
|
inherit_from => [ "Cygwin-x86" ]
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
##### MacOS X (a.k.a. Darwin) setup
|
2015-03-16 21:33:36 +00:00
|
|
|
"darwin-common" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-16 21:33:36 +00:00
|
|
|
template => 1,
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "cc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => picker(default => "",
|
|
|
|
debug => "-g -O0",
|
|
|
|
release => "-O3"),
|
|
|
|
cppflags => threads("-D_REENTRANT"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "MACOSX",
|
Enhance and clear the support of linker flags
Some time ago, we had a ex_libs configuration setting that could be
divided into lflags and ex_libs. These got divided in two settings,
lflags and ex_libs, and the former was interpreted to be general
linking flags.
Unfortunately, that conclusion wasn't entirely accurate. Most of
those linking were meant to end up in a very precise position on the
linking command line, just before the spec of libraries the linking
depends on.
Back to the drawing board, we're diving things further, now having
lflags, which are linking flags that aren't depending on command line
position, plib_lflags, which are linking flags that should show up just
before the spec of libraries to depend on, and finally ex_libs, which
is the spec of extra libraries to depend on.
Also, documentation is changed in Configurations/README. This was
previously forgotten.
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
2016-02-05 10:47:14 +00:00
|
|
|
plib_lflags => "-Wl,-search_paths_first",
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_CHAR",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "osx32",
|
|
|
|
dso_scheme => "dlfcn",
|
No -fno-common for Darwin
When object files with common block symbols are added to static
libraries on Darwin, those symbols are invisible to the linker that
tries to use them. Our solution was to use -fno-common when compiling
C source.
Unfortunately, there is assembler code that defines OPENSSL_ia32cap_P
as a common block symbol, unconditionally, and in some cases, there is
no other definition. -fno-common doesn't help in this case.
However, 'ranlib -c' adds common block symbols to the index of the
static library, which makes them visible to the linker using it, and
that solves the problem we've seen.
The common conclusion is, either use -fno-common or ranlib -c on
Darwin. Since we have common block symbols unconditionally, choosing
the method for our source is easy.
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
2016-03-04 12:48:59 +00:00
|
|
|
ranlib => "ranlib -c",
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_target => "darwin-shared",
|
No -fno-common for Darwin
When object files with common block symbols are added to static
libraries on Darwin, those symbols are invisible to the linker that
tries to use them. Our solution was to use -fno-common when compiling
C source.
Unfortunately, there is assembler code that defines OPENSSL_ia32cap_P
as a common block symbol, unconditionally, and in some cases, there is
no other definition. -fno-common doesn't help in this case.
However, 'ranlib -c' adds common block symbols to the index of the
static library, which makes them visible to the linker using it, and
that solves the problem we've seen.
The common conclusion is, either use -fno-common or ranlib -c on
Darwin. Since we have common block symbols unconditionally, choosing
the method for our source is easy.
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
2016-03-04 12:48:59 +00:00
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".\$(SHLIB_VERSION_NUMBER).dylib",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2016-03-14 19:56:44 +00:00
|
|
|
# Option "freeze" such as -std=gnu9x can't negatively interfere
|
|
|
|
# with future defaults for below two targets, because MacOS X
|
|
|
|
# for PPC has no future, it was discontinued by vendor in 2009.
|
2015-03-16 21:33:36 +00:00
|
|
|
"darwin-ppc-cc" => {
|
|
|
|
inherit_from => [ "darwin-common", asm("ppc32_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2015-03-16 21:33:36 +00:00
|
|
|
perlasm_scheme => "osx32",
|
|
|
|
},
|
2015-03-10 23:58:50 +00:00
|
|
|
"darwin64-ppc-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "darwin-common", asm("ppc64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-arch ppc64 -std=gnu9x"),
|
|
|
|
cppflags => add("-DB_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "osx64",
|
|
|
|
},
|
|
|
|
"darwin-i386-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "darwin-common", asm("x86_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add(picker(default => "-arch i386",
|
2016-03-02 18:13:26 +00:00
|
|
|
release => "-fomit-frame-pointer")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "BN_LLONG RC4_INT",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "macosx",
|
|
|
|
},
|
|
|
|
"darwin64-x86_64-cc" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "darwin-common", asm("x86_64_asm") ],
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => add("-arch x86_64 -Wall"),
|
|
|
|
cppflags => add("-DL_ENDIAN"),
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "macosx",
|
|
|
|
},
|
2015-03-16 21:33:36 +00:00
|
|
|
|
|
|
|
#### iPhoneOS/iOS
|
2015-02-24 22:40:22 +00:00
|
|
|
#
|
|
|
|
# It takes three prior-set environment variables to make it work:
|
|
|
|
#
|
|
|
|
# CROSS_COMPILE=/where/toolchain/is/usr/bin/ [note ending slash]
|
|
|
|
# CROSS_TOP=/where/SDKs/are
|
|
|
|
# CROSS_SDK=iPhoneOSx.y.sdk
|
|
|
|
#
|
|
|
|
# Exact paths vary with Xcode releases, but for couple of last ones
|
|
|
|
# they would look like this:
|
|
|
|
#
|
|
|
|
# CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/
|
|
|
|
# CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer
|
2015-03-16 21:33:36 +00:00
|
|
|
# CROSS_SDK=iPhoneOS.sdk
|
2015-02-24 22:40:22 +00:00
|
|
|
#
|
2015-03-10 23:58:50 +00:00
|
|
|
"iphoneos-cross" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "darwin-common" ],
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "iOS",
|
|
|
|
},
|
2015-04-02 08:17:42 +00:00
|
|
|
"ios-cross" => {
|
|
|
|
inherit_from => [ "darwin-common", asm("armv4_asm") ],
|
|
|
|
# It should be possible to go below iOS 6 and even add -arch armv6,
|
|
|
|
# thus targeting iPhone pre-3GS, but it's assumed to be irrelevant
|
2015-04-21 07:13:27 +00:00
|
|
|
# at this point.
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => add("-arch armv7 -mios-version-min=6.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
|
2015-04-02 08:17:42 +00:00
|
|
|
sys_id => "iOS",
|
|
|
|
perlasm_scheme => "ios32",
|
|
|
|
},
|
2015-03-10 23:58:50 +00:00
|
|
|
"ios64-cross" => {
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ "darwin-common", asm("aarch64_asm") ],
|
2016-03-02 18:13:26 +00:00
|
|
|
cflags => add("-arch arm64 -mios-version-min=7.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "iOS",
|
2016-01-27 23:43:25 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "ios64",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
##### GNU Hurd
|
2015-03-10 23:58:50 +00:00
|
|
|
"hurd-x86" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-16 21:33:36 +00:00
|
|
|
inherit_from => [ asm("x86_elf_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "gcc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => combine("-O3 -fomit-frame-pointer -Wall",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
threads("-pthread")),
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => "-DL_ENDIAN",
|
2018-01-22 15:50:54 +00:00
|
|
|
ex_libs => add("-ldl", threads("-pthread")),
|
2016-01-28 00:16:38 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
dso_scheme => "dlfcn",
|
|
|
|
shared_target => "linux-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
|
|
|
##### VxWorks for various targets
|
2015-03-10 23:58:50 +00:00
|
|
|
"vxworks-ppc60x" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall",
|
|
|
|
cppflags => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32",
|
|
|
|
"_DTOOL_FAMILY=gnu -DTOOL=gnu",
|
|
|
|
"-I\$(WIND_BASE)/target/usr/h",
|
|
|
|
"-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common"),
|
|
|
|
ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-ppcgen" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall",
|
|
|
|
cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32",
|
|
|
|
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
|
|
|
|
"-I\$(WIND_BASE)/target/usr/h",
|
|
|
|
"-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon"),
|
|
|
|
ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-ppc405" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-g -msoft-float -mlongcall",
|
|
|
|
cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405",
|
|
|
|
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
|
|
|
|
"-I\$(WIND_BASE)/target/h"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-r"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-ppc750" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall \$(DEBUG_FLAG)",
|
|
|
|
cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
|
|
|
|
"-I\$(WIND_BASE)/target/h"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-r"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-ppc750-debug" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -g",
|
|
|
|
cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
|
|
|
|
"-DPEDANTIC -DDEBUG",
|
|
|
|
"-I\$(WIND_BASE)/target/h"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-r"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-ppc860" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccppc",
|
2018-01-23 12:54:55 +00:00
|
|
|
cflags => "-nostdinc -msoft-float",
|
|
|
|
cppflags => combine("-DCPU=PPC860 -DNO_STRINGS_H",
|
|
|
|
"-I\$(WIND_BASE)/target/h"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-r"),
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"vxworks-simlinux" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccpentium",
|
2018-01-23 12:54:55 +00:00
|
|
|
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",
|
|
|
|
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
|
|
|
|
"-DOPENSSL_NO_HW_PADLOCK",
|
|
|
|
"-I\$(WIND_BASE)/target/h",
|
|
|
|
"-I\$(WIND_BASE)/target/h/wrn/coreip"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-r"),
|
2015-03-10 23:58:50 +00:00
|
|
|
ranlib => "ranlibpentium",
|
|
|
|
},
|
|
|
|
"vxworks-mips" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix", asm("mips32_asm") ],
|
2015-03-10 23:58:50 +00:00
|
|
|
cc => "ccmips",
|
2018-01-23 12:54:55 +00:00
|
|
|
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",
|
|
|
|
cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
|
|
|
|
"-DCPU=MIPS32 -DNO_STRINGS_H",
|
|
|
|
"-DTOOL_FAMILY=gnu -DTOOL=gnu",
|
|
|
|
"-DOPENSSL_NO_HW_PADLOCK",
|
|
|
|
threads("-D_REENTRANT"),
|
|
|
|
"-I\$(WIND_BASE)/target/h",
|
|
|
|
"-I\$(WIND_BASE)/target/h/wrn/coreip"),
|
2015-03-10 23:58:50 +00:00
|
|
|
sys_id => "VXWORKS",
|
2018-01-08 11:28:08 +00:00
|
|
|
lflags => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"),
|
|
|
|
ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2015-03-10 23:58:50 +00:00
|
|
|
perlasm_scheme => "o32",
|
|
|
|
ranlib => "ranlibmips",
|
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2015-03-16 21:33:36 +00:00
|
|
|
#### uClinux
|
2015-03-10 23:58:50 +00:00
|
|
|
"uClinux-dist" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2017-11-29 16:41:10 +00:00
|
|
|
cc => sub { env('CC') },
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => threads("-D_REENTRANT"),
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("\$(LDLIBS)"),
|
2015-03-10 23:58:50 +00:00
|
|
|
bn_ops => "BN_LLONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2017-11-29 16:41:10 +00:00
|
|
|
dso_scheme => sub { env('LIBSSL_dlfcn') },
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_target => "linux-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2017-11-29 16:41:10 +00:00
|
|
|
ranlib => sub { env('RANLIB') },
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
|
|
|
"uClinux-dist64" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_unix" ],
|
2017-11-29 16:41:10 +00:00
|
|
|
cc => sub { env('CC') },
|
2018-01-23 12:54:55 +00:00
|
|
|
cppflags => threads("-D_REENTRANT"),
|
2016-02-27 10:37:33 +00:00
|
|
|
ex_libs => add("\$(LDLIBS)"),
|
2015-03-10 23:58:50 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2017-11-29 16:41:10 +00:00
|
|
|
dso_scheme => sub { env('LIBSSL_dlfcn') },
|
2015-03-10 23:58:50 +00:00
|
|
|
shared_target => "linux-shared",
|
|
|
|
shared_cflag => "-fPIC",
|
2017-07-19 08:13:41 +00:00
|
|
|
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
2017-11-29 16:41:10 +00:00
|
|
|
ranlib => sub { env('RANLIB') },
|
2015-03-10 23:58:50 +00:00
|
|
|
},
|
2015-02-24 22:40:22 +00:00
|
|
|
|
2016-01-30 06:14:58 +00:00
|
|
|
##### VMS
|
2018-02-14 09:34:12 +00:00
|
|
|
# Most things happen in vms-generic.
|
|
|
|
# Note that vms_info extracts the pointer size from the end of
|
|
|
|
# the target name, and will assume that anything matching /-p\d+$/
|
|
|
|
# indicates the pointer size setting for the desired target.
|
2016-01-30 06:14:58 +00:00
|
|
|
"vms-generic" => {
|
2016-02-27 10:25:33 +00:00
|
|
|
inherit_from => [ "BASE_VMS" ],
|
2016-01-30 06:14:58 +00:00
|
|
|
template => 1,
|
|
|
|
cc => "CC/DECC",
|
2018-02-13 19:04:35 +00:00
|
|
|
cpp => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:',
|
2018-02-14 09:34:12 +00:00
|
|
|
cflags =>
|
|
|
|
combine(picker(default => "/STANDARD=(ISOC94,RELAXED)/NOLIST/PREFIX=ALL",
|
|
|
|
debug => "/NOOPTIMIZE/DEBUG",
|
|
|
|
release => "/OPTIMIZE/NODEBUG"),
|
|
|
|
sub { my @warnings =
|
|
|
|
@{vms_info()->{disable_warns}};
|
|
|
|
@warnings
|
|
|
|
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
|
|
|
|
defines =>
|
|
|
|
add("OPENSSL_USE_NODELETE",
|
|
|
|
sub {
|
|
|
|
return vms_info()->{def_zlib}
|
|
|
|
? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
|
|
|
|
}),
|
2017-03-14 21:00:13 +00:00
|
|
|
lflags => picker(default => "/MAP='F\$PARSE(\".MAP\",\"\$\@\")'",
|
2017-03-15 01:52:20 +00:00
|
|
|
debug => "/DEBUG/TRACEBACK",
|
2016-03-02 18:13:26 +00:00
|
|
|
release => "/NODEBUG/NOTRACEBACK"),
|
2016-08-21 21:36:49 +00:00
|
|
|
lib_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
|
2017-04-18 20:50:10 +00:00
|
|
|
# no_inst_lib_cflags is used instead of lib_cflags by descrip.mms.tmpl
|
|
|
|
# for object files belonging to selected internal libraries
|
|
|
|
no_inst_lib_cflags => "",
|
2018-02-14 09:34:12 +00:00
|
|
|
ex_libs => add(sub { return vms_info()->{zlib} || (); }),
|
2016-01-30 06:14:58 +00:00
|
|
|
shared_target => "vms-shared",
|
2016-03-23 07:40:56 +00:00
|
|
|
dso_scheme => "vms",
|
Configure - Get rid of the special thread_cflag, replace with thread_scheme
The thread_cflag setting filled a double role, as kinda sorta an
indicator of thread scheme, and as cflags. Some configs also added
lflags and ex_libs for multithreading regardless of if threading would
be enabled or not.
Instead of this, add threading cflags among in the cflag setting,
threading lflags in the lflag setting and so on if and only if threads
are enabled (which they are by default).
Also, for configs where there are no special cflags for threading (the
VMS configs are of that kind), this makes it possible to still clearly
mention what thread scheme is used.
The exact value of thread scheme is currently ignored except when it's
"(unknown)", and thereby only serves as a flag to tell if we know how
to build for multi-threading in a particular config. Yet, the
currently used values are "(unknown)", "pthreads", "uithreads" (a.k.a
solaris threads) and "winthreads".
Reviewed-by: Andy Polyakov <appro@openssl.org>
2016-02-27 15:51:34 +00:00
|
|
|
thread_scheme => "pthreads",
|
2016-01-30 06:14:58 +00:00
|
|
|
|
2018-02-13 19:47:34 +00:00
|
|
|
as => sub { vms_info()->{as} },
|
|
|
|
asflags => sub { vms_info()->{asflags} },
|
|
|
|
asoutflag => sub { vms_info()->{asoutflag} },
|
|
|
|
perlasm_scheme => sub { vms_info()->{perlasm_scheme} },
|
|
|
|
|
2018-01-31 13:15:52 +00:00
|
|
|
apps_aux_src => "vms_term_sock.c",
|
|
|
|
apps_init_src => "vms_decc_init.c",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
|
|
|
|
2018-02-14 09:34:12 +00:00
|
|
|
# From HELP CC/POINTER_SIZE:
|
|
|
|
#
|
|
|
|
# ----------
|
|
|
|
# LONG[=ARGV] The compiler assumes 64-bit pointers. If the ARGV option to
|
|
|
|
# LONG or 64 is present, the main argument argv will be an
|
|
|
|
# array of long pointers instead of an array of short pointers.
|
|
|
|
#
|
|
|
|
# 64[=ARGV] Same as LONG.
|
|
|
|
# ----------
|
|
|
|
#
|
|
|
|
# We don't want the hassle of dealing with 32-bit pointers with argv, so
|
|
|
|
# we force it to have 64-bit pointers, see the added cflags in the -p64
|
|
|
|
# config targets below.
|
|
|
|
|
2016-01-30 06:14:58 +00:00
|
|
|
"vms-alpha" => {
|
|
|
|
inherit_from => [ "vms-generic" ],
|
2018-02-14 09:34:12 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT RC4_INT",
|
|
|
|
pointer_size => "",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
2016-03-21 19:20:15 +00:00
|
|
|
"vms-alpha-p32" => {
|
2018-02-14 09:34:12 +00:00
|
|
|
inherit_from => [ "vms-alpha" ],
|
|
|
|
cflags => add("/POINTER_SIZE=32"),
|
|
|
|
pointer_size => "32",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
2016-03-21 19:20:15 +00:00
|
|
|
"vms-alpha-p64" => {
|
2018-02-14 09:34:12 +00:00
|
|
|
inherit_from => [ "vms-alpha" ],
|
|
|
|
cflags => add("/POINTER_SIZE=64=ARGV"),
|
|
|
|
pointer_size => "64",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
|
|
|
"vms-ia64" => {
|
2018-02-13 19:51:07 +00:00
|
|
|
inherit_from => [ "vms-generic",
|
|
|
|
sub { vms_info()->{as}
|
|
|
|
? asm("ia64_asm")->() : () } ],
|
2018-02-14 09:34:12 +00:00
|
|
|
bn_ops => "SIXTY_FOUR_BIT RC4_INT",
|
|
|
|
pointer_size => "",
|
2018-02-13 19:51:07 +00:00
|
|
|
|
|
|
|
modes_asm_src => "", # Because ghash-ia64.s doesn't work on VMS
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
2016-03-21 19:20:15 +00:00
|
|
|
"vms-ia64-p32" => {
|
2018-02-14 09:34:12 +00:00
|
|
|
inherit_from => [ "vms-ia64" ],
|
|
|
|
cflags => add("/POINTER_SIZE=32"),
|
|
|
|
pointer_size => "32",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
2016-03-21 19:20:15 +00:00
|
|
|
"vms-ia64-p64" => {
|
2018-02-14 09:34:12 +00:00
|
|
|
inherit_from => [ "vms-ia64" ],
|
|
|
|
cflags => add("/POINTER_SIZE=64=ARGV"),
|
|
|
|
pointer_size => "64",
|
2016-01-30 06:14:58 +00:00
|
|
|
},
|
|
|
|
|
2015-02-24 22:40:22 +00:00
|
|
|
);
|