(call_process_cleanup, getenv_internal): Use assignment, not initialization.
[bpt/emacs.git] / configure1.in
CommitLineData
fa97f756 1dnl This is an autoconf script.
8fc40e80
JB
2dnl To rebuild the `configure' script from this, execute the command
3dnl autoconf
4dnl in the directory containing this script. You must have autoconf
d317463c 5dnl version 1.7 or later.
8fc40e80
JB
6dnl
7dnl The following text appears in the resulting `configure' script,
8dnl explaining how to rebuild it.
de5d70c1 9[#!/bin/sh
0c22fbca 10#### Configuration script for GNU Emacs
5dd53b99 11#### Copyright (C) 1992, 1994 Free Software Foundation, Inc.
0c22fbca 12
8fc40e80
JB
13### Don't edit this script!
14### This script was automatically generated by the `autoconf' program
15### from the file `./configure.in'.
16### To rebuild it, execute the command
17### autoconf
d317463c 18### in the this directory. You must have autoconf version 1.7 or later.
8fc40e80 19
0c22fbca
JB
20### This file is part of GNU Emacs.
21
22### GNU Emacs is free software; you can redistribute it and/or modify
23### it under the terms of the GNU General Public License as published by
5dd53b99 24### the Free Software Foundation; either version 2, or (at your option)
0c22fbca
JB
25### any later version.
26
27### GNU Emacs is distributed in the hope that it will be useful,
28### but WITHOUT ANY WARRANTY; without even the implied warranty of
29### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30### GNU General Public License for more details.
31
32### You should have received a copy of the GNU General Public License
33### along with GNU Emacs; see the file COPYING. If not, write to
34### the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
35
7d99494c
JB
36### Since Emacs has configuration requirements that autoconf can't
37### meet, this file is an unholy marriage of custom-baked
44ee550f 38### configuration code and autoconf macros.
7d99494c
JB
39###
40### We use the m4 quoting characters [ ] (as established by the
41### autoconf system) to include large sections of raw sewage - Oops, I
42### mean, shell code - in the final configuration script.
0c22fbca
JB
43###
44### Usage: configure config_name
45###
46### If configure succeeds, it leaves its status in config.status.
47### If configure fails after disturbing the status quo,
48### config.status is removed.
0c22fbca 49
3647c171
JB
50### Remove any more than one leading "." element from the path name.
51### If we don't remove them, then another "./" will be prepended to
52### the file name each time we use config.status, and the program name
53### will get larger and larger. This wouldn't be a problem, except
54### that since progname gets recorded in all the Makefiles this script
55### produces, move-if-change thinks they're different when they're
56### not.
0c22fbca
JB
57###
58### It would be nice if we could put the ./ in a \( \) group and then
59### apply the * operator to that, so we remove as many leading ./././'s
60### as are present, but some seds (like Ultrix's sed) don't allow you to
61### apply * to a \( \) group. Bleah.
3647c171 62progname="`echo $0 | sed 's:^\./\./:\./:'`"
ca1d1d23 63
ca1d1d23 64
cedb6c1b
BF
65### Establish some default values.
66run_in_place=
67single_tree=
68prefix='/usr/local'
69exec_prefix='${prefix}'
70bindir='${exec_prefix}/bin'
71datadir='${prefix}/lib'
72statedir='${prefix}/lib'
73libdir='${exec_prefix}/lib'
74mandir='${prefix}/man/man1'
75infodir='${prefix}/info'
76lispdir='${datadir}/emacs/${version}/lisp'
77locallisppath='${datadir}/emacs/site-lisp'
78lisppath='${locallisppath}:${lispdir}'
79etcdir='${datadir}/emacs/${version}/etc'
80lockdir='${statedir}/emacs/lock'
81archlibdir='${libdir}/emacs/${version}/${configuration}'
080d8166 82docdir='${datadir}/emacs/${version}/etc'
cedb6c1b 83
1c4ce111
RS
84# On Sun systems, people sometimes set up the variable CPP
85# with a value that is a directory, not an executable at all.
86# Detect that case, and ignore that value.
87if [ "x$CPP" != x ] && [ -d "$CPP" ];
88then
89 CPP=
90fi
91
cedb6c1b
BF
92# We cannot use this variable in the case statement below, because many
93# /bin/sh's have broken semantics for "case". Unfortunately, you must
94# actually edit the clause itself.
95# path_options="prefix | exec_prefix | bindir | libdir | etcdir | datadir"
96# path_options="$path_options | archlibdir | statedir | mandir | infodir"
97# path_options="$path_options | lispdir | lockdir | lisppath | locallisppath"
98
0c22fbca
JB
99#### Usage messages.
100
ae6756a2 101short_usage="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...]
8509d50c 102
ca1d1d23 103Set compilation and installation parameters for GNU Emacs, and report.
8509d50c 104CONFIGURATION specifies the machine and operating system to build for.
ae6756a2 105--with-x Support the X Window System.
b735d4b3 106--with-x=no Don't support X.
1c4ce111
RS
107--with-x-toolkit Use an X toolkit.
108--with-x-toolkit=no Don't use an X toolkit.
ae6756a2
JB
109--with-gcc Use GCC to compile Emacs.
110--with-gcc=no Don't use GCC to compile Emacs.
1c4ce111
RS
111--x-includes=DIR Search for X header files in DIR.
112--x-libraries=DIR Search for X libraries in DIR.
ae6756a2
JB
113--run-in-place Use libraries and data files directly out of the
114 source tree.
cedb6c1b
BF
115--single-tree=DIR Has the effect of creating a directory tree at DIR
116 which looks like:
117 .../DIR/bin/CONFIGNAME (emacs, etags, etc.)
118 .../DIR/bin/CONFIGNAME/etc (movemail, etc.)
119 .../DIR/common/lisp (emacs' lisp files)
120 .../DIR/common/site-lisp (local lisp files)
121 .../DIR/common/lib (DOC, TUTORIAL, etc.)
122 .../DIR/common/lock (lockfiles)
123--srcdir=DIR Look for the Emacs source files in DIR.
124--prefix=DIR Install files below DIR. Defaults to \`${prefix}'.
125
126You may also specify any of the \`path' variables found in Makefile.in,
127including --bindir, --libdir, --etcdir, --infodir, and so on. This allows
128you to override a single default location when configuring.
0c22fbca 129
ca1d1d23 130If successful, ${progname} leaves its status in config.status. If
0c22fbca
JB
131unsuccessful after disturbing the status quo, it removes config.status."
132
133
134#### Option processing.
ca1d1d23 135
0c22fbca 136### Record all the arguments, so we can save them in config.status.
20d9a863 137arguments="$@"
e065a56e 138
6703f6cd
BF
139### Shell Magic: Quote the quoted arguments in ARGUMENTS. At a later date,
140### in order to get the arguments back in $@, we have to do an
141### `eval set x "$quoted_arguments"; shift'.
142quoted_arguments=
143for i in "$@"; do
144 quoted_arguments="$quoted_arguments '$i'"
145done
146
3517b2e9
JB
147### Don't use shift -- that destroys the argument list, which autoconf needs
148### to produce config.status. It turns out that "set - ${arguments}" doesn't
149### work portably.
6703f6cd
BF
150### However, it also turns out that many shells cannot expand ${10} at all.
151### So using an index variable doesn't work either. It is possible to use
152### some shell magic to make 'set x "$arguments"; shift' work portably.
153while [ $# != 0 ]; do
154 arg="$1"; shift
ca1d1d23 155 case "${arg}" in
0c22fbca
JB
156
157 ## Anything starting with a hyphen we assume is an option.
158 -* )
0c22fbca 159 ## Separate the switch name from the value it's being given.
ca1d1d23 160 case "${arg}" in
2c44309a 161 -*=*)
20d9a863 162 opt=`echo ${arg} | sed 's:^-*\([^=]*\)=.*$:\1:'`
2c44309a 163 val=`echo ${arg} | sed 's:^-*[^=]*=\(.*\)$:\1:'`
ca1d1d23
JB
164 valomitted=no
165 ;;
2c44309a 166 -*)
0c22fbca
JB
167 ## If FOO is a boolean argument, --FOO is equivalent to
168 ## --FOO=yes. Otherwise, the value comes from the next
169 ## argument - see below.
20d9a863 170 opt=`echo ${arg} | sed 's:^-*\(.*\)$:\1:'`
ca1d1d23
JB
171 val="yes"
172 valomitted=yes
173 ;;
174 esac
175
0c22fbca 176 ## Change `-' in the option name to `_'.
b0209e18 177 optname="${opt}"
20d9a863
JB
178 opt="`echo ${opt} | tr - _`"
179
0c22fbca
JB
180 ## Process the option.
181 case "${opt}" in
ca1d1d23 182
0c22fbca
JB
183 ## Has the user specified which window systems they want to support?
184 "with_x" | "with_x11" | "with_x10" )
185 ## Make sure the value given was either "yes" or "no".
ca1d1d23
JB
186 case "${val}" in
187 y | ye | yes ) val=yes ;;
188 n | no ) val=no ;;
189 * )
b0209e18 190 (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
0c22fbca
JB
191Set it to either \`yes' or \`no'."
192 echo "${short_usage}") >&2
ca1d1d23
JB
193 exit 1
194 ;;
195 esac
0c22fbca 196 eval "${opt}=\"${val}\""
ca1d1d23 197 ;;
0c22fbca 198
1c4ce111
RS
199 ## Has the user specified which toolkit they want to support?
200 "with_x_toolkit" )
1c4ce111
RS
201 case "${val}" in
202 y | ye | yes ) val=athena ;;
203 n | no ) val=no ;;
204 l | lu | luc | luci | lucid ) val=lucid ;;
205 a | at | ath | athe | athena ) val=athena ;;
0de5246d
RS
206# These don't currently work.
207# m | mo | mot | moti | motif ) val=motif ;;
208# o | op | ope | open | open- | open-l | open-lo \
209# | open-loo | open-look ) val=open-look ;;
1c4ce111 210 * )
0de5246d
RS
211 (
212#echo "${progname}: the \`--${optname}' option is supposed to have a value
213#which is \`yes', \`no', \`lucid', \`athena', \`motif' or \`open-look'."
214echo "${progname}: the \`--${optname}' option is supposed to have a value
d2ebfa8c 215which is \`yes', \`no', \`lucid', or \`athena'."
1c4ce111
RS
216 echo "${short_usage}") >&2
217 exit 1
218 ;;
219 esac
220 eval "${opt}=\"${val}\""
221 ;;
222
1bba56f6 223 ## Has the user specified whether or not they want GCC?
b735d4b3 224 "with_gcc" | "with_gnu_cc" )
1bba56f6
JB
225 ## Make sure the value given was either "yes" or "no".
226 case "${val}" in
227 y | ye | yes ) val=yes ;;
228 n | no ) val=no ;;
229 * )
b0209e18 230 (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
1bba56f6
JB
231Set it to either \`yes' or \`no'."
232 echo "${short_usage}") >&2
233 exit 1
234 ;;
235 esac
236 eval "${opt}=\"${val}\""
237 ;;
238
0c22fbca
JB
239 ## Has the user specified a source directory?
240 "srcdir" )
241 ## If the value was omitted, get it from the next argument.
ca1d1d23 242 if [ "${valomitted}" = "yes" ]; then
0c22fbca 243 ## Get the next argument from the argument list, if there is one.
6703f6cd 244 if [ $# = 0 ]; then
b0209e18
JB
245 (echo "${progname}: You must give a value for the \`--${optname}' option, as in
246 \`--${optname}=FOO'."
0c22fbca 247 echo "${short_usage}") >&2
4746118a
JB
248 exit 1
249 fi
1052acbf 250 val="$1"; shift
ca1d1d23 251 fi
0c22fbca
JB
252 srcdir="${val}"
253 ;;
254
9c7a7556
JB
255 ## Has the user tried to tell us where the X files are?
256 ## I think these are dopey, but no less than three alpha
257 ## testers, at large sites, have said they have their X files
258 ## installed in odd places.
b0209e18 259 "x_includes" )
9c7a7556
JB
260 ## If the value was omitted, get it from the next argument.
261 if [ "${valomitted}" = "yes" ]; then
262 ## Get the next argument from the argument list, if there is one.
6703f6cd 263 if [ $# = 0 ]; then
b0209e18 264 (echo "${progname}: You must give a value for the \`--${optname}' option, as in
cedb6c1b 265 \`--${optname}=/usr/local/X11/include'."
9c7a7556
JB
266 echo "${short_usage}") >&2
267 exit 1
268 fi
6703f6cd 269 val="$1"; shift
9c7a7556
JB
270 fi
271 x_includes="${val}"
9c7a7556 272 ;;
b0209e18 273 "x_libraries" )
9c7a7556
JB
274 ## If the value was omitted, get it from the next argument.
275 if [ "${valomitted}" = "yes" ]; then
276 ## Get the next argument from the argument list, if there is one.
6703f6cd 277 if [ $# = 0 ]; then
b0209e18 278 (echo "${progname}: You must give a value for the \`--${optname}' option, as in
cedb6c1b 279 \`--${optname}=/usr/local/X11/lib'."
9c7a7556
JB
280 echo "${short_usage}") >&2
281 exit 1
282 fi
6703f6cd 283 val="$1"; shift
9c7a7556
JB
284 fi
285 x_libraries="${val}"
9c7a7556
JB
286 ;;
287
c5f67786
JB
288 ## Should this use the "development configuration"?
289 "run_in_place" )
cedb6c1b
BF
290 single_tree=
291 run_in_place=1
c5f67786
JB
292 ;;
293
1052acbf
BF
294 ## Should this use the "single tree" configuration?
295 "single_tree" )
296 run_in_place=
297 single_tree=1
298 ;;
299
cedb6c1b
BF
300 ## Has the user specified one of the path options?
301 prefix | exec_prefix | bindir | libdir | etcdir | datadir | \
302 archlibdir | statedir | mandir | infodir | lispdir | lockdir | \
109ebdd4 303 lisppath | locallisppath | docdir )
cedb6c1b
BF
304 ## If the value was omitted, get it from the next argument.
305 if [ "${valomitted}" = "yes" ]; then
6703f6cd 306 if [ $# = 0 ]; then
cedb6c1b
BF
307 (echo \
308"$progname: You must give a value for the \`--${optname}' option,";
309 echo \
310"as in \`--${optname}=`eval echo '$'$optname`.'"
311 echo "$short_usage") >&2
312 exit 1
313 fi
6703f6cd 314 val="$1"; shift
cedb6c1b 315 fi
6703f6cd
BF
316 eval "${opt}=\"${val}\""
317 eval "${opt}_specified=1"
cedb6c1b 318 ;;
86ddcc58 319
d02e05d1
JB
320 ## Verbose flag, tested by autoconf macros.
321 "verbose" )
322 verbose=yes
323 ;;
324
0c22fbca
JB
325 ## Has the user asked for some help?
326 "usage" | "help" )
1c0feb67
RS
327 if [ "x$PAGER" = x ]
328 then
329 echo "${short_usage}" | more
330 else
331 echo "${short_usage}" | $PAGER
332 fi
0c22fbca
JB
333 exit
334 ;;
ca1d1d23 335
0c22fbca
JB
336 ## We ignore all other options silently.
337 esac
ca1d1d23 338 ;;
0c22fbca
JB
339
340 ## Anything not starting with a hyphen we assume is a
341 ## configuration name.
ca1d1d23 342 *)
8509d50c 343 configuration=${arg}
ca1d1d23 344 ;;
0c22fbca 345
ca1d1d23
JB
346 esac
347done
348
6703f6cd
BF
349### Get the arguments back. See the diatribe on Shell Magic above.
350eval set x "$quoted_arguments"; shift
351
8509d50c 352if [ "${configuration}" = "" ]; then
334e7c23
JB
353 echo '- You did not tell me what kind of host system you want to configure.
354- I will attempt to guess the kind of system this is.' 1>&2
355 guesssys=`echo ${progname} | sed 's/configure$/config.guess/'`
356 if configuration=`${guesssys}` ; then
357 echo "- Looks like this is a ${configuration}" 1>&2
358 else
359 echo '- Failed to guess the system type. You need to tell me.' 1>&2
8428ef44 360 echo "${short_usage}" >&2
334e7c23
JB
361 exit 1
362 fi
0c22fbca
JB
363fi
364
0c22fbca
JB
365#### Decide where the source is.
366case "${srcdir}" in
367
e94740ce 368 ## If it's not specified, see if `.' or `..' might work.
0c22fbca 369 "" )
2e694846
JB
370 confdir=`echo $0 | sed 's|//|/|' | sed 's|/[^/]*$||'`
371 if [ -f $confdir/src/lisp.h -a -f $confdir/lisp/version.el ]; then
0871bc22 372 srcdir="${confdir}"
e94740ce 373 else
2e694846 374 if [ -f "./src/lisp.h" -a -f "./lisp/version.el" ]; then
426460bf 375 srcdir='.'
e94740ce 376 else
2e694846 377 if [ -f "../src/lisp.h" -a -f "../lisp/version.el" ]; then
426460bf 378 srcdir='..'
2e694846
JB
379 else
380 (echo "\
e94740ce
JB
381${progname}: Neither the current directory nor its parent seem to
382contain the Emacs sources. If you do not want to build Emacs in its
383source tree, you should run \`${progname}' in the directory in which
384you wish to build Emacs, using its \`--srcdir' option to say where the
385sources may be found."
2e694846
JB
386 echo "${short_usage}") >&2
387 exit 1
388 fi
e94740ce
JB
389 fi
390 fi
0c22fbca
JB
391 ;;
392
e94740ce 393 ## Otherwise, check if the directory they specified is okay.
0c22fbca 394 * )
e94740ce
JB
395 if [ ! -d "${srcdir}" -o ! -f "${srcdir}/src/lisp.h" -o ! -f "${srcdir}/lisp/version.el" ]; then
396 (echo "\
397${progname}: The directory specified with the \`--srcdir' option,
398\`${srcdir}', doesn't seem to contain the Emacs sources. You should
399either run the \`${progname}' script at the top of the Emacs source
400tree, or use the \`--srcdir' option to specify where the Emacs sources
401are."
0c22fbca
JB
402 echo "${short_usage}") >&2
403 exit 1
404 fi
405 ;;
0871bc22 406esac
0c22fbca 407
0871bc22
JB
408#### Make srcdir absolute, if it isn't already. It's important to
409#### avoid running the path through pwd unnecessary, since pwd can
410#### give you automounter prefixes, which can go away.
411case "${srcdir}" in
412 /* ) ;;
c9ed10f6
JB
413 . )
414 ## We may be able to use the $PWD environment variable to make this
415 ## absolute. But sometimes PWD is inaccurate.
dce3d8a9 416 if [ "${PWD}" != "" ] && [ "`(cd ${PWD} ; sh -c pwd)`" = "`pwd`" ] ; then
c9ed10f6
JB
417 srcdir="$PWD"
418 else
419 srcdir="`(cd ${srcdir}; pwd)`"
1d488950 420 fi
c9ed10f6 421 ;;
0871bc22 422 * ) srcdir="`(cd ${srcdir}; pwd)`" ;;
0c22fbca
JB
423esac
424
acd399a1
RM
425#### Check if the source directory already has a configured system in it.
426if [ `pwd` != `(cd ${srcdir} && pwd)` ] \
427 && [ -f "${srcdir}/src/config.h" ] ; then
428 (echo "${progname}: WARNING: The directory tree \`${srcdir}' is being used"
429 echo " as a build directory right now; it has been configured in its own"
430 echo " right. To configure in another directory as well, you MUST"
431 echo " use GNU make. If you do not have GNU make, then you must"
432 echo " now do \`make distclean' in ${srcdir},"
433 echo " and then run ${progname} again.") >&2
91675811
RM
434 extrasub='/^VPATH[ ]*=/c\
435vpath %.c $(srcdir)\
436vpath %.h $(srcdir)\
eb8a344d
RM
437vpath %.y $(srcdir)\
438vpath %.l $(srcdir)\
439vpath %.s $(srcdir)\
91675811 440vpath %.in $(srcdir)'
acd399a1 441fi
acd399a1 442
0c22fbca 443### Make the necessary directories, if they don't exist.
1c4ce111 444for dir in ./src ./lib-src ./cpp ./oldXMenu ./lwlib ./etc ; do
30945baf
JB
445 if [ ! -d ${dir} ]; then
446 mkdir ${dir}
447 fi
448done
0c22fbca
JB
449
450#### Given the configuration name, set machfile and opsysfile to the
451#### names of the m/*.h and s/*.h files we should use.
452
453### Canonicalize the configuration name.
8509d50c 454echo "Checking the configuration name."
279271ba 455if canonical=`${srcdir}/config.sub "${configuration}"` ; then : ; else
8509d50c
JB
456 exit $?
457fi
20d9a863 458
3647c171
JB
459### If you add support for a new configuration, add code to this
460### switch statement to recognize your configuration name and select
461### the appropriate operating system and machine description files.
462
8509d50c
JB
463### You would hope that you could choose an m/*.h file pretty much
464### based on the machine portion of the configuration name, and an s-
465### file based on the operating system portion. However, it turns out
466### that each m/*.h file is pretty manufacturer-specific - for
467### example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
468### all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
469### machines. So we basically have to have a special case for each
470### configuration name.
3647c171 471###
8509d50c
JB
472### As far as handling version numbers on operating systems is
473### concerned, make sure things will fail in a fixable way. If
474### /etc/MACHINES doesn't say anything about version numbers, be
475### prepared to handle anything reasonably. If version numbers
476### matter, be sure /etc/MACHINES says something about it.
3647c171
JB
477###
478### Eric Raymond says we should accept strings like "sysvr4" to mean
479### "System V Release 4"; he writes, "The old convention encouraged
480### confusion between `system' and `release' levels'."
481
8509d50c 482machine='' opsys='' unported='false'
279271ba 483case "${canonical}" in
8509d50c
JB
484
485 ## Alliant machines
20d9a863
JB
486 ## Strictly speaking, we need the version of the alliant operating
487 ## system to choose the right machine file, but currently the
488 ## configuration name doesn't tell us enough to choose the right
489 ## one; we need to give alliants their own operating system name to
490 ## do this right. When someone cares, they can help us.
491 fx80-alliant-* )
8509d50c 492 machine=alliant4 opsys=bsd4-2
20d9a863
JB
493 ;;
494 i860-alliant-* )
8509d50c 495 machine=alliant-2800 opsys=bsd4-3
20d9a863 496 ;;
ca1d1d23 497
8509d50c
JB
498 ## Altos 3068
499 m68*-altos-sysv* )
500 machine=altos opsys=usg5-2
20d9a863 501 ;;
8509d50c
JB
502
503 ## Amdahl UTS
504 580-amdahl-sysv* )
505 machine=amdahl opsys=usg5-2-2
20d9a863 506 ;;
ca1d1d23 507
8509d50c
JB
508 ## Appallings - I mean, Apollos - running Domain
509 m68*-apollo* )
e4474817 510 machine=apollo opsys=bsd4-2
20d9a863 511 ;;
8509d50c
JB
512
513 ## AT&T 3b2, 3b5, 3b15, 3b20
514 we32k-att-sysv* )
515 machine=att3b opsys=usg5-2-2
516 ;;
517
518 ## AT&T 3b1 - The Mighty Unix PC!
519 m68*-att-sysv* )
520 machine=7300 opsys=usg5-2-2
521 ;;
522
f9b9f71b
FP
523 ## Bull dpx20
524 rs6000-bull-bosx* )
525 machine=ibmrs6000 opsys=aix3-2
526 ;;
527
6ec1f458
JB
528 ## Bull dpx2
529 m68*-bull-sysv3* )
530 machine=dpx2 opsys=usg5-3
531 ;;
532
8509d50c 533 ## Bull sps7
6ec1f458 534 m68*-bull-sysv2* )
8509d50c 535 machine=sps7 opsys=usg5-2
20d9a863 536 ;;
8509d50c
JB
537
538 ## CCI 5/32, 6/32 -- see "Tahoe".
539
540 ## Celerity
541 ## I don't know what configuration name to use for this; config.sub
542 ## doesn't seem to know anything about it. Hey, Celerity users, get
543 ## in touch with us!
544 celerity-celerity-bsd* )
545 machine=celerity opsys=bsd4-2
546 ;;
547
548 ## Clipper
549 ## What operating systems does this chip run that Emacs has been
550 ## tested on?
551 clipper-* )
552 machine=clipper
553 ## We'll use the catch-all code at the bottom to guess the
554 ## operating system.
555 ;;
556
557 ## Convex
558 *-convex-bsd* )
559 machine=convex opsys=bsd4-3
560 ;;
561
562 ## Cubix QBx/386
563 i386-cubix-sysv* )
564 machine=intel386 opsys=usg5-3
565 ;;
566
567 ## Cydra 5
568 cydra*-cydrome-sysv* )
569 machine=cydra5 opsys=usg5-3
570 ;;
571
b86d694e
JB
572 ## Data General AViiON Machines
573 m88k-dg-dgux* )
574 machine=aviion opsys=dgux
575 ;;
576
8509d50c 577 ## DECstations
1c0feb67 578 mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0* | mips-dec-bsd4.2* )
8509d50c
JB
579 machine=pmax opsys=bsd4-2
580 ;;
581 mips-dec-ultrix* | mips-dec-bsd* )
582 machine=pmax opsys=bsd4-3
583 ;;
584 mips-dec-osf* )
585 machine=pmax opsys=osf1
586 ;;
587
588 ## Motorola Delta machines
98f5cfc3 589 m68k-motorola-sysv* | m68000-motorola-sysv* )
8509d50c 590 machine=delta opsys=usg5-3
764b979b
RS
591 if [ -z "`type gnucc | grep 'not found'`" ]
592 then CC=gnucc
593 else
594 if [ -z "`type gcc | grep 'not found'`" ]
595 then CC=gcc
596 else CC=cc
597 fi
598 fi
8509d50c 599 ;;
ac0e6f3b
JB
600 m88k-motorola-sysv4* )
601 machine=delta88k opsys=usg5-4
602 ;;
8509d50c
JB
603 m88k-motorola-sysv* | m88k-motorola-m88kbcs* )
604 machine=delta88k opsys=usg5-3
605 ;;
606
607 ## Dual machines
608 m68*-dual-sysv* )
609 machine=dual opsys=usg5-2
610 ;;
611 m68*-dual-uniplus* )
612 machine=dual opsys=unipl5-2
613 ;;
614
615 ## Elxsi 6400
616 elxsi-elxsi-sysv* )
617 machine=elxsi opsys=usg5-2
618 ;;
619
620 ## Encore machines
621 ns16k-encore-bsd* )
622 machine=ns16000 opsys=umax
623 ;;
624
625 ## The GEC 93 - apparently, this port isn't really finished yet.
626
627 ## Gould Power Node and NP1
1c0feb67 628 pn-gould-bsd4.2* )
8509d50c
JB
629 machine=gould opsys=bsd4-2
630 ;;
1c0feb67 631 pn-gould-bsd4.3* )
8509d50c
JB
632 machine=gould opsys=bsd4-3
633 ;;
634 np1-gould-bsd* )
635 machine=gould-np1 opsys=bsd4-3
636 ;;
637
d8e16cd2
RS
638 ## Harris Night Hawk machines running CX/UX (a 5000 looks just like a 4000
639 ## as far as Emacs is concerned).
640 m88k-harris-cxux* )
641 # Build needs to be different on 7.0 and later releases
642 case "`uname -r`" in
643 [56].[0-9] ) machine=nh4000 opsys=cxux ;;
644 [7].[0-9] ) machine=nh4000 opsys=cxux7 ;;
645 esac
646 ;;
647 ## Harris ecx or gcx running CX/UX (Series 1200, Series 3000)
648 m68k-harris-cxux* )
649 machine=nh3000 opsys=cxux
650 ;;
651
8509d50c
JB
652 ## Honeywell XPS100
653 xps*-honeywell-sysv* )
654 machine=xps100 opsys=usg5-2
655 ;;
656
657 ## HP 9000 series 200 or 300
658 m68*-hp-bsd* )
659 machine=hp9000s300 opsys=bsd4-3
660 ;;
dbf6ad3d
RM
661 m68*-hp-netbsd* )
662 machine=hp9000s300 opsys=netbsd
663 ;;
d69d8d1e 664 ## HP/UX 7, 8 and 9 are supported on these machines.
20d9a863 665 m68*-hp-hpux* )
d69d8d1e 666 case "`uname -r`" in
1c0feb67
RS
667 ## Someone's system reports A.B8.05 for this.
668 ## I wonder what other possibilities there are.
669 *.B8.* ) machine=hp9000s300 opsys=hpux8 ;;
d69d8d1e
JB
670 *.08.* ) machine=hp9000s300 opsys=hpux8 ;;
671 *.09.* ) machine=hp9000s300 opsys=hpux9 ;;
672 *) machine=hp9000s300 opsys=hpux ;;
673 esac
20d9a863 674 ;;
ca1d1d23 675
c55f453b 676 ## HP 9000 series 700 and 800, running HP/UX
ea2c2e02 677 hppa*-hp-hpux7* )
602dc898 678 machine=hp9000s800 opsys=hpux
c55f453b 679 ;;
ea2c2e02 680 hppa*-hp-hpux8* )
602dc898 681 machine=hp9000s800 opsys=hpux8
c55f453b 682 ;;
ea2c2e02 683 hppa*-hp-hpux9* )
602dc898 684 machine=hp9000s800 opsys=hpux9
ea2c2e02
JB
685 ;;
686
687 ## HP 9000 series 700 and 800, running HP/UX
c55f453b
JB
688 hppa*-hp-hpux* )
689 ## Cross-compilation? Nah!
252c8b3b 690 case "`uname -r`" in
1c0feb67
RS
691 ## Someone's system reports A.B8.05 for this.
692 ## I wonder what other possibilities there are.
693 *.B8.* ) machine=hp9000s800 opsys=hpux8 ;;
ea2c2e02
JB
694 *.08.* ) machine=hp9000s800 opsys=hpux8 ;;
695 *.09.* ) machine=hp9000s800 opsys=hpux9 ;;
252c8b3b 696 *) machine=hp9000s800 opsys=hpux ;;
c55f453b 697 esac
8509d50c
JB
698 ;;
699
700 ## Orion machines
701 orion-orion-bsd* )
702 machine=orion opsys=bsd4-2
703 ;;
704 clipper-orion-bsd* )
705 machine=orion105 opsys=bsd4-2
706 ;;
707
708 ## IBM machines
1c0feb67 709 i386-ibm-aix1.1* )
8509d50c
JB
710 machine=ibmps2-aix opsys=usg5-2-2
711 ;;
1c0feb67 712 i386-ibm-aix1.[23]* | i386-ibm-aix* )
8509d50c
JB
713 machine=ibmps2-aix opsys=usg5-3
714 ;;
d5aac16a
RS
715 i370-ibm-aix*)
716 machine=ibm370aix opsys=usg5-3
717 ;;
1c0feb67 718 rs6000-ibm-aix3.1* )
8509d50c
JB
719 machine=ibmrs6000 opsys=aix3-1
720 ;;
a69c774b
KH
721 rs6000-ibm-aix3.2.5)
722 machine=ibmrs6000 opsys=aix3-2-5
723 ;;
1c0feb67 724 rs6000-ibm-aix3.2* | rs6000-ibm-aix* )
17a624d1
JB
725 machine=ibmrs6000 opsys=aix3-2
726 ;;
1c0feb67 727 romp-ibm-bsd4.3* )
d20c62bf
RS
728 machine=ibmrt opsys=bsd4-3
729 ;;
1c0feb67 730 romp-ibm-bsd4.2* )
d20c62bf
RS
731 machine=ibmrt opsys=bsd4-2
732 ;;
1c0feb67 733 romp-ibm-aos4.3* )
d20c62bf
RS
734 machine=ibmrt opsys=bsd4-3
735 ;;
1c0feb67 736 romp-ibm-aos4.2* )
8509d50c
JB
737 machine=ibmrt opsys=bsd4-2
738 ;;
d20c62bf
RS
739 romp-ibm-aos* )
740 machine=ibmrt opsys=bsd4-3
741 ;;
742 romp-ibm-bsd* )
743 machine=ibmrt opsys=bsd4-3
744 ;;
8509d50c
JB
745 romp-ibm-aix* )
746 machine=ibmrt-aix opsys=usg5-2-2
747 ;;
748
749 ## Integrated Solutions `Optimum V'
1c0feb67 750 m68*-isi-bsd4.2* )
8509d50c
JB
751 machine=isi-ov opsys=bsd4-2
752 ;;
1c0feb67 753 m68*-isi-bsd4.3* )
8509d50c
JB
754 machine=isi-ov opsys=bsd4-3
755 ;;
756
757 ## Intel 386 machines where we do care about the manufacturer
758 i[34]86-intsys-sysv* )
759 machine=is386 opsys=usg5-2-2
760 ;;
6992e6b7
RS
761
762 ## Prime EXL
763 i386-prime-sysv* )
764 machine=i386 opsys=usg5-3
765 ;;
766
767 ## Sequent Symmetry
768 i386-sequent-bsd* )
769 machine=symmetry opsys=bsd4-3
770 ;;
771
14442cbf
RS
772 ## Unspecified sysv on an ncr machine defaults to svr4.
773 i[34]86-ncr-sysv* )
774 machine=intel386 opsys=usg5-4
775 ;;
776
df4da582 777 ## Intel 860
9c34bd79 778 i860-*-sysv4* )
df4da582
JB
779 machine=i860 opsys=usg5-4
780 ;;
781
8509d50c
JB
782 ## Silicon Graphics machines
783 ## Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1c0feb67 784 m68*-sgi-iris3.5* )
8509d50c
JB
785 machine=irist opsys=iris3-5
786 ;;
1c0feb67 787 m68*-sgi-iris3.6* | m68*-sgi-iris*)
8509d50c
JB
788 machine=irist opsys=iris3-6
789 ;;
790 ## Iris 4D
791 mips-sgi-irix3.* )
792 machine=iris4d opsys=irix3-3
793 ;;
1c0feb67
RS
794 mips-sgi-irix5.* )
795 machine=iris4d opsys=irix5-0
796 ;;
8509d50c
JB
797 mips-sgi-irix4.* | mips-sgi-irix* )
798 machine=iris4d opsys=irix4-0
20d9a863
JB
799 ;;
800
8509d50c 801 ## Masscomp machines
1c0feb67 802 m68*-masscomp-rtu* )
8509d50c
JB
803 machine=masscomp opsys=rtu
804 ;;
805
806 ## Megatest machines
807 m68*-megatest-bsd* )
808 machine=mega68 opsys=bsd4-2
809 ;;
810
811 ## Workstations sold by MIPS
812 ## This is not necessarily all workstations using the MIPS processor -
813 ## Irises are produced by SGI, and DECstations by DEC.
814
815 ## etc/MACHINES lists mips.h and mips4.h as possible machine files,
816 ## and usg5-2-2 and bsd4-3 as possible OS files. The only guidance
817 ## it gives for choosing between the alternatives seems to be "Use
818 ## -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with
819 ## the BSD world." I'll assume that these are instructions for
820 ## handling two odd situations, and that every other situation
821 ## should use mips.h and usg5-2-2, they being listed first.
60e1b37f
JB
822 mips-mips-usg* )
823 machine=mips4
824 ## Fall through to the general code at the bottom to decide on the OS.
825 ;;
8509d50c 826 mips-mips-riscos4* )
cc40a99e 827 machine=mips4 opsys=bsd4-3
9c34bd79 828 NON_GNU_CC="cc -systype bsd43"
781ce8e8 829 NON_GNU_CPP="cc -systype bsd43 -E"
8509d50c
JB
830 ;;
831 mips-mips-bsd* )
832 machine=mips opsys=bsd4-3
833 ;;
834 mips-mips-* )
835 machine=mips opsys=usg5-2-2
836 ;;
837
c5f67786 838 ## NeXT
624e2ec3 839 m68*-next-* )
c5f67786
JB
840 machine=next opsys=mach2
841 ;;
842
8509d50c
JB
843 ## The complete machine from National Semiconductor
844 ns32k-ns-genix* )
845 machine=ns32000 opsys=usg5-2
846 ;;
847
848 ## NCR machines
3647c171 849 m68*-ncr-sysv2* | m68*-ncr-sysvr2* )
8509d50c
JB
850 machine=tower32 opsys=usg5-2-2
851 ;;
3647c171 852 m68*-ncr-sysv3* | m68*-ncr-sysvr3* )
8509d50c
JB
853 machine=tower32v3 opsys=usg5-3
854 ;;
855
856 ## Nixdorf Targon 31
857 m68*-nixdorf-sysv* )
858 machine=targon31 opsys=usg5-2-2
859 ;;
860
861 ## Nu (TI or LMI)
862 m68*-nu-sysv* )
863 machine=nu opsys=usg5-2
864 ;;
865
866 ## Plexus
867 m68*-plexus-sysv* )
868 machine=plexus opsys=usg5-2
869 ;;
870
8509d50c
JB
871 ## Pyramid machines
872 ## I don't really have any idea what sort of processor the Pyramid has,
873 ## so I'm assuming it is its own architecture.
874 pyramid-pyramid-bsd* )
875 machine=pyramid opsys=bsd4-2
876 ;;
877
878 ## Sequent Balance
1c0feb67 879 ns32k-sequent-bsd4.2* )
8509d50c
JB
880 machine=sequent opsys=bsd4-2
881 ;;
1c0feb67 882 ns32k-sequent-bsd4.3* )
8509d50c 883 machine=sequent opsys=bsd4-3
8509d50c
JB
884 ;;
885
886 ## SONY machines
1c0feb67 887 m68*-sony-bsd4.2* )
8509d50c
JB
888 machine=news opsys=bsd4-2
889 ;;
1c0feb67
RS
890 m68*-sony-bsd4.3* )
891 machine=news opsys=bsd4-3
892 ;;
893 m68*-sony-newsos3*)
8509d50c
JB
894 machine=news opsys=bsd4-3
895 ;;
896 mips-sony-bsd* )
897 machine=news-risc opsys=bsd4-3
898 ;;
eaa2dcbd
RS
899 mips-sony-newsos* )
900 machine=mips opsys=newsos5
901 ;;
8509d50c
JB
902
903 ## Stride
904 m68*-stride-sysv* )
905 machine=stride opsys=usg5-2
906 ;;
907
908 ## Suns
ddb73021 909 *-sun-sunos* | *-sun-bsd* | *-sun-solaris* )
279271ba 910 case "${canonical}" in
8509d50c
JB
911 m68*-sunos1* ) machine=sun1 ;;
912 m68*-sunos2* ) machine=sun2 ;;
913 m68* ) machine=sun3 ;;
914 i[34]86* ) machine=sun386 ;;
915 sparc* ) machine=sparc ;;
916 * ) unported=true ;;
917 esac
279271ba 918 case "${canonical}" in
34207774
RS
919 ## The Sun386 didn't get past 4.0.
920 i386-*-sunos4 ) opsys=sunos4-0 ;;
8509d50c 921 *-sunos4.0* ) opsys=sunos4-0 ;;
7498a871 922 *-sunos4.1.3* ) opsys=sunos4-1-3 ;;
8509d50c 923 *-sunos4* | *-sunos ) opsys=sunos4-1 ;;
9c34bd79
RS
924 *-sunos5.3* | *-solaris2.3* )
925 opsys=sol2-3
926 NON_GNU_CPP=/usr/ccs/lib/cpp
927 ;;
928 *-sunos5* | *-solaris* )
929 opsys=sol2
930 NON_GNU_CPP=/usr/ccs/lib/cpp
931 ;;
8509d50c 932 * ) opsys=bsd4-2 ;;
20d9a863 933 esac
8509d50c
JB
934 ;;
935
936 ## Tadpole 68k
937 m68*-tadpole-sysv* )
938 machine=tad68k opsys=usg5-3
939 ;;
940
941 ## Tahoe machines
1c0feb67 942 tahoe-tahoe-bsd4.2* )
8509d50c
JB
943 machine=tahoe opsys=bsd4-2
944 ;;
1c0feb67 945 tahoe-tahoe-bsd4.3* )
8509d50c
JB
946 machine=tahoe opsys=bsd4-3
947 ;;
948
949 ## Tandem Integrity S2
950 mips-tandem-sysv* )
951 machine=tandem-s2 opsys=usg5-3
952 ;;
953
26f186c2 954 ## Tektronix XD88
0d33a690
RS
955 m88k-tektronix-sysv3* )
956 machine=tekxd88 opsys=usg5-3
26f186c2
JB
957 ;;
958
8509d50c
JB
959 ## Tektronix 16000 box (6130?)
960 ns16k-tektronix-bsd* )
961 machine=ns16000 opsys=bsd4-2
962 ;;
963 ## Tektronix 4300
964 ## src/m/tek4300.h hints that this is a m68k machine.
965 m68*-tektronix-bsd* )
1c0feb67 966 machine=tek4300 opsys=bsd4-3
8509d50c
JB
967 ;;
968
969 ## Titan P2 or P3
970 ## We seem to have lost the machine-description file titan.h!
971 titan-titan-sysv* )
972 machine=titan opsys=usg5-3
973 ;;
974
975 ## Ustation E30 (SS5E)
976 m68*-unisys-uniplus* )
977 machine=ustation opsystem=unipl5-2
978 ;;
979
980 ## Vaxen.
981 vax-dec-* )
982 machine=vax
279271ba 983 case "${canonical}" in
1c0feb67
RS
984 *-bsd4.1* ) opsys=bsd4-1 ;;
985 *-bsd4.2* | *-ultrix[0-3].* | *-ultrix4.0* ) opsys=bsd4-2 ;;
986 *-bsd4.3* | *-ultrix* ) opsys=bsd4-3 ;;
987 *-bsd386* ) opsys=bsd386 ;;
3647c171
JB
988 *-sysv[01]* | *-sysvr[01]* ) opsys=usg5-0 ;;
989 *-sysv2* | *-sysvr2* ) opsys=usg5-2 ;;
990 *-vms* ) opsys=vms ;;
991 * ) unported=true
20d9a863
JB
992 esac
993 ;;
994
8509d50c
JB
995 ## Whitechapel MG1
996 ns16k-whitechapel-* )
997 machine=mg1
998 ## We don't know what sort of OS runs on these; we'll let the
999 ## operating system guessing code below try.
1000 ;;
1001
1002 ## Wicat
1003 m68*-wicat-sysv* )
1004 machine=wicat opsys=usg5-2
1005 ;;
1006
b3fb7fc3
JB
1007 ## Intel 386 machines where we don't care about the manufacturer
1008 i[34]86-*-* )
1009 machine=intel386
279271ba 1010 case "${canonical}" in
b3fb7fc3 1011 *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;;
1c0feb67 1012 *-isc2.2* ) opsys=isc2-2 ;;
b3fb7fc3
JB
1013 *-isc* ) opsys=isc3-0 ;;
1014 *-esix5* ) opsys=esix5r4 ;;
1015 *-esix* ) opsys=esix ;;
1016 *-xenix* ) opsys=xenix ;;
1017 *-linux* ) opsys=linux ;;
1018 *-sco3.2v4* ) opsys=sco4 ;;
1019 *-bsd386* ) opsys=bsd386 ;;
1c0feb67 1020 *-386bsd* ) opsys=386bsd ;;
a117e51e 1021 *-freebsd* ) opsys=freebsd ;;
dbf6ad3d 1022 *-netbsd* ) opsys=netbsd ;;
91d39bf0 1023 *-nextstep* ) opsys=mach2 ;;
b3fb7fc3
JB
1024 ## Otherwise, we'll fall through to the generic opsys code at the bottom.
1025 esac
1026 ;;
1027
20d9a863 1028 * )
8509d50c 1029 unported=true
20d9a863 1030 ;;
20d9a863 1031esac
ca1d1d23 1032
8509d50c
JB
1033### If the code above didn't choose an operating system, just choose
1034### an operating system based on the configuration name. You really
1035### only want to use this when you have no idea what the right
1036### operating system is; if you know what operating systems a machine
1037### runs, it's cleaner to make it explicit in the case statement
1038### above.
87a6b538 1039if [ x"${opsys}" = x ]; then
279271ba 1040 case "${canonical}" in
8509d50c
JB
1041 *-bsd4.[01] ) opsys=bsd4-1 ;;
1042 *-bsd4.2 ) opsys=bsd4-2 ;;
1043 *-bsd4.3 ) opsys=bsd4-3 ;;
3647c171
JB
1044 *-sysv0 | *-sysvr0 ) opsys=usg5-0 ;;
1045 *-sysv2 | *-sysvr2 ) opsys=usg5-2 ;;
1046 *-sysv2.2 | *-sysvr2.2 ) opsys=usg5-2-2 ;;
1047 *-sysv3 | *-sysvr3 ) opsys=usg5-3 ;;
1048 *-sysv4 | *-sysvr4 ) opsys=usg5-4 ;;
effdbe0d
RS
1049 *-sysv4.1 | *-sysvr4.1 )
1050 NON_GNU_CPP=/usr/lib/cpp
1051 opsys=usg5-4 ;;
7846ef2c 1052 *-sysv4.2 | *-sysvr4.2 ) opsys=usg5-4-2 ;;
8509d50c
JB
1053 * )
1054 unported=true
1055 ;;
1056 esac
1057fi
1058
1059if $unported ; then
279271ba 1060 (echo "${progname}: Emacs hasn't been ported to \`${canonical}' systems."
8509d50c
JB
1061 echo "${progname}: Check \`etc/MACHINES' for recognized configuration names."
1062 ) >&2
1063 exit 1
1064fi
1065
1066machfile="m/${machine}.h"
1067opsysfile="s/${opsys}.h"
1068
c5f67786
JB
1069]
1070AC_PREPARE(lisp)
e4474817 1071AC_CONFIG_HEADER(src/config.h)
c5f67786 1072[
7d99494c
JB
1073
1074#### Choose a compiler.
63041661
RS
1075if [ "x$CC" = x ]
1076then cc_specified=1
1077fi
1078
7d99494c 1079case ${with_gcc} in
8ba83d88 1080 "yes" ) CC="gcc" GCC=1 ;;
63041661
RS
1081 "no" )
1082 if [ "x$CC" = x ]
1083 then true;
1084 else CC=cc;
1085 fi
1086 ;;
7d99494c 1087 * )
e4474817 1088 ] AC_PROG_CC [
7d99494c
JB
1089esac
1090
9c34bd79
RS
1091#### Some systems specify a CPP to use unless we are using GCC.
1092#### Now that we know whether we are using GCC, we can decide whether
1093#### to use that one.
63041661 1094if [ "x$NON_GNU_CPP" = x ] || [ x$GCC = x1 ] || [ "x$CPP" = x ]
9c34bd79
RS
1095then true
1096else
990a7421 1097 CPP="$NON_GNU_CPP"
9c34bd79
RS
1098fi
1099
1100#### Some systems specify a CC to use unless we are using GCC.
1101#### Now that we know whether we are using GCC, we can decide whether
1102#### to use that one.
63041661 1103if [ "x$NON_GNU_CC" = x ] || [ x$GCC = x1 ] || [ x$cc_specified = x1 ]
9c34bd79
RS
1104then true
1105else
63041661 1106 CC="$NON_GNU_CC"
9c34bd79
RS
1107fi
1108
00c564b5
JB
1109#### Some other nice autoconf tests. If you add a test here which
1110#### should make an entry in src/config.h, don't forget to add an
1111#### #undef clause to src/config.h.in for autoconf to modify.
7d99494c 1112]
00c564b5 1113dnl checks for programs
e4474817 1114AC_LN_S
c5f67786 1115AC_PROG_CPP
86ddcc58 1116AC_PROG_INSTALL
4b5a51c1 1117AC_PROG_YACC
00c564b5
JB
1118
1119dnl checks for UNIX variants that set `DEFS'
1120
1121dnl checks for header files
1052acbf 1122AC_HAVE_HEADERS(sys/timeb.h sys/time.h unistd.h)
d855a603 1123AC_STDC_HEADERS
9397d456 1124AC_TIME_WITH_SYS_TIME
764b979b
RS
1125dnl In Autoconf 1.8 use AC_SYS_SIGLIST_DECLARED instead of this.
1126AC_COMPILE_CHECK(sys_siglist declaration in signal.h or unistd.h,
1127 [#include <signal.h>
1128/* NetBSD declares sys_siglist in <unistd.h>. */
1129#ifdef HAVE_UNISTD_H
1130#include <unistd.h>
1131#endif], [char *msg = *(sys_siglist + 1);],
1132 AC_DEFINE(SYS_SIGLIST_DECLARED))
00c564b5
JB
1133
1134dnl checks for typedefs
7d99494c 1135AC_RETSIGTYPE
00c564b5 1136
00c564b5 1137dnl checks for structure members
a6eb6797 1138AC_STRUCT_TM
d52c5f58 1139AC_TIMEZONE
00c564b5
JB
1140
1141dnl checks for compiler characteristics
c5f67786 1142AC_CONST
00c564b5
JB
1143
1144dnl checks for operating system services
fe5de478 1145AC_LONG_FILE_NAMES
00c564b5
JB
1146
1147dnl other checks for UNIX variants
7d99494c
JB
1148[
1149
0c22fbca 1150#### Choose a window system.
46947372 1151echo "Checking window system."
c5f67786 1152
8509d50c 1153window_system=''
20d9a863 1154case "${with_x}" in
2c44309a
RS
1155 yes )
1156 window_system=${window_system}x11
20d9a863
JB
1157 ;;
1158 no )
1159 window_system=${window_system}none
2c44309a 1160esac
20d9a863 1161case "${with_x11}" in
2c44309a
RS
1162 yes )
1163 window_system=${window_system}x11
20d9a863 1164 ;;
2c44309a
RS
1165esac
1166case "${with_x10}" in
1167 yes )
1168 window_system=${window_system}x10
20d9a863 1169 ;;
2c44309a
RS
1170esac
1171
ca1d1d23
JB
1172case "${window_system}" in
1173 "none" | "x11" | "x10" ) ;;
ca1d1d23 1174 "" )
825e4ec2
JB
1175 # --x-includes or --x-libraries implies --with-x11.
1176 if [ -n "${x_includes}" ] || [ -n "${x_libraries}" ]; then
1177 window_system=x11
1178 else
1179 echo " No window system specified. Looking for X11."
1180 # If the user didn't specify a window system and we found X11, use it.
1181 if [ -r /usr/lib/libX11.a \
5d9aefc7 1182 -o -d /usr/include/X11 \
7d99494c
JB
1183 -o -d /usr/X386/include \
1184 -o -d ${x_includes}/X11 ]; then
825e4ec2
JB
1185 window_system=x11
1186 fi
46947372 1187 fi
ca1d1d23
JB
1188 ;;
1189 * )
825e4ec2 1190 echo "Don't specify a window system more than once." >&2
ca1d1d23
JB
1191 exit 1
1192 ;;
1193esac
1194
825e4ec2
JB
1195[ -z "${window_system}" ] && window_system=none
1196
1197[ -n "${x_libraries}" ] && LD_SWITCH_X_SITE="-L${x_libraries}"
5b46c383 1198[ -n "${x_libraries}" ] && LD_SWITCH_X_SITE_AUX="-R${x_libraries}"
825e4ec2
JB
1199[ -n "${x_includes}" ] && C_SWITCH_X_SITE="-I${x_includes}"
1200
7a5e0891
BF
1201# Avoid forcing the search of /usr/include before fixed include files.
1202if [ "$C_SWITCH_X_SITE" = "-I/usr/include" ]; then
1203 C_SWITCH_X_SITE=" "
1204fi
1205
ca1d1d23
JB
1206case "${window_system}" in
1207 x11 )
0c22fbca
JB
1208 HAVE_X_WINDOWS=yes
1209 HAVE_X11=yes
8509d50c 1210 echo " Using X11."
1c4ce111 1211 case "${with_x_toolkit}" in
c6a9d251 1212 athena | lucid )
1c4ce111 1213 USE_X_TOOLKIT=LUCID
c6a9d251 1214 echo " Using Xt toolkit."
1c4ce111
RS
1215 ;;
1216 motif )
1217 USE_X_TOOLKIT=MOTIF
1218 echo " Using Motif toolkit."
1219 ;;
1220 open-look )
1221 USE_X_TOOLKIT=OPEN_LOOK
1222 echo " Using Open-Look toolkit."
1223 ;;
1224 * )
1225 USE_X_TOOLKIT=no
1226 echo " Using Xlib directly."
1227 ;;
1228 esac
ca1d1d23
JB
1229 ;;
1230 x10 )
0c22fbca
JB
1231 HAVE_X_WINDOWS=yes
1232 HAVE_X11=no
1c4ce111 1233 USE_X_TOOLKIT=no
8509d50c 1234 echo " Using X10."
ca1d1d23
JB
1235 ;;
1236 none )
0c22fbca
JB
1237 HAVE_X_WINDOWS=no
1238 HAVE_X11=no
8509d50c 1239 echo " Using no window system."
ca1d1d23
JB
1240 ;;
1241esac
1c4ce111 1242X_TOOLKIT_TYPE=$USE_X_TOOLKIT
ca1d1d23 1243
0c22fbca
JB
1244### If we're using X11, we should use the X menu package.
1245HAVE_X_MENU=no
1246case ${HAVE_X11} in
20d9a863 1247 yes )
0c22fbca 1248 HAVE_X_MENU=yes
ca1d1d23
JB
1249 ;;
1250esac
1251
0c22fbca 1252#### Extract some information from the operating system and machine files.
4746118a 1253
46947372
JB
1254echo "Examining the machine- and system-dependent files to find out"
1255echo " - which libraries the lib-src programs will want, and"
1256echo " - whether the GNU malloc routines are usable."
c5f67786
JB
1257
1258### It's not important that this name contain the PID; you can't run
1259### two configures in the same directory and have anything work
1260### anyway.
1261tempcname="conftest.c"
1262
e94740ce
JB
1263echo '
1264#include "'${srcdir}'/src/'${opsysfile}'"
1265#include "'${srcdir}'/src/'${machfile}'"
ca1d1d23
JB
1266#ifndef LIBS_MACHINE
1267#define LIBS_MACHINE
1268#endif
1269#ifndef LIBS_SYSTEM
1270#define LIBS_SYSTEM
1271#endif
80afd15e
JB
1272#ifndef C_SWITCH_SYSTEM
1273#define C_SWITCH_SYSTEM
f071c05a 1274#endif
1e39d86d
RS
1275#ifndef C_SWITCH_MACHINE
1276#define C_SWITCH_MACHINE
1277#endif
0028bd66
RS
1278configure___ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
1279configure___ c_switch_system=C_SWITCH_SYSTEM
1e39d86d 1280configure___ c_switch_machine=C_SWITCH_MACHINE
ac384e4f 1281
825e4ec2 1282#ifndef LIB_X11_LIB
1c0feb67 1283#define LIB_X11_LIB -lX11
825e4ec2
JB
1284#endif
1285
1286#ifndef LIBX11_MACHINE
1287#define LIBX11_MACHINE
1288#endif
1289
1290#ifndef LIBX11_SYSTEM
1291#define LIBX11_SYSTEM
1292#endif
0028bd66 1293configure___ LIBX=LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM
825e4ec2 1294
ac384e4f 1295#ifdef UNEXEC
0028bd66 1296configure___ unexec=UNEXEC
ac384e4f 1297#else
0028bd66 1298configure___ unexec=unexec.o
ac384e4f
JB
1299#endif
1300
46947372 1301#ifdef SYSTEM_MALLOC
0028bd66 1302configure___ system_malloc=yes
46947372 1303#else
0028bd66 1304configure___ system_malloc=no
46947372 1305#endif
4ed216b3
JB
1306
1307#ifndef C_DEBUG_SWITCH
1308#define C_DEBUG_SWITCH -g
1309#endif
1310
1311#ifndef C_OPTIMIZE_SWITCH
1312#define C_OPTIMIZE_SWITCH -O
1313#endif
1314
1315#ifdef __GNUC__
0028bd66 1316configure___ CFLAGS=C_DEBUG_SWITCH C_OPTIMIZE_SWITCH
4ed216b3 1317#else
0028bd66 1318configure___ CFLAGS=C_DEBUG_SWITCH
4ed216b3 1319#endif
46947372 1320' > ${tempcname}
a6eb6797
JB
1321# The value of CPP is a quoted variable reference, so we need to do this
1322# to get its actual value...
b73fe839
JB
1323CPP=`eval "echo $CPP"`
1324eval `${CPP} -Isrc ${tempcname} \
0028bd66
RS
1325 | grep 'configure___' \
1326 | sed -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/'`
46947372
JB
1327rm ${tempcname}
1328
ac384e4f
JB
1329### Compute the unexec source name from the object name.
1330UNEXEC_SRC="`echo ${unexec} | sed 's/\.o/.c/'`"
7d99494c 1331
46947372 1332# Do the opsystem or machine files prohibit the use of the GNU malloc?
e94740ce
JB
1333# Assume not, until told otherwise.
1334GNU_MALLOC=yes
46947372 1335if [ "${system_malloc}" = "yes" ]; then
0c22fbca
JB
1336 GNU_MALLOC=no
1337 GNU_MALLOC_reason="
8509d50c 1338 (The GNU allocators don't work with this system configuration.)"
46947372
JB
1339fi
1340
87a6b538 1341if [ x"${REL_ALLOC}" = x ]; then
0c22fbca 1342 REL_ALLOC=${GNU_MALLOC}
46947372 1343fi
ca1d1d23 1344
0c22fbca
JB
1345LISP_FLOAT_TYPE=yes
1346
e94740ce 1347
825e4ec2
JB
1348#### Add the libraries to LIBS and check for some functions.
1349
30945baf 1350]
1e39d86d 1351DEFS="$c_switch_system $c_switch_machine $DEFS"
825e4ec2
JB
1352LIBS="$libsrc_libs"
1353
1354dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1355dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1356AC_HAVE_LIBRARY(-ldnet)
30945baf 1357
dbf6ad3d
RM
1358AC_HAVE_LIBRARY(-lXbsd, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1359
1360echo checking for XFree86
1361if test -d /usr/X386/include; then
1362 HAVE_XFREE386=yes
1363 test -z "${C_SWITCH_X_SITE}" && C_SWITCH_X_SITE="-I/usr/X386/include"
1364fi
30945baf 1365
825e4ec2
JB
1366if test "${HAVE_X11}" = "yes"; then
1367 DEFS="$C_SWITCH_X_SITE $DEFS"
1368 LIBS="$LD_SWITCH_X_SITE $LIBX $LIBS"
5725490b
RM
1369 AC_HAVE_FUNCS(XrmSetDatabase XScreenResourceString \
1370XScreenNumberOfScreen XSetWMProtocols)
825e4ec2
JB
1371fi
1372
1373AC_ALLOCA
3f469c2e
RM
1374
1375# logb and frexp are found in -lm on most systems.
1376AC_HAVE_LIBRARY(-lm)
5dd53b99 1377AC_HAVE_FUNCS(gettimeofday gethostname dup2 rename closedir mkdir rmdir \
5725490b
RM
1378random bcopy bcmp logb frexp fmod drem ftime res_init setsid strerror \
1379fpathconf)
825e4ec2
JB
1380
1381ok_so_far=true
1382AC_FUNC_CHECK(socket, , ok_so_far=)
1383if test -n "$ok_so_far"; then
1384 AC_HEADER_CHECK(netinet/in.h, , ok_so_far=)
1385fi
1386if test -n "$ok_so_far"; then
1387 AC_HEADER_CHECK(arpa/inet.h, , ok_so_far=)
1388fi
1389if test -n "$ok_so_far"; then
1390 AC_DEFINE(HAVE_INET_SOCKETS)
1391fi
1392[
e94740ce
JB
1393#### Find out which version of Emacs this is.
1394version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \
e773d20a 1395 | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\)[."].*$/\1/'`
87a6b538 1396if [ x"${version}" = x ]; then
e94740ce
JB
1397 echo "${progname}: can't find current emacs version in
1398 \`${srcdir}/lisp/version.el'." >&2
1399 exit 1
1400fi
1401
8686888e
JB
1402if [ -f /usr/lpp/X11/bin/smt.exp ]; then
1403 ]
1404 AC_DEFINE(HAVE_AIX_SMT_EXP)
1405 [
1406fi
1407
e94740ce 1408
e4474817 1409#### Specify what sort of things we'll be editing into Makefile and config.h.
279271ba 1410### Use configuration here uncanonicalized to avoid exceeding size limits.
7d99494c
JB
1411]
1412AC_SUBST(configuration)
1413AC_SUBST(version)
1414AC_SUBST(srcdir)
cedb6c1b
BF
1415AC_SUBST(prefix)
1416AC_SUBST(exec_prefix)
1417AC_SUBST(bindir)
1418AC_SUBST(datadir)
1419AC_SUBST(statedir)
1420AC_SUBST(libdir)
1421AC_SUBST(mandir)
1422AC_SUBST(infodir)
1423AC_SUBST(lispdir)
1424AC_SUBST(locallisppath)
1425AC_SUBST(lisppath)
1426AC_SUBST(etcdir)
1427AC_SUBST(lockdir)
1428AC_SUBST(archlibdir)
109ebdd4 1429AC_SUBST(docdir)
7d99494c 1430AC_SUBST(c_switch_system)
1e39d86d 1431AC_SUBST(c_switch_machine)
7d99494c 1432AC_SUBST(libsrc_libs)
7d99494c 1433AC_SUBST(LD_SWITCH_X_SITE)
5b46c383 1434AC_SUBST(LD_SWITCH_X_SITE_AUX)
7d99494c 1435AC_SUBST(C_SWITCH_X_SITE)
e4474817 1436AC_SUBST(CFLAGS)
1c4ce111 1437AC_SUBST(X_TOOLKIT_TYPE)
e4474817 1438
9361e005
JB
1439AC_DEFINE_UNQUOTED(config_machfile, "\"${machfile}\"")
1440AC_DEFINE_UNQUOTED(config_opsysfile, "\"${opsysfile}\"")
1441AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE})
382d3536 1442AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, ${LD_SWITCH_X_SITE_AUX})
9361e005 1443AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE, ${C_SWITCH_X_SITE})
ac384e4f 1444AC_DEFINE_UNQUOTED(UNEXEC_SRC, ${UNEXEC_SRC})
9361e005 1445
7d99494c
JB
1446[
1447if [ "${HAVE_X_WINDOWS}" = "yes" ] ; then
1448 ] AC_DEFINE(HAVE_X_WINDOWS) [
1449fi
d317463c 1450if [ "${USE_X_TOOLKIT}" != "no" ] ; then
1c4ce111
RS
1451 ] AC_DEFINE(USE_X_TOOLKIT) [
1452fi
7d99494c
JB
1453if [ "${HAVE_X11}" = "yes" ] ; then
1454 ] AC_DEFINE(HAVE_X11) [
1455fi
1456if [ "${HAVE_XFREE386}" = "yes" ] ; then
1457 ] AC_DEFINE(HAVE_XFREE386) [
1458fi
1459if [ "${HAVE_X_MENU}" = "yes" ] ; then
1460 ] AC_DEFINE(HAVE_X_MENU) [
1461fi
1462if [ "${GNU_MALLOC}" = "yes" ] ; then
1463 ] AC_DEFINE(GNU_MALLOC) [
1464fi
1465if [ "${REL_ALLOC}" = "yes" ] ; then
1466 ] AC_DEFINE(REL_ALLOC) [
1467fi
1468if [ "${LISP_FLOAT_TYPE}" = "yes" ] ; then
1469 ] AC_DEFINE(LISP_FLOAT_TYPE) [
1470fi
ca1d1d23 1471
cedb6c1b
BF
1472# ====================== Developer's configuration =======================
1473
1474# The following assignments make sense if you're running Emacs on a single
1475# machine, one version at a time, and you want changes to the lisp and etc
1476# directories in the source tree to show up immediately in your working
1477# environment. It saves a great deal of disk space by not duplicating the
1478# lisp and etc directories.
1479
1480if [ "$run_in_place" = "1" ]; then
1481 lispdir='${srcdir}/lisp'
7f291b64 1482 locallisppath='${srcdir}/site-lisp'
cedb6c1b
BF
1483 etcdir='${srcdir}/etc'
1484 lockdir='${srcdir}/lock'
82d1475f 1485 archlibdir=`(cd lib-src && pwd)`
080d8166 1486 docdir=`(cd etc && pwd)`
cedb6c1b
BF
1487 infodir='${srcdir}/info'
1488elif [ "$single_tree" = "1" ]; then
1489 if [ "$exec_prefix_specified" = "" ]; then
1490 exec_prefix='${prefix}'
1491 fi
1492 if [ "$bindir_specified" = "" ]; then
1493 bindir='${exec_prefix}/bin/${configuration}'
1494 fi
1495 if [ "$datadir_specified" = "" ]; then
1496 datadir='${prefix}/common'
1497 fi
1498 if [ "$statedir_specified" = "" ]; then
1499 statedir='${prefix}/common'
1500 fi
1501 if [ "$libdir_specified" = "" ]; then
1502 libdir='${bindir}'
1503 fi
1504 if [ "$lispdir_specified" = "" ]; then
1505 lispdir='${prefix}/common/lisp'
1506 fi
1507 if [ "$locallisppath_specified" = "" ]; then
1508 locallisppath='${prefix}/common/site-lisp'
1509 fi
1510 if [ "$lockdir_specified" = "" ]; then
1511 lockdir='${prefix}/common/lock'
1512 fi
1513 if [ "$archlibdir_specified" = "" ]; then
1514 archlibdir='${libdir}/etc'
1515 fi
1516 if [ "$etcdir_specified" = "" ]; then
1517 etcdir='${prefix}/common/data'
1518 fi
109ebdd4
KH
1519 if [ "$docdir_specified" = "" ]; then
1520 docdir='${prefix}/common/data'
1521 fi
cedb6c1b 1522fi
f6766fff 1523
7d99494c
JB
1524#### Report on what we decided to do.
1525echo "
f6766fff 1526
279271ba 1527Configured for \`${canonical}'.
8509d50c 1528
c9ed10f6 1529 Where should the build process find the source code? ${srcdir}
8509d50c
JB
1530 What operating system and machine description files should Emacs use?
1531 \`${opsysfile}' and \`${machfile}'
e4474817 1532 What compiler should emacs be built with? ${CC} ${CFLAGS}
0c22fbca
JB
1533 Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
1534 Should Emacs use the relocating allocator for buffers? ${REL_ALLOC}
7d99494c 1535 What window system should Emacs use? ${window_system}${x_includes+
9c7a7556 1536 Where do we find X Windows header files? }${x_includes}${x_libraries+
7d99494c 1537 Where do we find X Windows libraries? }${x_libraries}
8c0e7b73 1538
e94740ce 1539"
825e4ec2
JB
1540
1541# Remove any trailing slashes in these variables.
1542test -n "${prefix}" &&
1543 prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
1544test -n "${exec_prefix}" &&
1545 exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
7d99494c 1546]
1c4ce111 1547AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile lwlib/Makefile src/Makefile.in, [
cedb6c1b 1548# Build src/Makefile from ${srcdir}/src/Makefile.in. This must be done
47241a65
RM
1549# after src/config.h is built, since we rely on that file.
1550
1551changequote(,)dnl The horror, the horror.
764b979b
RS
1552# Now get this: Some word that is part of the ${srcdir} directory name
1553# or the ${configuration} value might, just might, happen to be an
1554# identifier like `sun4' or `i386' or something, and be predefined by
1555# the C preprocessor to some helpful value like 1, or maybe the empty
1556# string. Needless to say consequent macro substitutions are less
1557# than conducive to the makefile finding the correct directory.
1558undefs="`echo $top_srcdir $configuration |
47241a65
RM
1559sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/ */ -U/g' \
1560 -e 's/ -U$//' -e 's/^[^ ]/-U/' \
dace61c1 1561 -e 's/-U[0-9][^ ]*//g' \
47241a65
RM
1562`"
1563changequote([,])dnl
1564
1565echo creating src/Makefile
1566( cd src
1567 rm -f junk.c
1568 sed -e 's@^# \(Generated.*\)$@/* \1 */@' \
1569 -e 's@/\*\*/#\(.*\)$@/* \1 */@' \
1570 < Makefile.in > junk.c
764b979b
RS
1571 $CPP $undefs -I. -I$top_srcdir/src $CPPFLAGS junk.c |
1572 sed -e 's/^ / /' -e '/^#/d' -e '/^[ ]*$/d' > Makefile.new
47241a65
RM
1573 rm -f junk.c
1574 chmod 444 Makefile.new;
1575 mv -f Makefile.new Makefile;
1576)])