dnl dnl Configure.in file for the Midnight Commander dnl AC_INIT(GNU Midnight Commander, 4.5.99a, mc-devel@gnome.org) AC_PREREQ(2.52) AC_CONFIG_SRCDIR(src/main.c) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE(mc, 4.5.99a) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE AC_PROG_LN_S AC_CANONICAL_HOST AC_AIX AC_MINIX AC_ISC_POSIX AC_PROG_CC_STDC AC_HEADER_MAJOR AC_C_CONST AC_SYS_LARGEFILE AC_CHECK_TOOL(AR, ar, ar) dnl Only list browsers here that can be run in background (i.e. with `&') AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape]) dnl dnl Ovverriding mmap support. This has to be before AC_FUNC_MMAP is used. dnl We use only part of the functionality of mmap, so on AIX, dnl it's possible to use mmap, even if it doesn't pass the autoconf test. dnl AC_ARG_WITH(mmap, [--with-mmap To force using the mmap call (AIX)], [case $withval in yes) ac_cv_func_mmap_fixed_mapped=yes AC_MSG_NOTICE([forcing MMAP support]) ;; no) ac_cv_func_mmap_fixed_mapped=no AC_MSG_NOTICE([disabling MMAP support]) ;; esac]) AC_FUNC_MMAP if test x$ALL_LINGUAS = x; then ALL_LINGUAS="az ca cs da de el es es_ES fi fr hu it ja ko lv nl no pl pt_BR ro ru sk sl sv uk ta tr wa zh_TW zh_CN.GB2312" fi dnl dnl Internationalization dnl AM_GNU_GETTEXT if test "x$USE_INCLUDED_LIBINTL" = xyes; then CPPFLAGS="$CPPFLAGS -I\$(top_builddir)/intl -I\$(top_srcdir)/intl" fi dnl dnl Hack to make extraconf.h visible even if compiling outside srcdir. dnl CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)" dnl dnl Enforce coding standards dnl if test "x$GCC" = xyes; then CFLAGS="$CFLAGS -Wall" fi dnl dnl We now use glib dnl AM_PATH_GLIB(1.2.0,,[AC_MSG_ERROR([Test for GLIB failed. MC requires GLIB.])]) LIBS="$LIBS $GLIB_LIBS" dnl dnl OS specific flags. dnl posix_libs="" case $host_os in aux*) # A/UX posix_libs="-lposix" AC_DEFINE(_POSIX_SOURCE) ;; sco*) AC_DEFINE(SCO_FLAVOR, 1, [Define if you want to turn on SCO-specific code]) AC_DEFINE(_SVID3, 1, [Needs to be defined on SCO]) ;; esac AC_PROG_INSTALL AC_CHECK_HEADERS([unistd.h string.h memory.h crypt.h grp.h limits.h \ malloc.h stdlib.h termios.h utime.h fcntl.h pwd.h sys/statfs.h \ sys/time.h sys/timeb.h sys/select.h sys/ioctl.h stropts.h]) AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_HEADER_DIRENT AC_SHORT_D_NAME_LEN AC_HEADER_STDC dnl Missing structure components AC_STRUCT_ST_BLKSIZE AC_STRUCT_ST_BLOCKS AC_STRUCT_ST_RDEV dnl dnl Check availability of some functions dnl AC_CHECK_FUNCS([strerror statfs strcasecmp strncasecmp strftime \ strdup memmove pwdauth truncate initgroups putenv \ memset memcpy tcsetattr tcgetattr cfgetospeed \ sigaction sigemptyset sigprocmask sigaddset \ sysconf setuid setreuid telldir seekdir]) dnl dnl getpt is a GNU Extension (glibc 2.1.x) dnl AC_CHECK_FUNCS(getpt) SHADOWLIB= case $host_os in linux*) AC_CHECK_LIB(shadow,pw_encrypt, [shadow_header=yes AC_CHECK_HEADERS(shadow.h,, [AC_CHECK_HEADERS(shadow/shadow.h,, [shadow_header=no])]) if test $shadow_header = yes; then AC_DEFINE(LINUX_SHADOW, 1, [Define to use shadow passwords on Linux]) SHADOWLIB=-lshadow fi]) ;; esac AC_SUBST(SHADOWLIB) NEED_CRYPT_PROTOTYPE=yes if test x$ac_cv_header_crypt_h = xyes; then AC_TRY_WARNINGS([#include ], [char *p = crypt("xxx", "yyy"); if (p) return 0;],[ NEED_CRYPT_PROTOTYPE=no]) else if test x$ac_cv_header_unistd_h = xyes; then AC_TRY_WARNINGS([#include ], [char *p = crypt("xxx", "yyy"); if (p) return 0;],[ NEED_CRYPT_PROTOTYPE=no]) fi fi if test x$NEED_CRYPT_PROTOTYPE = xyes; then AC_DEFINE(NEED_CRYPT_PROTOTYPE, 1, [Define if function `crypt' needs a prototype]) fi dnl dnl On SCO and some SVR4, crypt is on libcrypt.a dnl grantpt in libpt.a dnl LCRYPT="" AC_CHECK_FUNCS(crypt, , [ AC_CHECK_LIB(crypt, crypt, [LCRYPT="-lcrypt"], [ AC_CHECK_LIB(crypt_i, crypt, [LCRYPT="-lcrypt_i"])])]) AC_SUBST(LCRYPT) AC_CHECK_FUNCS(grantpt, , [AC_CHECK_LIB(pt, grantpt)]) dnl replacing lstat with statlstat on sco makes it more portable between dnl sco clones AC_CHECK_FUNCS(statlstat) dnl dnl If running under AIX, AC_AIX does not tell us that dnl AC_MSG_CHECKING([for AIX defines]) AC_EGREP_CPP(yes, [#if defined(AIX) || defined(_AIX) || defined(__aix__) || defined(aix) yes #endif ], [ AC_DEFINE(IS_AIX, 1, [Define if compiling for AIX]) AC_MSG_RESULT(yes) ], [AC_MSG_RESULT(no)]) dnl dnl This is from GNU fileutils, check aclocal.m4 for more information dnl AC_GET_FS_INFO dnl dnl Missing typedefs and replacements dnl AC_TYPE_MODE_T AC_CHECK_TYPE(umode_t, int) AC_CHECK_TYPE(off_t, long) AC_TYPE_PID_T AC_TYPE_UID_T AC_CHECK_TYPE(nlink_t, unsigned int) AC_FUNC_ALLOCA AC_FUNC_STRCOLL dnl dnl X11 support. dnl dnl These variables are only used when building the MC binary MCCFLAGS="" MCLIBS="" AC_SUBST(MCCFLAGS) AC_SUBST(MCLIBS) textmode_x11_support="no" AC_ARG_WITH(tm-x-support, [--with-tm-x-support Try getting events from X Window System], [if test x$withval = xyes; then AC_PATH_XTRA MCCFLAGS="$X_CFLAGS" MCLIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" AC_DEFINE(HAVE_TEXTMODE_X11_SUPPORT, 1, [Define to enable getting events from X Window System]) textmode_x11_support="yes" fi ]) dnl dnl Network related functions dnl AC_CHECK_LIB(nsl, t_accept) AC_CHECK_LIB(socket, socket) have_socket=no AC_CHECK_FUNCS(socket, have_socket=yes) if test $have_socket = no; then # socket is not in the default libraries. See if it's in some other. for lib in bsd socket inet; do AC_CHECK_LIB($lib, socket, [ LIBS="$LIBS -l$lib" have_socket=yes AC_DEFINE(HAVE_SOCKET) break]) done fi have_gethostbyname=no AC_CHECK_FUNC(gethostbyname, [have_gethostbyname=yes]) if test $have_gethostbyname = no; then # gethostbyname is not in the default libraries. See if it's in some other. for lib in bsd socket inet; do AC_CHECK_LIB([$lib], [gethostbyname], [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break]) done fi AC_CHECK_FUNCS(socketpair) dnl dnl Sequent wants getprocessstats dnl AC_CHECK_LIB(seq, get_process_stats, [ LIBS="$LIBS -lseq" AC_DEFINE(HAVE_GET_PROCESS_STATS, 1, [Define if you have function `get_process_stats' and have to use that instead of gettimeofday])]) MC_VFS_CHECKS dnl dnl Install mcserv only if explicitly enabled dnl AC_ARG_ENABLE([mcserv-install], [--enable-mcserv-install Install mcserv - Midnight Commander file server]) NETFILES= if test $have_socket = yes; then NETFILES="\$(NETFILES)" fi AC_SUBST(NETFILES) vfs_type="normal" if test $use_vfs = yes then AC_MSG_NOTICE([enabling VFS code]) vfs_type="Midnight Commander Virtual File System" fi screen_manager=unknown search_ncurses=false mouse_lib="xterm only" case $host_os in linux*) AC_ARG_WITH(gpm-mouse, [--with-gpm-mouse[=base-dir] Compile with gpm mouse support (Linux only)], [if test x$withval != xno then if test x$withval != xyes then LIBS="$LIBS -L$withval/lib" CPPFLAGS="$CPPFLAGS -I$withval/include" fi AC_DEFINE(HAVE_LIBGPM, 1, [Define to enable gpm mouse support on Linux]) mouse_lib="GPM and xterm" MCLIBS="-lgpm $MCLIBS" fi], [AC_CHECK_LIB(gpm, Gpm_Repeat, [AC_DEFINE(HAVE_LIBGPM) mouse_lib="GPM and xterm" MCLIBS="-lgpm $MCLIBS"], [AC_MSG_WARN([libgpm is missing or older than 0.18])], [$LIBS]) ]) ;; esac AC_ARG_WITH(ncurses, [--with-ncurses[=base-dir] Compile with ncurses/locate base dir], [if test x$withval = xyes then search_ncurses=true else MCLIBS="$MCLIBS -L$withval/lib -lncurses" CPPFLAGS="$CPPFLAGS -I$withval/include" search_ncurses=false screen_manager="ncurses" AC_DEFINE(USE_NCURSES) fi ]) AC_ARG_WITH(hsc, [--with-hsc Compile with support for the HSC firewall], [if test x$withval = xyes; then AC_DEFINE(HSC_PROXY, 1, [Define if you want to use the HSC firewall]) fi ]) dnl dnl Check for the -mandoc package dnl AC_CHECK_PROG(HAVE_nroff, nroff, true, false) if $HAVE_nroff; then AC_MSG_CHECKING([for manual formatting macros]) AC_CACHE_VAL(ac_cv_mandoc, [ nroff -mandoc < /dev/null > /dev/null 2>&1 if test $? = 0 then ac_cv_mandoc=-mandoc else ac_cv_mandoc=-man fi ]) MANDOC=$ac_cv_mandoc AC_MSG_RESULT([$MANDOC]) else MANDOC=-man fi AC_SUBST(MANDOC) dnl dnl Check if nroff accepts -Tlatin1 or -Tascii dnl if $HAVE_nroff; then AC_MSG_CHECKING([if nroff accepts -Tlatin1 or -Tascii]) AC_CACHE_VAL(ac_cv_nroff_tascii, [ nroff -Tlatin1 < /dev/null > /dev/null 2>&1 /dev/null if test $? = 0 then ac_cv_nroff_tascii=" -Tlatin1" else nroff -Tascii < /dev/null > /dev/null 2>&1 /dev/null if test $? = 0 then ac_cv_nroff_tascii=" -Tascii" else ac_cv_nroff_tascii="" fi fi ]) if test "x$ac_cv_nroff_tascii" = x; then AC_MSG_RESULT([no]) else AC_MSG_RESULT([yes,$ac_cv_nroff_tascii]) fi fi TROFFASCII="$ac_cv_nroff_tascii" AC_SUBST(TROFFASCII) dnl dnl Check for - option to file dnl AC_CHECK_PROG(HAVE_FILECMD, file, true, false) if $HAVE_FILECMD; then AC_MSG_CHECKING([for - option to file command]) AC_CACHE_VAL(ac_cv_filestdin, [[ cat > conftest.c <<\EOF /* A comment */ #if 0 #endif void main(void) { return; } EOF cat > conftest.sed <<\EOF s/^[^:]*:[ ]*// s/[ ]*$// EOF filehyphen_1=`file conftest.c 2>/dev/null | sed -f conftest.sed` filehyphen_2=`cat conftest.c | file - 2>/dev/null | sed -f conftest.sed` if test "x$filehyphen_1" = "x$filehyphen_2"; then ac_cv_filestdin=yes else ac_cv_filestdin=no fi rm conftest.c conftest.sed ]]) if test x$ac_cv_filestdin = xyes; then AC_DEFINE(FILE_STDIN, 1, [Define if the file command accepts - for stdin]) fi filestdin=$ac_cv_filestdin AC_MSG_RESULT([$filestdin]) dnl dnl Check for -L option to file dnl AC_MSG_CHECKING([for -L option to file command]) AC_CACHE_VAL(ac_cv_filel, [ file -L . > /dev/null 2>&1 if test $? = 0 then ac_cv_filel=yes else ac_cv_filel=no fi ]) if test x$ac_cv_filel = xyes; then AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option]) fi filel=$ac_cv_filel AC_MSG_RESULT([$filel]) fi AC_MSG_CHECKING([for subshell support]) AC_ARG_WITH(subshell, [--with-subshell If you want to use a concurrent shell], [result=no if test x$withval = xoptional then AC_DEFINE(SUBSHELL_OPTIONAL, 1, [Define to make subshell support optional]) AC_DEFINE(HAVE_SUBSHELL_SUPPORT, 1, [Define to enable subshell support]) result="optional" fi if test x$withval = xyes then AC_DEFINE(HAVE_SUBSHELL_SUPPORT) result="yes" fi], [dnl Default: provide the subshell support on non-ultrix machines case $host_os in ultrix*) result=no ;; *) AC_DEFINE(HAVE_SUBSHELL_SUPPORT) result=yes ;; esac ]) AC_MSG_RESULT([$result]) subshell="$result" dnl dnl Memory Allocation Debugger dnl mem_debug="none" AC_ARG_WITH(mad, [--with-mad Developers only: activates MAD (memory debugger)], [if test x$withval = xyes; then mem_debug="Janne's MAD library" AC_DEFINE(HAVE_MAD, 1, [Define to use Memory Allocation Debugger (MAD)]) AC_MSG_NOTICE([compiling with memory leak detector]) fi]) dnl dnl Electric Fence - another memory debugger dnl AC_ARG_WITH(efence, [--with-efence Developers only: activates Electric Fence], [if test x$withval = xyes; then LIBS="$LIBS -lefence" AC_MSG_NOTICE([compiling with Electric fence]) mem_debug="Electric Fence" fi]) slang_check_lib=true slang_term="" slang_use_system_installed_lib=false AC_CHECK_LIB(slang,SLang_init_tty, [AC_CHECK_HEADERS(slang.h) if test x$ac_cv_header_slang_h = xyes then slang_use_system_installed_lib=true slang_check_lib=false else AC_CHECK_HEADERS(slang/slang.h) if test x$ac_cv_header_slang_slang_h = xyes then slang_use_system_installed_lib=true slang_check_lib=false fi fi ]) AC_ARG_WITH(terminfo, [--with-terminfo SLANG: Force usage of terminfo],[ if test x$withval = xyes; then AC_USE_TERMINFO slang_check_lib=false slang_use_system_installed_lib=false fi] ) AC_ARG_WITH(termcap, [--with-termcap SLANG: Force usage of termcap],[ if test x$withval = xyes; then AC_USE_TERMCAP slang_check_lib=false slang_use_system_installed_lib=false fi] ) AC_ARG_WITH(included-slang, [--with-included-slang SLANG: use the SLang library included here],[ if test x$withval = xyes; then slang_use_system_installed_lib=false slang_check_lib=true fi] ) AC_ARG_WITH(slang, [--with-slang Compile with the slang screen manager],[ if test x$withval = xyes; then AC_WITH_SLANG fi ]) LIBEDIT_A="" MCEDIT="" LEDIT="" EDIT_msg="" AC_ARG_WITH(edit, [--with-edit Enable internal editpr], [if test x$withval = xyes then AC_WITH_EDIT else EDIT_msg="no" fi], [dnl Default: provide the internal editor AC_WITH_EDIT ]) AC_SUBST(LIBEDIT_A) AC_SUBST(MCEDIT) AC_SUBST(LEDIT) AC_ARG_WITH(netrc, [--with-netrc Compile with ftp .netrc support],[ if test x$withval = xyes; then AC_DEFINE(USE_NETRC, 1, [Define to use .netrc for FTP connections]) AC_MSG_NOTICE([ftpfs will use .netrc]) fi ]) undelfs_o="" if test $use_vfs = yes; then AC_ARG_WITH(ext2undel, [--with-ext2undel Compile with ext2 undelete code],[ if test x$withval != xno; then if test x$withval != xyes then LIBS="$LIBS -L$withval/lib" CPPFLAGS="$CPPFLAGS -I$withval/include" fi AC_EXT2_UNDEL fi],[ dnl Default: detect AC_CHECK_LIB(ext2fs, ext2fs_close, [AC_EXT2_UNDEL], , [-lcom_err]) ]) fi AC_SUBST(undelfs_o) if $search_ncurses then AC_MSG_NOTICE([checking location of ncurses.h file]) AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include") AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses") AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local") AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses") AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses") AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses") fi dnl Ncurses specific checks dnl dnl If ncurses exports the ESCDELAY variable it should be set to 0 dnl or you'll have to press Esc three times to dismiss a dialog box. dnl if test -n "$ncurses_version"; then save_LIBS="$LIBS" LIBS="$MCLIBS $LIBS" AC_CACHE_CHECK([for ESCDELAY variable], [mc_cv_ncurses_escdelay], [AC_TRY_COMPILE([], [ extern int ESCDELAY; int main () { ESCDELAY = 0; } ], [mc_cv_ncurses_escdelay=yes], [mc_cv_ncurses_escdelay=no] ) ]) if test "$mc_cv_ncurses_escdelay" = yes; then AC_DEFINE(HAVE_ESCDELAY, 1, [Define if ncurses has ESCDELAY variable]) fi AC_CHECK_FUNCS(resizeterm) LIBS="$save_LIBS" fi if test "x$screen_manager" = "xunknown"; then AC_WITH_SLANG fi dnl dnl The variables used for expanding the auto saver. dnl cons_saver="" install_saver="no" PAMLIBS="" case $host_os in linux*) cons_saver="cons.saver" install_saver="yes" dnl dnl On Linux, check for PAM authentication available dnl AC_CHECK_LIB(pam, pam_start, [ AC_DEFINE(HAVE_PAM, 1, [Define if PAM (Pluggable Authentication Modules) is available]) PAMLIBS="-lpam -ldl" ],[],[-ldl]) ;; esac AC_SUBST(cons_saver) AC_SUBST(PAMLIBS) dnl dnl User visible support for charset conversion. dnl AC_ARG_ENABLE([charset], [--enable-charset Support for charset selection and conversion]) have_charset= if test "x$enable_charset" = xyes; then if test -z "$am_cv_func_iconv"; then AC_MSG_WARN([Cannot enable charset support because iconv function is missing]) else AC_DEFINE(HAVE_CHARSET, 1, [Define to enable charset selection and conversion]) have_charset=yes fi fi dnl dnl This code should be moved to the ac_WITH_SLANG dnl dnl We check for the existance of setupterm on curses library dnl this is required to load certain definitions on some termcaps dnl editions (AIX and OSF/1 I seem to remember). dnl Note that we avoid using setupterm case $screen_manager in SLang*) case $host_os in linux*) ;; *) AC_CHECK_LIB(curses,setupterm, [AC_TRY_COMPILE([ #include #include ],[ if (key_end == parm_insert_line) return 1; return 0; ], [MCLIBS="$MCLIBS -lcurses" AC_DEFINE(USE_SETUPTERM, 1, [Define to use function `setupterm' from `curses' library in S-Lang])]) ]) esac ;; esac LIBS="$LIBS $posix_libs" AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(LIBS) if test "x$SAMBAFILES" != x; then AC_CONFIG_SUBDIRS([vfs/samba]) fi AM_CONDITIONAL(USE_EDIT, [test -n "$LIBEDIT_A"]) AM_CONDITIONAL(USE_VFS, [test "x$use_vfs" = xyes]) AM_CONDITIONAL(USE_VFS_NET, [test -n "$NETFILES"]) AM_CONDITIONAL(USE_UNDEL_FS, [test -n "$undelfs_o"]) AM_CONDITIONAL(USE_SAMBA_FS, [test -n "$SAMBAFILES"]) AM_CONDITIONAL(MCSERV_INSTALL, [test "x$enable_mcserv_install$mcserv" = xyesmcserv]) AM_CONDITIONAL(INCLUDED_SLANG, [test "x$slang_use_system_installed_lib" = xfalse]) AM_CONDITIONAL(CHARSET, [test -n "$have_charset"]) AM_CONDITIONAL(CONS_SAVER, [test -n "$cons_saver"]) AH_BOTTOM([#include ]) AC_CONFIG_FILES([ Makefile mc.spec doc/Makefile vfs/Makefile:vfs/Make-mc.in vfs/extfs/Makefile lib/Makefile src/Makefile slang/Makefile edit/Makefile syntax/Makefile pc/Makefile lib/mc.ext lib/mc.sh lib/mc.csh mcfn_install vfs/extfs/deb vfs/extfs/ftplist vfs/extfs/lslR vfs/extfs/uar vfs/extfs/ucpio vfs/extfs/ulha vfs/extfs/uha vfs/extfs/urar vfs/extfs/uzoo doc/mc.1 doc/mcedit.1 doc/mcserv.8 intl/Makefile po/Makefile.in ]) AC_CONFIG_COMMANDS(potfiles, [sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile]) AC_OUTPUT case $screen_manager in SLang*) screen_manager="${screen_manager}${slang_term}" ;; esac echo " Configuration: Source code location: ${srcdir} Compiler: ${CC} Compiler flags: ${CFLAGS} File system: ${vfs_type} ${vfs_flags} Screen manager: ${screen_manager} Install console saver: ${install_saver} Mouse support: ${mouse_lib} X11 events support: ${textmode_x11_support} Debugger code: ${mem_debug} With subshell support: ${subshell} Internal editor: ${EDIT_msg} Install path: ${prefix}/bin, ${prefix}/lib/mc "