-
+[
### 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
###
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."
#### 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
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?
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
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.
## 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
*-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
;;
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
;;
## Suns
- *-sun-sunos* | *-sun-bsd* )
+ *-sun-sunos* | *-sun-bsd* | *-sun-solaris* )
case "${configuration}" in
m68*-sunos1* ) machine=sun1 ;;
m68*-sunos2* ) machine=sun2 ;;
case "${configuration}" in
*-sunos4.0* ) opsys=sunos4-0 ;;
*-sunos4* | *-sunos ) opsys=sunos4-1 ;;
+ *-sunos5* | *-solaris* ) opsys=sol2 ;;
* ) opsys=bsd4-2 ;;
esac
;;
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 )
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
;;
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"
;;
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}'"
@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
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)