Add libjwt to third-party

The current STIR/SHAKEN implementation is not currently usable due
to encryption issues. Rather than trying to futz with OpenSSL and
the the current code, we can take advantage of the existing
capabilities of libjwt but we first need to add it to the
third-party infrastructure already in place for jansson and
pjproject.

A few tweaks were also made to the third-party infrastructure as
a whole.  The jansson "dest" install directory was renamed "dist"
to better match convention, and the third-party Makefile was updated
to clean all product directories not just the ones currently in
use.

Resolves: #349
This commit is contained in:
George Joseph 2023-09-21 11:12:31 -06:00 committed by George Joseph
parent b47200ddf0
commit 15ef050d0a
18 changed files with 565 additions and 52 deletions

View File

@ -28,6 +28,7 @@ URIPARSER=@PBX_URIPARSER@
KQUEUE=@PBX_KQUEUE@
LDAP=@PBX_LDAP@
LIBEDIT=@PBX_LIBEDIT@
LIBJWT=@PBX_LIBJWT@
LIBXML2=@PBX_LIBXML2@
LIBXSLT=@PBX_LIBXSLT@
XMLSTARLET=@PBX_XMLSTARLET@

281
configure vendored
View File

@ -705,6 +705,8 @@ DISABLE_XMLDOC
CONFIG_LIBXML2
LIBXML2_LIBS
LIBXML2_CFLAGS
LIBJWT_LIBS
LIBJWT_CFLAGS
JANSSON_LIBS
JANSSON_CFLAGS
UUID_LIB
@ -1049,6 +1051,7 @@ PBX_LIBXML2
LIBXML2_DIR
LIBXML2_INCLUDE
LIBXML2_LIB
LIBJWT_DIR
PBX_LIBEDIT_IS_UNICODE
LIBEDIT_IS_UNICODE_DIR
LIBEDIT_IS_UNICODE_INCLUDE
@ -1162,6 +1165,11 @@ PBX_BFD
BFD_DIR
BFD_INCLUDE
BFD_LIB
LIBJWT_INCLUDE
LIBJWT_LIB
PBX_LIBJWT
LIBJWT_BUNDLED
LIBJWT_CONFIGURE_OPTS
PJPROJECT_INCLUDE
PJPROJECT_LIB
PBX_PJPROJECT
@ -1330,7 +1338,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@ -1362,6 +1369,7 @@ with_externals_cache
enable_coverage
with_jansson_bundled
with_pjproject_bundled
with_libjwt_bundled
with_crypto
with_ssl
with_bfd
@ -1391,6 +1399,7 @@ with_kqueue
with_ldap
with_libcurl
with_libedit
with_libjwt
with_libxml2
with_libxslt
with_lua
@ -1456,11 +1465,14 @@ OPENSSL_CFLAGS
OPENSSL_LIBS
JANSSON_CONFIGURE_OPTS
PJPROJECT_CONFIGURE_OPTS
LIBJWT_CONFIGURE_OPTS
LUA_VERSIONS
LIBEDIT_CFLAGS
LIBEDIT_LIBS
JANSSON_CFLAGS
JANSSON_LIBS
LIBJWT_CFLAGS
LIBJWT_LIBS
LIBXML2_CFLAGS
LIBXML2_LIBS
ILBC_CFLAGS
@ -1517,7 +1529,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}'
@ -1770,15 +1781,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=* \
@ -1916,7 +1918,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.
@ -2069,7 +2071,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]
@ -2130,6 +2131,7 @@ Optional Packages:
--with-jansson-bundled Use bundled jansson library
--with-pjproject-bundled
Use bundled pjproject libraries (default)
--with-libjwt-bundled Use bundled libjwt library
--with-crypto=PATH use OpenSSL Cryptography files in PATH
--with-ssl=PATH use OpenSSL Secure Sockets Layer files in PATH
--with-bfd=PATH use Debug symbol decoding files in PATH
@ -2162,6 +2164,7 @@ Optional Packages:
--with-libcurl=PREFIX look for the curl library in PREFIX/lib and headers
in PREFIX/include
--with-libedit=PATH use NetBSD Editline library files in PATH
--with-libjwt=PATH use LIBJWT files in PATH
--with-libxml2=PATH use LibXML2 files in PATH
--with-libxslt=PATH use LibXSLT files in PATH
--with-lua=PATH use Lua files in PATH
@ -2227,6 +2230,8 @@ Some influential environment variables:
Additional configure options to pass to bundled jansson
PJPROJECT_CONFIGURE_OPTS
Additional configure options to pass to bundled pjproject
LIBJWT_CONFIGURE_OPTS
Additional configure options to pass to bundled libjwt
LUA_VERSIONS
A space separated list of target lua versions to test.
LIBEDIT_CFLAGS
@ -2237,6 +2242,9 @@ Some influential environment variables:
C compiler flags for JANSSON, overriding pkg-config
JANSSON_LIBS
linker flags for JANSSON, overriding pkg-config
LIBJWT_CFLAGS
C compiler flags for LIBJWT, overriding pkg-config
LIBJWT_LIBS linker flags for LIBJWT, overriding pkg-config
LIBXML2_CFLAGS
C compiler flags for LIBXML2, overriding pkg-config
LIBXML2_LIBS
@ -9316,6 +9324,17 @@ if test "${with_pjproject}" = "no" || test "${with_pjproject}" = "n" ; then
PJPROJECT_BUNDLED=no
fi
LIBJWT_BUNDLED=no
# Check whether --with-libjwt-bundled was given.
if test "${with_libjwt_bundled+set}" = set; then :
withval=$with_libjwt_bundled; case "${withval}" in
y|ye|yes) LIBJWT_BUNDLED=yes ;;
*) LIBJWT_BUNDLED=no ;;
esac
fi
#
# OpenSSL stuff has to be done here because we want to pass
# any resulting CFLAGS and LDFLAGS to the bundled pjproject
@ -10062,9 +10081,9 @@ $as_echo "$as_me: Unable to configure ${JANSSON_DIR}" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled jansson" >&5
$as_echo_n "checking for bundled jansson... " >&6; }
JANSSON_INCLUDE=-I${JANSSON_DIR}/dest/include
JANSSON_INCLUDE=-I${JANSSON_DIR}/dist/usr/include
JANSSON_CFLAGS="$JANSSON_INCLUDE"
JANSSON_LIB="-L${JANSSON_DIR}/dest/lib -ljansson"
JANSSON_LIB="-L${JANSSON_DIR}/dist/usr/lib -ljansson"
PBX_JANSSON=1
# We haven't run install yet
@ -10314,6 +10333,99 @@ $as_echo "yes" >&6; }
fi
if test "$LIBJWT_BUNDLED" = "yes" ; then
if test "${ac_mandatory_list#*LIBJWT*}" != "$ac_mandatory_list" ; then
as_fn_error $? "--with-libjwt and --with-libjwt-bundled can't both be specified" "$LINENO" 5
fi
ac_mandatory_list="$ac_mandatory_list LIBJWT"
LIBJWT_DIR="${ac_pwd}/third-party/libjwt"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for embedded libjwt (may have to download)" >&5
$as_echo_n "checking for embedded libjwt (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 libjwt" "$LINENO" 5
fi
if test "${GZIP}" = ":" ; then
as_fn_error $? "gzip is required to extract the libjwt tar file" "$LINENO" 5
fi
if test "${TAR}" = ":" ; then
as_fn_error $? "tar is required to extract the libjwt tar file" "$LINENO" 5
fi
if test "${PATCH}" = ":" ; then
as_fn_error $? "patch is required to configure bundled libjwt" "$LINENO" 5
fi
if test "${SED}" = ":" ; then
as_fn_error $? "sed is required to configure bundled libjwt" "$LINENO" 5
fi
if test "${NM}" = ":" ; then
as_fn_error $? "nm is required to build bundled libjwt" "$LINENO" 5
fi
if test "${MD5}" = ":" ; then
as_fn_error $? "md5sum is required to build bundled libjwt" "$LINENO" 5
fi
if test "${CAT}" = ":" ; then
as_fn_error $? "cat is required to build bundled libjwt" "$LINENO" 5
fi
if test "${CUT}" = ":" ; then
as_fn_error $? "cut is required to build bundled libjwt" "$LINENO" 5
fi
if test "${GREP}" = ":" ; then
as_fn_error $? "grep is required to build bundled libjwt" "$LINENO" 5
fi
this_host=$(./config.sub $(./config.guess))
if test "$build" != "$this_host" ; then
LIBJWT_CONFIGURE_OPTS+=" --build=$build_alias"
fi
if test "$host" != "$this_host" ; then
LIBJWT_CONFIGURE_OPTS+=" --host=$host_alias"
fi
export TAR PATCH SED NM EXTERNALS_CACHE_DIR AST_DOWNLOAD_CACHE DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT CUT GREP
export NOISY_BUILD
export JANSSON_CFLAGS
export JANSSON_LIBS="${JANSSON_LIB}"
${GNU_MAKE} --quiet --no-print-directory -C ${LIBJWT_DIR} \
LIBJWT_CONFIGURE_OPTS="$LIBJWT_CONFIGURE_OPTS" \
EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" \
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 ${LIBJWT_DIR}" >&5
$as_echo "$as_me: Unable to configure ${LIBJWT_DIR}" >&6;}
as_fn_error $? "Re-run the ./configure command with 'NOISY_BUILD=yes' appended to see error details." "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundled libjwt" >&5
$as_echo_n "checking for bundled libjwt... " >&6; }
LIBJWT_INCLUDE=-I${LIBJWT_DIR}/dist/usr/include
LIBJWT_CFLAGS="$LIBJWT_INCLUDE"
LIBJWT_LIB="-L${LIBJWT_DIR}/dist/usr/lib -ljwt"
PBX_LIBJWT=1
# We haven't run install yet
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define HAVE_LIBJWT_BUNDLED 1" >>confdefs.h
fi
# AST_EXT_LIB_SETUP is used to tell configure to handle variables for
# various packages.
@ -11572,6 +11684,38 @@ PBX_LIBEDIT_IS_UNICODE=0
LIBJWT_DESCRIP="LIBJWT"
LIBJWT_OPTION="libjwt"
PBX_LIBJWT=0
# Check whether --with-libjwt was given.
if test "${with_libjwt+set}" = set; then :
withval=$with_libjwt;
case ${withval} in
n|no)
USE_LIBJWT=no
# -1 is a magic value used by menuselect to know that the package
# was disabled, other than 'not found'
PBX_LIBJWT=-1
;;
y|ye|yes)
ac_mandatory_list="${ac_mandatory_list} LIBJWT"
;;
*)
LIBJWT_DIR="${withval}"
ac_mandatory_list="${ac_mandatory_list} LIBJWT"
;;
esac
fi
LIBXML2_DESCRIP="LibXML2"
LIBXML2_OPTION="libxml2"
PBX_LIBXML2=0
@ -14560,6 +14704,101 @@ else
PBX_JANSSON=1
fi
source ./third-party/versions.mak
# Find required JWT support if bundled is not enabled.
if test "$LIBJWT_BUNDLED" = "no" ; then
if test "x${PBX_LIBJWT}" != "x1" -a "${USE_LIBJWT}" != "no"; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBJWT" >&5
$as_echo_n "checking for LIBJWT... " >&6; }
if test -n "$LIBJWT_CFLAGS"; then
pkg_cv_LIBJWT_CFLAGS="$LIBJWT_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjwt >= \$LIBJWT_VERSION\""; } >&5
($PKG_CONFIG --exists --print-errors "libjwt >= $LIBJWT_VERSION") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBJWT_CFLAGS=`$PKG_CONFIG --cflags "libjwt >= $LIBJWT_VERSION" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$LIBJWT_LIBS"; then
pkg_cv_LIBJWT_LIBS="$LIBJWT_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjwt >= \$LIBJWT_VERSION\""; } >&5
($PKG_CONFIG --exists --print-errors "libjwt >= $LIBJWT_VERSION") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LIBJWT_LIBS=`$PKG_CONFIG --libs "libjwt >= $LIBJWT_VERSION" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
LIBJWT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
else
LIBJWT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libjwt >= $LIBJWT_VERSION" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$LIBJWT_PKG_ERRORS" >&5
PBX_LIBJWT=0
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
PBX_LIBJWT=0
else
LIBJWT_CFLAGS=$pkg_cv_LIBJWT_CFLAGS
LIBJWT_LIBS=$pkg_cv_LIBJWT_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
PBX_LIBJWT=1
LIBJWT_INCLUDE=$(echo ${LIBJWT_CFLAGS} | $SED -e "s|-std=c99||g")
LIBJWT_LIB="$LIBJWT_LIBS"
$as_echo "#define HAVE_LIBJWT 1" >>confdefs.h
fi
fi
else
PBX_LIBJWT=1
fi
# See if clock_gettime is in librt
if test "x${PBX_RT}" != "x1" -a "${USE_RT}" != "no"; then
@ -15280,7 +15519,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
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
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@ -15326,7 +15565,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
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
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@ -15350,7 +15589,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
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
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@ -15395,7 +15634,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
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
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@ -15419,7 +15658,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
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
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@ -16684,8 +16923,6 @@ main ()
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
free (data);
free (data3);
return 0;
}
_ACEOF

View File

@ -463,6 +463,15 @@ if test "${with_pjproject}" = "no" || test "${with_pjproject}" = "n" ; then
PJPROJECT_BUNDLED=no
fi
LIBJWT_BUNDLED=no
AC_ARG_WITH([libjwt-bundled],
[AS_HELP_STRING([--with-libjwt-bundled],
[Use bundled libjwt library])],
[case "${withval}" in
y|ye|yes) LIBJWT_BUNDLED=yes ;;
*) LIBJWT_BUNDLED=no ;;
esac])
#
# OpenSSL stuff has to be done here because we want to pass
# any resulting CFLAGS and LDFLAGS to the bundled pjproject
@ -553,6 +562,7 @@ AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
AST_LIBCURL_CHECK_CONFIG([], [7.10.1])
AST_EXT_LIB_SETUP([LIBEDIT], [NetBSD Editline library], [libedit])
AST_EXT_LIB_SETUP_OPTIONAL([LIBEDIT_IS_UNICODE], [Libedit compiled for unicode], [LIBEDIT], [libedit])
AST_EXT_LIB_SETUP([LIBJWT], [LIBJWT], [libjwt])
AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2])
AST_EXT_LIB_SETUP([LIBXSLT], [LibXSLT], [libxslt])
AST_EXT_LIB_SETUP_OPTIONAL([LIBXSLT_CLEANUP], [LibXSLT Library Cleanup Function], [LIBXSLT], [libxslt])
@ -736,6 +746,14 @@ else
PBX_JANSSON=1
fi
source ./third-party/versions.mak
# Find required JWT support if bundled is not enabled.
if test "$LIBJWT_BUNDLED" = "no" ; then
AST_PKG_CONFIG_CHECK([LIBJWT], [libjwt >= $LIBJWT_VERSION])
else
PBX_LIBJWT=1
fi
# See if clock_gettime is in librt
AST_EXT_LIB_CHECK([RT], [rt], [clock_gettime], [])

View File

@ -432,6 +432,12 @@
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H
/* Define if your system has the LIBJWT libraries. */
#undef HAVE_LIBJWT
/* Define if your system has LIBJWT_BUNDLED */
#undef HAVE_LIBJWT_BUNDLED
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM

View File

@ -186,6 +186,11 @@ JANSSON_BUNDLED=@JANSSON_BUNDLED@
JANSSON_INCLUDE=@JANSSON_INCLUDE@
JANSSON_LIB=@JANSSON_LIB@
LIBJWT_BUNDLED=@LIBJWT_BUNDLED@
LIBJWT_INCLUDE=@LIBJWT_INCLUDE@
LIBJWT_LIB=@LIBJWT_LIB@
LIBJWT_CONFIGURE_OPTS=@LIBJWT_CONFIGURE_OPTS@
URIPARSER_INCLUDE=@URIPARSER_INCLUDE@
URIPARSER_LIB=@URIPARSER_LIB@

14
menuselect/configure vendored
View File

@ -698,7 +698,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@ -782,7 +781,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}'
@ -1035,15 +1033,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=* \
@ -1181,7 +1170,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.
@ -1334,7 +1323,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]

29
third-party/Makefile vendored
View File

@ -2,6 +2,8 @@
-include ../makeopts
include Makefile.rules
TP_ALL_SUBDIRS := jansson pjproject libjwt
TP_SUBDIRS :=
# Sub directories that contain special install/uninstall targets must be explicitly listed
# to prevent accidentally running the package's default install target.
@ -17,18 +19,31 @@ TP_SUBDIRS += jansson
TP_INSTALL_SUBDIRS += jansson
endif
.PHONY: all dist-clean distclean install clean moduleinfo makeopts uninstall $(TP_SUBDIRS)
ifneq ($(TP_SUBDIRS),)
ifeq ($(LIBJWT_BUNDLED),yes)
TP_SUBDIRS += libjwt
TP_INSTALL_SUBDIRS += libjwt
libjwt: jansson
export JANSSON_CFLAGS=$(JANSSON_INCLUDE)
export JANSSON_LIBS=$(JANSSON_LIB)
endif
override MAKECMDGOALS?=all
MAKECMDGOALS:=$(subst dist-clean,distclean,$(MAKECMDGOALS))
all distclean dist-clean install uninstall clean : $(TP_SUBDIRS)
install uninstall: $(TP_INSTALL_SUBDIRS)
.PHONY: all dist-clean distclean install clean moduleinfo makeopts uninstall $(TP_ALL_SUBDIRS)
$(TP_SUBDIRS):
ifeq ($(findstring clean,$(MAKECMDGOALS)),clean)
distclean dist-clean clean : $(TP_ALL_SUBDIRS)
TP_RUN_SUBDIRS := $(TP_ALL_SUBDIRS)
else
all install uninstall : $(TP_SUBDIRS)
install uninstall: $(TP_INSTALL_SUBDIRS)
TP_RUN_SUBDIRS := $(TP_SUBDIRS)
endif
ifneq ($(TP_RUN_SUBDIRS),)
$(TP_RUN_SUBDIRS):
+$(CMD_PREFIX) $(SUBMAKE) -C $@ $(MAKECMDGOALS)
endif

View File

@ -7,4 +7,5 @@ AC_DEFUN([THIRD_PARTY_CONFIGURE],
[
JANSSON_CONFIGURE()
PJPROJECT_CONFIGURE()
LIBJWT_CONFIGURE()
])

View File

@ -1,4 +1,4 @@
source/
dest/
dist/
**.bz2
.rebuild_needed

View File

@ -39,7 +39,7 @@ ifeq ($(SPECIAL_TARGETS),)
$(warning ASTTOPDIR/menuselect hasn't been run yet. Can't find debug options.)
endif
all: dest/include/jansson.h
all: dist/usr/lib/libjansson.a
else
all:
endif
@ -57,10 +57,10 @@ endif
ECHO_PREFIX := $(ECHO_PREFIX) echo '[jansson] '
SHELL_ECHO_PREFIX := echo '[jansson] '
dest/include/jansson.h: source/config.status
dist/usr/lib/libjansson.a: source/config.status
$(ECHO_PREFIX) Building bundled jansson.
$(CMD_PREFIX) (cd source; make $(REALLY_QUIET))
$(CMD_PREFIX) (cd source; make install DESTDIR= $(REALLY_QUIET))
$(CMD_PREFIX) (cd source; make install DESTDIR=$(JANSSON_DIR)/dist $(REALLY_QUIET))
.DELETE_ON_ERROR:
@ -87,7 +87,7 @@ source/.unpacked: $(DOWNLOAD_DIR)/$(TARBALL_FILE)
source/config.status: source/.unpacked Makefile.rules .rebuild_needed
$(ECHO_PREFIX) Configuring
$(CMD_PREFIX) (cd source ; ./configure $(QUIET_CONFIGURE) $(JANSSON_CONFIG_OPTS) --disable-shared \
--enable-static --prefix=$(JANSSON_DIR)/dest --libdir=$(JANSSON_DIR)/dest/lib CFLAGS="$(OPTIMIZE_CFLAGS)")
--enable-static --prefix=/usr --libdir=/usr/lib CFLAGS="$(OPTIMIZE_CFLAGS) -fPIC")
configure: source/config.status
@ -96,8 +96,9 @@ uninstall:
clean:
$(ECHO_PREFIX) Cleaning
+-$(CMD_PREFIX) rm -rf dist
+-$(CMD_PREFIX) test -d source && $(SUBMAKE) -C source clean $(REALLY_QUIET) || :
distclean:
$(ECHO_PREFIX) Distcleaning
-$(CMD_PREFIX) rm -rf source jansson-*.tar.bz2 .rebuild_needed
-$(CMD_PREFIX) rm -rf dist source jansson-*.tar.bz2 .rebuild_needed

View File

@ -69,9 +69,9 @@ AC_DEFUN([_JANSSON_CONFIGURE],
AC_MSG_CHECKING(for bundled jansson)
JANSSON_INCLUDE=-I${JANSSON_DIR}/dest/include
JANSSON_INCLUDE=-I${JANSSON_DIR}/dist/usr/include
JANSSON_CFLAGS="$JANSSON_INCLUDE"
JANSSON_LIB="-L${JANSSON_DIR}/dest/lib -ljansson"
JANSSON_LIB="-L${JANSSON_DIR}/dist/usr/lib -ljansson"
PBX_JANSSON=1
# We haven't run install yet

4
third-party/libjwt/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
source/
dist/
**.gz
.rebuild_needed

124
third-party/libjwt/Makefile vendored Normal file
View File

@ -0,0 +1,124 @@
.PHONY: all install clean distclean configure
.NOTPARALLEL:
include ../versions.mak
export LIBJWT_DIR := $(shell pwd -P)
JANSSON_DIR := $(shell realpath $(LIBJWT_DIR)/../jansson)
SPECIAL_TARGETS :=
ifneq ($(findstring configure,$(MAKECMDGOALS)),)
# Run from $(ASTTOPDIR)/configure
SPECIAL_TARGETS += configure
endif
ifeq ($(findstring clean,$(MAKECMDGOALS)),clean)
# clean or distclean
SPECIAL_TARGETS += clean
endif
ifeq ($(findstring uninstall,$(MAKECMDGOALS)),uninstall)
SPECIAL_TARGETS += uninstall
endif
ifneq ($(wildcard ../../makeopts),)
include ../../makeopts
endif
ifeq ($(SPECIAL_TARGETS),)
# Run locally or from $(ASTTOPDIR)/Makefile. All include files should be present
ifeq ($(wildcard ../../makeopts),)
$(error ASTTOPDIR/configure hasn't been run)
endif
ifeq ($(LIBJWT_BUNDLED),yes)
ifneq ($(wildcard ../../menuselect.makeopts),)
include ../../menuselect.makeopts
else
$(warning ASTTOPDIR/menuselect hasn't been run yet. Can't find debug options.)
endif
all: dist/usr/lib/libjwt.a
else
all:
endif
endif
include ../../Makefile.rules
include ../Makefile.rules
include Makefile.rules
OPTIMIZE_CFLAGS = -g3
ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
OPTIMIZE_CFLAGS += $(OPTIMIZE)
endif
ECHO_PREFIX := $(ECHO_PREFIX) echo '[libjwt] '
SHELL_ECHO_PREFIX := echo '[libjwt] '
dist/usr/lib/libjwt.a: source/config.status
$(ECHO_PREFIX) Building bundled libjwt.
$(CMD_PREFIX) (cd source; make $(REALLY_QUIET))
$(CMD_PREFIX) (cd source; make install DESTDIR=$(LIBJWT_DIR)/dist $(REALLY_QUIET))
ifeq ($(JANSSON_BUNDLED),yes)
# Modules that need to use json manipulation functions will do
# so through the ast_json wrappers which cause the main asterisk
# executable to link to either the system implementation of jansson
# or the bundled jansson. libjwt also needs to call jansson functions
# directly and if we're not using the bundled version of jansson,
# this works fine bcause the dynamic linker can get the symbols
# directly from the system-installed version of jansson when the
# module using libjwt loads. If we're using bundled jansson however,
# those symbols exist only in the main asterisk executable and a
# library can't resolve against them. The result is that a module
# making jwt_ calls will fail to load at runtime with unresolved
# json_ symbols. To address this, we create a combined library
# containing both bundled libjwt and bundled jansson so a module
# will have all symbols resolved correctly.
$(CMD_PREFIX) mv dist/usr/lib/libjwt.a dist/usr/lib/libjwt_orig.a
$(CMD_PREFIX) cd dist/usr/lib ; $(AR) -rcsT libjwt.a libjwt_orig.a \
$(JANSSON_DIR)/dist/usr/lib/libjansson.a
endif
.DELETE_ON_ERROR:
$(DOWNLOAD_DIR)/$(TARBALL_FILE): ../versions.mak
$(CMD_PREFIX) ($(TARBALL_EXISTS) && $(TARBALL_VERIFY) && touch $@) || (rm -rf $@ ;\
$(TARBALL_DOWNLOAD)) || (rm -rf $@ ;\
$(SHELL_ECHO_PREFIX) Retrying download ; $(TARBALL_DOWNLOAD))
source/.unpacked: $(DOWNLOAD_DIR)/$(TARBALL_FILE)
$(CMD_PREFIX) $(TARBALL_VERIFY) || (rm -rf $@ ;\
$(SHELL_ECHO_PREFIX) Retrying download ; $(TARBALL_DOWNLOAD))
$(ECHO_PREFIX) Unpacking $<
-@rm -rf source libjwt-*/ >/dev/null 2>&1
$(CMD_PREFIX) $(TAR) -xf $<
@mv libjwt-$(LIBJWT_VERSION) source
$(ECHO_PREFIX) Applying patches "$(realpath patches)" "$(realpath .)/source"
$(CMD_PREFIX) ../apply_patches $(QUIET_CONFIGURE) "$(realpath patches)" "$(realpath .)/source"
-@touch source/.unpacked
.rebuild_needed: $(wildcard ../../.lastclean)
$(ECHO_PREFIX) Rebuilding
$(CMD_PREFIX) $(MAKE) clean $(REALLY_QUIET)
source/config.status: source/.unpacked Makefile.rules .rebuild_needed
$(ECHO_PREFIX) Configuring
$(CMD_PREFIX) (cd source ; ./configure $(QUIET_CONFIGURE) $(LIBJWT_CONFIG_OPTS) --disable-shared \
--enable-static --prefix=/usr --libdir=/usr/lib CFLAGS="$(OPTIMIZE_CFLAGS) -fPIC")
configure: source/config.status
install:
uninstall:
clean:
$(ECHO_PREFIX) Cleaning
+-$(CMD_PREFIX) rm -rf dist
+-$(CMD_PREFIX) test -d source && $(SUBMAKE) -C source clean $(REALLY_QUIET) || :
distclean:
$(ECHO_PREFIX) Distcleaning
-$(CMD_PREFIX) rm -rf dist source libjwt-*.tar.gz .rebuild_needed

9
third-party/libjwt/Makefile.rules vendored Normal file
View File

@ -0,0 +1,9 @@
PACKAGE_URL ?= https://raw.githubusercontent.com/asterisk/third-party/master/libjwt/$(LIBJWT_VERSION)
TARBALL_FILE = libjwt-$(LIBJWT_VERSION).tar.gz
# LIBJWT_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).
LIBJWT_CONFIG_OPTS = --disable-doxygen-doc --disable-doxygen-dot --without-examples $(LIBJWT_CONFIGURE_OPTS)

95
third-party/libjwt/configure.m4 vendored Normal file
View File

@ -0,0 +1,95 @@
#
# If this file is changed, be sure to run ASTTOPDIR/bootstrap.sh
# before committing.
#
AC_DEFUN([_LIBJWT_CONFIGURE],
[
if test "${ac_mandatory_list#*LIBJWT*}" != "$ac_mandatory_list" ; then
AC_MSG_ERROR(--with-libjwt and --with-libjwt-bundled can't both be specified)
fi
ac_mandatory_list="$ac_mandatory_list LIBJWT"
LIBJWT_DIR="${ac_pwd}/third-party/libjwt"
AC_MSG_CHECKING(for embedded libjwt (may have to download))
AC_MSG_RESULT(configuring)
if test "x${DOWNLOAD_TO_STDOUT}" = "x" ; then
AC_MSG_ERROR(A download utility (wget, curl, or fetch) is required to download bundled libjwt)
fi
if test "${GZIP}" = ":" ; then
AC_MSG_ERROR(gzip is required to extract the libjwt tar file)
fi
if test "${TAR}" = ":" ; then
AC_MSG_ERROR(tar is required to extract the libjwt tar file)
fi
if test "${PATCH}" = ":" ; then
AC_MSG_ERROR(patch is required to configure bundled libjwt)
fi
if test "${SED}" = ":" ; then
AC_MSG_ERROR(sed is required to configure bundled libjwt)
fi
if test "${NM}" = ":" ; then
AC_MSG_ERROR(nm is required to build bundled libjwt)
fi
if test "${MD5}" = ":" ; then
AC_MSG_ERROR(md5sum is required to build bundled libjwt)
fi
if test "${CAT}" = ":" ; then
AC_MSG_ERROR(cat is required to build bundled libjwt)
fi
if test "${CUT}" = ":" ; then
AC_MSG_ERROR(cut is required to build bundled libjwt)
fi
if test "${GREP}" = ":" ; then
AC_MSG_ERROR(grep is required to build bundled libjwt)
fi
AC_ARG_VAR([LIBJWT_CONFIGURE_OPTS],[Additional configure options to pass to bundled libjwt])
this_host=$(./config.sub $(./config.guess))
if test "$build" != "$this_host" ; then
LIBJWT_CONFIGURE_OPTS+=" --build=$build_alias"
fi
if test "$host" != "$this_host" ; then
LIBJWT_CONFIGURE_OPTS+=" --host=$host_alias"
fi
export TAR PATCH SED NM EXTERNALS_CACHE_DIR AST_DOWNLOAD_CACHE DOWNLOAD_TO_STDOUT DOWNLOAD_TIMEOUT DOWNLOAD MD5 CAT CUT GREP
export NOISY_BUILD
export JANSSON_CFLAGS
export JANSSON_LIBS="${JANSSON_LIB}"
${GNU_MAKE} --quiet --no-print-directory -C ${LIBJWT_DIR} \
LIBJWT_CONFIGURE_OPTS="$LIBJWT_CONFIGURE_OPTS" \
EXTERNALS_CACHE_DIR="${EXTERNALS_CACHE_DIR:-${AST_DOWNLOAD_CACHE}}" \
configure
if test $? -ne 0 ; then
AC_MSG_RESULT(failed)
AC_MSG_NOTICE(Unable to configure ${LIBJWT_DIR})
AC_MSG_ERROR(Re-run the ./configure command with 'NOISY_BUILD=yes' appended to see error details.)
fi
AC_MSG_CHECKING(for bundled libjwt)
LIBJWT_INCLUDE=-I${LIBJWT_DIR}/dist/usr/include
LIBJWT_CFLAGS="$LIBJWT_INCLUDE"
LIBJWT_LIB="-L${LIBJWT_DIR}/dist/usr/lib -ljwt"
PBX_LIBJWT=1
# We haven't run install yet
AC_SUBST([LIBJWT_BUNDLED])
AC_SUBST([PBX_LIBJWT])
AC_SUBST([LIBJWT_LIB])
AC_SUBST([LIBJWT_INCLUDE])
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_LIBJWT_BUNDLED], 1, [Define if your system has LIBJWT_BUNDLED])
])
AC_DEFUN([LIBJWT_CONFIGURE],
[
if test "$LIBJWT_BUNDLED" = "yes" ; then
_LIBJWT_CONFIGURE()
fi
])

View File

@ -0,0 +1 @@
f417ef3fe6ee14c0befd86e6836dc4c9 libjwt-1.15.3.tar.gz

4
third-party/libjwt/patches/README vendored Normal file
View File

@ -0,0 +1,4 @@
Patches should be added here once merged to the upstream libjwt project at
https://github.com/benmcollins/libjwt. Patch filenames should be generated by
running 'git format-patch ...' from the libjwt repository, then
copying the required patches to this folder.

View File

@ -1,2 +1,6 @@
JANSSON_VERSION = 2.14
PJPROJECT_VERSION = 2.13.1
# This file is also 'sourced' by the
# configure script so it must follow 'shell'
# syntax as well as 'make' syntax.
JANSSON_VERSION=2.14
PJPROJECT_VERSION=2.13.1
LIBJWT_VERSION=1.15.3