2 dnl Configure.in file for the Midnight Commander
5 AC_INIT(GNU Midnight Commander, 4.5.99a, mc-devel@gnome.org)
7 AC_CONFIG_SRCDIR(src/main.c)
8 AC_CONFIG_AUX_DIR(config)
9 AM_INIT_AUTOMAKE(mc, 4.5.99a)
11 AM_CONFIG_HEADER(config.h)
28 AC_CHECK_TOOL(AR, ar, ar)
30 dnl Only list browsers here that can be run in background (i.e. with `&')
31 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
34 dnl Ovverriding mmap support. This has to be before AC_FUNC_MMAP is used.
35 dnl We use only part of the functionality of mmap, so on AIX,
36 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
39 [--with-mmap To force using the mmap call (AIX)],
42 ac_cv_func_mmap_fixed_mapped=yes
43 AC_MSG_NOTICE([forcing MMAP support])
46 ac_cv_func_mmap_fixed_mapped=no
47 AC_MSG_NOTICE([disabling MMAP support])
52 if test "x$ALL_LINGUAS" = x; then
53 ALL_LINGUAS="az be bg ca cs da de el es es_ES eu fi fr hu it ja ko lv nl no pl pt pt_BR ro ru sk sl sv uk ta tr wa zh_CN zh_TW"
57 dnl Internationalization
60 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
61 CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
65 dnl Hack to make extraconf.h visible even if compiling outside srcdir.
67 CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)"
70 dnl Enforce coding standards
72 if test "x$GCC" = xyes; then
73 CFLAGS="$CFLAGS -Wall"
79 AM_PATH_GLIB(1.2.0,,[AC_MSG_ERROR([Test for GLIB failed. MC requires GLIB.])])
80 LIBS="$LIBS $GLIB_LIBS"
83 dnl OS specific flags.
91 AC_DEFINE(_POSIX_SOURCE)
94 AC_DEFINE(SCO_FLAVOR, 1, [Define if you want to turn on SCO-specific code])
95 AC_DEFINE(_SVID3, 1, [Needs to be defined on SCO])
100 AC_CHECK_HEADERS([unistd.h string.h memory.h crypt.h grp.h limits.h \
101 malloc.h stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h \
102 sys/time.h sys/timeb.h sys/select.h sys/ioctl.h stropts.h])
110 dnl Missing structure components
116 dnl Check availability of some functions
119 AC_CHECK_FUNCS([strerror statfs strftime \
120 memmove pwdauth truncate initgroups putenv \
121 memset memcpy tcsetattr tcgetattr cfgetospeed \
122 sigaction sigemptyset sigprocmask sigaddset \
123 sysconf setuid setreuid telldir seekdir])
126 dnl getpt is a GNU Extension (glibc 2.1.x)
128 AC_CHECK_FUNCS(getpt)
133 AC_CHECK_LIB(shadow,pw_encrypt,
135 AC_CHECK_HEADERS([shadow.h shadow/shadow.h],
136 [shadow_header=yes; break])
137 if test -n "$shadow_header"; then
138 AC_DEFINE(LINUX_SHADOW, 1,
139 [Define to use shadow passwords on Linux])
146 NEED_CRYPT_PROTOTYPE=yes
147 if test x$ac_cv_header_crypt_h = xyes; then
148 AC_TRY_WARNINGS([#include <crypt.h>], [char *p = crypt("xxx", "yyy");
151 NEED_CRYPT_PROTOTYPE=no])
153 if test x$ac_cv_header_unistd_h = xyes; then
154 AC_TRY_WARNINGS([#include <unistd.h>], [char *p = crypt("xxx", "yyy");
157 NEED_CRYPT_PROTOTYPE=no])
160 if test x$NEED_CRYPT_PROTOTYPE = xyes; then
161 AC_DEFINE(NEED_CRYPT_PROTOTYPE, 1,
162 [Define if function `crypt' needs a prototype])
166 dnl On SCO and some SVR4, crypt is on libcrypt.a
167 dnl grantpt in libpt.a
170 AC_CHECK_FUNCS(crypt, , [
171 AC_CHECK_LIB(crypt, crypt, [LCRYPT="-lcrypt"], [
172 AC_CHECK_LIB(crypt_i, crypt, [LCRYPT="-lcrypt_i"])])])
175 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
177 dnl replacing lstat with statlstat on sco makes it more portable between
179 AC_CHECK_FUNCS(statlstat)
182 dnl If running under AIX, AC_AIX does not tell us that
184 AC_MSG_CHECKING([for AIX defines])
186 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
190 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
192 ], [AC_MSG_RESULT(no)])
195 dnl This is from GNU fileutils, check aclocal.m4 for more information
200 dnl Missing typedefs and replacements
204 AC_CHECK_TYPE(umode_t, int)
205 AC_CHECK_TYPE(off_t, long)
208 AC_CHECK_TYPE(nlink_t, unsigned int)
217 dnl These variables are only used when building the MC binary
223 textmode_x11_support="no"
224 AC_ARG_WITH(tm-x-support,
225 [--with-tm-x-support Try getting events from X Window System],
226 [if test x$withval = xyes; then
229 MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
230 AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
231 [Define to enable getting events from X Window System])
232 textmode_x11_support="yes"
237 dnl Network related functions
240 AC_CHECK_LIB(nsl, t_accept)
241 AC_CHECK_LIB(socket, socket)
244 AC_CHECK_FUNCS(socket, have_socket=yes)
245 if test $have_socket = no; then
246 # socket is not in the default libraries. See if it's in some other.
247 for lib in bsd socket inet; do
248 AC_CHECK_LIB($lib, socket, [
251 AC_DEFINE(HAVE_SOCKET)
256 have_gethostbyname=no
257 AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes])
258 if test $have_gethostbyname = no; then
259 # gethostbyname is not in the default libraries. See if it's in some other.
260 for lib in bsd socket inet; do
261 AC_CHECK_LIB([$lib], [gethostbyname],
262 [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
266 AC_CHECK_FUNCS(socketpair)
269 dnl Sequent wants getprocessstats
271 AC_CHECK_LIB(seq, get_process_stats, [
273 AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
274 [Define if you have function `get_process_stats' and
275 have to use that instead of gettimeofday])])
280 dnl Install mcserv only if explicitly enabled
282 AC_ARG_ENABLE([mcserv-install],
283 [--enable-mcserv-install Install mcserv - Midnight Commander file server])
286 if test $have_socket = yes; then
287 NETFILES="\$(NETFILES)"
292 if test $use_vfs = yes
294 AC_MSG_NOTICE([enabling VFS code])
295 vfs_type="Midnight Commander Virtual File System"
298 dnl This should be unadorned "slang" or "ncurses"
301 dnl Screen manager name (for the output only)
302 screen_manager=unknown
304 mouse_lib="xterm only"
307 AC_ARG_WITH(gpm-mouse,
308 [--with-gpm-mouse[=base-dir] Compile with gpm mouse support (Linux only)],
309 [if test x$withval != xno
311 if test x$withval != xyes
313 LIBS="$LIBS -L$withval/lib"
314 CPPFLAGS="$CPPFLAGS -I$withval/include"
316 AC_DEFINE(HAVE_LIBGPM, 1,
317 [Define to enable gpm mouse support on Linux])
318 mouse_lib="GPM and xterm"
319 MCLIBS="-lgpm $MCLIBS"
321 [AC_CHECK_LIB(gpm, Gpm_Repeat,
322 [AC_DEFINE(HAVE_LIBGPM)
323 mouse_lib="GPM and xterm"
324 MCLIBS="-lgpm $MCLIBS"],
325 [AC_MSG_WARN([libgpm is missing or older than 0.18])],
332 [--with-ncurses[=base-dir] Compile with ncurses/locate base dir],
333 [if test x$withval != xyes; then
334 MCLIBS="$MCLIBS -L$withval/lib"
335 CPPFLAGS="$CPPFLAGS -I$withval/include"
338 AC_CHECK_HEADERS([ncurses/curses.h ncurses.h curses.h],
339 [ncurses_h_found=yes; break])
340 if test -z "$ncurses_h_found"; then
341 AC_MSG_ERROR([Could not find ncurses header])
344 dnl curses_version is specific to ncurses, it's not in old curses
345 AC_CHECK_LIB(ncurses, has_colors, [MCLIBS="$MCLIBS -lncurses"],
346 [AC_MSG_ERROR([Could not find ncurses library])])
348 screen_type="ncurses"
349 screen_manager="ncurses"
350 AC_DEFINE(USE_NCURSES, 1,
351 [Define to use ncurses for screen management])
355 [--with-hsc Compile with support for the HSC firewall],
356 [if test x$withval = xyes; then
357 AC_DEFINE(HSC_PROXY, 1,
358 [Define if you want to use the HSC firewall])
363 dnl Check for the -mandoc package
365 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
367 AC_MSG_CHECKING([for manual formatting macros])
368 AC_CACHE_VAL(ac_cv_mandoc, [
369 nroff -mandoc < /dev/null > /dev/null 2>&1
378 AC_MSG_RESULT([$MANDOC])
385 dnl Check if nroff accepts -Tlatin1 or -Tascii
388 AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
389 AC_CACHE_VAL(ac_cv_nroff_tascii, [
390 nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
393 ac_cv_nroff_tascii=" -Tlatin1"
395 nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
398 ac_cv_nroff_tascii=" -Tascii"
400 ac_cv_nroff_tascii=""
404 if test "x$ac_cv_nroff_tascii" = x; then
407 AC_MSG_RESULT([yes,$ac_cv_nroff_tascii])
410 TROFFASCII="$ac_cv_nroff_tascii"
414 dnl Check for - option to file
416 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
417 if $HAVE_FILECMD; then
418 AC_MSG_CHECKING([for - option to file command])
419 AC_CACHE_VAL(ac_cv_filestdin, [[
420 cat > conftest.c <<\EOF
427 cat > conftest.sed <<\EOF
431 filehyphen_1=`file conftest.c 2>/dev/null | sed -f conftest.sed`
432 filehyphen_2=`cat conftest.c | file - 2>/dev/null | sed -f conftest.sed`
433 if test "x$filehyphen_1" = "x$filehyphen_2"; then
438 rm conftest.c conftest.sed
441 if test x$ac_cv_filestdin = xyes; then
442 AC_DEFINE(FILE_STDIN, 1,
443 [Define if the file command accepts - for stdin])
445 filestdin=$ac_cv_filestdin
446 AC_MSG_RESULT([$filestdin])
449 dnl Check for -L option to file
452 AC_MSG_CHECKING([for -L option to file command])
453 AC_CACHE_VAL(ac_cv_filel, [
454 file -L . > /dev/null 2>&1
462 if test x$ac_cv_filel = xyes; then
463 AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
466 AC_MSG_RESULT([$filel])
469 AC_MSG_CHECKING([for subshell support])
470 AC_ARG_WITH(subshell,
471 [--with-subshell=optional To disable concurrent shell by default
472 --without-subshell To disable concurrent shell completely],
474 if test x$withval = xoptional
476 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
477 [Define to make subshell support optional])
478 AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
479 [Define to enable subshell support])
482 if test x$withval = xyes
484 AC_DEFINE(HAVE_SUBSHELL_SUPPORT)
487 [dnl Default: provide the subshell support on non-ultrix machines
493 AC_DEFINE(HAVE_SUBSHELL_SUPPORT)
498 AC_MSG_RESULT([$result])
501 AC_DEFINE(REGEX_MALLOC, 1, [Define to make regex use malloc(), not alloca()])
504 dnl Memory Allocation Debugger
508 [--with-mad Developers only: activates MAD (memory debugger)],
509 [if test x$withval = xyes; then
510 mem_debug="Janne's MAD library"
511 AC_DEFINE(HAVE_MAD, 1,
512 [Define to use Memory Allocation Debugger (MAD)])
513 AC_MSG_NOTICE([compiling with memory leak detector])
517 dnl Electric Fence - another memory debugger
520 [--with-efence Developers only: activates Electric Fence],
521 [if test x$withval = xyes; then
522 LIBS="$LIBS -lefence"
523 AC_MSG_NOTICE([compiling with Electric fence])
524 mem_debug="Electric Fence"
527 if test "x$screen_type" != xncurses; then
530 slang_use_system_installed_lib=false
531 AC_CHECK_LIB(slang,SLang_init_tty,
532 [AC_CHECK_HEADERS([slang.h slang/slang.h],
533 [slang_h_found=yes; break])
534 if test "x$slang_h_found" = xyes; then
535 slang_use_system_installed_lib=true
536 slang_check_lib=false
541 AC_ARG_WITH(terminfo,
542 [--with-terminfo SLANG: Force usage of terminfo],[
543 if test x$withval = xyes; then
545 slang_check_lib=false
546 slang_use_system_installed_lib=false
551 [--with-termcap SLANG: Force usage of termcap],[
552 if test x$withval = xyes; then
554 slang_check_lib=false
555 slang_use_system_installed_lib=false
559 AC_ARG_WITH(included-slang,
560 [--with-included-slang SLANG: use the SLang library included here],[
561 if test x$withval = xyes; then
562 slang_use_system_installed_lib=false
568 [--with-slang Compile with the slang screen manager],[
569 if test x$withval = xyes; then
579 [--with-edit Enable internal editor],
580 [if test x$withval = xyes
586 [dnl Default: provide the internal editor
595 if test $use_vfs = yes; then
596 AC_ARG_WITH(ext2undel,
597 [--with-ext2undel Compile with ext2 undelete code],[
598 if test x$withval != xno;
600 if test x$withval != xyes
602 LIBS="$LIBS -L$withval/lib"
603 CPPFLAGS="$CPPFLAGS -I$withval/include"
608 AC_CHECK_LIB(ext2fs, ext2fs_close, [AC_EXT2_UNDEL], , [-lcom_err])
615 dnl Ncurses specific checks
617 dnl If ncurses exports the ESCDELAY variable it should be set to 0
618 dnl or you'll have to press Esc three times to dismiss a dialog box.
620 if test "x$screen_type" = xncurses; then
623 AC_CACHE_CHECK([for ESCDELAY variable],
624 [mc_cv_ncurses_escdelay],
625 [AC_TRY_COMPILE([], [
632 [mc_cv_ncurses_escdelay=yes],
633 [mc_cv_ncurses_escdelay=no]
636 if test "$mc_cv_ncurses_escdelay" = yes; then
637 AC_DEFINE(HAVE_ESCDELAY, 1,
638 [Define if ncurses has ESCDELAY variable])
641 AC_CHECK_FUNCS(resizeterm)
645 if test "x$screen_type" = "x"; then
650 dnl The variables used for expanding the auto saver.
657 cons_saver="cons.saver"
661 dnl On Linux, check for PAM authentication available
663 AC_CHECK_LIB(pam, pam_start, [
664 AC_DEFINE(HAVE_PAM, 1,
665 [Define if PAM (Pluggable Authentication Modules) is available])
674 dnl User visible support for charset conversion.
676 AC_ARG_ENABLE([charset],
677 [--enable-charset Support for charset selection and conversion])
679 if test "x$enable_charset" = xyes; then
680 if test -z "$am_cv_func_iconv"; then
681 AC_MSG_WARN([Cannot enable charset support because iconv function is missing])
683 AC_DEFINE(HAVE_CHARSET, 1,
684 [Define to enable charset selection and conversion])
689 if test "$GLIBC21" != yes; then
690 AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
694 dnl This code should be moved to the ac_WITH_SLANG
696 dnl We check for the existance of setupterm on curses library
697 dnl this is required to load certain definitions on some termcaps
698 dnl editions (AIX and OSF/1 I seem to remember).
699 dnl Note that we avoid using setupterm
700 if test "x$screen_type" = xslang; then
705 AC_CHECK_LIB(curses,setupterm,
709 if (key_end == parm_insert_line)
713 [MCLIBS="$MCLIBS -lcurses"
714 AC_DEFINE(USE_SETUPTERM, 1,
715 [Define to use function `setupterm'
716 from `curses' library in S-Lang])])
721 LIBS="$LIBS $posix_libs"
728 if test "x$SAMBAFILES" != x; then
729 AC_CONFIG_SUBDIRS([vfs/samba])
732 AM_CONDITIONAL(USE_EDIT, [test -n "$LIBEDIT_A"])
733 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
734 AM_CONDITIONAL(USE_VFS_NET, [test -n "$NETFILES"])
735 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$undelfs_o"])
736 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$SAMBAFILES"])
737 AM_CONDITIONAL(MCSERV_INSTALL,
738 [test "x$enable_mcserv_install$mcserv" = xyesmcserv])
739 AM_CONDITIONAL(INCLUDED_SLANG,
740 [test "x$slang_use_system_installed_lib" = xfalse])
741 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
742 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
744 AH_BOTTOM([#include <extraconf.h>])
775 doc/mc.1 doc/mcedit.1 doc/mcserv.8 doc/ru/mc.1 doc/ru/Makefile
778 intl/Makefile po/Makefile.in
781 AC_CONFIG_COMMANDS(potfiles,
782 [grep ^top_builddir po/Makefile.in >/dev/null && sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])
786 if test "x$screen_type" = xslang; then
787 screen_manager="${screen_manager}${slang_term}"
793 Source code location: ${srcdir}
795 Compiler flags: ${CFLAGS}
796 File system: ${vfs_type}
798 Screen manager: ${screen_manager}
799 Install console saver: ${install_saver}
800 Mouse support: ${mouse_lib}
801 X11 events support: ${textmode_x11_support}
802 Debugger code: ${mem_debug}
803 With subshell support: ${subshell}
804 Internal editor: ${EDIT_msg}
805 Install path: ${prefix}/bin, ${prefix}/lib/mc