2 dnl Check for ext2fs undel support.
3 dnl Set shell variable ext2fs_undel to "yes" if we have it,
4 dnl "no" otherwise. May define USE_EXT2FSLIB for cpp.
5 dnl Will set EXT2FS_UNDEL_LIBS to required libraries.
7 AC_DEFUN([MC_UNDELFS_CHECKS], [
10 AC_CHECK_HEADERS([ext2fs/ext2_fs.h linux/ext2_fs.h], [ext2_fs_h=yes; break])
11 if test x$ext2_fs_h = xyes; then
12 AC_CHECK_HEADERS([ext2fs/ext2fs.h], [ext2fs_ext2fs_h=yes], ,
15 #ifdef HAVE_EXT2FS_EXT2_FS_H
16 #include <ext2fs/ext2_fs.h>
19 #include <linux/ext2_fs.h>
22 if test x$ext2fs_ext2fs_h = xyes; then
23 AC_DEFINE(USE_EXT2FSLIB, 1,
24 [Define to enable undelete support on ext2])
26 EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err"
27 AC_CHECK_TYPE(ext2_ino_t, ,
28 [AC_DEFINE(ext2_ino_t, ino_t,
29 [Define to ino_t if undefined.])],
35 #ifdef HAVE_EXT2FS_EXT2_FS_H
36 #include <ext2fs/ext2_fs.h>
39 #include <linux/ext2_fs.h>
41 #include <ext2fs/ext2fs.h>
50 dnl Check for tools used in extfs scripts.
51 AC_DEFUN([MC_EXTFS_CHECKS], [
52 AC_PATH_PROG([ZIP], [zip], [/usr/bin/zip])
53 AC_PATH_PROG([UNZIP], [unzip], [/usr/bin/unzip])
54 AC_CACHE_CHECK([for zipinfo code in unzip], [mc_cv_have_zipinfo],
55 [mc_cv_have_zipinfo=no
56 if $UNZIP -Z </dev/null >/dev/null 2>&1; then
57 mc_cv_have_zipinfo=yes
59 if test "x$mc_cv_have_zipinfo" = xyes; then
64 AC_SUBST([HAVE_ZIPINFO])
65 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
70 dnl MC_MCSERVER_CHECKS
71 dnl Check how mcserver should check passwords.
72 dnl Possible methods are PAM, pwdauth and crypt.
73 dnl The later works with both /etc/shadow and /etc/passwd.
74 dnl If PAM is found, other methods are not checked.
76 AC_DEFUN([MC_MCSERVER_CHECKS], [
78 dnl Check if PAM can be used for mcserv
79 AC_CHECK_LIB(dl, dlopen, [LIB_DL="-ldl"])
80 AC_CHECK_LIB(pam, pam_start, [
81 AC_DEFINE(HAVE_PAM, 1,
82 [Define if PAM (Pluggable Authentication Modules) is available])
83 MCSERVLIBS="-lpam $LIB_DL"
84 mcserv_pam=yes], [], [$LIB_DL])
86 dnl Check for crypt() - needed for both /etc/shadow and /etc/passwd.
87 if test -z "$mcserv_pam"; then
89 dnl Check for pwdauth() - used on SunOS.
90 AC_CHECK_FUNCS([pwdauth])
93 AC_CHECK_HEADERS([crypt.h], [crypt_header=yes])
94 if test -n "$crypt_header"; then
97 AC_SEARCH_LIBS(crypt, [crypt crypt_i], [mcserv_auth=crypt])
100 if test -n "$mcserv_auth"; then
101 AC_DEFINE(HAVE_CRYPT, 1,
102 [Define to use crypt function in mcserv])
104 dnl Check for shadow passwords
105 AC_CHECK_HEADERS([shadow.h shadow/shadow.h],
106 [shadow_header=yes; break])
107 if test -n "$shadow_header"; then
110 AC_SEARCH_LIBS(getspnam, [shadow], [mcserv_auth=shadow])
113 if test -n "$mcserv_auth"; then
114 AC_DEFINE(HAVE_SHADOW, 1,
115 [Define to use shadow passwords for mcserv])
128 dnl Check for various functions needed by libvfs.
129 dnl This has various effects:
130 dnl Sets MC_VFS_LIBS to libraries required
131 dnl Sets vfs_flags to "pretty" list of vfs implementations we include.
132 dnl Sets shell variable use_vfs to yes (default, --with-vfs) or
133 dnl "no" (--without-vfs).
136 AC_DEFUN([MC_WITH_VFS],[
139 vfs_flags="cpiofs, extfs, tarfs"
142 AC_ARG_ENABLE([netcode],
143 [ --enable-netcode Support for networking [[yes]]])
145 if test "x$enable_netcode" != xno; then
146 dnl FIXME: network checks should probably be in their own macro.
147 AC_SEARCH_LIBS(socket, [xnet bsd socket inet], [have_socket=yes])
148 if test x$have_socket = xyes; then
149 AC_SEARCH_LIBS(gethostbyname, [bsd socket inet netinet])
150 AC_CHECK_MEMBERS([struct linger.l_linger], , , [
151 #include <sys/types.h>
152 #include <sys/socket.h>
154 AC_CHECK_FUNCS(pmap_set, , [
155 AC_CHECK_LIB(rpc, pmap_set, [
157 AC_DEFINE(HAVE_PMAP_SET)
159 AC_CHECK_FUNCS(pmap_getport pmap_getmaps rresvport)
160 dnl add for source routing support setsockopt
161 AC_CHECK_HEADERS(rpc/pmap_clnt.h, , , [
162 #include <sys/types.h>
163 #include <sys/socket.h>
164 #include <netinet/in.h>
166 #include <rpc/pmap_prot.h>
172 [ --with-mcfs Support mc-specific networking file system [[no]]],
173 [if test "x$withval" != "xno"; then
174 AC_DEFINE(WITH_MCFS, 1, [Define to enable mc-specific networking file system])
175 vfs_flags="$vfs_flags, mcfs"
180 vfs_flags="$vfs_flags, ftpfs, fish"
190 [ --with-samba Support smb virtual file system [[no]]],
191 [if test "x$withval" != "xno"; then
192 AC_DEFINE(WITH_SMBFS, 1, [Define to enable VFS over SMB])
193 vfs_flags="$vfs_flags, smbfs"
198 if test -n "$use_smbfs"; then
199 #################################################
200 # set Samba configuration directory location
202 AC_ARG_WITH(configdir,
203 [ --with-configdir=DIR Where the Samba configuration files are [[/etc]]],
207 # Just in case anybody does it
209 AC_MSG_WARN([--with-configdir called without argument - will use default])
218 AC_ARG_WITH(codepagedir,
219 [ --with-codepagedir=DIR Where the Samba codepage files are],
223 # Just in case anybody does it
225 AC_MSG_WARN([--with-codepagedir called without argument - will use default])
232 dnl Ext2fs undelete support
234 AC_ARG_WITH(ext2undel,
235 [ --with-ext2undel Compile with ext2 undelete code [[yes if found]]],
236 [if test x$withval != xno; then
237 if test x$withval != xyes; then
238 LDFLAGS="$LDFLAGS -L$withval/lib"
239 CPPFLAGS="$CPPFLAGS -I$withval/include"
244 AC_CHECK_LIB(ext2fs, ext2fs_close, [AC_EXT2_UNDEL], , [-lcom_err])
247 AC_DEFINE(USE_VFS, 1, [Define to enable VFS support])
248 if $use_net_code; then
249 AC_DEFINE(USE_NETCODE, 1, [Define to use networked VFS])
255 AC_DEFUN([MC_VFS_CHECKS],[
258 [ --with-vfs Compile with the VFS code [[yes]]],
265 dnl Should we issue a warning?
272 dnl Filesystem information detection
274 dnl To get information about the disk, mount points, etc.
277 AC_DEFUN([AC_GET_FS_INFO], [
278 AC_CHECK_HEADERS([fcntl.h utime.h])
280 gl_LIST_MOUNTED_FILE_SYSTEMS([
281 AC_DEFINE(HAVE_INFOMOUNT_LIST, 1,
282 [Define if the list of mounted filesystems can be determined])],
283 [AC_MSG_WARN([could not determine how to read list of mounted fs])])
291 dnl Try using termcap database and link with libtermcap if possible.
293 AC_DEFUN([MC_USE_TERMCAP], [
294 screen_msg="$screen_msg with termcap database"
295 AC_MSG_NOTICE([using S-Lang screen library with termcap])
296 AC_DEFINE(USE_TERMCAP, 1, [Define to use termcap database])
297 AC_CHECK_LIB(termcap, tgoto, [MCLIBS="$MCLIBS -ltermcap"], , [$LIBS])
302 dnl Check if private functions are available for linking
304 AC_DEFUN([MC_SLANG_PRIVATE], [
305 AC_CACHE_CHECK([if S-Lang exports private functions],
306 [mc_cv_slang_private], [
310 #ifdef HAVE_SLANG_SLANG_H
311 #include <slang/slang.h>
315 #if SLANG_VERSION >= 10000
316 extern unsigned int SLsys_getkey (void);
318 extern unsigned int _SLsys_getkey (void);
321 #if SLANG_VERSION >= 10000
327 [mc_cv_slang_private=yes],
328 [mc_cv_slang_private=no])
332 if test x$mc_cv_slang_private = xyes; then
333 AC_DEFINE(HAVE_SLANG_PRIVATE, 1,
334 [Define if private S-Lang functions are available])
340 dnl Check if the installed S-Lang library uses termcap
342 AC_DEFUN([MC_SLANG_TERMCAP], [
343 AC_CACHE_CHECK([if S-Lang uses termcap], [mc_cv_slang_termcap], [
347 #ifdef HAVE_SLANG_SLANG_H
348 #include <slang/slang.h>
353 [SLtt_get_terminfo(); SLtt_tgetflag("");],
354 [mc_cv_slang_termcap=no],
355 [mc_cv_slang_termcap=yes])
359 if test x$mc_cv_slang_termcap = xyes; then
365 dnl Common code for MC_WITH_SLANG
367 AC_DEFUN([_MC_WITH_XSLANG], [
369 AC_DEFINE(HAVE_SLANG, 1,
370 [Define to use S-Lang library for screen management])
375 dnl Check if the system S-Lang library can be used.
376 dnl If not, and $1 is "strict", exit.
378 AC_DEFUN([MC_WITH_SLANG], [
383 AC_CHECK_HEADERS([slang.h slang/slang.h],
384 [slang_h_found=yes; break])
385 if test -z "$slang_h_found"; then
386 AC_MSG_ERROR([Slang header not found])
389 dnl Check if termcap is needed.
390 dnl This check must be done before anything is linked against S-Lang.
391 if test x$with_screen = xslang; then
395 dnl Check the library
396 if test x$with_screen = xslang; then
397 AC_CHECK_LIB([slang], [SLang_init_tty], [MCLIBS="$MCLIBS -lslang"],
398 AC_MSG_ERROR([Slang library not found]), ["$MCLIBS"])
401 dnl Unless external S-Lang was requested, reject S-Lang with UTF-8 hacks
402 if test x$with_screen = xslang; then
405 [SLsmg_write_nwchars],
406 [AC_MSG_ERROR([Rejecting S-Lang with UTF-8 support, it's not fully supported yet])])
409 if test x$with_screen = xslang; then
412 screen_msg="S-Lang library (installed on the system)"
414 AC_MSG_ERROR([S-Lang library not found])
422 dnl Use the ncurses library. It can only be requested explicitly,
423 dnl so just fail if anything goes wrong.
425 dnl If ncurses exports the ESCDELAY variable it should be set to 0
426 dnl or you'll have to press Esc three times to dismiss a dialog box.
428 AC_DEFUN([MC_WITH_NCURSES], [
429 dnl has_colors() is specific to ncurses, it's not in the old curses
433 AC_SEARCH_LIBS([addwstr], [ncursesw ncurses curses], [MCLIBS="$MCLIBS $LIBS";ncursesw_found=yes],
434 [AC_MSG_WARN([Cannot find ncurses library, that support wide characters])])
436 if test -z "$ncursesw_found"; then
438 AC_SEARCH_LIBS([has_colors], [ncurses curses], [MCLIBS="$MCLIBS $LIBS"],
439 [AC_MSG_ERROR([Cannot find ncurses library])])
444 AC_CHECK_HEADERS([ncursesw/curses.h ncurses/curses.h ncurses.h curses.h],
445 [ncurses_h_found=yes; break])
447 if test -z "$ncurses_h_found"; then
448 AC_MSG_ERROR([Cannot find ncurses header file])
452 screen_msg="ncurses library"
453 AC_DEFINE(USE_NCURSES, 1,
454 [Define to use ncurses for screen management])
456 AC_CACHE_CHECK([for ESCDELAY variable],
457 [mc_cv_ncurses_escdelay],
462 [mc_cv_ncurses_escdelay=yes],
463 [mc_cv_ncurses_escdelay=no])
465 if test "$mc_cv_ncurses_escdelay" = yes; then
466 AC_DEFINE(HAVE_ESCDELAY, 1,
467 [Define if ncurses has ESCDELAY variable])
470 AC_CHECK_FUNCS(resizeterm)
475 dnl Use the ncurses library. It can only be requested explicitly,
476 dnl so just fail if anything goes wrong.
478 dnl If ncurses exports the ESCDELAY variable it should be set to 0
479 dnl or you'll have to press Esc three times to dismiss a dialog box.
481 AC_DEFUN([MC_WITH_NCURSESW], [
482 dnl has_colors() is specific to ncurses, it's not in the old curses
485 AC_SEARCH_LIBS([has_colors], [ncursesw], [MCLIBS="$MCLIBS $LIBS"],
486 [AC_MSG_ERROR([Cannot find ncursesw library])])
490 AC_CHECK_HEADERS([ncursesw/curses.h],
491 [ncursesw_h_found=yes; break])
493 if test -z "$ncursesw_h_found"; then
494 AC_MSG_ERROR([Cannot find ncursesw header file])
498 screen_msg="ncursesw library"
499 AC_DEFINE(USE_NCURSESW, 1,
500 [Define to use ncursesw for screen management])
502 AC_CACHE_CHECK([for ESCDELAY variable],
503 [mc_cv_ncursesw_escdelay],
508 [mc_cv_ncursesw_escdelay=yes],
509 [mc_cv_ncursesw_escdelay=no])
511 if test "$mc_cv_ncursesw_escdelay" = yes; then
512 AC_DEFINE(HAVE_ESCDELAY, 1,
513 [Define if ncursesw has ESCDELAY variable])
516 AC_CHECK_FUNCS(resizeterm)
522 dnl Check for ext2fs recovery code
524 AC_DEFUN([AC_EXT2_UNDEL], [
526 if test "$ext2fs_undel" = yes; then
527 AC_MSG_NOTICE([using ext2fs file recovery code])
528 vfs_flags="${vfs_flags}, undelfs"
530 MCLIBS="$MCLIBS $EXT2FS_UNDEL_LIBS"
532 AC_MSG_NOTICE([not using ext2fs file recovery code])
537 dnl Check whether the g_module_* family of functions works
538 dnl on this system. We need to know that at the compile time to
539 dnl decide whether to link with X11.
541 AC_DEFUN([AC_G_MODULE_SUPPORTED], [
542 AC_CACHE_CHECK([if gmodule functionality is supported], mc_cv_g_module_supported, [
543 ac_save_CFLAGS="$CFLAGS"
545 CFLAGS="$CFLAGS $GMODULE_CFLAGS"
546 LIBS="$GMODULE_LIBS $LIBS"
552 int ret = (g_module_supported () == TRUE) ? 0 : 1;
556 [mc_cv_g_module_supported=yes],
557 [mc_cv_g_module_supported=no],
558 [mc_cv_g_module_supported=no]
560 CFLAGS="$ac_save_CFLAGS"
564 if test "$mc_cv_g_module_supported" = yes; then
565 AC_DEFINE(HAVE_GMODULE, 1,
566 [Define if gmodule functionality is supported])
573 dnl @synopsis AX_PATH_LIB_PCRE [(A/NA)]
575 dnl check for pcre lib and set PCRE_LIBS and PCRE_CFLAGS accordingly.
577 dnl also provide --with-pcre option that may point to the $prefix of
578 dnl the pcre installation - the macro will check $pcre/include and
579 dnl $pcre/lib to contain the necessary files.
581 dnl the usual two ACTION-IF-FOUND / ACTION-IF-NOT-FOUND are supported
582 dnl and they can take advantage of the LIBS/CFLAGS additions.
584 dnl @category InstalledPackages
585 dnl @author Guido U. Draheim <guidod@gmx.de>
586 dnl @version 2006-10-13
587 dnl @license GPLWithACException
589 AC_DEFUN([AX_PATH_LIB_PCRE],[dnl
590 AC_MSG_CHECKING([lib pcre])
592 [ --with-pcre[[=prefix]] compile xmlpcre part (via libpcre check)],,
594 if test ".$with_pcre" = ".no" ; then
595 AC_MSG_RESULT([disabled])
598 AC_MSG_RESULT([(testing)])
599 AC_CHECK_LIB(pcre, pcre_study)
600 if test "$ac_cv_lib_pcre_pcre_study" = "yes" ; then
602 AC_MSG_CHECKING([lib pcre])
603 AC_MSG_RESULT([$PCRE_LIBS])
606 OLDLDFLAGS="$LDFLAGS" ; LDFLAGS="$LDFLAGS -L$with_pcre/lib"
607 OLDCPPFLAGS="$CPPFLAGS" ; CPPFLAGS="$CPPFLAGS -I$with_pcre/include"
608 AC_CHECK_LIB(pcre, pcre_compile)
609 CPPFLAGS="$OLDCPPFLAGS"
610 LDFLAGS="$OLDLDFLAGS"
611 if test "$ac_cv_lib_pcre_pcre_compile" = "yes" ; then
612 AC_MSG_RESULT(.setting PCRE_LIBS -L$with_pcre/lib -lpcre)
613 PCRE_LIBS="-L$with_pcre/lib -lpcre"
614 test -d "$with_pcre/include" && PCRE_CFLAGS="-I$with_pcre/include"
615 AC_MSG_CHECKING([lib pcre])
616 AC_MSG_RESULT([$PCRE_LIBS])
619 AC_MSG_CHECKING([lib pcre])
620 AC_MSG_RESULT([no, (WARNING)])
625 AC_SUBST([PCRE_LIBS])
626 AC_SUBST([PCRE_CFLAGS])