Commit 18fd413f authored by Andy Polyakov's avatar Andy Polyakov
Browse files

BSD run-time linkers apparently demand RPATH on .so objects [from HEAD].

PR: 1381
parent 80ed5f84
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -1163,8 +1163,10 @@ if (!$IsMK1MF)

$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);

# Compiler fix-ups
if ($target =~ /icc$/)
#
# Platform fix-ups
#
if ($target =~ /\-icc$/)	# Intel C compiler
	{
	my $iccver=0;
	if (open(FD,"$cc -V 2>&1 |"))
@@ -1190,6 +1192,19 @@ if ($target =~ /icc$/)
		}
	}

# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
# .so objects. Apparently application RPATH is not global and does
# not apply to .so linked with other .so. Problem manifests itself
# when libssl.so fails to load libcrypto.so. One can argue that we
# should engrave this into Makefile.shared rules or into BSD-* config
# lines above. Meanwhile let's try to be cautious and pass -rpath to
# linker only when --prefix is not /usr.
if ($target =~ /^BSD\-/)
	{
	$shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
	}

if ($sys_id ne "")
	{
	#$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";