diff --git a/Makefile b/Makefile index 57883221ae94ecb158878f70c55d047f2474d536..71c8f00167cce4485a6fbe59b98af50c577c330f 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 d565602d9a0081b3593360e8e07392e6056f949a..de880408f840458a16cfb570ae377b2d2c09a983 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 2ba2ea9f297df7bc1c409c6b42fc347725f4deb7..3f6169ade6397ec66025f6f197ccaffbfa197acc 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 edbf19ca14a93151baefef09eb70fd264f59b24b..5abec2de7a816cfa1c3656d54b94e2d9c26b191d 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 536d4425f5446392225630ab8cf312d880c2ae1d..b5f4d29a2fc4c58f3626bae7960f846316ba7863 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 fbb885cf8c20ad9dba2a7c5783be3944e6ae176e..5dec42e682dd8e68e879a3ec7df71f51af232fc9 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 c10507fcb7b2c82dd18aa2fa05da7b8156afce96..c0b043474b0e89791cf00079a0b89b6d6e6c5f80 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@