diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2012-01-30 21:21:16 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2012-01-30 21:21:16 +0000 |
commit | 92ef8a6fe1fe2adb79f1e928ffaf909e9afade67 (patch) | |
tree | ab32b42a83836eb09cd59961e4e1a823077cdddd /configure | |
parent | 82f313b7b8e86eadd50a2eb69b608cf78f40fb82 (diff) |
Address OpenSSL initialization issues when using third-party libraries.
When Asterisk is used with various third-party libraries (CURL, PostgresSQL,
many others) that have the ability themselves to use OpenSSL, it is possible
for conflicts to arise in how the OpenSSL libraries are initialized and
shutdown. This patch addresses these conflicts by 'wrapping' the important
functions from the OpenSSL libraries in a new shared library that is part
of Asterisk itself, and is loaded in such a way as to ensure that *all*
calls to these functions will be dispatched through the Asterisk wrapper
functions, not the native functions.
This new library is optional, but enabled by default. See the CHANGES file
for documentation on how to disable it.
Along the way, this patch also makes a few other minor changes:
* Changes MODULES_DIR to ASTMODDIR throughout the build system, in order to
more closely match what is used during run-time configuration.
* Corrects some errors in the configure script where AC_CHECK_TOOLS was used
instead of AC_PATH_PROG.
* Adds a new variable for linker flags in the build system (DYLINK), used for
producing true shared libraries (as opposed to the dynamically loadable
modules that the build system produces for 'regular' Asterisk modules).
* Moves the Makefile bits that handle installation and uninstallation of the
main Asterisk binary into main/Makefile from the top-level Makefile.
* Moves a couple of useful preprocessor macros from optional_api.h to
asterisk.h.
Review: https://reviewboard.asterisk.org/r/1006/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@353317 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 355 |
1 files changed, 147 insertions, 208 deletions
@@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Revision: 350732 . +# From configure.ac Revision: 350839 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for asterisk trunk. # @@ -666,6 +666,7 @@ GC_CFLAGS PBX_WEAKREF PBX_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PBX_PTHREAD_RWLOCK_INITIALIZER +AST_ASTERISKSSL HAS_POLL PBX_DYNAMIC_LIST POW_LIB @@ -1046,6 +1047,9 @@ MD5 SOXMIX PBX_FLEX PBX_BISON +OPENSSL +SHA1SUM +LDCONFIG DOWNLOAD FETCH XMLSTARLET @@ -1065,10 +1069,6 @@ FLEX CMP BISON GNU_LD -ac_ct_OPENSSL -OPENSSL -ac_ct_SHA1SUM -SHA1SUM ac_ct_AR AR ac_ct_STRIP @@ -1106,6 +1106,7 @@ astdbdir astdatadir astvarlibdir astmandir +astmoddir astlibdir astheaderdir astetcdir @@ -1248,6 +1249,7 @@ with_z enable_xmldoc enable_largefile enable_internal_poll +enable_asteriskssl ' ac_precious_vars='build_alias host_alias @@ -1879,9 +1881,10 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dev-mode Turn on developer mode --enable-coverage Turn on code coverage tracking (for gcov) - --disable-xmldoc Explicity disable XML documentation + --disable-xmldoc Explicitly disable XML documentation --disable-largefile omit support for large files --enable-internal-poll Use Asterisk's poll implementation + --disable-asteriskssl Disable Asterisk's SSL wrapper library Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -4515,7 +4518,8 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } astsbindir='${sbindir}' astetcdir='${sysconfdir}/asterisk' astheaderdir='${includedir}/asterisk' -astlibdir='${libdir}/asterisk' +astlibdir='${libdir}' +astmoddir='${libdir}/asterisk/modules' astmandir='${mandir}' astvarlibdir='${localstatedir}/lib/asterisk' astdatadir='${astvarlibdir}' @@ -4561,7 +4565,7 @@ case "${host_os}" in darwin*) ac_default_prefix=/usr/local if test ${prefix} = 'NONE'; then - astlibdir='/Library/Application Support/Asterisk/Modules' + astmoddir='/Library/Application Support/Asterisk/Modules' astvarlibdir='/Library/Application Support/Asterisk' astlogdir=/Library/Logs/Asterisk astvarrundir='/Library/Application Support/Asterisk/Run' @@ -4578,6 +4582,7 @@ $as_echo "#define _DARWIN_UNLIMITED_SELECT 1" >>confdefs.h astetcdir=/var/etc/asterisk astsbindir=/opt/asterisk/sbin astlibdir=/opt/asterisk/lib + astmoddir=/opt/asterisk/lib/modules astheaderdir=/opt/asterisk/include astmandir=/opt/asterisk/man astvarlibdir=/var/opt/asterisk @@ -6396,206 +6401,6 @@ esac fi fi -if test -n "$ac_tool_prefix"; then - for ac_prog in sha1sum - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_SHA1SUM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$SHA1SUM"; then - ac_cv_prog_SHA1SUM="$SHA1SUM" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_SHA1SUM="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -SHA1SUM=$ac_cv_prog_SHA1SUM -if test -n "$SHA1SUM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHA1SUM" >&5 -$as_echo "$SHA1SUM" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$SHA1SUM" && break - done -fi -if test -z "$SHA1SUM"; then - ac_ct_SHA1SUM=$SHA1SUM - for ac_prog in sha1sum -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_SHA1SUM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_SHA1SUM"; then - ac_cv_prog_ac_ct_SHA1SUM="$ac_ct_SHA1SUM" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_SHA1SUM="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_SHA1SUM=$ac_cv_prog_ac_ct_SHA1SUM -if test -n "$ac_ct_SHA1SUM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_SHA1SUM" >&5 -$as_echo "$ac_ct_SHA1SUM" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_SHA1SUM" && break -done - - if test "x$ac_ct_SHA1SUM" = x; then - SHA1SUM="$ac_aux_dir/build_tools/sha1sum-sh" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - SHA1SUM=$ac_ct_SHA1SUM - fi -fi - -if test -n "$ac_tool_prefix"; then - for ac_prog in openssl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OPENSSL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OPENSSL"; then - ac_cv_prog_OPENSSL="$OPENSSL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OPENSSL="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OPENSSL=$ac_cv_prog_OPENSSL -if test -n "$OPENSSL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENSSL" >&5 -$as_echo "$OPENSSL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$OPENSSL" && break - done -fi -if test -z "$OPENSSL"; then - ac_ct_OPENSSL=$OPENSSL - for ac_prog in openssl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OPENSSL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OPENSSL"; then - ac_cv_prog_ac_ct_OPENSSL="$ac_ct_OPENSSL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OPENSSL="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OPENSSL=$ac_cv_prog_ac_ct_OPENSSL -if test -n "$ac_ct_OPENSSL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OPENSSL" >&5 -$as_echo "$ac_ct_OPENSSL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_OPENSSL" && break -done - - if test "x$ac_ct_OPENSSL" = x; then - OPENSSL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OPENSSL=$ac_ct_OPENSSL - fi -fi - GNU_LD=0 if test "x$with_gnu_ld" = "xyes" ; then @@ -7391,6 +7196,129 @@ fi fi fi +# Extract the first word of "ldconfig", so it can be a program name with args. +set dummy ldconfig; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LDCONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LDCONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_LDCONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LDCONFIG" && ac_cv_path_LDCONFIG=":" + ;; +esac +fi +LDCONFIG=$ac_cv_path_LDCONFIG +if test -n "$LDCONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDCONFIG" >&5 +$as_echo "$LDCONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "sha1sum", so it can be a program name with args. +set dummy sha1sum; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SHA1SUM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SHA1SUM in + [\\/]* | ?:[\\/]*) + ac_cv_path_SHA1SUM="$SHA1SUM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SHA1SUM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SHA1SUM" && ac_cv_path_SHA1SUM="$ac_aux_dir/build_tools/sha1sum-sh" + ;; +esac +fi +SHA1SUM=$ac_cv_path_SHA1SUM +if test -n "$SHA1SUM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHA1SUM" >&5 +$as_echo "$SHA1SUM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "openssl", so it can be a program name with args. +set dummy openssl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OPENSSL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OPENSSL in + [\\/]* | ?:[\\/]*) + ac_cv_path_OPENSSL="$OPENSSL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_OPENSSL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_OPENSSL" && ac_cv_path_OPENSSL=":" + ;; +esac +fi +OPENSSL=$ac_cv_path_OPENSSL +if test -n "$OPENSSL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENSSL" >&5 +$as_echo "$OPENSSL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bison that supports parse-param" >&5 $as_echo_n "checking for bison that supports parse-param... " >&6; } @@ -14248,6 +14176,17 @@ fi +# Check whether --enable-asteriskssl was given. +if test "${enable_asteriskssl+set}" = set; then : + enableval=$enable_asteriskssl; case "${enableval}" in + y|ye|yes) AST_ASTERISKSSL=yes ;; + n|no) AST_ASTERISKSSL=no ;; + *) as_fn_error $? "bad value ${enableval} for --disable-asteriskssl" "$LINENO" 5 ;; + esac +else + AST_ASTERISKSSL=yes +fi + # https support (in main/http.c) uses funopen on BSD systems, |