Added checks for compiler options.
[midnight-commander.git] / configure.ac
blobbaf1f12e54a082b431724bfb65bc34669356660d
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
16 AC_CANONICAL_HOST
18 AC_USE_SYSTEM_EXTENSIONS
20 AC_PROG_LIBTOOL
22 AC_ISC_POSIX
24 AC_PROG_CC_STDC
26 dnl Doxygen
28 DX_HTML_FEATURE(ON)
29 DX_CHM_FEATURE(OFF)
30 DX_CHI_FEATURE(OFF)
31 DX_MAN_FEATURE(OFF)
32 DX_RTF_FEATURE(OFF)
33 DX_XML_FEATURE(OFF)
34 DX_PDF_FEATURE(OFF)
35 DX_PS_FEATURE(OFF)
36 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
38 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
40 dnl
41 dnl First try glib 2.x.
42 dnl Keep this check close to the beginning, so that the users
43 dnl without any glib won't have their time wasted by other checks.
44 dnl
46 AC_ARG_WITH([glib_static],
47             [  --with-glib-static       Link glib statically [[no]]])
49 glib_found=no
51 PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.6], [glib_found=yes], [:])
52 if test x"$glib_found" = xno; then
53     AC_MSG_ERROR([glib-2.0 not found or version too old (must be >= 2.6)])
56 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
57 GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
59 if test "x$gmodule_found" = "xyes" ; then
60         dnl Check if the gmodule functionality supported on this system.
61         AC_G_MODULE_SUPPORTED
64 AC_HEADER_MAJOR
65 AC_C_CONST
66 AC_SYS_LARGEFILE
68 AC_PROG_LN_S
69 AC_CHECK_TOOL(AR, ar, ar)
71 dnl Only list browsers here that can be run in background (i.e. with `&')
72 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
74 dnl
75 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
76 dnl We use only part of the functionality of mmap, so on AIX,
77 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
78 dnl
79 AC_ARG_WITH(mmap,
80         [  --with-mmap              Use the mmap call [[yes if found]]])
81 if test x$with_mmap != xno; then
82     if test x$with_mmap = x; then
83         AC_FUNC_MMAP
84     else
85         AC_DEFINE(HAVE_MMAP, 1)
86     fi
89 dnl
90 dnl Internationalization
91 dnl
92 AM_GNU_GETTEXT(no-libtool, need-ngettext)
93 AM_GNU_GETTEXT_VERSION(0.14.3)
95 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
96     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
99 dnl Determine which help translations we want to install.
100 ALL_DOC_LINGUAS="es hu it pl ru sr"
102 DOC_LINGUAS=
103 if test "x$USE_NLS" = xyes; then
104     if test -z "$LINGUAS"; then
105         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
106     else
107         langs="$LINGUAS"
108     fi
109 else
110     langs=
113 for h_lang in $ALL_DOC_LINGUAS; do
114     for lang in $langs; do
115         if test "$lang" = "$h_lang"; then
116             DOC_LINGUAS="$DOC_LINGUAS $lang"
117             break
118         fi
119     done
120 done
121 AC_SUBST(DOC_LINGUAS)
124 dnl OS specific flags.
126 case $host_os in
127 aux*)
128     # A/UX
129     LIBS="$LIBS -lposix"
130     AC_DEFINE(_POSIX_SOURCE)
131     ;;
132 esac
134 dnl Extended Character Sets
136 AC_ARG_ENABLE([extcharset],
137         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
138 if test x"$enable_extcharset" = x"yes"; then
139   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
142 AC_PROG_INSTALL
143 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
144         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/vfs.h sys/time.h \
145         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
146         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
147         sys/mkdev.h wchar.h wctype.h])
149 AC_HEADER_TIME
150 AC_HEADER_SYS_WAIT
151 AC_HEADER_DIRENT
152 AC_HEADER_STDC
154 dnl Missing structure components
155 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
156 AC_STRUCT_ST_BLOCKS
159 dnl Check availability of some functions
162 AC_CHECK_FUNCS([\
163         atoll \
164         cfgetospeed \
165         getegid geteuid getgid getsid getuid \
166         initgroups isascii \
167         memcpy memset \
168         putenv \
169         setreuid setuid statfs strerror strftime sysconf \
170         tcgetattr tcsetattr truncate \
174 dnl getpt is a GNU Extension (glibc 2.1.x)
176 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
177 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
179 dnl replacing lstat with statlstat on sco makes it more portable between
180 dnl sco clones
181 AC_CHECK_FUNCS(statlstat)
184 dnl If running under AIX, AC_AIX does not tell us that
186 AC_MSG_CHECKING([for AIX defines])
187 AC_EGREP_CPP(yes,
188 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
190 #endif
191 ], [
192 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
193 AC_MSG_RESULT(yes)
194 ], [AC_MSG_RESULT(no)])
197 dnl This is from GNU fileutils, check aclocal.m4 for more information
199 AC_GET_FS_INFO
202 dnl Missing typedefs and replacements
205 AC_CHECK_SIZEOF(long)
206 AC_CHECK_SIZEOF(long long)
207 AC_TYPE_MODE_T
208 AC_TYPE_OFF_T
209 AC_CHECK_SIZEOF(off_t)
210 AC_TYPE_PID_T
211 AC_TYPE_UID_T
212 AC_CHECK_TYPE(nlink_t, unsigned int)
213 AC_CHECK_TYPES([socklen_t],,,
215 #include <sys/types.h>
216 #include <sys/socket.h>
219 dnl This is needed for regex.c only
220 AC_CHECK_TYPE(uintptr_t,
221               [AC_DEFINE(HAVE_UINTPTR_T, 1,
222                          [Define if you have the `uintptr_t' type.])
225 AC_FUNC_ALLOCA
226 AC_FUNC_STRCOLL
229 dnl X11 support.
230 dnl Used to read keyboard modifiers when running under X11.
233 AC_PATH_XTRA
234 if test "x$no_x" = xyes; then
235     textmode_x11_support="no"
236 else
237     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
238     if test "x$mc_cv_g_module_supported" = "xyes" ; then
239         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
240         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
241         dnl functionality is supported on the system.  This way, mc will be
242         dnl linked against the gmodule library only when it's really required.
243         GLIB_CFLAGS="$GMODULE_CFLAGS"
244         GLIB_LIBS="$GMODULE_LIBS"
245     else
246         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
247     fi
248     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
249               [Define to enable getting events from X Window System])
250     textmode_x11_support="yes"
254 dnl Try to find static libraries for glib and gmodule.
256 if test x$with_glib_static = xyes; then
257     new_GLIB_LIBS=
258     for i in $GLIB_LIBS; do
259         case x$i in
260         x-lglib*)
261             lib=glib ;;
262         x-lgmodule*)
263             lib=gmodule ;;
264         *)
265             lib=
266             add="$i" ;;
267         esac
269         if test -n "$lib"; then
270             lib1=`echo $i | sed 's/^-l//'`
271             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
272                 add="$GLIB_LIBDIR/lib${lib1}.a"
273             else
274                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
275                     add="$GLIB_LIBDIR/lib${lib}.a"
276                 else
277                     AC_MSG_ERROR([Cannot find static $lib])
278                 fi
279             fi
280         fi
281         new_GLIB_LIBS="$new_GLIB_LIBS $add"
282     done
283     GLIB_LIBS="$new_GLIB_LIBS"
288 dnl Network related functions
291 AC_SEARCH_LIBS([socket], [socket])
292 AC_SEARCH_LIBS([gethostbyname], [nsl])
295 dnl Sequent wants getprocessstats
297 AC_CHECK_LIB(seq, get_process_stats, [
298         LIBS="$LIBS -lseq"
299         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
300                   [Define if you have function `get_process_stats' and
301 have to use that instead of gettimeofday])])
303 AC_MC_VFS_CHECKS
305 vfs_type="normal"
306 if test x$use_vfs = xyes; then
307         AC_MSG_NOTICE([enabling VFS code])
308         vfs_type="Midnight Commander Virtual File System"
312 dnl Check for gpm mouse support (Linux only)
314 mouse_lib="xterm only"
315 AC_ARG_WITH(gpm-mouse,
316         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
317                            [[yes if found]]])
319 case $host_os in
320 linux*)
321     if test x$with_gpm_mouse != xno; then
322         AC_CHECK_LIB(gpm, Gpm_Repeat,
323             [AC_DEFINE(HAVE_LIBGPM, 1,
324                        [Define to enable gpm mouse support on Linux])
325             mouse_lib="gpm and xterm"
326             MCLIBS="$MCLIBS -lgpm"],
327             if test "x$with_gpm_mouse" = "xyes"; then
328                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
329             else
330                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
331             fi
332         )
333     fi
334     ;;
335 esac
337 MC_CHECK_SEARCH_TYPE
340 dnl Check nroff and the options it supports
342 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
344 dnl Default values
345 MANDOC=-man
346 MAN_FLAGS=
348 if $HAVE_nroff; then
349     AC_MSG_CHECKING([for manual formatting macros])
350     AC_CACHE_VAL(mc_cv_mandoc, [
351     nroff -mandoc < /dev/null > /dev/null 2>&1
352     if test $? = 0; then
353         mc_cv_mandoc=-mandoc
354     else
355         mc_cv_mandoc=-man
356     fi
357     ])
358     MANDOC=$mc_cv_mandoc
359     AC_MSG_RESULT([$MANDOC])
361     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
362     AC_CACHE_VAL(mc_cv_man_nocolor, [
363     nroff -c < /dev/null > /dev/null 2>&1
364     if test $? = 0; then
365         mc_cv_man_nocolor=-c
366     else
367         mc_cv_man_nocolor=
368     fi
369     ])
370     MAN_FLAGS=$mc_cv_man_nocolor
371     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
373     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
374     AC_CACHE_VAL(mc_cv_nroff_tascii, [
375     mc_cv_nroff_tascii=
376     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
377     if test $? = 0; then
378         mc_cv_nroff_tascii=-Tlatin1
379     else
380         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
381         if test $? = 0; then
382             mc_cv_nroff_tascii=-Tascii
383         fi
384     fi
385     ])
386     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
387     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
390 AC_SUBST(MANDOC)
391 AC_SUBST(MAN_FLAGS)
395 dnl Check for -L option to file
397 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
398 if $HAVE_FILECMD; then
399     AC_MSG_CHECKING([for -L option to file command])
400     AC_CACHE_VAL(mc_cv_filel, [
401     file -L . > /dev/null 2>&1
402     if test $? = 0; then
403         mc_cv_filel=yes
404     else
405         mc_cv_filel=no
406     fi
407     ])
408     if test x$mc_cv_filel = xyes; then
409         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
410     fi
411     filel=$mc_cv_filel
412     AC_MSG_RESULT([$filel])
416 AC_MSG_CHECKING([for subshell support])
417 AC_ARG_WITH(subshell,
418         [  --with-subshell          Compile in concurrent subshell [[yes]]
419   --with-subshell=optional Don't run concurrent shell by default [[no]]],
420         [result=no
421         if test x$withval = xoptional
422         then
423                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
424                           [Define to make subshell support optional])
425                 result="optional"
426         fi
427         if test x$withval = xyes
428         then
429                 result="yes"
430         fi],
431         [dnl Default: enable the subshell support
432         result="yes"
434 if test "x$result" != xno; then
435         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
436                   [Define to enable subshell support])
438 AC_MSG_RESULT([$result])
439 subshell="$result"
443 dnl Select the screen library.
445 AC_ARG_WITH(screen,
446         [  --with-screen=LIB        Compile with screen library: slang or
447                            ncurses [[slang if found]]])
449 case x$with_screen in
450 xslang)
451         MC_WITH_SLANG(strict)
452         ;;
453 xncurses)
454         MC_WITH_NCURSES
455         ;;
456 xncursesw)
457         MC_WITH_NCURSESW
458         ;;
460         MC_WITH_SLANG
461         ;;
463         AC_MSG_ERROR([Value of the screen library is incorrect])
464         ;;
465 esac
469 dnl Internal editor support.
471 AC_ARG_WITH(edit,
472         [  --with-edit              Enable internal editor [[yes]]])
474 if test x$with_edit != xno; then
475         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
476         use_edit=yes
477         edit_msg="yes"
478         AC_MSG_NOTICE([using internal editor])
479 else
480         edit_msg="no"
484 dnl Check if the OS is supported by the console saver.
485 cons_saver=""
486 case $host_os in
487 linux*)
488     cons_saver=yes
489 esac
492 dnl Support for background operations
493 AC_ARG_ENABLE([background],
494               [  --enable-background     Support for background file operations [[yes]]])
495 if test "x$enable_background" != xno; then
496     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
501 dnl User visible support for charset conversion.
503 AC_ARG_ENABLE([charset],
504               [  --enable-charset        Support for charset selection and conversion [[yes]]])
505 have_charset=
506 charset_msg="no"
507 if test "x$enable_charset" != "xno"; then
508     AC_DEFINE(HAVE_CHARSET, 1,
509               [Define to enable charset selection and conversion])
510     have_charset=yes
511     charset_msg="yes"
514 if test "$GLIBC21" != yes; then
515     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
518 MC_CHECK_CFLAGS
520 CFLAGS_OPTS=" -O2 "
521 CFLAGS_EXTRA=""
523 if test x$USE_MAINTAINER_MODE = xyes; then
524     CFLAGS_EXTRA="-Werror"
525     CFLAGS_OPTS="-g3 -O -ggdb"
528 CFLAGS="$CFLAGS $mc_configured_cflags $CFLAGS_OPTS $CFLAGS_EXTRA"
530 AC_SUBST(CFLAGS)
531 AC_SUBST(CPPFLAGS)
532 AC_SUBST(LDFLAGS)
533 AC_SUBST(LIBS)
535 dnl Libraries used only when building the mc binary
536 AC_SUBST(MCLIBS)
538 dnl Version for the RedHat package, without dashes
539 RPM_VERSION=`echo $VERSION | sed 's/-/./g'`
540 AC_SUBST(RPM_VERSION)
542 if test -n "$use_smbfs"; then
543   AC_CONFIG_SUBDIRS([vfs/samba])
546 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
547 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
548 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
549 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
550 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
551 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
552 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
553 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
555 AC_CONFIG_FILES([
556 Makefile
558 contrib/Makefile
559 contrib/dist/Makefile
560 contrib/dist/debian/Makefile
561 contrib/dist/gentoo/Makefile
562 contrib/dist/redhat/Makefile
563 contrib/dist/redhat/mc.spec
564 contrib/dist/mc.qpg
565 contrib/dist/pkginfo
566 contrib/dist/prototype
568 misc/Makefile
569 misc/skins/Makefile
570 misc/mc.ext
572 src/Makefile
573 src/filehighlight/Makefile
574 src/mcconfig/Makefile
575 src/search/Makefile
576 src/skin/Makefile
577 src/tty/Makefile
578 src/viewer/Makefile
580 edit/Makefile
581 syntax/Makefile
583 vfs/Makefile
584 vfs/extfs/Makefile
585 vfs/extfs/a
586 vfs/extfs/apt
587 vfs/extfs/audio
588 vfs/extfs/deb
589 vfs/extfs/deba
590 vfs/extfs/debd
591 vfs/extfs/dpkg
592 vfs/extfs/iso9660
593 vfs/extfs/hp48
594 vfs/extfs/lslR
595 vfs/extfs/mailfs
596 vfs/extfs/patchfs
597 vfs/extfs/rpms
598 vfs/extfs/uace
599 vfs/extfs/ualz
600 vfs/extfs/uar
601 vfs/extfs/uarc
602 vfs/extfs/uarj
603 vfs/extfs/uc1541
604 vfs/extfs/uha
605 vfs/extfs/ulha
606 vfs/extfs/urar
607 vfs/extfs/uzip
608 vfs/extfs/uzoo
610 doc/Makefile
611 doc/hints/Makefile
612 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
613 doc/man/es/mc.1 doc/man/es/Makefile
614 doc/man/hu/mc.1 doc/man/hu/Makefile
615 doc/man/it/mc.1 doc/man/it/Makefile
616 doc/man/pl/mc.1 doc/man/pl/Makefile
617 doc/man/ru/mc.1 doc/man/ru/Makefile
618 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
620 doc/hlp/Makefile
621 doc/hlp/es/Makefile
622 doc/hlp/hu/Makefile
623 doc/hlp/it/Makefile
624 doc/hlp/pl/Makefile
625 doc/hlp/ru/Makefile
626 doc/hlp/sr/Makefile
628 intl/Makefile
629 po/Makefile.in
632 AC_OUTPUT
634 echo "
635 Configuration:
637   Source code location:       ${srcdir}
638   Compiler:                   ${CC}
639   Compiler flags:             ${CFLAGS}
640   File system:                ${vfs_type}
641                               ${vfs_flags}
642   Screen library:             ${screen_msg}
643   Mouse support:              ${mouse_lib}
644   X11 events support:         ${textmode_x11_support}
645   With subshell support:      ${subshell}
646   Internal editor:            ${edit_msg}
647   Support for charset:        ${charset_msg}
648   Search type:                ${SEARCH_TYPE}