]> code.delx.au - gnu-emacs/blobdiff - configure1.in
Renamed from pending-del.el.
[gnu-emacs] / configure1.in
index fcce3ada2c4117a24ccbec0f364ac8dd3105e09f..d5a226bdfa8edc381701cc581e57b24052156767 100755 (executable)
@@ -1,4 +1,4 @@
-
+[
 ### The above line is deliberately left blank.  If it starts with a #,
 ### some CSH's will think this is a csh script.
 
 ### along with GNU Emacs; see the file COPYING.  If not, write to
 ### the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 
-### Shell script to edit files and make symlinks in preparation for
-### compiling Emacs.
+
+### Since Emacs has configuration requirements that autoconf can't
+### meet, this file is an unholy marriage of custom-baked
+### configuration code and autoconf macros.  New versions of autoconf
+### could very well break this arrangement.
+###
+### We omit the invocation of autoconf's initialization function,
+### because it produces Bourne shell code to parse arguments, but we
+### need to parse our own arguments.
+###
+### We use the m4 quoting characters [ ] (as established by the
+### autoconf system) to include large sections of raw sewage - Oops, I
+### mean, shell code - in the final configuration script.
 ###
 ### Usage: configure config_name
 ###
@@ -82,9 +93,16 @@ The --with-gcc option says that the build process should use GCC to
        or not you have GCC by searching your executable path, but if
        it guesses incorrectly, you may need to use this.
 
+The --run-in-place option sets up default values for the path
+       variables in \`./Makefile' so that Emacs will expect to find
+       its data files (lisp libraries, runnable programs, and the
+       like) in the same locations they occupy while Emacs builds.
+       This means that you don't have to install Emacs in order to
+       run it; it uses its data files as they were unpacked.
+
 The --srcdir=DIR option specifies that the configuration and build
        processes should look for the Emacs source code in DIR, when
-       DIR is not the current directory.  This option doesn't work yet.
+       DIR is not the current directory.
 
 If successful, ${progname} leaves its status in config.status.  If
 unsuccessful after disturbing the status quo, it removes config.status."
@@ -92,17 +110,15 @@ unsuccessful after disturbing the status quo, it removes config.status."
 
 #### Option processing.
 
-### These are the names of CPP symbols we want to define or leave undefined
-### in src/config.h; their values are given by the shell variables of the same
-### names.
-config_h_opts=" \
-HAVE_X_WINDOWS HAVE_X11 HAVE_X_MENU \
-SIGTYPE GNU_MALLOC REL_ALLOC LISP_FLOAT_TYPE HAVE_CONST \
-LD_SWITCH_X_SITE C_SWITCH_X_SITE HAVE_XFREE386"
-
 ### Record all the arguments, so we can save them in config.status.
 arguments="$@"
 
+### These values are used to comment and uncomment different values
+### for the path variables in the Makefile, to choose the installed
+### configuration or the run-in-place configuration.
+rip_paths='#disabled# '
+inst_paths=''
+
 while [ $# != 0 ]; do
   arg="$1"
   case "${arg}" in
@@ -180,8 +196,6 @@ Set it to either \`yes' or \`no'."
            shift; val="$1"
          fi
           srcdir="${val}"
-
-         echo "${progname}: Beware - the \`--srcdir' option doesn't work yet." >&2
        ;;
 
        ## Has the user tried to tell us where the X files are?
@@ -219,6 +233,12 @@ Set it to either \`yes' or \`no'."
          LD_SWITCH_X_SITE="-L${x_libraries}"
         ;;
 
+       ## Should this use the "development configuration"?
+       "run_in_place" )
+         rip_paths=''
+         inst_paths='#disabled# '
+       ;;
+
        ## Has the user asked for some help?
        "usage" | "help" )
          echo "${long_usage}" | more
@@ -298,7 +318,9 @@ fi
 if [ ! -d ./oldXMenu ]; then
   mkdir ./oldXMenu
 fi
-
+if [ ! -d ./etc ]; then
+  mkdir ./etc
+fi
 
 #### Given the configuration name, set machfile and opsysfile to the
 #### names of the m/*.h and s/*.h files we should use.
@@ -360,7 +382,7 @@ case "${configuration}" in
 
   ## Appallings - I mean, Apollos - running Domain
   m68*-apollo* )
-    machine=apollo opsysfile=bsd4-2.h
+    machine=apollo opsys=bsd4-2
   ;;
 
   ## AT&T 3b2, 3b5, 3b15, 3b20
@@ -530,6 +552,7 @@ case "${configuration}" in
       *-isc* )                 opsys=isc3-0 ;;
       *-esix* )                        opsys=esix ;;
       *-xenix* )               opsys=xenix ;;
+      *-sco3.2v4* )            opsys=sco4 ;;
       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
     esac
   ;;
@@ -581,6 +604,11 @@ case "${configuration}" in
     machine=mips opsys=usg5-2-2
   ;;
 
+  ## NeXT
+  m68*-next-mach* | m68*-next-bsd* )
+    machine=next opsys=mach2
+  ;;
+
   ## The complete machine from National Semiconductor
   ns32k-ns-genix* )
     machine=ns32000 opsys=usg5-2
@@ -650,7 +678,7 @@ case "${configuration}" in
   ;;
 
   ## Suns
-  *-sun-sunos* | *-sun-bsd* )
+  *-sun-sunos* | *-sun-bsd* | *-sun-solaris* )
     case "${configuration}" in
       m68*-sunos1* )   machine=sun1 ;;
       m68*-sunos2* )   machine=sun2 ;;
@@ -662,6 +690,7 @@ case "${configuration}" in
     case "${configuration}" in
       *-sunos4.0*        ) opsys=sunos4-0 ;;
       *-sunos4* | *-sunos ) opsys=sunos4-1 ;;
+      *-sunos5* | *-solaris* ) opsys=sol2 ;;
       *                          ) opsys=bsd4-2   ;;
     esac
   ;;
@@ -768,9 +797,61 @@ fi
 machfile="m/${machine}.h"
 opsysfile="s/${opsys}.h"
 
+]
+AC_PREPARE(lisp)
+AC_CONFIG_HEADER(src/config.h)
+[
+
+#### Choose a compiler.
+case ${with_gcc} in
+  "yes" ) CC="gcc" GCC=1 ;;
+  "no"  ) CC="cc"        ;;
+  * )
+    ] AC_PROG_CC [
+esac
+
+CFLAGS='-g'
+if test -n "${GCC}"; then
+  CFLAGS='-g -O'
+fi
+
+#### Some other nice autoconf tests.  If you add a test here which
+#### should make an entry in src/config.h, don't forget to add an
+#### #undef clause to src/config.h.in for autoconf to modify.
+]
+dnl checks for programs
+AC_LN_S
+AC_PROG_CPP
+
+dnl checks for UNIX variants that set `DEFS'
+
+dnl checks for header files
+AC_HAVE_HEADERS(sys/timeb.h sys/time.h)
+AC_STDC_HEADERS
+AC_TIME_WITH_SYS_TIME
+
+dnl checks for typedefs
+AC_RETSIGTYPE
+
+dnl checks for functions
+AC_ALLOCA
+AC_HAVE_FUNCS(gettimeofday gethostname dup2)
+
+dnl checks for structure members
+AC_STRUCT_TM
+
+dnl checks for compiler characteristics
+AC_CONST
+
+dnl checks for operating system services
+
+dnl other checks for UNIX variants
+[
+
 
 #### Choose a window system.
 echo "Checking window system."
+
 window_system=''
 case "${with_x}" in
   yes )
@@ -797,7 +878,8 @@ case "${window_system}" in
     window_system=none
     if [ -r /usr/lib/libX11.a \
         -o -d /usr/include/X11 \
-         -o -d /usr/X386/include ]; then
+         -o -d /usr/X386/include \
+        -o -d ${x_includes}/X11 ]; then
       window_system=x11
     fi
   ;;
@@ -834,9 +916,17 @@ case ${HAVE_X11} in
 esac
 
 ### Check for XFree386.  It needs special hacks.
+lib_havexbsd=no
+]
+AC_HAVE_LIBRARY( Xbsd , have_libxbsd=yes , have_libxbsd=no )
+[
+if [ -n "${x_libraries}" ] && [ -f ${x_libraries}/libXbsd.a ]; then
+  have_libxbsd=yes
+fi
+
 case ${window_system} in
   x11 )
-    if [ -d /usr/X386/include ]; then
+    if [ -d /usr/X386/include ] && [ "${have_libxbsd}" = "yes" ]; then
       HAVE_XFREE386=yes
       if [ "${C_SWITCH_X_SITE}" = "" ]; then
        C_SWITCH_X_SITE="-I/usr/X386/include"
@@ -845,99 +935,17 @@ case ${window_system} in
   ;;
 esac
 
-#### Choose a compiler.
-echo "Checking compilers."
-if [ "${with_gcc}" = "" ]; then
-  echo "  Searching load path for GCC."
-  temppath=`echo $PATH | sed 's/^:/.:/
-                             s/::/:.:/g
-                             s/:$/:./
-                             s/:/ /g'`
-  default_cc=`(
-    for dir in ${temppath}; do
-      if [ -f ${dir}/gcc ]; then echo gcc; exit 0; fi
-    done
-    echo cc
-  )`
-else
-  case ${with_gcc} in
-    "yes" ) default_cc="gcc" ;;
-    "no"  ) default_cc="cc"  ;;
-  esac
-fi
-
-case "${default_cc}" in
-  "gcc" )
-    echo "  Using GCC."
-    default_cflags='-g -O'
-  ;;
-  * )
-    echo "  Using the system's CC."
-    default_cflags='-g'
-  ;;
-esac
-
-
-#### Does this compiler support the `const' keyword?
-#### The code for this test was adapted from autoconf's test.
-echo "Checking if the compiler supports \`const'."
-rm -f conftest*
-compile='${default_cc} conftest.c -o conftest >/dev/null 2>&1'
-echo "
-main() { exit(0); } t() {
-/* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this. */
-char const *const *p;
-char **p2;
-/* AIX 3.2 cc rejects this.  */
-p += p ? p-p : 0;
-/* HPUX 7.0 cc rejects these. */
-++p;
-p2 = (char const* const*) p;
- }" > conftest.c
-if eval $compile; then
-  echo "  It seems to."
-  HAVE_CONST=yes
-else
-  echo "  It doesn't seem to."
-  HAVE_CONST=no
-fi
-rm -f conftest*
-
-#### What is the return type of a signal handler?
-
-### We run /usr/include/signal.h through cpp and grep for the
-### declaration of the signal function.  Yuck.
-echo "Looking for return type of signal handler functions."
-signal_h_file=''
-if [ -r /usr/include/signal.h ]; then
-  signal_h_file=/usr/include/signal.h
-elif [ -r /usr/include/sys/signal.h ]; then
-  signal_h_file=/usr/include/sys/signal.h
-fi
-SIGTYPE=void
-if [ "${signal_h_file}" ]; then
-  sigpattern='[        ]*([    ]*\*[   ]*signal[       ]*('
-
-  ## We make a copy whose name ends in .c, so the compiler
-  ## won't complain about having only been given a .h file.
-  tempcname="configure.tmp.$$.c"
-  cp ${signal_h_file}  ${tempcname}
-  if ${default_cc} -E ${tempcname} | grep "int${sigpattern}" > /dev/null; then
-    SIGTYPE=int
-  fi
-  rm -f ${tempcname}
-fi
-echo "  Guessing that signals return \`${SIGTYPE}'."
-
-
 #### Extract some information from the operating system and machine files.
 
 echo "Examining the machine- and system-dependent files to find out"
 echo " - which libraries the lib-src programs will want, and"
 echo " - whether the GNU malloc routines are usable."
-tempcname="configure.tmp.$$.c"
+
+### It's not important that this name contain the PID; you can't run
+### two configures in the same directory and have anything work
+### anyway.
+tempcname="conftest.c"
+
 echo '
 #include "'${srcdir}'/src/'${opsysfile}'"
 #include "'${srcdir}'/src/'${machfile}'"
@@ -958,11 +966,15 @@ echo '
 @configure@ system_malloc=no
 #endif
 ' > ${tempcname}
-eval `${default_cc} -E ${tempcname} \
+# The value of CPP is a quoted variable reference, so we need to do this
+# to get its actual value...
+foo=`eval "echo $CPP"`
+eval `${foo} ${tempcname} \
        | grep '@configure@' \
        | sed -e 's/^@configure@ \([^=]*=\)\(.*\)$/\1"\2"/'`
 rm ${tempcname}
 
+
 # Do the opsystem or machine files prohibit the use of the GNU malloc?
 # Assume not, until told otherwise.
 GNU_MALLOC=yes
@@ -989,118 +1001,74 @@ if [ ! "${version}" ]; then
 fi
 
 
-#### Make the proper settings in `src/config.h'.
-rm -f config.status
-set -e
+#### Specify what sort of things we'll be editing into Makefile and config.h.
+]
+AC_SUBST(configuration)
+AC_SUBST(version)
+AC_SUBST(srcdir)
+AC_SUBST(c_switch_system)
+AC_SUBST(libsrc_libs)
+AC_SUBST(rip_paths)
+AC_SUBST(inst_paths)
+AC_SUBST(LD_SWITCH_X_SITE)
+AC_SUBST(C_SWITCH_X_SITE)
+AC_SUBST(CFLAGS)
+
+dnl   This is hopefully a temporary hack.  In autoconf version 1.3,
+dnl   the second argument to AC_DEFINE is quoted in every which way,
+dnl   so (as far as I can tell) there's no way to compute the value
+dnl   the CPP macro should receive.  We cripple that quoting for a
+dnl   bit, invoke AC_DEFINE, and then uncripple it.
+
+pushdef([AC_DEFINE_SEDQUOTE],[$1])
+AC_DEFINE(config_machfile,  "\"${machfile}\"")
+AC_DEFINE(config_opsysfile, "\"${opsysfile}\"")
+popdef([AC_DEFINE_SEDQUOTE])
+
+AC_DEFINE(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE})
+AC_DEFINE(C_SWITCH_X_SITE,  ${C_SWITCH_X_SITE})
+[
+if [ "${HAVE_X_WINDOWS}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X_WINDOWS) [
+fi
+if [ "${HAVE_X11}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X11) [
+fi
+if [ "${HAVE_XFREE386}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_XFREE386) [
+fi
+if [ "${HAVE_X_MENU}" = "yes" ] ; then
+  ] AC_DEFINE(HAVE_X_MENU) [
+fi
+if [ "${GNU_MALLOC}" = "yes" ] ; then
+  ] AC_DEFINE(GNU_MALLOC) [
+fi
+if [ "${REL_ALLOC}" = "yes" ] ; then
+  ] AC_DEFINE(REL_ALLOC) [
+fi
+if [ "${LISP_FLOAT_TYPE}" = "yes" ] ; then
+  ] AC_DEFINE(LISP_FLOAT_TYPE) [
+fi
 
-echo "Making \`./src/config.h' from \`${srcdir}/src/config.h.in'."
-sed_flags="-e 's:@machine@:${machfile}:' -e 's:@opsystem@:${opsysfile}:'"
 
-for flag in ${config_h_opts}; do
-  val=`eval echo '$'${flag}`
-  case ${val} in
-    no | "")
-      f="-e 's:.*#define ${flag}.*:/\\* #define ${flag} \\*/:'"
-    ;;
-    yes)
-      f="-e 's:.*#define ${flag}.*:#define ${flag}:'"
-    ;;
-    *)
-      f="-e 's:.*#define ${flag}.*:#define ${flag} ${val}:'"
-    ;;
-  esac
-  sed_flags="${sed_flags} ${f}"
-done
+#### Report on what we decided to do.
+echo "
 
-rm -f ./src/config.h.tmp
-(echo "/* This file is generated by \`${progname}' from"
- echo "   \`${srcdir}/src/config.h.in'."
- echo "   If you are thinking about editing it, you should seriously consider"
- echo "   running \`${progname} instead, or editing"
- echo "   \`${srcdir}/src/config.h.in' itself." 
- eval '/bin/sed '${sed_flags}' < "${srcdir}/src/config.h.in"'
-) > src/config.h.tmp
-${srcdir}/move-if-change src/config.h.tmp src/config.h
-### Remind people not to edit this.
-chmod -w src/config.h
-
-
-#### Modify the parameters in the top-level Makefile.
-echo "Producing \`Makefile' from \`${srcdir}/Makefile.in'."
-rm -f Makefile.tmp
-(echo "\
-# This file is generated by \`${progname}' from
-# \`${srcdir}/Makefile.in'.
-# If you are thinking about editing it, you should seriously consider
-# running \`${progname}' instead, or editing
-# \`${srcdir}/Makefile.in' itself."
- /bin/sed < ${srcdir}/Makefile.in                                      \
- -e 's|^configname *=.*$|configname='"${configuration}"'|'             \
- -e 's|^version *=.*$|version='"${version}"'|'                                 \
- -e 's|^srcdir *=.*$|srcdir='"${srcdir}"'|'                            \
- -e 's|^CC *=.*$|CC='"${default_cc}"'|'                                        \
- -e 's|^CONFIG_CFLAGS *=.*$|CONFIG_CFLAGS='"${default_cflags}"'|'      \
- -e 's|^C_SWITCH_SYSTEM *=.*$|C_SWITCH_SYSTEM='"${c_switch_system}"'|' \
- -e 's|^LOADLIBES *=.*$|LOADLIBES='"${libsrc_libs}"'|'                 \
- -e '/^# DIST: /d') > Makefile.tmp
-${srcdir}/move-if-change Makefile.tmp Makefile
-
-### I'm commenting out this section until I bring the `build-install' script
-### into line with the rest of the configuration stuff.
-
-### # Modify the parameters in the `build-install' script.
-### echo "Producing \`./build-install' from \`${srcdir}/build-install.in'."
-### rm -f ./build-install.tmp
-### (echo "\
-### # This file is generated by \`${progname}' from \`${srcdir}/build-install.in'.
-### # If you are thinking about editing it, you should seriously consider
-### # editing \`./build-install.in' itself, or running \`${progname}' instead."
-###  /bin/sed < ${srcdir}/build-install.in                     \
-###  -e 's;^\(prefix=\).*$;\1'"${prefix};"                     \
-###  -e 's;^\(bindir=\).*$;\1'"${bindir};"                     \
-###  -e 's;^\(lisppath=\).*$;\1'"${lisppath};"         \
-###  -e 's;^\(datadir=\).*$;\1'"${datadir};"           \
-###  -e 's;^\(lockdir=\).*$;\1'"${lockdir};"           \
-###  -e 's;^\(libdir=\).*$;\1'"${libdir};") > ./build-install.tmp
-### ${srcdir}/move-if-change build-install.tmp build-install
-### # Remind people not to edit this.
-### chmod -w build-install
-### chmod +x build-install
-
-
-#### Describe the results.
-
-### Create a verbal description of what we have done.
-
-message="Configured for \`${configuration}'.
+Configured for \`${configuration}'.
 
   What operating system and machine description files should Emacs use?
         \`${opsysfile}' and \`${machfile}'
+  What compiler should emacs be built with?               ${CC} ${CFLAGS}
   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
   Should Emacs use the relocating allocator for buffers?  ${REL_ALLOC}
-  What window system should Emacs use?                    ${window_system}
-  What compiler should emacs be built with?               ${default_cc}
-  Should the compilation use \`-g' and/or \`-O'?            ${default_cflags-neither}${x_includes+
+  What window system should Emacs use?                    ${window_system}${x_includes+
   Where do we find X Windows header files?                }${x_includes}${x_libraries+
-  Where do we find X Windows libraries?                   }${x_libraries}"
-
-### Write config.status, documenting the damage we have done.
+  Where do we find X Windows libraries?                   }${x_libraries}
 
-(echo "\
-#!/bin/sh
-### This file is generated by \`${progname}.'
-### If you are thinking about editing it, you should seriously consider
-### running \`${progname}' instead.
 "
- echo "${message}" | sed -e 's/^/# /'
- echo "exec '${progname}' ${arguments} "'$@') > config.status
-
-### Remind people not to edit this.
-chmod -w config.status
-chmod +x config.status
-
-### Print the description.
-echo
-echo "${message}"
 
-exit 0
+### Restore the arguments to this script, so autoconf can record them
+### in the config.status file.
+set - ${arguments}
+]
+AC_OUTPUT(Makefile)