diff --git a/Makefile b/Makefile index 992e1d3019..8e237e1fda 100644 --- a/Makefile +++ b/Makefile @@ -99,6 +99,10 @@ export WGET_EXTRA_ARGS export LDCONFIG export LDCONFIG_FLAGS export PYTHON +export TAR +export PATCH +export SED +export NM # makeopts is required unless the goal is clean or distclean ifeq ($(findstring clean,$(MAKECMDGOALS)),) diff --git a/configure b/configure index a5da739c04..37a8751eb2 100755 --- a/configure +++ b/configure @@ -977,11 +977,6 @@ PBX_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_DIR PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_INCLUDE PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_LIB -PJPROJECT_BUNDLED -PBX_PJPROJECT -PJPROJECT_DIR -PJPROJECT_INCLUDE -PJPROJECT_LIB PBX_PGSQL PGSQL_DIR PGSQL_INCLUDE @@ -1198,6 +1193,11 @@ PBX_ALSA ALSA_DIR ALSA_INCLUDE ALSA_LIB +PJPROJECT_INCLUDE +PJPROJECT_LIB +PBX_PJPROJECT +PJPROJECT_DIR +PJPROJECT_BUNDLED AST_C_COMPILER_FAMILY AST_CLANG_BLOCKS AST_CLANG_BLOCKS_LIBS @@ -1219,8 +1219,13 @@ PBX_BISON OPENSSL SHA1SUM LDCONFIG +DOWNLOAD_TO_STDOUT DOWNLOAD FETCH +NM +PATCH +TAR +BZIP2 ALEMBIC GIT BASH @@ -1325,7 +1330,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -1351,6 +1355,7 @@ enable_option_checking with_gnu_ld enable_dev_mode enable_coverage +with_pjproject_bundled with_asound with_bfd with_execinfo @@ -1402,7 +1407,6 @@ with_osptk with_oss with_postgres with_pjproject -with_pjproject_bundled with_popt with_portaudio with_pri @@ -1507,7 +1511,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1760,15 +1763,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1906,7 +1900,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2059,7 +2053,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2105,6 +2098,8 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pjproject-bundled + Use bundled pjproject libraries --with-asound=PATH use Advanced Linux Sound Architecture files in PATH --with-bfd=PATH use Debug symbol decoding files in PATH --with-execinfo=PATH use Stack Backtrace files in PATH @@ -2160,8 +2155,6 @@ Optional Packages: --with-oss=PATH use Open Sound System files in PATH --with-postgres=PATH use PostgreSQL files in PATH --with-pjproject=PATH use PJPROJECT files in PATH - --with-pjproject-bundled - Use bundled pjproject libraries --with-popt=PATH use popt files in PATH --with-portaudio=PATH use PortAudio files in PATH --with-pri=PATH use ISDN PRI files in PATH @@ -7646,10 +7639,218 @@ $as_echo "no" >&6; } fi +# Extract the first word of "bzip2", so it can be a program name with args. +set dummy bzip2; 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_BZIP2+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BZIP2 in + [\\/]* | ?:[\\/]*) + ac_cv_path_BZIP2="$BZIP2" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BZIP2="$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_BZIP2" && ac_cv_path_BZIP2=":" + ;; +esac +fi +BZIP2=$ac_cv_path_BZIP2 +if test -n "$BZIP2"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BZIP2" >&5 +$as_echo "$BZIP2" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "tar", so it can be a program name with args. +set dummy tar; 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_TAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAR="$TAR" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TAR="$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_TAR" && ac_cv_path_TAR=":" + ;; +esac +fi +TAR=$ac_cv_path_TAR +if test -n "$TAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5 +$as_echo "$TAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "patch", so it can be a program name with args. +set dummy patch; 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_PATCH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PATCH in + [\\/]* | ?:[\\/]*) + ac_cv_path_PATCH="$PATCH" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PATCH="$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_PATCH" && ac_cv_path_PATCH=":" + ;; +esac +fi +PATCH=$ac_cv_path_PATCH +if test -n "$PATCH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5 +$as_echo "$PATCH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; 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_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SED in + [\\/]* | ?:[\\/]*) + ac_cv_path_SED="$SED" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SED="$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_SED" && ac_cv_path_SED=":" + ;; +esac +fi +SED=$ac_cv_path_SED +if test -n "$SED"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "nm", so it can be a program name with args. +set dummy nm; 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_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NM="$NM" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NM="$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_NM" && ac_cv_path_NM=":" + ;; +esac +fi +NM=$ac_cv_path_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "${WGET}" != ":" ; then DOWNLOAD=${WGET} + DOWNLOAD_TO_STDOUT="${WGET} -O-" else if test "${CURL}" != ":" ; then DOWNLOAD="${CURL} -O --progress-bar -w \"%{url_effective}\n\"" + DOWNLOAD_TO_STDOUT="${CURL} -L --progress-bar -w \"%{url_effective}\n\"" else # Extract the first word of "fetch", so it can be a program name with args. set dummy fetch; ac_word=$2 @@ -7693,9 +7894,12 @@ fi DOWNLOAD=${FETCH} + DOWNLOAD_TO_STDOUT="${FETCH} -o-" 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 @@ -8921,6 +9125,118 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" +PJPROJECT_BUNDLED=no + + + +# Check whether --with-pjproject-bundled was given. +if test "${with_pjproject_bundled+set}" = set; then : + withval=$with_pjproject_bundled; case "${enableval}" in + n|no) PJPROJECT_BUNDLED=no ;; + *) PJPROJECT_BUNDLED=yes ;; + esac +fi + + + + + if test "$PJPROJECT_BUNDLED" = "yes" ; then + + if test "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then + as_fn_error $? "--with-pjproject and --with-pjproject-bundled can't both be specified" "$LINENO" 5 + fi + + ac_mandatory_list="$ac_mandatory_list PJPROJECT" + PJPROJECT_DIR="${ac_top_build_prefix}third-party/pjproject" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for embedded pjproject (may have to download)" >&5 +$as_echo_n "checking for embedded pjproject (may have to download)... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: configuring" >&5 +$as_echo "configuring" >&6; } + + if test "x${DOWNLOAD_TO_STDOUT}" = "x" ; then + as_fn_error $? "A download utility (wget, curl or fetch) is required to download bundled pjproject" "$LINENO" 5 + fi + if test "${BZIP2}" = ":" ; then + as_fn_error $? "bzip2 is required to extract the pjproject tar file" "$LINENO" 5 + fi + if test "${TAR}" = ":" ; then + as_fn_error $? "tar is required to extract the pjproject tar file" "$LINENO" 5 + fi + if test "${PATCH}" = ":" ; then + as_fn_error $? "patch is required to configure bundled pjproject" "$LINENO" 5 + fi + if test "${SED}" = ":" ; then + as_fn_error $? "sed is required to configure bundled pjproject" "$LINENO" 5 + fi + if test "${NM}" = ":" ; then + as_fn_error $? "nm is required to build bundled pjproject" "$LINENO" 5 + fi + + export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT + ${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} configure + if test $? -ne 0 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Unable to configure ${PJPROJECT_DIR}" >&5 +$as_echo "$as_me: Unable to configure ${PJPROJECT_DIR}" >&6;} + as_fn_error $? "Run \"${GNU_MAKE} -C ${PJPROJECT_DIR} NOISY_BUILD=yes configure\" to see error details." "$LINENO" 5 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled pjproject" >&5 +$as_echo_n "checking for bundled pjproject... " >&6; } + + PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} echo_cflags) + PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE" + PBX_PJPROJECT=1 + + +$as_echo "#define HAVE_PJPROJECT 1" >>confdefs.h + + +$as_echo "#define HAVE_PJPROJECT_BUNDLED 1" >>confdefs.h + + + +$as_echo "#define HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK 1" >>confdefs.h + + +$as_echo "#define HAVE_PJ_TRANSACTION_GRP_LOCK 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_REPLACE_MEDIA_STREAM 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_GET_DEST_INFO 1" >>confdefs.h + + +$as_echo "#define HAVE_PJ_SSL_CERT_LOAD_FROM_FILES2 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_EXTERNAL_RESOLVER 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_TLS_TRANSPORT_PROTO 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_EVSUB_GRP_LOCK 1" >>confdefs.h + + +$as_echo "#define HAVE_PJSIP_INV_SESSION_REF 1" >>confdefs.h + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + fi + + + # AST_EXT_LIB_SETUP is used to tell configure to handle variables for # various packages. # $1 is the prefix for the variables in makeopts and autoconfig.h @@ -10938,6 +11254,7 @@ fi +if test "x${PBX_PJPROJECT}" != "x1" ; then PJPROJECT_DESCRIP="PJPROJECT" PJPROJECT_OPTION="pjproject" @@ -10970,29 +11287,6 @@ fi -PJPROJECT_BUNDLED=no - - - -# Check whether --with-pjproject-bundled was given. -if test "${with_pjproject_bundled+set}" = set; then : - withval=$with_pjproject_bundled; case "${enableval}" in - n|no) PJPROJECT_BUNDLED=no ;; - *) PJPROJECT_BUNDLED=yes ;; - esac -fi - - - -if test "$PJPROJECT_BUNDLED" = "yes" -a "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then - as_fn_error $? "--with-pjproject and --with-pjproject-bundled can't both be specified" "$LINENO" 5 -fi - -if test "$PJPROJECT_BUNDLED" = "yes" ; then - ac_mandatory_list="$ac_mandatory_list PJPROJECT" - PJPROJECT_DIR="${ac_top_build_prefix}third-party/pjproject" -fi - PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_DESCRIP="PJSIP Dialog Create UAS with Incremented Lock" PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_OPTION=pjsip @@ -11101,6 +11395,7 @@ PBX_PJSIP_INV_SESSION_REF=0 +fi POPT_DESCRIP="popt" @@ -25153,251 +25448,7 @@ $as_echo "$as_me: *** including --without-postgres" >&6;} fi if test "$USE_PJPROJECT" != "no" ; then - if test "$PJPROJECT_BUNDLED" = "yes" ; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for embedded pjproject (may have to download)" >&5 -$as_echo_n "checking for embedded pjproject (may have to download)... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: configuring" >&5 -$as_echo "configuring" >&6; } - ${GNU_MAKE} --quiet --no-print-directory -C $PJPROJECT_DIR configure - if test $? -ne 0 ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Unable to configure $PJPROJECT_DIR" >&5 -$as_echo "$as_me: Unable to configure $PJPROJECT_DIR" >&6;} - as_fn_error $? "Run \"${GNU_MAKE} -C $PJPROJECT_DIR NOISY_BUILD=yes configure\" to see error details." "$LINENO" 5 - fi - - PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C $PJPROJECT_DIR echo_cflags) - PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE" - PBX_PJPROJECT=1 - PJPROJECT_BUNDLED=yes - -$as_echo "#define HAVE_PJPROJECT 1" >>confdefs.h - - -$as_echo "#define HAVE_PJPROJECT_BUNDLED 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for embedded pjproject" >&5 -$as_echo_n "checking for embedded pjproject... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - - PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pjsip_dlg_create_uas_and_inc_lock declared in pjsip.h" >&5 -$as_echo_n "checking for pjsip_dlg_create_uas_and_inc_lock declared in pjsip.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "pjsip_dlg_create_uas_and_inc_lock" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK=1 - -$as_echo "#define HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJSIP_DLG_CREATE_UAS_AND_INC_LOCK_INCLUDE="$PJPROJECT_INCLUDE" - - - PJ_TRANSACTION_GRP_LOCK_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pjsip_tsx_create_uac2 declared in pjsip.h" >&5 -$as_echo_n "checking for pjsip_tsx_create_uac2 declared in pjsip.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "pjsip_tsx_create_uac2" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJ_TRANSACTION_GRP_LOCK=1 - -$as_echo "#define HAVE_PJ_TRANSACTION_GRP_LOCK 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJ_TRANSACTION_GRP_LOCK_INCLUDE="$PJPROJECT_INCLUDE" - - - PJSIP_REPLACE_MEDIA_STREAM_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE declared in pjmedia.h" >&5 -$as_echo_n "checking for PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE declared in pjmedia.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJSIP_REPLACE_MEDIA_STREAM=1 - -$as_echo "#define HAVE_PJSIP_REPLACE_MEDIA_STREAM 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJSIP_REPLACE_MEDIA_STREAM_INCLUDE="$PJPROJECT_INCLUDE" - - - PJSIP_GET_DEST_INFO_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pjsip_get_dest_info declared in pjsip.h" >&5 -$as_echo_n "checking for pjsip_get_dest_info declared in pjsip.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "pjsip_get_dest_info" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJSIP_GET_DEST_INFO=1 - -$as_echo "#define HAVE_PJSIP_GET_DEST_INFO 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJSIP_GET_DEST_INFO_INCLUDE="$PJPROJECT_INCLUDE" - - - PJ_SSL_CERT_LOAD_FROM_FILES2_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pj_ssl_cert_load_from_files2 declared in pjlib.h" >&5 -$as_echo_n "checking for pj_ssl_cert_load_from_files2 declared in pjlib.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "pj_ssl_cert_load_from_files2" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJ_SSL_CERT_LOAD_FROM_FILES2=1 - -$as_echo "#define HAVE_PJ_SSL_CERT_LOAD_FROM_FILES2 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJ_SSL_CERT_LOAD_FROM_FILES2_INCLUDE="$PJPROJECT_INCLUDE" - - - PJSIP_EXTERNAL_RESOLVER_INCLUDE="$PJPROJECT_INCLUDE" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pjsip_endpt_set_ext_resolver declared in pjsip.h" >&5 -$as_echo_n "checking for pjsip_endpt_set_ext_resolver declared in pjsip.h... " >&6; } - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "pjsip_endpt_set_ext_resolver" >/dev/null 2>&1; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PBX_PJSIP_EXTERNAL_RESOLVER=1 - -$as_echo "#define HAVE_PJSIP_EXTERNAL_RESOLVER 1" >>confdefs.h - - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f conftest* - - - CPPGLAGS="$saved_cpp" - PJSIP_EXTERNAL_RESOLVER_INCLUDE="$PJPROJECT_INCLUDE" - - -$as_echo "#define HAVE_PJSIP_TLS_TRANSPORT_PROTO 1" >>confdefs.h - - -$as_echo "#define HAVE_PJSIP_EVSUB_GRP_LOCK 1" >>confdefs.h - - -$as_echo "#define HAVE_PJSIP_INV_SESSION_REF 1" >>confdefs.h - - - else + if test "$PJPROJECT_BUNDLED" = "no" ; then if test "x${PBX_PJPROJECT}" != "x1" -a "${USE_PJPROJECT}" != "no"; then diff --git a/configure.ac b/configure.ac index 17b887266f..cdc6487c23 100644 --- a/configure.ac +++ b/configure.ac @@ -284,16 +284,27 @@ AC_PATH_PROG([XMLSTARLET], [xmlstarlet], :) AC_PATH_PROG([BASH], [bash], :) AC_PATH_PROG([GIT], [git], :) AC_PATH_PROG([ALEMBIC], [alembic], :) +AC_PATH_PROG([BZIP2], [bzip2], :) +AC_PATH_PROG([TAR], [tar], :) +AC_PATH_PROG([PATCH], [patch], :) +AC_PATH_PROG([SED], [sed], :) +AC_PATH_PROG([NM], [nm], :) + if test "${WGET}" != ":" ; then DOWNLOAD=${WGET} + DOWNLOAD_TO_STDOUT="${WGET} -O-" else if test "${CURL}" != ":" ; then DOWNLOAD="${CURL} -O --progress-bar -w \"%{url_effective}\n\"" + DOWNLOAD_TO_STDOUT="${CURL} -L --progress-bar -w \"%{url_effective}\n\"" else AC_PATH_PROG([FETCH], [fetch], [:]) DOWNLOAD=${FETCH} + DOWNLOAD_TO_STDOUT="${FETCH} -o-" fi fi + AC_SUBST(DOWNLOAD) +AC_SUBST(DOWNLOAD_TO_STDOUT) AC_PATH_PROG([LDCONFIG], [ldconfig], :) AC_PATH_PROG([SHA1SUM], [sha1sum], $ac_aux_dir/build_tools/sha1sum-sh) AC_PATH_PROG([OPENSSL], [openssl], :) @@ -404,6 +415,19 @@ AC_SUBST(AST_CODE_COVERAGE) AST_CHECK_RAII() AST_CHECK_STRSEP_ARRAY_BOUNDS() +PJPROJECT_BUNDLED=no +AH_TEMPLATE(m4_bpatsubst([[HAVE_PJPROJECT_BUNDLED]], [(.*)]), [Define to 1 when using the bundled pjproject.]) + +AC_ARG_WITH([pjproject-bundled], + [AS_HELP_STRING([--with-pjproject-bundled], + [Use bundled pjproject libraries])], + [case "${enableval}" in + n|no) PJPROJECT_BUNDLED=no ;; + *) PJPROJECT_BUNDLED=yes ;; + esac]) + +THIRD_PARTY_CONFIGURE() + # AST_EXT_LIB_SETUP is used to tell configure to handle variables for # various packages. # $1 is the prefix for the variables in makeopts and autoconfig.h @@ -472,28 +496,8 @@ AST_EXT_LIB_SETUP([OSPTK], [OSP Toolkit], [osptk]) AST_EXT_LIB_SETUP([OSS], [Open Sound System], [oss]) AST_EXT_LIB_SETUP([PGSQL], [PostgreSQL], [postgres]) +if test "x${PBX_PJPROJECT}" != "x1" ; then AST_EXT_LIB_SETUP([PJPROJECT], [PJPROJECT], [pjproject]) -PJPROJECT_BUNDLED=no -AH_TEMPLATE(m4_bpatsubst([[HAVE_PJPROJECT_BUNDLED]], [(.*)]), [Define to 1 when using the bundled pjproject.]) - -AC_ARG_WITH([pjproject-bundled], - [AS_HELP_STRING([--with-pjproject-bundled], - [Use bundled pjproject libraries])], - [case "${enableval}" in - n|no) PJPROJECT_BUNDLED=no ;; - *) PJPROJECT_BUNDLED=yes ;; - esac]) -AC_SUBST(PJPROJECT_BUNDLED) - -if test "$PJPROJECT_BUNDLED" = "yes" -a "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then - AC_MSG_ERROR(--with-pjproject and --with-pjproject-bundled can't both be specified) -fi - -if test "$PJPROJECT_BUNDLED" = "yes" ; then - ac_mandatory_list="$ac_mandatory_list PJPROJECT" - PJPROJECT_DIR="${ac_top_build_prefix}third-party/pjproject" -fi - AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_DLG_CREATE_UAS_AND_INC_LOCK], [PJSIP Dialog Create UAS with Incremented Lock], [PJPROJECT], [pjsip]) AST_EXT_LIB_SETUP_OPTIONAL([PJ_TRANSACTION_GRP_LOCK], [PJSIP Transaction Group Lock Support], [PJPROJECT], [pjsip]) AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_REPLACE_MEDIA_STREAM], [PJSIP Media Stream Replacement Support], [PJPROJECT], [pjsip]) @@ -503,6 +507,7 @@ AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_EXTERNAL_RESOLVER], [PJSIP External Resolver S AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_TLS_TRANSPORT_PROTO], [PJSIP TLS Transport proto field support], [PJPROJECT], [pjsip]) AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_EVSUB_GRP_LOCK], [PJSIP EVSUB Group Lock support], [PJPROJECT], [pjsip]) AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_INV_SESSION_REF], [PJSIP INVITE Session Reference Count support], [PJPROJECT], [pjsip]) +fi AST_EXT_LIB_SETUP([POPT], [popt], [popt]) AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio]) @@ -2198,9 +2203,7 @@ if test "${PG_CONFIG}" != No; then fi if test "$USE_PJPROJECT" != "no" ; then - if test "$PJPROJECT_BUNDLED" = "yes" ; then - PJPROJECT_CONFIGURE([$PJPROJECT_DIR]) - else + if test "$PJPROJECT_BUNDLED" = "no" ; then AST_PKG_CONFIG_CHECK([PJPROJECT], [libpjproject]) AST_EXT_LIB_CHECK([PJSIP_DLG_CREATE_UAS_AND_INC_LOCK], [pjsip], [pjsip_dlg_create_uas_and_inc_lock], [pjsip.h], [$PJPROJECT_LIBS], [$PJPROJECT_CFLAGS]) diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index e16b668615..7a11ba3e47 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -586,19 +586,22 @@ /* Define if your system has PJPROJECT_BUNDLED */ #undef HAVE_PJPROJECT_BUNDLED -/* Define if your system has pjsip_dlg_create_uas_and_inc_lock declared. */ +/* Define to 1 if PJPROJECT has the PJSIP Dialog Create UAS with Incremented + Lock feature. */ #undef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK -/* Define if your system has PJSIP_EVSUB_GRP_LOCK */ +/* Define to 1 if PJPROJECT has the PJSIP EVSUB Group Lock support feature. */ #undef HAVE_PJSIP_EVSUB_GRP_LOCK -/* Define if your system has pjsip_endpt_set_ext_resolver declared. */ +/* Define to 1 if PJPROJECT has the PJSIP External Resolver Support feature. + */ #undef HAVE_PJSIP_EXTERNAL_RESOLVER -/* Define if your system has pjsip_get_dest_info declared. */ +/* Define to 1 if PJPROJECT has the pjsip_get_dest_info support feature. */ #undef HAVE_PJSIP_GET_DEST_INFO -/* Define if your system has PJSIP_INV_SESSION_REF */ +/* Define to 1 if PJPROJECT has the PJSIP INVITE Session Reference Count + support feature. */ #undef HAVE_PJSIP_INV_SESSION_REF /* Define if your system has the PJSIP_REPLACE_MEDIA_STREAM headers. */ @@ -607,10 +610,12 @@ /* Define if your system has the PJSIP_TLS_TRANSPORT_PROTO headers. */ #undef HAVE_PJSIP_TLS_TRANSPORT_PROTO -/* Define if your system has pj_ssl_cert_load_from_files2 declared. */ +/* Define to 1 if PJPROJECT has the pj_ssl_cert_load_from_files2 support + feature. */ #undef HAVE_PJ_SSL_CERT_LOAD_FROM_FILES2 -/* Define if your system has pjsip_tsx_create_uac2 declared. */ +/* Define to 1 if PJPROJECT has the PJSIP Transaction Group Lock Support + feature. */ #undef HAVE_PJ_TRANSACTION_GRP_LOCK /* Define to 1 if your system defines IP_PKTINFO. */ diff --git a/makeopts.in b/makeopts.in index b2b394b5f1..a826d882b7 100644 --- a/makeopts.in +++ b/makeopts.in @@ -27,6 +27,7 @@ STRIP=@STRIP@ WGET=@WGET@ FETCH=@FETCH@ DOWNLOAD=@DOWNLOAD@ +DOWNLOAD_TO_STDOUT=@DOWNLOAD_TO_STDOUT@ SOUNDS_CACHE_DIR=@SOUNDS_CACHE_DIR@ EXTERNALS_CACHE_DIR=@EXTERNALS_CACHE_DIR@ RUBBER=@RUBBER@ @@ -41,6 +42,10 @@ OPENSSL=@OPENSSL@ LDCONFIG=@LDCONFIG@ GIT=@GIT@ ALEMBIC=@ALEMBIC@ +TAR=@TAR@ +PATCH=@PATCH@ +SED=@SED@ +NM=@NM@ BUILD_PLATFORM=@BUILD_PLATFORM@ BUILD_CPU=@BUILD_CPU@ diff --git a/third-party/Makefile.rules b/third-party/Makefile.rules index 92e4ebc859..4f804dd0e3 100644 --- a/third-party/Makefile.rules +++ b/third-party/Makefile.rules @@ -13,18 +13,6 @@ QUIET_CONFIGURE= REALLY_QUIET= endif -DOWNLOAD := $(shell which wget 2>/dev/null) -DOWNLOAD := $(if $(DOWNLOAD),$(DOWNLOAD) -O- ,) - -ifeq ($(DOWNLOAD),) -DOWNLOAD := $(shell which curl 2>/dev/null) -DOWNLOAD := $(if $(DOWNLOAD), $(DOWNLOAD) -L ,) -endif - -ifeq ($(DOWNLOAD),) -DOWNLOAD := echo "No download program available" ; exit 1; -endif - export SUBMAKE export ECHO_PREFIX export CMD_PREFIX @@ -34,3 +22,8 @@ export ASTTOPDIR export ASTSBINDIR export DESTDIR export ASTDATADIR +export TAR +export PATCH +export SED +export NM +export DOWNLOAD diff --git a/third-party/configure.m4 b/third-party/configure.m4 new file mode 100644 index 0000000000..6354466389 --- /dev/null +++ b/third-party/configure.m4 @@ -0,0 +1,7 @@ + + +AC_DEFUN([THIRD_PARTY_CONFIGURE], +[ + PJPROJECT_CONFIGURE() +]) + diff --git a/third-party/pjproject/Makefile b/third-party/pjproject/Makefile index bb98a09e31..3fd3be7355 100644 --- a/third-party/pjproject/Makefile +++ b/third-party/pjproject/Makefile @@ -7,8 +7,6 @@ SPECIAL_TARGETS := ifneq ($(findstring configure,$(MAKECMDGOALS))$(findstring echo_cflags,$(MAKECMDGOALS)),) # Run from $(ASTTOPDIR)/configure SPECIAL_TARGETS += configure - include ../Makefile.rules - include Makefile.rules endif ifeq ($(findstring echo_cflags,$(MAKECMDGOALS)),echo_cflags) @@ -19,8 +17,10 @@ endif ifeq ($(findstring clean,$(MAKECMDGOALS)),clean) # clean or distclean SPECIAL_TARGETS += clean - include ../Makefile.rules - include Makefile.rules +endif + +ifneq ($(wildcard ../../makeopts),) + include ../../makeopts endif ifeq ($(SPECIAL_TARGETS),) @@ -28,17 +28,17 @@ ifeq ($(SPECIAL_TARGETS),) ifeq ($(wildcard ../../makeopts),) $(error ASTTOPDIR/configure hasn't been run) endif - include ../../makeopts ifeq ($(PJPROJECT_BUNDLED),yes) - -include ../../menuselect.makeopts - include ../Makefile.rules + ifneq ($(wildcard ../../menuselect.makeopts),) + include ../../menuselect.makeopts + else + $(warning ASTTOPDIR/menuselect hasn't been run yet. Can't find debug options.) + endif all: _all install: _install - include ../../Makefile.rules - include Makefile.rules include source/user.mak include source/build.mak CF := $(filter-out -W%,$(CC_CFLAGS)) @@ -66,25 +66,25 @@ ifeq ($(SPECIAL_TARGETS),) endif endif +include ../../Makefile.rules +include ../Makefile.rules +include Makefile.rules + ECHO_PREFIX := $(ECHO_PREFIX) echo '[pjproject] ' -ifndef $(TMPDIR) - ifneq ($(wildcard /tmp),) - TMPDIR=/tmp - else - TMPDIR=. - endif -endif +_all: $(TARGETS) + +TMPDIR ?= $(or $(EXTERNALS_CACHE_DIR),$(wildcard /tmp),.) $(TMPDIR)/pjproject-$(PJPROJECT_VERSION).tar.bz2 : ../versions.mak - $(ECHO_PREFIX) Downloading $@ with $(DOWNLOAD) - $(CMD_PREFIX) $(DOWNLOAD) $(PJPROJECT_URL)/$(@F) > $@ + $(ECHO_PREFIX) Downloading $(PJPROJECT_URL)/$(@F) to $@ + $(CMD_PREFIX) $(DOWNLOAD_TO_STDOUT) $(PJPROJECT_URL)/$(@F) > $@ source/.unpacked: $(TMPDIR)/pjproject-$(PJPROJECT_VERSION).tar.bz2 $(ECHO_PREFIX) Unpacking $< -@rm -rf source >/dev/null 2>&1 -@mkdir source >/dev/null 2>&1 - $(CMD_PREFIX) tar --strip-components=1 -C source -xjf $< + $(CMD_PREFIX) $(TAR) --strip-components=1 -C source -xjf $< $(ECHO_PREFIX) Applying patches $(CMD_PREFIX) ./apply_patches $(QUIET_CONFIGURE) ./patches ./source -@touch source/.unpacked @@ -99,8 +99,8 @@ source/pjlib/include/pj/%.h : ./patches/%.h build.mak: source/.unpacked $(addprefix source/pjlib/include/pj/,$(notdir $(wildcard ./patches/*.h))) source/user.mak Makefile.rules $(ECHO_PREFIX) Configuring with $(PJPROJECT_CONFIG_OPTS) - $(CMD_PREFIX) (cd source ; autoconf aconfigure.ac > aconfigure && ./aconfigure $(QUIET_CONFIGURE) $(PJPROJECT_CONFIG_OPTS)) - @sed -r -e "/prefix|export PJ_SHARED_LIBRARIES|MACHINE_NAME|OS_NAME|HOST_NAME|CC_NAME|CROSS_COMPILE|LINUX_POLL/d" source/build.mak > build.mak + $(CMD_PREFIX) (cd source ; ./aconfigure $(QUIET_CONFIGURE) $(PJPROJECT_CONFIG_OPTS)) + $(SED) -r -e "/prefix|export PJ_SHARED_LIBRARIES|MACHINE_NAME|OS_NAME|HOST_NAME|CC_NAME|CROSS_COMPILE|LINUX_POLL/d" source/build.mak > build.mak configure: build.mak @@ -128,7 +128,7 @@ $(LIB_FILES): $(PJLIB_UTIL_LIB_FILES) pjproject.symbols: $(ALL_LIB_FILES) $(ECHO_PREFIX) Generating symbols - $(CMD_PREFIX) nm -Pog $(ALL_LIB_FILES) | sed -n -r -e "s/.+: ([pP][jJ][^ ]+) .+/\1/gp" | sort -u > pjproject.symbols + $(CMD_PREFIX) $(NM) -Pog $(PJ_LIB_FILES) | $(SED) -n -r -e "s/.+: ([pP][jJ][^ ]+) .+/\1/gp" | sort -u > pjproject.symbols source/pjsip-apps/src/asterisk_malloc_debug.c: patches/asterisk_malloc_debug.c $(ECHO_PREFIX) Copying $< to $@ @@ -155,8 +155,6 @@ source/pjsip-apps/src/python/_pjsua.so: source/pjsip-apps/src/python/_pjsua.o $(ECHO_PREFIX) Linking python bindings $(@F) $(CMD_PREFIX) gcc -shared -pthread -o $@ $< $(LDFLAGS) $(PJ_LDFLAGS) $(APP_LDLIBS) $(PYTHONDEV_LIB) $(REALLY_QUIET) -_all: $(TARGETS) - _install: _all @if [ ! -d "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject" ]; then \ $(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/third-party/pjproject"; \ @@ -188,4 +186,3 @@ clean: distclean: $(ECHO_PREFIX) Distcleaning -$(CMD_PREFIX) rm -rf source pjproject.symbols pjproject-*.tar.bz2 build.mak .rebuild_needed - diff --git a/third-party/pjproject/apply_patches b/third-party/pjproject/apply_patches index 5dfdd2a3c8..c28f403019 100755 --- a/third-party/pjproject/apply_patches +++ b/third-party/pjproject/apply_patches @@ -5,6 +5,8 @@ if [ "$1" = "-q" ] ; then shift fi +PATCH=${PATCH:-patch} + patchdir=${1:?You must supply a patches directory} sourcedir=${2?:You must supply a source directory} @@ -27,12 +29,12 @@ if [ ! "$(ls -A $patchdir/*.patch 2>/dev/null)" ] ; then fi for patchfile in $patchdir/*.patch ; do - patch -d $sourcedir -p1 -s -r- -f -N --dry-run -i "$patchfile" || (echo "Patchfile $(basename $patchfile) failed to apply" >&2 ; exit 1) || exit 1 + ${PATCH} -d $sourcedir -p1 -s -r- -f -N --dry-run -i "$patchfile" || (echo "Patchfile $(basename $patchfile) failed to apply" >&2 ; exit 1) || exit 1 done for patchfile in "$patchdir"/*.patch ; do [ -z $quiet ] && echo "Applying patch $(basename $patchfile)" - patch -d "$sourcedir" -p1 -s -i "$patchfile" || exit 1 + ${PATCH} -d "$sourcedir" -p1 -s -i "$patchfile" || exit 1 done exit 0 diff --git a/third-party/pjproject/configure.m4 b/third-party/pjproject/configure.m4 index 7a079f6577..386035bace 100644 --- a/third-party/pjproject/configure.m4 +++ b/third-party/pjproject/configure.m4 @@ -1,49 +1,73 @@ -AC_DEFUN([PJPROJECT_SYMBOL_CHECK], +AC_DEFUN([_PJPROJECT_CONFIGURE], [ - $1_INCLUDE="$PJPROJECT_INCLUDE" - AC_MSG_CHECKING([for $2 declared in $3]) - - saved_cpp="$CPPFLAGS" - CPPFLAGS="$PJPROJECT_INCLUDE" - AC_EGREP_HEADER($2, $3, [ - AC_MSG_RESULT(yes) - PBX_$1=1 - AC_DEFINE([HAVE_$1], 1, [Define if your system has $2 declared.]) - ], [ - AC_MSG_RESULT(no) - ]) + if test "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then + AC_MSG_ERROR(--with-pjproject and --with-pjproject-bundled can't both be specified) + fi - CPPGLAGS="$saved_cpp" - $1_INCLUDE="$PJPROJECT_INCLUDE" -]) + ac_mandatory_list="$ac_mandatory_list PJPROJECT" + PJPROJECT_DIR="${ac_top_build_prefix}third-party/pjproject" -AC_DEFUN([PJPROJECT_CONFIGURE], -[ AC_MSG_CHECKING(for embedded pjproject (may have to download)) AC_MSG_RESULT(configuring) - ${GNU_MAKE} --quiet --no-print-directory -C $1 configure + + if test "x${DOWNLOAD_TO_STDOUT}" = "x" ; then + AC_MSG_ERROR(A download utility (wget, curl or fetch) is required to download bundled pjproject) + fi + if test "${BZIP2}" = ":" ; then + AC_MSG_ERROR(bzip2 is required to extract the pjproject tar file) + fi + if test "${TAR}" = ":" ; then + AC_MSG_ERROR(tar is required to extract the pjproject tar file) + fi + if test "${PATCH}" = ":" ; then + AC_MSG_ERROR(patch is required to configure bundled pjproject) + fi + if test "${SED}" = ":" ; then + AC_MSG_ERROR(sed is required to configure bundled pjproject) + fi + if test "${NM}" = ":" ; then + AC_MSG_ERROR(nm is required to build bundled pjproject) + fi + + export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT + ${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} configure if test $? -ne 0 ; then AC_MSG_RESULT(failed) - AC_MSG_NOTICE(Unable to configure $1) - AC_MSG_ERROR(Run "${GNU_MAKE} -C $1 NOISY_BUILD=yes configure" to see error details.) + AC_MSG_NOTICE(Unable to configure ${PJPROJECT_DIR}) + AC_MSG_ERROR(Run "${GNU_MAKE} -C ${PJPROJECT_DIR} NOISY_BUILD=yes configure" to see error details.) fi - PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C $1 echo_cflags) + AC_MSG_CHECKING(for bundled pjproject) + + PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} echo_cflags) PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE" PBX_PJPROJECT=1 - PJPROJECT_BUNDLED=yes + AC_DEFINE([HAVE_PJPROJECT], 1, [Define if your system has PJPROJECT]) AC_DEFINE([HAVE_PJPROJECT_BUNDLED], 1, [Define if your system has PJPROJECT_BUNDLED]) - AC_MSG_CHECKING(for embedded pjproject) - AC_MSG_RESULT(yes) - PJPROJECT_SYMBOL_CHECK([PJSIP_DLG_CREATE_UAS_AND_INC_LOCK], [pjsip_dlg_create_uas_and_inc_lock], [pjsip.h]) - PJPROJECT_SYMBOL_CHECK([PJ_TRANSACTION_GRP_LOCK], [pjsip_tsx_create_uac2], [pjsip.h]) - PJPROJECT_SYMBOL_CHECK([PJSIP_REPLACE_MEDIA_STREAM], [PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE], [pjmedia.h]) - PJPROJECT_SYMBOL_CHECK([PJSIP_GET_DEST_INFO], [pjsip_get_dest_info], [pjsip.h]) - PJPROJECT_SYMBOL_CHECK([PJ_SSL_CERT_LOAD_FROM_FILES2], [pj_ssl_cert_load_from_files2], [pjlib.h]) - PJPROJECT_SYMBOL_CHECK([PJSIP_EXTERNAL_RESOLVER], [pjsip_endpt_set_ext_resolver], [pjsip.h]) + AC_DEFINE([HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK], 1, [Define if your system has pjsip_dlg_create_uas_and_inc_lock declared.]) + AC_DEFINE([HAVE_PJ_TRANSACTION_GRP_LOCK], 1, [Define if your system has pjsip_tsx_create_uac2 declared.]) + AC_DEFINE([HAVE_PJSIP_REPLACE_MEDIA_STREAM], 1, [Define if your system has PJSIP_REPLACE_MEDIA_STREAM declared]) + AC_DEFINE([HAVE_PJSIP_GET_DEST_INFO], 1, [Define if your system has pjsip_get_dest_info declared.]) + AC_DEFINE([HAVE_PJ_SSL_CERT_LOAD_FROM_FILES2], 1, [Define if your system has pj_ssl_cert_load_from_files2 declared.]) + AC_DEFINE([HAVE_PJSIP_EXTERNAL_RESOLVER], 1, [Define if your system has pjsip_endpt_set_ext_resolver declared.]) AC_DEFINE([HAVE_PJSIP_TLS_TRANSPORT_PROTO], 1, [Define if your system has PJSIP_TLS_TRANSPORT_PROTO]) AC_DEFINE([HAVE_PJSIP_EVSUB_GRP_LOCK], 1, [Define if your system has PJSIP_EVSUB_GRP_LOCK]) AC_DEFINE([HAVE_PJSIP_INV_SESSION_REF], 1, [Define if your system has PJSIP_INV_SESSION_REF]) + + AC_SUBST([PJPROJECT_BUNDLED]) + AC_SUBST([PJPROJECT_DIR]) + AC_SUBST([PBX_PJPROJECT]) + AC_SUBST([PJPROJECT_LIB]) + AC_SUBST([PJPROJECT_INCLUDE]) + AC_MSG_RESULT(yes) +]) + +AC_DEFUN([PJPROJECT_CONFIGURE], +[ + if test "$PJPROJECT_BUNDLED" = "yes" ; then + _PJPROJECT_CONFIGURE() + fi ]) + \ No newline at end of file