LIBS="${ast_ext_lib_check_shared_saved_libs}"
fi
])
+
+# Check for existence of a given package ($1), either looking up a function
+# in a library, or, if no function is supplied, only check for the
+# existence of the header files. Then compile, link and run the supplied
+# code fragment to make the final determination.
+
+# AST_EXT_LIB_EXTRA_CHECK([package], [library], [function], [header],
+# [extra libs], [extra cflags], [AC_LANG_PROGRAM(extra check code...)],
+# ["checking for" display string], ["HAVE_package_" extra variable to set])
+AC_DEFUN([AST_EXT_LIB_EXTRA_CHECK],
+[
+if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
+ pbxlibdir=""
+ # if --with-$1=DIR has been specified, use it.
+ if test "x${$1_DIR}" != "x"; then
+ if test -d ${$1_DIR}/lib; then
+ pbxlibdir="-L${$1_DIR}/lib"
+ else
+ pbxlibdir="-L${$1_DIR}"
+ fi
+ fi
+ m4_ifval([$3], [
+ ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
+ CFLAGS="${CFLAGS} $6"
+ AC_CHECK_LIB([$2], [$3], [AST_$1_FOUND=yes], [AST_$1_FOUND=no], [${pbxlibdir} $5])
+ CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
+ ], [
+ # empty lib, assume only headers
+ AST_$1_FOUND=yes
+ ])
+
+ # now check for the header.
+ if test "${AST_$1_FOUND}" = "yes"; then
+ $1_LIB="${pbxlibdir} -l$2 $5"
+ # if --with-$1=DIR has been specified, use it.
+ if test "x${$1_DIR}" != "x"; then
+ $1_INCLUDE="-I${$1_DIR}/include"
+ fi
+ $1_INCLUDE="${$1_INCLUDE} $6"
+ m4_ifval([$4], [
+ # check for the header
+ ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
+ AC_CHECK_HEADER([$4], [$1_HEADER_FOUND=1], [$1_HEADER_FOUND=0])
+ CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
+ ], [
+ # no header, assume found
+ $1_HEADER_FOUND="1"
+ ])
+ fi
+ # Validate the package with the supplied code.
+ if test "x${$1_HEADER_FOUND}" = "x1" ; then
+ AC_MSG_CHECKING(for $8)
+ ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
+ ast_ext_lib_check_saved_LIBS="${LIBS}"
+ LIBS="${$1_LIB}"
+ AC_LINK_IFELSE(
+ [$7],
+ [
+ if test "x${cross_compiling}" = "xyes" ; then
+ $1_VALIDATED="1"
+ AC_MSG_RESULT([yes (guessed for cross-compile)])
+ else
+ ./conftest$EXEEXT
+ if test $? -eq 0 ; then
+ $1_VALIDATED="1"
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ fi
+ ],
+ [
+ AC_MSG_RESULT(no)
+ ]
+ )
+ CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
+ LIBS="${ast_ext_lib_check_saved_LIBS}"
+ fi
+
+ if test "x${$1_VALIDATED}" = "x1" ; then
+ m4_ifval([$3], [], [
+ # only checking headers -> no library
+ $1_LIB=""
+ ])
+ PBX_$1=1
+ cat >>confdefs.h <<_ACEOF
+[@%:@define] HAVE_$1 1
+_ACEOF
+ m4_ifval([$9], [
+ cat >>confdefs.h <<_ACEOF
+[@%:@define] HAVE_$1_$9 1
+_ACEOF
+ ])
+ else
+ $1_LIB=""
+ $1_INCLUDE=""
+ fi
+fi
+m4_ifval([$9], [AH_TEMPLATE(m4_bpatsubst([[HAVE_$1_$9]], [(.*)]), [Define if $8])])
+])
docdir
oldincludedir
includedir
-runstatedir
localstatedir
sharedstatedir
sysconfdir
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
| -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=* \
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.
--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]
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];
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];
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];
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];
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];
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
- free (data);
- free (data3);
return 0;
}
_ACEOF
-# libunbound v1.5.0 added the ub_ctx_add_ta_autr() API call that we can
-# detect as a useable version so that is going to be the minimum version
-# that we will require.
-# Technically v1.4.21 and later could be used but v1.4.21 has a configure
-# script bug which does not find the ldns library. The bug is fixed in
-# v1.4.22 but that version is not easily detectable.
-#
+# Check that unbound is installed and the version code fragment compiles
if test "x${PBX_UNBOUND}" != "x1" -a "${USE_UNBOUND}" != "no"; then
pbxlibdir=""
CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
- if test "x${UNBOUND_HEADER_FOUND}" = "x0" ; then
- UNBOUND_LIB=""
- UNBOUND_INCLUDE=""
- else
-
- PBX_UNBOUND=1
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNBOUND 1
-_ACEOF
-
- fi
fi
-fi
-
-
-
- if test "x${PBX_UNBOUND_CONST_PARAMS}" != "x1" -a "${USE_UNBOUND_CONST_PARAMS}" != "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNBOUND_VERSION_MAJOR declared in unbound.h" >&5
-$as_echo_n "checking for UNBOUND_VERSION_MAJOR declared in unbound.h... " >&6; }
- saved_cppflags="${CPPFLAGS}"
- if test "x${UNBOUND_CONST_PARAMS_DIR}" != "x"; then
- UNBOUND_CONST_PARAMS_INCLUDE="-I${UNBOUND_CONST_PARAMS_DIR}/include"
- fi
- CPPFLAGS="${CPPFLAGS} ${UNBOUND_CONST_PARAMS_INCLUDE}"
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ # Validate the package with the supplied code.
+ if test "x${UNBOUND_HEADER_FOUND}" = "x1" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unbound version >= 1.5" >&5
+$as_echo_n "checking for unbound version >= 1.5... " >&6; }
+ ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} ${UNBOUND_INCLUDE}"
+ ast_ext_lib_check_saved_LIBS="${LIBS}"
+ LIBS="${UNBOUND_LIB}"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <unbound.h>
+
+ #include <unbound.h>
int
main ()
{
-#if !defined(UNBOUND_VERSION_MAJOR)
- (void) UNBOUND_VERSION_MAJOR;
- #endif
+
+ #if (UNBOUND_VERSION_MAJOR < 1 || (UNBOUND_VERSION_MAJOR == 1 && UNBOUND_VERSION_MINOR < 5 ))
+ #error "Unbound version must be >= 1.5"
+ #endif
+
;
return 0;
}
+
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+if ac_fn_c_try_link "$LINENO"; then :
+
+ if test "x${cross_compiling}" = "xyes" ; then
+ UNBOUND_VALIDATED="1"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (guessed for cross-compile)" >&5
+$as_echo "yes (guessed for cross-compile)" >&6; }
+ else
+ ./conftest$EXEEXT
+ if test $? -eq 0 ; then
+ UNBOUND_VALIDATED="1"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- PBX_UNBOUND_CONST_PARAMS=1
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ fi
-$as_echo "#define HAVE_UNBOUND_CONST_PARAMS 1" >>confdefs.h
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
+ LIBS="${ast_ext_lib_check_saved_LIBS}"
+ fi
+
+ if test "x${UNBOUND_VALIDATED}" = "x1" ; then
+
+ PBX_UNBOUND=1
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_UNBOUND 1
+_ACEOF
+ else
+ UNBOUND_LIB=""
+ UNBOUND_INCLUDE=""
+ fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="${saved_cppflags}"
- fi
AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h])
-# libunbound v1.5.0 added the ub_ctx_add_ta_autr() API call that we can
-# detect as a useable version so that is going to be the minimum version
-# that we will require.
-# Technically v1.4.21 and later could be used but v1.4.21 has a configure
-# script bug which does not find the ldns library. The bug is fixed in
-# v1.4.22 but that version is not easily detectable.
-#
-AST_EXT_LIB_CHECK([UNBOUND], [unbound], [ub_ctx_delete], [unbound.h])
-AST_C_DECLARE_CHECK([UNBOUND_CONST_PARAMS], [UNBOUND_VERSION_MAJOR], [unbound.h])
+# Check that unbound is installed and the version code fragment compiles
+AST_EXT_LIB_EXTRA_CHECK([UNBOUND], [unbound], [ub_ctx_delete], [unbound.h],
+ [], [], [
+ AC_LANG_PROGRAM( [#include <unbound.h>],
+ [
+ #if (UNBOUND_VERSION_MAJOR < 1 || (UNBOUND_VERSION_MAJOR == 1 && UNBOUND_VERSION_MINOR < 5 ))
+ #error "Unbound version must be >= 1.5"
+ #endif
+ ]
+ )
+ ], [unbound version >= 1.5])
AST_EXT_LIB_CHECK([UNIXODBC], [odbc], [SQLConnect], [sql.h])
/* Define to 1 if you have the unbound library. */
#undef HAVE_UNBOUND
-/* Define if your system has UNBOUND_VERSION_MAJOR declared. */
-#undef HAVE_UNBOUND_CONST_PARAMS
-
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
docdir
oldincludedir
includedir
-runstatedir
localstatedir
sharedstatedir
sysconfdir
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
| -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=* \
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.
--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]
</configInfo>
***/
-/*!
- * Unbound versions <= 1.4.20 declare string function parameters as 'char *'
- * but versions >= 1.4.21 declare them as 'const char *'. Since CentOS6 is still
- * at 1.4.20, we need to cast away the 'const' if we detect the earlier version.
- */
-#ifdef HAVE_UNBOUND_CONST_PARAMS
-#define UNBOUND_CHAR const char
-#else
-#define UNBOUND_CHAR char
-#endif
-
/*! \brief Structure for an unbound resolver */
struct unbound_resolver {
/*! \brief Resolver context itself */
data->resolver = ao2_bump(cfg->global->state->resolver);
ast_dns_resolver_set_data(query, data);
- res = ub_resolve_async(data->resolver->context, (UNBOUND_CHAR *)ast_dns_query_get_name(query),
+ res = ub_resolve_async(data->resolver->context, ast_dns_query_get_name(query),
ast_dns_query_get_rr_type(query), ast_dns_query_get_rr_class(query),
ao2_bump(query), unbound_resolver_callback, &data->id);
if (!strcmp(cfg->global->hosts, "system")) {
res = ub_ctx_hosts(cfg->global->state->resolver->context, NULL);
} else if (!ast_strlen_zero(cfg->global->hosts)) {
- res = ub_ctx_hosts(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->hosts);
+ res = ub_ctx_hosts(cfg->global->state->resolver->context, cfg->global->hosts);
}
if (res) {
it_nameservers = ao2_iterator_init(cfg->global->nameservers, 0);
while (!res && (nameserver = ao2_iterator_next(&it_nameservers))) {
- res = ub_ctx_set_fwd(cfg->global->state->resolver->context, (UNBOUND_CHAR *)nameserver);
+ res = ub_ctx_set_fwd(cfg->global->state->resolver->context, nameserver);
if (res) {
ast_log(LOG_ERROR, "Failed to add nameserver '%s' to unbound resolver: %s\n",
if (!strcmp(cfg->global->resolv, "system")) {
res = ub_ctx_resolvconf(cfg->global->state->resolver->context, NULL);
} else if (!ast_strlen_zero(cfg->global->resolv)) {
- res = ub_ctx_resolvconf(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->resolv);
+ res = ub_ctx_resolvconf(cfg->global->state->resolver->context, cfg->global->resolv);
}
if (res) {
}
if (!ast_strlen_zero(cfg->global->ta_file)) {
- res = ub_ctx_add_ta_file(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->ta_file);
+ res = ub_ctx_add_ta_file(cfg->global->state->resolver->context, cfg->global->ta_file);
if (res) {
ast_log(LOG_ERROR, "Failed to set trusted anchor file to '%s' in unbound resolver: %s\n",
static const size_t V4_SIZE = sizeof(struct in_addr);
static const size_t V6_SIZE = sizeof(struct in6_addr);
- static UNBOUND_CHAR *DOMAIN1 = "goose.feathers";
- static UNBOUND_CHAR *DOMAIN2 = "duck.feathers";
+ static const char *DOMAIN1 = "goose.feathers";
+ static const char *DOMAIN2 = "duck.feathers";
- static UNBOUND_CHAR *ADDR1 = "127.0.0.2";
- static UNBOUND_CHAR *ADDR2 = "127.0.0.3";
- static UNBOUND_CHAR *ADDR3 = "::1";
- static UNBOUND_CHAR *ADDR4 = "127.0.0.4";
+ static const char *ADDR1 = "127.0.0.2";
+ static const char *ADDR2 = "127.0.0.3";
+ static const char *ADDR3 = "::1";
+ static const char *ADDR4 = "127.0.0.4";
char addr1_buf[V4_SIZE];
char addr2_buf[V4_SIZE];
ub_ctx_zone_add(resolver->context, DOMAIN2, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
+ ub_ctx_data_add(resolver->context, records[i].as_string);
}
for (i = 0; i < ARRAY_LEN(runs); ++i) {
cleanup:
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_remove(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
+ ub_ctx_data_remove(resolver->context, records[i].as_string);
}
ub_ctx_zone_remove(resolver->context, DOMAIN1);
ub_ctx_zone_remove(resolver->context, DOMAIN2);
static const size_t V4_SIZE = sizeof(struct in_addr);
- static UNBOUND_CHAR *DOMAIN1 = "goose.feathers";
- static UNBOUND_CHAR *DOMAIN2 = "duck.feathers";
+ static const char *DOMAIN1 = "goose.feathers";
+ static const char *DOMAIN2 = "duck.feathers";
- static UNBOUND_CHAR *ADDR1 = "127.0.0.2";
+ static const char *ADDR1 = "127.0.0.2";
char addr1_buf[V4_SIZE];
ub_ctx_zone_add(resolver->context, DOMAIN2, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
+ ub_ctx_data_add(resolver->context, records[i].as_string);
}
for (i = 0; i < ARRAY_LEN(runs); ++i) {
ub_ctx_zone_add(resolver->context, DOMAIN1, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].zone_entry);
+ ub_ctx_data_add(resolver->context, records[i].zone_entry);
}
if (ast_dns_resolve(DOMAIN1, ns_t_naptr, ns_c_in, &result)) {
RAII_VAR(struct unbound_config *, cfg, NULL, ao2_cleanup);
RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
const struct ast_dns_record *record;
- static UNBOUND_CHAR *DOMAIN1 = "taco.bananas";
- static UNBOUND_CHAR *DOMAIN1_SRV = "taco.bananas 12345 IN SRV 10 20 5060 sip.taco.bananas";
+ static const char *DOMAIN1 = "taco.bananas";
+ static const char *DOMAIN1_SRV = "taco.bananas 12345 IN SRV 10 20 5060 sip.taco.bananas";
enum ast_test_result_state res = AST_TEST_PASS;
switch (cmd) {