Skip to content
Snippets Groups Projects
Commit f573e599 authored by George Joseph's avatar George Joseph
Browse files

pjproject_bundled: Allow passing configure options to bundled

There wasn't any good way to pass options like --host or --build
down to the pjproject configure which makes cross-compiling difficult.

* Added a new PJPROJECT_CONFIGURE_OPTS environment variable which
  can be used to pass arbitrary options to pjproject configure.
* Automatically set the pjproject configure --host and --build
  options to match those supplied for the asterisk configure.

ASTERISK-27097 #close
Reported-by: Kinsey Moore

Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e
parent 36697182
No related branches found
No related tags found
No related merge requests found
...@@ -59,6 +59,14 @@ chan_pjsip ...@@ -59,6 +59,14 @@ chan_pjsip
from the SDP, unless the remote side sends a different codec and we will from the SDP, unless the remote side sends a different codec and we will
switch to match. switch to match.
Build System
------------------
* Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used
to pass arbitrary options to the bundled pjproject configure.
* Automatically set the bundled pjproject configure --host and --build
options to match those supplied for the asterisk configure.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------ --- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
......
...@@ -1219,6 +1219,7 @@ PJPROJECT_LIB ...@@ -1219,6 +1219,7 @@ PJPROJECT_LIB
PBX_PJPROJECT PBX_PJPROJECT
PJPROJECT_DIR PJPROJECT_DIR
PJPROJECT_BUNDLED PJPROJECT_BUNDLED
PJPROJECT_CONFIGURE_OPTS
AST_C_COMPILER_FAMILY AST_C_COMPILER_FAMILY
AST_CLANG_BLOCKS AST_CLANG_BLOCKS
AST_CLANG_BLOCKS_LIBS AST_CLANG_BLOCKS_LIBS
...@@ -1355,7 +1356,6 @@ infodir ...@@ -1355,7 +1356,6 @@ infodir
docdir docdir
oldincludedir oldincludedir
includedir includedir
runstatedir
localstatedir localstatedir
sharedstatedir sharedstatedir
sysconfdir sysconfdir
...@@ -1484,6 +1484,7 @@ CXX ...@@ -1484,6 +1484,7 @@ CXX
CXXFLAGS CXXFLAGS
CCC CCC
CXXCPP CXXCPP
PJPROJECT_CONFIGURE_OPTS
PKG_CONFIG PKG_CONFIG
PKG_CONFIG_PATH PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR PKG_CONFIG_LIBDIR
...@@ -1539,7 +1540,6 @@ datadir='${datarootdir}' ...@@ -1539,7 +1540,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc' sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com' sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var' localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
...@@ -1792,15 +1792,6 @@ do ...@@ -1792,15 +1792,6 @@ do
| -silent | --silent | --silen | --sile | --sil) | -silent | --silent | --silen | --sile | --sil)
silent=yes ;; 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) -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;; ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
...@@ -1938,7 +1929,7 @@ fi ...@@ -1938,7 +1929,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \ datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir libdir localedir mandir
do do
eval ac_val=\$$ac_var eval ac_val=\$$ac_var
# Remove trailing slashes. # Remove trailing slashes.
...@@ -2091,7 +2082,6 @@ Fine tuning of the installation directories: ...@@ -2091,7 +2082,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var] --localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib] --libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include] --includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]
...@@ -2242,6 +2232,8 @@ Some influential environment variables: ...@@ -2242,6 +2232,8 @@ Some influential environment variables:
CXX C++ compiler command CXX C++ compiler command
CXXFLAGS C++ compiler flags CXXFLAGS C++ compiler flags
CXXCPP C++ preprocessor CXXCPP C++ preprocessor
PJPROJECT_CONFIGURE_OPTS
Additional configure options to pass to bundled pjproject
PKG_CONFIG path to pkg-config utility PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH PKG_CONFIG_PATH
directories to add to pkg-config's search path directories to add to pkg-config's search path
...@@ -9315,20 +9307,33 @@ $as_echo "configuring" >&6; } ...@@ -9315,20 +9307,33 @@ $as_echo "configuring" >&6; }
as_fn_error $? "cat is required to build bundled pjproject" "$LINENO" 5 as_fn_error $? "cat is required to build bundled pjproject" "$LINENO" 5
fi fi
   
this_host=$(./config.sub $(./config.guess))
if test "$build" != "$this_host" ; then
PJPROJECT_CONFIGURE_OPTS+=" --build=$build"
fi
if test "$host" != "$this_host" ; then
PJPROJECT_CONFIGURE_OPTS+=" --host=$host"
fi
export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} EXTERNALS_CACHE_DIR=${EXTERNALS_CACHE_DIR} configure export NOISY_BUILD
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} \
PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" \
EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" \
configure
if test $? -ne 0 ; then if test $? -ne 0 ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
$as_echo "failed" >&6; } $as_echo "failed" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: Unable to configure ${PJPROJECT_DIR}" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Unable to configure ${PJPROJECT_DIR}" >&5
$as_echo "$as_me: Unable to configure ${PJPROJECT_DIR}" >&6;} $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 as_fn_error $? "Re-run the ./configure command with 'NOISY_BUILD=yes' appended to see error details." "$LINENO" 5
fi fi
   
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled pjproject" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled pjproject" >&5
$as_echo_n "checking for bundled pjproject... " >&6; } $as_echo_n "checking for bundled pjproject... " >&6; }
   
PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} EXTERNALS_CACHE_DIR=${EXTERNALS_CACHE_DIR} echo_cflags) PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" echo_cflags)
PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE" PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE"
PBX_PJPROJECT=1 PBX_PJPROJECT=1
   
...@@ -14910,7 +14915,7 @@ else ...@@ -14910,7 +14915,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
...@@ -14956,7 +14961,7 @@ else ...@@ -14956,7 +14961,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
...@@ -14980,7 +14985,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ...@@ -14980,7 +14985,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
...@@ -15025,7 +15030,7 @@ else ...@@ -15025,7 +15030,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
...@@ -15049,7 +15054,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ...@@ -15049,7 +15054,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
......
#
# If this file is changed, be sure to run ASTTOPDIR/bootstrap.sh
# before committing.
#
AC_DEFUN([THIRD_PARTY_CONFIGURE], AC_DEFUN([THIRD_PARTY_CONFIGURE],
[ [
......
PJPROJECT_URL ?= https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/$(PJPROJECT_VERSION) PJPROJECT_URL ?= https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/$(PJPROJECT_VERSION)
# PJPROJECT_CONFIGURE_OPTS could come from the command line or could be
# set/modified by configure.m4 if the build or host tuples aren't the same
# as the current build environment (cross-compile).
# Even though we're not installing pjproject, we're setting prefix to /opt/pjproject to be safe # Even though we're not installing pjproject, we're setting prefix to /opt/pjproject to be safe
PJPROJECT_CONFIG_OPTS = --prefix=/opt/pjproject \ PJPROJECT_CONFIG_OPTS = $(PJPROJECT_CONFIGURE_OPTS) --prefix=/opt/pjproject \
--disable-speex-codec \ --disable-speex-codec \
--disable-speex-aec \ --disable-speex-aec \
--disable-speex-aec \ --disable-speex-aec \
......
#
# If this file is changed, be sure to run ASTTOPDIR/bootstrap.sh
# before committing.
#
AC_DEFUN([_PJPROJECT_CONFIGURE], AC_DEFUN([_PJPROJECT_CONFIGURE],
[ [
if test "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then if test "${ac_mandatory_list#*PJPROJECT*}" != "$ac_mandatory_list" ; then
...@@ -35,17 +40,30 @@ AC_DEFUN([_PJPROJECT_CONFIGURE], ...@@ -35,17 +40,30 @@ AC_DEFUN([_PJPROJECT_CONFIGURE],
AC_MSG_ERROR(cat is required to build bundled pjproject) AC_MSG_ERROR(cat is required to build bundled pjproject)
fi fi
AC_ARG_VAR([PJPROJECT_CONFIGURE_OPTS],[Additional configure options to pass to bundled pjproject])
this_host=$(./config.sub $(./config.guess))
if test "$build" != "$this_host" ; then
PJPROJECT_CONFIGURE_OPTS+=" --build=$build"
fi
if test "$host" != "$this_host" ; then
PJPROJECT_CONFIGURE_OPTS+=" --host=$host"
fi
export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT export TAR PATCH SED NM EXTERNALS_CACHE_DIR DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} EXTERNALS_CACHE_DIR=${EXTERNALS_CACHE_DIR} configure export NOISY_BUILD
${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} \
PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" \
EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" \
configure
if test $? -ne 0 ; then if test $? -ne 0 ; then
AC_MSG_RESULT(failed) AC_MSG_RESULT(failed)
AC_MSG_NOTICE(Unable to configure ${PJPROJECT_DIR}) 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.) AC_MSG_ERROR(Re-run the ./configure command with 'NOISY_BUILD=yes' appended to see error details.)
fi fi
AC_MSG_CHECKING(for bundled pjproject) AC_MSG_CHECKING(for bundled pjproject)
PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} EXTERNALS_CACHE_DIR=${EXTERNALS_CACHE_DIR} echo_cflags) PJPROJECT_INCLUDE=$(${GNU_MAKE} --quiet --no-print-directory -C ${PJPROJECT_DIR} PJPROJECT_CONFIGURE_OPTS="$PJPROJECT_CONFIGURE_OPTS" EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR}" echo_cflags)
PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE" PJPROJECT_CFLAGS="$PJPROJECT_INCLUDE"
PBX_PJPROJECT=1 PBX_PJPROJECT=1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment