dnl check for fields in a structure dnl dnl AC_HAVE_STRUCT_FIELD(struct, field, headers) AC_DEFUN([AC_HAVE_STRUCT_FIELD], [ define(cache_val, translit(ac_cv_type_$1_$2, [A-Z ], [a-z_])) AC_CACHE_CHECK([for $2 in $1], cache_val,[ AC_TRY_COMPILE([$3],[$1 x; x.$2;], cache_val=yes, cache_val=no)]) if test "$cache_val" = yes; then define(foo, translit(HAVE_$1_$2, [a-z ], [A-Z_])) AC_DEFINE(foo, 1, [Define if $1 has field $2.]) undefine(foo) fi undefine(cache_val) ]) dnl Checks if function/macro va_copy() is available dnl Defines HAVE_VA_COPY on success. AC_DEFUN([AC_FUNC_VA_COPY], [AC_CACHE_CHECK([for va_copy], ac_cv_func_va_copy, [AC_TRY_LINK([ #ifdef HAVE_STDARG_H # include #else # include #endif], [ va_list a, b; va_copy(a, b);], [ac_cv_func_va_copy=yes], [ac_cv_func_va_copy=no])]) if test $ac_cv_func_va_copy = yes; then AC_DEFINE(HAVE_VA_COPY, 1, [Define if va_copy is available]) fi]) dnl Checks if function/macro __va_copy() is available dnl Defines HAVE__VA_COPY on success. AC_DEFUN([AC_FUNC__VA_COPY], [AC_CACHE_CHECK([for __va_copy], ac_cv_func__va_copy, [AC_TRY_LINK([ #ifdef HAVE_STDARG_H # include #else # include #endif], [ va_list a, b; __va_copy(a, b);], [ac_cv_func__va_copy=yes], [ac_cv_func__va_copy=no])]) if test $ac_cv_func__va_copy = yes; then AC_DEFINE(HAVE__VA_COPY, 1, [Define if __va_copy is available]) fi]) dnl Checks if va_list is an array dnl Defines VA_LIST_IS_ARRAY on success. AC_DEFUN([AC_TYPE_VA_LIST], [AC_CACHE_CHECK([if va_list is an array], ac_cv_type_va_list_array, [AC_TRY_LINK([ #ifdef HAVE_STDARG_H # include #else # include #endif ], [ va_list a, b; a = b;], [ac_cv_type_va_list_array=no], [ac_cv_type_va_list_array=yes])]) if test $ac_cv_type_va_list_array = yes; then AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if va_list is an array]) fi]) AC_DEFUN([QF_DEPS], [ $1_INCS='$2' $1_DEPS='$3' $1_LIBS='$3 $4 ' AC_SUBST($1_INCS) AC_SUBST($1_DEPS) AC_SUBST($1_LIBS) ]) AC_DEFUN([QF_NEED], [ for qfn_lib in $2; do eval "$1_need_$qfn_lib=yes" done ]) AC_DEFUN([QF_PROCESS_NEED_subroutine], [ qfn_pref="$1" qfn_suf="$3" for qfn_need in $5; do if eval test x'"${$2_need_'${qfn_need}'}"' = xyes; then qfn_tmp="${$2_$4} ${qfn_pref}${qfn_need}${qfn_suf}" eval '$2_$4="$qfn_tmp"' fi done AC_SUBST([$2_$4]) ]) AC_DEFUN([QF_PROCESS_NEED_LIBS], [ qfn_ext="$3" qfn_ext=${qfn_ext:-la} QF_PROCESS_NEED_subroutine([lib$1_],[$1],[.${qfn_ext}],[libs],[$2]) ]) AC_DEFUN([QF_PROCESS_NEED_DIRS], [ QF_PROCESS_NEED_subroutine([],[$1],[],[dirs],[$2]) ]) AC_DEFUN([QF_WITH_TARGETS], [ AC_ARG_WITH($1, [$2] [$3], $1="$withval", $1=all ) if test "x${$1}" = "xall"; then for qf_t in `echo '$3' | sed -e "s/,/ /g"`''; do eval ENABLE_$1_${qf_t}=yes done else for qf_t in `echo '$3' | sed -e "s/,/ /g"`''; do if echo ",${$1}," | grep ",$qf_t," > /dev/null; then eval ENABLE_$1_${qf_t}=yes else eval ENABLE_$1_${qf_t}=no fi done fi ]) AC_DEFUN([QF_CC_OPTION_TEST], [ AC_MSG_CHECKING(whether $1 works) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" qf_opt_ok=no AC_TRY_COMPILE( [], [], qf_opt_ok=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) CFLAGS="$save_CFLAGS" if test "x$qf_opt_ok" = xyes; then true $2 else true $3 fi ]) AC_DEFUN([QF_CC_OPTION], [ QF_CC_OPTION_TEST([$1], [CFLAGS="$CFLAGS $1"]) ])