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