dnl dnl Check for size of d_name dirent member dnl AC_DEFUN([AC_SHORT_D_NAME_LEN], [ AC_MSG_CHECKING([filename fits on dirent.d_name]) AC_CACHE_VAL(ac_cv_dnamesize, [ OCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -I$srcdir" AC_TRY_RUN([ #include main () { struct dirent ddd; if (sizeof (ddd.d_name) < 12) exit (0); else exit (1); } ],[ ac_cv_dnamesize="no" ], [ ac_cv_dnamesize="yes" ], [ # Cannot find out, so assume no ac_cv_dnamesize="no" ]) CFLAGS="$OCFLAGS" ]) if test x$ac_cv_dnamesize = xno; then AC_DEFINE(NEED_EXTRA_DIRENT_BUFFER) fi AC_MSG_RESULT([$ac_cv_dnamesize]) ]) dnl dnl Filesystem information detection dnl dnl To get information about the disk, mount points, etc. dnl AC_DEFUN([AC_GET_FS_INFO], [ AC_CHECK_HEADERS(fcntl.h sys/dustat.h sys/param.h sys/statfs.h sys/fstyp.h) AC_CHECK_HEADERS(mnttab.h mntent.h utime.h sys/statvfs.h sys/vfs.h) AC_CHECK_HEADERS(sys/mount.h sys/filsys.h sys/fs_types.h) AC_CHECK_FUNCS(getmntinfo) dnl This configure.in code has been stolen from GNU fileutils-3.12. Its dnl job is to detect a method to get list of mounted filesystems. AC_MSG_CHECKING([for d_ino member in directory struct]) AC_CACHE_VAL(fu_cv_sys_d_ino_in_dirent, [AC_TRY_LINK([ #include #ifdef HAVE_DIRENT_H # include #else /* not HAVE_DIRENT_H */ # define dirent direct # ifdef HAVE_SYS_NDIR_H # include # endif /* HAVE_SYS_NDIR_H */ # ifdef HAVE_SYS_DIR_H # include # endif /* HAVE_SYS_DIR_H */ # ifdef HAVE_NDIR_H # include # endif /* HAVE_NDIR_H */ #endif /* HAVE_DIRENT_H */ ], [struct dirent dp; dp.d_ino = 0;], fu_cv_sys_d_ino_in_dirent=yes, fu_cv_sys_d_ino_in_dirent=no)]) AC_MSG_RESULT([$fu_cv_sys_d_ino_in_dirent]) if test $fu_cv_sys_d_ino_in_dirent = yes; then AC_DEFINE(D_INO_IN_DIRENT) fi # Determine how to get the list of mounted filesystems. list_mounted_fs= # If the getmntent function is available but not in the standard library, # make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). AC_FUNC_GETMNTENT if test $ac_cv_func_getmntent = yes; then # This system has the getmntent function. # Determine whether it's the one-argument variant or the two-argument one. if test -z "$list_mounted_fs"; then # SVR4 AC_MSG_CHECKING([for two-argument getmntent function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, [AC_EGREP_HEADER(getmntent, sys/mnttab.h, fu_cv_sys_mounted_getmntent2=yes, fu_cv_sys_mounted_getmntent2=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_getmntent2]) if test $fu_cv_sys_mounted_getmntent2 = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_GETMNTENT2) fi fi if test -z "$list_mounted_fs"; then # 4.3BSD, SunOS, HP-UX, Dynix, Irix AC_MSG_CHECKING([for one-argument getmntent function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, [test $ac_cv_header_mntent_h = yes \ && fu_cv_sys_mounted_getmntent1=yes \ || fu_cv_sys_mounted_getmntent1=no]) AC_MSG_RESULT([$fu_cv_sys_mounted_getmntent1]) if test $fu_cv_sys_mounted_getmntent1 = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_GETMNTENT1) fi fi if test -z "$list_mounted_fs"; then AC_MSG_WARN([could not determine how to read list of mounted fs]) CPPFLAGS="$CPPFLAGS -DNO_INFOMOUNT" fi fi if test -z "$list_mounted_fs"; then # DEC Alpha running OSF/1. AC_MSG_CHECKING([for getfsstat function]) AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, [AC_TRY_LINK([ #include #include #include ], [struct statfs *stats; numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], fu_cv_sys_mounted_getsstat=yes, fu_cv_sys_mounted_getsstat=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_getsstat]) if test $fu_cv_sys_mounted_getsstat = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_GETFSSTAT) fi fi if test -z "$list_mounted_fs"; then # AIX. AC_MSG_CHECKING([for mntctl function and struct vmount]) AC_CACHE_VAL(fu_cv_sys_mounted_vmount, [AC_TRY_CPP([#include ], fu_cv_sys_mounted_vmount=yes, fu_cv_sys_mounted_vmount=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_vmount]) if test $fu_cv_sys_mounted_vmount = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_VMOUNT) fi fi if test -z "$list_mounted_fs"; then # SVR3 AC_MSG_CHECKING([for existence of three headers]) AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, [AC_TRY_CPP([ #include #include #include ], fu_cv_sys_mounted_fread_fstyp=yes, fu_cv_sys_mounted_fread_fstyp=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_fread_fstyp]) if test $fu_cv_sys_mounted_fread_fstyp = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_FREAD_FSTYP) fi fi if test -z "$list_mounted_fs"; then # 4.4BSD and DEC OSF/1. AC_MSG_CHECKING([for getmntinfo function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, [ ok= if test $ac_cv_func_getmntinfo = yes; then AC_EGREP_HEADER(f_type;, sys/mount.h, ok=yes) fi test -n "$ok" \ && fu_cv_sys_mounted_getmntinfo=yes \ || fu_cv_sys_mounted_getmntinfo=no ]) AC_MSG_RESULT([$fu_cv_sys_mounted_getmntinfo]) if test $fu_cv_sys_mounted_getmntinfo = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_GETMNTINFO) AC_MSG_CHECKING([if struct statfs has f_fstypename]) AC_CACHE_VAL(fu_cv_sys_mounted_f_fstypename, [ AC_EGREP_HEADER(f_type;, sys/mount.h, ok=yes, ok=) test -n "$ok" \ && fu_cv_sys_mounted_f_fstypename=yes \ || fu_cv_sys_mounted_f_fstypename=no ]) AC_MSG_RESULT([$fu_cv_sys_mounted_f_fstypename]) if test $fu_cv_sys_mounted_f_fstypename = yes; then AC_DEFINE(HAVE_F_FSTYPENAME) fi fi fi if test -z "$list_mounted_fs"; then # Ultrix AC_MSG_CHECKING([for getmnt function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, [AC_TRY_CPP([ #include #include ], fu_cv_sys_mounted_getmnt=yes, fu_cv_sys_mounted_getmnt=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_getmnt]) if test $fu_cv_sys_mounted_getmnt = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_GETMNT) fi fi if test -z "$list_mounted_fs"; then # SVR2 AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) AC_CACHE_VAL(fu_cv_sys_mounted_fread, [AC_TRY_CPP([#include ], fu_cv_sys_mounted_fread=yes, fu_cv_sys_mounted_fread=no)]) AC_MSG_RESULT([$fu_cv_sys_mounted_fread]) if test $fu_cv_sys_mounted_fread = yes; then list_mounted_fs=found AC_DEFINE(MOUNTED_FREAD) fi fi if test -z "$list_mounted_fs"; then AC_MSG_WARN([could not determine how to read list of mounted fs]) CPPFLAGS="$CPPFLAGS -DNO_INFOMOUNT" # FIXME -- no need to abort building the whole package # Can't build mountlist.c or anything that needs its functions fi dnl This configure.in code has been stolen from GNU fileutils-3.12. Its dnl job is to detect a method to get file system information. AC_CHECKING([how to get filesystem space usage]) space=no # Here we'll compromise a little (and perform only the link test) # since it seems there are no variants of the statvfs function. if test $space = no; then # SVR4 AC_CHECK_FUNCS(statvfs) if test $ac_cv_func_statvfs = yes; then space=yes AC_DEFINE(STAT_STATVFS) fi fi if test $space = no; then # DEC Alpha running OSF/1 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, [AC_TRY_RUN([ #include #include #include main () { struct statfs fsd; fsd.f_fsize = 0; exit (statfs (".", &fsd, sizeof (struct statfs))); }], fu_cv_sys_stat_statfs3_osf1=yes, fu_cv_sys_stat_statfs3_osf1=no, fu_cv_sys_stat_statfs3_osf1=no)]) AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) if test $fu_cv_sys_stat_statfs3_osf1 = yes; then space=yes AC_DEFINE(STAT_STATFS3_OSF1) fi fi if test $space = no; then # AIX AC_MSG_CHECKING([for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)]) AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, [AC_TRY_RUN([ #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif main () { struct statfs fsd; fsd.f_bsize = 0; exit (statfs (".", &fsd)); }], fu_cv_sys_stat_statfs2_bsize=yes, fu_cv_sys_stat_statfs2_bsize=no, fu_cv_sys_stat_statfs2_bsize=no)]) AC_MSG_RESULT([$fu_cv_sys_stat_statfs2_bsize]) if test $fu_cv_sys_stat_statfs2_bsize = yes; then space=yes AC_DEFINE(STAT_STATFS2_BSIZE) fi fi if test $space = no; then # SVR3 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) AC_CACHE_VAL(fu_cv_sys_stat_statfs4, [AC_TRY_RUN([#include #include main () { struct statfs fsd; exit (statfs (".", &fsd, sizeof fsd, 0)); }], fu_cv_sys_stat_statfs4=yes, fu_cv_sys_stat_statfs4=no, fu_cv_sys_stat_statfs4=no)]) AC_MSG_RESULT([$fu_cv_sys_stat_statfs4]) if test $fu_cv_sys_stat_statfs4 = yes; then space=yes AC_DEFINE(STAT_STATFS4) fi fi if test $space = no; then # 4.4BSD and NetBSD AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl member (4.4BSD and NetBSD)]) AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, [AC_TRY_RUN([#include #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif main () { struct statfs fsd; fsd.f_fsize = 0; exit (statfs (".", &fsd)); }], fu_cv_sys_stat_statfs2_fsize=yes, fu_cv_sys_stat_statfs2_fsize=no, fu_cv_sys_stat_statfs2_fsize=no)]) AC_MSG_RESULT([$fu_cv_sys_stat_statfs2_fsize]) if test $fu_cv_sys_stat_statfs2_fsize = yes; then space=yes AC_DEFINE(STAT_STATFS2_FSIZE) fi fi if test $space = no; then # Ultrix AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) AC_CACHE_VAL(fu_cv_sys_stat_fs_data, [AC_TRY_RUN([ #include #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_FS_TYPES_H #include #endif main () { struct fs_data fsd; /* Ultrix's statfs returns 1 for success, 0 for not mounted, -1 for failure. */ exit (statfs (".", &fsd) != 1); }], fu_cv_sys_stat_fs_data=yes, fu_cv_sys_stat_fs_data=no, fu_cv_sys_stat_fs_data=no)]) AC_MSG_RESULT([$fu_cv_sys_stat_fs_data]) if test $fu_cv_sys_stat_fs_data = yes; then space=yes AC_DEFINE(STAT_STATFS2_FS_DATA) fi fi dnl Not supported dnl if test $space = no; then dnl # SVR2 dnl AC_TRY_CPP([#include ], dnl AC_DEFINE(STAT_READ_FILSYS) space=yes) dnl fi ]) dnl AC_TRY_WARNINGS(INCLUDES, FUNCTION-BODY, dnl ACTION-IF-NO-WARNINGS [, ACTION-IF-WARNINGS-OR-ERROR]) AC_DEFUN([AC_TRY_WARNINGS], [cat > conftest.$ac_ext <&AC_FD_CC 2>&AC_FD_CC; then ifelse([$4], , :, [rm -rf conftest* $4]) ifelse([$3], , , [else rm -rf conftest* $3 ])dnl fi rm -f conftest*] ) dnl Find if make is GNU make. AC_DEFUN([AC_PROG_GNU_MAKE], [AC_MSG_CHECKING([whether we are using GNU make]) set dummy ${MAKE-make}; ac_make=[$]2 AC_CACHE_VAL(ac_cv_prog_gnu_make, [cat > conftestmake <<\EOF all: @echo ' ' EOF if ${MAKE-make} --version -f conftestmake 2>/dev/null | grep GNU >/dev/null 2>&1; then ac_cv_prog_gnu_make=yes else ac_cv_prog_gnu_make=no fi rm -f conftestmake])dnl if test $ac_cv_prog_gnu_make = yes; then AC_MSG_RESULT(yes) GNU_MAKE="GNU_MAKE=yes" else AC_MSG_RESULT(no) GNU_MAKE= fi AC_SUBST([GNU_MAKE])dnl ]) dnl dnl Local additions to Autoconf macros. dnl Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc. dnl François Pinard , 1992. dnl ## ----------------------------------------- ## dnl ## ANSIfy the C compiler whenever possible. ## dnl ## ----------------------------------------- ## dnl @defmac AC_PROG_CC_STDC dnl @maindex PROG_CC_STDC dnl @ovindex CC dnl If the C compiler in not in ANSI C mode by default, try to add an option dnl to output variable @code{CC} to make it so. This macro tries various dnl options that select ANSI C on some system or another. It considers the dnl compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and dnl handles function prototypes correctly. dnl dnl If you use this macro, you should check after calling it whether the C dnl compiler has been set to accept ANSI C; if not, the shell variable dnl @code{ac_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source dnl code in ANSI C, you can make an un-ANSIfied copy of it by using the dnl program @code{ansi2knr}, which comes with Ghostscript. dnl @end defmac dnl Unixware 2.1 defines __STDC__ to 1 only when some useful extensions are dnl turned off. They are on by default and turned off with the option -Xc. dnl The consequence is that __STDC__ is defined but e.g. struct sigaction dnl is not defined. -- Norbert dnl Below all tests but the one for HP-UX are removed. They caused more dnl problems than they soved, sigh. -- Norbert AC_DEFUN([MC_HPUX_PROG_CC_STDC], [AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C]) AC_CACHE_VAL(ac_cv_prog_cc_stdc, [ac_cv_prog_cc_stdc=no ac_save_CFLAGS="$CFLAGS" dnl Don't try gcc -ansi; that turns off useful extensions and dnl breaks some systems' header files. dnl AIX -qlanglvl=ansi (removed -- Norbert) dnl Ultrix and OSF/1 -std1 (removed -- Norbert) dnl HP-UX -Aa -D_HPUX_SOURCE dnl SVR4 -Xc (removed -- Norbert) for ac_arg in "" "-Aa -D_HPUX_SOURCE" do CFLAGS="$ac_save_CFLAGS $ac_arg" AC_TRY_COMPILE( [#include #if !defined(__STDC__) || __STDC__ != 1 choke me #endif ], [int test (int i, double x); struct sigaction sa; struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);};], [ac_cv_prog_cc_stdc="$ac_arg"; break]) done CFLAGS="$ac_save_CFLAGS" ]) AC_MSG_RESULT([$ac_cv_prog_cc_stdc]) case "x$ac_cv_prog_cc_stdc" in x|xno) ;; *) CC="$CC $ac_cv_prog_cc_stdc" ;; esac ]) AC_DEFUN([AC_USE_SUNOS_CURSES], [ search_ncurses=false screen_manager="SunOS 4.x /usr/5include curses" AC_MSG_RESULT([Using SunOS 4.x /usr/5include curses]) AC_DEFINE(USE_SUNOS_CURSES) AC_DEFINE(NO_COLOR_CURSES) AC_DEFINE(USE_SYSV_CURSES) CPPFLAGS="$CPPFLAGS -I/usr/5include" XCURSES="xcurses.o /usr/5lib/libcurses.a /usr/5lib/libtermcap.a" AC_MSG_RESULT([Please note that some screen refreshs may fail]) AC_MSG_WARN([Reconsider using Slang]) ]) AC_DEFUN([AC_USE_OSF1_CURSES], [ AC_MSG_RESULT([Using OSF1 curses]) search_ncurses=false screen_manager="OSF1 curses" AC_DEFINE(NO_COLOR_CURSES) AC_DEFINE(USE_SYSV_CURSES) XCURSES="xcurses.o" LIBS="$LIBS -lcurses" ]) AC_DEFUN([AC_USE_SYSV_CURSES], [ AC_MSG_RESULT([Using SysV curses]) AC_DEFINE(USE_SYSV_CURSES) XCURSES="" search_ncurses=false screen_manager="SysV/curses" LIBS="$LIBS -lcurses" ]) AC_DEFUN([AC_USE_TERMINFO], [ AC_DEFINE(SLANG_TERMINFO) AC_MSG_RESULT([Using SLang screen manager/terminfo]) slang_term=" with terminfo" ]) AC_DEFUN([AC_USE_TERMCAP], [ AC_MSG_RESULT([Using SLang screen manager/termcap]) AC_DEFINE(USE_TERMCAP) dnl Check with $LIBS at the end so that it works with ELF libs. AC_CHECK_LIB(termcap, tgoto, LIBS="$LIBS -ltermcap", , $LIBS) slang_term=" with termcap" ]) AC_DEFUN([AC_WITH_SLANG], [ AC_DEFINE(HAVE_SLANG) search_ncurses=false if $slang_use_system_installed_lib then AC_DEFINE(HAVE_SYSTEM_SLANG) LSLANG="-lslang" screen_manager="SLang (system-installed library)" AC_MSG_RESULT([Using system installed SLang library]) rm -f slang/slang.h ac_save_LIBS="$LIBS" LIBS="$LIBS $LSLANG" AC_TRY_RUN( [ #ifdef SLANG_H_INSIDE_SLANG_DIR #include #else #include #endif int main(void){ SLtt_get_terminfo(); SLtt_tgetflag(""); return 0; } ], [LIBS="$ac_save_LIBS"; AC_USE_TERMINFO], [LIBS="$ac_save_LIBS"; AC_USE_TERMCAP]) else MCCPPFLAGS="$MCCPPFLAGS -I\$(slangdir)" LIBSLANG="libmcslang.a" screen_manager="SLang" LSLANG="-lmcslang" CPPFLAGS="$CPPFLAGS -I../slang" fastdepslang=fastdepslang mkdir -p slang rm -f slang/slang.h case "$srcdir" in /*) ln -sf $srcdir/slang/slang-mc.h slang/slang.h;; *) ln -sf ../$srcdir/slang/slang-mc.h slang/slang.h;; esac fi if $slang_check_lib then use_terminfo=false for dir in /usr/lib /usr/share/lib /usr/local/lib /lib \ /usr/local/share /usr/share do if test -d $dir/terminfo; then use_terminfo=true; break fi done if $use_terminfo; then AC_USE_TERMINFO else AC_USE_TERMCAP fi fi] ) AC_DEFUN([AC_WITH_EDIT], [ AC_DEFINE(USE_INTERNAL_EDIT) LIBEDIT_A="libedit.a" MCEDIT="mcedit" LEDIT="-ledit" EDIT_msg="yes" AC_MSG_RESULT([will call internal editor]) ]) AC_DEFUN([AC_EXT2_UNDEL], [ GNOME_UNDELFS_CHECKS if test "$ext2fs_undel" = yes; then AC_MSG_RESULT([With ext2fs file recovery code]) vfs_flags="${vfs_flags}, undelfs" undelfs_o="undelfs.o" LIBS="$LIBS $EXT2FS_UNDEL_LIBS" else AC_MSG_WARN([No ext2fs file recovery code]) fi ]) dnl dnl Parameters: directory filename LIBS_append CPPFLAGS_append nicename dnl AC_DEFUN([AC_NCURSES], [ if $search_ncurses then if test -f $1/$2 then AC_MSG_RESULT([Found ncurses on $1/$2]) LIBS="$LIBS $3" CPPFLAGS="$CPPFLAGS $4" search_ncurses=false screen_manager=$5 AC_DEFINE(USE_NCURSES) fi fi ])