src/find.c: Micro fix for 'Skip hidden' shortcut
[midnight-commander.git] / configure.ac
blob6bc9664c08139e90b827aebe4e82e4900704549f
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_SRCDIR(src/main.c)
9 AC_CONFIG_AUX_DIR(config)
10 AM_INIT_AUTOMAKE(mc, 4.6.2)
12 AM_CONFIG_HEADER(config.h)
13 AM_MAINTAINER_MODE
15 AC_CANONICAL_HOST
17 AC_USE_SYSTEM_EXTENSIONS
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 AM_GNU_GETTEXT(no-libtool, need-ngettext)
105 AM_GNU_GETTEXT_VERSION(0.14.3)
107 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
108     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
111 dnl Determine which help translations we want to install.
112 ALL_DOC_LINGUAS="es hu it pl ru sr"
114 DOC_LINGUAS=
115 if test "x$USE_NLS" = xyes; then
116     if test -z "$LINGUAS"; then
117         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
118     else
119         langs="$LINGUAS"
120     fi
121 else
122     langs=
125 for h_lang in $ALL_DOC_LINGUAS; do
126     for lang in $langs; do
127         if test "$lang" = "$h_lang"; then
128             DOC_LINGUAS="$DOC_LINGUAS $lang"
129             break
130         fi
131     done
132 done
133 AC_SUBST(DOC_LINGUAS)
136 dnl OS specific flags.
138 case $host_os in
139 aux*)
140     # A/UX
141     LIBS="$LIBS -lposix"
142     AC_DEFINE(_POSIX_SOURCE)
143     ;;
144 esac
146 dnl Extended Character Sets
148 AC_ARG_ENABLE([extcharset],
149         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
150 if test x"$enable_extcharset" = x"yes"; then
151   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
154 AC_PROG_INSTALL
155 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
156         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
157         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
158         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
159         sys/mkdev.h wchar.h wctype.h])
161 AC_HEADER_TIME
162 AC_HEADER_SYS_WAIT
163 AC_HEADER_DIRENT
164 AC_HEADER_STDC
166 dnl Missing structure components
167 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
168 AC_STRUCT_ST_BLOCKS
171 dnl Check availability of some functions 
172 dnl 
174 AC_CHECK_FUNCS([\
175         atoll \
176         cfgetospeed \
177         getegid geteuid getgid getsid getuid \
178         initgroups isascii \
179         memcpy memset \
180         putenv \
181         setreuid setuid statfs strerror strftime sysconf \
182         tcgetattr tcsetattr truncate \
186 dnl getpt is a GNU Extension (glibc 2.1.x)
188 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
189 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
191 dnl replacing lstat with statlstat on sco makes it more portable between
192 dnl sco clones
193 AC_CHECK_FUNCS(statlstat)
196 dnl If running under AIX, AC_AIX does not tell us that
198 AC_MSG_CHECKING([for AIX defines])
199 AC_EGREP_CPP(yes,
200 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
202 #endif
203 ], [
204 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
205 AC_MSG_RESULT(yes)
206 ], [AC_MSG_RESULT(no)])
209 dnl This is from GNU fileutils, check aclocal.m4 for more information
211 AC_GET_FS_INFO
214 dnl Missing typedefs and replacements
215 dnl 
217 AC_CHECK_SIZEOF(long)
218 AC_CHECK_SIZEOF(long long)
219 AC_TYPE_MODE_T
220 AC_TYPE_OFF_T
221 AC_CHECK_SIZEOF(off_t)
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.
451 AC_ARG_WITH(screen,
452         [  --with-screen=LIB        Compile with screen library: slang or
453                            ncurses [[slang if found]]])
455 case x$with_screen in
456 xslang)
457         MC_WITH_SLANG(strict)
458         ;;
459 xncurses)
460         MC_WITH_NCURSES
461         ;;
463         MC_WITH_SLANG
464         ;;
466         AC_MSG_ERROR([Value of the screen library is incorrect])
467         ;;
468 esac
472 dnl Internal editor support.
474 AC_ARG_WITH(edit,
475         [  --with-edit              Enable internal editor [[yes]]])
477 if test x$with_edit != xno; then
478         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
479         use_edit=yes
480         edit_msg="yes"
481         AC_MSG_NOTICE([using internal editor])
482 else
483         edit_msg="no"
487 dnl Check if the OS is supported by the console saver.
488 cons_saver=""
489 case $host_os in
490 linux*)
491     cons_saver=yes
492 esac
495 dnl Support for background operations
496 AC_ARG_ENABLE([background],
497               [  --enable-background      Support for background file operations [[yes]]])
498 if test "x$enable_background" != xno; then
499     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
504 dnl User visible support for charset conversion.
506 AC_ARG_ENABLE([charset],
507               [  --enable-charset         Support for charset selection and conversion [[no]]])
508 have_charset=
509 charset_msg="no"
510 if test "x$enable_charset" = xyes; then
511   if test "x$am_cv_func_iconv" != xyes; then
512     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])    
513   else
514     AC_DEFINE(HAVE_CHARSET, 1,
515               [Define to enable charset selection and conversion])
516     have_charset=yes
517     charset_msg="yes"
518   fi
521 if test "$GLIBC21" != yes; then
522     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
525 dnl If default CFLAGS is used with gcc, add -Wall
526 if test -z "$ac_env_CFLAGS_set"; then
527     if test -n "$GCC"; then
528         CFLAGS="$CFLAGS -Wall"
529     fi
532 AC_SUBST(CFLAGS)
533 AC_SUBST(CPPFLAGS)
534 AC_SUBST(LDFLAGS)
535 AC_SUBST(LIBS)
537 dnl Libraries used only when building the mc binary
538 AC_SUBST(MCLIBS)
540 dnl Version for the RedHat package, without dashes
541 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
542 AC_SUBST(RPM_VERSION)
544 if test -n "$use_smbfs"; then
545   AC_CONFIG_SUBDIRS([vfs/samba])
548 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
549 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
550 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
551 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
552 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
553 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
554 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
555 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
557 AC_CONFIG_FILES([
558 Makefile 
559 mc.spec
560 mc.qpg
561 pkginfo
562 prototype
563 doc/Makefile 
564 vfs/Makefile
565 vfs/extfs/Makefile
566 lib/Makefile
567 src/Makefile
568 edit/Makefile 
569 syntax/Makefile
570 m4/Makefile
571 lib/mc.ext
572 vfs/extfs/a
573 vfs/extfs/apt
574 vfs/extfs/audio
575 vfs/extfs/deb
576 vfs/extfs/deba
577 vfs/extfs/debd
578 vfs/extfs/dpkg
579 vfs/extfs/iso9660
580 vfs/extfs/hp48
581 vfs/extfs/lslR
582 vfs/extfs/mailfs
583 vfs/extfs/patchfs
584 vfs/extfs/rpms
585 vfs/extfs/uace
586 vfs/extfs/ualz
587 vfs/extfs/uar
588 vfs/extfs/uarc
589 vfs/extfs/uarj
590 vfs/extfs/uc1541
591 vfs/extfs/uha
592 vfs/extfs/ulha 
593 vfs/extfs/urar
594 vfs/extfs/uzip
595 vfs/extfs/uzoo
597 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
598 doc/es/mc.1 doc/es/Makefile
599 doc/hu/mc.1 doc/hu/Makefile
600 doc/it/mc.1 doc/it/Makefile
601 doc/pl/mc.1 doc/pl/Makefile
602 doc/ru/mc.1 doc/ru/Makefile
603 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
605 intl/Makefile
606 po/Makefile.in
609 AC_OUTPUT
611 echo "
612 Configuration:
614   Source code location:       ${srcdir}
615   Compiler:                   ${CC}
616   Compiler flags:             ${CFLAGS}
617   File system:                ${vfs_type}
618                               ${vfs_flags}
619   Screen library:             ${screen_msg}
620   Mouse support:              ${mouse_lib}
621   X11 events support:         ${textmode_x11_support}
622   With subshell support:      ${subshell}
623   Internal editor:            ${edit_msg}
624   Support for charset:        ${charset_msg}