Rework build: add special cases for AIX
authorRichard Levitte <levitte@openssl.org>
Mon, 4 Feb 2019 20:28:43 +0000 (21:28 +0100)
committerRichard Levitte <levitte@openssl.org>
Mon, 11 Feb 2019 15:50:47 +0000 (16:50 +0100)
When reworking the way library file names and extensions were formed,
AIX was lost in the process.  This restores the previous
functionality.

Fixes #8156

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8162)

Configurations/10-main.conf
Configurations/platform/AIX.pm [new file with mode: 0644]

index 859e3d9..1e49118 100644 (file)
@@ -1100,8 +1100,7 @@ my %targets = (
         module_ldflags   => "-Wl,-G,-bsymbolic,-bexpall",
         shared_ldflag    => "-Wl,-G,-bsymbolic",
         shared_defflag   => "-Wl,-bE:",
-        lib_extension    => shared("_a.a"),
-        shared_extension_simple => shared(".a"),
+        perl_platform    => 'AIX',
     },
     "aix-gcc" => {
         inherit_from     => [ "aix-common", asm("ppc32_asm") ],
diff --git a/Configurations/platform/AIX.pm b/Configurations/platform/AIX.pm
new file mode 100644 (file)
index 0000000..f441c15
--- /dev/null
@@ -0,0 +1,27 @@
+package platform::AIX;
+
+use strict;
+use warnings;
+use Carp;
+
+use vars qw(@ISA);
+
+require platform::Unix;
+@ISA = qw(platform::Unix);
+
+# Assume someone set @INC right before loading this module
+use configdata;
+
+sub shlibextsimple      { '.a' }
+
+# In shared mode, the default static library names clashes with the final
+# "simple" full shared library name, so we add '_a' to the basename of the
+# static libraries in that case.
+sub staticname {
+    # Non-installed libraries are *always* static, and their names remain
+    # the same, except for the mandatory extension
+    my $in_libname = platform::BASE->staticname($_[1]);
+    return $in_libname if $unified_info{attributes}->{$_[1]}->{noinst};
+
+    return platform::BASE->staticname($_[1]) . '_a';
+}