summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-01-18 21:35:09 +0000
committerDavid M. Lee <dlee@digium.com>2013-01-18 21:35:09 +0000
commit7bd50bc0c4e27adbbc619a74bd22fb6bf7333321 (patch)
tree70eade721ba432c963a443c367f211b9bb8826a4
parent0fd34b8c0a01827880555239354cca8746782c83 (diff)
Specify the -rpath linker flag when prefix != /usr.
This allows Asterisk to start without having to specify the LD_LIBRARY_PATH. This can be disabled by passing --disable-rpath to configure. (closes issue ASTERISK-20407) Reported by: David M. Lee Review: https://reviewboard.asterisk.org/r/2132/ ........ Merged revisions 379475 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@379477 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--Makefile5
-rw-r--r--UPGRADE-11.txt8
-rw-r--r--UPGRADE.txt1
-rwxr-xr-xconfigure44
-rw-r--r--configure.ac32
-rw-r--r--main/Makefile3
-rw-r--r--makeopts.in1
7 files changed, 91 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 57883221a..71c8f0016 100644
--- a/Makefile
+++ b/Makefile
@@ -252,7 +252,7 @@ MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
ifneq ($(findstring darwin,$(OSARCH)),)
_ASTCFLAGS+=-D__Darwin__
- _SOLINK=-Xlinker -macosx_version_min -Xlinker 10.4 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace
+ _SOLINK=-Xlinker -macosx_version_min -Xlinker 10.4 -Xlinker -undefined -Xlinker dynamic_lookup
ifeq ($(shell if test `/usr/bin/sw_vers -productVersion | cut -c4` -gt 5; then echo 6; else echo 0; fi),6)
_SOLINK+=/usr/lib/bundle1.o
endif
@@ -268,6 +268,9 @@ else
endif
endif
+# Include rpath settings
+_ASTLDFLAGS+=$(AST_RPATH)
+
ifeq ($(OSARCH),SunOS)
SOLINK=-shared -fpic -L/usr/local/ssl/lib -lrt
DYLINK=$(SOLINK)
diff --git a/UPGRADE-11.txt b/UPGRADE-11.txt
index d565602d9..de880408f 100644
--- a/UPGRADE-11.txt
+++ b/UPGRADE-11.txt
@@ -20,6 +20,14 @@
===
===========================================================
+From 11.2 to 11.3:
+
+* Now by default, when Asterisk is installed in a path other than /usr, the
+ Asterisk binary will search for shared libraries in ${libdir} in addition to
+ searching system libraries. This allows Asterisk to find its shared
+ libraries without having to specify LD_LIBRARY_PATH. This can be disabled by
+ passing --disable-rpath to configure.
+
From 10 to 11:
Voicemail:
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 2ba2ea9f2..3f6169ade 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -21,7 +21,6 @@
===
===========================================================
-From 11 to 12:
AMI:
- The SIP SIPqualifypeer action now sends a response indicating it will qualify
diff --git a/configure b/configure
index edbf19ca1..5abec2de7 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac Revision: 377981 .
+# From configure.ac Revision: 378915 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for asterisk trunk.
#
@@ -684,6 +684,7 @@ PBX_DLADDR
PBX_IP_MTU_DISCOVER
PBX_GLOB_BRACE
PBX_GLOB_NOMAGIC
+AST_RPATH
AST_NESTED_FUNCTIONS
AST_NATIVE_ARCH
AST_SHADOW_WARNINGS
@@ -1302,6 +1303,7 @@ enable_xmldoc
enable_largefile
enable_internal_poll
enable_asteriskssl
+enable_rpath
'
ac_precious_vars='build_alias
host_alias
@@ -1946,6 +1948,7 @@ Optional Features:
--disable-largefile omit support for large files
--enable-internal-poll Use Asterisk's poll implementation
--disable-asteriskssl Disable Asterisk's SSL wrapper library
+ --disable-rpath Disables rpath linker option checking
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -16394,6 +16397,45 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+ enableval=$enable_rpath; case "${enableval}" in
+ y|ye|yes) check_rpath=yes ;;
+ n|no) check_rpath=no ;;
+ *) as_fn_error $? "bad value ${enableval} for --disable-rpath" "$LINENO" 5 ;;
+ esac
+else
+ check_rpath=yes
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use rpath" >&5
+$as_echo_n "checking whether to use rpath... " >&6; }
+AST_RPATH=
+if test "${check_rpath}" != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped" >&5
+$as_echo "skipped" >&6; }
+elif test "${prefix}" = /usr || test "${prefix}" = NONE; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not needed" >&5
+$as_echo "not needed" >&6; }
+else
+ case "${host_os}" in
+ darwin*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not supported" >&5
+$as_echo "not supported" >&6; }
+ # We set macosx_version_min to 10.4, which doesn't
+ # support rpath. However, we set install_name on our
+ # dylibs, so it's not strictly necessary.
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: required" >&5
+$as_echo "required" >&6; }
+ AST_RPATH="-Wl,-rpath,${libdir}"
+ ;;
+ esac
+fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysinfo" >&5
$as_echo_n "checking for sysinfo... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
diff --git a/configure.ac b/configure.ac
index 536d4425f..b5f4d29a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1054,6 +1054,38 @@ AC_COMPILE_IFELSE(
)
AC_SUBST(AST_NESTED_FUNCTIONS)
+dnl Check to see if rpath should be set in LDFLAGS
+AC_ARG_ENABLE(rpath,
+ [AC_HELP_STRING([--disable-rpath],
+ [Disables rpath linker option checking])],
+ [case "${enableval}" in
+ y|ye|yes) check_rpath=yes ;;
+ n|no) check_rpath=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-rpath) ;;
+ esac], [check_rpath=yes])
+
+AC_MSG_CHECKING(whether to use rpath)
+AST_RPATH=
+if test "${check_rpath}" != yes; then
+ AC_MSG_RESULT(skipped)
+elif test "${prefix}" = /usr || test "${prefix}" = NONE; then
+ AC_MSG_RESULT(not needed)
+else
+ case "${host_os}" in
+ darwin*)
+ AC_MSG_RESULT(not supported)
+ # We set macosx_version_min to 10.4, which doesn't
+ # support rpath. However, we set install_name on our
+ # dylibs, so it's not strictly necessary.
+ ;;
+ *)
+ AC_MSG_RESULT(required)
+ AST_RPATH="-Wl,-rpath,${libdir}"
+ ;;
+ esac
+fi
+AC_SUBST(AST_RPATH)
+
AC_MSG_CHECKING(for sysinfo)
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <sys/sysinfo.h>],
diff --git a/main/Makefile b/main/Makefile
index fbb885cf8..5dec42e68 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -226,6 +226,9 @@ $(ASTSSL_LIB): $(ASTSSL_LIB).$(ASTSSL_SO_VERSION)
else # Darwin
ASTSSL_LIB:=libasteriskssl.dylib
+# -install_name allows library to be found if installed somewhere other than
+# /lib or /usr/lib
+$(ASTSSL_LIB): _ASTLDFLAGS+=-dynamiclib -install_name $(ASTLIBDIR)/$(ASTSSL_LIB)
$(ASTSSL_LIB): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskssl\"
$(ASTSSL_LIB): LIBS+=$(ASTSSL_LIBS)
$(ASTSSL_LIB): SOLINK=$(DYLINK)
diff --git a/makeopts.in b/makeopts.in
index c10507fcb..c0b043474 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -108,6 +108,7 @@ AST_TRAMPOLINES=@AST_TRAMPOLINES@
AST_NO_STRICT_OVERFLOW=@AST_NO_STRICT_OVERFLOW@
AST_SHADOW_WARNINGS=@AST_SHADOW_WARNINGS@
AST_NESTED_FUNCTIONS=@AST_NESTED_FUNCTIONS@
+AST_RPATH=@AST_RPATH@
AST_FORTIFY_SOURCE=@AST_FORTIFY_SOURCE@
AST_MARCH_NATIVE=@AST_MARCH_NATIVE@