Modified ButtonBar engine to allow bind keys to unused buttons.
[midnight-commander.git] / configure.ac
blobd1f6ae553df111d7eb396e81fcc42b2f0d3ea47e
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 AM_CONFIG_HEADER(config.h)
15 AM_MAINTAINER_MODE
16 AC_CANONICAL_HOST
18 AC_USE_SYSTEM_EXTENSIONS
20 AC_PROG_LIBTOOL
22 AC_ISC_POSIX
24 AC_PROG_CC_STDC
26 dnl Doxygen
28 DX_HTML_FEATURE(ON)
29 DX_CHM_FEATURE(OFF)
30 DX_CHI_FEATURE(OFF)
31 DX_MAN_FEATURE(OFF)
32 DX_RTF_FEATURE(OFF)
33 DX_XML_FEATURE(OFF)
34 DX_PDF_FEATURE(OFF)
35 DX_PS_FEATURE(OFF)
36 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
38 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
40 dnl
41 dnl First try glib 2.x.
42 dnl Keep this check close to the beginning, so that the users
43 dnl without any glib won't have their time wasted by other checks.
44 dnl
46 AC_ARG_WITH([glib_static],
47             [  --with-glib-static       Link glib statically [[no]]])
49 glib_found=no
51 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.6], [glib_found=yes], [:])
52 if test x"$glib_found" = xno; then
53     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.6)])
56 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
57 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
59 if test "x$gmodule_found" = "xyes" ; then
60         dnl Check if the gmodule functionality supported on this system.
61         AC_G_MODULE_SUPPORTED
64 AC_HEADER_MAJOR
65 AC_C_CONST
66 AC_SYS_LARGEFILE
68 AC_PROG_LN_S
69 AC_CHECK_TOOL(AR, ar, ar)
71 dnl Only list browsers here that can be run in background (i.e. with `&')
72 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
74 dnl
75 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
76 dnl We use only part of the functionality of mmap, so on AIX,
77 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
78 dnl
79 AC_ARG_WITH(mmap,
80         [  --with-mmap              Use the mmap call [[yes if found]]])
81 if test x$with_mmap != xno; then
82     if test x$with_mmap = x; then
83         AC_FUNC_MMAP
84     else
85         AC_DEFINE(HAVE_MMAP, 1)
86     fi
89 dnl
90 dnl Internationalization
91 dnl
92 AM_GNU_GETTEXT(no-libtool, need-ngettext)
93 AM_GNU_GETTEXT_VERSION(0.14.3)
95 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
96     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
99 dnl Determine which help translations we want to install.
100 ALL_DOC_LINGUAS="es hu it pl ru sr"
102 DOC_LINGUAS=
103 if test "x$USE_NLS" = xyes; then
104     if test -z "$LINGUAS"; then
105         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
106     else
107         langs="$LINGUAS"
108     fi
109 else
110     langs=
113 for h_lang in $ALL_DOC_LINGUAS; do
114     for lang in $langs; do
115         if test "$lang" = "$h_lang"; then
116             DOC_LINGUAS="$DOC_LINGUAS $lang"
117             break
118         fi
119     done
120 done
121 AC_SUBST(DOC_LINGUAS)
124 dnl OS specific flags.
126 case $host_os in
127 aux*)
128     # A/UX
129     LIBS="$LIBS -lposix"
130     AC_DEFINE(_POSIX_SOURCE)
131     ;;
132 esac
134 dnl Extended Character Sets
136 AC_ARG_ENABLE([extcharset],
137         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
138 if test x"$enable_extcharset" = x"yes"; then
139   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
142 AC_PROG_INSTALL
143 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
144         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/vfs.h sys/time.h \
145         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
146         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
147         sys/mkdev.h wchar.h wctype.h])
149 AC_HEADER_TIME
150 AC_HEADER_SYS_WAIT
151 AC_HEADER_DIRENT
152 AC_HEADER_STDC
154 dnl Missing structure components
155 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
156 AC_STRUCT_ST_BLOCKS
159 dnl Check availability of some functions
162 AC_CHECK_FUNCS([\
163         atoll \
164         cfgetospeed \
165         getegid geteuid getgid getsid getuid \
166         initgroups isascii \
167         memcpy memset \
168         putenv \
169         setreuid setuid statfs strerror sysconf \
170         tcgetattr tcsetattr truncate \
174 dnl getpt is a GNU Extension (glibc 2.1.x)
176 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
177 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
179 dnl replacing lstat with statlstat on sco makes it more portable between
180 dnl sco clones
181 AC_CHECK_FUNCS(statlstat)
184 dnl If running under AIX, AC_AIX does not tell us that
186 AC_MSG_CHECKING([for AIX defines])
187 AC_EGREP_CPP(yes,
188 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
190 #endif
191 ], [
192 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
193 AC_MSG_RESULT(yes)
194 ], [AC_MSG_RESULT(no)])
197 dnl This is from GNU fileutils, check aclocal.m4 for more information
199 AC_GET_FS_INFO
202 dnl Missing typedefs and replacements
205 AC_CHECK_SIZEOF(long)
206 AC_CHECK_SIZEOF(long long)
207 AC_TYPE_MODE_T
208 AC_TYPE_OFF_T
209 AC_CHECK_SIZEOF(off_t)
210 AC_TYPE_PID_T
211 AC_TYPE_UID_T
212 AC_CHECK_TYPE(nlink_t, unsigned int)
213 AC_CHECK_TYPES([socklen_t],,,
215 #include <sys/types.h>
216 #include <sys/socket.h>
219 dnl This is needed for regex.c only
220 AC_CHECK_TYPE(uintptr_t,
221               [AC_DEFINE(HAVE_UINTPTR_T, 1,
222                          [Define if you have the `uintptr_t' type.])
225 AC_FUNC_ALLOCA
226 AC_FUNC_STRCOLL
229 dnl X11 support.
230 dnl Used to read keyboard modifiers when running under X11.
233 AC_PATH_XTRA
234 if test "x$no_x" = xyes; then
235     textmode_x11_support="no"
236 else
237     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
238     if test "x$mc_cv_g_module_supported" = "xyes" ; then
239         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
240         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
241         dnl functionality is supported on the system.  This way, mc will be
242         dnl linked against the gmodule library only when it's really required.
243         GLIB_CFLAGS="$GMODULE_CFLAGS"
244         GLIB_LIBS="$GMODULE_LIBS"
245     else
246         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
247     fi
248     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
249               [Define to enable getting events from X Window System])
250     textmode_x11_support="yes"
254 dnl Try to find static libraries for glib and gmodule.
256 if test x$with_glib_static = xyes; then
257     new_GLIB_LIBS=
258     for i in $GLIB_LIBS; do
259         case x$i in
260         x-lglib*)
261             lib=glib ;;
262         x-lgmodule*)
263             lib=gmodule ;;
264         *)
265             lib=
266             add="$i" ;;
267         esac
269         if test -n "$lib"; then
270             lib1=`echo $i | sed 's/^-l//'`
271             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
272                 add="$GLIB_LIBDIR/lib${lib1}.a"
273             else
274                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
275                     add="$GLIB_LIBDIR/lib${lib}.a"
276                 else
277                     AC_MSG_ERROR([Cannot find static $lib])
278                 fi
279             fi
280         fi
281         new_GLIB_LIBS="$new_GLIB_LIBS $add"
282     done
283     GLIB_LIBS="$new_GLIB_LIBS"
288 dnl Network related functions
291 AC_SEARCH_LIBS([socket], [socket])
292 AC_SEARCH_LIBS([gethostbyname], [nsl])
295 dnl Sequent wants getprocessstats
297 AC_CHECK_LIB(seq, get_process_stats, [
298         LIBS="$LIBS -lseq"
299         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
300                   [Define if you have function `get_process_stats' and
301 have to use that instead of gettimeofday])])
303 AC_MC_VFS_CHECKS
305 vfs_type="normal"
306 if test x$use_vfs = xyes; then
307         AC_MSG_NOTICE([enabling VFS code])
308         vfs_type="Midnight Commander Virtual File System"
312 dnl Check for gpm mouse support (Linux only)
314 mouse_lib="xterm only"
315 AC_ARG_WITH(gpm-mouse,
316         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
317                            [[yes if found]]])
319 case $host_os in
320 linux*)
321     if test x$with_gpm_mouse != xno; then
322         AC_CHECK_LIB(gpm, Gpm_Repeat,
323             [AC_DEFINE(HAVE_LIBGPM, 1,
324                        [Define to enable gpm mouse support on Linux])
325             mouse_lib="gpm and xterm"
326             MCLIBS="$MCLIBS -lgpm"],
327             if test "x$with_gpm_mouse" = "xyes"; then
328                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
329             else
330                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
331             fi
332         )
333     fi
334     ;;
335 esac
337 MC_CHECK_SEARCH_TYPE
340 dnl Check nroff and the options it supports
342 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
344 dnl Default values
345 MANDOC=-man
346 MAN_FLAGS=
348 if $HAVE_nroff; then
349     AC_MSG_CHECKING([for manual formatting macros])
350     AC_CACHE_VAL(mc_cv_mandoc, [
351     nroff -mandoc < /dev/null > /dev/null 2>&1
352     if test $? = 0; then
353         mc_cv_mandoc=-mandoc
354     else
355         mc_cv_mandoc=-man
356     fi
357     ])
358     MANDOC=$mc_cv_mandoc
359     AC_MSG_RESULT([$MANDOC])
361     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
362     AC_CACHE_VAL(mc_cv_man_nocolor, [
363     nroff -c < /dev/null > /dev/null 2>&1
364     if test $? = 0; then
365         mc_cv_man_nocolor=-c
366     else
367         mc_cv_man_nocolor=
368     fi
369     ])
370     MAN_FLAGS=$mc_cv_man_nocolor
371     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
373     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
374     AC_CACHE_VAL(mc_cv_nroff_tascii, [
375     mc_cv_nroff_tascii=
376     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
377     if test $? = 0; then
378         mc_cv_nroff_tascii=-Tlatin1
379     else
380         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
381         if test $? = 0; then
382             mc_cv_nroff_tascii=-Tascii
383         fi
384     fi
385     ])
386     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
387     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
390 AC_SUBST(MANDOC)
391 AC_SUBST(MAN_FLAGS)
395 dnl Check for -L option to file
397 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
398 if $HAVE_FILECMD; then
399     AC_MSG_CHECKING([for -L option to file command])
400     AC_CACHE_VAL(mc_cv_filel, [
401     file -L . > /dev/null 2>&1
402     if test $? = 0; then
403         mc_cv_filel=yes
404     else
405         mc_cv_filel=no
406     fi
407     ])
408     if test x$mc_cv_filel = xyes; then
409         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
410     fi
411     filel=$mc_cv_filel
412     AC_MSG_RESULT([$filel])
416 AC_MSG_CHECKING([for subshell support])
417 AC_ARG_WITH(subshell,
418         [  --with-subshell          Compile in concurrent subshell [[yes]]
419   --with-subshell=optional Don't run concurrent shell by default [[no]]],
420         [result=no
421         if test x$withval = xoptional
422         then
423                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
424                           [Define to make subshell support optional])
425                 result="optional"
426         fi
427         if test x$withval = xyes
428         then
429                 result="yes"
430         fi],
431         [dnl Default: enable the subshell support
432         result="yes"
434 if test "x$result" != xno; then
435         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
436                   [Define to enable subshell support])
438 AC_MSG_RESULT([$result])
439 subshell="$result"
443 dnl Select the screen library.
445 AC_ARG_WITH(screen,
446         [  --with-screen=LIB        Compile with screen library: slang or
447                            ncurses [[slang if found]]])
449 case x$with_screen in
450 xslang)
451         MC_WITH_SLANG(strict)
452         ;;
453 xncurses)
454         MC_WITH_NCURSES
455         ;;
456 xncursesw)
457         MC_WITH_NCURSESW
458         ;;
460         MC_WITH_SLANG
461         ;;
463         AC_MSG_ERROR([Value of the screen library is incorrect])
464         ;;
465 esac
469 dnl Internal editor support.
471 AC_ARG_WITH(edit,
472         [  --with-edit              Enable internal editor [[yes]]])
474 if test x$with_edit != xno; then
475         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
476         use_edit=yes
477         edit_msg="yes"
478         AC_MSG_NOTICE([using internal editor])
479 else
480         edit_msg="no"
484 dnl Check if the OS is supported by the console saver.
485 cons_saver=""
486 case $host_os in
487 linux*)
488     cons_saver=yes
489 esac
492 dnl Support for background operations
493 AC_ARG_ENABLE([background],
494               [  --enable-background     Support for background file operations [[yes]]])
495 if test "x$enable_background" != xno; then
496     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
501 dnl User visible support for charset conversion.
503 AC_ARG_ENABLE([charset],
504               [  --enable-charset        Support for charset selection and conversion [[yes]]])
505 have_charset=
506 charset_msg="no"
507 if test "x$enable_charset" != "xno"; then
508     AC_DEFINE(HAVE_CHARSET, 1,
509               [Define to enable charset selection and conversion])
510     have_charset=yes
511     charset_msg="yes"
514 if test "$GLIBC21" != yes; then
515     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
518 MC_CHECK_CFLAGS
520 CFLAGS_OPTS=" -O2 "
522 if test x$USE_MAINTAINER_MODE = xyes; then
523     CFLAGS_OPTS="-g3 -O -ggdb"
524     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
527 AC_ARG_ENABLE(
528     [werror],
529     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
532 if test "x$enable_werror" = xyes; then
533     MC_CHECK_ONE_CFLAG([-Werror])
536 CFLAGS="$CFLAGS $mc_configured_cflags $CFLAGS_OPTS"
538 AC_SUBST(CFLAGS)
539 AC_SUBST(CPPFLAGS)
540 AC_SUBST(LDFLAGS)
541 AC_SUBST(LIBS)
543 dnl Libraries used only when building the mc binary
544 AC_SUBST(MCLIBS)
546 dnl Version for the RedHat package, without dashes
547 RPM_VERSION=`echo $VERSION | sed 's/-/./g'`
548 AC_SUBST(RPM_VERSION)
550 if test -n "$use_smbfs"; then
551   AC_CONFIG_SUBDIRS([vfs/samba])
554 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
555 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
556 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
557 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
558 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
559 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
560 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
561 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
562 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
564 AC_CONFIG_FILES([
565 Makefile
567 contrib/Makefile
568 contrib/dist/Makefile
569 contrib/dist/debian/Makefile
570 contrib/dist/gentoo/Makefile
571 contrib/dist/redhat/Makefile
572 contrib/dist/redhat/mc.spec
573 contrib/dist/mc.qpg
574 contrib/dist/pkginfo
575 contrib/dist/prototype
577 misc/Makefile
578 misc/skins/Makefile
579 misc/mc.ext
581 src/Makefile
582 src/filehighlight/Makefile
583 src/mcconfig/Makefile
584 src/search/Makefile
585 src/skin/Makefile
586 src/tty/Makefile
587 src/viewer/Makefile
589 edit/Makefile
590 syntax/Makefile
592 vfs/Makefile
593 vfs/extfs/Makefile
594 vfs/extfs/a
595 vfs/extfs/apt
596 vfs/extfs/audio
597 vfs/extfs/deb
598 vfs/extfs/deba
599 vfs/extfs/debd
600 vfs/extfs/dpkg
601 vfs/extfs/iso9660
602 vfs/extfs/hp48
603 vfs/extfs/lslR
604 vfs/extfs/mailfs
605 vfs/extfs/patchfs
606 vfs/extfs/rpms
607 vfs/extfs/uace
608 vfs/extfs/ualz
609 vfs/extfs/uar
610 vfs/extfs/uarc
611 vfs/extfs/uarj
612 vfs/extfs/uc1541
613 vfs/extfs/uha
614 vfs/extfs/ulha
615 vfs/extfs/urar
616 vfs/extfs/uzip
617 vfs/extfs/uzoo
619 doc/Makefile
620 doc/hints/Makefile
621 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
622 doc/man/es/mc.1 doc/man/es/Makefile
623 doc/man/hu/mc.1 doc/man/hu/Makefile
624 doc/man/it/mc.1 doc/man/it/Makefile
625 doc/man/pl/mc.1 doc/man/pl/Makefile
626 doc/man/ru/mc.1 doc/man/ru/Makefile
627 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
629 doc/hlp/Makefile
630 doc/hlp/es/Makefile
631 doc/hlp/hu/Makefile
632 doc/hlp/it/Makefile
633 doc/hlp/pl/Makefile
634 doc/hlp/ru/Makefile
635 doc/hlp/sr/Makefile
637 intl/Makefile
638 po/Makefile.in
641 AC_OUTPUT
643 echo "
644 Configuration:
646   Source code location:       ${srcdir}
647   Compiler:                   ${CC}
648   Compiler flags:             ${CFLAGS}
649   File system:                ${vfs_type}
650                               ${vfs_flags}
651   Screen library:             ${screen_msg}
652   Mouse support:              ${mouse_lib}
653   X11 events support:         ${textmode_x11_support}
654   With subshell support:      ${subshell}
655   Internal editor:            ${edit_msg}
656   Support for charset:        ${charset_msg}
657   Search type:                ${SEARCH_TYPE}