merged 158_message_codes branch
[midnight-commander.git] / configure.ac
blob0066dbfbbde8a023318127a946c101d7359e9c83
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.54)
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-pre1)
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 memmove memset \
180         putenv \
181         setreuid setuid statfs strerror strftime sysconf \
182         tcgetattr tcsetattr truncate \
185 dnl S-Lang needs all four functions to be defined to use POSIX signal API
186 AC_CHECK_FUNCS([sigaction sigemptyset sigprocmask sigaddset], , [slang_signals=no])
187 if test x$slang_signals != xno; then
188     AC_DEFINE(SLANG_POSIX_SIGNALS, 1, [Define to use POSIX signal API in S-Lang])
192 dnl getpt is a GNU Extension (glibc 2.1.x)
194 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
195 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
197 dnl replacing lstat with statlstat on sco makes it more portable between
198 dnl sco clones
199 AC_CHECK_FUNCS(statlstat)
202 dnl If running under AIX, AC_AIX does not tell us that
204 AC_MSG_CHECKING([for AIX defines])
205 AC_EGREP_CPP(yes,
206 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
208 #endif
209 ], [
210 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
211 AC_MSG_RESULT(yes)
212 ], [AC_MSG_RESULT(no)])
215 dnl This is from GNU fileutils, check aclocal.m4 for more information
217 AC_GET_FS_INFO
220 dnl Missing typedefs and replacements
221 dnl 
223 AC_CHECK_SIZEOF(long)
224 AC_CHECK_SIZEOF(long long)
225 AC_TYPE_MODE_T
226 AC_TYPE_OFF_T
227 AC_CHECK_SIZEOF(off_t)
228 AC_TYPE_PID_T
229 AC_TYPE_UID_T
230 AC_CHECK_TYPE(nlink_t, unsigned int)
231 AC_CHECK_TYPES([socklen_t],,,
233 #include <sys/types.h>
234 #include <sys/socket.h>
237 dnl This is needed for regex.c only
238 AC_CHECK_TYPE(uintptr_t,
239               [AC_DEFINE(HAVE_UINTPTR_T, 1,
240                          [Define if you have the `uintptr_t' type.])
243 AC_FUNC_ALLOCA
244 AC_FUNC_STRCOLL
247 dnl X11 support.
248 dnl Used to read keyboard modifiers when running under X11.
251 AC_PATH_XTRA
252 if test "x$no_x" = xyes; then
253     textmode_x11_support="no"
254 else
255     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
256     if test "x$mc_cv_g_module_supported" = "xyes" ; then
257         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
258         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
259         dnl functionality is supported on the system.  This way, mc will be
260         dnl linked against the gmodule library only when it's really required.
261         GLIB_CFLAGS="$GMODULE_CFLAGS"
262         GLIB_LIBS="$GMODULE_LIBS"
263     else
264         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
265     fi
266     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
267               [Define to enable getting events from X Window System])
268     textmode_x11_support="yes"
272 dnl Try to find static libraries for glib and gmodule.
274 if test x$with_glib_static = xyes; then
275     new_GLIB_LIBS=
276     for i in $GLIB_LIBS; do
277         case x$i in
278         x-lglib*)
279             lib=glib ;;
280         x-lgmodule*)
281             lib=gmodule ;;
282         *)
283             lib=
284             add="$i" ;;
285         esac
287         if test -n "$lib"; then
288             lib1=`echo $i | sed 's/^-l//'`
289             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
290                 add="$GLIB_LIBDIR/lib${lib1}.a"
291             else
292                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
293                     add="$GLIB_LIBDIR/lib${lib}.a"
294                 else
295                     AC_MSG_ERROR([Cannot find static $lib])
296                 fi
297             fi
298         fi
299         new_GLIB_LIBS="$new_GLIB_LIBS $add"
300     done
301     GLIB_LIBS="$new_GLIB_LIBS"
306 dnl Network related functions
309 AC_SEARCH_LIBS([socket], [socket])
310 AC_SEARCH_LIBS([gethostbyname], [nsl])
313 dnl Sequent wants getprocessstats
315 AC_CHECK_LIB(seq, get_process_stats, [
316         LIBS="$LIBS -lseq"
317         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
318                   [Define if you have function `get_process_stats' and
319 have to use that instead of gettimeofday])])
321 MC_VFS_CHECKS
323 vfs_type="normal"
324 if test x$use_vfs = xyes; then
325         AC_MSG_NOTICE([enabling VFS code])
326         vfs_type="Midnight Commander Virtual File System"
330 dnl Check for gpm mouse support (Linux only)
332 mouse_lib="xterm only"
333 AC_ARG_WITH(gpm-mouse, 
334         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
335                            [[yes if found]]])
337 case $host_os in
338 linux*)
339     if test x$with_gpm_mouse != xno; then
340         AC_CHECK_LIB(gpm, Gpm_Repeat,
341             [AC_DEFINE(HAVE_LIBGPM, 1,
342                        [Define to enable gpm mouse support on Linux])
343             mouse_lib="gpm and xterm"
344             MCLIBS="$MCLIBS -lgpm"],
345             [AC_MSG_WARN([libgpm is missing or older than 0.18])
346         ])
347     fi
348     ;;
349 esac
352 dnl Check nroff and the options it supports
354 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
356 dnl Default values
357 MANDOC=-man
358 MAN_FLAGS=
360 if $HAVE_nroff; then
361     AC_MSG_CHECKING([for manual formatting macros])
362     AC_CACHE_VAL(mc_cv_mandoc, [
363     nroff -mandoc < /dev/null > /dev/null 2>&1
364     if test $? = 0; then
365         mc_cv_mandoc=-mandoc
366     else
367         mc_cv_mandoc=-man
368     fi
369     ])
370     MANDOC=$mc_cv_mandoc
371     AC_MSG_RESULT([$MANDOC])
373     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
374     AC_CACHE_VAL(mc_cv_man_nocolor, [
375     nroff -c < /dev/null > /dev/null 2>&1
376     if test $? = 0; then
377         mc_cv_man_nocolor=-c
378     else
379         mc_cv_man_nocolor=
380     fi
381     ])
382     MAN_FLAGS=$mc_cv_man_nocolor
383     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
385     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
386     AC_CACHE_VAL(mc_cv_nroff_tascii, [
387     mc_cv_nroff_tascii=
388     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
389     if test $? = 0; then
390         mc_cv_nroff_tascii=-Tlatin1
391     else
392         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
393         if test $? = 0; then
394             mc_cv_nroff_tascii=-Tascii
395         fi
396     fi
397     ])
398     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
399     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
402 AC_SUBST(MANDOC)
403 AC_SUBST(MAN_FLAGS)
407 dnl Check for -L option to file
409 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
410 if $HAVE_FILECMD; then
411     AC_MSG_CHECKING([for -L option to file command])
412     AC_CACHE_VAL(mc_cv_filel, [
413     file -L . > /dev/null 2>&1
414     if test $? = 0; then
415         mc_cv_filel=yes
416     else
417         mc_cv_filel=no
418     fi
419     ])
420     if test x$mc_cv_filel = xyes; then
421         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
422     fi
423     filel=$mc_cv_filel
424     AC_MSG_RESULT([$filel])
428 AC_MSG_CHECKING([for subshell support])
429 AC_ARG_WITH(subshell,
430         [  --with-subshell          Compile in concurrent subshell [[yes]]
431   --with-subshell=optional Don't run concurrent shell by default [[no]]],
432         [result=no
433         if test x$withval = xoptional
434         then
435                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
436                           [Define to make subshell support optional])
437                 result="optional"
438         fi
439         if test x$withval = xyes
440         then 
441                 result="yes"
442         fi],
443         [dnl Default: enable the subshell support
444         result="yes"
446 if test "x$result" != xno; then
447         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
448                   [Define to enable subshell support])
450 AC_MSG_RESULT([$result])
451 subshell="$result"
455 dnl Select the screen library.  mcslang is the included S-Lang library.
457 AC_ARG_WITH(screen,
458         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
459                            ncurses [[slang if found, else mcslang]]])
461 case x$with_screen in
462 xslang)
463         MC_WITH_SLANG(strict)
464         ;;
465 xmcslang)
466         MC_WITH_MCSLANG
467         ;;
468 xncurses)
469         MC_WITH_NCURSES
470         ;;
472         MC_WITH_SLANG
473         ;;
475         AC_MSG_ERROR([Value of the screen library is incorrect])
476         ;;
477 esac
481 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
482 dnl Report an error if this option is not applicable.
484 AC_ARG_WITH(termcap,
485         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
486         [if test x$with_screen != xmcslang; then
487                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
488         fi
493 dnl Internal editor support.
495 AC_ARG_WITH(edit,
496         [  --with-edit              Enable internal editor [[yes]]])
498 if test x$with_edit != xno; then
499         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
500         use_edit=yes
501         edit_msg="yes"
502         AC_MSG_NOTICE([using internal editor])
503 else
504         edit_msg="no"
508 dnl Check if the OS is supported by the console saver.
509 cons_saver=""
510 case $host_os in
511 linux*)
512     cons_saver=yes
513 esac
516 dnl Support for background operations
517 AC_ARG_ENABLE([background],
518               [  --enable-background      Support for background file operations [[yes]]])
519 if test "x$enable_background" != xno; then
520     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
525 dnl User visible support for charset conversion.
527 AC_ARG_ENABLE([charset],
528               [  --enable-charset         Support for charset selection and conversion [[no]]])
529 have_charset=
530 charset_msg="no"
531 if test "x$enable_charset" = xyes; then
532   if test "x$am_cv_func_iconv" != xyes; then
533     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])    
534   else
535     AC_DEFINE(HAVE_CHARSET, 1,
536               [Define to enable charset selection and conversion])
537     have_charset=yes
538     charset_msg="yes"
539   fi
542 if test "$GLIBC21" != yes; then
543     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
546 dnl If default CFLAGS is used with gcc, add -Wall
547 if test -z "$ac_env_CFLAGS_set"; then
548     if test -n "$GCC"; then
549         CFLAGS="$CFLAGS -Wall"
550     fi
553 AC_SUBST(CFLAGS)
554 AC_SUBST(CPPFLAGS)
555 AC_SUBST(LDFLAGS)
556 AC_SUBST(LIBS)
558 dnl Libraries used only when building the mc binary
559 AC_SUBST(MCLIBS)
561 dnl Version for the RedHat package, without dashes
562 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
563 AC_SUBST(RPM_VERSION)
565 if test -n "$use_smbfs"; then
566   AC_CONFIG_SUBDIRS([vfs/samba])
569 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
570 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
571 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
572 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
573 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
574 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
575 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
576 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
577 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
579 AC_CONFIG_FILES([
580 Makefile 
581 mc.spec
582 mc.qpg
583 pkginfo
584 prototype
585 doc/Makefile 
586 vfs/Makefile
587 vfs/extfs/Makefile
588 lib/Makefile
589 src/Makefile
590 slang/Makefile 
591 edit/Makefile 
592 syntax/Makefile
593 m4/Makefile
594 lib/mc.ext
595 vfs/extfs/a
596 vfs/extfs/apt
597 vfs/extfs/audio
598 vfs/extfs/deb
599 vfs/extfs/deba
600 vfs/extfs/debd
601 vfs/extfs/dpkg
602 vfs/extfs/iso9660
603 vfs/extfs/hp48
604 vfs/extfs/lslR
605 vfs/extfs/mailfs
606 vfs/extfs/patchfs
607 vfs/extfs/rpms
608 vfs/extfs/ualz
609 vfs/extfs/uar
610 vfs/extfs/uarj
611 vfs/extfs/uha
612 vfs/extfs/ulha 
613 vfs/extfs/urar
614 vfs/extfs/uzip
615 vfs/extfs/uzoo
617 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
618 doc/es/mc.1 doc/es/Makefile
619 doc/hu/mc.1 doc/hu/Makefile
620 doc/it/mc.1 doc/it/Makefile
621 doc/pl/mc.1 doc/pl/Makefile
622 doc/ru/mc.1 doc/ru/Makefile
623 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
625 intl/Makefile
626 po/Makefile.in
629 AC_OUTPUT
631 echo "
632 Configuration:
634   Source code location:       ${srcdir}
635   Compiler:                   ${CC}
636   Compiler flags:             ${CFLAGS}
637   File system:                ${vfs_type}
638                               ${vfs_flags}
639   Screen library:             ${screen_msg}
640   Mouse support:              ${mouse_lib}
641   X11 events support:         ${textmode_x11_support}
642   With subshell support:      ${subshell}
643   Internal editor:            ${edit_msg}
644   Support for charset:        ${charset_msg}