Configure: add mechanism to specify uplink target architecture
authorRichard Levitte <levitte@openssl.org>
Sun, 16 Jun 2019 10:37:21 +0000 (12:37 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 17 Jun 2019 14:08:52 +0000 (16:08 +0200)
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)

Configurations/10-main.conf
Configurations/50-masm.conf
Configurations/README
Configure

index 52b23ce..6a8d839 100644 (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",
index 2c55ddd..345a240 100644 (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",
     },
 );
index 8efabb3..9d7c67d 100644 (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.
index c238907..2aed8fa 100755 (executable)
--- 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};