src/search/lib.c (mc_search__recode_str): use symbolic constant
[midnight-commander.git] / configure.ac
blob0b98516667400c97bea64f092e3dd13c80ea62a6
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_SRCDIR(src/main.c)
9 AC_CONFIG_AUX_DIR(config)
10 AM_INIT_AUTOMAKE(mc, 4.6.2)
12 AM_CONFIG_HEADER(config.h)
13 AM_MAINTAINER_MODE
15 AC_CANONICAL_HOST
17 AC_USE_SYSTEM_EXTENSIONS
19 AC_PROG_LIBTOOL
21 AC_ISC_POSIX
23 AC_PROG_CC_STDC
25 dnl
26 dnl First try glib 2.x.  If it's not found, use glib 1.2.x.
27 dnl Keep this check close to the beginning, so that the users
28 dnl without any glib won't have their time wasted by other checks.
29 dnl
31 AC_ARG_WITH(glib12, 
32         [  --with-glib12            Force using glib 1.2.x [[no]]])
34 AC_ARG_WITH([glib_static],
35             [  --with-glib-static       Link glib statically [[no]]])
37 glib_found=no
38 if test "x$with_glib12" != "xyes"; then
39         PKG_CHECK_MODULES(GLIB, [glib-2.0], [glib_found=yes], [:])
42 dnl Fall back to glib-1.2, don't use pkgconfig to find it.
43 if test "x$glib_found" != "xyes" ; then
44         dnl This temporary variable is a workaround for a bug in Autoconf-2.53
45         glib_path=$PATH:/usr/local/bin
47         dnl Klugde for FreeBSD, where glib-config is renamed to glib12-config.
48         AC_PATH_PROGS([GLIB_CONFIG], [glib-config glib12-config],,[$glib_path])
50         AC_ARG_VAR([GLIB_CONFIG], [Path to glib-config (version 1.2.x only)])
51         AM_PATH_GLIB(1.2.6, , [AC_MSG_ERROR([Test for glib failed.
52 GNU Midnight Commander requires glib 1.2.6 or above.])])
53         dnl Save GLIB_CFLAGS and GLIB_LIBS, since the following call to
54         dnl AM_PATH_GLIB will overwrite them.
55         save_GLIB_CFLAGS="$GLIB_CFLAGS"
56         save_GLIB_LIBS="$GLIB_LIBS"
57         dnl Check for gmodule.  Store the flags necessary to compile and
58         dnl link programs using gmodule functionality in GMODULE_CFLAGS
59         dnl and GMODULE_LIBS.
60         AM_PATH_GLIB(1.2.6, [gmodule_found=yes], , [gmodule])
61         GMODULE_CFLAGS="$GLIB_CFLAGS"
62         GMODULE_LIBS="$GLIB_LIBS"
63         GLIB_CFLAGS="$save_GLIB_CFLAGS"
64         GLIB_LIBS="$save_GLIB_LIBS"
65         GLIB_LIBDIR="`$GLIB_CONFIG --exec-prefix`/lib"
67         dnl Used in src/glibcompat.c
68         AC_CHECK_FUNCS([strlcpy])
69 else
70         PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule_found=yes])
71         GLIB_LIBDIR="`$PKG_CONFIG --variable=libdir glib-2.0`"
74 if test "x$gmodule_found" = "xyes" ; then
75         dnl Check if the gmodule functionality supported on this system.
76         AC_G_MODULE_SUPPORTED
79 AC_HEADER_MAJOR
80 AC_C_CONST
81 AC_SYS_LARGEFILE
83 AC_PROG_LN_S
84 AC_CHECK_TOOL(AR, ar, ar)
86 dnl Only list browsers here that can be run in background (i.e. with `&')
87 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
89 dnl
90 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
91 dnl We use only part of the functionality of mmap, so on AIX,
92 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
93 dnl
94 AC_ARG_WITH(mmap,
95         [  --with-mmap              Use the mmap call [[yes if found]]])
96 if test x$with_mmap != xno; then
97     if test x$with_mmap = x; then
98         AC_FUNC_MMAP
99     else
100         AC_DEFINE(HAVE_MMAP, 1)
101     fi
105 dnl Internationalization
107 AM_GNU_GETTEXT(no-libtool, need-ngettext)
108 AM_GNU_GETTEXT_VERSION(0.14.3)
110 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
111     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
114 dnl Determine which help translations we want to install.
115 ALL_DOC_LINGUAS="es hu it pl ru sr"
117 DOC_LINGUAS=
118 if test "x$USE_NLS" = xyes; then
119     if test -z "$LINGUAS"; then
120         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
121     else
122         langs="$LINGUAS"
123     fi
124 else
125     langs=
128 for h_lang in $ALL_DOC_LINGUAS; do
129     for lang in $langs; do
130         if test "$lang" = "$h_lang"; then
131             DOC_LINGUAS="$DOC_LINGUAS $lang"
132             break
133         fi
134     done
135 done
136 AC_SUBST(DOC_LINGUAS)
139 dnl OS specific flags.
141 case $host_os in
142 aux*)
143     # A/UX
144     LIBS="$LIBS -lposix"
145     AC_DEFINE(_POSIX_SOURCE)
146     ;;
147 esac
149 dnl Extended Character Sets
151 AC_ARG_ENABLE([extcharset],
152         AC_HELP_STRING([--enable-extcharset], [Enable extended character sets]))
153 if test x"$enable_extcharset" = x"yes"; then
154   AC_DEFINE([EXTCHARSET_ENABLED], 1, [Enable extended character sets?])
157 AC_PROG_INSTALL
158 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
159         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
160         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
161         security/pam_misc.h sys/socket.h sys/sysmacros.h sys/types.h \
162         sys/mkdev.h wchar.h wctype.h])
164 AC_HEADER_TIME
165 AC_HEADER_SYS_WAIT
166 AC_HEADER_DIRENT
167 AC_HEADER_STDC
169 dnl Missing structure components
170 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
171 AC_STRUCT_ST_BLOCKS
174 dnl Check availability of some functions 
175 dnl 
177 AC_CHECK_FUNCS([\
178         atoll \
179         cfgetospeed \
180         getegid geteuid getgid getsid getuid \
181         initgroups isascii \
182         memcpy memset \
183         putenv \
184         setreuid setuid statfs strerror strftime sysconf \
185         tcgetattr tcsetattr truncate \
189 dnl getpt is a GNU Extension (glibc 2.1.x)
191 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
192 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
194 dnl replacing lstat with statlstat on sco makes it more portable between
195 dnl sco clones
196 AC_CHECK_FUNCS(statlstat)
199 dnl If running under AIX, AC_AIX does not tell us that
201 AC_MSG_CHECKING([for AIX defines])
202 AC_EGREP_CPP(yes,
203 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
205 #endif
206 ], [
207 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
208 AC_MSG_RESULT(yes)
209 ], [AC_MSG_RESULT(no)])
212 dnl This is from GNU fileutils, check aclocal.m4 for more information
214 AC_GET_FS_INFO
217 dnl Missing typedefs and replacements
218 dnl 
220 AC_CHECK_SIZEOF(long)
221 AC_CHECK_SIZEOF(long long)
222 AC_TYPE_MODE_T
223 AC_TYPE_OFF_T
224 AC_CHECK_SIZEOF(off_t)
225 AC_TYPE_PID_T
226 AC_TYPE_UID_T
227 AC_CHECK_TYPE(nlink_t, unsigned int)
228 AC_CHECK_TYPES([socklen_t],,,
230 #include <sys/types.h>
231 #include <sys/socket.h>
234 dnl This is needed for regex.c only
235 AC_CHECK_TYPE(uintptr_t,
236               [AC_DEFINE(HAVE_UINTPTR_T, 1,
237                          [Define if you have the `uintptr_t' type.])
240 AC_FUNC_ALLOCA
241 AC_FUNC_STRCOLL
244 dnl X11 support.
245 dnl Used to read keyboard modifiers when running under X11.
248 AC_PATH_XTRA
249 if test "x$no_x" = xyes; then
250     textmode_x11_support="no"
251 else
252     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
253     if test "x$mc_cv_g_module_supported" = "xyes" ; then
254         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
255         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
256         dnl functionality is supported on the system.  This way, mc will be
257         dnl linked against the gmodule library only when it's really required.
258         GLIB_CFLAGS="$GMODULE_CFLAGS"
259         GLIB_LIBS="$GMODULE_LIBS"
260     else
261         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
262     fi
263     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
264               [Define to enable getting events from X Window System])
265     textmode_x11_support="yes"
269 dnl Try to find static libraries for glib and gmodule.
271 if test x$with_glib_static = xyes; then
272     new_GLIB_LIBS=
273     for i in $GLIB_LIBS; do
274         case x$i in
275         x-lglib*)
276             lib=glib ;;
277         x-lgmodule*)
278             lib=gmodule ;;
279         *)
280             lib=
281             add="$i" ;;
282         esac
284         if test -n "$lib"; then
285             lib1=`echo $i | sed 's/^-l//'`
286             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
287                 add="$GLIB_LIBDIR/lib${lib1}.a"
288             else
289                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
290                     add="$GLIB_LIBDIR/lib${lib}.a"
291                 else
292                     AC_MSG_ERROR([Cannot find static $lib])
293                 fi
294             fi
295         fi
296         new_GLIB_LIBS="$new_GLIB_LIBS $add"
297     done
298     GLIB_LIBS="$new_GLIB_LIBS"
303 dnl Network related functions
306 AC_SEARCH_LIBS([socket], [socket])
307 AC_SEARCH_LIBS([gethostbyname], [nsl])
310 dnl Sequent wants getprocessstats
312 AC_CHECK_LIB(seq, get_process_stats, [
313         LIBS="$LIBS -lseq"
314         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
315                   [Define if you have function `get_process_stats' and
316 have to use that instead of gettimeofday])])
318 MC_VFS_CHECKS
320 vfs_type="normal"
321 if test x$use_vfs = xyes; then
322         AC_MSG_NOTICE([enabling VFS code])
323         vfs_type="Midnight Commander Virtual File System"
327 dnl Check for gpm mouse support (Linux only)
329 mouse_lib="xterm only"
330 AC_ARG_WITH(gpm-mouse, 
331         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
332                            [[yes if found]]])
334 case $host_os in
335 linux*)
336     if test x$with_gpm_mouse != xno; then
337         AC_CHECK_LIB(gpm, Gpm_Repeat,
338             [AC_DEFINE(HAVE_LIBGPM, 1,
339                        [Define to enable gpm mouse support on Linux])
340             mouse_lib="gpm and xterm"
341             MCLIBS="$MCLIBS -lgpm"],
342             [AC_MSG_WARN([libgpm is missing or older than 0.18])
343         ])
344     fi
345     ;;
346 esac
349 dnl Check nroff and the options it supports
351 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
353 dnl Default values
354 MANDOC=-man
355 MAN_FLAGS=
357 if $HAVE_nroff; then
358     AC_MSG_CHECKING([for manual formatting macros])
359     AC_CACHE_VAL(mc_cv_mandoc, [
360     nroff -mandoc < /dev/null > /dev/null 2>&1
361     if test $? = 0; then
362         mc_cv_mandoc=-mandoc
363     else
364         mc_cv_mandoc=-man
365     fi
366     ])
367     MANDOC=$mc_cv_mandoc
368     AC_MSG_RESULT([$MANDOC])
370     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
371     AC_CACHE_VAL(mc_cv_man_nocolor, [
372     nroff -c < /dev/null > /dev/null 2>&1
373     if test $? = 0; then
374         mc_cv_man_nocolor=-c
375     else
376         mc_cv_man_nocolor=
377     fi
378     ])
379     MAN_FLAGS=$mc_cv_man_nocolor
380     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
382     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
383     AC_CACHE_VAL(mc_cv_nroff_tascii, [
384     mc_cv_nroff_tascii=
385     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
386     if test $? = 0; then
387         mc_cv_nroff_tascii=-Tlatin1
388     else
389         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
390         if test $? = 0; then
391             mc_cv_nroff_tascii=-Tascii
392         fi
393     fi
394     ])
395     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
396     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
399 AC_SUBST(MANDOC)
400 AC_SUBST(MAN_FLAGS)
404 dnl Check for -L option to file
406 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
407 if $HAVE_FILECMD; then
408     AC_MSG_CHECKING([for -L option to file command])
409     AC_CACHE_VAL(mc_cv_filel, [
410     file -L . > /dev/null 2>&1
411     if test $? = 0; then
412         mc_cv_filel=yes
413     else
414         mc_cv_filel=no
415     fi
416     ])
417     if test x$mc_cv_filel = xyes; then
418         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
419     fi
420     filel=$mc_cv_filel
421     AC_MSG_RESULT([$filel])
425 AC_MSG_CHECKING([for subshell support])
426 AC_ARG_WITH(subshell,
427         [  --with-subshell          Compile in concurrent subshell [[yes]]
428   --with-subshell=optional Don't run concurrent shell by default [[no]]],
429         [result=no
430         if test x$withval = xoptional
431         then
432                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
433                           [Define to make subshell support optional])
434                 result="optional"
435         fi
436         if test x$withval = xyes
437         then 
438                 result="yes"
439         fi],
440         [dnl Default: enable the subshell support
441         result="yes"
443 if test "x$result" != xno; then
444         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
445                   [Define to enable subshell support])
447 AC_MSG_RESULT([$result])
448 subshell="$result"
452 dnl Select the screen library.
454 AC_ARG_WITH(screen,
455         [  --with-screen=LIB        Compile with screen library: slang or
456                            ncurses [[slang if found]]])
458 case x$with_screen in
459 xslang)
460         MC_WITH_SLANG(strict)
461         ;;
462 xncurses)
463         MC_WITH_NCURSES
464         ;;
465 xncursesw)
466         MC_WITH_NCURSESW
467         ;;
469         MC_WITH_SLANG
470         ;;
472         AC_MSG_ERROR([Value of the screen library is incorrect])
473         ;;
474 esac
478 dnl Internal editor support.
480 AC_ARG_WITH(edit,
481         [  --with-edit              Enable internal editor [[yes]]])
483 if test x$with_edit != xno; then
484         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
485         use_edit=yes
486         edit_msg="yes"
487         AC_MSG_NOTICE([using internal editor])
488 else
489         edit_msg="no"
493 dnl Check if the OS is supported by the console saver.
494 cons_saver=""
495 case $host_os in
496 linux*)
497     cons_saver=yes
498 esac
501 dnl Support for background operations
502 AC_ARG_ENABLE([background],
503               [  --enable-background      Support for background file operations [[yes]]])
504 if test "x$enable_background" != xno; then
505     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
510 dnl User visible support for charset conversion.
512 AC_ARG_ENABLE([charset],
513               [  --enable-charset         Support for charset selection and conversion [[no]]])
514 have_charset=
515 charset_msg="no"
516 if test "x$enable_charset" = xyes; then
517   if test "x$am_cv_func_iconv" != xyes; then
518     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])    
519   else
520     AC_DEFINE(HAVE_CHARSET, 1,
521               [Define to enable charset selection and conversion])
522     have_charset=yes
523     charset_msg="yes"
524   fi
527 if test "$GLIBC21" != yes; then
528     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
531 dnl If default CFLAGS is used with gcc, add -Wall
532 if test -z "$ac_env_CFLAGS_set"; then
533     if test -n "$GCC"; then
534         CFLAGS="$CFLAGS -Wall"
535     fi
538 AC_SUBST(CFLAGS)
539 AC_SUBST(CPPFLAGS)
540 AC_SUBST(LDFLAGS)
541 AC_SUBST(LIBS)
543 dnl Libraries used only when building the mc binary
544 AC_SUBST(MCLIBS)
546 dnl Version for the RedHat package, without dashes
547 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
548 AC_SUBST(RPM_VERSION)
550 if test -n "$use_smbfs"; then
551   AC_CONFIG_SUBDIRS([vfs/samba])
554 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
555 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
556 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
557 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
558 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
559 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
560 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
561 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
563 AC_CONFIG_FILES([
564 Makefile 
565 mc.spec
566 mc.qpg
567 pkginfo
568 prototype
569 doc/Makefile 
570 vfs/Makefile
571 vfs/extfs/Makefile
572 lib/Makefile
574 src/Makefile
575 src/search/Makefile
577 edit/Makefile 
578 syntax/Makefile
579 m4/Makefile
580 lib/mc.ext
581 vfs/extfs/a
582 vfs/extfs/apt
583 vfs/extfs/audio
584 vfs/extfs/deb
585 vfs/extfs/deba
586 vfs/extfs/debd
587 vfs/extfs/dpkg
588 vfs/extfs/iso9660
589 vfs/extfs/hp48
590 vfs/extfs/lslR
591 vfs/extfs/mailfs
592 vfs/extfs/patchfs
593 vfs/extfs/rpms
594 vfs/extfs/uace
595 vfs/extfs/ualz
596 vfs/extfs/uar
597 vfs/extfs/uarc
598 vfs/extfs/uarj
599 vfs/extfs/uc1541
600 vfs/extfs/uha
601 vfs/extfs/ulha 
602 vfs/extfs/urar
603 vfs/extfs/uzip
604 vfs/extfs/uzoo
606 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
607 doc/es/mc.1 doc/es/Makefile
608 doc/hu/mc.1 doc/hu/Makefile
609 doc/it/mc.1 doc/it/Makefile
610 doc/pl/mc.1 doc/pl/Makefile
611 doc/ru/mc.1 doc/ru/Makefile
612 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
614 intl/Makefile
615 po/Makefile.in
618 AC_OUTPUT
620 echo "
621 Configuration:
623   Source code location:       ${srcdir}
624   Compiler:                   ${CC}
625   Compiler flags:             ${CFLAGS}
626   File system:                ${vfs_type}
627                               ${vfs_flags}
628   Screen library:             ${screen_msg}
629   Mouse support:              ${mouse_lib}
630   X11 events support:         ${textmode_x11_support}
631   With subshell support:      ${subshell}
632   Internal editor:            ${edit_msg}
633   Support for charset:        ${charset_msg}