src/filemanager/mountlist.c: use GLib functions to allocate/free memory.
[midnight-commander.git] / configure.ac
blobcccbbd142ad8432cd4bed0f2376aa6ce1293ab28
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 LIBMC_VERSION="0.0.1"
15 LIBMC_RELEASE="1"
16 AC_SUBST(LIBMC_VERSION)
17 AC_SUBST(LIBMC_RELEASE)
19 dnl Enable silent rules by default (if yes)
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
22 AM_CONFIG_HEADER(config.h)
23 AM_MAINTAINER_MODE
24 AC_CANONICAL_HOST
26 AC_USE_SYSTEM_EXTENSIONS
28 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS],["$ac_configure_args"],[MC configure arguments])
30 AC_PROG_LIBTOOL
31 PKG_PROG_PKG_CONFIG
32 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
33 AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
34 AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
36 AC_ISC_POSIX
38 AC_PROG_CC_STDC
39 AM_PROG_CC_C_O
41 dnl Doxygen
43 DX_HTML_FEATURE(ON)
44 DX_CHM_FEATURE(OFF)
45 DX_CHI_FEATURE(OFF)
46 DX_MAN_FEATURE(OFF)
47 DX_RTF_FEATURE(OFF)
48 DX_XML_FEATURE(OFF)
49 DX_PDF_FEATURE(OFF)
50 DX_PS_FEATURE(OFF)
51 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
53 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
55 AC_CHECK_GLIB
57 AC_ARG_ENABLE([mclib],
58         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
59         [
60             if test "x$enableval" = "xno" ; then
61                 enable_mclib=no
62             else
63                 if test "x$enable_shared" = "xno" ; then
64                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
65                     enable_mclib=no
66                 else
67                     enable_mclib=yes
68                 fi
69             fi
70         ],
71         [enable_mclib=no])
73 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
75 AC_HEADER_MAJOR
76 AC_C_CONST
77 dnl Check this before type sizeof checks
78 AC_SYS_LARGEFILE
80 AC_PROG_LN_S
81 AC_CHECK_TOOL(AR, ar, ar)
83 dnl Only list browsers here that can be run in background (i.e. with `&')
84 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla firefox konqueror opera])
86 dnl
87 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
88 dnl We use only part of the functionality of mmap, so on AIX,
89 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
90 dnl
91 AC_ARG_WITH(mmap,
92         [  --with-mmap              Use the mmap call [[yes if found]]])
93 if test x$with_mmap != xno; then
94     if test x$with_mmap = x; then
95         AC_FUNC_MMAP
96     else
97         AC_DEFINE(HAVE_MMAP, 1)
98     fi
102 dnl Internationalization
104 AM_GNU_GETTEXT(no-libtool, need-ngettext)
105 AM_GNU_GETTEXT_VERSION(0.14.3)
107 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
108     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
111 dnl Determine which help translations we want to install.
112 ALL_DOC_LINGUAS="es hu it pl ru sr"
114 DOC_LINGUAS=
115 if test "x$USE_NLS" = xyes; then
116     if test -z "$LINGUAS"; then
117         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
118     else
119         langs="$LINGUAS"
120     fi
121 else
122     langs=
125 for h_lang in $ALL_DOC_LINGUAS; do
126     for lang in $langs; do
127         if test "$lang" = "$h_lang"; then
128             DOC_LINGUAS="$DOC_LINGUAS $lang"
129             break
130         fi
131     done
132 done
133 AC_SUBST(DOC_LINGUAS)
136 dnl OS specific flags.
138 case $host_os in
139 aux*)
140     # A/UX
141     LIBS="$LIBS -lposix"
142     AC_DEFINE(_POSIX_SOURCE)
143     ;;
144 esac
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/select.h sys/ioctl.h stropts.h arpa/inet.h \
150         sys/socket.h sys/sysmacros.h sys/types.h sys/mkdev.h])
152 AC_HEADER_TIME
153 AC_HEADER_DIRENT
154 AC_HEADER_ASSERT
156 dnl Missing structure components
157 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
158 AC_STRUCT_ST_BLOCKS
161 dnl Check availability of some functions
164 AC_CHECK_FUNCS([\
165         atoll \
166         isascii \
167         statfs sysconf \
168         tcgetattr tcsetattr \
169         ftruncate \
170         strverscmp \
171         strncasecmp \
172         realpath
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 Missing typedefs and replacements
202 AC_CHECK_SIZEOF(long)
203 AC_TYPE_UINTMAX_T
204 AC_CHECK_SIZEOF(uintmax_t)
205 AC_TYPE_OFF_T
206 AC_CHECK_SIZEOF(off_t)
207 AC_TYPE_MODE_T
208 AC_TYPE_PID_T
209 AC_TYPE_UID_T
211 AH_TEMPLATE([sig_atomic_t],
212             [/* Define to `int' if <signal.h> doesn't define.])
213 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
214             [Some systems declare sig_atomic_t as volatile, some others -- no.
215              This define will have value `sig_atomic_t' or
216              `volatile sig_atomic_t' accordingly.])
218 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
219 AC_EGREP_HEADER(sig_atomic_t,signal.h,
220   [
221     ac_cv_type_sig_atomic_t=yes;
222     AC_EGREP_HEADER(volatile.*sig_atomic_t,
223                     signal.h,
224                     [
225                         is_sig_atomic_t_volatile=yes;
226                         AC_MSG_RESULT([yes, volatile])
227                     ],
228                     [
229                         is_sig_atomic_t_volatile=no;
230                         AC_MSG_RESULT([yes, non volatile])
231                     ])
232   ],
233   [
234     AC_MSG_RESULT(no)
235     AC_CHECK_TYPE(sig_atomic_t, int)
236     is_sig_atomic_t_volatile=no
237   ])
238 if test $is_sig_atomic_t_volatile = 'yes'
239 then
240     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
241 else
242     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
245 AC_FUNC_STRCOLL
247 mc_AC_GET_FS_INFO
250 dnl X11 support.
251 dnl Used to read keyboard modifiers when running under X11.
252 AC_PATH_XTRA
255 dnl Check if the gmodule functionality supported on this system.
256 AC_G_MODULE_SUPPORTED
259 dnl Sequent wants getprocessstats
261 AC_CHECK_LIB(seq, get_process_stats, [
262         LIBS="$LIBS -lseq"
263         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
264                   [Define if you have function `get_process_stats' and
265 have to use that instead of gettimeofday])])
267 AC_MC_VFS_CHECKS
270 dnl Check for gpm mouse support (Linux only)
272 mouse_lib="xterm only"
273 AC_ARG_WITH(gpm-mouse,
274         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
275                            [[yes if found]]])
277 case $host_os in
278 linux*)
279     if test x$with_gpm_mouse != xno; then
280         AC_CHECK_LIB(gpm, Gpm_Repeat,
281             [AC_DEFINE(HAVE_LIBGPM, 1,
282                        [Define to enable gpm mouse support on Linux])
283             mouse_lib="gpm and xterm"
284             MCLIBS="$MCLIBS -lgpm"],
285             if test "x$with_gpm_mouse" = "xyes"; then
286                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
287             else
288                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
289             fi
290         )
291     fi
292     ;;
293 esac
295 MC_CHECK_SEARCH_TYPE
298 dnl Check nroff and the options it supports
300 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
302 dnl Default values
303 MANDOC=-man
304 MAN_FLAGS=
306 if $HAVE_nroff; then
307     AC_MSG_CHECKING([for manual formatting macros])
308     AC_CACHE_VAL(mc_cv_mandoc, [
309     nroff -mandoc < /dev/null > /dev/null 2>&1
310     if test $? = 0; then
311         mc_cv_mandoc=-mandoc
312     else
313         mc_cv_mandoc=-man
314     fi
315     ])
316     MANDOC=$mc_cv_mandoc
317     AC_MSG_RESULT([$MANDOC])
319     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
320     AC_CACHE_VAL(mc_cv_man_nocolor, [
321     nroff -c < /dev/null > /dev/null 2>&1
322     if test $? = 0; then
323         mc_cv_man_nocolor=-c
324     else
325         mc_cv_man_nocolor=
326     fi
327     ])
328     MAN_FLAGS=$mc_cv_man_nocolor
329     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
331     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
332     AC_CACHE_VAL(mc_cv_nroff_tascii, [
333     mc_cv_nroff_tascii=
334     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
335     if test $? = 0; then
336         mc_cv_nroff_tascii=-Tlatin1
337     else
338         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
339         if test $? = 0; then
340             mc_cv_nroff_tascii=-Tascii
341         fi
342     fi
343     ])
344     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
345     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
348 AC_SUBST(MANDOC)
349 AC_SUBST(MAN_FLAGS)
353 dnl Check for -L option to file
355 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
356 if $HAVE_FILECMD; then
357     AC_MSG_CHECKING([for -L option to file command])
358     AC_CACHE_VAL(mc_cv_filel, [
359     file -L . > /dev/null 2>&1
360     if test $? = 0; then
361         mc_cv_filel=yes
362     else
363         mc_cv_filel=no
364     fi
365     ])
366     if test x$mc_cv_filel = xyes; then
367         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
368     fi
369     filel=$mc_cv_filel
370     AC_MSG_RESULT([$filel])
374 AC_MSG_CHECKING([for subshell support])
375 AC_ARG_WITH(subshell,
376         [  --with-subshell          Compile in concurrent subshell [[yes]]
377   --with-subshell=optional Don't run concurrent shell by default [[no]]],
378         [result=no
379         if test x$withval = xoptional
380         then
381                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
382                           [Define to make subshell support optional])
383                 result="optional"
384         fi
385         if test x$withval = xyes
386         then
387                 result="yes"
388         fi],
389         [dnl Default: enable the subshell support
390         result="yes"
392 if test "x$result" != xno; then
393         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
394                   [Define to enable subshell support])
396 AM_CONDITIONAL(HAVE_SUBSHELL_SUPPORT, [test "x$result" != xno])
397 AC_MSG_RESULT([$result])
398 subshell="$result"
401 MC_WITH_SCREEN
405 dnl Internal editor support.
407 AC_ARG_WITH(edit,
408         [  --with-edit              Enable internal editor [[yes]]])
410 if test x$with_edit != xno; then
411         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
412         use_edit=yes
413         edit_msg="yes"
414         AC_MSG_NOTICE([using internal editor])
415 else
416         edit_msg="no"
420 dnl Diff viewer support.
422 AC_ARG_WITH(diff_viewer,
423         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
425 if test x$with_diff_viewer != xno; then
426         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
427         use_diff=yes
428         diff_msg="yes"
429         AC_MSG_NOTICE([using diff viewer])
430 else
431         diff_msg="no"
435 dnl Check if the OS is supported by the console saver.
436 cons_saver=""
437 case $host_os in
438 linux*)
439     cons_saver=yes
440 esac
444 dnl Where config files should be placed
447 AC_ARG_WITH([homedir],
448     AS_HELP_STRING([--with-homedir], [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
449     [
450         if test "x$withval" = "xXDG"; then
451             with_homedir=XDG
452         else
453             with_homedir=$withval
454         fi
455     ],
456     [with_homedir=XDG])
459 if test x$with_homedir = xXDG; then
460     AC_DEFINE(MC_HOMEDIR_XDG, 1,
461         [Define to enable XDG standard support])
462 else
463     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
467 MC_BACKGROUND
471 dnl User visible support for charset conversion.
473 AC_ARG_ENABLE([charset],
474               [  --enable-charset        Support for charset selection and conversion [[yes]]])
475 have_charset=
476 charset_msg="no"
477 if test "x$enable_charset" != "xno"; then
478     AC_DEFINE(HAVE_CHARSET, 1,
479               [Define to enable charset selection and conversion])
480     have_charset=yes
481     charset_msg="yes"
484 if test "$GLIBC21" != yes; then
485     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
488 MC_CHECK_CFLAGS
490 CFLAGS_OPTS=""
492 if test "x$CFLAGS" = "x"; then
493     CFLAGS_OPTS=" -O2 "
496 if test x$USE_MAINTAINER_MODE = xyes; then
497     CFLAGS_OPTS="-g3 -O -ggdb"
498     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
501 AC_ARG_ENABLE(
502     [werror],
503     AS_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors])
506 if test "x$enable_werror" = xyes; then
507     MC_CHECK_ONE_CFLAG([-Werror])
509 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
511 MC_UNIT_TESTS
513 AC_SUBST(CFLAGS)
514 AC_SUBST(CPPFLAGS)
515 AC_SUBST(LDFLAGS)
516 AC_SUBST(LIBS)
518 dnl Libraries used only when building the mc binary
519 AC_SUBST(MCLIBS)
521 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
522 AC_SUBST(MAN_DATE)
524 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
525 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
526 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
527 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
528 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
529 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
530 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
532 AC_CONFIG_FILES(
534 src/man2hlp/man2hlp
537 chmod +x src/man2hlp/man2hlp
540 AC_CONFIG_FILES([
541 Makefile
543 contrib/Makefile
544 contrib/dist/Makefile
545 contrib/dist/gentoo/Makefile
546 contrib/dist/redhat/Makefile
547 contrib/dist/redhat/mc.spec
548 contrib/dist/pkginfo
549 contrib/dist/prototype
551 misc/Makefile
552 misc/skins/Makefile
553 misc/macros.d/Makefile
554 misc/mc.ext
556 src/Makefile
557 src/consaver/Makefile
558 src/editor/Makefile
559 src/man2hlp/Makefile
560 src/viewer/Makefile
561 src/diffviewer/Makefile
562 src/filemanager/Makefile
564 src/vfs/Makefile
566 src/vfs/cpio/Makefile
568 src/vfs/extfs/Makefile
569 src/vfs/extfs/helpers/Makefile
570 src/vfs/extfs/helpers/a+
571 src/vfs/extfs/helpers/apt+
572 src/vfs/extfs/helpers/audio
573 src/vfs/extfs/helpers/deb
574 src/vfs/extfs/helpers/deba
575 src/vfs/extfs/helpers/debd
576 src/vfs/extfs/helpers/dpkg+
577 src/vfs/extfs/helpers/iso9660
578 src/vfs/extfs/helpers/hp48+
579 src/vfs/extfs/helpers/lslR
580 src/vfs/extfs/helpers/mailfs
581 src/vfs/extfs/helpers/patchfs
582 src/vfs/extfs/helpers/rpms+
583 src/vfs/extfs/helpers/s3+
584 src/vfs/extfs/helpers/uace
585 src/vfs/extfs/helpers/ualz
586 src/vfs/extfs/helpers/uar
587 src/vfs/extfs/helpers/uarc
588 src/vfs/extfs/helpers/uarj
589 src/vfs/extfs/helpers/uc1541
590 src/vfs/extfs/helpers/ucab
591 src/vfs/extfs/helpers/uha
592 src/vfs/extfs/helpers/ulha
593 src/vfs/extfs/helpers/urar
594 src/vfs/extfs/helpers/uzip
595 src/vfs/extfs/helpers/uzoo
597 src/vfs/fish/Makefile
598 src/vfs/fish/helpers/Makefile
600 src/vfs/ftpfs/Makefile
602 src/vfs/local/Makefile
604 src/vfs/sfs/Makefile
606 src/vfs/smbfs/Makefile
608 src/vfs/tar/Makefile
610 src/vfs/undelfs/Makefile
612 lib/Makefile
613 lib/event/Makefile
614 lib/filehighlight/Makefile
615 lib/mcconfig/Makefile
616 lib/search/Makefile
617 lib/skin/Makefile
618 lib/strutil/Makefile
619 lib/tty/Makefile
621 lib/vfs/Makefile
623 lib/widget/Makefile
625 misc/syntax/Makefile
626 misc/syntax/Syntax
628 doc/Makefile
629 doc/hints/Makefile
630 doc/man/Makefile
631 doc/man/es/Makefile
632 doc/man/hu/Makefile
633 doc/man/it/Makefile
634 doc/man/pl/Makefile
635 doc/man/ru/Makefile
636 doc/man/sr/Makefile
638 doc/hlp/Makefile
639 doc/hlp/es/Makefile
640 doc/hlp/hu/Makefile
641 doc/hlp/it/Makefile
642 doc/hlp/pl/Makefile
643 doc/hlp/ru/Makefile
644 doc/hlp/sr/Makefile
646 intl/Makefile
647 po/Makefile.in
650 if test x$enable_tests != xno; then
651     AC_CONFIG_FILES([
652 tests/Makefile
653 tests/lib/Makefile
654 tests/lib/mcconfig/Makefile
655 tests/lib/search/Makefile
656 tests/lib/vfs/Makefile
657 tests/src/Makefile
658 tests/src/filemanager/Makefile
663 AC_OUTPUT
665 AC_MSG_NOTICE([
667 Configuration:
669   Source code location:       ${srcdir}
670   Compiler:                   ${CC}
671   Compiler flags:             ${CFLAGS}
672   File system:                ${vfs_type}
673                               ${vfs_flags}
674   Screen library:             ${screen_msg}
675   Mouse support:              ${mouse_lib}
676   X11 events support:         ${textmode_x11_support}
677   With subshell support:      ${subshell}
678   With background operations: ${enable_background}
679   Internal editor:            ${edit_msg}
680   Diff viewer:                ${diff_msg}
681   Support for charset:        ${charset_msg}
682   Search type:                ${SEARCH_TYPE}