Revert "Fix the fix, make pi a normal lisp var (Closes bug #176)"
[sxemacs] / configure.ac
index 3714e81..cdf5e68 100644 (file)
@@ -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],
@@ -333,8 +333,8 @@ OG_MULTIARG_WITH([modules], [dnl
        [all], [all], [dnl
        OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
        OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
-       OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 ])
+       dnl OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 
 OG_MULTIARG_WITH([static-modules], [dnl
        AS_HELP_STRING([--with-static-modules], [
@@ -345,8 +345,8 @@ OG_MULTIARG_WITH([static-modules], [dnl
        [none], [NONE], [dnl
        OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
        OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
-       OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 ])
+       dnl OG_MULTIARG_ITEM([dbus], [dbus], [D-BUS bindings])
 
 OG_MULTIARG_WITH([ent], [dnl
        AS_HELP_STRING([--with-ent], [
@@ -560,6 +560,11 @@ OG_ARG_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.]),
@@ -570,6 +575,13 @@ OG_ARG_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],
@@ -620,23 +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([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.])],
@@ -766,12 +771,17 @@ AS_IF([test -f "$0.ac" -a "$0.ac" -nt "$0"],
 #
 # 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
@@ -805,7 +815,19 @@ 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)
@@ -837,7 +859,7 @@ AC_MSG_CHECKING([for SXEmacs patchlevel])
 CURDIR=$(pwd)
 cd "$sxe_srcdir"
 AS_IF([test "$have_git" = "yes"], 
-           [sxemacs_git_version=`git describe | head -1`])
+           [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])
@@ -1718,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="
@@ -1820,18 +1862,19 @@ fi
 SXE_EMOD_STATMOD([cl])
 
 dnl D-Bus
-SXE_CHECK_DBUS
-if test "$have_dbus" = "yes"; then
-       if test "$with_modules_dbus" = "yes"; then
-               have_modules_dbus=yes
-       fi
-       if test "$with_static_modules_dbus" = "yes"; then
-               have_static_modules_dbus=yes
-       fi
-       SXE_EMOD_STATMOD([dbus])
-else
-       AC_MSG_WARN([I cannot believe you do not have d-bus.])
-fi
+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=
@@ -2481,7 +2524,7 @@ 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],
@@ -2723,144 +2766,343 @@ AC_CHECK_HEADERS([libintl.h nlist.h sgtty.h termio.h termios.h])
 AS_IF([test "$with_tty" != "no"],[
    AS_MESSAGE(checking for TTY-related features)
    dnl Check if needed calls are available at all...
-   tty_libs="ncurses curses terminfo termlib termcap"
-   tty_funcs="tgetent tgetstr tgetflag tparm tgoto tputs"
-   for func in $tty_funcs; do
-       AC_SEARCH_LIBS($func,$tty_libs)
+   
+   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
-   AS_IF([test "$ac_cv_search_tgetent"  = "no" -a \
-              "$ac_cv_search_tgetflag" = "no" -a \
-              "$ac_cv_search_tgetstr"  = "no" -a \
-              "$ac_cv_search_tgoto"    = "no" -a \
-              "$ac_cv_search_tparm"    = "no" -a \
-              "$ac_cv_search_tputs"    = "no" ], 
-                  have_tty=no)
-   AS_IF([test "$with_tty" = "yes" -a "$have_tty" = "no" ],[
-      AC_MSG_ERROR([Your system lacks necessary functions for requested TTY support])])
-],[
-  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
-    eval "with_${feature}=no"
-  done
-])
 
-AS_IF([test "$with_tty" != "no" -a "$have_tty" != "no" ],[
-   for lib in $tty_libs; do 
-      SXE_CHECK_LINK_LIB($lib, , eval have_${lib}=no)
-      with_lib_eval=`eval echo \\$with_$lib`
-      have_lib_eval=`eval echo \\$have_$lib`
-      AS_IF([test "$have_lib_eval" = "yes" ], [
-        for func in $tty_funcs; do
-            AC_CHECK_LIB($lib, tgetent)
-            AC_CHECK_LIB($lib, tgetstr)
-            AC_CHECK_LIB($lib, tgetflags)
-            AC_CHECK_LIB($lib, tparm)
-            AC_CHECK_LIB($lib, tgoto)
-            AC_CHECK_LIB($lib, tputs)
-        done
-      ])
-      have_lib_eval=`eval echo \\$have_$lib`
-      AS_IF([test "$with_lib_eval" = "yes" -a \
-                 "$have_lib_eval" = "no" ],
-       AC_MSG_WARN([Errors detected trying to use requested $lib. Continuing with autodetection.]))
+   # 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
-   AS_IF([test "$sxe_cv_c_lib_ncurses"  = "no" -a \
-               "$sxe_cv_c_lib_curses"   = "no" -a \
-              "$sxe_cv_c_lib_termcap"  = "no" -a \
-              "$sxe_cv_c_lib_terminfo" = "no" -a \
-              "$sxe_cv_c_lib_termlib"  = "no"], 
-                  have_tty=no)
-   AS_IF([test "$with_tty" = "yes" -a "$have_tty" = "no"],
-      AC_MSG_ERROR([Your system lacks necessary libraries for requested TTY support.]))
-])
-
 
-AS_IF([test "$with_tty" != "no" -a "$have_tty" != "no" ],[
-    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"
+   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
-])
-
-AS_IF([test "$with_tty" != "no" -a "$have_ncurses" != "no" ],[
-  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])
+       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
   AS_IF([test "$with_gpm" != "no"], [
@@ -3027,6 +3269,17 @@ fi
 ## 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
@@ -3073,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])
@@ -3178,24 +3430,18 @@ 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