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])
33 ALL_LINGUAS="az ca cs da de el es es_ES fi fr hu it ja ko lv nl no pl pt_BR ro ru sk sl sv uk ta tr wa zh_TW zh_CN.GB2312"
36 dnl Internationalization
39 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
40 CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
44 dnl Hack to make extraconf.h visible even if compiling outside srcdir.
46 CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)"
49 dnl Enforce coding standards
51 if test "x$GCC" = xyes; then
52 CFLAGS="$CFLAGS -Wall"
58 AM_PATH_GLIB(1.2.0,,[AC_MSG_ERROR([Test for GLIB failed. MC requires GLIB.])])
59 LIBS="$LIBS $GLIB_LIBS"
62 dnl OS specific flags.
70 AC_DEFINE(_POSIX_SOURCE)
73 AC_DEFINE(SCO_FLAVOR, 1, [Define if you want to turn on SCO-specific code])
74 AC_DEFINE(_SVID3, 1, [Needs to be defined on SCO])
79 AC_CHECK_HEADERS([unistd.h string.h memory.h crypt.h grp.h limits.h \
80 malloc.h stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h \
81 sys/time.h sys/timeb.h sys/select.h sys/ioctl.h stropts.h])
89 dnl Missing structure components
95 dnl Check availability of some functions
98 AC_CHECK_FUNCS([strerror statfs strcasecmp strncasecmp strftime \
99 strdup memmove pwdauth truncate initgroups putenv \
100 memset memcpy tcsetattr tcgetattr cfgetospeed \
101 sigaction sigemptyset sigprocmask sigaddset \
102 sysconf setuid setreuid telldir seekdir])
105 dnl getpt is a GNU Extension (glibc 2.1.x)
107 AC_CHECK_FUNCS(getpt)
112 AC_CHECK_LIB(shadow,pw_encrypt,
114 AC_CHECK_HEADERS(shadow.h,,
115 [AC_CHECK_HEADERS(shadow/shadow.h,,
116 [shadow_header=no])])
117 if test $shadow_header = yes; then
118 AC_DEFINE(LINUX_SHADOW, 1,
119 [Define to use shadow passwords on Linux])
126 NEED_CRYPT_PROTOTYPE=yes
127 if test x$ac_cv_header_crypt_h = xyes; then
128 AC_TRY_WARNINGS([#include <crypt.h>], [char *p = crypt("xxx", "yyy");
131 NEED_CRYPT_PROTOTYPE=no])
133 if test x$ac_cv_header_unistd_h = xyes; then
134 AC_TRY_WARNINGS([#include <unistd.h>], [char *p = crypt("xxx", "yyy");
137 NEED_CRYPT_PROTOTYPE=no])
140 if test x$NEED_CRYPT_PROTOTYPE = xyes; then
141 AC_DEFINE(NEED_CRYPT_PROTOTYPE, 1,
142 [Define if function `crypt' needs a prototype])
146 dnl On SCO and some SVR4, crypt is on libcrypt.a
147 dnl grantpt in libpt.a
150 AC_CHECK_FUNCS(crypt, , [
151 AC_CHECK_LIB(crypt, crypt, [LCRYPT="-lcrypt"], [
152 AC_CHECK_LIB(crypt_i, crypt, [LCRYPT="-lcrypt_i"])])])
155 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
157 dnl replacing lstat with statlstat on sco makes it more portable between
159 AC_CHECK_FUNCS(statlstat)
162 dnl If running under AIX, AC_AIX does not tell us that
164 AC_MSG_CHECKING([for AIX defines])
166 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
170 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
172 ], [AC_MSG_RESULT(no)])
175 dnl This is from GNU fileutils, check aclocal.m4 for more information
180 dnl Missing typedefs and replacements
184 AC_CHECK_TYPE(umode_t, int)
185 AC_CHECK_TYPE(off_t, long)
188 AC_CHECK_TYPE(nlink_t, unsigned int)
198 dnl These variables are only used when building the MC binary
204 textmode_x11_support="no"
205 AC_ARG_WITH(tm-x-support,
206 [--with-tm-x-support Try getting events from X Window System],
207 [if test x$withval = xyes; then
210 MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
211 AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
212 [Define to enable getting events from X Window System])
213 textmode_x11_support="yes"
218 dnl Network related functions
221 AC_CHECK_LIB(nsl, t_accept)
222 AC_CHECK_LIB(socket, socket)
225 AC_CHECK_FUNCS(socket, have_socket=yes)
226 if test $have_socket = no; then
227 # socket is not in the default libraries. See if it's in some other.
228 for lib in bsd socket inet; do
229 AC_CHECK_LIB($lib, socket, [
232 AC_DEFINE(HAVE_SOCKET)
237 have_gethostbyname=no
238 AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes])
239 if test $have_gethostbyname = no; then
240 # gethostbyname is not in the default libraries. See if it's in some other.
241 for lib in bsd socket inet; do
242 AC_CHECK_LIB([$lib], [gethostbyname],
243 [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
247 AC_CHECK_FUNCS(socketpair)
250 dnl Sequent wants getprocessstats
252 AC_CHECK_LIB(seq, get_process_stats, [
254 AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
255 [Define if you have function `get_process_stats' and
256 have to use that instead of gettimeofday])])
261 dnl Install mcserv only if explicitly enabled
263 AC_ARG_ENABLE([mcserv-install],
264 [--enable-mcserv-install Install mcserv - Midnight Commander file server])
267 if test $have_socket = yes; then
268 NETFILES="\$(NETFILES)"
273 if test $use_vfs = yes
275 AC_MSG_NOTICE([enabling VFS code])
276 vfs_type="Midnight Commander Virtual File System"
279 screen_manager=unknown
282 mouse_lib="xterm only"
285 AC_ARG_WITH(gpm-mouse,
286 [--with-gpm-mouse[=base-dir] Compile with gpm mouse support (Linux only)],
287 [if test x$withval != xno
289 if test x$withval != xyes
291 LIBS="$LIBS -L$withval/lib"
292 CPPFLAGS="$CPPFLAGS -I$withval/include"
294 AC_DEFINE(HAVE_LIBGPM, 1,
295 [Define to enable gpm mouse support on Linux])
296 mouse_lib="GPM and xterm"
297 MCLIBS="-lgpm $MCLIBS"
299 [AC_CHECK_LIB(gpm, Gpm_Repeat,
300 [AC_DEFINE(HAVE_LIBGPM)
301 mouse_lib="GPM and xterm"
302 MCLIBS="-lgpm $MCLIBS"],
303 [AC_MSG_WARN([libgpm is missing or older than 0.18])],
310 [--with-ncurses[=base-dir] Compile with ncurses/locate base dir],
311 [if test x$withval = xyes
315 MCLIBS="$MCLIBS -L$withval/lib -lncurses"
316 CPPFLAGS="$CPPFLAGS -I$withval/include"
318 screen_manager="ncurses"
319 AC_DEFINE(USE_NCURSES)
324 [--with-hsc Compile with support for the HSC firewall],
325 [if test x$withval = xyes; then
326 AC_DEFINE(HSC_PROXY, 1,
327 [Define if you want to use the HSC firewall])
332 dnl Check for the -mandoc package
334 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
336 AC_MSG_CHECKING([for manual formatting macros])
337 AC_CACHE_VAL(ac_cv_mandoc, [
338 nroff -mandoc < /dev/null > /dev/null 2>&1 /dev/null
347 AC_MSG_RESULT([$MANDOC])
354 dnl Check if nroff accepts -Tlatin1 or -Tascii
357 AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
358 AC_CACHE_VAL(ac_cv_nroff_tascii, [
359 nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
362 ac_cv_nroff_tascii=" -Tlatin1"
364 nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
367 ac_cv_nroff_tascii=" -Tascii"
369 ac_cv_nroff_tascii=""
373 if test "x$ac_cv_nroff_tascii" = x; then
376 AC_MSG_RESULT([yes,$ac_cv_nroff_tascii])
379 TROFFASCII="$ac_cv_nroff_tascii"
383 dnl Check for - option to file
385 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
386 if $HAVE_FILECMD; then
387 AC_MSG_CHECKING([for - option to file command])
388 AC_CACHE_VAL(ac_cv_filestdin, [[
389 cat > conftest.c <<\EOF
396 cat > conftest.sed <<\EOF
400 filehyphen_1=`file conftest.c 2>/dev/null | sed -f conftest.sed`
401 filehyphen_2=`cat conftest.c | file - 2>/dev/null | sed -f conftest.sed`
402 if test "x$filehyphen_1" = "x$filehyphen_2"; then
407 rm conftest.c conftest.sed
410 if test x$ac_cv_filestdin = xyes; then
411 AC_DEFINE(FILE_STDIN, 1,
412 [Define if the file command accepts - for stdin])
414 filestdin=$ac_cv_filestdin
415 AC_MSG_RESULT([$filestdin])
418 dnl Check for -L option to file
421 AC_MSG_CHECKING([for -L option to file command])
422 AC_CACHE_VAL(ac_cv_filel, [
423 file -L . > /dev/null 2>&1
431 if test x$ac_cv_filel = xyes; then
432 AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
435 AC_MSG_RESULT([$filel])
438 AC_MSG_CHECKING([for subshell support])
439 AC_ARG_WITH(subshell,
440 [--with-subshell If you want to use a concurrent shell],
442 if test x$withval = xoptional
444 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
445 [Define to make subshell support optional])
446 AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
447 [Define to enable subshell support])
450 if test x$withval = xyes
452 AC_DEFINE(HAVE_SUBSHELL_SUPPORT)
455 [dnl Default: provide the subshell support on non-ultrix machines
461 AC_DEFINE(HAVE_SUBSHELL_SUPPORT)
466 AC_MSG_RESULT([$result])
470 dnl Memory Allocation Debugger
474 [--with-mad Developers only: activates MAD (memory debugger)],
475 [if test x$withval = xyes; then
476 mem_debug="Janne's MAD library"
477 AC_DEFINE(HAVE_MAD, 1,
478 [Define to use Memory Allocation Debugger (MAD)])
479 AC_MSG_NOTICE([compiling with memory leak detector])
483 dnl Electric Fence - another memory debugger
486 [--with-efence Developers only: activates Electric Fence],
487 [if test x$withval = xyes; then
488 LIBS="$LIBS -lefence"
489 AC_MSG_NOTICE([compiling with Electric fence])
490 mem_debug="Electric Fence"
494 dnl To force mmap support
495 dnl We use only part of the functionality of mmap, so on AIX,
496 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
499 [--with-mmap To force using the mmap call (AIX)],
500 [if test x$withval = xyes; then
502 AC_MSG_NOTICE([forcing MMAP support])
507 slang_use_system_installed_lib=false
508 AC_CHECK_LIB(slang,SLang_init_tty,
509 [AC_CHECK_HEADERS(slang.h)
510 if test x$ac_cv_header_slang_h = xyes
512 slang_use_system_installed_lib=true
513 slang_check_lib=false
515 AC_CHECK_HEADERS(slang/slang.h)
516 if test x$ac_cv_header_slang_slang_h = xyes
518 slang_use_system_installed_lib=true
519 slang_check_lib=false
524 AC_ARG_WITH(terminfo,
525 [--with-terminfo SLANG: Force usage of terminfo],[
526 if test x$withval = xyes; then
528 slang_check_lib=false
529 slang_use_system_installed_lib=false
534 [--with-termcap SLANG: Force usage of termcap],[
535 if test x$withval = xyes; then
537 slang_check_lib=false
538 slang_use_system_installed_lib=false
542 AC_ARG_WITH(included-slang,
543 [--with-included-slang SLANG: use the SLang library included here],[
544 if test x$withval = xyes; then
545 slang_use_system_installed_lib=false
551 [--with-slang Compile with the slang screen manager],[
552 if test x$withval = xyes; then
562 [--with-edit Enable internal editpr],
563 [if test x$withval = xyes
569 [dnl Default: provide the internal editor
577 [--with-netrc Compile with ftp .netrc support],[
578 if test x$withval = xyes; then
579 AC_DEFINE(USE_NETRC, 1,
580 [Define to use .netrc for FTP connections])
581 AC_MSG_NOTICE([ftpfs will use .netrc])
587 if test $use_vfs = yes; then
588 AC_ARG_WITH(ext2undel,
589 [--with-ext2undel Compile with ext2 undelete code],[
590 if test x$withval != xno;
592 if test x$withval != xyes
594 LIBS="$LIBS -L$withval/lib"
595 CPPFLAGS="$CPPFLAGS -I$withval/include"
600 AC_CHECK_LIB(ext2fs, ext2fs_close, [AC_EXT2_UNDEL], , [-lcom_err])
608 AC_MSG_NOTICE([checking location of ncurses.h file])
610 AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include")
611 AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
612 AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local")
613 AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
615 AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
617 AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
621 dnl Ncurses specific checks
623 dnl If ncurses exports the ESCDELAY variable it should be set to 0
624 dnl or you'll have to press Esc three times to dismiss a dialog box.
626 if test -n "$ncurses_version"; then
629 AC_CACHE_CHECK([for ESCDELAY variable],
630 [mc_cv_ncurses_escdelay],
631 [AC_TRY_COMPILE([], [
638 [mc_cv_ncurses_escdelay=yes],
639 [mc_cv_ncurses_escdelay=no]
642 if test "$mc_cv_ncurses_escdelay" = yes; then
643 AC_DEFINE(HAVE_ESCDELAY, 1,
644 [Define if ncurses has ESCDELAY variable])
647 AC_CHECK_FUNCS(resizeterm)
651 if test "x$screen_manager" = "xunknown"; then
656 dnl The variables used for expanding the auto saver.
663 cons_saver="cons.saver"
667 dnl On Linux, check for PAM authentication available
669 AC_CHECK_LIB(pam, pam_start, [
670 AC_DEFINE(HAVE_PAM, 1,
671 [Define if PAM (Pluggable Authentication Modules) is available])
680 dnl User visible support for charset conversion.
682 AC_ARG_ENABLE([charset],
683 [--enable-charset Support for charset selection and conversion])
685 if test "x$enable_charset" = xyes; then
686 if test -z "$am_cv_func_iconv"; then
687 AC_MSG_WARN([Cannot enable charset support because iconv function is missing])
689 AC_DEFINE(HAVE_CHARSET, 1,
690 [Define to enable charset selection and conversion])
697 dnl This code should be moved to the ac_WITH_SLANG
699 dnl We check for the existance of setupterm on curses library
700 dnl this is required to load certain definitions on some termcaps
701 dnl editions (AIX and OSF/1 I seem to remember).
702 dnl Note that we avoid using setupterm
703 case $screen_manager in
709 AC_CHECK_LIB(curses,setupterm,
713 if (key_end == parm_insert_line)
717 [MCLIBS="$MCLIBS -lcurses"
718 AC_DEFINE(USE_SETUPTERM, 1,
719 [Define to use function `setupterm'
720 from `curses' library in S-Lang])])
726 LIBS="$LIBS $posix_libs"
733 if test "x$SAMBAFILES" != x; then
734 AC_CONFIG_SUBDIRS([vfs/samba])
737 AM_CONDITIONAL(USE_EDIT, [test -n "$LIBEDIT_A"])
738 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
739 AM_CONDITIONAL(USE_VFS_NET, [test -n "$NETFILES"])
740 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$undelfs_o"])
741 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$SAMBAFILES"])
742 AM_CONDITIONAL(MCSERV_INSTALL,
743 [test "x$enable_mcserv_install$mcserv" = xyesmcserv])
744 AM_CONDITIONAL(INCLUDED_SLANG,
745 [test "x$slang_use_system_installed_lib" = xfalse])
746 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
747 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
749 AH_BOTTOM([#include <extraconf.h>])
755 vfs/Makefile:vfs/Make-mc.in
780 doc/mc.1 doc/mcedit.1 doc/mcserv.8
782 intl/Makefile po/Makefile.in
785 AC_CONFIG_COMMANDS(potfiles,
786 [sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])
790 case $screen_manager in
792 screen_manager="${screen_manager}${slang_term}" ;;
798 Source code location: ${srcdir}
800 Compiler flags: ${CFLAGS}
801 File system: ${vfs_type}
803 Screen manager: ${screen_manager}
804 Install console saver: ${install_saver}
805 Mouse support: ${mouse_lib}
806 X11 events support: ${textmode_x11_support}
807 Debugger code: ${mem_debug}
808 With subshell support: ${subshell}
809 Internal editor: ${EDIT_msg}
810 Install path: ${prefix}/bin, ${prefix}/lib/mc