Ticket #1959: AC_TRY_RUN crosscompile break
[midnight-commander.git] / configure.ac
blob60b57cd3a8930bb08ccac827ce5e8a269fe98356
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
24 PKG_PROG_PKG_CONFIG
26 AC_ISC_POSIX
28 AC_PROG_CC_STDC
29 AM_PROG_CC_C_O
31 dnl Doxygen
33 DX_HTML_FEATURE(ON)
34 DX_CHM_FEATURE(OFF)
35 DX_CHI_FEATURE(OFF)
36 DX_MAN_FEATURE(OFF)
37 DX_RTF_FEATURE(OFF)
38 DX_XML_FEATURE(OFF)
39 DX_PDF_FEATURE(OFF)
40 DX_PS_FEATURE(OFF)
41 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
43 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
45 dnl
46 dnl First try glib 2.x.
47 dnl Keep this check close to the beginning, so that the users
48 dnl without any glib won't have their time wasted by other checks.
49 dnl
51 AC_ARG_WITH([glib_static],
52             [  --with-glib-static       Link glib statically [[no]]])
54 glib_found=no
56 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.8], [glib_found=yes], [:])
57 if test x"$glib_found" = xno; then
58     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.8)])
61 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
62 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
64 if test "x$gmodule_found" = "xyes" ; then
65         dnl Check if the gmodule functionality supported on this system.
66         AC_G_MODULE_SUPPORTED
69 AC_HEADER_MAJOR
70 AC_C_CONST
71 AC_SYS_LARGEFILE
73 AC_PROG_LN_S
74 AC_CHECK_TOOL(AR, ar, ar)
76 dnl Only list browsers here that can be run in background (i.e. with `&')
77 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
79 dnl
80 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
81 dnl We use only part of the functionality of mmap, so on AIX,
82 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
83 dnl
84 AC_ARG_WITH(mmap,
85         [  --with-mmap              Use the mmap call [[yes if found]]])
86 if test x$with_mmap != xno; then
87     if test x$with_mmap = x; then
88         AC_FUNC_MMAP
89     else
90         AC_DEFINE(HAVE_MMAP, 1)
91     fi
94 dnl
95 dnl Internationalization
96 dnl
97 AM_GNU_GETTEXT(no-libtool, need-ngettext)
98 AM_GNU_GETTEXT_VERSION(0.14.3)
100 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
101     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
104 dnl Determine which help translations we want to install.
105 ALL_DOC_LINGUAS="es hu it pl ru sr"
107 DOC_LINGUAS=
108 if test "x$USE_NLS" = xyes; then
109     if test -z "$LINGUAS"; then
110         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
111     else
112         langs="$LINGUAS"
113     fi
114 else
115     langs=
118 for h_lang in $ALL_DOC_LINGUAS; do
119     for lang in $langs; do
120         if test "$lang" = "$h_lang"; then
121             DOC_LINGUAS="$DOC_LINGUAS $lang"
122             break
123         fi
124     done
125 done
126 AC_SUBST(DOC_LINGUAS)
129 dnl OS specific flags.
131 case $host_os in
132 aux*)
133     # A/UX
134     LIBS="$LIBS -lposix"
135     AC_DEFINE(_POSIX_SOURCE)
136     ;;
137 esac
139 AC_PROG_INSTALL
140 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
141         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
142         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
143         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
144         sys/mkdev.h wchar.h wctype.h])
146 AC_HEADER_TIME
147 AC_HEADER_DIRENT
148 AC_HEADER_STDC
150 dnl Missing structure components
151 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
152 AC_STRUCT_ST_BLOCKS
155 dnl Check availability of some functions
158 AC_CHECK_FUNCS([\
159         atoll \
160         cfgetospeed \
161         initgroups isascii \
162         setreuid statfs sysconf \
163         tcgetattr tcsetattr truncate \
164         strverscmp \
165         strncasecmp \
166         realpath
170 dnl getpt is a GNU Extension (glibc 2.1.x)
172 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
173 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
175 dnl replacing lstat with statlstat on sco makes it more portable between
176 dnl sco clones
177 AC_CHECK_FUNCS(statlstat)
180 dnl If running under AIX, AC_AIX does not tell us that
182 AC_MSG_CHECKING([for AIX defines])
183 AC_EGREP_CPP(yes,
184 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
186 #endif
187 ], [
188 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
189 AC_MSG_RESULT(yes)
190 ], [AC_MSG_RESULT(no)])
193 dnl This is from GNU fileutils, check aclocal.m4 for more information
195 AC_GET_FS_INFO
198 dnl Missing typedefs and replacements
201 AC_CHECK_SIZEOF(long)
202 AC_CHECK_SIZEOF(long long)
203 AC_TYPE_MODE_T
204 AC_TYPE_OFF_T
205 AC_CHECK_SIZEOF(off_t)
206 AC_TYPE_PID_T
207 AC_TYPE_UID_T
208 AC_CHECK_TYPE(nlink_t, unsigned int)
209 AC_CHECK_TYPES([socklen_t],,,
211 #include <sys/types.h>
212 #include <sys/socket.h>
215 dnl This is needed for regex.c only
216 AC_CHECK_TYPE(uintptr_t,
217               [AC_DEFINE(HAVE_UINTPTR_T, 1,
218                          [Define if you have the `uintptr_t' type.])
221 AC_FUNC_ALLOCA
222 AC_FUNC_STRCOLL
225 dnl X11 support.
226 dnl Used to read keyboard modifiers when running under X11.
229 AC_PATH_XTRA
230 if test "x$no_x" = xyes; then
231     textmode_x11_support="no"
232 else
233     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
234     if test "x$mc_cv_g_module_supported" = "xyes" ; then
235         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
236         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
237         dnl functionality is supported on the system.  This way, mc will be
238         dnl linked against the gmodule library only when it's really required.
239         GLIB_CFLAGS="$GMODULE_CFLAGS"
240         GLIB_LIBS="$GMODULE_LIBS"
241     else
242         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
243     fi
244     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
245               [Define to enable getting events from X Window System])
246     textmode_x11_support="yes"
250 dnl Try to find static libraries for glib and gmodule.
252 if test x$with_glib_static = xyes; then
253     new_GLIB_LIBS=
254     for i in $GLIB_LIBS; do
255         case x$i in
256         x-lglib*)
257             lib=glib ;;
258         x-lgmodule*)
259             lib=gmodule ;;
260         *)
261             lib=
262             add="$i" ;;
263         esac
265         if test -n "$lib"; then
266             lib1=`echo $i | sed 's/^-l//'`
267             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
268                 add="$GLIB_LIBDIR/lib${lib1}.a"
269             else
270                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
271                     add="$GLIB_LIBDIR/lib${lib}.a"
272                 else
273                     AC_MSG_ERROR([Cannot find static $lib])
274                 fi
275             fi
276         fi
277         new_GLIB_LIBS="$new_GLIB_LIBS $add"
278     done
279     GLIB_LIBS="$new_GLIB_LIBS"
284 dnl Network related functions
287 AC_SEARCH_LIBS([socket], [socket])
288 AC_SEARCH_LIBS([gethostbyname], [nsl])
291 dnl Sequent wants getprocessstats
293 AC_CHECK_LIB(seq, get_process_stats, [
294         LIBS="$LIBS -lseq"
295         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
296                   [Define if you have function `get_process_stats' and
297 have to use that instead of gettimeofday])])
299 AC_MC_VFS_CHECKS
301 vfs_type="normal"
302 if test x$enable_vfs = xyes; then
303         AC_MSG_NOTICE([enabling VFS code])
304         vfs_type="Midnight Commander Virtual File System"
308 dnl Check for gpm mouse support (Linux only)
310 mouse_lib="xterm only"
311 AC_ARG_WITH(gpm-mouse,
312         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
313                            [[yes if found]]])
315 case $host_os in
316 linux*)
317     if test x$with_gpm_mouse != xno; then
318         AC_CHECK_LIB(gpm, Gpm_Repeat,
319             [AC_DEFINE(HAVE_LIBGPM, 1,
320                        [Define to enable gpm mouse support on Linux])
321             mouse_lib="gpm and xterm"
322             MCLIBS="$MCLIBS -lgpm"],
323             if test "x$with_gpm_mouse" = "xyes"; then
324                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
325             else
326                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
327             fi
328         )
329     fi
330     ;;
331 esac
333 MC_CHECK_SEARCH_TYPE
336 dnl Check nroff and the options it supports
338 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
340 dnl Default values
341 MANDOC=-man
342 MAN_FLAGS=
344 if $HAVE_nroff; then
345     AC_MSG_CHECKING([for manual formatting macros])
346     AC_CACHE_VAL(mc_cv_mandoc, [
347     nroff -mandoc < /dev/null > /dev/null 2>&1
348     if test $? = 0; then
349         mc_cv_mandoc=-mandoc
350     else
351         mc_cv_mandoc=-man
352     fi
353     ])
354     MANDOC=$mc_cv_mandoc
355     AC_MSG_RESULT([$MANDOC])
357     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
358     AC_CACHE_VAL(mc_cv_man_nocolor, [
359     nroff -c < /dev/null > /dev/null 2>&1
360     if test $? = 0; then
361         mc_cv_man_nocolor=-c
362     else
363         mc_cv_man_nocolor=
364     fi
365     ])
366     MAN_FLAGS=$mc_cv_man_nocolor
367     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
369     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
370     AC_CACHE_VAL(mc_cv_nroff_tascii, [
371     mc_cv_nroff_tascii=
372     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
373     if test $? = 0; then
374         mc_cv_nroff_tascii=-Tlatin1
375     else
376         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
377         if test $? = 0; then
378             mc_cv_nroff_tascii=-Tascii
379         fi
380     fi
381     ])
382     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
383     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
386 AC_SUBST(MANDOC)
387 AC_SUBST(MAN_FLAGS)
391 dnl Check for -L option to file
393 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
394 if $HAVE_FILECMD; then
395     AC_MSG_CHECKING([for -L option to file command])
396     AC_CACHE_VAL(mc_cv_filel, [
397     file -L . > /dev/null 2>&1
398     if test $? = 0; then
399         mc_cv_filel=yes
400     else
401         mc_cv_filel=no
402     fi
403     ])
404     if test x$mc_cv_filel = xyes; then
405         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
406     fi
407     filel=$mc_cv_filel
408     AC_MSG_RESULT([$filel])
412 AC_MSG_CHECKING([for subshell support])
413 AC_ARG_WITH(subshell,
414         [  --with-subshell          Compile in concurrent subshell [[yes]]
415   --with-subshell=optional Don't run concurrent shell by default [[no]]],
416         [result=no
417         if test x$withval = xoptional
418         then
419                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
420                           [Define to make subshell support optional])
421                 result="optional"
422         fi
423         if test x$withval = xyes
424         then
425                 result="yes"
426         fi],
427         [dnl Default: enable the subshell support
428         result="yes"
430 if test "x$result" != xno; then
431         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
432                   [Define to enable subshell support])
434 AC_MSG_RESULT([$result])
435 subshell="$result"
439 dnl Select the screen library.
441 AC_ARG_WITH(screen,
442         [  --with-screen=LIB        Compile with screen library: slang or
443                            ncurses [[slang if found]]])
445 case x$with_screen in
446 xslang)
447         MC_WITH_SLANG(strict)
448         ;;
449 xncurses)
450         MC_WITH_NCURSES
451         ;;
452 xncursesw)
453         MC_WITH_NCURSESW
454         ;;
456         MC_WITH_SLANG
457         ;;
459         AC_MSG_ERROR([Value of the screen library is incorrect])
460         ;;
461 esac
465 dnl Internal editor support.
467 AC_ARG_WITH(edit,
468         [  --with-edit              Enable internal editor [[yes]]])
470 if test x$with_edit != xno; then
471         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
472         use_edit=yes
473         edit_msg="yes"
474         AC_MSG_NOTICE([using internal editor])
475 else
476         edit_msg="no"
480 dnl Diff viewer support.
482 AC_ARG_WITH(diff_viewer,
483         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
485 if test x$with_diff_viewer != xno; then
486         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
487         use_diff=yes
488         diff_msg="yes"
489         AC_MSG_NOTICE([using diff viewer])
490 else
491         diff_msg="no"
495 dnl Check if the OS is supported by the console saver.
496 cons_saver=""
497 case $host_os in
498 linux*)
499     cons_saver=yes
500 esac
503 dnl Support for background operations
504 AC_ARG_ENABLE([background],
505               [  --enable-background     Support for background file operations [[yes]]])
506 if test "x$enable_background" != xno; then
507     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
512 dnl User visible support for charset conversion.
514 AC_ARG_ENABLE([charset],
515               [  --enable-charset        Support for charset selection and conversion [[yes]]])
516 have_charset=
517 charset_msg="no"
518 if test "x$enable_charset" != "xno"; then
519     AC_DEFINE(HAVE_CHARSET, 1,
520               [Define to enable charset selection and conversion])
521     have_charset=yes
522     charset_msg="yes"
525 if test "$GLIBC21" != yes; then
526     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
529 MC_CHECK_CFLAGS
531 CFLAGS_OPTS=""
533 if test "x$CFLAGS" = "x"; then
534     CFLAGS_OPTS=" -O2 "
537 if test x$USE_MAINTAINER_MODE = xyes; then
538     CFLAGS_OPTS="-g3 -O -ggdb"
539     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
542 AC_ARG_ENABLE(
543     [werror],
544     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
547 if test "x$enable_werror" = xyes; then
548     MC_CHECK_ONE_CFLAG([-Werror])
550 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
552 AC_SUBST(CFLAGS)
553 AC_SUBST(CPPFLAGS)
554 AC_SUBST(LDFLAGS)
555 AC_SUBST(LIBS)
557 dnl Libraries used only when building the mc binary
558 AC_SUBST(MCLIBS)
560 if test -n "$use_smbfs"; then
561   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
564 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
565 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
566 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
567 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
568 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
569 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
570 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
571 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
572 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
574 AC_CONFIG_FILES(
576 src/man2hlp/man2hlp
579 chmod +x src/man2hlp/man2hlp
582 AC_CONFIG_FILES([
583 Makefile
585 contrib/Makefile
586 contrib/dist/Makefile
587 contrib/dist/debian/Makefile
588 contrib/dist/gentoo/Makefile
589 contrib/dist/redhat/Makefile
590 contrib/dist/redhat/mc.spec
591 contrib/dist/mc.qpg
592 contrib/dist/pkginfo
593 contrib/dist/prototype
595 misc/Makefile
596 misc/skins/Makefile
597 misc/mc.ext
599 src/Makefile
600 src/consaver/Makefile
601 src/editor/Makefile
602 src/man2hlp/Makefile
603 src/viewer/Makefile
604 src/diffviewer/Makefile
606 lib/Makefile
607 lib/filehighlight/Makefile
608 lib/mcconfig/Makefile
609 lib/search/Makefile
610 lib/skin/Makefile
611 lib/strutil/Makefile
612 lib/tty/Makefile
613 lib/vfs/Makefile
614 lib/vfs/mc-vfs/Makefile
615 lib/vfs/mc-vfs/extfs/Makefile
616 lib/vfs/mc-vfs/extfs/a+
617 lib/vfs/mc-vfs/extfs/apt+
618 lib/vfs/mc-vfs/extfs/audio
619 lib/vfs/mc-vfs/extfs/deb
620 lib/vfs/mc-vfs/extfs/deba
621 lib/vfs/mc-vfs/extfs/debd
622 lib/vfs/mc-vfs/extfs/dpkg+
623 lib/vfs/mc-vfs/extfs/iso9660
624 lib/vfs/mc-vfs/extfs/hp48+
625 lib/vfs/mc-vfs/extfs/lslR
626 lib/vfs/mc-vfs/extfs/mailfs
627 lib/vfs/mc-vfs/extfs/patchfs
628 lib/vfs/mc-vfs/extfs/rpms+
629 lib/vfs/mc-vfs/extfs/s3+
630 lib/vfs/mc-vfs/extfs/uace
631 lib/vfs/mc-vfs/extfs/ualz
632 lib/vfs/mc-vfs/extfs/uar
633 lib/vfs/mc-vfs/extfs/uarc
634 lib/vfs/mc-vfs/extfs/uarj
635 lib/vfs/mc-vfs/extfs/uc1541
636 lib/vfs/mc-vfs/extfs/uha
637 lib/vfs/mc-vfs/extfs/ulha
638 lib/vfs/mc-vfs/extfs/urar
639 lib/vfs/mc-vfs/extfs/uzip
640 lib/vfs/mc-vfs/extfs/uzoo
642 misc/syntax/Makefile
644 doc/Makefile
645 doc/hints/Makefile
646 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
647 doc/man/es/mc.1 doc/man/es/Makefile
648 doc/man/hu/mc.1 doc/man/hu/Makefile
649 doc/man/it/mc.1 doc/man/it/Makefile
650 doc/man/pl/mc.1 doc/man/pl/Makefile
651 doc/man/ru/mc.1 doc/man/ru/Makefile
652 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
654 doc/hlp/Makefile
655 doc/hlp/es/Makefile
656 doc/hlp/hu/Makefile
657 doc/hlp/it/Makefile
658 doc/hlp/pl/Makefile
659 doc/hlp/ru/Makefile
660 doc/hlp/sr/Makefile
662 intl/Makefile
663 po/Makefile.in
666 AC_OUTPUT
668 if test x$enable_mcserver = x; then
669     enable_mcserver='no'
672 echo "
673 Configuration:
675   Source code location:       ${srcdir}
676   Compiler:                   ${CC}
677   Compiler flags:             ${CFLAGS}
678   File system:                ${vfs_type}
679                               ${vfs_flags}
680   Screen library:             ${screen_msg}
681   Mouse support:              ${mouse_lib}
682   X11 events support:         ${textmode_x11_support}
683   With subshell support:      ${subshell}
684   Internal editor:            ${edit_msg}
685   Diff viewer:                ${diff_msg}
686   Support for charset:        ${charset_msg}
687   Search type:                ${SEARCH_TYPE}