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