ExtUtils-Install/t/Install.t: better -w tests
[perl.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 package (which contains metaconfig) is available via SVN:
17 #     svn co https://svn.code.sf.net/p/dist/code/trunk/dist
18 #
19 # Though this script was generated by metaconfig from metaunits, it is
20 # OK to send patches against Configure itself. It's up to the Configure
21 # pumpkin to backport the patch to the metaunits if it is accepted.
22 # For more information on patching Configure, see pod/perlhack.pod
23 #
24 # The metaunits are also available from the public git repository:
25 #     http://perl5.git.perl.org/metaconfig.git/ or
26 #     $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
27 #
28 # See Porting/pumpkin.pod for more information on metaconfig.
29 #
30
31 # Generated on Wed Apr  9 12:24:24 CEST 2014 [metaconfig 3.5 PL0]
32 # (with additional metaconfig patches by perlbug@perl.org)
33
34 cat >c1$$ <<EOF
35 ARGGGHHHH!!!!!
36
37 SCO csh still thinks true is false.  Write to SCO today and tell them that next
38 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
39
40 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
41 we'd have to do is go in and swap the && and || tokens, wherever they are.)
42
43 [End of diatribe. We now return you to your regularly scheduled programming...]
44 EOF
45 cat >c2$$ <<EOF
46
47 OOPS!  You naughty creature!  You didn't run Configure with sh!
48 I will attempt to remedy the situation by running sh for you...
49 EOF
50
51 true || cat c1$$ c2$$
52 true || exec sh $0 $argv:q
53
54 (exit $?0) || cat c2$$
55 (exit $?0) || exec sh $0 $argv:q
56 rm -f c1$$ c2$$
57
58 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
59         cat <<EOF
60 ***
61 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
62 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
63 *** Please read the README.plan9 for further instructions.
64 *** Cannot continue, aborting.
65 ***
66 EOF
67         exit 1
68 fi
69
70 if test ! -c /dev/null ; then
71         cat <<EOF
72 ***
73 *** I'm sorry, but /dev/null appears to be a file rather than a device.
74 *** Please consult your operating sytem's notes for making a device
75 *** in /dev.
76 *** Cannot continue, aborting.
77 ***
78 EOF
79         exit 1
80 fi
81
82 : compute my invocation name
83 me=$0
84 case "$0" in
85 */*)
86         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
87         test "$me" || me=$0
88         ;;
89 esac
90
91 : Proper separator for the PATH environment variable
92 p_=:
93 : On OS/2 this directory should exist if this is not floppy only system ":-]"
94 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
95         if test -n "$OS2_SHELL"; then
96                 p_=\;
97                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
98                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
99                 is_os2=yes
100         elif test -n "$DJGPP"; then
101                 case "X${MACHTYPE:-nonesuchmach}" in
102                 *cygwin|*msys) ;;
103                 *) p_=\; ;;
104                 esac
105         fi
106 fi
107
108 : Proper PATH setting
109 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
110 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
111 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
112 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
113 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
114 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
115 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
116 paths="$paths /sbin /usr/sbin /usr/libexec"
117 paths="$paths /system/gnu_library/bin"
118
119 for p in $paths
120 do
121         case "$p_$PATH$p_" in
122         *$p_$p$p_*) ;;
123         *) test -d $p && PATH=$PATH$p_$p ;;
124         esac
125 done
126
127 PATH=.$p_$PATH
128 export PATH
129
130 : shall we be using ksh?
131 inksh=''
132 needksh=''
133 avoidksh=''
134 newsh=/bin/ksh
135 changesh=''
136 if (PATH=.; alias -x) >/dev/null 2>&1; then
137                 inksh=true
138 fi
139 if test -f /hp-ux -a -f /bin/ksh; then
140         needksh='to avoid sh bug in "here document" expansion'
141 fi
142 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
143         if test X`/usr/bin/uname -v` = X4; then
144                 avoidksh="to avoid AIX 4's /bin/sh"
145                 newsh=/usr/bin/bsh
146         fi
147 fi
148 if test -f /osf_boot -a -f /usr/sbin/setld; then
149         if test X`/usr/bin/uname -s` = XOSF1; then
150                 avoidksh="to avoid Digital UNIX' ksh"
151                 newsh=/bin/sh
152                 unset BIN_SH
153         fi
154 fi
155 case "$inksh/$needksh" in
156 /[a-z]*)
157                 ENV=''
158                 changesh=true
159                 reason="$needksh"
160         ;;
161 esac
162 case "$inksh/$avoidksh" in
163 true/[a-z]*)
164         changesh=true
165         reason="$avoidksh"
166         ;;
167 esac
168 case "$inksh/$needksh-$avoidksh-" in
169 true/--)
170                 cat <<EOM
171 (I see you are using the Korn shell.  Some ksh's blow up on $me,
172 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
173 EOM
174         ;;
175 esac
176 case "$changesh" in
177 true)
178         export newsh
179         echo "(Feeding myself to $newsh $reason.)"
180         case "$0" in
181         Configure|*/Configure) exec $newsh $0 "$@";;
182         *) exec $newsh Configure "$@";;
183         esac
184         ;;
185 esac
186 test -x "${newsh}" || unset newsh
187
188 : if needed, set CDPATH to a harmless value that is not chatty
189 : avoid bash 2.02 problems with empty CDPATH.
190 case "$CDPATH" in
191 '')     ;;
192 *)      case "$SHELL" in
193         *bash*) CDPATH='.' ;;
194         *) CDPATH='' ;;
195         esac
196         ;;
197 esac
198
199 : Configure runs within the UU subdirectory
200 test -d UU || mkdir UU
201 cd UU && rm -f ./*
202
203 ccname=''
204 ccversion=''
205 ccsymbols=''
206 cppccsymbols=''
207 cppsymbols=''
208 from=''
209 hostgenerate=''
210 hostosname=''
211 hostperl=''
212 run=''
213 targetarch=''
214 targetdir=''
215 targetenv=''
216 targethost=''
217 targetmkdir=''
218 targetport=''
219 to=''
220 usecrosscompile=''
221 extern_C=''
222 mistrustnm=''
223 usedevel=''
224 perllibs=''
225 dynamic_ext=''
226 extensions=''
227 known_extensions=''
228 nonxs_ext=''
229 static_ext=''
230 useopcode=''
231 useposix=''
232 extras=''
233 d_bsd=''
234 d_eunice=''
235 d_xenix=''
236 eunicefix=''
237 ar=''
238 awk=''
239 bash=''
240 bison=''
241 byacc=''
242 cat=''
243 chgrp=''
244 chmod=''
245 chown=''
246 comm=''
247 compress=''
248 cp=''
249 cpio=''
250 cpp=''
251 csh=''
252 date=''
253 echo=''
254 egrep=''
255 emacs=''
256 expr=''
257 find=''
258 flex=''
259 gmake=''
260 grep=''
261 gzip=''
262 inews=''
263 ksh=''
264 less=''
265 line=''
266 lint=''
267 ln=''
268 lp=''
269 lpr=''
270 ls=''
271 mail=''
272 mailx=''
273 make=''
274 mkdir=''
275 more=''
276 mv=''
277 nm=''
278 nroff=''
279 perl=''
280 pg=''
281 pmake=''
282 pr=''
283 rm=''
284 rmail=''
285 sed=''
286 sendmail=''
287 shar=''
288 sleep=''
289 smail=''
290 sort=''
291 submit=''
292 tail=''
293 tar=''
294 tbl=''
295 tee=''
296 test=''
297 touch=''
298 tr=''
299 troff=''
300 uname=''
301 uniq=''
302 uuname=''
303 vi=''
304 zcat=''
305 zip=''
306 full_ar=''
307 full_sed=''
308 libswanted=''
309 hint=''
310 myuname=''
311 osname=''
312 osvers=''
313 Author=''
314 Date=''
315 Header=''
316 Id=''
317 Locker=''
318 Log=''
319 RCSfile=''
320 Revision=''
321 Source=''
322 State=''
323 sysroot=''
324 _a=''
325 _exe=''
326 _o=''
327 archobjs=''
328 exe_ext=''
329 firstmakefile=''
330 lib_ext=''
331 obj_ext=''
332 path_sep=''
333 rm_try=''
334 afs=''
335 afsroot=''
336 alignbytes=''
337 ansi2knr=''
338 archlib=''
339 archlibexp=''
340 d_archlib=''
341 installarchlib=''
342 archname=''
343 myarchname=''
344 useversionedarchname=''
345 d_atolf=''
346 d_atoll=''
347 baserev=''
348 bin=''
349 binexp=''
350 initialinstalllocation=''
351 installbin=''
352 userelocatableinc=''
353 byteorder=''
354 cc=''
355 ccflags=''
356 cppflags=''
357 ldflags=''
358 lkflags=''
359 locincpth=''
360 optimize=''
361 cf_email=''
362 cf_by=''
363 cf_time=''
364 charbits=''
365 charsize=''
366 contains=''
367 cpp_stuff=''
368 cpplast=''
369 cppminus=''
370 cpprun=''
371 cppstdin=''
372 d__fwalk=''
373 d_access=''
374 d_accessx=''
375 d_aintl=''
376 d_alarm=''
377 asctime_r_proto=''
378 d_asctime_r=''
379 d_attribute_deprecated=''
380 d_attribute_format=''
381 d_attribute_malloc=''
382 d_attribute_nonnull=''
383 d_attribute_noreturn=''
384 d_attribute_pure=''
385 d_attribute_unused=''
386 d_attribute_warn_unused_result=''
387 d_printf_format_null=''
388 d_bcmp=''
389 d_bcopy=''
390 d_builtin_choose_expr=''
391 d_builtin_expect=''
392 d_bzero=''
393 d_c99_variadic_macros=''
394 d_casti32=''
395 castflags=''
396 d_castneg=''
397 d_chown=''
398 d_chroot=''
399 d_chsize=''
400 d_class=''
401 d_clearenv=''
402 d_closedir=''
403 d_void_closedir=''
404 d_cmsghdr_s=''
405 d_const=''
406 d_copysignl=''
407 d_cplusplus=''
408 cryptlib=''
409 d_crypt=''
410 crypt_r_proto=''
411 d_crypt_r=''
412 d_csh=''
413 full_csh=''
414 d_ctermid=''
415 ctermid_r_proto=''
416 d_ctermid_r=''
417 ctime_r_proto=''
418 d_ctime_r=''
419 d_cuserid=''
420 d_dbl_dig=''
421 d_dbminitproto=''
422 d_difftime=''
423 d_dir_dd_fd=''
424 d_dirfd=''
425 d_dlerror=''
426 d_dlopen=''
427 d_dlsymun=''
428 d_dosuid=''
429 d_suidsafe=''
430 d_drand48_r=''
431 drand48_r_proto=''
432 d_drand48proto=''
433 d_dup2=''
434 d_eaccess=''
435 d_endgrent=''
436 d_endgrent_r=''
437 endgrent_r_proto=''
438 d_endhent=''
439 d_endhostent_r=''
440 endhostent_r_proto=''
441 d_endnent=''
442 d_endnetent_r=''
443 endnetent_r_proto=''
444 d_endpent=''
445 d_endprotoent_r=''
446 endprotoent_r_proto=''
447 d_endpwent=''
448 d_endpwent_r=''
449 endpwent_r_proto=''
450 d_endsent=''
451 d_endservent_r=''
452 endservent_r_proto=''
453 d_faststdio=''
454 d_fchdir=''
455 d_fchmod=''
456 d_fchown=''
457 d_fcntl=''
458 d_fcntl_can_lock=''
459 d_fd_macros=''
460 d_fd_set=''
461 d_fds_bits=''
462 d_fgetpos=''
463 d_finite=''
464 d_finitel=''
465 d_flexfnam=''
466 d_flock=''
467 d_flockproto=''
468 d_fork=''
469 d_fp_class=''
470 d_fpclass=''
471 d_fpclassify=''
472 d_fpclassl=''
473 d_fpos64_t=''
474 d_frexpl=''
475 d_fs_data_s=''
476 d_fseeko=''
477 d_fsetpos=''
478 d_fstatfs=''
479 d_fsync=''
480 d_ftello=''
481 d_ftime=''
482 d_gettimeod=''
483 d_futimes=''
484 d_Gconvert=''
485 d_getaddrinfo=''
486 d_getcwd=''
487 d_getespwnam=''
488 d_getfsstat=''
489 d_getgrent=''
490 d_getgrent_r=''
491 getgrent_r_proto=''
492 d_getgrgid_r=''
493 getgrgid_r_proto=''
494 d_getgrnam_r=''
495 getgrnam_r_proto=''
496 d_getgrps=''
497 d_gethbyaddr=''
498 d_gethbyname=''
499 d_gethent=''
500 aphostname=''
501 d_gethname=''
502 d_phostname=''
503 d_uname=''
504 d_gethostbyaddr_r=''
505 gethostbyaddr_r_proto=''
506 d_gethostbyname_r=''
507 gethostbyname_r_proto=''
508 d_gethostent_r=''
509 gethostent_r_proto=''
510 d_gethostprotos=''
511 d_getitimer=''
512 d_getlogin=''
513 d_getlogin_r=''
514 getlogin_r_proto=''
515 d_getmnt=''
516 d_getmntent=''
517 d_getnameinfo=''
518 d_getnbyaddr=''
519 d_getnbyname=''
520 d_getnent=''
521 d_getnetbyaddr_r=''
522 getnetbyaddr_r_proto=''
523 d_getnetbyname_r=''
524 getnetbyname_r_proto=''
525 d_getnetent_r=''
526 getnetent_r_proto=''
527 d_getnetprotos=''
528 d_getpagsz=''
529 d_getpent=''
530 d_getpgid=''
531 d_getpgrp2=''
532 d_bsdgetpgrp=''
533 d_getpgrp=''
534 d_getppid=''
535 d_getprior=''
536 d_getpbyname=''
537 d_getpbynumber=''
538 d_getprotobyname_r=''
539 getprotobyname_r_proto=''
540 d_getprotobynumber_r=''
541 getprotobynumber_r_proto=''
542 d_getprotoent_r=''
543 getprotoent_r_proto=''
544 d_getprotoprotos=''
545 d_getprpwnam=''
546 d_getpwent=''
547 d_getpwent_r=''
548 getpwent_r_proto=''
549 d_getpwnam_r=''
550 getpwnam_r_proto=''
551 d_getpwuid_r=''
552 getpwuid_r_proto=''
553 d_getsent=''
554 d_getservbyname_r=''
555 getservbyname_r_proto=''
556 d_getservbyport_r=''
557 getservbyport_r_proto=''
558 d_getservent_r=''
559 getservent_r_proto=''
560 d_getservprotos=''
561 d_getspnam=''
562 d_getspnam_r=''
563 getspnam_r_proto=''
564 d_getsbyname=''
565 d_getsbyport=''
566 d_gmtime_r=''
567 gmtime_r_proto=''
568 d_gnulibc=''
569 gnulibc_version=''
570 d_hasmntopt=''
571 d_htonl=''
572 d_ilogbl=''
573 d_inetaton=''
574 d_inetntop=''
575 d_inetpton=''
576 d_int64_t=''
577 d_isascii=''
578 d_isblank=''
579 d_isfinite=''
580 d_isinf=''
581 d_isnan=''
582 d_isnanl=''
583 d_killpg=''
584 d_lchown=''
585 d_ldbl_dig=''
586 d_libm_lib_version=''
587 d_link=''
588 d_localtime_r=''
589 d_localtime_r_needs_tzset=''
590 localtime_r_proto=''
591 d_locconv=''
592 d_lockf=''
593 d_longdbl=''
594 longdblsize=''
595 d_longlong=''
596 longlongsize=''
597 d_lseekproto=''
598 d_lstat=''
599 d_madvise=''
600 d_malloc_good_size=''
601 d_malloc_size=''
602 d_mblen=''
603 d_mbstowcs=''
604 d_mbtowc=''
605 d_memchr=''
606 d_memcmp=''
607 d_memcpy=''
608 d_memmove=''
609 d_memset=''
610 d_mkdir=''
611 d_mkdtemp=''
612 d_mkfifo=''
613 d_mkstemp=''
614 d_mkstemps=''
615 d_mktime=''
616 d_mmap=''
617 mmaptype=''
618 d_modfl=''
619 d_modfl_pow32_bug=''
620 d_modflproto=''
621 d_mprotect=''
622 d_msg=''
623 d_msgctl=''
624 d_msgget=''
625 d_msghdr_s=''
626 d_msgrcv=''
627 d_msgsnd=''
628 d_msync=''
629 d_munmap=''
630 d_nice=''
631 d_nl_langinfo=''
632 d_off64_t=''
633 d_open3=''
634 d_fpathconf=''
635 d_pathconf=''
636 d_pause=''
637 d_pipe=''
638 d_poll=''
639 d_portable=''
640 d_prctl=''
641 d_prctl_set_name=''
642 d_procselfexe=''
643 procselfexe=''
644 d_old_pthread_create_joinable=''
645 old_pthread_create_joinable=''
646 d_pthread_atfork=''
647 d_pthread_attr_setscope=''
648 d_pthread_yield=''
649 d_sched_yield=''
650 sched_yield=''
651 d_qgcvt=''
652 d_random_r=''
653 random_r_proto=''
654 d_readdir64_r=''
655 readdir64_r_proto=''
656 d_readdir=''
657 d_rewinddir=''
658 d_seekdir=''
659 d_telldir=''
660 d_readdir_r=''
661 readdir_r_proto=''
662 d_readlink=''
663 d_readv=''
664 d_recvmsg=''
665 d_rename=''
666 d_rmdir=''
667 d_safebcpy=''
668 d_safemcpy=''
669 d_sanemcmp=''
670 d_sbrkproto=''
671 d_scalbnl=''
672 d_select=''
673 d_sem=''
674 d_semctl=''
675 d_semget=''
676 d_semop=''
677 d_sendmsg=''
678 d_setegid=''
679 d_seteuid=''
680 d_setgrent=''
681 d_setgrent_r=''
682 setgrent_r_proto=''
683 d_setgrps=''
684 d_sethent=''
685 d_sethostent_r=''
686 sethostent_r_proto=''
687 d_setitimer=''
688 d_setlinebuf=''
689 d_setlocale=''
690 d_setlocale_r=''
691 setlocale_r_proto=''
692 d_setnent=''
693 d_setnetent_r=''
694 setnetent_r_proto=''
695 d_setpent=''
696 d_setpgid=''
697 d_setpgrp2=''
698 d_bsdsetpgrp=''
699 d_setpgrp=''
700 d_setprior=''
701 d_setproctitle=''
702 d_setprotoent_r=''
703 setprotoent_r_proto=''
704 d_setpwent=''
705 d_setpwent_r=''
706 setpwent_r_proto=''
707 d_setregid=''
708 d_setresgid=''
709 d_setresuid=''
710 d_setreuid=''
711 d_setrgid=''
712 d_setruid=''
713 d_setsent=''
714 d_setservent_r=''
715 setservent_r_proto=''
716 d_setsid=''
717 d_setvbuf=''
718 d_shm=''
719 d_shmat=''
720 d_shmatprototype=''
721 shmattype=''
722 d_shmctl=''
723 d_shmdt=''
724 d_shmget=''
725 d_sigaction=''
726 d_signbit=''
727 d_sigprocmask=''
728 d_sigsetjmp=''
729 usesitecustomize=''
730 d_snprintf=''
731 d_vsnprintf=''
732 d_sockatmark=''
733 d_sockatmarkproto=''
734 d_ip_mreq=''
735 d_ip_mreq_source=''
736 d_ipv6_mreq=''
737 d_ipv6_mreq_source=''
738 d_msg_ctrunc=''
739 d_msg_dontroute=''
740 d_msg_oob=''
741 d_msg_peek=''
742 d_msg_proxy=''
743 d_oldsock=''
744 d_scm_rights=''
745 d_sin6_scope_id=''
746 d_sockaddr_in6=''
747 d_sockaddr_sa_len=''
748 d_socket=''
749 d_sockpair=''
750 sockethdr=''
751 socketlib=''
752 d_socklen_t=''
753 d_socks5_init=''
754 d_sprintf_returns_strlen=''
755 d_sqrtl=''
756 d_srand48_r=''
757 srand48_r_proto=''
758 d_srandom_r=''
759 srandom_r_proto=''
760 d_sresgproto=''
761 d_sresuproto=''
762 d_statblks=''
763 d_statfs_f_flags=''
764 d_statfs_s=''
765 d_static_inline=''
766 perl_static_inline=''
767 d_fstatvfs=''
768 d_statvfs=''
769 d_stdio_cnt_lval=''
770 d_stdio_ptr_lval=''
771 d_stdio_ptr_lval_nochange_cnt=''
772 d_stdio_ptr_lval_sets_cnt=''
773 d_stdiobase=''
774 d_stdstdio=''
775 stdio_base=''
776 stdio_bufsiz=''
777 stdio_cnt=''
778 stdio_filbuf=''
779 stdio_ptr=''
780 d_index=''
781 d_strchr=''
782 d_strcoll=''
783 d_strctcpy=''
784 d_strerrm=''
785 d_strerror=''
786 d_sysernlst=''
787 d_syserrlst=''
788 d_strerror_r=''
789 strerror_r_proto=''
790 d_strftime=''
791 d_strlcat=''
792 d_strlcpy=''
793 d_strtod=''
794 d_strtol=''
795 d_strtold=''
796 d_strtoll=''
797 d_strtoq=''
798 d_strtoul=''
799 d_strtoull=''
800 d_strtouq=''
801 d_strxfrm=''
802 d_symlink=''
803 d_syscall=''
804 d_syscallproto=''
805 d_sysconf=''
806 d_system=''
807 d_tcgetpgrp=''
808 d_tcsetpgrp=''
809 d_telldirproto=''
810 d_time=''
811 timetype=''
812 d_asctime64=''
813 d_ctime64=''
814 d_difftime64=''
815 d_gmtime64=''
816 d_localtime64=''
817 d_mktime64=''
818 d_timegm=''
819 clocktype=''
820 d_times=''
821 d_tmpnam_r=''
822 tmpnam_r_proto=''
823 d_truncate=''
824 d_ttyname_r=''
825 ttyname_r_proto=''
826 d_tzname=''
827 d_u32align=''
828 d_ualarm=''
829 d_umask=''
830 d_semctl_semid_ds=''
831 d_semctl_semun=''
832 d_union_semun=''
833 d_unordered=''
834 d_unsetenv=''
835 d_usleep=''
836 d_usleepproto=''
837 d_ustat=''
838 d_pseudofork=''
839 d_vfork=''
840 usevfork=''
841 d_voidsig=''
842 signal_t=''
843 d_volatile=''
844 d_charvspr=''
845 d_vprintf=''
846 d_wait4=''
847 d_waitpid=''
848 d_wcstombs=''
849 d_wctomb=''
850 d_writev=''
851 dlext=''
852 bin_ELF=''
853 cccdlflags=''
854 ccdlflags=''
855 dlsrc=''
856 ld=''
857 ld_can_script=''
858 lddlflags=''
859 usedl=''
860 doublesize=''
861 bootstrap_charset=''
862 ebcdic=''
863 fflushNULL=''
864 fflushall=''
865 fpossize=''
866 fpostype=''
867 gccansipedantic=''
868 gccosandvers=''
869 gccversion=''
870 gidformat=''
871 gidsign=''
872 gidsize=''
873 gidtype=''
874 groupstype=''
875 h_fcntl=''
876 h_sysfile=''
877 html1dir=''
878 html1direxp=''
879 installhtml1dir=''
880 html3dir=''
881 html3direxp=''
882 installhtml3dir=''
883 i_arpainet=''
884 i_assert=''
885 i_crypt=''
886 db_hashtype=''
887 db_prefixtype=''
888 db_version_major=''
889 db_version_minor=''
890 db_version_patch=''
891 i_db=''
892 i_dbm=''
893 i_rpcsvcdbm=''
894 d_dirnamlen=''
895 direntrytype=''
896 i_dirent=''
897 i_dlfcn=''
898 i_fcntl=''
899 i_float=''
900 i_fp=''
901 i_fp_class=''
902 i_gdbm=''
903 d_grpasswd=''
904 i_grp=''
905 i_ieeefp=''
906 i_inttypes=''
907 i_langinfo=''
908 i_libutil=''
909 i_limits=''
910 i_locale=''
911 i_machcthr=''
912 i_malloc=''
913 i_mallocmalloc=''
914 i_math=''
915 i_memory=''
916 i_mntent=''
917 d_gdbm_ndbm_h_uses_prototypes=''
918 d_gdbmndbm_h_uses_prototypes=''
919 d_ndbm=''
920 d_ndbm_h_uses_prototypes=''
921 i_gdbm_ndbm=''
922 i_gdbmndbm=''
923 i_ndbm=''
924 i_netdb=''
925 i_neterrno=''
926 i_netinettcp=''
927 i_niin=''
928 i_sysin=''
929 i_poll=''
930 i_prot=''
931 i_pthread=''
932 d_pwage=''
933 d_pwchange=''
934 d_pwclass=''
935 d_pwcomment=''
936 d_pwexpire=''
937 d_pwgecos=''
938 d_pwpasswd=''
939 d_pwquota=''
940 i_pwd=''
941 i_shadow=''
942 i_socks=''
943 i_stdbool=''
944 i_stddef=''
945 i_stdlib=''
946 i_string=''
947 strings=''
948 i_sunmath=''
949 i_sysaccess=''
950 i_sysdir=''
951 i_sysfile=''
952 d_voidtty=''
953 i_bsdioctl=''
954 i_sysfilio=''
955 i_sysioctl=''
956 i_syssockio=''
957 i_syslog=''
958 i_sysmman=''
959 i_sysmode=''
960 i_sysmount=''
961 i_sysndir=''
962 i_sysparam=''
963 i_syspoll=''
964 i_sysresrc=''
965 i_syssecrt=''
966 i_sysselct=''
967 i_sysstat=''
968 i_sysstatfs=''
969 i_sysstatvfs=''
970 i_systimes=''
971 i_systypes=''
972 i_sysuio=''
973 i_sysun=''
974 i_sysutsname=''
975 i_sysvfs=''
976 i_syswait=''
977 i_sgtty=''
978 i_termio=''
979 i_termios=''
980 d_tm_tm_gmtoff=''
981 d_tm_tm_zone=''
982 i_systime=''
983 i_systimek=''
984 i_time=''
985 timeincl=''
986 i_unistd=''
987 i_ustat=''
988 i_utime=''
989 i_values=''
990 i_stdarg=''
991 i_varargs=''
992 i_varhdr=''
993 i_vfork=''
994 d_inc_version_list=''
995 inc_version_list=''
996 inc_version_list_init=''
997 installprefix=''
998 installprefixexp=''
999 installstyle=''
1000 installusrbinperl=''
1001 intsize=''
1002 longsize=''
1003 shortsize=''
1004 issymlink=''
1005 libc=''
1006 ldlibpthname=''
1007 libperl=''
1008 shrpenv=''
1009 useshrplib=''
1010 glibpth=''
1011 incpth=''
1012 libpth=''
1013 loclibpth=''
1014 plibpth=''
1015 xlibpth=''
1016 ignore_versioned_solibs=''
1017 libs=''
1018 libsdirs=''
1019 libsfiles=''
1020 libsfound=''
1021 libspath=''
1022 lns=''
1023 d_PRIEUldbl=''
1024 d_PRIFUldbl=''
1025 d_PRIGUldbl=''
1026 d_PRIeldbl=''
1027 d_PRIfldbl=''
1028 d_PRIgldbl=''
1029 d_SCNfldbl=''
1030 sPRIEUldbl=''
1031 sPRIFUldbl=''
1032 sPRIGUldbl=''
1033 sPRIeldbl=''
1034 sPRIfldbl=''
1035 sPRIgldbl=''
1036 sSCNfldbl=''
1037 lseeksize=''
1038 lseektype=''
1039 mad=''
1040 madlyh=''
1041 madlyobj=''
1042 madlysrc=''
1043 make_set_make=''
1044 d_mymalloc=''
1045 freetype=''
1046 mallocobj=''
1047 mallocsrc=''
1048 malloctype=''
1049 usemallocwrap=''
1050 usemymalloc=''
1051 installman1dir=''
1052 man1dir=''
1053 man1direxp=''
1054 man1ext=''
1055 installman3dir=''
1056 man3dir=''
1057 man3direxp=''
1058 man3ext=''
1059 modetype=''
1060 multiarch=''
1061 mydomain=''
1062 myhostname=''
1063 phostname=''
1064 c=''
1065 n=''
1066 d_eofnblk=''
1067 eagain=''
1068 o_nonblock=''
1069 rd_nodata=''
1070 need_va_copy=''
1071 netdb_hlen_type=''
1072 netdb_host_type=''
1073 netdb_name_type=''
1074 netdb_net_type=''
1075 groupcat=''
1076 hostcat=''
1077 passcat=''
1078 orderlib=''
1079 ranlib=''
1080 d_perl_otherlibdirs=''
1081 otherlibdirs=''
1082 package=''
1083 spackage=''
1084 pager=''
1085 api_revision=''
1086 api_subversion=''
1087 api_version=''
1088 api_versionstring=''
1089 patchlevel=''
1090 perl_patchlevel=''
1091 revision=''
1092 subversion=''
1093 version=''
1094 version_patchlevel_string=''
1095 perl5=''
1096 perladmin=''
1097 perlpath=''
1098 d_nv_preserves_uv=''
1099 d_nv_zero_is_allbits_zero=''
1100 i16size=''
1101 i16type=''
1102 i32size=''
1103 i32type=''
1104 i64size=''
1105 i64type=''
1106 i8size=''
1107 i8type=''
1108 ivsize=''
1109 ivtype=''
1110 nv_overflows_integers_at=''
1111 nv_preserves_uv_bits=''
1112 nvsize=''
1113 nvtype=''
1114 u16size=''
1115 u16type=''
1116 u32size=''
1117 u32type=''
1118 u64size=''
1119 u64type=''
1120 u8size=''
1121 u8type=''
1122 uvsize=''
1123 uvtype=''
1124 ivdformat=''
1125 nvEUformat=''
1126 nvFUformat=''
1127 nvGUformat=''
1128 nveformat=''
1129 nvfformat=''
1130 nvgformat=''
1131 uvXUformat=''
1132 uvoformat=''
1133 uvuformat=''
1134 uvxformat=''
1135 pidtype=''
1136 prefix=''
1137 prefixexp=''
1138 installprivlib=''
1139 privlib=''
1140 privlibexp=''
1141 prototype=''
1142 ptrsize=''
1143 d_PRIXU64=''
1144 d_PRId64=''
1145 d_PRIi64=''
1146 d_PRIo64=''
1147 d_PRIu64=''
1148 d_PRIx64=''
1149 sPRIXU64=''
1150 sPRId64=''
1151 sPRIi64=''
1152 sPRIo64=''
1153 sPRIu64=''
1154 sPRIx64=''
1155 d_quad=''
1156 quadkind=''
1157 quadtype=''
1158 uquadtype=''
1159 drand01=''
1160 randbits=''
1161 randfunc=''
1162 randseedtype=''
1163 seedfunc=''
1164 installscript=''
1165 scriptdir=''
1166 scriptdirexp=''
1167 selectminbits=''
1168 selecttype=''
1169 sh=''
1170 targetsh=''
1171 sig_count=''
1172 sig_name=''
1173 sig_name_init=''
1174 sig_num=''
1175 sig_num_init=''
1176 sig_size=''
1177 d_sitearch=''
1178 installsitearch=''
1179 sitearch=''
1180 sitearchexp=''
1181 installsitebin=''
1182 sitebin=''
1183 sitebinexp=''
1184 installsitehtml1dir=''
1185 sitehtml1dir=''
1186 sitehtml1direxp=''
1187 installsitehtml3dir=''
1188 sitehtml3dir=''
1189 sitehtml3direxp=''
1190 installsitelib=''
1191 sitelib=''
1192 sitelib_stem=''
1193 sitelibexp=''
1194 installsiteman1dir=''
1195 siteman1dir=''
1196 siteman1direxp=''
1197 installsiteman3dir=''
1198 siteman3dir=''
1199 siteman3direxp=''
1200 siteprefix=''
1201 siteprefixexp=''
1202 installsitescript=''
1203 sitescript=''
1204 sitescriptexp=''
1205 sizesize=''
1206 sizetype=''
1207 d_libname_unique=''
1208 so=''
1209 socksizetype=''
1210 sharpbang=''
1211 shsharp=''
1212 spitshell=''
1213 src=''
1214 ssizetype=''
1215 st_ino_sign=''
1216 st_ino_size=''
1217 startperl=''
1218 startsh=''
1219 stdchar=''
1220 d_stdio_stream_array=''
1221 stdio_stream_array=''
1222 sysman=''
1223 sGMTIME_max=''
1224 sGMTIME_min=''
1225 sLOCALTIME_max=''
1226 sLOCALTIME_min=''
1227 trnl=''
1228 uidformat=''
1229 uidsign=''
1230 uidsize=''
1231 uidtype=''
1232 archname64=''
1233 use64bitall=''
1234 use64bitint=''
1235 dtrace=''
1236 usedtrace=''
1237 usefaststdio=''
1238 usekernprocpathname=''
1239 ccflags_uselargefiles=''
1240 ldflags_uselargefiles=''
1241 libswanted_uselargefiles=''
1242 uselargefiles=''
1243 uselongdouble=''
1244 usemorebits=''
1245 usemultiplicity=''
1246 nm_opt=''
1247 nm_so_opt=''
1248 runnm=''
1249 usenm=''
1250 usensgetexecutablepath=''
1251 useperlio=''
1252 usesocks=''
1253 d_oldpthreads=''
1254 use5005threads=''
1255 useithreads=''
1256 usereentrant=''
1257 usethreads=''
1258 incpath=''
1259 mips_type=''
1260 usrinc=''
1261 vaproto=''
1262 d_vendorarch=''
1263 installvendorarch=''
1264 vendorarch=''
1265 vendorarchexp=''
1266 d_vendorbin=''
1267 installvendorbin=''
1268 vendorbin=''
1269 vendorbinexp=''
1270 installvendorhtml1dir=''
1271 vendorhtml1dir=''
1272 vendorhtml1direxp=''
1273 installvendorhtml3dir=''
1274 vendorhtml3dir=''
1275 vendorhtml3direxp=''
1276 d_vendorlib=''
1277 installvendorlib=''
1278 vendorlib=''
1279 vendorlib_stem=''
1280 vendorlibexp=''
1281 installvendorman1dir=''
1282 vendorman1dir=''
1283 vendorman1direxp=''
1284 installvendorman3dir=''
1285 vendorman3dir=''
1286 vendorman3direxp=''
1287 usevendorprefix=''
1288 vendorprefix=''
1289 vendorprefixexp=''
1290 d_vendorscript=''
1291 installvendorscript=''
1292 vendorscript=''
1293 vendorscriptexp=''
1294 versiononly=''
1295 yacc=''
1296 yaccflags=''
1297 CONFIG=''
1298
1299 : Detect odd OSs
1300 define='define'
1301 undef='undef'
1302 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1303 rmlist=''
1304
1305 : We must find out about Eunice early
1306 eunicefix=':'
1307 if test -f /etc/unixtovms; then
1308         eunicefix=/etc/unixtovms
1309 fi
1310 if test -f /etc/unixtovms.exe; then
1311         eunicefix=/etc/unixtovms.exe
1312 fi
1313
1314 : Set executable suffix now -- needed before hints available
1315 if test -f "/libs/version.library"; then
1316 : Amiga OS
1317     _exe=""
1318 elif test -f "/system/gnu_library/bin/ar.pm"; then
1319 : Stratus VOS
1320     _exe=".pm"
1321 elif test -n "$DJGPP"; then
1322 : DOS DJGPP
1323     _exe=".exe"
1324 elif test -f /kern/cookiejar; then
1325 : MiNT
1326     _exe=""
1327 elif test -d c:/. -o -n "$is_os2" ; then
1328 : OS/2 or cygwin
1329     _exe=".exe"
1330 fi
1331
1332 groupstype=''
1333 i_whoami=''
1334 : Trailing extension.  Override this in a hint file, if needed.
1335 : Extra object files, if any, needed on this platform.
1336 archobjs=''
1337 archname=''
1338 : Possible local include directories to search.
1339 : Set locincpth to "" in a hint file to defeat local include searches.
1340 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1341 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1342 :
1343 : no include file wanted by default
1344 inclwanted=''
1345
1346 : Enable -DEBUGGING and -DDEBUGGING from the command line
1347 EBUGGING=''
1348 DEBUGGING=''
1349
1350 libnames=''
1351 : change the next line if compiling for Xenix/286 on Xenix/386
1352 xlibpth='/usr/lib/386 /lib/386'
1353 : Possible local library directories to search.
1354 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1355 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1356
1357 : general looking path for locating libraries
1358 glibpth="/lib /usr/lib $xlibpth"
1359 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1360 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1361 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1362 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1363
1364 : Private path used by Configure to find libraries.  Its value
1365 : is prepended to libpth. This variable takes care of special
1366 : machines, like the mips.  Usually, it should be empty.
1367 plibpth=''
1368
1369 : default library list
1370 libswanted=''
1371 : some systems want to use only the non-versioned libso:s
1372 ignore_versioned_solibs=''
1373 : set usethreads on the Configure command line to enable threads.
1374 usereentrant='undef'
1375 ccname=''
1376 ccversion=''
1377 perllibs=''
1378 : set useposix=false in your hint file to disable the POSIX extension.
1379 useposix=true
1380 : set useopcode=false in your hint file to disable the Opcode extension.
1381 useopcode=true
1382 archname64=''
1383 ccflags_uselargefiles=''
1384 ldflags_uselargefiles=''
1385 libswanted_uselargefiles=''
1386 : set usemultiplicity on the Configure command line to enable multiplicity.
1387 : set usesocks on the Configure command line to enable socks.
1388 : List of libraries we want.
1389 : If anyone needs extra -lxxx, put those in a hint file.
1390 libswanted="socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld sun"
1391 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1392 : We probably want to search /usr/shlib before most other libraries.
1393 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1394 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1395 glibpth="/usr/shlib $glibpth"
1396 : Do not use vfork unless overridden by a hint file.
1397 usevfork=false
1398
1399 : Find the basic shell for Bourne shell scripts
1400 case "$sh" in
1401 '')
1402         case "$SYSTYPE" in
1403         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1404         *) xxx='/bin/sh';;
1405         esac
1406         if test -f "$xxx"; then
1407                 sh="$xxx"
1408         else
1409                 : Build up a list and do a single loop so we can 'break' out.
1410                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1411                 for xxx in sh bash ksh pdksh ash; do
1412                         for p in $pth; do
1413                                 try="$try ${p}/${xxx}"
1414                         done
1415                 done
1416                 for xxx in $try; do
1417                         if test -f "$xxx"; then
1418                                 sh="$xxx";
1419                                 break
1420                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1421                                 sh="$xxx";
1422                                 break
1423                         elif test -f "$xxx.exe"; then
1424                                 sh="$xxx";
1425                                 break
1426                         fi
1427                 done
1428         fi
1429         ;;
1430 esac
1431
1432 case "$sh" in
1433 '')     cat >&2 <<EOM
1434 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.
1435
1436 Usually it's in /bin/sh.  How did you even get this far?
1437 Please contact me (Perl Maintainers) at perlbug@perl.org and
1438 we'll try to straighten this all out.
1439 EOM
1440         exit 1
1441         ;;
1442 esac
1443
1444 : When cross-compiling we need to separate the sh-to-run-Configure-with from the sh-to-use-in-Perl
1445 : default both to the same thing, cross-compilers can then set targetsh differently if they like
1446 targetsh=$sh
1447
1448 : see if sh knows # comments
1449 if `$sh -c '#' >/dev/null 2>&1`; then
1450         shsharp=true
1451         spitshell=cat
1452         xcat=/bin/cat
1453         test -f $xcat$_exe || xcat=/usr/bin/cat
1454         if test ! -f $xcat$_exe; then
1455                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1456                         if test -f $p/cat$_exe; then
1457                                 xcat=$p/cat
1458                                 break
1459                         fi
1460                 done
1461                 if test ! -f $xcat$_exe; then
1462                         echo "Can't find cat anywhere!"
1463                         exit 1
1464                 fi
1465         fi
1466         echo "#!$xcat" >sharp
1467         $eunicefix sharp
1468         chmod +x sharp
1469         ./sharp > today 2>/dev/null
1470         if test -s today; then
1471                 sharpbang='#!'
1472         else
1473                 echo "#! $xcat" > sharp
1474                 $eunicefix sharp
1475                 chmod +x sharp
1476                 ./sharp > today 2>/dev/null
1477                 if test -s today; then
1478                         sharpbang='#! '
1479                 else
1480                         sharpbang=': use '
1481                 fi
1482         fi
1483 else
1484         echo " "
1485         echo "Your $sh doesn't grok # comments--I will strip them later on."
1486         shsharp=false
1487         cd ..
1488         echo "exec grep -v '^[  ]*#'" >spitshell
1489         chmod +x spitshell
1490         $eunicefix spitshell
1491         spitshell=`pwd`/spitshell
1492         cd UU
1493         echo "I presume that if # doesn't work, #! won't work either!"
1494         sharpbang=': use '
1495 fi
1496 rm -f sharp today
1497
1498 : figure out how to guarantee sh startup
1499 case "$startsh" in
1500 '') startsh=${sharpbang}${sh} ;;
1501 *)
1502 esac
1503 cat >sharp <<EOSS
1504 $startsh
1505 set abc
1506 test "$?abc" != 1
1507 EOSS
1508
1509 chmod +x sharp
1510 $eunicefix sharp
1511 if ./sharp; then
1512         : echo "Yup, it does."
1513 else
1514         echo "Hmm... '$startsh' does not guarantee sh startup..."
1515         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1516 fi
1517 rm -f sharp
1518
1519 : Save command line options in file UU/cmdline.opt for later use in
1520 : generating config.sh.
1521 cat > cmdline.opt <<EOSH
1522 : Configure command line arguments.
1523 config_arg0='$0'
1524 config_args='$*'
1525 config_argc=$#
1526 EOSH
1527 argn=1
1528 args_exp=''
1529 args_sep=''
1530 for arg in "$@"; do
1531         cat >>cmdline.opt <<EOSH
1532 config_arg$argn='$arg'
1533 EOSH
1534         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1535 $arg
1536 EOC
1537         arg_exp=`cat cmdl.opt`
1538         args_exp="$args_exp$args_sep'$arg_exp'"
1539         argn=`expr $argn + 1`
1540         args_sep=' '
1541 done
1542 rm -f cmdl.opt
1543
1544 : produce awk script to parse command line options
1545 cat >options.awk <<'EOF'
1546 BEGIN {
1547         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1548
1549         len = length(optstr);
1550         for (i = 1; i <= len; i++) {
1551                 c = substr(optstr, i, 1);
1552                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1553                 if (a == ":") {
1554                         arg[c] = 1;
1555                         i++;
1556                 }
1557                 opt[c] = 1;
1558         }
1559 }
1560 {
1561         expect = 0;
1562         str = $0;
1563         if (substr(str, 1, 1) != "-") {
1564                 printf("'%s'\n", str);
1565                 next;
1566         }
1567         len = length($0);
1568         for (i = 2; i <= len; i++) {
1569                 c = substr(str, i, 1);
1570                 if (!opt[c]) {
1571                         printf("-%s\n", substr(str, i));
1572                         next;
1573                 }
1574                 printf("-%s\n", c);
1575                 if (arg[c]) {
1576                         if (i < len)
1577                                 printf("'%s'\n", substr(str, i + 1));
1578                         else
1579                                 expect = 1;
1580                         next;
1581                 }
1582         }
1583 }
1584 END {
1585         if (expect)
1586                 print "?";
1587 }
1588 EOF
1589
1590 : process the command line options
1591 set X `for arg in "$@"; do echo "X$arg"; done |
1592         sed -e s/X// | awk -f options.awk`
1593 eval "set $*"
1594 shift
1595 rm -f options.awk
1596
1597 : set up default values
1598 fastread=''
1599 reuseval=false
1600 config_sh=''
1601 alldone=''
1602 error=''
1603 silent=''
1604 extractsh=''
1605 override=''
1606 knowitall=''
1607 rm -f optdef.sh posthint.sh
1608 cat >optdef.sh <<EOS
1609 $startsh
1610 EOS
1611
1612
1613 : option parsing
1614 while test $# -gt 0; do
1615         case "$1" in
1616         -d) shift; fastread=yes;;
1617         -e) shift; alldone=cont;;
1618         -f)
1619                 shift
1620                 cd ..
1621                 if test -r "$1"; then
1622                         config_sh="$1"
1623                 else
1624                         echo "$me: cannot read config file $1." >&2
1625                         error=true
1626                 fi
1627                 cd UU
1628                 shift;;
1629         --help|\
1630         -h) shift; error=true;;
1631         -r) shift; reuseval=true;;
1632         -s) shift; silent=true; realsilent=true;;
1633         -E) shift; alldone=exit;;
1634         -K) shift; knowitall=true;;
1635         -O) shift; override=true;;
1636         -S) shift; silent=true; extractsh=true;;
1637         -D)
1638                 shift
1639                 case "$1" in
1640                 *=)
1641                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1642                         echo "$me: ignoring -D $1" >&2
1643                         ;;
1644                 *=*) echo "$1" | \
1645                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1646                 *) echo "$1='define'" >> optdef.sh;;
1647                 esac
1648                 shift
1649                 ;;
1650         -U)
1651                 shift
1652                 case "$1" in
1653                 *=) echo "$1" >> optdef.sh;;
1654                 *=*)
1655                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1656                         echo "$me: ignoring -U $1" >&2
1657                         ;;
1658                 *) echo "$1='undef'" >> optdef.sh;;
1659                 esac
1660                 shift
1661                 ;;
1662         -A)
1663             shift
1664             xxx=''
1665             yyy="$1"
1666             zzz=''
1667             uuu=undef
1668             case "$yyy" in
1669             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1670                  case "$zzz" in
1671                  *:*) zzz='' ;;
1672                  *)   xxx=append
1673                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1674                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1675                  esac
1676                  ;;
1677             esac
1678             case "$xxx" in
1679             '')  case "$yyy" in
1680                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1681                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1682                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1683                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1684                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1685                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1686                  esac
1687                  ;;
1688             esac
1689             case "$xxx" in
1690             append)
1691                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1692             clear)
1693                 echo "$yyy=''"                  >> posthint.sh ;;
1694             define)
1695                 case "$zzz" in
1696                 '') zzz=define ;;
1697                 esac
1698                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1699             eval)
1700                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1701             prepend)
1702                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1703             undef)
1704                 case "$zzz" in
1705                 '') zzz="$uuu" ;;
1706                 esac
1707                 echo "$yyy=$zzz"                >> posthint.sh ;;
1708             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1709             esac
1710             shift
1711             ;;
1712         -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1713             exit 0;;
1714         --) break;;
1715         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1716         *) break;;
1717         esac
1718 done
1719
1720 case "$error" in
1721 true)
1722         cat >&2 <<EOM
1723 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1724                  [-U symbol] [-U symbol=] [-A command:symbol...]
1725   -d : use defaults for all answers.
1726   -e : go on without questioning past the production of config.sh.
1727   -f : specify an alternate default configuration file.
1728   -h : print this help message and exit (with an error status).
1729   -r : reuse C symbols value if possible (skips costly nm extraction).
1730   -s : silent mode, only echoes questions and essential information.
1731   -D : define symbol to have some value:
1732          -D symbol         symbol gets the value 'define'
1733          -D symbol=value   symbol gets the value 'value'
1734        common used examples (see INSTALL for more info):
1735          -Duse64bitint            use 64bit integers
1736          -Duse64bitall            use 64bit integers and pointers
1737          -Dusethreads             use thread support
1738          -Dinc_version_list=none  do not include older perl trees in @INC
1739          -DEBUGGING=none          DEBUGGING options
1740          -Dcc=gcc                 choose your compiler
1741          -Dprefix=/opt/perl5      choose your destination
1742   -E : stop at the end of questions, after having produced config.sh.
1743   -K : do not use unless you know what you are doing.
1744   -O : let -D and -U override definitions from loaded configuration file.
1745   -S : perform variable substitutions on all .SH files (can mix with -f)
1746   -U : undefine symbol:
1747          -U symbol    symbol gets the value 'undef'
1748          -U symbol=   symbol gets completely empty
1749        e.g.:  -Uversiononly
1750   -A : manipulate symbol after the platform specific hints have been applied:
1751          -A append:symbol=value   append value to symbol
1752          -A symbol=value          like append:, but with a separating space
1753          -A define:symbol=value   define symbol to have value
1754          -A clear:symbol          define symbol to be ''
1755          -A define:symbol         define symbol to be 'define'
1756          -A eval:symbol=value     define symbol to be eval of value
1757          -A prepend:symbol=value  prepend value to symbol
1758          -A undef:symbol          define symbol to be 'undef'
1759          -A undef:symbol=         define symbol to be ''
1760        e.g.:  -A prepend:libswanted='cl pthread '
1761               -A ccflags=-DSOME_MACRO
1762   -V : print version number and exit (with a zero status).
1763 EOM
1764         exit 1
1765         ;;
1766 esac
1767
1768 : Sanity checks
1769 case "$fastread$alldone" in
1770 yescont|yesexit) ;;
1771 *)
1772         case "$extractsh" in
1773         true) ;;
1774         *)
1775                 if test ! -t 0; then
1776                         echo "Say 'sh Configure', not 'sh <Configure'"
1777                         exit 1
1778                 fi
1779                 ;;
1780         esac
1781         ;;
1782 esac
1783
1784 exec 4>&1
1785 case "$silent" in
1786 true) exec 1>/dev/null;;
1787 esac
1788
1789 : run the defines and the undefines, if any, but leave the file out there...
1790 touch optdef.sh
1791 . ./optdef.sh
1792 : create the posthint manipulation script and leave the file out there...
1793 touch posthint.sh
1794
1795 : set package name
1796 package='perl5'
1797 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1798 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1799 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1800 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1801 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1802 esac
1803
1804 : Some greps do not return status, grrr.
1805 echo "grimblepritz" >grimble
1806 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1807         contains=contains
1808 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1809         contains=grep
1810 else
1811         contains=contains
1812 fi
1813 rm -f grimble
1814 : the following should work in any shell
1815 case "$contains" in
1816 contains*)
1817         echo " "
1818         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1819         cat >contains <<'EOSS'
1820 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1821 EOSS
1822 chmod +x contains
1823 esac
1824
1825 : Find the path to the source tree
1826 case "$src" in
1827 '') case "$0" in
1828     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1829          case "$src" in
1830          /*)    ;;
1831          .)     ;;
1832          *)     src=`cd ../$src && pwd` ;;
1833          esac
1834          ;;
1835     *)   src='.';;
1836     esac;;
1837 esac
1838 case "$src" in
1839 '')     src=/
1840         rsrc=/
1841         ;;
1842 /*)     rsrc="$src";;
1843 *)      rsrc="../$src";;
1844 esac
1845 if test -f $rsrc/Configure && \
1846         $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1847 then
1848    : found it, so we are ok.
1849 else
1850         rsrc=''
1851         for src in . .. ../.. ../../.. ../../../..; do
1852                 if test -f ../$src/Configure && \
1853                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1854                 then
1855                         rsrc=../$src
1856                         break
1857                 fi
1858         done
1859 fi
1860 case "$rsrc" in
1861 '')
1862         cat <<EOM >&4
1863
1864 Sorry, I can't seem to locate the source dir for $package.  Please start
1865 Configure with an explicit path -- i.e. /some/path/Configure.
1866
1867 EOM
1868         exit 1
1869         ;;
1870 ../.)   rsrc='..';;
1871 *)
1872         echo " "
1873         echo "Sources for $package found in \"$src\"." >&4
1874         ;;
1875 esac
1876
1877 : script used to extract .SH files with variable substitutions
1878 cat >extract <<'EOS'
1879 PERL_CONFIG_SH=true
1880 echo "Doing variable substitutions on .SH files..."
1881 if test -f MANIFEST; then
1882         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1883 else
1884         echo "(Looking for .SH files under the source directory.)"
1885         set x `(cd "$src"; find . -name "*.SH" -print)`
1886 fi
1887 shift
1888 case $# in
1889 0) set x `(cd "$src"; echo *.SH)`; shift;;
1890 esac
1891 if test ! -f "$src/$1"; then
1892         shift
1893 fi
1894 mkdir_p='
1895 name=$1;
1896 create="";
1897 while test $name; do
1898         if test ! -d "$name"; then
1899                 create="$name $create";
1900                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1901                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1902         else
1903                 name="";
1904         fi;
1905 done;
1906 for file in $create; do
1907         mkdir $file;
1908 done
1909 '
1910 for file in $*; do
1911         case "$src" in
1912         ".")
1913                 case "$file" in
1914                 */*)
1915                         dir=`expr X$file : 'X\(.*\)/'`
1916                         file=`expr X$file : 'X.*/\(.*\)'`
1917                         (cd "$dir" && . ./$file)
1918                         ;;
1919                 *)
1920                         . ./$file
1921                         ;;
1922                 esac
1923                 ;;
1924         *)
1925                 case "$file" in
1926                 */*)
1927                         dir=`expr X$file : 'X\(.*\)/'`
1928                         file=`expr X$file : 'X.*/\(.*\)'`
1929                         (set x $dir; shift; eval $mkdir_p)
1930                         sh <"$src/$dir/$file"
1931                         ;;
1932                 *)
1933                         sh <"$src/$file"
1934                         ;;
1935                 esac
1936                 ;;
1937         esac
1938 done
1939 if test -f "$src/config_h.SH"; then
1940         if test ! -f config.h; then
1941         : oops, they left it out of MANIFEST, probably, so do it anyway.
1942         . "$src/config_h.SH"
1943         fi
1944 fi
1945 EOS
1946
1947 : extract files and exit if asked to do so
1948 case "$extractsh" in
1949 true)
1950         case "$realsilent" in
1951         true) ;;
1952         *) exec 1>&4;;
1953         esac
1954         case "$config_sh" in
1955         '') config_sh='config.sh';;
1956         esac
1957         echo " "
1958         echo "Fetching answers from $config_sh..."
1959         cd ..
1960         . $config_sh
1961         test "$override" && . ./optdef.sh
1962         echo " "
1963         . UU/extract
1964         rm -rf UU
1965         echo "Extraction done."
1966         exit 0
1967         ;;
1968 esac
1969
1970 : Eunice requires " " instead of "", can you believe it
1971 echo " "
1972 : Here we go...
1973 echo "Beginning of configuration questions for $package."
1974
1975 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1976
1977 : first determine how to suppress newline on echo command
1978 echo " "
1979 echo "Checking echo to see how to suppress newlines..."
1980 (echo "hi there\c" ; echo " ") >.echotmp
1981 if $contains c .echotmp >/dev/null 2>&1 ; then
1982         echo "...using -n."
1983         n='-n'
1984         c=''
1985 else
1986         cat <<'EOM'
1987 ...using \c
1988 EOM
1989         n=''
1990         c='\c'
1991 fi
1992 echo $n "The star should be here-->$c"
1993 echo '*'
1994 rm -f .echotmp
1995
1996 : Now test for existence of everything in MANIFEST
1997 echo " "
1998 if test -f "$rsrc/MANIFEST"; then
1999         echo "First let's make sure your kit is complete.  Checking..." >&4
2000         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
2001                 (split -l 50 2>/dev/null || split -50)
2002         rm -f missing
2003         tmppwd=`pwd`
2004         for filelist in x??; do
2005                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
2006                         >/dev/null 2>>"$tmppwd/missing")
2007         done
2008         if test -s missing; then
2009                 cat missing >&4
2010                 cat >&4 <<'EOM'
2011
2012 THIS PACKAGE SEEMS TO BE INCOMPLETE.
2013
2014 You have the option of continuing the configuration process, despite the
2015 distinct possibility that your kit is damaged, by typing 'y'es.  If you
2016 do, don't blame me if something goes wrong.  I advise you to type 'n'o
2017 and contact the author (perlbug@perl.org).
2018
2019 EOM
2020                 echo $n "Continue? [n] $c" >&4
2021                 read ans
2022                 case "$ans" in
2023                 y*)
2024                         echo "Continuing..." >&4
2025                         rm -f missing
2026                         ;;
2027                 *)
2028                         echo "ABORTING..." >&4
2029                         kill $$
2030                         ;;
2031                 esac
2032         else
2033                 echo "Looks good..."
2034         fi
2035 else
2036         echo "There is no MANIFEST file.  I hope your kit is complete !"
2037 fi
2038 rm -f missing x??
2039
2040 : Find the appropriate value for a newline for tr
2041 echo " "
2042 if test -n "$DJGPP"; then
2043        trnl='\012'
2044 fi
2045 if test X"$trnl" = X; then
2046         case "`echo foo|tr '\n' x 2>/dev/null`" in
2047         foox) trnl='\n' ;;
2048         esac
2049 fi
2050 if test X"$trnl" = X; then
2051         case "`echo foo|tr '\012' x 2>/dev/null`" in
2052         foox) trnl='\012' ;;
2053         esac
2054 fi
2055 if test X"$trnl" = X; then
2056        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
2057        fooxy) trnl='\n\r' ;;
2058        esac
2059 fi
2060 if test X"$trnl" = X; then
2061         cat <<EOM >&2
2062
2063 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2064
2065 EOM
2066         exit 1
2067 fi
2068
2069 : compute the number of columns on the terminal for proper question formatting
2070 case "$COLUMNS" in
2071 '') COLUMNS='80';;
2072 esac
2073
2074 : set up the echo used in my read
2075 myecho="case \"\$xxxm\" in
2076 '') echo $n \"\$rp $c\" >&4;;
2077 *) case \"\$rp\" in
2078         '') echo $n \"[\$xxxm] $c\";;
2079         *)
2080                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2081                         echo \"\$rp\" >&4
2082                         echo $n \"[\$xxxm] $c\" >&4
2083                 else
2084                         echo $n \"\$rp [\$xxxm] $c\" >&4
2085                 fi
2086                 ;;
2087         esac;;
2088 esac"
2089
2090 : now set up to do reads with possible shell escape and default assignment
2091 cat <<EOSC >myread
2092 $startsh
2093 xxxm=\$dflt
2094 $myecho
2095 ans='!'
2096 case "\$fastread" in
2097 yes) case "\$dflt" in
2098         '') ;;
2099         *) ans='';
2100                 case "\$silent-\$rp" in
2101                 true-) ;;
2102                 *) echo " " >&4;;
2103                 esac;;
2104         esac;;
2105 *) case "\$silent" in
2106         true) case "\$rp" in
2107                 '') ans='';;
2108                 esac;;
2109         esac;;
2110 esac
2111 while expr "X\$ans" : "X!" >/dev/null; do
2112         read answ
2113         set x \$xxxm
2114         shift
2115         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2116         case  "\$answ" in
2117         "!")
2118                 sh 1>&4
2119                 echo " "
2120                 $myecho
2121                 ;;
2122         !*)
2123                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2124                 shift
2125                 sh 1>&4 -c "\$*"
2126                 echo " "
2127                 $myecho
2128                 ;;
2129         "\$ans")
2130                 case "\$ans" in
2131                 \\&*)
2132                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2133                         shift
2134                         case "\$1" in
2135                         -d)
2136                                 fastread=yes
2137                                 echo "(OK, I'll run with -d after this question.)" >&4
2138                                 ;;
2139                         -*)
2140                                 echo "*** Sorry, \$1 not supported yet." >&4
2141                                 ;;
2142                         esac
2143                         $myecho
2144                         ans=!
2145                         ;;
2146                 esac;;
2147         *)
2148                 case "\$aok" in
2149                 y)
2150                         echo "*** Substitution done -- please confirm."
2151                         xxxm="\$ans"
2152                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2153                         xxxm="\$ans"
2154                         ans=!
2155                         ;;
2156                 *)
2157                         echo "*** Error -- try again."
2158                         ans=!
2159                         ;;
2160                 esac
2161                 $myecho
2162                 ;;
2163         esac
2164         case "\$ans\$xxxm\$nostick" in
2165         '')
2166                 ans=!
2167                 $myecho
2168                 ;;
2169         esac
2170 done
2171 case "\$ans" in
2172 '') ans="\$xxxm";;
2173 esac
2174 EOSC
2175
2176 : create .config dir to save info across Configure sessions
2177 test -d ../.config || mkdir ../.config
2178 cat >../.config/README <<EOF
2179 This directory created by Configure to save information that should
2180 persist across sessions for $package.
2181
2182 You may safely delete it if you wish.
2183 EOF
2184
2185 : See if we are using a devel version and want that
2186 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2187 case "$usedevel" in
2188 $define|true|[yY]*)
2189     usedevel="$define" ;;
2190 *) case "$xversion" in
2191    *[13579])
2192         cat >&4 <<EOH
2193 *** WHOA THERE!!! ***
2194
2195     This is an UNSTABLE DEVELOPMENT release.
2196     The version of this $package distribution is $xversion, that is, odd,
2197     (as opposed to even) and that signifies a development release.
2198     If you want a maintenance release, you want an even-numbered version.
2199
2200     Do ***NOT*** install this into production use.
2201     Data corruption and crashes are possible.
2202
2203     It is most seriously suggested that you do not continue any further
2204     unless you want to help in developing and debugging Perl.
2205
2206     If you *still* want to build perl, you can answer 'y' now,
2207     or pass -Dusedevel to Configure.
2208
2209 EOH
2210         rp='Do you really want to continue?'
2211         dflt='n'
2212         . ./myread
2213         case "$ans" in
2214         [yY]) echo >&4 "Okay, continuing."
2215               usedevel="$define" ;;
2216         *) echo >&4 "Okay, bye."
2217            exit 1
2218            ;;
2219         esac
2220         ;;
2221     esac
2222     usedevel="$undef"
2223     ;;
2224 esac
2225 case "$usedevel" in
2226 $define|true|[yY]*)
2227         case "$versiononly" in
2228         '') versiononly="$define" ;;
2229         esac
2230         case "$installusrbinperl" in
2231         '') installusrbinperl="$undef" ;;
2232         esac
2233         ;;
2234 esac
2235
2236 : general instructions
2237 needman=true
2238 firsttime=true
2239 user=`(logname) 2>/dev/null`
2240 case "$user" in
2241 '') user=`whoami 2>&1`;;
2242 esac
2243 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2244         firsttime=false
2245         echo " "
2246         rp='Would you like to see the instructions?'
2247         dflt=n
2248         . ./myread
2249         case "$ans" in
2250         [yY]*) ;;
2251         *) needman=false;;
2252         esac
2253 fi
2254 if $needman; then
2255         cat <<EOH
2256
2257 This installation shell script will examine your system and ask you questions
2258 to determine how the perl5 package should be installed. If you get
2259 stuck on a question, you may use a ! shell escape to start a subshell or
2260 execute a command.  Many of the questions will have default answers in square
2261 brackets; typing carriage return will give you the default.
2262
2263 On some of the questions which ask for file or directory names you are allowed
2264 to use the ~name construct to specify the login directory belonging to "name",
2265 even if you don't have a shell which knows about that.  Questions where this is
2266 allowed will be marked "(~name ok)".
2267
2268 EOH
2269         rp=''
2270         dflt='Type carriage return to continue'
2271         . ./myread
2272         cat <<'EOH'
2273
2274 The prompter used in this script allows you to use shell variables and
2275 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2276 in the default answer, as if the default line was a set of arguments given to a
2277 script shell.  This means you may also use $* to repeat the whole default line,
2278 so you do not have to re-type everything to add something to the default.
2279
2280 Every time there is a substitution, you will have to confirm.  If there is an
2281 error (e.g. an unmatched backtick), the default answer will remain unchanged
2282 and you will be prompted again.
2283
2284 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2285 the questions and use the computed defaults (or the previous answers if there
2286 was already a config.sh file). Type 'Configure -h' for a list of options.
2287 You may also start interactively and then answer '& -d' at any prompt to turn
2288 on the non-interactive behaviour for the remainder of the execution.
2289
2290 EOH
2291         . ./myread
2292         cat <<EOH
2293
2294 Much effort has been expended to ensure that this shell script will run on any
2295 Unix system.  If despite that it blows up on yours, your best bet is to edit
2296 Configure and run it again.  If you can't run Configure for some reason,
2297 you'll have to generate a config.sh file by hand.  Whatever problems you
2298 have, let me (perlbug@perl.org) know how I blew it.
2299
2300 This installation script affects things in two ways:
2301
2302 1) it may do direct variable substitutions on some of the files included
2303    in this kit.
2304 2) it builds a config.h file for inclusion in C programs.  You may edit
2305    any of these files as the need arises after running this script.
2306
2307 If you make a mistake on a question, there is no easy way to back up to it
2308 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2309 files.  Configure will offer to let you do this before it runs the SH files.
2310
2311 EOH
2312         dflt='Type carriage return to continue'
2313         . ./myread
2314         case "$firsttime" in
2315         true) echo $user >>../.config/instruct;;
2316         esac
2317 fi
2318
2319 : Set 'sysroot' to change the logical root directory to your headers and libraries see man gcc
2320 : This is primarily meant for cross-compile environments, and may fail to be useful in other cases
2321 if test "X$sysroot" = X; then
2322     sysroot=""
2323 else
2324     case "$cc" in
2325         *gcc*|*g++*)
2326             echo "Using $sysroot to find your headers and libraries, adding to ccflags"
2327             # _sysroot is used in places where we need --sysroot=foo
2328             # but using the rest of the flags could cause issues.
2329             _sysroot="--sysroot=$sysroot";
2330             case "$ccflags" in
2331                 *sysroot*) ;;
2332                 'undef'|*)
2333                 ccflags="$ccflags $_sysroot"
2334             esac
2335             case "$ldflags" in
2336                 *sysroot*) ;;
2337                 'undef'|*)
2338                 ldflags="$ldflags $_sysroot"
2339             esac
2340             case "$cppflags" in
2341                 *sysroot*) ;;
2342                 'undef'|*)
2343                 cppflags="$cppflags $_sysroot"
2344             esac
2345             # lddlflags updated below in lddlflags section;
2346             # same with cccdlflags
2347             ;;
2348     esac
2349
2350     # Adjust some defaults to also use $sysroot
2351     for var in xlibpth loclibpth locincpth glibpth; do
2352         eval xxx=\$$var
2353         eval $var=''
2354         for path in $xxx; do
2355             eval $var=\"\$$var $sysroot$path\"
2356         done
2357     done
2358
2359 fi
2360
2361 : find out where common programs are
2362 echo " "
2363 echo "Locating common programs..." >&4
2364 cat <<EOSC >loc
2365 $startsh
2366 case \$# in
2367 0) exit 1;;
2368 esac
2369 thing=\$1
2370 shift
2371 dflt=\$1
2372 shift
2373 for dir in \$*; do
2374         case "\$thing" in
2375         .)
2376         if test -d \$dir/\$thing; then
2377                 echo \$dir
2378                 exit 0
2379         fi
2380         ;;
2381         *)
2382         for thisthing in \$dir/\$thing; do
2383                 : just loop through to pick last item
2384         done
2385         if test -f \$thisthing; then
2386                 echo \$thisthing
2387                 exit 0
2388         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2389                 echo \$thisthing
2390                 exit 0
2391         elif test -f \$dir/\$thing.exe; then
2392                 if test -n "$DJGPP"; then
2393                         echo \$dir/\$thing.exe
2394                 elif test "$eunicefix" != ":"; then
2395                         : on Eunice apparently
2396                         echo \$dir/\$thing
2397                 fi
2398                 exit 0
2399         fi
2400         ;;
2401         esac
2402 done
2403 echo \$dflt
2404 exit 1
2405 EOSC
2406 chmod +x loc
2407 $eunicefix loc
2408 loclist="
2409 awk
2410 cat
2411 chmod
2412 comm
2413 cp
2414 echo
2415 expr
2416 grep
2417 ls
2418 mkdir
2419 rm
2420 sed
2421 sort
2422 touch
2423 tr
2424 uniq
2425 "
2426 trylist="
2427 ar
2428 bison
2429 byacc
2430 cpp
2431 csh
2432 date
2433 egrep
2434 gmake
2435 gzip
2436 less
2437 ln
2438 make
2439 more
2440 nm
2441 nroff
2442 perl
2443 pg
2444 test
2445 uname
2446 zip
2447 "
2448 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2449 pth="$pth $sysroot/lib $sysroot/usr/lib"
2450 for file in $loclist; do
2451         eval xxx=\$$file
2452         case "$xxx" in
2453         /*|?:[\\/]*)
2454                 if test -f "$xxx"; then
2455                         : ok
2456                 else
2457                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2458                         xxx=`./loc $file $file $pth`
2459                 fi
2460                 ;;
2461         '') xxx=`./loc $file $file $pth`;;
2462         *) xxx=`./loc $xxx $xxx $pth`;;
2463         esac
2464         eval $file=$xxx$_exe
2465         eval _$file=$xxx
2466         case "$xxx" in
2467         /*)
2468                 echo $file is in $xxx.
2469                 ;;
2470         ?:[\\/]*)
2471                 echo $file is in $xxx.
2472                 ;;
2473         *)
2474                 echo "I don't know where '$file' is, and my life depends on it." >&4
2475                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2476                 exit 1
2477                 ;;
2478         esac
2479 done
2480 echo " "
2481 echo "Don't worry if any of the following aren't found..."
2482 say=offhand
2483 for file in $trylist; do
2484         eval xxx=\$$file
2485         case "$xxx" in
2486         /*|?:[\\/]*)
2487                 if test -f "$xxx"; then
2488                         : ok
2489                 else
2490                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2491                         xxx=`./loc $file $file $pth`
2492                 fi
2493                 ;;
2494         '') xxx=`./loc $file $file $pth`;;
2495         *) xxx=`./loc $xxx $xxx $pth`;;
2496         esac
2497         eval $file=$xxx$_exe
2498         eval _$file=$xxx
2499         case "$xxx" in
2500         /*)
2501                 echo $file is in $xxx.
2502                 ;;
2503         ?:[\\/]*)
2504                 echo $file is in $xxx.
2505                 ;;
2506         *)
2507                 echo "I don't see $file out there, $say."
2508                 say=either
2509                 ;;
2510         esac
2511 done
2512 case "$egrep" in
2513 egrep)
2514         echo "Substituting grep for egrep."
2515         egrep=$grep
2516         _egrep=$grep
2517         ;;
2518 esac
2519 case "$less" in
2520 '')     ;;
2521 *)      if $less -R </dev/null >/dev/null; then
2522                echo "Substituting less -R for less."
2523                less="$less -R"
2524                _less=$less
2525         fi
2526         ;;
2527 esac
2528 case "$ln" in
2529 ln)
2530         echo "Substituting cp for ln."
2531         ln=$cp
2532         _ln=$cp
2533         ;;
2534 esac
2535 case "$make" in
2536 make)
2537         case "$gmake" in
2538         gmake)
2539         echo "I can't find make or gmake, and my life depends on it." >&4
2540         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2541         exit 1
2542         ;;
2543         esac
2544         ;;
2545 esac
2546 case "$gmake" in
2547 gmake)  ;;
2548 *)      # We can't have osname yet.
2549         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2550                 # Assume that gmake, if found, is definitely GNU make
2551                 # and prefer it over the system make.
2552                 echo "Substituting gmake for make."
2553                 make=$gmake
2554                 _make=$gmake
2555         fi
2556         ;;
2557 esac
2558 case "$test" in
2559 test)
2560         echo "Hopefully test is built into your sh."
2561         ;;
2562 *)
2563         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2564                 echo "Using the test built into your sh."
2565                 test=test
2566                 _test=test
2567         fi
2568         ;;
2569 esac
2570 case "$echo" in
2571 echo)
2572         echo "Hopefully echo is built into your sh."
2573         ;;
2574 '') ;;
2575 *)
2576         echo " "
2577 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2578         $echo $n "hi there$c" >foo1
2579         echo $n "hi there$c" >foo2
2580         if cmp foo1 foo2 >/dev/null 2>&1; then
2581                 echo "They are compatible.  In fact, they may be identical."
2582         else
2583                 case "$n" in
2584                 '-n') n='' c='\c';;
2585                 *) n='-n' c='';;
2586                 esac
2587                 cat <<FOO
2588 They are not compatible!  You are probably running ksh on a non-USG system.
2589 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2590 have echo built in and we may have to run some Bourne shell scripts.  That
2591 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2592
2593 FOO
2594                 $echo $n "The star should be here-->$c"
2595                 $echo "*"
2596         fi
2597         $rm -f foo1 foo2
2598         ;;
2599 esac
2600
2601 # This question was auctioned at YAPC::Europe-2007 in Vienna
2602 # I never promised you could answer it. I only auctioned the question.
2603 cat <<FOO
2604 The following message is sponsored by
2605
2606   Dresden.pm<--The stars should be here.
2607
2608 Dear Perl user, system administrator or package
2609 maintainer, the Perl community sends greetings to
2610 you. Do you (emblematical) greet back [Y/n]? n
2611
2612 FOO
2613
2614 : Check what type of C compiler we use
2615 cat <<EOS >trygcc
2616 $startsh
2617 EOS
2618 cat <<'EOSC' >>trygcc
2619 case "$cc" in
2620 '') ;;
2621 *)  $rm -f try try.*
2622     $cat >try.c <<EOM
2623 int main(int argc, char *argv[]) {
2624   return 0;
2625 }
2626 EOM
2627     if $cc -o try $ccflags $ldflags try.c; then
2628        :
2629     else
2630         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2631         despair=yes
2632         trygcc=yes
2633         case "$cc" in
2634         *gcc*) trygcc=no ;;
2635         esac
2636         # Skip this test because it gives a false match on output like:
2637         #    ./trygcc: line 23: cc: command not found
2638         # case "`$cc -v -c try.c 2>&1`" in
2639         # *gcc*) trygcc=no ;;
2640         # esac
2641         if $test X"$trygcc" = Xyes; then
2642             if gcc -o try -c try.c; then
2643                 echo " "
2644                 echo "You seem to have a working gcc, though." >&4
2645                 # Switching compilers may undo the work of hints files.
2646                 # The most common problem is -D_REENTRANT for threads.
2647                 # This heuristic catches that case, but gets false positives
2648                 # if -Dusethreads was not actually specified.  Better to
2649                 # bail out here with a useful message than fail 
2650                 # mysteriously later. Should we perhaps just try to
2651                 # re-invoke Configure -Dcc=gcc config_args ?
2652                 if $test -f usethreads.cbu; then
2653                         $cat >&4 <<EOM 
2654
2655 *** However, any setting of the C compiler flags (e.g. for thread support)
2656 *** will be lost.  It may be necessary for you to restart Configure and
2657 *** add -Dcc=gcc to your Configure command line.
2658
2659 EOM
2660                         rp="Would you like to go ahead and try gcc anyway?"
2661                         dflt=n
2662                 else
2663                         rp="Would you like to use it?"
2664                         dflt=y
2665                 fi
2666                 if $test -f myread; then
2667                     . ./myread
2668                 else
2669                     if $test -f UU/myread; then
2670                         . ./UU/myread
2671                     else
2672                         echo "Cannot find myread, sorry.  Aborting." >&2
2673                         exit 1
2674                     fi
2675                 fi  
2676                 case "$ans" in
2677                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2678                 esac
2679             fi
2680         fi
2681     fi
2682     $rm -f try try.*
2683     ;;
2684 esac
2685 EOSC
2686
2687 cat <<EOS >checkcc
2688 $startsh
2689 EOS
2690 cat <<'EOSC' >>checkcc
2691 case "$cc" in        
2692 '') ;;
2693 *)  $rm -f try try.*              
2694     $cat >try.c <<EOM
2695 int main(int argc, char *argv[]) {
2696   return 0;
2697 }
2698 EOM
2699     if $cc -o try $ccflags $ldflags try.c; then
2700        :
2701     else
2702         if $test X"$despair" = Xyes; then
2703            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2704         fi
2705         $cat >&4 <<EOM         
2706 You need to find a working C compiler.
2707 Either (purchase and) install the C compiler supplied by your OS vendor,
2708 or for a free C compiler try http://gcc.gnu.org/
2709 I cannot continue any further, aborting.
2710 EOM
2711         exit 1
2712     fi
2713     $rm -f try try.*
2714     ;;
2715 esac
2716 EOSC
2717
2718 : determine whether symbolic links are supported
2719 echo " "
2720 $touch blurfl
2721 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2722         echo "Symbolic links are supported." >&4
2723         lns="$ln -s"
2724 else
2725         echo "Symbolic links are NOT supported." >&4
2726         lns="$ln"
2727 fi
2728 $rm -f blurfl sym
2729
2730 : determine whether symbolic links are supported
2731 echo " "
2732 case "$lns" in
2733 *"ln"*" -s")
2734         echo "Checking how to test for symbolic links..." >&4
2735         $lns blurfl sym
2736         if $test "X$issymlink" = X; then
2737                 case "$newsh" in
2738                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2739                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2740                 esac
2741                 if test $? = 0; then
2742                         issymlink="test -h"
2743                 else
2744                         echo "Your builtin 'test -h' may be broken." >&4
2745                         case "$test" in
2746                         /*)     ;;
2747                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2748                                 for p in $pth
2749                                 do
2750                                         if test -f "$p/$test"; then
2751                                                 test="$p/$test"
2752                                                 break
2753                                         fi
2754                                 done
2755                                 ;;
2756                         esac
2757                         case "$test" in
2758                         /*)
2759                                 echo "Trying external '$test -h'." >&4
2760                                 issymlink="$test -h"
2761                                 if $test ! -h sym >/dev/null 2>&1; then
2762                                         echo "External '$test -h' is broken, too." >&4
2763                                         issymlink=''
2764                                 fi
2765                                 ;;
2766                         *)      issymlink='' ;;
2767                         esac
2768                 fi
2769         fi
2770         if $test "X$issymlink" = X; then
2771                 if $test -L sym 2>/dev/null; then
2772                         issymlink="$test -L"
2773                         echo "The builtin '$test -L' worked." >&4
2774                 fi
2775         fi
2776         if $test "X$issymlink" != X; then
2777                 echo "You can test for symbolic links with '$issymlink'." >&4
2778         else
2779                 echo "I do not know how you can test for symbolic links." >&4
2780         fi
2781         $rm -f blurfl sym
2782         ;;
2783 *)      echo "No symbolic links, so not testing for their testing..." >&4
2784         ;;
2785 esac
2786 echo " "
2787
2788 : Make symlinks util
2789 case "$mksymlinks" in
2790 $define|true|[yY]*)
2791         case "$src" in
2792         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2793                 exit 1
2794                 ;;
2795         *)      case "$lns:$issymlink" in
2796                 *"ln"*" -s:"*"test -"?)
2797                         echo "Creating the symbolic links..." >&4
2798                         echo "(First creating the subdirectories...)" >&4
2799                         cd ..
2800                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2801                                 read directory
2802                                 test -z "$directory" && break
2803                                 mkdir -p $directory
2804                         done
2805                         # Sanity check 1.
2806                         if test ! -d t/base; then
2807                                 echo "Failed to create the subdirectories.  Aborting." >&4
2808                                 exit 1
2809                         fi
2810                         echo "(Then creating the symlinks...)" >&4
2811                         awk '{print $1}' $src/MANIFEST | while true; do
2812                                 read filename
2813                                 test -z "$filename" && break
2814                                 if test -f $filename; then
2815                                         if $issymlink $filename; then
2816                                                 rm -f $filename
2817                                         fi
2818                                 fi
2819                                 if test -f $filename; then
2820                                         echo "$filename already exists, not symlinking."
2821                                 else
2822                                         ln -s $src/$filename $filename
2823                                 fi
2824                         done
2825                         # Sanity check 2.
2826                         if test ! -f t/base/lex.t; then
2827                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2828                                 exit 1
2829                         fi
2830                         cd UU
2831                         ;;
2832                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2833                         ;;
2834                 esac
2835                 ;;
2836         esac
2837         ;;
2838 esac
2839
2840 : Check for Cross-Compilation
2841 if $test "X$targethost" = "X"; then
2842     targethost=""
2843 fi
2844 if $test "X$targetenv" = "X"; then
2845     targetenv=""
2846 fi
2847 case "$usecrosscompile" in
2848 $define|true|[yY]*)
2849         $echo "Cross-compiling..."
2850         croak=''
2851         case "$cc" in
2852         *-gcc*|*-g++*) # A cross-compiling gcc, probably.
2853             # arm-linux-androideabi-gcc  -> arm-linux-androideabi
2854             # x86_64-w64-mingw32-gcc.exe -> x86_64-w64-mingw32
2855             targetarch=`$echo $cc|$sed 's/-g[c\+][c\+].*$//'`
2856             ar=`$echo $cc|$sed 's/-g[c\+][c\+]/-ar/'`
2857             # leave out ld, choosing it is more complex
2858             nm=`$echo $cc|$sed 's/-g[c\+][c\+]/-nm/'`
2859             ranlib=`$echo $cc|$sed 's/-g[c\+][c\+]/-ranlib/'`
2860             # We are in a weird spot. Just before us, some values
2861             # were 'saved', to be restored after the hints are
2862             # run.  This means that the changes we made to ar,
2863             # nm and ranlib will get reverted.
2864             # To avoid that, we hijack the saving mechanism and
2865             # have it save our new values.
2866             for file in ar nm ranlib; do
2867                 eval xxx=\$$file
2868                 eval $file=$xxx$_exe
2869                 eval _$file=$xxx
2870             done
2871         ;;
2872         esac
2873         case "$targetarch" in
2874         '') echo "Targetarch not defined." >&4; croak=y ;;
2875         *)  echo "Using targetarch $targetarch." >&4 ;;
2876         esac
2877         case "$targethost" in
2878         '') echo "Targethost not defined." >&4; croak=y ;;
2879         *)  echo "Using targethost $targethost." >&4
2880         esac
2881         locincpth=' '
2882         loclibpth=' '
2883         case "$croak" in
2884         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2885         esac
2886     : compile a host miniperl and generate_uudmap, unless we got passed them
2887     if $test "X$hostperl" = X; then
2888       echo "Building host miniperl and generate_uudmap binaries" >&4
2889       before_host=`pwd`
2890       cd ..
2891       cd $src
2892       src=`pwd`
2893       rm -rf $src/host
2894       mkdir $src/host
2895       cd $src/host
2896       $src/Configure -des -Dusedevel -Dmksymlinks
2897       $make miniperl
2898       case "$hostgenerate" in
2899       '') $make generate_uudmap
2900           hostgenerate=$src/host/generate_uudmap
2901           ;;
2902        "$undef") hostgenerate=''
2903           ;;
2904       esac
2905       hostperl=$src/host/miniperl
2906       cd $before_host
2907     fi
2908     hostosname=`$hostperl -le 'print $^O'`
2909     ;;
2910 *)
2911     usecrosscompile="$undef"
2912     ;;
2913 esac
2914
2915 : Define -Dtargethost=somecomputer to run compiled tests on another machine
2916 case "$targethost" in
2917     '') echo "Checking for cross-compile" >&4
2918     case "$usecrosscompile$multiarch" in
2919        *$define*) echo "Skipping the try tests in the rest of Configure as no targethost was defined when cross-compiling" >&4
2920          if [ -f Makefile ]; then
2921            echo " "
2922            echo "Now you must ensure config.sh, config.h and the generated headers exist and run a $make."
2923          else
2924            echo "Configure done."
2925          fi
2926        exit 0
2927        ;;
2928      *) echo "No targethost for running compiler tests against defined, running locally" >&4
2929         run=''
2930         to=:
2931         from=:
2932         ;;
2933     esac
2934     ;;
2935     *) echo "Using targethost $targethost." >&4
2936         case "$src" in
2937         /*) run=$src/Cross/run
2938             targetmkdir=$src/Cross/mkdir
2939             to=$src/Cross/to
2940             from=$src/Cross/from
2941             ;;
2942         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2943             run=$pwd/Cross/run
2944             targetmkdir=$pwd/Cross/mkdir
2945             to=$pwd/Cross/to
2946             from=$pwd/Cross/from
2947             ;;
2948         esac
2949         case "$targetrun" in
2950         '') targetrun=ssh ;;
2951         esac
2952         case "$targetto" in
2953         '') targetto=scp ;;
2954         esac
2955         case "$targetfrom" in
2956         '') targetfrom=scp ;;
2957         esac
2958         run=$run-$targetrun
2959         to=$to-$targetto
2960         from=$from-$targetfrom
2961         case "$targetdir" in
2962         '')  targetdir=/tmp
2963              echo "Guessing targetdir $targetdir." >&4
2964              ;;
2965         esac
2966         case "$targetuser" in
2967         '')  targetuser=root
2968              echo "Guessing targetuser $targetuser." >&4
2969              ;;
2970         esac
2971         case "$targetport" in
2972         '')  targetport=22
2973              echo "Guessing targetport $targetport." >&4
2974              ;;
2975         esac
2976         case "$targetfrom" in
2977         scp)    q=-q ;;
2978         *)      q='' ;;
2979         esac
2980         case "$targetrun" in
2981         ssh|rsh)
2982             cat >$run <<EOF
2983 #!/bin/sh
2984 env=''
2985 case "\$1" in
2986 -cwd)
2987   shift
2988   cwd=\$1
2989   shift
2990   ;;
2991 esac
2992 case "\$1" in
2993 -env)
2994   shift
2995   env=\$1
2996   shift
2997   ;;
2998 esac
2999 case "\$cwd" in
3000 '') cwd=$targetdir ;;
3001 esac
3002 exe=\$1
3003 shift
3004 $to \$exe
3005 $targetrun -p $targetport -l $targetuser $targethost "cd \$cwd && \$env \$exe \$@"
3006 EOF
3007             ;;
3008         adb)
3009             $touch $run
3010             ;;
3011         *)  echo "Unknown targetrun '$targetrun'" >&4
3012             exit 1
3013             ;;
3014         esac
3015         case "$targetmkdir" in
3016         */Cross/mkdir)
3017             cat >$targetmkdir <<EOF
3018 #!/bin/sh
3019 $targetrun -p $targetport -l $targetuser $targethost "mkdir -p \$@"
3020 EOF
3021             $chmod a+rx $targetmkdir
3022             ;;
3023         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
3024             exit 1
3025             ;;
3026         esac
3027         case "$targetto" in
3028         scp|rcp)
3029             cat >$to <<EOF
3030 #!/bin/sh
3031 for f in \$@
3032 do
3033   case "\$f" in
3034   /*)
3035     $targetmkdir \`dirname \$f\`
3036     $targetto -P $targetport -r $q \$f $targetuser@$targethost:\$f           2>/dev/null  || exit 1
3037     ;;
3038   *)
3039     $targetmkdir $targetdir/\`dirname \$f\`
3040     $targetto -P $targetport -r $q \$f $targetuser@$targethost:$targetdir/\$f 2>/dev/null || exit 1
3041     ;;
3042   esac
3043 done
3044 exit 0
3045 EOF
3046             ;;
3047         cp) cat >$to <<EOF
3048 #!/bin/sh
3049 for f in \$@
3050 do
3051   case "\$f" in
3052   /*)
3053     $mkdir -p $targetdir/\`dirname \$f\`
3054     $cp \$f $targetdir/\$f || exit 1
3055     ;;
3056   *)
3057     $targetmkdir $targetdir/\`dirname \$f\`
3058     $cp \$f $targetdir/\$f || exit 1
3059     ;;
3060   esac
3061 done
3062 exit 0
3063 EOF
3064             ;;
3065         *)  echo "Unknown targetto '$targetto'" >&4
3066             exit 1
3067             ;;
3068         esac
3069         case "$targetfrom" in
3070         scp|rcp)
3071           cat >$from <<EOF
3072 #!/bin/sh
3073 for f in \$@
3074 do
3075   $rm -f \$f
3076   $targetfrom -P $targetport $q $targetuser@$targethost:$targetdir/\$f . || exit 1
3077 done
3078 exit 0
3079 EOF
3080             ;;
3081         cp) cat >$from <<EOF
3082 #!/bin/sh
3083 for f in \$@
3084 do
3085   $rm -f \$f
3086   cp $targetdir/\$f . || exit 1
3087 done
3088 exit 0
3089 EOF
3090             ;;
3091         *)  echo "Unknown targetfrom '$targetfrom'" >&4
3092             exit 1
3093             ;;
3094         esac
3095         if $test ! -f $run; then
3096             echo "Target 'run' script '$run' not found." >&4
3097         else
3098             $chmod a+rx $run
3099         fi
3100         if $test ! -f $to; then
3101             echo "Target 'to' script '$to' not found." >&4
3102         else
3103             $chmod a+rx $to
3104         fi
3105         if $test ! -f $from; then
3106             echo "Target 'from' script '$from' not found." >&4
3107         else
3108             $chmod a+rx $from
3109         fi
3110         if $test ! -f $run -o ! -f $to -o ! -f $from; then
3111             exit 1
3112         fi
3113         cat >&4 <<EOF
3114 Using '$run' for remote execution,
3115 and '$from' and '$to'
3116 for remote file transfer.
3117 EOF
3118         ;;
3119 *)      run=''
3120         to=:
3121         from=:
3122         usecrosscompile="$undef"
3123         targetarch=''
3124         ;;
3125 esac
3126
3127 : see whether [:lower:] and [:upper:] are supported character classes
3128 echo " "
3129 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
3130 ABYZ)
3131         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
3132         up='[:upper:]'
3133         low='[:lower:]'
3134         ;;
3135 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
3136         # (0xd9 and 0xe2), therefore that is a nice testing point.
3137         if test "X$up" = X -o "X$low" = X; then
3138             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
3139             rs) up='[A-Z]'
3140                 low='[a-z]'
3141                 ;;
3142             esac
3143         fi
3144         if test "X$up" = X -o "X$low" = X; then
3145             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
3146             rs) up='A-Z'
3147                 low='a-z'
3148                 ;;
3149             esac
3150         fi
3151         if test "X$up" = X -o "X$low" = X; then
3152             case "`echo RS | od -x 2>/dev/null`" in
3153             *D9E2*|*d9e2*)
3154                 echo "Hey, this might be EBCDIC." >&4
3155                 if test "X$up" = X -o "X$low" = X; then
3156                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3157                     rs) up='[A-IJ-RS-Z]'
3158                         low='[a-ij-rs-z]'
3159                         ;;
3160                     esac
3161                 fi
3162                 if test "X$up" = X -o "X$low" = X; then
3163                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3164                     rs) up='A-IJ-RS-Z'
3165                         low='a-ij-rs-z'
3166                         ;;
3167                     esac
3168                 fi
3169                 ;;
3170             esac
3171         fi
3172 esac
3173 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3174 rs)
3175     echo "Using $up and $low to convert case." >&4
3176     ;;
3177 *)
3178     echo "I don't know how to translate letters from upper to lower case." >&4
3179     echo "Your tr is not acting any way I know of." >&4
3180     exit 1
3181     ;;
3182 esac
3183 : set up the translation script tr, must be called with ./tr of course
3184 cat >tr <<EOSC
3185 $startsh
3186 case "\$1\$2" in
3187 '[A-Z][a-z]') exec $tr '$up' '$low';;
3188 '[a-z][A-Z]') exec $tr '$low' '$up';;
3189 esac
3190 exec $tr "\$@"
3191 EOSC
3192 chmod +x tr
3193 $eunicefix tr
3194
3195 : Try to determine whether config.sh was made on this system
3196 case "$config_sh" in
3197 '')
3198 myuname=`$uname -a 2>/dev/null`
3199 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3200 # Downcase everything to avoid ambiguity.
3201 # Remove slashes and single quotes so we can use parts of this in
3202 # directory and file names.
3203 # Remove newlines so myuname is sane to use elsewhere.
3204 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3205 # because the A-Z/a-z are not consecutive.
3206 myuname=`echo $myuname | $sed -e "s,['/],,g" | \
3207         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3208 newmyuname="$myuname"
3209 dflt=n
3210 case "$knowitall" in
3211 '')
3212         if test -f ../config.sh; then
3213                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3214                         eval "`grep myuname= ../config.sh`"
3215                 fi
3216                 if test "X$myuname" = "X$newmyuname"; then
3217                         dflt=y
3218                 fi
3219         fi
3220         ;;
3221 *) dflt=y;;
3222 esac
3223
3224 : Get old answers from old config file if Configure was run on the
3225 : same system, otherwise use the hints.
3226 hint=default
3227 cd ..
3228 if test -f config.sh; then
3229         echo " "
3230         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3231         . UU/myread
3232         case "$ans" in
3233         n*|N*) echo "OK, I'll ignore it."
3234                 mv config.sh config.sh.old
3235                 myuname="$newmyuname"
3236                 ;;
3237         *)  echo "Fetching default answers from your old config.sh file..." >&4
3238                 tmp_n="$n"
3239                 tmp_c="$c"
3240                 tmp_sh="$sh"
3241                 . ./config.sh
3242                 cp config.sh UU
3243                 n="$tmp_n"
3244                 c="$tmp_c"
3245                 : Older versions did not always set $sh.  Catch re-use of such
3246                 : an old config.sh.
3247                 case "$sh" in
3248                 '') sh="$tmp_sh" ;;
3249                 esac
3250                 hint=previous
3251                 ;;
3252         esac
3253 fi
3254 . ./UU/checkcc
3255 if test ! -f config.sh; then
3256         $cat <<EOM
3257
3258 First time through, eh?  I have some defaults handy for some systems
3259 that need some extra help getting the Configure answers right:
3260
3261 EOM
3262         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3263         dflt=''
3264         : Half the following guesses are probably wrong... If you have better
3265         : tests or hints, please send them to perlbug@perl.org
3266         : The metaconfig authors would also appreciate a copy...
3267         $test -f /irix && osname=irix
3268         $test -f /xenix && osname=sco_xenix
3269         $test -f /dynix && osname=dynix
3270         $test -f /dnix && osname=dnix
3271         $test -f /lynx.os && osname=lynxos
3272         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3273         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3274         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3275         $test -f /bin/mips && /bin/mips && osname=mips
3276         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3277                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3278         $test -d /usr/apollo/bin && osname=apollo
3279         $test -f /etc/saf/_sactab && osname=svr4
3280         $test -d /usr/include/minix && osname=minix
3281         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3282         if $test -d /MachTen -o -d /MachTen_Folder; then
3283                 osname=machten
3284                 if $test -x /sbin/version; then
3285                         osvers=`/sbin/version | $awk '{print $2}' |
3286                         $sed -e 's/[A-Za-z]$//'`
3287                 elif $test -x /usr/etc/version; then
3288                         osvers=`/usr/etc/version | $awk '{print $2}' |
3289                         $sed -e 's/[A-Za-z]$//'`
3290                 else
3291                         osvers="$2.$3"
3292                 fi
3293         fi
3294
3295         $test -f /sys/posix.dll &&
3296                 $test -f /usr/bin/what &&
3297                 set X `/usr/bin/what /sys/posix.dll` &&
3298                 $test "$3" = UWIN &&
3299                 osname=uwin &&
3300                 osvers="$5"
3301
3302         if $test -f $uname; then
3303                 set X $myuname
3304                 shift
3305
3306                 case "$5" in
3307                 fps*) osname=fps ;;
3308                 mips*)
3309                         case "$4" in
3310                         umips) osname=umips ;;
3311                         *) osname=mips ;;
3312                         esac;;
3313                 [23]100) osname=mips ;;
3314                 next*) osname=next ;;
3315                 i386*)
3316                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3317                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3318                                 osname='sco'
3319                                 osvers=$tmp
3320                         elif $test -f /etc/kconfig; then
3321                                 osname=isc
3322                                 if test "$lns" = "$ln -s"; then
3323                                         osvers=4
3324                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3325                                         osvers=3
3326                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3327                                         osvers=2
3328                                 fi
3329                         fi
3330                         tmp=''
3331                         ;;
3332                 pc*)
3333                         if test -n "$DJGPP"; then
3334                                 osname=dos
3335                                 osvers=djgpp
3336                         fi
3337                         ;;
3338                 esac
3339
3340                 case "$1" in
3341                 aix) osname=aix
3342                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3343                         case "$tmp" in
3344                         # oslevel can fail with:
3345                         # oslevel: Unable to acquire lock.
3346                         *not\ found) osvers="$4"."$3" ;;
3347                         '<3240'|'<>3240') osvers=3.2.0 ;;
3348                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3349                         '=3250'|'>3250') osvers=3.2.5 ;;
3350                         *) osvers=$tmp;;
3351                         esac
3352                         ;;
3353                 bitrig) osname=bitrig
3354                         osvers="$3"
3355                         ;;
3356                 bsd386) osname=bsd386
3357                         osvers=`$uname -r`
3358                         ;;
3359                 cygwin*) osname=cygwin
3360                         osvers="$3"
3361                         ;;
3362                 *dc.osx) osname=dcosx
3363                         osvers="$3"
3364                         ;;
3365                 dnix) osname=dnix
3366                         osvers="$3"
3367                         ;;
3368                 domainos) osname=apollo
3369                         osvers="$3"
3370                         ;;
3371                 dgux)   osname=dgux
3372                         osvers="$3"
3373                         ;;
3374                 dragonfly) osname=dragonfly
3375                         osvers="$3"
3376                         ;;
3377                 dynixptx*) osname=dynixptx
3378                         osvers=`echo "$4"|sed 's/^v//'`
3379                         ;;
3380                 freebsd) osname=freebsd
3381                         osvers="$3" ;;
3382                 genix)  osname=genix ;;
3383                 gnu)    osname=gnu
3384                         osvers="$3" ;;
3385                 hp*)    osname=hpux
3386                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3387                         ;;
3388                 irix*)  osname=irix
3389                         case "$3" in
3390                         4*) osvers=4 ;;
3391                         5*) osvers=5 ;;
3392                         *)      osvers="$3" ;;
3393                         esac
3394                         ;;
3395                 linux)  osname=linux
3396                         case "$3" in
3397                         *)      osvers="$3" ;;
3398                         esac
3399                         $test -f /system/lib/libandroid.so && osname=linux-android
3400                         ;;
3401                 MiNT)   osname=mint
3402                         ;;
3403                 netbsd*) osname=netbsd
3404                         osvers="$3"
3405                         ;;
3406                 news-os) osvers="$3"
3407                         case "$3" in
3408                         4*) osname=newsos4 ;;
3409                         *) osname=newsos ;;
3410                         esac
3411                         ;;
3412                 next*) osname=next ;;
3413                 nonstop-ux) osname=nonstopux ;;
3414                 openbsd) osname=openbsd
3415                         osvers="$3"
3416                         ;;
3417                 os2)    osname=os2
3418                         osvers="$4"
3419                         ;;
3420                 POSIX-BC | posix-bc ) osname=posix-bc
3421                         osvers="$3"
3422                         ;;
3423                 powerux | power_ux | powermax_os | powermaxos | \
3424                 powerunix | power_unix) osname=powerux
3425                         osvers="$3"
3426                         ;;
3427                 qnx) osname=qnx
3428                         osvers="$4"
3429                         ;;
3430                 solaris) osname=solaris
3431                         case "$3" in
3432                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3433                         *)      osvers="$3" ;;
3434                         esac
3435                         ;;
3436                 sunos) osname=sunos
3437                         case "$3" in
3438                         5*) osname=solaris
3439                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3440                         *)      osvers="$3" ;;
3441                         esac
3442                         ;;
3443                 titanos) osname=titanos
3444                         case "$3" in
3445                         1*) osvers=1 ;;
3446                         2*) osvers=2 ;;
3447                         3*) osvers=3 ;;
3448                         4*) osvers=4 ;;
3449                         *)      osvers="$3" ;;
3450                         esac
3451                         ;;
3452                 ultrix) osname=ultrix
3453                         osvers="$3"
3454                         ;;
3455                 osf1|mls+)      case "$5" in
3456                                 alpha)
3457                                         osname=dec_osf
3458                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3459                                         case "$osvers" in
3460                                         [1-9].[0-9]*) ;;
3461                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3462                                         esac
3463                                         ;;
3464                         hp*)    osname=hp_osf1  ;;
3465                         mips)   osname=mips_osf1 ;;
3466                         esac
3467                         ;;
3468                 # UnixWare 7.1.2 is known as Open UNIX 8
3469                 openunix|unixware) osname=svr5
3470                         osvers="$4"
3471                         ;;
3472                 uts)    osname=uts
3473                         osvers="$3"
3474                         ;;
3475                 vos) osvers="$3"
3476                         ;;
3477                 $2) case "$osname" in
3478                         *isc*) ;;
3479                         *freebsd*) ;;
3480                         svr*)
3481                                 : svr4.x or possibly later
3482                                 case "svr$3" in
3483                                 ${osname}*)
3484                                         osname=svr$3
3485                                         osvers=$4
3486                                         ;;
3487                                 esac
3488                                 case "$osname" in
3489                                 svr4.0)
3490                                         : Check for ESIX
3491                                         if test -f /stand/boot ; then
3492                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3493                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3494                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3495                                                         if test -n "$isesix"; then
3496                                                                 osname=esix4
3497                                                         fi
3498                                                 fi
3499                                         fi
3500                                         ;;
3501                                 esac
3502                                 ;;
3503                         *)      if test -f /etc/systemid; then
3504                                         osname=sco
3505                                         set `echo $3 | $sed 's/\./ /g'` $4
3506                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3507                                                 osvers=$1.$2.$3
3508                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3509                                                 osvers=$1.$2
3510                                         elif $test -f $src/hints/sco_$1.sh; then
3511                                                 osvers=$1
3512                                         fi
3513                                 else
3514                                         case "$osname" in
3515                                         '') : Still unknown.  Probably a generic Sys V.
3516                                                 osname="sysv"
3517                                                 osvers="$3"
3518                                                 ;;
3519                                         esac
3520                                 fi
3521                                 ;;
3522                         esac
3523                         ;;
3524                 *)      case "$osname" in
3525                         '') : Still unknown.  Probably a generic BSD.
3526                                 osname="$1"
3527                                 osvers="$3"
3528                                 ;;
3529                         esac
3530                         ;;
3531                 esac
3532         else
3533                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3534                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3535                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3536                                 osname=news_os
3537                         fi
3538                         $rm -f UU/kernel.what
3539                 elif test -d c:/. -o -n "$is_os2" ; then
3540                         set X $myuname
3541                         osname=os2
3542                         osvers="$5"
3543                 fi
3544         fi
3545
3546         case "$targetarch" in
3547         '') ;;
3548         *)  hostarch=$osname
3549             case "$targetarch" in
3550                 nto*|*-nto-*)
3551                     # Will load qnx.sh, which should change osname to nto
3552                     osname=qnx
3553                     osvers=''
3554                     ;;
3555                 *linux-android*)
3556                     # Catch arm-linux-androideabi, mipsel-linux-android,
3557                     # and i686-linux-android
3558                     osname=linux-android
3559                     osvers=''
3560                     ;;
3561                 *linux*)
3562                     # Something like arm-linux-gnueabihf is really just
3563                     # plain linux.
3564                     osname=linux
3565                     osvers=''
3566                     ;;
3567                 *solaris*|*sunos*)
3568                     osname=solaris
3569                     # XXX perhaps we should just assume
3570                     # osvers to be 2, or maybe take the value
3571                     # from targetarch. Using $run before the
3572                     # hints are run is somewhat icky.
3573                     set X `$run $uname -a 2>/dev/null`
3574                     shift
3575                     case "$3" in
3576                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3577                         *)  osvers="$3" ;;
3578                     esac
3579                     ;;
3580                 *)
3581                     osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3582                     osvers=''
3583                 ;;
3584             esac
3585             ;;
3586         esac
3587
3588         : Now look for a hint file osname_osvers, unless one has been
3589         : specified already.
3590         case "$hintfile" in
3591         ''|' ')
3592                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3593                 : Also try without trailing minor version numbers.
3594                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3595                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3596                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3597                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3598                 case "$file" in
3599                 '') dflt=none ;;
3600                 *)  case "$osvers" in
3601                         '') dflt=$file
3602                                 ;;
3603                         *)  if $test -f $src/hints/$file.sh ; then
3604                                         dflt=$file
3605                                 elif $test -f $src/hints/$xfile.sh ; then
3606                                         dflt=$xfile
3607                                 elif $test -f $src/hints/$xxfile.sh ; then
3608                                         dflt=$xxfile
3609                                 elif $test -f $src/hints/$xxxfile.sh ; then
3610                                         dflt=$xxxfile
3611                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3612                                         dflt=$xxxxfile
3613                                 elif $test -f "$src/hints/${osname}.sh" ; then
3614                                         dflt="${osname}"
3615                                 else
3616                                         dflt=none
3617                                 fi
3618                                 ;;
3619                         esac
3620                         ;;
3621                 esac
3622                 if $test -f Policy.sh ; then
3623                         case "$dflt" in
3624                         *Policy*) ;;
3625                         none) dflt="Policy" ;;
3626                         *) dflt="Policy $dflt" ;;
3627                         esac
3628                 fi
3629                 ;;
3630         *)
3631                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3632                 ;;
3633         esac
3634
3635         if $test -f Policy.sh ; then
3636                 $cat <<EOM
3637
3638 There's also a Policy hint file available, which should make the
3639 site-specific (policy) questions easier to answer.
3640 EOM
3641
3642         fi
3643
3644         $cat <<EOM
3645
3646 You may give one or more space-separated answers, or "none" if appropriate.
3647 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3648 previous run of Configure, you may specify it as well as or instead of
3649 OS-specific hints.  If hints are provided for your OS, you should use them:
3650 although Perl can probably be built without hints on many platforms, using
3651 hints often improve performance and may enable features that Configure can't
3652 set up on its own. If there are no hints that match your OS, specify "none";
3653 DO NOT give a wrong version or a wrong OS.
3654
3655 EOM
3656
3657         rp="Which of these apply, if any?"
3658         . UU/myread
3659         tans=$ans
3660         for file in $tans; do
3661                 if $test X$file = XPolicy -a -f Policy.sh; then
3662                         . Policy.sh
3663                         $cat Policy.sh >> UU/config.sh
3664                 elif $test -f $src/hints/$file.sh; then
3665                         . $src/hints/$file.sh
3666                         $cat $src/hints/$file.sh >> UU/config.sh
3667                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3668                         : nothing
3669                 else
3670                         : Give one chance to correct a possible typo.
3671                         echo "$file.sh does not exist"
3672                         dflt=$file
3673                         rp="hint to use instead?"
3674                         . UU/myread
3675                         for file in $ans; do
3676                                 if $test -f "$src/hints/$file.sh"; then
3677                                         . $src/hints/$file.sh
3678                                         $cat $src/hints/$file.sh >> UU/config.sh
3679                                 elif $test X$ans = X -o X$ans = Xnone ; then
3680                                         : nothing
3681                                 else
3682                                         echo "$file.sh does not exist -- ignored."
3683                                 fi
3684                         done
3685                 fi
3686         done
3687
3688         hint=recommended
3689         : Remember our hint file for later.
3690         if $test -f "$src/hints/$file.sh" ; then
3691                 hintfile="$file"
3692         else
3693                 hintfile=''
3694         fi
3695 fi
3696 cd UU
3697 ;;
3698 *)
3699         echo " "
3700         echo "Fetching default answers from $config_sh..." >&4
3701         tmp_n="$n"
3702         tmp_c="$c"
3703         cd ..
3704         cp $config_sh config.sh 2>/dev/null
3705         chmod +w config.sh
3706         . ./config.sh
3707         cd UU
3708         cp ../config.sh .
3709         n="$tmp_n"
3710         c="$tmp_c"
3711         hint=previous
3712         ;;
3713 esac
3714 test "$override" && . ./optdef.sh
3715
3716 : Restore computed paths
3717 for file in $loclist $trylist; do
3718         eval $file="\$_$file"
3719 done
3720
3721 cat << EOM
3722
3723 Configure uses the operating system name and version to set some defaults.
3724 The default value is probably right if the name rings a bell. Otherwise,
3725 since spelling matters for me, either accept the default or answer "none"
3726 to leave it blank.
3727
3728 EOM
3729 case "$osname" in
3730         ''|' ')
3731                 case "$hintfile" in
3732                 ''|' '|none) dflt=none ;;
3733                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3734                 esac
3735                 ;;
3736         *) dflt="$osname" ;;
3737 esac
3738 rp="Operating system name?"
3739 . ./myread
3740 case "$ans" in
3741 none)  osname='' ;;
3742 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3743 esac
3744 echo " "
3745 case "$osvers" in
3746         ''|' ')
3747                 case "$hintfile" in
3748                 ''|' '|none) dflt=none ;;
3749                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3750                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3751                         case "$dflt" in
3752                         ''|' ') dflt=none ;;
3753                         esac
3754                         ;;
3755                 esac
3756                 ;;
3757         *) dflt="$osvers" ;;
3758 esac
3759 rp="Operating system version?"
3760 . ./myread
3761 case "$ans" in
3762 none)  osvers='' ;;
3763 *) osvers="$ans" ;;
3764 esac
3765
3766
3767 . ./posthint.sh
3768
3769 : who configured the system
3770 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3771 case "$cf_by" in
3772 "")
3773         cf_by=`(logname) 2>/dev/null`
3774         case "$cf_by" in
3775         "")
3776                 cf_by=`(whoami) 2>/dev/null`
3777                 case "$cf_by" in
3778                 "") cf_by=unknown ;;
3779                 esac ;;
3780         esac ;;
3781 esac
3782
3783 : decide how portable to be.  Allow command line overrides.
3784 case "$d_portable" in
3785 "$undef") ;;
3786 *)      d_portable="$define" ;;
3787 esac
3788
3789 : set up shell script to do ~ expansion
3790 cat >filexp <<EOSS
3791 $startsh
3792 : expand filename
3793 case "\$1" in
3794  \~/*|\~)
3795         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3796         ;;
3797  \~*)
3798         if $test -f /bin/csh; then
3799                 /bin/csh -f -c "glob \$1"
3800                 failed=\$?
3801                 echo ""
3802                 exit \$failed
3803         else
3804                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3805                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3806                 if $test ! -d "\$dir"; then
3807                         me=\`basename \$0\`
3808                         echo "\$me: can't locate home directory for: \$name" >&2
3809                         exit 1
3810                 fi
3811                 case "\$1" in
3812                 */*)
3813                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3814                         ;;
3815                 *)
3816                         echo \$dir
3817                         ;;
3818                 esac
3819         fi
3820         ;;
3821 *)
3822         echo \$1
3823         ;;
3824 esac
3825 EOSS
3826 chmod +x filexp
3827 $eunicefix filexp
3828
3829 : now set up to get a file name
3830 cat <<EOS >getfile
3831 $startsh
3832 EOS
3833 cat <<'EOSC' >>getfile
3834 tilde=''
3835 fullpath=''
3836 already=''
3837 skip=''
3838 none_ok=''
3839 exp_file=''
3840 nopath_ok=''
3841 orig_rp="$rp"
3842 orig_dflt="$dflt"
3843 case "$gfpth" in
3844 '') gfpth='.' ;;
3845 esac
3846
3847 case "$fn" in
3848 *\(*)
3849         : getfile will accept an answer from the comma-separated list
3850         : enclosed in parentheses even if it does not meet other criteria.
3851         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3852         fn=`echo $fn | sed 's/(.*)//'`
3853         ;;
3854 esac
3855
3856 case "$fn" in
3857 *:*)
3858         loc_file=`expr $fn : '.*:\(.*\)'`
3859         fn=`expr $fn : '\(.*\):.*'`
3860         ;;
3861 esac
3862
3863 case "$fn" in
3864 *~*) tilde=true;;
3865 esac
3866 case "$fn" in
3867 */*) fullpath=true;;
3868 esac
3869 case "$fn" in
3870 *+*) skip=true;;
3871 esac
3872 case "$fn" in
3873 *n*) none_ok=true;;
3874 esac
3875 case "$fn" in
3876 *e*) exp_file=true;;
3877 esac
3878 case "$fn" in
3879 *p*) nopath_ok=true;;
3880 esac
3881
3882 case "$fn" in
3883 *f*) type='File';;
3884 *d*) type='Directory';;
3885 *l*) type='Locate';;
3886 esac
3887
3888 what="$type"
3889 case "$what" in
3890 Locate) what='File';;
3891 esac
3892
3893 case "$exp_file" in
3894 '')
3895         case "$d_portable" in
3896         "$define") ;;
3897         *) exp_file=true;;
3898         esac
3899         ;;
3900 esac
3901
3902 cd ..
3903 while test "$type"; do
3904         redo=''
3905         rp="$orig_rp"
3906         dflt="$orig_dflt"
3907         case "$tilde" in
3908         true) rp="$rp (~name ok)";;
3909         esac
3910         . UU/myread
3911         if test -f UU/getfile.ok && \
3912                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3913         then
3914                 value="$ans"
3915                 ansexp="$ans"
3916                 break
3917         fi
3918         case "$ans" in
3919         none)
3920                 value=''
3921                 ansexp=''
3922                 case "$none_ok" in
3923                 true) type='';;
3924                 esac
3925                 ;;
3926         *)
3927                 case "$tilde" in
3928                 '') value="$ans"
3929                         ansexp="$ans";;
3930                 *)
3931                         value=`UU/filexp $ans`
3932                         case $? in
3933                         0)
3934                                 if test "$ans" != "$value"; then
3935                                         echo "(That expands to $value on this system.)"
3936                                 fi
3937                                 ;;
3938                         *) value="$ans";;
3939                         esac
3940                         ansexp="$value"
3941                         case "$exp_file" in
3942                         '') value="$ans";;
3943                         esac
3944                         ;;
3945                 esac
3946                 case "$fullpath" in
3947                 true)
3948                         case "$ansexp" in
3949                         /*) value="$ansexp" ;;
3950                         [a-zA-Z]:/*) value="$ansexp" ;;
3951                         *)
3952                                 redo=true
3953                                 case "$already" in
3954                                 true)
3955                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3956                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3957                                         ;;
3958                                 *)
3959                                 echo "Please give a full path name, starting with slash." >&4
3960                                         case "$tilde" in
3961                                         true)
3962                                 echo "Note that using ~name is ok provided it expands well." >&4
3963                                                 already=true
3964                                                 ;;
3965                                         esac
3966                                 esac
3967                                 ;;
3968                         esac
3969                         ;;
3970                 esac
3971                 case "$redo" in
3972                 '')
3973                         case "$type" in
3974                         File)
3975                                 for fp in $gfpth; do
3976                                         if test "X$fp" = X.; then
3977                                             pf="$ansexp"
3978                                         else    
3979                                             pf="$fp/$ansexp"
3980                                         fi
3981                                         if test -f "$pf"; then
3982                                                 type=''
3983                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3984                                         then
3985                                                 echo "($value is not a plain file, but that's ok.)"
3986                                                 type=''
3987                                         fi
3988                                         if test X"$type" = X; then
3989                                             value="$pf"
3990                                             break
3991                                         fi
3992                                 done
3993                                 ;;
3994                         Directory)
3995                                 for fp in $gfpth; do
3996                                         if test "X$fp" = X.; then
3997                                             dir="$ans"
3998                                             direxp="$ansexp"
3999                                         else    
4000                                             dir="$fp/$ansexp"
4001                                             direxp="$fp/$ansexp"
4002                                         fi
4003                                         if test -d "$direxp"; then
4004                                                 type=''
4005                                                 value="$dir"
4006                                                 break
4007                                         fi
4008                                 done
4009                                 ;;
4010                         Locate)
4011                                 if test -d "$ansexp"; then
4012                                         echo "(Looking for $loc_file in directory $value.)"
4013                                         value="$value/$loc_file"
4014                                         ansexp="$ansexp/$loc_file"
4015                                 fi
4016                                 if test -f "$ansexp"; then
4017                                         type=''
4018                                 fi
4019                                 case "$nopath_ok" in
4020                                 true)   case "$value" in
4021                                         */*) ;;
4022                                         *)      echo "Assuming $value will be in people's path."
4023                                                 type=''
4024                                                 ;;
4025                                         esac
4026                                         ;;
4027                                 esac
4028                                 ;;
4029                         esac
4030
4031                         case "$skip" in
4032                         true) type='';
4033                         esac
4034
4035                         case "$type" in
4036                         '') ;;
4037                         *)
4038                                 if test "$fastread" = yes; then
4039                                         dflt=y
4040                                 else
4041                                         dflt=n
4042                                 fi
4043                                 rp="$what $value doesn't exist.  Use that name anyway?"
4044                                 . UU/myread
4045                                 dflt=''
4046                                 case "$ans" in
4047                                 y*) type='';;
4048                                 *) echo " ";;
4049                                 esac
4050                                 ;;
4051                         esac
4052                         ;;
4053                 esac
4054                 ;;
4055         esac
4056 done
4057 cd UU
4058 ans="$value"
4059 rp="$orig_rp"
4060 dflt="$orig_dflt"
4061 rm -f getfile.ok
4062 test "X$gfpthkeep" != Xy && gfpth=""
4063 EOSC
4064
4065 : determine root of directory hierarchy where package will be installed.
4066 case "$prefix" in
4067 '')
4068         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4069         ;;
4070 *?/)
4071         dflt=`echo "$prefix" | sed 's/.$//'`
4072         ;;
4073 *)
4074         dflt="$prefix"
4075         ;;
4076 esac
4077 $cat <<EOM
4078
4079 By default, $package will be installed in $dflt/bin, manual pages
4080 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4081 installation directories. Typically this is something like /usr/local.
4082 If you wish to have binaries under /usr/bin but other parts of the
4083 installation under /usr/local, that's ok: you will be prompted
4084 separately for each of the installation directories, the prefix being
4085 only used to set the defaults.
4086
4087 EOM
4088 fn=d~
4089 rp='Installation prefix to use?'
4090 . ./getfile
4091 oldprefix=''
4092 case "$prefix" in
4093 '') ;;
4094 *)
4095         case "$ans" in
4096         "$prefix") ;;
4097         *) oldprefix="$prefix";;
4098         esac
4099         ;;
4100 esac
4101 prefix="$ans"
4102 prefixexp="$ansexp"
4103
4104 : allow them to override the AFS root
4105 case "$afsroot" in
4106 '')     afsroot=/afs ;;
4107 *)      afsroot=$afsroot ;;
4108 esac
4109
4110 : is AFS running?
4111 echo " "
4112 case "$afs" in
4113 $define|true)   afs=true ;;
4114 $undef|false)   afs=false ;;
4115 *)      if $test -d $afsroot; then
4116                 afs=true
4117         else
4118                 afs=false
4119         fi
4120         ;;
4121 esac
4122 if $afs; then
4123         echo "AFS may be running... I'll be extra cautious then..." >&4
4124 else
4125         echo "AFS does not seem to be running..." >&4
4126 fi
4127
4128 : determine installation prefix for where package is to be installed.
4129 if $afs; then
4130 $cat <<EOM
4131
4132 Since you are running AFS, I need to distinguish the directory in which
4133 files will reside from the directory in which they are installed (and from
4134 which they are presumably copied to the former directory by occult means).
4135
4136 EOM
4137         case "$installprefix" in
4138         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4139         *) dflt="$installprefix";;
4140         esac
4141 else
4142 $cat <<EOM
4143
4144 In some special cases, particularly when building $package for distribution,
4145 it is convenient to distinguish the directory in which files should be
4146 installed from the directory ($prefix) in which they will
4147 eventually reside.  For most users, these two directories are the same.
4148
4149 EOM
4150         case "$installprefix" in
4151         '') dflt=$prefix ;;
4152         *) dflt=$installprefix;;
4153         esac
4154 fi
4155 fn=d~
4156 rp='What installation prefix should I use for installing files?'
4157 . ./getfile
4158 installprefix="$ans"
4159 installprefixexp="$ansexp"
4160
4161 : Perform the prefixexp/installprefixexp correction if necessary
4162 cat <<EOS >installprefix
4163 $startsh
4164 EOS
4165 cat <<'EOSC' >>installprefix
4166 : Change installation prefix, if necessary.
4167 if $test X"$prefix" != X"$installprefix"; then
4168     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
4169 else
4170     eval "install${prefixvar}=\"\$${prefixvar}exp\""
4171 fi
4172 EOSC
4173 chmod +x installprefix
4174 $eunicefix installprefix
4175
4176 : Set variables such as privlib and privlibexp from the output of ./getfile
4177 : performing the prefixexp/installprefixexp correction if necessary.
4178 cat <<EOS >setprefixvar
4179 $startsh
4180 EOS
4181 cat <<'EOSC' >>setprefixvar
4182 eval "${prefixvar}=\"\$ans\""
4183 eval "${prefixvar}exp=\"\$ansexp\""
4184 . ./installprefix
4185 EOSC
4186 chmod +x setprefixvar
4187 $eunicefix setprefixvar
4188
4189 : set up the script used to warn in case of inconsistency
4190 cat <<EOS >whoa
4191 $startsh
4192 EOS
4193 cat <<'EOSC' >>whoa
4194 dflt=y
4195 case "$hint" in
4196     recommended)
4197         case "$hintfile" in
4198         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4199                 ;;
4200         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4201                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4202                 ;;
4203         esac
4204         ;;
4205     *)  echo " "
4206         echo "*** WHOA THERE!!! ***" >&4
4207         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4208         ;;
4209 esac
4210 rp="    Keep the $hint value?"
4211 . ./myread
4212 case "$ans" in
4213 y) td=$was; tu=$was;;
4214 esac
4215 EOSC
4216
4217 : function used to set '$1' to '$val'
4218 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4219 case "$val$was" in
4220 $define$undef) . ./whoa; eval "$var=\$td";;
4221 $undef$define) . ./whoa; eval "$var=\$tu";;
4222 *) eval "$var=$val";;
4223 esac'
4224
4225 : get the patchlevel
4226 echo " "
4227 echo "Getting the current patchlevel..." >&4
4228 if $test -r $rsrc/patchlevel.h;then
4229         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4230         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4231         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4232         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4233         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4234         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4235         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4236 else
4237         revision=0
4238         patchlevel=0
4239         subversion=0
4240         api_revision=0
4241         api_version=0
4242         api_subversion=0
4243         perl_patchlevel=0
4244         $echo "(You do not have patchlevel.h.  Eek.)"
4245 fi
4246 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4247 version_patchlevel_string="version $patchlevel subversion $subversion"
4248 case "$perl_patchlevel" in
4249 0|'') ;;
4250 *)  perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'`
4251     version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel"
4252     ;;
4253 esac
4254
4255 $echo "(You have $package $version_patchlevel_string.)"
4256
4257 case "$osname" in
4258 dos|vms)
4259         : XXX Should be a Configure test for double-dots in filenames.
4260         version=`echo $revision $patchlevel $subversion | \
4261                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4262         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4263                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4264         ;;
4265 *)
4266         version=`echo $revision $patchlevel $subversion | \
4267                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4268         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4269                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4270         ;;
4271 esac
4272 : Special case the 5.005_xx maintenance series, which used 5.005
4273 : without any subversion label as a subdirectory in $sitelib
4274 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4275         api_versionstring='5.005'
4276 fi
4277
4278 : Do we want threads support and if so, what type
4279 case "$usethreads" in
4280 $define|true|[yY]*)     dflt='y';;
4281 *)     # Catch case where user specified ithreads or 5005threads but
4282        # forgot -Dusethreads (A.D. 4/2002)
4283        case "$useithreads$use5005threads" in
4284        *$define*)       dflt='y';;
4285        *)               dflt='n';;
4286        esac
4287        ;;
4288 esac
4289 cat <<EOM
4290
4291 Perl can be built to offer a form of threading support on some systems
4292 To do so, Configure can be run with -Dusethreads.
4293
4294 Note that Perl built with threading support runs slightly slower
4295 and uses slightly more memory than plain Perl.
4296
4297 If this doesn't make any sense to you, just accept the default '$dflt'.
4298 EOM
4299 rp='Build a threading Perl?'
4300 . ./myread
4301 case "$ans" in
4302 y|Y)    val="$define" ;;
4303 *)      val="$undef" ;;
4304 esac
4305 set usethreads
4306 eval $setvar
4307
4308 if $test $patchlevel -lt 9; then
4309     case "$usethreads" in
4310     $define)
4311         : Default to ithreads unless overridden on command line or with
4312         : old config.sh
4313         dflt='y'
4314         case "$use5005threads" in
4315                 $define|true|[yY]*)
4316                         echo "5.005 threads are no longer supported"
4317                         exit 1
4318                 ;;
4319         esac
4320         case "$useithreads" in
4321                 $undef|false|[nN]*) dflt='n';;
4322         esac
4323         rp='Use the newer interpreter-based ithreads?'
4324         . ./myread
4325         case "$ans" in
4326         y|Y)    val="$define" ;;
4327         *)      val="$undef" ;;
4328         esac
4329         set useithreads
4330         eval $setvar
4331         : Now set use5005threads to the opposite value.
4332         case "$useithreads" in
4333         $define) val="$undef" ;;
4334         *) val="$define" ;;
4335         esac
4336         set use5005threads
4337         eval $setvar
4338         ;;
4339     *)
4340         useithreads="$undef"
4341         use5005threads="$undef"
4342         ;;
4343     esac
4344
4345     case "$useithreads$use5005threads" in
4346     "$define$define")
4347         $cat >&4 <<EOM
4348
4349 You cannot have both the ithreads and the 5.005 threads enabled
4350 at the same time.  Disabling the 5.005 threads since they are
4351 much less stable than the ithreads.
4352
4353 EOM
4354         use5005threads="$undef"
4355         ;;
4356     esac
4357
4358 else
4359 : perl-5.9.x and later
4360
4361     if test X"$usethreads" = "X$define"; then
4362         case "$use5005threads" in
4363             $define|true|[yY]*)
4364                 $cat >&4 <<EOM
4365
4366 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4367
4368 EOM
4369             ;;
4370         esac
4371     fi
4372
4373     use5005threads="$undef"
4374     useithreads="$usethreads"
4375 fi
4376
4377 case "$d_oldpthreads" in
4378 '')     : Configure tests would be welcome here.  For now, assume undef.
4379         val="$undef" ;;
4380 *)      val="$d_oldpthreads" ;;
4381 esac
4382 set d_oldpthreads
4383 eval $setvar
4384
4385
4386 : Look for a hint-file generated 'call-back-unit'.  If the
4387 : user has specified that a threading perl is to be built,
4388 : we may need to set or change some other defaults.
4389 if $test -f usethreads.cbu; then
4390     echo "Your platform has some specific hints regarding threaded builds, using them..."
4391     . ./usethreads.cbu
4392 else
4393     case "$usethreads" in
4394         "$define"|true|[yY]*)
4395                 $cat <<EOM
4396 (Your platform does not have any specific hints for threaded builds.
4397  Assuming POSIX threads, then.)
4398 EOM
4399         ;;
4400     esac
4401 fi
4402
4403 : Check if multiplicity is required
4404 cat <<EOM
4405
4406 Perl can be built so that multiple Perl interpreters can coexist
4407 within the same Perl executable.
4408 EOM
4409
4410 case "$useithreads" in
4411 $define)
4412         cat <<EOM
4413 This multiple interpreter support is required for interpreter-based threads.
4414 EOM
4415         val="$define"
4416         ;;
4417 *)      case "$usemultiplicity" in
4418         $define|true|[yY]*)     dflt='y';;
4419         *) dflt='n';;
4420         esac
4421         echo " "
4422         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4423         rp='Build Perl for multiplicity?'
4424         . ./myread
4425         case "$ans" in
4426         y|Y)    val="$define" ;;
4427         *)      val="$undef" ;;
4428         esac
4429         ;;
4430 esac
4431 set usemultiplicity
4432 eval $setvar
4433
4434 : Check if morebits is requested
4435 case "$usemorebits" in
4436 "$define"|true|[yY]*)
4437         use64bitint="$define"
4438         uselongdouble="$define"
4439         usemorebits="$define"
4440         ;;
4441 *)      usemorebits="$undef"
4442         ;;
4443 esac
4444
4445 : Determine the C compiler to be used
4446 echo " "
4447 case "$cc" in
4448 '') dflt=cc;;
4449 *) dflt="$cc";;
4450 esac
4451 rp="Use which C compiler?"
4452 . ./myread
4453 cc="$ans"
4454
4455 : See whether they have no cc but they do have gcc
4456 . ./trygcc
4457 if $test -f cc.cbu; then
4458     . ./cc.cbu
4459 fi
4460 . ./checkcc
4461
4462 : make some quick guesses about what we are up against
4463 echo " "
4464 $echo $n "Hmm...  $c"
4465 echo exit 1 >bsd
4466 echo exit 1 >usg
4467 echo exit 1 >v7
4468 echo exit 1 >osf1
4469 echo exit 1 >eunice
4470 echo exit 1 >xenix
4471 echo exit 1 >venix
4472 echo exit 1 >os2
4473 d_bsd="$undef"
4474 $cat $sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h >foo 2>/dev/null
4475 if test -f /osf_boot || $contains 'OSF/1' $sysroot/usr/include/ctype.h >/dev/null 2>&1
4476 then
4477         echo "Looks kind of like an OSF/1 system, but we'll see..."
4478         echo exit 0 >osf1
4479 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4480         xxx=`./loc addbib blurfl $pth`
4481         if $test -f $xxx; then
4482         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4483                 echo exit 0 >bsd
4484                 echo exit 0 >usg
4485         else
4486                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4487                         echo "Looks kind of like an extended USG system, but we'll see..."
4488                 else
4489                         echo "Looks kind of like a USG system, but we'll see..."
4490                 fi
4491                 echo exit 0 >usg
4492         fi
4493 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4494         echo "Looks kind of like a BSD system, but we'll see..."
4495         d_bsd="$define"
4496         echo exit 0 >bsd
4497 else
4498         echo "Looks kind of like a Version 7 system, but we'll see..."
4499         echo exit 0 >v7
4500 fi
4501 case "$eunicefix" in
4502 *unixtovms*)
4503         $cat <<'EOI'
4504 There is, however, a strange, musty smell in the air that reminds me of
4505 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4506 EOI
4507         echo exit 0 >eunice
4508         d_eunice="$define"
4509 : it so happens the Eunice I know will not run shell scripts in Unix format
4510         ;;
4511 *)
4512         echo " "
4513         echo "Congratulations.  You aren't running Eunice."
4514         d_eunice="$undef"
4515         ;;
4516 esac
4517 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4518 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4519 : semicolon as a patch separator
4520 case "$p_" in
4521 :) ;;
4522 *)
4523         $cat <<'EOI'
4524 I have the feeling something is not exactly right, however...don't tell me...
4525 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4526 (Or you may be running DOS with DJGPP.)
4527 EOI
4528         echo exit 0 >os2
4529         ;;
4530 esac
4531 if test -f /xenix; then
4532         echo "Actually, this looks more like a XENIX system..."
4533         echo exit 0 >xenix
4534         d_xenix="$define"
4535 else
4536         echo " "
4537         echo "It's not Xenix..."
4538         d_xenix="$undef"
4539 fi
4540 chmod +x xenix
4541 $eunicefix xenix
4542 if test -f /venix; then
4543         echo "Actually, this looks more like a VENIX system..."
4544         echo exit 0 >venix
4545 else
4546         echo " "
4547         if ./xenix; then
4548                 : null
4549         else
4550                 echo "Nor is it Venix..."
4551         fi
4552 fi
4553 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4554 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4555 $rm -f foo
4556
4557 : Check if we are using GNU gcc and what its version is
4558 echo " "
4559 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4560 $cat >try.c <<EOM
4561 #include <stdio.h>
4562 int main() {
4563 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4564 #ifdef __VERSION__
4565         printf("%s\n", __VERSION__);
4566 #else
4567         printf("%s\n", "1");
4568 #endif
4569 #endif
4570         return(0);
4571 }
4572 EOM
4573 if $cc -o try $ccflags $ldflags try.c; then
4574         gccversion=`$run ./try`
4575         case "$gccversion" in
4576         '') echo "You are not using GNU cc." ;;
4577         *)  echo "You are using GNU cc $gccversion."
4578             ccname=gcc
4579             ;;
4580         esac
4581 else
4582         echo " "
4583         echo "*** WHOA THERE!!! ***" >&4
4584         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4585         case "$knowitall" in
4586         '')
4587         echo "    You'd better start hunting for one and let me know about it." >&4
4588                 exit 1
4589                 ;;
4590         esac
4591 fi
4592 $rm -f try try.*
4593 case "$gccversion" in
4594 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4595 esac
4596 case "$gccversion" in
4597 '') gccosandvers='' ;;
4598 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4599    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4600    gccshortvers=''
4601    case "$gccosandvers" in
4602    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4603    $osname$osvers) ;; # looking good
4604    $osname*) cat <<EOM >&4
4605
4606 *** WHOA THERE!!! ***
4607
4608     Your gcc has not been compiled for the exact release of
4609     your operating system ($gccosandvers versus $osname$osvers).
4610
4611     In general it is a good idea to keep gcc synchronized with
4612     the operating system because otherwise serious problems
4613     may ensue when trying to compile software, like Perl.
4614
4615     I'm trying to be optimistic here, though, and will continue.
4616     If later during the configuration and build icky compilation
4617     problems appear (headerfile conflicts being the most common
4618     manifestation), I suggest reinstalling the gcc to match
4619     your operating system release.
4620
4621 EOM
4622       ;;
4623    *) gccosandvers='' ;; # failed to parse, better be silent
4624    esac
4625    ;;
4626 esac
4627 case "$ccname" in
4628 '') ccname="$cc" ;;
4629 esac
4630
4631 # gcc 3.* complain about adding -Idirectories that they already know about,
4632 # so we will take those off from locincpth.
4633 case "$gccversion" in
4634 3*)
4635     echo "main(){}">try.c
4636     for incdir in $locincpth; do
4637        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4638              grep '^c[cp]p*[01]: warning: changing search order '`
4639        if test "X$warn" != X; then
4640            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4641        fi
4642     done
4643     $rm -f try try.*
4644 esac
4645
4646 # gcc 4.9 by default does some optimizations that break perl.
4647 # see ticket 121505.
4648 #
4649 # The -fwrapv disables those optimizations (and probably others,) so
4650 # for gcc 4.9 (and later, since the optimizations probably won't go
4651 # away), add -fwrapv unless the user requests -fno-wrapv, which
4652 # disables -fwrapv, or if the user requests -fsanitize=undefined,
4653 # which turns the overflows -fwrapv ignores into runtime errors.
4654 case "$gccversion" in
4655 4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*)
4656     case "$ccflags" in
4657     *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;;
4658     *) ccflags="$ccflags -fwrapv" ;;
4659     esac
4660 esac
4661
4662 : What should the include directory be ?
4663 : Use sysroot if set, so findhdr looks in the right place.
4664 echo " "
4665 $echo $n "Hmm...  $c"
4666 dflt="$sysroot/usr/include"
4667 incpath=''
4668 mips_type=''
4669 if $test -f /bin/mips && /bin/mips; then
4670         echo "Looks like a MIPS system..."
4671         $cat >usr.c <<'EOCP'
4672 #ifdef SYSTYPE_BSD43
4673 /bsd43
4674 #endif
4675 EOCP
4676         if $cc $cppflags -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4677                 dflt='/bsd43/usr/include'
4678                 incpath='/bsd43'
4679                 mips_type='BSD 4.3'
4680         else
4681                 mips_type='System V'
4682         fi
4683         $rm -f usr.c usr.out
4684         echo "and you're compiling with the $mips_type compiler and libraries."
4685         xxx_prompt=y
4686         echo "exit 0" >mips
4687 else
4688         echo "Doesn't look like a MIPS system."
4689         xxx_prompt=n
4690         echo "exit 1" >mips
4691 fi
4692 chmod +x mips
4693 $eunicefix mips
4694 case "$usrinc" in
4695 '') ;;
4696 *) dflt="$usrinc";;
4697 esac
4698 case "$xxx_prompt" in
4699 y)      fn=d/
4700         echo " "
4701         rp='Where are the include files you want to use?'
4702         . ./getfile
4703         usrinc="$ans"
4704         ;;
4705 *)      usrinc="$dflt"
4706         ;;
4707 esac
4708
4709 : see how we invoke the C preprocessor
4710 echo " "
4711 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4712 cat <<'EOT' >testcpp.c
4713 #define ABC abc
4714 #define XYZ xyz
4715 ABC.XYZ
4716 EOT
4717 cd ..
4718 if test ! -f cppstdin; then
4719         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4720                 # AIX cc -E doesn't show the absolute headerfile
4721                 # locations but we'll cheat by using the -M flag.
4722                 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
4723         else
4724                 echo 'cat >.$$.c; '"$cc $cppflags"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4725         fi
4726 else
4727         echo "Keeping your $hint cppstdin wrapper."
4728 fi
4729 chmod 755 cppstdin
4730 wrapper=`pwd`/cppstdin
4731 ok='false'
4732 cd UU
4733
4734 if $test "X$cppstdin" != "X" && \
4735         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4736         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4737 then
4738         echo "You used to use $cppstdin $cppminus so we'll use that again."
4739         case "$cpprun" in
4740         '') echo "But let's see if we can live without a wrapper..." ;;
4741         *)
4742                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4743                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4744                 then
4745                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4746                         ok='true'
4747                 else
4748                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4749                 fi
4750                 ;;
4751         esac
4752 else
4753         case "$cppstdin" in
4754         '') ;;
4755         *)
4756                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4757                 ;;
4758         esac
4759 fi
4760
4761 if $ok; then
4762         : nothing
4763 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4764         $cc -E <testcpp.c >testcpp.out 2>&1; \
4765         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4766         echo "Yup, it does."
4767         x_cpp="$cc $cppflags -E"
4768         x_minus='';
4769 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4770         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4771         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4772         echo "Yup, it does."
4773         x_cpp="$cc $cppflags -E"
4774         x_minus='-';
4775 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4776         $cc -P <testcpp.c >testcpp.out 2>&1; \
4777         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4778         echo "Yipee, that works!"
4779         x_cpp="$cc $cppflags -P"
4780         x_minus='';
4781 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4782         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4783         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4784         echo "At long last!"
4785         x_cpp="$cc $cppflags -P"
4786         x_minus='-';
4787 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4788         $cpp <testcpp.c >testcpp.out 2>&1; \
4789         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4790         echo "It works!"
4791         x_cpp="$cpp $cppflags"
4792         x_minus='';
4793 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4794         $cpp - <testcpp.c >testcpp.out 2>&1; \
4795         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4796         echo "Hooray, it works!  I was beginning to wonder."
4797         x_cpp="$cpp $cppflags"
4798         x_minus='-';
4799 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4800         $wrapper <testcpp.c >testcpp.out 2>&1; \
4801         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4802         x_cpp="$wrapper"
4803         x_minus=''
4804         echo "Eureka!"
4805 else
4806         dflt=''
4807         rp="No dice.  I can't find a C preprocessor.  Name one:"
4808         . ./myread
4809         x_cpp="$ans"
4810         x_minus=''
4811         $x_cpp <testcpp.c >testcpp.out 2>&1
4812         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4813                 echo "OK, that will do." >&4
4814         else
4815 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4816                 exit 1
4817         fi
4818 fi
4819
4820 case "$ok" in
4821 false)
4822         cppstdin="$x_cpp"
4823         cppminus="$x_minus"
4824         cpprun="$x_cpp"
4825         cpplast="$x_minus"
4826         set X $x_cpp
4827         shift
4828         case "$1" in
4829         "$cpp")
4830                 echo "Perhaps can we force $cc -E using a wrapper..."
4831                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4832                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4833                 then
4834                         echo "Yup, we can."
4835                         cppstdin="$wrapper"
4836                         cppminus='';
4837                 else
4838                         echo "Nope, we'll have to live without it..."
4839                 fi
4840                 ;;
4841         esac
4842         case "$cpprun" in
4843         "$wrapper")
4844                 cpprun=''
4845                 cpplast=''
4846                 ;;
4847         esac
4848         ;;
4849 esac
4850
4851 case "$cppstdin" in
4852 "$wrapper"|'cppstdin') ;;
4853 *) $rm -f $wrapper;;
4854 esac
4855 $rm -f testcpp.c testcpp.out
4856
4857 : Adjust cppfilter for path component separator
4858 case "$osname" in
4859 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4860 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
4861 *)   cppfilter='' ;;
4862 esac
4863
4864 : Use gcc to determine libpth and incpth
4865 # If using gcc or clang, we can get better values for libpth, incpth
4866 # and usrinc directly from the compiler.
4867 # Note that ccname for clang is also gcc.
4868 case "$ccname" in
4869     gcc)
4870         $echo 'extern int foo;' > try.c
4871         set X `$cppstdin -v try.c 2>&1 | $awk '/^#include </,/^End of search /'|$cppfilter $grep '/include'`
4872         shift
4873         if $test $# -gt 0; then
4874             incpth="$incpth $*"
4875             incpth="`$echo $incpth|$sed 's/^ //'`"
4876             for i in $*; do
4877                 j="`$echo $i|$sed 's,/include$,/lib,'`"
4878                 if $test -d $j; then
4879                     libpth="$libpth $j"
4880                 fi
4881             done
4882             libpth="`$echo $libpth|$sed 's/^ //'`"
4883             for xxx in $libpth $loclibpth $plibpth $glibpth; do
4884                 if $test -d $xxx; then
4885                     case " $libpth " in
4886                     *" $xxx "*) ;;
4887                     *) libpth="$libpth $xxx";;
4888                     esac
4889                 fi
4890             done
4891         fi
4892         $rm -f try.c
4893         case "$usrinc" in
4894         '') for i in $incpth; do
4895                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
4896                     usrinc="$i"
4897                     break
4898                 fi
4899             done
4900             ;;
4901         esac
4902
4903         case "$usecrosscompile" in
4904         $define|true|[yY]*)
4905             case "$incpth" in
4906                 '') echo "Incpth not defined." >&4; croak=y ;;
4907                 *)  echo "Using incpth '$incpth'." >&4 ;;
4908             esac
4909             case "$libpth" in
4910                 '') echo "Libpth not defined." >&4; croak=y ;;
4911                 *)  echo "Using libpth '$libpth'." >&4 ;;
4912             esac
4913             case "$usrinc" in
4914                 '') echo "Usrinc not defined." >&4; croak=y ;;
4915                 *)  echo "Using usrinc $usrinc." >&4 ;;
4916             esac
4917             case "$croak" in
4918                 y)
4919                 if test "X$sysroot" = X; then
4920                     echo "Cannot continue, aborting." >&4; exit 1
4921                 else
4922                     echo "Cross-compiling using sysroot $sysroot, failing to guess inc/lib paths is not fatal" >&4
4923                 fi
4924                 ;;
4925             esac
4926             ;;
4927         esac
4928     ;;
4929 esac
4930
4931 : Default value for incpth is just usrinc
4932 case "$incpth" in
4933 '') incpth="$usrinc";;
4934 esac
4935
4936 : Set private lib path
4937 case "$plibpth" in
4938 '') if ./mips; then
4939         plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib"
4940     fi;;
4941 esac
4942 case "$libpth" in
4943 ' ') dlist='';;
4944 '') dlist="$loclibpth $plibpth $glibpth";;
4945 *) dlist="$libpth";;
4946 esac
4947
4948 : Now check and see which directories actually exist, avoiding duplicates
4949 for xxx in $dlist
4950 do
4951     if $test -d $xxx; then
4952                 case " $libpth " in
4953                 *" $xxx "*) ;;
4954                 *) libpth="$libpth $xxx";;
4955                 esac
4956     fi
4957 done
4958 $cat <<'EOM'
4959
4960 Some systems have incompatible or broken versions of libraries.  Among
4961 the directories listed in the question below, please remove any you
4962 know not to be holding relevant libraries, and add any that are needed.
4963 Say "none" for none.
4964
4965 EOM
4966
4967 if test "X$sysroot" != X; then
4968     $cat <<EOM
4969 You have set sysroot to $sysroot, please supply the directories excluding sysroot
4970
4971 EOM
4972 fi
4973
4974 case "$libpth" in
4975 '') dflt='none';;
4976 *)
4977         set X $libpth
4978         shift
4979         dflt=${1+"$@"}
4980         ;;
4981 esac
4982 rp="Directories to use for library searches?"
4983 . ./myread
4984 case "$ans" in
4985 none) libpth=' ';;
4986 *) libpth="$ans";;
4987 esac
4988
4989 : compute shared library extension
4990 case "$so" in
4991 '')
4992         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4993                 dflt='sl'
4994         else
4995                 dflt='so'
4996         fi
4997         ;;
4998 *) dflt="$so";;
4999 esac
5000 $cat <<EOM
5001
5002 On some systems, shared libraries may be available.  Answer 'none' if
5003 you want to suppress searching of shared libraries for the remainder
5004 of this configuration.
5005
5006 EOM
5007 rp='What is the file extension used for shared libraries?'
5008 . ./myread
5009 so="$ans"
5010
5011 : Does target system insist that shared library basenames are unique
5012 $cat << EOM
5013
5014 Some dynamic loaders assume that the *basename* of shared library filenames
5015 are globally unique.  We'll default this to undef as we assume your system
5016 is not this weird. Set to defined if you're on one of them.
5017
5018 EOM
5019
5020 dflt='n'
5021 rp='Make shared library basenames unique?'
5022 . ./myread
5023 case "$ans" in
5024 y|Y) val="$define" ;;
5025 *)   val="$undef"  ;;
5026 esac
5027 set d_libname_unique
5028 eval $setvar
5029
5030 : Define several unixisms.
5031 : Hints files or command line option can be used to override them.
5032 : The convoluted testing is in case hints files set either the old
5033 : or the new name.
5034 case "$_exe" in
5035 '')     case "$exe_ext" in
5036         '')     ;;
5037         *)      _exe="$exe_ext" ;;
5038         esac
5039         ;;
5040 esac
5041 case "$_a" in
5042 '')     case "$lib_ext" in
5043     '') _a='.a';;
5044         *)      _a="$lib_ext" ;;
5045         esac
5046         ;;
5047 esac
5048 case "$_o" in
5049 '') case "$obj_ext" in
5050         '')     _o='.o';;
5051         *)      _o="$obj_ext";;
5052         esac
5053         ;;
5054 esac
5055 case "$p_" in
5056 '') case "$path_sep" in
5057         '')     p_=':';;
5058         *)      p_="$path_sep";;
5059         esac
5060         ;;
5061 esac
5062 exe_ext=$_exe
5063 lib_ext=$_a
5064 obj_ext=$_o
5065 path_sep=$p_
5066
5067 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
5068
5069 : Which makefile gets called first.  This is used by make depend.
5070 case "$firstmakefile" in
5071 '') firstmakefile='makefile';;
5072 esac
5073
5074 : Check is we will use socks
5075 case "$usesocks" in
5076 $define|true|[yY]*)     dflt='y';;
5077 *) dflt='n';;
5078 esac
5079 cat <<EOM
5080
5081 Perl can be built to use the SOCKS proxy protocol library.  To do so,
5082 Configure must be run with -Dusesocks.  If you use SOCKS you also need
5083 to use the PerlIO abstraction layer, this will be implicitly selected.
5084
5085 If this doesn't make any sense to you, just accept the default '$dflt'.
5086 EOM
5087 rp='Build Perl for SOCKS?'
5088 . ./myread
5089 case "$ans" in
5090 y|Y)    val="$define" ;;
5091 *)      val="$undef" ;;
5092 esac
5093 set usesocks
5094 eval $setvar
5095
5096 : Check for uselongdouble support
5097 case "$ccflags" in
5098 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5099 esac
5100
5101 case "$uselongdouble" in
5102 $define|true|[yY]*)     dflt='y';;
5103 *) dflt='n';;
5104 esac
5105 cat <<EOM
5106
5107 Perl can be built to take advantage of long doubles which
5108 (if available) may give more accuracy and range for floating point numbers.
5109
5110 If this doesn't make any sense to you, just accept the default '$dflt'.
5111 EOM
5112 rp='Try to use long doubles if available?'
5113 . ./myread
5114 case "$ans" in
5115 y|Y)    val="$define"   ;;
5116 *)      val="$undef"    ;;
5117 esac
5118 set uselongdouble
5119 eval $setvar
5120
5121 case "$uselongdouble" in
5122 true|[yY]*) uselongdouble="$define" ;;
5123 esac
5124
5125 : Look for a hint-file generated 'call-back-unit'.  If the
5126 : user has specified that long doubles should be used,
5127 : we may need to set or change some other defaults.
5128 if $test -f uselongdouble.cbu; then
5129     echo "Your platform has some specific hints regarding long doubles, using them..."
5130     . ./uselongdouble.cbu
5131 else
5132     case "$uselongdouble" in
5133         $define)
5134                 $cat <<EOM
5135 (Your platform does not have any specific hints for long doubles.)
5136 EOM
5137         ;;
5138     esac
5139 fi
5140
5141 : Looking for optional libraries
5142 echo " "
5143 echo "Checking for optional libraries..." >&4
5144 case "$libs" in
5145 ' '|'') dflt='';;
5146 *) dflt="$libs";;
5147 esac
5148 case "$libswanted" in
5149 '') libswanted='c_s';;
5150 esac
5151 case "$usesocks" in
5152 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
5153 esac
5154 libsfound=''
5155 libsfiles=''
5156 libsdirs=''
5157 libspath=''
5158 for thisdir in $libpth $xlibpth; do
5159   test -d $thisdir && libspath="$libspath $thisdir"
5160 done
5161 for thislib in $libswanted; do
5162         for thisdir in $libspath; do
5163             xxx=''
5164             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
5165                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
5166                 $test -f "$xxx" && eval $libscheck
5167                 $test -f "$xxx" && libstyle=shared
5168             fi
5169             if test ! -f "$xxx"; then
5170                 xxx=$thisdir/lib$thislib.$so
5171                 $test -f "$xxx" && eval $libscheck
5172                 $test -f "$xxx" && libstyle=shared
5173             fi
5174             if test ! -f "$xxx"; then
5175                 xxx=$thisdir/lib$thislib$_a
5176                 $test -f "$xxx" && eval $libscheck
5177                 $test -f "$xxx" && libstyle=static
5178             fi
5179             if test ! -f "$xxx"; then
5180                 xxx=$thisdir/$thislib$_a
5181                 $test -f "$xxx" && eval $libscheck
5182                 $test -f "$xxx" && libstyle=static
5183             fi
5184             if test ! -f "$xxx"; then
5185                 xxx=$thisdir/lib${thislib}_s$_a
5186                 $test -f "$xxx" && eval $libscheck
5187                 $test -f "$xxx" && libstyle=static
5188                 $test -f "$xxx" && thislib=${thislib}_s
5189             fi
5190             if test ! -f "$xxx"; then
5191                 xxx=$thisdir/Slib$thislib$_a
5192                 $test -f "$xxx" && eval $libscheck
5193                 $test -f "$xxx" && libstyle=static
5194             fi
5195             if $test -f "$xxx"; then
5196                 case "$libstyle" in
5197                 shared) echo "Found -l$thislib (shared)." ;;
5198                 static) echo "Found -l$thislib." ;;
5199                 *)      echo "Found -l$thislib ($libstyle)." ;;
5200                 esac
5201                 case " $dflt " in
5202                 *"-l$thislib "*);;
5203                 *) dflt="$dflt -l$thislib"
5204                    libsfound="$libsfound $xxx"
5205                    yyy=`basename $xxx`
5206                    libsfiles="$libsfiles $yyy"
5207                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
5208                    case " $libsdirs " in
5209                    *" $yyy "*) ;;
5210                    *) libsdirs="$libsdirs $yyy" ;;
5211                    esac
5212                    ;;
5213                 esac
5214                 break
5215             fi
5216         done
5217         if $test ! -f "$xxx"; then
5218             echo "No -l$thislib."
5219         fi
5220 done
5221 set X $dflt
5222 shift
5223 dflt="$*"
5224 case "$libs" in
5225 '') dflt="$dflt";;
5226 *) dflt="$libs";;
5227 esac
5228 case "$dflt" in
5229 ' '|'') dflt='none';;
5230 esac
5231
5232 $cat <<EOM
5233
5234 In order to compile $package on your machine, a number of libraries
5235 are usually needed.  Include any other special libraries here as well.
5236 Say "none" for none.  The default list is almost always right.
5237 EOM
5238
5239 echo " "
5240 rp="What libraries to use?"
5241 . ./myread
5242 case "$ans" in
5243 none) libs=' ';;
5244 *) libs="$ans";;
5245 esac
5246
5247 : determine optimization, if desired, or use for debug flag also
5248 case "$optimize" in
5249 ' '|$undef) dflt='none';;
5250 '') dflt='-O';;
5251 *) dflt="$optimize";;
5252 esac
5253 $cat <<EOH
5254
5255 By default, $package compiles with the -O flag to use the optimizer.
5256 Alternately, you might want to use the symbolic debugger, which uses
5257 the -g flag (on traditional Unix systems).  Either flag can be
5258 specified here.  To use neither flag, specify the word "none".
5259
5260 EOH
5261 rp="What optimizer/debugger flag should be used?"
5262 . ./myread
5263 optimize="$ans"
5264 case "$optimize" in
5265 'none') optimize=" ";;
5266 esac
5267
5268 : Check what DEBUGGING is required from the command line
5269 : -DEBUGGING      or -DDEBUGGING or
5270 : -DEBUGGING=both                       = -g + -DDEBUGGING
5271 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5272 : -DEBUGGING=none or -UDEBUGGING        =
5273 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5274 case "$EBUGGING" in
5275 '')     ;;
5276 *)      DEBUGGING=$EBUGGING ;;
5277 esac
5278
5279 case "$DEBUGGING" in
5280 -g|both|$define)
5281     case "$optimize" in
5282         *-g*) ;;
5283         *)    optimize="$optimize -g" ;;
5284     esac ;;
5285 none|$undef)
5286     case "$optimize" in
5287         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5288                 shift
5289                 optimize="$*"
5290                 ;;
5291     esac ;;
5292 esac
5293
5294 dflt=''
5295 case "$DEBUGGING" in
5296 both|$define) dflt='-DDEBUGGING'
5297 esac
5298
5299 : argument order is deliberate, as the flag will start with - which set could
5300 : think is an option
5301 checkccflag='check=$1; flag=$2; callback=$3;
5302 echo " ";
5303 echo "Checking if your compiler accepts $flag" 2>&1;
5304 [ "X$sysroot" != "X" ] && echo "For sysroot = $sysroot";
5305 echo "int main(void) { return 0; }" > gcctest.c;
5306 if $cc $_sysroot -O2 $flag -o gcctest gcctest.c 2>gcctest.out && $run ./gcctest; then
5307     echo "Yes, it does." 2>&1;
5308     if $test -s gcctest.out ; then
5309         echo "But your platform does not like it:";
5310         cat gcctest.out;
5311     else
5312         case "$ccflags" in
5313         *$check*)
5314             echo "Leaving current flags $ccflags alone." 2>&1
5315             ;;
5316         *) dflt="$dflt $flag";
5317             eval $callback
5318             ;;
5319         esac
5320     fi
5321 else
5322     echo "Nope, it does not, but that is ok." 2>&1;
5323 fi
5324 '
5325
5326 : We will not override a previous value, but we might want to
5327 : augment a hint file
5328 case "$hint" in
5329 default|recommended)
5330         case "$gccversion" in
5331         1*) dflt="$dflt -fpcc-struct-return" ;;
5332         esac
5333         case "$optimize:$DEBUGGING" in
5334         *-g*:old) dflt="$dflt -DDEBUGGING";;
5335         esac
5336         case "$gccversion" in
5337         2*) if $test -d /etc/conf/kconfig.d &&
5338                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5339                 then
5340                         # Interactive Systems (ISC) POSIX mode.
5341                         dflt="$dflt -posix"
5342                 fi
5343                 ;;
5344         esac
5345         case "$gccversion" in
5346         1*) ;;
5347         2.[0-8]*) ;;
5348         ?*)     set strict-aliasing -fno-strict-aliasing
5349                 eval $checkccflag
5350                 ;;
5351         esac
5352         # For gcc, adding -pipe speeds up compilations for some, but apparently
5353         # some assemblers can't read from stdin.  (It also slows down compilations
5354         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5355         case "$gccversion" in
5356         ?*)     set pipe -pipe
5357                 eval $checkccflag
5358                 ;;
5359         esac
5360
5361         # on x86_64 (at least) we require an extra library (libssp) in the
5362         # link command line. This library is not named, so I infer that it is
5363         # an implementation detail that may change. Hence the safest approach
5364         # is to add the flag to the flags passed to the compiler at link time,
5365         # as that way the compiler can do the right implementation dependant
5366         # thing. (NWC)
5367         case "$gccversion" in
5368         ?*)     set stack-protector -fstack-protector
5369                 eval $checkccflag
5370                 ;;
5371         esac
5372         ;;
5373 esac
5374
5375 case "$mips_type" in
5376 *BSD*|'') inclwanted="$locincpth $usrinc";;
5377 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5378 esac
5379 for thisincl in $inclwanted; do
5380         if $test -d $thisincl; then
5381                 if $test x$thisincl != x$usrinc; then
5382                         case "$dflt" in
5383                         *" -I$thisincl "*);;
5384                         *) dflt="$dflt -I$thisincl ";;
5385                         esac
5386                 fi
5387         fi
5388 done
5389
5390 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5391         xxx=true;
5392 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5393         xxx=true;
5394 else
5395         xxx=false;
5396 fi;
5397 if $xxx; then
5398         case "$dflt" in
5399         *$2*);;
5400         *) dflt="$dflt -D$2";;
5401         esac;
5402 fi'
5403
5404 set signal.h LANGUAGE_C; eval $inctest
5405
5406 case "$usesocks" in
5407 $define)
5408         ccflags="$ccflags -DSOCKS"
5409         ;;
5410 esac
5411
5412 case "$hint" in
5413 default|recommended) dflt="$ccflags $dflt" ;;
5414 *) dflt="$ccflags";;
5415 esac
5416
5417 case "$dflt" in
5418 ''|' ') dflt=none;;
5419 esac
5420
5421 $cat <<EOH
5422
5423 Your C compiler may want other flags.  For this question you should include
5424 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5425 but you should NOT include libraries or ld flags like -lwhatever.  If you
5426 want $package to honor its debug switch, you should include -DDEBUGGING here.
5427 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5428
5429 To use no flags, specify the word "none".
5430
5431 EOH
5432 set X $dflt
5433 shift
5434 dflt=${1+"$@"}
5435 rp="Any additional cc flags?"
5436 . ./myread
5437 case "$ans" in
5438 none) ccflags='';;
5439 *) ccflags="$ans";;
5440 esac
5441
5442 : the following weeds options from ccflags that are of no interest to cpp
5443 case "$cppflags" in
5444 '') cppflags="$ccflags" ;;
5445 *)  cppflags="$cppflags $ccflags" ;;
5446 esac
5447 case "$gccversion" in
5448 1*) cppflags="$cppflags -D__GNUC__"
5449 esac
5450 case "$mips_type" in
5451 '');;
5452 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5453 esac
5454 case "$cppflags" in
5455 '');;
5456 *)
5457         echo " "
5458         echo "Let me guess what the preprocessor flags are..." >&4
5459         set X $cppflags
5460         shift
5461         cppflags=''
5462         $cat >cpp.c <<'EOM'
5463 #define BLURFL foo
5464
5465 BLURFL xx LFRULB
5466 EOM
5467         previous=''
5468         for flag in $*
5469         do
5470                 case "$flag" in
5471                 -*) ftry="$flag";;
5472                 *) ftry="$previous $flag";;
5473                 esac
5474                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5475                         >cpp1.out 2>/dev/null && \
5476                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5477                         >cpp2.out 2>/dev/null && \
5478                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5479                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5480                 then
5481                         cppflags="$cppflags $ftry"
5482                         previous=''
5483                 else
5484                         previous="$flag"
5485                 fi
5486         done
5487         set X $cppflags
5488         shift
5489         cppflags=${1+"$@"}
5490         case "$cppflags" in
5491         *-*)  echo "They appear to be: $cppflags";;
5492         esac
5493         $rm -f cpp.c cpp?.out
5494         ;;
5495 esac
5496
5497 : flags used in final linking phase
5498 case "$ldflags" in
5499 '') if ./venix; then
5500                 dflt='-i -z'
5501         else
5502                 dflt=''
5503         fi
5504         case "$ccflags" in
5505         *-posix*) dflt="$dflt -posix" ;;
5506         esac
5507         ;;
5508 *) dflt="$ldflags";;
5509 esac
5510 # See note above about -fstack-protector
5511 case "$ccflags" in
5512 *-fstack-protector*)
5513         case "$dflt" in
5514         *-fstack-protector*) ;; # Don't add it again
5515         *) dflt="$dflt -fstack-protector" ;;
5516         esac
5517         ;;
5518 esac
5519
5520 : Try to guess additional flags to pick up local libraries.
5521 for thislibdir in $libpth; do
5522         case " $loclibpth " in
5523         *" $thislibdir "*)
5524                 case "$dflt " in
5525                 *"-L$thislibdir "*) ;;
5526                 *)  dflt="$dflt -L$thislibdir" ;;
5527                 esac
5528                 ;;
5529         esac
5530 done
5531
5532 case "$dflt" in
5533 '') dflt='none' ;;
5534 esac
5535
5536 $cat <<EOH
5537
5538 Your C linker may need flags.  For this question you should
5539 include -L/whatever and any other flags used by the C linker, but you
5540 should NOT include libraries like -lwhatever.
5541
5542 Make sure you include the appropriate -L/path flags if your C linker
5543 does not normally search all of the directories you specified above,
5544 namely
5545         $libpth
5546 To use no flags, specify the word "none".
5547
5548 EOH
5549
5550 rp="Any additional ld flags (NOT including libraries)?"
5551 . ./myread
5552 case "$ans" in
5553 none) ldflags='';;
5554 *) ldflags="$ans";;
5555 esac
5556 rmlist="$rmlist pdp11"
5557
5558 : coherency check
5559 echo " "
5560 echo "Checking your choice of C compiler and flags for coherency..." >&4
5561 $cat > try.c <<'EOF'
5562 #include <stdio.h>
5563 int main() { printf("Ok\n"); return(0); }
5564 EOF
5565 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5566 shift
5567 $cat >try.msg <<'EOM'
5568 I've tried to compile and run the following simple program:
5569
5570 EOM
5571 $cat try.c >> try.msg
5572
5573 $cat >> try.msg <<EOM
5574
5575 I used the command:
5576
5577         $*
5578         $run ./try
5579
5580 and I got the following output:
5581
5582 EOM
5583 dflt=y
5584 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5585         if $sh -c "$run ./try " >>try.msg 2>&1; then
5586                 xxx=`$run ./try`
5587                 case "$xxx" in
5588                 "Ok") dflt=n ;;
5589                 *)    echo 'The program compiled OK, but produced no output.' >> try.msg ;;
5590                 esac
5591         else
5592                 echo "The program compiled OK, but exited with status $?." >>try.msg
5593                 rp="You have a problem.  Shall I abort Configure"
5594                 dflt=y
5595         fi
5596 else
5597         echo "I can't compile the test program." >>try.msg
5598         rp="You have a BIG problem.  Shall I abort Configure"
5599         dflt=y
5600 fi
5601 case "$dflt" in
5602 y)
5603         $cat try.msg >&4
5604         case "$knowitall" in
5605         '')
5606                 echo "(The supplied flags or libraries might be incorrect.)"
5607                 ;;
5608         *) dflt=n;;
5609         esac
5610         echo " "
5611         . ./myread
5612         case "$ans" in
5613         n*|N*) ;;
5614         *)      echo "Ok.  Stopping Configure." >&4
5615                 exit 1
5616                 ;;
5617         esac
5618         ;;
5619 n) echo "OK, that should do.";;
5620 esac
5621 $rm_try gcctest gcctest.out
5622
5623 : define a shorthand compile call
5624 compile='
5625 mc_file=$1;
5626 shift;
5627 case "$usedevel" in $define|true|[yY]*) if $test ! -f "${mc_file}.c"; then
5628 echo "Internal Configure script bug - compiler test file ${mc_file}.c is missing. Please report this to perlbug@perl.org" >&4;
5629 exit 1;
5630 fi;
5631 esac;
5632 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5633 : define a shorthand compile call for compilations that should be ok.
5634 compile_ok='
5635 mc_file=$1;
5636 shift;
5637 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5638
5639 : determine filename position in cpp output
5640 echo " "
5641 echo "Computing filename position in cpp output for #include directives..." >&4
5642 case "$osname" in
5643 vos) testaccess=-e ;;
5644 *)   testaccess=-r ;;
5645 esac
5646 echo '#include <stdio.h>' > foo.c
5647 $cat >fieldn <<EOF
5648 $startsh
5649 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5650 $grep '^[       ]*#.*stdio\.h' | \
5651 while read cline; do
5652         pos=1
5653         set \$cline
5654         while $test \$# -gt 0; do
5655                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5656                         echo "\$pos"
5657                         exit 0
5658                 fi
5659                 shift
5660                 pos=\`expr \$pos + 1\`
5661         done
5662 done
5663 EOF
5664 chmod +x fieldn
5665 fieldn=`./fieldn`
5666 $rm -f foo.c fieldn
5667 case $fieldn in
5668 '') pos='???';;
5669 1) pos=first;;
5670 2) pos=second;;
5671 3) pos=third;;
5672 *) pos="${fieldn}th";;
5673 esac
5674 echo "Your cpp writes the filename in the $pos field of the line."
5675
5676 : locate header file
5677 $cat >findhdr <<EOF
5678 $startsh
5679 wanted=\$1
5680 name=''
5681 for usrincdir in $incpth
5682 do
5683         if test -f \$usrincdir/\$wanted; then
5684                 echo "\$usrincdir/\$wanted"
5685                 exit 0
5686         fi
5687 done
5688 awkprg='{ print \$$fieldn }'
5689 echo "#include <\$wanted>" > foo\$\$.c
5690 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5691 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5692 while read cline; do
5693         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5694         case "\$name" in
5695         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5696         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5697         *) exit 2;;
5698         esac;
5699 done;
5700 #
5701 # status = 0: grep returned 0 lines, case statement not executed
5702 # status = 1: headerfile found
5703 # status = 2: while loop executed, no headerfile found
5704 #
5705 status=\$?
5706 $rm -f foo\$\$.c;
5707 if test \$status -eq 1; then
5708         exit 0;
5709 fi
5710 exit 1
5711 EOF
5712 chmod +x findhdr
5713
5714 : define an alternate in-header-list? function
5715 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5716 cont=true; xxf="echo \"<\$1> found.\" >&4";
5717 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5718 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5719 esac;
5720 case $# in 4) instead=instead;; *) instead="at last";; esac;
5721 while $test "$cont"; do
5722         xxx=`./findhdr $1`
5723         var=$2; eval "was=\$$2";
5724         if $test "$xxx" && $test -r "$xxx";
5725         then eval $xxf;
5726         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5727                 cont="";
5728         else eval $xxnf;
5729         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5730         set $yyy; shift; shift; yyy=$@;
5731         case $# in 0) cont="";;
5732         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5733                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5734         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5735                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5736         esac;
5737 done;
5738 while $test "$yyy";
5739 do set $yyy; var=$2; eval "was=\$$2";
5740         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5741         set $yyy; shift; shift; yyy=$@;
5742 done'
5743
5744 : see if stdlib is available
5745 set stdlib.h i_stdlib
5746 eval $inhdr
5747
5748 : check for lengths of integral types
5749 echo " "
5750 case "$intsize" in
5751 '')
5752         echo "Checking to see how big your integers are..." >&4
5753         $cat >try.c <<EOCP
5754 #include <stdio.h>
5755 #$i_stdlib I_STDLIB
5756 #ifdef I_STDLIB
5757 #include <stdlib.h>
5758 #endif
5759 int main()
5760 {
5761         printf("intsize=%d;\n", (int)sizeof(int));
5762         printf("longsize=%d;\n", (int)sizeof(long));
5763         printf("shortsize=%d;\n", (int)sizeof(short));
5764         exit(0);
5765 }
5766 EOCP
5767         set try
5768         if eval $compile_ok && $run ./try > /dev/null; then
5769                 eval `$run ./try`
5770                 echo "Your integers are $intsize bytes long."
5771                 echo "Your long integers are $longsize bytes long."
5772                 echo "Your short integers are $shortsize bytes long."
5773         else
5774                 $cat >&4 <<EOM
5775 !
5776 Help! I can't compile and run the intsize test program: please enlighten me!
5777 (This is probably a misconfiguration in your system or libraries, and
5778 you really ought to fix it.  Still, I'll try anyway.)
5779 !
5780 EOM
5781                 dflt=4
5782                 rp="What is the size of an integer (in bytes)?"
5783                 . ./myread
5784                 intsize="$ans"
5785                 dflt=$intsize
5786                 rp="What is the size of a long integer (in bytes)?"
5787                 . ./myread
5788                 longsize="$ans"
5789                 dflt=2
5790                 rp="What is the size of a short integer (in bytes)?"
5791                 . ./myread
5792                 shortsize="$ans"
5793         fi
5794         ;;
5795 esac
5796 $rm_try
5797
5798 : check for long long
5799 echo " "
5800 echo "Checking to see if you have long long..." >&4
5801 echo 'int main() { long long x = 7; return 0; }' > try.c
5802 set try
5803 if eval $compile; then
5804         val="$define"
5805         echo "You have long long."
5806 else
5807         val="$undef"
5808         echo "You do not have long long."
5809 fi
5810 $rm_try
5811 set d_longlong
5812 eval $setvar
5813
5814 : check for length of long long
5815 case "${d_longlong}${longlongsize}" in
5816 $define)
5817         echo " "
5818         echo "Checking to see how big your long longs are..." >&4
5819         $cat >try.c <<'EOCP'
5820 #include <stdio.h>
5821 int main()
5822 {
5823     printf("%d\n", (int)sizeof(long long));
5824     return(0);
5825 }
5826 EOCP
5827         set try
5828         if eval $compile_ok; then
5829                 longlongsize=`$run ./try`
5830                 echo "Your long longs are $longlongsize bytes long."
5831         else
5832                 dflt='8'
5833                 echo " "
5834                 echo "(I can't seem to compile the test program.  Guessing...)"
5835                 rp="What is the size of a long long (in bytes)?"
5836                 . ./myread
5837                 longlongsize="$ans"
5838         fi
5839         if $test "X$longsize" = "X$longlongsize"; then
5840                 echo "(That isn't any different from an ordinary long.)"
5841         fi
5842         ;;
5843 esac
5844 $rm_try
5845
5846 : see if inttypes.h is available
5847 : we want a real compile instead of Inhdr because some systems
5848 : have an inttypes.h which includes non-existent headers
5849 echo " "
5850 $cat >try.c <<EOCP
5851 #include <inttypes.h>
5852 int main() {
5853         static int32_t foo32 = 0x12345678;
5854 }
5855 EOCP
5856 set try
5857 if eval $compile; then
5858         echo "<inttypes.h> found." >&4
5859         val="$define"
5860 else
5861         echo "<inttypes.h> NOT found." >&4
5862         val="$undef"
5863 fi
5864 $rm_try
5865 set i_inttypes
5866 eval $setvar
5867
5868 : check for int64_t
5869 echo " "
5870 echo "Checking to see if you have int64_t..." >&4
5871 $cat >try.c <<EOCP
5872 #include <sys/types.h>
5873 #$i_inttypes I_INTTYPES
5874 #ifdef I_INTTYPES
5875 #include <inttypes.h>
5876 #endif
5877 int main() { int64_t x = 7; }
5878 EOCP
5879 set try
5880 if eval $compile; then
5881         val="$define"
5882         echo "You have int64_t."
5883 else
5884         val="$undef"
5885         echo "You do not have int64_t."
5886 fi
5887 $rm_try
5888 set d_int64_t
5889 eval $setvar
5890
5891 : Check if 64bit ints have a quad type
5892 echo " "
5893 echo "Checking which 64-bit integer type we could use..." >&4
5894
5895 case "$intsize" in
5896 8) val=int
5897    set quadtype
5898    eval $setvar
5899    val='"unsigned int"'
5900    set uquadtype
5901    eval $setvar
5902    quadkind=1
5903    ;;
5904 *) case "$longsize" in
5905    8) val=long
5906       set quadtype
5907       eval $setvar
5908       val='"unsigned long"'
5909       set uquadtype
5910       eval $setvar
5911       quadkind=2
5912       ;;
5913    *) case "$d_longlong:$longlongsize" in
5914       define:8)
5915         val='"long long"'
5916         set quadtype
5917         eval $setvar
5918         val='"unsigned long long"'
5919         set uquadtype
5920         eval $setvar
5921         quadkind=3
5922         ;;
5923       *) case "$d_int64_t" in
5924          define)
5925            val=int64_t
5926            set quadtype
5927            eval $setvar
5928            val=uint64_t
5929            set uquadtype
5930            eval $setvar
5931            quadkind=4
5932            ;;
5933          esac
5934          ;;
5935       esac
5936       ;;
5937    esac
5938    ;;
5939 esac
5940
5941 case "$quadtype" in
5942 '')     echo "Alas, no 64-bit integer types in sight." >&4
5943         d_quad="$undef"
5944         ;;
5945 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5946         d_quad="$define"
5947         ;;
5948 esac
5949
5950 : Do we want 64bit support
5951 case "$uselonglong" in
5952 "$define"|true|[yY]*)
5953         cat <<EOM >&4
5954
5955 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5956 EOM
5957         use64bitint="$define"
5958         ;;
5959 esac
5960 case "$use64bits" in
5961 "$define"|true|[yY]*)
5962         cat <<EOM >&4
5963
5964 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5965 EOM
5966         use64bitint="$define"
5967         ;;
5968 esac
5969 case "$use64bitints" in
5970 "$define"|true|[yY]*)
5971         cat <<EOM >&4
5972
5973 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5974 EOM
5975         use64bitint="$define"
5976         ;;
5977 esac
5978 case "$use64bitsint" in
5979 "$define"|true|[yY]*)
5980         cat <<EOM >&4
5981
5982 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5983 EOM
5984         use64bitint="$define"
5985         ;;
5986 esac
5987 case "$uselonglongs" in
5988 "$define"|true|[yY]*)
5989         cat <<EOM >&4
5990
5991 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5992 EOM
5993         use64bitint="$define"
5994         ;;
5995 esac
5996 case "$use64bitsall" in
5997 "$define"|true|[yY]*)
5998         cat <<EOM >&4
5999
6000 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
6001 EOM
6002         use64bitall="$define"
6003         ;;
6004 esac
6005
6006 case "$ccflags" in
6007 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
6008 esac
6009 case "$use64bitall" in
6010 "$define"|true|[yY]*) use64bitint="$define" ;;
6011 esac
6012
6013 case "$longsize" in
6014 8) cat <<EOM
6015
6016 You have natively 64-bit long integers.
6017 EOM
6018    val="$define"
6019    ;;
6020 *) case "$use64bitint" in
6021    "$define"|true|[yY]*) dflt='y';;
6022    *) dflt='n';;
6023    esac
6024    case "$d_quad" in
6025    "$define") ;;
6026    *) dflt='n' ;;
6027    esac
6028    cat <<EOM
6029
6030 Perl can be built to take advantage of 64-bit integer types
6031 on some systems.  To do so, Configure can be run with -Duse64bitint.
6032 Choosing this option will most probably introduce binary incompatibilities.
6033
6034 If this doesn't make any sense to you, just accept the default '$dflt'.
6035 (The default has been chosen based on your configuration.)
6036 EOM
6037    rp='Try to use 64-bit integers, if available?'
6038    . ./myread
6039    case "$ans" in
6040    [yY]*) val="$define" ;;
6041    *)     val="$undef"  ;;
6042    esac
6043    ;;
6044 esac
6045 set use64bitint
6046 eval $setvar
6047
6048 case "$use64bitall" in
6049 "$define"|true|[yY]*) dflt='y' ;;
6050 *) case "$longsize" in
6051    8) dflt='y' ;;
6052    *) dflt='n' ;;
6053    esac
6054    ;;
6055 esac
6056 cat <<EOM
6057
6058 You may also choose to try maximal 64-bitness.  It means using as much
6059 64-bitness as possible on the platform.  This in turn means even more
6060 binary incompatibilities.  On the other hand, your platform may not
6061 have any more 64-bitness available than what you already have chosen.
6062
6063 If this doesn't make any sense to you, just accept the default '$dflt'.
6064 (The default has been chosen based on your configuration.)
6065 EOM
6066 rp='Try to use maximal 64-bit support, if available?'
6067 . ./myread
6068 case "$ans" in
6069 [yY]*) val="$define" ;;
6070 *)     val="$undef"  ;;
6071 esac
6072 set use64bitall
6073 eval $setvar
6074 case "$use64bitall" in
6075 "$define")
6076         case "$use64bitint" in
6077         "$undef")
6078                 cat <<EOM
6079
6080 Since you have chosen a maximally 64-bit build, I'm also turning on
6081 the use of 64-bit integers.
6082 EOM
6083                 use64bitint="$define" ;;
6084         esac
6085         ;;
6086 esac
6087
6088 : Look for a hint-file generated 'call-back-unit'.  If the
6089 : user has specified that a 64-bit perl is to be built,
6090 : we may need to set or change some other defaults.
6091 if $test -f use64bitint.cbu; then
6092         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
6093         . ./use64bitint.cbu
6094 fi
6095 case "$use64bitint" in
6096 "$define"|true|[yY]*)
6097         : This test was common to all the OpenBSD forks, and seems harmless for
6098         : other platforms:
6099         echo " "
6100         echo "Checking if your C library has broken 64-bit functions..." >&4
6101         cat >try.c <<EOCP
6102 #include <stdio.h>
6103 typedef $uquadtype myULL;
6104 int main (void)
6105 {
6106     struct {
6107         double d;
6108         myULL  u;
6109     } *p, test[] = {
6110         {4294967303.15, 4294967303ULL},
6111         {4294967294.2,  4294967294ULL},
6112         {4294967295.7,  4294967295ULL},
6113         {0.0, 0ULL}
6114     };
6115     for (p = test; p->u; p++) {
6116         myULL x = (myULL)p->d;
6117         if (x != p->u) {
6118             printf("buggy\n");
6119             return 0;
6120         }
6121     }
6122     printf("ok\n");
6123     return 0;
6124 }
6125 EOCP
6126         set try
6127         if eval $compile_ok; then
6128             libcquad=`$run ./try`
6129             echo "Your C library's 64-bit functions are $libcquad."
6130         else
6131             echo "(I can't seem to compile the test program.)"
6132             echo "Assuming that your C library's 64-bit functions are ok."
6133             libcquad="ok"
6134         fi
6135         $rm_try
6136
6137         case "$libcquad" in
6138             buggy*)
6139                 cat >&4 <<EOM
6140
6141 *** You have a C library with broken 64-bit functions.
6142 *** 64-bit support does not work reliably in this configuration.
6143 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
6144 *** Cannot continue, aborting.
6145
6146 EOM
6147                 exit 1
6148                 ;;
6149         esac
6150         case "$longsize" in
6151         4) case "$archname64" in
6152            '') archname64=64int ;;
6153            esac
6154            ;;
6155         esac
6156         ;;
6157 esac
6158
6159 : Look for a hint-file generated 'call-back-unit'.  If the
6160 : user has specified that a maximally 64-bit perl is to be built,
6161 : we may need to set or change some other defaults.
6162 if $test -f use64bitall.cbu; then
6163         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
6164         . ./use64bitall.cbu
6165 fi
6166 case "$use64bitall" in
6167 "$define"|true|[yY]*)
6168         case "$longsize" in
6169         4) case "$archname64" in
6170            ''|64int) archname64=64all ;;
6171            esac
6172            ;;
6173         esac
6174         ;;
6175 esac
6176
6177 case "$d_quad:$use64bitint" in
6178 $undef:$define)
6179         cat >&4 <<EOF
6180
6181 *** You have chosen to use 64-bit integers,
6182 *** but none can be found.
6183 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
6184 *** Cannot continue, aborting.
6185
6186 EOF
6187         exit 1
6188         ;;
6189 esac
6190
6191 : check for length of double
6192 echo " "
6193 case "$doublesize" in
6194 '')
6195         echo "Checking to see how big your double precision numbers are..." >&4
6196         $cat >try.c <<EOCP
6197 #include <stdio.h>
6198 #$i_stdlib I_STDLIB
6199 #ifdef I_STDLIB
6200 #include <stdlib.h>
6201 #endif
6202 int main()
6203 {
6204     printf("%d\n", (int)sizeof(double));
6205     exit(0);
6206 }
6207 EOCP
6208         set try
6209         if eval $compile_ok; then
6210                 doublesize=`$run ./try`
6211                 echo "Your double is $doublesize bytes long."
6212         else
6213                 dflt='8'
6214                 echo "(I can't seem to compile the test program.  Guessing...)"
6215                 rp="What is the size of a double precision number (in bytes)?"
6216                 . ./myread
6217                 doublesize="$ans"
6218         fi
6219         ;;
6220 esac
6221 $rm_try
6222
6223 : check for long doubles
6224 echo " "
6225 echo "Checking to see if you have long double..." >&4
6226 echo 'int main() { long double x = 7.0; }' > try.c
6227 set try
6228 if eval $compile; then
6229         val="$define"
6230         echo "You have long double."
6231 else
6232         val="$undef"
6233         echo "You do not have long double."
6234 fi
6235 $rm_try
6236 set d_longdbl
6237 eval $setvar
6238
6239 : check for length of long double
6240 case "${d_longdbl}${longdblsize}" in
6241 $define)
6242         echo " "
6243         echo "Checking to see how big your long doubles are..." >&4
6244         $cat >try.c <<'EOCP'
6245 #include <stdio.h>
6246 int main()
6247 {
6248         printf("%d\n", sizeof(long double));
6249 }
6250 EOCP
6251         set try
6252         set try
6253         if eval $compile; then
6254                 longdblsize=`$run ./try`
6255                 echo "Your long doubles are $longdblsize bytes long."
6256         else
6257                 dflt='8'
6258                 echo " "
6259                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6260                 rp="What is the size of a long double (in bytes)?"
6261                 . ./myread
6262                 longdblsize="$ans"
6263         fi
6264         if $test "X$doublesize" = "X$longdblsize"; then
6265                 echo "That isn't any different from an ordinary double."
6266                 echo "I'll keep your setting anyway, but you may see some"
6267                 echo "harmless compilation warnings."
6268         fi
6269         ;;
6270 esac
6271 $rm_try
6272
6273 : determine the architecture name
6274 echo " "
6275 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6276         tarch=`arch`"-$osname"
6277 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6278         if uname -m > tmparch 2>&1 ; then
6279                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6280                         -e 's/$/'"-$osname/" tmparch`
6281         else
6282                 tarch="$osname"
6283         fi
6284         $rm -f tmparch
6285 else
6286         tarch="$osname"
6287 fi
6288 case "$myarchname" in
6289 ''|"$tarch") ;;
6290 *)
6291         echo "(Your architecture name used to be $myarchname.)"
6292         archname=''
6293         ;;
6294 esac
6295 case "$targetarch" in
6296 '') ;;
6297 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6298 esac
6299 myarchname="$tarch"
6300 case "$archname" in
6301 '') dflt="$tarch";;
6302 *) dflt="$archname";;
6303 esac
6304 rp='What is your architecture name'
6305 . ./myread
6306 archname="$ans"
6307
6308 : optionally add API version to the architecture for versioned archlibs
6309 case "$useversionedarchname" in
6310 $define|true|[yY]*) dflt='y';;
6311 *)                  dflt='n';;
6312 esac
6313 rp='Add the Perl API version to your archname?'
6314 . ./myread
6315 case "$ans" in
6316 y|Y)    useversionedarchname="$define" ;;
6317 *)      useversionedarchname="$undef" ;;
6318 esac
6319 case "$useversionedarchname" in
6320 $define)
6321         case "$archname" in
6322         *-$api_versionstring)
6323                 echo "...and architecture name already has -$api_versionstring" >&4
6324                 ;;
6325         *)
6326                 archname="$archname-$api_versionstring"
6327                 echo "...setting architecture name to $archname." >&4
6328                 ;;
6329         esac
6330         ;;
6331 esac
6332
6333 case "$usethreads" in
6334 $define)
6335         echo "Threads selected." >&4
6336         case "$archname" in
6337         *-thread*) echo "...and architecture name already has -thread." >&4
6338                 ;;
6339         *)      archname="$archname-thread"
6340                 echo "...setting architecture name to $archname." >&4
6341                 ;;
6342         esac
6343         ;;
6344 esac
6345 case "$usemultiplicity" in
6346 $define)
6347         echo "Multiplicity selected." >&4
6348         case "$archname" in
6349         *-multi*) echo "...and architecture name already has -multi." >&4
6350                 ;;
6351         *)      archname="$archname-multi"
6352                 echo "...setting architecture name to $archname." >&4
6353                 ;;
6354         esac
6355         ;;
6356 esac
6357 case "$use64bitint$use64bitall" in
6358 *"$define"*)
6359         case "$archname64" in
6360         '')
6361                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6362                 ;;
6363         *)
6364                 case "$use64bitint" in
6365                 "$define") echo "64 bit integers selected." >&4 ;;
6366                 esac
6367                 case "$use64bitall" in
6368                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6369                 esac
6370                 case "$archname" in
6371                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6372                         ;;
6373                 *)      archname="$archname-$archname64"
6374                         echo "...setting architecture name to $archname." >&4
6375                         ;;
6376                 esac
6377                 ;;
6378         esac
6379 esac
6380 case "$uselongdouble" in
6381 $define)
6382         echo "Long doubles selected." >&4
6383         case "$longdblsize" in
6384         $doublesize)
6385                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6386                 ;;
6387         *)
6388                 case "$archname" in
6389                 *-ld*) echo "...and architecture name already has -ld." >&4
6390                         ;;
6391                 *)      archname="$archname-ld"
6392                         echo "...setting architecture name to $archname." >&4
6393                         ;;
6394                 esac
6395                 ;;
6396         esac
6397         ;;
6398 esac
6399 if $test -f archname.cbu; then
6400         echo "Your platform has some specific hints for architecture name, using them..."
6401         . ./archname.cbu
6402 fi
6403
6404 : set the prefixit variable, to compute a suitable default value
6405 prefixit='case "$3" in
6406 ""|none)
6407         case "$oldprefix" in
6408         "") eval "$1=\"\$$2\"";;
6409         *)
6410                 case "$3" in
6411                 "") eval "$1=";;
6412                 none)
6413                         eval "tp=\"\$$2\"";
6414                         case "$tp" in
6415                         ""|" ") eval "$1=\"\$$2\"";;
6416                         *) eval "$1=";;
6417                         esac;;
6418                 esac;;
6419         esac;;
6420 *)
6421         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6422         case "$tp" in
6423         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6424         /*-$oldprefix/*|\~*-$oldprefix/*)
6425                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6426         *) eval "$1=\"\$$2\"";;
6427         esac;;
6428 esac'
6429
6430 : determine installation style
6431 : For now, try to deduce it from prefix unless it is already set.
6432 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6433 case "$installstyle" in
6434 '')     case "$prefix" in
6435                 *perl*) dflt='lib';;
6436                 *) dflt='lib/perl5' ;;
6437         esac
6438         ;;
6439 *)      dflt="$installstyle" ;;
6440 esac
6441 : Probably not worth prompting for this since we prompt for all
6442 : the directories individually, and the prompt would be too long and
6443 : confusing anyway.
6444 installstyle=$dflt
6445
6446 : determine where public executables go
6447 echo " "
6448 set dflt bin bin
6449 eval $prefixit
6450 fn=d~
6451 rp='Pathname where the public executables will reside?'
6452 . ./getfile
6453 if $test "X$ansexp" != "X$binexp"; then
6454         installbin=''
6455 fi
6456 prefixvar=bin
6457 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6458 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6459 :     this via initialinstalllocation
6460 . ./setprefixvar
6461
6462 case "$userelocatableinc" in
6463 $define|true|[yY]*)     dflt='y' ;;
6464 *)                      dflt='n' ;;
6465 esac
6466 cat <<EOM
6467
6468 Would you like to build Perl so that the installation is relocatable, so that
6469 library paths in @INC are determined relative to the path of the perl binary?
6470 This is not advised for system Perl installs, or if you need to run setid
6471 scripts or scripts under taint mode.
6472
6473 If this doesn't make any sense to you, just accept the default '$dflt'.
6474 EOM
6475 rp='Use relocatable @INC?'
6476 . ./myread
6477 case "$ans" in
6478 y|Y)    val="$define" ;;
6479 *)      val="$undef"  ;;
6480 esac
6481 set userelocatableinc
6482 eval $setvar
6483
6484 initialinstalllocation="$binexp"
6485 : Default prefix is now "up one level from where the binaries are"
6486 case "$userelocatableinc" in
6487 $define|true|[yY]*)
6488     bin=".../"
6489     binexp=".../"
6490     prefix=".../.."
6491     prefixexp=".../.."
6492     installprefixexp=".../.."
6493     ;;
6494 esac
6495
6496 : determine where private library files go
6497 : Usual default is /usr/local/lib/perl5/$version.
6498 : Also allow things like /opt/perl/lib/$version, since
6499 : /opt/perl/lib/perl5... would be redundant.
6500 : The default "style" setting is made in installstyle.U
6501 case "$installstyle" in
6502 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6503 *)       set dflt privlib lib/$version ;;
6504 esac
6505 eval $prefixit
6506 $cat <<EOM
6507
6508 There are some auxiliary files for $package that need to be put into a
6509 private library directory that is accessible by everyone.
6510
6511 EOM
6512 fn=$binexp
6513 fn=d~+
6514 rp='Pathname where the private library files will reside?'
6515 . ./getfile
6516 prefixvar=privlib
6517 . ./setprefixvar
6518
6519 : set the prefixup variable, to restore leading tilda escape
6520 prefixup='case "$prefixexp" in
6521 "$prefix") ;;
6522 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6523 esac'
6524
6525 : determine where public architecture dependent libraries go
6526 set archlib archlib
6527 eval $prefixit
6528 : privlib default is /usr/local/lib/$package/$version
6529 : archlib default is /usr/local/lib/$package/$version/$archname
6530 : privlib may have an optional trailing /share.
6531 tdflt=`echo $privlib | $sed 's,/share$,,'`
6532 tdflt=$tdflt/$archname
6533 case "$archlib" in
6534 '')     dflt=$tdflt
6535         ;;
6536 *)      dflt="$archlib"
6537     ;;
6538 esac
6539 $cat <<EOM
6540
6541 $spackage contains architecture-dependent library files.  If you are
6542 sharing libraries in a heterogeneous environment, you might store
6543 these files in a separate location.  Otherwise, you can just include
6544 them with the rest of the public library files.
6545
6546 EOM
6547 fn=$binexp
6548 fn=d+~
6549 rp='Where do you want to put the public architecture-dependent libraries?'
6550 . ./getfile
6551 prefixvar=archlib
6552 . ./setprefixvar
6553 if $test X"$archlib" = X"$privlib"; then
6554         d_archlib="$undef"
6555 else
6556         d_archlib="$define"
6557 fi
6558
6559 : see if setuid scripts can be secure
6560 $cat <<EOM
6561
6562 Some kernels have a bug that prevents setuid #! scripts from being
6563 secure.  Some sites have disabled setuid #! scripts because of this.
6564
6565 First let's decide if your kernel supports secure setuid #! scripts.
6566 (If setuid #! scripts would be secure but have been disabled anyway,
6567 don't say that they are secure if asked.)
6568
6569 EOM
6570
6571 val="$undef"
6572 if $test -d /dev/fd; then
6573         echo "#!$ls" >reflect
6574         chmod +x,u+s reflect
6575         ./reflect >flect 2>&1
6576         if $contains "/dev/fd" flect >/dev/null; then
6577                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6578                 val="$define"
6579         else
6580                 $cat <<EOM
6581 If you are not sure if they are secure, I can check but I'll need a
6582 username and password different from the one you are using right now.
6583 If you don't have such a username or don't want me to test, simply
6584 enter 'none'.
6585
6586 EOM
6587                 rp='Other username to test security of setuid scripts with?'
6588                 dflt='none'
6589                 . ./myread
6590                 case "$ans" in
6591                 n|none)
6592                         case "$d_suidsafe" in
6593                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6594                                 dflt=n;;
6595                         "$undef")
6596                                 echo "Well, the $hint value is *not* secure." >&4
6597                                 dflt=n;;
6598                         *)      echo "Well, the $hint value *is* secure." >&4
6599                                 dflt=y;;
6600                         esac
6601                         ;;
6602                 *)
6603                         $rm -f reflect flect
6604                         echo "#!$ls" >reflect
6605                         chmod +x,u+s reflect
6606                         echo >flect
6607                         chmod a+w flect
6608                         echo '"su" will (probably) prompt you for '"$ans's password."
6609                         su $ans -c './reflect >flect'
6610                         if $contains "/dev/fd" flect >/dev/null; then
6611                                 echo "Okay, it looks like setuid scripts are secure." >&4
6612                                 dflt=y
6613                         else
6614                                 echo "I don't think setuid scripts are secure." >&4
6615                                 dflt=n
6616                         fi
6617                         ;;
6618                 esac
6619                 rp='Does your kernel have *secure* setuid scripts?'
6620                 . ./myread
6621                 case "$ans" in
6622                 [yY]*)  val="$define";;
6623                 *)      val="$undef";;
6624                 esac
6625         fi
6626 else
6627         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6628         echo "(That's for file descriptors, not floppy disks.)"
6629         val="$undef"
6630 fi
6631 set d_suidsafe
6632 eval $setvar
6633
6634 $rm -f reflect flect
6635
6636 : now see if they want to do setuid emulation
6637 if $test $patchlevel -lt 11; then
6638 echo " "
6639 val="$undef"
6640 case "$d_suidsafe" in
6641 "$define")
6642         val="$undef"
6643         echo "No need to emulate SUID scripts since they are secure here." >&4
6644         ;;
6645 *)
6646         $cat <<EOM
6647 Some systems have disabled setuid scripts, especially systems where
6648 setuid scripts cannot be secure.  On systems where setuid scripts have
6649 been disabled, the setuid/setgid bits on scripts are currently
6650 useless.  It is possible for $package to detect those bits and emulate
6651 setuid/setgid in a secure fashion.  This emulation will only work if
6652 setuid scripts have been disabled in your kernel.
6653
6654 EOM
6655         case "$d_dosuid" in
6656         "$define") dflt=y ;;
6657         *) dflt=n ;;
6658         esac
6659         rp="Do you want to do setuid/setgid emulation?"
6660         . ./myread
6661         case "$ans" in
6662         [yY]*)  val="$define";;
6663         *)      val="$undef";;
6664         esac
6665         ;;
6666 esac
6667 set d_dosuid
6668 eval $setvar
6669 else
6670     case "$d_dosuid" in
6671         "$define")
6672         cat >&4 <<EOH
6673
6674 SUID emulation has been removed for 5.12
6675 Please re-run Configure without -Dd_dosuid
6676
6677 EOH
6678         exit 1;
6679         ;;
6680     esac
6681     d_dosuid=undef
6682 fi
6683
6684 : Find perl5.005 or later.
6685 echo "Looking for a previously installed perl5.005 or later... "
6686 case "$perl5" in
6687 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6688                 : Check if this perl is recent and can load a simple module
6689                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6690                         perl5=$tdir/perl
6691                         break;
6692                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6693                         perl5=$tdir/perl5
6694                         break;
6695                 fi
6696         done
6697         ;;
6698 *)      perl5="$perl5"
6699         ;;
6700 esac
6701 case "$perl5" in
6702 '')     echo "None found.  That's ok.";;
6703 *)      echo "Using $perl5." ;;
6704 esac
6705
6706 : Set the siteprefix variables
6707 $cat <<EOM
6708
6709 After $package is installed, you may wish to install various
6710 add-on modules and utilities.  Typically, these add-ons will
6711 be installed under $prefix with the rest
6712 of this package.  However, you may wish to install such add-ons
6713 elsewhere under a different prefix.
6714
6715 If you do not wish to put everything under a single prefix, that's
6716 ok.  You will be prompted for the individual locations; this siteprefix
6717 is only used to suggest the defaults.
6718
6719 The default should be fine for most people.
6720
6721 EOM
6722 fn=d~+
6723 rp='Installation prefix to use for add-on modules and utilities?'
6724 : XXX Here might be another good place for an installstyle setting.
6725 case "$siteprefix" in
6726 '') dflt=$prefix ;;
6727 *)  dflt=$siteprefix ;;
6728 esac
6729 . ./getfile
6730 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6731 oldsiteprefix=''
6732 case "$siteprefix" in
6733 '') ;;
6734 *)      case "$ans" in
6735         "$prefix") ;;
6736         *) oldsiteprefix="$prefix";;
6737         esac
6738         ;;
6739 esac
6740 siteprefix="$ans"
6741 siteprefixexp="$ansexp"
6742
6743 : determine where site specific libraries go.
6744 : Usual default is /usr/local/lib/perl5/site_perl/$version
6745 : The default "style" setting is made in installstyle.U
6746 : XXX No longer works with Prefixit stuff.
6747 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6748 case "$sitelib" in
6749 '') case "$installstyle" in
6750         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6751         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6752         esac
6753         ;;
6754 *)      dflt="$sitelib"
6755         ;;
6756 esac
6757 $cat <<EOM
6758
6759 The installation process will create a directory for
6760 site-specific extensions and modules.  Most users find it convenient
6761 to place all site-specific files in this directory rather than in the
6762 main distribution directory.
6763
6764 EOM
6765 fn=d~+
6766 rp='Pathname for the site-specific library files?'
6767 . ./getfile
6768 prefixvar=sitelib
6769 . ./setprefixvar
6770 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6771
6772 : Determine list of previous versions to include in @INC
6773 $cat > getverlist <<EOPL
6774 #!$perl5 -w
6775 use File::Basename;
6776 \$api_versionstring = "$api_versionstring";
6777 \$version = "$version";
6778 \$stem = "$sitelib_stem";
6779 \$archname = "$archname";
6780 EOPL
6781         $cat >> getverlist <<'EOPL'
6782 # The list found is store twice for each entry: the original name, and
6783 # the binary broken down version as pack "sss", so sorting is easy and
6784 # unambiguous. This will work for all versions that have a maximum of
6785 # three digit groups, separate by '.'s or '_'s. Names are extended with
6786 # ".0.0" to ensure at least three elements for the pack.
6787 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6788
6789 # Can't have leading @ because metaconfig interprets it as a command!
6790 ;@inc_version_list=();
6791 # XXX Redo to do opendir/readdir?
6792 if (-d $stem) {
6793     chdir($stem);
6794     ;@candidates = map {
6795         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6796     ;@candidates = sort { $a->[1] cmp $b->[1]} @candidates;
6797 }
6798 else {
6799     ;@candidates = ();
6800 }
6801
6802 ($pversion, $aversion, $vsn5005) = map {
6803     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6804 foreach $d (@candidates) {
6805     if ($d->[1] lt $pversion) {
6806         if ($d->[1] ge $aversion) {
6807             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6808         }
6809         elsif ($d->[1] ge $vsn5005) {
6810             unshift(@inc_version_list, grep { -d } $d->[0]);
6811         }
6812     }
6813     else {
6814         # Skip newer version.  I.e. don't look in
6815         # 5.7.0 if we're installing 5.6.1.
6816     }
6817 }
6818
6819 if (@inc_version_list) {
6820     print join(' ', @inc_version_list);
6821 }
6822 else {
6823     # Blank space to preserve value for next Configure run.
6824     print " ";
6825 }
6826 EOPL
6827 chmod +x getverlist
6828 case "$inc_version_list" in
6829 '')     if test -x "$perl5$exe_ext"; then
6830                 dflt=`$perl5 getverlist`
6831         else
6832                 dflt='none'
6833         fi
6834         ;;
6835 $undef) dflt='none' ;;
6836 *)  eval dflt=\"$inc_version_list\" ;;
6837 esac
6838 case "$dflt" in
6839 ''|' ') dflt=none ;;
6840 esac
6841 case "$dflt" in
6842 5.005) dflt=none ;;
6843 esac
6844 $cat <<EOM
6845
6846 In order to ease the process of upgrading, this version of perl
6847 can be configured to use modules built and installed with earlier
6848 versions of perl that were installed under $prefix.  Specify here
6849 the list of earlier versions that this version of perl should check.
6850 If Configure detected no earlier versions of perl installed under
6851 $prefix, then the list will be empty.  Answer 'none' to tell perl
6852 to not search earlier versions.
6853
6854 The default should almost always be sensible, so if you're not sure,
6855 just accept the default.
6856 EOM
6857
6858 rp='List of earlier versions to include in @INC?'
6859 . ./myread
6860 case "$ans" in
6861 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6862 *) inc_version_list="$ans" ;;
6863 esac
6864 case "$inc_version_list" in
6865 ''|' ')
6866         inc_version_list_init='0'
6867         d_inc_version_list="$undef"
6868         ;;
6869 *)      inc_version_list_init=`echo $inc_version_list |
6870                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6871         d_inc_version_list="$define"
6872         ;;
6873 esac
6874 $rm -f getverlist
6875
6876 : see if malloc/malloc.h has to be included
6877 set malloc/malloc.h i_mallocmalloc
6878 eval $inhdr
6879
6880 : see if this is a malloc.h system
6881 : we want a real compile instead of Inhdr because some systems have a
6882 : malloc.h that just gives a compile error saying to use stdlib.h instead
6883 echo " "
6884 $cat >try.c <<EOCP
6885 #include <stdlib.h>
6886 #include <malloc.h>
6887 #$i_mallocmalloc I_MALLOCMALLOC
6888 #ifdef I_MALLOCMALLOC
6889 # include <malloc/malloc.h>
6890 #endif
6891
6892 int main () { return 0; }
6893 EOCP
6894 set try
6895 if eval $compile; then
6896     echo "<malloc.h> found." >&4
6897     val="$define"
6898 else
6899     echo "<malloc.h> NOT found." >&4
6900     val="$undef"
6901 fi
6902 $rm_try
6903 set i_malloc
6904 eval $setvar
6905
6906 : check for length of pointer
6907 echo " "
6908 case "$ptrsize" in
6909 '')
6910         echo "Checking to see how big your pointers are..." >&4
6911         $cat >>try.c <<EOCP
6912 #include <stdio.h>
6913 #$i_stdlib I_STDLIB
6914 #ifdef I_STDLIB
6915 #include <stdlib.h>
6916 #endif
6917 int main()
6918 {
6919     printf("%d\n", (int)sizeof(void *));
6920     exit(0);
6921 }
6922 EOCP
6923         set try
6924         if eval $compile_ok; then
6925                 ptrsize=`$run ./try`
6926                 echo "Your pointers are $ptrsize bytes long."
6927         else
6928                 dflt='4'
6929                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6930                 rp="What is the size of a pointer (in bytes)?"
6931                 . ./myread
6932                 ptrsize="$ans"
6933         fi
6934         ;;
6935 esac
6936 $rm_try
6937 case "$use64bitall" in
6938 "$define"|true|[yY]*)
6939         case "$ptrsize" in
6940         4)      cat <<EOM >&4
6941
6942 *** You have chosen a maximally 64-bit build,
6943 *** but your pointers are only 4 bytes wide.
6944 *** Please rerun Configure without -Duse64bitall.
6945 EOM
6946                 case "$d_quad" in
6947                 define)
6948                         cat <<EOM >&4
6949 *** Since you have quads, you could possibly try with -Duse64bitint.
6950 EOM
6951                         ;;
6952                 esac
6953                 cat <<EOM >&4
6954 *** Cannot continue, aborting.
6955
6956 EOM
6957
6958                 exit 1
6959                 ;;
6960         esac
6961         ;;
6962 esac
6963
6964
6965 : determine whether to use malloc wrapping
6966 echo " "
6967 case "$usemallocwrap" in
6968 [yY]*|true|$define)     dflt='y' ;;
6969 [nN]*|false|$undef)     dflt='n' ;;
6970 *)      case "$usedevel" in
6971         [yY]*|true|$define)     dflt='y' ;;
6972         *) dflt='n' ;;
6973         esac
6974         ;;
6975 esac
6976 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6977 . ./myread
6978 usemallocwrap="$ans"
6979 case "$ans" in
6980 y*|true)
6981         usemallocwrap="$define" ;;
6982 *)
6983         usemallocwrap="$undef" ;;
6984 esac
6985
6986 : determine which malloc to compile in
6987 echo " "
6988 case "$usemymalloc" in
6989 [yY]*|true|$define)     dflt='y' ;;
6990 [nN]*|false|$undef)     dflt='n' ;;
6991 *)      case "$ptrsize" in
6992         4) dflt='y' ;;
6993         *) dflt='n' ;;
6994         esac
6995         if test "$useithreads" = "$define"; then dflt='n'; fi
6996         ;;
6997 esac
6998 rp="Do you wish to attempt to use the malloc that comes with $package?"
6999 . ./myread
7000 usemymalloc="$ans"
7001 case "$ans" in
7002 y*|true)
7003         usemymalloc='y'
7004         mallocsrc='malloc.c'
7005         mallocobj="malloc$_o"
7006         d_mymalloc="$define"
7007         case "$libs" in
7008         *-lmalloc*)
7009                 : Remove malloc from list of libraries to use
7010                 echo "Removing unneeded -lmalloc from library list" >&4
7011                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
7012                 shift
7013                 libs="$*"
7014                 echo "libs = $libs" >&4
7015                 ;;
7016         esac
7017         ;;
7018 *)
7019         usemymalloc='n'
7020         mallocsrc=''
7021         mallocobj=''
7022         d_mymalloc="$undef"
7023         ;;
7024 esac
7025
7026 : compute the return types of malloc and free
7027 echo " "
7028 $cat >malloc.c <<END
7029 #$i_malloc I_MALLOC
7030 #$i_stdlib I_STDLIB
7031 #include <stdio.h>
7032 #include <sys/types.h>
7033 #ifdef I_MALLOC
7034 #include <malloc.h>
7035 #endif
7036 #ifdef I_STDLIB
7037 #include <stdlib.h>
7038 #endif
7039 #ifdef TRY_MALLOC
7040 void *malloc();
7041 #endif
7042 #ifdef TRY_FREE
7043 void free();
7044 #endif
7045 END
7046 case "$malloctype" in
7047 '')
7048         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
7049                 malloctype='void *'
7050         else
7051                 malloctype='char *'
7052         fi
7053         ;;
7054 esac
7055 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
7056
7057 case "$freetype" in
7058 '')
7059         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
7060                 freetype='void'
7061         else
7062                 freetype='int'
7063         fi
7064         ;;
7065 esac
7066 echo "Your system uses $freetype free(), it would seem." >&4
7067 $rm -f malloc.[co]
7068 : determine where site specific architecture-dependent libraries go.
7069 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7070 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7071 : sitelib may have an optional trailing /share.
70