This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #42886] Perl fails to build due to ' in uname output
[metaconfig.git] / U / modified / Oldconfig.U
1 ?RCS: $Id: Oldconfig.U,v 3.0.1.10 1997/02/28 15:06:39 ram Exp $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4 ?RCS:
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.
10 ?RCS:
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
16 ?RCS:
17 ?RCS: Revision 3.0.1.9  1995/07/25  13:40:51  ram
18 ?RCS: patch56: now knows about OS/2 platforms
19 ?RCS:
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)
24 ?RCS:
25 ?RCS: Revision 3.0.1.7  1995/02/15  14:13:41  ram
26 ?RCS: patch51: adapted osvers computation for AIX (ADO)
27 ?RCS:
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)
31 ?RCS:
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
35 ?RCS:
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)
39 ?RCS:
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)
43 ?RCS:
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
47 ?RCS:
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
52 ?RCS:
53 ?RCS: Revision 3.0  1993/08/18  12:05:12  ram
54 ?RCS: Baseline for dist 3.0 netwide release.
55 ?RCS:
56 ?X:
57 ?X: This unit tries to remember what we did last time we ran Configure, mostly
58 ?X: for the sake of setting defaults.
59 ?X:
60 ?MAKE:Oldconfig hint myuname osname osvers: Instruct Myread uname \
61         Checkcc Mksymlinks run \
62         sh awk sed test cat rm lns tr n c contains Loc Options Tr src trnl ln
63 ?MAKE:  -pick wipe $@ %<
64 ?S:myuname:
65 ?S:     The output of 'uname -a' if available, otherwise the hostname. On Xenix,
66 ?S:     pseudo variables assignments in the output are stripped, thank you. The
67 ?S:     whole thing is then lower-cased.
68 ?S:.
69 ?S:hint:
70 ?S:     Gives the type of hints used for previous answers. May be one of
71 ?S:     "default", "recommended" or "previous".
72 ?S:.
73 ?S:osname:
74 ?S:     This variable contains the operating system name (e.g. sunos,
75 ?S:     solaris, hpux, etc.).  It can be useful later on for setting
76 ?S:     defaults.  Any spaces are replaced with underscores.  It is set
77 ?S:     to a null string if we can't figure it out.
78 ?S:.
79 ?S:osvers:
80 ?S:     This variable contains the operating system version (e.g.
81 ?S:     4.1.3, 5.2, etc.).  It is primarily used for helping select
82 ?S:     an appropriate hints file, but might be useful elsewhere for
83 ?S:     setting defaults.  It is set to '' if we can't figure it out.
84 ?S:     We try to be flexible about how much of the version number
85 ?S:     to keep, e.g. if 4.1.1, 4.1.2, and 4.1.3 are essentially the
86 ?S:     same for this package, hints files might just be os_4.0 or
87 ?S:     os_4.1, etc., not keeping separate files for each little release.
88 ?S:.
89 ?C:OSNAME:
90 ?C:     This symbol contains the name of the operating system, as determined
91 ?C:     by Configure.  You shouldn't rely on it too much; the specific
92 ?C:     feature tests from Configure are generally more reliable.
93 ?C:.
94 ?C:OSVERS:
95 ?C:     This symbol contains the version of the operating system, as determined
96 ?C:     by Configure.  You shouldn't rely on it too much; the specific
97 ?C:     feature tests from Configure are generally more reliable.
98 ?C:.
99 ?H:#define OSNAME "$osname"             /**/
100 ?H:#define OSVERS "$osvers"             /**/
101 ?H:.
102 ?F:!config.sh
103 ?T:tmp tmp_n tmp_c tmp_sh file
104 ?T:xxxxfile xxxfile xxfile xfile hintfile newmyuname
105 ?T:tans _ isesix INITPROG DJGPP
106 ?D:osname=''
107 ?LINT:change n c sh
108 ?LINT:extern targetarch
109 ?LINT:extern hostarch
110 ?LINT:change hostarch
111 ?LINT:use run
112 ?LINT:extern is_os2
113 : Try to determine whether config.sh was made on this system
114 case "$config_sh" in
115 '')
116 ?X: indentation wrong on purpose--RAM
117 ?X: Leave a white space between first two '(' for ksh. The sub-shell is needed
118 ?X: on some machines to avoid the error message when uname is not found; e.g.
119 ?X: old SUN-OS 3.2 would not execute hostname in (uname -a || hostname). Sigh!
120 ?X: Now not using a subshell but instead $test.
121 myuname=`$uname -a 2>/dev/null`
122 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
123 ?X: Special mention for Xenix, whose 'uname -a' gives us output like this:
124 ?X:  sysname=XENIX
125 ?X:  nodename=whatever
126 ?X:  release=2.3.2 .. etc...
127 ?X: Therefore, we strip all this variable assignment junk and remove all the
128 ?X: new lines to keep the myuname variable sane... --RAM
129 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
130 # because the A-Z/a-z are not consecutive.
131 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's,['/],,g' | \
132         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
133 ?X: Save the value we just computed to reset myuname after we get done here.
134 newmyuname="$myuname"
135 dflt=n
136 case "$knowitall" in
137 '')
138         if test -f ../config.sh; then
139                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
140                         eval "`grep myuname= ../config.sh`"
141                 fi
142                 if test "X$myuname" = "X$newmyuname"; then
143                         dflt=y
144                 fi
145         fi
146         ;;
147 *) dflt=y;;
148 esac
149
150 @if {test -d ../hints}
151 : Get old answers from old config file if Configure was run on the
152 : same system, otherwise use the hints.
153 hint=default
154 cd ..
155 ?X: Since we are now at the root of the source tree, we must use $src
156 ?X: to access the sources and not $rsrc. See src.U for details...
157 if test -f config.sh; then
158         echo " "
159         rp="I see a config.sh file.  Shall I use it to set the defaults?"
160         . UU/myread
161         case "$ans" in
162         n*|N*) echo "OK, I'll ignore it."
163                 mv config.sh config.sh.old
164                 myuname="$newmyuname"
165                 ;;
166         *)  echo "Fetching default answers from your old config.sh file..." >&4
167                 tmp_n="$n"
168                 tmp_c="$c"
169                 tmp_sh="$sh"
170                 . ./config.sh
171                 cp config.sh UU
172                 n="$tmp_n"
173                 c="$tmp_c"
174                 : Older versions did not always set $sh.  Catch re-use of such
175                 : an old config.sh.
176                 case "$sh" in
177                 '') sh="$tmp_sh" ;;
178                 esac
179                 hint=previous
180                 ;;
181         esac
182 fi
183 . ./UU/checkcc
184 if test ! -f config.sh; then
185         $cat <<EOM
186
187 First time through, eh?  I have some defaults handy for some systems
188 that need some extra help getting the Configure answers right:
189
190 EOM
191         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
192         dflt=''
193         : Half the following guesses are probably wrong... If you have better
194         : tests or hints, please send them to <MAINTLOC>
195         : The metaconfig authors would also appreciate a copy...
196         $test -f /irix && osname=irix
197         $test -f /xenix && osname=sco_xenix
198         $test -f /dynix && osname=dynix
199         $test -f /dnix && osname=dnix
200         $test -f /lynx.os && osname=lynxos
201         $test -f /unicos && osname=unicos && osvers=`$uname -r`
202         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
203         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
204         $test -f /bin/mips && /bin/mips && osname=mips
205         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
206                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
207         $test -d /usr/apollo/bin && osname=apollo
208         $test -f /etc/saf/_sactab && osname=svr4
209         $test -d /usr/include/minix && osname=minix
210         $test -f /system/gnu_library/bin/ar.pm && osname=vos
211         if $test -d /MachTen -o -d /MachTen_Folder; then
212 ?X:             MachTen uname -a output looks like
213 ?X:             xxx 4 0.0 Macintosh
214 ?X:             MachTen /sbin/version output looks like
215 ?X:             MachTen 4.0 Mon Aug 28 10:18:00 1995
216 ?X:             MachTen 3.x had the 'version' command in /usr/etc/version.
217                 osname=machten
218                 if $test -x /sbin/version; then
219                         osvers=`/sbin/version | $awk '{print $2}' |
220                         $sed -e 's/[A-Za-z]$//'`
221                 elif $test -x /usr/etc/version; then
222                         osvers=`/usr/etc/version | $awk '{print $2}' |
223                         $sed -e 's/[A-Za-z]$//'`
224                 else
225                         osvers="$2.$3"
226                 fi
227         fi
228
229         $test -f /sys/posix.dll &&
230                 $test -f /usr/bin/what &&
231                 set X `/usr/bin/what /sys/posix.dll` &&
232                 $test "$3" = UWIN &&
233                 osname=uwin &&
234                 osvers="$5"
235
236 ?X: If we have uname, we already computed a suitable uname -a output, correctly
237 ?X: formatted for Xenix, and it lies in $myuname.
238         if $test -f $uname; then
239                 set X $myuname
240                 shift
241
242                 case "$5" in
243                 fps*) osname=fps ;;
244                 mips*)
245                         case "$4" in
246                         umips) osname=umips ;;
247                         *) osname=mips ;;
248                         esac;;
249                 [23]100) osname=mips ;;
250                 next*) osname=next ;;
251 ?X: Interactive Unix.
252                 i386*)
253                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
254                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
255                                 osname='sco'
256                                 osvers=$tmp
257                         elif $test -f /etc/kconfig; then
258                                 osname=isc
259                                 if test "$lns" = "$ln -s"; then
260                                         osvers=4
261                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
262                                         osvers=3
263                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
264                                         osvers=2
265                                 fi
266                         fi
267                         tmp=''
268                         ;;
269 ?X: MS-DOS djgpp uname -a output looks like:
270 ?X: ms-dos xxx 6 22 pc
271 ?X:  $1 is the "dos flavor" (need not be "ms-dos").
272 ?X:  $2 is the node name
273 ?X:  $3 and $4 are version/subversion
274 ?X:  $5 is always "pc", but that might not be unique to DJGPP.
275 ?X: (e.g. Solaris_x86 has $5 = i86pc, which doesn't actually conflict,
276 ?X: but it's close enought that I can easily imagine other vendors also
277 ?X: using variants of pc* in $5.)
278 ?X:  The "DJGPP" environment variable is always set when djgpp is active.
279                 pc*)
280                         if test -n "$DJGPP"; then
281                                 osname=dos
282                                 osvers=djgpp
283                         fi
284                         ;;
285                 esac
286
287                 case "$1" in
288                 aix) osname=aix
289 ?X: aix 4.1 uname -a output looks like
290 ?X:             AIX  foo  1 4 000123456789
291 ?X: where $4 is the major release number and $3 is the (minor) version.
292 ?X: More detail on the version is available with the oslevel command.
293 ?X: in 3.2.x, it output a string (see case statements below).  In 4.1,
294 ?X: it puts out something like  4.1.1.0
295                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
296                         case "$tmp" in
297                         # oslevel can fail with:
298                         # oslevel: Unable to acquire lock.
299                         *not\ found) osvers="$4"."$3" ;;
300                         '<3240'|'<>3240') osvers=3.2.0 ;;
301                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
302                         '=3250'|'>3250') osvers=3.2.5 ;;
303                         *) osvers=$tmp;;
304                         esac
305                         ;;
306                 bsd386) osname=bsd386
307                         osvers=`$uname -r`
308                         ;;
309                 cygwin*) osname=cygwin
310                         osvers="$3"
311                         ;;
312                 *dc.osx) osname=dcosx
313                         osvers="$3"
314                         ;;
315                 dnix) osname=dnix
316                         osvers="$3"
317                         ;;
318                 domainos) osname=apollo
319                         osvers="$3"
320                         ;;
321                 dgux)   osname=dgux
322                         osvers="$3"
323                         ;;
324                 dragonfly) osname=dragonfly
325                         osvers="$3"
326                         ;;
327 ?X:             uname -a returns
328 ?X:             DYNIX/ptx xxx 4.0 V4.1.2 i386
329                 dynixptx*) osname=dynixptx
330                         osvers=`echo "$4"|sed 's/^v//'`
331                         ;;
332                 freebsd) osname=freebsd
333                         osvers="$3" ;;
334                 genix)  osname=genix ;;
335 ?X: GNU/Hurd uname -a gives something like:
336 ?X: GNU foo 0.3 GNU-Mach 1.4/Hurd-0.3 i386-AT386 GNU
337 ?X: GNU gnu 0.3 GNUmach-1.2/Hurd-0.3 i386-AT386 GNU
338 ?X: Note the hostname on the second one, which will fool Configure
339 ?X: into using the SysV case!
340                 gnu)    osname=gnu
341                         osvers="$3" ;;
342 ?X: HP-UX uname -a gives something like
343 ?X: HP-UX foobar B.10.20 A 9000/735 2016483812 two-user license
344 ?X: Preserve the full 10.20 string instead of the previous plain '10'.
345 ?X:  Thanks to Graham Barr.    --AD 6/30/1998
346                 hp*)    osname=hpux
347                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
348                         ;;
349                 irix*)  osname=irix
350                         case "$3" in
351                         4*) osvers=4 ;;
352                         5*) osvers=5 ;;
353                         *)      osvers="$3" ;;
354                         esac
355                         ;;
356                 linux)  osname=linux
357                         case "$3" in
358                         *)      osvers="$3" ;;
359                         esac
360                         ;;
361                 MiNT)   osname=mint
362                         ;;
363                 netbsd*) osname=netbsd
364                         osvers="$3"
365                         ;;
366                 news-os) osvers="$3"
367                         case "$3" in
368                         4*) osname=newsos4 ;;
369                         *) osname=newsos ;;
370                         esac
371                         ;;
372                 next*) osname=next ;;
373                 nonstop-ux) osname=nonstopux ;;
374                 openbsd) osname=openbsd
375                         osvers="$3"
376                         ;;
377                 os2)    osname=os2
378                         osvers="$4"
379                         ;;
380                 POSIX-BC | posix-bc ) osname=posix-bc
381                         osvers="$3"
382                         ;;
383                 powerux | power_ux | powermax_os | powermaxos | \
384                 powerunix | power_unix) osname=powerux
385                         osvers="$3"
386                         ;;
387                 qnx) osname=qnx
388                         osvers="$4"
389                         ;;
390                 solaris) osname=solaris
391                         case "$3" in
392                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
393                         *)      osvers="$3" ;;
394                         esac
395                         ;;
396                 sunos) osname=sunos
397                         case "$3" in
398                         5*) osname=solaris
399                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
400                         *)      osvers="$3" ;;
401                         esac
402                         ;;
403                 titanos) osname=titanos
404                         case "$3" in
405                         1*) osvers=1 ;;
406                         2*) osvers=2 ;;
407                         3*) osvers=3 ;;
408                         4*) osvers=4 ;;
409                         *)      osvers="$3" ;;
410                         esac
411                         ;;
412                 ultrix) osname=ultrix
413                         osvers="$3"
414                         ;;
415                 osf1|mls+)      case "$5" in
416                                 alpha)
417 ?X: DEC OSF/1 myuname -a output looks like:  osf1 xxxx t3.2 123.4 alpha
418 ?X: where the version number can be something like [xvt]n.n
419                                         osname=dec_osf
420 ?X: sizer knows the minor minor version: the letter
421                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
422                                         case "$osvers" in
423                                         [1-9].[0-9]*) ;;
424                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
425                                         esac
426                                         ;;
427                         hp*)    osname=hp_osf1  ;;
428                         mips)   osname=mips_osf1 ;;
429 ?X:     hp and mips were unsupported Technology Releases -- ADO, 24/10/94
430                         esac
431                         ;;
432                 # UnixWare 7.1.2 is known as Open UNIX 8
433                 openunix|unixware) osname=svr5
434                         osvers="$4"
435                         ;;
436                 uts)    osname=uts
437                         osvers="$3"
438                         ;;
439                 vos) osvers="$3"
440                         ;;
441                 $2) case "$osname" in
442                         *isc*) ;;
443                         *freebsd*) ;;
444                         svr*)
445                                 : svr4.x or possibly later
446                                 case "svr$3" in
447                                 ${osname}*)
448                                         osname=svr$3
449                                         osvers=$4
450                                         ;;
451                                 esac
452                                 case "$osname" in
453                                 svr4.0)
454                                         : Check for ESIX
455                                         if test -f /stand/boot ; then
456                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
457                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
458                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
459                                                         if test -n "$isesix"; then
460                                                                 osname=esix4
461                                                         fi
462                                                 fi
463                                         fi
464                                         ;;
465                                 esac
466                                 ;;
467                         *)      if test -f /etc/systemid; then
468                                         osname=sco
469                                         set `echo $3 | $sed 's/\./ /g'` $4
470                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
471                                                 osvers=$1.$2.$3
472                                         elif $test -f $src/hints/sco_$1_$2.sh; then
473                                                 osvers=$1.$2
474                                         elif $test -f $src/hints/sco_$1.sh; then
475                                                 osvers=$1
476                                         fi
477                                 else
478                                         case "$osname" in
479                                         '') : Still unknown.  Probably a generic Sys V.
480                                                 osname="sysv"
481                                                 osvers="$3"
482                                                 ;;
483                                         esac
484                                 fi
485                                 ;;
486                         esac
487                         ;;
488                 *)      case "$osname" in
489                         '') : Still unknown.  Probably a generic BSD.
490                                 osname="$1"
491                                 osvers="$3"
492                                 ;;
493                         esac
494                         ;;
495                 esac
496         else
497 ?X: Try to identify sony's NEWS-OS (BSD unix)
498                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
499                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
500                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
501                                 osname=news_os
502                         fi
503                         $rm -f UU/kernel.what
504 ?X: Maybe it's OS/2 or DOS or something similar
505                 elif test -d c:/. -o -n "$is_os2" ; then
506                         set X $myuname
507                         osname=os2
508                         osvers="$5"
509                 fi
510         fi
511
512         case "$targetarch" in
513         '') ;;
514         *)  hostarch=$osname
515             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
516             osvers=''
517             ;;
518         esac
519
520         : Now look for a hint file osname_osvers, unless one has been
521         : specified already.
522         case "$hintfile" in
523         ''|' ')
524                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
525                 : Also try without trailing minor version numbers.
526                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
527                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
528                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
529                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
530                 case "$file" in
531                 '') dflt=none ;;
532                 *)  case "$osvers" in
533                         '') dflt=$file
534                                 ;;
535                         *)  if $test -f $src/hints/$file.sh ; then
536                                         dflt=$file
537                                 elif $test -f $src/hints/$xfile.sh ; then
538                                         dflt=$xfile
539                                 elif $test -f $src/hints/$xxfile.sh ; then
540                                         dflt=$xxfile
541                                 elif $test -f $src/hints/$xxxfile.sh ; then
542                                         dflt=$xxxfile
543                                 elif $test -f $src/hints/$xxxxfile.sh ; then
544                                         dflt=$xxxxfile
545                                 elif $test -f "$src/hints/${osname}.sh" ; then
546                                         dflt="${osname}"
547                                 else
548                                         dflt=none
549                                 fi
550                                 ;;
551                         esac
552                         ;;
553                 esac
554                 if $test -f Policy.sh ; then
555                         case "$dflt" in
556                         *Policy*) ;;
557                         none) dflt="Policy" ;;
558                         *) dflt="Policy $dflt" ;;
559                         esac
560                 fi
561                 ;;
562         *)
563                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
564                 ;;
565         esac
566
567         if $test -f Policy.sh ; then
568                 $cat <<EOM
569
570 There's also a Policy hint file available, which should make the
571 site-specific (policy) questions easier to answer.
572 EOM
573
574         fi
575
576         $cat <<EOM
577
578 You may give one or more space-separated answers, or "none" if appropriate.
579 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
580 previous run of Configure, you may specify it as well as or instead of
581 OS-specific hints.  If hints are provided for your OS, you should use them:
582 although Perl can probably be built without hints on many platforms, using
583 hints often improve performance and may enable features that Configure can't
584 set up on its own. If there are no hints that match your OS, specify "none";
585 DO NOT give a wrong version or a wrong OS.
586
587 EOM
588
589         rp="Which of these apply, if any?"
590         . UU/myread
591         tans=$ans
592         for file in $tans; do
593                 if $test X$file = XPolicy -a -f Policy.sh; then
594                         . Policy.sh
595                         $cat Policy.sh >> UU/config.sh
596                 elif $test -f $src/hints/$file.sh; then
597                         . $src/hints/$file.sh
598                         $cat $src/hints/$file.sh >> UU/config.sh
599                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
600                         : nothing
601                 else
602                         : Give one chance to correct a possible typo.
603                         echo "$file.sh does not exist"
604                         dflt=$file
605                         rp="hint to use instead?"
606                         . UU/myread
607                         for file in $ans; do
608                                 if $test -f "$src/hints/$file.sh"; then
609                                         . $src/hints/$file.sh
610                                         $cat $src/hints/$file.sh >> UU/config.sh
611                                 elif $test X$ans = X -o X$ans = Xnone ; then
612                                         : nothing
613                                 else
614                                         echo "$file.sh does not exist -- ignored."
615                                 fi
616                         done
617                 fi
618         done
619
620         hint=recommended
621         : Remember our hint file for later.
622         if $test -f "$src/hints/$file.sh" ; then
623                 hintfile="$file"
624         else
625                 hintfile=''
626         fi
627 fi
628 cd UU
629 ?X: From here on, we must use $rsrc instead of $src
630 @else
631 : Get old answers, if there is a config file out there
632 hint=default
633 hintfile=''
634 if test -f ../config.sh; then
635         echo " "
636         rp="I see a config.sh file.  Shall I use it to set the defaults?"
637         . ./myread
638         case "$ans" in
639         n*|N*) echo "OK, I'll ignore it.";;
640         *)  echo "Fetching default answers from your old config.sh file..." >&4
641                 tmp_n="$n"
642                 tmp_c="$c"
643                 . ../config.sh
644                 cp ../config.sh .
645                 n="$tmp_n"
646                 c="$tmp_c"
647                 hint=previous
648                 ;;
649         esac
650 fi
651 @end
652 ?X: remember, indentation is wrong--RAM
653 ;;
654 *)
655         echo " "
656         echo "Fetching default answers from $config_sh..." >&4
657         tmp_n="$n"
658         tmp_c="$c"
659         cd ..
660 ?X: preserve symbolic links, if any
661         cp $config_sh config.sh 2>/dev/null
662         chmod +w config.sh
663         . ./config.sh
664         cd UU
665         cp ../config.sh .
666         n="$tmp_n"
667         c="$tmp_c"
668         hint=previous
669         ;;
670 esac
671 test "$override" && . ./optdef.sh
672
673 : Restore computed paths
674 for file in $loclist $trylist; do
675         eval $file="\$_$file"
676 done
677
678 @if osname || osvers
679 cat << EOM
680
681 Configure uses the operating system name and version to set some defaults.
682 The default value is probably right if the name rings a bell. Otherwise,
683 since spelling matters for me, either accept the default or answer "none"
684 to leave it blank.
685
686 EOM
687 @end
688 @if osname
689 case "$osname" in
690         ''|' ')
691                 case "$hintfile" in
692                 ''|' '|none) dflt=none ;;
693                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
694                 esac
695                 ;;
696         *) dflt="$osname" ;;
697 esac
698 rp="Operating system name?"
699 . ./myread
700 case "$ans" in
701 none)  osname='' ;;
702 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
703 esac
704 @end
705 @if osvers
706 @if osname
707 echo " "
708 @end
709 case "$osvers" in
710         ''|' ')
711                 case "$hintfile" in
712                 ''|' '|none) dflt=none ;;
713                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
714                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
715                         case "$dflt" in
716                         ''|' ') dflt=none ;;
717                         esac
718                         ;;
719                 esac
720                 ;;
721         *) dflt="$osvers" ;;
722 esac
723 rp="Operating system version?"
724 . ./myread
725 case "$ans" in
726 none)  osvers='' ;;
727 *) osvers="$ans" ;;
728 esac
729
730 @end
731
732 . ./posthint.sh
733