Ticket #30 (use external clipboard utility)
[midnight-commander.git] / configure.ac
blob06b33741f607cc65e4ebcca7c0ffe83e16dc8446
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 AC_PROG_INSTALL
139 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
140         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
141         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
142         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
143         sys/mkdev.h wchar.h wctype.h])
145 AC_HEADER_TIME
146 AC_HEADER_DIRENT
147 AC_HEADER_STDC
149 dnl Missing structure components
150 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
151 AC_STRUCT_ST_BLOCKS
154 dnl Check availability of some functions
157 AC_CHECK_FUNCS([\
158         atoll \
159         cfgetospeed \
160         initgroups isascii \
161         setreuid statfs sysconf \
162         tcgetattr tcsetattr truncate \
163         strverscmp \
164         strncasecmp \
165         realpath
169 dnl getpt is a GNU Extension (glibc 2.1.x)
171 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
172 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
174 dnl replacing lstat with statlstat on sco makes it more portable between
175 dnl sco clones
176 AC_CHECK_FUNCS(statlstat)
179 dnl If running under AIX, AC_AIX does not tell us that
181 AC_MSG_CHECKING([for AIX defines])
182 AC_EGREP_CPP(yes,
183 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
185 #endif
186 ], [
187 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
188 AC_MSG_RESULT(yes)
189 ], [AC_MSG_RESULT(no)])
192 dnl This is from GNU fileutils, check aclocal.m4 for more information
194 AC_GET_FS_INFO
197 dnl Missing typedefs and replacements
200 AC_CHECK_SIZEOF(long)
201 AC_CHECK_SIZEOF(long long)
202 AC_TYPE_MODE_T
203 AC_TYPE_OFF_T
204 AC_CHECK_SIZEOF(off_t)
205 AC_TYPE_PID_T
206 AC_TYPE_UID_T
207 AC_CHECK_TYPE(nlink_t, unsigned int)
208 AC_CHECK_TYPES([socklen_t],,,
210 #include <sys/types.h>
211 #include <sys/socket.h>
214 dnl This is needed for regex.c only
215 AC_CHECK_TYPE(uintptr_t,
216               [AC_DEFINE(HAVE_UINTPTR_T, 1,
217                          [Define if you have the `uintptr_t' type.])
220 AC_FUNC_ALLOCA
221 AC_FUNC_STRCOLL
224 dnl X11 support.
225 dnl Used to read keyboard modifiers when running under X11.
228 AC_PATH_XTRA
229 if test "x$no_x" = xyes; then
230     textmode_x11_support="no"
231 else
232     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
233     if test "x$mc_cv_g_module_supported" = "xyes" ; then
234         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
235         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
236         dnl functionality is supported on the system.  This way, mc will be
237         dnl linked against the gmodule library only when it's really required.
238         GLIB_CFLAGS="$GMODULE_CFLAGS"
239         GLIB_LIBS="$GMODULE_LIBS"
240     else
241         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
242     fi
243     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
244               [Define to enable getting events from X Window System])
245     textmode_x11_support="yes"
249 dnl Try to find static libraries for glib and gmodule.
251 if test x$with_glib_static = xyes; then
252     new_GLIB_LIBS=
253     for i in $GLIB_LIBS; do
254         case x$i in
255         x-lglib*)
256             lib=glib ;;
257         x-lgmodule*)
258             lib=gmodule ;;
259         *)
260             lib=
261             add="$i" ;;
262         esac
264         if test -n "$lib"; then
265             lib1=`echo $i | sed 's/^-l//'`
266             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
267                 add="$GLIB_LIBDIR/lib${lib1}.a"
268             else
269                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
270                     add="$GLIB_LIBDIR/lib${lib}.a"
271                 else
272                     AC_MSG_ERROR([Cannot find static $lib])
273                 fi
274             fi
275         fi
276         new_GLIB_LIBS="$new_GLIB_LIBS $add"
277     done
278     GLIB_LIBS="$new_GLIB_LIBS"
283 dnl Network related functions
286 AC_SEARCH_LIBS([socket], [socket])
287 AC_SEARCH_LIBS([gethostbyname], [nsl])
290 dnl Sequent wants getprocessstats
292 AC_CHECK_LIB(seq, get_process_stats, [
293         LIBS="$LIBS -lseq"
294         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
295                   [Define if you have function `get_process_stats' and
296 have to use that instead of gettimeofday])])
298 AC_MC_VFS_CHECKS
300 vfs_type="normal"
301 if test x$enable_vfs = xyes; then
302         AC_MSG_NOTICE([enabling VFS code])
303         vfs_type="Midnight Commander Virtual File System"
307 dnl Check for gpm mouse support (Linux only)
309 mouse_lib="xterm only"
310 AC_ARG_WITH(gpm-mouse,
311         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
312                            [[yes if found]]])
314 case $host_os in
315 linux*)
316     if test x$with_gpm_mouse != xno; then
317         AC_CHECK_LIB(gpm, Gpm_Repeat,
318             [AC_DEFINE(HAVE_LIBGPM, 1,
319                        [Define to enable gpm mouse support on Linux])
320             mouse_lib="gpm and xterm"
321             MCLIBS="$MCLIBS -lgpm"],
322             if test "x$with_gpm_mouse" = "xyes"; then
323                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
324             else
325                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
326             fi
327         )
328     fi
329     ;;
330 esac
332 MC_CHECK_SEARCH_TYPE
335 dnl Check nroff and the options it supports
337 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
339 dnl Default values
340 MANDOC=-man
341 MAN_FLAGS=
343 if $HAVE_nroff; then
344     AC_MSG_CHECKING([for manual formatting macros])
345     AC_CACHE_VAL(mc_cv_mandoc, [
346     nroff -mandoc < /dev/null > /dev/null 2>&1
347     if test $? = 0; then
348         mc_cv_mandoc=-mandoc
349     else
350         mc_cv_mandoc=-man
351     fi
352     ])
353     MANDOC=$mc_cv_mandoc
354     AC_MSG_RESULT([$MANDOC])
356     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
357     AC_CACHE_VAL(mc_cv_man_nocolor, [
358     nroff -c < /dev/null > /dev/null 2>&1
359     if test $? = 0; then
360         mc_cv_man_nocolor=-c
361     else
362         mc_cv_man_nocolor=
363     fi
364     ])
365     MAN_FLAGS=$mc_cv_man_nocolor
366     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
368     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
369     AC_CACHE_VAL(mc_cv_nroff_tascii, [
370     mc_cv_nroff_tascii=
371     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
372     if test $? = 0; then
373         mc_cv_nroff_tascii=-Tlatin1
374     else
375         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
376         if test $? = 0; then
377             mc_cv_nroff_tascii=-Tascii
378         fi
379     fi
380     ])
381     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
382     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
385 AC_SUBST(MANDOC)
386 AC_SUBST(MAN_FLAGS)
390 dnl Check for -L option to file
392 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
393 if $HAVE_FILECMD; then
394     AC_MSG_CHECKING([for -L option to file command])
395     AC_CACHE_VAL(mc_cv_filel, [
396     file -L . > /dev/null 2>&1
397     if test $? = 0; then
398         mc_cv_filel=yes
399     else
400         mc_cv_filel=no
401     fi
402     ])
403     if test x$mc_cv_filel = xyes; then
404         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
405     fi
406     filel=$mc_cv_filel
407     AC_MSG_RESULT([$filel])
411 AC_MSG_CHECKING([for subshell support])
412 AC_ARG_WITH(subshell,
413         [  --with-subshell          Compile in concurrent subshell [[yes]]
414   --with-subshell=optional Don't run concurrent shell by default [[no]]],
415         [result=no
416         if test x$withval = xoptional
417         then
418                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
419                           [Define to make subshell support optional])
420                 result="optional"
421         fi
422         if test x$withval = xyes
423         then
424                 result="yes"
425         fi],
426         [dnl Default: enable the subshell support
427         result="yes"
429 if test "x$result" != xno; then
430         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
431                   [Define to enable subshell support])
433 AC_MSG_RESULT([$result])
434 subshell="$result"
438 dnl Select the screen library.
440 AC_ARG_WITH(screen,
441         [  --with-screen=LIB        Compile with screen library: slang or
442                            ncurses [[slang if found]]])
444 case x$with_screen in
445 xslang)
446         MC_WITH_SLANG(strict)
447         ;;
448 xncurses)
449         MC_WITH_NCURSES
450         ;;
451 xncursesw)
452         MC_WITH_NCURSESW
453         ;;
455         MC_WITH_SLANG
456         ;;
458         AC_MSG_ERROR([Value of the screen library is incorrect])
459         ;;
460 esac
464 dnl Internal editor support.
466 AC_ARG_WITH(edit,
467         [  --with-edit              Enable internal editor [[yes]]])
469 if test x$with_edit != xno; then
470         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
471         use_edit=yes
472         edit_msg="yes"
473         AC_MSG_NOTICE([using internal editor])
474 else
475         edit_msg="no"
479 dnl Diff viewer support.
481 AC_ARG_WITH(diff_viewer,
482         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
484 if test x$with_diff_viewer != xno; then
485         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
486         use_diff=yes
487         diff_msg="yes"
488         AC_MSG_NOTICE([using diff viewer])
489 else
490         diff_msg="no"
494 dnl Check if the OS is supported by the console saver.
495 cons_saver=""
496 case $host_os in
497 linux*)
498     cons_saver=yes
499 esac
502 dnl Support for background operations
503 AC_ARG_ENABLE([background],
504               [  --enable-background     Support for background file operations [[yes]]])
505 if test "x$enable_background" != xno; then
506     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
511 dnl User visible support for charset conversion.
513 AC_ARG_ENABLE([charset],
514               [  --enable-charset        Support for charset selection and conversion [[yes]]])
515 have_charset=
516 charset_msg="no"
517 if test "x$enable_charset" != "xno"; then
518     AC_DEFINE(HAVE_CHARSET, 1,
519               [Define to enable charset selection and conversion])
520     have_charset=yes
521     charset_msg="yes"
524 if test "$GLIBC21" != yes; then
525     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
528 MC_CHECK_CFLAGS
530 CFLAGS_OPTS=""
532 if test "x$CFLAGS" = "x"; then
533     CFLAGS_OPTS=" -O2 "
536 if test x$USE_MAINTAINER_MODE = xyes; then
537     CFLAGS_OPTS="-g3 -O -ggdb"
538     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
541 AC_ARG_ENABLE(
542     [werror],
543     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
546 if test "x$enable_werror" = xyes; then
547     MC_CHECK_ONE_CFLAG([-Werror])
549 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
551 AC_SUBST(CFLAGS)
552 AC_SUBST(CPPFLAGS)
553 AC_SUBST(LDFLAGS)
554 AC_SUBST(LIBS)
556 dnl Libraries used only when building the mc binary
557 AC_SUBST(MCLIBS)
559 if test -n "$use_smbfs"; then
560   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
563 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
564 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
565 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
566 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
567 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
568 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
569 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
570 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
571 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
573 AC_CONFIG_FILES(
575 src/man2hlp/man2hlp
578 chmod +x src/man2hlp/man2hlp
581 AC_CONFIG_FILES([
582 Makefile
584 contrib/Makefile
585 contrib/dist/Makefile
586 contrib/dist/debian/Makefile
587 contrib/dist/gentoo/Makefile
588 contrib/dist/redhat/Makefile
589 contrib/dist/redhat/mc.spec
590 contrib/dist/mc.qpg
591 contrib/dist/pkginfo
592 contrib/dist/prototype
594 misc/Makefile
595 misc/skins/Makefile
596 misc/mc.ext
598 src/Makefile
599 src/consaver/Makefile
600 src/editor/Makefile
601 src/man2hlp/Makefile
602 src/viewer/Makefile
603 src/diffviewer/Makefile
605 lib/Makefile
606 lib/filehighlight/Makefile
607 lib/mcconfig/Makefile
608 lib/search/Makefile
609 lib/skin/Makefile
610 lib/strutil/Makefile
611 lib/tty/Makefile
612 lib/vfs/Makefile
613 lib/vfs/mc-vfs/Makefile
614 lib/vfs/mc-vfs/extfs/Makefile
615 lib/vfs/mc-vfs/extfs/a+
616 lib/vfs/mc-vfs/extfs/apt+
617 lib/vfs/mc-vfs/extfs/audio
618 lib/vfs/mc-vfs/extfs/deb
619 lib/vfs/mc-vfs/extfs/deba
620 lib/vfs/mc-vfs/extfs/debd
621 lib/vfs/mc-vfs/extfs/dpkg+
622 lib/vfs/mc-vfs/extfs/iso9660
623 lib/vfs/mc-vfs/extfs/hp48+
624 lib/vfs/mc-vfs/extfs/lslR
625 lib/vfs/mc-vfs/extfs/mailfs
626 lib/vfs/mc-vfs/extfs/patchfs
627 lib/vfs/mc-vfs/extfs/rpms+
628 lib/vfs/mc-vfs/extfs/s3+
629 lib/vfs/mc-vfs/extfs/uace
630 lib/vfs/mc-vfs/extfs/ualz
631 lib/vfs/mc-vfs/extfs/uar
632 lib/vfs/mc-vfs/extfs/uarc
633 lib/vfs/mc-vfs/extfs/uarj
634 lib/vfs/mc-vfs/extfs/uc1541
635 lib/vfs/mc-vfs/extfs/uha
636 lib/vfs/mc-vfs/extfs/ulha
637 lib/vfs/mc-vfs/extfs/urar
638 lib/vfs/mc-vfs/extfs/uzip
639 lib/vfs/mc-vfs/extfs/uzoo
641 misc/syntax/Makefile
643 doc/Makefile
644 doc/hints/Makefile
645 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
646 doc/man/es/mc.1 doc/man/es/Makefile
647 doc/man/hu/mc.1 doc/man/hu/Makefile
648 doc/man/it/mc.1 doc/man/it/Makefile
649 doc/man/pl/mc.1 doc/man/pl/Makefile
650 doc/man/ru/mc.1 doc/man/ru/Makefile
651 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
653 doc/hlp/Makefile
654 doc/hlp/es/Makefile
655 doc/hlp/hu/Makefile
656 doc/hlp/it/Makefile
657 doc/hlp/pl/Makefile
658 doc/hlp/ru/Makefile
659 doc/hlp/sr/Makefile
661 intl/Makefile
662 po/Makefile.in
665 AC_OUTPUT
667 if test x$enable_mcserver = x; then
668     enable_mcserver='no'
671 echo "
672 Configuration:
674   Source code location:       ${srcdir}
675   Compiler:                   ${CC}
676   Compiler flags:             ${CFLAGS}
677   File system:                ${vfs_type}
678                               ${vfs_flags}
679   Screen library:             ${screen_msg}
680   Mouse support:              ${mouse_lib}
681   X11 events support:         ${textmode_x11_support}
682   With subshell support:      ${subshell}
683   Internal editor:            ${edit_msg}
684   Diff viewer:                ${diff_msg}
685   Support for charset:        ${charset_msg}
686   Search type:                ${SEARCH_TYPE}