Move global variables to an appropriate place
[midnight-commander.git] / configure.ac
blobf7673d861878e583e666f2bab7e93b488ea36611
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 AC_CHECK_GLIB
148 AC_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([unistd.h string.h memory.h limits.h malloc.h \
160         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
161         sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
162         sys/socket.h sys/sysmacros.h sys/types.h sys/mkdev.h])
163 AC_HEADER_MAJOR
164 AC_HEADER_TIME
165 AC_HEADER_DIRENT
166 AC_HEADER_ASSERT
169 dnl ############################################################################
170 dnl Check for types
171 dnl ############################################################################
173 AC_C_CONST
174 dnl Check largefile before type sizeof checks
175 AC_SYS_LARGEFILE
177 AC_CHECK_SIZEOF(long)
178 AC_TYPE_UINTMAX_T
179 AC_CHECK_SIZEOF(uintmax_t)
180 AC_TYPE_OFF_T
181 AC_CHECK_SIZEOF(off_t)
182 AC_TYPE_MODE_T
183 AC_TYPE_PID_T
184 AC_TYPE_UID_T
186 AC_STRUCT_ST_BLOCKS
187 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
190 dnl ############################################################################
191 dnl Check for functions
192 dnl ############################################################################
194 AC_CHECK_FUNCS([\
195         atoll \
196         isascii \
197         statfs sysconf \
198         tcgetattr tcsetattr \
199         ftruncate \
200         strverscmp \
201         strncasecmp \
202         realpath
204 AC_FUNC_STRCOLL
206 dnl getpt is a GNU Extension (glibc 2.1.x)
207 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
208 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
210 dnl replacing lstat with statlstat on sco makes it more portable between
211 dnl sco clones
212 AC_CHECK_FUNCS(statlstat)
214 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
215 dnl We use only part of the functionality of mmap, so on AIX,
216 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
217 AC_ARG_WITH([mmap],
218         AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
219 if test x$with_mmap != xno; then
220     if test x$with_mmap = x; then
221         AC_FUNC_MMAP
222     else
223         AC_DEFINE(HAVE_MMAP, 1)
224     fi
227 dnl Sequent wants getprocessstats
228 AC_CHECK_LIB(seq, get_process_stats, [
229         LIBS="$LIBS -lseq"
230         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
231                   [Define if you have function `get_process_stats' and
232 have to use that instead of gettimeofday])])
234 mc_AC_GET_FS_INFO
237 dnl ############################################################################
238 dnl Internationalization
239 dnl ############################################################################
241 AM_GNU_GETTEXT(no-libtool, need-ngettext)
242 AM_GNU_GETTEXT_VERSION(0.14.3)
244 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
245     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
248 dnl User visible support for charset conversion.
249 AC_ARG_ENABLE([charset],
250     AS_HELP_STRING([--enable-charset], [Support for charset selection and conversion @<:@yes@:>@]))
251 have_charset=
252 charset_msg="no"
253 if test "x$enable_charset" != "xno"; then
254     AC_DEFINE(HAVE_CHARSET, 1, [Define to enable charset selection and conversion])
255     have_charset=yes
256     charset_msg="yes"
260 dnl ############################################################################
261 dnl OS specific flags
262 dnl ############################################################################
264 AC_ISC_POSIX
266 case $host_os in
267 aux*)
268     # A/UX
269     LIBS="$LIBS -lposix"
270     AC_DEFINE(_POSIX_SOURCE)
271     ;;
272 esac
274 dnl If running under AIX, AC_AIX does not tell us that
275 AC_MSG_CHECKING([for AIX defines])
276 AC_EGREP_CPP([yes],
277     [
278         #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
279         yes
280         #endif
281     ],
282     [
283         AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
284         AC_MSG_RESULT(yes)
285     ],
286     [
287         AC_MSG_RESULT(no)
288     ])
290 dnl Check if the OS is supported by the console saver.
291 cons_saver=""
292 case $host_os in
293 linux*)
294     cons_saver=yes
295 esac
297 dnl Check for gpm mouse support (Linux only)
298 mouse_lib="xterm only"
299 AC_ARG_WITH([gpm-mouse],
300     AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
302 case $host_os in
303 linux*)
304     if test x$with_gpm_mouse != xno; then
305         AC_CHECK_LIB(gpm, Gpm_Repeat,
306             [AC_DEFINE(HAVE_LIBGPM, 1,
307                        [Define to enable gpm mouse support on Linux])
308             mouse_lib="gpm and xterm"
309             MCLIBS="$MCLIBS -lgpm"],
310             if test "x$with_gpm_mouse" = "xyes"; then
311                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
312             else
313                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
314             fi
315         )
316     fi
317     ;;
318 esac
321 dnl ############################################################################
322 dnl libmc
323 dnl ############################################################################
325 LIBMC_VERSION="0.0.1"
326 LIBMC_RELEASE="1"
327 AC_SUBST(LIBMC_VERSION)
328 AC_SUBST(LIBMC_RELEASE)
330 AC_ARG_ENABLE([mclib],
331         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
332         [
333             if test "x$enableval" = "xno" ; then
334                 enable_mclib=no
335             else
336                 if test "x$enable_shared" = "xno" ; then
337                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
338                     enable_mclib=no
339                 else
340                     enable_mclib=yes
341                 fi
342             fi
343         ],
344         [enable_mclib=no])
346 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
349 dnl ############################################################################
350 dnl Where config files should be placed
351 dnl ############################################################################
353 AC_ARG_WITH([homedir],
354     AS_HELP_STRING([--with-homedir],
355                    [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
356     [
357         if test "x$withval" = "xXDG"; then
358             with_homedir=XDG
359         else
360             with_homedir=$withval
361         fi
362     ],
363     [with_homedir=XDG])
366 if test x$with_homedir = xXDG; then
367     AC_DEFINE(MC_HOMEDIR_XDG, 1,
368         [Define to enable XDG standard support])
369 else
370     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
374 dnl ############################################################################
375 dnl MC options
376 dnl ############################################################################
378 MC_WITH_EDIT
380 dnl Diff viewer support.
381 AC_ARG_WITH([diff_viewer],
382     AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
384 if test x$with_diff_viewer != xno; then
385         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
386         use_diff=yes
387         diff_msg="yes"
388         AC_MSG_NOTICE([using diff viewer])
389 else
390         diff_msg="no"
393 AC_MSG_CHECKING([for subshell support])
394 AC_ARG_WITH(subshell,
395         [  --with-subshell          Compile in concurrent subshell [[yes]]
396   --with-subshell=optional Don't run concurrent shell by default [[no]]],
397         [result=no
398         if test x$withval = xoptional
399         then
400                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
401                           [Define to make subshell support optional])
402                 result="optional"
403         fi
404         if test x$withval = xyes
405         then
406                 result="yes"
407         fi],
408         [dnl Default: enable the subshell support
409         result="yes"
411 if test "x$result" != xno; then
412         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
413                   [Define to enable subshell support])
415 AC_MSG_RESULT([$result])
416 subshell="$result"
418 MC_BACKGROUND
420 AC_MC_VFS_CHECKS
423 dnl ############################################################################
424 dnl Directories
425 dnl ############################################################################
427 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
428 dnl Let define ${prefix} and ${exec_prefix}
429 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
430 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
432 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
433     EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
434 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
435     EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
436 else
437     EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
439 AC_SUBST(EXTHELPERSDIR)
442 dnl ############################################################################
443 dnl Documentation
444 dnl ############################################################################
446 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
447 AC_SUBST(MAN_DATE)
449 dnl Determine which help translations we want to install.
450 ALL_DOC_LINGUAS="es hu it pl ru sr"
452 DOC_LINGUAS=
453 if test "x$USE_NLS" = xyes; then
454     if test -z "$LINGUAS"; then
455         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
456     else
457         langs="$LINGUAS"
458     fi
459 else
460     langs=
463 for h_lang in $ALL_DOC_LINGUAS; do
464     for lang in $langs; do
465         if test "$lang" = "$h_lang"; then
466             DOC_LINGUAS="$DOC_LINGUAS $lang"
467             break
468         fi
469     done
470 done
471 AC_SUBST(DOC_LINGUAS)
473 DX_HTML_FEATURE(ON)
474 DX_CHM_FEATURE(OFF)
475 DX_CHI_FEATURE(OFF)
476 DX_MAN_FEATURE(OFF)
477 DX_RTF_FEATURE(OFF)
478 DX_XML_FEATURE(OFF)
479 DX_PDF_FEATURE(OFF)
480 DX_PS_FEATURE(OFF)
481 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
484 dnl ############################################################################
485 dnl Configure results
486 dnl ############################################################################
488 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
490 AC_SUBST(MCLIBS)
491 AC_SUBST(CFLAGS)
492 AC_SUBST(CPPFLAGS)
493 AC_SUBST(LDFLAGS)
494 AC_SUBST(LIBS)
496 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
497 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
498 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
499 AM_CONDITIONAL(USE_EDIT, [test x"$use_edit" = xyes ])
500 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
501 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
502 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
503 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
505 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
507 AC_CONFIG_FILES(
509 src/man2hlp/man2hlp
512 chmod +x src/man2hlp/man2hlp
515 AC_CONFIG_FILES([
516 Makefile
518 contrib/Makefile
519 contrib/dist/Makefile
520 contrib/dist/gentoo/Makefile
521 contrib/dist/redhat/Makefile
522 contrib/dist/redhat/mc.spec
523 contrib/dist/pkginfo
524 contrib/dist/prototype
526 misc/Makefile
527 misc/skins/Makefile
528 misc/ext.d/Makefile
529 misc/ext.d/doc.sh
530 misc/ext.d/misc.sh
531 misc/ext.d/text.sh
532 misc/ext.d/web.sh
533 misc/macros.d/Makefile
534 misc/mc.ext
536 src/Makefile
537 src/consaver/Makefile
538 src/editor/Makefile
539 src/man2hlp/Makefile
540 src/viewer/Makefile
541 src/diffviewer/Makefile
542 src/filemanager/Makefile
544 src/vfs/Makefile
546 src/vfs/cpio/Makefile
548 src/vfs/extfs/Makefile
549 src/vfs/extfs/helpers/Makefile
550 src/vfs/extfs/helpers/a+
551 src/vfs/extfs/helpers/apt+
552 src/vfs/extfs/helpers/audio
553 src/vfs/extfs/helpers/deb
554 src/vfs/extfs/helpers/deba
555 src/vfs/extfs/helpers/debd
556 src/vfs/extfs/helpers/dpkg+
557 src/vfs/extfs/helpers/iso9660
558 src/vfs/extfs/helpers/hp48+
559 src/vfs/extfs/helpers/lslR
560 src/vfs/extfs/helpers/mailfs
561 src/vfs/extfs/helpers/patchfs
562 src/vfs/extfs/helpers/rpms+
563 src/vfs/extfs/helpers/s3+
564 src/vfs/extfs/helpers/uace
565 src/vfs/extfs/helpers/ualz
566 src/vfs/extfs/helpers/uar
567 src/vfs/extfs/helpers/uarc
568 src/vfs/extfs/helpers/uarj
569 src/vfs/extfs/helpers/uc1541
570 src/vfs/extfs/helpers/ucab
571 src/vfs/extfs/helpers/uha
572 src/vfs/extfs/helpers/ulha
573 src/vfs/extfs/helpers/ulib
574 src/vfs/extfs/helpers/urar
575 src/vfs/extfs/helpers/uzip
576 src/vfs/extfs/helpers/uzoo
578 src/vfs/fish/Makefile
579 src/vfs/fish/helpers/Makefile
581 src/vfs/ftpfs/Makefile
583 src/vfs/sftpfs/Makefile
585 src/vfs/local/Makefile
587 src/vfs/sfs/Makefile
589 src/vfs/smbfs/Makefile
591 src/vfs/tar/Makefile
593 src/vfs/undelfs/Makefile
595 lib/Makefile
596 lib/event/Makefile
597 lib/filehighlight/Makefile
598 lib/mcconfig/Makefile
599 lib/search/Makefile
600 lib/skin/Makefile
601 lib/strutil/Makefile
602 lib/tty/Makefile
604 lib/vfs/Makefile
606 lib/widget/Makefile
608 misc/syntax/Makefile
609 misc/syntax/Syntax
611 doc/Makefile
612 doc/hints/Makefile
613 doc/man/Makefile
614 doc/man/es/Makefile
615 doc/man/hu/Makefile
616 doc/man/it/Makefile
617 doc/man/pl/Makefile
618 doc/man/ru/Makefile
619 doc/man/sr/Makefile
621 doc/hlp/Makefile
622 doc/hlp/es/Makefile
623 doc/hlp/hu/Makefile
624 doc/hlp/it/Makefile
625 doc/hlp/pl/Makefile
626 doc/hlp/ru/Makefile
627 doc/hlp/sr/Makefile
629 intl/Makefile
630 po/Makefile.in
633 if test x$enable_tests != xno; then
634     AC_CONFIG_FILES([
635 tests/Makefile
636 tests/lib/Makefile
637 tests/lib/mcconfig/Makefile
638 tests/lib/search/Makefile
639 tests/lib/vfs/Makefile
640 tests/src/Makefile
641 tests/src/filemanager/Makefile
645 AC_OUTPUT
647 AC_MSG_NOTICE([
649 Configuration:
651   Source code location:       ${srcdir}
652   Compiler:                   ${CC}
653   Compiler flags:             ${CFLAGS}
654   File system:                ${vfs_type}
655                               ${vfs_flags}
656   Screen library:             ${screen_msg}
657   Mouse support:              ${mouse_lib}
658   X11 events support:         ${textmode_x11_support}
659   With subshell support:      ${subshell}
660   With background operations: ${enable_background}
661   Internal editor:            ${edit_msg}
662   Diff viewer:                ${diff_msg}
663   Support for charset:        ${charset_msg}
664   Search type:                ${SEARCH_TYPE}