1 ?RCS: $Id: Oldconfig.U,v 3.0.1.10 1997/02/28 15:06:39 ram Exp $
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
11 ?RCS: $Log: Oldconfig.U,v $
12 ?RCS: Revision 3.0.1.10 1997/02/28 15:06:39 ram
13 ?RCS: patch61: added support for src.U
14 ?RCS: patch61: new OSNAME define
15 ?RCS: patch61: can now sense new OSes
17 ?RCS: Revision 3.0.1.9 1995/07/25 13:40:51 ram
18 ?RCS: patch56: now knows about OS/2 platforms
20 ?RCS: Revision 3.0.1.8 1995/05/12 12:04:18 ram
21 ?RCS: patch54: config.sh reload logic now knows about new -K switch
22 ?RCS: patch54: cleaned up and extended osvers for DEC OSF/1 (ADO)
23 ?RCS: patch54: added MachTen detection (ADO)
25 ?RCS: Revision 3.0.1.7 1995/02/15 14:13:41 ram
26 ?RCS: patch51: adapted osvers computation for AIX (ADO)
28 ?RCS: Revision 3.0.1.6 1995/01/30 14:27:15 ram
29 ?RCS: patch49: unit Options.U now exports file optdef.sh, not a variable
30 ?RCS: patch49: update code for myuname changed (WED)
32 ?RCS: Revision 3.0.1.5 1995/01/11 15:15:36 ram
33 ?RCS: patch45: added quotes around the INITPROG variable (ADO)
34 ?RCS: patch45: allows variable overriding after config file loading
36 ?RCS: Revision 3.0.1.4 1994/10/29 15:57:05 ram
37 ?RCS: patch36: added ?F: line for metalint file checking
38 ?RCS: patch36: merged with the version used for perl5's Configure (ADO)
40 ?RCS: Revision 3.0.1.3 1994/05/06 14:24:17 ram
41 ?RCS: patch23: added support for osf1 hints
42 ?RCS: patch23: new support for solaris and i386 systems (ADO)
44 ?RCS: Revision 3.0.1.2 1994/01/24 14:05:02 ram
45 ?RCS: patch16: added post-processing on myuname for Xenix targets
46 ?RCS: patch16: message proposing config.sh defaults made consistent
48 ?RCS: Revision 3.0.1.1 1993/09/13 15:56:32 ram
49 ?RCS: patch10: force use of config.sh when -d option is used (WAD)
50 ?RCS: patch10: complain about non-existent hint files (WAD)
51 ?RCS: patch10: added Options dependency for fastread variable
53 ?RCS: Revision 3.0 1993/08/18 12:05:12 ram
54 ?RCS: Baseline for dist 3.0 netwide release.
57 ?X: This unit tries to remember what we did last time we ran Configure, mostly
58 ?X: for the sake of setting defaults.
60 ?MAKE:Oldconfig hint myuname osname osvers: Instruct Myread uname Checkcc \
61 sh awk sed test cat rm lns tr n c contains Loc Options Tr src trnl ln
62 ?MAKE: -pick wipe $@ %<
64 ?S: The output of 'uname -a' if available, otherwise the hostname. On Xenix,
65 ?S: pseudo variables assignments in the output are stripped, thank you. The
66 ?S: whole thing is then lower-cased.
69 ?S: Gives the type of hints used for previous answers. May be one of
70 ?S: "default", "recommended" or "previous".
73 ?S: This variable contains the operating system name (e.g. sunos,
74 ?S: solaris, hpux, etc.). It can be useful later on for setting
75 ?S: defaults. Any spaces are replaced with underscores. It is set
76 ?S: to a null string if we can't figure it out.
79 ?S: This variable contains the operating system version (e.g.
80 ?S: 4.1.3, 5.2, etc.). It is primarily used for helping select
81 ?S: an appropriate hints file, but might be useful elsewhere for
82 ?S: setting defaults. It is set to '' if we can't figure it out.
83 ?S: We try to be flexible about how much of the version number
84 ?S: to keep, e.g. if 4.1.1, 4.1.2, and 4.1.3 are essentially the
85 ?S: same for this package, hints files might just be os_4.0 or
86 ?S: os_4.1, etc., not keeping separate files for each little release.
89 ?C: This symbol contains the name of the operating system, as determined
90 ?C: by Configure. You shouldn't rely on it too much; the specific
91 ?C: feature tests from Configure are generally more reliable.
93 ?H:#define OSNAME "$osname" /**/
96 ?T:tmp tmp_n tmp_c tmp_sh file
97 ?T:xxxxfile xxxfile xxfile xfile hintfile newmyuname
98 ?T:tans _ isesix INITPROG DJGPP
101 : Try to determine whether config.sh was made on this system
104 ?X: indentation wrong on purpose--RAM
105 ?X: Leave a white space between first two '(' for ksh. The sub-shell is needed
106 ?X: on some machines to avoid the error message when uname is not found; e.g.
107 ?X: old SUN-OS 3.2 would not execute hostname in (uname -a || hostname). Sigh!
108 ?X: Now not using a subshell but instead $test.
109 myuname=`$uname -a 2>/dev/null`
110 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
111 ?X: Special mention for Xenix, whose 'uname -a' gives us output like this:
113 ?X: nodename=whatever
114 ?X: release=2.3.2 .. etc...
115 ?X: Therefore, we strip all this variable assignment junk and remove all the
116 ?X: new lines to keep the myuname variable sane... --RAM
117 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
118 # because the A-Z/a-z are not consecutive.
119 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
120 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
121 ?X: Save the value we just computed to reset myuname after we get done here.
122 newmyuname="$myuname"
126 if test -f ../config.sh; then
127 if $contains myuname= ../config.sh >/dev/null 2>&1; then
128 eval "`grep myuname= ../config.sh`"
130 if test "X$myuname" = "X$newmyuname"; then
138 @if {test -d ../hints}
139 : Get old answers from old config file if Configure was run on the
140 : same system, otherwise use the hints.
143 ?X: Since we are now at the root of the source tree, we must use $src
144 ?X: to access the sources and not $rsrc. See src.U for details...
145 if test -f config.sh; then
147 rp="I see a config.sh file. Shall I use it to set the defaults?"
150 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
151 *) echo "Fetching default answers from your old config.sh file..." >&4
159 : Older versions did not always set $sh. Catch re-use of such
169 if test ! -f config.sh; then
172 First time through, eh? I have some defaults handy for some systems
173 that need some extra help getting the Configure answers right:
176 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
178 : Half the following guesses are probably wrong... If you have better
179 : tests or hints, please send them to <MAINTLOC>
180 : The metaconfig authors would also appreciate a copy...
181 $test -f /irix && osname=irix
182 $test -f /xenix && osname=sco_xenix
183 $test -f /dynix && osname=dynix
184 $test -f /dnix && osname=dnix
185 $test -f /lynx.os && osname=lynxos
186 $test -f /unicos && osname=unicos && osvers=`$uname -r`
187 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
188 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
189 $test -f /bin/mips && /bin/mips && osname=mips
190 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
191 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
192 $test -d /usr/apollo/bin && osname=apollo
193 $test -f /etc/saf/_sactab && osname=svr4
194 $test -d /usr/include/minix && osname=minix
195 if $test -d /MachTen -o -d /MachTen_Folder; then
196 ?X: MachTen uname -a output looks like
197 ?X: xxx 4 0.0 Macintosh
198 ?X: MachTen /sbin/version output looks like
199 ?X: MachTen 4.0 Mon Aug 28 10:18:00 1995
200 ?X: MachTen 3.x had the 'version' command in /usr/etc/version.
202 if $test -x /sbin/version; then
203 osvers=`/sbin/version | $awk '{print $2}' |
204 $sed -e 's/[A-Za-z]$//'`
205 elif $test -x /usr/etc/version; then
206 osvers=`/usr/etc/version | $awk '{print $2}' |
207 $sed -e 's/[A-Za-z]$//'`
213 $test -f /sys/posix.dll &&
214 $test -f /usr/bin/what &&
215 set X `/usr/bin/what /sys/posix.dll` &&
220 ?X: If we have uname, we already computed a suitable uname -a output, correctly
221 ?X: formatted for Xenix, and it lies in $myuname.
222 if $test -f $uname; then
230 umips) osname=umips ;;
233 [23]100) osname=mips ;;
234 next*) osname=next ;;
235 ?X: Interactive Unix.
237 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
238 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
241 elif $test -f /etc/kconfig; then
243 if test "$lns" = "$ln -s"; then
245 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
247 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
253 ?X: MS-DOS djgpp uname -a output looks like:
254 ?X: ms-dos xxx 6 22 pc
255 ?X: $1 is the "dos flavor" (need not be "ms-dos").
256 ?X: $2 is the node name
257 ?X: $3 and $4 are version/subversion
258 ?X: $5 is always "pc", but that might not be unique to DJGPP.
259 ?X: (e.g. Solaris_x86 has $5 = i86pc, which doesn't actually conflict,
260 ?X: but it's close enought that I can easily imagine other vendors also
261 ?X: using variants of pc* in $5.)
262 ?X: The "DJGPP" environment variable is always set when djgpp is active.
264 if test -n "$DJGPP"; then
273 ?X: aix 4.1 uname -a output looks like
274 ?X: AIX foo 1 4 000123456789
275 ?X: where $4 is the major release number and $3 is the (minor) version.
276 ?X: More detail on the version is available with the oslevel command.
277 ?X: in 3.2.x, it output a string (see case statements below). In 4.1,
278 ?X: it puts out something like 4.1.1.0
279 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
281 'not found') osvers="$4"."$3" ;;
282 '<3240'|'<>3240') osvers=3.2.0 ;;
283 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
284 '=3250'|'>3250') osvers=3.2.5 ;;
288 bsd386) osname=bsd386
291 cygwin*) osname=cygwin
294 *dc.osx) osname=dcosx
300 domainos) osname=apollo
307 ?X: DYNIX/ptx xxx 4.0 V4.1.2 i386
308 dynixptx*) osname=dynixptx
309 osvers=`echo "$4"|sed 's/^v//'`
311 freebsd) osname=freebsd
313 genix) osname=genix ;;
314 ?X: HP-UX uname -a gives something like
315 ?X: HP-UX foobar B.10.20 A 9000/735 2016483812 two-user license
316 ?X: Preserve the full 10.20 string instead of the previous plain '10'.
317 ?X: Thanks to Graham Barr. --AD 6/30/1998
319 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
335 netbsd*) osname=netbsd
340 4*) osname=newsos4 ;;
344 next*) osname=next ;;
345 NonStop-UX) osname=nonstopux ;;
346 POSIX-BC | posix-bc ) osname=posix-bc
349 powerux | power_ux | powermax_os | powermaxos | \
350 powerunix | power_unix) osname=powerux
356 solaris) osname=solaris
358 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
365 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
369 titanos) osname=titanos
378 ultrix) osname=ultrix
381 osf1|mls+) case "$5" in
383 ?X: DEC OSF/1 myuname -a output looks like: osf1 xxxx t3.2 123.4 alpha
384 ?X: where the version number can be something like [xvt]n.n
386 ?X: sizer knows the minor minor version: the letter
387 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
390 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
393 hp*) osname=hp_osf1 ;;
394 mips) osname=mips_osf1 ;;
395 ?X: hp and mips were unsupported Technology Releases -- ADO, 24/10/94
398 unixware) osname=svr5
404 $2) case "$osname" in
408 : svr4.x or possibly later
418 if test -f /stand/boot ; then
419 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
420 if test -n "$INITPROG" -a -f "$INITPROG"; then
421 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
422 if test -n "$isesix"; then
430 *) if test -f /etc/systemid; then
432 set `echo $3 | $sed 's/\./ /g'` $4
433 if $test -f $src/hints/sco_$1_$2_$3.sh; then
435 elif $test -f $src/hints/sco_$1_$2.sh; then
437 elif $test -f $src/hints/sco_$1.sh; then
442 '') : Still unknown. Probably a generic Sys V.
452 '') : Still unknown. Probably a generic BSD.
460 ?X: Try to identify sony's NEWS-OS (BSD unix)
461 if test -f /vmunix -a -f $src/hints/news_os.sh; then
462 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
463 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
466 $rm -f UU/kernel.what
467 ?X: Maybe it's OS/2 or DOS or something similar
468 elif test -d c:/.; then
475 : Now look for a hint file osname_osvers, unless one has been
479 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
480 : Also try without trailing minor version numbers.
481 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
482 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
483 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
484 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
490 *) if $test -f $src/hints/$file.sh ; then
492 elif $test -f $src/hints/$xfile.sh ; then
494 elif $test -f $src/hints/$xxfile.sh ; then
496 elif $test -f $src/hints/$xxxfile.sh ; then
498 elif $test -f $src/hints/$xxxxfile.sh ; then
500 elif $test -f "$src/hints/${osname}.sh" ; then
509 if $test -f Policy.sh ; then
512 none) dflt="Policy" ;;
513 *) dflt="Policy $dflt" ;;
518 dflt=`echo $hintfile | $sed 's/\.sh$//'`
522 if $test -f Policy.sh ; then
525 There's also a Policy hint file available, which should make the
526 site-specific (policy) questions easier to answer.
533 You may give one or more space-separated answers, or "none" if appropriate.
534 A well-behaved OS will have no hints, so answering "none" or just "Policy"
535 is a good thing. DO NOT give a wrong version or a wrong OS.
539 rp="Which of these apply, if any?"
542 for file in $tans; do
543 if $test X$file = XPolicy -a -f Policy.sh; then
545 $cat Policy.sh >> UU/config.sh
546 elif $test -f $src/hints/$file.sh; then
547 . $src/hints/$file.sh
548 $cat $src/hints/$file.sh >> UU/config.sh
549 elif $test X$tans = X -o X$tans = Xnone ; then
552 : Give one chance to correct a possible typo.
553 echo "$file.sh does not exist"
555 rp="hint to use instead?"
558 if $test -f "$src/hints/$file.sh"; then
559 . $src/hints/$file.sh
560 $cat $src/hints/$file.sh >> UU/config.sh
561 elif $test X$ans = X -o X$ans = Xnone ; then
564 echo "$file.sh does not exist -- ignored."
571 : Remember our hint file for later.
572 if $test -f "$src/hints/$file.sh" ; then
579 ?X: From here on, we must use $rsrc instead of $src
581 : Get old answers, if there is a config file out there
584 if test -f ../config.sh; then
586 rp="I see a config.sh file. Shall I use it to set the defaults?"
589 n*|N*) echo "OK, I'll ignore it.";;
590 *) echo "Fetching default answers from your old config.sh file..." >&4
602 ?X: remember, indentation is wrong--RAM
606 echo "Fetching default answers from $config_sh..." >&4
610 ?X: preserve symbolic links, if any
611 cp $config_sh config.sh 2>/dev/null
621 test "$override" && . ./optdef.sh
622 myuname="$newmyuname"
624 : Restore computed paths
625 for file in $loclist $trylist; do
626 eval $file="\$_$file"
632 Configure uses the operating system name and version to set some defaults.
633 The default value is probably right if the name rings a bell. Otherwise,
634 since spelling matters for me, either accept the default or answer "none"
643 ''|' '|none) dflt=none ;;
644 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
649 rp="Operating system name?"
653 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
663 ''|' '|none) dflt=none ;;
664 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
665 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
674 rp="Operating system version?"