Ticket #2087: crash in standalone editor and viewer.
[kaloumi3.git] / configure.ac
blob6b553b6855fd6f4e42a91dbf6c4f119cbbd4f24d
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
25 AM_PROG_CC_C_O
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.8], [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.8)])
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 limits.h malloc.h \
145         utime.h fcntl.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_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         initgroups isascii \
166         memcpy memset \
167         setreuid statfs sysconf \
168         tcgetattr tcsetattr truncate \
169         strverscmp
173 dnl getpt is a GNU Extension (glibc 2.1.x)
175 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
176 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
178 dnl replacing lstat with statlstat on sco makes it more portable between
179 dnl sco clones
180 AC_CHECK_FUNCS(statlstat)
183 dnl If running under AIX, AC_AIX does not tell us that
185 AC_MSG_CHECKING([for AIX defines])
186 AC_EGREP_CPP(yes,
187 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
189 #endif
190 ], [
191 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
192 AC_MSG_RESULT(yes)
193 ], [AC_MSG_RESULT(no)])
196 dnl This is from GNU fileutils, check aclocal.m4 for more information
198 AC_GET_FS_INFO
201 dnl Missing typedefs and replacements
204 AC_CHECK_SIZEOF(long)
205 AC_CHECK_SIZEOF(long long)
206 AC_TYPE_MODE_T
207 AC_TYPE_OFF_T
208 AC_CHECK_SIZEOF(off_t)
209 AC_TYPE_PID_T
210 AC_TYPE_UID_T
211 AC_CHECK_TYPE(nlink_t, unsigned int)
212 AC_CHECK_TYPES([socklen_t],,,
214 #include <sys/types.h>
215 #include <sys/socket.h>
218 dnl This is needed for regex.c only
219 AC_CHECK_TYPE(uintptr_t,
220               [AC_DEFINE(HAVE_UINTPTR_T, 1,
221                          [Define if you have the `uintptr_t' type.])
224 AC_FUNC_ALLOCA
225 AC_FUNC_STRCOLL
228 dnl X11 support.
229 dnl Used to read keyboard modifiers when running under X11.
232 AC_PATH_XTRA
233 if test "x$no_x" = xyes; then
234     textmode_x11_support="no"
235 else
236     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
237     if test "x$mc_cv_g_module_supported" = "xyes" ; then
238         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
239         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
240         dnl functionality is supported on the system.  This way, mc will be
241         dnl linked against the gmodule library only when it's really required.
242         GLIB_CFLAGS="$GMODULE_CFLAGS"
243         GLIB_LIBS="$GMODULE_LIBS"
244     else
245         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
246     fi
247     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
248               [Define to enable getting events from X Window System])
249     textmode_x11_support="yes"
253 dnl Try to find static libraries for glib and gmodule.
255 if test x$with_glib_static = xyes; then
256     new_GLIB_LIBS=
257     for i in $GLIB_LIBS; do
258         case x$i in
259         x-lglib*)
260             lib=glib ;;
261         x-lgmodule*)
262             lib=gmodule ;;
263         *)
264             lib=
265             add="$i" ;;
266         esac
268         if test -n "$lib"; then
269             lib1=`echo $i | sed 's/^-l//'`
270             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
271                 add="$GLIB_LIBDIR/lib${lib1}.a"
272             else
273                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
274                     add="$GLIB_LIBDIR/lib${lib}.a"
275                 else
276                     AC_MSG_ERROR([Cannot find static $lib])
277                 fi
278             fi
279         fi
280         new_GLIB_LIBS="$new_GLIB_LIBS $add"
281     done
282     GLIB_LIBS="$new_GLIB_LIBS"
287 dnl Network related functions
290 AC_SEARCH_LIBS([socket], [socket])
291 AC_SEARCH_LIBS([gethostbyname], [nsl])
294 dnl Sequent wants getprocessstats
296 AC_CHECK_LIB(seq, get_process_stats, [
297         LIBS="$LIBS -lseq"
298         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
299                   [Define if you have function `get_process_stats' and
300 have to use that instead of gettimeofday])])
302 AC_MC_VFS_CHECKS
304 vfs_type="normal"
305 if test x$enable_vfs = xyes; then
306         AC_MSG_NOTICE([enabling VFS code])
307         vfs_type="Midnight Commander Virtual File System"
311 dnl Check for gpm mouse support (Linux only)
313 mouse_lib="xterm only"
314 AC_ARG_WITH(gpm-mouse,
315         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
316                            [[yes if found]]])
318 case $host_os in
319 linux*)
320     if test x$with_gpm_mouse != xno; then
321         AC_CHECK_LIB(gpm, Gpm_Repeat,
322             [AC_DEFINE(HAVE_LIBGPM, 1,
323                        [Define to enable gpm mouse support on Linux])
324             mouse_lib="gpm and xterm"
325             MCLIBS="$MCLIBS -lgpm"],
326             if test "x$with_gpm_mouse" = "xyes"; then
327                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
328             else
329                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
330             fi
331         )
332     fi
333     ;;
334 esac
336 MC_CHECK_SEARCH_TYPE
339 dnl Check nroff and the options it supports
341 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
343 dnl Default values
344 MANDOC=-man
345 MAN_FLAGS=
347 if $HAVE_nroff; then
348     AC_MSG_CHECKING([for manual formatting macros])
349     AC_CACHE_VAL(mc_cv_mandoc, [
350     nroff -mandoc < /dev/null > /dev/null 2>&1
351     if test $? = 0; then
352         mc_cv_mandoc=-mandoc
353     else
354         mc_cv_mandoc=-man
355     fi
356     ])
357     MANDOC=$mc_cv_mandoc
358     AC_MSG_RESULT([$MANDOC])
360     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
361     AC_CACHE_VAL(mc_cv_man_nocolor, [
362     nroff -c < /dev/null > /dev/null 2>&1
363     if test $? = 0; then
364         mc_cv_man_nocolor=-c
365     else
366         mc_cv_man_nocolor=
367     fi
368     ])
369     MAN_FLAGS=$mc_cv_man_nocolor
370     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
372     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
373     AC_CACHE_VAL(mc_cv_nroff_tascii, [
374     mc_cv_nroff_tascii=
375     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
376     if test $? = 0; then
377         mc_cv_nroff_tascii=-Tlatin1
378     else
379         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
380         if test $? = 0; then
381             mc_cv_nroff_tascii=-Tascii
382         fi
383     fi
384     ])
385     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
386     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
389 AC_SUBST(MANDOC)
390 AC_SUBST(MAN_FLAGS)
394 dnl Check for -L option to file
396 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
397 if $HAVE_FILECMD; then
398     AC_MSG_CHECKING([for -L option to file command])
399     AC_CACHE_VAL(mc_cv_filel, [
400     file -L . > /dev/null 2>&1
401     if test $? = 0; then
402         mc_cv_filel=yes
403     else
404         mc_cv_filel=no
405     fi
406     ])
407     if test x$mc_cv_filel = xyes; then
408         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
409     fi
410     filel=$mc_cv_filel
411     AC_MSG_RESULT([$filel])
415 AC_MSG_CHECKING([for subshell support])
416 AC_ARG_WITH(subshell,
417         [  --with-subshell          Compile in concurrent subshell [[yes]]
418   --with-subshell=optional Don't run concurrent shell by default [[no]]],
419         [result=no
420         if test x$withval = xoptional
421         then
422                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
423                           [Define to make subshell support optional])
424                 result="optional"
425         fi
426         if test x$withval = xyes
427         then
428                 result="yes"
429         fi],
430         [dnl Default: enable the subshell support
431         result="yes"
433 if test "x$result" != xno; then
434         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
435                   [Define to enable subshell support])
437 AC_MSG_RESULT([$result])
438 subshell="$result"
442 dnl Select the screen library.
444 AC_ARG_WITH(screen,
445         [  --with-screen=LIB        Compile with screen library: slang or
446                            ncurses [[slang if found]]])
448 case x$with_screen in
449 xslang)
450         MC_WITH_SLANG(strict)
451         ;;
452 xncurses)
453         MC_WITH_NCURSES
454         ;;
455 xncursesw)
456         MC_WITH_NCURSESW
457         ;;
459         MC_WITH_SLANG
460         ;;
462         AC_MSG_ERROR([Value of the screen library is incorrect])
463         ;;
464 esac
468 dnl Internal editor support.
470 AC_ARG_WITH(edit,
471         [  --with-edit              Enable internal editor [[yes]]])
473 if test x$with_edit != xno; then
474         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
475         use_edit=yes
476         edit_msg="yes"
477         AC_MSG_NOTICE([using internal editor])
478 else
479         edit_msg="no"
483 dnl Check if the OS is supported by the console saver.
484 cons_saver=""
485 case $host_os in
486 linux*)
487     cons_saver=yes
488 esac
491 dnl Support for background operations
492 AC_ARG_ENABLE([background],
493               [  --enable-background     Support for background file operations [[yes]]])
494 if test "x$enable_background" != xno; then
495     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
500 dnl User visible support for charset conversion.
502 AC_ARG_ENABLE([charset],
503               [  --enable-charset        Support for charset selection and conversion [[yes]]])
504 have_charset=
505 charset_msg="no"
506 if test "x$enable_charset" != "xno"; then
507     AC_DEFINE(HAVE_CHARSET, 1,
508               [Define to enable charset selection and conversion])
509     have_charset=yes
510     charset_msg="yes"
513 if test "$GLIBC21" != yes; then
514     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
517 MC_CHECK_CFLAGS
519 CFLAGS_OPTS=""
521 if test "x$CFLAGS" = "x"; then
522     CFLAGS_OPTS=" -O2 "
525 if test x$USE_MAINTAINER_MODE = xyes; then
526     CFLAGS_OPTS="-g3 -O -ggdb"
527     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
530 AC_ARG_ENABLE(
531     [werror],
532     AC_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors] )
535 if test "x$enable_werror" = xyes; then
536     MC_CHECK_ONE_CFLAG([-Werror])
538 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
540 AC_SUBST(CFLAGS)
541 AC_SUBST(CPPFLAGS)
542 AC_SUBST(LDFLAGS)
543 AC_SUBST(LIBS)
545 dnl Libraries used only when building the mc binary
546 AC_SUBST(MCLIBS)
548 if test -n "$use_smbfs"; then
549   AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
552 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
553 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
554 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
555 AM_CONDITIONAL(ENABLE_VFS_NET, [test x"$use_net_code" = xtrue])
556 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
557 AM_CONDITIONAL(ENABLE_MCSERVER, [test x"$enable_mcserver" = "xyes"])
558 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
559 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
561 AC_CONFIG_FILES([
562 Makefile
564 contrib/Makefile
565 contrib/dist/Makefile
566 contrib/dist/debian/Makefile
567 contrib/dist/gentoo/Makefile
568 contrib/dist/redhat/Makefile
569 contrib/dist/redhat/mc.spec
570 contrib/dist/mc.qpg
571 contrib/dist/pkginfo
572 contrib/dist/prototype
574 misc/Makefile
575 misc/skins/Makefile
576 misc/mc.ext
578 src/Makefile
579 src/consaver/Makefile
580 src/editor/Makefile
581 src/viewer/Makefile
583 lib/Makefile
584 lib/filehighlight/Makefile
585 lib/mcconfig/Makefile
586 lib/search/Makefile
587 lib/skin/Makefile
588 lib/strutil/Makefile
589 lib/tty/Makefile
590 lib/vfs/Makefile
591 lib/vfs/mc-vfs/Makefile
592 lib/vfs/mc-vfs/extfs/Makefile
593 lib/vfs/mc-vfs/extfs/a+
594 lib/vfs/mc-vfs/extfs/apt+
595 lib/vfs/mc-vfs/extfs/audio
596 lib/vfs/mc-vfs/extfs/deb
597 lib/vfs/mc-vfs/extfs/deba
598 lib/vfs/mc-vfs/extfs/debd
599 lib/vfs/mc-vfs/extfs/dpkg+
600 lib/vfs/mc-vfs/extfs/iso9660
601 lib/vfs/mc-vfs/extfs/hp48+
602 lib/vfs/mc-vfs/extfs/lslR
603 lib/vfs/mc-vfs/extfs/mailfs
604 lib/vfs/mc-vfs/extfs/patchfs
605 lib/vfs/mc-vfs/extfs/rpms+
606 lib/vfs/mc-vfs/extfs/s3+
607 lib/vfs/mc-vfs/extfs/uace
608 lib/vfs/mc-vfs/extfs/ualz
609 lib/vfs/mc-vfs/extfs/uar
610 lib/vfs/mc-vfs/extfs/uarc
611 lib/vfs/mc-vfs/extfs/uarj
612 lib/vfs/mc-vfs/extfs/uc1541
613 lib/vfs/mc-vfs/extfs/uha
614 lib/vfs/mc-vfs/extfs/ulha
615 lib/vfs/mc-vfs/extfs/urar
616 lib/vfs/mc-vfs/extfs/uzip
617 lib/vfs/mc-vfs/extfs/uzoo
619 misc/syntax/Makefile
621 doc/Makefile
622 doc/hints/Makefile
623 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/mcserv.8 doc/man/Makefile
624 doc/man/es/mc.1 doc/man/es/Makefile
625 doc/man/hu/mc.1 doc/man/hu/Makefile
626 doc/man/it/mc.1 doc/man/it/Makefile
627 doc/man/pl/mc.1 doc/man/pl/Makefile
628 doc/man/ru/mc.1 doc/man/ru/Makefile
629 doc/man/sr/mc.1 doc/man/sr/mcserv.8 doc/man/sr/Makefile
631 doc/hlp/Makefile
632 doc/hlp/es/Makefile
633 doc/hlp/hu/Makefile
634 doc/hlp/it/Makefile
635 doc/hlp/pl/Makefile
636 doc/hlp/ru/Makefile
637 doc/hlp/sr/Makefile
639 intl/Makefile
640 po/Makefile.in
643 AC_OUTPUT
645 if test x$enable_mcserver = x; then
646     enable_mcserver='no'
649 echo "
650 Configuration:
652   Source code location:       ${srcdir}
653   Compiler:                   ${CC}
654   Compiler flags:             ${CFLAGS}
655   File system:                ${vfs_type}
656                               ${vfs_flags}
657   Screen library:             ${screen_msg}
658   Mouse support:              ${mouse_lib}
659   X11 events support:         ${textmode_x11_support}
660   With subshell support:      ${subshell}
661   Internal editor:            ${edit_msg}
662   Support for charset:        ${charset_msg}
663   Search type:                ${SEARCH_TYPE}