From: Richard Levitte Date: Sun, 16 Jun 2019 10:37:21 +0000 (+0200) Subject: Configure: add mechanism to specify uplink target architecture X-Git-Tag: openssl-3.0.0-alpha1~1930 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fopenssl.git;a=commitdiff_plain;h=b19fe714e9d4c50dcb33259346f06d3924b337b7 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 (Merged from https://github.com/openssl/openssl/pull/9166) --- diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 52b23ce4a3..6a8d839713 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -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", diff --git a/Configurations/50-masm.conf b/Configurations/50-masm.conf index 2c55dddc2a..345a2402ef 100644 --- a/Configurations/50-masm.conf +++ b/Configurations/50-masm.conf @@ -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", }, ); diff --git a/Configurations/README b/Configurations/README index 8efabb37aa..9d7c67d53c 100644 --- a/Configurations/README +++ b/Configurations/README @@ -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. diff --git a/Configure b/Configure index c238907bee..2aed8fac61 100755 --- a/Configure +++ b/Configure @@ -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};