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