X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/d862b1be600710ea36579a5ff867e583491248bb..52f32190aa3e60eb079f8e374cf683094c5529ad:/m4/prereq.m4?ds=sidebyside diff --git a/m4/prereq.m4 b/m4/prereq.m4 index 1c5e54a0..93001ae8 100644 --- a/m4/prereq.m4 +++ b/m4/prereq.m4 @@ -1,29 +1,51 @@ -#serial 22 +#serial 28 -*- Autoconf -*- -dnl These are the prerequisite macros for files in the lib/ -dnl directories of the fileutils, sh-utils, and textutils packages. +dnl We use jm_ for non Autoconf macros. +m4_pattern_forbid([^jm_[ABCDEFGHIJKLMNOPQRSTUVXYZ]])dnl + +# These are the prerequisite macros for files in the lib/ +# directories of the fileutils, sh-utils, and textutils packages. AC_DEFUN([jm_PREREQ], [ jm_PREREQ_ADDEXT + jm_PREREQ_C_STACK jm_PREREQ_CANON_HOST jm_PREREQ_DIRNAME jm_PREREQ_ERROR jm_PREREQ_EXCLUDE jm_PREREQ_GETPAGESIZE + jm_PREREQ_HARD_LOCALE jm_PREREQ_HASH jm_PREREQ_HUMAN jm_PREREQ_MBSWIDTH jm_PREREQ_MEMCHR jm_PREREQ_PHYSMEM + jm_PREREQ_POSIXVER jm_PREREQ_QUOTEARG jm_PREREQ_READUTMP jm_PREREQ_REGEX + jm_PREREQ_STAT + jm_PREREQ_STRNLEN jm_PREREQ_TEMPNAME # called by mkstemp jm_PREREQ_XGETCWD jm_PREREQ_XREADLINK ]) +AC_DEFUN([jm_PREREQ_ARGMATCH], +[ + AC_REQUIRE([jm_PREREQ_QUOTEARG]) + AC_REPLACE_FUNCS(strcasecmp strncasecmp) +]) + +# Ask for argmatch.[ch], and set it up. +AC_DEFUN([jm_FUNC_ARGMATCH], +[ + AC_REQUIRE([jm_PREREQ_ARGMATCH]) + AC_LIBOBJ([argmatch]) + AC_LIBSOURCES([argmatch.c, argmatch.h]) +]) + AC_DEFUN([jm_PREREQ_ADDEXT], [ dnl For addext.c. @@ -55,8 +77,8 @@ AC_DEFUN([jm_PREREQ_DIRNAME], AC_DEFUN([jm_PREREQ_EXCLUDE], [ - jm_FUNC_FNMATCH - AC_CHECK_HEADERS(stdbool.h) + AC_FUNC_FNMATCH_GNU + AC_HEADER_STDBOOL ]) AC_DEFUN([jm_PREREQ_GETPAGESIZE], @@ -65,6 +87,13 @@ AC_DEFUN([jm_PREREQ_GETPAGESIZE], AC_CHECK_HEADERS(OS.h unistd.h) ]) +AC_DEFUN([jm_PREREQ_HARD_LOCALE], +[ + AC_CHECK_HEADERS(locale.h stdlib.h string.h) + AC_CHECK_FUNCS(setlocale) + AM_C_PROTOTYPES +]) + # If you use human.c, you need the following files: # inttypes.m4 ulonglong.m4 AC_DEFUN([jm_PREREQ_HUMAN], @@ -85,14 +114,21 @@ AC_DEFUN([jm_PREREQ_PHYSMEM], AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic) ]) +AC_DEFUN([jm_PREREQ_POSIXVER], +[ + AC_CHECK_HEADERS(unistd.h) + AC_CHECK_DECLS([getenv]) +]) + AC_DEFUN([jm_PREREQ_QUOTEARG], [ AC_CHECK_FUNCS(isascii iswprint) jm_FUNC_MBRTOWC + jm_FUNC_MEMCMP AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) AC_HEADER_STDC AC_C_BACKSLASH_A - AC_MBSTATE_T + AC_TYPE_MBSTATE_T AM_C_PROTOTYPES ]) @@ -120,6 +156,20 @@ $ac_includes_default AC_CHECK_MEMBERS([struct utmp.ut_name],,,[$utmp_includes]) AC_CHECK_MEMBERS([struct utmpx.ut_type],,,[$utmp_includes]) AC_CHECK_MEMBERS([struct utmp.ut_type],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmpx.ut_pid],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_pid],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmpx.ut_id],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_id],,,[$utmp_includes]) + + AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_exit],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_exit],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_exit],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_exit.e_exit],,,[$utmp_includes]) + + AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_termination],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_termination],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_termination],,,[$utmp_includes]) + AC_CHECK_MEMBERS([struct utmp.ut_exit.e_termination],,,[$utmp_includes]) AC_LIBOBJ(readutmp) fi ]) @@ -135,6 +185,54 @@ AC_DEFUN([jm_PREREQ_REGEX], AC_FUNC_ALLOCA ]) +AC_DEFUN([jm_PREREQ_STAT], +[ + AC_CHECK_HEADERS(sys/sysmacros.h sys/statvfs.h sys/vfs.h inttypes.h) + AC_CHECK_HEADERS(sys/param.h sys/mount.h) + AC_CHECK_FUNCS(statvfs) + jm_AC_TYPE_LONG_LONG + + statxfs_includes="\ +$ac_includes_default +#if HAVE_SYS_STATVFS_H +# include +#endif +#if HAVE_SYS_VFS_H +# include +#endif +#if ( ! HAVE_SYS_STATVFS_H && ! HAVE_SYS_VFS_H && HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H ) +/* NetBSD 1.5.2 needs these, for the declaration of struct statfs. */ +# include +# include +#endif +" + AC_CHECK_MEMBERS([struct statfs.f_basetype],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statvfs.f_basetype],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_type],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statvfs.f_type],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_fsid.__val],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statvfs.f_fsid.__val],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_namemax],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statvfs.f_namemax],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_namelen],,,[$statxfs_includes]) + AC_CHECK_MEMBERS([struct statvfs.f_namelen],,,[$statxfs_includes]) +]) + +AC_DEFUN([jm_PREREQ_STRNLEN], +[ + AC_FUNC_STRNLEN + AC_HEADER_STDC + AC_CHECK_HEADERS(memory.h) + AC_CHECK_DECLS([memchr]) + + # This is necessary because automake-1.6.1 doesn't understand + # that the above use of AC_FUNC_STRNLEN means we may have to use + # lib/strnlen.c. + test $ac_cv_func_strnlen_working = yes \ + && AC_LIBOBJ(strnlen) +]) + AC_DEFUN([jm_PREREQ_TEMPNAME], [ AC_HEADER_STDC @@ -142,6 +240,7 @@ AC_DEFUN([jm_PREREQ_TEMPNAME], AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) AC_CHECK_FUNCS(__secure_getenv gettimeofday) AC_CHECK_DECLS([getenv]) + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) ]) AC_DEFUN([jm_PREREQ_XGETCWD],