# -*- autoconf -*- cat < typedef struct { char a; char b; } charchar;])], [AT_CHECK_DEFINES( [#define SIZEOF_CHAR 1 #define SIZEOF_CHARCHAR 2 ])]) # AC_CHECK_TYPES # -------------- # Check that it performs the correct actions. # Must define HAVE_STRUCT_YES_S, HAVE_INT, but not HAVE_STRUCT_NO_S. # `int' and `struct yes_s' are both checked to test both the compiler # builtin types, and defined types. AT_TEST_MACRO(AC_CHECK_TYPES, [[AC_CHECK_TYPES([int, struct yes_s, struct no_s],,, [struct yes_s { int yes ;} ;])]], [AT_CHECK_DEFINES( [#define HAVE_INT 1 /* #undef HAVE_STRUCT_NO_S */ #define HAVE_STRUCT_YES_S 1 ])]) # AC_CHECK_TYPES # -------------- # Check that we properly dispatch properly to the old implementation # or to the new one. AT_SETUP([AC_CHECK_TYPES]) AT_DATA(configure.in, [[AC_INIT define([_AC_CHECK_TYPE_NEW], [NEW]) define([_AC_CHECK_TYPE_OLD], [OLD]) #(cut-from-here AC_CHECK_TYPE(ptrdiff_t) AC_CHECK_TYPE(ptrdiff_t, int) AC_CHECK_TYPE(quad, long long) AC_CHECK_TYPE(table_42, [int[42]]) # Nice machine! AC_CHECK_TYPE(uint8_t, uint65536_t) AC_CHECK_TYPE(a,b,c,d) #to-here) AC_OUTPUT ]]) AT_CHECK([../autoconf -m .. -l $at_srcdir], 0,, [configure.in:10: warning: AC_CHECK_TYPE: assuming `uint65536_t' is not a type ]) AT_CHECK([[sed -e '/^#(cut-from-here/,/^#to-here)/!d' -e '/^#/d' configure]], 0, [NEW OLD OLD OLD NEW NEW ]) AT_CLEANUP(autoconf.err) # AC_CHECK_FILES # -------------- # FIXME: To really test HAVE_AC_EXISTS2 and HAVE_AC_MISSING2 we need to # open AH_TEMPLATE to `configure.in', which is not yet the case. AT_TEST_MACRO(AC_CHECK_FILES, [touch ac-exists1 ac-exists2 ac_exists2=ac-exists2 ac_missing2=ac-missing2 AC_CHECK_FILES(ac-exists1 ac-missing1 $ac_exists2 $ac_missing2) rm ac-exists1 ac-exists2], [AT_CHECK_DEFINES( [#define HAVE_AC_EXISTS1 1 /* #undef HAVE_AC_MISSING1 */ ])]) ## ------------------------------ ## ## AC_CHECK_PROG & AC_PATH_PROG. ## ## ------------------------------ ## AT_SETUP(AC_CHECK_PROG & AC_PATH_PROG) # Create a sub directory `path' with 6 subdirs which all 7 contain # an executable `tool'. `6' contains a `better' tool. mkdir path cat >path/tool <<\EOF #! /bin/sh exit 0 EOF chmod +x path/tool for i in 1 2 3 4 5 6 do mkdir path/$i cp path/tool path/$i done cp path/tool path/6/better # -------------------------------- # # AC_CHECK_PROG & AC_CHECK_PROGS. # # -------------------------------- # AT_DATA(configure.in, [[AC_INIT pwd=`pwd` path=`echo "1:2:3:4:5:6" | sed -e 's,\([[0-9]]\),'"$pwd"'/path/\1,g'` fail=0 AC_CHECK_PROG(TOOL1, tool, found, not-found, $path) test "$TOOL1" = found || fail=1 # Yes, the semantics of this macro is weird. AC_CHECK_PROG(TOOL2, tool,, not-found, $path) test "$TOOL2" = not-found || fail=1 AC_CHECK_PROG(TOOL3, tool, tool, not-found, $path, $pwd/path/1/tool) test "$TOOL3" = $pwd/path/2/tool || fail=1 AC_CHECK_PROG(TOOL4, better, better, not-found, $path, $pwd/path/1/tool) test "$TOOL4" = better || fail=1 # When a tool is not found, and no value is given for not-found, # the variable is left empty. AC_CHECK_PROGS(TOOL5, missing,, $path) test -z "$TOOL5" || fail=1 AC_CHECK_PROGS(TOOL6, missing tool better,, $path) test "$TOOL6" = tool || fail=1 # no AC_OUTPUT, we don't need config.status. exit $fail ]]) AT_CHECK([../autoconf -m .. -l $at_srcdir], 0,, ignore) AT_CHECK([./configure], 0, ignore) # ------------------------------ # # AC_PATH_PROG & AC_PATH_PROGS. # # ------------------------------ # AT_DATA(configure.in, [[AC_INIT pwd=`pwd` path=`echo "1:2:3:4:5:6" | sed -e 's,\([[0-9]]\),'"$pwd"'/path/\1,g'` fail=0 AC_PATH_PROG(TOOL1, tool, not-found, $path) test "$TOOL1" = $pwd/path/1/tool || fail=1 AC_PATH_PROG(TOOL2, better, not-found, $path) test "$TOOL2" = $pwd/path/6/better || fail=1 # When a tool is not found, and no value is given for not-found, # the variable is left empty. AC_PATH_PROGS(TOOL3, missing,, $path) test -z "$TOOL3" || fail=1 AC_PATH_PROGS(TOOL4, missing tool better,, $path) test "$TOOL4" = $pwd/path/1/tool || fail=1 # no AC_OUTPUT, we don't need config.status. exit $fail ]]) AT_CHECK([../autoconf -m .. -l $at_srcdir], 0,, ignore) AT_CHECK([./configure], 0, ignore) AT_CLEANUP(path config.log config.cache configure) ## ----------------- ## ## Specific macros. ## ## ----------------- ## # AC_C_CONST # ---------- # GCC supports `const', `volatile', and `inline'. AT_TEST_MACRO(C keywords, [[AC_PROG_CC AC_C_CONST AC_C_INLINE AC_C_VOLATILE case "$GCC,$ac_cv_c_const,$ac_cv_c_inline,$ac_cv_c_volatile" in yes,*no*) exit 1;; esac]])