Update PUI to use ffi-curl
[sxemacs] / configure.ac
index 823f010..44bf7bb 100644 (file)
@@ -31,7 +31,7 @@ AC_COPYRIGHT(
 #### Copyright (C) 2005 Malcolm Purvis.
 #### Copyright (C) 2005, 2006, 2007 Steve Youngs.
 #### Copyright (C) 2006, 2007, 2008 Sebastian Freundt.
-#### Copyright (C) 2007, 2010, 2011 Nelson Ferreira
+#### Copyright (C) 2007, 2010, 2011, 2012 Nelson Ferreira
 
 ### Don't edit this script!
 ### This script was automatically generated by the `autoconf' program
@@ -65,7 +65,7 @@ AC_COPYRIGHT(
 ### If configure succeeds, it leaves its status in config.status.
 ### A log of configuration tests can be found in config.log.
 ### If configure fails after disturbing the status quo,
-###    config.status is removed.
+###    config.status is removed.
 ])
 
 AC_REVISION([SXEM4CS_GIT_VERSION])
@@ -178,7 +178,7 @@ OG_ARG_WITH([package-prefix],
        AS_HELP_STRING([--with-package-prefix=PATH],
                [What to use as a prefix to the system-wide package
                directories.  It doesn't affect the package directories
-               under ~/.sxemacs, and is totally ignored if
+               under the user's home directory, and is totally ignored if
                --with-package-path is set.
                Normally, you would not need to set this.]),
        [none], [None], [og_any],
@@ -317,7 +317,7 @@ OG_ARG_WITH([regex-malloc],
 
 OG_ARG_WITH([ffi],
        AS_HELP_STRING([--with-ffi],
-               [Compile in experimental support for 
+               [Compile in experimental support for
                Foreign Function Interface.]),
        [yes], [YES])
 
@@ -334,6 +334,7 @@ OG_MULTIARG_WITH([modules], [dnl
        OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
        OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
 ])
+       dnl OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 
 OG_MULTIARG_WITH([static-modules], [dnl
        AS_HELP_STRING([--with-static-modules], [
@@ -345,10 +346,8 @@ OG_MULTIARG_WITH([static-modules], [dnl
        OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
        OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
 ])
+       dnl OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 
-dnl _OG_MULTIARG_ITEM([ent], [int], [int], [native integer arithmetics])
-dnl _OG_MULTIARG_ITEM([ent], [fpfloat], [fpfloat], [native fixed precision floats])
-dnl _OG_MULTIARG_ITEM([ent], [indef], [indef], [abstract indefinites])
 OG_MULTIARG_WITH([ent], [dnl
        AS_HELP_STRING([--with-ent], [
                Compile in support for enhanced number types,
@@ -382,6 +381,13 @@ OG_MULTIARG_WITH([ase], [dnl
        OG_MULTIARG_ITEM([resclass], [resclass], [Residue Class Rings and Classes])
 ])
 
+OG_ARG_WITH([compre],
+       AS_HELP_STRING([--with-compre],[
+               Provide exhaustive caching of compiled regexps. This will
+               mean that frequently used regexps will be faster to use
+               since the compile step will not be needed after first use.]),
+       [yes], [By default do cache compiled regexps.])
+
 OG_MULTIARG_WITH([experimental-features], [dnl
        AS_HELP_STRING([--with-experimental-features], [
                Activate experimental code, that is code which is
@@ -394,7 +400,6 @@ OG_MULTIARG_WITH([experimental-features], [dnl
                can switch off some portions.])],
        [all nobdwgc], [ALL but bdwgc], [dnl
        OG_MULTIARG_ITEM([bdwgc], [bdwgc], [the Boehm-Demers-Weiser collector])
-       OG_MULTIARG_ITEM([compre], [compre], [exhaustive caching of compiled regexps])
        OG_MULTIARG_ITEM([asyneq], [asyneq], [asynchronous event queues])
 ])
        dnl stop that pom stuff
@@ -446,6 +451,8 @@ OG_MULTIARG_WITH([error-checking], [dnl
        OG_MULTIARG_ITEM([byte_code], [byte_code], [checks on byte compiled code])
        OG_MULTIARG_ITEM([bufpos], [bufpos], [checks on buffer position])
        OG_MULTIARG_ITEM([glyphs], [glyphs], [checks on glyph data])
+       OG_MULTIARG_ITEM([stack], [stack], [checks on stack barriers])
+       OG_MULTIARG_ITEM([malldbg], [malldbg], [malloc debugging code])
 ])
 
 OG_ARG_WITH([purify],
@@ -479,36 +486,36 @@ OG_ARG_WITH([external-widget],
 
 OG_ARG_WITH([menubars],
        AS_HELP_STRING([--with-menubars=TYPE],
-               [Type of menubars to use.  The Lucid menubars emulate
-               Motif (mostly) but are faster.]),
+               [Type of menubars to use.  The Lucid menubars emulate
+               Motif (mostly) but are faster.]),
        [lucid], [Lucid], [lucid no])
 
 OG_ARG_WITH([scrollbars],
        AS_HELP_STRING([--with-scrollbars=TYPE],
-               [Type of scrollbars to use.
-               *WARNING*  The Motif scrollbars are currently broken.]),
+               [Type of scrollbars to use.
+               *WARNING*  The Motif scrollbars are currently broken.]),
        [lucid], [Lucid], [lucid motif athena no])
 
 OG_ARG_WITH([dialogs],
        AS_HELP_STRING([--with-dialogs=TYPE],
-               [Type of dialog boxes to use.  Athena dialogs will
-                 be used if Athena can be found.]),
-       [athena], [], [athena motif no])
+               [Type of dialog boxes to use.  Athena dialogs will
+                be used if Athena can be found.]),
+       [athena], [], [athena motif no])
 
 OG_ARG_WITH([widgets],
        AS_HELP_STRING([--with-widgets=TYPE],
-               [Type of native widgets to use.  Athena widgets will
-               be used if Athena can be found.]),
+               [Type of native widgets to use.  Athena widgets will
+               be used if Athena can be found.]),
        [athena], [], [athena motif no])
 
 OG_ARG_WITH([athena],
        AS_HELP_STRING([--with-athena=TYPE],
-               [Type of Athena widgets to use.]),
+               [Type of Athena widgets to use.]),
        [auto], [Autodetect], [auto xaw 3d next 95 xpm no])
 
 OG_ARG_WITH([xim],
        AS_HELP_STRING([--with-xim],
-               [Type of Mule input method to use.]),
+               [Type of Mule input method to use.]),
        [auto], [Autodetect], [yes no xlib motif])
 
 OG_ARG_WITH([wmcommand],
@@ -543,6 +550,39 @@ OG_ARG_WITH([ncurses],
                [Use the ncurses library for tty support.]),
        [auto], [Autodetect])
 
+OG_ARG_WITH([curses],
+       AS_HELP_STRING([--with-curses],
+               [Use the curses library for tty support.]),
+       [auto], [Autodetect])
+
+OG_ARG_WITH([terminfo],
+       AS_HELP_STRING([--with-terminfo],
+               [Use the terminfo library for tty support.]),
+       [auto], [Autodetect])
+
+OG_ARG_WITH([tinfo],
+       AS_HELP_STRING([--with-tinfo],
+               [Use the ncurses tinfo library for tty support.]),
+       [auto], [Autodetect])
+
+OG_ARG_WITH([termlib],
+       AS_HELP_STRING([--with-termlib],
+               [Use the termlib library for tty support.]),
+       [auto], [Autodetect])
+
+OG_ARG_WITH([termcap],
+       AS_HELP_STRING([--with-termcap],
+               [Use the termcap library for tty support.]),
+       [auto], [Autodetect])
+
+OG_ARG_WITH([builtin-tty],
+       AS_HELP_STRING([--with-builtin-tty],
+               [Use builtin termcap like code. LEGACY CODE. Please consider
+               installing ncurses. Requires /etc/termcap or TERMCAP
+               environment variable to work.]),
+       [no], [No])
+
+
 OG_ARG_WITH([gpm],
        AS_HELP_STRING([--with-gpm],
                [Compile in GPM mouse support for ttys.]),
@@ -592,24 +632,16 @@ OG_MULTIARG_WITH([image], [dnl
 OG_MULTIARG_WITH([sound], [dnl
        AS_HELP_STRING([--with-sound=TYPE],
                [Compile with sound support.])],
-       [auto], [Autodetect all sound support (except Pulse)], [dnl
+       [auto], [Autodetect all sound support], [dnl
        OG_MULTIARG_ITEM([alsa], [ALSA], [kernel-based linux sound standard])
        OG_MULTIARG_ITEM([ao], [ao], [generic audio output layer])
-       OG_MULTIARG_ITEM([arts], [aRts], [discontinued realtime synthesizer])
        OG_MULTIARG_ITEM([esd], [ESD], [Enlightenment Sound Daemon])
        OG_MULTIARG_ITEM([jack], [Jack], [a low-latency audio server])
        OG_MULTIARG_ITEM([nas], [NAS], [Network Audio System])
        OG_MULTIARG_ITEM([oss], [OSS], [Open Sound System])
+       OG_MULTIARG_ITEM([pulse], [PulseAudio], [PulseAudio Sound Server])
 ])
 
-OG_ARG_WITH([pulseaudio],
-       AS_HELP_STRING([--with-pulseaudio],
-               [Compile with support for the PulseAudio audio server.
-               This has been turned off by default because of too many
-               bugs in recent versions of PA.  Use at your own risk,
-               YMMV, and all that.]),
-       [no], [NO])
-
 OG_MULTIARG_WITH([media], [dnl
        AS_HELP_STRING([--with-media=TYPE],
                [Compile with media stream support.])],
@@ -629,13 +661,13 @@ OG_OPTION_GROUP(Cryptography options)
 
 OG_ARG_WITH([openssl],
        AS_HELP_STRING([--with-openssl],
-               [Compile in experimental support for 
+               [Compile in experimental support for
                OpenSSL libcrypto and libssl.]),
        [yes], [YES])
 
 OG_ARG_WITH([gnutls],
        AS_HELP_STRING([--with-gnutls],
-               [Compile in experimental support for 
+               [Compile in experimental support for
                GnuTLS transport security.]),
        [no], [NO])
 
@@ -728,24 +760,28 @@ OG_ARG_WITH([wnn6],
 dnl dnl Other Options
 dnl dnl =============
 dnl OG_OPTION_GROUP(Other options)
-dnl 
+dnl
 
 ## -------------------------------------------------------------------------
 ## Check for users who regularly forget about running autoconf
 ## -------------------------------------------------------------------------
-if test -f $0.ac -a $0.ac -nt $0; then
-       AC_MSG_ERROR([What are you doing? RUN autoreconf NOW!!!])
-fi
+AS_IF([test -f "$0.ac" -a "$0.ac" -nt "$0"],
+   AC_MSG_ERROR([What are you doing? RUN autoreconf NOW!!!]))
 
 #
-# Turn off core generation. We are already verifying the program fails, no need 
+# Turn off core generation. We are already verifying the program fails, no need
 # poluting the workspace. Of course if you are a SXEmacs developer you may want
-# to comemnt this on occasion :-)
+# to comment this on occasion :-)
 ulimit -c 0
 
 ## initialise our nestable msg funs
 SXE_INIT_MSG_LEVEL
 
+AC_PROG_SED
+AC_PROG_AWK
+
+ECHO=echo
+
 dnl Small snippet to make echo -n work on solaris
 ECHO_N= ECHO_C=
 case `echo -n x` in
@@ -779,7 +815,20 @@ dnl Check for bogus options
 dnl -------------------------------------------------------------------------
 SXE_CHECK_COMMAND_LINE
 
-AM_INIT_AUTOMAKE([foreign -Wall])
+test -z "$AUTOMAKE" || AUTOMAKE=automake
+
+AM_INIT_AUTOMAKE(m4_esyscmd([
+   automake_ver=`$AUTOMAKE --version 2>/dev/null | head -n1`
+   automake_major=`echo "$automake_ver" | sed -e 's/^.* \([0-9]*\).*/\1/'`
+   automake_minor=`echo "$automake_ver" | sed -e 's/^.* [0-9]*\.\([0-9]*\).*/\1/'`
+   if test "$automake_major" = "1" -a "$automake_minor" -lt "14"
+   then
+      echo "foreign -Wall"
+   else
+      echo "info-in-builddir foreign -Wall"
+   fi]))
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
 SXE_CHECK_BUILDCHAIN
 AC_SUBST(EGREP)
 
@@ -803,22 +852,16 @@ AC_CHECK_PROG([have_git], [git], [yes], [no])
 AC_MSG_CHECKING([for SXEmacs version])
 AC_MSG_RESULT([SXEmacs SXEM4CS_VERSION])
 dnl Must do the following first to determine verbosity for AC_DEFINE
-if test -n "[]SXEM4CS_BETA_P[]"; then
-       beta=yes
-else
-       beta=no
-fi
+AS_IF([test -n "[]SXEM4CS_BETA_P[]"],beta=yes,beta=no)
 : "${extra_verbose=$beta}"
 
 AC_MSG_CHECKING([for SXEmacs patchlevel])
 CURDIR=$(pwd)
 cd "$sxe_srcdir"
-if test "$have_git" = "yes"; then
-       sxemacs_git_version="$(git describe)"
-fi
-if test -z "$sxemacs_git_version" ; then
-       sxemacs_git_version="[]SXEM4CS_GIT_VERSION[]"
-fi
+AS_IF([test "$have_git" = "yes"], 
+           [sxemacs_git_version=`git describe 2> /dev/null | head -1`])
+AS_IF([test -z "$sxemacs_git_version"],
+       sxemacs_git_version="[]SXEM4CS_GIT_VERSION[]")
 AC_MSG_RESULT([$sxemacs_git_version])
 version="$sxemacs_git_version"
 cd "$CURDIR"
@@ -1035,20 +1078,20 @@ fi
 dnl what exactly do we determine here? and where is it used?
 dnl dnl Determine GCC version.
 dnl if test "$GCC" = "yes"; then
-dnl    AC_RUN_IFELSE([AC_LANG_SOURCE([[
+dnl    AC_RUN_IFELSE([AC_LANG_SOURCE([[
 dnl int main ()
 dnl {
 dnl #if __GNUC__ >= 3
-dnl    return 11;
+dnl    return 11;
 dnl #else
-dnl    return 0;
+dnl    return 0;
 dnl #endif
 dnl }]])], [:], [dnl
 dnl case "$?" in
 dnl 11)
-dnl    echo "You appear to be using GCC version 3 or above."
-dnl    __GCC3=yes
-dnl    ;;
+dnl    echo "You appear to be using GCC version 3 or above."
+dnl    __GCC3=yes
+dnl    ;;
 dnl esac], [__GCC3=no])
 dnl fi
 
@@ -1103,10 +1146,10 @@ fi
 
 dnl dnl For debugging...
 dnl SXE_PRINT_VAR([libs_machine libs_system libs_termcap libs_standard
-dnl    objects_machine objects_system c_switch_machine c_switch_system
-dnl    ld_switch_machine ld_switch_system unexec ld_switch_shared
-dnl    ld lib_gcc ld_text_start_addr start_files ordinary_link
-dnl    have_terminfo mail_use_flock mail_use_lockf]) && echo ""
+dnl    objects_machine objects_system c_switch_machine c_switch_system
+dnl    ld_switch_machine ld_switch_system unexec ld_switch_shared
+dnl    ld lib_gcc ld_text_start_addr start_files ordinary_link
+dnl    have_terminfo mail_use_flock mail_use_lockf]) && echo ""
 
 dnl bitch at build attempt on win32 machines
 case "$opsys" in mingw* | cygwin*)
@@ -1243,9 +1286,8 @@ SXE_CHECK_FILE_LOCK
 
 case "$opsys" in decosf*)
        AC_CHECK_LIB([pthreads], [cma_open])
-       if test "$ac_cv_lib_pthreads_cma_open" = "yes"; then
-               c_switch_site="$c_switch_site -threads"
-       fi
+       AS_IF([test "$ac_cv_lib_pthreads_cma_open" = "yes"],
+               c_switch_site="$c_switch_site -threads")
        ;;
 esac
 
@@ -1269,7 +1311,7 @@ if test "$opsys" = "sol2"; then
     AC_MSG_CHECKING(for "-z ignore" linker flag)
     case "`ld -h 2>&1`" in
       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
-        SXE_PREPEND_UNDUP(-z ignore, ld_switch_site) ;;
+       SXE_PREPEND_UNDUP(-z ignore, ld_switch_site) ;;
       *) AC_MSG_RESULT(no) ;;
     esac
   fi
@@ -1586,10 +1628,10 @@ AC_CHECK_FUNC(readdir64_r, [AC_DEFINE([HAVE_LARGEFILE], [1], [Description here!]
 dnl Check for nlist.h
 AC_CHECK_HEADER([nlist.h], [AC_DEFINE([NLIST_STRUCT], [1], [Description here!])], [])
 
-dnl firstly check for pthread support so that we can use the 
+dnl firstly check for pthread support so that we can use the
 dnl asynchronous playing routines
 
-dnl special pthread handling 
+dnl special pthread handling
 dnl AIX uses pthreads instead of pthread, and HP/UX uses cma
 dnl FreeBSD uses -pthread
 AC_CHECK_LIB(pthread, pthread_create)
@@ -1614,7 +1656,7 @@ if test $ac_cv_lib_pthreads_pthread_create = yes; then
   SXE_PREPEND(-lpthreads, MM_LIBS)
 fi
 
-dnl test for HPUX cma threads. 
+dnl test for HPUX cma threads.
 AC_CHECK_LIB(cma, pthread_create)
 if test $ac_cv_lib_cma_pthread_create = yes; then
   have_threads=yes
@@ -1635,9 +1677,9 @@ AC_CACHE_VAL(ac_cv_ldflag_pthread,
 ])
 if eval "test \"`echo $ac_cv_ldflag_pthread`\" = yes"; then
        AC_MSG_RESULT(yes)
-        have_threads=yes
-        SXE_PREPEND_UNDUP("-pthread", ld_switch_site)
-        SXE_PREPEND_UNDUP("-D_THREAD_SAFE", c_switch_site)
+       have_threads=yes
+       SXE_PREPEND_UNDUP("-pthread", ld_switch_site)
+       SXE_PREPEND_UNDUP("-D_THREAD_SAFE", c_switch_site)
 else
        AC_MSG_RESULT(no)
 fi])
@@ -1667,7 +1709,12 @@ dnl Check for POSIX functions.
 dnl ----------------------------------------------------------------
 
 SXE_CHECK_BASIC_FUNS
-AC_CHECK_FUNCS([alarm cbrt closedir dup2 eaccess endpwent floor fmod fpathconf frexp fsync ftime ftruncate getaddrinfo getcwd gethostbyname gethostname getnameinfo getpagesize getrlimit gettimeofday getwd isascii link logb lrand48 matherr memchr memmove memset mkdir mktime munmap perror poll pow putenv random re_comp readlink regcomp rename res_init rint rmdir select setitimer setlocale setpgid setsid sigblock sighold sigprocmask snprintf socket sqrt stpcpy strcasecmp strchr strdup strerror strlwr strrchr strspn strtol strupr symlink tzset ulimit umask uname usleep utime vlimit vsnprintf waitpid wcscmp wcslen])
+AC_CHECK_FUNCS([alarm cbrt closedir dup2 eaccess endpwent floor fmod fpathconf frexp fsync ftime ftruncate getaddrinfo getcwd gethostbyname gethostname getnameinfo getpagesize getrlimit gettimeofday getwd isascii isatty link logb log2 log2f log2l log10 log10f log10l log logf logl lrand48 matherr memchr memmove memset mkdir mktime munmap perror poll pow putenv random re_comp readlink regcomp rename res_init rint rmdir select setitimer setlocale setpgid setsid sigblock sighold sigprocmask snprintf socket sqrt stpcpy strncpy strncat strcasecmp strchr strdup strerror strlwr strrchr strspn strtol strupr symlink ttyname tzset ulimit umask uname usleep utime vlimit vsnprintf waitpid wcscmp wcslen])
+
+AS_IF([test "$have_isatty" = "yes"],
+       AC_DEFINE([HAVE_ISATTY], [1], [isatty is available]))
+AS_IF([test "$have_ttyname" = "yes"],
+       AC_DEFINE([HAVE_TTYNAME], [1], [ttyname is available]))
 
 
 ## combines all these time structures and funs
@@ -1693,10 +1740,30 @@ fi
 after_morecore_hook_exists=yes
 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
 AC_MSG_CHECKING(whether __after_morecore_hook exists)
-AC_LINK_IFELSE([AC_LANG_SOURCE([[extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0]])],
+AC_LINK_IFELSE([AC_LANG_SOURCE([
+       [extern void (* __after_morecore_hook)();]
+       [main() {__after_morecore_hook = 0;}]
+       ])],
   [AC_MSG_RESULT(yes)],
   [AC_MSG_RESULT(no)
    after_morecore_hook_exists=no])
+if test "$after_morecore_hook_exists" = "yes" ; then
+   AC_DEFINE([HAVE_MORECORE_HOOK], [1], [Define if __after_morecore_hook is available])
+fi
+AC_SUBST(HAVE_MORECORE_HOOK)
+free_hook_exists=yes
+AC_MSG_CHECKING(whether __free_hook exists)
+AC_LINK_IFELSE([AC_LANG_SOURCE([
+       [extern void (* __free_hook)();]
+       [main() {__free_hook = 0;}]
+       ])],
+  [AC_MSG_RESULT(yes)],
+  [AC_MSG_RESULT(no)
+   free_hook_exists=no])
+if test "$free_hook_exists" = "yes" ; then
+   AC_DEFINE([HAVE_FREE_HOOK], [1], [Define if __free_hook is available])
+fi
+AC_SUBST(HAVE_FREE_HOOK)
 if test "$system_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
@@ -1756,31 +1823,28 @@ if test "$with_module_support $have_module_support" = "yes"; then
        SXE_APPEND([modules], [MAKE_AM_SUBDIR])
        SXE_APPEND([modules], [SRC_SUBDIR_DEPS])
 dnl else
-dnl    MOD_CC="$SXEMACS_CC"
-dnl    MODCFLAGS="\$(SXE_CFLAGS) -I../../src -I\$(sxe_srcdir)/../../src"
-dnl    INSTALLPATH=""
-dnl    MOD_INSTALL_PROGRAM="true"
-dnl    OBJECT_TO_BUILD="\$(MODNAME).o"
+dnl    MOD_CC="$SXEMACS_CC"
+dnl    MODCFLAGS="\$(SXE_CFLAGS) -I../../src -I\$(sxe_srcdir)/../../src"
+dnl    INSTALLPATH=""
+dnl    MOD_INSTALL_PROGRAM="true"
+dnl    OBJECT_TO_BUILD="\$(MODNAME).o"
 fi
 
-if test "$opsys" != "darwin"; then
-
-       if test "$with_modules_ase" = "yes"; then
-               have_modules_ase=yes
-       fi
-       if test "$with_static_modules_ase" = "yes"; then
-               have_static_modules_ase=yes
-       fi
+if test "$with_modules_ase" = "yes"; then
+       have_modules_ase=yes
+fi
+if test "$with_static_modules_ase" = "yes"; then
+       have_static_modules_ase=yes
 fi
 SXE_EMOD_STATMOD([ase])
-if test "$opsys" != "darwin"; then
-       have_ase_cart="yes"
-       have_ase_dig="yes"
-       have_ase_intv="yes"
-       have_ase_metric="yes"
-       have_ase_nbhood="yes"
-       have_ase_perm="yes"
-       have_ase_resclass="yes"
+if test "$have_modules_ase $have_static_modules_ase" != " "; then
+       have_ase_cart="yes"
+       have_ase_dig="yes"
+       have_ase_intv="yes"
+       have_ase_metric="yes"
+       have_ase_nbhood="yes"
+       have_ase_perm="yes"
+       have_ase_resclass="yes"
 fi
 if test "$have_bison" = "yes"; then
        if test "$with_modules_cl" = "yes" ; then
@@ -1794,8 +1858,24 @@ else
                AC_MSG_WARN([Sorry no bison means no cl module for you.])
        fi
 fi
+
 SXE_EMOD_STATMOD([cl])
 
+dnl D-Bus
+dnl SXE_CHECK_DBUS
+dnl if test "$have_dbus" = "yes"; then
+dnl    if test "$with_modules_dbus" = "yes"; then
+dnl            have_modules_dbus=yes
+dnl    fi
+dnl    if test "$with_static_modules_dbus" = "yes"; then
+dnl            have_static_modules_dbus=yes
+dnl    fi
+dnl else
+dnl    AC_MSG_WARN([I cannot believe you do not have d-bus.])
+dnl fi
+
+dnl SXE_EMOD_STATMOD([dbus])
+
 AM_CONDITIONAL([AUTARKIC], [test "0" = "1"])
 MODARCHDIR=
 MAKE_DOCFILE="$sxe_blddir/lib-src/make-docfile"
@@ -2042,8 +2122,8 @@ return sin(0.0);
 return sin(0.0);
 ]])], [AC_MSG_RESULT([yes])], [
        AC_MSG_RESULT([no])
-        AC_MSG_WARN([No way to use math functions found. Reverting option append.])
-        LIBS=$save_LIBS])])
+       AC_MSG_WARN([No way to use math functions found. Reverting option append.])
+       LIBS=$save_LIBS])])
 
 
 
@@ -2089,12 +2169,12 @@ AC_DEFINE([WITH_NUMBER_TYPES], [1], [Description here!])
 SXE_SUBST_ENT_OBJS
 
 dnl experimental code support
-if test "$with_experimental_features_compre" = "yes"; then
+if test "$with_compre" != "no"; then
        AC_MSG_CHECKING([if compre prerequisites are met])
        AC_MSG_RESULT([yes])
        AC_DEFINE([EF_USE_COMPRE], [1],
                [Whether to provide compiled regular expression!])
-       have_experimental_features_compre=yes
+       have_compre=yes
 fi
 if test "$with_experimental_features_pom" = "yes"; then
        AC_MSG_CHECKING([if pom prerequisites are met])
@@ -2184,7 +2264,7 @@ SXE_CHECK_SUFFICIENCY([multicast], [multicast])
 
 dnl Decnet
 if test "$with_dnet" = "yes"; then
-  AC_CHECK_LIB(dnet, main, 
+  AC_CHECK_LIB(dnet, main,
     [AC_DEFINE([HAVE_LIBDNET], [1], [Description here!])],
     [SXE_DIE("DECnet requested but can't find libdnet")])
 fi
@@ -2220,7 +2300,7 @@ if test "$with_x" != "no"; then
        dnl -------------------------------------------
        dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
        dnl it often gets it wrong, so we only use it as a last resort.
-       
+
        dnl $OPENWINHOME implies --x-includes and --x-libraries
        dnl Not (yet) handled by autoconf2
        if test "$x_includes $x_libraries" = "NONE NONE" \
@@ -2260,7 +2340,7 @@ if test "$with_x" != "no"; then
                        "/usr/X11R6/lib" "/usr/lib/X11R6" \
                        "/usr/local/lib" "/usr/local/lib/X11" \
                        "/usr/lib" "/usr/lib/X11"; do
-                       if test -r "$dir/libX11.a"; then
+                       if test -r "$dir/libX11.a"; then
                                x_libraries="$dir"
                                break
                        fi
@@ -2314,15 +2394,15 @@ if test "$with_x11" = "yes"; then
        if test "$ac_cv_header_Xm_Xm_h" = "yes"; then
                AC_CHECK_LIB([Xm], [XmStringFree], [got_motif=yes])
        fi
-       
+
        if test "$got_motif" != "yes"; then
                dnl Try to find Motif dirs
                dnl These take precedence over other X libs/includes, so PRE-pend
                for lib_dir in \
                        "/usr/dt/lib" "/usr/lib/Motif2.1" \
                        "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
-                       inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
-                       if test -d "$lib_dir" -a -d "$inc_dir"; then
+                       inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
+                       if test -d "$lib_dir" -a -d "$inc_dir"; then
                                case "$x_libraries" in
                                *"$lib_dir"* )
                                        ;;
@@ -2371,14 +2451,13 @@ if test "$with_x11" = "yes"; then
        dnl Avoid version mismatch for shared library libXm.so on osf4
        case "$opsys" in
        decosf*)
-               if test "$GCC" = yes -a -d "/usr/shlib"; then
-                       SXE_APPEND([-L/usr/shlib], [X_LIBS]);
-               fi
+               AS_IF([test "$GCC" = yes -a -d "/usr/shlib"],
+                       SXE_APPEND([-L/usr/shlib], [X_LIBS]))
                ;;
        esac
-       
+
        LDFLAGS="$LDFLAGS $X_LIBS"
-       
+
        if test "$extra_verbose" = "yes"; then
                echo
                echo "X11 compilation variables:"
@@ -2415,7 +2494,7 @@ dnl   if mkdir conftestdir; then
 dnl     cd conftestdir
 dnl     cat > Imakefile <<'EOF'
 dnl xetest:
-dnl    @echo ${PROTO_DEFINES} ${STD_DEFINES}
+dnl    @echo ${PROTO_DEFINES} ${STD_DEFINES}
 dnl EOF
 dnl     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
 dnl       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
@@ -2427,25 +2506,25 @@ dnl     for word in $xmkmf_defines; do
 dnl       case "$word" in
 dnl       -D__STDC__*) ;;
 dnl       -D* )
-dnl    sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
-dnl    case "$word" in
-dnl      -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
-dnl      *     ) val=1 ;;
-dnl    esac
+dnl    sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
+dnl    case "$word" in
+dnl      -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
+dnl      *     ) val=1 ;;
+dnl    esac
 dnl dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
-dnl    if grep "^#define $sym " confdefs.h >/dev/null; then :; else
-dnl      if test "$val" = "1"
-dnl        then AC_DEFINE_UNQUOTED([$sym], [], [Description here!])
-dnl        else AC_DEFINE_UNQUOTED([$sym], [$val], [Description here!])
-dnl      fi
-dnl    fi  ;;
+dnl    if grep "^#define $sym " confdefs.h >/dev/null; then :; else
+dnl      if test "$val" = "1"
+dnl        then AC_DEFINE_UNQUOTED([$sym], [], [Description here!])
+dnl        else AC_DEFINE_UNQUOTED([$sym], [$val], [Description here!])
+dnl      fi
+dnl    fi  ;;
 dnl       esac
 dnl     done
 dnl   fi
 
        dnl make sure we can find Intrinsic.h
        AC_CHECK_HEADER([X11/Intrinsic.h], [],
-               [AC_MSG_ERROR([Unable to find X11 header files. Try using --x-includes=<path> if you know the path, or --with-x=no to disable X11 support.])])
+               [AC_MSG_ERROR([Unable to find X11 and/or Xt header files. Try using --x-includes=<path> if you know the path, or --with-x=no to disable X11 support.])])
 
        dnl Check some more headers
        AC_CHECK_HEADERS([X11/Intrinsic.h X11/StringDefs.h X11/Shell.h X11/ShellP.h],
@@ -2458,7 +2537,7 @@ dnl   fi
 
        dnl -lXt and -lX11 are required
        dnl Some broken systems require the magic "-b i486-linuxaout" flag
-       
+
        dnl Other broken systems will not pass these tests unless the pre and
        dnl extra libs are passed on...
        LIBS="$LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
@@ -2479,7 +2558,7 @@ dnl   fi
        dnl Require -lXt
        AC_CHECK_LIB([Xt], [XtOpenDisplay], [SXE_PREPEND([-lXt], [libs_x])], [
                AC_MSG_ERROR([Unable to find X11 libraries. Try using --x-libraries=<path> if you know the path, or --with-x=no to disable X11 support.])])
-       
+
        AC_MSG_CHECKING([the version of X11 being used])
        AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <X11/Intrinsic.h>
@@ -2487,15 +2566,15 @@ int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }]])],
                [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
        AC_MSG_RESULT(R${x11_release})
        AC_DEFINE_UNQUOTED([X11_RELEASE], [${x11_release}], [Description here!])
-       
+
        AC_CHECK_FUNCS([XConvertCase])
        AC_CHECK_LIB([Xt], [XtRegisterDrawable])
        if test "$ac_cv_lib_Xt_XtRegisterDrawable" = "yes"; then
                AC_DEFINE([HAVE_XTREGISTERDRAWABLE], [1], [Description])
        fi
-       
+
        AC_CHECK_HEADERS(X11/Xlocale.h)
-       
+
        dnl XFree86 has a non-standard prototype for this X11R6 function
        AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
        AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
@@ -2521,7 +2600,7 @@ extern Bool XRegisterIMInstantiateCallback(
                SXE_PREPEND([-lXmu], [libs_x])
                AC_DEFINE([HAVE_XMU], [1], [Description here!])
        fi
-       
+
        dnl Autodetect -lXbsd
        dnl #### Someone, please add a better function than main
        AC_CHECK_LIB([Xbsd], [main], SXE_PREPEND([-lXbsd], [libs_x]))
@@ -2551,11 +2630,6 @@ fi
 
 dnl Test for features that require X11 support
 if test "$with_x11" != "yes"; then
-  dnl It ought to be reasonable to have no output device at all, and only use
-  dnl SXEmacs in --batch mode.
-  dnl if test "$with_tty" = "no" ; then
-  dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
-  dnl fi
   for feature in offix wmcommand xim xmu nas_sound
   do
     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
@@ -2689,117 +2763,369 @@ dnl ---------------------
 dnl checks for header files
 AC_CHECK_HEADERS([libintl.h nlist.h sgtty.h termio.h termios.h])
 
-if test "$with_tty" != "no"  ; then
-       AS_MESSAGE(checking for TTY-related features)
-       AC_DEFINE([HAVE_TTY], [1], [Description here!])
-       AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1], [Description here!])
-       SXE_ADD_SXEUITTY_OBJS([console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o])
-
-  dnl Autodetect ncurses.
-  AC_CHECK_LIB(ncurses, tgetent, , with_ncurses=no)
-  AC_CHECK_LIB(ncurses, tgetstr, , with_ncurses=no)
-  AC_CHECK_LIB(ncurses, tparm, , with_ncurses=no)
-  if test "$with_ncurses" != "no"; then
-    AC_DEFINE([HAVE_NCURSES], [1], [Description here!])
-    with_ncurses=yes
-    AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
-    if test -z "$curses_h_file"; then
-           AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
-    fi
-    if test -n "$curses_h_file"; then
-           AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
-           AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
-    else
-           AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
-           AC_CHECK_HEADER(termcap.h, termcap_h_file=termcap.h)
-           AC_CHECK_HEADER(term.h,    term_h_file=term.h)
-    fi
-    SXE_ADD_SXEUITTY_OBJS(terminfo.o)
-    SXE_PREPEND(-lncurses, LIBS)
-
-    if test -z "$curses_h_file" ; then
-      dnl Try again, and check for the bogus ncurses/ include bug.
-      dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
-      dnl <ncurses/unctrl.h>)
-      save_c_switch_site="$c_switch_site"
-      c_switch_site="$c_switch_site -I/usr/include/ncurses"
+AS_IF([test "$with_tty" != "no"],[
+   AS_MESSAGE(checking for TTY-related features)
+   dnl Check if needed calls are available at all...
+   
+   with_tty_libs=""
+   detect_tty_libs=""
+   for lib in ncurses curses tinfo terminfo termlib termcap
+   do
+       eval "with=\$with_${lib}"
+       if test "$with" = no
+       then
+          AC_MSG_WARN(["Ignoring available ${lib} due to --with-${lib}=no"])
+       elif test "$with" = "yes"
+       then
+          with_tty_libs="$with_tty_libs $lib"
+       else
+          detect_tty_libs="$detect_tty_libs $lib"
+       fi
+   done
+
+   # All terminal info functions needed
+   tty_funcs="tgetent tgetstr tgetflag tgetnum tparm tgoto tputs"
+   tty_libs=""
+   # Filter by existing libs, printf is sure to be available with libc, so failure
+   # would come from lib not find
+   for lib in $with_tty_libs $detect_tty_libs
+   do
+       SXE_CHECK_LINK_LIB($lib)
+       if eval "test \"\$sxe_cv_c_lib_${lib}\" != yes"
+       then
+         if eval "test \"\$with_${lib}\" = yes"
+         then
+            AC_MSG_WARN(["Ignoring --with-${lib}=yes due to library not linkable"])
+            eval "with_${lib}=no"
+         fi
+          continue
+       fi
+
+       AC_CHECK_LIB([$lib], [$tty_funcs])
+
+       # Lets verify we have all functions
+       for func in $tty_func
+       do
+           if eval "test \"\$ac_cv_lib_${lib}_${func}\" = no"
+          then
+              AS_MESSAGE(["Skipping ${lib}, does not support to all TTY functions"])
+              lib=""
+             break
+          fi
+       done
+
+       tty_libs="$tty_libs $lib"
+   done
+
+   if test -n "$tty_libs"
+   then
+      AS_MESSAGE(["Considering libraries: $tty_libs"])
+   
+      # Check which preferred lib can be used
+      for func in $tty_funcs
+      do
+         # Make sure no flags are harmed during the search
+         sxe_save_LIBS=$LIBS
+         AC_SEARCH_LIBS($func, $tty_libs)
+         LIBS=$sxe_save_LIBS
+      done
+
+      # Minimize the set of libraries
+      tty_feature=""
+      tty_fun=""
+      for func in $tty_funcs
+      do
+          eval lib=\$ac_cv_search_${func}
+          if test "$lib" != no -a "$lib" != "none required"
+          then
+              for feature in $tty_feature
+              do
+                         if test "$feature" = "$lib"
+                 then
+                    lib=""
+                    func=""
+                    break;
+                  fi
+              done
+             tty_feature="$tty_feature $lib"
+             tty_fun="$tty_fun $func"
+          fi
+       done
+   fi
+
+   if test -n "$tty_feature"
+   then
+      # Check all the expected functions still compile with all the added
+      # libraries
+      sxe_save_LIBS=$LIBS
+      LIBS="$LIBS $tty_feature"
+      AC_CHECK_FUNCS($tty_funcs)
+      for func in $tty_fun
+      do
+       if eval "test \"\$ac_cv_func_${func}\" = no"
+       then
+           tty_feature=""
+           break
+       fi
+      done
+      LIBS=$sxe_save_LIBS
+   fi
+
+   if test -n "$tty_feature"
+   then
+      SXE_PREPEND($tty_feature, LIBS)
+      for lib in $tty_feature
+      do
+         l=`echo $lib | sed -e 's/^-l//g'`
+         eval "with_${l}=yes"
+      done
+      with_builtin_tty=no
+      have_tty=yes
+   else
+      AC_MSG_WARN([Could not link all needed tty functions.]
+                  [Please consider installing ncurses.])
+      if test "$with_builtin_tty" = yes
+      then
+          AC_MSG_WARN([Using builtin tty support.])
+         have_tty=yes
+      else
+          AC_MSG_WARN([Use --with-builtin-tty=yes if you cannot use ncurses.])
+         have_tty=no
+      fi
+   fi
+
+   if test "$with_builtin_tty" = yes
+   then
+      # Add our own wrappers using termcap
+      SXE_ADD_SXEUITTY_OBJS(termcap.o)
+      SXE_ADD_SXEUITTY_OBJS(tparam.o)
+      have_tty=yes
+   elif test "$have_tty" = yes
+   then
+      # Terminfo interface, since tgetent etc are available
+      SXE_ADD_SXEUITTY_OBJS(terminfo.o)
+   fi
+
+   # Check headers, first generally
+   AC_CHECK_HEADER(termcap.h, termcap_h_file=termcap.h)
+   AC_CHECK_HEADER(term.h,    term_h_file=term.h)
+   
+   if test "$have_ncurses" = yes; then
+      # Verify how ncurses overrides them
       AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
       if test -z "$curses_h_file"; then
            AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
       fi
       if test -n "$curses_h_file"; then
            AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
-           AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
+           AC_CHECK_HEADER(ncurses/term.h,    term_h_file=ncurses/term.h)
       else
-           AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
-           AC_CHECK_HEADER(termcap.h, curses_h_file=termcap.h)
-           AC_CHECK_HEADER(term.h,    curses_h_file=term.h)
+           AC_CHECK_HEADER(ncurses.h,         curses_h_file=ncurses.h)
       fi
-      if test -n "$curses_h_file"
-        then AC_MSG_WARN([Your system has the bogus ncurses include bug.])
-        else c_switch_site="$save_c_switch_site"
+      
+      if test -z "$curses_h_file" ; then
+          dnl Try again, and check for the bogus ncurses/ include bug.
+          dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
+          dnl <ncurses/unctrl.h>)
+          save_c_switch_site="$c_switch_site"
+          c_switch_site="$c_switch_site -I/usr/include/ncurses"
+          AC_CHECK_HEADER(ncurses/ncurses.h,   curses_h_file=ncurses/ncurses.h)
+          if test -z "$curses_h_file"; then
+           AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
+          fi
+          if test -n "$curses_h_file"; then
+           AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
+           AC_CHECK_HEADER(ncurses/term.h,    term_h_file=ncurses/term.h)
+          else
+           AC_CHECK_HEADER(ncurses.h,         curses_h_file=ncurses.h)
+          fi
+          if test -n "$curses_h_file"
+         then
+               AC_MSG_WARN([Your system has the bogus ncurses include bug.])
+               AC_CHECK_HEADER(termcap.h,         curses_h_file=termcap.h)
+               AC_CHECK_HEADER(term.h,            curses_h_file=term.h)
+         else c_switch_site="$save_c_switch_site"
+          fi
       fi
+   fi
+   
+   if test -n "$curses_h_file"; then
+       AC_DEFINE_UNQUOTED([HAVE_CURSES_H], [1],
+                          [There is a curses.h header file available])
+       AC_DEFINE_UNQUOTED([CURSES_H_FILE], ["${curses_h_file}"],
+                          [The curses.h header file])
+   fi
+
+   if test -n "$termcap_h_file"; then
+       AC_DEFINE_UNQUOTED([HAVE_TERMCAP_H], [1],
+                          [There is a termcap.h header available])
+       AC_DEFINE_UNQUOTED([TERMCAP_H_FILE], ["${termcap_h_file}"],
+                          [The termcap.h header file])
+   fi
+
+   if test -n "$term_h_file"; then
+       AC_DEFINE_UNQUOTED([HAVE_TERM_H], [1],
+                          [There is a term.h header available])
+       AC_DEFINE_UNQUOTED([TERM_H_FILE], ["${term_h_file}"],
+                          [The term.h header file])
+   fi
+
+   # Finally let's see if we have prototype for the elusive tparm
+   AC_MSG_CHECKING(for tparm prototype)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+/* Completely incompatible prototype with all tparm ones
+   if files above define it, compilation should fail
+*/
+extern void tparm(void);
+       ]], [[ tparm(); ]])],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT(yes)
+         AC_DEFINE_UNQUOTED([HAVE_TPARM_PROTOTYPE], [1],
+                           [tparm has a prototype defined])])
+
+   # Finally let's see if we have prototype for tgetent
+   AC_MSG_CHECKING(for tgetent prototype)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+extern void tgetent(void);
+       ]], [[ tgetent(); ]])],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT(yes)
+         AC_DEFINE_UNQUOTED([HAVE_TGETENT_PROTOTYPE], [1],
+                           [tgetent has a prototype defined])])
+
+
+   # Finally let's see if we have prototype for tgetflag
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+extern void tgetflag(void);
+       ]], [[ tgetflag(); ]])],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT(yes)
+         AC_DEFINE_UNQUOTED([HAVE_TGETFLAG_PROTOTYPE], [1],
+                                [tgetflag has a prototype defined])])
+
+   # Finally let's see if we have prototype for tgetnum
+   AC_MSG_CHECKING(for tgetnum prototype)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+extern void tgetnum(void);
+       ]], [[ tgetnum(); ]])],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT(yes)
+        AC_DEFINE_UNQUOTED([HAVE_TGETNUM_PROTOTYPE], [1],
+                           [tgetnum has a prototype defined])])
+
+   # Finally let's see if we have prototype for tgetnum
+   AC_MSG_CHECKING(for tgetstr prototype)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+extern void tgetstr(void);
+       ]], [[ tgetstr(); ]])],
+       [AC_MSG_RESULT(no)],
+        [AC_MSG_RESULT(yes)
+        AC_DEFINE_UNQUOTED([HAVE_TGETSTR_PROTOTYPE], [1],
+                           [tgetstr has a prototype defined])])
+
+   # Finally let's see if we have prototype for tgetnum
+   AC_MSG_CHECKING(for tputs prototype)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef TERM_H_FILE
+#include TERM_H_FILE
+#endif
+#ifdef TERMCAP_H_FILE
+#include TERMCAP_H_FILE
+#endif
+#ifdef CURSES_H_FILE
+#include CURSES_H_FILE
+#endif
+extern void tputs(void);
+       ]], [[ tputs(); ]])],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT(yes)
+         AC_DEFINE_UNQUOTED([HAVE_TPUTS_PROTOTYPE], [1],
+                           [tputs has a prototype defined])])
+],[
+  for feature in ncurses curses termcap terminfo termlib gpm; do
+    if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
+      AC_MSG_WARN([--with-${feature} ignored:  Not valid without TTY support])
     fi
-  fi
-  if test "$with_ncurses" = "no" -o -z "$curses_h_file" ; then
-
-    # Check alternate library includes
-    for lib in curses term terminfo termcap; do
-       AC_CHECK_HEADER(${lib}.h, [
-               eval ${lib}_h_file=${lib}.h
-               AC_CHECK_LIB($lib, tgetent, eval have_${lib}=yes, eval have_${lib}=no)
-               AC_CHECK_LIB($lib, tgetstr, , eval have_${lib}=no)])
-    done
-
-    for lib in curses terminfo termlib termcap; do
-          have_lib_eval=`eval echo \\$have_$lib`
-          if test "$have_lib_eval" = "yes"; then
-               AC_CHECK_LIB($lib, tparm, 
-                         SXE_ADD_SXEUITTY_OBJS(terminfo.o),
-                         SXE_ADD_SXEUITTY_OBJS(tparam.o))
-               SXE_PREPEND(-l${lib}, LIBS)
-                break
-          fi
-    done
-  fi
-  if test -n "$curses_h_file"; then
-       AC_DEFINE_UNQUOTED([HAVE_CURSES_H], [1], [There is a curses.h header file available])
-  fi
-  if test -n "$termcap_h_file"; then
-       AC_DEFINE_UNQUOTED([HAVE_TERMCAP_H], [1], [There is a termcap.h header available])
-  fi
-  if test -n "$term_h_file"; then
-       AC_DEFINE_UNQUOTED([HAVE_TERM_H], [1], [There is a term.h header available])
-  fi
-  AC_DEFINE_UNQUOTED([CURSES_H_FILE], ["${curses_h_file-curses.h}"], [The curses.h header file])
-  AC_DEFINE_UNQUOTED([TERMCAP_H_FILE], ["${termcap_h_file-termcap.h}"], [The termcap.h header file])
-  AC_DEFINE_UNQUOTED([TERM_H_FILE], ["${term_h_file-term.h}"], [The term.h header file])
+    eval "with_${feature}=\"\""
+  done
+])
 
+AS_IF([test "$with_tty" != "no" -a "$have_tty" != no], [
+       AC_DEFINE([HAVE_TTY], [1],
+                 [Include TTY support for SXEmacs])
+       AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1],
+                 [Include Unixoid event loop - TTY provided])
+       SXE_ADD_SXEUITTY_OBJS([console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o])
+])
+
+AS_IF([test "$with_tty" != "no" -a "$have_tty" != no], [
   dnl General Purpose Mouse (libgpm) support
-  if test "$with_gpm" != "no"; then
+  AS_IF([test "$with_gpm" != "no"], [
     AC_CHECK_HEADER(gpm.h, [
       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
-    if test "$have_gpm" = "yes"; then
+    AS_IF([test "$have_gpm" = "yes"], [
       with_gpm=yes
       AC_DEFINE([HAVE_GPM], [1], [General Purpose Mouse (libgpm) is available])
       SXE_ADD_SXEUITTY_OBJS(gpmevent.o)
-      SXE_PREPEND(-lgpm, LIBS)
-    else
-      with_gpm=no
-    fi
-  fi
-
-else dnl "$with_tty" = "no"
-  for feature in ncurses gpm; do
-    if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
-      AC_MSG_WARN([--with-${feature} ignored:  Not valid without TTY support])
-    fi
-    eval "with_${feature}=no"
-  done
-fi dnl with_tty
+      SXE_PREPEND(-lgpm, LIBS) ],[ with_gpm=no ])
+  ])
+])
 
 SXE_CHECK_UI_SUFFICIENCY
 
+AS_IF([test -z "$window_system" -o "$window_system" = "none" ], [
+    dnl It ought to be reasonable to have no output device at all, and only use
+    dnl SXEmacs in --batch mode.
+    AS_IF([test "$have_tty" = "no"],
+       AC_MSG_ERROR([No window system nor TTY support. SXEmacs cannot be compiled.
+Check INSTALL and PROBLEMS files for hints on how to solve.]))
+])
+
 ## Uncertain options
 ## =================
 echo
@@ -2940,9 +3266,20 @@ if test "$with_media_internal" != "no"; then
        have_media_internal=yes
 fi
 
-## Since almost any of the below tests uses pkgconfig we make a 
+## Since almost any of the below tests uses pkgconfig we make a
 ## once-for-all-times check now
 SXE_SEARCH_CONFIG_PROG([pkg-config])
+if test "$have_pkg_config" = "yes" -a -n "$with_site_prefixes"; then
+       for dir in $with_site_prefixes; do
+               pkgcfg_dir="${dir}/lib/pkgconfig"
+               if test -n "$PKG_CONFIG_PATH"; then
+                  PKG_CONFIG_PATH="$PKG_CONFIG_PATH":"$pkgcfg_dir"
+               else
+                  PKG_CONFIG_PATH="$pkgcfg_dir"
+               fi
+       done
+       export PKG_CONFIG_PATH
+fi
 
 dnl libsndfile support
 if test "$with_media_sndfile" != "no"; then
@@ -2975,8 +3312,8 @@ if test "$with_media_ffmpeg" != "no"; then
 
        if test "$have_media_ffmpeg" = "yes"; then
                AC_MSG_RESULT([yes])
-               FFMPEG_LIBS=`$PKG_CONFIG --libs libavformat`
-               FFMPEG_CPPFLAGS=`$PKG_CONFIG --cflags libavformat`
+               FFMPEG_LIBS=`$PKG_CONFIG --libs libavformat libavcodec libavutil`
+               FFMPEG_CPPFLAGS=`$PKG_CONFIG --cflags libavformat libavcodec libavutil`
                SXE_PREPEND($FFMPEG_LIBS, MM_LIBS)
                SXE_PREPEND_UNDUP($FFMPEG_CPPFLAGS, MM_CPPFLAGS)
                SXE_ADD_MM_OBJS([media-ffmpeg.o])
@@ -2989,7 +3326,6 @@ fi
 
 dnl sox support
 if test "$with_media_sox" != "no"; then
-       ## defines $LIBST_CONFIG
        SXE_MM_CHECK_SOX([have_media_sox=yes], [have_media_sox=no])
 
        AC_MSG_CHECKING([for sufficient SoX support])
@@ -3094,53 +3430,24 @@ if test "$with_sound_esd" != "no"; then
 fi
 
 dnl PulseAudio Sound support
-if test "$with_pulseaudio" != "no"; then
+if test "$with_sound_pulse" != "no"; then
        SXE_MM_CHECK_PULSE([have_sound_pulse=yes], [have_sound_pulse=no])
 
        AC_MSG_CHECKING([for sufficient PulseAudio support])
        if test "$have_sound_pulse" = "yes"; then
                AC_MSG_RESULT([yes])
-               PULSEAUDIO_LIBS=`$PKG_CONFIG --libs libpulse`
-               pulse_version=`$PKG_CONFIG --modversion libpulse`
-               pulse_major_version=0
-               pulse_minor_version=`echo $pulse_version | \
-                       sed -e "s/0\.\([[0-9]]*\).*/\1/"`
                need_internal_media=yes
                SXE_ADD_MM_OBJS([sound-pulse.o])
-               SXE_PREPEND($PULSEAUDIO_LIBS, MM_LIBS)
+               SXE_PREPEND($PULSE_LIBS, MM_LIBS)
+               SXE_PREPEND_UNDUP($PULSE_CFLAGS, MM_CPPFLAGS)
                AC_DEFINE([HAVE_PULSE_SOUND], [1],
                        [Whether to put in support for PulseAudio.])
-               AC_DEFINE_UNQUOTED([PULSE_VERSION], [$pulse_minor_version],
-                       [Version of the underlying pulse lib.])
        else
                AC_MSG_RESULT(no)
                have_sound_pulse=no
        fi
 fi
 
-dnl aRts Sound support
-if test "$with_sound_arts" != "no"; then
-       SXE_MM_CHECK_ARTS([have_sound_arts=yes], [have_sound_arts=no])
-
-       AC_MSG_CHECKING([for sufficient aRts support])
-       if test "$have_sound_arts" = "yes"; then
-               AC_MSG_RESULT([yes])
-               ARTS_VERSION=`$ARTSC_CONFIG --arts-version`
-               ARTS_LIBS=`$ARTSC_CONFIG --libs`
-               ARTS_CPPFLAGS=`$ARTSC_CONFIG --cflags`
-               SXE_ADD_MM_OBJS([sound-arts.o])
-               SXE_PREPEND([$ARTS_LIBS], [MM_LIBS])
-               SXE_PREPEND_UNDUP([$ARTS_CPPFLAGS], [MM_CPPFLAGS])
-               AC_DEFINE([HAVE_ARTS_SOUND], [1], [Description here!])
-               AC_DEFINE_UNQUOTED([ARTS_VERSION], [$ARTS_VERSION],
-                       [Version number of the underlying arts library])
-       else
-               AC_MSG_RESULT(no)
-               have_sound_arts=no
-       fi
-
-fi
-
 dnl Jack Sound support
 if test "$with_sound_jack" != "no"; then
        SXE_MM_CHECK_JACK([have_sound_jack=yes], [have_sound_jack=no])
@@ -3148,7 +3455,7 @@ if test "$with_sound_jack" != "no"; then
        AC_MSG_CHECKING([for sufficient Jack support])
        if test "$have_sound_jack" = "yes"; then
                AC_MSG_RESULT([yes])
-               dnl okay, we have Jack on the system, but we have no working 
+               dnl okay, we have Jack on the system, but we have no working
                dnl interface to it :(
                JACK_LIBS=`$PKG_CONFIG --libs jack`
                JACK_VERSION=`$PKG_CONFIG --modversion jack`
@@ -3200,11 +3507,10 @@ fi
 if test \
    "$have_sound_alsa \
     $have_sound_ao \
-    $have_sound_arts \
     $have_sound_esd \
     $have_sound_jack \
     $have_sound_nas \
-    $have_sound_pulse" != "no no no no no no no"; then
+    $have_sound_pulse" != "no no no no no no"; then
        AC_DEFINE([HAVE_AUDIO], [1], [Description here!])
 fi
 if test "$need_internal_media" = "yes"; then
@@ -3469,7 +3775,7 @@ test -d lock || mkdir lock
 for dir in $MAKE_SUBDIR; do
   case "$dir" in */* ) dnl Implement mkdir -p
     ( for d in `echo $dir | sed 's:/: :g'` ; do
-        test -d "$d" || mkdir "$d"; cd "$d"
+       test -d "$d" || mkdir "$d"; cd "$d"
       done ) ;;
    * ) test -d "$dir" || mkdir "$dir" ;;
   esac
@@ -3504,7 +3810,7 @@ fi
 
 ### whether to build with profile.o
 AC_RUN_IFELSE([AC_LANG_SOURCE([[
-int main(int c, char *v[]) 
+int main(int c, char *v[])
 {
 #ifdef HAVE_SETITIMER
        return 1;
@@ -3515,19 +3821,6 @@ int main(int c, char *v[])
        [have_setitimer=$?],[have_setitimer=0])
 AM_CONDITIONAL([HAVE_SETITIMER], [test "$have_setitimer" = "1"])
 
-## whether to build with sheap.o
-AC_RUN_IFELSE([AC_LANG_SOURCE([[
-int main(int c, char *v[]) 
-{
-#if defined(HEAP_IN_DATA) && !defined(PDUMP)
-       return 1;
-#else
-       return 0;
-#endif
-}]])], [./conftest; build_sheap=$?],
-       [build_sheap=$?],[build_sheap=0])
-AM_CONDITIONAL([BUILD_SHEAP], [test "$build_sheap" = "1"])
-
 
 dnl There are no more compile tests; remove the core they created.
 rm -f core
@@ -3755,11 +4048,11 @@ case `$MAKE --version 2>/dev/null` in
    ;;
    *)
        echo ===================================
-        echo $MAKE does not seem to be GNU Make
-        echo If you find makefile errors please try using GNU Make as some 
-        echo autoconf constructs may not be proper for your make variant
+       echo $MAKE does not seem to be GNU Make
+       echo If you find makefile errors please try using GNU Make as some
+       echo autoconf constructs may not be proper for your make variant
        echo ===================================
-   ;; 
+   ;;
 esac
 AC_SUBST(RECURSIVE_MAKE_ARGS)
 AC_SUBST(AM_MAKEFLAGS)
@@ -4048,7 +4341,7 @@ SXE_CANONICALISE_PATH([ABS_ETCDIR])
 AC_SUBST([ABS_PROGNAME])
 AC_SUBST([ABS_ETCDIR])
 
-AC_CONFIG_FILES([src/sxe-paths.h]) 
+AC_CONFIG_FILES([src/sxe-paths.h])
 AC_CONFIG_FILES([Makefile])
 AC_CONFIG_FILES([lib-src/Makefile])
 AC_CONFIG_FILES([src/Makefile])