Merge branch '2264_advanced_chown_segfault'
[free-mc.git] / configure.ac
blob0a4598903dcd5687c453b3ef26ca514f68cbdd31
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
26 AC_ISC_POSIX
28 AC_PROG_CC_STDC
29 AM_PROG_CC_C_O
31 dnl Doxygen
33 DX_HTML_FEATURE(ON)
34 DX_CHM_FEATURE(OFF)
35 DX_CHI_FEATURE(OFF)
36 DX_MAN_FEATURE(OFF)
37 DX_RTF_FEATURE(OFF)
38 DX_XML_FEATURE(OFF)
39 DX_PDF_FEATURE(OFF)
40 DX_PS_FEATURE(OFF)
41 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
43 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
45 dnl
46 dnl First try glib 2.x.
47 dnl Keep this check close to the beginning, so that the users
48 dnl without any glib won't have their time wasted by other checks.
49 dnl
51 AC_ARG_WITH([glib_static],
52             [  --with-glib-static       Link glib statically [[no]]])
54 glib_found=no
56 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.8], [glib_found=yes], [:])
57 if test x"$glib_found" = xno; then
58     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.8)])
61 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
62 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
64 if test "x$gmodule_found" = "xyes" ; then
65         dnl Check if the gmodule functionality supported on this system.
66         AC_G_MODULE_SUPPORTED
69 AC_HEADER_MAJOR
70 AC_C_CONST
71 AC_SYS_LARGEFILE
73 AC_PROG_LN_S
74 AC_CHECK_TOOL(AR, ar, ar)
76 dnl Only list browsers here that can be run in background (i.e. with `&')
77 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
79 dnl
80 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
81 dnl We use only part of the functionality of mmap, so on AIX,
82 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
83 dnl
84 AC_ARG_WITH(mmap,
85         [  --with-mmap              Use the mmap call [[yes if found]]])
86 if test x$with_mmap != xno; then
87     if test x$with_mmap = x; then
88         AC_FUNC_MMAP
89     else
90         AC_DEFINE(HAVE_MMAP, 1)
91     fi
94 dnl
95 dnl Internationalization
96 dnl
97 AM_GNU_GETTEXT(no-libtool, need-ngettext)
98 AM_GNU_GETTEXT_VERSION(0.14.3)
100 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
101     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
104 dnl Determine which help translations we want to install.
105 ALL_DOC_LINGUAS="es hu it pl ru sr"
107 DOC_LINGUAS=
108 if test "x$USE_NLS" = xyes; then
109     if test -z "$LINGUAS"; then
110         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
111     else
112         langs="$LINGUAS"
113     fi
114 else
115     langs=
118 for h_lang in $ALL_DOC_LINGUAS; do
119     for lang in $langs; do
120         if test "$lang" = "$h_lang"; then
121             DOC_LINGUAS="$DOC_LINGUAS $lang"
122             break
123         fi
124     done
125 done
126 AC_SUBST(DOC_LINGUAS)
129 dnl OS specific flags.
131 case $host_os in
132 aux*)
133     # A/UX
134     LIBS="$LIBS -lposix"
135     AC_DEFINE(_POSIX_SOURCE)
136     ;;
137 esac
139 AC_PROG_INSTALL
140 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
141         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
142         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
143         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
144         sys/mkdev.h wchar.h wctype.h])
146 AC_HEADER_TIME
147 AC_HEADER_DIRENT
148 AC_HEADER_STDC
150 dnl Missing structure components
151 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
152 AC_STRUCT_ST_BLOCKS
155 dnl Check availability of some functions
158 AC_CHECK_FUNCS([\
159         atoll \
160         cfgetospeed \
161         initgroups isascii \
162         setreuid statfs sysconf \
163         tcgetattr tcsetattr truncate \
164         strverscmp \
165         strncasecmp \
166         realpath
170 dnl getpt is a GNU Extension (glibc 2.1.x)
172 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
173 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
175 dnl replacing lstat with statlstat on sco makes it more portable between
176 dnl sco clones
177 AC_CHECK_FUNCS(statlstat)
180 dnl If running under AIX, AC_AIX does not tell us that
182 AC_MSG_CHECKING([for AIX defines])
183 AC_EGREP_CPP(yes,
184 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
186 #endif
187 ], [
188 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
189 AC_MSG_RESULT(yes)
190 ], [AC_MSG_RESULT(no)])
193 dnl This is from GNU fileutils, check aclocal.m4 for more information
195 AC_GET_FS_INFO
198 dnl Missing typedefs and replacements
201 AC_CHECK_SIZEOF(long)
202 AC_CHECK_SIZEOF(long long)
203 AC_TYPE_MODE_T
204 AC_TYPE_OFF_T
205 AC_CHECK_SIZEOF(off_t)
206 AC_TYPE_PID_T
207 AC_TYPE_UID_T
208 AC_CHECK_TYPE(nlink_t, unsigned int)
209 AC_CHECK_TYPES([socklen_t],,,
211 #include <sys/types.h>
212 #include <sys/socket.h>
215 dnl This is needed for regex.c only
216 AC_CHECK_TYPE(uintptr_t,
217               [AC_DEFINE(HAVE_UINTPTR_T, 1,
218                          [Define if you have the `uintptr_t' type.])
221 AC_FUNC_ALLOCA
222 AC_FUNC_STRCOLL
225 dnl X11 support.
226 dnl Used to read keyboard modifiers when running under X11.
229 AC_PATH_XTRA
230 if test "x$no_x" = xyes; then
231     textmode_x11_support="no"
232 else
233     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
234     if test "x$mc_cv_g_module_supported" = "xyes" ; then
235         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
236         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
237         dnl functionality is supported on the system.  This way, mc will be
238         dnl linked against the gmodule library only when it's really required.
239         GLIB_CFLAGS="$GMODULE_CFLAGS"
240         GLIB_LIBS="$GMODULE_LIBS"
241     else
242         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
243     fi
244     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
245               [Define to enable getting events from X Window System])
246     textmode_x11_support="yes"
250 dnl Try to find static libraries for glib and gmodule.
252 if test x$with_glib_static = xyes; then
253     new_GLIB_LIBS=
254     for i in $GLIB_LIBS; do
255         case x$i in
256         x-lglib*)
257             lib=glib ;;
258         x-lgmodule*)
259             lib=gmodule ;;
260         *)
261             lib=
262             add="$i" ;;
263         esac
265         if test -n "$lib"; then
266             lib1=`echo $i | sed 's/^-l//'`
267             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
268                 add="$GLIB_LIBDIR/lib${lib1}.a"
269             else
270                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
271                     add="$GLIB_LIBDIR/lib${lib}.a"
272                 else
273                     AC_MSG_ERROR([Cannot find static $lib])
274                 fi
275             fi
276         fi
277         new_GLIB_LIBS="$new_GLIB_LIBS $add"
278     done
279     GLIB_LIBS="$new_GLIB_LIBS"
284 dnl Network related functions
287 AC_SEARCH_LIBS([socket], [socket])
288 AC_SEARCH_LIBS([gethostbyname], [nsl])
291 dnl Sequent wants getprocessstats
293 AC_CHECK_LIB(seq, get_process_stats, [
294         LIBS="$LIBS -lseq"
295         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
296                   [Define if you have function `get_process_stats' and
297 have to use that instead of gettimeofday])])
299 AC_MC_VFS_CHECKS
301 vfs_type="normal"
302 if test x$enable_vfs = xyes; then
303         AC_MSG_NOTICE([enabling VFS code])
304         vfs_type="Midnight Commander Virtual File System"
308 dnl Check for gpm mouse support (Linux only)
310 mouse_lib="xterm only"
311 AC_ARG_WITH(gpm-mouse,
312         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
313                            [[yes if found]]])
315 case $host_os in
316 linux*)
317     if test x$with_gpm_mouse != xno; then
318         AC_CHECK_LIB(gpm, Gpm_Repeat,
319             [AC_DEFINE(HAVE_LIBGPM, 1,
320                        [Define to enable gpm mouse support on Linux])
321             mouse_lib="gpm and xterm"
322             MCLIBS="$MCLIBS -lgpm"],
323             if test "x$with_gpm_mouse" = "xyes"; then
324                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
325             else
326                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
327             fi
328         )
329     fi
330     ;;
331 esac
333 MC_CHECK_SEARCH_TYPE
336 dnl Check nroff and the options it supports
338 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
340 dnl Default values
341 MANDOC=-man
342 MAN_FLAGS=
344 if $HAVE_nroff; then
345     AC_MSG_CHECKING([for manual formatting macros])
346     AC_CACHE_VAL(mc_cv_mandoc, [
347     nroff -mandoc < /dev/null > /dev/null 2>&1
348     if test $? = 0; then
349         mc_cv_mandoc=-mandoc
350     else
351         mc_cv_mandoc=-man
352     fi
353     ])
354     MANDOC=$mc_cv_mandoc
355     AC_MSG_RESULT([$MANDOC])
357     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
358     AC_CACHE_VAL(mc_cv_man_nocolor, [
359     nroff -c < /dev/null > /dev/null 2>&1
360     if test $? = 0; then
361         mc_cv_man_nocolor=-c
362     else
363         mc_cv_man_nocolor=
364     fi
365     ])
366     MAN_FLAGS=$mc_cv_man_nocolor
367     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
369     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
370     AC_CACHE_VAL(mc_cv_nroff_tascii, [
371     mc_cv_nroff_tascii=
372     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
373     if test $? = 0; then
374         mc_cv_nroff_tascii=-Tlatin1
375     else
376         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
377         if test $? = 0; then
378             mc_cv_nroff_tascii=-Tascii
379         fi
380     fi
381     ])
382     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
383     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
386 AC_SUBST(MANDOC)
387 AC_SUBST(MAN_FLAGS)
391 dnl Check for -L option to file
393 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
394 if $HAVE_FILECMD; then
395     AC_MSG_CHECKING([for -L option to file command])
396     AC_CACHE_VAL(mc_cv_filel, [
397     file -L . > /dev/null 2>&1
398     if test $? = 0; then
399         mc_cv_filel=yes
400     else
401         mc_cv_filel=no
402     fi
403     ])
404     if test x$mc_cv_filel = xyes; then
405         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
406     fi
407     filel=$mc_cv_filel
408     AC_MSG_RESULT([$filel])
412 AC_MSG_CHECKING([for subshell support])
413 AC_ARG_WITH(subshell,
414         [  --with-subshell          Compile in concurrent subshell [[yes]]
415   --with-subshell=optional Don't run concurrent shell by default [[no]]],
416         [result=no
417         if test x$withval = xoptional
418         then
419                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
420                           [Define to make subshell support optional])
421                 result="optional"
422         fi
423         if test x$withval = xyes
424         then
425                 result="yes"
426         fi],
427         [dnl Default: enable the subshell support
428         result="yes"
430 if test "x$result" != xno; then
431         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
432                   [Define to enable subshell support])
434 AC_MSG_RESULT([$result])
435 subshell="$result"
438 MC_WITH_SCREEN
442 dnl Internal editor support.
444 AC_ARG_WITH(edit,
445         [  --with-edit              Enable internal editor [[yes]]])
447 if test x$with_edit != xno; then
448         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
449         use_edit=yes
450         edit_msg="yes"
451         AC_MSG_NOTICE([using internal editor])
452 else
453         edit_msg="no"
457 dnl Diff viewer support.
459 AC_ARG_WITH(diff_viewer,
460         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
462 if test x$with_diff_viewer != xno; then
463         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
464         use_diff=yes
465         diff_msg="yes"
466         AC_MSG_NOTICE([using diff viewer])
467 else
468         diff_msg="no"
472 dnl Check if the OS is supported by the console saver.
473 cons_saver=""
474 case $host_os in
475 linux*)
476     cons_saver=yes
477 esac
480 dnl Support for background operations
481 AC_ARG_ENABLE([background],
482               [  --enable-background     Support for background file operations [[yes]]])
483 if test "x$enable_background" != xno; then
484     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
489 dnl User visible support for charset conversion.
491 AC_ARG_ENABLE([charset],
492               [  --enable-charset        Support for charset selection and conversion [[yes]]])
493 have_charset=
494 charset_msg="no"
495 if test "x$enable_charset" != "xno"; then
496     AC_DEFINE(HAVE_CHARSET, 1,
497               [Define to enable charset selection and conversion])
498     have_charset=yes
499     charset_msg="yes"
502 if test "$GLIBC21" != yes; then
503     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
506 MC_CHECK_CFLAGS
508 CFLAGS_OPTS=""
510 if test "x$CFLAGS" = "x"; then
511     CFLAGS_OPTS=" -O2 "
514 if test x$USE_MAINTAINER_MODE = xyes; then
515     CFLAGS_OPTS="-g3 -O -ggdb"
516     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
519 AC_ARG_ENABLE(
520     [werror],
521     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
524 if test "x$enable_werror" = xyes; then
525     MC_CHECK_ONE_CFLAG([-Werror])
527 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
529 AC_SUBST(CFLAGS)
530 AC_SUBST(CPPFLAGS)
531 AC_SUBST(LDFLAGS)
532 AC_SUBST(LIBS)
534 dnl Libraries used only when building the mc binary
535 AC_SUBST(MCLIBS)
537 if test -n "$use_smbfs"; then
538   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
541 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
542 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
543 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
544 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
545 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
546 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
547 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
548 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
549 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
551 AC_CONFIG_FILES(
553 src/man2hlp/man2hlp
556 chmod +x src/man2hlp/man2hlp
559 AC_CONFIG_FILES([
560 Makefile
562 contrib/Makefile
563 contrib/dist/Makefile
564 contrib/dist/debian/Makefile
565 contrib/dist/gentoo/Makefile
566 contrib/dist/redhat/Makefile
567 contrib/dist/redhat/mc.spec
568 contrib/dist/mc.qpg
569 contrib/dist/pkginfo
570 contrib/dist/prototype
572 misc/Makefile
573 misc/skins/Makefile
574 misc/mc.ext
576 src/Makefile
577 src/consaver/Makefile
578 src/editor/Makefile
579 src/man2hlp/Makefile
580 src/viewer/Makefile
581 src/diffviewer/Makefile
583 lib/Makefile
584 lib/filehighlight/Makefile
585 lib/mcconfig/Makefile
586 lib/search/Makefile
587 lib/skin/Makefile
588 lib/strutil/Makefile
589 lib/tty/Makefile
590 lib/vfs/Makefile
591 lib/vfs/mc-vfs/Makefile
592 lib/vfs/mc-vfs/extfs/Makefile
593 lib/vfs/mc-vfs/extfs/a+
594 lib/vfs/mc-vfs/extfs/apt+
595 lib/vfs/mc-vfs/extfs/audio
596 lib/vfs/mc-vfs/extfs/deb
597 lib/vfs/mc-vfs/extfs/deba
598 lib/vfs/mc-vfs/extfs/debd
599 lib/vfs/mc-vfs/extfs/dpkg+
600 lib/vfs/mc-vfs/extfs/iso9660
601 lib/vfs/mc-vfs/extfs/hp48+
602 lib/vfs/mc-vfs/extfs/lslR
603 lib/vfs/mc-vfs/extfs/mailfs
604 lib/vfs/mc-vfs/extfs/patchfs
605 lib/vfs/mc-vfs/extfs/rpms+
606 lib/vfs/mc-vfs/extfs/s3+
607 lib/vfs/mc-vfs/extfs/uace
608 lib/vfs/mc-vfs/extfs/ualz
609 lib/vfs/mc-vfs/extfs/uar
610 lib/vfs/mc-vfs/extfs/uarc
611 lib/vfs/mc-vfs/extfs/uarj
612 lib/vfs/mc-vfs/extfs/uc1541
613 lib/vfs/mc-vfs/extfs/uha
614 lib/vfs/mc-vfs/extfs/ulha
615 lib/vfs/mc-vfs/extfs/urar
616 lib/vfs/mc-vfs/extfs/uzip
617 lib/vfs/mc-vfs/extfs/uzoo
619 lib/vfs/mc-vfs/fish/Makefile
621 misc/syntax/Makefile
623 doc/Makefile
624 doc/hints/Makefile
625 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
626 doc/man/es/mc.1 doc/man/es/Makefile
627 doc/man/hu/mc.1 doc/man/hu/Makefile
628 doc/man/it/mc.1 doc/man/it/Makefile
629 doc/man/pl/mc.1 doc/man/pl/Makefile
630 doc/man/ru/mc.1 doc/man/ru/Makefile
631 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
633 doc/hlp/Makefile
634 doc/hlp/es/Makefile
635 doc/hlp/hu/Makefile
636 doc/hlp/it/Makefile
637 doc/hlp/pl/Makefile
638 doc/hlp/ru/Makefile
639 doc/hlp/sr/Makefile
641 intl/Makefile
642 po/Makefile.in
645 AC_OUTPUT
647 if test x$enable_mcserver = x; then
648     enable_mcserver='no'
651 echo "
652 Configuration:
654   Source code location:       ${srcdir}
655   Compiler:                   ${CC}
656   Compiler flags:             ${CFLAGS}
657   File system:                ${vfs_type}
658                               ${vfs_flags}
659   Screen library:             ${screen_msg}
660   Mouse support:              ${mouse_lib}
661   X11 events support:         ${textmode_x11_support}
662   With subshell support:      ${subshell}
663   Internal editor:            ${edit_msg}
664   Diff viewer:                ${diff_msg}
665   Support for charset:        ${charset_msg}
666   Search type:                ${SEARCH_TYPE}