Ticket #44: More functionally u7z.
[midnight-commander.git] / configure.ac
blob659a6645d7386f9dcdefeba7b8b37f84d3e525c9
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_MACRO_DIR([m4])
9 AC_CONFIG_SRCDIR(src/main.c)
10 AC_CONFIG_AUX_DIR(config)
11 MC_VERSION
12 AM_INIT_AUTOMAKE(mc, ${VERSION} )
14 AM_CONFIG_HEADER(config.h)
15 AM_MAINTAINER_MODE
17 AC_CANONICAL_HOST
19 AC_USE_SYSTEM_EXTENSIONS
21 AC_PROG_LIBTOOL
23 AC_ISC_POSIX
25 AC_PROG_CC_STDC
27 dnl Doxygen
29 DX_HTML_FEATURE(ON)
30 DX_CHM_FEATURE(OFF)
31 DX_CHI_FEATURE(OFF)
32 DX_MAN_FEATURE(OFF)
33 DX_RTF_FEATURE(OFF)
34 DX_XML_FEATURE(OFF)
35 DX_PDF_FEATURE(OFF)
36 DX_PS_FEATURE(OFF)
37 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
39 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
41 dnl
42 dnl First try glib 2.x.
43 dnl Keep this check close to the beginning, so that the users
44 dnl without any glib won't have their time wasted by other checks.
45 dnl
47 AC_ARG_WITH([glib_static],
48             [  --with-glib-static       Link glib statically [[no]]])
50 glib_found=no
52 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.6], [glib_found=yes], [:])
53 if test x"$glib_found" = xno; then
54     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.6)])
57 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
58 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
60 if test "x$gmodule_found" = "xyes" ; then
61         dnl Check if the gmodule functionality supported on this system.
62         AC_G_MODULE_SUPPORTED
65 AC_HEADER_MAJOR
66 AC_C_CONST
67 AC_SYS_LARGEFILE
69 AC_PROG_LN_S
70 AC_CHECK_TOOL(AR, ar, ar)
72 dnl Only list browsers here that can be run in background (i.e. with `&')
73 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
75 dnl
76 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
77 dnl We use only part of the functionality of mmap, so on AIX,
78 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
79 dnl
80 AC_ARG_WITH(mmap,
81         [  --with-mmap              Use the mmap call [[yes if found]]])
82 if test x$with_mmap != xno; then
83     if test x$with_mmap = x; then
84         AC_FUNC_MMAP
85     else
86         AC_DEFINE(HAVE_MMAP, 1)
87     fi
90 dnl
91 dnl Internationalization
92 dnl
93 AM_GNU_GETTEXT(no-libtool, need-ngettext)
94 AM_GNU_GETTEXT_VERSION(0.14.3)
96 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
97     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
100 dnl Determine which help translations we want to install.
101 ALL_DOC_LINGUAS="es hu it pl ru sr"
103 DOC_LINGUAS=
104 if test "x$USE_NLS" = xyes; then
105     if test -z "$LINGUAS"; then
106         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
107     else
108         langs="$LINGUAS"
109     fi
110 else
111     langs=
114 for h_lang in $ALL_DOC_LINGUAS; do
115     for lang in $langs; do
116         if test "$lang" = "$h_lang"; then
117             DOC_LINGUAS="$DOC_LINGUAS $lang"
118             break
119         fi
120     done
121 done
122 AC_SUBST(DOC_LINGUAS)
125 dnl OS specific flags.
127 case $host_os in
128 aux*)
129     # A/UX
130     LIBS="$LIBS -lposix"
131     AC_DEFINE(_POSIX_SOURCE)
132     ;;
133 esac
135 dnl Extended Character Sets
137 AC_ARG_ENABLE([extcharset],
138         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
139 if test x"$enable_extcharset" = x"yes"; then
140   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
143 AC_PROG_INSTALL
144 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
145         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/vfs.h sys/time.h \
146         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
147         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
148         sys/mkdev.h wchar.h wctype.h])
150 AC_HEADER_TIME
151 AC_HEADER_SYS_WAIT
152 AC_HEADER_DIRENT
153 AC_HEADER_STDC
155 dnl Missing structure components
156 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
157 AC_STRUCT_ST_BLOCKS
160 dnl Check availability of some functions
163 AC_CHECK_FUNCS([\
164         atoll \
165         cfgetospeed \
166         getegid geteuid getgid getsid getuid \
167         initgroups isascii \
168         memcpy memset \
169         putenv \
170         setreuid setuid statfs strerror strftime sysconf \
171         tcgetattr tcsetattr truncate \
175 dnl getpt is a GNU Extension (glibc 2.1.x)
177 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
178 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
180 dnl replacing lstat with statlstat on sco makes it more portable between
181 dnl sco clones
182 AC_CHECK_FUNCS(statlstat)
185 dnl If running under AIX, AC_AIX does not tell us that
187 AC_MSG_CHECKING([for AIX defines])
188 AC_EGREP_CPP(yes,
189 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
191 #endif
192 ], [
193 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
194 AC_MSG_RESULT(yes)
195 ], [AC_MSG_RESULT(no)])
198 dnl This is from GNU fileutils, check aclocal.m4 for more information
200 AC_GET_FS_INFO
203 dnl Missing typedefs and replacements
206 AC_CHECK_SIZEOF(long)
207 AC_CHECK_SIZEOF(long long)
208 AC_TYPE_MODE_T
209 AC_TYPE_OFF_T
210 AC_CHECK_SIZEOF(off_t)
211 AC_TYPE_PID_T
212 AC_TYPE_UID_T
213 AC_CHECK_TYPE(nlink_t, unsigned int)
214 AC_CHECK_TYPES([socklen_t],,,
216 #include <sys/types.h>
217 #include <sys/socket.h>
220 dnl This is needed for regex.c only
221 AC_CHECK_TYPE(uintptr_t,
222               [AC_DEFINE(HAVE_UINTPTR_T, 1,
223                          [Define if you have the `uintptr_t' type.])
226 AC_FUNC_ALLOCA
227 AC_FUNC_STRCOLL
230 dnl X11 support.
231 dnl Used to read keyboard modifiers when running under X11.
234 AC_PATH_XTRA
235 if test "x$no_x" = xyes; then
236     textmode_x11_support="no"
237 else
238     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
239     if test "x$mc_cv_g_module_supported" = "xyes" ; then
240         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
241         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
242         dnl functionality is supported on the system.  This way, mc will be
243         dnl linked against the gmodule library only when it's really required.
244         GLIB_CFLAGS="$GMODULE_CFLAGS"
245         GLIB_LIBS="$GMODULE_LIBS"
246     else
247         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
248     fi
249     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
250               [Define to enable getting events from X Window System])
251     textmode_x11_support="yes"
255 dnl Try to find static libraries for glib and gmodule.
257 if test x$with_glib_static = xyes; then
258     new_GLIB_LIBS=
259     for i in $GLIB_LIBS; do
260         case x$i in
261         x-lglib*)
262             lib=glib ;;
263         x-lgmodule*)
264             lib=gmodule ;;
265         *)
266             lib=
267             add="$i" ;;
268         esac
270         if test -n "$lib"; then
271             lib1=`echo $i | sed 's/^-l//'`
272             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
273                 add="$GLIB_LIBDIR/lib${lib1}.a"
274             else
275                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
276                     add="$GLIB_LIBDIR/lib${lib}.a"
277                 else
278                     AC_MSG_ERROR([Cannot find static $lib])
279                 fi
280             fi
281         fi
282         new_GLIB_LIBS="$new_GLIB_LIBS $add"
283     done
284     GLIB_LIBS="$new_GLIB_LIBS"
289 dnl Network related functions
292 AC_SEARCH_LIBS([socket], [socket])
293 AC_SEARCH_LIBS([gethostbyname], [nsl])
296 dnl Sequent wants getprocessstats
298 AC_CHECK_LIB(seq, get_process_stats, [
299         LIBS="$LIBS -lseq"
300         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
301                   [Define if you have function `get_process_stats' and
302 have to use that instead of gettimeofday])])
304 AC_MC_VFS_CHECKS
306 vfs_type="normal"
307 if test x$use_vfs = xyes; then
308         AC_MSG_NOTICE([enabling VFS code])
309         vfs_type="Midnight Commander Virtual File System"
313 dnl Check for gpm mouse support (Linux only)
315 mouse_lib="xterm only"
316 AC_ARG_WITH(gpm-mouse,
317         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
318                            [[yes if found]]])
320 case $host_os in
321 linux*)
322     if test x$with_gpm_mouse != xno; then
323         AC_CHECK_LIB(gpm, Gpm_Repeat,
324             [AC_DEFINE(HAVE_LIBGPM, 1,
325                        [Define to enable gpm mouse support on Linux])
326             mouse_lib="gpm and xterm"
327             MCLIBS="$MCLIBS -lgpm"],
328             [AC_MSG_WARN([libgpm is missing or older than 0.18])
329         ])
330     fi
331     ;;
332 esac
334 MC_CHECK_SEARCH_TYPE
337 dnl Check nroff and the options it supports
339 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
341 dnl Default values
342 MANDOC=-man
343 MAN_FLAGS=
345 if $HAVE_nroff; then
346     AC_MSG_CHECKING([for manual formatting macros])
347     AC_CACHE_VAL(mc_cv_mandoc, [
348     nroff -mandoc < /dev/null > /dev/null 2>&1
349     if test $? = 0; then
350         mc_cv_mandoc=-mandoc
351     else
352         mc_cv_mandoc=-man
353     fi
354     ])
355     MANDOC=$mc_cv_mandoc
356     AC_MSG_RESULT([$MANDOC])
358     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
359     AC_CACHE_VAL(mc_cv_man_nocolor, [
360     nroff -c < /dev/null > /dev/null 2>&1
361     if test $? = 0; then
362         mc_cv_man_nocolor=-c
363     else
364         mc_cv_man_nocolor=
365     fi
366     ])
367     MAN_FLAGS=$mc_cv_man_nocolor
368     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
370     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
371     AC_CACHE_VAL(mc_cv_nroff_tascii, [
372     mc_cv_nroff_tascii=
373     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
374     if test $? = 0; then
375         mc_cv_nroff_tascii=-Tlatin1
376     else
377         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
378         if test $? = 0; then
379             mc_cv_nroff_tascii=-Tascii
380         fi
381     fi
382     ])
383     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
384     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
387 AC_SUBST(MANDOC)
388 AC_SUBST(MAN_FLAGS)
392 dnl Check for -L option to file
394 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
395 if $HAVE_FILECMD; then
396     AC_MSG_CHECKING([for -L option to file command])
397     AC_CACHE_VAL(mc_cv_filel, [
398     file -L . > /dev/null 2>&1
399     if test $? = 0; then
400         mc_cv_filel=yes
401     else
402         mc_cv_filel=no
403     fi
404     ])
405     if test x$mc_cv_filel = xyes; then
406         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
407     fi
408     filel=$mc_cv_filel
409     AC_MSG_RESULT([$filel])
413 AC_MSG_CHECKING([for subshell support])
414 AC_ARG_WITH(subshell,
415         [  --with-subshell          Compile in concurrent subshell [[yes]]
416   --with-subshell=optional Don't run concurrent shell by default [[no]]],
417         [result=no
418         if test x$withval = xoptional
419         then
420                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
421                           [Define to make subshell support optional])
422                 result="optional"
423         fi
424         if test x$withval = xyes
425         then
426                 result="yes"
427         fi],
428         [dnl Default: enable the subshell support
429         result="yes"
431 if test "x$result" != xno; then
432         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
433                   [Define to enable subshell support])
435 AC_MSG_RESULT([$result])
436 subshell="$result"
440 dnl Select the screen library.
442 AC_ARG_WITH(screen,
443         [  --with-screen=LIB        Compile with screen library: slang or
444                            ncurses [[slang if found]]])
446 case x$with_screen in
447 xslang)
448         MC_WITH_SLANG(strict)
449         ;;
450 xncurses)
451         MC_WITH_NCURSES
452         ;;
453 xncursesw)
454         MC_WITH_NCURSESW
455         ;;
457         MC_WITH_SLANG
458         ;;
460         AC_MSG_ERROR([Value of the screen library is incorrect])
461         ;;
462 esac
466 dnl Internal editor support.
468 AC_ARG_WITH(edit,
469         [  --with-edit              Enable internal editor [[yes]]])
471 if test x$with_edit != xno; then
472         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
473         use_edit=yes
474         edit_msg="yes"
475         AC_MSG_NOTICE([using internal editor])
476 else
477         edit_msg="no"
481 dnl Check if the OS is supported by the console saver.
482 cons_saver=""
483 case $host_os in
484 linux*)
485     cons_saver=yes
486 esac
489 dnl Support for background operations
490 AC_ARG_ENABLE([background],
491               [  --enable-background     Support for background file operations [[yes]]])
492 if test "x$enable_background" != xno; then
493     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
498 dnl User visible support for charset conversion.
500 AC_ARG_ENABLE([charset],
501               [  --enable-charset        Support for charset selection and conversion [[yes]]])
502 have_charset=
503 charset_msg="no"
504 if test "x$enable_charset" != "xno"; then
505     AC_DEFINE(HAVE_CHARSET, 1,
506               [Define to enable charset selection and conversion])
507     have_charset=yes
508     charset_msg="yes"
511 if test "$GLIBC21" != yes; then
512     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
515 dnl If default CFLAGS is used with gcc, add -Wall
516 if test -z "$ac_env_CFLAGS_set"; then
517     if test -n "$GCC"; then
518         CFLAGS="$CFLAGS -Wall"
519     fi
522 AC_SUBST(CFLAGS)
523 AC_SUBST(CPPFLAGS)
524 AC_SUBST(LDFLAGS)
525 AC_SUBST(LIBS)
527 dnl Libraries used only when building the mc binary
528 AC_SUBST(MCLIBS)
530 dnl Version for the RedHat package, without dashes
531 RPM_VERSION=`echo $VERSION | sed 's/-/./g'`
532 AC_SUBST(RPM_VERSION)
534 if test -n "$use_smbfs"; then
535   AC_CONFIG_SUBDIRS([vfs/samba])
538 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
539 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
540 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
541 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
542 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$enable_vfs_undelfs"])
543 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
544 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
545 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
546 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
548 AC_CONFIG_FILES([
549 Makefile
551 contrib/Makefile
552 contrib/dist/Makefile
553 contrib/dist/debian/Makefile
554 contrib/dist/gentoo/Makefile
555 contrib/dist/redhat/Makefile
556 contrib/dist/redhat/mc.spec
557 contrib/dist/mc.qpg
558 contrib/dist/pkginfo
559 contrib/dist/prototype
561 misc/Makefile
562 misc/skins/Makefile
563 misc/mc.ext
565 src/Makefile
566 src/filehighlight/Makefile
567 src/mcconfig/Makefile
568 src/search/Makefile
569 src/skin/Makefile
570 src/tty/Makefile
571 src/viewer/Makefile
573 edit/Makefile
574 syntax/Makefile
576 vfs/Makefile
577 vfs/extfs/Makefile
578 vfs/extfs/a
579 vfs/extfs/apt
580 vfs/extfs/audio
581 vfs/extfs/deb
582 vfs/extfs/deba
583 vfs/extfs/debd
584 vfs/extfs/dpkg
585 vfs/extfs/iso9660
586 vfs/extfs/hp48
587 vfs/extfs/lslR
588 vfs/extfs/mailfs
589 vfs/extfs/patchfs
590 vfs/extfs/rpms
591 vfs/extfs/uace
592 vfs/extfs/ualz
593 vfs/extfs/uar
594 vfs/extfs/uarc
595 vfs/extfs/uarj
596 vfs/extfs/uc1541
597 vfs/extfs/uha
598 vfs/extfs/ulha
599 vfs/extfs/urar
600 vfs/extfs/uzip
601 vfs/extfs/uzoo
603 doc/Makefile
604 doc/hints/Makefile
605 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
606 doc/man/es/mc.1 doc/man/es/Makefile
607 doc/man/hu/mc.1 doc/man/hu/Makefile
608 doc/man/it/mc.1 doc/man/it/Makefile
609 doc/man/pl/mc.1 doc/man/pl/Makefile
610 doc/man/ru/mc.1 doc/man/ru/Makefile
611 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
613 doc/hlp/Makefile
614 doc/hlp/es/Makefile
615 doc/hlp/hu/Makefile
616 doc/hlp/it/Makefile
617 doc/hlp/pl/Makefile
618 doc/hlp/ru/Makefile
619 doc/hlp/sr/Makefile
621 intl/Makefile
622 po/Makefile.in
625 AC_OUTPUT
627 echo "
628 Configuration:
630   Source code location:       ${srcdir}
631   Compiler:                   ${CC}
632   Compiler flags:             ${CFLAGS}
633   File system:                ${vfs_type}
634                               ${vfs_flags}
635   Screen library:             ${screen_msg}
636   Mouse support:              ${mouse_lib}
637   X11 events support:         ${textmode_x11_support}
638   With subshell support:      ${subshell}
639   Internal editor:            ${edit_msg}
640   Support for charset:        ${charset_msg}
641   Search type:                ${SEARCH_TYPE}