Update - OpenSSL 1.1.1-pre7-dev
This commit is contained in:
@@ -34,6 +34,7 @@ my %targets=(
|
||||
padlock_asm_src => "",
|
||||
chacha_asm_src => "chacha_enc.c",
|
||||
poly1305_asm_src => "",
|
||||
keccak1600_asm_src => "keccak1600.c",
|
||||
|
||||
unistd => "<unistd.h>",
|
||||
shared_target => "",
|
||||
@@ -114,7 +115,7 @@ my %targets=(
|
||||
my @defs = ();
|
||||
unless ($disabled{"zlib-dynamic"}) {
|
||||
my $zlib = $withargs{zlib_lib} // "ZLIB1";
|
||||
push @defs, quotify("perl", 'LIBZ="' . $zlib . '"');
|
||||
push @defs, 'LIBZ=' . (quotify("perl", $zlib))[0];
|
||||
}
|
||||
return [ @defs ];
|
||||
},
|
||||
@@ -226,6 +227,7 @@ my %targets=(
|
||||
padlock_asm_src => "e_padlock-x86_64.s",
|
||||
chacha_asm_src => "chacha-x86_64.s",
|
||||
poly1305_asm_src=> "poly1305-x86_64.s",
|
||||
keccak1600_asm_src => "keccak1600-x86_64.s",
|
||||
},
|
||||
ia64_asm => {
|
||||
template => 1,
|
||||
@@ -287,6 +289,7 @@ my %targets=(
|
||||
modes_asm_src => "ghash-s390x.S",
|
||||
chacha_asm_src => "chacha-s390x.S",
|
||||
poly1305_asm_src=> "poly1305-s390x.S",
|
||||
keccak1600_asm_src => "keccak1600-s390x.S",
|
||||
},
|
||||
armv4_asm => {
|
||||
template => 1,
|
||||
@@ -298,6 +301,7 @@ my %targets=(
|
||||
modes_asm_src => "ghash-armv4.S ghashv8-armx.S",
|
||||
chacha_asm_src => "chacha-armv4.S",
|
||||
poly1305_asm_src=> "poly1305-armv4.S",
|
||||
keccak1600_asm_src => "keccak1600-armv4.S",
|
||||
perlasm_scheme => "void"
|
||||
},
|
||||
aarch64_asm => {
|
||||
@@ -310,6 +314,7 @@ my %targets=(
|
||||
modes_asm_src => "ghashv8-armx.S",
|
||||
chacha_asm_src => "chacha-armv8.S",
|
||||
poly1305_asm_src=> "poly1305-armv8.S",
|
||||
keccak1600_asm_src => "keccak1600-armv8.S",
|
||||
},
|
||||
parisc11_asm => {
|
||||
template => 1,
|
||||
@@ -340,6 +345,6 @@ my %targets=(
|
||||
inherit_from => [ "ppc32_asm" ],
|
||||
template => 1,
|
||||
ec_asm_src => "ecp_nistz256.c ecp_nistz256-ppc64.s",
|
||||
|
||||
keccak1600_asm_src => "keccak1600-ppc64.s",
|
||||
},
|
||||
);
|
||||
+44
-79
@@ -452,18 +452,26 @@ my %targets = (
|
||||
# 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.
|
||||
"hpux-parisc-gcc" => {
|
||||
"hpux-common" => {
|
||||
inherit_from => [ "BASE_unix" ],
|
||||
template => 1,
|
||||
defines => add("_XOPEN_SOURCE", "_XOPEN_SOURCE_EXTENDED",
|
||||
"_HPUX_ALT_XOPEN_SOCKET_API"),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn", # overridden in 32-bit PA-RISC builds
|
||||
shared_target => "hpux-shared",
|
||||
},
|
||||
"hpux-parisc-gcc" => {
|
||||
inherit_from => [ "hpux-common" ],
|
||||
CC => "gcc",
|
||||
CFLAGS => picker(debug => "-O0 -g",
|
||||
release => "-O3"),
|
||||
cflags => add(threads("-pthread")),
|
||||
lib_cppflags => "-DB_ENDIAN -DBN_DIV2W",
|
||||
ex_libs => add("-Wl,+s -ldld", threads("-pthread")),
|
||||
bn_ops => "BN_LLONG",
|
||||
thread_scheme => "pthreads",
|
||||
lib_cppflags => add("-DBN_DIV2W"),
|
||||
ex_libs => add("-ldld", threads("-pthread")),
|
||||
bn_ops => "BN_LLONG RC4_CHAR",
|
||||
dso_scheme => "dl",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "-fPIC",
|
||||
shared_ldflag => "-shared",
|
||||
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -473,17 +481,13 @@ my %targets = (
|
||||
multilib => "/pa1.1",
|
||||
},
|
||||
"hpux64-parisc2-gcc" => {
|
||||
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("parisc20_64_asm") ],
|
||||
CC => "gcc",
|
||||
CFLAGS => combine(picker(debug => "-O0 -g",
|
||||
release => "-O3")),
|
||||
cppflags => threads("-D_REENTRANT"),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
ex_libs => add("-ldl"),
|
||||
cflags => add(threads("-pthread")),
|
||||
ex_libs => add("-ldl", threads("-pthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "-fpic",
|
||||
shared_ldflag => "-shared",
|
||||
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -492,18 +496,16 @@ my %targets = (
|
||||
|
||||
# More attempts at unified 10.X and 11.X targets for HP C compiler.
|
||||
"hpux-parisc-cc" => {
|
||||
inherit_from => [ "BASE_unix" ],
|
||||
inherit_from => [ "hpux-common" ],
|
||||
CC => "cc",
|
||||
CFLAGS => picker(debug => "+O0 +d -g",
|
||||
release => "+O3"),
|
||||
cflags => "+Optrs_strongly_typed -Ae +ESlit",
|
||||
cppflags => threads("-D_REENTRANT"),
|
||||
lib_cppflags => "-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
|
||||
ex_libs => add("-Wl,+s -ldld",threads("-lpthread")),
|
||||
lib_cppflags => add("-DBN_DIV2W -DMD32_XARRAY"),
|
||||
ex_libs => add("-ldld", threads("-lpthread")),
|
||||
bn_ops => "RC4_CHAR",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dl",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "+Z",
|
||||
shared_ldflag => "-b",
|
||||
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -514,18 +516,15 @@ my %targets = (
|
||||
multilib => "/pa1.1",
|
||||
},
|
||||
"hpux64-parisc2-cc" => {
|
||||
inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("parisc20_64_asm") ],
|
||||
CC => "cc",
|
||||
CFLAGS => picker(debug => "+O0 +d -g",
|
||||
release => "+O3") ,
|
||||
cflags => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
|
||||
cppflags => threads("-D_REENTRANT") ,
|
||||
lib_cppflags => "-DB_ENDIAN -DMD32_XARRAY",
|
||||
ex_libs => add("-ldl",threads("-lpthread")),
|
||||
lib_cppflags => add("-DMD32_XARRAY"),
|
||||
ex_libs => add("-ldl", threads("-lpthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "+Z",
|
||||
shared_ldflag => "-b",
|
||||
shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -534,36 +533,28 @@ my %targets = (
|
||||
|
||||
# HP/UX IA-64 targets
|
||||
"hpux-ia64-cc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("ia64_asm") ],
|
||||
CC => "cc",
|
||||
CFLAGS => picker(debug => "+O0 +d -g",
|
||||
release => "+O2"),
|
||||
cflags => "-Ae +DD32 +Olit=all -z",
|
||||
cppflags => add(threads("-D_REENTRANT")),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
ex_libs => add("-ldl",threads("-lpthread")),
|
||||
ex_libs => add("-ldl", threads("-lpthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "+Z",
|
||||
shared_ldflag => "-b",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
multilib => "/hpux32",
|
||||
},
|
||||
"hpux64-ia64-cc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("ia64_asm") ],
|
||||
CC => "cc",
|
||||
CFLAGS => picker(debug => "+O0 +d -g",
|
||||
release => "+O3"),
|
||||
cflags => "-Ae +DD64 +Olit=all -z",
|
||||
cppflags => threads("-D_REENTRANT"),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
ex_libs => add("-ldl", threads("-lpthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "+Z",
|
||||
shared_ldflag => "-b",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -571,34 +562,26 @@ my %targets = (
|
||||
},
|
||||
# GCC builds...
|
||||
"hpux-ia64-gcc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("ia64_asm") ],
|
||||
CC => "gcc",
|
||||
CFLAGS => picker(debug => "-O0 -g",
|
||||
release => "-O3"),
|
||||
cflags => add(threads("-pthread")),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
ex_libs => add("-ldl", threads("-pthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "-fpic",
|
||||
shared_ldflag => "-shared",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
multilib => "/hpux32",
|
||||
},
|
||||
"hpux64-ia64-gcc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
|
||||
inherit_from => [ "hpux-common", asm("ia64_asm") ],
|
||||
CC => "gcc",
|
||||
CFLAGS => picker(debug => "-O0 -g",
|
||||
release => "-O3"),
|
||||
cflags => combine("-mlp64", threads("-pthread")),
|
||||
lib_cppflags => "-DB_ENDIAN",
|
||||
ex_libs => add("-ldl", threads("-pthread")),
|
||||
bn_ops => "SIXTY_FOUR_BIT_LONG",
|
||||
thread_scheme => "pthreads",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "hpux-shared",
|
||||
shared_cflag => "-fpic",
|
||||
shared_ldflag => "-shared",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
@@ -679,6 +662,7 @@ my %targets = (
|
||||
shared_cflag => "-fPIC",
|
||||
shared_ldflag => "-Wl,-znodelete",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
enable => [ "afalgeng" ],
|
||||
},
|
||||
"linux-generic64" => {
|
||||
inherit_from => [ "linux-generic32" ],
|
||||
@@ -1039,35 +1023,6 @@ my %targets = (
|
||||
thread_scheme => "(unknown)",
|
||||
},
|
||||
|
||||
# QNX
|
||||
"qnx4" => {
|
||||
inherit_from => [ "BASE_unix" ],
|
||||
CC => "cc",
|
||||
CFLAGS => "",
|
||||
lib_cppflags => "-DL_ENDIAN -DTERMIO",
|
||||
thread_scheme => "(unknown)",
|
||||
},
|
||||
"QNX6" => {
|
||||
inherit_from => [ "BASE_unix" ],
|
||||
CC => "gcc",
|
||||
ex_libs => add("-lsocket"),
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "bsd-gcc-shared",
|
||||
shared_cflag => "-fPIC",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
},
|
||||
"QNX6-i386" => {
|
||||
inherit_from => [ "BASE_unix", asm("x86_elf_asm") ],
|
||||
CC => "gcc",
|
||||
CFLAGS => "-O2 -Wall",
|
||||
lib_cppflags => "-DL_ENDIAN",
|
||||
ex_libs => add("-lsocket"),
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "bsd-gcc-shared",
|
||||
shared_cflag => "-fPIC",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
},
|
||||
|
||||
#### SCO/Caldera targets.
|
||||
#
|
||||
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
|
||||
@@ -1175,7 +1130,8 @@ my %targets = (
|
||||
shared_target => "aix-shared",
|
||||
shared_ldflag => "-shared -static-libgcc -Wl,-G",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
arflags => "-X32 r",
|
||||
AR => add("-X32"),
|
||||
RANLIB => add("-X32"),
|
||||
},
|
||||
"aix64-gcc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
|
||||
@@ -1193,7 +1149,8 @@ my %targets = (
|
||||
shared_target => "aix-shared",
|
||||
shared_ldflag => "-shared -static-libgcc -Wl,-G",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
arflags => "-X64 r",
|
||||
AR => add("-X64"),
|
||||
RANLIB => add("-X64"),
|
||||
},
|
||||
"aix-cc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ppc32_asm") ],
|
||||
@@ -1211,9 +1168,11 @@ my %targets = (
|
||||
perlasm_scheme => "aix32",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "aix-shared",
|
||||
shared_cflag => "-qpic",
|
||||
shared_ldflag => "-G",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
arflags => "-X32 r",
|
||||
AR => add("-X32"),
|
||||
RANLIB => add("-X32"),
|
||||
},
|
||||
"aix64-cc" => {
|
||||
inherit_from => [ "BASE_unix", asm("ppc64_asm") ],
|
||||
@@ -1231,9 +1190,11 @@ my %targets = (
|
||||
perlasm_scheme => "aix64",
|
||||
dso_scheme => "dlfcn",
|
||||
shared_target => "aix-shared",
|
||||
shared_cflag => "-qpic",
|
||||
shared_ldflag => "-G",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
arflags => "-X64 r",
|
||||
AR => add("-X64"),
|
||||
RANLIB => add("-X64"),
|
||||
},
|
||||
|
||||
# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
|
||||
@@ -1307,7 +1268,8 @@ my %targets = (
|
||||
sub {
|
||||
($disabled{shared} ? "" : "/MD");
|
||||
})),
|
||||
defines => add(picker(debug => [ "DEBUG", "_DEBUG" ])),
|
||||
defines => add(picker(default => [], # works as type cast
|
||||
debug => [ "DEBUG", "_DEBUG" ])),
|
||||
lib_cflags => add(sub { $disabled{shared} ? "/MT /Zl" : () }),
|
||||
# Following might/should appears controversial, i.e. defining
|
||||
# /MDd without evaluating $disabled{shared}. It works in
|
||||
@@ -1630,6 +1592,7 @@ my %targets = (
|
||||
inherit_from => [ "darwin-common" ],
|
||||
cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
|
||||
sys_id => "iOS",
|
||||
disable => [ "engine" ],
|
||||
},
|
||||
"ios-cross" => {
|
||||
inherit_from => [ "darwin-common", asm("armv4_asm") ],
|
||||
@@ -1639,6 +1602,7 @@ my %targets = (
|
||||
cflags => add("-arch armv7 -mios-version-min=6.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
|
||||
sys_id => "iOS",
|
||||
perlasm_scheme => "ios32",
|
||||
disable => [ "engine" ],
|
||||
},
|
||||
"ios64-cross" => {
|
||||
inherit_from => [ "darwin-common", asm("aarch64_asm") ],
|
||||
@@ -1646,6 +1610,7 @@ my %targets = (
|
||||
sys_id => "iOS",
|
||||
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
|
||||
perlasm_scheme => "ios64",
|
||||
disable => [ "engine" ],
|
||||
},
|
||||
|
||||
##### GNU Hurd
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
#### Android...
|
||||
#
|
||||
# It takes *one* prior-set environment variable to make it work:
|
||||
#
|
||||
# ANDROID_NDK=/some/where/android-ndk-<ver>
|
||||
#
|
||||
# As well as PATH *adjusted* to cover ${CROSS_COMPILE}gcc and company.
|
||||
#
|
||||
# Note that it's different from original instructions that required to
|
||||
# set CROSS_SYSROOT [to $ANDROID_NDK/platforms/android-<api>/arch-<arch>]
|
||||
# and CROSS_COMPILE. CROSS_SYSROOT is still recognized [and even required
|
||||
# for some legacy targets], but if not set, it's detected and set to the
|
||||
# latest Android platform available with appointed NDK automatically. If
|
||||
# you need to target older platform, pass additional -D__ANDROID_API__=N
|
||||
# to Configure. For example, to compile for ICS on ARM with NDK 10d:
|
||||
#
|
||||
# ANDROID_NDK=/some/where/android-ndk-10d
|
||||
# PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/bin:$PATH
|
||||
# [..]./Configure android-arm -D__ANDROID_API__=14
|
||||
#
|
||||
# One can engage clang by passing CC=clang to Configure. In such case
|
||||
# PATH needs even more adjustments to cover NDK's clang itself, as well
|
||||
# as unprefixed, yet target-specific ar and ranlib [or not, if you use
|
||||
# binutils-multiarch].
|
||||
# See NOTES.ANDROID for details, and don't miss platform-specific
|
||||
# comments below...
|
||||
|
||||
{
|
||||
my $android_ndk = {};
|
||||
@@ -36,24 +16,41 @@
|
||||
|
||||
sub android_ndk {
|
||||
unless (%$android_ndk) {
|
||||
if ($now_printing =~ m|^android|) {
|
||||
return $android_ndk = { bn_ops => "BN_AUTO" };
|
||||
}
|
||||
|
||||
my $ndk = $ENV{ANDROID_NDK};
|
||||
die "\$ANDROID_NDK is not defined" if (!$ndk);
|
||||
die "\$ANDROID_NDK=$ndk is invalid" if (!-d "$ndk/platforms");
|
||||
|
||||
my $ndkver = undef;
|
||||
|
||||
if (open my $fh, "<$ndk/source.properties") {
|
||||
local $_;
|
||||
while(<$fh>) {
|
||||
if (m|Pkg\.Revision\s*=\s*([0-9]+)|) {
|
||||
$ndkver = $1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
|
||||
my $sysroot;
|
||||
|
||||
if (!($sysroot = $ENV{CROSS_SYSROOT})) {
|
||||
my $api = "*";
|
||||
|
||||
# see if user passed -D__ANDROID_API__=N
|
||||
foreach (@{$useradd{CPPDEFINES}}) {
|
||||
foreach (@{$useradd{CPPDEFINES}}, @{$user{CPPFLAGS}}) {
|
||||
if (m|__ANDROID_API__=([0-9]+)|) {
|
||||
$api = $1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
# list available platforms [numerically]
|
||||
# list available platforms (numerically)
|
||||
my @platforms = sort { $a =~ m/-([0-9]+)$/; my $aa = $1;
|
||||
$b =~ m/-([0-9]+)$/; $aa <=> $1;
|
||||
} glob("$ndk/platforms/android-$api");
|
||||
@@ -68,20 +65,27 @@
|
||||
my ($api, $arch) = ($1, $2);
|
||||
|
||||
my $triarch = $triplet{$arch};
|
||||
my $cflags = "-Wa,--noexecstack";
|
||||
my $cflags;
|
||||
my $cppflags;
|
||||
|
||||
# see if user passed CC=clang
|
||||
if ($user{CC} eq "clang") {
|
||||
if (which("clang") !~ m|^$ndk/.*/prebuilt/([^/]+)/|) {
|
||||
die "no NDK clang on \$PATH";
|
||||
}
|
||||
# see if there is NDK clang on $PATH
|
||||
if (which("clang") =~ m|^$ndk/.*/prebuilt/([^/]+)/|) {
|
||||
my $host=$1;
|
||||
# harmonize with gcc default
|
||||
(my $tridefault = $triarch) =~ s|^arm-|armv5te-|;
|
||||
$cflags .= " -target $tridefault -gcc-toolchain "
|
||||
. "\$(ANDROID_NDK)/toolchains/$triarch-4.9/prebuilt/$1";
|
||||
my $arm = $ndkver > 16 ? "armv7a" : "armv5te";
|
||||
(my $tridefault = $triarch) =~ s/^arm-/$arm-/;
|
||||
(my $tritools = $triarch) =~ s/(?:x|i6)86(_64)?-.*/x86$1/;
|
||||
$cflags .= " -target $tridefault "
|
||||
. "-gcc-toolchain \$(ANDROID_NDK)/toolchains"
|
||||
. "/$tritools-4.9/prebuilt/$host";
|
||||
$user{CC} = "clang" if ($user{CC} !~ m|clang|);
|
||||
$user{CROSS_COMPILE} = undef;
|
||||
} elsif ($user{CC} eq "clang") {
|
||||
die "no NDK clang on \$PATH";
|
||||
} else {
|
||||
if (which("$triarch-gcc") !~ m|^$ndk/.*/prebuilt/([^/]+)/|) {
|
||||
die "no NDK $triarch-gcc on \$PATH";
|
||||
}
|
||||
$cflags .= " -mandroid";
|
||||
$user{CROSS_COMPILE} = "$triarch-";
|
||||
}
|
||||
@@ -128,6 +132,7 @@ my %targets = (
|
||||
cxxflags => add(sub { android_ndk()->{cflags} }),
|
||||
bn_ops => sub { android_ndk()->{bn_ops} },
|
||||
bin_cflags => "-pie",
|
||||
enable => [ ],
|
||||
},
|
||||
"android-arm" => {
|
||||
################################################################
|
||||
@@ -138,7 +143,7 @@ my %targets = (
|
||||
# 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.]
|
||||
# (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
|
||||
@@ -151,20 +156,24 @@ my %targets = (
|
||||
# in order to build "universal" binary and allow OpenSSL take
|
||||
# advantage of NEON when it's available.
|
||||
#
|
||||
# Keep in mind that [just like with linux-armv4] we rely on
|
||||
# Keep in mind that (just like with linux-armv4) we rely on
|
||||
# compiler defaults, which is not necessarily what you had
|
||||
# in mind, in which case you would have to pass additional
|
||||
# -march and/or -mfloat-abi flags. NDK defaults to armv5te.
|
||||
# Newer NDK versions reportedly require additional -latomic.
|
||||
#
|
||||
inherit_from => [ "android", asm("armv4_asm") ],
|
||||
bn_ops => add("RC4_CHAR"),
|
||||
},
|
||||
"android-arm64" => {
|
||||
inherit_from => [ "android", asm("aarch64_asm") ],
|
||||
bn_ops => add("RC4_CHAR"),
|
||||
perlasm_scheme => "linux64",
|
||||
},
|
||||
|
||||
"android-mips" => {
|
||||
inherit_from => [ "android", asm("mips32_asm") ],
|
||||
bn_ops => add("RC4_CHAR"),
|
||||
perlasm_scheme => "o32",
|
||||
},
|
||||
"android-mips64" => {
|
||||
@@ -178,6 +187,7 @@ my %targets = (
|
||||
# prior versions original MIPS binary code will fail.
|
||||
#
|
||||
inherit_from => [ "android", asm("mips64_asm") ],
|
||||
bn_ops => add("RC4_CHAR"),
|
||||
perlasm_scheme => "64",
|
||||
},
|
||||
|
||||
@@ -194,7 +204,7 @@ my %targets = (
|
||||
},
|
||||
|
||||
####################################################################
|
||||
# Backward compatible targets, [might] requre $CROSS_SYSROOT
|
||||
# Backward compatible targets, (might) requre $CROSS_SYSROOT
|
||||
#
|
||||
"android-armeabi" => {
|
||||
inherit_from => [ "android-arm" ],
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
# Mobile[?] Windows editions. It's a set up "umbrella" libraries that
|
||||
# export subset of Win32 API that are common to all Windows 10 devices.
|
||||
#
|
||||
# TODO: drop onecore_downlevel.lib.
|
||||
# OneCore Configuration temporarly dedicated for console applications
|
||||
# due to disabled event logging, which is incompatible with one core.
|
||||
# Error messages are provided via standard error only.
|
||||
# TODO: extend error handling to use ETW based eventing
|
||||
# (Or rework whole error messaging)
|
||||
|
||||
my %targets = (
|
||||
"VC-WIN32-ONECORE" => {
|
||||
@@ -13,12 +17,14 @@ my %targets = (
|
||||
# hidden reference to kernel32.lib, but we don't actually want
|
||||
# it in "onecore" build.
|
||||
lflags => add("/NODEFAULTLIB:kernel32.lib"),
|
||||
ex_libs => "onecore.lib onecore_downlevel.lib",
|
||||
defines => add("OPENSSL_SYS_WIN_CORE"),
|
||||
ex_libs => "onecore.lib",
|
||||
},
|
||||
"VC-WIN64A-ONECORE" => {
|
||||
inherit_from => [ "VC-WIN64A" ],
|
||||
lflags => add("/NODEFAULTLIB:kernel32.lib"),
|
||||
ex_libs => "onecore.lib onecore_downlevel.lib",
|
||||
defines => add("OPENSSL_SYS_WIN_CORE"),
|
||||
ex_libs => "onecore.lib",
|
||||
},
|
||||
|
||||
# Windows on ARM targets. ARM compilers are additional components in
|
||||
@@ -39,18 +45,20 @@ my %targets = (
|
||||
|
||||
"VC-WIN32-ARM" => {
|
||||
inherit_from => [ "VC-noCE-common" ],
|
||||
defines => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE"),
|
||||
defines => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE",
|
||||
"OPENSSL_SYS_WIN_CORE"),
|
||||
bn_ops => "BN_LLONG RC4_CHAR EXPORT_VAR_AS_FN",
|
||||
lflags => add("/NODEFAULTLIB:kernel32.lib"),
|
||||
ex_libs => "onecore.lib onecore_downlevel.lib",
|
||||
ex_libs => "onecore.lib",
|
||||
multilib => "-arm",
|
||||
},
|
||||
"VC-WIN64-ARM" => {
|
||||
inherit_from => [ "VC-noCE-common" ],
|
||||
defines => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE"),
|
||||
defines => add("_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE",
|
||||
"OPENSSL_SYS_WIN_CORE"),
|
||||
bn_ops => "SIXTY_FOUR_BIT RC4_CHAR EXPORT_VAR_AS_FN",
|
||||
lflags => add("/NODEFAULTLIB:kernel32.lib"),
|
||||
ex_libs => "onecore.lib onecore_downlevel.lib",
|
||||
ex_libs => "onecore.lib",
|
||||
multilib => "-arm64",
|
||||
},
|
||||
);
|
||||
@@ -79,12 +79,6 @@ my %targets = (
|
||||
shared_cflag => "-fPIC",
|
||||
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
|
||||
},
|
||||
"dist" => {
|
||||
inherit_from => [ 'BASE_unix' ],
|
||||
CC => "cc",
|
||||
CFLAGS => "-O",
|
||||
thread_scheme => "(unknown)",
|
||||
},
|
||||
"debug-test-64-clang" => {
|
||||
inherit_from => [ 'BASE_unix', "x86_64_asm" ],
|
||||
cc => "clang",
|
||||
@@ -86,6 +86,8 @@ In each table entry, the following keys are significant:
|
||||
shared libraries or DSOs [4].
|
||||
ex_libs => Extra libraries that are needed when
|
||||
linking shared libraries, DSOs or programs.
|
||||
The value is also assigned to Libs.private
|
||||
in $(libdir)/pkgconfig/libcrypto.pc.
|
||||
|
||||
shared_cppflags => Extra C preprocessor flags used when
|
||||
processing C files for shared libraries.
|
||||
@@ -163,7 +165,7 @@ In each table entry, the following keys are significant:
|
||||
that use dlopen() et al but do not have
|
||||
fcntl.h), "DL" (shl_load() et al), "WIN32"
|
||||
and "VMS".
|
||||
perlasm_scheme => The perlasm method used to created the
|
||||
perlasm_scheme => The perlasm method used to create the
|
||||
assembler files used when compiling with
|
||||
assembler implementations.
|
||||
shared_target => The shared library building method used.
|
||||
@@ -427,7 +429,7 @@ It's also possible to depend on static libraries explicitly:
|
||||
|
||||
This should be rarely used, and care should be taken to make sure it's
|
||||
only used when supported. For example, native Windows build doesn't
|
||||
support build static libraries and DLLs at the same time, so using
|
||||
support building static libraries and DLLs at the same time, so using
|
||||
static libraries on Windows can only be done when configured
|
||||
'no-shared'.
|
||||
|
||||
@@ -443,7 +445,7 @@ library:
|
||||
|
||||
RENAME[libfoo]=libbar
|
||||
|
||||
That lines has "libfoo" get renamed to "libbar". While it makes no
|
||||
That line has "libfoo" renamed to "libbar". While it makes no
|
||||
sense at all to just have a rename like that (why not just use
|
||||
"libbar" everywhere?), it does make sense when it can be used
|
||||
conditionally. See a little further below for an example.
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{- # -*- Mode: perl -*-
|
||||
|
||||
# Commonly used list of generated files
|
||||
# The reason for the complexity is that the build.info files provide
|
||||
# GENERATE rules for *all* platforms without discrimination, while the
|
||||
# build files only want those for a particular build. Therefore, we
|
||||
# need to extrapolate exactly what we need to generate. The way to do
|
||||
# that is to extract all possible source files from diverse tables and
|
||||
# filter out all that are not generated
|
||||
my %generatables =
|
||||
map { $_ => 1 }
|
||||
( # The sources of stuff may be generated
|
||||
( map { @{$unified_info{sources}->{$_}} }
|
||||
keys %{$unified_info{sources}} ),
|
||||
$disabled{shared}
|
||||
? ()
|
||||
: ( map { @{$unified_info{shared_sources}->{$_}} }
|
||||
keys %{$unified_info{shared_sources}} ),
|
||||
# Things we explicitely depend on are usually generated
|
||||
( map { $_ eq "" ? () : @{$unified_info{depends}->{$_}} }
|
||||
keys %{$unified_info{depends}} ));
|
||||
our @generated =
|
||||
sort ( ( grep { defined $unified_info{generate}->{$_} }
|
||||
sort keys %generatables ),
|
||||
# Scripts are assumed to be generated, so add thhem too
|
||||
( grep { defined $unified_info{sources}->{$_} }
|
||||
@{$unified_info{scripts}} ) );
|
||||
|
||||
# Avoid strange output
|
||||
"";
|
||||
-}
|
||||
@@ -3,6 +3,7 @@
|
||||
## {- join("\n## ", @autowarntext) -}
|
||||
{-
|
||||
use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/;
|
||||
use File::Basename;
|
||||
|
||||
# Our prefix, claimed when speaking with the VSI folks Tuesday
|
||||
# January 26th 2016
|
||||
@@ -54,11 +55,6 @@
|
||||
our @install_shlibs =
|
||||
map { $unified_info{sharednames}->{$_} || () }
|
||||
grep(!/\.a$/, @{$unified_info{install}->{libraries}});
|
||||
our @generated = ( ( map { (my $x = $_) =~ s|\.[sS]$|\.asm|; $x }
|
||||
grep { defined $unified_info{generate}->{$_} }
|
||||
map { @{$unified_info{sources}->{$_}} }
|
||||
grep { /\.o$/ } keys %{$unified_info{sources}} ),
|
||||
( grep { /\.h$/ } keys %{$unified_info{generate}} ) );
|
||||
|
||||
# This is a horrible hack, but is needed because recursive inclusion of files
|
||||
# in different directories does not work well with HP C.
|
||||
@@ -135,7 +131,9 @@ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
|
||||
join(", ", map { "-\n\t".$_ } @deps); -}
|
||||
{- output_on() if $disabled{makedepend}; "" -}
|
||||
GENERATED_MANDATORY={- join(", ", map { "-\n\t".$_ } @{$unified_info{depends}->{""}} ) -}
|
||||
GENERATED={- join(", ", map { "-\n\t".$_ } @generated) -}
|
||||
GENERATED={- # common0.tmpl provides @generated
|
||||
join(", ", map { (my $x = $_) =~ s|\.[sS]$|.asm|; "-\n\t".$x }
|
||||
@generated) -}
|
||||
|
||||
INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @install_libs) -}
|
||||
INSTALL_SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @install_shlibs) -}
|
||||
@@ -417,6 +415,11 @@ build_apps build_tests : build_programs
|
||||
# Convenience target to prebuild all generated files, not just the mandatory
|
||||
# ones
|
||||
build_all_generated : $(GENERATED_MANDATORY) $(GENERATED)
|
||||
@ ! {- output_off() if $disabled{makedepend}; "" -}
|
||||
@ WRITE SYS$OUTPUT "Warning: consider configuring with no-makedepend, because if"
|
||||
@ WRITE SYS$OUTPUT " target system doesn't have $(PERL),"
|
||||
@ WRITE SYS$OUTPUT " then make will fail..."
|
||||
@ ! {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
test : tests
|
||||
{- dependmagic('tests'); -} : build_programs_nodep, build_engines_nodep
|
||||
@@ -488,6 +491,7 @@ clean : libclean
|
||||
{- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{programs}}) || "@ !" -}
|
||||
{- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{engines}}) || "@ !" -}
|
||||
{- join("\n\t", map { "- DELETE $_;*" } @{$unified_info{scripts}}) || "@ !" -}
|
||||
{- join("\n\t", map { "- DELETE $_;*" } @{$unified_info{depends}->{""}}) || "@ !" -}
|
||||
{- join("\n\t", map { "- DELETE $_;*" } @generated) || "@ !" -}
|
||||
- DELETE [...]*.MAP;*
|
||||
- DELETE [...]*.D;*
|
||||
@@ -504,7 +508,7 @@ distclean : clean
|
||||
depend : descrip.mms
|
||||
descrip.mms : FORCE
|
||||
@ ! {- output_off() if $disabled{makedepend}; "" -}
|
||||
@ $(PERL) {- sourcefile("util", "add-depends.pl") -}
|
||||
@ $(PERL) {- sourcefile("util", "add-depends.pl") -} "VMS C"
|
||||
@ ! {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
# Install helper targets #############################################
|
||||
@@ -877,9 +881,9 @@ EOF
|
||||
my $incs_on = join("\n\t\@ ", @{$incs_cmds[0]}) || '!';
|
||||
my $incs_off = join("\n\t\@ ", @{$incs_cmds[1]}) || '!';
|
||||
my $depbuild = $disabled{makedepend} ? ""
|
||||
: " /MMS=(FILE=${objd}${objn}.tmp-D,TARGET=$obj.OBJ)";
|
||||
: " /MMS=(FILE=${objd}${objn}.D,TARGET=$obj.OBJ)";
|
||||
|
||||
return <<"EOF"
|
||||
return <<"EOF";
|
||||
$obj.OBJ : $deps
|
||||
${before}
|
||||
SET DEFAULT $forward
|
||||
@@ -890,12 +894,6 @@ $obj.OBJ : $deps
|
||||
${after}
|
||||
- PURGE $obj.OBJ
|
||||
EOF
|
||||
. ($disabled{makedepend} ? "" : <<"EOF"
|
||||
\@ PIPE ( \$(PERL) -e "use File::Compare qw/compare_text/; my \$x = compare_text(""$obj.D"",""$obj.tmp-D""); exit(0x10000000 + (\$x == 0));" || -
|
||||
RENAME $obj.tmp-D $obj.d )
|
||||
\@ IF F\$SEARCH("$obj.tmp-D") .NES. "" THEN DELETE $obj.tmp-D;*
|
||||
EOF
|
||||
);
|
||||
}
|
||||
sub libobj2shlib {
|
||||
my %args = @_;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
## -*- mode: perl; -*-
|
||||
## Build configuration targets for openssl-team members
|
||||
|
||||
# This is to support 'make dist'
|
||||
my %targets = (
|
||||
"dist" => {
|
||||
inherit_from => [ 'BASE_unix' ],
|
||||
CC => "cc",
|
||||
CFLAGS => "-O",
|
||||
thread_scheme => "(unknown)",
|
||||
},
|
||||
);
|
||||
@@ -12,6 +12,7 @@
|
||||
our $shlibextsimple = $target{shared_extension_simple} || ".so";
|
||||
our $shlibextimport = $target{shared_import_extension} || "";
|
||||
our $dsoext = $target{dso_extension} || ".so";
|
||||
our $makedepprog = $disabled{makedepend} ? undef : $config{makedepprog};
|
||||
|
||||
sub windowsdll { $config{target} =~ /^(?:Cygwin|mingw)/ }
|
||||
|
||||
@@ -105,12 +106,9 @@ DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
|
||||
grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
|
||||
keys %{$unified_info{sources}}); -}
|
||||
{- output_on() if $disabled{makedepend}; "" -}
|
||||
GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}} ) -}
|
||||
GENERATED={- join(" ",
|
||||
( grep { defined $unified_info{generate}->{$_} }
|
||||
map { @{$unified_info{sources}->{$_}} }
|
||||
grep { /\.o$/ } keys %{$unified_info{sources}} ),
|
||||
( grep { /\.h$/ } keys %{$unified_info{generate}} )) -}
|
||||
GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}}) -}
|
||||
GENERATED={- # common0.tmpl provides @generated
|
||||
join(" ", @generated ) -}
|
||||
|
||||
INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -}
|
||||
INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -}
|
||||
@@ -355,6 +353,11 @@ build_apps build_tests: build_programs
|
||||
# Convenience target to prebuild all generated files, not just the mandatory
|
||||
# ones
|
||||
build_all_generated: $(GENERATED_MANDATORY) $(GENERATED)
|
||||
@ : {- output_off() if $disabled{makedepend}; "" -}
|
||||
@echo "Warning: consider configuring with no-makedepend, because if"
|
||||
@echo " target system doesn't have $(PERL),"
|
||||
@echo " then make will fail..."
|
||||
@ : {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
test: tests
|
||||
{- dependmagic('tests'); -}: build_programs_nodep build_engines_nodep link-utils
|
||||
@@ -366,7 +369,7 @@ test: tests
|
||||
RESULT_D=test-runs \
|
||||
PERL="$(PERL)" \
|
||||
EXE_EXT={- $exeext -} \
|
||||
OPENSSL_ENGINES=`cd ../$(BLDDIR)/engines; pwd` \
|
||||
OPENSSL_ENGINES=`cd ../$(BLDDIR)/engines 2>/dev/null && pwd` \
|
||||
OPENSSL_DEBUG_MEMORY=on \
|
||||
$(PERL) ../$(SRCDIR)/test/run_tests.pl $(TESTS) )
|
||||
@ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
|
||||
@@ -387,9 +390,13 @@ uninstall: uninstall_docs uninstall_sw
|
||||
|
||||
libclean:
|
||||
@set -e; for s in $(SHLIB_INFO); do \
|
||||
if [ "$$s" = ";" ]; then continue; fi; \
|
||||
s1=`echo "$$s" | cut -f1 -d";"`; \
|
||||
s2=`echo "$$s" | cut -f2 -d";"`; \
|
||||
$(ECHO) $(RM) $$s1; \
|
||||
$(ECHO) $(RM) $$s1; {- output_off() unless windowsdll(); "" -}\
|
||||
$(RM) apps/$$s1; \
|
||||
$(RM) test/$$s1; \
|
||||
$(RM) fuzz/$$s1; {- output_on() unless windowsdll(); "" -}\
|
||||
$(RM) $$s1; \
|
||||
if [ "$$s1" != "$$s2" ]; then \
|
||||
$(ECHO) $(RM) $$s2; \
|
||||
@@ -401,7 +408,7 @@ libclean:
|
||||
|
||||
clean: libclean
|
||||
$(RM) $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
|
||||
$(RM) $(GENERATED)
|
||||
$(RM) $(GENERATED_MANDATORY) $(GENERATED)
|
||||
-$(RM) `find . -name '*{- $depext -}' -a \! -path "./.git/*"`
|
||||
-$(RM) `find . -name '*{- $objext -}' -a \! -path "./.git/*"`
|
||||
$(RM) core
|
||||
@@ -419,7 +426,9 @@ distclean: clean
|
||||
# concatenate only if that is true.
|
||||
depend:
|
||||
@: {- output_off() if $disabled{makedepend}; "" -}
|
||||
@$(PERL) $(SRCDIR)/util/add-depends.pl
|
||||
@$(PERL) $(SRCDIR)/util/add-depends.pl {-
|
||||
defined $makedepprog && $makedepprog =~ /\/makedepend/
|
||||
? 'makedepend' : 'gcc' -}
|
||||
@: {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
# Install helper targets #############################################
|
||||
@@ -788,7 +797,7 @@ tar:
|
||||
mkdir -p $$TMPDIR/$$DISTDIR; \
|
||||
(cd $(SRCDIR); \
|
||||
excl_re=`git submodule status | sed -e 's/^.//' | cut -d' ' -f2`; \
|
||||
excl_re="^(fuzz/corpora|`echo $$excl_re | sed -e 's/ /$$|/g'`\$$)"; \
|
||||
excl_re="^(fuzz/corpora|Configurations/.*\.norelease\.conf|`echo $$excl_re | sed -e 's/ /$$|/g'`\$$)"; \
|
||||
echo "$$excl_re"; \
|
||||
git ls-tree -r --name-only --full-tree HEAD \
|
||||
| egrep -v "$$excl_re" \
|
||||
@@ -951,7 +960,7 @@ EOF
|
||||
}
|
||||
return <<"EOF";
|
||||
$args{src}: $args{generator}->[0] $deps
|
||||
\$(CPP) $incs $cppflags $args{generator}->[0] | \\
|
||||
\$(CC) $incs $cppflags -E $args{generator}->[0] | \\
|
||||
\$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@
|
||||
EOF
|
||||
}
|
||||
@@ -970,12 +979,10 @@ EOF
|
||||
my $cmd;
|
||||
my $cmdflags;
|
||||
my $cmdcompile;
|
||||
my $makedepprog = $disabled{makedepend} ? undef : $config{makedepprog};
|
||||
if (grep /\.rc$/, @srcs) {
|
||||
$cmd = '$(RC)';
|
||||
$cmdflags = '$(RCFLAGS)';
|
||||
$cmdcompile = '';
|
||||
$makedepprog = undef;
|
||||
} elsif (grep /\.(cc|cpp)$/, @srcs) {
|
||||
$cmd = '$(CXX)';
|
||||
$cmdcompile = ' -c';
|
||||
@@ -1001,20 +1008,17 @@ $obj$objext: $deps
|
||||
$cmd $cmdflags -c -o \$\@ $srcs
|
||||
EOF
|
||||
} elsif (grep /\.S$/, @srcs) {
|
||||
# In case one wonders why not just $(CC) -c file.S. While it
|
||||
# does work with contemporary compilers, there are some legacy
|
||||
# ones that get it wrong. Hence the elaborate scheme... We
|
||||
# don't care to maintain dependecy lists, because dependency
|
||||
# is rather weak, at most one header file that lists constants
|
||||
# which are assigned in ascending order.
|
||||
# Originally there was mutli-step rule with $(CC) -E file.S
|
||||
# followed by $(CC) -c file.s. It compensated for one of
|
||||
# legacy platform compiler's inability to handle .S files.
|
||||
# The platform is long discontinued by vendor so there is
|
||||
# hardly a point to drag it along...
|
||||
$recipe .= <<"EOF";
|
||||
$obj$objext: $deps
|
||||
( trap "rm -f \$@.*" INT 0; \\
|
||||
\$(CPP) $incs $cmdflags $srcs | \\
|
||||
\$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@.s && \\
|
||||
$cmd $cmdflags -c -o \$\@ \$@.s )
|
||||
$cmd $incs $cmdflags -c -o \$\@ $srcs
|
||||
EOF
|
||||
} elsif (defined $makedepprog && $makedepprog !~ /\/makedepend/) {
|
||||
} elsif (defined $makedepprog && $makedepprog !~ /\/makedepend/
|
||||
&& !grep /\.rc$/, @srcs) {
|
||||
$recipe .= <<"EOF";
|
||||
$obj$objext: $deps
|
||||
$cmd $incs $cmdflags -MMD -MF $obj$depext.tmp -MT \$\@ -c -o \$\@ $srcs
|
||||
@@ -1032,14 +1036,8 @@ $obj$objext: $deps
|
||||
EOF
|
||||
if (defined $makedepprog && $makedepprog =~ /\/makedepend/) {
|
||||
$recipe .= <<"EOF";
|
||||
-\$(MAKEDEPEND) -f- -o"|\$\@" -- $incs $cmdflags -- $srcs \\
|
||||
>$obj$depext.tmp 2>/dev/null
|
||||
-\$(PERL) -i -pe 's/^.*\\|//; s/ \\/(\\\\.|[^ ])*//; \$\$_ = undef if (/: *\$\$/ || /^(#.*| *)\$\$/); \$\$_.="\\n" unless !defined(\$\$_) or /\\R\$\$/g;' $obj$depext.tmp
|
||||
\@if cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\
|
||||
rm -f $obj$depext.tmp; \\
|
||||
else \\
|
||||
mv $obj$depext.tmp $obj$depext; \\
|
||||
fi
|
||||
\$(MAKEDEPEND) -f- -Y -- $incs $cmdflags -- $srcs 2>/dev/null \\
|
||||
> $obj$depext
|
||||
EOF
|
||||
}
|
||||
}
|
||||
@@ -1064,10 +1062,10 @@ EOF
|
||||
my $linklibs = join("", map { my $f = basename($_);
|
||||
(my $l = $f) =~ s/^lib//;
|
||||
" -l$l" } @{$args{deps}});
|
||||
my @objs = map { (my $x = $_) =~ s|\.o$|$objext|; $x }
|
||||
grep { $_ =~ m|\.o$| }
|
||||
my @objs = map { (my $x = $_) =~ s|\.o$||; "$x$objext" }
|
||||
grep { $_ !~ m/\.(?:def|map)$/ }
|
||||
@{$args{objs}};
|
||||
my @defs = grep { $_ =~ /\.(def|map)$/ } @{$args{objs}};
|
||||
my @defs = grep { $_ =~ /\.(?:def|map)$/ } @{$args{objs}};
|
||||
my @deps = compute_lib_depends(@{$args{deps}});
|
||||
die "More than one exported symbol map" if scalar @defs > 1;
|
||||
my $objs = join(" ", @objs);
|
||||
@@ -1126,7 +1124,9 @@ EOF
|
||||
my $linklibs = join("", map { my $f = basename($_);
|
||||
(my $l = $f) =~ s/^lib//;
|
||||
" -l$l" } @{$args{deps}});
|
||||
my @objs = map { (my $x = $_) =~ s|\.o$|$objext|; $x } @{$args{objs}};
|
||||
my @objs = map { (my $x = $_) =~ s|\.o$||; "$x$objext" }
|
||||
grep { $_ !~ m/\.(?:def|map)$/ }
|
||||
@{$args{objs}};
|
||||
my @deps = compute_lib_depends(@{$args{deps}});
|
||||
my $objs = join(" ", @objs);
|
||||
my $deps = join(" ", @deps);
|
||||
@@ -1154,7 +1154,7 @@ EOF
|
||||
my $bin = $args{bin};
|
||||
my $bind = dirname($bin);
|
||||
my $binn = basename($bin);
|
||||
my $objs = join(" ", map { (my $x = $_) =~ s|\.o$|$objext|; $x }
|
||||
my $objs = join(" ", map { (my $x = $_) =~ s|\.o$||; "$x$objext" }
|
||||
@{$args{objs}});
|
||||
my $deps = join(" ",compute_lib_depends(@{$args{deps}}));
|
||||
my @linkdirs = ();
|
||||
|
||||
@@ -88,12 +88,9 @@ DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
|
||||
keys %{$unified_info{sources}}); -}
|
||||
{- output_on() if $disabled{makedepend}; "" -}
|
||||
GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}} ) -}
|
||||
GENERATED={- join(" ",
|
||||
( map { (my $x = $_) =~ s|\.[sS]$|\.asm|; $x }
|
||||
grep { defined $unified_info{generate}->{$_} }
|
||||
map { @{$unified_info{sources}->{$_}} }
|
||||
grep { /\.o$/ } keys %{$unified_info{sources}} ),
|
||||
( grep { /\.h$/ } keys %{$unified_info{generate}} )) -}
|
||||
GENERATED={- # common0.tmpl provides @generated
|
||||
join(" ", map { (my $x = $_) =~ s|\.[sS]$|.asm|; $x }
|
||||
@generated) -}
|
||||
|
||||
INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -}
|
||||
INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -}
|
||||
@@ -207,10 +204,10 @@ CNF_ASFLAGS={- join(' ', $target{asflags} || (),
|
||||
@{$config{asflags}}) -}
|
||||
CNF_CPPFLAGS={- our $cppfags2 =
|
||||
join(' ', $target{cppflags} || (),
|
||||
(map { quotify_l("-D".$_) } @{$target{defines}},
|
||||
@{$config{defines}}),
|
||||
(map { quotify_l("-I".$_) } @{$target{includes}},
|
||||
@{$config{includes}}),
|
||||
(map { '-D'.quotify1($_) } @{$target{defines}},
|
||||
@{$config{defines}}),
|
||||
(map { '-I'.quotify1($_) } @{$target{includes}},
|
||||
@{$config{includes}}),
|
||||
@{$config{cppflags}}) -}
|
||||
CNF_CFLAGS={- join(' ', $target{cflags} || (),
|
||||
@{$config{cflags}}) -}
|
||||
@@ -233,12 +230,12 @@ LIB_ASFLAGS={- join(' ', $target{lib_asflags} || (),
|
||||
LIB_CPPFLAGS={- our $lib_cppflags =
|
||||
join(' ', $target{lib_cppflags} || (),
|
||||
$target{shared_cppflag} || (),
|
||||
(map { quotify_l("-D".$_) }
|
||||
(map { '-D'.quotify1($_) }
|
||||
@{$target{lib_defines}},
|
||||
@{$target{shared_defines}},
|
||||
@{$config{lib_defines}},
|
||||
@{$config{shared_defines}}),
|
||||
(map { quotify_l("-I".$_) }
|
||||
(map { '-I'.quotify1($_) }
|
||||
@{$target{lib_includes}},
|
||||
@{$target{shared_includes}},
|
||||
@{$config{lib_includes}},
|
||||
@@ -246,7 +243,7 @@ LIB_CPPFLAGS={- our $lib_cppflags =
|
||||
@{$config{lib_cppflags}},
|
||||
@{$config{shared_cppflag}});
|
||||
join(' ', $lib_cppflags,
|
||||
(map { quotify_l("-D".$_) }
|
||||
(map { '-D'.quotify1($_) }
|
||||
"OPENSSLDIR=\"$openssldir\"",
|
||||
"ENGINESDIR=\"$enginesdir\""),
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
@@ -322,6 +319,11 @@ build_apps build_tests: build_programs
|
||||
# Convenience target to prebuild all generated files, not just the mandatory
|
||||
# ones
|
||||
build_all_generated: $(GENERATED_MANDATORY) $(GENERATED)
|
||||
@rem {- output_off() if $disabled{makedepend}; "" -}
|
||||
@echo "Warning: consider configuring with no-makedepend, because if"
|
||||
@echo " target system doesn't have $(PERL),"
|
||||
@echo " then make will fail..."
|
||||
@rem {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
test: tests
|
||||
{- dependmagic('tests'); -}: build_programs_nodep build_engines_nodep
|
||||
@@ -351,30 +353,20 @@ install: install_sw install_ssldirs install_docs
|
||||
uninstall: uninstall_docs uninstall_sw
|
||||
|
||||
libclean:
|
||||
"$(PERL)" -e "map { m/(.*)\.dll$$/; unlink glob """$$1.*"""; } @ARGV" $(SHLIBS)
|
||||
"$(PERL)" -e "map { m/(.*)\.dll$$/; unlink glob """apps/$$1.*"""; } @ARGV" $(SHLIBS)
|
||||
"$(PERL)" -e "map { m/(.*)\.dll$$/; unlink glob """test/$$1.*"""; } @ARGV" $(SHLIBS)
|
||||
"$(PERL)" -e "map { m/(.*)\.dll$$/; unlink glob """fuzz/$$1.*"""; } @ARGV" $(SHLIBS)
|
||||
-del /Q /F $(LIBS)
|
||||
-del /Q ossl_static.pdb
|
||||
"$(PERL)" -e "map { m/(.*)\.dll$$/; unlink glob """{.,apps,test,fuzz}/$$1.*"""; } @ARGV" $(SHLIBS)
|
||||
-del /Q /F $(LIBS) libcrypto.* libssl.* ossl_static.pdb
|
||||
|
||||
clean: libclean
|
||||
{- join("\n\t", map { "-del /Q /F $_" } @PROGRAMS) -}
|
||||
-del /Q /F $(ENGINES)
|
||||
-del /Q /F $(SCRIPTS)
|
||||
-del /Q /F $(GENERATED_MANDATORY)
|
||||
-del /Q /F $(GENERATED)
|
||||
-del /Q /S /F *.d
|
||||
-del /Q /S /F *.obj
|
||||
-del /Q /S /F *.pdb
|
||||
-del /Q /F *.exp
|
||||
-del /Q /F apps\*.exp
|
||||
-del /Q /F engines\*.exp
|
||||
-del /Q /S /F engines\*.ilk
|
||||
-del /Q /S /F engines\*.lib
|
||||
-del /Q /S /F apps\*.lib
|
||||
-del /Q /S /F engines\*.manifest
|
||||
-del /Q /S /F apps\*.manifest
|
||||
-del /Q /S /F test\*.manifest
|
||||
-del /Q /S /F *.d *.obj *.pdb *.ilk *.manifest
|
||||
-del /Q /S /F engines\*.lib engines\*.exp
|
||||
-del /Q /S /F apps\*.lib apps\*.rc apps\*.res apps\*.exp
|
||||
-del /Q /S /F test\*.exp
|
||||
-rmdir /Q /S test\test-runs
|
||||
|
||||
distclean: clean
|
||||
-del /Q /F configdata.pm
|
||||
@@ -382,7 +374,7 @@ distclean: clean
|
||||
|
||||
depend:
|
||||
@ rem {- output_off() if $disabled{makedepend}; "" -}
|
||||
@ "$(PERL)" "$(SRCDIR)\util\add-depends.pl"
|
||||
@ "$(PERL)" "$(SRCDIR)\util\add-depends.pl" "VC"
|
||||
@ rem {- output_on() if $disabled{makedepend}; "" -}
|
||||
|
||||
# Install helper targets #############################################
|
||||
@@ -420,7 +412,8 @@ install_dev:
|
||||
@"$(PERL)" "$(SRCDIR)\util\copy.pl" "$(SRCDIR)\ms\applink.c" \
|
||||
"$(INSTALLTOP)\include\openssl"
|
||||
@rem {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$config{defines}}; "" -}
|
||||
@"$(PERL)" "$(SRCDIR)\util\copy.pl" "$(SRCDIR)\include\openssl\*.h" \
|
||||
@"$(PERL)" "$(SRCDIR)\util\copy.pl" "-exclude_re=/__DECC_" \
|
||||
"$(SRCDIR)\include\openssl\*.h" \
|
||||
"$(INSTALLTOP)\include\openssl"
|
||||
@"$(PERL)" "$(SRCDIR)\util\copy.pl" $(BLDDIR)\include\openssl\*.h \
|
||||
"$(INSTALLTOP)\include\openssl"
|
||||
@@ -595,21 +588,18 @@ EOF
|
||||
return <<"EOF";
|
||||
$obj$objext: $deps
|
||||
\$(AS) $asflags \$(ASOUTFLAG)\$\@ $srcs
|
||||
EOF
|
||||
} elsif ($srcs[0] =~ /.S$/) {
|
||||
return <<"EOF";
|
||||
$obj$objext: $deps
|
||||
\$(CC) /EP /D__ASSEMBLER__ $cflags $srcs > \$@.asm && \$(AS) $asflags \$(ASOUTFLAG)\$\@ \$@.asm
|
||||
EOF
|
||||
}
|
||||
return <<"EOF" if (!$disabled{makedepend});
|
||||
$obj$depext: $deps
|
||||
\$(CC) $cflags /Zs /showIncludes $srcs 2>&1 | \\
|
||||
"\$(PERL)" -n << > $obj$depext
|
||||
chomp;
|
||||
s/^Note: including file: *//;
|
||||
\$\$collect{\$\$_} = 1;
|
||||
END { print '$obj$objext: ',join(" ", sort keys \%collect),"\\n" }
|
||||
<<
|
||||
\$(CC) $cflags /Zs /showIncludes $srcs 2>&1 > $obj$depext
|
||||
$obj$objext: $obj$depext
|
||||
\$(CC) $cflags -c \$(COUTFLAG)\$\@ @<<
|
||||
$srcs
|
||||
<<
|
||||
\$(CC) $cflags -c \$(COUTFLAG)\$\@ $srcs
|
||||
EOF
|
||||
return <<"EOF" if ($disabled{makedepend});
|
||||
$obj$objext: $deps
|
||||
@@ -638,6 +628,7 @@ EOF
|
||||
return <<"EOF"
|
||||
$target: $deps
|
||||
IF EXIST $shlib$shlibext.manifest DEL /F /Q $shlib$shlibext.manifest
|
||||
IF EXIST \$@ DEL /F /Q \$@
|
||||
\$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) \\
|
||||
/implib:\$@ \$(LDOUTFLAG)$shlib$shlibext$shared_def @<< || (DEL /Q \$(\@B).* $shlib.* && EXIT 1)
|
||||
$objs
|
||||
|
||||
Reference in New Issue
Block a user