Merged revisions 279502 via svnmerge from
[asterisk/asterisk.git] / autoconf / ast_ext_lib.m4
index 3a563d8..28a5521 100644 (file)
@@ -36,6 +36,50 @@ AC_DEFUN([AST_EXT_LIB_SETUP],
     AC_SUBST([PBX_$1])
 ])
 
+# AST_OPTION_ONLY([option name], [option variable], [option description], [default value])
+AC_DEFUN([AST_OPTION_ONLY],
+[
+AC_ARG_WITH([$1], AC_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)
+])
+
+# AST_EXT_LIB_SETUP_DEPENDENT([package symbol name], [package friendly name], [master package symbol name], [master package option 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
+])
+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])
+])
+
 # 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.
@@ -58,7 +102,10 @@ if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then
    if test "x${pbxfuncname}" = "x" ; then   # empty lib, assume only headers
       AST_$1_FOUND=yes
    else
-      AC_CHECK_LIB([$2], [${pbxfuncname}], [AST_$1_FOUND=yes], [AST_$1_FOUND=no], ${pbxlibdir} $5)
+      ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
+      CFLAGS="${CFLAGS} $6"
+      AC_CHECK_LIB([$2], [${pbxfuncname}], [AST_$1_FOUND=yes], [AST_$1_FOUND=no], [${pbxlibdir} $5])
+      CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
    fi
 
    # now check for the header.
@@ -66,39 +113,35 @@ if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; 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"
+         $1_INCLUDE="-I${$1_DIR}/include"
       fi
       $1_INCLUDE="${$1_INCLUDE} $6"
       if test "x$4" = "x" ; then       # no header, assume found
          $1_HEADER_FOUND="1"
       else                             # check for the header
-         saved_cppflags="${CPPFLAGS}"
+         ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
          CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}"
          AC_CHECK_HEADER([$4], [$1_HEADER_FOUND=1], [$1_HEADER_FOUND=0])
-         CPPFLAGS="${saved_cppflags}"
+         CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
       fi
       if test "x${$1_HEADER_FOUND}" = "x0" ; then
          $1_LIB=""
          $1_INCLUDE=""
       else
          if test "x${pbxfuncname}" = "x" ; then                # only checking headers -> no library
-           $1_LIB=""
-        fi
+            $1_LIB=""
+         fi
          PBX_$1=1
-         if test "x${$1_OPTION}" = "x"; then
-            dnl Ensure that we have an autoheader, when AST_EXT_LIB_SETUP was
-            dnl not called.  Note that we cannot use shell substitution in the
-            dnl description, because the shell is never invoked when rendering
-            dnl the autoheader.  Only m4 substitutions will expand correctly.
-            AC_DEFINE_UNQUOTED([HAVE_$1], 1, [Define to 1 to indicate $1 functionality.])
-            AC_DEFINE_UNQUOTED([HAVE_$1_VERSION], [$7], [Define to indicate the $1 library version])
-         else
-            cat >>confdefs.h <<_ACEOF
+         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
 fi
+m4_ifval([$7], [AH_TEMPLATE(m4_bpatsubst([[HAVE_$1_VERSION]], [(.*)]), [Define to the version of the $2 library.])])
 ])