Minor optimization of memory allocation for string copy.
[midnight-commander.git] / configure.ac
blobaff83a05eb64c26fa978df6bce3c118af58b0b94
1 dnl
2 dnl Configure.in file for the Midnight Commander
3 dnl
5 AC_INIT([GNU Midnight Commander], [], [mc-devel@gnome.org])
6 AC_PREREQ(2.60)
7 m4_pattern_forbid(MC_)
8 AC_CONFIG_MACRO_DIR([m4])
9 AC_CONFIG_SRCDIR(src/main.c)
10 AC_CONFIG_AUX_DIR(config)
11 MC_VERSION
12 AM_INIT_AUTOMAKE(mc, ${VERSION} )
14 LIBMC_VERSION="0.0.1"
15 LIBMC_RELEASE="1"
16 AC_SUBST(LIBMC_VERSION)
17 AC_SUBST(LIBMC_RELEASE)
19 dnl Enable silent rules by default (if yes)
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
22 AM_CONFIG_HEADER(config.h)
23 AM_MAINTAINER_MODE
24 AC_CANONICAL_HOST
26 AC_USE_SYSTEM_EXTENSIONS
28 AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS],["$ac_configure_args"],[MC configure arguments])
30 AC_PROG_LIBTOOL
31 PKG_PROG_PKG_CONFIG
32 AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
34 AC_ISC_POSIX
36 AC_PROG_CC_STDC
37 AM_PROG_CC_C_O
39 dnl Doxygen
41 DX_HTML_FEATURE(ON)
42 DX_CHM_FEATURE(OFF)
43 DX_CHI_FEATURE(OFF)
44 DX_MAN_FEATURE(OFF)
45 DX_RTF_FEATURE(OFF)
46 DX_XML_FEATURE(OFF)
47 DX_PDF_FEATURE(OFF)
48 DX_PS_FEATURE(OFF)
49 DX_INIT_DOXYGEN(mc,doxygen.cfg,devel)
51 dnl PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
53 AC_CHECK_GLIB
55 AC_ARG_ENABLE([mclib],
56         [AS_HELP_STRING([--enable-mclib], [Compile shared library libmc.so @<:@no@:>@])],
57         [
58             if test "x$enableval" = "xno" ; then
59                 enable_mclib=no
60             else
61                 if test "x$enable_shared" = "xno" ; then
62                     AC_MSG_WARN([Build of shared library is disabled. Specify --enable-shared first])
63                     enable_mclib=no
64                 else
65                     enable_mclib=yes
66                 fi
67             fi
68         ],
69         [enable_mclib=no])
71 AM_CONDITIONAL([ENABLE_MCLIB], [test x$enable_mclib = xyes])
73 AC_HEADER_MAJOR
74 AC_C_CONST
75 dnl Check this before type sizeof checks
76 AC_SYS_LARGEFILE
78 AC_PROG_LN_S
79 AC_CHECK_TOOL(AR, ar, ar)
81 dnl Only list browsers here that can be run in background (i.e. with `&')
82 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla firefox konqueror opera])
84 dnl
85 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
86 dnl We use only part of the functionality of mmap, so on AIX,
87 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
88 dnl
89 AC_ARG_WITH(mmap,
90         [  --with-mmap              Use the mmap call [[yes if found]]])
91 if test x$with_mmap != xno; then
92     if test x$with_mmap = x; then
93         AC_FUNC_MMAP
94     else
95         AC_DEFINE(HAVE_MMAP, 1)
96     fi
99 dnl
100 dnl Internationalization
102 AM_GNU_GETTEXT(no-libtool, need-ngettext)
103 AM_GNU_GETTEXT_VERSION(0.14.3)
105 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
106     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
109 dnl Determine which help translations we want to install.
110 ALL_DOC_LINGUAS="es hu it pl ru sr"
112 DOC_LINGUAS=
113 if test "x$USE_NLS" = xyes; then
114     if test -z "$LINGUAS"; then
115         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
116     else
117         langs="$LINGUAS"
118     fi
119 else
120     langs=
123 for h_lang in $ALL_DOC_LINGUAS; do
124     for lang in $langs; do
125         if test "$lang" = "$h_lang"; then
126             DOC_LINGUAS="$DOC_LINGUAS $lang"
127             break
128         fi
129     done
130 done
131 AC_SUBST(DOC_LINGUAS)
134 dnl OS specific flags.
136 case $host_os in
137 aux*)
138     # A/UX
139     LIBS="$LIBS -lposix"
140     AC_DEFINE(_POSIX_SOURCE)
141     ;;
142 esac
144 AC_PROG_INSTALL
145 AC_CHECK_HEADERS([unistd.h string.h memory.h limits.h malloc.h \
146         utime.h fcntl.h sys/statfs.h sys/vfs.h sys/time.h \
147         sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
148         sys/socket.h sys/sysmacros.h sys/types.h sys/mkdev.h])
150 AC_HEADER_TIME
151 AC_HEADER_DIRENT
153 dnl Missing structure components
154 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
155 AC_STRUCT_ST_BLOCKS
158 dnl Check availability of some functions
161 AC_CHECK_FUNCS([\
162         atoll \
163         isascii \
164         statfs sysconf \
165         tcgetattr tcsetattr \
166         ftruncate \
167         strverscmp \
168         strncasecmp \
169         realpath
173 dnl getpt is a GNU Extension (glibc 2.1.x)
175 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
176 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
178 dnl replacing lstat with statlstat on sco makes it more portable between
179 dnl sco clones
180 AC_CHECK_FUNCS(statlstat)
183 dnl If running under AIX, AC_AIX does not tell us that
185 AC_MSG_CHECKING([for AIX defines])
186 AC_EGREP_CPP(yes,
187 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
189 #endif
190 ], [
191 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
192 AC_MSG_RESULT(yes)
193 ], [AC_MSG_RESULT(no)])
196 dnl Missing typedefs and replacements
199 AC_CHECK_SIZEOF(long)
200 AC_TYPE_UINTMAX_T
201 AC_CHECK_SIZEOF(uintmax_t)
202 AC_TYPE_OFF_T
203 AC_CHECK_SIZEOF(off_t)
204 AC_TYPE_MODE_T
205 AC_TYPE_PID_T
206 AC_TYPE_UID_T
208 AC_FUNC_STRCOLL
210 AC_MC_GET_FS_INFO
213 dnl X11 support.
214 dnl Used to read keyboard modifiers when running under X11.
215 AC_PATH_XTRA
218 dnl Check if the gmodule functionality supported on this system.
219 AC_G_MODULE_SUPPORTED
222 dnl Sequent wants getprocessstats
224 AC_CHECK_LIB(seq, get_process_stats, [
225         LIBS="$LIBS -lseq"
226         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
227                   [Define if you have function `get_process_stats' and
228 have to use that instead of gettimeofday])])
230 AC_MC_VFS_CHECKS
233 dnl Check for gpm mouse support (Linux only)
235 mouse_lib="xterm only"
236 AC_ARG_WITH(gpm-mouse,
237         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
238                            [[yes if found]]])
240 case $host_os in
241 linux*)
242     if test x$with_gpm_mouse != xno; then
243         AC_CHECK_LIB(gpm, Gpm_Repeat,
244             [AC_DEFINE(HAVE_LIBGPM, 1,
245                        [Define to enable gpm mouse support on Linux])
246             mouse_lib="gpm and xterm"
247             MCLIBS="$MCLIBS -lgpm"],
248             if test "x$with_gpm_mouse" = "xyes"; then
249                 [AC_MSG_ERROR([libgpm is missing or older than 0.18])]
250             else
251                 [AC_MSG_WARN([libgpm is missing or older than 0.18])]
252             fi
253         )
254     fi
255     ;;
256 esac
258 MC_CHECK_SEARCH_TYPE
261 dnl Check nroff and the options it supports
263 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
265 dnl Default values
266 MANDOC=-man
267 MAN_FLAGS=
269 if $HAVE_nroff; then
270     AC_MSG_CHECKING([for manual formatting macros])
271     AC_CACHE_VAL(mc_cv_mandoc, [
272     nroff -mandoc < /dev/null > /dev/null 2>&1
273     if test $? = 0; then
274         mc_cv_mandoc=-mandoc
275     else
276         mc_cv_mandoc=-man
277     fi
278     ])
279     MANDOC=$mc_cv_mandoc
280     AC_MSG_RESULT([$MANDOC])
282     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
283     AC_CACHE_VAL(mc_cv_man_nocolor, [
284     nroff -c < /dev/null > /dev/null 2>&1
285     if test $? = 0; then
286         mc_cv_man_nocolor=-c
287     else
288         mc_cv_man_nocolor=
289     fi
290     ])
291     MAN_FLAGS=$mc_cv_man_nocolor
292     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
294     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
295     AC_CACHE_VAL(mc_cv_nroff_tascii, [
296     mc_cv_nroff_tascii=
297     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
298     if test $? = 0; then
299         mc_cv_nroff_tascii=-Tlatin1
300     else
301         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
302         if test $? = 0; then
303             mc_cv_nroff_tascii=-Tascii
304         fi
305     fi
306     ])
307     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
308     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
311 AC_SUBST(MANDOC)
312 AC_SUBST(MAN_FLAGS)
316 dnl Check for -L option to file
318 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
319 if $HAVE_FILECMD; then
320     AC_MSG_CHECKING([for -L option to file command])
321     AC_CACHE_VAL(mc_cv_filel, [
322     file -L . > /dev/null 2>&1
323     if test $? = 0; then
324         mc_cv_filel=yes
325     else
326         mc_cv_filel=no
327     fi
328     ])
329     if test x$mc_cv_filel = xyes; then
330         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
331     fi
332     filel=$mc_cv_filel
333     AC_MSG_RESULT([$filel])
337 AC_MSG_CHECKING([for subshell support])
338 AC_ARG_WITH(subshell,
339         [  --with-subshell          Compile in concurrent subshell [[yes]]
340   --with-subshell=optional Don't run concurrent shell by default [[no]]],
341         [result=no
342         if test x$withval = xoptional
343         then
344                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
345                           [Define to make subshell support optional])
346                 result="optional"
347         fi
348         if test x$withval = xyes
349         then
350                 result="yes"
351         fi],
352         [dnl Default: enable the subshell support
353         result="yes"
355 if test "x$result" != xno; then
356         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
357                   [Define to enable subshell support])
359 AC_MSG_RESULT([$result])
360 subshell="$result"
363 MC_WITH_SCREEN
367 dnl Internal editor support.
369 AC_ARG_WITH(edit,
370         [  --with-edit              Enable internal editor [[yes]]])
372 if test x$with_edit != xno; then
373         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
374         use_edit=yes
375         edit_msg="yes"
376         AC_MSG_NOTICE([using internal editor])
377 else
378         edit_msg="no"
382 dnl Diff viewer support.
384 AC_ARG_WITH(diff_viewer,
385         [  --with-diff-viewer       Compile with diff viewer [[yes]]])
387 if test x$with_diff_viewer != xno; then
388         AC_DEFINE(USE_DIFF_VIEW, 1, [Define to enable diff viewer])
389         use_diff=yes
390         diff_msg="yes"
391         AC_MSG_NOTICE([using diff viewer])
392 else
393         diff_msg="no"
397 dnl Check if the OS is supported by the console saver.
398 cons_saver=""
399 case $host_os in
400 linux*)
401     cons_saver=yes
402 esac
406 dnl Where config files should be placed
409 AC_ARG_WITH([homedir],
410     AS_HELP_STRING([--with-homedir], [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
411     [
412         if test "x$withval" = "xXDG"; then
413             with_homedir=XDG
414         else
415             with_homedir=$withval
416         fi
417     ],
418     [with_homedir=XDG])
421 if test x$with_homedir = xXDG; then
422     AC_DEFINE(MC_HOMEDIR_XDG, 1,
423         [Define to enable XDG standard support])
424 else
425     AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
429 dnl Support for background operations
430 AC_ARG_ENABLE([background],
431               [  --enable-background     Support for background file operations [[yes]]])
432 if test "x$enable_background" != xno; then
433     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
438 dnl User visible support for charset conversion.
440 AC_ARG_ENABLE([charset],
441               [  --enable-charset        Support for charset selection and conversion [[yes]]])
442 have_charset=
443 charset_msg="no"
444 if test "x$enable_charset" != "xno"; then
445     AC_DEFINE(HAVE_CHARSET, 1,
446               [Define to enable charset selection and conversion])
447     have_charset=yes
448     charset_msg="yes"
451 if test "$GLIBC21" != yes; then
452     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
455 MC_CHECK_CFLAGS
457 CFLAGS_OPTS=""
459 if test "x$CFLAGS" = "x"; then
460     CFLAGS_OPTS=" -O2 "
463 if test x$USE_MAINTAINER_MODE = xyes; then
464     CFLAGS_OPTS="-g3 -O -ggdb"
465     AC_DEFINE(USE_MAINTAINER_MODE, 1, [Use maintainer mode])
468 AC_ARG_ENABLE(
469     [werror],
470     AS_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors])
473 if test "x$enable_werror" = xyes; then
474     MC_CHECK_ONE_CFLAG([-Werror])
476 CFLAGS="$mc_configured_cflags $CFLAGS_OPTS $CFLAGS"
478 MC_UNIT_TESTS
480 AC_SUBST(CFLAGS)
481 AC_SUBST(CPPFLAGS)
482 AC_SUBST(LDFLAGS)
483 AC_SUBST(LIBS)
485 dnl Libraries used only when building the mc binary
486 AC_SUBST(MCLIBS)
488 MAN_DATE="$(LC_ALL=C date "+%B %Y")"
489 AC_SUBST(MAN_DATE)
491 AM_CONDITIONAL(USE_NLS, [test x"$USE_NLS" = xyes])
492 AM_CONDITIONAL(USE_MAINTAINER_MODE, [test x"$USE_MAINTAINER_MODE" = xyes])
493 AM_CONDITIONAL(USE_SCREEN_SLANG, [test x"$with_screen" = xslang])
494 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
495 AM_CONDITIONAL(USE_DIFF, [test -n "$use_diff"])
496 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
497 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
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/debian/Makefile
513 contrib/dist/gentoo/Makefile
514 contrib/dist/redhat/Makefile
515 contrib/dist/redhat/mc.spec
516 contrib/dist/pkginfo
517 contrib/dist/prototype
519 misc/Makefile
520 misc/skins/Makefile
521 misc/macros.d/Makefile
522 misc/mc.ext
524 src/Makefile
525 src/consaver/Makefile
526 src/editor/Makefile
527 src/man2hlp/Makefile
528 src/viewer/Makefile
529 src/diffviewer/Makefile
530 src/filemanager/Makefile
532 src/vfs/Makefile
534 src/vfs/cpio/Makefile
536 src/vfs/extfs/Makefile
537 src/vfs/extfs/helpers/Makefile
538 src/vfs/extfs/helpers/a+
539 src/vfs/extfs/helpers/apt+
540 src/vfs/extfs/helpers/audio
541 src/vfs/extfs/helpers/deb
542 src/vfs/extfs/helpers/deba
543 src/vfs/extfs/helpers/debd
544 src/vfs/extfs/helpers/dpkg+
545 src/vfs/extfs/helpers/iso9660
546 src/vfs/extfs/helpers/hp48+
547 src/vfs/extfs/helpers/lslR
548 src/vfs/extfs/helpers/mailfs
549 src/vfs/extfs/helpers/patchfs
550 src/vfs/extfs/helpers/rpms+
551 src/vfs/extfs/helpers/s3+
552 src/vfs/extfs/helpers/uace
553 src/vfs/extfs/helpers/ualz
554 src/vfs/extfs/helpers/uar
555 src/vfs/extfs/helpers/uarc
556 src/vfs/extfs/helpers/uarj
557 src/vfs/extfs/helpers/uc1541
558 src/vfs/extfs/helpers/ucab
559 src/vfs/extfs/helpers/uha
560 src/vfs/extfs/helpers/ulha
561 src/vfs/extfs/helpers/urar
562 src/vfs/extfs/helpers/uzip
563 src/vfs/extfs/helpers/uzoo
565 src/vfs/fish/Makefile
566 src/vfs/fish/helpers/Makefile
568 src/vfs/ftpfs/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
595 doc/Makefile
596 doc/hints/Makefile
597 doc/man/mc.1 doc/man/mcedit.1 doc/man/mcview.1 doc/man/Makefile
598 doc/man/es/mc.1 doc/man/es/Makefile
599 doc/man/hu/mc.1 doc/man/hu/Makefile
600 doc/man/it/mc.1 doc/man/it/Makefile
601 doc/man/pl/mc.1 doc/man/pl/Makefile
602 doc/man/ru/mc.1 doc/man/ru/Makefile
603 doc/man/sr/mc.1 doc/man/sr/Makefile
605 doc/hlp/Makefile
606 doc/hlp/es/Makefile
607 doc/hlp/hu/Makefile
608 doc/hlp/it/Makefile
609 doc/hlp/pl/Makefile
610 doc/hlp/ru/Makefile
611 doc/hlp/sr/Makefile
613 intl/Makefile
614 po/Makefile.in
617 if test x$enable_tests != xno; then
618     AC_CONFIG_FILES([
619 tests/Makefile
620 tests/lib/Makefile
621 tests/lib/mcconfig/Makefile
622 tests/lib/search/Makefile
623 tests/lib/vfs/Makefile
624 tests/src/Makefile
625 tests/src/filemanager/Makefile
631 AC_OUTPUT
633 echo "
634 Configuration:
636   Source code location:       ${srcdir}
637   Compiler:                   ${CC}
638   Compiler flags:             ${CFLAGS}
639   File system:                ${vfs_type}
640                               ${vfs_flags}
641   Screen library:             ${screen_msg}
642   Mouse support:              ${mouse_lib}
643   X11 events support:         ${textmode_x11_support}
644   With subshell support:      ${subshell}
645   Internal editor:            ${edit_msg}
646   Diff viewer:                ${diff_msg}
647   Support for charset:        ${charset_msg}
648   Search type:                ${SEARCH_TYPE}