Update base version to 4.6.1.
[midnight-commander.git] / configure.ac
blob675f93fa82190e27bc991a6d1237f080004b3d47
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.53)
7 AC_CONFIG_SRCDIR(src/main.c)
8 AC_CONFIG_AUX_DIR(config)
9 AM_INIT_AUTOMAKE(mc, 4.6.1a)
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 OS specific flags.
139 case $host_os in
140 aux*)
141     # A/UX
142     LIBS="$LIBS -lposix"
143     AC_DEFINE(_POSIX_SOURCE)
144     ;;
145 linux*)
146     AC_DEFINE(_GNU_SOURCE,, [Define to request GNU feature set on Linux])
147     ;;
148 esac
150 dnl Extended Character Sets
152 AC_ARG_ENABLE([extcharset],
153         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
154 if test x"$enable_extcharset" = x"yes"; then
155   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
158 AC_PROG_INSTALL
159 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
160         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
161         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
162         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
163         sys/mkdev.h wchar.h wctype.h])
165 AC_HEADER_TIME
166 AC_HEADER_SYS_WAIT
167 AC_HEADER_DIRENT
168 AC_HEADER_STDC
170 dnl Missing structure components
171 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
172 AC_STRUCT_ST_BLOCKS
175 dnl Check availability of some functions 
176 dnl 
178 AC_CHECK_FUNCS([atoll cfgetospeed getsid initgroups memcpy memmove memset \
179                 putenv setreuid setuid statfs strerror strftime \
180                 sysconf tcgetattr tcsetattr truncate getgrouplist])
182 dnl S-Lang needs all four functions to be defined to use POSIX signal API
183 AC_CHECK_FUNCS([sigaction sigemptyset sigprocmask sigaddset], , [slang_signals=no])
184 if test x$slang_signals != xno; then
185     AC_DEFINE(SLANG_POSIX_SIGNALS, 1, [Define to use POSIX signal API in S-Lang])
189 dnl getpt is a GNU Extension (glibc 2.1.x)
191 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
192 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
194 dnl replacing lstat with statlstat on sco makes it more portable between
195 dnl sco clones
196 AC_CHECK_FUNCS(statlstat)
199 dnl If running under AIX, AC_AIX does not tell us that
201 AC_MSG_CHECKING([for AIX defines])
202 AC_EGREP_CPP(yes,
203 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
205 #endif
206 ], [
207 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
208 AC_MSG_RESULT(yes)
209 ], [AC_MSG_RESULT(no)])
212 dnl This is from GNU fileutils, check aclocal.m4 for more information
214 AC_GET_FS_INFO
217 dnl Missing typedefs and replacements
218 dnl 
220 AC_TYPE_MODE_T
221 AC_CHECK_TYPE(off_t, long)
222 AC_TYPE_PID_T
223 AC_TYPE_UID_T
224 AC_CHECK_TYPE(nlink_t, unsigned int)
225 AC_CHECK_TYPES([socklen_t],,,
227 #include <sys/types.h>
228 #include <sys/socket.h>
231 dnl This is needed for regex.c only
232 AC_CHECK_TYPE(uintptr_t,
233               [AC_DEFINE(HAVE_UINTPTR_T, 1,
234                          [Define if you have the `uintptr_t' type.])
237 AC_FUNC_ALLOCA
238 AC_FUNC_STRCOLL
241 dnl X11 support.
242 dnl Used to read keyboard modifiers when running under X11.
245 AC_PATH_XTRA
246 if test "x$no_x" = xyes; then
247     textmode_x11_support="no"
248 else
249     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
250     if test "x$mc_cv_g_module_supported" = "xyes" ; then
251         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
252         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
253         dnl functionality is supported on the system.  This way, mc will be
254         dnl linked against the gmodule library only when it's really required.
255         GLIB_CFLAGS="$GMODULE_CFLAGS"
256         GLIB_LIBS="$GMODULE_LIBS"
257     else
258         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
259     fi
260     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
261               [Define to enable getting events from X Window System])
262     textmode_x11_support="yes"
266 dnl Try to find static libraries for glib and gmodule.
268 if test x$with_glib_static = xyes; then
269     new_GLIB_LIBS=
270     for i in $GLIB_LIBS; do
271         case x$i in
272         x-lglib*)
273             lib=glib ;;
274         x-lgmodule*)
275             lib=gmodule ;;
276         *)
277             lib=
278             add="$i" ;;
279         esac
281         if test -n "$lib"; then
282             lib1=`echo $i | sed 's/^-l//'`
283             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
284                 add="$GLIB_LIBDIR/lib${lib1}.a"
285             else
286                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
287                     add="$GLIB_LIBDIR/lib${lib}.a"
288                 else
289                     AC_MSG_ERROR([Cannot find static $lib])
290                 fi
291             fi
292         fi
293         new_GLIB_LIBS="$new_GLIB_LIBS $add"
294     done
295     GLIB_LIBS="$new_GLIB_LIBS"
300 dnl Network related functions
303 AC_SEARCH_LIBS([socket], [socket])
304 AC_SEARCH_LIBS([gethostbyname], [nsl])
307 dnl Sequent wants getprocessstats
309 AC_CHECK_LIB(seq, get_process_stats, [
310         LIBS="$LIBS -lseq"
311         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
312                   [Define if you have function `get_process_stats' and
313 have to use that instead of gettimeofday])])
315 MC_VFS_CHECKS
317 vfs_type="normal"
318 if test x$use_vfs = xyes; then
319         AC_MSG_NOTICE([enabling VFS code])
320         vfs_type="Midnight Commander Virtual File System"
324 dnl Check for gpm mouse support (Linux only)
326 mouse_lib="xterm only"
327 AC_ARG_WITH(gpm-mouse, 
328         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
329                            [[yes if found]]])
331 case $host_os in
332 linux*)
333     if test x$with_gpm_mouse != xno; then
334         AC_CHECK_LIB(gpm, Gpm_Repeat,
335             [AC_DEFINE(HAVE_LIBGPM, 1,
336                        [Define to enable gpm mouse support on Linux])
337             mouse_lib="gpm and xterm"
338             MCLIBS="$MCLIBS -lgpm"],
339             [AC_MSG_WARN([libgpm is missing or older than 0.18])
340         ])
341     fi
342     ;;
343 esac
346 dnl Check nroff and the options it supports
348 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
350 dnl Default values
351 MANDOC=-man
352 MAN_FLAGS=
354 if $HAVE_nroff; then
355     AC_MSG_CHECKING([for manual formatting macros])
356     AC_CACHE_VAL(mc_cv_mandoc, [
357     nroff -mandoc < /dev/null > /dev/null 2>&1
358     if test $? = 0; then
359         mc_cv_mandoc=-mandoc
360     else
361         mc_cv_mandoc=-man
362     fi
363     ])
364     MANDOC=$mc_cv_mandoc
365     AC_MSG_RESULT([$MANDOC])
367     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
368     AC_CACHE_VAL(mc_cv_man_nocolor, [
369     nroff -c < /dev/null > /dev/null 2>&1
370     if test $? = 0; then
371         mc_cv_man_nocolor=-c
372     else
373         mc_cv_man_nocolor=
374     fi
375     ])
376     MAN_FLAGS=$mc_cv_man_nocolor
377     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
379     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
380     AC_CACHE_VAL(mc_cv_nroff_tascii, [
381     mc_cv_nroff_tascii=
382     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
383     if test $? = 0; then
384         mc_cv_nroff_tascii=-Tlatin1
385     else
386         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
387         if test $? = 0; then
388             mc_cv_nroff_tascii=-Tascii
389         fi
390     fi
391     ])
392     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
393     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
396 AC_SUBST(MANDOC)
397 AC_SUBST(MAN_FLAGS)
401 dnl Check for -L option to file
403 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
404 if $HAVE_FILECMD; then
405     AC_MSG_CHECKING([for -L option to file command])
406     AC_CACHE_VAL(mc_cv_filel, [
407     file -L . > /dev/null 2>&1
408     if test $? = 0; then
409         mc_cv_filel=yes
410     else
411         mc_cv_filel=no
412     fi
413     ])
414     if test x$mc_cv_filel = xyes; then
415         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
416     fi
417     filel=$mc_cv_filel
418     AC_MSG_RESULT([$filel])
422 AC_MSG_CHECKING([for subshell support])
423 AC_ARG_WITH(subshell,
424         [  --with-subshell          Compile in concurrent subshell [[yes]]
425   --with-subshell=optional Don't run concurrent shell by default [[no]]],
426         [result=no
427         if test x$withval = xoptional
428         then
429                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
430                           [Define to make subshell support optional])
431                 result="optional"
432         fi
433         if test x$withval = xyes
434         then 
435                 result="yes"
436         fi],
437         [dnl Default: enable the subshell support
438         result="yes"
440 if test "x$result" != xno; then
441         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
442                   [Define to enable subshell support])
444 AC_MSG_RESULT([$result])
445 subshell="$result"
449 dnl Select the screen library.  mcslang is the included S-Lang library.
451 AC_ARG_WITH(screen,
452         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
453                            ncurses [[slang if found, else mcslang]]])
455 case x$with_screen in
456 xslang)
457         MC_WITH_SLANG(strict)
458         ;;
459 xmcslang)
460         MC_WITH_MCSLANG
461         ;;
462 xncurses)
463         MC_WITH_NCURSES
464         ;;
466         MC_WITH_SLANG
467         ;;
469         AC_MSG_ERROR([Value of the screen library is incorrect])
470         ;;
471 esac
475 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
476 dnl Report an error if this option is not applicable.
478 AC_ARG_WITH(termcap,
479         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
480         [if test x$with_screen != xmcslang; then
481                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
482         fi
487 dnl Internal editor support.
489 AC_ARG_WITH(edit,
490         [  --with-edit              Enable internal editor [[yes]]])
492 if test x$with_edit != xno; then
493         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
494         use_edit=yes
495         edit_msg="yes"
496         AC_MSG_NOTICE([using internal editor])
497 else
498         edit_msg="no"
502 dnl Check if the OS is supported by the console saver.
503 cons_saver=""
504 case $host_os in
505 linux*)
506     cons_saver=yes
507 esac
510 dnl Support for background operations
511 AC_ARG_ENABLE([background],
512               [  --enable-background      Support for background file operations [[yes]]])
513 if test "x$enable_background" != xno; then
514     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
519 dnl User visible support for charset conversion.
521 AC_ARG_ENABLE([charset],
522               [  --enable-charset         Support for charset selection and conversion [[no]]])
523 have_charset=
524 charset_msg="no"
525 if test "x$enable_charset" = xyes; then
526   if test "x$am_cv_func_iconv" != xyes; then
527     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])    
528   else
529     AC_DEFINE(HAVE_CHARSET, 1,
530               [Define to enable charset selection and conversion])
531     have_charset=yes
532     charset_msg="yes"
533   fi
536 if test "$GLIBC21" != yes; then
537     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
540 dnl If default CFLAGS is used with gcc, add -Wall
541 if test -z "$ac_env_CFLAGS_set"; then
542     if test -n "$GCC"; then
543         CFLAGS="$CFLAGS -Wall"
544     fi
547 AC_SUBST(CFLAGS)
548 AC_SUBST(CPPFLAGS)
549 AC_SUBST(LDFLAGS)
550 AC_SUBST(LIBS)
552 dnl Libraries used only when building the mc binary
553 AC_SUBST(MCLIBS)
555 dnl Version for the RedHat package, without dashes
556 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
557 AC_SUBST(RPM_VERSION)
559 if test -n "$use_smbfs"; then
560   AC_CONFIG_SUBDIRS([vfs/samba])
563 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
564 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
565 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
566 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
567 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
568 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
569 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
570 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
571 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
573 AC_CONFIG_FILES([
574 Makefile 
575 mc.spec
576 mc.qpg
577 pkginfo
578 prototype
579 doc/Makefile 
580 vfs/Makefile
581 vfs/extfs/Makefile
582 lib/Makefile
583 src/Makefile
584 slang/Makefile 
585 edit/Makefile 
586 syntax/Makefile
587 m4/Makefile
588 lib/mc.ext
589 vfs/extfs/a
590 vfs/extfs/apt
591 vfs/extfs/audio
592 vfs/extfs/deb
593 vfs/extfs/deba
594 vfs/extfs/debd
595 vfs/extfs/dpkg
596 vfs/extfs/iso9660
597 vfs/extfs/hp48
598 vfs/extfs/lslR
599 vfs/extfs/mailfs
600 vfs/extfs/patchfs
601 vfs/extfs/rpms
602 vfs/extfs/ualz
603 vfs/extfs/uar
604 vfs/extfs/uarj
605 vfs/extfs/uha
606 vfs/extfs/ulha 
607 vfs/extfs/urar
608 vfs/extfs/uzip
609 vfs/extfs/uzoo
611 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
612 doc/es/mc.1 doc/es/Makefile
613 doc/hu/mc.1 doc/hu/Makefile
614 doc/it/mc.1 doc/it/Makefile
615 doc/pl/mc.1 doc/pl/Makefile
616 doc/ru/mc.1 doc/ru/Makefile
617 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
619 intl/Makefile
620 po/Makefile.in
623 AC_OUTPUT
625 echo "
626 Configuration:
628   Source code location:       ${srcdir}
629   Compiler:                   ${CC}
630   Compiler flags:             ${CFLAGS}
631   File system:                ${vfs_type}
632                               ${vfs_flags}
633   Screen library:             ${screen_msg}
634   Mouse support:              ${mouse_lib}
635   X11 events support:         ${textmode_x11_support}
636   With subshell support:      ${subshell}
637   Internal editor:            ${edit_msg}
638   Support for charset:        ${charset_msg}