* lib/mc.ext.in: Add a few sound formats that "play" and "mikmod"
[midnight-commander.git] / configure.ac
blob3716dac1d174ccf3965274f21c59e03ce2256fc2
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.1-pre1a)
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 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 MC_ASM_LABELS
105 AM_GNU_GETTEXT
106 AM_GNU_GETTEXT_VERSION(0.11.5)
108 if test "x$USE_INCLUDED_LIBINTL" = xyes; then
109     CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl"
112 dnl Determine which help translations we want to install.
113 ALL_DOC_LINGUAS="es hu it pl ru sr"
115 DOC_LINGUAS=
116 if test "x$USE_NLS" = xyes; then
117     if test -z "$LINGUAS"; then
118         langs="`grep -v '^#' $srcdir/po/LINGUAS`"
119     else
120         langs="$LINGUAS"
121     fi
122 else
123     langs=
126 for h_lang in $ALL_DOC_LINGUAS; do
127     for lang in $langs; do
128         if test "$lang" = "$h_lang"; then
129             DOC_LINGUAS="$DOC_LINGUAS $lang"
130             break
131         fi
132     done
133 done
134 AC_SUBST(DOC_LINGUAS)
137 dnl OS specific flags.
139 case $host_os in
140 aux*)
141     # A/UX
142     LIBS="$LIBS -lposix"
143     AC_DEFINE(_POSIX_SOURCE)
144     ;;
145 linux*)
146     AC_DEFINE(_GNU_SOURCE,, [Define to request GNU feature set on Linux])
147     ;;
148 esac
151 AC_PROG_INSTALL
152 AC_CHECK_HEADERS([unistd.h string.h memory.h grp.h limits.h malloc.h \
153         stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h sys/time.h \
154         sys/timeb.h sys/select.h sys/ioctl.h stropts.h arpa/inet.h \
155         security/pam_misc.h])
157 AC_HEADER_TIME
158 AC_HEADER_SYS_WAIT
159 AC_HEADER_DIRENT
160 AC_HEADER_STDC
162 dnl Missing structure components
163 AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
164 AC_STRUCT_ST_BLOCKS
167 dnl Check availability of some functions 
168 dnl 
170 AC_CHECK_FUNCS([atoll cfgetospeed getsid initgroups memcpy memmove memset \
171                 putenv setreuid setuid statfs strerror strftime \
172                 sysconf tcgetattr tcsetattr truncate])
174 dnl S-Lang needs all four functions to be defined to use POSIX signal API
175 AC_CHECK_FUNCS([sigaction sigemptyset sigprocmask sigaddset], , [slang_signals=no])
176 if test x$slang_signals != xno; then
177     AC_DEFINE(SLANG_POSIX_SIGNALS, 1, [Define to use POSIX signal API in S-Lang])
181 dnl getpt is a GNU Extension (glibc 2.1.x)
183 AC_CHECK_FUNCS(posix_openpt, , [AC_CHECK_FUNCS(getpt)])
184 AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)])
186 dnl replacing lstat with statlstat on sco makes it more portable between
187 dnl sco clones
188 AC_CHECK_FUNCS(statlstat)
191 dnl If running under AIX, AC_AIX does not tell us that
193 AC_MSG_CHECKING([for AIX defines])
194 AC_EGREP_CPP(yes,
195 [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix)
197 #endif
198 ], [
199 AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX])
200 AC_MSG_RESULT(yes)
201 ], [AC_MSG_RESULT(no)])
204 dnl This is from GNU fileutils, check aclocal.m4 for more information
206 AC_GET_FS_INFO
209 dnl Missing typedefs and replacements
210 dnl 
212 AC_TYPE_MODE_T
213 AC_CHECK_TYPE(umode_t, int)
214 AC_CHECK_TYPE(off_t, long)
215 AC_CHECK_TYPE(socklen_t, int)
216 AC_TYPE_PID_T
217 AC_TYPE_UID_T
218 AC_CHECK_TYPE(nlink_t, unsigned int)
220 dnl This is needed for regex.c only
221 AC_CHECK_TYPE(uintptr_t,
222               [AC_DEFINE(HAVE_UINTPTR_T, 1,
223                          [Define if you have the `uintptr_t' type.])
226 AC_FUNC_ALLOCA
227 AC_FUNC_STRCOLL
230 dnl X11 support.
231 dnl Used to read keyboard modifiers when running under X11.
234 AC_PATH_XTRA
235 if test "x$no_x" = xyes; then
236     textmode_x11_support="no"
237 else
238     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
239     if test "x$mc_cv_g_module_supported" = "xyes" ; then
240         dnl Replace the contents of GLIB_CFLAGS and GLIB_LIBS with those of
241         dnl GMODULE_CFLAGS and GMODULE_LIBS, only if X is available and gmodule
242         dnl functionality is supported on the system.  This way, mc will be
243         dnl linked against the gmodule library only when it's really required.
244         GLIB_CFLAGS="$GMODULE_CFLAGS"
245         GLIB_LIBS="$GMODULE_LIBS"
246     else
247         MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
248     fi
249     AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1,
250               [Define to enable getting events from X Window System])
251     textmode_x11_support="yes"
255 dnl Try to find static libraries for glib and gmodule.
257 if test x$with_glib_static = xyes; then
258     new_GLIB_LIBS=
259     for i in $GLIB_LIBS; do
260         case x$i in
261         x-lglib*)
262             lib=glib ;;
263         x-lgmodule*)
264             lib=gmodule ;;
265         *)
266             lib=
267             add="$i" ;;
268         esac
270         if test -n "$lib"; then
271             lib1=`echo $i | sed 's/^-l//'`
272             if test -f "$GLIB_LIBDIR/lib${lib1}.a"; then
273                 add="$GLIB_LIBDIR/lib${lib1}.a"
274             else
275                 if test -f "$GLIB_LIBDIR/lib${lib}.a"; then
276                     add="$GLIB_LIBDIR/lib${lib}.a"
277                 else
278                     AC_MSG_ERROR([Cannot find static $lib])
279                 fi
280             fi
281         fi
282         new_GLIB_LIBS="$new_GLIB_LIBS $add"
283     done
284     GLIB_LIBS="$new_GLIB_LIBS"
289 dnl Network related functions
292 AC_CHECK_LIB(nsl, t_accept)
293 AC_CHECK_LIB(socket, socket)
295 have_socket=no
296 AC_CHECK_FUNCS(socket, have_socket=yes)
297 if test $have_socket = no; then
298   # socket is not in the default libraries.  See if it's in some other.
299   for lib in bsd socket inet; do
300     AC_CHECK_LIB($lib, socket, [
301         LIBS="$LIBS -l$lib"
302         have_socket=yes
303         AC_DEFINE(HAVE_SOCKET)
304         break])
305   done
308 have_gethostbyname=no
309 AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes])
310 if test $have_gethostbyname = no; then
311   # gethostbyname is not in the default libraries.  See if it's in some other.
312   for lib in bsd socket inet; do
313     AC_CHECK_LIB([$lib], [gethostbyname],
314                  [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
315   done
319 dnl Sequent wants getprocessstats
321 AC_CHECK_LIB(seq, get_process_stats, [
322         LIBS="$LIBS -lseq"
323         AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
324                   [Define if you have function `get_process_stats' and
325 have to use that instead of gettimeofday])])
327 MC_VFS_CHECKS
329 vfs_type="normal"
330 if test x$use_vfs = xyes; then
331         AC_MSG_NOTICE([enabling VFS code])
332         vfs_type="Midnight Commander Virtual File System"
336 dnl Check for gpm mouse support (Linux only)
338 mouse_lib="xterm only"
339 AC_ARG_WITH(gpm-mouse, 
340         [  --with-gpm-mouse         Compile with gpm mouse support (Linux only)
341                            [[yes if found]]])
343 case $host_os in
344 linux*)
345     if test x$with_gpm_mouse != xno; then
346         AC_CHECK_LIB(gpm, Gpm_Repeat,
347             [AC_DEFINE(HAVE_LIBGPM, 1,
348                        [Define to enable gpm mouse support on Linux])
349             mouse_lib="gpm and xterm"
350             MCLIBS="$MCLIBS -lgpm"],
351             [AC_MSG_WARN([libgpm is missing or older than 0.18])
352         ])
353     fi
354     ;;
355 esac
358 dnl Check nroff and the options it supports
360 AC_CHECK_PROG(HAVE_nroff, nroff, true, false)
362 dnl Default values
363 MANDOC=-man
364 MAN_FLAGS=
366 if $HAVE_nroff; then
367     AC_MSG_CHECKING([for manual formatting macros])
368     AC_CACHE_VAL(mc_cv_mandoc, [
369     nroff -mandoc < /dev/null > /dev/null 2>&1
370     if test $? = 0; then
371         mc_cv_mandoc=-mandoc
372     else
373         mc_cv_mandoc=-man
374     fi
375     ])
376     MANDOC=$mc_cv_mandoc
377     AC_MSG_RESULT([$MANDOC])
379     AC_MSG_CHECKING([for option to disable ANSI color in manuals])
380     AC_CACHE_VAL(mc_cv_man_nocolor, [
381     nroff -c < /dev/null > /dev/null 2>&1
382     if test $? = 0; then
383         mc_cv_man_nocolor=-c
384     else
385         mc_cv_man_nocolor=
386     fi
387     ])
388     MAN_FLAGS=$mc_cv_man_nocolor
389     AC_MSG_RESULT([${MAN_NOCOLOR-none}])
391     AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii])
392     AC_CACHE_VAL(mc_cv_nroff_tascii, [
393     mc_cv_nroff_tascii=
394     nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null
395     if test $? = 0; then
396         mc_cv_nroff_tascii=-Tlatin1
397     else
398         nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null
399         if test $? = 0; then
400             mc_cv_nroff_tascii=-Tascii
401         fi
402     fi
403     ])
404     AC_MSG_RESULT([${mc_cv_nroff_tascii-no}])
405     MAN_FLAGS="$MAN_FLAGS $mc_cv_nroff_tascii"
408 AC_SUBST(MANDOC)
409 AC_SUBST(MAN_FLAGS)
413 dnl Check for -L option to file
415 AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
416 if $HAVE_FILECMD; then
417     AC_MSG_CHECKING([for -L option to file command])
418     AC_CACHE_VAL(mc_cv_filel, [
419     file -L . > /dev/null 2>&1
420     if test $? = 0; then
421         mc_cv_filel=yes
422     else
423         mc_cv_filel=no
424     fi
425     ])
426     if test x$mc_cv_filel = xyes; then
427         AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
428     fi
429     filel=$mc_cv_filel
430     AC_MSG_RESULT([$filel])
434 AC_MSG_CHECKING([for subshell support])
435 AC_ARG_WITH(subshell,
436         [  --with-subshell          Compile in concurrent subshell [[yes]]
437   --with-subshell=optional Don't run concurrent shell by default [[no]]],
438         [result=no
439         if test x$withval = xoptional
440         then
441                 AC_DEFINE(SUBSHELL_OPTIONAL, 1,
442                           [Define to make subshell support optional])
443                 result="optional"
444         fi
445         if test x$withval = xyes
446         then 
447                 result="yes"
448         fi],
449         [dnl Default: enable the subshell support
450         result="yes"
452 if test "x$result" != xno; then
453         AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1,
454                   [Define to enable subshell support])
456 AC_MSG_RESULT([$result])
457 subshell="$result"
461 dnl Select the screen library.  mcslang is the included S-Lang library.
463 AC_ARG_WITH(screen,
464         [  --with-screen=LIB        Compile with screen library: slang, mcslang or
465                            ncurses [[slang if found, else mcslang]]])
467 case x$with_screen in
468 xslang)
469         MC_WITH_SLANG(strict)
470         ;;
471 xmcslang)
472         MC_WITH_MCSLANG
473         ;;
474 xncurses)
475         MC_WITH_NCURSES
476         ;;
478         MC_WITH_SLANG
479         ;;
481         AC_MSG_ERROR([Value of the screen library is incorrect])
482         ;;
483 esac
487 dnl Force using termcap.  This option is processed in MC_WITH_MCSLANG.
488 dnl Report an error if this option is not applicable.
490 AC_ARG_WITH(termcap,
491         [  --with-termcap           Try using termcap database [[only if no terminfo]]],
492         [if test x$with_screen != xmcslang; then
493                 AC_MSG_ERROR([Option `--with-termcap' only works with `--with-screen=mcslang'])
494         fi
499 dnl Internal editor support.
501 AC_ARG_WITH(edit,
502         [  --with-edit              Enable internal editor [[yes]]])
504 if test x$with_edit != xno; then
505         AC_DEFINE(USE_INTERNAL_EDIT, 1, [Define to enable internal editor])
506         use_edit=yes
507         edit_msg="yes"
508         AC_MSG_NOTICE([using internal editor])
509 else
510         edit_msg="no"
514 dnl Check if the OS is supported by the console saver.
515 cons_saver=""
516 case $host_os in
517 linux*)
518     cons_saver=yes
519 esac
522 dnl Support for background operations
523 AC_ARG_ENABLE([background],
524               [  --enable-background      Support for background file operations [[yes]]])
525 if test "x$enable_background" != xno; then
526     AC_DEFINE(WITH_BACKGROUND, 1, [Define to enable background file operations])
531 dnl User visible support for charset conversion.
533 AC_ARG_ENABLE([charset],
534               [  --enable-charset         Support for charset selection and conversion [[no]]])
535 have_charset=
536 if test "x$enable_charset" = xyes; then
537   if test "x$am_cv_func_iconv" != xyes; then
538     AC_MSG_WARN([Cannot enable charset support because iconv function is missing])
539   else
540     AC_DEFINE(HAVE_CHARSET, 1,
541               [Define to enable charset selection and conversion])
542     have_charset=yes
543   fi
546 if test "$GLIBC21" != yes; then
547     AC_DEFINE(USE_INCLUDED_REGEX, 1, [Use the regex included here])
550 if test "x$with_screen" = xmcslang; then
551     AC_DEFINE(USE_INCLUDED_SLANG, 1, [Use the S-Lang included here])
554 if test x"$USE_MAINTAINER_MODE" = x"yes"; then
555     if test x"${enable_gcc_warnings+set}" != x"set"; then
556         if test x"${GCC}" = x"yes"; then
557             CFLAGS="-Wall $CFLAGS"
558         fi
559     fi
562 ri_GCC_WARNINGS
564 AC_SUBST(CFLAGS)
565 AC_SUBST(CPPFLAGS)
566 AC_SUBST(LDFLAGS)
567 AC_SUBST(LIBS)
569 dnl Libraries used only when building the mc binary
570 AC_SUBST(MCLIBS)
572 dnl Version for the RedHat package, without dashes
573 RPM_VERSION=`echo $VERSION | sed 's/-//g'`
574 AC_SUBST(RPM_VERSION)
576 if test -n "$use_smbfs"; then
577   AC_CONFIG_SUBDIRS([vfs/samba])
580 AM_CONDITIONAL(USE_EDIT, [test -n "$use_edit"])
581 AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes])
582 AM_CONDITIONAL(USE_VFS_NET, [test x"$use_net_code" = xtrue])
583 AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$use_undelfs"])
584 AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$use_smbfs"])
585 AM_CONDITIONAL(USE_MCFS, [test -n "$use_mcfs"])
586 AM_CONDITIONAL(INCLUDED_SLANG, [test "x$with_screen" = xmcslang])
587 AM_CONDITIONAL(CHARSET, [test -n "$have_charset"])
588 AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"])
590 AC_CONFIG_FILES([
591 Makefile 
592 mc.spec
593 mc.qpg
594 doc/Makefile 
595 vfs/Makefile
596 vfs/extfs/Makefile
597 lib/Makefile
598 src/Makefile
599 slang/Makefile 
600 edit/Makefile 
601 syntax/Makefile
602 m4/Makefile
603 lib/mc.ext
604 vfs/extfs/a
605 vfs/extfs/apt
606 vfs/extfs/audio
607 vfs/extfs/deb
608 vfs/extfs/deba
609 vfs/extfs/debd
610 vfs/extfs/dpkg
611 vfs/extfs/iso9660
612 vfs/extfs/hp48
613 vfs/extfs/lslR
614 vfs/extfs/mailfs
615 vfs/extfs/patchfs
616 vfs/extfs/rpms
617 vfs/extfs/uar
618 vfs/extfs/uarj
619 vfs/extfs/uha
620 vfs/extfs/ulha 
621 vfs/extfs/urar
622 vfs/extfs/uzip
623 vfs/extfs/uzoo
625 doc/mc.1 doc/mcedit.1 doc/mcview.1 doc/mcserv.8
626 doc/es/mc.1 doc/es/Makefile
627 doc/hu/mc.1 doc/hu/Makefile
628 doc/it/mc.1 doc/it/Makefile
629 doc/pl/mc.1 doc/pl/Makefile
630 doc/ru/mc.1 doc/ru/Makefile
631 doc/sr/mc.1 doc/sr/mcserv.8 doc/sr/Makefile
633 intl/Makefile
634 po/Makefile.in
637 AC_OUTPUT
639 echo "
640 Configuration:
642   Source code location:       ${srcdir}
643   Compiler:                   ${CC}
644   Compiler flags:             ${CFLAGS}
645   File system:                ${vfs_type}
646                               ${vfs_flags}
647   Screen library:             ${screen_msg}
648   Mouse support:              ${mouse_lib}
649   X11 events support:         ${textmode_x11_support}
650   With subshell support:      ${subshell}
651   Internal editor:            ${edit_msg}