2008-04-09 Marco Ciampa <ciampix@libero.it>
[midnight-commander.git] / configure.ac
blobcfaaa7d85e2445ce8430c0381a4547cc90a31531
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_GNU_SOURCE
18 AC_AIX
19 AC_MINIX
20 AC_ISC_POSIX
22 AC_PROG_CC_STDC
24 dnl
25 dnl First try glib 2.x.  If it's not found, use glib 1.2.x.
26 dnl Keep this check close to the beginning, so that the users
27 dnl without any glib won't have their time wasted by other checks.
28 dnl
30 AC_ARG_WITH(glib12, 
31         [  --with-glib12            Force using glib 1.2.x [[no]]])
33 AC_ARG_WITH([glib_static],
34             [  --with-glib-static       Link glib statically [[no]]])
36 glib_found=no
37 if test "x$with_glib12" != "xyes"; then
38         PKG_CHECK_MODULES(GLIB, [glib-2.0], [glib_found=yes], [:])
41 dnl Fall back to glib-1.2, don't use pkgconfig to find it.
42 if test "x$glib_found" != "xyes" ; then
43         dnl This temporary variable is a workaround for a bug in Autoconf-2.53
44         glib_path=$PATH:/usr/local/bin
46         dnl Klugde for FreeBSD, where glib-config is renamed to glib12-config.
47         AC_PATH_PROGS([GLIB_CONFIG], [glib-config glib12-config],,[$glib_path])
49         AC_ARG_VAR([GLIB_CONFIG], [Path to glib-config (version 1.2.x only)])
50         AM_PATH_GLIB(1.2.6, , [AC_MSG_ERROR([Test for glib failed.
51 GNU Midnight Commander requires glib 1.2.6 or above.])])
52         dnl Save GLIB_CFLAGS and GLIB_LIBS, since the following call to
53         dnl AM_PATH_GLIB will overwrite them.
54         save_GLIB_CFLAGS="$GLIB_CFLAGS"
55         save_GLIB_LIBS="$GLIB_LIBS"
56         dnl Check for gmodule.  Store the flags necessary to compile and
57         dnl link programs using gmodule functionality in GMODULE_CFLAGS
58         dnl and GMODULE_LIBS.
59         AM_PATH_GLIB(1.2.6, [gmodule_found=yes], , [gmodule])
60         GMODULE_CFLAGS="$GLIB_CFLAGS"
61         GMODULE_LIBS="$GLIB_LIBS"
62         GLIB_CFLAGS="$save_GLIB_CFLAGS"
63         GLIB_LIBS="$save_GLIB_LIBS"
64         GLIB_LIBDIR="`$GLIB_CONFIG --exec-prefix`/lib"
66         dnl Used in src/glibcompat.c
67         AC_CHECK_FUNCS([strlcpy])
68 else
69         PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
70         GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
73 if test "x$gmodule_found" = "xyes" ; then
74         dnl Check if the gmodule functionality supported on this system.
75         AC_G_MODULE_SUPPORTED
78 AC_HEADER_MAJOR
79 AC_C_CONST
80 AC_SYS_LARGEFILE
82 AC_PROG_LN_S
83 AC_CHECK_TOOL(AR, ar, ar)
85 dnl Only list browsers here that can be run in background (i.e. with `&')
86 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
88 dnl
89 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
90 dnl We use only part of the functionality of mmap, so on AIX,
91 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
92 dnl
93 AC_ARG_WITH(mmap,
94         [  --with-mmap              Use the mmap call [[yes if found]]])
95 if test x$with_mmap != xno; then
96     if test x$with_mmap = x; then
97         AC_FUNC_MMAP
98     else
99         AC_DEFINE(HAVE_MMAP, 1)
100     fi
104 dnl Internationalization
106 AM_GNU_GETTEXT(no-libtool, need-ngettext)
107 AM_GNU_GETTEXT_VERSION(0.14.3)
109 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
110     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
113 dnl Determine which help translations we want to install.
114 ALL_DOC_LINGUAS="es hu it pl ru sr"
116 DOC_LINGUAS=
117 if test "x$USE_NLS" = xyes; then
118     if test -z "$LINGUAS"; then
119         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
120     else
121         langs="$LINGUAS"
122     fi
123 else
124     langs=
127 for h_lang in $ALL_DOC_LINGUAS; do
128     for lang in $langs; do
129         if test "$lang" = "$h_lang"; then
130             DOC_LINGUAS="$DOC_LINGUAS $lang"
131             break
132         fi
133     done
134 done
135 AC_SUBST(DOC_LINGUAS)
138 dnl OS specific flags.
140 case $host_os in
141 aux*)
142     # A/UX
143     LIBS="$LIBS -lposix"
144     AC_DEFINE(_POSIX_SOURCE)
145     ;;
146 esac
148 dnl Extended Character Sets
150 AC_ARG_ENABLE([extcharset],
151         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
152 if test x"$enable_extcharset" = x"yes"; then
153   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
156 AC_PROG_INSTALL
157 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
158         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
159         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
160         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
161         sys/mkdev.h wchar.h wctype.h])
163 AC_HEADER_TIME
164 AC_HEADER_SYS_WAIT
165 AC_HEADER_DIRENT
166 AC_HEADER_STDC
168 dnl Missing structure components
169 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
170 AC_STRUCT_ST_BLOCKS
173 dnl Check availability of some functions 
174 dnl 
176 AC_CHECK_FUNCS([\
177         atoll \
178         cfgetospeed \
179         getegid geteuid getgid getsid getuid \
180         initgroups isascii \
181         memcpy memmove memset \
182         putenv \
183         setreuid setuid statfs strerror strftime sysconf \
184         tcgetattr tcsetattr truncate \
187 dnl S-Lang needs all four functions to be defined to use POSIX signal API
188 AC_CHECK_FUNCS([sigaction sigemptyset sigprocmask sigaddset], , [slang_signals=no])
189 if test x$slang_signals != xno; then
190     AC_DEFINE(SLANG_POSIX_SIGNALS, 1, [Define to use POSIX signal API in S-Lang])
194 dnl getpt is a GNU Extension (glibc 2.1.x)
196 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
197 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
199 dnl replacing lstat with statlstat on sco makes it more portable between
200 dnl sco clones
201 AC_CHECK_FUNCS(statlstat)
204 dnl If running under AIX, AC_AIX does not tell us that
206 AC_MSG_CHECKING([for AIX defines])
207 AC_EGREP_CPP(yes,
208 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
210 #endif
211 ], [
212 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
213 AC_MSG_RESULT(yes)
214 ], [AC_MSG_RESULT(no)])
217 dnl This is from GNU fileutils, check aclocal.m4 for more information
219 AC_GET_FS_INFO
222 dnl Missing typedefs and replacements
223 dnl 
225 AC_CHECK_SIZEOF(long)
226 AC_CHECK_SIZEOF(long long)
227 AC_TYPE_MODE_T
228 AC_TYPE_OFF_T
229 AC_CHECK_SIZEOF(off_t)
230 AC_TYPE_PID_T
231 AC_TYPE_UID_T
232 AC_CHECK_TYPE(nlink_t, unsigned int)
233 AC_CHECK_TYPES([socklen_t],,,
235 #include <sys/types.h>
236 #include <sys/socket.h>
239 dnl This is needed for regex.c only
240 AC_CHECK_TYPE(uintptr_t,
241               [AC_DEFINE(HAVE_UINTPTR_T, 1,
242                          [Define if you have the `uintptr_t' type.])
245 AC_FUNC_ALLOCA
246 AC_FUNC_STRCOLL
249 dnl X11 support.
250 dnl Used to read keyboard modifiers when running under X11.
253 AC_PATH_XTRA
254 if test "x$no_x" = xyes; then
255     textmode_x11_support="no"
256 else
257     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
258     if test "x$mc_cv_g_module_supported" = "xyes" ; then
259         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
260         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
261         dnl functionality is supported on the system.  This way, mc will be
262         dnl linked against the gmodule library only when it's really required.
263         GLIB_CFLAGS="$GMODULE_CFLAGS"
264         GLIB_LIBS="$GMODULE_LIBS"
265     else
266         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
267     fi
268     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
269               [Define to enable getting events from X Window System])
270     textmode_x11_support="yes"
274 dnl Try to find static libraries for glib and gmodule.
276 if test x$with_glib_static = xyes; then
277     new_GLIB_LIBS=
278     for i in $GLIB_LIBS; do
279         case x$i in
280         x-lglib*)
281             lib=glib ;;
282         x-lgmodule*)
283             lib=gmodule ;;
284         *)
285             lib=
286             add="$i" ;;
287         esac
289         if test -n "$lib"; then
290             lib1=`echo $i | sed 's/^-l//'`
291             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
292                 add="$GLIB_LIBDIR/lib${lib1}.a"
293             else
294                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
295                     add="$GLIB_LIBDIR/lib${lib}.a"
296                 else
297                     AC_MSG_ERROR([Cannot find static $lib])
298                 fi
299             fi
300         fi
301         new_GLIB_LIBS="$new_GLIB_LIBS $add"
302     done
303     GLIB_LIBS="$new_GLIB_LIBS"
308 dnl Network related functions
311 AC_SEARCH_LIBS([socket], [socket])
312 AC_SEARCH_LIBS([gethostbyname], [nsl])
315 dnl Sequent wants getprocessstats
317 AC_CHECK_LIB(seq, get_process_stats, [
318         LIBS="$LIBS -lseq"
319         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
320                   [Define if you have function `get_process_stats' and
321 have to use that instead of gettimeofday])])
323 MC_VFS_CHECKS
325 vfs_type="normal"
326 if test x$use_vfs = xyes; then
327         AC_MSG_NOTICE([enabling VFS code])
328         vfs_type="Midnight Commander Virtual File System"
332 dnl Check for gpm mouse support (Linux only)
334 mouse_lib="xterm only"
335 AC_ARG_WITH(gpm-mouse, 
336         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
337                            [[yes if found]]])
339 case $host_os in
340 linux*)
341     if test x$with_gpm_mouse != xno; then
342         AC_CHECK_LIB(gpm, Gpm_Repeat,
343             [AC_DEFINE(HAVE_LIBGPM, 1,
344                        [Define to enable gpm mouse support on Linux])
345             mouse_lib="gpm and xterm"
346             MCLIBS="$MCLIBS -lgpm"],
347             [AC_MSG_WARN([libgpm is missing or older than 0.18])
348         ])
349     fi
350     ;;
351 esac
354 dnl Check nroff and the options it supports
356 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
358 dnl Default values
359 MANDOC=-man
360 MAN_FLAGS=
362 if $HAVE_nroff; then
363     AC_MSG_CHECKING([for manual formatting macros])
364     AC_CACHE_VAL(mc_cv_mandoc, [
365     nroff -mandoc < /dev/null > /dev/null 2>&1
366     if test $? = 0; then
367         mc_cv_mandoc=-mandoc
368     else
369         mc_cv_mandoc=-man
370     fi
371     ])
372     MANDOC=$mc_cv_mandoc
373     AC_MSG_RESULT([$MANDOC])
375     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
376     AC_CACHE_VAL(mc_cv_man_nocolor, [
377     nroff -c < /dev/null > /dev/null 2>&1
378     if test $? = 0; then
379         mc_cv_man_nocolor=-c
380     else
381         mc_cv_man_nocolor=
382     fi
383     ])
384     MAN_FLAGS=$mc_cv_man_nocolor
385     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
387     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
388     AC_CACHE_VAL(mc_cv_nroff_tascii, [
389     mc_cv_nroff_tascii=
390     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
391     if test $? = 0; then
392         mc_cv_nroff_tascii=-Tlatin1
393     else
394         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
395         if test $? = 0; then
396             mc_cv_nroff_tascii=-Tascii
397         fi
398     fi
399     ])
400     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
401     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
404 AC_SUBST(MANDOC)
405 AC_SUBST(MAN_FLAGS)
409 dnl Check for -L option to file
411 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
412 if $HAVE_FILECMD; then
413     AC_MSG_CHECKING([for -L option to file command])
414     AC_CACHE_VAL(mc_cv_filel, [
415     file -L . > /dev/null 2>&1
416     if test $? = 0; then
417         mc_cv_filel=yes
418     else
419         mc_cv_filel=no
420     fi
421     ])
422     if test x$mc_cv_filel = xyes; then
423         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
424     fi
425     filel=$mc_cv_filel
426     AC_MSG_RESULT([$filel])
430 AC_MSG_CHECKING([for subshell support])
431 AC_ARG_WITH(subshell,
432         [  --with-subshell          Compile in concurrent subshell [[yes]]
433   --with-subshell=optional Don't run concurrent shell by default [[no]]],
434         [result=no
435         if test x$withval = xoptional
436         then
437                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
438                           [Define to make subshell support optional])
439                 result="optional"
440         fi
441         if test x$withval = xyes
442         then 
443                 result="yes"
444         fi],
445         [dnl Default: enable the subshell support
446         result="yes"
448 if test "x$result" != xno; then
449         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
450                   [Define to enable subshell support])
452 AC_MSG_RESULT([$result])
453 subshell="$result"
457 dnl Select the screen library.  mcslang is the included S-Lang library.
459 AC_ARG_WITH(screen,
460         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
461                            ncurses [[slang if found, else mcslang]]])
463 case x$with_screen in
464 xslang)
465         MC_WITH_SLANG(strict)
466         ;;
467 xmcslang)
468         MC_WITH_MCSLANG
469         ;;
470 xncurses)
471         MC_WITH_NCURSES
472         ;;
474         MC_WITH_SLANG
475         ;;
477         AC_MSG_ERROR([Value of the screen library is incorrect])
478         ;;
479 esac
483 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
484 dnl Report an error if this option is not applicable.
486 AC_ARG_WITH(termcap,
487         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
488         [if test x$with_screen != xmcslang; then
489                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
490         fi
495 dnl Internal editor support.
497 AC_ARG_WITH(edit,
498         [  --with-edit              Enable internal editor [[yes]]])
500 if test x$with_edit != xno; then
501         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
502         use_edit=yes
503         edit_msg="yes"
504         AC_MSG_NOTICE([using internal editor])
505 else
506         edit_msg="no"
510 dnl Check if the OS is supported by the console saver.
511 cons_saver=""
512 case $host_os in
513 linux*)
514     cons_saver=yes
515 esac
518 dnl Support for background operations
519 AC_ARG_ENABLE([background],
520               [  --enable-background      Support for background file operations [[yes]]])
521 if test "x$enable_background" != xno; then
522     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
527 dnl User visible support for charset conversion.
529 AC_ARG_ENABLE([charset],
530               [  --enable-charset         Support for charset selection and conversion [[no]]])
531 have_charset=
532 charset_msg="no"
533 if test "x$enable_charset" = xyes; then
534   if test "x$am_cv_func_iconv" != xyes; then
535     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])    
536   else
537     AC_DEFINE(HAVE_CHARSET, 1,
538               [Define to enable charset selection and conversion])
539     have_charset=yes
540     charset_msg="yes"
541   fi
544 if test "$GLIBC21" != yes; then
545     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
548 dnl If default CFLAGS is used with gcc, add -Wall
549 if test -z "$ac_env_CFLAGS_set"; then
550     if test -n "$GCC"; then
551         CFLAGS="$CFLAGS -Wall"
552     fi
555 AC_SUBST(CFLAGS)
556 AC_SUBST(CPPFLAGS)
557 AC_SUBST(LDFLAGS)
558 AC_SUBST(LIBS)
560 dnl Libraries used only when building the mc binary
561 AC_SUBST(MCLIBS)
563 dnl Version for the RedHat package, without dashes
564 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
565 AC_SUBST(RPM_VERSION)
567 if test -n "$use_smbfs"; then
568   AC_CONFIG_SUBDIRS([vfs/samba])
571 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
572 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
573 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
574 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
575 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
576 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
577 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
578 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
579 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
581 AC_CONFIG_FILES([
582 Makefile 
583 mc.spec
584 mc.qpg
585 pkginfo
586 prototype
587 doc/Makefile 
588 vfs/Makefile
589 vfs/extfs/Makefile
590 lib/Makefile
591 src/Makefile
592 slang/Makefile 
593 edit/Makefile 
594 syntax/Makefile
595 m4/Makefile
596 lib/mc.ext
597 vfs/extfs/a
598 vfs/extfs/apt
599 vfs/extfs/audio
600 vfs/extfs/deb
601 vfs/extfs/deba
602 vfs/extfs/debd
603 vfs/extfs/dpkg
604 vfs/extfs/iso9660
605 vfs/extfs/hp48
606 vfs/extfs/lslR
607 vfs/extfs/mailfs
608 vfs/extfs/patchfs
609 vfs/extfs/rpms
610 vfs/extfs/ualz
611 vfs/extfs/uar
612 vfs/extfs/uarj
613 vfs/extfs/uha
614 vfs/extfs/ulha 
615 vfs/extfs/urar
616 vfs/extfs/uzip
617 vfs/extfs/uzoo
619 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
620 doc/es/mc.1 doc/es/Makefile
621 doc/hu/mc.1 doc/hu/Makefile
622 doc/it/mc.1 doc/it/Makefile
623 doc/pl/mc.1 doc/pl/Makefile
624 doc/ru/mc.1 doc/ru/Makefile
625 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
627 intl/Makefile
628 po/Makefile.in
631 AC_OUTPUT
633 echo "
634 Configuration:
636   Source code location:       ${srcdir}
637   Compiler:                   ${CC}
638   Compiler flags:             ${CFLAGS}
639   File system:                ${vfs_type}
640                               ${vfs_flags}
641   Screen library:             ${screen_msg}
642   Mouse support:              ${mouse_lib}
643   X11 events support:         ${textmode_x11_support}
644   With subshell support:      ${subshell}
645   Internal editor:            ${edit_msg}
646   Support for charset:        ${charset_msg}