Configure: add mechanism to specify uplink target architecture

As preparation for moving uplink file specs to build.info files, we
must make sure there is still some base information to help select the
correct files.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9166)
This commit is contained in:
Richard Levitte 2019-06-16 12:37:21 +02:00
parent 0ee7b9fe7f
commit b19fe714e9
4 changed files with 17 additions and 2 deletions

View File

@ -1280,6 +1280,7 @@ my %targets = (
sys_id => "WIN64I",
bn_asm_src => sub { return undef unless @_;
my $r=join(" ",@_); $r=~s|bn-ia64.s|bn_asm.c|; $r; },
uplink_arch => 'ia64',
perlasm_scheme => "ias",
multilib => "-ia64",
},
@ -1293,6 +1294,7 @@ my %targets = (
sys_id => "WIN64A",
bn_asm_src => sub { return undef unless @_;
my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
uplink_arch => 'x86_64',
perlasm_scheme => "auto",
multilib => "-x64",
},
@ -1306,6 +1308,7 @@ my %targets = (
asflags => sub { vc_win32_info()->{asflags} },
sys_id => "WIN32",
bn_ops => add("BN_LLONG"),
uplink_arch => 'x86',
perlasm_scheme => sub { vc_win32_info()->{perlasm_scheme} },
# "WOW" stands for "Windows on Windows", and "VC-WOW" engages
# some installation path heuristics in windows-makefile.tmpl...
@ -1387,15 +1390,16 @@ my %targets = (
cflags => "-m32",
sys_id => "MINGW32",
bn_ops => add("BN_LLONG"),
uplink_arch => 'x86',
perlasm_scheme => "coff",
shared_rcflag => "--target=pe-i386",
multilib => "",
},
"mingw64" => {
# As for OPENSSL_USE_APPLINK. Applink makes it possible to use
# As for uplink_arch. 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
# mingw64 build, but it's not done, because until 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,
@ -1404,6 +1408,7 @@ my %targets = (
cflags => "-m64",
sys_id => "MINGW64",
bn_ops => add("SIXTY_FOUR_BIT"),
uplink_arch => undef,
perlasm_scheme => "mingw64",
shared_rcflag => "--target=pe-x86-64",
multilib => "64",

View File

@ -18,6 +18,7 @@ my %targets = (
sys_id => "WIN64A",
bn_asm_src => sub { return undef unless @_;
my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
uplink_arch => 'x86_64',
perlasm_scheme => "masm",
},
);

View File

@ -165,6 +165,11 @@ 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".
uplink_arch => The architecture to be used for compiling uplink
source. This acts as a selector in build.info files.
This is separate from asm_arch because it's compiled
even when 'no-asm' is given, even though it contains
assembler source.
perlasm_scheme => The perlasm method used to create the
assembler files used when compiling with
assembler implementations.

View File

@ -1135,6 +1135,10 @@ foreach my $feature (@{$target{enable}}) {
delete $disabled{$feature};
}
}
# If uplink_arch isn't defined, disable uplink
$disabled{uplink} = 'no uplink_arch' unless (defined $target{uplink_arch});
disable(); # Run a cascade now
$target{CXXFLAGS}//=$target{CFLAGS} if $target{CXX};