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)
218 dnl ############################################################################
219 dnl Check for main libraries
220 dnl ############################################################################
223 mc_G_MODULE_SUPPORTED
226 dnl X11 support. Used to read keyboard modifiers when running under X11.
230 dnl ############################################################################
231 dnl Check for header files
232 dnl ############################################################################
234 AC_CHECK_HEADERS([string.h memory.h limits.h malloc.h \
235 utime.h sys/statfs.h sys/vfs.h \
236 sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
238 dnl This macro is redefined in m4.include/gnulib/sys_types_h.m4
239 dnl to work around a buggy version in autoconf <= 2.69.
243 dnl ############################################################################
245 dnl ############################################################################
247 dnl Check largefile before type sizeof checks
250 AC_CHECK_SIZEOF(long)
252 AC_CHECK_SIZEOF(uintmax_t)
254 AC_CHECK_SIZEOF(off_t)
256 gl_PROMOTED_TYPE_MODE_T
259 AC_CHECK_TYPE([major_t], [], [AC_DEFINE([major_t], [int], [Type of major device numbers.])])
260 AC_CHECK_TYPE([minor_t], [], [AC_DEFINE([minor_t], [int], [Type of minor device numbers.])])
263 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev, struct stat.st_mtim])
266 AH_TEMPLATE([sig_atomic_t],
267 [/* Define to `int' if <signal.h> doesn't define.])
268 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
269 [Some systems declare sig_atomic_t as volatile, some others -- no.
270 This define will have value `sig_atomic_t' or
271 `volatile sig_atomic_t' accordingly.])
273 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
274 AC_EGREP_HEADER(sig_atomic_t,signal.h,
276 ac_cv_type_sig_atomic_t=yes;
277 AC_EGREP_HEADER(volatile.*sig_atomic_t,
280 is_sig_atomic_t_volatile=yes;
281 AC_MSG_RESULT([yes, volatile])
284 is_sig_atomic_t_volatile=no;
285 AC_MSG_RESULT([yes, non volatile])
290 AC_CHECK_TYPE(sig_atomic_t, int)
291 is_sig_atomic_t_volatile=no
293 if test $is_sig_atomic_t_volatile = 'yes'
295 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
297 AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
301 dnl ############################################################################
302 dnl Check for functions
303 dnl ############################################################################
311 dnl getpt is a GNU Extension (glibc 2.1.x)
312 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
313 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
315 dnl replacing lstat with statlstat on sco makes it more portable between
317 AC_CHECK_FUNCS(statlstat)
319 dnl Overriding mmap support. This has to be before AC_FUNC_MMAP is used.
320 dnl We use only part of the functionality of mmap, so on AIX,
321 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
323 AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
324 if test x$with_mmap != xno; then
325 if test x$with_mmap = x; then
328 AC_DEFINE(HAVE_MMAP, 1)
335 dnl ############################################################################
336 dnl Internationalization
337 dnl ############################################################################
339 AC_CHECK_FUNCS([setlocale])
341 AM_GNU_GETTEXT([external], [need-ngettext])
342 AM_GNU_GETTEXT_VERSION([0.18.2])
346 dnl ############################################################################
347 dnl OS specific stuff
348 dnl ############################################################################
352 AC_PATH_PROG([PERL], [perl], [/QOpenSys/pkgs/bin/perl])
353 AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/QOpenSys/pkgs/bin/perl])
354 AC_PATH_PROG([PYTHON], [python], [/QOpenSys/pkgs/bin/python2])
355 AC_PATH_PROG([RUBY], [ruby], [/QOpenSys/pkgs/bin/ruby])
358 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
359 AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/usr/bin/perl])
360 AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
361 AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
368 AC_DEFINE(_POSIX_SOURCE)
372 dnl If running under AIX, AC_AIX does not tell us that
373 AC_MSG_CHECKING([for AIX defines])
376 #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
381 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
388 dnl utimensat is supported since glibc 2.6 and specified in POSIX.1-2008
389 dnl utimensat() causes different timespec structures to cause failures on IBM i and AIX
394 AC_CHECK_FUNCS([utimensat])
400 AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd])
403 dnl Check linux/fs.h for FICLONE to support BTRFS's file clone operation
406 AC_CHECK_HEADERS([linux/fs.h])
409 dnl Check if the OS is supported by the console saver.
416 dnl Check for gpm mouse support (Linux only)
417 mouse_lib="xterm only"
418 AC_ARG_WITH([gpm-mouse],
419 AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
423 if test x$with_gpm_mouse != xno; then
424 AC_CHECK_LIB(gpm, Gpm_Repeat,
425 [AC_DEFINE(HAVE_LIBGPM, 1,
426 [Define to enable gpm mouse support on Linux])
427 mouse_lib="gpm and xterm"
428 MCLIBS="$MCLIBS -lgpm"],
429 if test "x$with_gpm_mouse" = "xyes"; then
430 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
432 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
440 dnl ############################################################################
442 dnl ############################################################################
444 LIBMC_VERSION="0.0.1"
446 AC_SUBST(LIBMC_VERSION)
447 AC_SUBST(LIBMC_RELEASE)
449 AC_ARG_ENABLE([mclib],
450 [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
452 if test "x$enableval" = "xno" ; then
455 if test "x$enable_shared" = "xno" ; then
456 AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
465 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
468 dnl ############################################################################
470 dnl ############################################################################
474 mc_WITH_INTERNAL_EDIT
476 dnl Diff viewer support.
477 AC_ARG_WITH([diff_viewer],
478 AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
480 if test x$with_diff_viewer != xno; then
481 AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
484 AC_MSG_NOTICE([using diff viewer])
494 dnl ############################################################################
496 dnl ############################################################################
498 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
499 dnl Let define ${prefix} and ${exec_prefix}
500 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
501 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
503 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
504 EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
505 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
506 EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
508 EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
510 AC_SUBST(EXTHELPERSDIR)
513 dnl ############################################################################
515 dnl ############################################################################
517 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
520 dnl Determine which help translations we want to install.
521 ALL_DOC_LINGUAS="es hu it pl ru sr"
524 if test "x$USE_NLS" = xyes; then
525 if test -z "$LINGUAS"; then
526 langs="`grep -v '^#' $srcdir/po/LINGUAS`"
534 for h_lang in $ALL_DOC_LINGUAS; do
535 for lang in $langs; do
536 if test "$lang" = "$h_lang"; then
537 DOC_LINGUAS="$DOC_LINGUAS $lang"
542 AC_SUBST(DOC_LINGUAS)
552 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
555 dnl ############################################################################
556 dnl Configure results
557 dnl ############################################################################
559 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
567 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
568 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
569 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
570 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
571 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
572 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
573 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
574 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
575 dnl Clarify do we really need GModule
576 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
577 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
579 AC_ARG_ENABLE([configure-args],
580 AS_HELP_STRING([--enable-configure-args], [Embed ./configure arguments into binaries]))
581 if test "x$enable_configure_args" != xno; then
582 AC_DEFINE([ENABLE_CONFIGURE_ARGS], 1, [Define to enable showing configure arguments in help])
583 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
592 chmod +x src/man2hlp/man2hlp
610 misc/macros.d/Makefile
614 src/consaver/Makefile
617 src/subshell/Makefile
619 src/diffviewer/Makefile
620 src/filemanager/Makefile
624 src/vfs/cpio/Makefile
626 src/vfs/extfs/Makefile
627 src/vfs/extfs/helpers/Makefile
628 src/vfs/extfs/helpers/a+
629 src/vfs/extfs/helpers/apt+
630 src/vfs/extfs/helpers/audio
631 src/vfs/extfs/helpers/deb
632 src/vfs/extfs/helpers/deba
633 src/vfs/extfs/helpers/debd
634 src/vfs/extfs/helpers/dpkg+
635 src/vfs/extfs/helpers/iso9660
636 src/vfs/extfs/helpers/hp48+
637 src/vfs/extfs/helpers/lslR
638 src/vfs/extfs/helpers/mailfs
639 src/vfs/extfs/helpers/patchfs
640 src/vfs/extfs/helpers/rpms+
641 src/vfs/extfs/helpers/s3+
642 src/vfs/extfs/helpers/uace
643 src/vfs/extfs/helpers/ualz
644 src/vfs/extfs/helpers/uar
645 src/vfs/extfs/helpers/uarc
646 src/vfs/extfs/helpers/uarj
647 src/vfs/extfs/helpers/ucab
648 src/vfs/extfs/helpers/uha
649 src/vfs/extfs/helpers/ulha
650 src/vfs/extfs/helpers/ulib
651 src/vfs/extfs/helpers/unar
652 src/vfs/extfs/helpers/urar
653 src/vfs/extfs/helpers/uwim
654 src/vfs/extfs/helpers/uzip
655 src/vfs/extfs/helpers/uzoo
657 src/vfs/fish/Makefile
658 src/vfs/fish/helpers/Makefile
660 src/vfs/ftpfs/Makefile
662 src/vfs/sftpfs/Makefile
664 src/vfs/local/Makefile
670 src/vfs/undelfs/Makefile
674 lib/filehighlight/Makefile
675 lib/mcconfig/Makefile
690 doc/hints/l10n/Makefile
711 dnl https://stackoverflow.com/questions/30897170/ac-subst-does-not-expand-variable/30932102#30932102
713 [misc/syntax/Syntax], [${SED-sed} -e "s%\${prefix}%$PREFIX%" misc/syntax/Syntax > misc/syntax/Syntax.tmp && \
714 mv -f misc/syntax/Syntax.tmp misc/syntax/Syntax], [export PREFIX=$prefix]
720 tests/lib/mcconfig/Makefile
721 tests/lib/search/Makefile
722 tests/lib/strutil/Makefile
723 tests/lib/vfs/Makefile
724 tests/lib/widget/Makefile
726 tests/src/filemanager/Makefile
727 tests/src/editor/Makefile
728 tests/src/editor/test-data.txt
729 tests/src/vfs/Makefile
730 tests/src/vfs/extfs/Makefile
731 tests/src/vfs/extfs/helpers-list/Makefile
732 tests/src/vfs/extfs/helpers-list/data/config.sh
733 tests/src/vfs/extfs/helpers-list/misc/Makefile
734 tests/src/vfs/ftpfs/Makefile
743 Source code location: ${srcdir}
745 Compiler flags: ${CFLAGS}
746 Assertions: ${enable_assert}
747 Unit tests: ${tests_msg}
748 File system: ${vfs_type}
750 Screen library: ${screen_msg}
751 Mouse support: ${mouse_lib}
752 X11 events support: ${textmode_x11_support}
753 With subshell support: ${subshell}
754 With background operations: ${enable_background}
755 With ext2fs attributes support: ${ext2fs_attr_msg}
756 Internal editor: ${edit_msg}
757 Diff viewer: ${diff_msg}
758 Support for charset: ${charset_msg}
759 Search type: ${SEARCH_TYPE}
762 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
763 dnl we enable it back for top-level ./configure
764 if test -n "$ac_unrecognized_opts"; then
765 case $enable_option_checking in
766 fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
767 *) AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;