2 dnl Configure.in file for the Midnight Commander
5 dnl 2.64 is required at least for m4_esyscmd_s()
8 AC_INIT([GNU Midnight Commander], m4_esyscmd_s([./version.sh .]),
9 [https://www.midnight-commander.org/wiki/NewTicket], [mc],
10 [https://www.midnight-commander.org/])
12 m4_pattern_forbid(MC_)
13 AC_CONFIG_MACRO_DIR([m4])
14 AC_CONFIG_AUX_DIR(config)
15 AC_CONFIG_SRCDIR(src/main.c)
16 AC_CONFIG_HEADERS(config.h)
18 dnl Apply "no-define" to avoid defining the VERSION macro in config.h
19 AM_INIT_AUTOMAKE([no-define])
20 dnl PACKAGE macro isn't defined if "no-define" is applied
21 AC_DEFINE([PACKAGE], ["mc"], [Name of package])
23 dnl Enable silent rules by default (if yes)
24 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
32 AC_USE_SYSTEM_EXTENSIONS
35 dnl ############################################################################
36 dnl Check for compiler
37 dnl ############################################################################
45 if test "x$CFLAGS" = "x"; then
48 if test x$USE_MAINTAINER_MODE = xyes; then
49 CFLAGS_OPTS="-g3 -O -ggdb"
50 AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
53 AC_ARG_ENABLE([werror],
54 AS_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors]))
55 if test "x$enable_werror" = xyes; then
56 AX_APPEND_COMPILE_FLAGS([-Werror], [mc_configured_cflags])
59 dnl Compiler can generate warnings for unrecognized flags added to CFLAGS
60 dnl which causes attribute checks to fail
61 ax_gcc_func_attribute_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
62 _AC_LANG_PREFIX[]FLAGS=
63 AX_GCC_FUNC_ATTRIBUTE([fallthrough])
64 _AC_LANG_PREFIX[]FLAGS=$ax_gcc_func_attribute_save_flags
65 unset ax_gcc_func_attribute_save_flags
70 dnl ############################################################################
71 dnl Check for programs
72 dnl ############################################################################
77 dnl See also the "OS specific stuff" section below.
79 dnl Check nroff and the options it supports
80 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
85 AC_MSG_CHECKING([for manual formatting macros])
86 AC_CACHE_VAL(mc_cv_mandoc, [
87 nroff -mandoc < /dev/null > /dev/null 2>&1
95 AC_MSG_RESULT([$MANDOC])
97 AC_MSG_CHECKING([for option to disable ANSI color in manuals])
98 AC_CACHE_VAL(mc_cv_man_nocolor, [
99 nroff -c < /dev/null > /dev/null 2>&1
106 MAN_FLAGS=$mc_cv_man_nocolor
107 AC_MSG_RESULT([${MAN_NOCOLOR-none}])
109 AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
110 AC_CACHE_VAL(mc_cv_nroff_tascii, [
112 nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
114 mc_cv_nroff_tascii=-Tlatin1
116 nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
118 mc_cv_nroff_tascii=-Tascii
122 AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
123 MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
129 dnl Check for -z, -L, and -S options to file
130 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
131 if $HAVE_FILECMD; then
132 dnl Don't use the file command if it doesn't accept the -z option
133 AC_MSG_CHECKING([for -z option to file command])
134 AC_CACHE_VAL(mc_cv_file_z, [
135 file -z . > /dev/null 2>&1
142 AC_MSG_RESULT([$mc_cv_file_z])
144 if test x$mc_cv_file_z = xyes; then
145 AC_DEFINE(USE_FILE_CMD, 1, [Define if the file command accepts the -z option])
147 AC_MSG_WARN([The file command doesn't accept the -z option and will not be used])
150 if test x$mc_cv_file_z = xyes; then
151 dnl file is used; check -L and -S options
153 AC_MSG_CHECKING([for -L option to file command])
154 AC_CACHE_VAL(mc_cv_file_L, [
155 file -L . > /dev/null 2>&1
162 AC_MSG_RESULT([$mc_cv_file_L])
164 if test x$mc_cv_file_L = xyes; then
165 AC_DEFINE(FILE_L, "-L ", [Define if the file command accepts the -L option])
167 AC_DEFINE(FILE_L, "", [Define if the file command accepts the -L option])
170 dnl The file command accepts the -S option since 5.33
171 AC_MSG_CHECKING([for -S option to file command])
172 AC_CACHE_VAL(mc_cv_file_S, [
173 file -S . > /dev/null 2>&1
180 AC_MSG_RESULT([$mc_cv_file_S])
182 if test x$mc_cv_file_S = xyes; then
183 AC_DEFINE(FILE_S, "-S ", [Define if file command accepts the -S option])
185 AC_DEFINE(FILE_S, "", [Define if file command accepts the -S option])
190 dnl Only list browsers here that can be run in background (i.e. with `&')
191 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla firefox konqueror opera])
194 dnl ############################################################################
195 dnl Check for other tools
196 dnl ############################################################################
198 AC_CHECK_TOOL(AR, ar, ar)
202 dnl ############################################################################
203 dnl Check for main libraies
204 dnl ############################################################################
207 mc_G_MODULE_SUPPORTED
210 dnl X11 support. Used to read keyboard modifiers when running under X11.
214 dnl ############################################################################
215 dnl Check for header files
216 dnl ############################################################################
218 AC_CHECK_HEADERS([string.h memory.h limits.h malloc.h \
219 utime.h sys/statfs.h sys/vfs.h \
220 sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
222 dnl This macro is redefined in m4.include/gnulib/sys_types_h.m4
223 dnl to work around a buggy version in autoconf <= 2.69.
227 dnl ############################################################################
229 dnl ############################################################################
231 dnl Check largefile before type sizeof checks
234 AC_CHECK_SIZEOF(long)
236 AC_CHECK_SIZEOF(uintmax_t)
238 AC_CHECK_SIZEOF(off_t)
240 gl_PROMOTED_TYPE_MODE_T
245 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev, struct stat.st_mtim])
248 AH_TEMPLATE([sig_atomic_t],
249 [/* Define to `int' if <signal.h> doesn't define.])
250 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
251 [Some systems declare sig_atomic_t as volatile, some others -- no.
252 This define will have value `sig_atomic_t' or
253 `volatile sig_atomic_t' accordingly.])
255 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
256 AC_EGREP_HEADER(sig_atomic_t,signal.h,
258 ac_cv_type_sig_atomic_t=yes;
259 AC_EGREP_HEADER(volatile.*sig_atomic_t,
262 is_sig_atomic_t_volatile=yes;
263 AC_MSG_RESULT([yes, volatile])
266 is_sig_atomic_t_volatile=no;
267 AC_MSG_RESULT([yes, non volatile])
272 AC_CHECK_TYPE(sig_atomic_t, int)
273 is_sig_atomic_t_volatile=no
275 if test $is_sig_atomic_t_volatile = 'yes'
277 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
279 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
283 dnl ############################################################################
284 dnl Check for functions
285 dnl ############################################################################
293 dnl getpt is a GNU Extension (glibc 2.1.x)
294 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
295 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
297 dnl replacing lstat with statlstat on sco makes it more portable between
299 AC_CHECK_FUNCS(statlstat)
301 dnl Ovverriding mmap support. This has to be before AC_FUNC_MMAP is used.
302 dnl We use only part of the functionality of mmap, so on AIX,
303 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
305 AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
306 if test x$with_mmap != xno; then
307 if test x$with_mmap = x; then
310 AC_DEFINE(HAVE_MMAP, 1)
317 dnl ############################################################################
318 dnl Internationalization
319 dnl ############################################################################
321 AC_CHECK_FUNCS([setlocale])
323 AM_GNU_GETTEXT([external], [need-ngettext])
324 AM_GNU_GETTEXT_VERSION([0.18.2])
328 dnl ############################################################################
329 dnl OS specific stuff
330 dnl ############################################################################
334 AC_PATH_PROG([PERL], [perl], [/QOpenSys/pkgs/bin/perl])
335 AC_PATH_PROG([PYTHON], [python], [/QOpenSys/pkgs/bin/python2])
336 AC_PATH_PROG([RUBY], [ruby], [/QOpenSys/pkgs/bin/ruby])
339 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
340 AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
341 AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
348 AC_DEFINE(_POSIX_SOURCE)
352 dnl If running under AIX, AC_AIX does not tell us that
353 AC_MSG_CHECKING([for AIX defines])
356 #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
361 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
368 dnl utimensat is supported since glibc 2.6 and specified in POSIX.1-2008
369 dnl utimensat() causes different timespec structures to cause failures on IBM i and AIX
374 AC_CHECK_FUNCS([utimensat])
380 AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd])
383 dnl Check linux/fs.h for FICLONE to support BTRFS's file clone operation
386 AC_CHECK_HEADERS([linux/fs.h])
389 dnl Check if the OS is supported by the console saver.
396 dnl Check for gpm mouse support (Linux only)
397 mouse_lib="xterm only"
398 AC_ARG_WITH([gpm-mouse],
399 AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
403 if test x$with_gpm_mouse != xno; then
404 AC_CHECK_LIB(gpm, Gpm_Repeat,
405 [AC_DEFINE(HAVE_LIBGPM, 1,
406 [Define to enable gpm mouse support on Linux])
407 mouse_lib="gpm and xterm"
408 MCLIBS="$MCLIBS -lgpm"],
409 if test "x$with_gpm_mouse" = "xyes"; then
410 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
412 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
420 dnl ############################################################################
422 dnl ############################################################################
424 LIBMC_VERSION="0.0.1"
426 AC_SUBST(LIBMC_VERSION)
427 AC_SUBST(LIBMC_RELEASE)
429 AC_ARG_ENABLE([mclib],
430 [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
432 if test "x$enableval" = "xno" ; then
435 if test "x$enable_shared" = "xno" ; then
436 AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
445 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
448 dnl ############################################################################
450 dnl ############################################################################
454 mc_WITH_INTERNAL_EDIT
456 dnl Diff viewer support.
457 AC_ARG_WITH([diff_viewer],
458 AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
460 if test x$with_diff_viewer != xno; then
461 AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
464 AC_MSG_NOTICE([using diff viewer])
474 dnl ############################################################################
476 dnl ############################################################################
478 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
479 dnl Let define ${prefix} and ${exec_prefix}
480 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
481 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
483 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
484 EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
485 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
486 EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
488 EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
490 AC_SUBST(EXTHELPERSDIR)
493 dnl ############################################################################
495 dnl ############################################################################
497 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
500 dnl Determine which help translations we want to install.
501 ALL_DOC_LINGUAS="es hu it pl ru sr"
504 if test "x$USE_NLS" = xyes; then
505 if test -z "$LINGUAS"; then
506 langs="`grep -v '^#' $srcdir/po/LINGUAS`"
514 for h_lang in $ALL_DOC_LINGUAS; do
515 for lang in $langs; do
516 if test "$lang" = "$h_lang"; then
517 DOC_LINGUAS="$DOC_LINGUAS $lang"
522 AC_SUBST(DOC_LINGUAS)
532 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
535 dnl ############################################################################
536 dnl Configure results
537 dnl ############################################################################
539 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
547 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
548 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
549 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
550 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
551 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
552 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
553 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
554 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
555 dnl Clarify do we really need GModule
556 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
557 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
559 AC_ARG_ENABLE([configure-args],
560 AS_HELP_STRING([--enable-configure-args], [Handle all compiler warnings as errors]))
561 if test "x$enable_configure_args" != xno; then
562 AC_DEFINE([ENABLE_CONFIGURE_ARGS], 1, [Define to enable showing configure arguments in help])
563 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
572 chmod +x src/man2hlp/man2hlp
590 misc/macros.d/Makefile
594 src/consaver/Makefile
597 src/subshell/Makefile
599 src/diffviewer/Makefile
600 src/filemanager/Makefile
604 src/vfs/cpio/Makefile
606 src/vfs/extfs/Makefile
607 src/vfs/extfs/helpers/Makefile
608 src/vfs/extfs/helpers/a+
609 src/vfs/extfs/helpers/apt+
610 src/vfs/extfs/helpers/audio
611 src/vfs/extfs/helpers/deb
612 src/vfs/extfs/helpers/deba
613 src/vfs/extfs/helpers/debd
614 src/vfs/extfs/helpers/dpkg+
615 src/vfs/extfs/helpers/iso9660
616 src/vfs/extfs/helpers/hp48+
617 src/vfs/extfs/helpers/lslR
618 src/vfs/extfs/helpers/mailfs
619 src/vfs/extfs/helpers/patchfs
620 src/vfs/extfs/helpers/rpms+
621 src/vfs/extfs/helpers/s3+
622 src/vfs/extfs/helpers/uace
623 src/vfs/extfs/helpers/ualz
624 src/vfs/extfs/helpers/uar
625 src/vfs/extfs/helpers/uarc
626 src/vfs/extfs/helpers/uarj
627 src/vfs/extfs/helpers/ucab
628 src/vfs/extfs/helpers/uha
629 src/vfs/extfs/helpers/ulha
630 src/vfs/extfs/helpers/ulib
631 src/vfs/extfs/helpers/unar
632 src/vfs/extfs/helpers/urar
633 src/vfs/extfs/helpers/uwim
634 src/vfs/extfs/helpers/uzip
635 src/vfs/extfs/helpers/uzoo
637 src/vfs/fish/Makefile
638 src/vfs/fish/helpers/Makefile
640 src/vfs/ftpfs/Makefile
642 src/vfs/sftpfs/Makefile
644 src/vfs/local/Makefile
650 src/vfs/undelfs/Makefile
654 lib/filehighlight/Makefile
655 lib/mcconfig/Makefile
671 doc/hints/l10n/Makefile
695 tests/lib/mcconfig/Makefile
696 tests/lib/search/Makefile
697 tests/lib/strutil/Makefile
698 tests/lib/vfs/Makefile
699 tests/lib/widget/Makefile
701 tests/src/filemanager/Makefile
702 tests/src/editor/Makefile
703 tests/src/editor/test-data.txt
704 tests/src/vfs/Makefile
705 tests/src/vfs/extfs/Makefile
706 tests/src/vfs/extfs/helpers-list/Makefile
707 tests/src/vfs/extfs/helpers-list/data/config.sh
708 tests/src/vfs/extfs/helpers-list/misc/Makefile
709 tests/src/vfs/ftpfs/Makefile
718 Source code location: ${srcdir}
720 Compiler flags: ${CFLAGS}
721 Assertions: ${enable_assert}
722 Unit tests: ${tests_msg}
723 File system: ${vfs_type}
725 Screen library: ${screen_msg}
726 Mouse support: ${mouse_lib}
727 X11 events support: ${textmode_x11_support}
728 With subshell support: ${subshell}
729 With background operations: ${enable_background}
730 With ext2fs attributes support: ${ext2fs_attr_msg}
731 Internal editor: ${edit_msg}
732 Diff viewer: ${diff_msg}
733 Support for charset: ${charset_msg}
734 Search type: ${SEARCH_TYPE}
737 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
738 dnl we enable it back for top-level ./configure
739 if test -n "$ac_unrecognized_opts"; then
740 case $enable_option_checking in
741 fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
742 *) AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;