123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- # Helper function to setup variables for a package.
- # $1 -> the package name. Used in configure.ac and also as a prefix
- # for the variables ($1_DIR, $1_INCLUDE, $1_LIB) in makeopts
- # $3 -> option name, used in --with-$3 or --without-$3 when calling configure.
- # $2 and $4 are just text describing the package (short and long form)
- # AST_EXT_LIB_SETUP([package], [short description], [configure option name], [long description])
- AC_DEFUN([AST_EXT_LIB_SETUP],
- [
- $1_DESCRIP="$2"
- $1_OPTION="$3"
- PBX_$1=0
- AC_ARG_WITH([$3], AS_HELP_STRING([--with-$3=PATH],[use $2 files in PATH$4]),
- [
- case ${withval} in
- n|no)
- USE_$1=no
- # -1 is a magic value used by menuselect to know that the package
- # was disabled, other than 'not found'
- PBX_$1=-1
- ;;
- y|ye|yes)
- ac_mandatory_list="${ac_mandatory_list} $1"
- ;;
- *)
- $1_DIR="${withval}"
- ac_mandatory_list="${ac_mandatory_list} $1"
- ;;
- esac
- ])
- AH_TEMPLATE(m4_bpatsubst([[HAVE_$1]], [(.*)]), [Define to 1 if you have the $2 library.])
- AC_SUBST([$1_LIB])
- AC_SUBST([$1_INCLUDE])
- AC_SUBST([$1_DIR])
- AC_SUBST([PBX_$1])
- ])
- # AST_OPTION_ONLY([option name], [option variable], [option description], [default value])
- AC_DEFUN([AST_OPTION_ONLY],
- [
- AC_ARG_WITH([$1], AS_HELP_STRING([--with-$1=PATH], [use $3 in PATH]),
- [
- case ${withval} in
- n|no)
- unset $2
- ;;
- *)
- if test "x${withval}" = "x"; then
- m4_ifval($4, [$2="$4"], [:])
- else
- $2="${withval}"
- fi
- ;;
- esac
- ],
- [m4_ifval($4, [$2="$4"], [:])])
- AC_SUBST($2)
- ])
- # Setup required dependent package
- # AST_EXT_LIB_SETUP_DEPENDENT([dependent package symbol name], [dependent package friendly name], [master package symbol name], [master package name])
- AC_DEFUN([AST_EXT_LIB_SETUP_DEPENDENT],
- [
- $1_DESCRIP="$2"
- m4_ifval([$4], [$1_OPTION=$4])
- m4_ifval([$3], [
- for i in ${ac_mandatory_list}; do
- if test "x$3" = "x$i"; then
- ac_mandatory_list="${ac_mandatory_list} $1"
- break
- fi
- done
- $1_DIR=${$3_DIR}
- ])
- PBX_$1=0
- AH_TEMPLATE(m4_bpatsubst([[HAVE_$1]], [(.*)]), [Define to 1 if you have the $2 library.])
- AC_SUBST([$1_LIB])
- AC_SUBST([$1_INCLUDE])
- AC_SUBST([$1_DIR])
- AC_SUBST([PBX_$1])
- ])
- # Setup optional dependent package
- # AST_EXT_LIB_SETUP_OPTIONAL([optional package symbol name], [optional package friendly name], [master package symbol name], [master package name])
- AC_DEFUN([AST_EXT_LIB_SETUP_OPTIONAL],
- [
- $1_DESCRIP="$2"
- m4_ifval([$4], [$1_OPTION=$4])
- m4_ifval([$3], [$1_DIR=${$3_DIR}
- ])
- PBX_$1=0
- AH_TEMPLATE(m4_bpatsubst([[HAVE_$1]], [(.*)]), [Define to 1 if $3 has the $2 feature.])
- AC_SUBST([$1_LIB])
- AC_SUBST([$1_INCLUDE])
- AC_SUBST([$1_DIR])
- AC_SUBST([PBX_$1])
- ])
- # 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.
- # AST_EXT_LIB_CHECK([package], [library], [function], [header],
- # [extra libs], [extra cflags], [version])
- AC_DEFUN([AST_EXT_LIB_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"
- ])
- if test "x${$1_HEADER_FOUND}" = "x0" ; then
- $1_LIB=""
- $1_INCLUDE=""
- else
- m4_ifval([$3], [], [
- # only checking headers -> no library
- $1_LIB=""
- ])
- PBX_$1=1
- cat >>confdefs.h <<_ACEOF
- [@%:@define] HAVE_$1 1
- _ACEOF
- m4_ifval([$7], [
- cat >>confdefs.h <<_ACEOF
- [@%:@define] HAVE_$1_VERSION $7
- _ACEOF
- ])
- fi
- fi
- fi
- m4_ifval([$7], [AH_TEMPLATE(m4_bpatsubst([[HAVE_$1_VERSION]], [(.*)]), [Define to the version of the $2 library.])])
- ])
- # Check if the previously discovered library can be dynamically linked.
- #
- # AST_EXT_LIB_CHECK_SHARED([package], [library], [function], [header],
- # [extra libs], [extra cflags], [action-if-true], [action-if-false])
- AC_DEFUN([AST_EXT_LIB_CHECK_SHARED],
- [
- if test "x${PBX_$1}" = "x1"; then
- ast_ext_lib_check_shared_saved_libs="${LIBS}"
- ast_ext_lib_check_shared_saved_ldflags="${LDFLAGS}"
- ast_ext_lib_check_shared_saved_cflags="${CFLAGS}"
- LIBS="${LIBS} ${$1_LIB} $5"
- LDFLAGS="${LDFLAGS} -shared -fPIC"
- CFLAGS="${CFLAGS} ${$1_INCLUDE} $6"
- AC_MSG_CHECKING(for the ability of -l$2 to be linked in a shared object)
- AC_LINK_IFELSE(
- [
- AC_LANG_PROGRAM(
- [#include <$4>],
- [$3();]
- )
- ],
- [
- AC_MSG_RESULT(yes)
- $7
- ],
- [
- AC_MSG_RESULT(no)
- $8
- ]
- )
- CFLAGS="${ast_ext_lib_check_shared_saved_cflags}"
- LDFLAGS="${ast_ext_lib_check_shared_saved_ldflags}"
- LIBS="${ast_ext_lib_check_shared_saved_libs}"
- fi
- ])
|