import xemacs-21.2.37
[chise/xemacs-chise.git.1] / configure.in
index aabd639..6dcfa75 100644 (file)
@@ -57,7 +57,7 @@ dnl - no cache file
 dnl - non-standard options
 dnl - suport for extra-verbosity
 dnl - ordinary libs are handled separately from X libs (might be a mistake)
-dnl - various random kludges (e.g. -with-dnet=no
+dnl - various random kludges (e.g. -with-dnet=no)
 
 dnl PRINT_VAR(var var ...)  prints values of shell variables
 define([PRINT_VAR],[for var in patsubst([$1],[[
@@ -637,7 +637,7 @@ The default is to autodetect all sound support."])
          done
         ;;
 
-        dnl Has the user specified a prefered Athena widget set?
+        dnl Has the user specified a preferred Athena widget set?
         dnl This bit expands any alias names out for us...
         "with_athena" )
          case "$val" in
@@ -1093,7 +1093,6 @@ case "$canonical" in
   clipper-*        ) machine=clipper ;;
   arm*             ) machine=arm ;;
   ns32k-*          ) machine=ns32000 ;;
-  s390-*           ) machine=s390 ;;
 esac
 
 dnl Straightforward OS determination
@@ -1109,7 +1108,7 @@ case "$canonical" in
   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
   *-dec-osf3*                ) opsys=decosf3-1 ;;
-  *-dec-osf4*                ) opsys=decosf4-0 ;;
+  *-dec-osf[[4-9]]*          ) opsys=decosf4-0 ;;
 
   dnl DEC Ultrix
   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
@@ -1552,13 +1551,28 @@ case "$canonical" in
 
 esac
 
-if test -z "$machine" -o -z "$opsys"; then
-  (echo "$progname: XEmacs hasn't been ported to \`$canonical' systems."
-   echo "$progname: Check \`etc/MACHINES' for recognized configuration names."
-  ) >&2
-  exit 1
+dnl Initialize machine and opsys from $canonical if not in our database above.
+test -z "$machine" && machine=`echo $canonical | sed 's/-.*$//'`
+test -z "$opsys"   && opsys=`echo $canonical | sed 's/^[^-]*-[^-]*-//'`
+
+dnl Use configure-time autodetection if s&m not available
+if test -r "${srcdir}/src/m/${machine}.h"; then
+  machfile="m/${machine}.h"
+  AC_DEFINE_UNQUOTED(config_machfile, "$machfile")
+else
+  echo "XEmacs has no builtin knowledge of \`$machine' machines."
+  echo "Using configure-time autodetection only."
+fi
+
+if test -r "${srcdir}/src/s/${opsys}.h"; then
+  opsysfile="s/${opsys}.h"
+  AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
+else
+  echo "XEmacs has no builtin knowledge of \`$opsys' operating systems."
+  echo "Using configure-time autodetection only."
 fi
 
+
 if test -z "$dynamic"; then
   case "$opsys" in
     hpux* | sunos4* ) dynamic=no ;;
@@ -1587,9 +1601,6 @@ case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
 
-machfile="m/${machine}.h"
-opsysfile="s/${opsys}.h"
-
 dnl --------------------------------------------------
 dnl Determine the compiler, set up for feature testing
 dnl --------------------------------------------------
@@ -1696,6 +1707,8 @@ AC_TRY_RUN([int main () {
 return 11;
 #elif defined __DECC
 return 12;
+#elif defined __USLC__ && defined __SCO_VERSION__
+return 13;
 #else
 return 0;
 #endif
@@ -1703,6 +1716,7 @@ return 0;
 [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 ;;
 esac])
 
 
@@ -1738,7 +1752,8 @@ configure___ [$2]=no
 [#]endif
 ])dnl CPP_boolean_to_sh
 
-cat > $tempcname <<EOF
+cat > $tempcname < confdefs.h
+cat >> $tempcname <<EOF
 #define NOT_C_CODE
 #define C_SWITCH_SITE
 #define C_SWITCH_X_SITE
@@ -1746,8 +1761,14 @@ cat > $tempcname <<EOF
 #define LD_SWITCH_X_SITE
 #define LD_SWITCH_X_SITE_AUX
 #define OS_RELEASE $os_release
+
+#ifdef config_opsysfile
 #include "$srcdir/src/$opsysfile"
+#endif
+
+#ifdef config_machfile
 #include "$srcdir/src/$machfile"
+#endif
 
 CPP_to_sh(LIBS_MACHINE, libs_machine)
 CPP_to_sh(LIBS_SYSTEM,  libs_system)
@@ -1852,10 +1873,26 @@ esac
 dnl Non-ordinary link usually requires -lc
 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
 
+dnl -----------------------
 dnl Compiler-specific hacks
+dnl -----------------------
+
 dnl DEC C `-std1' means ANSI C mode
 test "$__DECC" = "yes" && XE_APPEND(-std1, c_switch_site)
 
+dnl Some versions of SCO native compiler need -Kalloca
+if test "$__USLC__" = yes; then
+  AC_MSG_CHECKING(for whether the -Kalloca compiler flag is needed)
+  need_kalloca=no
+  AC_TRY_LINK([], [void *x = alloca(4);], [:], [
+    xe_save_c_switch_system="$c_switch_system"
+    c_switch_system="$c_switch_system -Kalloca"
+    AC_TRY_LINK([], [void *x = alloca(4);], [ need_kalloca=yes ])
+    c_switch_system="$xe_save_c_switch_system"])
+  AC_MSG_RESULT($need_kalloca)
+  test "$need_kalloca" = "yes" && XE_APPEND(-Kalloca,c_switch_system)
+fi
+
 dnl Calculalate value of CFLAGS:
 dnl Use either command line flag, environment var, or autodetection
 if test "$cflags_specified" = "no"; then
@@ -1896,7 +1933,7 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
                 case "$CFLAGS" in
                     *-fno-schedule-insns*) ;;
                     *)
-                        AC_MSG_RESULT(Yes)
+                        AC_MSG_RESULT(yes)
                         AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures)
                         AC_MSG_WARN(without also using -fno-schedule-insns.)
                         AC_MSG_ERROR(Aborting due to known problem)
@@ -1908,7 +1945,7 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
        dnl egcs-2.91.57 (egcs-1.1 release)
        dnl egcs-2.91.66 (egcs-1.1.2 release)
     Linux:alpha:egcs-2.91.*)
-        AC_MSG_RESULT(Yes)
+        AC_MSG_RESULT(yes)
         AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on)
         AC_MSG_WARN(Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K.)
         AC_MSG_ERROR(Aborting due to known problem)
@@ -1921,7 +1958,7 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
                        case "$CFLAGS" in
                            *-fno-strength-reduce*) ;;
                            *)
-                                AC_MSG_RESULT(Yes)
+                                AC_MSG_RESULT(yes)
                                AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
                                AC_MSG_WARN(-fno-strength-reduce.)
                                AC_MSG_ERROR(Aborting due to known problem)
@@ -1934,7 +1971,7 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
         case "$CFLAGS" in
         *-fno-caller-saves*) ;;
         *)
-            AC_MSG_RESULT(Yes)
+            AC_MSG_RESULT(yes)
            AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
            AC_MSG_WARN(-fno-caller-saves.)
             AC_MSG_ERROR(Aborting due to known problem)
@@ -1942,8 +1979,8 @@ case `uname -s`:`uname -m`:$GCC_VERSION in
         esac
        ;;
 esac
+AC_MSG_RESULT(no)
 fi
-AC_MSG_RESULT(No)
 
 dnl Inform compiler that certain flags are meant for the linker
 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
@@ -2308,11 +2345,9 @@ AC_CHECK_HEADERS(dnl
   mach/mach.h dnl
   sys/param.h dnl
   sys/pstat.h dnl
-  sys/stropts.h dnl
   sys/time.h dnl
   sys/timeb.h dnl
   sys/un.h dnl
-  kstat.h dnl
   ulimit.h dnl
   unistd.h dnl
   utime.h dnl
@@ -2568,7 +2603,9 @@ if test "$with_x11" = "yes"; then
   done
 
   dnl Avoid version mismatch for shared library libXm.so on osf4
-  if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi
+  case "$opsys" in
+  decosf*) if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi ;;
+  esac
 
   ld_switch_x_site="$X_LIBS"
 
@@ -2662,21 +2699,29 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
   AC_MSG_RESULT(R${x11_release})
   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
 
+  if test "${x11_release}" = "4"; then
+    case "$with_widgets" in
+      "" | "no") with_widgets=no ;;
+      *) XE_DIE("Widget support requires X11R5 or greater") ;;
+    esac
+  fi
+
   AC_CHECK_FUNCS(XConvertCase)
 
   AC_CHECK_HEADERS(X11/Xlocale.h)
 
-  dnl remove this - we should avoid checking for specific OS
-  AC_MSG_CHECKING(for XFree86)
-  if test -d "/usr/X386/include" -o \
-          -f "/etc/XF86Config"    -o \
-         -f "/etc/X11/XF86Config" -o \
-         -f "/usr/X11R6/lib/X11/XF86Config"; then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_XFREE386)
-  else
-    AC_MSG_RESULT(no)
-  fi
+  dnl XFree86 has a non-standard prototype for this X11R6 function
+  AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
+  AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
+  AC_TRY_COMPILE([
+#define NeedFunctionPrototypes 1
+#include <X11/Xlib.h>
+extern Bool XRegisterIMInstantiateCallback(
+   Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
+], [], 
+  [AC_MSG_RESULT(yes)],
+  [AC_MSG_RESULT(no)
+   AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
 
   dnl autodetect -lXmu
   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
@@ -2790,6 +2835,14 @@ if test "$with_x11" != "yes"; then
   done
 fi
 
+dnl Balloon Help requires the Shape extension, not available everywhere,
+dnl for example not on AIX 4.3.
+if test "$with_x11" = "yes"; then
+  AC_CHECK_HEADER(X11/extensions/shape.h, [
+   AC_DEFINE(HAVE_BALLOON_HELP)
+   XE_ADD_OBJS(balloon_help.o balloon-x.o)])
+fi
+
 dnl FSF 19.29 has some bitmapdir stuff here.
 bitmapdir=
 
@@ -3502,20 +3555,50 @@ if test "$need_motif" = "yes" ; then
   XE_COMPUTE_RUNPATH()
 fi
 
-AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask)
+AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask)
+
+dnl Check for PTY support functions.
+dnl  getpt  is the preferred pty allocation method on glibc systems.
+dnl _getpty is the preferred pty allocation method on SGI systems.
+dnl grantpt, unlockpt, ptsname are defined by Unix98.
+AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
+
+dnl openpty is the preferred pty allocation method on BSD and Tru64 systems.
+dnl openpty might be declared in pty.h or in libutil.h.
+AC_CHECK_FUNC(openpty, have_openpty=yes, [
+  AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
+if test "$have_openpty" = "yes"; then
+  AC_DEFINE(HAVE_OPENPTY)
+  AC_CHECK_HEADERS(pty.h libutil.h)
+  test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
+fi
+
+dnl Check for STREAM support functions.
+dnl Confusingly, "str" means both "string" and "SysV Streams".
+AC_CHECK_HEADERS(stropts.h)
+if test "$ac_cv_header_stropts_h" = "yes"; then
+  AC_CHECK_FUNCS(isastream)
+  AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
+fi
 
 dnl Use our own realpath always.
 XE_ADD_OBJS(realpath.o)
 
-dnl Check whether the system provides getloadavg (Solaris 7 has it)
+dnl Check whether the system provides getloadavg().
 AC_CHECK_FUNCS(getloadavg)
 
-if test "$ac_cv_func_getloadavg" != "yes"
-then
+if test "$ac_cv_func_getloadavg" = "yes"; then
+  dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
+  dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
+  dnl   ...if we #define _GNU_SOURCE, which we do.
+  AC_CHECK_HEADERS(sys/loadavg.h)
+else
+  dnl We define our own getloadavg() using lower level functions.
   XE_ADD_OBJS(getloadavg.o)
 
   dnl Used by getloadavg() - does not require root priveleges
   AC_CHECK_LIB(kstat, kstat_open)
+  AC_CHECK_HEADERS(kstat.h)
 
   dnl Another way to get the load average
   AC_CHECK_LIB(kvm, kvm_read)
@@ -3615,8 +3698,11 @@ dnl case "${GCC}${opsys}" in hpux* )
 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
 dnl esac
 
-AC_FUNC_ALLOCA
-test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
+dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
+if test "$__DECC" != "yes"; then
+  AC_FUNC_ALLOCA
+  test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
+fi
 
 dnl Check whether vfork exists and works correctly. (This does more
 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
@@ -4426,8 +4512,6 @@ fi
 XE_SPACE(ac_configure_args, $ac_configure_args)
 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
-AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
-AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
 
 dnl Following are deprecated
 
@@ -4508,8 +4592,16 @@ fi
 if test -n "$runpath"; then
   echo "  Runtime library search path:       $runpath"
 fi
-echo "  Operating system description file: \`$opsysfile'"
-echo "  Machine description file:          \`$machfile'"
+
+if test -n "$opsysfile"
+then echo "  Operating system description file: \`$opsysfile'"
+else echo "  Not using any operating system description file"
+fi
+if test -n "$machfile"
+then echo "  Machine description file:          \`$machfile'"
+else echo "  Not using any machine description file"
+fi
+
 echo "  Compiler:                          $CC $CFLAGS"
 echo "  Relocating allocator for buffers:  $rel_alloc"
 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
@@ -4734,9 +4826,9 @@ dnl Delete spurious blanks inserted by $CPP
        -e 's/^[ TAB][ TAB]*$//'\
        -e 's/^ /TAB/'          \
 dnl Delete blank lines
-  | sed -n -e '/^..*$/p'       \
+       -e '/^[ \f]*$/d' \
 dnl Restore lines quoted above to original contents.
-  | sed '/^\"/ {
+       -e '/^\"/ {
        s/\\\([\"]\)/\1/g
        s/^[ TAB]*\"//
        s/\"[ TAB]*$//