summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Configurations/10-main.conf7
-rw-r--r--Configurations/unix-Makefile.tmpl44
2 files changed, 40 insertions, 11 deletions
diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index a62abe29b1..0086ceec0e 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1113,11 +1113,14 @@ my %targets = (
thread_scheme => "pthreads",
dso_scheme => "dlfcn",
shared_target => "self",
- shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
bin_lflags => shared("-Wl,-bsvr4"),
module_ldflags => "-Wl,-G,-bsymbolic,-bexpall,-bnolibpath",
shared_ldflag => "-Wl,-G,-bsymbolic,-bnolibpath",
shared_defflag => "-Wl,-bE:",
+ shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
+ dso_extension => ".so",
+ lib_extension => shared("_a.a"),
+ shared_extension_simple => shared(".a"),
},
"aix-gcc" => {
inherit_from => [ "aix-common", asm("ppc32_asm") ],
@@ -1142,6 +1145,7 @@ my %targets = (
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
perlasm_scheme => "aix64",
shared_ldflag => add_before("-shared -static-libgcc"),
+ shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
AR => add("-X64"),
RANLIB => add("-X64"),
},
@@ -1173,6 +1177,7 @@ my %targets = (
perlasm_scheme => "aix64",
dso_scheme => "dlfcn",
shared_cflag => "-qpic",
+ shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
AR => add("-X64"),
RANLIB => add("-X64"),
},
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 42da98dd48..8d33e84318 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -16,6 +16,10 @@
sub windowsdll { $config{target} =~ /^(?:Cygwin|mingw)/ }
+ # Shared AIX support is special. We put libcrypto[64].so.ver into
+ # libcrypto.a and use libcrypto_a.a as static one.
+ sub sharedaix { !$disabled{shared} && $config{target} =~ /^aix/ }
+
our $sover_dirname = $config{shlib_version_number};
$sover_dirname =~ s|\.|_|g
if $config{target} =~ /^mingw/;
@@ -506,7 +510,7 @@ install_dev:
s2=`echo "$$s" | cut -f2 -d";"`; \
fn1=`basename $$s1`; \
fn2=`basename $$s2`; \
- : {- output_off() if windowsdll(); "" -}; \
+ : {- output_off(); output_on() unless windowsdll() or sharedaix(); "" -}; \
$(ECHO) "install $$s1 -> $(DESTDIR)$(libdir)/$$fn1"; \
cp $$s1 $(DESTDIR)$(libdir)/$$fn1.new; \
chmod 755 $(DESTDIR)$(libdir)/$$fn1.new; \
@@ -516,13 +520,28 @@ install_dev:
$(ECHO) "link $(DESTDIR)$(libdir)/$$fn2 -> $(DESTDIR)$(libdir)/$$fn1"; \
ln -sf $$fn1 $(DESTDIR)$(libdir)/$$fn2; \
fi; \
- : {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \
+ : {- output_off() unless windowsdll() or sharedaix(); output_on() if windowsdll(); "" -}; \
$(ECHO) "install $$s2 -> $(DESTDIR)$(libdir)/$$fn2"; \
cp $$s2 $(DESTDIR)$(libdir)/$$fn2.new; \
chmod 755 $(DESTDIR)$(libdir)/$$fn2.new; \
mv -f $(DESTDIR)$(libdir)/$$fn2.new \
$(DESTDIR)$(libdir)/$$fn2; \
- : {- output_on() unless windowsdll(); "" -}; \
+ : {- output_off() if windowsdll(); output_on() if sharedaix(); "" -}; \
+ a=$(DESTDIR)$(libdir)/$$fn2; \
+ $(ECHO) "install $$s1 -> $$a"; \
+ if [ -f $$a ]; then ( trap "rm -rf /tmp/ar.$$$$" INT 0; \
+ mkdir /tmp/ar.$$$$; ( cd /tmp/ar.$$$$; \
+ cp -f $$a $$a.new; \
+ for so in `$(AR) t $$a`; do \
+ $(AR) x $$a $$so; \
+ chmod u+w $$so; \
+ strip -X32_64 -e $$so; \
+ $(AR) r $$a.new $$so; \
+ done; \
+ )); fi; \
+ $(AR) r $$a.new $$s1; \
+ mv -f $$a.new $$a; \
+ : {- output_off() if sharedaix(); output_on(); "" -}; \
done
@ : {- output_on() if $disabled{shared}; "" -}
@$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir)/pkgconfig
@@ -562,11 +581,11 @@ uninstall_dev:
fn1=`basename $$s1`; \
fn2=`basename $$s2`; \
: {- output_off() if windowsdll(); "" -}; \
- $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn1"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn1; \
- if [ "$$fn1" != "$$fn2" ]; then \
- $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn2; \
+ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
+ $(RM) $(DESTDIR)$(libdir)/$$fn2; \
+ if [ "$$fn1" != "$$fn2" -a -f "$(DESTDIR)$(libdir)/$$fn1" ]; then \
+ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn1"; \
+ $(RM) $(DESTDIR)$(libdir)/$$fn1; \
fi; \
: {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \
$(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
@@ -1105,6 +1124,11 @@ EOF
cp -p $shlib'\$(SHLIB_EXT)' test/
cp -p $shlib'\$(SHLIB_EXT)' fuzz/
EOF
+ } elsif (sharedaix()) {
+ $recipe .= <<"EOF";
+ rm -f $target && \\
+ \$(AR) r $target $target_full
+EOF
} else {
$recipe .= <<"EOF";
if [ '$target' != '$target_full' ]; then \\
@@ -1168,8 +1192,8 @@ EOF
push @linkdirs, $d unless grep { $d eq $_ } @linkdirs;
}
my $linkflags = join("", map { "-L$_ " } @linkdirs);
- my $linklibs = join("", map { if ($_ =~ /\.a$/) {
- " $_";
+ my $linklibs = join("", map { if ($_ =~ s/\.a$//) {
+ " $_$libext";
} else {
my $f = basename($_);
(my $l = $f) =~ s/^lib//;