Merge branch '2919_dlg_as_widget'
[midnight-commander.git] / configure.ac
blob71ef7d9bd04c7390bd9ea6d4661057ee904c4f75
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])
189 AH_TEMPLATE([sig_atomic_t],
190             [/* Define to `int' if <signal.h> doesn't define.])
191 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
192             [Some systems declare sig_atomic_t as volatile, some others -- no.
193              This define will have value `sig_atomic_t' or
194              `volatile sig_atomic_t' accordingly.])
196 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
197 AC_EGREP_HEADER(sig_atomic_t,signal.h,
198   [
199     ac_cv_type_sig_atomic_t=yes;
200     AC_EGREP_HEADER(volatile.*sig_atomic_t,
201                     signal.h,
202                     [
203                         is_sig_atomic_t_volatile=yes;
204                         AC_MSG_RESULT([yes, volatile])
205                     ],
206                     [
207                         is_sig_atomic_t_volatile=no;
208                         AC_MSG_RESULT([yes, non volatile])
209                     ])
210   ],
211   [
212     AC_MSG_RESULT(no)
213     AC_CHECK_TYPE(sig_atomic_t, int)
214     is_sig_atomic_t_volatile=no
215   ])
216 if test $is_sig_atomic_t_volatile = 'yes'
217 then
218     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
219 else
220     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
224 dnl ############################################################################
225 dnl Check for functions
226 dnl ############################################################################
228 AC_CHECK_FUNCS([\
229         atoll \
230         isascii \
231         statfs sysconf \
232         tcgetattr tcsetattr \
233         ftruncate \
234         strverscmp \
235         strncasecmp \
236         realpath
238 AC_FUNC_STRCOLL
240 dnl getpt is a GNU Extension (glibc 2.1.x)
241 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
242 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
244 dnl replacing lstat with statlstat on sco makes it more portable between
245 dnl sco clones
246 AC_CHECK_FUNCS(statlstat)
248 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
249 dnl We use only part of the functionality of mmap, so on AIX,
250 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
251 AC_ARG_WITH([mmap],
252         AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
253 if test x$with_mmap != xno; then
254     if test x$with_mmap = x; then
255         AC_FUNC_MMAP
256     else
257         AC_DEFINE(HAVE_MMAP, 1)
258     fi
261 dnl Sequent wants getprocessstats
262 AC_CHECK_LIB(seq, get_process_stats, [
263         LIBS="$LIBS -lseq"
264         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
265                   [Define if you have function `get_process_stats' and
266 have to use that instead of gettimeofday])])
268 mc_AC_GET_FS_INFO
271 dnl ############################################################################
272 dnl Internationalization
273 dnl ############################################################################
275 AM_GNU_GETTEXT(no-libtool, need-ngettext)
276 AM_GNU_GETTEXT_VERSION(0.14.3)
278 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
279     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
282 dnl User visible support for charset conversion.
283 AC_ARG_ENABLE([charset],
284     AS_HELP_STRING([--enable-charset], [Support for charset selection and conversion @<:@yes@:>@]))
285 have_charset=
286 charset_msg="no"
287 if test "x$enable_charset" != "xno"; then
288     AC_DEFINE(HAVE_CHARSET, 1, [Define to enable charset selection and conversion])
289     have_charset=yes
290     charset_msg="yes"
294 dnl ############################################################################
295 dnl OS specific flags
296 dnl ############################################################################
298 AC_ISC_POSIX
300 case $host_os in
301 aux*)
302     # A/UX
303     LIBS="$LIBS -lposix"
304     AC_DEFINE(_POSIX_SOURCE)
305     ;;
306 esac
308 dnl If running under AIX, AC_AIX does not tell us that
309 AC_MSG_CHECKING([for AIX defines])
310 AC_EGREP_CPP([yes],
311     [
312         #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
313         yes
314         #endif
315     ],
316     [
317         AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
318         AC_MSG_RESULT(yes)
319     ],
320     [
321         AC_MSG_RESULT(no)
322     ])
324 dnl Check if the OS is supported by the console saver.
325 cons_saver=""
326 case $host_os in
327 linux*)
328     cons_saver=yes
329 esac
331 dnl Check for gpm mouse support (Linux only)
332 mouse_lib="xterm only"
333 AC_ARG_WITH([gpm-mouse],
334     AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
336 case $host_os in
337 linux*)
338     if test x$with_gpm_mouse != xno; then
339         AC_CHECK_LIB(gpm, Gpm_Repeat,
340             [AC_DEFINE(HAVE_LIBGPM, 1,
341                        [Define to enable gpm mouse support on Linux])
342             mouse_lib="gpm and xterm"
343             MCLIBS="$MCLIBS -lgpm"],
344             if test "x$with_gpm_mouse" = "xyes"; then
345                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
346             else
347                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
348             fi
349         )
350     fi
351     ;;
352 esac
355 dnl ############################################################################
356 dnl libmc
357 dnl ############################################################################
359 LIBMC_VERSION="0.0.1"
360 LIBMC_RELEASE="1"
361 AC_SUBST(LIBMC_VERSION)
362 AC_SUBST(LIBMC_RELEASE)
364 AC_ARG_ENABLE([mclib],
365         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
366         [
367             if test "x$enableval" = "xno" ; then
368                 enable_mclib=no
369             else
370                 if test "x$enable_shared" = "xno" ; then
371                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
372                     enable_mclib=no
373                 else
374                     enable_mclib=yes
375                 fi
376             fi
377         ],
378         [enable_mclib=no])
380 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
383 dnl ############################################################################
384 dnl Where config files should be placed
385 dnl ############################################################################
387 AC_ARG_WITH([homedir],
388     AS_HELP_STRING([--with-homedir],
389                    [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
390     [
391         if test "x$withval" = "xXDG"; then
392             with_homedir=XDG
393         else
394             with_homedir=$withval
395         fi
396     ],
397     [with_homedir=XDG])
400 if test x$with_homedir = xXDG; then
401     AC_DEFINE(MC_HOMEDIR_XDG, 1,
402         [Define to enable XDG standard support])
403 else
404     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
408 dnl ############################################################################
409 dnl MC options
410 dnl ############################################################################
412 MC_WITH_EDIT
414 dnl Diff viewer support.
415 AC_ARG_WITH([diff_viewer],
416     AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
418 if test x$with_diff_viewer != xno; then
419         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
420         use_diff=yes
421         diff_msg="yes"
422         AC_MSG_NOTICE([using diff viewer])
423 else
424         diff_msg="no"
427 MC_SUBSHELL
428 MC_BACKGROUND
429 AC_MC_VFS_CHECKS
431 dnl ############################################################################
432 dnl Directories
433 dnl ############################################################################
435 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
436 dnl Let define ${prefix} and ${exec_prefix}
437 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
438 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
440 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
441     EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
442 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
443     EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
444 else
445     EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
447 AC_SUBST(EXTHELPERSDIR)
450 dnl ############################################################################
451 dnl Documentation
452 dnl ############################################################################
454 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
455 AC_SUBST(MAN_DATE)
457 dnl Determine which help translations we want to install.
458 ALL_DOC_LINGUAS="es hu it pl ru sr"
460 DOC_LINGUAS=
461 if test "x$USE_NLS" = xyes; then
462     if test -z "$LINGUAS"; then
463         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
464     else
465         langs="$LINGUAS"
466     fi
467 else
468     langs=
471 for h_lang in $ALL_DOC_LINGUAS; do
472     for lang in $langs; do
473         if test "$lang" = "$h_lang"; then
474             DOC_LINGUAS="$DOC_LINGUAS $lang"
475             break
476         fi
477     done
478 done
479 AC_SUBST(DOC_LINGUAS)
481 DX_HTML_FEATURE(ON)
482 DX_CHM_FEATURE(OFF)
483 DX_CHI_FEATURE(OFF)
484 DX_MAN_FEATURE(OFF)
485 DX_RTF_FEATURE(OFF)
486 DX_XML_FEATURE(OFF)
487 DX_PDF_FEATURE(OFF)
488 DX_PS_FEATURE(OFF)
489 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
492 dnl ############################################################################
493 dnl Configure results
494 dnl ############################################################################
496 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
498 AC_SUBST(MCLIBS)
499 AC_SUBST(CFLAGS)
500 AC_SUBST(CPPFLAGS)
501 AC_SUBST(LDFLAGS)
502 AC_SUBST(LIBS)
504 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
505 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
506 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
507 AM_CONDITIONAL(USE_EDIT, [test x"$use_edit" = xyes ])
508 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
509 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
510 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
511 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
513 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
515 AC_CONFIG_FILES(
517 src/man2hlp/man2hlp
520 chmod +x src/man2hlp/man2hlp
523 AC_CONFIG_FILES([
524 Makefile
526 contrib/Makefile
527 contrib/dist/Makefile
528 contrib/dist/gentoo/Makefile
529 contrib/dist/redhat/Makefile
530 contrib/dist/redhat/mc.spec
531 contrib/dist/pkginfo
532 contrib/dist/prototype
534 misc/Makefile
535 misc/skins/Makefile
536 misc/ext.d/Makefile
537 misc/ext.d/doc.sh
538 misc/ext.d/misc.sh
539 misc/ext.d/text.sh
540 misc/ext.d/web.sh
541 misc/macros.d/Makefile
542 misc/mc.ext
544 src/Makefile
545 src/consaver/Makefile
546 src/editor/Makefile
547 src/man2hlp/Makefile
548 src/viewer/Makefile
549 src/diffviewer/Makefile
550 src/filemanager/Makefile
552 src/vfs/Makefile
554 src/vfs/cpio/Makefile
556 src/vfs/extfs/Makefile
557 src/vfs/extfs/helpers/Makefile
558 src/vfs/extfs/helpers/a+
559 src/vfs/extfs/helpers/apt+
560 src/vfs/extfs/helpers/audio
561 src/vfs/extfs/helpers/deb
562 src/vfs/extfs/helpers/deba
563 src/vfs/extfs/helpers/debd
564 src/vfs/extfs/helpers/dpkg+
565 src/vfs/extfs/helpers/iso9660
566 src/vfs/extfs/helpers/hp48+
567 src/vfs/extfs/helpers/lslR
568 src/vfs/extfs/helpers/mailfs
569 src/vfs/extfs/helpers/patchfs
570 src/vfs/extfs/helpers/rpms+
571 src/vfs/extfs/helpers/s3+
572 src/vfs/extfs/helpers/uace
573 src/vfs/extfs/helpers/ualz
574 src/vfs/extfs/helpers/uar
575 src/vfs/extfs/helpers/uarc
576 src/vfs/extfs/helpers/uarj
577 src/vfs/extfs/helpers/uc1541
578 src/vfs/extfs/helpers/ucab
579 src/vfs/extfs/helpers/uha
580 src/vfs/extfs/helpers/ulha
581 src/vfs/extfs/helpers/ulib
582 src/vfs/extfs/helpers/urar
583 src/vfs/extfs/helpers/uzip
584 src/vfs/extfs/helpers/uzoo
586 src/vfs/fish/Makefile
587 src/vfs/fish/helpers/Makefile
589 src/vfs/ftpfs/Makefile
591 src/vfs/sftpfs/Makefile
593 src/vfs/local/Makefile
595 src/vfs/sfs/Makefile
597 src/vfs/smbfs/Makefile
599 src/vfs/tar/Makefile
601 src/vfs/undelfs/Makefile
603 lib/Makefile
604 lib/event/Makefile
605 lib/filehighlight/Makefile
606 lib/mcconfig/Makefile
607 lib/search/Makefile
608 lib/skin/Makefile
609 lib/strutil/Makefile
610 lib/tty/Makefile
612 lib/vfs/Makefile
614 lib/widget/Makefile
616 misc/syntax/Makefile
617 misc/syntax/Syntax
619 doc/Makefile
620 doc/hints/Makefile
621 doc/man/Makefile
622 doc/man/es/Makefile
623 doc/man/hu/Makefile
624 doc/man/it/Makefile
625 doc/man/pl/Makefile
626 doc/man/ru/Makefile
627 doc/man/sr/Makefile
629 doc/hlp/Makefile
630 doc/hlp/es/Makefile
631 doc/hlp/hu/Makefile
632 doc/hlp/it/Makefile
633 doc/hlp/pl/Makefile
634 doc/hlp/ru/Makefile
635 doc/hlp/sr/Makefile
637 intl/Makefile
638 po/Makefile.in
641 if test x$enable_tests != xno; then
642     AC_CONFIG_FILES([
643 tests/Makefile
644 tests/lib/Makefile
645 tests/lib/mcconfig/Makefile
646 tests/lib/search/Makefile
647 tests/lib/vfs/Makefile
648 tests/src/Makefile
649 tests/src/filemanager/Makefile
653 AC_OUTPUT
655 AC_MSG_NOTICE([
657 Configuration:
659   Source code location:       ${srcdir}
660   Compiler:                   ${CC}
661   Compiler flags:             ${CFLAGS}
662   File system:                ${vfs_type}
663                               ${vfs_flags}
664   Screen library:             ${screen_msg}
665   Mouse support:              ${mouse_lib}
666   X11 events support:         ${textmode_x11_support}
667   With subshell support:      ${subshell}
668   With background operations: ${enable_background}
669   Internal editor:            ${edit_msg}
670   Diff viewer:                ${diff_msg}
671   Support for charset:        ${charset_msg}
672   Search type:                ${SEARCH_TYPE}