Refactored IPV4/IPV6 FTP connection setup code
[midnight-commander.git] / configure.ac
blob0f72b6e58c2ba63f5ddba1f5758c9de2e607fcc8
1 dnl
2 dnl Configure.in file for the Midnight Commander
3 dnl
5 AC_INIT([GNU Midnight Commander], [], [mc-devel@gnome.org])
6 AC_PREREQ(2.60)
7 m4_pattern_forbid(MC_)
8 AC_CONFIG_MACRO_DIR([m4])
9 AC_CONFIG_SRCDIR(src/main.c)
10 AC_CONFIG_AUX_DIR(config)
11 MC_VERSION
12 AM_INIT_AUTOMAKE(mc, ${VERSION} )
14 dnl Enable silent rules by default (if yes)
15 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
17 AM_CONFIG_HEADER(config.h)
18 AM_MAINTAINER_MODE
19 AC_CANONICAL_HOST
21 AC_USE_SYSTEM_EXTENSIONS
23 AC_PROG_LIBTOOL
24 PKG_PROG_PKG_CONFIG
25 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
27 AC_ISC_POSIX
29 AC_PROG_CC_STDC
30 AM_PROG_CC_C_O
32 dnl Doxygen
34 DX_HTML_FEATURE(ON)
35 DX_CHM_FEATURE(OFF)
36 DX_CHI_FEATURE(OFF)
37 DX_MAN_FEATURE(OFF)
38 DX_RTF_FEATURE(OFF)
39 DX_XML_FEATURE(OFF)
40 DX_PDF_FEATURE(OFF)
41 DX_PS_FEATURE(OFF)
42 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
44 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
46 dnl
47 dnl First try glib 2.x.
48 dnl Keep this check close to the beginning, so that the users
49 dnl without any glib won't have their time wasted by other checks.
50 dnl
52 AC_ARG_WITH([glib_static],
53             [  --with-glib-static       Link glib statically [[no]]])
55 glib_found=no
57 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.8], [glib_found=yes], [:])
58 if test x"$glib_found" = xno; then
59     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.8)])
62 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
63 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
65 if test "x$gmodule_found" = "xyes" ; then
66         dnl Check if the gmodule functionality supported on this system.
67         AC_G_MODULE_SUPPORTED
70 AC_HEADER_MAJOR
71 AC_C_CONST
72 AC_SYS_LARGEFILE
74 AC_PROG_LN_S
75 AC_CHECK_TOOL(AR, ar, ar)
77 dnl Only list browsers here that can be run in background (i.e. with `&')
78 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
80 dnl
81 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
82 dnl We use only part of the functionality of mmap, so on AIX,
83 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
84 dnl
85 AC_ARG_WITH(mmap,
86         [  --with-mmap              Use the mmap call [[yes if found]]])
87 if test x$with_mmap != xno; then
88     if test x$with_mmap = x; then
89         AC_FUNC_MMAP
90     else
91         AC_DEFINE(HAVE_MMAP, 1)
92     fi
95 dnl
96 dnl Internationalization
97 dnl
98 AM_GNU_GETTEXT(no-libtool, need-ngettext)
99 AM_GNU_GETTEXT_VERSION(0.14.3)
101 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
102     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
105 dnl Determine which help translations we want to install.
106 ALL_DOC_LINGUAS="es hu it pl ru sr"
108 DOC_LINGUAS=
109 if test "x$USE_NLS" = xyes; then
110     if test -z "$LINGUAS"; then
111         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
112     else
113         langs="$LINGUAS"
114     fi
115 else
116     langs=
119 for h_lang in $ALL_DOC_LINGUAS; do
120     for lang in $langs; do
121         if test "$lang" = "$h_lang"; then
122             DOC_LINGUAS="$DOC_LINGUAS $lang"
123             break
124         fi
125     done
126 done
127 AC_SUBST(DOC_LINGUAS)
130 dnl OS specific flags.
132 case $host_os in
133 aux*)
134     # A/UX
135     LIBS="$LIBS -lposix"
136     AC_DEFINE(_POSIX_SOURCE)
137     ;;
138 esac
140 AC_PROG_INSTALL
141 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
142         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
143         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
144         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
145         sys/mkdev.h wchar.h wctype.h])
147 AC_HEADER_TIME
148 AC_HEADER_DIRENT
149 AC_HEADER_STDC
151 dnl Missing structure components
152 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
153 AC_STRUCT_ST_BLOCKS
156 dnl Check availability of some functions
159 AC_CHECK_FUNCS([\
160         atoll \
161         cfgetospeed \
162         initgroups isascii \
163         setreuid statfs sysconf \
164         tcgetattr tcsetattr truncate \
165         strverscmp \
166         strncasecmp \
167         realpath
171 dnl getpt is a GNU Extension (glibc 2.1.x)
173 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
174 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
176 dnl replacing lstat with statlstat on sco makes it more portable between
177 dnl sco clones
178 AC_CHECK_FUNCS(statlstat)
181 dnl If running under AIX, AC_AIX does not tell us that
183 AC_MSG_CHECKING([for AIX defines])
184 AC_EGREP_CPP(yes,
185 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
187 #endif
188 ], [
189 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
190 AC_MSG_RESULT(yes)
191 ], [AC_MSG_RESULT(no)])
194 dnl This is from GNU fileutils, check aclocal.m4 for more information
196 AC_GET_FS_INFO
199 dnl Missing typedefs and replacements
202 AC_CHECK_SIZEOF(long)
203 AC_CHECK_SIZEOF(long long)
204 AC_TYPE_MODE_T
205 AC_TYPE_OFF_T
206 AC_CHECK_SIZEOF(off_t)
207 AC_TYPE_PID_T
208 AC_TYPE_UID_T
209 AC_CHECK_TYPE(nlink_t, unsigned int)
210 AC_CHECK_TYPES([socklen_t],,,
212 #include <sys/types.h>
213 #include <sys/socket.h>
216 dnl This is needed for regex.c only
217 AC_CHECK_TYPE(uintptr_t,
218               [AC_DEFINE(HAVE_UINTPTR_T, 1,
219                          [Define if you have the `uintptr_t' type.])
222 AC_FUNC_ALLOCA
223 AC_FUNC_STRCOLL
226 dnl X11 support.
227 dnl Used to read keyboard modifiers when running under X11.
230 AC_PATH_XTRA
231 if test "x$no_x" = xyes; then
232     textmode_x11_support="no"
233 else
234     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
235     if test "x$mc_cv_g_module_supported" = "xyes" ; then
236         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
237         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
238         dnl functionality is supported on the system.  This way, mc will be
239         dnl linked against the gmodule library only when it's really required.
240         GLIB_CFLAGS="$GMODULE_CFLAGS"
241         GLIB_LIBS="$GMODULE_LIBS"
242     else
243         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
244     fi
245     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
246               [Define to enable getting events from X Window System])
247     textmode_x11_support="yes"
251 dnl Try to find static libraries for glib and gmodule.
253 if test x$with_glib_static = xyes; then
254     new_GLIB_LIBS=
255     for i in $GLIB_LIBS; do
256         case x$i in
257         x-lglib*)
258             lib=glib ;;
259         x-lgmodule*)
260             lib=gmodule ;;
261         *)
262             lib=
263             add="$i" ;;
264         esac
266         if test -n "$lib"; then
267             lib1=`echo $i | sed 's/^-l//'`
268             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
269                 add="$GLIB_LIBDIR/lib${lib1}.a"
270             else
271                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
272                     add="$GLIB_LIBDIR/lib${lib}.a"
273                 else
274                     AC_MSG_ERROR([Cannot find static $lib])
275                 fi
276             fi
277         fi
278         new_GLIB_LIBS="$new_GLIB_LIBS $add"
279     done
280     GLIB_LIBS="$new_GLIB_LIBS"
284 dnl Sequent wants getprocessstats
286 AC_CHECK_LIB(seq, get_process_stats, [
287         LIBS="$LIBS -lseq"
288         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
289                   [Define if you have function `get_process_stats' and
290 have to use that instead of gettimeofday])])
292 AC_MC_VFS_CHECKS
295 dnl Check for gpm mouse support (Linux only)
297 mouse_lib="xterm only"
298 AC_ARG_WITH(gpm-mouse,
299         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
300                            [[yes if found]]])
302 case $host_os in
303 linux*)
304     if test x$with_gpm_mouse != xno; then
305         AC_CHECK_LIB(gpm, Gpm_Repeat,
306             [AC_DEFINE(HAVE_LIBGPM, 1,
307                        [Define to enable gpm mouse support on Linux])
308             mouse_lib="gpm and xterm"
309             MCLIBS="$MCLIBS -lgpm"],
310             if test "x$with_gpm_mouse" = "xyes"; then
311                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
312             else
313                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
314             fi
315         )
316     fi
317     ;;
318 esac
320 MC_CHECK_SEARCH_TYPE
323 dnl Check nroff and the options it supports
325 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
327 dnl Default values
328 MANDOC=-man
329 MAN_FLAGS=
331 if $HAVE_nroff; then
332     AC_MSG_CHECKING([for manual formatting macros])
333     AC_CACHE_VAL(mc_cv_mandoc, [
334     nroff -mandoc < /dev/null > /dev/null 2>&1
335     if test $? = 0; then
336         mc_cv_mandoc=-mandoc
337     else
338         mc_cv_mandoc=-man
339     fi
340     ])
341     MANDOC=$mc_cv_mandoc
342     AC_MSG_RESULT([$MANDOC])
344     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
345     AC_CACHE_VAL(mc_cv_man_nocolor, [
346     nroff -c < /dev/null > /dev/null 2>&1
347     if test $? = 0; then
348         mc_cv_man_nocolor=-c
349     else
350         mc_cv_man_nocolor=
351     fi
352     ])
353     MAN_FLAGS=$mc_cv_man_nocolor
354     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
356     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
357     AC_CACHE_VAL(mc_cv_nroff_tascii, [
358     mc_cv_nroff_tascii=
359     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
360     if test $? = 0; then
361         mc_cv_nroff_tascii=-Tlatin1
362     else
363         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
364         if test $? = 0; then
365             mc_cv_nroff_tascii=-Tascii
366         fi
367     fi
368     ])
369     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
370     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
373 AC_SUBST(MANDOC)
374 AC_SUBST(MAN_FLAGS)
378 dnl Check for -L option to file
380 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
381 if $HAVE_FILECMD; then
382     AC_MSG_CHECKING([for -L option to file command])
383     AC_CACHE_VAL(mc_cv_filel, [
384     file -L . > /dev/null 2>&1
385     if test $? = 0; then
386         mc_cv_filel=yes
387     else
388         mc_cv_filel=no
389     fi
390     ])
391     if test x$mc_cv_filel = xyes; then
392         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
393     fi
394     filel=$mc_cv_filel
395     AC_MSG_RESULT([$filel])
399 AC_MSG_CHECKING([for subshell support])
400 AC_ARG_WITH(subshell,
401         [  --with-subshell          Compile in concurrent subshell [[yes]]
402   --with-subshell=optional Don't run concurrent shell by default [[no]]],
403         [result=no
404         if test x$withval = xoptional
405         then
406                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
407                           [Define to make subshell support optional])
408                 result="optional"
409         fi
410         if test x$withval = xyes
411         then
412                 result="yes"
413         fi],
414         [dnl Default: enable the subshell support
415         result="yes"
417 if test "x$result" != xno; then
418         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
419                   [Define to enable subshell support])
421 AC_MSG_RESULT([$result])
422 subshell="$result"
425 MC_WITH_SCREEN
429 dnl Internal editor support.
431 AC_ARG_WITH(edit,
432         [  --with-edit              Enable internal editor [[yes]]])
434 if test x$with_edit != xno; then
435         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
436         use_edit=yes
437         edit_msg="yes"
438         AC_MSG_NOTICE([using internal editor])
439 else
440         edit_msg="no"
444 dnl Diff viewer support.
446 AC_ARG_WITH(diff_viewer,
447         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
449 if test x$with_diff_viewer != xno; then
450         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
451         use_diff=yes
452         diff_msg="yes"
453         AC_MSG_NOTICE([using diff viewer])
454 else
455         diff_msg="no"
459 dnl Check if the OS is supported by the console saver.
460 cons_saver=""
461 case $host_os in
462 linux*)
463     cons_saver=yes
464 esac
467 dnl Support for background operations
468 AC_ARG_ENABLE([background],
469               [  --enable-background     Support for background file operations [[yes]]])
470 if test "x$enable_background" != xno; then
471     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
476 dnl User visible support for charset conversion.
478 AC_ARG_ENABLE([charset],
479               [  --enable-charset        Support for charset selection and conversion [[yes]]])
480 have_charset=
481 charset_msg="no"
482 if test "x$enable_charset" != "xno"; then
483     AC_DEFINE(HAVE_CHARSET, 1,
484               [Define to enable charset selection and conversion])
485     have_charset=yes
486     charset_msg="yes"
489 if test "$GLIBC21" != yes; then
490     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
493 MC_CHECK_CFLAGS
495 CFLAGS_OPTS=""
497 if test "x$CFLAGS" = "x"; then
498     CFLAGS_OPTS=" -O2 "
501 if test x$USE_MAINTAINER_MODE = xyes; then
502     CFLAGS_OPTS="-g3 -O -ggdb"
503     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
506 AC_ARG_ENABLE(
507     [werror],
508     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
511 if test "x$enable_werror" = xyes; then
512     MC_CHECK_ONE_CFLAG([-Werror])
514 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
516 AC_SUBST(CFLAGS)
517 AC_SUBST(CPPFLAGS)
518 AC_SUBST(LDFLAGS)
519 AC_SUBST(LIBS)
521 dnl Libraries used only when building the mc binary
522 AC_SUBST(MCLIBS)
524 MAN_DATE=$(LC_ALL=C date "+%B %Y")
525 AC_SUBST(MAN_DATE)
527 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
528 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
529 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
530 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
531 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
532 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
534 AC_CONFIG_FILES(
536 src/man2hlp/man2hlp
539 chmod +x src/man2hlp/man2hlp
542 AC_CONFIG_FILES([
543 Makefile
545 contrib/Makefile
546 contrib/dist/Makefile
547 contrib/dist/debian/Makefile
548 contrib/dist/gentoo/Makefile
549 contrib/dist/redhat/Makefile
550 contrib/dist/redhat/mc.spec
551 contrib/dist/mc.qpg
552 contrib/dist/pkginfo
553 contrib/dist/prototype
555 misc/Makefile
556 misc/skins/Makefile
557 misc/mc.ext
559 src/Makefile
560 src/consaver/Makefile
561 src/editor/Makefile
562 src/man2hlp/Makefile
563 src/viewer/Makefile
564 src/diffviewer/Makefile
566 lib/Makefile
567 lib/filehighlight/Makefile
568 lib/mcconfig/Makefile
569 lib/search/Makefile
570 lib/skin/Makefile
571 lib/strutil/Makefile
572 lib/tty/Makefile
573 lib/vfs/Makefile
574 lib/vfs/mc-vfs/Makefile
575 lib/vfs/mc-vfs/extfs/Makefile
576 lib/vfs/mc-vfs/extfs/a+
577 lib/vfs/mc-vfs/extfs/apt+
578 lib/vfs/mc-vfs/extfs/audio
579 lib/vfs/mc-vfs/extfs/deb
580 lib/vfs/mc-vfs/extfs/deba
581 lib/vfs/mc-vfs/extfs/debd
582 lib/vfs/mc-vfs/extfs/dpkg+
583 lib/vfs/mc-vfs/extfs/iso9660
584 lib/vfs/mc-vfs/extfs/hp48+
585 lib/vfs/mc-vfs/extfs/lslR
586 lib/vfs/mc-vfs/extfs/mailfs
587 lib/vfs/mc-vfs/extfs/patchfs
588 lib/vfs/mc-vfs/extfs/rpms+
589 lib/vfs/mc-vfs/extfs/s3+
590 lib/vfs/mc-vfs/extfs/uace
591 lib/vfs/mc-vfs/extfs/ualz
592 lib/vfs/mc-vfs/extfs/uar
593 lib/vfs/mc-vfs/extfs/uarc
594 lib/vfs/mc-vfs/extfs/uarj
595 lib/vfs/mc-vfs/extfs/uc1541
596 lib/vfs/mc-vfs/extfs/uha
597 lib/vfs/mc-vfs/extfs/ulha
598 lib/vfs/mc-vfs/extfs/urar
599 lib/vfs/mc-vfs/extfs/uzip
600 lib/vfs/mc-vfs/extfs/uzoo
602 lib/vfs/mc-vfs/fish/Makefile
604 misc/syntax/Makefile
606 doc/Makefile
607 doc/hints/Makefile
608 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/Makefile
609 doc/man/es/mc.1 doc/man/es/Makefile
610 doc/man/hu/mc.1 doc/man/hu/Makefile
611 doc/man/it/mc.1 doc/man/it/Makefile
612 doc/man/pl/mc.1 doc/man/pl/Makefile
613 doc/man/ru/mc.1 doc/man/ru/Makefile
614 doc/man/sr/mc.1 doc/man/sr/Makefile
616 doc/hlp/Makefile
617 doc/hlp/es/Makefile
618 doc/hlp/hu/Makefile
619 doc/hlp/it/Makefile
620 doc/hlp/pl/Makefile
621 doc/hlp/ru/Makefile
622 doc/hlp/sr/Makefile
624 intl/Makefile
625 po/Makefile.in
628 AC_OUTPUT
630 echo "
631 Configuration:
633   Source code location:       ${srcdir}
634   Compiler:                   ${CC}
635   Compiler flags:             ${CFLAGS}
636   File system:                ${vfs_type}
637                               ${vfs_flags}
638   Screen library:             ${screen_msg}
639   Mouse support:              ${mouse_lib}
640   X11 events support:         ${textmode_x11_support}
641   With subshell support:      ${subshell}
642   Internal editor:            ${edit_msg}
643   Diff viewer:                ${diff_msg}
644   Support for charset:        ${charset_msg}
645   Search type:                ${SEARCH_TYPE}