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