This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
AIX patch (including Configure support for {sched,pthread}_yield,
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
19 #
20
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
22 #
23 # Generated on Sat Feb  1 00:26:40 EST 1997 [metaconfig 3.0 PL60]
24
25 cat >/tmp/c1$$ <<EOF
26 ARGGGHHHH!!!!!
27
28 SCO csh still thinks true is false.  Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
30
31 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
33
34 [End of diatribe. We now return you to your regularly scheduled programming...]
35 EOF
36 cat >/tmp/c2$$ <<EOF
37
38 OOPS!  You naughty creature!  You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
40 EOF
41
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
44
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
48
49 : compute my invocation name
50 me=$0
51 case "$0" in
52 */*)
53         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
54         test "$me" || me=$0
55         ;;
56 esac
57
58 : Proper PATH separator
59 p_=:
60 : On OS/2 this directory should exist if this is not floppy only system :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
62         p_=\;
63         PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64         OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
65 fi
66
67 : Proper PATH setting
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
76
77 for p in $paths
78 do
79         case "$p_$PATH$p_" in
80         *$p_$p$p_*) ;;
81         *) test -d $p && PATH=$PATH$p_$p ;;
82         esac
83 done
84
85 PATH=.$p_$PATH
86 export PATH
87
88 : This should not matter in scripts, but apparently it does, sometimes
89 case "$CDPATH" in
90 '')     ;;
91 *)      CDPATH='' ;;
92 esac
93
94 : Sanity checks
95 if test ! -t 0; then
96         echo "Say 'sh $me', not 'sh <$me'"
97         exit 1
98 fi
99
100 : Test and see if we are running under ksh, either blatantly or in disguise.
101 if (PATH=.; alias -x) >/dev/null 2>&1; then
102     : running under ksh.  Is this a good thing?
103     if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
104         if test X`/usr/bin/uname -v` = X4 ; then
105             : on AIX 4, /bin/sh is really ksh, and it causes us problems.
106             : Avoid it
107                 cat <<'EOM'
108 (Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
109 EOM
110                 unset ENV
111             exec /usr/bin/bsh $0 "$@"
112         fi
113     else
114         if test ! -f /hp-ux ; then
115         : Warn them if they use ksh on other systems
116                 cat <<EOM
117 (I see you are using the Korn shell.  Some ksh's blow up on $me,
118 especially on older exotic systems.  If yours does, try the Bourne 
119 shell instead.)
120 EOM
121                 unset ENV
122         fi
123     fi
124 else
125     : Not running under ksh.  Maybe we should be?
126     : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
127     if test -f /hp-ux -a -f /bin/ksh; then
128         cat <<'EOM'
129 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
130 EOM
131         unset ENV
132         exec /bin/ksh $0 "$@"
133     fi
134 fi
135
136 : Configure runs within the UU subdirectory
137 test -d UU || mkdir UU
138 cd UU && rm -f ./*
139
140 dynamic_ext=''
141 extensions=''
142 known_extensions=''
143 static_ext=''
144 useopcode=''
145 useposix=''
146 d_bsd=''
147 d_eunice=''
148 d_xenix=''
149 eunicefix=''
150 Mcc=''
151 awk=''
152 bash=''
153 bison=''
154 byacc=''
155 cat=''
156 chgrp=''
157 chmod=''
158 chown=''
159 comm=''
160 compress=''
161 cp=''
162 cpio=''
163 cpp=''
164 csh=''
165 date=''
166 echo=''
167 egrep=''
168 emacs=''
169 expr=''
170 find=''
171 flex=''
172 gcc=''
173 grep=''
174 gzip=''
175 inews=''
176 ksh=''
177 less=''
178 line=''
179 lint=''
180 ln=''
181 lp=''
182 lpr=''
183 ls=''
184 mail=''
185 mailx=''
186 mkdir=''
187 more=''
188 mv=''
189 nroff=''
190 perl=''
191 pg=''
192 pmake=''
193 pr=''
194 rm=''
195 rmail=''
196 sed=''
197 sendmail=''
198 shar=''
199 sleep=''
200 smail=''
201 sort=''
202 submit=''
203 tail=''
204 tar=''
205 tbl=''
206 test=''
207 touch=''
208 tr=''
209 troff=''
210 uname=''
211 uniq=''
212 usethreads=''
213 uuname=''
214 vi=''
215 zcat=''
216 zip=''
217 full_sed=''
218 libswanted=''
219 hint=''
220 myuname=''
221 osname=''
222 osvers=''
223 Author=''
224 Date=''
225 Header=''
226 Id=''
227 Locker=''
228 Log=''
229 RCSfile=''
230 Revision=''
231 Source=''
232 State=''
233 ar=''
234 archobjs=''
235 exe_ext=''
236 firstmakefile=''
237 lib_ext=''
238 obj_ext=''
239 path_sep=''
240 afs=''
241 alignbytes=''
242 archlib=''
243 archlibexp=''
244 d_archlib=''
245 installarchlib=''
246 archname=''
247 myarchname=''
248 baserev=''
249 bin=''
250 binexp=''
251 installbin=''
252 bincompat3=''
253 d_bincompat3=''
254 byteorder=''
255 cc=''
256 gccversion=''
257 ccflags=''
258 cppflags=''
259 ldflags=''
260 lkflags=''
261 locincpth=''
262 optimize=''
263 cf_email=''
264 cf_by=''
265 cf_time=''
266 contains=''
267 cpp_stuff=''
268 cpplast=''
269 cppminus=''
270 cpprun=''
271 cppstdin=''
272 d_access=''
273 d_alarm=''
274 d_attribut=''
275 d_bcmp=''
276 d_bcopy=''
277 d_bzero=''
278 d_casti32=''
279 castflags=''
280 d_castneg=''
281 d_chown=''
282 d_chroot=''
283 d_chsize=''
284 d_closedir=''
285 d_void_closedir=''
286 d_const=''
287 cryptlib=''
288 d_crypt=''
289 d_csh=''
290 full_csh=''
291 d_cuserid=''
292 d_dbl_dig=''
293 d_difftime=''
294 d_dlerror=''
295 d_dlopen=''
296 d_dlsymun=''
297 d_dosuid=''
298 d_suidsafe=''
299 d_dup2=''
300 d_fchmod=''
301 d_fchown=''
302 d_fcntl=''
303 d_fd_macros=''
304 d_fd_set=''
305 d_fds_bits=''
306 d_fgetpos=''
307 d_flexfnam=''
308 d_flock=''
309 d_fork=''
310 d_fsetpos=''
311 d_ftime=''
312 d_gettimeod=''
313 d_Gconvert=''
314 d_getgrps=''
315 d_setgrps=''
316 d_gethent=''
317 d_gethbadd=''
318 gethbadd_addr_type=''
319 gethbadd_alen_type=''
320 d_getnbadd=''
321 getnbadd_net_type=''
322 aphostname=''
323 d_gethname=''
324 d_phostname=''
325 d_uname=''
326 d_getlogin=''
327 d_getpgid=''
328 d_getpgrp2=''
329 d_bsdgetpgrp=''
330 d_getpgrp=''
331 d_getppid=''
332 d_getprior=''
333 d_gnulibc=''
334 d_htonl=''
335 d_inetaton=''
336 d_isascii=''
337 d_killpg=''
338 d_link=''
339 d_locconv=''
340 d_lockf=''
341 d_lstat=''
342 d_mblen=''
343 d_mbstowcs=''
344 d_mbtowc=''
345 d_memcmp=''
346 d_memcpy=''
347 d_memmove=''
348 d_memset=''
349 d_mkdir=''
350 d_mkfifo=''
351 d_mktime=''
352 d_msg=''
353 d_msgctl=''
354 d_msgget=''
355 d_msgrcv=''
356 d_msgsnd=''
357 d_nice=''
358 d_open3=''
359 d_fpathconf=''
360 d_pathconf=''
361 d_pause=''
362 d_pipe=''
363 d_poll=''
364 d_portable=''
365 d_readdir=''
366 d_rewinddir=''
367 d_seekdir=''
368 d_telldir=''
369 d_readlink=''
370 d_rename=''
371 d_rmdir=''
372 d_safebcpy=''
373 d_safemcpy=''
374 d_sanemcmp=''
375 d_select=''
376 d_sem=''
377 d_semctl=''
378 d_semget=''
379 d_semop=''
380 d_setegid=''
381 d_seteuid=''
382 d_setlinebuf=''
383 d_setlocale=''
384 d_setpgid=''
385 d_setpgrp2=''
386 d_bsdpgrp=''
387 d_bsdsetpgrp=''
388 d_setpgrp=''
389 d_setprior=''
390 d_setregid=''
391 d_setresgid=''
392 d_setresuid=''
393 d_setreuid=''
394 d_setrgid=''
395 d_setruid=''
396 d_setsid=''
397 d_sfio=''
398 usesfio=''
399 d_shm=''
400 d_shmat=''
401 d_shmatprototype=''
402 shmattype=''
403 d_shmctl=''
404 d_shmdt=''
405 d_shmget=''
406 d_sigaction=''
407 d_sigsetjmp=''
408 d_oldsock=''
409 d_socket=''
410 d_sockpair=''
411 sockethdr=''
412 socketlib=''
413 d_statblks=''
414 d_stdio_cnt_lval=''
415 d_stdio_ptr_lval=''
416 d_stdiobase=''
417 d_stdstdio=''
418 stdio_base=''
419 stdio_bufsiz=''
420 stdio_cnt=''
421 stdio_ptr=''
422 d_index=''
423 d_strchr=''
424 d_strcoll=''
425 d_strctcpy=''
426 d_strerrm=''
427 d_strerror=''
428 d_sysernlst=''
429 d_syserrlst=''
430 d_strtod=''
431 d_strtol=''
432 d_strtoul=''
433 d_strxfrm=''
434 d_symlink=''
435 d_syscall=''
436 d_sysconf=''
437 d_system=''
438 d_tcgetpgrp=''
439 d_tcsetpgrp=''
440 d_time=''
441 timetype=''
442 clocktype=''
443 d_times=''
444 d_truncate=''
445 d_tzname=''
446 d_umask=''
447 d_vfork=''
448 usevfork=''
449 d_voidsig=''
450 signal_t=''
451 d_volatile=''
452 d_charvspr=''
453 d_vprintf=''
454 d_wait4=''
455 d_waitpid=''
456 d_wcstombs=''
457 d_wctomb=''
458 dlext=''
459 cccdlflags=''
460 ccdlflags=''
461 dlsrc=''
462 ld=''
463 lddlflags=''
464 usedl=''
465 fpostype=''
466 gidtype=''
467 groupstype=''
468 d_sched_yield=''
469 d_pthread_yield=''
470 h_fcntl=''
471 h_sysfile=''
472 db_hashtype=''
473 db_prefixtype=''
474 i_db=''
475 i_dbm=''
476 i_rpcsvcdbm=''
477 d_dirnamlen=''
478 direntrytype=''
479 i_dirent=''
480 i_dld=''
481 i_dlfcn=''
482 i_fcntl=''
483 i_float=''
484 i_gdbm=''
485 i_grp=''
486 i_limits=''
487 i_locale=''
488 i_malloc=''
489 i_math=''
490 i_memory=''
491 i_ndbm=''
492 i_netdb=''
493 i_neterrno=''
494 i_niin=''
495 i_sysin=''
496 d_pwage=''
497 d_pwchange=''
498 d_pwclass=''
499 d_pwcomment=''
500 d_pwexpire=''
501 d_pwquota=''
502 i_pwd=''
503 i_sfio=''
504 i_stddef=''
505 i_stdlib=''
506 i_string=''
507 strings=''
508 i_sysdir=''
509 i_sysfile=''
510 d_voidtty=''
511 i_bsdioctl=''
512 i_sysfilio=''
513 i_sysioctl=''
514 i_syssockio=''
515 i_sysndir=''
516 i_sysparam=''
517 i_sysresrc=''
518 i_sysselct=''
519 i_sysstat=''
520 i_systimes=''
521 i_systypes=''
522 i_sysun=''
523 i_syswait=''
524 i_sgtty=''
525 i_termio=''
526 i_termios=''
527 i_systime=''
528 i_systimek=''
529 i_time=''
530 timeincl=''
531 i_unistd=''
532 i_utime=''
533 i_values=''
534 i_stdarg=''
535 i_varargs=''
536 i_varhdr=''
537 i_vfork=''
538 intsize=''
539 longsize=''
540 shortsize=''
541 libc=''
542 libperl=''
543 shrpenv=''
544 useshrplib=''
545 glibpth=''
546 libpth=''
547 loclibpth=''
548 plibpth=''
549 xlibpth=''
550 libs=''
551 lns=''
552 lseektype=''
553 make=''
554 make_set_make=''
555 d_mymalloc=''
556 freetype=''
557 mallocobj=''
558 mallocsrc=''
559 malloctype=''
560 usemymalloc=''
561 installman1dir=''
562 man1dir=''
563 man1direxp=''
564 man1ext=''
565 installman3dir=''
566 man3dir=''
567 man3direxp=''
568 man3ext=''
569 huge=''
570 large=''
571 medium=''
572 models=''
573 small=''
574 split=''
575 modetype=''
576 mydomain=''
577 myhostname=''
578 phostname=''
579 c=''
580 n=''
581 d_eofnblk=''
582 eagain=''
583 o_nonblock=''
584 rd_nodata=''
585 groupcat=''
586 hostcat=''
587 passcat=''
588 d_oldarchlib=''
589 oldarchlib=''
590 oldarchlibexp=''
591 orderlib=''
592 ranlib=''
593 package=''
594 spackage=''
595 pager=''
596 patchlevel=''
597 subversion=''
598 perladmin=''
599 perlpath=''
600 prefix=''
601 prefixexp=''
602 installprivlib=''
603 privlib=''
604 privlibexp=''
605 prototype=''
606 pthreads_created_joinable=''
607 randbits=''
608 installscript=''
609 scriptdir=''
610 scriptdirexp=''
611 selecttype=''
612 sh=''
613 sig_name=''
614 sig_num=''
615 installsitearch=''
616 sitearch=''
617 sitearchexp=''
618 installsitelib=''
619 sitelib=''
620 sitelibexp=''
621 sizetype=''
622 so=''
623 sharpbang=''
624 shsharp=''
625 spitshell=''
626 ssizetype=''
627 startperl=''
628 startsh=''
629 stdchar=''
630 sysman=''
631 uidtype=''
632 nm_opt=''
633 nm_so_opt=''
634 runnm=''
635 usenm=''
636 useperlio=''
637 incpath=''
638 mips=''
639 mips_type=''
640 usrinc=''
641 defvoidused=''
642 voidflags=''
643 CONFIG=''
644
645 define='define'
646 undef='undef'
647 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
648 rmlist=''
649
650 : We must find out about Eunice early
651 eunicefix=':'
652 if test -f /etc/unixtovms; then
653         eunicefix=/etc/unixtovms
654 fi
655 if test -f /etc/unixtovms.exe; then
656         eunicefix=/etc/unixtovms.exe
657 fi
658
659 : list of known cpp symbols, sorted alphabetically
660 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
661 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
662 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
663 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
664 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
665 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
666 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
667 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
668 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
669 al="$al VMS Xenix286"
670 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
671 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
672 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
673 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
674 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
675 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
676 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
677 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
678 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
679 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
680 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
681 al="$al __SVR4_2__ __UMAXV__"
682 al="$al ____386BSD____ __alpha __alpha__ __amiga"
683 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
684 al="$al __host_mips__"
685 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
686 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
687 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
688 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
689 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
690 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
691 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
692 al="$al __mc88100 __mc88100__ __mips __mips__"
693 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
694 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
695 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
696 al="$al _host_mips _mips _unix"
697 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
698 al="$al apollo ardent att386 att3b"
699 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
700 al="$al cadmus clipper concurrent convex cray ctix"
701 al="$al dmert encore gcos gcx gimpel gould"
702 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
703 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
704 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
705 al="$al i186 i286 i386 i486 i8086"
706 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
707 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
708 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
709 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
710 al="$al mc88000 mc88100 merlin mert mips mvs n16"
711 al="$al ncl_el ncl_mr"
712 al="$al news1500 news1700 news1800 news1900 news3700"
713 al="$al news700 news800 news900 ns16000 ns32000"
714 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
715 al="$al parisc pc532 pdp11 plexus posix pyr"
716 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
717 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
718 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
719 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
720 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
721 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
722 al="$al xenix z8000"
723
724 groupstype=''
725 i_whoami=''
726 : default library list
727 libswanted=''
728 : set useposix=false in your hint file to disable the POSIX extension.
729 useposix=true
730 : set useopcode=false in your hint file to disable the Opcode extension.
731 useopcode=true
732 : Define several unixisms.  These can be used in hint files.
733 exe_ext='' 
734 : Extra object files, if any, needed on this platform.
735 archobjs=''
736 : Possible local include directories to search.
737 : Set locincpth to "" in a hint file to defeat local include searches.
738 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
739 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
740 :
741 : no include file wanted by default
742 inclwanted=''
743
744 : change the next line if compiling for Xenix/286 on Xenix/386
745 xlibpth='/usr/lib/386 /lib/386'
746
747 : Possible local library directories to search.
748 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
749 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
750
751 : general looking path for locating libraries
752 glibpth="/shlib /usr/shlib /usr/lib/pa1.1 /usr/lib/large"
753 glibpth="$glibpth /lib /usr/lib $xlibpth"
754 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
755 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
756
757 : Private path used by Configure to find libraries.  Its value
758 : is prepended to libpth. This variable takes care of special
759 : machines, like the mips.  Usually, it should be empty.
760 plibpth=''
761
762 : full support for void wanted by default
763 defvoidused=15
764
765 : List of libraries we want.
766 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
767 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
768 libswanted="$libswanted ucb bsd BSD PW x"
769 : We probably want to search /usr/shlib before most other libraries.
770 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
771 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
772 glibpth="/usr/shlib $glibpth"
773 : Do not use vfork unless overridden by a hint file.
774 usevfork=false
775
776 : Find the basic shell for Bourne shell scripts
777 case "$sh" in
778 '')
779         : SYSTYPE is for some older MIPS systems. 
780         : I do not know if it is still needed.
781         case "$SYSTYPE" in
782         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
783         *) xxx='/bin/sh';;
784         esac
785         if test -f "$xxx"; then
786                 sh="$xxx"
787         else
788                 : Build up a list and do a single loop so we can 'break' out.
789                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
790                 for xxx in sh bash ksh pdksh ash; do
791                         for p in $pth; do
792                                 try="$try ${p}/${xxx}"
793                         done
794                 done
795                 for xxx in $try; do
796                         if test -f "$xxx"; then
797                                 sh="$xxx";
798                                 echo "Your Bourne shell appears to be in $sh."
799                                 break
800                         elif test -f "$xxx.exe"; then
801                                 sh="$xxx";
802                                 echo "Hmm.  Your Bourne shell appears to be in $sh."
803                                 break
804                         fi
805                 done
806         fi
807         ;;
808 esac
809
810 case "$sh" in
811 '')     cat <<EOM >&2
812 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
813 Usually it's in /bin/sh.  How did you even get this far?
814 Please contact me (Chip Salzenberg) at chip@perl.com and 
815 we'll try to straigten this all out.
816 EOM
817         exit 1
818         ;;
819 esac
820
821 : see if sh knows # comments
822 if `$sh -c '#' >/dev/null 2>&1`; then
823         shsharp=true
824         spitshell=cat
825         echo " "
826         xcat=/bin/cat
827         test -f $xcat || xcat=/usr/bin/cat
828         echo "#!$xcat" >try
829         $eunicefix try
830         chmod +x try
831         ./try > today
832         if test -s today; then
833                 sharpbang='#!'
834         else
835                 echo "#! $xcat" > try
836                 $eunicefix try
837                 chmod +x try
838                 ./try > today
839                 if test -s today; then
840                         sharpbang='#! '
841                 else
842                         echo "Okay, let's see if #! works on this system..."
843                         echo "It's just a comment."
844                         sharpbang=': use '
845                 fi
846         fi
847 else
848         echo "Your $sh doesn't grok # comments--I will strip them later on."
849         shsharp=false
850         cd ..
851         echo "exec grep -v '^[  ]*#'" >spitshell
852         chmod +x spitshell
853         $eunicefix spitshell
854         spitshell=`pwd`/spitshell
855         cd UU
856         echo "I presume that if # doesn't work, #! won't work either!"
857         sharpbang=': use '
858 fi
859 rm -f try today
860
861 : figure out how to guarantee sh startup
862 case "$startsh" in
863 '') startsh=${sharpbang}${sh} ;;
864 *)
865 esac
866 cat >try <<EOSS
867 $startsh
868 set abc
869 test "$?abc" != 1
870 EOSS
871
872 chmod +x try
873 $eunicefix try
874 if ./try; then
875         : echo "Yup, it does."
876 else
877         echo "Hmm.  '$startsh' didn't work."
878         echo "You may have to fix up the shell scripts to make sure sh runs them."
879 fi
880 rm -f try
881
882 : script used to extract .SH files with variable substitutions
883 cat >extract <<EOS
884 $startsh
885 EOS
886 cat >>extract <<'EOS'
887 CONFIG=true
888 echo "Doing variable substitutions on .SH files..."
889 if test -f MANIFEST; then
890         shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
891         : Pick up possible extension manifests.
892         for dir in ext/* ; do
893                 if test -f $dir/MANIFEST; then
894                         xxx=`awk '{print $1}' < $dir/MANIFEST | 
895                                 sed -n "/\.SH$/ s@^@$dir/@p"`
896                         shlist="$shlist $xxx"
897                 fi
898         done
899         set x $shlist
900 else
901         echo "(Looking for .SH files under the current directory.)"
902         set x `find . -name "*.SH" -print`
903 fi
904 shift
905 case $# in
906 0) set x *.SH; shift;;
907 esac
908 if test ! -f $1; then
909         shift
910 fi
911 for file in $*; do
912         case "$file" in
913         */*)
914                 dir=`expr X$file : 'X\(.*\)/'`
915                 file=`expr X$file : 'X.*/\(.*\)'`
916                 (cd $dir && . ./$file)
917                 ;;
918         *)
919                 . ./$file
920                 ;;
921         esac
922 done
923 if test -f config_h.SH; then
924         if test ! -f config.h; then
925         : oops, they left it out of MANIFEST, probably, so do it anyway.
926         . ./config_h.SH
927         fi
928 fi
929 EOS
930
931 : produce awk script to parse command line options
932 cat >options.awk <<'EOF'
933 BEGIN {
934         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
935
936         len = length(optstr);
937         for (i = 1; i <= len; i++) {
938                 c = substr(optstr, i, 1);
939                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
940                 if (a == ":") {
941                         arg[c] = 1;
942                         i++;
943                 }
944                 opt[c] = 1;
945         }
946 }
947 {
948         expect = 0;
949         str = $0;
950         if (substr(str, 1, 1) != "-") {
951                 printf("'%s'\n", str);
952                 next;
953         }
954         len = length($0);
955         for (i = 2; i <= len; i++) {
956                 c = substr(str, i, 1);
957                 if (!opt[c]) {
958                         printf("-%s\n", substr(str, i));
959                         next;
960                 }
961                 printf("-%s\n", c);
962                 if (arg[c]) {
963                         if (i < len)
964                                 printf("'%s'\n", substr(str, i + 1));
965                         else
966                                 expect = 1;
967                         next;
968                 }
969         }
970 }
971 END {
972         if (expect)
973                 print "?";
974 }
975 EOF
976
977 : process the command line options
978 set X `for arg in "$@"; do echo "X$arg"; done |
979         sed -e s/X// | awk -f options.awk`
980 eval "set $*"
981 shift
982 rm -f options.awk
983
984 : set up default values
985 fastread=''
986 reuseval=false
987 config_sh=''
988 alldone=''
989 error=''
990 silent=''
991 extractsh=''
992 override=''
993 knowitall=''
994
995 rm -f optdef.sh
996 cat >optdef.sh <<EOS
997 $startsh
998 EOS
999
1000 : option parsing
1001 while test $# -gt 0; do
1002         case "$1" in
1003         -d) shift; fastread=yes;;
1004         -e) shift; alldone=cont;;
1005         -f)
1006                 shift
1007                 cd ..
1008                 if test -r "$1"; then
1009                         config_sh="$1"
1010                 else
1011                         echo "$me: cannot read config file $1." >&2
1012                         error=true
1013                 fi
1014                 cd UU
1015                 shift;;
1016         -h) shift; error=true;;
1017         -r) shift; reuseval=true;;
1018         -s) shift; silent=true;;
1019         -E) shift; alldone=exit;;
1020         -K) shift; knowitall=true;;
1021         -O) shift; override=true;;
1022         -S) shift; extractsh=true;;
1023         -D)
1024                 shift
1025                 case "$1" in
1026                 *=)
1027                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1028                         echo "$me: ignoring -D $1" >&2
1029                         ;;
1030                 *=*) echo "$1" | \
1031                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1032                 *) echo "$1='define'" >> optdef.sh;;
1033                 esac
1034                 shift
1035                 ;;
1036         -U)
1037                 shift
1038                 case "$1" in
1039                 *=) echo "$1" >> optdef.sh;;
1040                 *=*)
1041                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1042                         echo "$me: ignoring -U $1" >&2
1043                         ;;
1044                 *) echo "$1='undef'" >> optdef.sh;;
1045                 esac
1046                 shift
1047                 ;;
1048         -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1049                 exit 0;;
1050         --) break;;
1051         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1052         *) break;;
1053         esac
1054 done
1055
1056 case "$error" in
1057 true)
1058         cat >&2 <<EOM
1059 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1060                  [-U symbol] [-U symbol=]
1061   -d : use defaults for all answers.
1062   -e : go on without questioning past the production of config.sh.
1063   -f : specify an alternate default configuration file.
1064   -h : print this help message and exit (with an error status).
1065   -r : reuse C symbols value if possible (skips costly nm extraction).
1066   -s : silent mode, only echoes questions and essential information.
1067   -D : define symbol to have some value:
1068          -D symbol         symbol gets the value 'define'
1069          -D symbol=value   symbol gets the value 'value'
1070   -E : stop at the end of questions, after having produced config.sh.
1071   -K : do not use unless you know what you are doing.
1072   -O : let -D and -U override definitions from loaded configuration file.
1073   -S : perform variable substitutions on all .SH files (can mix with -f)
1074   -U : undefine symbol:
1075          -U symbol    symbol gets the value 'undef'
1076          -U symbol=   symbol gets completely empty
1077   -V : print version number and exit (with a zero status).
1078 EOM
1079         exit 1
1080         ;;
1081 esac
1082
1083 exec 4>&1
1084 case "$silent" in
1085 true) exec 1>/dev/null;;
1086 esac
1087
1088 : run the defines and the undefines, if any, but leave the file out there...
1089 touch optdef.sh
1090 . ./optdef.sh
1091
1092 case "$extractsh" in
1093 true)
1094         case "$config_sh" in
1095         '') config_sh='config.sh'; config='./config.sh';;
1096         /*) config="$config_sh";;
1097         *) config="./$config_sh";;
1098         esac
1099         echo " "
1100         echo "Fetching answers from $config_sh..."
1101         cd ..
1102         . $config
1103         test "$override" && . ./optdef.sh
1104         echo " "
1105         . ./UU/extract
1106         rm -rf UU
1107         echo "Done."
1108         exit 0
1109         ;;
1110 esac
1111
1112 : set package name
1113 package=perl5
1114 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1115 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1116 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1117 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1118 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1119 esac
1120
1121 : Eunice requires " " instead of "", can you believe it
1122 echo " "
1123 : Here we go...
1124 echo "Beginning of configuration questions for $package."
1125
1126 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1127
1128 : Some greps do not return status, grrr.
1129 echo "grimblepritz" >grimble
1130 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1131         contains=contains
1132 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1133         contains=grep
1134 else
1135         contains=contains
1136 fi
1137 rm -f grimble
1138 : the following should work in any shell
1139 case "$contains" in
1140 contains*)
1141         echo " "
1142         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1143         cat >contains <<'EOSS'
1144 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1145 EOSS
1146 chmod +x contains
1147 esac
1148
1149 : first determine how to suppress newline on echo command
1150 echo " "
1151 echo "Checking echo to see how to suppress newlines..."
1152 (echo "hi there\c" ; echo " ") >.echotmp
1153 if $contains c .echotmp >/dev/null 2>&1 ; then
1154         echo "...using -n."
1155         n='-n'
1156         c=''
1157 else
1158         cat <<'EOM'
1159 ...using \c
1160 EOM
1161         n=''
1162         c='\c'
1163 fi
1164 echo $n "The star should be here-->$c"
1165 echo '*'
1166 rm -f .echotmp
1167
1168 : Now test for existence of everything in MANIFEST
1169 echo " "
1170 if test -f ../MANIFEST; then
1171         echo "First let's make sure your kit is complete.  Checking..." >&4
1172         awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1173         rm -f missing
1174         for filelist in x??; do
1175                 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1176         done
1177         if test -s missing; then
1178                 cat missing >&4
1179                 cat >&4 <<'EOM'
1180
1181 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1182
1183 You have the option of continuing the configuration process, despite the
1184 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1185 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1186 and contact the author (chip@perl.com).
1187
1188 EOM
1189                 echo $n "Continue? [n] $c" >&4
1190                 read ans
1191                 case "$ans" in
1192                 y*)
1193                         echo "Continuing..." >&4
1194                         rm -f missing
1195                         ;;
1196                 *)
1197                         echo "ABORTING..." >&4
1198                         kill $$
1199                         ;;
1200                 esac
1201         else
1202                 echo "Looks good..." >&4
1203         fi
1204 else
1205         echo "There is no MANIFEST file.  I hope your kit is complete !"
1206 fi
1207 rm -f missing x??
1208
1209 : compute the number of columns on the terminal for proper question formatting
1210 case "$COLUMNS" in
1211 '') COLUMNS='80';;
1212 esac
1213
1214 : set up the echo used in my read
1215 myecho="case \"\$xxxm\" in
1216 '') echo $n \"\$rp $c\" >&4;;
1217 *) case \"\$rp\" in
1218         '') echo $n \"[\$xxxm] $c\";;
1219         *)
1220                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1221                         echo \"\$rp\" >&4
1222                         echo $n \"[\$xxxm] $c\" >&4
1223                 else
1224                         echo $n \"\$rp [\$xxxm] $c\" >&4
1225                 fi
1226                 ;;
1227         esac;;
1228 esac"
1229
1230 : now set up to do reads with possible shell escape and default assignment
1231 cat <<EOSC >myread
1232 $startsh
1233 xxxm=\$dflt
1234 $myecho
1235 ans='!'
1236 case "\$fastread" in
1237 yes) case "\$dflt" in
1238         '') ;;
1239         *) ans='';
1240                 case "\$silent-\$rp" in
1241                 true-) ;;
1242                 *) echo " " >&4;;
1243                 esac;;
1244         esac;;
1245 *) case "\$silent" in
1246         true) case "\$rp" in
1247                 '') ans='';;
1248                 esac;;
1249         esac;;
1250 esac
1251 while expr "X\$ans" : "X!" >/dev/null; do
1252         read answ
1253         set x \$xxxm
1254         shift
1255         aok=''; eval ans="\\"\$answ\\"" && aok=y
1256         case  "\$answ" in
1257         "\$ans")
1258                 case "\$ans" in
1259                 \\&*)
1260                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1261                         shift
1262                         case "\$1" in
1263                         -d)
1264                                 fastread=yes
1265                                 echo "(OK, I'll run with -d after this question.)" >&4
1266                                 ;;
1267                         -*)
1268                                 echo "*** Sorry, \$1 not supported yet." >&4
1269                                 ;;
1270                         esac
1271                         $myecho
1272                         ans=!
1273                         ;;
1274                 "!")
1275                         sh 1>&4
1276                         echo " "
1277                         $myecho
1278                         ;;
1279                 !*)
1280                         set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1281                         shift
1282                         sh 1>&4 -c "\$*"
1283                         echo " "
1284                         $myecho
1285                         ;;
1286                 esac;;
1287         *)
1288                 case "\$aok" in
1289                 y)
1290                         echo "*** Substitution done -- please confirm."
1291                         xxxm="\$ans"
1292                         ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1293                         xxxm="\$ans"
1294                         ans=!
1295                         ;;
1296                 *)
1297                         echo "*** Error -- try again."
1298                         ans=!
1299                         ;;
1300                 esac
1301                 $myecho
1302                 ;;
1303         esac
1304         case "\$ans\$xxxm\$nostick" in
1305         '')
1306                 ans=!
1307                 $myecho
1308                 ;;
1309         esac
1310 done
1311 case "\$ans" in
1312 '') ans="\$xxxm";;
1313 esac
1314 EOSC
1315
1316 : create .config dir to save info across Configure sessions
1317 test -d ../.config || mkdir ../.config
1318 cat >../.config/README <<EOF
1319 This directory created by Configure to save information that should
1320 persist across sessions.
1321
1322 You may safely delete it if you wish.
1323 EOF
1324
1325 : general instructions
1326 needman=true
1327 firsttime=true
1328 user=`(logname) 2>/dev/null`
1329 case "$user" in "")
1330         user=`whoami 2>&1` ;;
1331 esac
1332 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1333         firsttime=false
1334         echo " "
1335         rp='Would you like to see the instructions?'
1336         dflt=n
1337         . ./myread
1338         case "$ans" in
1339         [yY]*) ;;
1340         *) needman=false;;
1341         esac
1342 fi
1343 if $needman; then
1344         cat <<EOH
1345  
1346 This installation shell script will examine your system and ask you questions
1347 to determine how the perl5 package should be installed. If you get
1348 stuck on a question, you may use a ! shell escape to start a subshell or
1349 execute a command.  Many of the questions will have default answers in square
1350 brackets; typing carriage return will give you the default.
1351
1352 On some of the questions which ask for file or directory names you are allowed
1353 to use the ~name construct to specify the login directory belonging to "name",
1354 even if you don't have a shell which knows about that.  Questions where this is
1355 allowed will be marked "(~name ok)".
1356
1357 EOH
1358         rp=''
1359         dflt='Type carriage return to continue'
1360         . ./myread
1361         cat <<'EOH'
1362
1363 The prompter used in this script allows you to use shell variables and
1364 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1365 in the default answer, as if the default line was a set of arguments given to a
1366 script shell.  This means you may also use $* to repeat the whole default line,
1367 so you do not have to re-type everything to add something to the default.
1368
1369 Everytime there is a substitution, you will have to confirm.  If there is an
1370 error (e.g. an unmatched backtick), the default answer will remain unchanged
1371 and you will be prompted again.
1372
1373 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1374 the questions and use the computed defaults (or the previous answers if there
1375 was already a config.sh file). Type 'Configure -h' for a list of options.
1376 You may also start interactively and then answer '& -d' at any prompt to turn
1377 on the non-interactive behavior for the remainder of the execution.
1378
1379 EOH
1380         . ./myread
1381         cat <<EOH
1382
1383 Much effort has been expended to ensure that this shell script will run on any
1384 Unix system.  If despite that it blows up on yours, your best bet is to edit
1385 Configure and run it again.  If you can't run Configure for some reason,
1386 you'll have to generate a config.sh file by hand.  Whatever problems you
1387 have, let me (chip@perl.com) know how I blew it.
1388
1389 This installation script affects things in two ways:
1390
1391 1) it may do direct variable substitutions on some of the files included
1392    in this kit.
1393 2) it builds a config.h file for inclusion in C programs.  You may edit
1394    any of these files as the need arises after running this script.
1395
1396 If you make a mistake on a question, there is no easy way to back up to it
1397 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1398 files.  Configure will offer to let you do this before it runs the SH files.
1399
1400 EOH
1401         dflt='Type carriage return to continue'
1402         . ./myread
1403         case "$firsttime" in
1404         true) echo $user >>../.config/instruct;;
1405         esac
1406 fi
1407
1408 : find out where common programs are
1409 echo " "
1410 echo "Locating common programs..." >&4
1411 cat <<EOSC >loc
1412 $startsh
1413 case \$# in
1414 0) exit 1;;
1415 esac
1416 thing=\$1
1417 shift
1418 dflt=\$1
1419 shift
1420 for dir in \$*; do
1421         case "\$thing" in
1422         .)
1423         if test -d \$dir/\$thing; then
1424                 echo \$dir
1425                 exit 0
1426         fi
1427         ;;
1428         *)
1429         for thisthing in \$dir/\$thing; do
1430                 : just loop through to pick last item
1431         done
1432         if test -f \$thisthing; then
1433                 echo \$thisthing
1434                 exit 0
1435         elif test -f \$dir/\$thing.exe; then
1436                 : on Eunice apparently
1437                 echo \$dir/\$thing
1438                 exit 0
1439         fi
1440         ;;
1441         esac
1442 done
1443 echo \$dflt
1444 exit 1
1445 EOSC
1446 chmod +x loc
1447 $eunicefix loc
1448 loclist="
1449 awk
1450 cat
1451 comm
1452 cp
1453 echo
1454 expr
1455 find
1456 grep
1457 ls
1458 mkdir
1459 rm
1460 sed
1461 sort
1462 touch
1463 tr
1464 uniq
1465 "
1466 trylist="
1467 Mcc
1468 byacc
1469 cpp
1470 csh
1471 date
1472 egrep
1473 gzip
1474 less
1475 line
1476 ln
1477 more
1478 nroff
1479 perl
1480 pg
1481 sendmail
1482 test
1483 uname
1484 zip
1485 "
1486 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1487 pth="$pth /lib /usr/lib"
1488 for file in $loclist; do
1489         xxx=`./loc $file $file $pth`
1490         eval $file=$xxx
1491         eval _$file=$xxx
1492         case "$xxx" in
1493         /*)
1494                 echo $file is in $xxx.
1495                 ;;
1496         ?:[\\/]*)
1497                 echo $file is in $xxx.
1498                 ;;
1499         *)
1500                 echo "I don't know where '$file' is, and my life depends on it." >&4
1501                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1502                 exit 1
1503                 ;;
1504         esac
1505 done
1506 echo " "
1507 echo "Don't worry if any of the following aren't found..."
1508 say=offhand
1509 for file in $trylist; do
1510         xxx=`./loc $file $file $pth`
1511         eval $file=$xxx
1512         eval _$file=$xxx
1513         case "$xxx" in
1514         /*)
1515                 echo $file is in $xxx.
1516                 ;;
1517         ?:[\\/]*)
1518                 echo $file is in $xxx.
1519                 ;;
1520         *)
1521                 echo "I don't see $file out there, $say."
1522                 say=either
1523                 ;;
1524         esac
1525 done
1526 case "$egrep" in
1527 egrep)
1528         echo "Substituting grep for egrep."
1529         egrep=$grep
1530         ;;
1531 esac
1532 case "$ln" in
1533 ln)
1534         echo "Substituting cp for ln."
1535         ln=$cp
1536         ;;
1537 esac
1538 case "$test" in
1539 test)
1540         echo "Hopefully test is built into your sh."
1541         ;;
1542 *)
1543         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1544                 echo "Using the test built into your sh."
1545                 test=test
1546                 _test=test
1547         fi
1548         ;;
1549 esac
1550 case "$echo" in
1551 echo)
1552         echo "Hopefully echo is built into your sh."
1553         ;;
1554 '') ;;
1555 *)
1556         echo " "
1557 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1558         $echo $n "hi there$c" >foo1
1559         echo $n "hi there$c" >foo2
1560         if cmp foo1 foo2 >/dev/null 2>&1; then
1561                 echo "They are compatible.  In fact, they may be identical."
1562         else
1563                 case "$n" in
1564                 '-n') n='' c='\c';;
1565                 *) n='-n' c='';;
1566                 esac
1567                 cat <<FOO
1568 They are not compatible!  You are probably running ksh on a non-USG system.
1569 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1570 have echo built in and we may have to run some Bourne shell scripts.  That
1571 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1572
1573 FOO
1574                 $echo $n "The star should be here-->$c"
1575                 $echo "*"
1576         fi
1577         $rm -f foo1 foo2
1578         ;;
1579 esac
1580
1581 : determine whether symbolic links are supported
1582 echo " "
1583 $touch blurfl
1584 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1585         echo "Symbolic links are supported." >&4
1586         lns="$ln -s"
1587 else
1588         echo "Symbolic links are NOT supported." >&4
1589         lns="$ln"
1590 fi
1591 $rm -f blurfl sym
1592
1593 : see whether [:lower:] and [:upper:] are supported character classes
1594 echo " "
1595 up='[A-Z]'
1596 low='[a-z]'
1597 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1598 ABYZ)
1599         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1600         up='[:upper:]'
1601         low='[:lower:]'
1602         ;;
1603 *)
1604         echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1605         ;;
1606 esac
1607 : set up the translation script tr, must be called with ./tr of course
1608 cat >tr <<EOSC
1609 $startsh
1610 case "\$1\$2" in
1611 '[A-Z][a-z]') exec $tr '$up' '$low';;
1612 '[a-z][A-Z]') exec $tr '$low' '$up';;
1613 esac
1614 exec $tr "\$@"
1615 EOSC
1616 chmod +x tr
1617 $eunicefix tr
1618
1619 : Try to determine whether config.sh was made on this system
1620 case "$config_sh" in
1621 '')
1622 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1623 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1624         ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1625 newmyuname="$myuname"
1626 dflt=n
1627 case "$knowitall" in
1628 '')
1629         if test -f ../config.sh; then
1630                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1631                         eval "`grep myuname= ../config.sh`"
1632                 fi
1633                 if test "X$myuname" = "X$newmyuname"; then
1634                         dflt=y
1635                 fi
1636         fi
1637         ;;
1638 *) dflt=y;;
1639 esac
1640
1641 : Get old answers from old config file if Configure was run on the
1642 : same system, otherwise use the hints.
1643 hint=default
1644 cd ..
1645 if test -f config.sh; then
1646         echo " "
1647         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1648         . UU/myread
1649         case "$ans" in
1650         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1651         *)  echo "Fetching default answers from your old config.sh file..." >&4
1652                 tmp_n="$n"
1653                 tmp_c="$c"
1654                 tmp_sh="$sh"
1655                 . ./config.sh
1656                 cp config.sh UU
1657                 n="$tmp_n"
1658                 c="$tmp_c"
1659                 : Older versions did not always set $sh.  Catch re-use of such
1660                 : an old config.sh.
1661                 case "$sh" in
1662                 '') sh="$tmp_sh" ;;
1663                 esac
1664                 hint=previous
1665                 ;;
1666         esac
1667 fi
1668 if test ! -f config.sh; then
1669         $cat <<EOM
1670
1671 First time through, eh?  I have some defaults handy for the following systems:
1672
1673 EOM
1674         cd hints; ls -C *.sh | $sed 's/\.sh/   /g' >&4
1675         dflt=''
1676         : Half the following guesses are probably wrong... If you have better
1677         : tests or hints, please send them to chip@perl.com
1678         : The metaconfig authors would also appreciate a copy...
1679         $test -f /irix && osname=irix
1680         $test -f /xenix && osname=sco_xenix
1681         $test -f /dynix && osname=dynix
1682         $test -f /dnix && osname=dnix
1683         $test -f /lynx.os && osname=lynxos
1684         $test -f /unicos && osname=unicos && osvers=`$uname -r`
1685         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1686         $test -f /bin/mips && /bin/mips && osname=mips
1687         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1688                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1689         $test -d /usr/apollo/bin && osname=apollo
1690         $test -f /etc/saf/_sactab && osname=svr4
1691         $test -d /usr/include/minix && osname=minix
1692         if $test -d /MachTen; then
1693                 osname=machten 
1694                 if $test -x /sbin/version; then
1695                         osvers=`/sbin/version | $awk '{print $2}' | 
1696                         $sed -e 's/[A-Za-z]$//'`
1697                 elif $test -x /usr/etc/version; then
1698                         osvers=`/usr/etc/version | $awk '{print $2}' | 
1699                         $sed -e 's/[A-Za-z]$//'`
1700                 else
1701                         osvers="$2.$3"
1702                 fi
1703         fi
1704         if $test -f $uname; then
1705                 set X $myuname
1706                 shift
1707
1708                 case "$5" in
1709                 fps*) osname=fps ;;
1710                 mips*)
1711                         case "$4" in
1712                         umips) osname=umips ;;
1713                         *) osname=mips ;;
1714                         esac;;
1715                 [23]100) osname=mips ;;
1716                 next*) osname=next ;;
1717                 i386*)
1718                         if $test -f /etc/kconfig; then
1719                                 osname=isc
1720                                 if test "$lns" = "ln -s"; then
1721                                         osvers=4
1722                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1723                                         osvers=3
1724                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1725                                         osvers=2
1726                                 fi
1727                         fi
1728                         ;;
1729                 esac
1730
1731                 case "$1" in
1732                 aix) osname=aix
1733                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1734                         case "$tmp" in
1735                         'not found') osvers="$4"."$3" ;;
1736                         '<3240'|'<>3240') osvers=3.2.0 ;;
1737                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1738                         '=3250'|'>3250') osvers=3.2.5 ;;
1739                         *) osvers=$tmp;;
1740                         esac
1741                         ;;
1742                 *dc.osx) osname=dcosx
1743                         osvers="$3"
1744                         ;;
1745                 dnix) osname=dnix
1746                         osvers="$3"
1747                         ;;
1748                 domainos) osname=apollo
1749                         osvers="$3"
1750                         ;;
1751                 dgux) osname=dgux 
1752                         osvers="$3"
1753                         ;;
1754                 dynixptx*) osname=dynixptx
1755                         osvers="$3"
1756                         ;;
1757                 freebsd) osname=freebsd 
1758                         osvers="$3" ;;
1759                 genix) osname=genix ;;
1760                 hp*) osname=hpux 
1761                         case "$3" in
1762                         *.08.*) osvers=9 ;;
1763                         *.09.*) osvers=9 ;;
1764                         *.10.*) osvers=10 ;;
1765                         *)      osvers="$3" ;;
1766                         esac
1767                         ;;
1768                 irix*) osname=irix
1769                         case "$3" in
1770                         4*) osvers=4 ;;
1771                         5*) osvers=5 ;;
1772                         *)      osvers="$3" ;;
1773                         esac
1774                         ;;
1775                 linux) osname=linux
1776                         case "$3" in
1777                         *)      osvers="$3" ;;
1778                         esac
1779                         ;;
1780                 netbsd*) osname=netbsd 
1781                         osvers="$3"
1782                         ;;
1783                 news-os) osvers="$3"
1784                         case "$3" in
1785                         4*) osname=newsos4 ;;
1786                         *) osname=newsos ;;
1787                         esac
1788                         ;;
1789                 bsd386) osname=bsd386
1790                         osvers=`$uname -r`
1791                         ;;
1792                 powerux | power_ux | powermax_os | powermaxos | \
1793                 powerunix | power_unix) osname=powerux
1794                         osvers="$3"
1795                         ;;
1796                 next*) osname=next ;;
1797                 solaris) osname=solaris
1798                         case "$3" in
1799                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1800                         *)      osvers="$3" ;;
1801                         esac
1802                         ;;
1803                 sunos) osname=sunos
1804                         case "$3" in
1805                         5*) osname=solaris
1806                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1807                         *)      osvers="$3" ;;
1808                         esac
1809                         ;;
1810                 titanos) osname=titanos
1811                         case "$3" in
1812                         1*) osvers=1 ;;
1813                         2*) osvers=2 ;;
1814                         3*) osvers=3 ;;
1815                         4*) osvers=4 ;;
1816                         *)      osvers="$3" ;;
1817                         esac
1818                         ;;
1819                 ultrix) osname=ultrix
1820                         osvers="$3"
1821                         ;;
1822                 osf1|mls+)      case "$5" in
1823                                 alpha)
1824                                         osname=dec_osf
1825                                         osvers=`echo "$3" | sed 's/^[vt]//'`
1826                                         ;;
1827                         hp*)    osname=hp_osf1  ;;
1828                         mips)   osname=mips_osf1 ;;
1829                         esac
1830                         ;;
1831                 uts) osname=uts 
1832                         osvers="$3"
1833                         ;;
1834                 qnx) osname=qnx
1835                         osvers="$4"
1836                         ;;
1837                 $2) case "$osname" in
1838                         *isc*) ;;
1839                         *freebsd*) ;;
1840                         svr*)
1841                                 : svr4.x or possibly later
1842                                 case "svr$3" in 
1843                                 ${osname}*)
1844                                         osname=svr$3
1845                                         osvers=$4
1846                                         ;;
1847                                 esac
1848                                 case "$osname" in
1849                                 svr4.0)
1850                                         : Check for ESIX
1851                                         if test -f /stand/boot ; then
1852                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1853                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
1854                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1855                                                         if test -n "$isesix"; then
1856                                                                 osname=esix4
1857                                                         fi
1858                                                 fi
1859                                         fi
1860                                         ;;
1861                                 esac
1862                                 ;;
1863                         *)      if test -f /etc/systemid; then
1864                                         osname=sco
1865                                         set `echo $3 | $sed 's/\./ /g'` $4
1866                                         if $test -f sco_$1_$2_$3.sh; then
1867                                                 osvers=$1.$2.$3
1868                                         elif $test -f sco_$1_$2.sh; then
1869                                                 osvers=$1.$2
1870                                         elif $test -f sco_$1.sh; then
1871                                                 osvers=$1
1872                                         fi
1873                                 else
1874                                         case "$osname" in
1875                                         '') : Still unknown.  Probably a generic Sys V.
1876                                                 osname="sysv"
1877                                                 osvers="$3"
1878                                                 ;;
1879                                         esac
1880                                 fi
1881                                 ;;
1882                         esac
1883                         ;;
1884                 *)      case "$osname" in
1885                         '') : Still unknown.  Probably a generic BSD.
1886                                 osname="$1"
1887                                 osvers="$3"
1888                                 ;;
1889                         esac
1890                         ;;
1891                 esac
1892         else
1893                 if test -f /vmunix -a -f newsos4.sh; then
1894                         (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1895                         if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1896                                 osname=newsos4
1897                         fi
1898                         $rm -f ../UU/kernel.what
1899                 elif test -d c:/.; then
1900                         set X $myuname
1901                         osname=os2
1902                         osvers="$5"
1903                 fi
1904         fi
1905         
1906         : Now look for a hint file osname_osvers, unless one has been
1907         : specified already.
1908         case "$hintfile" in
1909         ''|' ')
1910                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1911                 : Also try without trailing minor version numbers.
1912                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1913                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1914                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1915                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1916                 case "$file" in
1917                 '') dflt=none ;;
1918                 *)  case "$osvers" in
1919                         '') dflt=$file
1920                                 ;;
1921                         *)  if $test -f $file.sh ; then
1922                                         dflt=$file
1923                                 elif $test -f $xfile.sh ; then
1924                                         dflt=$xfile
1925                                 elif $test -f $xxfile.sh ; then
1926                                         dflt=$xxfile
1927                                 elif $test -f $xxxfile.sh ; then
1928                                         dflt=$xxxfile
1929                                 elif $test -f $xxxxfile.sh ; then
1930                                         dflt=$xxxxfile
1931                                 elif $test -f "${osname}.sh" ; then
1932                                         dflt="${osname}"
1933                                 else
1934                                         dflt=none
1935                                 fi
1936                                 ;;
1937                         esac
1938                         ;;
1939                 esac
1940                 ;;
1941         *)
1942                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1943                 ;;
1944         esac
1945
1946         $cat <<EOM
1947
1948 You may give one or more space-separated answers, or "none" if appropriate.
1949 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1950
1951 EOM
1952         rp="Which of these apply, if any?"
1953         . ../UU/myread
1954         tans=$ans
1955         for file in $tans; do
1956                 if $test -f $file.sh; then
1957                         . ./$file.sh
1958                         $cat $file.sh >> ../UU/config.sh
1959                 elif $test X$tans = X -o X$tans = Xnone ; then
1960                         : nothing
1961                 else
1962                         : Give one chance to correct a possible typo.
1963                         echo "$file.sh does not exist"
1964                         dflt=$file
1965                         rp="hint to use instead?"
1966                         . ../UU/myread
1967                         for file in $ans; do
1968                                 if $test -f "$file.sh"; then
1969                                         . ./$file.sh
1970                                         $cat $file.sh >> ../UU/config.sh
1971                                 elif $test X$ans = X -o X$ans = Xnone ; then
1972                                         : nothing
1973                                 else
1974                                         echo "$file.sh does not exist -- ignored."
1975                                 fi
1976                         done
1977                 fi
1978         done
1979
1980         hint=recommended
1981         : Remember our hint file for later.
1982         if $test -f "$file.sh" ; then
1983                 hintfile="$file"
1984         else
1985                 hintfile=''
1986         fi
1987
1988         cd ..
1989 fi
1990 cd UU
1991 ;;
1992 *)
1993         echo " "
1994         echo "Fetching default answers from $config_sh..." >&4
1995         tmp_n="$n"
1996         tmp_c="$c"
1997         cd ..
1998         cp $config_sh config.sh 2>/dev/null
1999         chmod +w config.sh
2000         . ./config.sh
2001         cd UU
2002         cp ../config.sh .
2003         n="$tmp_n"
2004         c="$tmp_c"
2005         hint=previous
2006         ;;
2007 esac
2008 test "$override" && . ./optdef.sh
2009 myuname="$newmyuname"
2010
2011 : Restore computed paths
2012 for file in $loclist $trylist; do
2013         eval $file="\$_$file"
2014 done
2015
2016 cat << EOM
2017
2018 Configure uses the operating system name and version to set some defaults.
2019 The default value is probably right if the name rings a bell. Otherwise,
2020 since spelling matters for me, either accept the default or answer "none"
2021 to leave it blank.
2022
2023 EOM
2024 case "$osname" in
2025         ''|' ')
2026                 case "$hintfile" in
2027                 ''|' '|none) dflt=none ;;
2028                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2029                 esac
2030                 ;;
2031         *) dflt="$osname" ;;
2032 esac
2033 rp="Operating system name?"
2034 . ./myread
2035 case "$ans" in
2036 none)  osname='' ;;
2037 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2038 esac
2039 echo " "
2040 case "$osvers" in
2041         ''|' ')
2042                 case "$hintfile" in
2043                 ''|' '|none) dflt=none ;;
2044                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2045                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2046                         case "$dflt" in
2047                         ''|' ') dflt=none ;;
2048                         esac
2049                         ;;
2050                 esac
2051                 ;;
2052         *) dflt="$osvers" ;;
2053 esac
2054 rp="Operating system version?"
2055 . ./myread
2056 case "$ans" in
2057 none)  osvers='' ;;
2058 *) osvers="$ans" ;;
2059 esac
2060
2061
2062
2063 : who configured the system
2064 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2065 cf_by=`(logname) 2>/dev/null`
2066 case "$cf_by" in "")
2067         cf_by=`(whoami) 2>/dev/null`
2068         case "$cf_by" in "")
2069                 cf_by=unknown ;;
2070         esac ;;
2071 esac
2072
2073 : determine the architecture name
2074 echo " "
2075 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2076         tarch=`arch`"-$osname"
2077 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2078         if uname -m > tmparch 2>&1 ; then
2079                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2080                         -e 's/$/'"-$osname/" tmparch`
2081         else
2082                 tarch="$osname"
2083         fi
2084         $rm -f tmparch
2085 else
2086         tarch="$osname"
2087 fi
2088 case "$myarchname" in
2089 ''|"$tarch") ;;
2090 *)
2091         echo "(Your architecture name used to be $myarchname.)"
2092         archname=''
2093         ;;
2094 esac
2095 case "$archname" in
2096 '') dflt="$tarch";;
2097 *) dflt="$archname";;
2098 esac
2099 rp='What is your architecture name'
2100 . ./myread
2101 case "$usethreads" in
2102 $define)  archname="$ans-thread"
2103           echo "usethreads selected... architecture name is now $archname." >&4
2104           ;;
2105 *)        archname="$ans" ;;
2106 esac
2107 myarchname="$tarch"
2108
2109 : is AFS running?
2110 echo " "
2111 case "$afs" in
2112 $define|true)   afs=true ;;
2113 $undef|false)   afs=false ;;
2114 *)      if test -d /afs; then
2115                 afs=true
2116         else
2117                 afs=false
2118         fi
2119         ;;
2120 esac
2121 if $afs; then
2122         echo "AFS may be running... I'll be extra cautious then..." >&4
2123 else
2124         echo "AFS does not seem to be running..." >&4
2125 fi
2126
2127 : decide how portable to be.  Allow command line overrides.
2128 case "$d_portable" in
2129 "$undef") ;;
2130 *)      d_portable="$define" ;;
2131 esac
2132
2133 : set up shell script to do ~ expansion
2134 cat >filexp <<EOSS
2135 $startsh
2136 : expand filename
2137 case "\$1" in
2138  ~/*|~)
2139         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2140         ;;
2141  ~*)
2142         if $test -f /bin/csh; then
2143                 /bin/csh -f -c "glob \$1"
2144                 failed=\$?
2145                 echo ""
2146                 exit \$failed
2147         else
2148                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2149                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2150                 if $test ! -d "\$dir"; then
2151                         me=\`basename \$0\`
2152                         echo "\$me: can't locate home directory for: \$name" >&2
2153                         exit 1
2154                 fi
2155                 case "\$1" in
2156                 */*)
2157                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2158                         ;;
2159                 *)
2160                         echo \$dir
2161                         ;;
2162                 esac
2163         fi
2164         ;;
2165 *)
2166         echo \$1
2167         ;;
2168 esac
2169 EOSS
2170 chmod +x filexp
2171 $eunicefix filexp
2172
2173 : now set up to get a file name
2174 cat <<EOS >getfile
2175 $startsh
2176 EOS
2177 cat <<'EOSC' >>getfile
2178 tilde=''
2179 fullpath=''
2180 already=''
2181 skip=''
2182 none_ok=''
2183 exp_file=''
2184 nopath_ok=''
2185 orig_rp="$rp"
2186 orig_dflt="$dflt"
2187
2188 case "$fn" in
2189 *\(*)
2190         expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2191         fn=`echo $fn | sed 's/(.*)//'`
2192         ;;
2193 esac
2194
2195 case "$fn" in
2196 *:*)
2197         loc_file=`expr $fn : '.*:\(.*\)'`
2198         fn=`expr $fn : '\(.*\):.*'`
2199         ;;
2200 esac
2201
2202 case "$fn" in
2203 *~*) tilde=true;;
2204 esac
2205 case "$fn" in
2206 */*) fullpath=true;;
2207 esac
2208 case "$fn" in
2209 *+*) skip=true;;
2210 esac
2211 case "$fn" in
2212 *n*) none_ok=true;;
2213 esac
2214 case "$fn" in
2215 *e*) exp_file=true;;
2216 esac
2217 case "$fn" in
2218 *p*) nopath_ok=true;;
2219 esac
2220
2221 case "$fn" in
2222 *f*) type='File';;
2223 *d*) type='Directory';;
2224 *l*) type='Locate';;
2225 esac
2226
2227 what="$type"
2228 case "$what" in
2229 Locate) what='File';;
2230 esac
2231
2232 case "$exp_file" in
2233 '')
2234         case "$d_portable" in
2235         "$define") ;;
2236         *) exp_file=true;;
2237         esac
2238         ;;
2239 esac
2240
2241 cd ..
2242 while test "$type"; do
2243         redo=''
2244         rp="$orig_rp"
2245         dflt="$orig_dflt"
2246         case "$tilde" in
2247         true) rp="$rp (~name ok)";;
2248         esac
2249         . UU/myread
2250         if test -f UU/getfile.ok && \
2251                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2252         then
2253                 value="$ans"
2254                 ansexp="$ans"
2255                 break
2256         fi
2257         case "$ans" in
2258         none)
2259                 value=''
2260                 ansexp=''
2261                 case "$none_ok" in
2262                 true) type='';;
2263                 esac
2264                 ;;
2265         *)
2266                 case "$tilde" in
2267                 '') value="$ans"
2268                         ansexp="$ans";;
2269                 *)
2270                         value=`UU/filexp $ans`
2271                         case $? in
2272                         0)
2273                                 if test "$ans" != "$value"; then
2274                                         echo "(That expands to $value on this system.)"
2275                                 fi
2276                                 ;;
2277                         *) value="$ans";;
2278                         esac
2279                         ansexp="$value"
2280                         case "$exp_file" in
2281                         '') value="$ans";;
2282                         esac
2283                         ;;
2284                 esac
2285                 case "$fullpath" in
2286                 true)
2287                         case "$ansexp" in
2288                         /*) value="$ansexp" ;;
2289                         *)
2290                                 redo=true
2291                                 case "$already" in
2292                                 true)
2293                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2294                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2295                                         ;;
2296                                 *)
2297                                 echo "Please give a full path name, starting with slash." >&4
2298                                         case "$tilde" in
2299                                         true)
2300                                 echo "Note that using ~name is ok provided it expands well." >&4
2301                                                 already=true
2302                                                 ;;
2303                                         esac
2304                                 esac
2305                                 ;;
2306                         esac
2307                         ;;
2308                 esac
2309                 case "$redo" in
2310                 '')
2311                         case "$type" in
2312                         File)
2313                                 if test -f "$ansexp"; then
2314                                         type=''
2315                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2316                                 then
2317                                         echo "($value is not a plain file, but that's ok.)"
2318                                         type=''
2319                                 fi
2320                                 ;;
2321                         Directory)
2322                                 if test -d "$ansexp"; then
2323                                         type=''
2324                                 fi
2325                                 ;;
2326                         Locate)
2327                                 if test -d "$ansexp"; then
2328                                         echo "(Looking for $loc_file in directory $value.)"
2329                                         value="$value/$loc_file"
2330                                         ansexp="$ansexp/$loc_file"
2331                                 fi
2332                                 if test -f "$ansexp"; then
2333                                         type=''
2334                                 fi
2335                                 case "$nopath_ok" in
2336                                 true)   case "$value" in
2337                                         */*) ;;
2338                                         *)      echo "Assuming $value will be in people's path."
2339                                                 type=''
2340                                                 ;;
2341                                         esac
2342                                         ;;
2343                                 esac
2344                                 ;;
2345                         esac
2346
2347                         case "$skip" in
2348                         true) type='';
2349                         esac
2350
2351                         case "$type" in
2352                         '') ;;
2353                         *)
2354                                 if test "$fastread" = yes; then
2355                                         dflt=y
2356                                 else
2357                                         dflt=n
2358                                 fi
2359                                 rp="$what $value doesn't exist.  Use that name anyway?"
2360                                 . UU/myread
2361                                 dflt=''
2362                                 case "$ans" in
2363                                 y*) type='';;
2364                                 *) echo " ";;
2365                                 esac
2366                                 ;;
2367                         esac
2368                         ;;
2369                 esac
2370                 ;;
2371         esac
2372 done
2373 cd UU
2374 ans="$value"
2375 rp="$orig_rp"
2376 dflt="$orig_dflt"
2377 rm -f getfile.ok
2378 EOSC
2379
2380 : determine root of directory hierarchy where package will be installed.
2381 case "$prefix" in
2382 '')
2383         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2384         ;;
2385 *)
2386         dflt="$prefix"
2387         ;;
2388 esac
2389 $cat <<EOM
2390
2391 By default, $package will be installed in $dflt/bin, manual
2392 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2393 all installation directories. Typically set to /usr/local, but you
2394 may choose /usr if you wish to install $package among your system
2395 binaries. If you wish to have binaries under /bin but manual pages
2396 under /usr/local/man, that's ok: you will be prompted separately
2397 for each of the installation directories, the prefix being only used
2398 to set the defaults.
2399
2400 EOM
2401 fn=d~
2402 rp='Installation prefix to use?'
2403 . ./getfile
2404 oldprefix=''
2405 case "$prefix" in
2406 '') ;;
2407 *)
2408         case "$ans" in
2409         "$prefix") ;;
2410         *) oldprefix="$prefix";;
2411         esac
2412         ;;
2413 esac
2414 prefix="$ans"
2415 prefixexp="$ansexp"
2416
2417 : set the prefixit variable, to compute a suitable default value
2418 prefixit='case "$3" in
2419 ""|none)
2420         case "$oldprefix" in
2421         "") eval "$1=\"\$$2\"";;
2422         *)
2423                 case "$3" in
2424                 "") eval "$1=";;
2425                 none)
2426                         eval "tp=\"\$$2\"";
2427                         case "$tp" in
2428                         ""|" ") eval "$1=\"\$$2\"";;
2429                         *) eval "$1=";;
2430                         esac;;
2431                 esac;;
2432         esac;;
2433 *)
2434         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2435         case "$tp" in
2436         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2437         /*-$oldprefix/*|\~*-$oldprefix/*)
2438                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2439         *) eval "$1=\"\$$2\"";;
2440         esac;;
2441 esac'
2442
2443 : determine where private library files go
2444 : Usual default is /usr/local/lib/perl5.  Also allow things like 
2445 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2446 case "$prefix" in
2447 *perl*) set dflt privlib lib ;;
2448 *)       set dflt privlib lib/$package ;;
2449 esac
2450 eval $prefixit
2451 $cat <<EOM
2452
2453 There are some auxiliary files for $package that need to be put into a
2454 private library directory that is accessible by everyone.
2455
2456 EOM
2457 fn=d~+
2458 rp='Pathname where the private library files will reside?'
2459 . ./getfile
2460 if $test "X$privlibexp" != "X$ansexp"; then
2461         installprivlib=''
2462 fi
2463 privlib="$ans"
2464 privlibexp="$ansexp"
2465 if $afs; then
2466         $cat <<EOM
2467
2468 Since you are running AFS, I need to distinguish the directory in which
2469 private files reside from the directory in which they are installed (and from
2470 which they are presumably copied to the former directory by occult means).
2471
2472 EOM
2473         case "$installprivlib" in
2474         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2475         *) dflt="$installprivlib";;
2476         esac
2477         fn=de~
2478         rp='Where will private files be installed?'
2479         . ./getfile
2480         installprivlib="$ans"
2481 else
2482         installprivlib="$privlibexp"
2483 fi
2484
2485 : set the base revision
2486 baserev=5.0
2487
2488 : get the patchlevel
2489 echo " "
2490 echo "Getting the current patchlevel..." >&4
2491 if $test -r ../patchlevel.h;then
2492         patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2493         subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2494 else
2495         patchlevel=0
2496         subversion=0
2497 fi
2498 $echo $n "(You have $package" $c
2499 case "$package" in
2500 "*$baserev")    ;;
2501 *)              $echo $n " $baserev" $c ;;
2502 esac
2503 $echo $n " patchlevel $patchlevel" $c
2504 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2505 echo ".)"
2506
2507 : set the prefixup variable, to restore leading tilda escape
2508 prefixup='case "$prefixexp" in
2509 "$prefix") ;;
2510 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2511 esac'
2512
2513 : determine where public architecture dependent libraries go
2514 set archlib archlib
2515 eval $prefixit
2516 case "$archlib" in
2517 '')
2518     case "$privlib" in
2519     '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2520         set dflt
2521         eval $prefixup
2522         ;;
2523     *)  if test 0 -eq "$subversion"; then
2524             version=`LC_ALL=C; export LC_ALL; \
2525                      echo $baserev $patchlevel | \
2526                      $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2527         else
2528             version=`LC_ALL=C; export LC_ALL; \
2529                      echo $baserev $patchlevel $subversion | \
2530                      $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2531         fi
2532         dflt="$privlib/$archname/$version"
2533         ;;
2534     esac
2535     ;;
2536 *)
2537     dflt="$archlib"
2538     ;;
2539 esac
2540 cat <<EOM
2541
2542 $spackage contains architecture-dependent library files.  If you are
2543 sharing libraries in a heterogeneous environment, you might store
2544 these files in a separate location.  Otherwise, you can just include
2545 them with the rest of the public library files.
2546
2547 EOM
2548 fn=d+~
2549 rp='Where do you want to put the public architecture-dependent libraries?'
2550 . ./getfile
2551 archlib="$ans"
2552 archlibexp="$ansexp"
2553
2554 if $afs; then
2555         $cat <<EOM
2556
2557 Since you are running AFS, I need to distinguish the directory in
2558 which architecture-dependent library files reside from the directory
2559 in which they are installed (and from which they are presumably copied
2560 to the former directory by occult means).
2561
2562 EOM
2563         case "$installarchlib" in
2564         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2565         *) dflt="$installarchlib";;
2566         esac
2567         fn=de~
2568         rp='Where will architecture-dependent library files be installed?'
2569         . ./getfile
2570         installarchlib="$ans"
2571 else
2572         installarchlib="$archlibexp"
2573 fi
2574 if $test X"$archlib" = X"$privlib"; then
2575         d_archlib="$undef"
2576 else
2577         d_archlib="$define"
2578 fi
2579
2580 : set up the script used to warn in case of inconsistency
2581 cat <<EOS >whoa
2582 $startsh
2583 EOS
2584 cat <<'EOSC' >>whoa
2585 dflt=y
2586 echo " "
2587 echo "*** WHOA THERE!!! ***" >&4
2588 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2589 rp="    Keep the $hint value?"
2590 . ./myread
2591 case "$ans" in
2592 y) td=$was; tu=$was;;
2593 esac
2594 EOSC
2595
2596 : function used to set $1 to $val
2597 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2598 case "$val$was" in
2599 $define$undef) . ./whoa; eval "$var=\$td";;
2600 $undef$define) . ./whoa; eval "$var=\$tu";;
2601 *) eval "$var=$val";;
2602 esac'
2603
2604 : bincompat3 is no more even possible starting with 5.005
2605 d_bincompat3=$undef
2606
2607 : make some quick guesses about what we are up against
2608 echo " "
2609 $echo $n "Hmm...  $c"
2610 echo exit 1 >bsd
2611 echo exit 1 >usg
2612 echo exit 1 >v7
2613 echo exit 1 >osf1
2614 echo exit 1 >eunice
2615 echo exit 1 >xenix
2616 echo exit 1 >venix
2617 echo exit 1 >os2
2618 d_bsd="$undef"
2619 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2620 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2621 then
2622         echo "Looks kind of like an OSF/1 system, but we'll see..."
2623         echo exit 0 >osf1
2624 elif test `echo abc | tr a-z A-Z` = Abc ; then
2625         xxx=`./loc addbib blurfl $pth`
2626         if $test -f $xxx; then
2627         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2628                 echo exit 0 >bsd
2629                 echo exit 0 >usg
2630         else
2631                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2632                         echo "Looks kind of like an extended USG system, but we'll see..."
2633                 else
2634                         echo "Looks kind of like a USG system, but we'll see..."
2635                 fi
2636                 echo exit 0 >usg
2637         fi
2638 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2639         echo "Looks kind of like a BSD system, but we'll see..."
2640         d_bsd="$define"
2641         echo exit 0 >bsd
2642 else
2643         echo "Looks kind of like a Version 7 system, but we'll see..."
2644         echo exit 0 >v7
2645 fi
2646 case "$eunicefix" in
2647 *unixtovms*)
2648         $cat <<'EOI'
2649 There is, however, a strange, musty smell in the air that reminds me of
2650 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2651 EOI
2652         echo exit 0 >eunice
2653         d_eunice="$define"
2654 : it so happens the Eunice I know will not run shell scripts in Unix format
2655         ;;
2656 *)
2657         echo " "
2658         echo "Congratulations.  You aren't running Eunice."
2659         d_eunice="$undef"
2660         ;;
2661 esac
2662 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2663 case "$p_" in
2664 :) ;;
2665 *)
2666         $cat <<'EOI'
2667 I have the feeling something is not exactly right, however...don't tell me...
2668 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2669 EOI
2670         echo exit 0 >os2
2671         ;;
2672 esac
2673 if test -f /xenix; then
2674         echo "Actually, this looks more like a XENIX system..."
2675         echo exit 0 >xenix
2676         d_xenix="$define"
2677 else
2678         echo " "
2679         echo "It's not Xenix..."
2680         d_xenix="$undef"
2681 fi
2682 chmod +x xenix
2683 $eunicefix xenix
2684 if test -f /venix; then
2685         echo "Actually, this looks more like a VENIX system..."
2686         echo exit 0 >venix
2687 else
2688         echo " "
2689         if ./xenix; then
2690                 : null
2691         else
2692                 echo "Nor is it Venix..."
2693         fi
2694 fi
2695 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2696 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2697 $rm -f foo
2698
2699 : see if setuid scripts can be secure
2700 $cat <<EOM
2701
2702 Some kernels have a bug that prevents setuid #! scripts from being
2703 secure.  Some sites have disabled setuid #! scripts because of this.
2704
2705 First let's decide if your kernel supports secure setuid #! scripts.
2706 (If setuid #! scripts would be secure but have been disabled anyway,
2707 don't say that they are secure if asked.)
2708
2709 EOM
2710
2711 val="$undef"
2712 if $test -d /dev/fd; then
2713         echo "#!$ls" >reflect
2714         chmod +x,u+s reflect
2715         ./reflect >flect 2>&1
2716         if $contains "/dev/fd" flect >/dev/null; then
2717                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2718                 val="$define"
2719         else
2720                 $cat <<EOM
2721 If you are not sure if they are secure, I can check but I'll need a
2722 username and password different from the one you are using right now.
2723 If you don't have such a username or don't want me to test, simply
2724 enter 'none'.
2725
2726 EOM
2727                 rp='Other username to test security of setuid scripts with?'
2728                 dflt='none'
2729                 . ./myread
2730                 case "$ans" in
2731                 n|none)
2732                         case "$d_suidsafe" in
2733                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
2734                                 dflt=n;;
2735                         "$undef")
2736                                 echo "Well, the $hint value is *not* secure." >&4
2737                                 dflt=n;;
2738                         *)      echo "Well, the $hint value *is* secure." >&4
2739                                 dflt=y;;
2740                         esac
2741                         ;;
2742                 *)
2743                         $rm -f reflect flect
2744                         echo "#!$ls" >reflect
2745                         chmod +x,u+s reflect
2746                         echo >flect
2747                         chmod a+w flect
2748                         echo '"su" will (probably) prompt you for '"$ans's password."
2749                         su $ans -c './reflect >flect'
2750                         if $contains "/dev/fd" flect >/dev/null; then
2751                                 echo "Okay, it looks like setuid scripts are secure." >&4
2752                                 dflt=y
2753                         else
2754                                 echo "I don't think setuid scripts are secure." >&4
2755                                 dflt=n
2756                         fi
2757                         ;;
2758                 esac
2759                 rp='Does your kernel have *secure* setuid scripts?'
2760                 . ./myread
2761                 case "$ans" in
2762                 [yY]*)  val="$define";;
2763                 *)      val="$undef";;
2764                 esac
2765         fi
2766 else
2767         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2768         echo "(That's for file descriptors, not floppy disks.)"
2769         val="$undef"
2770 fi
2771 set d_suidsafe
2772 eval $setvar
2773
2774 $rm -f reflect flect
2775
2776 : now see if they want to do setuid emulation
2777 echo " "
2778 val="$undef"
2779 case "$d_suidsafe" in
2780 "$define")
2781         val="$undef"
2782         echo "No need to emulate SUID scripts since they are secure here." >& 4
2783         ;;
2784 *)
2785         $cat <<EOM
2786 Some systems have disabled setuid scripts, especially systems where
2787 setuid scripts cannot be secure.  On systems where setuid scripts have
2788 been disabled, the setuid/setgid bits on scripts are currently
2789 useless.  It is possible for $package to detect those bits and emulate
2790 setuid/setgid in a secure fashion.  This emulation will only work if
2791 setuid scripts have been disabled in your kernel.
2792
2793 EOM
2794         case "$d_dosuid" in
2795         "$define") dflt=y ;;
2796         *) dflt=n ;;
2797         esac
2798         rp="Do you want to do setuid/setgid emulation?"
2799         . ./myread
2800         case "$ans" in
2801         [yY]*)  val="$define";;
2802         *)      val="$undef";;
2803         esac
2804         ;;
2805 esac
2806 set d_dosuid
2807 eval $setvar
2808
2809 : determine where site specific libraries go.
2810 set sitelib sitelib
2811 eval $prefixit
2812 case "$sitelib" in
2813 '')     dflt="$privlib/site_perl" ;;
2814 *)      dflt="$sitelib" ;;
2815 esac
2816 $cat <<EOM
2817
2818 The installation process will also create a directory for
2819 site-specific extensions and modules.  Some users find it convenient
2820 to place all local files in this directory rather than in the main
2821 distribution directory.
2822
2823 EOM
2824 fn=d~+
2825 rp='Pathname for the site-specific library files?'
2826 . ./getfile
2827 if $test "X$sitelibexp" != "X$ansexp"; then
2828         installsitelib=''
2829 fi
2830 sitelib="$ans"
2831 sitelibexp="$ansexp"
2832 if $afs; then
2833         $cat <<EOM
2834
2835 Since you are running AFS, I need to distinguish the directory in
2836 which site-specific files reside from the directory in which they are
2837 installed (and from which they are presumably copied to the former
2838 directory by occult means).
2839
2840 EOM
2841         case "$installsitelib" in
2842         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2843         *) dflt="$installsitelib";;
2844         esac
2845         fn=de~
2846         rp='Where will site-specific files be installed?'
2847         . ./getfile
2848         installsitelib="$ans"
2849 else
2850         installsitelib="$sitelibexp"
2851 fi
2852
2853 : determine where site specific architecture-dependent libraries go.
2854 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2855 : xxx is usuually lib/site_perl/archname.
2856 set sitearch sitearch none
2857 eval $prefixit
2858 case "$sitearch" in
2859 '')     dflt="$sitelib/$archname" ;;
2860 *)      dflt="$sitearch" ;;
2861 esac
2862 $cat <<EOM
2863
2864 The installation process will also create a directory for
2865 architecture-dependent site-specific extensions and modules.
2866
2867 EOM
2868 fn=nd~+
2869 rp='Pathname for the site-specific architecture-dependent library files?'
2870 . ./getfile
2871 if $test "X$sitearchexp" != "X$ansexp"; then
2872         installsitearch=''
2873 fi
2874 sitearch="$ans"
2875 sitearchexp="$ansexp"
2876 if $afs; then
2877         $cat <<EOM
2878
2879 Since you are running AFS, I need to distinguish the directory in
2880 which site-specific architecture-dependent library files reside from
2881 the directory in which they are installed (and from which they are
2882 presumably copied to the former directory by occult means).
2883
2884 EOM
2885         case "$installsitearch" in
2886         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2887         *) dflt="$installsitearch";;
2888         esac
2889         fn=de~
2890         rp='Where will site-specific architecture-dependent files be installed?'
2891         . ./getfile
2892         installsitearch="$ans"
2893 else
2894         installsitearch="$sitearchexp"
2895 fi
2896
2897 : determine where old public architecture dependent libraries might be
2898 case "$oldarchlib" in
2899 '')     case "$privlib" in
2900         '') ;;
2901         *)      dflt="$privlib/$archname"
2902                 ;;
2903         esac
2904         ;;
2905 *)      dflt="$oldarchlib" 
2906         ;;
2907 esac
2908 if $test ! -d "$dflt/auto"; then
2909         dflt=none
2910 fi
2911 cat <<EOM
2912
2913 In 5.001, Perl stored architecture-dependent library files in a directory
2914 with a name such as $privlib/$archname, 
2915 and this directory contained files from the standard extensions and 
2916 files from any additional extensions you might have added.  Starting 
2917 with version 5.002, all the architecture-dependent standard extensions 
2918 will go into a version-specific directory such as
2919 $archlib, 
2920 while locally-added extensions will go into
2921 $sitearch.
2922
2923 If you wish Perl to continue to search the old architecture-dependent
2924 library for your local extensions, give the path to that directory.
2925 If you do not wish to use your old architecture-dependent library
2926 files, answer 'none'.
2927
2928 EOM
2929 fn=dn~
2930 rp='Directory for your old 5.001 architecture-dependent libraries?'
2931 . ./getfile
2932 oldarchlib="$ans"
2933 oldarchlibexp="$ansexp"
2934 case "$oldarchlib" in
2935 ''|' ') val="$undef" ;;
2936 *) val="$define" ;;
2937 esac
2938 set d_oldarchlib
2939 eval $setvar
2940
2941 : determine where public executables go
2942 echo " "
2943 set dflt bin bin
2944 eval $prefixit
2945 fn=d~
2946 rp='Pathname where the public executables will reside?'
2947 . ./getfile
2948 if $test "X$ansexp" != "X$binexp"; then
2949         installbin=''
2950 fi
2951 bin="$ans"
2952 binexp="$ansexp"
2953 if $afs; then
2954         $cat <<EOM
2955
2956 Since you are running AFS, I need to distinguish the directory in which
2957 executables reside from the directory in which they are installed (and from
2958 which they are presumably copied to the former directory by occult means).
2959
2960 EOM
2961         case "$installbin" in
2962         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2963         *) dflt="$installbin";;
2964         esac
2965         fn=de~
2966         rp='Where will public executables be installed?'
2967         . ./getfile
2968         installbin="$ans"
2969 else
2970         installbin="$binexp"
2971 fi
2972
2973 : determine where manual pages are on this system
2974 echo " "
2975 case "$sysman" in
2976 '') 
2977         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2978         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2979         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2980         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2981         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2982         sysman=`./loc . /usr/man/man1 $syspath`
2983         ;;
2984 esac
2985 if $test -d "$sysman"; then
2986         echo "System manual is in $sysman." >&4
2987 else
2988         echo "Could not find manual pages in source form." >&4
2989 fi
2990
2991 : see what memory models we can support
2992 case "$models" in
2993 '')
2994         $cat >pdp11.c <<'EOP'
2995 main() {
2996 #ifdef pdp11
2997         exit(0);
2998 #else
2999         exit(1);
3000 #endif
3001 }
3002 EOP
3003         (cc -o pdp11 pdp11.c) >/dev/null 2>&1
3004         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3005                 dflt='unsplit split'
3006         else
3007                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3008                 case "$tans" in
3009                 X) dflt='none';;
3010                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3011                                 dflt='small'
3012                         else
3013                                 dflt=''
3014                         fi
3015                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3016                                 dflt="$dflt medium"
3017                         fi
3018                         if $test -d /lib/large || $test -d /usr/lib/large; then
3019                                 dflt="$dflt large"
3020                         fi
3021                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3022                                 dflt="$dflt huge"
3023                         fi
3024                 esac
3025         fi;;
3026 *) dflt="$models";;
3027 esac
3028 $cat <<EOM
3029  
3030 Some systems have different model sizes.  On most systems they are called
3031 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3032 split.  If your system doesn't support different memory models, say "none".
3033 If you wish to force everything to one memory model, say "none" here and
3034 put the appropriate flags later when it asks you for other cc and ld flags.
3035 Venix systems may wish to put "none" and let the compiler figure things out.
3036 (In the following question multiple model names should be space separated.)
3037
3038 EOM
3039 rp="Which memory models are supported?"
3040 . ./myread
3041 models="$ans"
3042
3043 case "$models" in
3044 none)
3045         small=''
3046         medium=''
3047         large=''
3048         huge=''
3049         unsplit=''
3050         split=''
3051         ;;
3052 *split)
3053         case "$split" in
3054         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3055                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3056                         dflt='-i'
3057                 else
3058                         dflt='none'
3059                 fi;;
3060         *) dflt="$split";;
3061         esac
3062         rp="What flag indicates separate I and D space?"
3063         . ./myread
3064         tans="$ans"
3065         case "$tans" in
3066         none) tans='';;
3067         esac
3068         split="$tans"
3069         unsplit='';;
3070 *large*|*small*|*medium*|*huge*)
3071         case "$models" in
3072         *large*)
3073                 case "$large" in
3074                 '') dflt='-Ml';;
3075                 *) dflt="$large";;
3076                 esac
3077         rp="What flag indicates large model?"
3078         . ./myread
3079         tans="$ans"
3080         case "$tans" in
3081         none) tans='';
3082         esac
3083         large="$tans";;
3084         *) large='';;
3085         esac
3086         case "$models" in
3087         *huge*) case "$huge" in
3088                 '') dflt='-Mh';;
3089                 *) dflt="$huge";;
3090                 esac
3091                 rp="What flag indicates huge model?"
3092                 . ./myread
3093                 tans="$ans"
3094                 case "$tans" in
3095                 none) tans='';
3096                 esac
3097                 huge="$tans";;
3098         *) huge="$large";;
3099         esac
3100         case "$models" in
3101         *medium*) case "$medium" in
3102                 '') dflt='-Mm';;
3103                 *) dflt="$medium";;
3104                 esac
3105                 rp="What flag indicates medium model?"
3106                 . ./myread
3107                 tans="$ans"
3108                 case "$tans" in
3109                 none) tans='';
3110                 esac
3111                 medium="$tans";;
3112         *) medium="$large";;
3113         esac
3114         case "$models" in
3115         *small*) case "$small" in
3116                 '') dflt='none';;
3117                 *) dflt="$small";;
3118                 esac
3119                 rp="What flag indicates small model?"
3120                 . ./myread
3121                 tans="$ans"
3122                 case "$tans" in
3123                 none) tans='';
3124                 esac
3125                 small="$tans";;
3126         *) small='';;
3127         esac
3128         ;;
3129 *)
3130         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3131         ;;
3132 esac
3133
3134 : see if we need a special compiler
3135 echo " "
3136 if ./usg; then
3137         case "$cc" in
3138         '') case "$Mcc" in
3139                 /*) dflt='Mcc';;
3140                 *) case "$large" in
3141                         -M*) dflt='cc';;
3142                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3143                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3144                                                 dflt='cc'
3145                                         else
3146                                                 dflt='cc -M'
3147                                         fi
3148                                 else
3149                                         dflt='cc'
3150                                 fi;;
3151                         esac;;
3152                 esac;;
3153         *)  dflt="$cc";;
3154         esac
3155         $cat <<'EOM'
3156 On some systems the default C compiler will not resolve multiple global
3157 references that happen to have the same name.  On some such systems the "Mcc"
3158 command may be used to force these to be resolved.  On other systems a "cc -M"
3159 command is required.  (Note that the -M flag on other systems indicates a
3160 memory model to use!) If you have the Gnu C compiler, you might wish to use
3161 that instead.
3162
3163 EOM
3164         rp="What command will force resolution on this system?"
3165         . ./myread
3166         cc="$ans"
3167 else
3168         case "$cc" in
3169         '') dflt=cc;;
3170         *) dflt="$cc";;
3171         esac
3172         rp="Use which C compiler?"
3173         . ./myread
3174         cc="$ans"
3175 fi
3176 echo " "
3177 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3178 $cat >gccvers.c <<EOM
3179 #include <stdio.h>
3180 int main() {
3181 #ifdef __GNUC__
3182 #ifdef __VERSION__
3183         printf("%s\n", __VERSION__);
3184 #else
3185         printf("%s\n", "1");
3186 #endif
3187 #endif
3188         exit(0);
3189 }
3190 EOM
3191 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3192         gccversion=`./gccvers`
3193         case "$gccversion" in
3194         '') echo "You are not using GNU cc." ;;
3195         *)  echo "You are using GNU cc $gccversion." ;;
3196         esac
3197 else
3198         echo " "
3199         echo "*** WHOA THERE!!! ***" >&4
3200         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3201         case "$knowitall" in
3202         '')
3203         echo "    You'd better start hunting for one and let me know about it." >&4
3204                 exit 1
3205                 ;;
3206         esac
3207 fi
3208 $rm -f gccvers*
3209 case "$gccversion" in
3210 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3211 esac
3212
3213 : What should the include directory be ?
3214 echo " "
3215 $echo $n "Hmm...  $c"
3216 dflt='/usr/include'
3217 incpath=''
3218 mips_type=''
3219 if $test -f /bin/mips && /bin/mips; then
3220         echo "Looks like a MIPS system..."
3221         $cat >usr.c <<'EOCP'
3222 #ifdef SYSTYPE_BSD43
3223 /bsd43
3224 #endif
3225 EOCP
3226         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3227                 dflt='/bsd43/usr/include'
3228                 incpath='/bsd43'
3229                 mips_type='BSD 4.3'
3230         else
3231                 mips_type='System V'
3232         fi
3233         $rm -f usr.c usr.out
3234         echo "and you're compiling with the $mips_type compiler and libraries."
3235         xxx_prompt=y
3236         echo "exit 0" >mips
3237 else
3238         echo "Doesn't look like a MIPS system."
3239         xxx_prompt=n
3240         echo "exit 1" >mips
3241 fi
3242 chmod +x mips
3243 $eunicefix mips
3244 echo " "
3245 case "$usrinc" in
3246 '') ;;
3247 *) dflt="$usrinc";;
3248 esac
3249 case "$xxx_prompt" in
3250 y)      fn=d/
3251         rp='Where are the include files you want to use?'
3252         . ./getfile
3253         usrinc="$ans"
3254         ;;
3255 *)      usrinc="$dflt"
3256         ;;
3257 esac
3258
3259 : Set private lib path
3260 case "$plibpth" in
3261 '') if ./mips; then
3262                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3263         fi;;
3264 esac
3265 case "$libpth" in
3266 ' ') dlist='';;
3267 '') dlist="$loclibpth $plibpth $glibpth";;
3268 *) dlist="$libpth";;
3269 esac
3270
3271 : Now check and see which directories actually exist, avoiding duplicates
3272 libpth=''
3273 for xxx in $dlist
3274 do
3275     if $test -d $xxx; then
3276                 case " $libpth " in
3277                 *" $xxx "*) ;;
3278                 *) libpth="$libpth $xxx";;
3279                 esac
3280     fi
3281 done
3282 $cat <<'EOM'
3283
3284 Some systems have incompatible or broken versions of libraries.  Among
3285 the directories listed in the question below, please remove any you
3286 know not to be holding relevant libraries, and add any that are needed.
3287 Say "none" for none.
3288
3289 EOM
3290 case "$libpth" in
3291 '') dflt='none';;
3292 *)
3293         set X $libpth
3294         shift
3295         dflt=${1+"$@"}
3296         ;;
3297 esac
3298 rp="Directories to use for library searches?"
3299 . ./myread
3300 case "$ans" in
3301 none) libpth=' ';;
3302 *) libpth="$ans";;
3303 esac
3304
3305 : Define several unixisms. Hints files or command line options
3306 : can be used to override them.
3307 case "$ar" in
3308 '') ar='ar';;
3309 esac
3310 case "$lib_ext" in
3311 '') lib_ext='.a';;
3312 esac
3313 case "$obj_ext" in
3314 '') obj_ext='.o';;
3315 esac
3316 case "$path_sep" in
3317 '') path_sep=':';;
3318 esac
3319 : Which makefile gets called first.  This is used by make depend.
3320 case "$firstmakefile" in
3321 '') firstmakefile='makefile';;
3322 esac
3323
3324 : compute shared library extension
3325 case "$so" in
3326 '')
3327         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3328                 dflt='sl'
3329         else
3330                 dflt='so'
3331         fi
3332         ;;
3333 *) dflt="$so";;
3334 esac
3335 $cat <<EOM
3336
3337 On some systems, shared libraries may be available.  Answer 'none' if
3338 you want to suppress searching of shared libraries for the remaining
3339 of this configuration.
3340
3341 EOM
3342 rp='What is the file extension used for shared libraries?'
3343 . ./myread
3344 so="$ans"
3345
3346 : Looking for optional libraries
3347 echo " "
3348 echo "Checking for optional libraries..." >&4
3349 case "$libs" in
3350 ' '|'') dflt='';;
3351 *) dflt="$libs";;
3352 esac
3353 case "$libswanted" in
3354 '') libswanted='c_s';;
3355 esac
3356 for thislib in $libswanted; do
3357         
3358         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3359                 echo "Found -l$thislib (shared)."
3360                 case " $dflt " in
3361                 *"-l$thislib "*);;
3362                 *) dflt="$dflt -l$thislib";;
3363                 esac
3364         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3365                 echo "Found -l$thislib (shared)."
3366                 case " $dflt " in
3367                 *"-l$thislib "*);;
3368                 *) dflt="$dflt -l$thislib";;
3369                 esac
3370         elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3371                 echo "Found -l$thislib."
3372                 case " $dflt " in
3373                 *"-l$thislib "*);;
3374                 *) dflt="$dflt -l$thislib";;
3375                 esac
3376         elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3377                 echo "Found -l$thislib."
3378                 case " $dflt " in
3379                 *"-l$thislib "*);;
3380                 *) dflt="$dflt -l$thislib";;
3381                 esac
3382         elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3383                 echo "Found -l${thislib}_s."
3384                 case " $dflt " in
3385                 *"-l$thislib "*);;
3386                 *) dflt="$dflt -l${thislib}_s";;
3387                 esac
3388         elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3389                 echo "Found -l$thislib."
3390                 case " $dflt " in
3391                 *"-l$thislib "*);;
3392                 *) dflt="$dflt -l$thislib";;
3393                 esac
3394         else
3395                 echo "No -l$thislib."
3396         fi
3397 done
3398 set X $dflt
3399 shift
3400 dflt="$*"
3401 case "$libs" in
3402 '') dflt="$dflt";;
3403 *) dflt="$libs";;
3404 esac
3405 case "$dflt" in
3406 ' '|'') dflt='none';;
3407 esac
3408
3409 $cat <<EOM
3410  
3411 Some versions of Unix support shared libraries, which make executables smaller
3412 but make load time slightly longer.
3413
3414 On some systems, mostly System V Release 3's, the shared library is included
3415 by putting the option "-lc_s" as the last thing on the cc command line when
3416 linking.  Other systems use shared libraries by default.  There may be other
3417 libraries needed to compile $package on your machine as well.  If your system
3418 needs the "-lc_s" option, include it here.  Include any other special libraries
3419 here as well.  Say "none" for none.
3420 EOM
3421
3422 echo " "
3423 rp="Any additional libraries?"
3424 . ./myread
3425 case "$ans" in
3426 none) libs=' ';;
3427 *) libs="$ans";;
3428 esac
3429
3430 : see how we invoke the C preprocessor
3431 echo " "
3432 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3433 cat <<'EOT' >testcpp.c
3434 #define ABC abc
3435 #define XYZ xyz
3436 ABC.XYZ
3437 EOT
3438 cd ..
3439 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3440 chmod 755 cppstdin
3441 wrapper=`pwd`/cppstdin
3442 ok='false'
3443 cd UU
3444
3445 if $test "X$cppstdin" != "X" && \
3446         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3447         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3448 then
3449         echo "You used to use $cppstdin $cppminus so we'll use that again."
3450         case "$cpprun" in
3451         '') echo "But let's see if we can live without a wrapper..." ;;
3452         *)
3453                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3454                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3455                 then
3456                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3457                         ok='true'
3458                 else
3459                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3460                 fi
3461                 ;;
3462         esac
3463 else
3464         case "$cppstdin" in
3465         '') ;;
3466         *)
3467                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3468                 ;;
3469         esac
3470 fi
3471
3472 if $ok; then
3473         : nothing
3474 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3475         $cc -E <testcpp.c >testcpp.out 2>&1; \
3476         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3477         echo "Yup, it does."
3478         x_cpp="$cc -E"
3479         x_minus='';
3480 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3481         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3482         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483         echo "Yup, it does."
3484         x_cpp="$cc -E"
3485         x_minus='-';
3486 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3487         $cc -P <testcpp.c >testcpp.out 2>&1; \
3488         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489         echo "Yipee, that works!"
3490         x_cpp="$cc -P"
3491         x_minus='';
3492 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3493         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3494         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495         echo "At long last!"
3496         x_cpp="$cc -P"
3497         x_minus='-';
3498 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3499         $cpp <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         echo "It works!"
3502         x_cpp="$cpp"
3503         x_minus='';
3504 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3505         $cpp - <testcpp.c >testcpp.out 2>&1; \
3506         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507         echo "Hooray, it works!  I was beginning to wonder."
3508         x_cpp="$cpp"
3509         x_minus='-';
3510 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3511         $wrapper <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         x_cpp="$wrapper"
3514         x_minus=''
3515         echo "Eureka!"
3516 else
3517         dflt=''
3518         rp="No dice.  I can't find a C preprocessor.  Name one:"
3519         . ./myread
3520         x_cpp="$ans"
3521         x_minus=''
3522         $x_cpp <testcpp.c >testcpp.out 2>&1
3523         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3524                 echo "OK, that will do." >&4
3525         else
3526 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3527                 exit 1
3528         fi
3529 fi
3530
3531 case "$ok" in
3532 false)
3533         cppstdin="$x_cpp"
3534         cppminus="$x_minus"
3535         cpprun="$x_cpp"
3536         cpplast="$x_minus"
3537         set X $x_cpp
3538         shift
3539         case "$1" in
3540         "$cpp")
3541                 echo "Perhaps can we force $cc -E using a wrapper..."
3542                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3543                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3544                 then
3545                         echo "Yup, we can."
3546                         cppstdin="$wrapper"
3547                         cppminus='';
3548                 else
3549                         echo "Nope, we'll have to live without it..."
3550                 fi
3551                 ;;
3552         esac
3553         case "$cpprun" in
3554         "$wrapper")
3555                 cpprun=''
3556                 cpplast=''
3557                 ;;
3558         esac
3559         ;;
3560 esac
3561
3562 case "$cppstdin" in
3563 "$wrapper") ;;
3564 *) $rm -f $wrapper;;
3565 esac
3566 $rm -f testcpp.c testcpp.out
3567
3568 : determine optimize, if desired, or use for debug flag also
3569 case "$optimize" in
3570 ' '|$undef) dflt='none';;
3571 '') dflt='-O';;
3572 *) dflt="$optimize";;
3573 esac
3574 $cat <<EOH
3575
3576 Some C compilers have problems with their optimizers.  By default, $package
3577 compiles with the -O flag to use the optimizer.  Alternately, you might want
3578 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3579 systems).  Either flag can be specified here.  To use neither flag, specify
3580 the word "none".
3581
3582 EOH
3583 rp="What optimizer/debugger flag should be used?"
3584 . ./myread
3585 optimize="$ans"
3586 case "$optimize" in
3587 'none') optimize=" ";;
3588 esac
3589
3590 dflt=''
3591 : We will not override a previous value, but we might want to
3592 : augment a hint file
3593 case "$hint" in
3594 none|recommended)
3595         case "$gccversion" in
3596         1*) dflt='-fpcc-struct-return' ;;
3597         esac
3598         case "$optimize" in
3599         *-g*) dflt="$dflt -DDEBUGGING";;
3600         esac
3601         case "$gccversion" in
3602         2*) if test -d /etc/conf/kconfig.d &&
3603                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3604                 then
3605                         dflt="$dflt -posix"
3606                 fi
3607                 ;;
3608         esac
3609         ;;
3610 esac
3611
3612 case "$mips_type" in
3613 *BSD*|'') inclwanted="$locincpth $usrinc";;
3614 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3615 esac
3616 for thisincl in $inclwanted; do
3617         if $test -d $thisincl; then
3618                 if $test x$thisincl != x$usrinc; then
3619                         case "$dflt" in
3620                         *$thisincl*);;
3621                         *) dflt="$dflt -I$thisincl";;
3622                         esac
3623                 fi
3624         fi
3625 done
3626
3627 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3628         xxx=true;
3629 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3630         xxx=true;
3631 else
3632         xxx=false;
3633 fi;
3634 if $xxx; then
3635         case "$dflt" in
3636         *$2*);;
3637         *) dflt="$dflt -D$2";;
3638         esac;
3639 fi'
3640
3641 if ./osf1; then
3642         set signal.h __LANGUAGE_C__; eval $inctest
3643 else
3644         set signal.h LANGUAGE_C; eval $inctest
3645 fi
3646
3647 case "$hint" in
3648 none|recommended) dflt="$ccflags $dflt" ;;
3649 *) dflt="$ccflags";;
3650 esac
3651
3652 case "$dflt" in
3653 ''|' ') dflt=none;;
3654 esac
3655 $cat <<EOH
3656
3657 Your C compiler may want other flags.  For this question you should include
3658 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3659 but you should NOT include libraries or ld flags like -lwhatever.  If you
3660 want $package to honor its debug switch, you should include -DDEBUGGING here.
3661 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3662 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3663
3664 To use no flags, specify the word "none".
3665
3666 EOH
3667 set X $dflt
3668 shift
3669 dflt=${1+"$@"}
3670 rp="Any additional cc flags?"
3671 . ./myread
3672 case "$ans" in
3673 none) ccflags='';;
3674 *) ccflags="$ans";;
3675 esac
3676
3677 : the following weeds options from ccflags that are of no interest to cpp
3678 cppflags="$ccflags"
3679 case "$gccversion" in
3680 1*) cppflags="$cppflags -D__GNUC__"
3681 esac
3682 case "$mips_type" in
3683 '');;
3684 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3685 esac
3686 case "$cppflags" in
3687 '');;
3688 *)
3689         echo " "
3690         echo "Let me guess what the preprocessor flags are..." >&4
3691         set X $cppflags
3692         shift
3693         cppflags=''
3694         $cat >cpp.c <<'EOM'
3695 #define BLURFL foo
3696
3697 BLURFL xx LFRULB
3698 EOM
3699         previous=''
3700         for flag in $*
3701         do
3702                 case "$flag" in
3703                 -*) ftry="$flag";;
3704                 *) ftry="$previous $flag";;
3705                 esac
3706                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3707                         >cpp1.out 2>/dev/null && \
3708                         $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3709                         >cpp2.out 2>/dev/null && \
3710                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3711                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3712                 then
3713                         cppflags="$cppflags $ftry"
3714                         previous=''
3715                 else
3716                         previous="$flag"
3717                 fi
3718         done
3719         set X $cppflags
3720         shift
3721         cppflags=${1+"$@"}
3722         case "$cppflags" in
3723         *-*)  echo "They appear to be: $cppflags";;
3724         esac
3725         $rm -f cpp.c cpp?.out
3726         ;;
3727 esac
3728
3729 : flags used in final linking phase
3730
3731 case "$ldflags" in
3732 '') if ./venix; then
3733                 dflt='-i -z'
3734         else
3735                 dflt=''
3736         fi
3737         case "$ccflags" in
3738         *-posix*) dflt="$dflt -posix" ;;
3739         esac
3740         ;;
3741 *) dflt="$ldflags";;
3742 esac
3743
3744 : Try to guess additional flags to pick up local libraries.
3745 for thislibdir in $libpth; do
3746         case " $loclibpth " in
3747         *" $thislibdir "*)
3748                 case "$dflt " in 
3749                 *"-L$thislibdir "*) ;;
3750                 *)  dflt="$dflt -L$thislibdir" ;;
3751                 esac
3752                 ;;
3753         esac
3754 done
3755
3756 case "$dflt" in
3757 '') dflt='none' ;;
3758 esac
3759
3760 $cat <<EOH
3761
3762 Your C linker may need flags.  For this question you should
3763 include -L/whatever and any other flags used by the C linker, but you
3764 should NOT include libraries like -lwhatever.
3765
3766 Make sure you include the appropriate -L/path flags if your C linker
3767 does not normally search all of the directories you specified above,
3768 namely
3769         $libpth
3770 To use no flags, specify the word "none".
3771
3772 EOH
3773
3774 rp="Any additional ld flags (NOT including libraries)?"
3775 . ./myread
3776 case "$ans" in
3777 none) ldflags='';;
3778 *) ldflags="$ans";;
3779 esac
3780 rmlist="$rmlist pdp11"
3781
3782 : coherency check
3783 echo " "
3784 echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3785 set X $cc $optimize $ccflags $ldflags -o try try.c $libs
3786 shift
3787 $cat >try.msg <<EOM
3788 I've tried to compile and run a simple program with:
3789
3790         $*
3791         ./try
3792
3793 and I got the following output:
3794
3795 EOM
3796 $cat > try.c <<'EOF'
3797 #include <stdio.h>
3798 main() { exit(0); }
3799 EOF
3800 dflt=y
3801 if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
3802         if sh -c './try' >>try.msg 2>&1; then
3803                 dflt=n
3804         else
3805                 echo "The program compiled OK, but exited with status $?." >>try.msg
3806                 rp="You have a problem.  Shall I abort Configure (and explain the problem)"
3807                 dflt=y
3808         fi
3809 else
3810         echo "I can't compile the test program." >>try.msg
3811         rp="You have a BIG problem.  Shall I abort Configure (and explain the problem)"
3812         dflt=y
3813 fi
3814 case "$dflt" in
3815 y)
3816         $cat try.msg >&4
3817         case "$knowitall" in
3818         '')
3819                 echo "(The supplied flags might be incorrect with this C compiler.)"
3820                 ;;
3821         *) dflt=n;;
3822         esac
3823         echo " "
3824         . ./myread
3825         case "$ans" in
3826         n*|N*) ;;
3827         *)      echo "Ok.  Stopping Configure." >&4
3828                 exit 1
3829                 ;;
3830         esac
3831         ;;
3832 n) echo "OK, that should do.";;
3833 esac
3834 $rm -f try try.* core
3835
3836 echo " "
3837 echo "Checking for GNU C Library..." >&4
3838 cat >gnulibc.c <<EOM
3839 int
3840 main()
3841 {
3842   return __libc_main();
3843 }
3844 EOM
3845 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3846     ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3847         val="$define"
3848         echo "You are using the GNU C Library"
3849 else
3850         val="$undef"
3851         echo "You are not using the GNU C Library"
3852 fi
3853 $rm -f gnulibc*
3854 set d_gnulibc
3855 eval $setvar
3856
3857 : see if nm is to be used to determine whether a symbol is defined or not
3858 case "$usenm" in
3859 '')
3860         case "$d_gnulibc" in
3861         $define)
3862                 dflt=n
3863                 ;;
3864         *)
3865                 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3866                 if $test $dflt -gt 20; then
3867                         dflt=y
3868                 else
3869                         dflt=n
3870                 fi
3871                 ;;
3872         esac
3873         ;;
3874 *)
3875         case "$usenm" in
3876         true) dflt=y;;
3877         *) dflt=n;;
3878         esac
3879         ;;
3880 esac
3881 $cat <<EOM
3882
3883 I can use 'nm' to extract the symbols from your C libraries. This is a time
3884 consuming task which may generate huge output on the disk (up to 3 megabytes)
3885 but that should make the symbols extraction faster. The alternative is to skip
3886 the 'nm' extraction part and to compile a small test program instead to
3887 determine whether each symbol is present. If you have a fast C compiler and/or
3888 if your 'nm' output cannot be parsed, this may be the best solution.
3889 You shouldn't let me use 'nm' if you have the GNU C Library.
3890
3891 EOM
3892 rp='Shall I use nm to extract C symbols from the libraries?'
3893 . ./myread
3894 case "$ans" in
3895 n|N) usenm=false;;
3896 *) usenm=true;;
3897 esac
3898
3899 runnm=$usenm
3900 case "$reuseval" in
3901 true) runnm=false;;
3902 esac
3903
3904 : nm options which may be necessary
3905 case "$nm_opt" in
3906 '') if $test -f /mach_boot; then
3907                 nm_opt=''       # Mach
3908         elif $test -d /usr/ccs/lib; then
3909                 nm_opt='-p'     # Solaris (and SunOS?)
3910         elif $test -f /dgux; then
3911                 nm_opt='-p'     # DG-UX
3912         elif $test -f /lib64/rld; then
3913                 nm_opt='-p'     # 64-bit Irix
3914         else
3915                 nm_opt=''
3916         fi;;
3917 esac
3918
3919 : nm options which may be necessary for shared libraries but illegal
3920 : for archive libraries.  Thank you, Linux.
3921 case "$nm_so_opt" in
3922 '')     case "$myuname" in
3923         *linux*)
3924                 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3925                         nm_so_opt='--dynamic'
3926                 fi
3927                 ;;
3928         esac
3929         ;;
3930 esac
3931
3932 case "$runnm" in
3933 true)
3934 : get list of predefined functions in a handy place
3935 echo " "
3936 case "$libc" in
3937 '') libc=unknown
3938         case "$libs" in
3939         *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3940         esac
3941         ;;
3942 esac
3943 libnames='';
3944 case "$libs" in
3945 '') ;;
3946 *)  for thislib in $libs; do
3947         case "$thislib" in
3948         -lc|-lc_s)
3949                 : Handle C library specially below.
3950                 ;;
3951         -l*)
3952                 thislib=`echo $thislib | $sed -e 's/^-l//'`
3953                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3954                         :
3955                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3956                         :
3957                 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3958                         :
3959                 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3960                         :
3961                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3962                         :
3963                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3964                         :
3965                 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3966                         :
3967                 else
3968                         try=''
3969                 fi
3970                 libnames="$libnames $try"
3971                 ;;
3972         *) libnames="$libnames $thislib" ;;
3973         esac
3974         done
3975         ;;
3976 esac
3977 xxx=normal
3978 case "$libc" in
3979 unknown)
3980         set /lib/libc.$so
3981         for xxx in $libpth; do
3982                 $test -r $1 || set $xxx/libc.$so
3983                 : The messy sed command sorts on library version numbers.
3984                 $test -r $1 || \
3985                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3986                                 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3987                                 h
3988                                 s/[0-9][0-9]*/0000&/g
3989                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3990                                 G
3991                                 s/\n/ /' | \
3992                         sort | $sed -e 's/^.* //'`
3993                 eval set \$$#
3994         done
3995         $test -r $1 || set /usr/ccs/lib/libc.$so
3996         $test -r $1 || set /lib/libsys_s$lib_ext
3997         ;;
3998 *)
3999         set blurfl
4000         ;;
4001 esac
4002 if $test -r "$1"; then
4003         echo "Your (shared) C library seems to be in $1."
4004         libc="$1"
4005 elif $test -r /lib/libc && $test -r /lib/clib; then
4006         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4007         xxx=apollo
4008         libc='/lib/clib /lib/libc'
4009         if $test -r /lib/syslib; then
4010                 echo "(Your math library is in /lib/syslib.)"
4011                 libc="$libc /lib/syslib"
4012         fi
4013 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4014         echo "Your C library seems to be in $libc, as you said before."
4015 elif $test -r $incpath/usr/lib/libc$lib_ext; then
4016         libc=$incpath/usr/lib/libc$lib_ext;
4017         echo "Your C library seems to be in $libc.  That's fine."
4018 elif $test -r /lib/libc$lib_ext; then
4019         libc=/lib/libc$lib_ext;
4020         echo "Your C library seems to be in $libc.  You're normal."
4021 else
4022         if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
4023                 :
4024         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4025                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4026         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4027                 :
4028         elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4029                 :
4030         elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4031                 :
4032         else
4033                 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4034         fi
4035         if $test -r "$tans"; then
4036                 echo "Your C library seems to be in $tans, of all places."
4037                 libc=$tans
4038         else
4039                 libc='blurfl'
4040         fi
4041 fi
4042 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4043         dflt="$libc"
4044         cat <<EOM
4045
4046 If the guess above is wrong (which it might be if you're using a strange
4047 compiler, or your machine supports multiple models), you can override it here.
4048
4049 EOM
4050 else
4051         dflt=''
4052         echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4053         cat >&4 <<EOM
4054 I can't seem to find your C library.  I've looked in the following places:
4055
4056 EOM
4057         $sed 's/^/      /' libpath
4058         cat <<EOM
4059
4060 None of these seems to contain your C library. I need to get its name...
4061
4062 EOM
4063 fi
4064 fn=f
4065 rp='Where is your C library?'
4066 . ./getfile
4067 libc="$ans"
4068
4069 echo " "
4070 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4071 set X `cat libnames`
4072 shift
4073 xxx=files
4074 case $# in 1) xxx=file; esac
4075 echo "Extracting names from the following $xxx for later perusal:" >&4
4076 echo " "
4077 $sed 's/^/      /' libnames >&4
4078 echo " "
4079 $echo $n "This may take a while...$c" >&4
4080
4081 : Linux may need the special Dynamic option to nm for shared libraries.
4082 : In general, this is stored in the nm_so_opt variable.
4083 : Unfortunately, that option may be fatal on non-shared libraries.
4084 for nm_libs_ext in $*; do
4085     case $nm_libs_ext in
4086         *$so*)  nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4087         *)              nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4088         esac
4089 done > libc.tmp
4090
4091 $echo $n ".$c"
4092 $grep fprintf libc.tmp > libc.ptf
4093 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4094 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4095 xxx='[ADTSIW]'
4096 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4097         eval $xscan;\
4098         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4099                 eval $xrun
4100 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4101         eval $xscan;\
4102         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4103                 eval $xrun
4104 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4105         eval $xscan;\
4106         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4107                 eval $xrun
4108 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4109         eval $xscan;\
4110         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4111                 eval $xrun
4112 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4113         eval $xscan;\
4114         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4115                 eval $xrun
4116 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4117         eval $xscan;\
4118         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4119                 eval $xrun
4120 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4121                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4122         eval $xscan;\
4123         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4124                 eval $xrun
4125 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4126         eval $xscan;\
4127         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4128                 eval $xrun
4129 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4130         eval $xscan;\
4131         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4132                 eval $xrun
4133 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4134         eval $xscan;\
4135         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4136                 eval $xrun
4137 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4138         eval $xscan;\
4139         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4140                 eval $xrun
4141 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4142         eval $xscan;\
4143         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4144                 eval $xrun
4145 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4146         eval $xscan;\
4147         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4148                 eval $xrun
4149 else
4150         nm -p $* 2>/dev/null >libc.tmp
4151         $grep fprintf libc.tmp > libc.ptf
4152         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4153                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4154         then
4155                 nm_opt='-p'
4156                 eval $xrun
4157         else
4158                 echo " "
4159                 echo "nm didn't seem to work right. Trying ar instead..." >&4
4160                 com=''
4161                 if ar t $libc > libc.tmp; then
4162                         for thisname in $libnames; do
4163                                 ar t $thisname >>libc.tmp
4164                         done
4165                         $sed -e 's/\.o$//' < libc.tmp > libc.list
4166                         echo "Ok." >&4
4167                 else
4168                         echo "ar didn't seem to work right." >&4
4169                         echo "Maybe this is a Cray...trying bld instead..." >&4
4170                         if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4171                         then
4172                                 for thisname in $libnames; do
4173                                         bld t $libnames | \
4174                                         $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4175                                         ar t $thisname >>libc.tmp
4176                                 done
4177                                 echo "Ok." >&4
4178                         else
4179                                 echo "That didn't work either.  Giving up." >&4
4180                                 exit 1
4181                         fi
4182                 fi
4183         fi
4184 fi
4185 nm_extract="$com"
4186 if $test -f /lib/syscalls.exp; then
4187         echo " "
4188         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4189         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4190 fi
4191 ;;
4192 esac
4193 $rm -f libnames libpath
4194
4195 : determine filename position in cpp output
4196 echo " "
4197 echo "Computing filename position in cpp output for #include directives..." >&4
4198 echo '#include <stdio.h>' > foo.c
4199 $cat >fieldn <<EOF
4200 $startsh
4201 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4202 $grep '^[       ]*#.*stdio\.h' | \
4203 while read cline; do
4204         pos=1
4205         set \$cline
4206         while $test \$# -gt 0; do
4207                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4208                         echo "\$pos"
4209                         exit 0
4210                 fi
4211                 shift
4212                 pos=\`expr \$pos + 1\`
4213         done
4214 done
4215 EOF
4216 chmod +x fieldn
4217 fieldn=`./fieldn`
4218 $rm -f foo.c fieldn
4219 case $fieldn in
4220 '') pos='???';;
4221 1) pos=first;;
4222 2) pos=second;;
4223 3) pos=third;;
4224 *) pos="${fieldn}th";;
4225 esac
4226 echo "Your cpp writes the filename in the $pos field of the line."
4227
4228 : locate header file
4229 $cat >findhdr <<EOF
4230 $startsh
4231 wanted=\$1
4232 name=''
4233 if test -f $usrinc/\$wanted; then
4234         echo "$usrinc/\$wanted"
4235         exit 0
4236 fi
4237 awkprg='{ print \$$fieldn }'
4238 echo "#include <\$wanted>" > foo\$\$.c
4239 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4240 $grep "^[       ]*#.*\$wanted" | \
4241 while read cline; do
4242         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4243         case "\$name" in
4244         */\$wanted) echo "\$name"; exit 0;;
4245         *) name='';;
4246         esac;
4247 done;
4248 $rm -f foo\$\$.c;
4249 case "\$name" in
4250 '') exit 1;;
4251 esac
4252 EOF
4253 chmod +x findhdr
4254
4255 : define an alternate in-header-list? function
4256 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4257 cont=true; xxf="echo \"<\$1> found.\" >&4";
4258 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4259 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4260 esac;
4261 case $# in 4) instead=instead;; *) instead="at last";; esac;
4262 while $test "$cont"; do
4263         xxx=`./findhdr $1`
4264         var=$2; eval "was=\$$2";
4265         if $test "$xxx" && $test -r "$xxx";
4266         then eval $xxf;
4267         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4268                 cont="";
4269         else eval $xxnf;
4270         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4271         set $yyy; shift; shift; yyy=$@;
4272         case $# in 0) cont="";;
4273         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4274                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4275         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4276                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4277         esac;
4278 done;
4279 while $test "$yyy";
4280 do set $yyy; var=$2; eval "was=\$$2";
4281         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4282         set $yyy; shift; shift; yyy=$@;
4283 done'
4284
4285 : see if dld is available
4286 set dld.h i_dld
4287 eval $inhdr
4288
4289 : is a C symbol defined?
4290 csym='tlook=$1;
4291 case "$3" in
4292 -v) tf=libc.tmp; tc=""; tdc="";;
4293 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4294 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4295 esac;
4296 tx=yes;
4297 case "$reuseval-$4" in
4298 true-) ;;
4299 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4300 esac;
4301 case "$tx" in
4302 yes)
4303         case "$runnm" in
4304         true)
4305                 if $contains $tlook $tf >/dev/null 2>&1;
4306                 then tval=true;
4307                 else tval=false;
4308                 fi;;
4309         *)
4310                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4311                 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4312                 then tval=true;
4313                 else tval=false;
4314                 fi;
4315                 $rm -f t t.c;;
4316         esac;;
4317 *)
4318         case "$tval" in
4319         $define) tval=true;;
4320         *) tval=false;;
4321         esac;;
4322 esac;
4323 eval "$2=$tval"'
4324
4325 : define an is-in-libc? function
4326 inlibc='echo " "; td=$define; tu=$undef;
4327 sym=$1; var=$2; eval "was=\$$2";
4328 tx=yes;
4329 case "$reuseval$was" in
4330 true) ;;
4331 true*) tx=no;;
4332 esac;
4333 case "$tx" in
4334 yes)
4335         set $sym tres -f;
4336         eval $csym;
4337         case "$tres" in
4338         true)
4339                 echo "$sym() found." >&4;
4340                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4341         *)
4342                 echo "$sym() NOT found." >&4;
4343                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4344         esac;;
4345 *)
4346         case "$was" in
4347         $define) echo "$sym() found." >&4;;
4348         *) echo "$sym() NOT found." >&4;;
4349         esac;;
4350 esac'
4351
4352 : see if dlopen exists
4353 xxx_runnm="$runnm"
4354 runnm=false
4355 set dlopen d_dlopen
4356 eval $inlibc
4357 runnm="$xxx_runnm"
4358
4359 : determine which dynamic loading, if any, to compile in
4360 echo " "
4361 dldir="ext/DynaLoader"
4362 case "$usedl" in
4363 $define|y|true)
4364         dflt='y'
4365         usedl="$define"
4366         ;;
4367 $undef|n|false)
4368         dflt='n'
4369         usedl="$undef"
4370         ;;
4371 *) 
4372         dflt='n'
4373         case "$d_dlopen" in
4374             $define) dflt='y' ;;
4375         esac
4376         case "$i_dld" in
4377             $define) dflt='y' ;;
4378         esac
4379         : Does a dl_xxx.xs file exist for this operating system
4380         $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4381         ;;
4382 esac
4383 rp="Do you wish to use dynamic loading?"
4384 . ./myread
4385 usedl="$ans"
4386 case "$ans" in
4387 y*) usedl="$define"
4388         case "$dlsrc" in
4389         '')
4390                 if $test -f ../$dldir/dl_${osname}.xs ; then
4391                         dflt="$dldir/dl_${osname}.xs"
4392                 elif $test "$d_dlopen" = "$define" ; then
4393                         dflt="$dldir/dl_dlopen.xs"
4394                 elif $test "$i_dld" = "$define" ; then
4395                         dflt="$dldir/dl_dld.xs"
4396                 else
4397                         dflt=''
4398                 fi
4399                 ;;
4400         *)      dflt="$dldir/$dlsrc"
4401                 ;;
4402         esac
4403     echo "The following dynamic loading files are available:"
4404         : Can not go over to $dldir because getfile has path hard-coded in.
4405     cd ..; ls -C $dldir/dl*.xs; cd UU
4406     rp="Source file to use for dynamic loading"
4407     fn="fne"
4408     . ./getfile
4409         usedl="$define"
4410         : emulate basename
4411         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4412
4413     $cat << EOM
4414
4415 Some systems may require passing special flags to $cc -c to
4416 compile modules that will be used to create a shared library.
4417 To use no flags, say "none".
4418
4419 EOM
4420     case "$cccdlflags" in
4421     '') case "$gccversion" in
4422                 '') case "$osname" in
4423                         hpux)   dflt='+z' ;;
4424                         next)   dflt='none' ;;
4425                         svr4*|esix*)    dflt='-Kpic' ;;
4426                         irix*)  dflt='-KPIC' ;;
4427                         solaris) case "$ccflags" in
4428                                 *-DDEBUGGING*)  dflt='-KPIC' ;;
4429                                 *)              dflt='-Kpic' ;;
4430                                 esac ;;
4431                         sunos)  dflt='-pic' ;;
4432                         *)      dflt='none' ;;
4433                     esac ;;
4434                 *)  case "$osname/$ccflags" in
4435                         solaris/*-DDEBUGGING*)  dflt='-fPIC' ;;
4436                         *)                      dflt='-fpic' ;;
4437                     esac ;;
4438             esac ;;
4439     *)  dflt="$cccdlflags" ;;
4440     esac
4441     rp="Any special flags to pass to $cc -c to compile shared library modules?"
4442     . ./myread
4443     case "$ans" in
4444     none) cccdlflags=' ' ;;
4445     *) cccdlflags="$ans" ;;
4446     esac
4447
4448     cat << EOM
4449
4450 Some systems use ld to create libraries that can be dynamically loaded,
4451 while other systems (such as those using ELF) use $cc.
4452
4453 EOM
4454         case "$ld" in
4455         '')     $cat >try.c <<'EOM'
4456 /* Test for whether ELF binaries are produced */
4457 #include <fcntl.h>
4458 #include <stdlib.h>
4459 main() {
4460         char b[4];
4461         int i = open("a.out",O_RDONLY);
4462         if(i == -1) 
4463                 exit(1); /* fail */
4464         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4465                 exit(0); /* succeed (yes, it's ELF) */
4466         else
4467                 exit(1); /* fail */
4468 }
4469 EOM
4470                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4471                         cat <<EOM
4472 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
4473 EOM
4474                         dflt="$cc"
4475                 else
4476                         echo "I'll use ld to build dynamic libraries."
4477                         dflt='ld'
4478                 fi
4479                 rm -f try.c a.out
4480                 ;;
4481         *)      dflt="$ld"
4482                 ;;
4483         esac
4484
4485     rp="What command should be used to create dynamic libraries?"
4486     . ./myread
4487         ld="$ans"
4488
4489     cat << EOM
4490
4491 Some systems may require passing special flags to $ld to create a
4492 library that can be dynamically loaded.  If your ld flags include
4493 -L/other/path options to locate libraries outside your loader's normal
4494 search path, you may need to specify those -L options here as well.  To
4495 use no flags, say "none".
4496
4497 EOM
4498     case "$lddlflags" in
4499     '') case "$osname" in
4500                         hpux)  dflt='-b' ;;
4501                         linux|irix*)    dflt='-shared' ;;
4502                         next)  dflt='none' ;;
4503                         solaris) dflt='-G' ;;
4504                         sunos) dflt='-assert nodefinitions' ;;
4505                         svr4*|esix*) dflt="-G $ldflags" ;;
4506                 *)     dflt='none' ;;
4507                         esac
4508                         ;;
4509     *) dflt="$lddlflags" ;;
4510     esac
4511
4512 : Try to guess additional flags to pick up local libraries.
4513 for thisflag in $ldflags; do
4514         case "$thisflag" in
4515         -L*)
4516                 case " $dflt " in
4517                 *" $thisflag "*) ;;
4518                 *) dflt="$dflt $thisflag" ;;
4519                 esac
4520                 ;;
4521         esac
4522 done
4523
4524 case "$dflt" in
4525 '') dflt='none' ;;
4526 esac
4527
4528     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4529     . ./myread
4530     case "$ans" in
4531     none) lddlflags=' ' ;;
4532     *) lddlflags="$ans" ;;
4533     esac
4534
4535         cat <<EOM
4536
4537 Some systems may require passing special flags to $cc to indicate that
4538 the resulting executable will use dynamic linking.  To use no flags,
4539 say "none".
4540
4541 EOM
4542     case "$ccdlflags" in
4543     '') case "$osname" in
4544                 hpux)   dflt='-Wl,-E' ;;
4545                 linux)  dflt='-rdynamic' ;;
4546                 next)   dflt='none' ;;
4547                 sunos)  dflt='none' ;;
4548                 *)      dflt='none' ;;
4549             esac ;;
4550     *)  dflt="$ccdlflags" ;;
4551     esac
4552     rp="Any special flags to pass to $cc to use dynamic loading?"
4553     . ./myread
4554     case "$ans" in
4555     none) ccdlflags=' ' ;;
4556     *) ccdlflags="$ans" ;;
4557     esac
4558     ;;
4559 *)  usedl="$undef"
4560         ld='ld'
4561     dlsrc='dl_none.xs'
4562     lddlflags=''
4563     ccdlflags=''
4564     ;;
4565 esac
4566
4567 also=''
4568 case "$usedl" in
4569 $undef)
4570         # No dynamic loading being used, so don't bother even to prompt.
4571         useshrplib='false'
4572         ;;
4573 *)      case "$useshrplib" in
4574         '')     case "$osname" in
4575                 svr4*|dgux|dynixptx|esix|powerux)
4576                         dflt=y
4577                         also='Building a shared libperl is required for dynamic loading to work on your system.'
4578                         ;;
4579                 next*)
4580                         case "$osvers" in
4581                         4*)     dflt=y
4582                                 also='Building a shared libperl is needed for MAB support.'
4583                                 ;;
4584                         *)      dflt=n
4585                                 ;;
4586                         esac
4587                         ;;
4588                 sunos)
4589                         dflt=n
4590                         also='Building a shared libperl will definitely not work on SunOS 4.'
4591                         ;;
4592                 *)      dflt=n
4593                         ;;
4594                 esac
4595                 ;;
4596         $define|true|[Yy]*)
4597                 dflt=y
4598                 ;;
4599         *)      dflt=n
4600                 ;;
4601         esac
4602         $cat << EOM
4603
4604 The perl executable is normally obtained by linking perlmain.c with
4605 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4606 any other libraries needed on this system (such as -lm, etc.).  Since
4607 your system supports dynamic loading, it is probably possible to build
4608 a shared libperl.$so.  If you will have more than one executable linked
4609 to libperl.$so, this will significantly reduce the size of each
4610 executable, but it may have a noticeable affect on performance.  The
4611 default is probably sensible for your system.
4612 $also
4613
4614 EOM
4615         rp="Build a shared libperl.$so (y/n)"
4616         . ./myread
4617         case "$ans" in
4618         true|$define|[Yy]*)
4619                 useshrplib='true'
4620                 # Why does next4 have to be so different?
4621                 case "${osname}${osvers}" in
4622                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4623                 *)              xxx='LD_LIBRARY_PATH' ;;
4624                 esac
4625                 $cat <<EOM >&4
4626
4627 To build perl, you must add the current working directory to your
4628 $xxx environtment variable before running make.  You can do
4629 this with
4630    $xxx=\`pwd\`; export $xxx
4631 for Bourne-style shells, or
4632    setenv $xxx \`pwd\`
4633 for Csh-style shells.  You *MUST* do this before running make.
4634
4635 EOM
4636                 ;;
4637         *)      useshrplib='false' ;;
4638         esac
4639         ;;
4640 esac
4641
4642 case "$useshrplib" in
4643 true)
4644         case "$libperl" in
4645         '')
4646                 # Figure out a good name for libperl.so.  Since it gets stored in
4647                 # a version-specific architecture-dependent library, the version
4648                 # number isn't really that important, except for making cc/ld happy.
4649                 #
4650                 # A name such as libperl.so.3.1
4651                 majmin="libperl.$so.$patchlevel.$subversion"
4652                 # A name such as libperl.so.301
4653                 majonly=`echo $patchlevel $subversion |
4654                         $awk '{printf "%d%02d", $1, $2}'`
4655                 majonly=libperl.$so.$majonly
4656                 # I'd prefer to keep the os-specific stuff here to a minimum, and
4657                 # rely on figuring it out from the naming of libc.
4658                 case "${osname}${osvers}" in
4659                 next4*)
4660                         dflt=libperl.5.$so
4661                         # XXX How handle the --version stuff for MAB?
4662                         ;;
4663                 linux*)  # ld won't link with a bare -lperl otherwise.
4664                         dflt=libperl.$so
4665                         ;;
4666                 *)      # Try to guess based on whether libc has major.minor.
4667                         case "$libc" in
4668                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4669                         *libc.$so.[0-9]*) dflt=$majonly ;;
4670                         *)      dflt=libperl.$so ;;
4671                         esac
4672                         ;;
4673                 esac
4674                 ;;
4675         *)      dflt=$libperl
4676                 ;;
4677         esac
4678         cat << EOM
4679
4680 I need to select a good name for the shared libperl.  If your system uses
4681 library names with major and minor numbers, then you might want something
4682 like $majmin.  Alternatively, if your system uses a single version
4683 number for shared libraries, then you might want to use $majonly.
4684 Or, your system might be quite happy with a simple libperl.$so.
4685
4686 Since the shared libperl will get installed into a version-specific
4687 architecture-dependent directory, the version number of the shared perl
4688 library probably isn't important, so the default should be o.k.
4689
4690 EOM
4691         rp='What name do you want to give to the shared libperl?'
4692         . ./myread
4693         libperl=$ans
4694         echo "Ok, I'll use $libperl"
4695         ;;
4696 *)
4697         libperl="libperl${lib_ext}"
4698         ;;
4699 esac
4700
4701 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4702 case "$shrpdir" in
4703 '') ;;
4704 *)      $cat >&4 <<EOM
4705 WARNING:  Use of the shrpdir variable for the installation location of
4706 the shared $libperl is not supported.  It was never documented and
4707 will not work in this version.  Let me (chip@perl.com) know of any
4708 problems this may cause.
4709
4710 EOM
4711         case "$shrpdir" in
4712         "$archlibexp/CORE")
4713                 $cat >&4 <<EOM
4714 But your current setting of $shrpdir is
4715 the default anyway, so it's harmless.
4716 EOM
4717                 ;;