Sync with gnulib 5159ac54e0c73df4432a681e2e267df4ffcc04e4.
[midnight-commander.git] / configure.ac
blob35545987611f8ddffc51c09a4584f4d94a27d413
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
164 AC_HEADER_ASSERT
167 dnl ############################################################################
168 dnl Check for types
169 dnl ############################################################################
171 dnl Check largefile before type sizeof checks
172 AC_SYS_LARGEFILE
174 AC_CHECK_SIZEOF(long)
175 AC_TYPE_UINTMAX_T
176 AC_CHECK_SIZEOF(uintmax_t)
177 AC_TYPE_OFF_T
178 AC_CHECK_SIZEOF(off_t)
179 AC_TYPE_MODE_T
180 gl_PROMOTED_TYPE_MODE_T
181 AC_TYPE_PID_T
182 AC_TYPE_UID_T
184 AC_STRUCT_ST_BLOCKS
185 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
186 gl_STAT_SIZE
188 AH_TEMPLATE([sig_atomic_t],
189             [/* Define to `int' if <signal.h> doesn't define.])
190 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
191             [Some systems declare sig_atomic_t as volatile, some others -- no.
192              This define will have value `sig_atomic_t' or
193              `volatile sig_atomic_t' accordingly.])
195 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
196 AC_EGREP_HEADER(sig_atomic_t,signal.h,
197   [
198     ac_cv_type_sig_atomic_t=yes;
199     AC_EGREP_HEADER(volatile.*sig_atomic_t,
200                     signal.h,
201                     [
202                         is_sig_atomic_t_volatile=yes;
203                         AC_MSG_RESULT([yes, volatile])
204                     ],
205                     [
206                         is_sig_atomic_t_volatile=no;
207                         AC_MSG_RESULT([yes, non volatile])
208                     ])
209   ],
210   [
211     AC_MSG_RESULT(no)
212     AC_CHECK_TYPE(sig_atomic_t, int)
213     is_sig_atomic_t_volatile=no
214   ])
215 if test $is_sig_atomic_t_volatile = 'yes'
216 then
217     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
218 else
219     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
223 dnl ############################################################################
224 dnl Check for functions
225 dnl ############################################################################
227 AC_CHECK_FUNCS([\
228         strverscmp \
229         strncasecmp \
230         realpath
233 dnl getpt is a GNU Extension (glibc 2.1.x)
234 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
235 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
237 dnl replacing lstat with statlstat on sco makes it more portable between
238 dnl sco clones
239 AC_CHECK_FUNCS(statlstat)
241 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
242 dnl We use only part of the functionality of mmap, so on AIX,
243 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
244 AC_ARG_WITH([mmap],
245         AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
246 if test x$with_mmap != xno; then
247     if test x$with_mmap = x; then
248         AC_FUNC_MMAP
249     else
250         AC_DEFINE(HAVE_MMAP, 1)
251     fi
254 dnl Sequent wants getprocessstats
255 AC_CHECK_LIB(seq, get_process_stats, [
256         LIBS="$LIBS -lseq"
257         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
258                   [Define if you have function `get_process_stats' and
259 have to use that instead of gettimeofday])])
261 mc_AC_GET_FS_INFO
264 dnl ############################################################################
265 dnl Internationalization
266 dnl ############################################################################
268 AM_GNU_GETTEXT([no-libtool], [need-ngettext])
269 AM_GNU_GETTEXT_VERSION([0.18.1])
271 mc_I18N
273 dnl ############################################################################
274 dnl OS specific flags
275 dnl ############################################################################
277 case $host_os in
278 aux*)
279     # A/UX
280     LIBS="$LIBS -lposix"
281     AC_DEFINE(_POSIX_SOURCE)
282     ;;
283 esac
285 dnl If running under AIX, AC_AIX does not tell us that
286 AC_MSG_CHECKING([for AIX defines])
287 AC_EGREP_CPP([yes],
288     [
289         #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
290         yes
291         #endif
292     ],
293     [
294         AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
295         AC_MSG_RESULT(yes)
296     ],
297     [
298         AC_MSG_RESULT(no)
299     ])
301 dnl Check if the OS is supported by the console saver.
302 cons_saver=""
303 case $host_os in
304 linux*)
305     cons_saver=yes
306 esac
308 dnl Check for gpm mouse support (Linux only)
309 mouse_lib="xterm only"
310 AC_ARG_WITH([gpm-mouse],
311     AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
313 case $host_os in
314 linux*)
315     if test x$with_gpm_mouse != xno; then
316         AC_CHECK_LIB(gpm, Gpm_Repeat,
317             [AC_DEFINE(HAVE_LIBGPM, 1,
318                        [Define to enable gpm mouse support on Linux])
319             mouse_lib="gpm and xterm"
320             MCLIBS="$MCLIBS -lgpm"],
321             if test "x$with_gpm_mouse" = "xyes"; then
322                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
323             else
324                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
325             fi
326         )
327     fi
328     ;;
329 esac
332 dnl ############################################################################
333 dnl libmc
334 dnl ############################################################################
336 LIBMC_VERSION="0.0.1"
337 LIBMC_RELEASE="1"
338 AC_SUBST(LIBMC_VERSION)
339 AC_SUBST(LIBMC_RELEASE)
341 AC_ARG_ENABLE([mclib],
342         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
343         [
344             if test "x$enableval" = "xno" ; then
345                 enable_mclib=no
346             else
347                 if test "x$enable_shared" = "xno" ; then
348                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
349                     enable_mclib=no
350                 else
351                     enable_mclib=yes
352                 fi
353             fi
354         ],
355         [enable_mclib=no])
357 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
360 dnl ############################################################################
361 dnl Where config files should be placed
362 dnl ############################################################################
364 AC_ARG_WITH([homedir],
365     AS_HELP_STRING([--with-homedir],
366                    [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
367     [
368         if test "x$withval" = "xXDG"; then
369             with_homedir=XDG
370         else
371             with_homedir=$withval
372         fi
373     ],
374     [with_homedir=XDG])
377 if test x$with_homedir = xXDG; then
378     AC_DEFINE(MC_HOMEDIR_XDG, 1, [Define to enable XDG standard support])
379 else
380     AC_DEFINE(MC_HOMEDIR_XDG, 0, [Define to disable XDG standard support])
381     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
385 dnl ############################################################################
386 dnl MC options
387 dnl ############################################################################
389 mc_WITH_INTERNAL_EDIT
391 dnl Diff viewer support.
392 AC_ARG_WITH([diff_viewer],
393     AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
395 if test x$with_diff_viewer != xno; then
396         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
397         use_diff=yes
398         diff_msg="yes"
399         AC_MSG_NOTICE([using diff viewer])
400 else
401         diff_msg="no"
404 mc_SUBSHELL
405 mc_BACKGROUND
406 mc_VFS_CHECKS
408 dnl ############################################################################
409 dnl Directories
410 dnl ############################################################################
412 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
413 dnl Let define ${prefix} and ${exec_prefix}
414 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
415 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
417 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
418     EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
419 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
420     EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
421 else
422     EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
424 AC_SUBST(EXTHELPERSDIR)
427 dnl ############################################################################
428 dnl Documentation
429 dnl ############################################################################
431 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
432 AC_SUBST(MAN_DATE)
434 dnl Determine which help translations we want to install.
435 ALL_DOC_LINGUAS="es hu it pl ru sr"
437 DOC_LINGUAS=
438 if test "x$USE_NLS" = xyes; then
439     if test -z "$LINGUAS"; then
440         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
441     else
442         langs="$LINGUAS"
443     fi
444 else
445     langs=
448 for h_lang in $ALL_DOC_LINGUAS; do
449     for lang in $langs; do
450         if test "$lang" = "$h_lang"; then
451             DOC_LINGUAS="$DOC_LINGUAS $lang"
452             break
453         fi
454     done
455 done
456 AC_SUBST(DOC_LINGUAS)
458 DX_HTML_FEATURE(ON)
459 DX_CHM_FEATURE(OFF)
460 DX_CHI_FEATURE(OFF)
461 DX_MAN_FEATURE(OFF)
462 DX_RTF_FEATURE(OFF)
463 DX_XML_FEATURE(OFF)
464 DX_PDF_FEATURE(OFF)
465 DX_PS_FEATURE(OFF)
466 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
469 dnl ############################################################################
470 dnl Configure results
471 dnl ############################################################################
473 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
475 AC_SUBST(MCLIBS)
476 AC_SUBST(CFLAGS)
477 AC_SUBST(CPPFLAGS)
478 AC_SUBST(LDFLAGS)
479 AC_SUBST(LIBS)
481 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
482 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
483 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
484 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
485 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
486 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
487 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
488 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
489 dnl Clarify do we really need GModule
490 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
491                                 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
493 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
495 AC_CONFIG_FILES(
497 src/man2hlp/man2hlp
500 chmod +x src/man2hlp/man2hlp
503 AC_CONFIG_FILES([
504 Makefile
506 contrib/Makefile
507 contrib/dist/Makefile
508 contrib/dist/gentoo/Makefile
509 contrib/dist/redhat/Makefile
510 contrib/dist/redhat/mc.spec
511 contrib/dist/pkginfo
512 contrib/dist/prototype
514 misc/Makefile
515 misc/mc.menu
516 misc/mcedit.menu
517 misc/skins/Makefile
518 misc/ext.d/Makefile
519 misc/ext.d/doc.sh
520 misc/ext.d/misc.sh
521 misc/ext.d/text.sh
522 misc/ext.d/web.sh
523 misc/macros.d/Makefile
524 misc/mc.ext
526 src/Makefile
527 src/consaver/Makefile
528 src/editor/Makefile
529 src/man2hlp/Makefile
530 src/subshell/Makefile
531 src/viewer/Makefile
532 src/diffviewer/Makefile
533 src/filemanager/Makefile
535 src/vfs/Makefile
537 src/vfs/cpio/Makefile
539 src/vfs/extfs/Makefile
540 src/vfs/extfs/helpers/Makefile
541 src/vfs/extfs/helpers/a+
542 src/vfs/extfs/helpers/apt+
543 src/vfs/extfs/helpers/audio
544 src/vfs/extfs/helpers/deb
545 src/vfs/extfs/helpers/deba
546 src/vfs/extfs/helpers/debd
547 src/vfs/extfs/helpers/dpkg+
548 src/vfs/extfs/helpers/iso9660
549 src/vfs/extfs/helpers/hp48+
550 src/vfs/extfs/helpers/lslR
551 src/vfs/extfs/helpers/mailfs
552 src/vfs/extfs/helpers/patchfs
553 src/vfs/extfs/helpers/rpms+
554 src/vfs/extfs/helpers/s3+
555 src/vfs/extfs/helpers/uace
556 src/vfs/extfs/helpers/ualz
557 src/vfs/extfs/helpers/uar
558 src/vfs/extfs/helpers/uarc
559 src/vfs/extfs/helpers/uarj
560 src/vfs/extfs/helpers/uc1541
561 src/vfs/extfs/helpers/ucab
562 src/vfs/extfs/helpers/uha
563 src/vfs/extfs/helpers/ulha
564 src/vfs/extfs/helpers/ulib
565 src/vfs/extfs/helpers/urar
566 src/vfs/extfs/helpers/uzip
567 src/vfs/extfs/helpers/uzoo
569 src/vfs/fish/Makefile
570 src/vfs/fish/helpers/Makefile
572 src/vfs/ftpfs/Makefile
574 src/vfs/sftpfs/Makefile
576 src/vfs/local/Makefile
578 src/vfs/sfs/Makefile
580 src/vfs/smbfs/Makefile
582 src/vfs/tar/Makefile
584 src/vfs/undelfs/Makefile
586 lib/Makefile
587 lib/event/Makefile
588 lib/filehighlight/Makefile
589 lib/mcconfig/Makefile
590 lib/search/Makefile
591 lib/skin/Makefile
592 lib/strutil/Makefile
593 lib/tty/Makefile
595 lib/vfs/Makefile
597 lib/widget/Makefile
599 misc/syntax/Makefile
600 misc/syntax/Syntax
602 doc/Makefile
604 doc/hints/Makefile
605 doc/hints/l10n/Makefile
607 doc/man/Makefile
608 doc/man/es/Makefile
609 doc/man/hu/Makefile
610 doc/man/it/Makefile
611 doc/man/pl/Makefile
612 doc/man/ru/Makefile
613 doc/man/sr/Makefile
615 doc/hlp/Makefile
616 doc/hlp/es/Makefile
617 doc/hlp/hu/Makefile
618 doc/hlp/it/Makefile
619 doc/hlp/pl/Makefile
620 doc/hlp/ru/Makefile
621 doc/hlp/sr/Makefile
623 intl/Makefile
624 po/Makefile.in
627 if test x$enable_tests != xno; then
628     AC_CONFIG_FILES([
629 tests/Makefile
630 tests/lib/Makefile
631 tests/lib/mcconfig/Makefile
632 tests/lib/search/Makefile
633 tests/lib/strutil/Makefile
634 tests/lib/vfs/Makefile
635 tests/lib/widget/Makefile
636 tests/src/Makefile
637 tests/src/filemanager/Makefile
638 tests/src/editor/Makefile
639 tests/src/editor/test-data.txt
643 AC_OUTPUT
645 AC_MSG_NOTICE([
647 Configuration:
649   Source code location:       ${srcdir}
650   Compiler:                   ${CC}
651   Compiler flags:             ${CFLAGS}
652   File system:                ${vfs_type}
653                               ${vfs_flags}
654   Screen library:             ${screen_msg}
655   Mouse support:              ${mouse_lib}
656   X11 events support:         ${textmode_x11_support}
657   With subshell support:      ${subshell}
658   With background operations: ${enable_background}
659   Internal editor:            ${edit_msg}
660   Diff viewer:                ${diff_msg}
661   Support for charset:        ${charset_msg}
662   Search type:                ${SEARCH_TYPE}
665 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
666 dnl we enable it back for top-level ./configure
667 if test -n "$ac_unrecognized_opts"; then
668   case $enable_option_checking in
669     fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
670     *)     AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;
671   esac