update.
[chise/xemacs-chise.git.1] / configure.in
index 4135e38..a2cd2fb 100644 (file)
@@ -6,7 +6,7 @@ define([AC_INIT_NOTICE],
 #### Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
-#### Copyright (C) 1995, 1996 Ben Wing.
+#### Copyright (C) 1995, 1996, 2005 Ben Wing.
 #### Copyright (C) 2000, 2001 Martin Buchholz.
 #### Copyright (C) 1998, 1999 J. Kean Johnston.
 
@@ -348,6 +348,7 @@ with_site_lisp='no'
 with_site_modules='yes'
 with_menubars=''
 with_scrollbars=''
+dnl can't turn off widgets here because of systems where they are demanded
 with_widgets=''
 with_dialogs=''
 with_file_coding=''
@@ -493,6 +494,9 @@ while test $# != 0; do
        with_xfs        | \
        with_i18n3      | \
        with_mule       | \
+       with_utf_2000   | \
+       with_chise      | \
+       with_text_coding| \
        with_file_coding| \
        with_canna      | \
        with_wnn        | \
@@ -500,6 +504,7 @@ while test $# != 0; do
        with_workshop   | \
        with_sparcworks | \
        with_tooltalk   | \
+       with_concord    | \
        with_ldap       | \
        with_postgresql | \
        with_pop        | \
@@ -1451,9 +1456,14 @@ case "$canonical" in
     esac
 
     case "$canonical" in
-      *-solaris*         )
+      *-solaris* )
        opsys=sol2
-       os_release=`uname -r | sed -e 's/^\([[0-9]]\)\.\([[0-9]]\).*/\1\2/'`
+       os_release_major=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\1/'`
+       os_release_minor=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\2/'`
+       case "$os_release_minor" in [[0-9]])
+         os_release_minor="0${os_release_minor}";;
+       esac
+       os_release="${os_release_major}${os_release_minor}"
        AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
 
       dnl The last Sun386 ran 4.0.
@@ -1583,6 +1593,7 @@ if test -z "$pdump"; then
   case "$opsys" in
     linux* )  pdump=yes ;;    dnl glibc 2.3.1 seems to hose unexec
     darwin )  pdump=yes ;;    dnl No "native" working dumper available
+    cygwin* ) pdump=yes ;;    dnl unexec is broken
     *)        pdump=no ;;
   esac
 fi
@@ -1703,7 +1714,7 @@ case "$opsys" in
   sol2)
    AC_DEFINE(__EXTENSIONS__)
    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
-   if test "$os_release" -ge 55; then
+   if test "$os_release" -ge 505; then
      AC_DEFINE(_XOPEN_SOURCE,500)
      AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
    fi ;;
@@ -1724,14 +1735,19 @@ return 11;
 return 12;
 #elif defined __USLC__ && defined __SCO_VERSION__
 return 13;
+#elif defined __INTEL_COMPILER
+return 14;
 #else
 return 0;
 #endif
 }], [],
 [case "$conftest_rc" in
-  11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
-  12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
-  13) echo "You appear to be using the SCO C compiler."   ; __USLC__=yes ;;
+  11) echo "You appear to be using the SunPro C compiler." ; __SUNPRO_C=yes ;;
+  12) echo "You appear to be using the DEC C compiler."    ; __DECC=yes ;;
+  13) echo "You appear to be using the SCO C compiler."    ; __USLC__=yes ;;
+  14) echo "You appear to be using the Intel C++ compiler."; __ICC=yes
+      dnl Newer versions of icc claim to be GCC
+      GCC=no ;;
 esac])
 
 
@@ -1883,9 +1899,9 @@ dnl We only cope with headers in mingw, not mingw32: no previous version of
 dnl XEmacs supported mingw and cygnus have made this incompatible change
 dnl so we just go with the flow.
 case "$opsys" in mingw* | cygwin*)
-  cygwin_include=`eval "gcc -print-file-name=libc.a"` ;
-  cygwin_include=`eval "dirname $cygwin_include"` ;
-  cygwin_include="-I$cygwin_include/../include" ;
+  cygwin_include=`eval gcc -print-search-dirs | sed -ne s'/install: //p'`
+  cygwin_include=`eval "cd $cygwin_include/../../../..; pwd"`
+  cygwin_include="-I$cygwin_include/include" ;
   extra_includes="$cygwin_include/mingw $cygwin_include" ;
   case "$opsys" in mingw*)
     XE_APPEND($extra_includes, c_switch_system) ;;
@@ -1950,6 +1966,8 @@ if test "$cflags_specified" = "no"; then
     CFLAGS="-O3"
   elif test "$CC" = "xlc"; then
     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
+  elif test "$__ICC" = "yes"; then
+    CFLAGS="-g -O3 -Ob2 -Wall -W1"
   dnl ### Add optimal CFLAGS support for other compilers HERE!
   else
     CFLAGS="-O" ;dnl The only POSIX-approved flag
@@ -2076,14 +2094,14 @@ else
     *86*    ) dynodump_arch=i386  ;;
     powerpc ) dynodump_arch=ppc   ;;
   esac
-  dnl Dynodump requires the system linker
-  test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
 fi
 
 dnl Feed s&m crud to src/Makefile
 
 dnl Linux/powerpc needs the following magic for some reason
-test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
+dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
+dnl the two most popular PowerPC distributions.]
+dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
 
 if test "$unexec" = "unexaix.o"; then
 dnl AIX needs various hacks to make static linking work.
@@ -2301,6 +2319,7 @@ if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
     done
     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
+    dnl #### this test always fails here as need_motif is null
     if test "$opsys $need_motif" = "sol2 yes"; then
       xe_runpath_dir="/opt/SUNWdt/lib";
       eval "$xe_add_unique_runpath_dir";
@@ -2563,7 +2582,7 @@ fi
 
 dnl Link with "-z ignore" on Solaris if supported
 if test "$opsys" = "sol2"; then
-  if test "$os_release" -ge 56; then
+  if test "$os_release" -ge 506; then
     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
     case "`ld -h 2>&1`" in
       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
@@ -2618,16 +2637,16 @@ if test "$with_gtk" != "no";then
       possible_version=`${possible} --version 2> /dev/null`
       if test "x${possible_version}" != "x"; then
               GTK_CONFIG="${possible}"
+             case "${possible_version}" in
+               1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
+               1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
+               1.2.*)
+                       with_gtk=yes
+                       break
+                       ;;
+               *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
+             esac
       fi
-      case "${possible_version}" in
-        1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
-        1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
-       1.2.*)
-               with_gtk=yes
-               break
-               ;;
-        *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
-      esac
    done
    AC_MSG_RESULT([${GTK_CONFIG}])
 fi
@@ -2728,7 +2747,7 @@ if test "$with_x11" != "no"; then
 
   if test "$x_libraries" = "NONE"; then
     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
-      if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
+      if test -r "$dir/libX11.a" -o -r "$dir/libX11.dylib"; then x_libraries="$dir"; break; fi
     done
   fi
 
@@ -2896,7 +2915,7 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
     esac
   fi
 
-  AC_CHECK_FUNCS(XConvertCase)
+  AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
 
   AC_CHECK_HEADERS(X11/Xlocale.h)
 
@@ -2968,7 +2987,7 @@ if test "$with_msw" != "no"; then
       XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
     fi
 
-    install_pp="$blddir/lib-src/installexe.sh"
+    install_pp="$srcdir/lib-src/installexe.sh"
     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool, libs_system)
     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
     if test "$window_system" != x11; then
@@ -3191,29 +3210,113 @@ dnl Autodetect LDAP
 AC_CHECKING(for LDAP)
 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
-if test "$with_ldap" != "no"; then
-  AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
-  test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krb=yes, with_ldap_krb=no, -llber -lkrb) }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krbdes=yes, with_ldap_krbdes=no, -llber -lkrb -ldes) }
-  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
+if test no != "$with_ldap";then
+  if test . != "${ldap_libs+.}";then
+    ldap_libs=
+    AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS"
+      [with_ldap=yes
+      test yes = "$extra_verbose" &&
+       echo "Setting ldap_libs to $ldap_libs"],dnl
+      [AC_CHECK_LIB(ldap, ldap_open,dnl
+       [with_ldap=yes],dnl
+dnl If logic of setting these vars change, change it the same way below.
+       [ldap_needs_lber=yes ldap_other_libs=-llber
+dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
+dnl to be redefined to ignore cached (shell variable) value, as it is
+dnl done above, because the same variable is used in all
+dnl `AC_CHECK_LIB' expansions in macro invocation below.  Worse, if it
+dnl is not done, there is no portable way to compensate for this
+dnl locally since `unset' command is not supported by all shells.  The
+dnl other solution would be changing `AC_CHECK_LIB' so that cache
+dnl variable name depends on the macro OTHER-LIBRARIES argument.
+       AC_CHECK_LIB(ldap, ldap_open,dnl
+         [with_ldap=yes],dnl
+         [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
+         AC_CHECK_LIB(ldap, ldap_open,dnl
+           [with_ldap=yes],dnl
+           [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
+           AC_CHECK_LIB(ldap, ldap_open,dnl
+             [with_ldap=yes],dnl
+             [with_ldap=no],dnl
+             $ldap_other_libs)],dnl
+           $ldap_other_libs)],dnl
+         $ldap_other_libs)])
+      if test yes = "$with_ldap" -a yes != "$ldap_needs_lber";then
+dnl Need this check since `LDAP_OPT_ON' is (currently) used only with
+dnl `ldap_set_option', and the latter may not exist at all, for which
+dnl is testing later.  So `LDAP_OPT_ON' is not necessarily defined.
+       AC_CACHE_CHECK([for LDAP_OPT_ON definition],xe_cv_have_LDAP_OPT_ON,
+         [AC_TRY_COMPILE(
+[#include <lber.h>
+#include <ldap.h>
+#ifdef LDAP_OPT_ON
+/* Relying on const defined by ac_c_const (upper case). */
+const void *const v = LDAP_OPT_ON;
+#else /* !defined (LDAP_OPT_ON) */
+choke me
+#endif /* !defined (LDAP_OPT_ON) */],[],
+           [xe_cv_have_LDAP_OPT_ON=yes],
+           [xe_cv_have_LDAP_OPT_ON=no])])
+       if test yes = "$xe_cv_have_LDAP_OPT_ON";then
+         AC_CACHE_CHECK([LDAP_OPT_ON linking],
+           xe_cv_LDAP_OPT_ON_links,
+           [xe_save_LIBS="$LIBS"
+           LIBS="-lldap $LIBS"
+AC_TRY_LINK(
+[#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;],[],
+             xe_cv_LDAP_OPT_ON_links=yes,
+             xe_cv_LDAP_OPT_ON_links=no)
+           LIBS="$xe_save_LIBS"])
+dnl In some openldap installations other `ldap_*' functions link with
+dnl `-lldap' alone, but `LDAP_OPT_ON' requires `-llber'.
+         if test yes != "$xe_cv_LDAP_OPT_ON_links";then
+           ldap_needs_lber=yes ldap_other_libs=-llber
+           AC_CACHE_CHECK([LDAP_OPT_ON linking with -llber],
+             xe_cv_LDAP_OPT_ON_links_w_lber,
+             [xe_save_LIBS="$LIBS"
+             LIBS="-lldap $ldap_other_libs $LIBS"
+AC_TRY_LINK(
+[#include <lber.h>
+#include <ldap.h>
+const void *const v = LDAP_OPT_ON;],[],
+             xe_cv_LDAP_OPT_ON_links_w_lber=yes,
+             xe_cv_LDAP_OPT_ON_links_w_lber=no)
+             LIBS="$xe_save_LIBS"])
+           if test yes != "$xe_cv_LDAP_OPT_ON_links_w_lber";then
+             with_ldap=no
+           fi
+         fi
+       fi
+      fi
+      if test yes = "$with_ldap";then
+       if test yes = "$ldap_needs_des";then
+         XE_PREPEND(-ldes, ldap_libs)
+       fi
+       if test yes = "$ldap_needs_krb";then
+         XE_PREPEND(-lkrb, ldap_libs)
+       fi
+       if test yes = "$ldap_needs_lber";then
+         XE_PREPEND(-llber, ldap_libs)
+       fi
+       XE_PREPEND(-lldap, ldap_libs)
+      fi])
+  else
+dnl Allow builder to override "$ldap_libs".
+    save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
+    AC_CHECK_FUNC(ldap_open,dnl
+      [with_ldap=yes
+      test yes = "$extra_verbose" &&
+       echo "Setting ldap_libs to $ldap_libs"],dnl
+      [with_ldap=no])
+    LIBS="$save_LIBS"
+  fi
 fi
 if test "$with_ldap" = "yes"; then
   AC_DEFINE(HAVE_LDAP)
   XE_ADD_OBJS(eldap.o)
-  if test "$with_ldap_nolber" = "yes" ; then
-    XE_PREPEND(-lldap, LIBS)
-  else
-    if test "$with_ldap_krb" = "yes" ; then
-      XE_PREPEND(-lkrb, LIBS)
-    fi
-    if test "$with_ldap_krbdes" = "yes" ; then
-      XE_PREPEND(-ldes, LIBS)
-      XE_PREPEND(-lkrb, LIBS)
-    fi
-    XE_PREPEND(-llber, LIBS)
-    XE_PREPEND(-lldap, LIBS)
-  fi
+  LIBS="$ldap_libs $LIBS"
   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
 fi
 
@@ -3260,17 +3363,18 @@ if test "$window_system" != "none"; then
   dnl   -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X
   libpath_xpm=
   incpath_xpm=
+  libname_xpm="-lXpm"
   case "$opsys" in 
     cygwin*)
-      cygwin_top=`eval "gcc -print-file-name=libc.a"` ;
-      cygwin_top=`eval "dirname ${cygwin_top}"`;
-      cygwin_top="${cygwin_top}/..";
+      cygwin_top=`eval gcc -print-search-dirs | sed -ne s'/install: //p'`
+      cygwin_top=`eval "cd $cygwin_top/../../../..; pwd"`
       case "$window_system" in
         dnl use "standard" search pattern
         x11)  ;;
         dnl hardcode "standard" non-X11 xpm lib/inc dirs
         msw) libpath_xpm="-L${cygwin_top}/lib/noX"
              incpath_xpm="-I${cygwin_top}/include/noX"
+             libname_xpm="-lXpm-noX"
               ;;
         dnl not supported on cygwin (yet?)
         gtk)  ;;
@@ -3289,7 +3393,7 @@ if test "$window_system" != "none"; then
     XE_PREPEND("$incpath_xpm", CFLAGS)
     XE_PREPEND("$libpath_xpm", LDFLAGS)
     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
-    xe_check_libs=-lXpm
+    xe_check_libs="$libname_xpm"
     AC_TRY_RUN([#define XPM_NUMBERS
 #include <X11/xpm.h>
     int main(int c, char **v) {
@@ -3324,10 +3428,10 @@ if test "$window_system" != "none"; then
     dnl #### but doesn't actually verify this assumption.
     AC_DEFINE(HAVE_XPM)
     XE_PREPEND("$libpath_xpm", LDFLAGS)
-    XE_PREPEND(-lXpm, libs_x)
+    XE_PREPEND("$libname_xpm", libs_x)
     XE_PREPEND("$incpath_xpm", CFLAGS)
     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
-    xe_check_libs=-lXpm
+    xe_check_libs="$libname_xpm"
     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
     [xpm_for_msw=no],
     [xpm_for_msw=yes])
@@ -3570,15 +3674,27 @@ fi dnl "$with_x11" = "yes"
 
 dnl Finish ensuring that we have values for the various toolkit items.
 dnl Not all toolkits support all widgets
-dnl if Motif is available we use it for the dialog boxes.
+
+dnl Avoid using Motif :-(
+case "$opsys" in
+  *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
+  * )        lucid_prefers_motif="yes" ;;
+esac
 
 case "$with_menubars" in "" | "yes" | "athena" )
   with_menubars="lucid" ;;
 esac
 case "$with_dialogs" in "" | "yes" | "lucid" )
-  if   test "$have_motif"     = "yes"; then with_dialogs="motif"
-  elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
-  else with_dialogs=no
+  if test "$lucid_prefers_motif" = "yes"; then
+    if   test "$have_motif"     = "yes"; then with_dialogs="motif"
+    elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    else with_dialogs=no
+    fi
+  else
+    if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    elif test "$have_motif"     = "yes"; then with_dialogs="motif"
+    else with_dialogs=no
+    fi
   fi ;;
 esac
 case "$with_scrollbars" in "" | "yes" )
@@ -3586,9 +3702,16 @@ case "$with_scrollbars" in "" | "yes" )
 esac
 case "$with_widgets" in
   "yes" | "lucid")
-    if   test "$have_motif" = "yes"; then with_widgets="motif"
-    elif test "$have_xaw"   = "yes"; then with_widgets="athena"
-    else with_widgets=no
+    if test "$lucid_prefers_motif" = "yes"; then
+      if   test "$have_motif" = "yes"; then with_widgets="motif"
+      elif test "$have_xaw"   = "yes"; then with_widgets="athena"
+      else with_widgets=no
+      fi
+    else
+      if   test "$have_xaw"   = "yes"; then with_widgets="athena"
+      elif test "$have_motif" = "yes"; then with_widgets="motif"
+      else with_widgets=no
+      fi
     fi ;;
   "" )
     with_widgets=no ;;
@@ -3721,16 +3844,82 @@ if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
   XE_ADD_OBJS(file-coding.o)
 fi
 
+dnl Autodetect concord
+concord_includes_found=no
+if test "$with_concord" != "no"; then
+   AC_CHECK_HEADER(concord.h, ,with_concord=no)
+fi
+if test "$concord_includes_found" = "no" -a "$with_concord" != "no" -a \
+   -d "/usr/local/concord/include"; then
+  save_c_switch_site="$c_switch_site"
+  c_switch_site="$c_switch_site -I/usr/local/concord/include"
+  AC_CHECK_HEADER(concord.h,concord_includes_found=yes)
+  if test "$concord_includes_found" != "yes"; then
+    c_switch_site="$save_c_switch_site"
+    with_concord="no"
+  fi
+fi
+
+test -z "$with_concord" && with_concord=yes
+if test "$with_concord" = "yes"; then
+  AC_DEFINE(HAVE_CONCORD)
+  XE_PREPEND(-lconcord, libs_x)
+  XE_ADD_OBJS(concord.o)
+fi
+
+test -z "$with_chise" && with_chise=yes
+if test "$with_chise" = "yes"; then
+    with_mule=yes
+    with_utf_2000=yes
+    with_text_coding=yes
+fi
+
 if test "$with_mule" = "yes" ; then
   AC_CHECKING(for Mule-related features)
   AC_DEFINE(MULE)
-  AC_DEFINE(FILE_CODING)
-  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
 
+  dnl Autodetect chise
+  chise_includes_found=no
+  if test "$with_chise" != "no"; then
+    AC_CHECK_HEADER(chise.h, ,with_chise=no)
+  fi
+  if test "$chise_includes_found" = "no" -a "$with_chise" != "no" -a \
+      -d "/usr/local/chise/include"; then
+    save_c_switch_site="$c_switch_site"
+    c_switch_site="$c_switch_site -I/usr/local/chise/include"
+    AC_CHECK_HEADER(chise.h,chise_includes_found=yes)
+    if test "$chise_includes_found" != "yes"; then
+      c_switch_site="$save_c_switch_site"
+      with_chise="no"
+    fi
+  fi
+
+  test -z "$with_chise" && with_chise=yes
+  if test "$with_chise" = "yes"; then
+    AC_DEFINE(HAVE_CHISE)
+    AC_DEFINE(HAVE_LIBCHISE)
+    XE_PREPEND(-lchise, libs_x)
+  fi
+
+  AC_DEFINE(FILE_CODING)
+  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
+  if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
+    AC_DEFINE(TEXT_CODING)
+    XE_ADD_OBJS(text-coding.o)
+  else
+    XE_ADD_OBJS(file-coding.o)
+  fi
   dnl Use -lintl to get internationalized strerror for Mule
   AC_CHECK_HEADERS(libintl.h)
   AC_CHECK_LIB(intl, strerror)
 
+  if test "$with_utf_2000" = "yes" ; then
+    AC_DEFINE(CHAR_IS_UCS4)
+    AC_DEFINE(UTF2000)
+    with_wnn=no
+    with_wnn6=no
+  fi
+
   AC_CHECKING(for Mule input methods)
   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
   dnl XIM seems to be flaky except on Solaris...
@@ -3739,7 +3928,10 @@ if test "$with_mule" = "yes" ; then
     AC_CHECKING(for XIM)
     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
     dnl XIM + Lesstif is not (yet?) usable
-    if test "$have_motif $have_lesstif" = "yes no"; then
+    dnl Only use Motif if linking Motif anyway, or don't have xlib XIM
+    if test "$need_motif $have_lesstif" = "yes no"; then
+      AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
+    elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
     fi ;;
   esac
@@ -4150,17 +4342,25 @@ if test "$with_native_sound" != "no"; then
 
   dnl Autodetect Sun native sound from SUNWaudmo package
   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
-    sound_found=yes
-    XE_ADD_OBJS(sunplay.o)
-    if test -d "/usr/demo/SOUND/include"
-      then sound_cflags="-I/usr/demo/SOUND/include"
-      else sound_cflags="-I/usr/demo/SOUND"
+    if test -d "/usr/demo/SOUND/include/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND/include"
+    elif test -d "/usr/demo/SOUND/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND"
     fi
-    if test -z "$native_sound_lib" ; then
-      if test -r "/usr/demo/SOUND/lib/libaudio.a"
-        then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
-        else native_sound_lib="/usr/demo/SOUND/libaudio.a"
-      fi
+
+    if test -n "$native_sound_lib"; then
+      sun_sound_lib="$native_sound_lib"
+    elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
+    elif test -r "/usr/demo/SOUND/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/libaudio.a"
+    fi
+
+    if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
+      native_sound_lib="$sun_sound_lib"
+      sound_cflags="$sun_sound_cflags"
+      sound_found=yes
+      XE_ADD_OBJS(sunplay.o)
     fi
   fi
 
@@ -4333,13 +4533,20 @@ if test "$with_tty" = "yes"  ; then
   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
 
-  dnl Autodetect gpm
-  test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
-  test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
-  if test "$with_gpm" = "yes"; then
-    AC_DEFINE(HAVE_GPM)
-    XE_ADD_OBJS(gpmevent.o)
-    XE_PREPEND(-lgpm, LIBS)
+  dnl General Purpose Mouse (libgpm) support
+  if test "$with_gpm" != "no"; then
+    AC_CHECK_HEADER(gpm.h, [
+      AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
+    if test "$have_gpm" = "yes"; then
+      with_gpm=yes
+      AC_DEFINE(HAVE_GPM)
+      XE_ADD_OBJS(gpmevent.o)
+      XE_PREPEND(-lgpm, LIBS)
+    elif test "$with_gpm" = "yes"; then
+      XE_DIE(["GPM requested, but gpm.h or libgpm seems to be missing."])
+    else
+      with_gpm=no
+    fi
   fi
 
 else dnl "$with_tty" = "no"
@@ -4398,6 +4605,24 @@ test "$with_database_gdbm" = "yes" -o \
      "$with_database_dbm"  = "yes" && \
   AC_DEFINE(HAVE_DBM)
 
+dnl Check for u_int*_t typedefs.
+AC_CHECK_TYPE(u_int8_t, uint8_t)
+if test $ac_cv_type_u_int8_t = yes; then
+AC_DEFINE(HAVE_U_INT8_T,1)
+fi
+AC_CHECK_TYPE(u_int16_t, uint16_t)
+if test $ac_cv_type_u_int16_t = yes; then
+AC_DEFINE(HAVE_U_INT16_T,1)
+fi
+AC_CHECK_TYPE(u_int32_t, uint32_t)
+if test $ac_cv_type_u_int32_t = yes; then
+AC_DEFINE(HAVE_U_INT32_T,1)
+fi
+AC_CHECK_TYPE(u_int64_t, uint64_t)
+if test $ac_cv_type_u_int64_t = yes; then
+AC_DEFINE(HAVE_U_INT64_T,1)
+fi
+
 dnl Check for Berkeley DB.
 if test "$with_database_berkdb" != "no"; then
   AC_MSG_CHECKING(for Berkeley db.h)
@@ -4422,14 +4647,22 @@ if test "$with_database_berkdb" != "no"; then
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
 #include <inttypes.h>
+#if !HAVE_U_INT8_T
 typedef uint8_t  u_int8_t;
+#endif
+#if !HAVE_U_INT16_T
 typedef uint16_t u_int16_t;
+#endif
+#if !HAVE_U_INT32_T
 typedef uint32_t u_int32_t;
+#endif
 #ifdef WE_DONT_NEED_QUADS
+#if !HAVE_U_INT64_T
 typedef uint64_t u_int64_t;
 #endif
 #endif
 #endif
+#endif
 #include <$header>
 ],[], db_h_file="$header"; break)
         ;;
@@ -4471,6 +4704,9 @@ if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
      != "no no no"; then
   AC_DEFINE(HAVE_DATABASE)
   XE_ADD_OBJS(database.o)
+  if test "$with_utf_2000" = "yes" -a "$with_chise" != "yes" ; then
+    AC_DEFINE(HAVE_CHISE)
+  fi
 fi
 
 dnl Socks support
@@ -4847,8 +5083,8 @@ AC_SUBST(ld_libs_all)
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
-RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
-AC_SUBST(RECURSIVE_MAKE)
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+AC_SUBST(RECURSIVE_MAKE_ARGS)
 
 AC_SUBST(native_sound_lib)
 AC_SUBST(sound_cflags)
@@ -4970,6 +5206,73 @@ else echo "  Not using any machine description file"
 fi
 
 echo "  Compiler:                          $CC $CFLAGS"
+dnl Let's save some helpful-for-debugging info like compiler and libc versions..
+dnl First, see if it's gcc - the same check works everyplace...
+case "$CC" in
+  gcc*)        echo "  Compiler version:                  `$CC --version | sed 1q`"
+        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`"
+       ;;
+dnl non-gcc machine-specific magic - contributions welcome
+  *) case "$canonical" in
+       *-*-aix*   ) 
+          dnl Yes, it's this ugly for AIX...
+         realcc=`which $CC`
+         dnl Might be a symlink created by replaceCset command
+         if test -L $realcc ; then
+           ccdir=`dirname $realcc`
+           ccprog=`/bin/ls -l $realcc | sed 's/.* \([[^ ]]\)/\1/'`
+           dnl This doesn't handle ../../xlc type stuff, but I've not seen one...
+           case $ccprog in
+               */*) realcc=$ccprog;;
+               *) realcc=$ccdir/$ccprog;;
+           esac
+         fi
+         lpp=`lslpp -wqc $realcc | cut -f2 -d:`
+         if test ! -z "$lpp" ; then
+           lppstr=`lslpp -Lqc $lpp`
+           lpplev=`echo "$lppstr" | cut -f3 -d:`
+           lppdesc=`echo "$lppstr" | cut -f8 -d:`
+         fi
+         if test ! -z "$lpplev" ; then
+           echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
+         else
+           echo "  Compiler version:                  (unknown version)"
+         fi
+       ;;
+       
+       *-*-solaris*)
+         ccvers=`$CC -V 2>&1 | sed 1q`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       alpha*-dec-osf*)
+         ccvers=`$CC -V | tr '\n' ' '`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       mips-sgi-irix*)
+         ccvers=`$CC -version`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       dnl Intel C++ Compiler on Linux
+       i[[3-9]]86-pc-linux)
+         ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+         
+       *) echo "  Compiler version:                  $CC on $canonical";;
+  esac
+esac
+
 echo "  Relocating allocator for buffers:  $rel_alloc"
 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
 case "$ld_switch_site" in
@@ -4977,6 +5280,45 @@ case "$ld_switch_site" in
     - Consider configuring with --pdump." ;;
 esac
 
+dnl Now get the libc version - contributions welcome
+case "$canonical" in
+       *-*-linux*) 
+         if test -f /etc/redhat-release ; then
+           echo "  libc:                              `rpm -q glibc`";
+dnl need a Debian and Suse check here...
+          else
+           echo "Need to guess glibc1/2/etc here";
+          fi
+       ;;
+
+       *-*-aix*) 
+         echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
+       ;;
+
+       *-*-solaris*)
+         libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
+         echo "  libc:                              SUNWcsl $libc"
+
+       ;;
+
+       mips-sgi-irix*)
+         echo "  IRIX version:                      `uname -sRm`'"
+       ;;
+         
+
+       alpha*-dec-osf*)
+       dnl Another ugly case
+         (cd /usr/.smdb.;
+               libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
+               echo "  libc:                              $libc"
+               
+         )
+       ;;
+
+       *) echo "  libc:                              system-provided libc on $canonical" ;;
+esac
+
+
 echo "
 Window System:"
 if test "$with_msw" = "yes"; then
@@ -4998,6 +5340,9 @@ if test "$with_x11" = "yes"; then
 fi
 if test "$need_motif" = "yes" ; then
   echo "  Compiling in support for Motif."
+  if test "$have_lesstif" = "yes"; then
+    echo "    - Using LessTif implementation."
+  fi
   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
   echo "             You are likely to experience slow redisplay."
   echo "             You may need to install vendor patches to Motif."
@@ -5103,10 +5448,16 @@ if test "$with_postgresql" = yes; then
   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
 fi
+if test "$with_concord" = yes; then
+  echo "  Compiling in support for CONCORD."
+fi
 
 echo "
-Internationalization:"
+Multiscriptization / Multilingualization / Internationalization:"
 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
+test "$with_chise" = yes && echo "  Using CHISE (CHaracter Information Service Environment) support."
+test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
+test "$with_text_coding" = yes && echo "  Compiling in support for text coding."
 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."