maint: shorten commit hash if `git describe` fails
[midnight-commander.git] / configure.ac
blob38776bfdb31cc73876dd5201199057790d4da406
1 dnl
2 dnl Configure.in file for the Midnight Commander
3 dnl
5 AC_PREREQ(2.60)
6 AC_INIT([GNU Midnight Commander], [], [mc-devel@gnome.org])
7 m4_pattern_forbid(MC_)
8 AC_CONFIG_MACRO_DIR([m4])
9 AC_CONFIG_AUX_DIR(config)
10 AC_CONFIG_SRCDIR(src/main.c)
11 AC_CONFIG_HEADERS(config.h)
12 mc_VERSION
13 AM_INIT_AUTOMAKE(mc, ${VERSION} )
14 dnl Enable silent rules by default (if yes)
15 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
17 AM_MAINTAINER_MODE
19 AC_CANONICAL_HOST
21 AC_USE_SYSTEM_EXTENSIONS
24 dnl ############################################################################
25 dnl Check for compiler
26 dnl ############################################################################
28 AC_PROG_CC_STDC
29 AM_PROG_CC_C_O
31 mc_CHECK_CFLAGS
33 CFLAGS_OPTS=""
34 if test "x$CFLAGS" = "x"; then
35     CFLAGS_OPTS=" -O2 "
37 if test x$USE_MAINTAINER_MODE = xyes; then
38     CFLAGS_OPTS="-g3 -O -ggdb"
39     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
42 AC_ARG_ENABLE([werror],
43     AS_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors]))
44 if test "x$enable_werror" = xyes; then
45     mc_CHECK_ONE_CFLAG([-Werror])
48 AC_PROG_LIBTOOL
51 dnl ############################################################################
52 dnl Check for programs
53 dnl ############################################################################
55 PKG_PROG_PKG_CONFIG
56 AC_PROG_INSTALL
57 AC_PROG_LN_S
58 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
59 AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
60 AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
62 dnl Check nroff and the options it supports
63 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
64 dnl Default values
65 MANDOC=-man
66 MAN_FLAGS=
67 if $HAVE_nroff; then
68     AC_MSG_CHECKING([for manual formatting macros])
69     AC_CACHE_VAL(mc_cv_mandoc, [
70     nroff -mandoc < /dev/null > /dev/null 2>&1
71     if test $? = 0; then
72         mc_cv_mandoc=-mandoc
73     else
74         mc_cv_mandoc=-man
75     fi
76     ])
77     MANDOC=$mc_cv_mandoc
78     AC_MSG_RESULT([$MANDOC])
80     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
81     AC_CACHE_VAL(mc_cv_man_nocolor, [
82     nroff -c < /dev/null > /dev/null 2>&1
83     if test $? = 0; then
84         mc_cv_man_nocolor=-c
85     else
86         mc_cv_man_nocolor=
87     fi
88     ])
89     MAN_FLAGS=$mc_cv_man_nocolor
90     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
92     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
93     AC_CACHE_VAL(mc_cv_nroff_tascii, [
94     mc_cv_nroff_tascii=
95     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
96     if test $? = 0; then
97         mc_cv_nroff_tascii=-Tlatin1
98     else
99         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
100         if test $? = 0; then
101             mc_cv_nroff_tascii=-Tascii
102         fi
103     fi
104     ])
105     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
106     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
109 AC_SUBST(MANDOC)
110 AC_SUBST(MAN_FLAGS)
112 dnl Check for -L option to file
113 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
114 if $HAVE_FILECMD; then
115     AC_MSG_CHECKING([for -L option to file command])
116     AC_CACHE_VAL(mc_cv_filel, [
117     file -L . > /dev/null 2>&1
118     if test $? = 0; then
119         mc_cv_filel=yes
120     else
121         mc_cv_filel=no
122     fi
123     ])
124     if test x$mc_cv_filel = xyes; then
125         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
126     fi
127     filel=$mc_cv_filel
128     AC_MSG_RESULT([$filel])
131 dnl Only list browsers here that can be run in background (i.e. with `&')
132 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla firefox konqueror opera])
135 dnl ############################################################################
136 dnl Check for other tools
137 dnl ############################################################################
139 AC_CHECK_TOOL(AR, ar, ar)
140 mc_UNIT_TESTS
143 dnl ############################################################################
144 dnl Check for main libraies
145 dnl ############################################################################
147 mc_CHECK_GLIB
148 mc_G_MODULE_SUPPORTED
149 mc_WITH_SCREEN
150 mc_CHECK_SEARCH_TYPE
151 dnl X11 support. Used to read keyboard modifiers when running under X11.
152 mc_WITH_X
155 dnl ############################################################################
156 dnl Check for header files
157 dnl ############################################################################
159 AC_CHECK_HEADERS([string.h memory.h limits.h malloc.h \
160         utime.h sys/statfs.h sys/vfs.h \
161         sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
162         sys/socket.h])
163 AC_HEADER_MAJOR
166 dnl ############################################################################
167 dnl Check for types
168 dnl ############################################################################
170 dnl Check largefile before type sizeof checks
171 AC_SYS_LARGEFILE
173 AC_CHECK_SIZEOF(long)
174 AC_TYPE_UINTMAX_T
175 AC_CHECK_SIZEOF(uintmax_t)
176 AC_TYPE_OFF_T
177 AC_CHECK_SIZEOF(off_t)
178 AC_TYPE_MODE_T
179 gl_PROMOTED_TYPE_MODE_T
180 AC_TYPE_PID_T
181 AC_TYPE_UID_T
183 AC_STRUCT_ST_BLOCKS
184 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
185 gl_STAT_SIZE
187 AH_TEMPLATE([sig_atomic_t],
188             [/* Define to `int' if <signal.h> doesn't define.])
189 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
190             [Some systems declare sig_atomic_t as volatile, some others -- no.
191              This define will have value `sig_atomic_t' or
192              `volatile sig_atomic_t' accordingly.])
194 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
195 AC_EGREP_HEADER(sig_atomic_t,signal.h,
196   [
197     ac_cv_type_sig_atomic_t=yes;
198     AC_EGREP_HEADER(volatile.*sig_atomic_t,
199                     signal.h,
200                     [
201                         is_sig_atomic_t_volatile=yes;
202                         AC_MSG_RESULT([yes, volatile])
203                     ],
204                     [
205                         is_sig_atomic_t_volatile=no;
206                         AC_MSG_RESULT([yes, non volatile])
207                     ])
208   ],
209   [
210     AC_MSG_RESULT(no)
211     AC_CHECK_TYPE(sig_atomic_t, int)
212     is_sig_atomic_t_volatile=no
213   ])
214 if test $is_sig_atomic_t_volatile = 'yes'
215 then
216     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
217 else
218     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
222 dnl ############################################################################
223 dnl Check for functions
224 dnl ############################################################################
226 AC_CHECK_FUNCS([\
227         strverscmp \
228         strncasecmp \
229         realpath
232 dnl utimensat is supported since glibc 2.6 and specified in POSIX.1-2008
233 AC_CHECK_FUNCS([utimensat])
235 dnl getpt is a GNU Extension (glibc 2.1.x)
236 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
237 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
239 dnl replacing lstat with statlstat on sco makes it more portable between
240 dnl sco clones
241 AC_CHECK_FUNCS(statlstat)
243 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
244 dnl We use only part of the functionality of mmap, so on AIX,
245 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
246 AC_ARG_WITH([mmap],
247         AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
248 if test x$with_mmap != xno; then
249     if test x$with_mmap = x; then
250         AC_FUNC_MMAP
251     else
252         AC_DEFINE(HAVE_MMAP, 1)
253     fi
256 dnl Sequent wants getprocessstats
257 AC_CHECK_LIB(seq, get_process_stats, [
258         LIBS="$LIBS -lseq"
259         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
260                   [Define if you have function `get_process_stats' and
261 have to use that instead of gettimeofday])])
263 mc_AC_GET_FS_INFO
266 dnl ############################################################################
267 dnl Internationalization
268 dnl ############################################################################
270 AM_GNU_GETTEXT([no-libtool], [need-ngettext])
271 AM_GNU_GETTEXT_VERSION([0.18.1])
273 mc_I18N
275 dnl ############################################################################
276 dnl OS specific flags
277 dnl ############################################################################
279 case $host_os in
280 aux*)
281     # A/UX
282     LIBS="$LIBS -lposix"
283     AC_DEFINE(_POSIX_SOURCE)
284     ;;
285 esac
287 dnl If running under AIX, AC_AIX does not tell us that
288 AC_MSG_CHECKING([for AIX defines])
289 AC_EGREP_CPP([yes],
290     [
291         #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
292         yes
293         #endif
294     ],
295     [
296         AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
297         AC_MSG_RESULT(yes)
298     ],
299     [
300         AC_MSG_RESULT(no)
301     ])
303 dnl Check if the OS is supported by the console saver.
304 cons_saver=""
305 case $host_os in
306 linux*)
307     cons_saver=yes
308 esac
310 dnl Check for gpm mouse support (Linux only)
311 mouse_lib="xterm only"
312 AC_ARG_WITH([gpm-mouse],
313     AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
315 case $host_os in
316 linux*)
317     if test x$with_gpm_mouse != xno; then
318         AC_CHECK_LIB(gpm, Gpm_Repeat,
319             [AC_DEFINE(HAVE_LIBGPM, 1,
320                        [Define to enable gpm mouse support on Linux])
321             mouse_lib="gpm and xterm"
322             MCLIBS="$MCLIBS -lgpm"],
323             if test "x$with_gpm_mouse" = "xyes"; then
324                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
325             else
326                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
327             fi
328         )
329     fi
330     ;;
331 esac
334 dnl ############################################################################
335 dnl libmc
336 dnl ############################################################################
338 LIBMC_VERSION="0.0.1"
339 LIBMC_RELEASE="1"
340 AC_SUBST(LIBMC_VERSION)
341 AC_SUBST(LIBMC_RELEASE)
343 AC_ARG_ENABLE([mclib],
344         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
345         [
346             if test "x$enableval" = "xno" ; then
347                 enable_mclib=no
348             else
349                 if test "x$enable_shared" = "xno" ; then
350                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
351                     enable_mclib=no
352                 else
353                     enable_mclib=yes
354                 fi
355             fi
356         ],
357         [enable_mclib=no])
359 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
362 dnl ############################################################################
363 dnl Where config files should be placed
364 dnl ############################################################################
366 AC_ARG_WITH([homedir],
367     AS_HELP_STRING([--with-homedir],
368                    [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
369     [
370         if test "x$withval" = "xXDG"; then
371             with_homedir=XDG
372         else
373             with_homedir=$withval
374         fi
375     ],
376     [with_homedir=XDG])
379 if test x$with_homedir = xXDG; then
380     AC_DEFINE(MC_HOMEDIR_XDG, 1, [Define to enable XDG standard support])
381 else
382     AC_DEFINE(MC_HOMEDIR_XDG, 0, [Define to disable XDG standard support])
383     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
387 dnl ############################################################################
388 dnl MC options
389 dnl ############################################################################
391 mc_ASSERT
393 mc_WITH_INTERNAL_EDIT
395 dnl Diff viewer support.
396 AC_ARG_WITH([diff_viewer],
397     AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
399 if test x$with_diff_viewer != xno; then
400         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
401         use_diff=yes
402         diff_msg="yes"
403         AC_MSG_NOTICE([using diff viewer])
404 else
405         diff_msg="no"
408 mc_SUBSHELL
409 mc_BACKGROUND
410 mc_VFS_CHECKS
412 dnl ############################################################################
413 dnl Directories
414 dnl ############################################################################
416 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
417 dnl Let define ${prefix} and ${exec_prefix}
418 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
419 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
421 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
422     EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
423 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
424     EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
425 else
426     EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
428 AC_SUBST(EXTHELPERSDIR)
431 dnl ############################################################################
432 dnl Documentation
433 dnl ############################################################################
435 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
436 AC_SUBST(MAN_DATE)
438 dnl Determine which help translations we want to install.
439 ALL_DOC_LINGUAS="es hu it pl ru sr"
441 DOC_LINGUAS=
442 if test "x$USE_NLS" = xyes; then
443     if test -z "$LINGUAS"; then
444         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
445     else
446         langs="$LINGUAS"
447     fi
448 else
449     langs=
452 for h_lang in $ALL_DOC_LINGUAS; do
453     for lang in $langs; do
454         if test "$lang" = "$h_lang"; then
455             DOC_LINGUAS="$DOC_LINGUAS $lang"
456             break
457         fi
458     done
459 done
460 AC_SUBST(DOC_LINGUAS)
462 DX_HTML_FEATURE(ON)
463 DX_CHM_FEATURE(OFF)
464 DX_CHI_FEATURE(OFF)
465 DX_MAN_FEATURE(OFF)
466 DX_RTF_FEATURE(OFF)
467 DX_XML_FEATURE(OFF)
468 DX_PDF_FEATURE(OFF)
469 DX_PS_FEATURE(OFF)
470 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
473 dnl ############################################################################
474 dnl Configure results
475 dnl ############################################################################
477 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
479 AC_SUBST(MCLIBS)
480 AC_SUBST(CFLAGS)
481 AC_SUBST(CPPFLAGS)
482 AC_SUBST(LDFLAGS)
483 AC_SUBST(LIBS)
485 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
486 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
487 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
488 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
489 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
490 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
491 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
492 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
493 dnl Clarify do we really need GModule
494 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
495                                 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
497 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
499 AC_CONFIG_FILES(
501 src/man2hlp/man2hlp
504 chmod +x src/man2hlp/man2hlp
507 AC_CONFIG_FILES([
508 Makefile
510 contrib/Makefile
511 contrib/dist/Makefile
512 contrib/dist/gentoo/Makefile
513 contrib/dist/redhat/Makefile
514 contrib/dist/redhat/mc.spec
515 contrib/dist/pkginfo
516 contrib/dist/prototype
518 misc/Makefile
519 misc/mc.menu
520 misc/mcedit.menu
521 misc/skins/Makefile
522 misc/ext.d/Makefile
523 misc/ext.d/doc.sh
524 misc/ext.d/misc.sh
525 misc/ext.d/text.sh
526 misc/ext.d/web.sh
527 misc/macros.d/Makefile
528 misc/mc.ext
530 src/Makefile
531 src/consaver/Makefile
532 src/editor/Makefile
533 src/man2hlp/Makefile
534 src/subshell/Makefile
535 src/viewer/Makefile
536 src/diffviewer/Makefile
537 src/filemanager/Makefile
539 src/vfs/Makefile
541 src/vfs/cpio/Makefile
543 src/vfs/extfs/Makefile
544 src/vfs/extfs/helpers/Makefile
545 src/vfs/extfs/helpers/a+
546 src/vfs/extfs/helpers/apt+
547 src/vfs/extfs/helpers/audio
548 src/vfs/extfs/helpers/deb
549 src/vfs/extfs/helpers/deba
550 src/vfs/extfs/helpers/debd
551 src/vfs/extfs/helpers/dpkg+
552 src/vfs/extfs/helpers/iso9660
553 src/vfs/extfs/helpers/hp48+
554 src/vfs/extfs/helpers/lslR
555 src/vfs/extfs/helpers/mailfs
556 src/vfs/extfs/helpers/patchfs
557 src/vfs/extfs/helpers/rpms+
558 src/vfs/extfs/helpers/s3+
559 src/vfs/extfs/helpers/uace
560 src/vfs/extfs/helpers/ualz
561 src/vfs/extfs/helpers/uar
562 src/vfs/extfs/helpers/uarc
563 src/vfs/extfs/helpers/uarj
564 src/vfs/extfs/helpers/uc1541
565 src/vfs/extfs/helpers/ucab
566 src/vfs/extfs/helpers/uha
567 src/vfs/extfs/helpers/ulha
568 src/vfs/extfs/helpers/ulib
569 src/vfs/extfs/helpers/urar
570 src/vfs/extfs/helpers/uzip
571 src/vfs/extfs/helpers/uzoo
573 src/vfs/fish/Makefile
574 src/vfs/fish/helpers/Makefile
576 src/vfs/ftpfs/Makefile
578 src/vfs/sftpfs/Makefile
580 src/vfs/local/Makefile
582 src/vfs/sfs/Makefile
584 src/vfs/smbfs/Makefile
586 src/vfs/tar/Makefile
588 src/vfs/undelfs/Makefile
590 lib/Makefile
591 lib/event/Makefile
592 lib/filehighlight/Makefile
593 lib/mcconfig/Makefile
594 lib/search/Makefile
595 lib/skin/Makefile
596 lib/strutil/Makefile
597 lib/tty/Makefile
599 lib/vfs/Makefile
601 lib/widget/Makefile
603 misc/syntax/Makefile
604 misc/syntax/Syntax
606 doc/Makefile
608 doc/hints/Makefile
609 doc/hints/l10n/Makefile
611 doc/man/Makefile
612 doc/man/es/Makefile
613 doc/man/hu/Makefile
614 doc/man/it/Makefile
615 doc/man/pl/Makefile
616 doc/man/ru/Makefile
617 doc/man/sr/Makefile
619 doc/hlp/Makefile
620 doc/hlp/es/Makefile
621 doc/hlp/hu/Makefile
622 doc/hlp/it/Makefile
623 doc/hlp/pl/Makefile
624 doc/hlp/ru/Makefile
625 doc/hlp/sr/Makefile
627 intl/Makefile
628 po/Makefile.in
631 if test x$enable_tests != xno; then
632     AC_CONFIG_FILES([
633 tests/Makefile
634 tests/lib/Makefile
635 tests/lib/mcconfig/Makefile
636 tests/lib/search/Makefile
637 tests/lib/strutil/Makefile
638 tests/lib/vfs/Makefile
639 tests/lib/widget/Makefile
640 tests/src/Makefile
641 tests/src/filemanager/Makefile
642 tests/src/editor/Makefile
643 tests/src/editor/test-data.txt
644 tests/src/vfs/Makefile
645 tests/src/vfs/extfs/Makefile
646 tests/src/vfs/extfs/helpers-list/Makefile
650 AC_OUTPUT
652 AC_MSG_NOTICE([
654 Configuration:
656   Source code location:       ${srcdir}
657   Compiler:                   ${CC}
658   Compiler flags:             ${CFLAGS}
659   Assertions:                 ${enable_assert}
660   File system:                ${vfs_type}
661                               ${vfs_flags}
662   Screen library:             ${screen_msg}
663   Mouse support:              ${mouse_lib}
664   X11 events support:         ${textmode_x11_support}
665   With subshell support:      ${subshell}
666   With background operations: ${enable_background}
667   Internal editor:            ${edit_msg}
668   Diff viewer:                ${diff_msg}
669   Support for charset:        ${charset_msg}
670   Search type:                ${SEARCH_TYPE}
673 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
674 dnl we enable it back for top-level ./configure
675 if test -n "$ac_unrecognized_opts"; then
676   case $enable_option_checking in
677     fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
678     *)     AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;
679   esac