*** empty log message ***
[midnight-commander.git] / configure.in
blob0e89c242e9f044171c62ec479c49ea85ec2284c0
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.52)
7 AC_CONFIG_SRCDIR(src/main.c)
8 AC_CONFIG_AUX_DIR(config)
9 AM_INIT_AUTOMAKE(mc, 4.6.0-pre1b)
11 AM_CONFIG_HEADER(config.h)
12 AM_MAINTAINER_MODE
14 AC_CANONICAL_HOST
16 AC_AIX
17 AC_MINIX
18 AC_ISC_POSIX
20 AC_PROG_CC_STDC
22 dnl
23 dnl Check if the user requested to compile with glib 2.x.  If not, use
24 dnl glib 1.2.x.  This check should be kept close to the beginning, as it
25 dnl fails for the users without any glib.
26 dnl
27 AC_ARG_WITH(glib2, [  --with-glib2             Use glib 2.x [[no]]])
29 if test "x$with_glib2" = "xyes" ; then
30         PKG_CHECK_MODULES(GLIB, "glib-2.0")
31 else
32         dnl This temporary variable is a workaround for a bug in Autoconf-2.53
33         glib_path=$PATH:/usr/local/bin
35         dnl Klugde for FreeBSD, where glib-config is renamed to glib12-config.
36         AC_PATH_PROGS([GLIB_CONFIG], [glib-config glib12-config],,[$glib_path])
38         AC_ARG_VAR([GLIB_CONFIG], [Path to glib-config (version 1.2.x only)])
39         AM_PATH_GLIB(1.2.6,,[AC_MSG_ERROR([Test for glib failed.
40 GNU Midnight Commander requires glib 1.2.6 or above.])])
44 AC_HEADER_MAJOR
45 AC_C_CONST
46 AC_SYS_LARGEFILE
48 AC_PROG_LN_S
49 AC_CHECK_TOOL(AR, ar, ar)
51 dnl Only list browsers here that can be run in background (i.e. with `&')
52 AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape])
54 dnl
55 dnl Ovverriding mmap support.  This has to be before AC_FUNC_MMAP is used.
56 dnl We use only part of the functionality of mmap, so on AIX,
57 dnl it's possible to use mmap, even if it doesn't pass the autoconf test.
58 dnl
59 AC_ARG_WITH(mmap, 
60         [  --with-mmap              Force using the mmap call (only useful on AIX)],
61         [case $withval in
62 yes)
63         ac_cv_func_mmap_fixed_mapped=yes
64         AC_MSG_NOTICE([forcing MMAP support])
65         ;;
66 no)
67         ac_cv_func_mmap_fixed_mapped=no
68         AC_MSG_NOTICE([disabling MMAP support])
69         ;;
70 esac])
71 AC_FUNC_MMAP
73 ALL_LINGUAS="az be bg ca cs da de el es es_ES eu fi fr hu it ja ko lv \
74 nl no pl pt pt_BR ro ru sk sl sv uk ta tr wa zh_CN zh_TW"
76 dnl
77 dnl Internationalization
78 dnl
79 AM_GNU_GETTEXT
80 AM_GNU_GETTEXT_VERSION(0.11.5)
82 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
83     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
86 dnl
87 dnl Hack to make extraconf.h visible even if compiling outside srcdir.
88 dnl
89 CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)"
91 dnl
92 dnl Enforce coding standards
93 dnl
94 if test "x$GCC" = xyes; then
95     CFLAGS="$CFLAGS -Wall"
98 dnl
99 dnl OS specific flags.
102 posix_libs=""
103 case $host_os in
104 aux*)
105     # A/UX
106     posix_libs="-lposix"
107     AC_DEFINE(_POSIX_SOURCE)
108     ;;
109 sco*)
110     AC_DEFINE(SCO_FLAVOR, 1, [Define if you want to turn on SCO-specific code])
111     AC_DEFINE(_SVID3, 1, [Needs to be defined on SCO])
112     ;;
113 esac
115 AC_PROG_INSTALL
116 AC_CHECK_HEADERS([unistd.h string.h memory.h crypt.h grp.h limits.h \
117         malloc.h stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h \
118         sys/time.h sys/timeb.h sys/select.h sys/ioctl.h stropts.h \
119         arpa/inet.h])
121 AC_HEADER_TIME
122 AC_HEADER_SYS_WAIT
123 AC_HEADER_DIRENT
124 AC_HEADER_STDC
126 dnl Missing structure components
127 AC_STRUCT_ST_BLKSIZE
128 AC_STRUCT_ST_BLOCKS
129 AC_STRUCT_ST_RDEV
132 dnl Check availability of some functions 
133 dnl 
135 AC_CHECK_FUNCS([strerror statfs strftime \
136                 memmove pwdauth truncate initgroups putenv \
137                 memset memcpy tcsetattr tcgetattr cfgetospeed \
138                 sigaction sigemptyset sigprocmask sigaddset \
139                 sysconf setuid setreuid telldir seekdir])
142 dnl getpt is a GNU Extension (glibc 2.1.x)
144 AC_CHECK_FUNCS(getpt)
148 dnl On SCO and some SVR4, crypt is on libcrypt.a
149 dnl         grantpt in  libpt.a
151 LCRYPT=""
152 AC_CHECK_FUNCS(crypt, , [
153     AC_CHECK_LIB(crypt, crypt, [LCRYPT="-lcrypt"], [
154         AC_CHECK_LIB(crypt_i, crypt, [LCRYPT="-lcrypt_i"])])])
155 AC_SUBST(LCRYPT)
157 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
159 dnl replacing lstat with statlstat on sco makes it more portable between
160 dnl sco clones
161 AC_CHECK_FUNCS(statlstat)
164 dnl If running under AIX, AC_AIX does not tell us that
166 AC_MSG_CHECKING([for AIX defines])
167 AC_EGREP_CPP(yes,
168 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
170 #endif
171 ], [
172 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
173 AC_MSG_RESULT(yes)
174 ], [AC_MSG_RESULT(no)])
177 dnl This is from GNU fileutils, check aclocal.m4 for more information
179 AC_GET_FS_INFO
182 dnl Missing typedefs and replacements
183 dnl 
185 AC_TYPE_MODE_T
186 AC_CHECK_TYPE(umode_t, int)
187 AC_CHECK_TYPE(off_t, long)
188 AC_TYPE_PID_T
189 AC_TYPE_UID_T
190 AC_CHECK_TYPE(nlink_t, unsigned int)
192 AC_FUNC_ALLOCA
193 AC_FUNC_STRCOLL
196 dnl X11 support.
199 textmode_x11_support="no"
200 AC_ARG_WITH(tm-x-support,
201         [  --with-tm-x-support      Get keyboard events from X Window System [[no]]],
202         [if test x$withval = xyes; then
203                 AC_PATH_XTRA
204                 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
205                 MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
206                 AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
207                           [Define to enable getting events from X Window System])
208                 textmode_x11_support="yes"
209         fi
213 dnl Network related functions
216 AC_CHECK_LIB(nsl, t_accept)
217 AC_CHECK_LIB(socket, socket)
219 have_socket=no
220 AC_CHECK_FUNCS(socket, have_socket=yes)
221 if test $have_socket = no; then
222   # socket is not in the default libraries.  See if it's in some other.
223   for lib in bsd socket inet; do
224     AC_CHECK_LIB($lib, socket, [
225         LIBS="$LIBS -l$lib"
226         have_socket=yes
227         AC_DEFINE(HAVE_SOCKET)
228         break])
229   done
232 have_gethostbyname=no
233 AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes])
234 if test $have_gethostbyname = no; then
235   # gethostbyname is not in the default libraries.  See if it's in some other.
236   for lib in bsd socket inet; do
237     AC_CHECK_LIB([$lib], [gethostbyname],
238                  [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
239   done
242 AC_CHECK_FUNCS(socketpair)
245 dnl Sequent wants getprocessstats
247 AC_CHECK_LIB(seq, get_process_stats, [
248         LIBS="$LIBS -lseq"
249         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
250                   [Define if you have function `get_process_stats' and
251 have to use that instead of gettimeofday])])
253 MC_VFS_CHECKS
255 vfs_type="normal"
256 if test x$use_vfs = xyes; then
257         AC_MSG_NOTICE([enabling VFS code])
258         vfs_type="Midnight Commander Virtual File System"
262 dnl Check for gpm mouse support (Linux only)
264 mouse_lib="xterm only"
265 AC_ARG_WITH(gpm-mouse, 
266         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
267                            [[yes if found]]])
269 case $host_os in
270 linux*)
271     if test x$with_gpm_mouse != xno; then
272         AC_CHECK_LIB(gpm, Gpm_Repeat,
273             [AC_DEFINE(HAVE_LIBGPM, 1,
274                        [Define to enable gpm mouse support on Linux])
275             mouse_lib="gpm and xterm"
276             MCLIBS="$MCLIBS -lgpm"],
277             [AC_MSG_WARN([libgpm is missing or older than 0.18])
278         ])
279     fi
280     ;;
281 esac
284 dnl Check for the -mandoc package
286 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
287 if $HAVE_nroff; then
288     AC_MSG_CHECKING([for manual formatting macros])
289     AC_CACHE_VAL(ac_cv_mandoc, [
290     nroff -mandoc < /dev/null > /dev/null 2>&1
291     if test $? = 0
292     then
293         ac_cv_mandoc=-mandoc
294     else
295         ac_cv_mandoc=-man
296     fi
297     ])
298     MANDOC=$ac_cv_mandoc
299     AC_MSG_RESULT([$MANDOC])
300 else
301     MANDOC=-man
303 AC_SUBST(MANDOC)
306 dnl Check if nroff accepts -Tlatin1 or -Tascii
308 if $HAVE_nroff; then
309     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
310     AC_CACHE_VAL(ac_cv_nroff_tascii, [
311     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
312     if test $? = 0
313     then
314         ac_cv_nroff_tascii=" -Tlatin1"
315     else
316         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
317         if test $? = 0
318         then
319             ac_cv_nroff_tascii=" -Tascii"
320         else
321             ac_cv_nroff_tascii=""
322         fi
323     fi
324     ])
325     if test "x$ac_cv_nroff_tascii" = x; then
326         AC_MSG_RESULT([no])
327     else
328         AC_MSG_RESULT([yes,$ac_cv_nroff_tascii])
329     fi
331 TROFFASCII="$ac_cv_nroff_tascii"
332 AC_SUBST(TROFFASCII)
335 dnl Check for - option to file
337 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
338 if $HAVE_FILECMD; then
339     AC_MSG_CHECKING([for - option to file command])
340     AC_CACHE_VAL(ac_cv_filestdin, [[
341     cat > conftest.c <<\EOF
342 /* A comment */
343 #if 0
344 #endif
345 void main(void)
346 { return; }
348     cat > conftest.sed <<\EOF
349 s/^[^:]*:[      ]*//
350 s/[     ]*$//
352     filehyphen_1=`file conftest.c 2>/dev/null | sed -f conftest.sed`
353     filehyphen_2=`cat conftest.c | file - 2>/dev/null | sed -f conftest.sed`
354     if test "x$filehyphen_1" = "x$filehyphen_2"; then
355         ac_cv_filestdin=yes
356     else
357         ac_cv_filestdin=no
358     fi
359     rm conftest.c conftest.sed
360     ]])
362     if test x$ac_cv_filestdin = xyes; then
363         AC_DEFINE(FILE_STDIN, 1,
364                   [Define if the file command accepts - for stdin])
365     fi
366     filestdin=$ac_cv_filestdin
367     AC_MSG_RESULT([$filestdin])
369     dnl
370     dnl Check for -L option to file
371     dnl
373 AC_MSG_CHECKING([for -L option to file command])
374 AC_CACHE_VAL(ac_cv_filel, [
375 file -L . > /dev/null 2>&1
376 if test $? = 0
377 then
378     ac_cv_filel=yes
379 else
380     ac_cv_filel=no
383 if test x$ac_cv_filel = xyes; then
384     AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
386 filel=$ac_cv_filel
387 AC_MSG_RESULT([$filel])
388 fi 
391 AC_MSG_CHECKING([for subshell support])
392 AC_ARG_WITH(subshell,
393         [  --with-subshell          Compile in concurrent subshell [[yes]]
394   --with-subshell=optional Don't run concurrent shell by default [[no]]],
395         [result=no
396         if test x$withval = xoptional
397         then
398                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
399                           [Define to make subshell support optional])
400                 result="optional"
401         fi
402         if test x$withval = xyes
403         then 
404                 result="yes"
405         fi],
406         [dnl Default: enable the subshell support
407         result="yes"
409 if test "x$result" != xno; then
410         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
411                   [Define to enable subshell support])
413 AC_MSG_RESULT([$result])
414 subshell="$result"
418 dnl Select the screen library.  mcslang is the included S-Lang library.
420 AC_ARG_WITH(screen,
421         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
422                            ncurses [[slang if found, else mcslang]]])
424 case x$with_screen in
425 xslang)
426         MC_WITH_SLANG(strict)
427         ;;
428 xmcslang)
429         MC_WITH_MCSLANG
430         ;;
431 xncurses)
432         MC_WITH_NCURSES
433         ;;
435         MC_WITH_SLANG
436         ;;
438         AC_MSG_ERROR([Value of the screen library is incorrect])
439         ;;
440 esac
444 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
445 dnl Report an error if this option is not applicable.
447 AC_ARG_WITH(termcap,
448         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
449         [if test x$with_screen != xmcslang; then
450                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
451         fi
456 dnl Internal editor support.
458 AC_ARG_WITH(edit,
459         [  --with-edit              Enable internal editor [[yes]]])
461 if test x$with_edit != xno; then
462         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
463         use_edit=yes
464         edit_msg="yes"
465         AC_MSG_NOTICE([using internal editor])
466 else
467         edit_msg="no"
471 if test $use_vfs = yes; then
472     AC_ARG_WITH(ext2undel,
473         [  --with-ext2undel         Compile with ext2 undelete code [[yes if found]]],
474         [if test x$withval != xno; then
475                 if test x$withval != xyes; then
476                         LDFLAGS="$LDFLAGS -L$withval/lib"
477                         CPPFLAGS="$CPPFLAGS -I$withval/include"
478                 fi
479                 AC_EXT2_UNDEL
480         fi],[
481         dnl Default: detect
482         AC_CHECK_LIB(ext2fs, ext2fs_close, [AC_EXT2_UNDEL], , [-lcom_err])
483     ])
488 dnl The variables used for expanding the auto saver.
490 cons_saver=""
491 install_saver="no"
492 PAMLIBS=""
493 case $host_os in
494 linux*)
495     cons_saver="cons.saver"
496     install_saver="yes"
498     dnl
499     dnl On Linux, check for PAM authentication available
500     dnl
501     AC_CHECK_LIB(pam, pam_start, [
502         AC_DEFINE(HAVE_PAM, 1,
503                   [Define if PAM (Pluggable Authentication Modules) is available])
504         PAMLIBS="-lpam -ldl"
505     ],[],[-ldl])
506     ;;
507 esac
508 AC_SUBST(cons_saver)
509 AC_SUBST(PAMLIBS)
512 dnl User visible support for charset conversion.
514 AC_ARG_ENABLE([charset],
515               [  --enable-charset         Support for charset selection and conversion [[no]]])
516 have_charset=
517 if test "x$enable_charset" = xyes; then
518   if test "x$am_cv_func_iconv" != xyes; then
519     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])
520   else
521     AC_DEFINE(HAVE_CHARSET, 1,
522               [Define to enable charset selection and conversion])
523     have_charset=yes
524   fi
527 if test "$GLIBC21" != yes; then
528     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
531 LIBS="$LIBS $posix_libs"
533 AC_SUBST(CFLAGS)
534 AC_SUBST(CPPFLAGS)
535 AC_SUBST(LDFLAGS)
536 AC_SUBST(LIBS)
538 dnl Libraries used only when building the mc binary
539 AC_SUBST(MCLIBS)
541 dnl Version for the RedHat package, without dashes
542 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
543 AC_SUBST(RPM_VERSION)
545 if test -n "$use_smbfs"; then
546   AC_CONFIG_SUBDIRS([vfs/samba])
549 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
550 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
551 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
552 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
553 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
554 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
555 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
556 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
557 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
559 AH_BOTTOM([#include <extraconf.h>])
561 AC_CONFIG_FILES([
562 Makefile 
563 mc.spec
564 doc/Makefile 
565 vfs/Makefile
566 vfs/extfs/Makefile
567 lib/Makefile
568 src/Makefile
569 slang/Makefile 
570 edit/Makefile 
571 syntax/Makefile
572 pc/Makefile
573 m4/Makefile
575 lib/mc.ext
576 lib/mc.sh
577 lib/mc.csh
579 vfs/extfs/deb
580 vfs/extfs/ftplist
581 vfs/extfs/lslR
582 vfs/extfs/uar
583 vfs/extfs/ucpio
584 vfs/extfs/ulha 
585 vfs/extfs/uha
586 vfs/extfs/urar
587 vfs/extfs/uzoo
589 doc/mc.1 doc/mcedit.1 doc/mcserv.8
590 doc/es/mc.1 doc/es/Makefile
591 doc/hu/Makefile doc/hu/mc.hlp.hu
592 doc/it/mc.1 doc/it/Makefile
593 doc/pl/mc.1 doc/pl/Makefile
594 doc/ru/mc.1 doc/ru/Makefile
596 intl/Makefile
597 po/Makefile.in
600 AC_OUTPUT
602 # Expand $bindir and $datadir to show the user.
603 # Two levels of expansion should be enough.
604 bindir_msg=`eval echo "$bindir"`
605 bindir_msg=`eval echo "$bindir_msg"`
606 datadir_msg=`eval echo "$datadir"`
607 datadir_msg=`eval echo "$datadir_msg"`
609 echo "
610 Configuration:
612   Source code location:       ${srcdir}
613   Compiler:                   ${CC}
614   Compiler flags:             ${CFLAGS}
615   File system:                ${vfs_type}
616                               ${vfs_flags}
617   Screen library:             ${screen_msg}
618   Install console saver:      ${install_saver}
619   Mouse support:              ${mouse_lib}
620   X11 events support:         ${textmode_x11_support}
621   With subshell support:      ${subshell}
622   Internal editor:            ${edit_msg}
623   Install path for binaries:  ${bindir_msg}
624   Install path for data:      ${datadir_msg}