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