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 ############################################################################
78 dnl See also the "OS specific stuff" section below.
80 dnl Check nroff and the options it supports
81 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
86 AC_MSG_CHECKING([for manual formatting macros])
87 AC_CACHE_VAL(mc_cv_mandoc, [
88 nroff -mandoc < /dev/null > /dev/null 2>&1
96 AC_MSG_RESULT([$MANDOC])
98 AC_MSG_CHECKING([for option to disable ANSI color in manuals])
99 AC_CACHE_VAL(mc_cv_man_nocolor, [
100 nroff -c < /dev/null > /dev/null 2>&1
107 MAN_FLAGS=$mc_cv_man_nocolor
108 AC_MSG_RESULT([${MAN_NOCOLOR-none}])
110 AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
111 AC_CACHE_VAL(mc_cv_nroff_tascii, [
113 nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
115 mc_cv_nroff_tascii=-Tlatin1
117 nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
119 mc_cv_nroff_tascii=-Tascii
123 AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
124 MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
130 dnl Check for -z, -b, -L, and -S options to file
131 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
132 if $HAVE_FILECMD; then
133 dnl Don't use the file command if it doesn't accept the -z option
134 AC_MSG_CHECKING([for -z option to file command])
135 AC_CACHE_VAL(mc_cv_file_z, [
136 file -z . > /dev/null 2>&1
143 AC_MSG_RESULT([$mc_cv_file_z])
145 if test x$mc_cv_file_z = xyes; then
146 AC_DEFINE(USE_FILE_CMD, 1, [Define if the file command accepts the -z option])
148 AC_MSG_WARN([The file command doesn't accept the -z option and will not be used])
151 if test x$mc_cv_file_z = xyes; then
152 dnl file is used; check -b, -L and -S options
154 AC_MSG_CHECKING([for -b option to file command])
155 AC_CACHE_VAL(mc_cv_file_b, [
156 file -b . > /dev/null 2>&1
163 AC_MSG_RESULT([$mc_cv_file_b])
165 if test x$mc_cv_file_b = xyes; then
166 AC_DEFINE(FILE_B, "-b ", [Define if the file command accepts the -b option])
169 AC_MSG_CHECKING([for -L option to file command])
170 AC_CACHE_VAL(mc_cv_file_L, [
171 file -L . > /dev/null 2>&1
178 AC_MSG_RESULT([$mc_cv_file_L])
180 if test x$mc_cv_file_L = xyes; then
181 AC_DEFINE(FILE_L, "-L ", [Define if the file command accepts the -L option])
183 AC_DEFINE(FILE_L, "", [Define if the file command accepts the -L option])
186 dnl The file command accepts the -S option since 5.33
187 AC_MSG_CHECKING([for -S option to file command])
188 AC_CACHE_VAL(mc_cv_file_S, [
189 file -S . > /dev/null 2>&1
196 AC_MSG_RESULT([$mc_cv_file_S])
198 if test x$mc_cv_file_S = xyes; then
199 AC_DEFINE(FILE_S, "-S ", [Define if file command accepts the -S option])
201 AC_DEFINE(FILE_S, "", [Define if file command accepts the -S option])
206 dnl Only list browsers here that can be run in background (i.e. with `&')
207 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla firefox konqueror opera])
210 dnl ############################################################################
211 dnl Check for other tools
212 dnl ############################################################################
214 AC_CHECK_TOOL(AR, ar, ar)
215 AC_CHECK_TOOL(INDENT, gindent, indent)
219 dnl ############################################################################
220 dnl Check for main libraries
221 dnl ############################################################################
224 mc_G_MODULE_SUPPORTED
227 dnl X11 support. Used to read keyboard modifiers when running under X11.
231 dnl ############################################################################
232 dnl Check for header files
233 dnl ############################################################################
235 AC_CHECK_HEADERS([string.h memory.h limits.h malloc.h \
236 utime.h sys/statfs.h sys/vfs.h \
237 sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
239 dnl This macro is redefined in m4.include/gnulib/sys_types_h.m4
240 dnl to work around a buggy version in autoconf <= 2.69.
244 dnl ############################################################################
246 dnl ############################################################################
248 dnl Check largefile before type sizeof checks
251 AC_CHECK_SIZEOF(long)
253 AC_CHECK_SIZEOF(uintmax_t)
255 AC_CHECK_SIZEOF(off_t)
257 gl_PROMOTED_TYPE_MODE_T
260 AC_CHECK_TYPE([major_t], [], [AC_DEFINE([major_t], [int], [Type of major device numbers.])])
261 AC_CHECK_TYPE([minor_t], [], [AC_DEFINE([minor_t], [int], [Type of minor device numbers.])])
264 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev, struct stat.st_mtim])
267 AH_TEMPLATE([sig_atomic_t],
268 [/* Define to `int' if <signal.h> doesn't define.])
269 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
270 [Some systems declare sig_atomic_t as volatile, some others -- no.
271 This define will have value `sig_atomic_t' or
272 `volatile sig_atomic_t' accordingly.])
274 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
275 AC_EGREP_HEADER(sig_atomic_t,signal.h,
277 ac_cv_type_sig_atomic_t=yes;
278 AC_EGREP_HEADER(volatile.*sig_atomic_t,
281 is_sig_atomic_t_volatile=yes;
282 AC_MSG_RESULT([yes, volatile])
285 is_sig_atomic_t_volatile=no;
286 AC_MSG_RESULT([yes, non volatile])
291 AC_CHECK_TYPE(sig_atomic_t, int)
292 is_sig_atomic_t_volatile=no
294 if test $is_sig_atomic_t_volatile = 'yes'
296 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
298 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
302 dnl ############################################################################
303 dnl Check for functions
304 dnl ############################################################################
312 dnl getpt is a GNU Extension (glibc 2.1.x)
313 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
314 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
316 dnl replacing lstat with statlstat on sco makes it more portable between
318 AC_CHECK_FUNCS(statlstat)
320 dnl Overriding mmap support. This has to be before AC_FUNC_MMAP is used.
321 dnl We use only part of the functionality of mmap, so on AIX,
322 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
324 AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
325 if test x$with_mmap != xno; then
326 if test x$with_mmap = x; then
329 AC_DEFINE(HAVE_MMAP, 1)
336 dnl ############################################################################
337 dnl Internationalization
338 dnl ############################################################################
340 AC_CHECK_FUNCS([setlocale])
342 AM_GNU_GETTEXT([external], [need-ngettext])
343 AM_GNU_GETTEXT_VERSION([0.18.2])
347 dnl ############################################################################
348 dnl OS specific stuff
349 dnl ############################################################################
353 AC_PATH_PROG([PERL], [perl], [/QOpenSys/pkgs/bin/perl])
354 AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/QOpenSys/pkgs/bin/perl])
355 AC_PATH_PROG([PYTHON], [python], [/QOpenSys/pkgs/bin/python2])
356 AC_PATH_PROG([RUBY], [ruby], [/QOpenSys/pkgs/bin/ruby])
359 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
360 AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/usr/bin/perl])
361 AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
362 AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
369 AC_DEFINE(_POSIX_SOURCE)
373 dnl If running under AIX, AC_AIX does not tell us that
374 AC_MSG_CHECKING([for AIX defines])
377 #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
382 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
389 dnl utimensat is supported since glibc 2.6 and specified in POSIX.1-2008
390 dnl utimensat() causes different timespec structures to cause failures on IBM i and AIX
395 AC_CHECK_FUNCS([utimensat])
401 AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd])
404 dnl Check linux/fs.h for FICLONE to support BTRFS's file clone operation
407 AC_CHECK_HEADERS([linux/fs.h])
410 dnl Check if the OS is supported by the console saver.
417 dnl Check for gpm mouse support (Linux only)
418 mouse_lib="xterm only"
419 AC_ARG_WITH([gpm-mouse],
420 AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
424 if test x$with_gpm_mouse != xno; then
425 AC_CHECK_LIB(gpm, Gpm_Repeat,
426 [AC_DEFINE(HAVE_LIBGPM, 1,
427 [Define to enable gpm mouse support on Linux])
428 mouse_lib="gpm and xterm"
429 MCLIBS="$MCLIBS -lgpm"],
430 if test "x$with_gpm_mouse" = "xyes"; then
431 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
433 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
441 dnl ############################################################################
443 dnl ############################################################################
445 LIBMC_VERSION="0.0.1"
447 AC_SUBST(LIBMC_VERSION)
448 AC_SUBST(LIBMC_RELEASE)
450 AC_ARG_ENABLE([mclib],
451 [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
453 if test "x$enableval" = "xno" ; then
456 if test "x$enable_shared" = "xno" ; then
457 AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
466 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
469 dnl ############################################################################
471 dnl ############################################################################
475 mc_WITH_INTERNAL_EDIT
477 dnl Diff viewer support.
478 AC_ARG_WITH([diff_viewer],
479 AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
481 if test x$with_diff_viewer != xno; then
482 AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
485 AC_MSG_NOTICE([using diff viewer])
495 dnl ############################################################################
497 dnl ############################################################################
499 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
500 dnl Let define ${prefix} and ${exec_prefix}
501 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
502 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
504 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
505 EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
506 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
507 EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
509 EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
511 AC_SUBST(EXTHELPERSDIR)
514 dnl ############################################################################
516 dnl ############################################################################
518 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
521 dnl Determine which help translations we want to install.
522 ALL_DOC_LINGUAS="es hu it pl ru sr"
525 if test "x$USE_NLS" = xyes; then
526 if test -z "$LINGUAS"; then
527 langs="`grep -v '^#' $srcdir/po/LINGUAS`"
535 for h_lang in $ALL_DOC_LINGUAS; do
536 for lang in $langs; do
537 if test "$lang" = "$h_lang"; then
538 DOC_LINGUAS="$DOC_LINGUAS $lang"
543 AC_SUBST(DOC_LINGUAS)
553 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
556 dnl ############################################################################
557 dnl Configure results
558 dnl ############################################################################
560 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
568 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
569 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
570 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
571 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
572 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
573 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
574 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
575 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
576 dnl Clarify do we really need GModule
577 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
578 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
580 AC_ARG_ENABLE([configure-args],
581 AS_HELP_STRING([--enable-configure-args], [Embed ./configure arguments into binaries]))
582 if test "x$enable_configure_args" != xno; then
583 AC_DEFINE([ENABLE_CONFIGURE_ARGS], 1, [Define to enable showing configure arguments in help])
584 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
593 chmod +x src/man2hlp/man2hlp
611 misc/macros.d/Makefile
615 src/consaver/Makefile
618 src/subshell/Makefile
620 src/diffviewer/Makefile
621 src/filemanager/Makefile
625 src/vfs/cpio/Makefile
627 src/vfs/extfs/Makefile
628 src/vfs/extfs/helpers/Makefile
629 src/vfs/extfs/helpers/a+
630 src/vfs/extfs/helpers/apt+
631 src/vfs/extfs/helpers/audio
632 src/vfs/extfs/helpers/deb
633 src/vfs/extfs/helpers/deba
634 src/vfs/extfs/helpers/debd
635 src/vfs/extfs/helpers/dpkg+
636 src/vfs/extfs/helpers/iso9660
637 src/vfs/extfs/helpers/hp48+
638 src/vfs/extfs/helpers/lslR
639 src/vfs/extfs/helpers/mailfs
640 src/vfs/extfs/helpers/patchfs
641 src/vfs/extfs/helpers/rpms+
642 src/vfs/extfs/helpers/s3+
643 src/vfs/extfs/helpers/uace
644 src/vfs/extfs/helpers/ualz
645 src/vfs/extfs/helpers/uar
646 src/vfs/extfs/helpers/uarc
647 src/vfs/extfs/helpers/uarj
648 src/vfs/extfs/helpers/ucab
649 src/vfs/extfs/helpers/uha
650 src/vfs/extfs/helpers/ulha
651 src/vfs/extfs/helpers/ulib
652 src/vfs/extfs/helpers/unar
653 src/vfs/extfs/helpers/urar
654 src/vfs/extfs/helpers/uwim
655 src/vfs/extfs/helpers/uzip
656 src/vfs/extfs/helpers/uzoo
658 src/vfs/shell/Makefile
659 src/vfs/shell/helpers/Makefile
661 src/vfs/ftpfs/Makefile
663 src/vfs/sftpfs/Makefile
665 src/vfs/local/Makefile
671 src/vfs/undelfs/Makefile
675 lib/filehighlight/Makefile
676 lib/mcconfig/Makefile
691 doc/hints/l10n/Makefile
712 dnl https://stackoverflow.com/questions/30897170/ac-subst-does-not-expand-variable/30932102#30932102
714 [misc/syntax/Syntax], [${SED-sed} -e "s%\${prefix}%$PREFIX%" misc/syntax/Syntax > misc/syntax/Syntax.tmp && \
715 mv -f misc/syntax/Syntax.tmp misc/syntax/Syntax], [export PREFIX=$prefix]
721 tests/lib/mcconfig/Makefile
722 tests/lib/search/Makefile
723 tests/lib/strutil/Makefile
724 tests/lib/vfs/Makefile
725 tests/lib/widget/Makefile
727 tests/src/filemanager/Makefile
728 tests/src/editor/Makefile
729 tests/src/editor/test-data.txt
730 tests/src/vfs/Makefile
731 tests/src/vfs/extfs/Makefile
732 tests/src/vfs/extfs/helpers-list/Makefile
733 tests/src/vfs/extfs/helpers-list/data/config.sh
734 tests/src/vfs/extfs/helpers-list/misc/Makefile
735 tests/src/vfs/ftpfs/Makefile
744 Source code location: ${srcdir}
746 Compiler flags: ${CFLAGS}
747 Assertions: ${enable_assert}
748 Unit tests: ${tests_msg}
749 File system: ${vfs_type}
751 Screen library: ${screen_msg}
752 Mouse support: ${mouse_lib}
753 X11 events support: ${textmode_x11_support}
754 With subshell support: ${subshell}
755 With background operations: ${enable_background}
756 With ext2fs attributes support: ${ext2fs_attr_msg}
757 Internal editor: ${edit_msg}
758 Diff viewer: ${diff_msg}
759 Support for charset: ${charset_msg}
760 Search type: ${SEARCH_TYPE}
763 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
764 dnl we enable it back for top-level ./configure
765 if test -n "$ac_unrecognized_opts"; then
766 case $enable_option_checking in
767 fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
768 *) AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;