* edit.c (edit_execute_key_command): Return void, the result is
[midnight-commander.git] / configure.ac
blobc77274c95718b3a8c7d282c4ef9b32c5268b61c9
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.52)
7 AC_CONFIG_SRCDIR(src/main.c)
8 AC_CONFIG_AUX_DIR(config)
9 AM_INIT_AUTOMAKE(mc, 4.6.1-pre1a)
11 AM_CONFIG_HEADER(config.h)
12 AM_MAINTAINER_MODE
14 AC_CANONICAL_HOST
16 AC_AIX
17 AC_MINIX
18 AC_ISC_POSIX
20 AC_PROG_CC_STDC
22 dnl
23 dnl First try glib 2.x.  If it's not found, use glib 1.2.x.
24 dnl Keep this check close to the beginning, so that the users
25 dnl without any glib won't have their time wasted by other checks.
26 dnl
28 AC_ARG_WITH(glib12, 
29         [  --with-glib12            Force using glib 1.2.x [[no]]])
31 AC_ARG_WITH([glib_static],
32             [  --with-glib-static       Link glib statically [[no]]])
34 glib_found=no
35 if test "x$with_glib12" != "xyes"; then
36         PKG_CHECK_MODULES(GLIB, [glib-2.0], [glib_found=yes], [:])
39 dnl Fall back to glib-1.2, don't use pkgconfig to find it.
40 if test "x$glib_found" != "xyes" ; then
41         dnl This temporary variable is a workaround for a bug in Autoconf-2.53
42         glib_path=$PATH:/usr/local/bin
44         dnl Klugde for FreeBSD, where glib-config is renamed to glib12-config.
45         AC_PATH_PROGS([GLIB_CONFIG], [glib-config glib12-config],,[$glib_path])
47         AC_ARG_VAR([GLIB_CONFIG], [Path to glib-config (version 1.2.x only)])
48         AM_PATH_GLIB(1.2.6, , [AC_MSG_ERROR([Test for glib failed.
49 GNU Midnight Commander requires glib 1.2.6 or above.])])
50         dnl Save GLIB_CFLAGS and GLIB_LIBS, since the following call to
51         dnl AM_PATH_GLIB will overwrite them.
52         save_GLIB_CFLAGS="$GLIB_CFLAGS"
53         save_GLIB_LIBS="$GLIB_LIBS"
54         dnl Check for gmodule.  Store the flags necessary to compile and
55         dnl link programs using gmodule functionality in GMODULE_CFLAGS
56         dnl and GMODULE_LIBS.
57         AM_PATH_GLIB(1.2.6, [gmodule_found=yes], , [gmodule])
58         GMODULE_CFLAGS="$GLIB_CFLAGS"
59         GMODULE_LIBS="$GLIB_LIBS"
60         GLIB_CFLAGS="$save_GLIB_CFLAGS"
61         GLIB_LIBS="$save_GLIB_LIBS"
62         GLIB_LIBDIR="`$GLIB_CONFIG --exec-prefix`/lib"
64         dnl Used in src/glibcompat.c
65         AC_CHECK_FUNCS([strlcpy])
66 else
67         PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
68         GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
71 if test "x$gmodule_found" = "xyes" ; then
72         dnl Check if the gmodule functionality supported on this system.
73         AC_G_MODULE_SUPPORTED
76 AC_HEADER_MAJOR
77 AC_C_CONST
78 AC_SYS_LARGEFILE
80 AC_PROG_LN_S
81 AC_CHECK_TOOL(AR, ar, ar)
83 dnl Only list browsers here that can be run in background (i.e. with `&')
84 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
86 dnl
87 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
88 dnl We use only part of the functionality of mmap, so on AIX,
89 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
90 dnl
91 AC_ARG_WITH(mmap,
92         [  --with-mmap              Use the mmap call [[yes if found]]])
93 if test x$with_mmap != xno; then
94     if test x$with_mmap = x; then
95         AC_FUNC_MMAP
96     else
97         AC_DEFINE(HAVE_MMAP, 1)
98     fi
102 dnl Internationalization
104 MC_ASM_LABELS
105 AM_GNU_GETTEXT
106 AM_GNU_GETTEXT_VERSION(0.11.5)
108 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
109     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
112 dnl Determine which help translations we want to install.
113 ALL_DOC_LINGUAS="es hu it pl ru sr"
115 DOC_LINGUAS=
116 if test "x$USE_NLS" = xyes; then
117     if test -z "$LINGUAS"; then
118         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
119     else
120         langs="$LINGUAS"
121     fi
122 else
123     langs=
126 for h_lang in $ALL_DOC_LINGUAS; do
127     for lang in $langs; do
128         if test "$lang" = "$h_lang"; then
129             DOC_LINGUAS="$DOC_LINGUAS $lang"
130             break
131         fi
132     done
133 done
134 AC_SUBST(DOC_LINGUAS)
137 dnl Enforce coding standards
139 if test "x$GCC" = xyes; then
140     CFLAGS="$CFLAGS -Wall"
144 dnl OS specific flags.
146 case $host_os in
147 aux*)
148     # A/UX
149     LIBS="$LIBS -lposix"
150     AC_DEFINE(_POSIX_SOURCE)
151     ;;
152 esac
155 AC_PROG_INSTALL
156 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
157         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
158         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h])
160 AC_HEADER_TIME
161 AC_HEADER_SYS_WAIT
162 AC_HEADER_DIRENT
163 AC_HEADER_STDC
165 dnl Missing structure components
166 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
167 AC_STRUCT_ST_BLOCKS
170 dnl Check availability of some functions 
171 dnl 
173 AC_CHECK_FUNCS([cfgetospeed getsid initgroups memcpy memmove memset \
174                 putenv setreuid setuid statfs strerror strftime \
175                 sysconf tcgetattr tcsetattr truncate])
177 dnl S-Lang needs all four functions to be defined to use POSIX signal API
178 AC_CHECK_FUNCS([sigaction sigemptyset sigprocmask sigaddset], , [slang_signals=no])
179 if test x$slang_signals != xno; then
180     AC_DEFINE(SLANG_POSIX_SIGNALS, 1, [Define to use POSIX signal API in S-Lang])
184 dnl getpt is a GNU Extension (glibc 2.1.x)
186 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
187 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
189 dnl replacing lstat with statlstat on sco makes it more portable between
190 dnl sco clones
191 AC_CHECK_FUNCS(statlstat)
194 dnl If running under AIX, AC_AIX does not tell us that
196 AC_MSG_CHECKING([for AIX defines])
197 AC_EGREP_CPP(yes,
198 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
200 #endif
201 ], [
202 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
203 AC_MSG_RESULT(yes)
204 ], [AC_MSG_RESULT(no)])
207 dnl This is from GNU fileutils, check aclocal.m4 for more information
209 AC_GET_FS_INFO
212 dnl Missing typedefs and replacements
213 dnl 
215 AC_TYPE_MODE_T
216 AC_CHECK_TYPE(umode_t, int)
217 AC_CHECK_TYPE(off_t, long)
218 AC_TYPE_PID_T
219 AC_TYPE_UID_T
220 AC_CHECK_TYPE(nlink_t, unsigned int)
222 dnl This is needed for regex.c only
223 AC_CHECK_TYPE(uintptr_t,
224               [AC_DEFINE(HAVE_UINTPTR_T, 1,
225                          [Define if you have the `uintptr_t' type.])
228 AC_FUNC_ALLOCA
229 AC_FUNC_STRCOLL
232 dnl X11 support.
233 dnl Used to read keyboard modifiers when running under X11.
236 AC_PATH_XTRA
237 if test "x$no_x" = xyes; then
238     textmode_x11_support="no"
239 else
240     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
241     if test "x$mc_cv_g_module_supported" = "xyes" ; then
242         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
243         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
244         dnl functionality is supported on the system.  This way, mc will be
245         dnl linked against the gmodule library only when it's really required.
246         GLIB_CFLAGS="$GMODULE_CFLAGS"
247         GLIB_LIBS="$GMODULE_LIBS"
248     else
249         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
250     fi
251     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
252               [Define to enable getting events from X Window System])
253     textmode_x11_support="yes"
257 dnl Try to find static libraries for glib and gmodule.
259 if test x$with_glib_static = xyes; then
260     new_GLIB_LIBS=
261     for i in $GLIB_LIBS; do
262         case x$i in
263         x-lglib*)
264             lib=glib ;;
265         x-lgmodule*)
266             lib=gmodule ;;
267         *)
268             lib=
269             add="$i" ;;
270         esac
272         if test -n "$lib"; then
273             lib1=`echo $i | sed 's/^-l//'`
274             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
275                 add="$GLIB_LIBDIR/lib${lib1}.a"
276             else
277                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
278                     add="$GLIB_LIBDIR/lib${lib}.a"
279                 else
280                     AC_MSG_ERROR([Cannot find static $lib])
281                 fi
282             fi
283         fi
284         new_GLIB_LIBS="$new_GLIB_LIBS $add"
285     done
286     GLIB_LIBS="$new_GLIB_LIBS"
291 dnl Network related functions
294 AC_CHECK_LIB(nsl, t_accept)
295 AC_CHECK_LIB(socket, socket)
297 have_socket=no
298 AC_CHECK_FUNCS(socket, have_socket=yes)
299 if test $have_socket = no; then
300   # socket is not in the default libraries.  See if it's in some other.
301   for lib in bsd socket inet; do
302     AC_CHECK_LIB($lib, socket, [
303         LIBS="$LIBS -l$lib"
304         have_socket=yes
305         AC_DEFINE(HAVE_SOCKET)
306         break])
307   done
310 have_gethostbyname=no
311 AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes])
312 if test $have_gethostbyname = no; then
313   # gethostbyname is not in the default libraries.  See if it's in some other.
314   for lib in bsd socket inet; do
315     AC_CHECK_LIB([$lib], [gethostbyname],
316                  [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
317   done
321 dnl Sequent wants getprocessstats
323 AC_CHECK_LIB(seq, get_process_stats, [
324         LIBS="$LIBS -lseq"
325         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
326                   [Define if you have function `get_process_stats' and
327 have to use that instead of gettimeofday])])
329 MC_VFS_CHECKS
331 vfs_type="normal"
332 if test x$use_vfs = xyes; then
333         AC_MSG_NOTICE([enabling VFS code])
334         vfs_type="Midnight Commander Virtual File System"
338 dnl Check for gpm mouse support (Linux only)
340 mouse_lib="xterm only"
341 AC_ARG_WITH(gpm-mouse, 
342         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
343                            [[yes if found]]])
345 case $host_os in
346 linux*)
347     if test x$with_gpm_mouse != xno; then
348         AC_CHECK_LIB(gpm, Gpm_Repeat,
349             [AC_DEFINE(HAVE_LIBGPM, 1,
350                        [Define to enable gpm mouse support on Linux])
351             mouse_lib="gpm and xterm"
352             MCLIBS="$MCLIBS -lgpm"],
353             [AC_MSG_WARN([libgpm is missing or older than 0.18])
354         ])
355     fi
356     ;;
357 esac
360 dnl Check nroff and the options it supports
362 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
364 dnl Default values
365 MANDOC=-man
366 MAN_FLAGS=
368 if $HAVE_nroff; then
369     AC_MSG_CHECKING([for manual formatting macros])
370     AC_CACHE_VAL(mc_cv_mandoc, [
371     nroff -mandoc < /dev/null > /dev/null 2>&1
372     if test $? = 0; then
373         mc_cv_mandoc=-mandoc
374     else
375         mc_cv_mandoc=-man
376     fi
377     ])
378     MANDOC=$mc_cv_mandoc
379     AC_MSG_RESULT([$MANDOC])
381     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
382     AC_CACHE_VAL(mc_cv_man_nocolor, [
383     nroff -c < /dev/null > /dev/null 2>&1
384     if test $? = 0; then
385         mc_cv_man_nocolor=-c
386     else
387         mc_cv_man_nocolor=
388     fi
389     ])
390     MAN_FLAGS=$mc_cv_man_nocolor
391     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
393     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
394     AC_CACHE_VAL(mc_cv_nroff_tascii, [
395     mc_cv_nroff_tascii=
396     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
397     if test $? = 0; then
398         mc_cv_nroff_tascii=-Tlatin1
399     else
400         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
401         if test $? = 0; then
402             mc_cv_nroff_tascii=-Tascii
403         fi
404     fi
405     ])
406     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
407     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
410 AC_SUBST(MANDOC)
411 AC_SUBST(MAN_FLAGS)
415 dnl Check for -L option to file
417 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
418 if $HAVE_FILECMD; then
419     AC_MSG_CHECKING([for -L option to file command])
420     AC_CACHE_VAL(mc_cv_filel, [
421     file -L . > /dev/null 2>&1
422     if test $? = 0; then
423         mc_cv_filel=yes
424     else
425         mc_cv_filel=no
426     fi
427     ])
428     if test x$mc_cv_filel = xyes; then
429         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
430     fi
431     filel=$mc_cv_filel
432     AC_MSG_RESULT([$filel])
436 AC_MSG_CHECKING([for subshell support])
437 AC_ARG_WITH(subshell,
438         [  --with-subshell          Compile in concurrent subshell [[yes]]
439   --with-subshell=optional Don't run concurrent shell by default [[no]]],
440         [result=no
441         if test x$withval = xoptional
442         then
443                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
444                           [Define to make subshell support optional])
445                 result="optional"
446         fi
447         if test x$withval = xyes
448         then 
449                 result="yes"
450         fi],
451         [dnl Default: enable the subshell support
452         result="yes"
454 if test "x$result" != xno; then
455         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
456                   [Define to enable subshell support])
458 AC_MSG_RESULT([$result])
459 subshell="$result"
463 dnl Select the screen library.  mcslang is the included S-Lang library.
465 AC_ARG_WITH(screen,
466         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
467                            ncurses [[slang if found, else mcslang]]])
469 case x$with_screen in
470 xslang)
471         MC_WITH_SLANG(strict)
472         ;;
473 xmcslang)
474         MC_WITH_MCSLANG
475         ;;
476 xncurses)
477         MC_WITH_NCURSES
478         ;;
480         MC_WITH_SLANG
481         ;;
483         AC_MSG_ERROR([Value of the screen library is incorrect])
484         ;;
485 esac
489 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
490 dnl Report an error if this option is not applicable.
492 AC_ARG_WITH(termcap,
493         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
494         [if test x$with_screen != xmcslang; then
495                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
496         fi
501 dnl Internal editor support.
503 AC_ARG_WITH(edit,
504         [  --with-edit              Enable internal editor [[yes]]])
506 if test x$with_edit != xno; then
507         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
508         use_edit=yes
509         edit_msg="yes"
510         AC_MSG_NOTICE([using internal editor])
511 else
512         edit_msg="no"
516 dnl Check if the OS is supported by the console saver.
517 cons_saver=""
518 case $host_os in
519 linux*)
520     cons_saver=yes
521 esac
524 dnl Support for background operations
525 AC_ARG_ENABLE([background],
526               [  --enable-background      Support for background file operations [[yes]]])
527 if test "x$enable_background" != xno; then
528     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
533 dnl User visible support for charset conversion.
535 AC_ARG_ENABLE([charset],
536               [  --enable-charset         Support for charset selection and conversion [[no]]])
537 have_charset=
538 if test "x$enable_charset" = xyes; then
539   if test "x$am_cv_func_iconv" != xyes; then
540     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])
541   else
542     AC_DEFINE(HAVE_CHARSET, 1,
543               [Define to enable charset selection and conversion])
544     have_charset=yes
545   fi
548 if test "$GLIBC21" != yes; then
549     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
552 AC_SUBST(CFLAGS)
553 AC_SUBST(CPPFLAGS)
554 AC_SUBST(LDFLAGS)
555 AC_SUBST(LIBS)
557 dnl Libraries used only when building the mc binary
558 AC_SUBST(MCLIBS)
560 dnl Version for the RedHat package, without dashes
561 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
562 AC_SUBST(RPM_VERSION)
564 if test -n "$use_smbfs"; then
565   AC_CONFIG_SUBDIRS([vfs/samba])
568 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
569 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
570 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
571 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
572 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
573 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
574 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
575 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
576 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
578 AC_CONFIG_FILES([
579 Makefile 
580 mc.spec
581 doc/Makefile 
582 vfs/Makefile
583 vfs/extfs/Makefile
584 lib/Makefile
585 src/Makefile
586 slang/Makefile 
587 edit/Makefile 
588 syntax/Makefile
589 m4/Makefile
591 lib/mc.ext
593 vfs/extfs/a
594 vfs/extfs/apt
595 vfs/extfs/audio
596 vfs/extfs/deb
597 vfs/extfs/deba
598 vfs/extfs/debd
599 vfs/extfs/dpkg
600 vfs/extfs/iso9660
601 vfs/extfs/hp48
602 vfs/extfs/lslR
603 vfs/extfs/mailfs
604 vfs/extfs/patchfs
605 vfs/extfs/rpms
606 vfs/extfs/uar
607 vfs/extfs/uarj
608 vfs/extfs/uha
609 vfs/extfs/ulha 
610 vfs/extfs/urar
611 vfs/extfs/uzip
612 vfs/extfs/uzoo
614 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
615 doc/es/mc.1 doc/es/Makefile
616 doc/hu/mc.1 doc/hu/Makefile
617 doc/it/mc.1 doc/it/Makefile
618 doc/pl/mc.1 doc/pl/Makefile
619 doc/ru/mc.1 doc/ru/Makefile
620 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
622 intl/Makefile
623 po/Makefile.in
626 AC_OUTPUT
628 echo "
629 Configuration:
631   Source code location:       ${srcdir}
632   Compiler:                   ${CC}
633   Compiler flags:             ${CFLAGS}
634   File system:                ${vfs_type}
635                               ${vfs_flags}
636   Screen library:             ${screen_msg}
637   Mouse support:              ${mouse_lib}
638   X11 events support:         ${textmode_x11_support}
639   With subshell support:      ${subshell}
640   Internal editor:            ${edit_msg}