src/diffviewer/ydiff.c: use GLib functions more widely.
[midnight-commander.git] / configure.ac
blobf220f69b453e100c7701b003d97573d73e7db73c
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 dnl Enable silent rules by default (if yes)
15 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
17 AM_CONFIG_HEADER(config.h)
18 AM_MAINTAINER_MODE
19 AC_CANONICAL_HOST
21 AC_USE_SYSTEM_EXTENSIONS
23 AC_PROG_LIBTOOL
25 AC_ISC_POSIX
27 AC_PROG_CC_STDC
28 AM_PROG_CC_C_O
30 dnl Doxygen
32 DX_HTML_FEATURE(ON)
33 DX_CHM_FEATURE(OFF)
34 DX_CHI_FEATURE(OFF)
35 DX_MAN_FEATURE(OFF)
36 DX_RTF_FEATURE(OFF)
37 DX_XML_FEATURE(OFF)
38 DX_PDF_FEATURE(OFF)
39 DX_PS_FEATURE(OFF)
40 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
42 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
44 dnl
45 dnl First try glib 2.x.
46 dnl Keep this check close to the beginning, so that the users
47 dnl without any glib won't have their time wasted by other checks.
48 dnl
50 AC_ARG_WITH([glib_static],
51             [  --with-glib-static       Link glib statically [[no]]])
53 glib_found=no
55 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.8], [glib_found=yes], [:])
56 if test x"$glib_found" = xno; then
57     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.8)])
60 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
61 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
63 if test "x$gmodule_found" = "xyes" ; then
64         dnl Check if the gmodule functionality supported on this system.
65         AC_G_MODULE_SUPPORTED
68 AC_HEADER_MAJOR
69 AC_C_CONST
70 AC_SYS_LARGEFILE
72 AC_PROG_LN_S
73 AC_CHECK_TOOL(AR, ar, ar)
75 dnl Only list browsers here that can be run in background (i.e. with `&')
76 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
78 dnl
79 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
80 dnl We use only part of the functionality of mmap, so on AIX,
81 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
82 dnl
83 AC_ARG_WITH(mmap,
84         [  --with-mmap              Use the mmap call [[yes if found]]])
85 if test x$with_mmap != xno; then
86     if test x$with_mmap = x; then
87         AC_FUNC_MMAP
88     else
89         AC_DEFINE(HAVE_MMAP, 1)
90     fi
93 dnl
94 dnl Internationalization
95 dnl
96 AM_GNU_GETTEXT(no-libtool, need-ngettext)
97 AM_GNU_GETTEXT_VERSION(0.14.3)
99 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
100     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
103 dnl Determine which help translations we want to install.
104 ALL_DOC_LINGUAS="es hu it pl ru sr"
106 DOC_LINGUAS=
107 if test "x$USE_NLS" = xyes; then
108     if test -z "$LINGUAS"; then
109         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
110     else
111         langs="$LINGUAS"
112     fi
113 else
114     langs=
117 for h_lang in $ALL_DOC_LINGUAS; do
118     for lang in $langs; do
119         if test "$lang" = "$h_lang"; then
120             DOC_LINGUAS="$DOC_LINGUAS $lang"
121             break
122         fi
123     done
124 done
125 AC_SUBST(DOC_LINGUAS)
128 dnl OS specific flags.
130 case $host_os in
131 aux*)
132     # A/UX
133     LIBS="$LIBS -lposix"
134     AC_DEFINE(_POSIX_SOURCE)
135     ;;
136 esac
138 dnl Extended Character Sets
140 AC_ARG_ENABLE([extcharset],
141         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
142 if test x"$enable_extcharset" = x"yes"; then
143   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
146 AC_PROG_INSTALL
147 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
148         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
149         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
150         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
151         sys/mkdev.h wchar.h wctype.h])
153 AC_HEADER_TIME
154 AC_HEADER_DIRENT
155 AC_HEADER_STDC
157 dnl Missing structure components
158 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
159 AC_STRUCT_ST_BLOCKS
162 dnl Check availability of some functions
165 AC_CHECK_FUNCS([\
166         atoll \
167         cfgetospeed \
168         initgroups isascii \
169         memcpy memset \
170         setreuid statfs sysconf \
171         tcgetattr tcsetattr truncate \
172         strverscmp
176 dnl getpt is a GNU Extension (glibc 2.1.x)
178 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
179 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
181 dnl replacing lstat with statlstat on sco makes it more portable between
182 dnl sco clones
183 AC_CHECK_FUNCS(statlstat)
186 dnl If running under AIX, AC_AIX does not tell us that
188 AC_MSG_CHECKING([for AIX defines])
189 AC_EGREP_CPP(yes,
190 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
192 #endif
193 ], [
194 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
195 AC_MSG_RESULT(yes)
196 ], [AC_MSG_RESULT(no)])
199 dnl This is from GNU fileutils, check aclocal.m4 for more information
201 AC_GET_FS_INFO
204 dnl Missing typedefs and replacements
207 AC_CHECK_SIZEOF(long)
208 AC_CHECK_SIZEOF(long long)
209 AC_TYPE_MODE_T
210 AC_TYPE_OFF_T
211 AC_CHECK_SIZEOF(off_t)
212 AC_TYPE_PID_T
213 AC_TYPE_UID_T
214 AC_CHECK_TYPE(nlink_t, unsigned int)
215 AC_CHECK_TYPES([socklen_t],,,
217 #include <sys/types.h>
218 #include <sys/socket.h>
221 dnl This is needed for regex.c only
222 AC_CHECK_TYPE(uintptr_t,
223               [AC_DEFINE(HAVE_UINTPTR_T, 1,
224                          [Define if you have the `uintptr_t' type.])
227 AC_FUNC_ALLOCA
228 AC_FUNC_STRCOLL
231 dnl X11 support.
232 dnl Used to read keyboard modifiers when running under X11.
235 AC_PATH_XTRA
236 if test "x$no_x" = xyes; then
237     textmode_x11_support="no"
238 else
239     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
240     if test "x$mc_cv_g_module_supported" = "xyes" ; then
241         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
242         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
243         dnl functionality is supported on the system.  This way, mc will be
244         dnl linked against the gmodule library only when it's really required.
245         GLIB_CFLAGS="$GMODULE_CFLAGS"
246         GLIB_LIBS="$GMODULE_LIBS"
247     else
248         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
249     fi
250     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
251               [Define to enable getting events from X Window System])
252     textmode_x11_support="yes"
256 dnl Try to find static libraries for glib and gmodule.
258 if test x$with_glib_static = xyes; then
259     new_GLIB_LIBS=
260     for i in $GLIB_LIBS; do
261         case x$i in
262         x-lglib*)
263             lib=glib ;;
264         x-lgmodule*)
265             lib=gmodule ;;
266         *)
267             lib=
268             add="$i" ;;
269         esac
271         if test -n "$lib"; then
272             lib1=`echo $i | sed 's/^-l//'`
273             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
274                 add="$GLIB_LIBDIR/lib${lib1}.a"
275             else
276                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
277                     add="$GLIB_LIBDIR/lib${lib}.a"
278                 else
279                     AC_MSG_ERROR([Cannot find static $lib])
280                 fi
281             fi
282         fi
283         new_GLIB_LIBS="$new_GLIB_LIBS $add"
284     done
285     GLIB_LIBS="$new_GLIB_LIBS"
290 dnl Network related functions
293 AC_SEARCH_LIBS([socket], [socket])
294 AC_SEARCH_LIBS([gethostbyname], [nsl])
297 dnl Sequent wants getprocessstats
299 AC_CHECK_LIB(seq, get_process_stats, [
300         LIBS="$LIBS -lseq"
301         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
302                   [Define if you have function `get_process_stats' and
303 have to use that instead of gettimeofday])])
305 AC_MC_VFS_CHECKS
307 vfs_type="normal"
308 if test x$enable_vfs = xyes; then
309         AC_MSG_NOTICE([enabling VFS code])
310         vfs_type="Midnight Commander Virtual File System"
314 dnl Check for gpm mouse support (Linux only)
316 mouse_lib="xterm only"
317 AC_ARG_WITH(gpm-mouse,
318         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
319                            [[yes if found]]])
321 case $host_os in
322 linux*)
323     if test x$with_gpm_mouse != xno; then
324         AC_CHECK_LIB(gpm, Gpm_Repeat,
325             [AC_DEFINE(HAVE_LIBGPM, 1,
326                        [Define to enable gpm mouse support on Linux])
327             mouse_lib="gpm and xterm"
328             MCLIBS="$MCLIBS -lgpm"],
329             if test "x$with_gpm_mouse" = "xyes"; then
330                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
331             else
332                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
333             fi
334         )
335     fi
336     ;;
337 esac
339 MC_CHECK_SEARCH_TYPE
342 dnl Check nroff and the options it supports
344 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
346 dnl Default values
347 MANDOC=-man
348 MAN_FLAGS=
350 if $HAVE_nroff; then
351     AC_MSG_CHECKING([for manual formatting macros])
352     AC_CACHE_VAL(mc_cv_mandoc, [
353     nroff -mandoc < /dev/null > /dev/null 2>&1
354     if test $? = 0; then
355         mc_cv_mandoc=-mandoc
356     else
357         mc_cv_mandoc=-man
358     fi
359     ])
360     MANDOC=$mc_cv_mandoc
361     AC_MSG_RESULT([$MANDOC])
363     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
364     AC_CACHE_VAL(mc_cv_man_nocolor, [
365     nroff -c < /dev/null > /dev/null 2>&1
366     if test $? = 0; then
367         mc_cv_man_nocolor=-c
368     else
369         mc_cv_man_nocolor=
370     fi
371     ])
372     MAN_FLAGS=$mc_cv_man_nocolor
373     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
375     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
376     AC_CACHE_VAL(mc_cv_nroff_tascii, [
377     mc_cv_nroff_tascii=
378     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
379     if test $? = 0; then
380         mc_cv_nroff_tascii=-Tlatin1
381     else
382         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
383         if test $? = 0; then
384             mc_cv_nroff_tascii=-Tascii
385         fi
386     fi
387     ])
388     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
389     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
392 AC_SUBST(MANDOC)
393 AC_SUBST(MAN_FLAGS)
397 dnl Check for -L option to file
399 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
400 if $HAVE_FILECMD; then
401     AC_MSG_CHECKING([for -L option to file command])
402     AC_CACHE_VAL(mc_cv_filel, [
403     file -L . > /dev/null 2>&1
404     if test $? = 0; then
405         mc_cv_filel=yes
406     else
407         mc_cv_filel=no
408     fi
409     ])
410     if test x$mc_cv_filel = xyes; then
411         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
412     fi
413     filel=$mc_cv_filel
414     AC_MSG_RESULT([$filel])
418 AC_MSG_CHECKING([for subshell support])
419 AC_ARG_WITH(subshell,
420         [  --with-subshell          Compile in concurrent subshell [[yes]]
421   --with-subshell=optional Don't run concurrent shell by default [[no]]],
422         [result=no
423         if test x$withval = xoptional
424         then
425                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
426                           [Define to make subshell support optional])
427                 result="optional"
428         fi
429         if test x$withval = xyes
430         then
431                 result="yes"
432         fi],
433         [dnl Default: enable the subshell support
434         result="yes"
436 if test "x$result" != xno; then
437         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
438                   [Define to enable subshell support])
440 AC_MSG_RESULT([$result])
441 subshell="$result"
445 dnl Select the screen library.
447 AC_ARG_WITH(screen,
448         [  --with-screen=LIB        Compile with screen library: slang or
449                            ncurses [[slang if found]]])
451 case x$with_screen in
452 xslang)
453         MC_WITH_SLANG(strict)
454         ;;
455 xncurses)
456         MC_WITH_NCURSES
457         ;;
458 xncursesw)
459         MC_WITH_NCURSESW
460         ;;
462         MC_WITH_SLANG
463         ;;
465         AC_MSG_ERROR([Value of the screen library is incorrect])
466         ;;
467 esac
471 dnl Internal editor support.
473 AC_ARG_WITH(edit,
474         [  --with-edit              Enable internal editor [[yes]]])
476 if test x$with_edit != xno; then
477         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
478         use_edit=yes
479         edit_msg="yes"
480         AC_MSG_NOTICE([using internal editor])
481 else
482         edit_msg="no"
486 dnl Diff viewer support.
488 AC_ARG_WITH(diff_viewer,
489         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
491 if test x$with_diff_viewer != xno; then
492         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
493         use_diff=yes
494         diff_msg="yes"
495         AC_MSG_NOTICE([using diff viewer])
496 else
497         diff_msg="no"
501 dnl Check if the OS is supported by the console saver.
502 cons_saver=""
503 case $host_os in
504 linux*)
505     cons_saver=yes
506 esac
509 dnl Support for background operations
510 AC_ARG_ENABLE([background],
511               [  --enable-background     Support for background file operations [[yes]]])
512 if test "x$enable_background" != xno; then
513     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
518 dnl User visible support for charset conversion.
520 AC_ARG_ENABLE([charset],
521               [  --enable-charset        Support for charset selection and conversion [[yes]]])
522 have_charset=
523 charset_msg="no"
524 if test "x$enable_charset" != "xno"; then
525     AC_DEFINE(HAVE_CHARSET, 1,
526               [Define to enable charset selection and conversion])
527     have_charset=yes
528     charset_msg="yes"
531 if test "$GLIBC21" != yes; then
532     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
535 MC_CHECK_CFLAGS
537 CFLAGS_OPTS=""
539 if test "x$CFLAGS" = "x"; then
540     CFLAGS_OPTS=" -O2 "
543 if test x$USE_MAINTAINER_MODE = xyes; then
544     CFLAGS_OPTS="-g3 -O -ggdb"
545     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
548 AC_ARG_ENABLE(
549     [werror],
550     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
553 if test "x$enable_werror" = xyes; then
554     MC_CHECK_ONE_CFLAG([-Werror])
556 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
558 AC_SUBST(CFLAGS)
559 AC_SUBST(CPPFLAGS)
560 AC_SUBST(LDFLAGS)
561 AC_SUBST(LIBS)
563 dnl Libraries used only when building the mc binary
564 AC_SUBST(MCLIBS)
566 if test -n "$use_smbfs"; then
567   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
570 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
571 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
572 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
573 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
574 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
575 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
576 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
577 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
578 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
580 AC_CONFIG_FILES([
581 Makefile
583 contrib/Makefile
584 contrib/dist/Makefile
585 contrib/dist/debian/Makefile
586 contrib/dist/gentoo/Makefile
587 contrib/dist/redhat/Makefile
588 contrib/dist/redhat/mc.spec
589 contrib/dist/mc.qpg
590 contrib/dist/pkginfo
591 contrib/dist/prototype
593 misc/Makefile
594 misc/skins/Makefile
595 misc/mc.ext
597 src/Makefile
598 src/consaver/Makefile
599 src/editor/Makefile
600 src/viewer/Makefile
601 src/diffviewer/Makefile
603 lib/Makefile
604 lib/filehighlight/Makefile
605 lib/mcconfig/Makefile
606 lib/search/Makefile
607 lib/skin/Makefile
608 lib/strutil/Makefile
609 lib/tty/Makefile
610 lib/vfs/Makefile
611 lib/vfs/mc-vfs/Makefile
612 lib/vfs/mc-vfs/extfs/Makefile
613 lib/vfs/mc-vfs/extfs/a+
614 lib/vfs/mc-vfs/extfs/apt+
615 lib/vfs/mc-vfs/extfs/audio
616 lib/vfs/mc-vfs/extfs/deb
617 lib/vfs/mc-vfs/extfs/deba
618 lib/vfs/mc-vfs/extfs/debd
619 lib/vfs/mc-vfs/extfs/dpkg+
620 lib/vfs/mc-vfs/extfs/iso9660
621 lib/vfs/mc-vfs/extfs/hp48+
622 lib/vfs/mc-vfs/extfs/lslR
623 lib/vfs/mc-vfs/extfs/mailfs
624 lib/vfs/mc-vfs/extfs/patchfs
625 lib/vfs/mc-vfs/extfs/rpms+
626 lib/vfs/mc-vfs/extfs/s3+
627 lib/vfs/mc-vfs/extfs/uace
628 lib/vfs/mc-vfs/extfs/ualz
629 lib/vfs/mc-vfs/extfs/uar
630 lib/vfs/mc-vfs/extfs/uarc
631 lib/vfs/mc-vfs/extfs/uarj
632 lib/vfs/mc-vfs/extfs/uc1541
633 lib/vfs/mc-vfs/extfs/uha
634 lib/vfs/mc-vfs/extfs/ulha
635 lib/vfs/mc-vfs/extfs/urar
636 lib/vfs/mc-vfs/extfs/uzip
637 lib/vfs/mc-vfs/extfs/uzoo
639 misc/syntax/Makefile
641 doc/Makefile
642 doc/hints/Makefile
643 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
644 doc/man/es/mc.1 doc/man/es/Makefile
645 doc/man/hu/mc.1 doc/man/hu/Makefile
646 doc/man/it/mc.1 doc/man/it/Makefile
647 doc/man/pl/mc.1 doc/man/pl/Makefile
648 doc/man/ru/mc.1 doc/man/ru/Makefile
649 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
651 doc/hlp/Makefile
652 doc/hlp/es/Makefile
653 doc/hlp/hu/Makefile
654 doc/hlp/it/Makefile
655 doc/hlp/pl/Makefile
656 doc/hlp/ru/Makefile
657 doc/hlp/sr/Makefile
659 intl/Makefile
660 po/Makefile.in
663 AC_OUTPUT
665 if test x$enable_mcserver = x; then
666     enable_mcserver='no'
669 echo "
670 Configuration:
672   Source code location:       ${srcdir}
673   Compiler:                   ${CC}
674   Compiler flags:             ${CFLAGS}
675   File system:                ${vfs_type}
676                               ${vfs_flags}
677   Screen library:             ${screen_msg}
678   Mouse support:              ${mouse_lib}
679   X11 events support:         ${textmode_x11_support}
680   With subshell support:      ${subshell}
681   Internal editor:            ${edit_msg}
682   Diff viewer:                ${diff_msg}
683   Support for charset:        ${charset_msg}
684   Search type:                ${SEARCH_TYPE}