Use UTF8_CHAR_LEN instead of a magic number
[midnight-commander.git] / configure.ac
blobee22efdcadde017980f432be1f98b18b33b1ca61
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([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 sys/sysmacros.h sys/mkdev.h])
163 AC_HEADER_ASSERT
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 AC_TYPE_PID_T
180 AC_TYPE_UID_T
182 AC_STRUCT_ST_BLOCKS
183 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
185 AH_TEMPLATE([sig_atomic_t],
186             [/* Define to `int' if <signal.h> doesn't define.])
187 AH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],
188             [Some systems declare sig_atomic_t as volatile, some others -- no.
189              This define will have value `sig_atomic_t' or
190              `volatile sig_atomic_t' accordingly.])
192 AC_MSG_CHECKING(for sig_atomic_t in signal.h)
193 AC_EGREP_HEADER(sig_atomic_t,signal.h,
194   [
195     ac_cv_type_sig_atomic_t=yes;
196     AC_EGREP_HEADER(volatile.*sig_atomic_t,
197                     signal.h,
198                     [
199                         is_sig_atomic_t_volatile=yes;
200                         AC_MSG_RESULT([yes, volatile])
201                     ],
202                     [
203                         is_sig_atomic_t_volatile=no;
204                         AC_MSG_RESULT([yes, non volatile])
205                     ])
206   ],
207   [
208     AC_MSG_RESULT(no)
209     AC_CHECK_TYPE(sig_atomic_t, int)
210     is_sig_atomic_t_volatile=no
211   ])
212 if test $is_sig_atomic_t_volatile = 'yes'
213 then
214     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)
215 else
216     AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])
220 dnl ############################################################################
221 dnl Check for functions
222 dnl ############################################################################
224 AC_CHECK_FUNCS([\
225         strverscmp \
226         strncasecmp \
227         realpath
230 dnl getpt is a GNU Extension (glibc 2.1.x)
231 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
232 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
234 dnl replacing lstat with statlstat on sco makes it more portable between
235 dnl sco clones
236 AC_CHECK_FUNCS(statlstat)
238 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
239 dnl We use only part of the functionality of mmap, so on AIX,
240 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
241 AC_ARG_WITH([mmap],
242         AS_HELP_STRING([--with-mmap], [Use the mmap call @<:@yes if found@:>@]))
243 if test x$with_mmap != xno; then
244     if test x$with_mmap = x; then
245         AC_FUNC_MMAP
246     else
247         AC_DEFINE(HAVE_MMAP, 1)
248     fi
251 dnl Sequent wants getprocessstats
252 AC_CHECK_LIB(seq, get_process_stats, [
253         LIBS="$LIBS -lseq"
254         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
255                   [Define if you have function `get_process_stats' and
256 have to use that instead of gettimeofday])])
258 mc_AC_GET_FS_INFO
261 dnl ############################################################################
262 dnl Internationalization
263 dnl ############################################################################
265 AM_GNU_GETTEXT(no-libtool, need-ngettext)
266 AM_GNU_GETTEXT_VERSION(0.14.3)
268 MC_I18N
270 dnl ############################################################################
271 dnl OS specific flags
272 dnl ############################################################################
274 case $host_os in
275 aux*)
276     # A/UX
277     LIBS="$LIBS -lposix"
278     AC_DEFINE(_POSIX_SOURCE)
279     ;;
280 esac
282 dnl If running under AIX, AC_AIX does not tell us that
283 AC_MSG_CHECKING([for AIX defines])
284 AC_EGREP_CPP([yes],
285     [
286         #if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
287         yes
288         #endif
289     ],
290     [
291         AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
292         AC_MSG_RESULT(yes)
293     ],
294     [
295         AC_MSG_RESULT(no)
296     ])
298 dnl Check if the OS is supported by the console saver.
299 cons_saver=""
300 case $host_os in
301 linux*)
302     cons_saver=yes
303 esac
305 dnl Check for gpm mouse support (Linux only)
306 mouse_lib="xterm only"
307 AC_ARG_WITH([gpm-mouse],
308     AS_HELP_STRING([--with-gpm-mouse], [Compile with gpm mouse support (Linux only) @<:@yes if found@:>@]))
310 case $host_os in
311 linux*)
312     if test x$with_gpm_mouse != xno; then
313         AC_CHECK_LIB(gpm, Gpm_Repeat,
314             [AC_DEFINE(HAVE_LIBGPM, 1,
315                        [Define to enable gpm mouse support on Linux])
316             mouse_lib="gpm and xterm"
317             MCLIBS="$MCLIBS -lgpm"],
318             if test "x$with_gpm_mouse" = "xyes"; then
319                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
320             else
321                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
322             fi
323         )
324     fi
325     ;;
326 esac
329 dnl ############################################################################
330 dnl libmc
331 dnl ############################################################################
333 LIBMC_VERSION="0.0.1"
334 LIBMC_RELEASE="1"
335 AC_SUBST(LIBMC_VERSION)
336 AC_SUBST(LIBMC_RELEASE)
338 AC_ARG_ENABLE([mclib],
339         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
340         [
341             if test "x$enableval" = "xno" ; then
342                 enable_mclib=no
343             else
344                 if test "x$enable_shared" = "xno" ; then
345                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
346                     enable_mclib=no
347                 else
348                     enable_mclib=yes
349                 fi
350             fi
351         ],
352         [enable_mclib=no])
354 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
357 dnl ############################################################################
358 dnl Where config files should be placed
359 dnl ############################################################################
361 AC_ARG_WITH([homedir],
362     AS_HELP_STRING([--with-homedir],
363                    [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
364     [
365         if test "x$withval" = "xXDG"; then
366             with_homedir=XDG
367         else
368             with_homedir=$withval
369         fi
370     ],
371     [with_homedir=XDG])
374 if test x$with_homedir = xXDG; then
375     AC_DEFINE(MC_HOMEDIR_XDG, 1,
376         [Define to enable XDG standard support])
377 else
378     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
382 dnl ############################################################################
383 dnl MC options
384 dnl ############################################################################
386 MC_WITH_INTERNAL_EDIT
388 dnl Diff viewer support.
389 AC_ARG_WITH([diff_viewer],
390     AS_HELP_STRING([--with-diff-viewer], [Compile with diff viewer @<:@yes@:>@]))
392 if test x$with_diff_viewer != xno; then
393         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
394         use_diff=yes
395         diff_msg="yes"
396         AC_MSG_NOTICE([using diff viewer])
397 else
398         diff_msg="no"
401 MC_SUBSHELL
402 MC_BACKGROUND
403 AC_MC_VFS_CHECKS
405 dnl ############################################################################
406 dnl Directories
407 dnl ############################################################################
409 dnl ${prefix} and ${exec_prefix} are undefined here if --prefix is not used in command line
410 dnl Let define ${prefix} and ${exec_prefix}
411 test "x$prefix" = "xNONE" && prefix="$ac_default_prefix"
412 test "x$exec_prefix" = "xNONE" && exec_prefix="${prefix}"
414 if test x${libexecdir} = x'${exec_prefix}/libexec'; then
415     EXTHELPERSDIR=${prefix}/libexec/${PACKAGE}/ext.d
416 elif test x${libexecdir} = x'${exec_prefix}/lib'; then
417     EXTHELPERSDIR=${prefix}/lib/${PACKAGE}/ext.d
418 else
419     EXTHELPERSDIR=${libexecdir}/${PACKAGE}/ext.d
421 AC_SUBST(EXTHELPERSDIR)
424 dnl ############################################################################
425 dnl Documentation
426 dnl ############################################################################
428 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
429 AC_SUBST(MAN_DATE)
431 dnl Determine which help translations we want to install.
432 ALL_DOC_LINGUAS="es hu it pl ru sr"
434 DOC_LINGUAS=
435 if test "x$USE_NLS" = xyes; then
436     if test -z "$LINGUAS"; then
437         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
438     else
439         langs="$LINGUAS"
440     fi
441 else
442     langs=
445 for h_lang in $ALL_DOC_LINGUAS; do
446     for lang in $langs; do
447         if test "$lang" = "$h_lang"; then
448             DOC_LINGUAS="$DOC_LINGUAS $lang"
449             break
450         fi
451     done
452 done
453 AC_SUBST(DOC_LINGUAS)
455 DX_HTML_FEATURE(ON)
456 DX_CHM_FEATURE(OFF)
457 DX_CHI_FEATURE(OFF)
458 DX_MAN_FEATURE(OFF)
459 DX_RTF_FEATURE(OFF)
460 DX_XML_FEATURE(OFF)
461 DX_PDF_FEATURE(OFF)
462 DX_PS_FEATURE(OFF)
463 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
466 dnl ############################################################################
467 dnl Configure results
468 dnl ############################################################################
470 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
472 AC_SUBST(MCLIBS)
473 AC_SUBST(CFLAGS)
474 AC_SUBST(CPPFLAGS)
475 AC_SUBST(LDFLAGS)
476 AC_SUBST(LIBS)
478 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
479 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
480 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
481 AM_CONDITIONAL(USE_INTERNAL_EDIT, [test x"$use_internal_edit" = xyes ])
482 AM_CONDITIONAL(USE_ASPELL, [test x"$enable_aspell" = xyes ])
483 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
484 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
485 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
486 dnl Clarify do we really need GModule
487 AM_CONDITIONAL([HAVE_GMODULE], [test -n "$g_module_supported" && \
488                                 test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
490 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
492 AC_CONFIG_FILES(
494 src/man2hlp/man2hlp
497 chmod +x src/man2hlp/man2hlp
500 AC_CONFIG_FILES([
501 Makefile
503 contrib/Makefile
504 contrib/dist/Makefile
505 contrib/dist/gentoo/Makefile
506 contrib/dist/redhat/Makefile
507 contrib/dist/redhat/mc.spec
508 contrib/dist/pkginfo
509 contrib/dist/prototype
511 misc/Makefile
512 misc/skins/Makefile
513 misc/ext.d/Makefile
514 misc/ext.d/doc.sh
515 misc/ext.d/misc.sh
516 misc/ext.d/text.sh
517 misc/ext.d/web.sh
518 misc/macros.d/Makefile
519 misc/mc.ext
521 src/Makefile
522 src/consaver/Makefile
523 src/editor/Makefile
524 src/man2hlp/Makefile
525 src/viewer/Makefile
526 src/diffviewer/Makefile
527 src/filemanager/Makefile
529 src/vfs/Makefile
531 src/vfs/cpio/Makefile
533 src/vfs/extfs/Makefile
534 src/vfs/extfs/helpers/Makefile
535 src/vfs/extfs/helpers/a+
536 src/vfs/extfs/helpers/apt+
537 src/vfs/extfs/helpers/audio
538 src/vfs/extfs/helpers/deb
539 src/vfs/extfs/helpers/deba
540 src/vfs/extfs/helpers/debd
541 src/vfs/extfs/helpers/dpkg+
542 src/vfs/extfs/helpers/iso9660
543 src/vfs/extfs/helpers/hp48+
544 src/vfs/extfs/helpers/lslR
545 src/vfs/extfs/helpers/mailfs
546 src/vfs/extfs/helpers/patchfs
547 src/vfs/extfs/helpers/rpms+
548 src/vfs/extfs/helpers/s3+
549 src/vfs/extfs/helpers/uace
550 src/vfs/extfs/helpers/ualz
551 src/vfs/extfs/helpers/uar
552 src/vfs/extfs/helpers/uarc
553 src/vfs/extfs/helpers/uarj
554 src/vfs/extfs/helpers/uc1541
555 src/vfs/extfs/helpers/ucab
556 src/vfs/extfs/helpers/uha
557 src/vfs/extfs/helpers/ulha
558 src/vfs/extfs/helpers/ulib
559 src/vfs/extfs/helpers/urar
560 src/vfs/extfs/helpers/uzip
561 src/vfs/extfs/helpers/uzoo
563 src/vfs/fish/Makefile
564 src/vfs/fish/helpers/Makefile
566 src/vfs/ftpfs/Makefile
568 src/vfs/sftpfs/Makefile
570 src/vfs/local/Makefile
572 src/vfs/sfs/Makefile
574 src/vfs/smbfs/Makefile
576 src/vfs/tar/Makefile
578 src/vfs/undelfs/Makefile
580 lib/Makefile
581 lib/event/Makefile
582 lib/filehighlight/Makefile
583 lib/mcconfig/Makefile
584 lib/search/Makefile
585 lib/skin/Makefile
586 lib/strutil/Makefile
587 lib/tty/Makefile
589 lib/vfs/Makefile
591 lib/widget/Makefile
593 misc/syntax/Makefile
594 misc/syntax/Syntax
596 doc/Makefile
598 doc/hints/Makefile
599 doc/hints/l10n/Makefile
601 doc/man/Makefile
602 doc/man/es/Makefile
603 doc/man/hu/Makefile
604 doc/man/it/Makefile
605 doc/man/pl/Makefile
606 doc/man/ru/Makefile
607 doc/man/sr/Makefile
609 doc/hlp/Makefile
610 doc/hlp/es/Makefile
611 doc/hlp/hu/Makefile
612 doc/hlp/it/Makefile
613 doc/hlp/pl/Makefile
614 doc/hlp/ru/Makefile
615 doc/hlp/sr/Makefile
617 intl/Makefile
618 po/Makefile.in
621 if test x$enable_tests != xno; then
622     AC_CONFIG_FILES([
623 tests/Makefile
624 tests/lib/Makefile
625 tests/lib/mcconfig/Makefile
626 tests/lib/search/Makefile
627 tests/lib/strutil/Makefile
628 tests/lib/vfs/Makefile
629 tests/lib/widget/Makefile
630 tests/src/Makefile
631 tests/src/filemanager/Makefile
632 tests/src/editor/Makefile
633 tests/src/editor/test-data.txt
637 AC_OUTPUT
639 AC_MSG_NOTICE([
641 Configuration:
643   Source code location:       ${srcdir}
644   Compiler:                   ${CC}
645   Compiler flags:             ${CFLAGS}
646   File system:                ${vfs_type}
647                               ${vfs_flags}
648   Screen library:             ${screen_msg}
649   Mouse support:              ${mouse_lib}
650   X11 events support:         ${textmode_x11_support}
651   With subshell support:      ${subshell}
652   With background operations: ${enable_background}
653   Internal editor:            ${edit_msg}
654   Diff viewer:                ${diff_msg}
655   Support for charset:        ${charset_msg}
656   Search type:                ${SEARCH_TYPE}
659 dnl option checking is disable by default due to AC_CONFIG_SUBDIRS
660 dnl we enable it back for top-level ./configure
661 if test -n "$ac_unrecognized_opts"; then
662   case $enable_option_checking in
663     fatal) AC_MSG_ERROR([unrecognized options: $ac_unrecognized_opts]) ;;
664     *)     AC_MSG_WARN( [unrecognized options: $ac_unrecognized_opts]) ;;
665   esac