Minor code cleanups
[midnight-commander.git] / configure.ac
blobc600ae161ea4745c3e5e937b9a9e83922bc95878
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
25 AC_ISC_POSIX
27 AC_PROG_CC_STDC
28 AM_PROG_CC_C_O
30 dnl Doxygen
32 DX_HTML_FEATURE(ON)
33 DX_CHM_FEATURE(OFF)
34 DX_CHI_FEATURE(OFF)
35 DX_MAN_FEATURE(OFF)
36 DX_RTF_FEATURE(OFF)
37 DX_XML_FEATURE(OFF)
38 DX_PDF_FEATURE(OFF)
39 DX_PS_FEATURE(OFF)
40 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
42 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
44 dnl
45 dnl First try glib 2.x.
46 dnl Keep this check close to the beginning, so that the users
47 dnl without any glib won't have their time wasted by other checks.
48 dnl
50 AC_ARG_WITH([glib_static],
51             [  --with-glib-static       Link glib statically [[no]]])
53 glib_found=no
55 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.8], [glib_found=yes], [:])
56 if test x"$glib_found" = xno; then
57     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.8)])
60 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
61 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
63 if test "x$gmodule_found" = "xyes" ; then
64         dnl Check if the gmodule functionality supported on this system.
65         AC_G_MODULE_SUPPORTED
68 AC_HEADER_MAJOR
69 AC_C_CONST
70 AC_SYS_LARGEFILE
72 AC_PROG_LN_S
73 AC_CHECK_TOOL(AR, ar, ar)
75 dnl Only list browsers here that can be run in background (i.e. with `&')
76 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
78 dnl
79 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
80 dnl We use only part of the functionality of mmap, so on AIX,
81 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
82 dnl
83 AC_ARG_WITH(mmap,
84         [  --with-mmap              Use the mmap call [[yes if found]]])
85 if test x$with_mmap != xno; then
86     if test x$with_mmap = x; then
87         AC_FUNC_MMAP
88     else
89         AC_DEFINE(HAVE_MMAP, 1)
90     fi
93 dnl
94 dnl Internationalization
95 dnl
96 AM_GNU_GETTEXT(no-libtool, need-ngettext)
97 AM_GNU_GETTEXT_VERSION(0.14.3)
99 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
100     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
103 dnl Determine which help translations we want to install.
104 ALL_DOC_LINGUAS="es hu it pl ru sr"
106 DOC_LINGUAS=
107 if test "x$USE_NLS" = xyes; then
108     if test -z "$LINGUAS"; then
109         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
110     else
111         langs="$LINGUAS"
112     fi
113 else
114     langs=
117 for h_lang in $ALL_DOC_LINGUAS; do
118     for lang in $langs; do
119         if test "$lang" = "$h_lang"; then
120             DOC_LINGUAS="$DOC_LINGUAS $lang"
121             break
122         fi
123     done
124 done
125 AC_SUBST(DOC_LINGUAS)
128 dnl OS specific flags.
130 case $host_os in
131 aux*)
132     # A/UX
133     LIBS="$LIBS -lposix"
134     AC_DEFINE(_POSIX_SOURCE)
135     ;;
136 esac
138 AC_PROG_INSTALL
139 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
140         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
141         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
142         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
143         sys/mkdev.h wchar.h wctype.h])
145 AC_HEADER_TIME
146 AC_HEADER_DIRENT
147 AC_HEADER_STDC
149 dnl Missing structure components
150 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
151 AC_STRUCT_ST_BLOCKS
154 dnl Check availability of some functions
157 AC_CHECK_FUNCS([\
158         atoll \
159         cfgetospeed \
160         initgroups isascii \
161         setreuid statfs sysconf \
162         tcgetattr tcsetattr truncate \
163         strverscmp \
164         realpath
168 dnl getpt is a GNU Extension (glibc 2.1.x)
170 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
171 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
173 dnl replacing lstat with statlstat on sco makes it more portable between
174 dnl sco clones
175 AC_CHECK_FUNCS(statlstat)
178 dnl If running under AIX, AC_AIX does not tell us that
180 AC_MSG_CHECKING([for AIX defines])
181 AC_EGREP_CPP(yes,
182 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
184 #endif
185 ], [
186 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
187 AC_MSG_RESULT(yes)
188 ], [AC_MSG_RESULT(no)])
191 dnl This is from GNU fileutils, check aclocal.m4 for more information
193 AC_GET_FS_INFO
196 dnl Missing typedefs and replacements
199 AC_CHECK_SIZEOF(long)
200 AC_CHECK_SIZEOF(long long)
201 AC_TYPE_MODE_T
202 AC_TYPE_OFF_T
203 AC_CHECK_SIZEOF(off_t)
204 AC_TYPE_PID_T
205 AC_TYPE_UID_T
206 AC_CHECK_TYPE(nlink_t, unsigned int)
207 AC_CHECK_TYPES([socklen_t],,,
209 #include <sys/types.h>
210 #include <sys/socket.h>
213 dnl This is needed for regex.c only
214 AC_CHECK_TYPE(uintptr_t,
215               [AC_DEFINE(HAVE_UINTPTR_T, 1,
216                          [Define if you have the `uintptr_t' type.])
219 AC_FUNC_ALLOCA
220 AC_FUNC_STRCOLL
223 dnl X11 support.
224 dnl Used to read keyboard modifiers when running under X11.
227 AC_PATH_XTRA
228 if test "x$no_x" = xyes; then
229     textmode_x11_support="no"
230 else
231     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
232     if test "x$mc_cv_g_module_supported" = "xyes" ; then
233         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
234         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
235         dnl functionality is supported on the system.  This way, mc will be
236         dnl linked against the gmodule library only when it's really required.
237         GLIB_CFLAGS="$GMODULE_CFLAGS"
238         GLIB_LIBS="$GMODULE_LIBS"
239     else
240         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
241     fi
242     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
243               [Define to enable getting events from X Window System])
244     textmode_x11_support="yes"
248 dnl Try to find static libraries for glib and gmodule.
250 if test x$with_glib_static = xyes; then
251     new_GLIB_LIBS=
252     for i in $GLIB_LIBS; do
253         case x$i in
254         x-lglib*)
255             lib=glib ;;
256         x-lgmodule*)
257             lib=gmodule ;;
258         *)
259             lib=
260             add="$i" ;;
261         esac
263         if test -n "$lib"; then
264             lib1=`echo $i | sed 's/^-l//'`
265             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
266                 add="$GLIB_LIBDIR/lib${lib1}.a"
267             else
268                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
269                     add="$GLIB_LIBDIR/lib${lib}.a"
270                 else
271                     AC_MSG_ERROR([Cannot find static $lib])
272                 fi
273             fi
274         fi
275         new_GLIB_LIBS="$new_GLIB_LIBS $add"
276     done
277     GLIB_LIBS="$new_GLIB_LIBS"
282 dnl Network related functions
285 AC_SEARCH_LIBS([socket], [socket])
286 AC_SEARCH_LIBS([gethostbyname], [nsl])
289 dnl Sequent wants getprocessstats
291 AC_CHECK_LIB(seq, get_process_stats, [
292         LIBS="$LIBS -lseq"
293         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
294                   [Define if you have function `get_process_stats' and
295 have to use that instead of gettimeofday])])
297 AC_MC_VFS_CHECKS
299 vfs_type="normal"
300 if test x$enable_vfs = xyes; then
301         AC_MSG_NOTICE([enabling VFS code])
302         vfs_type="Midnight Commander Virtual File System"
306 dnl Check for gpm mouse support (Linux only)
308 mouse_lib="xterm only"
309 AC_ARG_WITH(gpm-mouse,
310         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
311                            [[yes if found]]])
313 case $host_os in
314 linux*)
315     if test x$with_gpm_mouse != xno; then
316         AC_CHECK_LIB(gpm, Gpm_Repeat,
317             [AC_DEFINE(HAVE_LIBGPM, 1,
318                        [Define to enable gpm mouse support on Linux])
319             mouse_lib="gpm and xterm"
320             MCLIBS="$MCLIBS -lgpm"],
321             if test "x$with_gpm_mouse" = "xyes"; then
322                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
323             else
324                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
325             fi
326         )
327     fi
328     ;;
329 esac
331 MC_CHECK_SEARCH_TYPE
334 dnl Check nroff and the options it supports
336 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
338 dnl Default values
339 MANDOC=-man
340 MAN_FLAGS=
342 if $HAVE_nroff; then
343     AC_MSG_CHECKING([for manual formatting macros])
344     AC_CACHE_VAL(mc_cv_mandoc, [
345     nroff -mandoc < /dev/null > /dev/null 2>&1
346     if test $? = 0; then
347         mc_cv_mandoc=-mandoc
348     else
349         mc_cv_mandoc=-man
350     fi
351     ])
352     MANDOC=$mc_cv_mandoc
353     AC_MSG_RESULT([$MANDOC])
355     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
356     AC_CACHE_VAL(mc_cv_man_nocolor, [
357     nroff -c < /dev/null > /dev/null 2>&1
358     if test $? = 0; then
359         mc_cv_man_nocolor=-c
360     else
361         mc_cv_man_nocolor=
362     fi
363     ])
364     MAN_FLAGS=$mc_cv_man_nocolor
365     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
367     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
368     AC_CACHE_VAL(mc_cv_nroff_tascii, [
369     mc_cv_nroff_tascii=
370     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
371     if test $? = 0; then
372         mc_cv_nroff_tascii=-Tlatin1
373     else
374         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
375         if test $? = 0; then
376             mc_cv_nroff_tascii=-Tascii
377         fi
378     fi
379     ])
380     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
381     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
384 AC_SUBST(MANDOC)
385 AC_SUBST(MAN_FLAGS)
389 dnl Check for -L option to file
391 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
392 if $HAVE_FILECMD; then
393     AC_MSG_CHECKING([for -L option to file command])
394     AC_CACHE_VAL(mc_cv_filel, [
395     file -L . > /dev/null 2>&1
396     if test $? = 0; then
397         mc_cv_filel=yes
398     else
399         mc_cv_filel=no
400     fi
401     ])
402     if test x$mc_cv_filel = xyes; then
403         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
404     fi
405     filel=$mc_cv_filel
406     AC_MSG_RESULT([$filel])
410 AC_MSG_CHECKING([for subshell support])
411 AC_ARG_WITH(subshell,
412         [  --with-subshell          Compile in concurrent subshell [[yes]]
413   --with-subshell=optional Don't run concurrent shell by default [[no]]],
414         [result=no
415         if test x$withval = xoptional
416         then
417                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
418                           [Define to make subshell support optional])
419                 result="optional"
420         fi
421         if test x$withval = xyes
422         then
423                 result="yes"
424         fi],
425         [dnl Default: enable the subshell support
426         result="yes"
428 if test "x$result" != xno; then
429         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
430                   [Define to enable subshell support])
432 AC_MSG_RESULT([$result])
433 subshell="$result"
437 dnl Select the screen library.
439 AC_ARG_WITH(screen,
440         [  --with-screen=LIB        Compile with screen library: slang or
441                            ncurses [[slang if found]]])
443 case x$with_screen in
444 xslang)
445         MC_WITH_SLANG(strict)
446         ;;
447 xncurses)
448         MC_WITH_NCURSES
449         ;;
450 xncursesw)
451         MC_WITH_NCURSESW
452         ;;
454         MC_WITH_SLANG
455         ;;
457         AC_MSG_ERROR([Value of the screen library is incorrect])
458         ;;
459 esac
463 dnl Internal editor support.
465 AC_ARG_WITH(edit,
466         [  --with-edit              Enable internal editor [[yes]]])
468 if test x$with_edit != xno; then
469         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
470         use_edit=yes
471         edit_msg="yes"
472         AC_MSG_NOTICE([using internal editor])
473 else
474         edit_msg="no"
478 dnl Diff viewer support.
480 AC_ARG_WITH(diff_viewer,
481         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
483 if test x$with_diff_viewer != xno; then
484         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
485         use_diff=yes
486         diff_msg="yes"
487         AC_MSG_NOTICE([using diff viewer])
488 else
489         diff_msg="no"
493 dnl Check if the OS is supported by the console saver.
494 cons_saver=""
495 case $host_os in
496 linux*)
497     cons_saver=yes
498 esac
501 dnl Support for background operations
502 AC_ARG_ENABLE([background],
503               [  --enable-background     Support for background file operations [[yes]]])
504 if test "x$enable_background" != xno; then
505     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
510 dnl User visible support for charset conversion.
512 AC_ARG_ENABLE([charset],
513               [  --enable-charset        Support for charset selection and conversion [[yes]]])
514 have_charset=
515 charset_msg="no"
516 if test "x$enable_charset" != "xno"; then
517     AC_DEFINE(HAVE_CHARSET, 1,
518               [Define to enable charset selection and conversion])
519     have_charset=yes
520     charset_msg="yes"
523 if test "$GLIBC21" != yes; then
524     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
527 MC_CHECK_CFLAGS
529 CFLAGS_OPTS=""
531 if test "x$CFLAGS" = "x"; then
532     CFLAGS_OPTS=" -O2 "
535 if test x$USE_MAINTAINER_MODE = xyes; then
536     CFLAGS_OPTS="-g3 -O -ggdb"
537     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
540 AC_ARG_ENABLE(
541     [werror],
542     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
545 if test "x$enable_werror" = xyes; then
546     MC_CHECK_ONE_CFLAG([-Werror])
548 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
550 AC_SUBST(CFLAGS)
551 AC_SUBST(CPPFLAGS)
552 AC_SUBST(LDFLAGS)
553 AC_SUBST(LIBS)
555 dnl Libraries used only when building the mc binary
556 AC_SUBST(MCLIBS)
558 if test -n "$use_smbfs"; then
559   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
562 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
563 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
564 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
565 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
566 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
567 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
568 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
569 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
570 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
572 AC_CONFIG_FILES(
574 src/man2hlp/man2hlp
577 chmod +x src/man2hlp/man2hlp
580 AC_CONFIG_FILES([
581 Makefile
583 contrib/Makefile
584 contrib/dist/Makefile
585 contrib/dist/debian/Makefile
586 contrib/dist/gentoo/Makefile
587 contrib/dist/redhat/Makefile
588 contrib/dist/redhat/mc.spec
589 contrib/dist/mc.qpg
590 contrib/dist/pkginfo
591 contrib/dist/prototype
593 misc/Makefile
594 misc/skins/Makefile
595 misc/mc.ext
597 src/Makefile
598 src/consaver/Makefile
599 src/editor/Makefile
600 src/man2hlp/Makefile
601 src/viewer/Makefile
602 src/diffviewer/Makefile
604 lib/Makefile
605 lib/filehighlight/Makefile
606 lib/mcconfig/Makefile
607 lib/search/Makefile
608 lib/skin/Makefile
609 lib/strutil/Makefile
610 lib/tty/Makefile
611 lib/vfs/Makefile
612 lib/vfs/mc-vfs/Makefile
613 lib/vfs/mc-vfs/extfs/Makefile
614 lib/vfs/mc-vfs/extfs/a+
615 lib/vfs/mc-vfs/extfs/apt+
616 lib/vfs/mc-vfs/extfs/audio
617 lib/vfs/mc-vfs/extfs/deb
618 lib/vfs/mc-vfs/extfs/deba
619 lib/vfs/mc-vfs/extfs/debd
620 lib/vfs/mc-vfs/extfs/dpkg+
621 lib/vfs/mc-vfs/extfs/iso9660
622 lib/vfs/mc-vfs/extfs/hp48+
623 lib/vfs/mc-vfs/extfs/lslR
624 lib/vfs/mc-vfs/extfs/mailfs
625 lib/vfs/mc-vfs/extfs/patchfs
626 lib/vfs/mc-vfs/extfs/rpms+
627 lib/vfs/mc-vfs/extfs/s3+
628 lib/vfs/mc-vfs/extfs/uace
629 lib/vfs/mc-vfs/extfs/ualz
630 lib/vfs/mc-vfs/extfs/uar
631 lib/vfs/mc-vfs/extfs/uarc
632 lib/vfs/mc-vfs/extfs/uarj
633 lib/vfs/mc-vfs/extfs/uc1541
634 lib/vfs/mc-vfs/extfs/uha
635 lib/vfs/mc-vfs/extfs/ulha
636 lib/vfs/mc-vfs/extfs/urar
637 lib/vfs/mc-vfs/extfs/uzip
638 lib/vfs/mc-vfs/extfs/uzoo
640 misc/syntax/Makefile
642 doc/Makefile
643 doc/hints/Makefile
644 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
645 doc/man/es/mc.1 doc/man/es/Makefile
646 doc/man/hu/mc.1 doc/man/hu/Makefile
647 doc/man/it/mc.1 doc/man/it/Makefile
648 doc/man/pl/mc.1 doc/man/pl/Makefile
649 doc/man/ru/mc.1 doc/man/ru/Makefile
650 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
652 doc/hlp/Makefile
653 doc/hlp/es/Makefile
654 doc/hlp/hu/Makefile
655 doc/hlp/it/Makefile
656 doc/hlp/pl/Makefile
657 doc/hlp/ru/Makefile
658 doc/hlp/sr/Makefile
660 intl/Makefile
661 po/Makefile.in
664 AC_OUTPUT
666 if test x$enable_mcserver = x; then
667     enable_mcserver='no'
670 echo "
671 Configuration:
673   Source code location:       ${srcdir}
674   Compiler:                   ${CC}
675   Compiler flags:             ${CFLAGS}
676   File system:                ${vfs_type}
677                               ${vfs_flags}
678   Screen library:             ${screen_msg}
679   Mouse support:              ${mouse_lib}
680   X11 events support:         ${textmode_x11_support}
681   With subshell support:      ${subshell}
682   Internal editor:            ${edit_msg}
683   Diff viewer:                ${diff_msg}
684   Support for charset:        ${charset_msg}
685   Search type:                ${SEARCH_TYPE}