diff options
author | David M. Lee <dlee@digium.com> | 2013-01-18 21:35:09 +0000 |
---|---|---|
committer | David M. Lee <dlee@digium.com> | 2013-01-18 21:35:09 +0000 |
commit | 7bd50bc0c4e27adbbc619a74bd22fb6bf7333321 (patch) | |
tree | 70eade721ba432c963a443c367f211b9bb8826a4 | |
parent | 0fd34b8c0a01827880555239354cca8746782c83 (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-- | Makefile | 5 | ||||
-rw-r--r-- | UPGRADE-11.txt | 8 | ||||
-rw-r--r-- | UPGRADE.txt | 1 | ||||
-rwxr-xr-x | configure | 44 | ||||
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | main/Makefile | 3 | ||||
-rw-r--r-- | makeopts.in | 1 |
7 files changed, 91 insertions, 3 deletions
@@ -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 @@ -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@ |