This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
unpack("Z*Z*", pack("Z*Z*", ..)) bug, patch and test from
[perl5.git] / Configure
... / ...
CommitLineData
1#! /bin/sh
2#
3# If these # comments don't work, trim them. Don't worry about any other
4# shell scripts, Configure will trim # comments from them for you.
5#
6# (If you are trying to port this package to a machine without sh,
7# I would suggest you have a look at the prototypical config_h.SH file
8# and edit it to reflect your system. Some packages may include samples
9# of config.h for certain machines, so you might look for one of those.)
10#
11# Yes, you may rip this off to use in other distribution packages. This
12# script belongs to the public domain and cannot be copyrighted.
13#
14# (Note: this Configure script was generated automatically. Rather than
15# working with this copy of Configure, you may wish to get metaconfig.
16# The dist-3.0 package (which contains metaconfig) was posted in
17# comp.sources.misc and is available on CPAN under authors/id/RAM so
18# you may fetch it yourself from your nearest archive site.)
19#
20
21# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22#
23# Generated on Mon Sep 24 15:24:44 EET DST 2001 [metaconfig 3.0 PL70]
24# (with additional metaconfig patches by perlbug@perl.org)
25
26cat >c1$$ <<EOF
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
37cat >c2$$ <<EOF
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
43true || cat c1$$ c2$$
44true || exec sh $0 $argv:q
45
46(exit $?0) || cat c2$$
47(exit $?0) || exec sh $0 $argv:q
48rm -f c1$$ c2$$
49
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
59: Proper separator for the PATH environment variable
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
68 p_=\;
69 fi
70fi
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
81
82for p in $paths
83do
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
87 esac
88done
89
90PATH=.$p_$PATH
91export PATH
92
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
99if (PATH=.; alias -x) >/dev/null 2>&1; then
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
109 fi
110fi
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
118case "$inksh/$needksh" in
119/[a-z]*)
120 ENV=''
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
136EOM
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
148
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
161cd UU && rm -f ./*
162
163ccname=''
164ccversion=''
165ccsymbols=''
166cppccsymbols=''
167cppsymbols=''
168from=''
169run=''
170targetarch=''
171to=''
172usecrosscompile=''
173perllibs=''
174dynamic_ext=''
175extensions=''
176known_extensions=''
177nonxs_ext=''
178static_ext=''
179useopcode=''
180useposix=''
181extras=''
182d_bsd=''
183d_eunice=''
184d_xenix=''
185eunicefix=''
186Mcc=''
187ar=''
188awk=''
189bash=''
190bison=''
191byacc=''
192cat=''
193chgrp=''
194chmod=''
195chown=''
196comm=''
197compress=''
198cp=''
199cpio=''
200cpp=''
201csh=''
202date=''
203echo=''
204egrep=''
205emacs=''
206expr=''
207find=''
208flex=''
209grep=''
210gzip=''
211inews=''
212ksh=''
213less=''
214line=''
215lint=''
216ln=''
217lp=''
218lpr=''
219ls=''
220mail=''
221mailx=''
222make=''
223mkdir=''
224more=''
225mv=''
226nm=''
227nroff=''
228perl=''
229pg=''
230pmake=''
231pr=''
232rm=''
233rmail=''
234sed=''
235sendmail=''
236shar=''
237sleep=''
238smail=''
239sort=''
240submit=''
241tail=''
242tar=''
243tbl=''
244tee=''
245test=''
246touch=''
247tr=''
248troff=''
249uname=''
250uniq=''
251uuname=''
252vi=''
253zcat=''
254zip=''
255full_ar=''
256full_sed=''
257libswanted=''
258hint=''
259myuname=''
260osname=''
261osvers=''
262Author=''
263Date=''
264Header=''
265Id=''
266Locker=''
267Log=''
268RCSfile=''
269Revision=''
270Source=''
271State=''
272_a=''
273_exe=''
274_o=''
275archobjs=''
276exe_ext=''
277firstmakefile=''
278lib_ext=''
279obj_ext=''
280path_sep=''
281afs=''
282afsroot=''
283alignbytes=''
284ansi2knr=''
285archlib=''
286archlibexp=''
287d_archlib=''
288installarchlib=''
289archname=''
290myarchname=''
291d_atolf=''
292d_atoll=''
293baserev=''
294bin=''
295binexp=''
296installbin=''
297bincompat5005=''
298d_bincompat5005=''
299byteorder=''
300cc=''
301ccflags=''
302cppflags=''
303ldflags=''
304lkflags=''
305locincpth=''
306optimize=''
307cf_email=''
308cf_by=''
309cf_time=''
310charsize=''
311contains=''
312cpp_stuff=''
313cpplast=''
314cppminus=''
315cpprun=''
316cppstdin=''
317d__fwalk=''
318d_access=''
319d_accessx=''
320d_alarm=''
321d_attribut=''
322d_bcmp=''
323d_bcopy=''
324d_bzero=''
325d_casti32=''
326castflags=''
327d_castneg=''
328d_chown=''
329d_chroot=''
330d_chsize=''
331d_class=''
332d_closedir=''
333d_void_closedir=''
334d_cmsghdr_s=''
335d_const=''
336cryptlib=''
337d_crypt=''
338d_csh=''
339full_csh=''
340d_cuserid=''
341d_dbl_dig=''
342d_dbminitproto=''
343d_difftime=''
344d_dlerror=''
345d_dlopen=''
346d_dlsymun=''
347d_dosuid=''
348d_suidsafe=''
349d_drand48proto=''
350d_dup2=''
351d_eaccess=''
352d_endgrent=''
353d_endhent=''
354d_endnent=''
355d_endpent=''
356d_endpwent=''
357d_endsent=''
358d_fchdir=''
359d_fchmod=''
360d_fchown=''
361d_fcntl=''
362d_fcntl_can_lock=''
363d_fd_macros=''
364d_fd_set=''
365d_fds_bits=''
366d_fgetpos=''
367d_finite=''
368d_finitel=''
369d_flexfnam=''
370d_flock=''
371d_flockproto=''
372d_fork=''
373d_fp_class=''
374d_fpclass=''
375d_fpclassify=''
376d_fpclassl=''
377d_fpos64_t=''
378d_frexpl=''
379d_fs_data_s=''
380d_fseeko=''
381d_fsetpos=''
382d_fstatfs=''
383d_fsync=''
384d_ftello=''
385d_ftime=''
386d_gettimeod=''
387d_Gconvert=''
388d_getcwd=''
389d_getespwnam=''
390d_getfsstat=''
391d_getgrent=''
392d_getgrps=''
393d_gethbyaddr=''
394d_gethbyname=''
395d_gethent=''
396aphostname=''
397d_gethname=''
398d_phostname=''
399d_uname=''
400d_gethostprotos=''
401d_getitimer=''
402d_getlogin=''
403d_getmnt=''
404d_getmntent=''
405d_getnbyaddr=''
406d_getnbyname=''
407d_getnent=''
408d_getnetprotos=''
409d_getpagsz=''
410d_getpent=''
411d_getpgid=''
412d_getpgrp2=''
413d_bsdgetpgrp=''
414d_getpgrp=''
415d_getppid=''
416d_getprior=''
417d_getpbyname=''
418d_getpbynumber=''
419d_getprotoprotos=''
420d_getprpwnam=''
421d_getpwent=''
422d_getsent=''
423d_getservprotos=''
424d_getspnam=''
425d_getsbyname=''
426d_getsbyport=''
427d_gnulibc=''
428d_hasmntopt=''
429d_htonl=''
430d_inetaton=''
431d_int64_t=''
432d_isascii=''
433d_isfinite=''
434d_isinf=''
435d_isnan=''
436d_isnanl=''
437d_killpg=''
438d_lchown=''
439d_ldbl_dig=''
440d_link=''
441d_locconv=''
442d_lockf=''
443d_longdbl=''
444longdblsize=''
445d_longlong=''
446longlongsize=''
447d_lseekproto=''
448d_lstat=''
449d_madvise=''
450d_mblen=''
451d_mbstowcs=''
452d_mbtowc=''
453d_memchr=''
454d_memcmp=''
455d_memcpy=''
456d_memmove=''
457d_memset=''
458d_mkdir=''
459d_mkdtemp=''
460d_mkfifo=''
461d_mkstemp=''
462d_mkstemps=''
463d_mktime=''
464d_mmap=''
465mmaptype=''
466d_modfl=''
467d_modfl_pow32_bug=''
468d_mprotect=''
469d_msg=''
470d_msgctl=''
471d_msgget=''
472d_msghdr_s=''
473d_msgrcv=''
474d_msgsnd=''
475d_msync=''
476d_munmap=''
477d_nice=''
478d_nl_langinfo=''
479d_off64_t=''
480d_open3=''
481d_fpathconf=''
482d_pathconf=''
483d_pause=''
484d_pipe=''
485d_poll=''
486d_portable=''
487d_old_pthread_create_joinable=''
488old_pthread_create_joinable=''
489d_pthread_atfork=''
490d_pthread_yield=''
491d_sched_yield=''
492sched_yield=''
493d_qgcvt=''
494d_readdir=''
495d_rewinddir=''
496d_seekdir=''
497d_telldir=''
498d_readlink=''
499d_readv=''
500d_recvmsg=''
501d_rename=''
502d_rmdir=''
503d_safebcpy=''
504d_safemcpy=''
505d_sanemcmp=''
506d_sbrkproto=''
507d_select=''
508d_sem=''
509d_semctl=''
510d_semget=''
511d_semop=''
512d_sendmsg=''
513d_setegid=''
514d_seteuid=''
515d_setgrent=''
516d_setgrps=''
517d_sethent=''
518d_setitimer=''
519d_setlinebuf=''
520d_setlocale=''
521d_setnent=''
522d_setpent=''
523d_setpgid=''
524d_setpgrp2=''
525d_bsdsetpgrp=''
526d_setpgrp=''
527d_setprior=''
528d_setproctitle=''
529d_setpwent=''
530d_setregid=''
531d_setresgid=''
532d_setresuid=''
533d_setreuid=''
534d_setrgid=''
535d_setruid=''
536d_setsent=''
537d_setsid=''
538d_setvbuf=''
539d_sfio=''
540usesfio=''
541d_shm=''
542d_shmat=''
543d_shmatprototype=''
544shmattype=''
545d_shmctl=''
546d_shmdt=''
547d_shmget=''
548d_sigaction=''
549d_sigprocmask=''
550d_sigsetjmp=''
551d_sockatmark=''
552d_sockatmarkproto=''
553d_msg_ctrunc=''
554d_msg_dontroute=''
555d_msg_oob=''
556d_msg_peek=''
557d_msg_proxy=''
558d_oldsock=''
559d_scm_rights=''
560d_socket=''
561d_sockpair=''
562sockethdr=''
563socketlib=''
564d_socklen_t=''
565d_socks5_init=''
566d_sqrtl=''
567d_sresgproto=''
568d_sresuproto=''
569d_statblks=''
570d_statfs_f_flags=''
571d_statfs_s=''
572d_fstatvfs=''
573d_statvfs=''
574d_stdio_cnt_lval=''
575d_stdio_ptr_lval=''
576d_stdio_ptr_lval_nochange_cnt=''
577d_stdio_ptr_lval_sets_cnt=''
578d_stdiobase=''
579d_stdstdio=''
580stdio_base=''
581stdio_bufsiz=''
582stdio_cnt=''
583stdio_filbuf=''
584stdio_ptr=''
585d_index=''
586d_strchr=''
587d_strcoll=''
588d_strctcpy=''
589d_strerrm=''
590d_strerror=''
591d_sysernlst=''
592d_syserrlst=''
593d_strftime=''
594d_strtod=''
595d_strtol=''
596d_strtold=''
597d_strtoll=''
598d_strtoq=''
599d_strtoul=''
600d_strtoull=''
601d_strtouq=''
602d_strxfrm=''
603d_symlink=''
604d_syscall=''
605d_syscallproto=''
606d_sysconf=''
607d_system=''
608d_tcgetpgrp=''
609d_tcsetpgrp=''
610d_telldirproto=''
611d_time=''
612timetype=''
613clocktype=''
614d_times=''
615d_truncate=''
616d_tzname=''
617d_u32align=''
618d_ualarm=''
619d_umask=''
620d_semctl_semid_ds=''
621d_semctl_semun=''
622d_union_semun=''
623d_unordered=''
624d_usleep=''
625d_usleepproto=''
626d_ustat=''
627d_vfork=''
628usevfork=''
629d_voidsig=''
630signal_t=''
631d_volatile=''
632d_charvspr=''
633d_vprintf=''
634d_wait4=''
635d_waitpid=''
636d_wcstombs=''
637d_wctomb=''
638d_writev=''
639dlext=''
640cccdlflags=''
641ccdlflags=''
642dlsrc=''
643ld=''
644lddlflags=''
645usedl=''
646doublesize=''
647ebcdic=''
648fflushNULL=''
649fflushall=''
650fpossize=''
651fpostype=''
652gccosandvers=''
653gccversion=''
654gidformat=''
655gidsign=''
656gidsize=''
657gidtype=''
658groupstype=''
659h_fcntl=''
660h_sysfile=''
661i_arpainet=''
662db_hashtype=''
663db_prefixtype=''
664db_version_major=''
665db_version_minor=''
666db_version_patch=''
667i_db=''
668i_dbm=''
669i_rpcsvcdbm=''
670d_dirnamlen=''
671direntrytype=''
672i_dirent=''
673i_dld=''
674i_dlfcn=''
675i_fcntl=''
676i_float=''
677i_fp=''
678i_fp_class=''
679i_gdbm=''
680d_grpasswd=''
681i_grp=''
682i_ieeefp=''
683i_inttypes=''
684i_langinfo=''
685i_libutil=''
686i_limits=''
687i_locale=''
688i_machcthr=''
689i_malloc=''
690i_math=''
691i_memory=''
692i_mntent=''
693i_ndbm=''
694i_netdb=''
695i_neterrno=''
696i_netinettcp=''
697i_niin=''
698i_sysin=''
699i_poll=''
700i_prot=''
701i_pthread=''
702d_pwage=''
703d_pwchange=''
704d_pwclass=''
705d_pwcomment=''
706d_pwexpire=''
707d_pwgecos=''
708d_pwpasswd=''
709d_pwquota=''
710i_pwd=''
711i_sfio=''
712i_shadow=''
713i_socks=''
714i_stddef=''
715i_stdlib=''
716i_string=''
717strings=''
718i_sunmath=''
719i_sysaccess=''
720i_sysdir=''
721i_sysfile=''
722d_voidtty=''
723i_bsdioctl=''
724i_sysfilio=''
725i_sysioctl=''
726i_syssockio=''
727i_syslog=''
728i_sysmman=''
729i_sysmode=''
730i_sysmount=''
731i_sysndir=''
732i_sysparam=''
733i_sysresrc=''
734i_syssecrt=''
735i_sysselct=''
736i_sysstat=''
737i_sysstatfs=''
738i_sysstatvfs=''
739i_systimes=''
740i_systypes=''
741i_sysuio=''
742i_sysun=''
743i_sysutsname=''
744i_sysvfs=''
745i_syswait=''
746i_sgtty=''
747i_termio=''
748i_termios=''
749i_systime=''
750i_systimek=''
751i_time=''
752timeincl=''
753i_unistd=''
754i_ustat=''
755i_utime=''
756i_values=''
757i_stdarg=''
758i_varargs=''
759i_varhdr=''
760i_vfork=''
761inc_version_list=''
762inc_version_list_init=''
763installprefix=''
764installprefixexp=''
765installstyle=''
766installusrbinperl=''
767intsize=''
768longsize=''
769shortsize=''
770issymlink=''
771libc=''
772ldlibpthname=''
773libperl=''
774shrpenv=''
775useshrplib=''
776glibpth=''
777libpth=''
778loclibpth=''
779plibpth=''
780xlibpth=''
781ignore_versioned_solibs=''
782libs=''
783libsdirs=''
784libsfiles=''
785libsfound=''
786libspath=''
787lns=''
788d_PRIEUldbl=''
789d_PRIFUldbl=''
790d_PRIGUldbl=''
791d_PRIeldbl=''
792d_PRIfldbl=''
793d_PRIgldbl=''
794d_SCNfldbl=''
795sPRIEUldbl=''
796sPRIFUldbl=''
797sPRIGUldbl=''
798sPRIeldbl=''
799sPRIfldbl=''
800sPRIgldbl=''
801sSCNfldbl=''
802lseeksize=''
803lseektype=''
804make_set_make=''
805d_mymalloc=''
806freetype=''
807mallocobj=''
808mallocsrc=''
809malloctype=''
810usemymalloc=''
811installman1dir=''
812man1dir=''
813man1direxp=''
814man1ext=''
815installman3dir=''
816man3dir=''
817man3direxp=''
818man3ext=''
819modetype=''
820multiarch=''
821mydomain=''
822myhostname=''
823phostname=''
824c=''
825n=''
826d_eofnblk=''
827eagain=''
828o_nonblock=''
829rd_nodata=''
830need_va_copy=''
831netdb_hlen_type=''
832netdb_host_type=''
833netdb_name_type=''
834netdb_net_type=''
835groupcat=''
836hostcat=''
837passcat=''
838orderlib=''
839ranlib=''
840d_perl_otherlibdirs=''
841otherlibdirs=''
842package=''
843spackage=''
844pager=''
845api_revision=''
846api_subversion=''
847api_version=''
848api_versionstring=''
849patchlevel=''
850perl_patchlevel=''
851revision=''
852subversion=''
853version=''
854version_patchlevel_string=''
855perl5=''
856perladmin=''
857perlpath=''
858d_nv_preserves_uv=''
859d_nv_preserves_uv_bits=''
860i16size=''
861i16type=''
862i32size=''
863i32type=''
864i64size=''
865i64type=''
866i8size=''
867i8type=''
868ivsize=''
869ivtype=''
870nvsize=''
871nvtype=''
872u16size=''
873u16type=''
874u32size=''
875u32type=''
876u64size=''
877u64type=''
878u8size=''
879u8type=''
880uvsize=''
881uvtype=''
882ivdformat=''
883nvEUformat=''
884nvFUformat=''
885nvGUformat=''
886nveformat=''
887nvfformat=''
888nvgformat=''
889uvXUformat=''
890uvoformat=''
891uvuformat=''
892uvxformat=''
893pidtype=''
894prefix=''
895prefixexp=''
896installprivlib=''
897privlib=''
898privlibexp=''
899prototype=''
900ptrsize=''
901d_PRIXU64=''
902d_PRId64=''
903d_PRIi64=''
904d_PRIo64=''
905d_PRIu64=''
906d_PRIx64=''
907sPRIXU64=''
908sPRId64=''
909sPRIi64=''
910sPRIo64=''
911sPRIu64=''
912sPRIx64=''
913d_quad=''
914quadkind=''
915quadtype=''
916uquadtype=''
917drand01=''
918randbits=''
919randfunc=''
920randseedtype=''
921seedfunc=''
922installscript=''
923scriptdir=''
924scriptdirexp=''
925selectminbits=''
926selecttype=''
927sh=''
928sig_count=''
929sig_name=''
930sig_name_init=''
931sig_num=''
932sig_num_init=''
933sig_size=''
934installsitearch=''
935sitearch=''
936sitearchexp=''
937installsitebin=''
938sitebin=''
939sitebinexp=''
940installsitelib=''
941sitelib=''
942sitelib_stem=''
943sitelibexp=''
944siteprefix=''
945siteprefixexp=''
946sizesize=''
947sizetype=''
948so=''
949socksizetype=''
950sharpbang=''
951shsharp=''
952spitshell=''
953src=''
954ssizetype=''
955startperl=''
956startsh=''
957stdchar=''
958d_stdio_stream_array=''
959stdio_stream_array=''
960sysman=''
961trnl=''
962uidformat=''
963uidsign=''
964uidsize=''
965uidtype=''
966archname64=''
967use64bitall=''
968use64bitint=''
969ccflags_uselargefiles=''
970ldflags_uselargefiles=''
971libswanted_uselargefiles=''
972uselargefiles=''
973uselongdouble=''
974usemorebits=''
975usemultiplicity=''
976nm_opt=''
977nm_so_opt=''
978runnm=''
979usenm=''
980useperlio=''
981usesocks=''
982d_oldpthreads=''
983use5005threads=''
984useithreads=''
985usereentrant=''
986usethreads=''
987incpath=''
988mips_type=''
989usrinc=''
990d_vendorarch=''
991installvendorarch=''
992vendorarch=''
993vendorarchexp=''
994d_vendorbin=''
995installvendorbin=''
996vendorbin=''
997vendorbinexp=''
998d_vendorlib=''
999installvendorlib=''
1000vendorlib=''
1001vendorlib_stem=''
1002vendorlibexp=''
1003usevendorprefix=''
1004vendorprefix=''
1005vendorprefixexp=''
1006versiononly=''
1007defvoidused=''
1008voidflags=''
1009pm_apiversion=''
1010xs_apiversion=''
1011yacc=''
1012yaccflags=''
1013CONFIG=''
1014
1015define='define'
1016undef='undef'
1017smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1018rmlist=''
1019
1020: We must find out about Eunice early
1021eunicefix=':'
1022if test -f /etc/unixtovms; then
1023 eunicefix=/etc/unixtovms
1024fi
1025if test -f /etc/unixtovms.exe; then
1026 eunicefix=/etc/unixtovms.exe
1027fi
1028
1029i_whoami=''
1030ccname=''
1031ccversion=''
1032perllibs=''
1033: set useposix=false in your hint file to disable the POSIX extension.
1034useposix=true
1035: set useopcode=false in your hint file to disable the Opcode extension.
1036useopcode=true
1037: Trailing extension. Override this in a hint file, if needed.
1038_exe=''
1039: Extra object files, if any, needed on this platform.
1040archobjs=''
1041archname=''
1042: Possible local include directories to search.
1043: Set locincpth to "" in a hint file to defeat local include searches.
1044locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1045locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1046:
1047: no include file wanted by default
1048inclwanted=''
1049
1050groupstype=''
1051libnames=''
1052: change the next line if compiling for Xenix/286 on Xenix/386
1053xlibpth='/usr/lib/386 /lib/386'
1054: Possible local library directories to search.
1055loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1056loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1057
1058: general looking path for locating libraries
1059glibpth="/lib /usr/lib $xlibpth"
1060glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1061test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1062test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1063
1064: Private path used by Configure to find libraries. Its value
1065: is prepended to libpth. This variable takes care of special
1066: machines, like the mips. Usually, it should be empty.
1067plibpth=''
1068
1069: default library list
1070libswanted=''
1071: some systems want to use only the non-versioned libso:s
1072ignore_versioned_solibs=''
1073archname64=''
1074ccflags_uselargefiles=''
1075ldflags_uselargefiles=''
1076libswanted_uselargefiles=''
1077: set usemultiplicity on the Configure command line to enable multiplicity.
1078: set usesocks on the Configure command line to enable socks.
1079: set usethreads on the Configure command line to enable threads.
1080usereentrant='undef'
1081: full support for void wanted by default
1082defvoidused=15
1083
1084: List of libraries we want.
1085: If anyone needs -lnet, put it in a hint file.
1086libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1087libswanted="$libswanted dld ld sun m c cposix posix"
1088libswanted="$libswanted ndir dir crypt sec"
1089libswanted="$libswanted ucb bsd BSD PW x util"
1090: We probably want to search /usr/shlib before most other libraries.
1091: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1092glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1093glibpth="/usr/shlib $glibpth"
1094: Do not use vfork unless overridden by a hint file.
1095usevfork=false
1096
1097: Find the basic shell for Bourne shell scripts
1098case "$sh" in
1099'')
1100 case "$SYSTYPE" in
1101 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1102 *) xxx='/bin/sh';;
1103 esac
1104 if test -f "$xxx"; then
1105 sh="$xxx"
1106 else
1107 : Build up a list and do a single loop so we can 'break' out.
1108 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1109 for xxx in sh bash ksh pdksh ash; do
1110 for p in $pth; do
1111 try="$try ${p}/${xxx}"
1112 done
1113 done
1114 for xxx in $try; do
1115 if test -f "$xxx"; then
1116 sh="$xxx";
1117 break
1118 elif test -f "$xxx.exe"; then
1119 sh="$xxx";
1120 break
1121 fi
1122 done
1123 fi
1124 ;;
1125esac
1126
1127case "$sh" in
1128'') cat >&2 <<EOM
1129$me: Fatal Error: I can't find a Bourne Shell anywhere.
1130
1131Usually it's in /bin/sh. How did you even get this far?
1132Please contact me (Perl Maintainers) at perlbug@perl.org and
1133we'll try to straighten this all out.
1134EOM
1135 exit 1
1136 ;;
1137esac
1138
1139: see if sh knows # comments
1140if `$sh -c '#' >/dev/null 2>&1`; then
1141 shsharp=true
1142 spitshell=cat
1143 xcat=/bin/cat
1144 test -f $xcat || xcat=/usr/bin/cat
1145 echo "#!$xcat" >sharp
1146 $eunicefix sharp
1147 chmod +x sharp
1148 ./sharp > today
1149 if test -s today; then
1150 sharpbang='#!'
1151 else
1152 echo "#! $xcat" > sharp
1153 $eunicefix sharp
1154 chmod +x sharp
1155 ./sharp > today
1156 if test -s today; then
1157 sharpbang='#! '
1158 else
1159 sharpbang=': use '
1160 fi
1161 fi
1162else
1163 echo " "
1164 echo "Your $sh doesn't grok # comments--I will strip them later on."
1165 shsharp=false
1166 cd ..
1167 echo "exec grep -v '^[ ]*#'" >spitshell
1168 chmod +x spitshell
1169 $eunicefix spitshell
1170 spitshell=`pwd`/spitshell
1171 cd UU
1172 echo "I presume that if # doesn't work, #! won't work either!"
1173 sharpbang=': use '
1174fi
1175rm -f sharp today
1176
1177: figure out how to guarantee sh startup
1178case "$startsh" in
1179'') startsh=${sharpbang}${sh} ;;
1180*)
1181esac
1182cat >sharp <<EOSS
1183$startsh
1184set abc
1185test "$?abc" != 1
1186EOSS
1187
1188chmod +x sharp
1189$eunicefix sharp
1190if ./sharp; then
1191 : echo "Yup, it does."
1192else
1193 echo "Hmm... '$startsh' does not guarantee sh startup..."
1194 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1195fi
1196rm -f sharp
1197
1198
1199: Save command line options in file UU/cmdline.opt for later use in
1200: generating config.sh.
1201cat > cmdline.opt <<EOSH
1202# Configure command line arguments.
1203config_arg0='$0'
1204config_args='$*'
1205config_argc=$#
1206EOSH
1207argn=1
1208args_exp=''
1209args_sep=''
1210for arg in "$@"; do
1211 cat >>cmdline.opt <<EOSH
1212config_arg$argn='$arg'
1213EOSH
1214 # Extreme backslashitis: replace each ' by '"'"'
1215 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1216$arg
1217EOC
1218 arg_exp=`cat cmdl.opt`
1219 args_exp="$args_exp$args_sep'$arg_exp'"
1220 argn=`expr $argn + 1`
1221 args_sep=' '
1222done
1223# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1224# used by ./hints/os2.sh
1225rm -f cmdl.opt
1226
1227: produce awk script to parse command line options
1228cat >options.awk <<'EOF'
1229BEGIN {
1230 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1231
1232 len = length(optstr);
1233 for (i = 1; i <= len; i++) {
1234 c = substr(optstr, i, 1);
1235 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1236 if (a == ":") {
1237 arg[c] = 1;
1238 i++;
1239 }
1240 opt[c] = 1;
1241 }
1242}
1243{
1244 expect = 0;
1245 str = $0;
1246 if (substr(str, 1, 1) != "-") {
1247 printf("'%s'\n", str);
1248 next;
1249 }
1250 len = length($0);
1251 for (i = 2; i <= len; i++) {
1252 c = substr(str, i, 1);
1253 if (!opt[c]) {
1254 printf("-%s\n", substr(str, i));
1255 next;
1256 }
1257 printf("-%s\n", c);
1258 if (arg[c]) {
1259 if (i < len)
1260 printf("'%s'\n", substr(str, i + 1));
1261 else
1262 expect = 1;
1263 next;
1264 }
1265 }
1266}
1267END {
1268 if (expect)
1269 print "?";
1270}
1271EOF
1272
1273: process the command line options
1274set X `for arg in "$@"; do echo "X$arg"; done |
1275 sed -e s/X// | awk -f options.awk`
1276eval "set $*"
1277shift
1278rm -f options.awk
1279
1280: set up default values
1281fastread=''
1282reuseval=false
1283config_sh=''
1284alldone=''
1285error=''
1286silent=''
1287extractsh=''
1288override=''
1289knowitall=''
1290rm -f optdef.sh posthint.sh
1291cat >optdef.sh <<EOS
1292$startsh
1293EOS
1294
1295
1296: option parsing
1297while test $# -gt 0; do
1298 case "$1" in
1299 -d) shift; fastread=yes;;
1300 -e) shift; alldone=cont;;
1301 -f)
1302 shift
1303 cd ..
1304 if test -r "$1"; then
1305 config_sh="$1"
1306 else
1307 echo "$me: cannot read config file $1." >&2
1308 error=true
1309 fi
1310 cd UU
1311 shift;;
1312 -h) shift; error=true;;
1313 -r) shift; reuseval=true;;
1314 -s) shift; silent=true; realsilent=true;;
1315 -E) shift; alldone=exit;;
1316 -K) shift; knowitall=true;;
1317 -O) shift; override=true;;
1318 -S) shift; silent=true; extractsh=true;;
1319 -D)
1320 shift
1321 case "$1" in
1322 *=)
1323 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1324 echo "$me: ignoring -D $1" >&2
1325 ;;
1326 *=*) echo "$1" | \
1327 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1328 *) echo "$1='define'" >> optdef.sh;;
1329 esac
1330 shift
1331 ;;
1332 -U)
1333 shift
1334 case "$1" in
1335 *=) echo "$1" >> optdef.sh;;
1336 *=*)
1337 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1338 echo "$me: ignoring -U $1" >&2
1339 ;;
1340 *) echo "$1='undef'" >> optdef.sh;;
1341 esac
1342 shift
1343 ;;
1344 -A)
1345 shift
1346 xxx=''
1347 yyy="$1"
1348 zzz=''
1349 uuu=undef
1350 case "$yyy" in
1351 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1352 case "$zzz" in
1353 *:*) zzz='' ;;
1354 *) xxx=append
1355 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1356 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1357 esac
1358 ;;
1359 esac
1360 case "$xxx" in
1361 '') case "$yyy" in
1362 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1363 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1364 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1365 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1366 *) xxx=`echo $yyy|sed 's!:.*!!'`
1367 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1368 esac
1369 ;;
1370 esac
1371 case "$xxx" in
1372 append)
1373 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1374 clear)
1375 echo "$yyy=''" >> posthint.sh ;;
1376 define)
1377 case "$zzz" in
1378 '') zzz=define ;;
1379 esac
1380 echo "$yyy='$zzz'" >> posthint.sh ;;
1381 eval)
1382 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1383 prepend)
1384 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1385 undef)
1386 case "$zzz" in
1387 '') zzz="$uuu" ;;
1388 esac
1389 echo "$yyy=$zzz" >> posthint.sh ;;
1390 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1391 esac
1392 shift
1393 ;;
1394 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1395 exit 0;;
1396 --) break;;
1397 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1398 *) break;;
1399 esac
1400done
1401
1402case "$error" in
1403true)
1404 cat >&2 <<EOM
1405Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1406 [-U symbol] [-U symbol=] [-A command:symbol...]
1407 -d : use defaults for all answers.
1408 -e : go on without questioning past the production of config.sh.
1409 -f : specify an alternate default configuration file.
1410 -h : print this help message and exit (with an error status).
1411 -r : reuse C symbols value if possible (skips costly nm extraction).
1412 -s : silent mode, only echoes questions and essential information.
1413 -D : define symbol to have some value:
1414 -D symbol symbol gets the value 'define'
1415 -D symbol=value symbol gets the value 'value'
1416 -E : stop at the end of questions, after having produced config.sh.
1417 -K : do not use unless you know what you are doing.
1418 -O : let -D and -U override definitions from loaded configuration file.
1419 -S : perform variable substitutions on all .SH files (can mix with -f)
1420 -U : undefine symbol:
1421 -U symbol symbol gets the value 'undef'
1422 -U symbol= symbol gets completely empty
1423 -A : manipulate symbol after the platform specific hints have been applied:
1424 -A symbol=value append " "value to symbol
1425 -A append:symbol=value append value to symbol
1426 -A define:symbol=value define symbol to have value
1427 -A clear:symbol define symbol to be ''
1428 -A define:symbol define symbol to be 'define'
1429 -A eval:symbol=value define symbol to be eval of value
1430 -A prepend:symbol=value prepend value to symbol
1431 -A undef:symbol define symbol to be 'undef'
1432 -A undef:symbol= define symbol to be ''
1433 -V : print version number and exit (with a zero status).
1434EOM
1435 exit 1
1436 ;;
1437esac
1438
1439: Sanity checks
1440case "$fastread$alldone" in
1441yescont|yesexit) ;;
1442*)
1443 case "$extractsh" in
1444 true) ;;
1445 *)
1446 if test ! -t 0; then
1447 echo "Say 'sh Configure', not 'sh <Configure'"
1448 exit 1
1449 fi
1450 ;;
1451 esac
1452 ;;
1453esac
1454
1455exec 4>&1
1456case "$silent" in
1457true) exec 1>/dev/null;;
1458esac
1459
1460: run the defines and the undefines, if any, but leave the file out there...
1461touch optdef.sh
1462. ./optdef.sh
1463: create the posthint manipulation script and leave the file out there...
1464touch posthint.sh
1465
1466: set package name
1467package=perl5
1468first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1469last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1470case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1471ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1472*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1473esac
1474
1475: Some greps do not return status, grrr.
1476echo "grimblepritz" >grimble
1477if grep blurfldyick grimble >/dev/null 2>&1 ; then
1478 contains=contains
1479elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1480 contains=grep
1481else
1482 contains=contains
1483fi
1484rm -f grimble
1485: the following should work in any shell
1486case "$contains" in
1487contains*)
1488 echo " "
1489 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1490 cat >contains <<'EOSS'
1491grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1492EOSS
1493chmod +x contains
1494esac
1495
1496: Find the path to the source tree
1497case "$src" in
1498'') case "$0" in
1499 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1500 case "$src" in
1501 /*) ;;
1502 .) ;;
1503 *) src=`cd ../$src && pwd` ;;
1504 esac
1505 ;;
1506 *) src='.';;
1507 esac;;
1508esac
1509case "$src" in
1510'') src=/
1511 rsrc=/
1512 ;;
1513/*) rsrc="$src";;
1514*) rsrc="../$src";;
1515esac
1516if test -f $rsrc/Configure && \
1517 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1518then
1519 : found it, so we are ok.
1520else
1521 rsrc=''
1522 for src in . .. ../.. ../../.. ../../../..; do
1523 if test -f ../$src/Configure && \
1524 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1525 then
1526 rsrc=../$src
1527 break
1528 fi
1529 done
1530fi
1531case "$rsrc" in
1532'')
1533 cat <<EOM >&4
1534
1535Sorry, I can't seem to locate the source dir for $package. Please start
1536Configure with an explicit path -- i.e. /some/path/Configure.
1537
1538EOM
1539 exit 1
1540 ;;
1541../.) rsrc='..';;
1542*)
1543 echo " "
1544 echo "Sources for $package found in \"$src\"." >&4
1545 ;;
1546esac
1547
1548: script used to extract .SH files with variable substitutions
1549cat >extract <<'EOS'
1550PERL_CONFIG_SH=true
1551echo "Doing variable substitutions on .SH files..."
1552if test -f MANIFEST; then
1553 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1554else
1555 echo "(Looking for .SH files under the source directory.)"
1556 set x `(cd $src; find . -name "*.SH" -print)`
1557fi
1558shift
1559case $# in
15600) set x `(cd $src; echo *.SH)`; shift;;
1561esac
1562if test ! -f $src/$1; then
1563 shift
1564fi
1565mkdir_p='
1566name=$1;
1567create="";
1568while test $name; do
1569 if test ! -d "$name"; then
1570 create="$name $create";
1571 name=`echo $name | sed -e "s|^[^/]*$||"`;
1572 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1573 else
1574 name="";
1575 fi;
1576done;
1577for file in $create; do
1578 mkdir $file;
1579done
1580'
1581for file in $*; do
1582 case "$src" in
1583 ".")
1584 case "$file" in
1585 */*)
1586 dir=`expr X$file : 'X\(.*\)/'`
1587 file=`expr X$file : 'X.*/\(.*\)'`
1588 (cd $dir && . ./$file)
1589 ;;
1590 *)
1591 . ./$file
1592 ;;
1593 esac
1594 ;;
1595 *)
1596 case "$file" in
1597 */*)
1598 dir=`expr X$file : 'X\(.*\)/'`
1599 file=`expr X$file : 'X.*/\(.*\)'`
1600 (set x $dir; shift; eval $mkdir_p)
1601 sh <$src/$dir/$file
1602 ;;
1603 *)
1604 sh <$src/$file
1605 ;;
1606 esac
1607 ;;
1608 esac
1609done
1610if test -f $src/config_h.SH; then
1611 if test ! -f config.h; then
1612 : oops, they left it out of MANIFEST, probably, so do it anyway.
1613 . $src/config_h.SH
1614 fi
1615fi
1616EOS
1617
1618: extract files and exit if asked to do so
1619case "$extractsh" in
1620true)
1621 case "$realsilent" in
1622 true) ;;
1623 *) exec 1>&4;;
1624 esac
1625 case "$config_sh" in
1626 '') config_sh='config.sh';;
1627 esac
1628 echo " "
1629 echo "Fetching answers from $config_sh..."
1630 cd ..
1631 . $config_sh
1632 test "$override" && . ./optdef.sh
1633 echo " "
1634 . UU/extract
1635 rm -rf UU
1636 echo "Extraction done."
1637 exit 0
1638 ;;
1639esac
1640
1641: Eunice requires " " instead of "", can you believe it
1642echo " "
1643: Here we go...
1644echo "Beginning of configuration questions for $package."
1645
1646trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1647
1648: first determine how to suppress newline on echo command
1649echo " "
1650echo "Checking echo to see how to suppress newlines..."
1651(echo "hi there\c" ; echo " ") >.echotmp
1652if $contains c .echotmp >/dev/null 2>&1 ; then
1653 echo "...using -n."
1654 n='-n'
1655 c=''
1656else
1657 cat <<'EOM'
1658...using \c
1659EOM
1660 n=''
1661 c='\c'
1662fi
1663echo $n "The star should be here-->$c"
1664echo '*'
1665rm -f .echotmp
1666
1667: Now test for existence of everything in MANIFEST
1668echo " "
1669if test -f $rsrc/MANIFEST; then
1670 echo "First let's make sure your kit is complete. Checking..." >&4
1671 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1672 rm -f missing
1673 tmppwd=`pwd`
1674 for filelist in x??; do
1675 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1676 done
1677 if test -s missing; then
1678 cat missing >&4
1679 cat >&4 <<'EOM'
1680
1681THIS PACKAGE SEEMS TO BE INCOMPLETE.
1682
1683You have the option of continuing the configuration process, despite the
1684distinct possibility that your kit is damaged, by typing 'y'es. If you
1685do, don't blame me if something goes wrong. I advise you to type 'n'o
1686and contact the author (perlbug@perl.org).
1687
1688EOM
1689 echo $n "Continue? [n] $c" >&4
1690 read ans
1691 case "$ans" in
1692 y*)
1693 echo "Continuing..." >&4
1694 rm -f missing
1695 ;;
1696 *)
1697 echo "ABORTING..." >&4
1698 kill $$
1699 ;;
1700 esac
1701 else
1702 echo "Looks good..."
1703 fi
1704else
1705 echo "There is no MANIFEST file. I hope your kit is complete !"
1706fi
1707rm -f missing x??
1708
1709echo " "
1710: Find the appropriate value for a newline for tr
1711if test -n "$DJGPP"; then
1712 trnl='\012'
1713fi
1714if test X"$trnl" = X; then
1715 case "`echo foo|tr '\n' x 2>/dev/null`" in
1716 foox) trnl='\n' ;;
1717 esac
1718fi
1719if test X"$trnl" = X; then
1720 case "`echo foo|tr '\012' x 2>/dev/null`" in
1721 foox) trnl='\012' ;;
1722 esac
1723fi
1724if test X"$trnl" = X; then
1725 cat <<EOM >&2
1726
1727$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1728
1729EOM
1730 exit 1
1731fi
1732
1733: compute the number of columns on the terminal for proper question formatting
1734case "$COLUMNS" in
1735'') COLUMNS='80';;
1736esac
1737
1738: set up the echo used in my read
1739myecho="case \"\$xxxm\" in
1740'') echo $n \"\$rp $c\" >&4;;
1741*) case \"\$rp\" in
1742 '') echo $n \"[\$xxxm] $c\";;
1743 *)
1744 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1745 echo \"\$rp\" >&4
1746 echo $n \"[\$xxxm] $c\" >&4
1747 else
1748 echo $n \"\$rp [\$xxxm] $c\" >&4
1749 fi
1750 ;;
1751 esac;;
1752esac"
1753
1754: now set up to do reads with possible shell escape and default assignment
1755cat <<EOSC >myread
1756$startsh
1757xxxm=\$dflt
1758$myecho
1759ans='!'
1760case "\$fastread" in
1761yes) case "\$dflt" in
1762 '') ;;
1763 *) ans='';
1764 case "\$silent-\$rp" in
1765 true-) ;;
1766 *) echo " " >&4;;
1767 esac;;
1768 esac;;
1769*) case "\$silent" in
1770 true) case "\$rp" in
1771 '') ans='';;
1772 esac;;
1773 esac;;
1774esac
1775while expr "X\$ans" : "X!" >/dev/null; do
1776 read answ
1777 set x \$xxxm
1778 shift
1779 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1780 case "\$answ" in
1781 "!")
1782 sh 1>&4
1783 echo " "
1784 $myecho
1785 ;;
1786 !*)
1787 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1788 shift
1789 sh 1>&4 -c "\$*"
1790 echo " "
1791 $myecho
1792 ;;
1793 "\$ans")
1794 case "\$ans" in
1795 \\&*)
1796 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1797 shift
1798 case "\$1" in
1799 -d)
1800 fastread=yes
1801 echo "(OK, I'll run with -d after this question.)" >&4
1802 ;;
1803 -*)
1804 echo "*** Sorry, \$1 not supported yet." >&4
1805 ;;
1806 esac
1807 $myecho
1808 ans=!
1809 ;;
1810 esac;;
1811 *)
1812 case "\$aok" in
1813 y)
1814 echo "*** Substitution done -- please confirm."
1815 xxxm="\$ans"
1816 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1817 xxxm="\$ans"
1818 ans=!
1819 ;;
1820 *)
1821 echo "*** Error -- try again."
1822 ans=!
1823 ;;
1824 esac
1825 $myecho
1826 ;;
1827 esac
1828 case "\$ans\$xxxm\$nostick" in
1829 '')
1830 ans=!
1831 $myecho
1832 ;;
1833 esac
1834done
1835case "\$ans" in
1836'') ans="\$xxxm";;
1837esac
1838EOSC
1839
1840: create .config dir to save info across Configure sessions
1841test -d ../.config || mkdir ../.config
1842cat >../.config/README <<EOF
1843This directory created by Configure to save information that should
1844persist across sessions for $package.
1845
1846You may safely delete it if you wish.
1847EOF
1848
1849xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1850case "$usedevel" in
1851$define|true|[yY]*) ;;
1852*) case "$xversion" in
1853 *[13579])
1854 cat >&4 <<EOH
1855*** WHOA THERE!!! ***
1856
1857 This is an UNSTABLE DEVELOPMENT release.
1858 The version of this $package distribution is $xversion, that is, odd,
1859 (as opposed to even) and that signifies a development release.
1860 If you want a maintenance release, you want an even-numbered version.
1861
1862 Do ***NOT*** install this into production use.
1863 Data corruption and crashes are possible.
1864
1865 It is most seriously suggested that you do not continue any further
1866 unless you want to help in developing and debugging Perl.
1867
1868 If you *still* want to build perl, you can answer 'y' now,
1869 or pass -Dusedevel to Configure.
1870
1871EOH
1872 rp='Do you really want to continue?'
1873 dflt='n'
1874 . ./myread
1875 case "$ans" in
1876 [yY]) echo >&4 "Okay, continuing."
1877 usedevel="$define" ;;
1878 *) echo >&4 "Okay, bye."
1879 exit 1
1880 ;;
1881 esac
1882 ;;
1883 esac
1884 ;;
1885esac
1886case "$usedevel" in
1887$define|true|[yY]*)
1888 case "$versiononly" in
1889 '') versiononly="$define" ;;
1890 esac
1891 case "$installusrbinperl" in
1892 '') installusrbinperl="$undef" ;;
1893 esac
1894 ;;
1895esac
1896
1897: general instructions
1898needman=true
1899firsttime=true
1900user=`(logname) 2>/dev/null`
1901case "$user" in
1902'') user=`whoami 2>&1`;;
1903esac
1904if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1905 firsttime=false
1906 echo " "
1907 rp='Would you like to see the instructions?'
1908 dflt=n
1909 . ./myread
1910 case "$ans" in
1911 [yY]*) ;;
1912 *) needman=false;;
1913 esac
1914fi
1915if $needman; then
1916 cat <<EOH
1917
1918This installation shell script will examine your system and ask you questions
1919to determine how the perl5 package should be installed. If you get
1920stuck on a question, you may use a ! shell escape to start a subshell or
1921execute a command. Many of the questions will have default answers in square
1922brackets; typing carriage return will give you the default.
1923
1924On some of the questions which ask for file or directory names you are allowed
1925to use the ~name construct to specify the login directory belonging to "name",
1926even if you don't have a shell which knows about that. Questions where this is
1927allowed will be marked "(~name ok)".
1928
1929EOH
1930 rp=''
1931 dflt='Type carriage return to continue'
1932 . ./myread
1933 cat <<'EOH'
1934
1935The prompter used in this script allows you to use shell variables and
1936backticks in your answers. You may use $1, $2, etc... to refer to the words
1937in the default answer, as if the default line was a set of arguments given to a
1938script shell. This means you may also use $* to repeat the whole default line,
1939so you do not have to re-type everything to add something to the default.
1940
1941Everytime there is a substitution, you will have to confirm. If there is an
1942error (e.g. an unmatched backtick), the default answer will remain unchanged
1943and you will be prompted again.
1944
1945If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1946the questions and use the computed defaults (or the previous answers if there
1947was already a config.sh file). Type 'Configure -h' for a list of options.
1948You may also start interactively and then answer '& -d' at any prompt to turn
1949on the non-interactive behaviour for the remainder of the execution.
1950
1951EOH
1952 . ./myread
1953 cat <<EOH
1954
1955Much effort has been expended to ensure that this shell script will run on any
1956Unix system. If despite that it blows up on yours, your best bet is to edit
1957Configure and run it again. If you can't run Configure for some reason,
1958you'll have to generate a config.sh file by hand. Whatever problems you
1959have, let me (perlbug@perl.org) know how I blew it.
1960
1961This installation script affects things in two ways:
1962
19631) it may do direct variable substitutions on some of the files included
1964 in this kit.
19652) it builds a config.h file for inclusion in C programs. You may edit
1966 any of these files as the need arises after running this script.
1967
1968If you make a mistake on a question, there is no easy way to back up to it
1969currently. The easiest thing to do is to edit config.sh and rerun all the SH
1970files. Configure will offer to let you do this before it runs the SH files.
1971
1972EOH
1973 dflt='Type carriage return to continue'
1974 . ./myread
1975 case "$firsttime" in
1976 true) echo $user >>../.config/instruct;;
1977 esac
1978fi
1979
1980: find out where common programs are
1981echo " "
1982echo "Locating common programs..." >&4
1983cat <<EOSC >loc
1984$startsh
1985case \$# in
19860) exit 1;;
1987esac
1988thing=\$1
1989shift
1990dflt=\$1
1991shift
1992for dir in \$*; do
1993 case "\$thing" in
1994 .)
1995 if test -d \$dir/\$thing; then
1996 echo \$dir
1997 exit 0
1998 fi
1999 ;;
2000 *)
2001 for thisthing in \$dir/\$thing; do
2002 : just loop through to pick last item
2003 done
2004 if test -f \$thisthing; then
2005 echo \$thisthing
2006 exit 0
2007 elif test -f \$dir/\$thing.exe; then
2008 if test -n "$DJGPP"; then
2009 echo \$dir/\$thing.exe
2010 else
2011 : on Eunice apparently
2012 echo \$dir/\$thing
2013 fi
2014 exit 0
2015 fi
2016 ;;
2017 esac
2018done
2019echo \$dflt
2020exit 1
2021EOSC
2022chmod +x loc
2023$eunicefix loc
2024loclist="
2025awk
2026cat
2027chmod
2028comm
2029cp
2030echo
2031expr
2032grep
2033ls
2034make
2035mkdir
2036rm
2037sed
2038sort
2039touch
2040tr
2041uniq
2042"
2043trylist="
2044Mcc
2045ar
2046bison
2047byacc
2048cpp
2049csh
2050date
2051egrep
2052gzip
2053less
2054ln
2055more
2056nm
2057nroff
2058pg
2059test
2060uname
2061zip
2062"
2063pth=`echo $PATH | sed -e "s/$p_/ /g"`
2064pth="$pth /lib /usr/lib"
2065for file in $loclist; do
2066 eval xxx=\$$file
2067 case "$xxx" in
2068 /*|?:[\\/]*)
2069 if test -f "$xxx"; then
2070 : ok
2071 else
2072 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2073 xxx=`./loc $file $file $pth`
2074 fi
2075 ;;
2076 '') xxx=`./loc $file $file $pth`;;
2077 *) xxx=`./loc $xxx $xxx $pth`;;
2078 esac
2079 eval $file=$xxx
2080 eval _$file=$xxx
2081 case "$xxx" in
2082 /*)
2083 echo $file is in $xxx.
2084 ;;
2085 ?:[\\/]*)
2086 echo $file is in $xxx.
2087 ;;
2088 *)
2089 echo "I don't know where '$file' is, and my life depends on it." >&4
2090 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2091 exit 1
2092 ;;
2093 esac
2094done
2095echo " "
2096echo "Don't worry if any of the following aren't found..."
2097say=offhand
2098for file in $trylist; do
2099 eval xxx=\$$file
2100 case "$xxx" in
2101 /*|?:[\\/]*)
2102 if test -f "$xxx"; then
2103 : ok
2104 else
2105 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2106 xxx=`./loc $file $file $pth`
2107 fi
2108 ;;
2109 '') xxx=`./loc $file $file $pth`;;
2110 *) xxx=`./loc $xxx $xxx $pth`;;
2111 esac
2112 eval $file=$xxx
2113 eval _$file=$xxx
2114 case "$xxx" in
2115 /*)
2116 echo $file is in $xxx.
2117 ;;
2118 ?:[\\/]*)
2119 echo $file is in $xxx.
2120 ;;
2121 *)
2122 echo "I don't see $file out there, $say."
2123 say=either
2124 ;;
2125 esac
2126done
2127case "$egrep" in
2128egrep)
2129 echo "Substituting grep for egrep."
2130 egrep=$grep
2131 ;;
2132esac
2133case "$ln" in
2134ln)
2135 echo "Substituting cp for ln."
2136 ln=$cp
2137 ;;
2138esac
2139case "$test" in
2140test)
2141 echo "Hopefully test is built into your sh."
2142 ;;
2143*)
2144 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2145 echo "Using the test built into your sh."
2146 test=test
2147 _test=test
2148 fi
2149 ;;
2150esac
2151case "$echo" in
2152echo)
2153 echo "Hopefully echo is built into your sh."
2154 ;;
2155'') ;;
2156*)
2157 echo " "
2158echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2159 $echo $n "hi there$c" >foo1
2160 echo $n "hi there$c" >foo2
2161 if cmp foo1 foo2 >/dev/null 2>&1; then
2162 echo "They are compatible. In fact, they may be identical."
2163 else
2164 case "$n" in
2165 '-n') n='' c='\c';;
2166 *) n='-n' c='';;
2167 esac
2168 cat <<FOO
2169They are not compatible! You are probably running ksh on a non-USG system.
2170I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2171have echo built in and we may have to run some Bourne shell scripts. That
2172means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2173
2174FOO
2175 $echo $n "The star should be here-->$c"
2176 $echo "*"
2177 fi
2178 $rm -f foo1 foo2
2179 ;;
2180esac
2181
2182cat <<EOS >checkcc
2183$startsh
2184EOS
2185cat <<'EOSC' >>checkcc
2186case "$cc" in
2187'') ;;
2188*) $rm -f try try.*
2189 $cat >try.c <<EOM
2190int main(int argc, char *argv[]) {
2191 return 0;
2192}
2193EOM
2194 if $cc -o try $ccflags $ldflags try.c; then
2195 :
2196 else
2197 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2198 despair=yes
2199 trygcc=yes
2200 case "$cc" in
2201 *gcc*) trygcc=no ;;
2202 esac
2203 case "`$cc -v -c try.c 2>&1`" in
2204 *gcc*) trygcc=no ;;
2205 esac
2206 if $test X"$trygcc" = Xyes; then
2207 if gcc -o try -c try.c; then
2208 echo " "
2209 echo "You seem to have a working gcc, though." >&4
2210 rp="Would you like to use it?"
2211 dflt=y
2212 if $test -f myread; then
2213 . ./myread
2214 else
2215 if $test -f UU/myread; then
2216 . ./UU/myread
2217 else
2218 echo "Cannot find myread, sorry. Aborting." >&2
2219 exit 1
2220 fi
2221 fi
2222 case "$ans" in
2223 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2224 esac
2225 fi
2226 fi
2227 if $test X"$despair" = Xyes; then
2228 $cat >&4 <<EOM
2229You need to find a working C compiler.
2230Either (purchase and) install the C compiler supplied by your OS vendor,
2231or for a free C compiler try http://gcc.gnu.org/
2232I cannot continue any further, aborting.
2233EOM
2234 exit 1
2235 fi
2236 fi
2237 $rm -f try try.*
2238 ;;
2239esac
2240EOSC
2241
2242: determine whether symbolic links are supported
2243echo " "
2244$touch blurfl
2245if $ln -s blurfl sym > /dev/null 2>&1 ; then
2246 echo "Symbolic links are supported." >&4
2247 lns="$ln -s"
2248else
2249 echo "Symbolic links are NOT supported." >&4
2250 lns="$ln"
2251fi
2252$rm -f blurfl sym
2253
2254: determine whether symbolic links are supported
2255echo " "
2256case "$lns" in
2257*"ln -s")
2258 echo "Checking how to test for symbolic links..." >&4
2259 $lns blurfl sym
2260 if $test "X$issymlink" = X; then
2261 sh -c "PATH= test -h sym" >/dev/null 2>&1
2262 if test $? = 0; then
2263 issymlink="test -h"
2264 fi
2265 fi
2266 if $test "X$issymlink" = X; then
2267 if $test -h >/dev/null 2>&1; then
2268 issymlink="$test -h"
2269 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2270 fi
2271 fi
2272 if $test "X$issymlink" = X; then
2273 if $test -L sym 2>/dev/null; then
2274 issymlink="$test -L"
2275 fi
2276 fi
2277 if $test "X$issymlink" != X; then
2278 echo "You can test for symbolic links with '$issymlink'." >&4
2279 else
2280 echo "I do not know how you can test for symbolic links." >&4
2281 fi
2282 $rm -f blurfl sym
2283 ;;
2284*) echo "No symbolic links, so not testing for their testing..." >&4
2285 ;;
2286esac
2287echo " "
2288
2289
2290case "$mksymlinks" in
2291$define|true|[yY]*)
2292 case "$src" in
2293 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2294 exit 1
2295 ;;
2296 *) case "$lns:$issymlink" in
2297 *"ln -s:"*"test -"?)
2298 echo "Creating the symbolic links..." >&4
2299 echo "(First creating the subdirectories...)" >&4
2300 cd ..
2301 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2302 read directory
2303 test -z "$directory" && break
2304 mkdir -p $directory
2305 done
2306 # Sanity check 1.
2307 if test ! -d t/base; then
2308 echo "Failed to create the subdirectories. Aborting." >&4
2309 exit 1
2310 fi
2311 echo "(Then creating the symlinks...)" >&4
2312 awk '{print $1}' $src/MANIFEST | while true; do
2313 read filename
2314 test -z "$filename" && break
2315 if test -f $filename; then
2316 if $issymlink $filename; then
2317 rm -f $filename
2318 fi
2319 fi
2320 if test -f $filename; then
2321 echo "$filename already exists, not symlinking."
2322 else
2323 ln -s $src/$filename $filename
2324 fi
2325 done
2326 # Sanity check 2.
2327 if test ! -f t/base/lex.t; then
2328 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2329 exit 1
2330 fi
2331 cd UU
2332 ;;
2333 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2334 ;;
2335 esac
2336 ;;
2337 esac
2338 ;;
2339esac
2340
2341
2342case "$usecrosscompile" in
2343$define|true|[yY]*)
2344 $echo "Cross-compiling..."
2345 croak=''
2346 case "$cc" in
2347 *-*-gcc) # A cross-compiling gcc, probably.
2348 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2349 ar=$targetarch-ar
2350 # leave out ld, choosing it is more complex
2351 nm=$targetarch-nm
2352 ranlib=$targetarch-ranlib
2353 $echo 'extern int foo;' > try.c
2354 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2355 shift
2356 if $test $# -gt 0; then
2357 incpth="$incpth $*"
2358 incpth="`$echo $incpth|$sed 's/^ //'`"
2359 echo "Guessing incpth '$incpth'." >&4
2360 for i in $*; do
2361 j="`$echo $i|$sed 's,/include$,/lib,'`"
2362 if $test -d $j; then
2363 libpth="$libpth $j"
2364 fi
2365 done
2366 libpth="`$echo $libpth|$sed 's/^ //'`"
2367 echo "Guessing libpth '$libpth'." >&4
2368 fi
2369 $rm -f try.c
2370 ;;
2371 esac
2372 case "$targetarch" in
2373 '') echo "Targetarch not defined." >&4; croak=y ;;
2374 *) echo "Using targetarch $targetarch." >&4 ;;
2375 esac
2376 case "$incpth" in
2377 '') echo "Incpth not defined." >&4; croak=y ;;
2378 *) echo "Using incpth '$incpth'." >&4 ;;
2379 esac
2380 case "$libpth" in
2381 '') echo "Libpth not defined." >&4; croak=y ;;
2382 *) echo "Using libpth '$libpth'." >&4 ;;
2383 esac
2384 case "$usrinc" in
2385 '') for i in $incpth; do
2386 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2387 usrinc=$i
2388 echo "Guessing usrinc $usrinc." >&4
2389 break
2390 fi
2391 done
2392 case "$usrinc" in
2393 '') echo "Usrinc not defined." >&4; croak=y ;;
2394 esac
2395 ;;
2396 *) echo "Using usrinc $usrinc." >&4 ;;
2397 esac
2398 case "$targethost" in
2399 '') echo "Targethost not defined." >&4; croak=y ;;
2400 *) echo "Using targethost $targethost." >&4
2401 esac
2402 locincpth=' '
2403 loclibpth=' '
2404 case "$croak" in
2405 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2406 esac
2407 case "$src" in
2408 /*) run=$src/Cross/run
2409 targetmkdir=$src/Cross/mkdir
2410 to=$src/Cross/to
2411 from=$src/Cross/from
2412 ;;
2413 *) pwd=`$test -f ../Configure & cd ..; pwd`
2414 run=$pwd/Cross/run
2415 targetmkdir=$pwd/Cross/mkdir
2416 to=$pwd/Cross/to
2417 from=$pwd/Cross/from
2418 ;;
2419 esac
2420 case "$targetrun" in
2421 '') targetrun=ssh ;;
2422 esac
2423 case "$targetto" in
2424 '') targetto=scp ;;
2425 esac
2426 case "$targetfrom" in
2427 '') targetfrom=scp ;;
2428 esac
2429 run=$run-$targetrun
2430 to=$to-$targetto
2431 from=$from-$targetfrom
2432 case "$targetdir" in
2433 '') targetdir=/tmp
2434 echo "Guessing targetdir $targetdir." >&4
2435 ;;
2436 esac
2437 case "$targetuser" in
2438 '') targetuser=root
2439 echo "Guessing targetuser $targetuser." >&4
2440 ;;
2441 esac
2442 case "$targetfrom" in
2443 scp) q=-q ;;
2444 *) q='' ;;
2445 esac
2446 case "$targetrun" in
2447 ssh|rsh)
2448 cat >$run <<EOF
2449#!/bin/sh
2450case "\$1" in
2451-cwd)
2452 shift
2453 cwd=\$1
2454 shift
2455 ;;
2456esac
2457case "\$cwd" in
2458'') cwd=$targetdir ;;
2459esac
2460exe=\$1
2461shift
2462if $test ! -f \$exe.xok; then
2463 $to \$exe
2464 $touch \$exe.xok
2465fi
2466$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2467EOF
2468 ;;
2469 *) echo "Unknown targetrun '$targetrun'" >&4
2470 exit 1
2471 ;;
2472 esac
2473 case "$targetmkdir" in
2474 */Cross/mkdir)
2475 cat >$targetmkdir <<EOF
2476#!/bin/sh
2477$targetrun -l $targetuser $targethost "mkdir -p \$@"
2478EOF
2479 $chmod a+rx $targetmkdir
2480 ;;
2481 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2482 exit 1
2483 ;;
2484 esac
2485 case "$targetto" in
2486 scp|rcp)
2487 cat >$to <<EOF
2488#!/bin/sh
2489for f in \$@
2490do
2491 case "\$f" in
2492 /*)
2493 $targetmkdir \`dirname \$f\`
2494 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2495 ;;
2496 *)
2497 $targetmkdir $targetdir/\`dirname \$f\`
2498 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2499 ;;
2500 esac
2501done
2502exit 0
2503EOF
2504 ;;
2505 cp) cat >$to <<EOF
2506#!/bin/sh
2507for f in \$@
2508do
2509 case "\$f" in
2510 /*)
2511 $mkdir -p $targetdir/\`dirname \$f\`
2512 $cp \$f $targetdir/\$f || exit 1
2513 ;;
2514 *)
2515 $targetmkdir $targetdir/\`dirname \$f\`
2516 $cp \$f $targetdir/\$f || exit 1
2517 ;;
2518 esac
2519done
2520exit 0
2521EOF
2522 ;;
2523 *) echo "Unknown targetto '$targetto'" >&4
2524 exit 1
2525 ;;
2526 esac
2527 case "$targetfrom" in
2528 scp|rcp)
2529 cat >$from <<EOF
2530#!/bin/sh
2531for f in \$@
2532do
2533 $rm -f \$f
2534 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2535done
2536exit 0
2537EOF
2538 ;;
2539 cp) cat >$from <<EOF
2540#!/bin/sh
2541for f in \$@
2542do
2543 $rm -f \$f
2544 cp $targetdir/\$f . || exit 1
2545done
2546exit 0
2547EOF
2548 ;;
2549 *) echo "Unknown targetfrom '$targetfrom'" >&4
2550 exit 1
2551 ;;
2552 esac
2553 if $test ! -f $run; then
2554 echo "Target 'run' script '$run' not found." >&4
2555 else
2556 $chmod a+rx $run
2557 fi
2558 if $test ! -f $to; then
2559 echo "Target 'to' script '$to' not found." >&4
2560 else
2561 $chmod a+rx $to
2562 fi
2563 if $test ! -f $from; then
2564 echo "Target 'from' script '$from' not found." >&4
2565 else
2566 $chmod a+rx $from
2567 fi
2568 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2569 exit 1
2570 fi
2571 cat >&4 <<EOF
2572Using '$run' for remote execution,
2573and '$from' and '$to'
2574for remote file transfer.
2575EOF
2576 ;;
2577*) run=''
2578 to=:
2579 from=:
2580 usecrosscompile='undef'
2581 targetarch=''
2582 ;;
2583esac
2584
2585: see whether [:lower:] and [:upper:] are supported character classes
2586echo " "
2587case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2588ABYZ)
2589 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2590 up='[:upper:]'
2591 low='[:lower:]'
2592 ;;
2593*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2594 # (0xc9 and 0xd1), therefore that is a nice testing point.
2595 if test "X$up" = X -o "X$low" = X; then
2596 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2597 ij) up='[A-Z]'
2598 low='[a-z]'
2599 ;;
2600 esac
2601 fi
2602 if test "X$up" = X -o "X$low" = X; then
2603 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2604 ij) up='A-Z'
2605 low='a-z'
2606 ;;
2607 esac
2608 fi
2609 if test "X$up" = X -o "X$low" = X; then
2610 case "`echo IJ | od -x 2>/dev/null`" in
2611 *C9D1*|*c9d1*)
2612 echo "Hey, this might be EBCDIC." >&4
2613 if test "X$up" = X -o "X$low" = X; then
2614 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2615 ij) up='[A-IJ-RS-Z]'
2616 low='[a-ij-rs-z]'
2617 ;;
2618 esac
2619 fi
2620 if test "X$up" = X -o "X$low" = X; then
2621 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2622 ij) up='A-IJ-RS-Z'
2623 low='a-ij-rs-z'
2624 ;;
2625 esac
2626 fi
2627 ;;
2628 esac
2629 fi
2630esac
2631case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2632ij)
2633 echo "Using $up and $low to convert case." >&4
2634 ;;
2635*)
2636 echo "I don't know how to translate letters from upper to lower case." >&4
2637 echo "Your tr is not acting any way I know of." >&4
2638 exit 1
2639 ;;
2640esac
2641: set up the translation script tr, must be called with ./tr of course
2642cat >tr <<EOSC
2643$startsh
2644case "\$1\$2" in
2645'[A-Z][a-z]') exec $tr '$up' '$low';;
2646'[a-z][A-Z]') exec $tr '$low' '$up';;
2647esac
2648exec $tr "\$@"
2649EOSC
2650chmod +x tr
2651$eunicefix tr
2652
2653: Try to determine whether config.sh was made on this system
2654case "$config_sh" in
2655'')
2656myuname=`$uname -a 2>/dev/null`
2657$test -z "$myuname" && myuname=`hostname 2>/dev/null`
2658# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2659# because the A-Z/a-z are not consecutive.
2660myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2661 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2662newmyuname="$myuname"
2663dflt=n
2664case "$knowitall" in
2665'')
2666 if test -f ../config.sh; then
2667 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2668 eval "`grep myuname= ../config.sh`"
2669 fi
2670 if test "X$myuname" = "X$newmyuname"; then
2671 dflt=y
2672 fi
2673 fi
2674 ;;
2675*) dflt=y;;
2676esac
2677
2678: Get old answers from old config file if Configure was run on the
2679: same system, otherwise use the hints.
2680hint=default
2681cd ..
2682if test -f config.sh; then
2683 echo " "
2684 rp="I see a config.sh file. Shall I use it to set the defaults?"
2685 . UU/myread
2686 case "$ans" in
2687 n*|N*) echo "OK, I'll ignore it."
2688 mv config.sh config.sh.old
2689 myuname="$newmyuname"
2690 ;;
2691 *) echo "Fetching default answers from your old config.sh file..." >&4
2692 tmp_n="$n"
2693 tmp_c="$c"
2694 tmp_sh="$sh"
2695 . ./config.sh
2696 cp config.sh UU
2697 n="$tmp_n"
2698 c="$tmp_c"
2699 : Older versions did not always set $sh. Catch re-use of such
2700 : an old config.sh.
2701 case "$sh" in
2702 '') sh="$tmp_sh" ;;
2703 esac
2704 hint=previous
2705 ;;
2706 esac
2707fi
2708. ./UU/checkcc
2709if test ! -f config.sh; then
2710 $cat <<EOM
2711
2712First time through, eh? I have some defaults handy for some systems
2713that need some extra help getting the Configure answers right:
2714
2715EOM
2716 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2717 dflt=''
2718 : Half the following guesses are probably wrong... If you have better
2719 : tests or hints, please send them to perlbug@perl.org
2720 : The metaconfig authors would also appreciate a copy...
2721 $test -f /irix && osname=irix
2722 $test -f /xenix && osname=sco_xenix
2723 $test -f /dynix && osname=dynix
2724 $test -f /dnix && osname=dnix
2725 $test -f /lynx.os && osname=lynxos
2726 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2727 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2728 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2729 $test -f /bin/mips && /bin/mips && osname=mips
2730 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2731 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2732 $test -d /usr/apollo/bin && osname=apollo
2733 $test -f /etc/saf/_sactab && osname=svr4
2734 $test -d /usr/include/minix && osname=minix
2735 if $test -d /MachTen -o -d /MachTen_Folder; then
2736 osname=machten
2737 if $test -x /sbin/version; then
2738 osvers=`/sbin/version | $awk '{print $2}' |
2739 $sed -e 's/[A-Za-z]$//'`
2740 elif $test -x /usr/etc/version; then
2741 osvers=`/usr/etc/version | $awk '{print $2}' |
2742 $sed -e 's/[A-Za-z]$//'`
2743 else
2744 osvers="$2.$3"
2745 fi
2746 fi
2747
2748 $test -f /sys/posix.dll &&
2749 $test -f /usr/bin/what &&
2750 set X `/usr/bin/what /sys/posix.dll` &&
2751 $test "$3" = UWIN &&
2752 osname=uwin &&
2753 osvers="$5"
2754
2755 if $test -f $uname; then
2756 set X $myuname
2757 shift
2758
2759 case "$5" in
2760 fps*) osname=fps ;;
2761 mips*)
2762 case "$4" in
2763 umips) osname=umips ;;
2764 *) osname=mips ;;
2765 esac;;
2766 [23]100) osname=mips ;;
2767 next*) osname=next ;;
2768 i386*)
2769 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2770 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2771 osname='sco'
2772 osvers=$tmp
2773 elif $test -f /etc/kconfig; then
2774 osname=isc
2775 if test "$lns" = "$ln -s"; then
2776 osvers=4
2777 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2778 osvers=3
2779 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2780 osvers=2
2781 fi
2782 fi
2783 tmp=''
2784 ;;
2785 pc*)
2786 if test -n "$DJGPP"; then
2787 osname=dos
2788 osvers=djgpp
2789 fi
2790 ;;
2791 esac
2792
2793 case "$1" in
2794 aix) osname=aix
2795 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2796 case "$tmp" in
2797 'not found') osvers="$4"."$3" ;;
2798 '<3240'|'<>3240') osvers=3.2.0 ;;
2799 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2800 '=3250'|'>3250') osvers=3.2.5 ;;
2801 *) osvers=$tmp;;
2802 esac
2803 ;;
2804 bsd386) osname=bsd386
2805 osvers=`$uname -r`
2806 ;;
2807 cygwin*) osname=cygwin
2808 osvers="$3"
2809 ;;
2810 *dc.osx) osname=dcosx
2811 osvers="$3"
2812 ;;
2813 dnix) osname=dnix
2814 osvers="$3"
2815 ;;
2816 domainos) osname=apollo
2817 osvers="$3"
2818 ;;
2819 dgux) osname=dgux
2820 osvers="$3"
2821 ;;
2822 dynixptx*) osname=dynixptx
2823 osvers=`echo "$4"|sed 's/^v//'`
2824 ;;
2825 freebsd) osname=freebsd
2826 osvers="$3" ;;
2827 genix) osname=genix ;;
2828 hp*) osname=hpux
2829 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2830 ;;
2831 irix*) osname=irix
2832 case "$3" in
2833 4*) osvers=4 ;;
2834 5*) osvers=5 ;;
2835 *) osvers="$3" ;;
2836 esac
2837 ;;
2838 linux) osname=linux
2839 case "$3" in
2840 *) osvers="$3" ;;
2841 esac
2842 ;;
2843 MiNT) osname=mint
2844 ;;
2845 netbsd*) osname=netbsd
2846 osvers="$3"
2847 ;;
2848 news-os) osvers="$3"
2849 case "$3" in
2850 4*) osname=newsos4 ;;
2851 *) osname=newsos ;;
2852 esac
2853 ;;
2854 next*) osname=next ;;
2855 nonstop-ux) osname=nonstopux ;;
2856 POSIX-BC | posix-bc ) osname=posix-bc
2857 osvers="$3"
2858 ;;
2859 powerux | power_ux | powermax_os | powermaxos | \
2860 powerunix | power_unix) osname=powerux
2861 osvers="$3"
2862 ;;
2863 qnx) osname=qnx
2864 osvers="$4"
2865 ;;
2866 solaris) osname=solaris
2867 case "$3" in
2868 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2869 *) osvers="$3" ;;
2870 esac
2871 ;;
2872 sunos) osname=sunos
2873 case "$3" in
2874 5*) osname=solaris
2875 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2876 *) osvers="$3" ;;
2877 esac
2878 ;;
2879 titanos) osname=titanos
2880 case "$3" in
2881 1*) osvers=1 ;;
2882 2*) osvers=2 ;;
2883 3*) osvers=3 ;;
2884 4*) osvers=4 ;;
2885 *) osvers="$3" ;;
2886 esac
2887 ;;
2888 ultrix) osname=ultrix
2889 osvers="$3"
2890 ;;
2891 osf1|mls+) case "$5" in
2892 alpha)
2893 osname=dec_osf
2894 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2895 case "$osvers" in
2896 [1-9].[0-9]*) ;;
2897 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2898 esac
2899 ;;
2900 hp*) osname=hp_osf1 ;;
2901 mips) osname=mips_osf1 ;;
2902 esac
2903 ;;
2904 unixware) osname=svr5
2905 osvers="$4"
2906 ;;
2907 uts) osname=uts
2908 osvers="$3"
2909 ;;
2910 $2) case "$osname" in
2911 *isc*) ;;
2912 *freebsd*) ;;
2913 svr*)
2914 : svr4.x or possibly later
2915 case "svr$3" in
2916 ${osname}*)
2917 osname=svr$3
2918 osvers=$4
2919 ;;
2920 esac
2921 case "$osname" in
2922 svr4.0)
2923 : Check for ESIX
2924 if test -f /stand/boot ; then
2925 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2926 if test -n "$INITPROG" -a -f "$INITPROG"; then
2927 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2928 if test -n "$isesix"; then
2929 osname=esix4
2930 fi
2931 fi
2932 fi
2933 ;;
2934 esac
2935 ;;
2936 *) if test -f /etc/systemid; then
2937 osname=sco
2938 set `echo $3 | $sed 's/\./ /g'` $4
2939 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2940 osvers=$1.$2.$3
2941 elif $test -f $src/hints/sco_$1_$2.sh; then
2942 osvers=$1.$2
2943 elif $test -f $src/hints/sco_$1.sh; then
2944 osvers=$1
2945 fi
2946 else
2947 case "$osname" in
2948 '') : Still unknown. Probably a generic Sys V.
2949 osname="sysv"
2950 osvers="$3"
2951 ;;
2952 esac
2953 fi
2954 ;;
2955 esac
2956 ;;
2957 *) case "$osname" in
2958 '') : Still unknown. Probably a generic BSD.
2959 osname="$1"
2960 osvers="$3"
2961 ;;
2962 esac
2963 ;;
2964 esac
2965 else
2966 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2967 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2968 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2969 osname=news_os
2970 fi
2971 $rm -f UU/kernel.what
2972 elif test -d c:/.; then
2973 set X $myuname
2974 osname=os2
2975 osvers="$5"
2976 fi
2977 fi
2978
2979 case "$targetarch" in
2980 '') ;;
2981 *) hostarch=$osname
2982 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2983 osvers=''
2984 ;;
2985 esac
2986
2987 : Now look for a hint file osname_osvers, unless one has been
2988 : specified already.
2989 case "$hintfile" in
2990 ''|' ')
2991 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2992 : Also try without trailing minor version numbers.
2993 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2994 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2995 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2996 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2997 case "$file" in
2998 '') dflt=none ;;
2999 *) case "$osvers" in
3000 '') dflt=$file
3001 ;;
3002 *) if $test -f $src/hints/$file.sh ; then
3003 dflt=$file
3004 elif $test -f $src/hints/$xfile.sh ; then
3005 dflt=$xfile
3006 elif $test -f $src/hints/$xxfile.sh ; then
3007 dflt=$xxfile
3008 elif $test -f $src/hints/$xxxfile.sh ; then
3009 dflt=$xxxfile
3010 elif $test -f $src/hints/$xxxxfile.sh ; then
3011 dflt=$xxxxfile
3012 elif $test -f "$src/hints/${osname}.sh" ; then
3013 dflt="${osname}"
3014 else
3015 dflt=none
3016 fi
3017 ;;
3018 esac
3019 ;;
3020 esac
3021 if $test -f Policy.sh ; then
3022 case "$dflt" in
3023 *Policy*) ;;
3024 none) dflt="Policy" ;;
3025 *) dflt="Policy $dflt" ;;
3026 esac
3027 fi
3028 ;;
3029 *)
3030 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3031 ;;
3032 esac
3033
3034 if $test -f Policy.sh ; then
3035 $cat <<EOM
3036
3037There's also a Policy hint file available, which should make the
3038site-specific (policy) questions easier to answer.
3039EOM
3040
3041 fi
3042
3043 $cat <<EOM
3044
3045You may give one or more space-separated answers, or "none" if appropriate.
3046A well-behaved OS will have no hints, so answering "none" or just "Policy"
3047is a good thing. DO NOT give a wrong version or a wrong OS.
3048
3049EOM
3050
3051 rp="Which of these apply, if any?"
3052 . UU/myread
3053 tans=$ans
3054 for file in $tans; do
3055 if $test X$file = XPolicy -a -f Policy.sh; then
3056 . Policy.sh
3057 $cat Policy.sh >> UU/config.sh
3058 elif $test -f $src/hints/$file.sh; then
3059 . $src/hints/$file.sh
3060 $cat $src/hints/$file.sh >> UU/config.sh
3061 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3062 : nothing
3063 else
3064 : Give one chance to correct a possible typo.
3065 echo "$file.sh does not exist"
3066 dflt=$file
3067 rp="hint to use instead?"
3068 . UU/myread
3069 for file in $ans; do
3070 if $test -f "$src/hints/$file.sh"; then
3071 . $src/hints/$file.sh
3072 $cat $src/hints/$file.sh >> UU/config.sh
3073 elif $test X$ans = X -o X$ans = Xnone ; then
3074 : nothing
3075 else
3076 echo "$file.sh does not exist -- ignored."
3077 fi
3078 done
3079 fi
3080 done
3081
3082 hint=recommended
3083 : Remember our hint file for later.
3084 if $test -f "$src/hints/$file.sh" ; then
3085 hintfile="$file"
3086 else
3087 hintfile=''
3088 fi
3089fi
3090cd UU
3091;;
3092*)
3093 echo " "
3094 echo "Fetching default answers from $config_sh..." >&4
3095 tmp_n="$n"
3096 tmp_c="$c"
3097 cd ..
3098 cp $config_sh config.sh 2>/dev/null
3099 chmod +w config.sh
3100 . ./config.sh
3101 cd UU
3102 cp ../config.sh .
3103 n="$tmp_n"
3104 c="$tmp_c"
3105 hint=previous
3106 ;;
3107esac
3108test "$override" && . ./optdef.sh
3109
3110: Restore computed paths
3111for file in $loclist $trylist; do
3112 eval $file="\$_$file"
3113done
3114
3115cat << EOM
3116
3117Configure uses the operating system name and version to set some defaults.
3118The default value is probably right if the name rings a bell. Otherwise,
3119since spelling matters for me, either accept the default or answer "none"
3120to leave it blank.
3121
3122EOM
3123case "$osname" in
3124 ''|' ')
3125 case "$hintfile" in
3126 ''|' '|none) dflt=none ;;
3127 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3128 esac
3129 ;;
3130 *) dflt="$osname" ;;
3131esac
3132rp="Operating system name?"
3133. ./myread
3134case "$ans" in
3135none) osname='' ;;
3136*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3137esac
3138echo " "
3139case "$osvers" in
3140 ''|' ')
3141 case "$hintfile" in
3142 ''|' '|none) dflt=none ;;
3143 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3144 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3145 case "$dflt" in
3146 ''|' ') dflt=none ;;
3147 esac
3148 ;;
3149 esac
3150 ;;
3151 *) dflt="$osvers" ;;
3152esac
3153rp="Operating system version?"
3154. ./myread
3155case "$ans" in
3156none) osvers='' ;;
3157*) osvers="$ans" ;;
3158esac
3159
3160
3161. ./posthint.sh
3162
3163: who configured the system
3164cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3165cf_by=`(logname) 2>/dev/null`
3166case "$cf_by" in
3167"")
3168 cf_by=`(whoami) 2>/dev/null`
3169 case "$cf_by" in
3170 "") cf_by=unknown ;;
3171 esac ;;
3172esac
3173
3174: set up the script used to warn in case of inconsistency
3175cat <<EOS >whoa
3176$startsh
3177EOS
3178cat <<'EOSC' >>whoa
3179dflt=y
3180echo " "
3181echo "*** WHOA THERE!!! ***" >&4
3182echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3183rp=" Keep the $hint value?"
3184. ./myread
3185case "$ans" in
3186y) td=$was; tu=$was;;
3187esac
3188EOSC
3189
3190: function used to set $1 to $val
3191setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3192case "$val$was" in
3193$define$undef) . ./whoa; eval "$var=\$td";;
3194$undef$define) . ./whoa; eval "$var=\$tu";;
3195*) eval "$var=$val";;
3196esac'
3197
3198case "$usethreads" in
3199$define|true|[yY]*) dflt='y';;
3200*) dflt='n';;
3201esac
3202cat <<EOM
3203
3204Perl can be built to take advantage of threads on some systems.
3205To do so, Configure can be run with -Dusethreads.
3206
3207Note that threading is a highly experimental feature, and
3208some known race conditions still remain. If you choose to try
3209it, be very sure to not actually deploy it for production
3210purposes. README.threads has more details, and is required
3211reading if you enable threads.
3212
3213If this doesn't make any sense to you, just accept the default '$dflt'.
3214EOM
3215rp='Build a threading Perl?'
3216. ./myread
3217case "$ans" in
3218y|Y) val="$define" ;;
3219*) val="$undef" ;;
3220esac
3221set usethreads
3222eval $setvar
3223
3224case "$usethreads" in
3225$define)
3226 $cat <<EOM
3227
3228As of 5.5.640, Perl has two different internal threading implementations,
3229the 5.005 version (5005threads) and an interpreter-based version
3230(ithreads) that has one interpreter per thread. Both are very
3231experimental. This arrangement exists to help developers work out
3232which one is better.
3233
3234If you're a casual user, you probably don't want interpreter-threads
3235at this time. There doesn't yet exist a way to create threads from
3236within Perl in this model, i.e., "use Thread;" will NOT work.
3237EOM
3238 : Default to ithreads unless overridden on command line or with
3239 : old config.sh
3240 dflt='y'
3241 case "$use5005threads" in
3242 $define|true|[yY]*) dflt='n';;
3243 esac
3244 case "$useithreads" in
3245 $undef|false|[nN]*) dflt='n';;
3246 esac
3247 rp='Use interpreter-based ithreads?'
3248 . ./myread
3249 case "$ans" in
3250 y|Y) val="$define" ;;
3251 *) val="$undef" ;;
3252 esac
3253 set useithreads
3254 eval $setvar
3255 : Now set use5005threads to the opposite value.
3256 case "$useithreads" in
3257 $define) val="$undef" ;;
3258 *) val="$define" ;;
3259 esac
3260 set use5005threads
3261 eval $setvar
3262 ;;
3263*)
3264 useithreads="$undef"
3265 use5005threads="$undef"
3266 ;;
3267esac
3268
3269case "$useithreads$use5005threads" in
3270"$define$define")
3271 $cat >&4 <<EOM
3272
3273You cannot have both the ithreads and the 5.005 threads enabled
3274at the same time. Disabling the 5.005 threads since they are
3275much less stable than the ithreads.
3276
3277EOM
3278 use5005threads="$undef"
3279 ;;
3280esac
3281
3282case "$d_oldpthreads" in
3283'') : Configure tests would be welcome here. For now, assume undef.
3284 val="$undef" ;;
3285*) val="$d_oldpthreads" ;;
3286esac
3287set d_oldpthreads
3288eval $setvar
3289
3290
3291case "$usethreads" in
3292"$define"|true|[yY]*)
3293: Look for a hint-file generated 'call-back-unit'. If the
3294: user has specified that a threading perl is to be built,
3295: we may need to set or change some other defaults.
3296 if $test -f usethreads.cbu; then
3297 echo "Your platform has some specific hints for threaded builds, using them..."
3298 . ./usethreads.cbu
3299 else
3300 $cat <<EOM
3301(Your platform doesn't have any specific hints for threaded builds.
3302 Assuming POSIX threads, then.)
3303EOM
3304 fi
3305 ;;
3306esac
3307
3308cat <<EOM
3309
3310Perl can be built so that multiple Perl interpreters can coexist
3311within the same Perl executable.
3312EOM
3313
3314case "$useithreads" in
3315$define)
3316 cat <<EOM
3317This multiple interpreter support is required for interpreter-based threads.
3318EOM
3319 val="$define"
3320 ;;
3321*) case "$usemultiplicity" in
3322 $define|true|[yY]*) dflt='y';;
3323 *) dflt='n';;
3324 esac
3325 echo " "
3326 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3327 rp='Build Perl for multiplicity?'
3328 . ./myread
3329 case "$ans" in
3330 y|Y) val="$define" ;;
3331 *) val="$undef" ;;
3332 esac
3333 ;;
3334esac
3335set usemultiplicity
3336eval $setvar
3337
3338
3339case "$usemorebits" in
3340"$define"|true|[yY]*)
3341 use64bitint="$define"
3342 uselongdouble="$define"
3343 usemorebits="$define"
3344 ;;
3345*) usemorebits="$undef"
3346 ;;
3347esac
3348
3349: make some quick guesses about what we are up against
3350echo " "
3351$echo $n "Hmm... $c"
3352echo exit 1 >bsd
3353echo exit 1 >usg
3354echo exit 1 >v7
3355echo exit 1 >osf1
3356echo exit 1 >eunice
3357echo exit 1 >xenix
3358echo exit 1 >venix
3359echo exit 1 >os2
3360d_bsd="$undef"
3361$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3362if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3363then
3364 echo "Looks kind of like an OSF/1 system, but we'll see..."
3365 echo exit 0 >osf1
3366elif test `echo abc | $tr a-z A-Z` = Abc ; then
3367 xxx=`./loc addbib blurfl $pth`
3368 if $test -f $xxx; then
3369 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3370 echo exit 0 >bsd
3371 echo exit 0 >usg
3372 else
3373 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3374 echo "Looks kind of like an extended USG system, but we'll see..."
3375 else
3376 echo "Looks kind of like a USG system, but we'll see..."
3377 fi
3378 echo exit 0 >usg
3379 fi
3380elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3381 echo "Looks kind of like a BSD system, but we'll see..."
3382 d_bsd="$define"
3383 echo exit 0 >bsd
3384else
3385 echo "Looks kind of like a Version 7 system, but we'll see..."
3386 echo exit 0 >v7
3387fi
3388case "$eunicefix" in
3389*unixtovms*)
3390 $cat <<'EOI'
3391There is, however, a strange, musty smell in the air that reminds me of
3392something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3393EOI
3394 echo exit 0 >eunice
3395 d_eunice="$define"
3396: it so happens the Eunice I know will not run shell scripts in Unix format
3397 ;;
3398*)
3399 echo " "
3400 echo "Congratulations. You aren't running Eunice."
3401 d_eunice="$undef"
3402 ;;
3403esac
3404: Detect OS2. The p_ variable is set above in the Head.U unit.
3405: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3406: semicolon as a patch separator
3407case "$p_" in
3408:) ;;
3409*)
3410 $cat <<'EOI'
3411I have the feeling something is not exactly right, however...don't tell me...
3412lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3413(Or you may be running DOS with DJGPP.)
3414EOI
3415 echo exit 0 >os2
3416 ;;
3417esac
3418if test -f /xenix; then
3419 echo "Actually, this looks more like a XENIX system..."
3420 echo exit 0 >xenix
3421 d_xenix="$define"
3422else
3423 echo " "
3424 echo "It's not Xenix..."
3425 d_xenix="$undef"
3426fi
3427chmod +x xenix
3428$eunicefix xenix
3429if test -f /venix; then
3430 echo "Actually, this looks more like a VENIX system..."
3431 echo exit 0 >venix
3432else
3433 echo " "
3434 if ./xenix; then
3435 : null
3436 else
3437 echo "Nor is it Venix..."
3438 fi
3439fi
3440chmod +x bsd usg v7 osf1 eunice xenix venix os2
3441$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3442$rm -f foo
3443
3444case "$cc" in
3445'') dflt=cc;;
3446*) dflt="$cc";;
3447esac
3448rp="Use which C compiler?"
3449. ./myread
3450cc="$ans"
3451: Look for a hint-file generated 'call-back-unit'. Now that the
3452: user has specified the compiler, we may need to set or change some
3453: other defaults.
3454if $test -f cc.cbu; then
3455 . ./cc.cbu
3456fi
3457. ./checkcc
3458
3459echo " "
3460echo "Checking for GNU cc in disguise and/or its version number..." >&4
3461$cat >try.c <<EOM
3462#include <stdio.h>
3463int main() {
3464#ifdef __GNUC__
3465#ifdef __VERSION__
3466 printf("%s\n", __VERSION__);
3467#else
3468 printf("%s\n", "1");
3469#endif
3470#endif
3471 exit(0);
3472}
3473EOM
3474if $cc -o try $ccflags $ldflags try.c; then
3475 gccversion=`$run ./try`
3476 case "$gccversion" in
3477 '') echo "You are not using GNU cc." ;;
3478 *) echo "You are using GNU cc $gccversion."
3479 ccname=gcc
3480 ;;
3481 esac
3482else
3483 echo " "
3484 echo "*** WHOA THERE!!! ***" >&4
3485 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3486 case "$knowitall" in
3487 '')
3488 echo " You'd better start hunting for one and let me know about it." >&4
3489 exit 1
3490 ;;
3491 esac
3492fi
3493$rm -f try try.*
3494case "$gccversion" in
34951*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3496esac
3497case "$gccversion" in
3498'') gccosandvers='' ;;
3499*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3500 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3501 gccshortvers=''
3502 case "$gccosandvers" in
3503 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3504 $osname$osvers) ;; # looking good
3505 $osname*) cat <<EOM >&4
3506
3507*** WHOA THERE!!! ***
3508
3509 Your gcc has not been compiled for the exact release of
3510 your operating system ($gccosandvers versus $osname$osvers).
3511
3512 In general it is a good idea to keep gcc synchronized with
3513 the operating system because otherwise serious problems
3514 may ensue when trying to compile software, like Perl.
3515
3516 I'm trying to be optimistic here, though, and will continue.
3517 If later during the configuration and build icky compilation
3518 problems appear (headerfile conflicts being the most common
3519 manifestation), I suggest reinstalling the gcc to match
3520 your operating system release.
3521
3522EOM
3523 ;;
3524 *) gccosandvers='' ;; # failed to parse, better be silent
3525 esac
3526 ;;
3527esac
3528case "$ccname" in
3529'') ccname="$cc" ;;
3530esac
3531
3532
3533: decide how portable to be. Allow command line overrides.
3534case "$d_portable" in
3535"$undef") ;;
3536*) d_portable="$define" ;;
3537esac
3538
3539: set up shell script to do ~ expansion
3540cat >filexp <<EOSS
3541$startsh
3542: expand filename
3543case "\$1" in
3544 ~/*|~)
3545 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3546 ;;
3547 ~*)
3548 if $test -f /bin/csh; then
3549 /bin/csh -f -c "glob \$1"
3550 failed=\$?
3551 echo ""
3552 exit \$failed
3553 else
3554 name=\`$expr x\$1 : '..\([^/]*\)'\`
3555 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3556 if $test ! -d "\$dir"; then
3557 me=\`basename \$0\`
3558 echo "\$me: can't locate home directory for: \$name" >&2
3559 exit 1
3560 fi
3561 case "\$1" in
3562 */*)
3563 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3564 ;;
3565 *)
3566 echo \$dir
3567 ;;
3568 esac
3569 fi
3570 ;;
3571*)
3572 echo \$1
3573 ;;
3574esac
3575EOSS
3576chmod +x filexp
3577$eunicefix filexp
3578
3579: now set up to get a file name
3580cat <<EOS >getfile
3581$startsh
3582EOS
3583cat <<'EOSC' >>getfile
3584tilde=''
3585fullpath=''
3586already=''
3587skip=''
3588none_ok=''
3589exp_file=''
3590nopath_ok=''
3591orig_rp="$rp"
3592orig_dflt="$dflt"
3593case "$gfpth" in
3594'') gfpth='.' ;;
3595esac
3596
3597case "$fn" in
3598*\(*)
3599 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3600 fn=`echo $fn | sed 's/(.*)//'`
3601 ;;
3602esac
3603
3604case "$fn" in
3605*:*)
3606 loc_file=`expr $fn : '.*:\(.*\)'`
3607 fn=`expr $fn : '\(.*\):.*'`
3608 ;;
3609esac
3610
3611case "$fn" in
3612*~*) tilde=true;;
3613esac
3614case "$fn" in
3615*/*) fullpath=true;;
3616esac
3617case "$fn" in
3618*+*) skip=true;;
3619esac
3620case "$fn" in
3621*n*) none_ok=true;;
3622esac
3623case "$fn" in
3624*e*) exp_file=true;;
3625esac
3626case "$fn" in
3627*p*) nopath_ok=true;;
3628esac
3629
3630case "$fn" in
3631*f*) type='File';;
3632*d*) type='Directory';;
3633*l*) type='Locate';;
3634esac
3635
3636what="$type"
3637case "$what" in
3638Locate) what='File';;
3639esac
3640
3641case "$exp_file" in
3642'')
3643 case "$d_portable" in
3644 "$define") ;;
3645 *) exp_file=true;;
3646 esac
3647 ;;
3648esac
3649
3650cd ..
3651while test "$type"; do
3652 redo=''
3653 rp="$orig_rp"
3654 dflt="$orig_dflt"
3655 case "$tilde" in
3656 true) rp="$rp (~name ok)";;
3657 esac
3658 . UU/myread
3659 if test -f UU/getfile.ok && \
3660 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3661 then
3662 value="$ans"
3663 ansexp="$ans"
3664 break
3665 fi
3666 case "$ans" in
3667 none)
3668 value=''
3669 ansexp=''
3670 case "$none_ok" in
3671 true) type='';;
3672 esac
3673 ;;
3674 *)
3675 case "$tilde" in
3676 '') value="$ans"
3677 ansexp="$ans";;
3678 *)
3679 value=`UU/filexp $ans`
3680 case $? in
3681 0)
3682 if test "$ans" != "$value"; then
3683 echo "(That expands to $value on this system.)"
3684 fi
3685 ;;
3686 *) value="$ans";;
3687 esac
3688 ansexp="$value"
3689 case "$exp_file" in
3690 '') value="$ans";;
3691 esac
3692 ;;
3693 esac
3694 case "$fullpath" in
3695 true)
3696 case "$ansexp" in
3697 /*) value="$ansexp" ;;
3698 [a-zA-Z]:/*) value="$ansexp" ;;
3699 *)
3700 redo=true
3701 case "$already" in
3702 true)
3703 echo "I shall only accept a full path name, as in /bin/ls." >&4
3704 echo "Use a ! shell escape if you wish to check pathnames." >&4
3705 ;;
3706 *)
3707 echo "Please give a full path name, starting with slash." >&4
3708 case "$tilde" in
3709 true)
3710 echo "Note that using ~name is ok provided it expands well." >&4
3711 already=true
3712 ;;
3713 esac
3714 esac
3715 ;;
3716 esac
3717 ;;
3718 esac
3719 case "$redo" in
3720 '')
3721 case "$type" in
3722 File)
3723 for fp in $gfpth; do
3724 if test "X$fp" = X.; then
3725 pf="$ansexp"
3726 else
3727 pf="$fp/$ansexp"
3728 fi
3729 if test -f "$pf"; then
3730 type=''
3731 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3732 then
3733 echo "($value is not a plain file, but that's ok.)"
3734 type=''
3735 fi
3736 if test X"$type" = X; then
3737 value="$pf"
3738 break
3739 fi
3740 done
3741 ;;
3742 Directory)
3743 for fp in $gfpth; do
3744 if test "X$fp" = X.; then
3745 dir="$ans"
3746 direxp="$ansexp"
3747 else
3748 dir="$fp/$ansexp"
3749 direxp="$fp/$ansexp"
3750 fi
3751 if test -d "$direxp"; then
3752 type=''
3753 value="$dir"
3754 break
3755 fi
3756 done
3757 ;;
3758 Locate)
3759 if test -d "$ansexp"; then
3760 echo "(Looking for $loc_file in directory $value.)"
3761 value="$value/$loc_file"
3762 ansexp="$ansexp/$loc_file"
3763 fi
3764 if test -f "$ansexp"; then
3765 type=''
3766 fi
3767 case "$nopath_ok" in
3768 true) case "$value" in
3769 */*) ;;
3770 *) echo "Assuming $value will be in people's path."
3771 type=''
3772 ;;
3773 esac
3774 ;;
3775 esac
3776 ;;
3777 esac
3778
3779 case "$skip" in
3780 true) type='';
3781 esac
3782
3783 case "$type" in
3784 '') ;;
3785 *)
3786 if test "$fastread" = yes; then
3787 dflt=y
3788 else
3789 dflt=n
3790 fi
3791 rp="$what $value doesn't exist. Use that name anyway?"
3792 . UU/myread
3793 dflt=''
3794 case "$ans" in
3795 y*) type='';;
3796 *) echo " ";;
3797 esac
3798 ;;
3799 esac
3800 ;;
3801 esac
3802 ;;
3803 esac
3804done
3805cd UU
3806ans="$value"
3807rp="$orig_rp"
3808dflt="$orig_dflt"
3809rm -f getfile.ok
3810test "X$gfpthkeep" != Xy && gfpth=""
3811EOSC
3812
3813: What should the include directory be ?
3814echo " "
3815$echo $n "Hmm... $c"
3816dflt='/usr/include'
3817incpath=''
3818mips_type=''
3819if $test -f /bin/mips && /bin/mips; then
3820 echo "Looks like a MIPS system..."
3821 $cat >usr.c <<'EOCP'
3822#ifdef SYSTYPE_BSD43
3823/bsd43
3824#endif
3825EOCP
3826 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3827 dflt='/bsd43/usr/include'
3828 incpath='/bsd43'
3829 mips_type='BSD 4.3'
3830 else
3831 mips_type='System V'
3832 fi
3833 $rm -f usr.c usr.out
3834 echo "and you're compiling with the $mips_type compiler and libraries."
3835 xxx_prompt=y
3836 echo "exit 0" >mips
3837else
3838 echo "Doesn't look like a MIPS system."
3839 xxx_prompt=n
3840 echo "exit 1" >mips
3841fi
3842chmod +x mips
3843$eunicefix mips
3844case "$usrinc" in
3845'') ;;
3846*) dflt="$usrinc";;
3847esac
3848case "$xxx_prompt" in
3849y) fn=d/
3850 echo " "
3851 rp='Where are the include files you want to use?'
3852 . ./getfile
3853 usrinc="$ans"
3854 ;;
3855*) usrinc="$dflt"
3856 ;;
3857esac
3858
3859: see how we invoke the C preprocessor
3860echo " "
3861echo "Now, how can we feed standard input to your C preprocessor..." >&4
3862cat <<'EOT' >testcpp.c
3863#define ABC abc
3864#define XYZ xyz
3865ABC.XYZ
3866EOT
3867cd ..
3868if test ! -f cppstdin; then
3869 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3870 # AIX cc -E doesn't show the absolute headerfile
3871 # locations but we'll cheat by using the -M flag.
3872 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
3873 else
3874 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3875 fi
3876else
3877 echo "Keeping your $hint cppstdin wrapper."
3878fi
3879chmod 755 cppstdin
3880wrapper=`pwd`/cppstdin
3881ok='false'
3882cd UU
3883
3884if $test "X$cppstdin" != "X" && \
3885 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3886 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3887then
3888 echo "You used to use $cppstdin $cppminus so we'll use that again."
3889 case "$cpprun" in
3890 '') echo "But let's see if we can live without a wrapper..." ;;
3891 *)
3892 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3893 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3894 then
3895 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3896 ok='true'
3897 else
3898 echo "(However, $cpprun $cpplast does not work, let's see...)"
3899 fi
3900 ;;
3901 esac
3902else
3903 case "$cppstdin" in
3904 '') ;;
3905 *)
3906 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3907 ;;
3908 esac
3909fi
3910
3911if $ok; then
3912 : nothing
3913elif echo 'Maybe "'"$cc"' -E" will work...'; \
3914 $cc -E <testcpp.c >testcpp.out 2>&1; \
3915 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3916 echo "Yup, it does."
3917 x_cpp="$cc -E"
3918 x_minus='';
3919elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3920 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3921 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3922 echo "Yup, it does."
3923 x_cpp="$cc -E"
3924 x_minus='-';
3925elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3926 $cc -P <testcpp.c >testcpp.out 2>&1; \
3927 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3928 echo "Yipee, that works!"
3929 x_cpp="$cc -P"
3930 x_minus='';
3931elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3932 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3933 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3934 echo "At long last!"
3935 x_cpp="$cc -P"
3936 x_minus='-';
3937elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3938 $cpp <testcpp.c >testcpp.out 2>&1; \
3939 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3940 echo "It works!"
3941 x_cpp="$cpp"
3942 x_minus='';
3943elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3944 $cpp - <testcpp.c >testcpp.out 2>&1; \
3945 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3946 echo "Hooray, it works! I was beginning to wonder."
3947 x_cpp="$cpp"
3948 x_minus='-';
3949elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3950 $wrapper <testcpp.c >testcpp.out 2>&1; \
3951 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3952 x_cpp="$wrapper"
3953 x_minus=''
3954 echo "Eureka!"
3955else
3956 dflt=''
3957 rp="No dice. I can't find a C preprocessor. Name one:"
3958 . ./myread
3959 x_cpp="$ans"
3960 x_minus=''
3961 $x_cpp <testcpp.c >testcpp.out 2>&1
3962 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3963 echo "OK, that will do." >&4
3964 else
3965echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3966 exit 1
3967 fi
3968fi
3969
3970case "$ok" in
3971false)
3972 cppstdin="$x_cpp"
3973 cppminus="$x_minus"
3974 cpprun="$x_cpp"
3975 cpplast="$x_minus"
3976 set X $x_cpp
3977 shift
3978 case "$1" in
3979 "$cpp")
3980 echo "Perhaps can we force $cc -E using a wrapper..."
3981 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3982 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3983 then
3984 echo "Yup, we can."
3985 cppstdin="$wrapper"
3986 cppminus='';
3987 else
3988 echo "Nope, we'll have to live without it..."
3989 fi
3990 ;;
3991 esac
3992 case "$cpprun" in
3993 "$wrapper")
3994 cpprun=''
3995 cpplast=''
3996 ;;
3997 esac
3998 ;;
3999esac
4000
4001case "$cppstdin" in
4002"$wrapper"|'cppstdin') ;;
4003*) $rm -f $wrapper;;
4004esac
4005$rm -f testcpp.c testcpp.out
4006
4007: Set private lib path
4008case "$plibpth" in
4009'') if ./mips; then
4010 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4011 fi;;
4012esac
4013case "$libpth" in
4014' ') dlist='';;
4015'') dlist="$loclibpth $plibpth $glibpth";;
4016*) dlist="$libpth";;
4017esac
4018
4019: Now check and see which directories actually exist, avoiding duplicates
4020libpth=''
4021for xxx in $dlist
4022do
4023 if $test -d $xxx; then
4024 case " $libpth " in
4025 *" $xxx "*) ;;
4026 *) libpth="$libpth $xxx";;
4027 esac
4028 fi
4029done
4030$cat <<'EOM'
4031
4032Some systems have incompatible or broken versions of libraries. Among
4033the directories listed in the question below, please remove any you
4034know not to be holding relevant libraries, and add any that are needed.
4035Say "none" for none.
4036
4037EOM
4038case "$libpth" in
4039'') dflt='none';;
4040*)
4041 set X $libpth
4042 shift
4043 dflt=${1+"$@"}
4044 ;;
4045esac
4046rp="Directories to use for library searches?"
4047. ./myread
4048case "$ans" in
4049none) libpth=' ';;
4050*) libpth="$ans";;
4051esac
4052
4053: compute shared library extension
4054case "$so" in
4055'')
4056 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4057 dflt='sl'
4058 else
4059 dflt='so'
4060 fi
4061 ;;
4062*) dflt="$so";;
4063esac
4064$cat <<EOM
4065
4066On some systems, shared libraries may be available. Answer 'none' if
4067you want to suppress searching of shared libraries for the remainder
4068of this configuration.
4069
4070EOM
4071rp='What is the file extension used for shared libraries?'
4072. ./myread
4073so="$ans"
4074
4075: Define several unixisms.
4076: Hints files or command line option can be used to override them.
4077: The convoluted testing is in case hints files set either the old
4078: or the new name.
4079case "$_exe" in
4080'') case "$exe_ext" in
4081 '') ;;
4082 *) _exe="$exe_ext" ;;
4083 esac
4084 ;;
4085esac
4086case "$_a" in
4087'') case "$lib_ext" in
4088 '') _a='.a';;
4089 *) _a="$lib_ext" ;;
4090 esac
4091 ;;
4092esac
4093case "$_o" in
4094'') case "$obj_ext" in
4095 '') _o='.o';;
4096 *) _o="$obj_ext";;
4097 esac
4098 ;;
4099esac
4100case "$p_" in
4101'') case "$path_sep" in
4102 '') p_=':';;
4103 *) p_="$path_sep";;
4104 esac
4105 ;;
4106esac
4107exe_ext=$_exe
4108lib_ext=$_a
4109obj_ext=$_o
4110path_sep=$p_
4111
4112: Which makefile gets called first. This is used by make depend.
4113case "$firstmakefile" in
4114'') firstmakefile='makefile';;
4115esac
4116
4117case "$usesocks" in
4118$define|true|[yY]*) dflt='y';;
4119*) dflt='n';;
4120esac
4121cat <<EOM
4122
4123Perl can be built to use the SOCKS proxy protocol library. To do so,
4124Configure must be run with -Dusesocks. If you use SOCKS you also need
4125to use the PerlIO abstraction layer, this will be implicitly selected.
4126
4127If this doesn't make any sense to you, just accept the default '$dflt'.
4128EOM
4129rp='Build Perl for SOCKS?'
4130. ./myread
4131case "$ans" in
4132y|Y) val="$define" ;;
4133*) val="$undef" ;;
4134esac
4135set usesocks
4136eval $setvar
4137
4138case "$usesocks" in
4139$define|true|[yY]*) useperlio="$define";;
4140esac
4141
4142: Looking for optional libraries
4143echo " "
4144echo "Checking for optional libraries..." >&4
4145case "$libs" in
4146' '|'') dflt='';;
4147*) dflt="$libs";;
4148esac
4149case "$libswanted" in
4150'') libswanted='c_s';;
4151esac
4152case "$usesocks" in
4153"$define") libswanted="$libswanted socks5 socks5_sh" ;;
4154esac
4155libsfound=''
4156libsfiles=''
4157libsdirs=''
4158libspath=''
4159for thisdir in $libpth $xlibpth; do
4160 test -d $thisdir && libspath="$libspath $thisdir"
4161done
4162for thislib in $libswanted; do
4163 for thisdir in $libspath; do
4164 xxx=''
4165 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4166 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4167 $test -f "$xxx" && eval $libscheck
4168 $test -f "$xxx" && libstyle=shared
4169 fi
4170 if test ! -f "$xxx"; then
4171 xxx=$thisdir/lib$thislib.$so
4172 $test -f "$xxx" && eval $libscheck
4173 $test -f "$xxx" && libstyle=shared
4174 fi
4175 if test ! -f "$xxx"; then
4176 xxx=$thisdir/lib$thislib$_a
4177 $test -f "$xxx" && eval $libscheck
4178 $test -f "$xxx" && libstyle=static
4179 fi
4180 if test ! -f "$xxx"; then
4181 xxx=$thisdir/$thislib$_a
4182 $test -f "$xxx" && eval $libscheck
4183 $test -f "$xxx" && libstyle=static
4184 fi
4185 if test ! -f "$xxx"; then
4186 xxx=$thisdir/lib${thislib}_s$_a
4187 $test -f "$xxx" && eval $libscheck
4188 $test -f "$xxx" && libstyle=static
4189 $test -f "$xxx" && thislib=${thislib}_s
4190 fi
4191 if test ! -f "$xxx"; then
4192 xxx=$thisdir/Slib$thislib$_a
4193 $test -f "$xxx" && eval $libscheck
4194 $test -f "$xxx" && libstyle=static
4195 fi
4196 if $test -f "$xxx"; then
4197 case "$libstyle" in
4198 shared) echo "Found -l$thislib (shared)." ;;
4199 static) echo "Found -l$thislib." ;;
4200 *) echo "Found -l$thislib ($libstyle)." ;;
4201 esac
4202 case " $dflt " in
4203 *"-l$thislib "*);;
4204 *) dflt="$dflt -l$thislib"
4205 libsfound="$libsfound $xxx"
4206 yyy=`basename $xxx`
4207 libsfiles="$libsfiles $yyy"
4208 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4209 case " $libsdirs " in
4210 *" $yyy "*) ;;
4211 *) libsdirs="$libsdirs $yyy" ;;
4212 esac
4213 ;;
4214 esac
4215 break
4216 fi
4217 done
4218 if $test ! -f "$xxx"; then
4219 echo "No -l$thislib."
4220 fi
4221done
4222set X $dflt
4223shift
4224dflt="$*"
4225case "$libs" in
4226'') dflt="$dflt";;
4227*) dflt="$libs";;
4228esac
4229case "$dflt" in
4230' '|'') dflt='none';;
4231esac
4232
4233$cat <<EOM
4234
4235In order to compile $package on your machine, a number of libraries
4236are usually needed. Include any other special libraries here as well.
4237Say "none" for none. The default list is almost always right.
4238EOM
4239
4240echo " "
4241rp="What libraries to use?"
4242. ./myread
4243case "$ans" in
4244none) libs=' ';;
4245*) libs="$ans";;
4246esac
4247
4248: determine optimization, if desired, or use for debug flag also
4249case "$optimize" in
4250' '|$undef) dflt='none';;
4251'') dflt='-O';;
4252*) dflt="$optimize";;
4253esac
4254$cat <<EOH
4255
4256By default, $package compiles with the -O flag to use the optimizer.
4257Alternately, you might want to use the symbolic debugger, which uses
4258the -g flag (on traditional Unix systems). Either flag can be
4259specified here. To use neither flag, specify the word "none".
4260
4261EOH
4262rp="What optimizer/debugger flag should be used?"
4263. ./myread
4264optimize="$ans"
4265case "$optimize" in
4266'none') optimize=" ";;
4267esac
4268
4269dflt=''
4270: We will not override a previous value, but we might want to
4271: augment a hint file
4272case "$hint" in
4273default|recommended)
4274 case "$gccversion" in
4275 1*) dflt='-fpcc-struct-return' ;;
4276 esac
4277 case "$optimize" in
4278 *-g*) dflt="$dflt -DDEBUGGING";;
4279 esac
4280 case "$gccversion" in
4281 2*) if test -d /etc/conf/kconfig.d &&
4282 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4283 then
4284 dflt="$dflt -posix"
4285 fi
4286 ;;
4287 esac
4288 case "$gccversion" in
4289 1*) ;;
4290 2.[0-8]*) ;;
4291 ?*) echo " "
4292 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4293 echo 'int main(void) { return 0; }' > gcctest.c
4294 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4295 echo "Yes, it does." 2>&1
4296 case "$ccflags" in
4297 *strict-aliasing*)
4298 echo "Leaving current flags $ccflags alone." 2>&1
4299 ;;
4300 *) dflt="$dflt -fno-strict-aliasing" ;;
4301 esac
4302 else
4303 echo "Nope, it doesn't, but that's ok." 2>&1
4304 fi
4305 ;;
4306 esac
4307 ;;
4308esac
4309
4310case "$mips_type" in
4311*BSD*|'') inclwanted="$locincpth $usrinc";;
4312*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4313esac
4314for thisincl in $inclwanted; do
4315 if $test -d $thisincl; then
4316 if $test x$thisincl != x$usrinc; then
4317 case "$dflt" in
4318 *" -I$thisincl "*);;
4319 *) dflt="$dflt -I$thisincl ";;
4320 esac
4321 fi
4322 fi
4323done
4324
4325inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4326 xxx=true;
4327elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4328 xxx=true;
4329else
4330 xxx=false;
4331fi;
4332if $xxx; then
4333 case "$dflt" in
4334 *$2*);;
4335 *) dflt="$dflt -D$2";;
4336 esac;
4337fi'
4338
4339set signal.h LANGUAGE_C; eval $inctest
4340
4341case "$usesocks" in
4342$define)
4343 ccflags="$ccflags -DSOCKS"
4344 ;;
4345esac
4346
4347case "$hint" in
4348default|recommended) dflt="$ccflags $dflt" ;;
4349*) dflt="$ccflags";;
4350esac
4351
4352case "$dflt" in
4353''|' ') dflt=none;;
4354esac
4355
4356$cat <<EOH
4357
4358Your C compiler may want other flags. For this question you should include
4359-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4360but you should NOT include libraries or ld flags like -lwhatever. If you
4361want $package to honor its debug switch, you should include -DDEBUGGING here.
4362Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4363
4364To use no flags, specify the word "none".
4365
4366EOH
4367set X $dflt
4368shift
4369dflt=${1+"$@"}
4370rp="Any additional cc flags?"
4371. ./myread
4372case "$ans" in
4373none) ccflags='';;
4374*) ccflags="$ans";;
4375esac
4376
4377: the following weeds options from ccflags that are of no interest to cpp
4378case "$cppflags" in
4379'') cppflags="$ccflags" ;;
4380*) cppflags="$cppflags $ccflags" ;;
4381esac
4382case "$gccversion" in
43831*) cppflags="$cppflags -D__GNUC__"
4384esac
4385case "$mips_type" in
4386'');;
4387*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4388esac
4389case "$cppflags" in
4390'');;
4391*)
4392 echo " "
4393 echo "Let me guess what the preprocessor flags are..." >&4
4394 set X $cppflags
4395 shift
4396 cppflags=''
4397 $cat >cpp.c <<'EOM'
4398#define BLURFL foo
4399
4400BLURFL xx LFRULB
4401EOM
4402 previous=''
4403 for flag in $*
4404 do
4405 case "$flag" in
4406 -*) ftry="$flag";;
4407 *) ftry="$previous $flag";;
4408 esac
4409 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4410 >cpp1.out 2>/dev/null && \
4411 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4412 >cpp2.out 2>/dev/null && \
4413 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4414 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4415 then
4416 cppflags="$cppflags $ftry"
4417 previous=''
4418 else
4419 previous="$flag"
4420 fi
4421 done
4422 set X $cppflags
4423 shift
4424 cppflags=${1+"$@"}
4425 case "$cppflags" in
4426 *-*) echo "They appear to be: $cppflags";;
4427 esac
4428 $rm -f cpp.c cpp?.out
4429 ;;
4430esac
4431
4432: flags used in final linking phase
4433case "$ldflags" in
4434'') if ./venix; then
4435 dflt='-i -z'
4436 else
4437 dflt=''
4438 fi
4439 case "$ccflags" in
4440 *-posix*) dflt="$dflt -posix" ;;
4441 esac
4442 ;;
4443*) dflt="$ldflags";;
4444esac
4445
4446: Try to guess additional flags to pick up local libraries.
4447for thislibdir in $libpth; do
4448 case " $loclibpth " in
4449 *" $thislibdir "*)
4450 case "$dflt " in
4451 *"-L$thislibdir "*) ;;
4452 *) dflt="$dflt -L$thislibdir" ;;
4453 esac
4454 ;;
4455 esac
4456done
4457
4458case "$dflt" in
4459'') dflt='none' ;;
4460esac
4461
4462$cat <<EOH
4463
4464Your C linker may need flags. For this question you should
4465include -L/whatever and any other flags used by the C linker, but you
4466should NOT include libraries like -lwhatever.
4467
4468Make sure you include the appropriate -L/path flags if your C linker
4469does not normally search all of the directories you specified above,
4470namely
4471 $libpth
4472To use no flags, specify the word "none".
4473
4474EOH
4475
4476rp="Any additional ld flags (NOT including libraries)?"
4477. ./myread
4478case "$ans" in
4479none) ldflags='';;
4480*) ldflags="$ans";;
4481esac
4482rmlist="$rmlist pdp11"
4483
4484: coherency check
4485echo " "
4486echo "Checking your choice of C compiler and flags for coherency..." >&4
4487$cat > try.c <<'EOF'
4488#include <stdio.h>
4489int main() { printf("Ok\n"); exit(0); }
4490EOF
4491set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4492shift
4493$cat >try.msg <<'EOM'
4494I've tried to compile and run the following simple program:
4495
4496EOM
4497$cat try.c >> try.msg
4498
4499$cat >> try.msg <<EOM
4500
4501I used the command:
4502
4503 $*
4504 $run ./try
4505
4506and I got the following output:
4507
4508EOM
4509dflt=y
4510if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4511 if $sh -c "$run ./try" >>try.msg 2>&1; then
4512 xxx=`$run ./try`
4513 case "$xxx" in
4514 "Ok") dflt=n ;;
4515 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4516 case " $libs " in
4517 *" -lsfio "*)
4518 cat >> try.msg <<'EOQS'
4519If $libs contains -lsfio, and sfio is mis-configured, then it
4520sometimes (apparently) runs and exits with a 0 status, but with no
4521output! It may have to do with sfio's use of _exit vs. exit.
4522
4523EOQS
4524 rp="You have a big problem. Shall I abort Configure"
4525 dflt=y
4526 ;;
4527 esac
4528 ;;
4529 esac
4530 else
4531 echo "The program compiled OK, but exited with status $?." >>try.msg
4532 rp="You have a problem. Shall I abort Configure"
4533 dflt=y
4534 fi
4535else
4536 echo "I can't compile the test program." >>try.msg
4537 rp="You have a BIG problem. Shall I abort Configure"
4538 dflt=y
4539fi
4540case "$dflt" in
4541y)
4542 $cat try.msg >&4
4543 case "$knowitall" in
4544 '')
4545 echo "(The supplied flags or libraries might be incorrect.)"
4546 ;;
4547 *) dflt=n;;
4548 esac
4549 echo " "
4550 . ./myread
4551 case "$ans" in
4552 n*|N*) ;;
4553 *) echo "Ok. Stopping Configure." >&4
4554 exit 1
4555 ;;
4556 esac
4557 ;;
4558n) echo "OK, that should do.";;
4559esac
4560$rm -f try try.* core
4561
4562: define a shorthand compile call
4563compile='
4564mc_file=$1;
4565shift;
4566$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4567: define a shorthand compile call for compilations that should be ok.
4568compile_ok='
4569mc_file=$1;
4570shift;
4571$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4572
4573: check for lengths of integral types
4574echo " "
4575case "$intsize" in
4576'')
4577 echo "Checking to see how big your integers are..." >&4
4578 $cat >try.c <<'EOCP'
4579#include <stdio.h>
4580int main()
4581{
4582 printf("intsize=%d;\n", (int)sizeof(int));
4583 printf("longsize=%d;\n", (int)sizeof(long));
4584 printf("shortsize=%d;\n", (int)sizeof(short));
4585 exit(0);
4586}
4587EOCP
4588 set try
4589 if eval $compile_ok && $run ./try > /dev/null; then
4590 eval `$run ./try`
4591 echo "Your integers are $intsize bytes long."
4592 echo "Your long integers are $longsize bytes long."
4593 echo "Your short integers are $shortsize bytes long."
4594 else
4595 $cat >&4 <<EOM
4596!
4597Help! I can't compile and run the intsize test program: please enlighten me!
4598(This is probably a misconfiguration in your system or libraries, and
4599you really ought to fix it. Still, I'll try anyway.)
4600!
4601EOM
4602 dflt=4
4603 rp="What is the size of an integer (in bytes)?"
4604 . ./myread
4605 intsize="$ans"
4606 dflt=$intsize
4607 rp="What is the size of a long integer (in bytes)?"
4608 . ./myread
4609 longsize="$ans"
4610 dflt=2
4611 rp="What is the size of a short integer (in bytes)?"
4612 . ./myread
4613 shortsize="$ans"
4614 fi
4615 ;;
4616esac
4617$rm -f try try.*
4618
4619: check for void type
4620echo " "
4621echo "Checking to see how well your C compiler groks the void type..." >&4
4622case "$voidflags" in
4623'')
4624 $cat >try.c <<'EOCP'
4625#if TRY & 1
4626void sub() {
4627#else
4628sub() {
4629#endif
4630 extern void moo(); /* function returning void */
4631 void (*goo)(); /* ptr to func returning void */
4632#if TRY & 8
4633 void *hue; /* generic ptr */
4634#endif
4635#if TRY & 2
4636 void (*foo[10])();
4637#endif
4638
4639#if TRY & 4
4640 if(goo == moo) {
4641 exit(0);
4642 }
4643#endif
4644 exit(0);
4645}
4646int main() { sub(); }
4647EOCP
4648 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4649 voidflags=$defvoidused
4650 echo "Good. It appears to support void to the level $package wants.">&4
4651 if $contains warning .out >/dev/null 2>&1; then
4652 echo "However, you might get some warnings that look like this:"
4653 $cat .out
4654 fi
4655 else
4656echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4657 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4658 echo "It supports 1..."
4659 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4660 echo "It also supports 2..."
4661 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4662 voidflags=7
4663 echo "And it supports 4 but not 8 definitely."
4664 else
4665 echo "It doesn't support 4..."
4666 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4667 voidflags=11
4668 echo "But it supports 8."
4669 else
4670 voidflags=3
4671 echo "Neither does it support 8."
4672 fi
4673 fi
4674 else
4675 echo "It does not support 2..."
4676 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4677 voidflags=13
4678 echo "But it supports 4 and 8."
4679 else
4680 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4681 voidflags=5
4682 echo "And it supports 4 but has not heard about 8."
4683 else
4684 echo "However it supports 8 but not 4."
4685 fi
4686 fi
4687 fi
4688 else
4689 echo "There is no support at all for void."
4690 voidflags=0
4691 fi
4692 fi
4693esac
4694case "$voidflags" in
4695"$defvoidused") ;;
4696*) $cat >&4 <<'EOM'
4697 Support flag bits are:
4698 1: basic void declarations.
4699 2: arrays of pointers to functions returning void.
4700 4: operations between pointers to and addresses of void functions.
4701 8: generic void pointers.
4702EOM
4703 dflt="$voidflags";
4704 rp="Your void support flags add up to what?"
4705 . ./myread
4706 voidflags="$ans"
4707 ;;
4708esac
4709$rm -f try.* .out
4710
4711: check for length of pointer
4712echo " "
4713case "$ptrsize" in
4714'')
4715 echo "Checking to see how big your pointers are..." >&4
4716 if test "$voidflags" -gt 7; then
4717 echo '#define VOID_PTR char *' > try.c
4718 else
4719 echo '#define VOID_PTR void *' > try.c
4720 fi
4721 $cat >>try.c <<'EOCP'
4722#include <stdio.h>
4723int main()
4724{
4725 printf("%d\n", (int)sizeof(VOID_PTR));
4726 exit(0);
4727}
4728EOCP
4729 set try
4730 if eval $compile_ok; then
4731 ptrsize=`$run ./try`
4732 echo "Your pointers are $ptrsize bytes long."
4733 else
4734 dflt='4'
4735 echo "(I can't seem to compile the test program. Guessing...)" >&4
4736 rp="What is the size of a pointer (in bytes)?"
4737 . ./myread
4738 ptrsize="$ans"
4739 fi
4740 ;;
4741esac
4742$rm -f try.c try
4743
4744: check for long long
4745echo " "
4746echo "Checking to see if you have long long..." >&4
4747echo 'int main() { long long x = 7; return 0; }' > try.c
4748set try
4749if eval $compile; then
4750 val="$define"
4751 echo "You have long long."
4752else
4753 val="$undef"
4754 echo "You do not have long long."
4755fi
4756$rm try.*
4757set d_longlong
4758eval $setvar
4759
4760: check for length of long long
4761case "${d_longlong}${longlongsize}" in
4762$define)
4763 echo " "
4764 echo "Checking to see how big your long longs are..." >&4
4765 $cat >try.c <<'EOCP'
4766#include <stdio.h>
4767int main()
4768{
4769 printf("%d\n", (int)sizeof(long long));
4770 return(0);
4771}
4772EOCP
4773 set try
4774 if eval $compile_ok; then
4775 longlongsize=`$run ./try`
4776 echo "Your long longs are $longlongsize bytes long."
4777 else
4778 dflt='8'
4779 echo " "
4780 echo "(I can't seem to compile the test program. Guessing...)"
4781 rp="What is the size of a long long (in bytes)?"
4782 . ./myread
4783 longlongsize="$ans"
4784 fi
4785 if $test "X$longsize" = "X$longlongsize"; then
4786 echo "(That isn't any different from an ordinary long.)"
4787 fi
4788 ;;
4789esac
4790$rm -f try.* try
4791
4792: determine filename position in cpp output
4793echo " "
4794echo "Computing filename position in cpp output for #include directives..." >&4
4795echo '#include <stdio.h>' > foo.c
4796$cat >fieldn <<EOF
4797$startsh
4798$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4799$grep '^[ ]*#.*stdio\.h' | \
4800while read cline; do
4801 pos=1
4802 set \$cline
4803 while $test \$# -gt 0; do
4804 if $test -r \`echo \$1 | $tr -d '"'\`; then
4805 echo "\$pos"
4806 exit 0
4807 fi
4808 shift
4809 pos=\`expr \$pos + 1\`
4810 done
4811done
4812EOF
4813chmod +x fieldn
4814fieldn=`./fieldn`
4815$rm -f foo.c fieldn
4816case $fieldn in
4817'') pos='???';;
48181) pos=first;;
48192) pos=second;;
48203) pos=third;;
4821*) pos="${fieldn}th";;
4822esac
4823echo "Your cpp writes the filename in the $pos field of the line."
4824
4825: locate header file
4826$cat >findhdr <<EOF
4827$startsh
4828wanted=\$1
4829name=''
4830for usrincdir in $usrinc
4831do
4832 if test -f \$usrincdir/\$wanted; then
4833 echo "\$usrincdir/\$wanted"
4834 exit 0
4835 fi
4836done
4837awkprg='{ print \$$fieldn }'
4838echo "#include <\$wanted>" > foo\$\$.c
4839$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4840$grep "^[ ]*#.*\$wanted" | \
4841while read cline; do
4842 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4843 case "\$name" in
4844 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4845 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4846 *) exit 2;;
4847 esac;
4848done;
4849#
4850# status = 0: grep returned 0 lines, case statement not executed
4851# status = 1: headerfile found
4852# status = 2: while loop executed, no headerfile found
4853#
4854status=\$?
4855$rm -f foo\$\$.c;
4856if test \$status -eq 1; then
4857 exit 0;
4858fi
4859exit 1
4860EOF
4861chmod +x findhdr
4862
4863: define an alternate in-header-list? function
4864inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4865cont=true; xxf="echo \"<\$1> found.\" >&4";
4866case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4867*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4868esac;
4869case $# in 4) instead=instead;; *) instead="at last";; esac;
4870while $test "$cont"; do
4871 xxx=`./findhdr $1`
4872 var=$2; eval "was=\$$2";
4873 if $test "$xxx" && $test -r "$xxx";
4874 then eval $xxf;
4875 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4876 cont="";
4877 else eval $xxnf;
4878 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4879 set $yyy; shift; shift; yyy=$@;
4880 case $# in 0) cont="";;
4881 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4882 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4883 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4884 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4885 esac;
4886done;
4887while $test "$yyy";
4888do set $yyy; var=$2; eval "was=\$$2";
4889 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4890 set $yyy; shift; shift; yyy=$@;
4891done'
4892
4893: see if inttypes.h is available
4894: we want a real compile instead of Inhdr because some systems
4895: have an inttypes.h which includes non-existent headers
4896echo " "
4897$cat >try.c <<EOCP
4898#include <inttypes.h>
4899int main() {
4900 static int32_t foo32 = 0x12345678;
4901}
4902EOCP
4903set try
4904if eval $compile; then
4905 echo "<inttypes.h> found." >&4
4906 val="$define"
4907else
4908 echo "<inttypes.h> NOT found." >&4
4909 val="$undef"
4910fi
4911$rm -f try.c try
4912set i_inttypes
4913eval $setvar
4914
4915: check for int64_t
4916echo " "
4917echo "Checking to see if you have int64_t..." >&4
4918$cat >try.c <<EOCP
4919#include <sys/types.h>
4920#$i_inttypes I_INTTYPES
4921#ifdef I_INTTYPES
4922#include <inttypes.h>
4923#endif
4924int main() { int64_t x = 7; }
4925EOCP
4926set try
4927if eval $compile; then
4928 val="$define"
4929 echo "You have int64_t."
4930else
4931 val="$undef"
4932 echo "You do not have int64_t."
4933fi
4934$rm -f try try.*
4935set d_int64_t
4936eval $setvar
4937
4938
4939echo " "
4940echo "Checking which 64-bit integer type we could use..." >&4
4941
4942case "$intsize" in
49438) val=int
4944 set quadtype
4945 eval $setvar
4946 val='"unsigned int"'
4947 set uquadtype
4948 eval $setvar
4949 quadkind=1
4950 ;;
4951*) case "$longsize" in
4952 8) val=long
4953 set quadtype
4954 eval $setvar
4955 val='"unsigned long"'
4956 set uquadtype
4957 eval $setvar
4958 quadkind=2
4959 ;;
4960 *) case "$d_longlong:$longlongsize" in
4961 define:8)
4962 val='"long long"'
4963 set quadtype
4964 eval $setvar
4965 val='"unsigned long long"'
4966 set uquadtype
4967 eval $setvar
4968 quadkind=3
4969 ;;
4970 *) case "$d_int64_t" in
4971 define)
4972 val=int64_t
4973 set quadtype
4974 eval $setvar
4975 val=uint64_t
4976 set uquadtype
4977 eval $setvar
4978 quadkind=4
4979 ;;
4980 esac
4981 ;;
4982 esac
4983 ;;
4984 esac
4985 ;;
4986esac
4987
4988case "$quadtype" in
4989'') echo "Alas, no 64-bit integer types in sight." >&4
4990 d_quad="$undef"
4991 ;;
4992*) echo "We could use '$quadtype' for 64-bit integers." >&4
4993 d_quad="$define"
4994 ;;
4995esac
4996
4997
4998case "$uselonglong" in
4999"$define"|true|[yY]*)
5000 cat <<EOM >&4
5001
5002*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5003EOM
5004 use64bitint="$define"
5005 ;;
5006esac
5007case "$use64bits" in
5008"$define"|true|[yY]*)
5009 cat <<EOM >&4
5010
5011*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5012EOM
5013 use64bitint="$define"
5014 ;;
5015esac
5016case "$use64bitints" in
5017"$define"|true|[yY]*)
5018 cat <<EOM >&4
5019
5020*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5021EOM
5022 use64bitint="$define"
5023 ;;
5024esac
5025case "$use64bitsint" in
5026"$define"|true|[yY]*)
5027 cat <<EOM >&4
5028
5029*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5030EOM
5031 use64bitint="$define"
5032 ;;
5033esac
5034case "$uselonglongs" in
5035"$define"|true|[yY]*)
5036 cat <<EOM >&4
5037
5038*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5039EOM
5040 use64bitint="$define"
5041 ;;
5042esac
5043case "$use64bitsall" in
5044"$define"|true|[yY]*)
5045 cat <<EOM >&4
5046
5047*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5048EOM
5049 use64bitall="$define"
5050 ;;
5051esac
5052
5053case "$ccflags" in
5054*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5055esac
5056case "$use64bitall" in
5057"$define"|true|[yY]*) use64bitint="$define" ;;
5058esac
5059
5060case "$longsize" in
50618) cat <<EOM
5062
5063You have natively 64-bit long integers.
5064EOM
5065 val="$define"
5066 ;;
5067*) case "$use64bitint" in
5068 "$define"|true|[yY]*) dflt='y';;
5069 *) dflt='n';;
5070 esac
5071 case "$d_quad" in
5072 "$define") ;;
5073 *) dflt='n' ;;
5074 esac
5075 cat <<EOM
5076
5077Perl can be built to take advantage of 64-bit integer types
5078on some systems. To do so, Configure can be run with -Duse64bitint.
5079Choosing this option will most probably introduce binary incompatibilities.
5080
5081If this doesn't make any sense to you, just accept the default '$dflt'.
5082(The default has been chosen based on your configuration.)
5083EOM
5084 rp='Try to use 64-bit integers, if available?'
5085 . ./myread
5086 case "$ans" in
5087 [yY]*) val="$define" ;;
5088 *) val="$undef" ;;
5089 esac
5090 ;;
5091esac
5092set use64bitint
5093eval $setvar
5094
5095case "$use64bitall" in
5096"$define"|true|[yY]*) dflt='y' ;;
5097*) case "$longsize" in
5098 8) dflt='y' ;;
5099 *) dflt='n' ;;
5100 esac
5101 ;;
5102esac
5103cat <<EOM
5104
5105You may also choose to try maximal 64-bitness. It means using as much
510664-bitness as possible on the platform. This in turn means even more
5107binary incompatibilities. On the other hand, your platform may not
5108have any more 64-bitness available than what you already have chosen.
5109
5110If this doesn't make any sense to you, just accept the default '$dflt'.
5111(The default has been chosen based on your configuration.)
5112EOM
5113rp='Try to use maximal 64-bit support, if available?'
5114. ./myread
5115case "$ans" in
5116[yY]*) val="$define" ;;
5117*) val="$undef" ;;
5118esac
5119set use64bitall
5120eval $setvar
5121case "$use64bitall" in
5122"$define")
5123 case "$use64bitint" in
5124 "$undef")
5125 cat <<EOM
5126
5127Since you have chosen a maximally 64-bit build, I'm also turning on
5128the use of 64-bit integers.
5129EOM
5130 use64bitint="$define" ;;
5131 esac
5132 ;;
5133esac
5134
5135case "$use64bitall" in
5136"$define"|true|[yY]*)
5137 case "$ptrsize" in
5138 4) cat <<EOM >&4
5139
5140*** You have chosen a maximally 64-bit build, but your pointers
5141*** are only 4 bytes wide, disabling maximal 64-bitness.
5142
5143EOM
5144 use64bitall="$undef"
5145 case "$use64bitint" in
5146 "$define"|true|[yY]*) ;;
5147 *) cat <<EOM >&4
5148
5149*** Downgrading from maximal 64-bitness to using 64-bit integers.
5150
5151EOM
5152 use64bitint="$define"
5153 ;;
5154 esac
5155 ;;
5156 esac
5157 ;;
5158esac
5159
5160case "$use64bitint" in
5161"$define"|true|[yY]*)
5162: Look for a hint-file generated 'call-back-unit'. If the
5163: user has specified that a 64-bit perl is to be built,
5164: we may need to set or change some other defaults.
5165 if $test -f use64bitint.cbu; then
5166 echo "Your platform has some specific hints for 64-bit integers, using them..."
5167 . ./use64bitint.cbu
5168 fi
5169 case "$longsize" in
5170 4) case "$archname64" in
5171 '') archname64=64int ;;
5172 esac
5173 ;;
5174 esac
5175 ;;
5176esac
5177
5178case "$use64bitall" in
5179"$define"|true|[yY]*)
5180: Look for a hint-file generated 'call-back-unit'. If the
5181: user has specified that a maximally 64-bit perl is to be built,
5182: we may need to set or change some other defaults.
5183 if $test -f use64bitall.cbu; then
5184 echo "Your platform has some specific hints for 64-bit builds, using them..."
5185 . ./use64bitall.cbu
5186 fi
5187 case "$longsize" in
5188 4) case "$archname64" in
5189 ''|64int) archname64=64all ;;
5190 esac
5191 ;;
5192 esac
5193 ;;
5194esac
5195
5196echo " "
5197echo "Checking for GNU C Library..." >&4
5198cat >try.c <<EOM
5199#include <stdio.h>
5200int main()
5201{
5202#ifdef __GLIBC__
5203 exit(0);
5204#else
5205 exit(1);
5206#endif
5207}
5208EOM
5209set try
5210if eval $compile_ok && $run ./try; then
5211 val="$define"
5212 echo "You are using the GNU C Library"
5213else
5214 val="$undef"
5215 echo "You are not using the GNU C Library"
5216fi
5217$rm -f try try.*
5218set d_gnulibc
5219eval $setvar
5220
5221: see if nm is to be used to determine whether a symbol is defined or not
5222case "$usenm" in
5223'')
5224 dflt=''
5225 case "$d_gnulibc" in
5226 "$define")
5227 echo " "
5228 echo "nm probably won't work on the GNU C Library." >&4
5229 dflt=n
5230 ;;
5231 esac
5232 case "$dflt" in
5233 '')
5234 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5235 echo " "
5236 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5237 echo "'nm' won't be sufficient on this sytem." >&4
5238 dflt=n
5239 fi
5240 ;;
5241 esac
5242 case "$dflt" in
5243 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5244 if $test $dflt -gt 20; then
5245 dflt=y
5246 else
5247 dflt=n
5248 fi
5249 ;;
5250 esac
5251 ;;
5252*)
5253 case "$usenm" in
5254 true|$define) dflt=y;;
5255 *) dflt=n;;
5256 esac
5257 ;;
5258esac
5259$cat <<EOM
5260
5261I can use $nm to extract the symbols from your C libraries. This
5262is a time consuming task which may generate huge output on the disk (up
5263to 3 megabytes) but that should make the symbols extraction faster. The
5264alternative is to skip the 'nm' extraction part and to compile a small
5265test program instead to determine whether each symbol is present. If
5266you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5267this may be the best solution.
5268
5269You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5270
5271EOM
5272rp="Shall I use $nm to extract C symbols from the libraries?"
5273. ./myread
5274case "$ans" in
5275[Nn]*) usenm=false;;
5276*) usenm=true;;
5277esac
5278
5279runnm=$usenm
5280case "$reuseval" in
5281true) runnm=false;;
5282esac
5283
5284: nm options which may be necessary
5285case "$nm_opt" in
5286'') if $test -f /mach_boot; then
5287 nm_opt='' # Mach
5288 elif $test -d /usr/ccs/lib; then
5289 nm_opt='-p' # Solaris (and SunOS?)
5290 elif $test -f /dgux; then
5291 nm_opt='-p' # DG-UX
5292 elif $test -f /lib64/rld; then
5293 nm_opt='-p' # 64-bit Irix
5294 else
5295 nm_opt=''
5296 fi;;
5297esac
5298
5299: nm options which may be necessary for shared libraries but illegal
5300: for archive libraries. Thank you, Linux.
5301case "$nm_so_opt" in
5302'') case "$myuname" in
5303 *linux*)
5304 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5305 nm_so_opt='--dynamic'
5306 fi
5307 ;;
5308 esac
5309 ;;
5310esac
5311
5312case "$runnm" in
5313true)
5314: get list of predefined functions in a handy place
5315echo " "
5316case "$libc" in
5317'') libc=unknown
5318 case "$libs" in
5319 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5320 esac
5321 ;;
5322esac
5323case "$libs" in
5324'') ;;
5325*) for thislib in $libs; do
5326 case "$thislib" in
5327 -lc|-lc_s)
5328 : Handle C library specially below.
5329 ;;
5330 -l*)
5331 thislib=`echo $thislib | $sed -e 's/^-l//'`
5332 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5333 :
5334 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5335 :
5336 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5337 :
5338 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5339 :
5340 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5341 :
5342 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5343 :
5344 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5345 :
5346 else
5347 try=''
5348 fi
5349 libnames="$libnames $try"
5350 ;;
5351 *) libnames="$libnames $thislib" ;;
5352 esac
5353 done
5354 ;;
5355esac
5356xxx=normal
5357case "$libc" in
5358unknown)
5359 set /lib/libc.$so
5360 for xxx in $libpth; do
5361 $test -r $1 || set $xxx/libc.$so
5362 : The messy sed command sorts on library version numbers.
5363 $test -r $1 || \
5364 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5365 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5366 h
5367 s/[0-9][0-9]*/0000&/g
5368 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5369 G
5370 s/\n/ /' | \
5371 $sort | $sed -e 's/^.* //'`
5372 eval set \$$#
5373 done
5374 $test -r $1 || set /usr/ccs/lib/libc.$so
5375 $test -r $1 || set /lib/libsys_s$_a
5376 ;;
5377*)
5378 set blurfl
5379 ;;
5380esac
5381if $test -r "$1"; then
5382 echo "Your (shared) C library seems to be in $1."
5383 libc="$1"
5384elif $test -r /lib/libc && $test -r /lib/clib; then
5385 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5386 xxx=apollo
5387 libc='/lib/clib /lib/libc'
5388 if $test -r /lib/syslib; then
5389 echo "(Your math library is in /lib/syslib.)"
5390 libc="$libc /lib/syslib"
5391 fi
5392elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5393 echo "Your C library seems to be in $libc, as you said before."
5394elif $test -r $incpath/usr/lib/libc$_a; then
5395 libc=$incpath/usr/lib/libc$_a;
5396 echo "Your C library seems to be in $libc. That's fine."
5397elif $test -r /lib/libc$_a; then
5398 libc=/lib/libc$_a;
5399 echo "Your C library seems to be in $libc. You're normal."
5400else
5401 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5402 :
5403 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5404 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5405 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5406 :
5407 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5408 :
5409 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5410 :
5411 else
5412 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5413 fi
5414 if $test -r "$tans"; then
5415 echo "Your C library seems to be in $tans, of all places."
5416 libc=$tans
5417 else
5418 libc='blurfl'
5419 fi
5420fi
5421if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5422 dflt="$libc"
5423 cat <<EOM
5424
5425If the guess above is wrong (which it might be if you're using a strange
5426compiler, or your machine supports multiple models), you can override it here.
5427
5428EOM
5429else
5430 dflt=''
5431 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5432 cat >&4 <<EOM
5433I can't seem to find your C library. I've looked in the following places:
5434
5435EOM
5436 $sed 's/^/ /' libpath
5437 cat <<EOM
5438
5439None of these seems to contain your C library. I need to get its name...
5440
5441EOM
5442fi
5443fn=f
5444rp='Where is your C library?'
5445. ./getfile
5446libc="$ans"
5447
5448echo " "
5449echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5450set X `cat libnames`
5451shift
5452xxx=files
5453case $# in 1) xxx=file; esac
5454echo "Extracting names from the following $xxx for later perusal:" >&4
5455echo " "
5456$sed 's/^/ /' libnames >&4
5457echo " "
5458$echo $n "This may take a while...$c" >&4
5459
5460for file in $*; do
5461 case $file in
5462 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5463 *) $nm $nm_opt $file 2>/dev/null;;
5464 esac
5465done >libc.tmp
5466
5467$echo $n ".$c"
5468$grep fprintf libc.tmp > libc.ptf
5469xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5470xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5471xxx='[ADTSIW]'
5472if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5473 eval $xscan;\
5474 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5475 eval $xrun
5476elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5477 eval $xscan;\
5478 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5479 eval $xrun
5480elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5481 eval $xscan;\
5482 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5483 eval $xrun
5484elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5485 eval $xscan;\
5486 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5487 eval $xrun
5488elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5489 eval $xscan;\
5490 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5491 eval $xrun
5492elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5493 eval $xscan;\
5494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495 eval $xrun
5496elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5497 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5498 eval $xscan;\
5499 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5500 eval $xrun
5501elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5502 eval $xscan;\
5503 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5504 eval $xrun
5505elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5506 eval $xscan;\
5507 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5508 eval $xrun
5509elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5510 eval $xscan;\
5511 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5512 eval $xrun
5513elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5514 eval $xscan;\
5515 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5516 eval $xrun
5517elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5518 eval $xscan;\
5519 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5520 eval $xrun
5521elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5522 eval $xscan;\
5523 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5524 eval $xrun
5525elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5526 eval $xscan;\
5527 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5528 eval $xrun
5529else
5530 $nm -p $* 2>/dev/null >libc.tmp
5531 $grep fprintf libc.tmp > libc.ptf
5532 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5533 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5534 then
5535 nm_opt='-p'
5536 eval $xrun
5537 else
5538 echo " "
5539 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5540 com=''
5541 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5542 for thisname in $libnames $libc; do
5543 $ar t $thisname >>libc.tmp
5544 done
5545 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5546 echo "Ok." >&4
5547 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5548 # Repeat libc to extract forwarders to DLL entries too
5549 for thisname in $libnames $libc; do
5550 $ar tv $thisname >>libc.tmp
5551 # Revision 50 of EMX has bug in $ar.
5552 # it will not extract forwarders to DLL entries
5553 # Use emximp which will extract exactly them.
5554 emximp -o tmp.imp $thisname \
5555 2>/dev/null && \
5556 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5557 < tmp.imp >>libc.tmp
5558 $rm tmp.imp
5559 done
5560 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5561 echo "Ok." >&4
5562 else
5563 echo "$ar didn't seem to work right." >&4
5564 echo "Maybe this is a Cray...trying bld instead..." >&4
5565 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5566 then
5567 for thisname in $libnames; do
5568 bld t $libnames | \
5569 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5570 $ar t $thisname >>libc.tmp
5571 done
5572 echo "Ok." >&4
5573 else
5574 echo "That didn't work either. Giving up." >&4
5575 exit 1
5576 fi
5577 fi
5578 fi
5579fi
5580nm_extract="$com"
5581if $test -f /lib/syscalls.exp; then
5582 echo " "
5583 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5584 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5585fi
5586;;
5587esac
5588$rm -f libnames libpath
5589
5590: is a C symbol defined?
5591csym='tlook=$1;
5592case "$3" in
5593-v) tf=libc.tmp; tc=""; tdc="";;
5594-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5595*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5596esac;
5597tx=yes;
5598case "$reuseval-$4" in
5599true-) ;;
5600true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5601esac;
5602case "$tx" in
5603yes)
5604 case "$runnm" in
5605 true)
5606 if $contains $tlook $tf >/dev/null 2>&1;
5607 then tval=true;
5608 else tval=false;
5609 fi;;
5610 *)
5611 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5612 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5613 then tval=true;
5614 else tval=false;
5615 fi;
5616 $rm -f t t.c;;
5617 esac;;
5618*)
5619 case "$tval" in
5620 $define) tval=true;;
5621 *) tval=false;;
5622 esac;;
5623esac;
5624eval "$2=$tval"'
5625
5626: define an is-in-libc? function
5627inlibc='echo " "; td=$define; tu=$undef;
5628sym=$1; var=$2; eval "was=\$$2";
5629tx=yes;
5630case "$reuseval$was" in
5631true) ;;
5632true*) tx=no;;
5633esac;
5634case "$tx" in
5635yes)
5636 set $sym tres -f;
5637 eval $csym;
5638 case "$tres" in
5639 true)
5640 echo "$sym() found." >&4;
5641 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5642 *)
5643 echo "$sym() NOT found." >&4;
5644 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5645 esac;;
5646*)
5647 case "$was" in
5648 $define) echo "$sym() found." >&4;;
5649 *) echo "$sym() NOT found." >&4;;
5650 esac;;
5651esac'
5652
5653: see if sqrtl exists
5654set sqrtl d_sqrtl
5655eval $inlibc
5656
5657case "$ccflags" in
5658*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5659esac
5660
5661case "$uselongdouble" in
5662$define|true|[yY]*) dflt='y';;
5663*) dflt='n';;
5664esac
5665cat <<EOM
5666
5667Perl can be built to take advantage of long doubles which
5668(if available) may give more accuracy and range for floating point numbers.
5669
5670If this doesn't make any sense to you, just accept the default '$dflt'.
5671EOM
5672rp='Try to use long doubles if available?'
5673. ./myread
5674case "$ans" in
5675y|Y) val="$define" ;;
5676*) val="$undef" ;;
5677esac
5678set uselongdouble
5679eval $setvar
5680
5681case "$uselongdouble" in
5682true|[yY]*) uselongdouble="$define" ;;
5683esac
5684
5685case "$uselongdouble" in
5686$define)
5687: Look for a hint-file generated 'call-back-unit'. If the
5688: user has specified that long doubles should be used,
5689: we may need to set or change some other defaults.
5690 if $test -f uselongdouble.cbu; then
5691 echo "Your platform has some specific hints for long doubles, using them..."
5692 . ./uselongdouble.cbu
5693 else
5694 $cat <<EOM
5695(Your platform doesn't have any specific hints for long doubles.)
5696EOM
5697 fi
5698 ;;
5699esac
5700
5701case "$uselongdouble:$d_sqrtl" in
5702$define:$undef)
5703 $cat <<EOM >&4
5704
5705*** You requested the use of long doubles but you do not seem to have
5706*** the mathematic functions for long doubles. I'm disabling the use
5707*** of long doubles.
5708
5709EOM
5710 uselongdouble=$undef
5711 ;;
5712esac
5713
5714: check for length of double
5715echo " "
5716case "$doublesize" in
5717'')
5718 echo "Checking to see how big your double precision numbers are..." >&4
5719 $cat >try.c <<'EOCP'
5720#include <stdio.h>
5721int main()
5722{
5723 printf("%d\n", (int)sizeof(double));
5724 exit(0);
5725}
5726EOCP
5727 set try
5728 if eval $compile_ok; then
5729 doublesize=`$run ./try`
5730 echo "Your double is $doublesize bytes long."
5731 else
5732 dflt='8'
5733 echo "(I can't seem to compile the test program. Guessing...)"
5734 rp="What is the size of a double precision number (in bytes)?"
5735 . ./myread
5736 doublesize="$ans"
5737 fi
5738 ;;
5739esac
5740$rm -f try.c try
5741
5742: check for long doubles
5743echo " "
5744echo "Checking to see if you have long double..." >&4
5745echo 'int main() { long double x = 7.0; }' > try.c
5746set try
5747if eval $compile; then
5748 val="$define"
5749 echo "You have long double."
5750else
5751 val="$undef"
5752 echo "You do not have long double."
5753fi
5754$rm try.*
5755set d_longdbl
5756eval $setvar
5757
5758: check for length of long double
5759case "${d_longdbl}${longdblsize}" in
5760$define)
5761 echo " "
5762 echo "Checking to see how big your long doubles are..." >&4
5763 $cat >try.c <<'EOCP'
5764#include <stdio.h>
5765int main()
5766{
5767 printf("%d\n", sizeof(long double));
5768}
5769EOCP
5770 set try
5771 set try
5772 if eval $compile; then
5773 longdblsize=`$run ./try`
5774 echo "Your long doubles are $longdblsize bytes long."
5775 else
5776 dflt='8'
5777 echo " "
5778 echo "(I can't seem to compile the test program. Guessing...)" >&4
5779 rp="What is the size of a long double (in bytes)?"
5780 . ./myread
5781 longdblsize="$ans"
5782 fi
5783 if $test "X$doublesize" = "X$longdblsize"; then
5784 echo "(That isn't any different from an ordinary double.)"
5785 fi
5786 ;;
5787esac
5788$rm -f try.* try
5789
5790case "$useperlio" in
5791$define|true|[yY]*|'') dflt='y';;
5792*) dflt='n';;
5793esac
5794cat <<EOM
5795
5796Previous version of $package used the standard IO mechanisms as
5797defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5798alternate IO mechanisms via the PerlIO abstraction layer, but the
5799stdio mechanism is still available if needed. The abstraction layer
5800can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5801Using PerlIO with sfio may cause problems with some extension modules.
5802
5803If this doesn't make any sense to you, just accept the default '$dflt'.
5804EOM
5805rp='Use the PerlIO abstraction layer?'
5806. ./myread
5807case "$ans" in
5808y|Y)
5809 val="$define"
5810 ;;
5811*)
5812 echo "Ok, doing things the stdio way."
5813 val="$undef"
5814 ;;
5815esac
5816set useperlio
5817eval $setvar
5818
5819case "$usesocks" in
5820$define|true|[yY]*)
5821 case "$useperlio" in
5822 $define|true|[yY]*) ;;
5823 *) cat >&4 <<EOM
5824
5825You are using the SOCKS proxy protocol library which means that you
5826should also use the PerlIO layer. You may be headed for trouble.
5827
5828EOM
5829 ;;
5830 esac
5831 ;;
5832esac
5833
5834
5835: determine the architecture name
5836echo " "
5837if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5838 tarch=`arch`"-$osname"
5839elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5840 if uname -m > tmparch 2>&1 ; then
5841 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5842 -e 's/$/'"-$osname/" tmparch`
5843 else
5844 tarch="$osname"
5845 fi
5846 $rm -f tmparch
5847else
5848 tarch="$osname"
5849fi
5850case "$myarchname" in
5851''|"$tarch") ;;
5852*)
5853 echo "(Your architecture name used to be $myarchname.)"
5854 archname=''
5855 ;;
5856esac
5857case "$targetarch" in
5858'') ;;
5859*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5860esac
5861myarchname="$tarch"
5862case "$archname" in
5863'') dflt="$tarch";;
5864*) dflt="$archname";;
5865esac
5866rp='What is your architecture name'
5867. ./myread
5868archname="$ans"
5869case "$usethreads" in
5870$define)
5871 echo "Threads selected." >&4
5872 case "$archname" in
5873 *-thread*) echo "...and architecture name already has -thread." >&4
5874 ;;
5875 *) archname="$archname-thread"
5876 echo "...setting architecture name to $archname." >&4
5877 ;;
5878 esac
5879 ;;
5880esac
5881case "$usemultiplicity" in
5882$define)
5883 echo "Multiplicity selected." >&4
5884 case "$archname" in
5885 *-multi*) echo "...and architecture name already has -multi." >&4
5886 ;;
5887 *) archname="$archname-multi"
5888 echo "...setting architecture name to $archname." >&4
5889 ;;
5890 esac
5891 ;;
5892esac
5893case "$use64bitint$use64bitall" in
5894*"$define"*)
5895 case "$archname64" in
5896 '')
5897 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5898 ;;
5899 *)
5900 case "$use64bitint" in
5901 "$define") echo "64 bit integers selected." >&4 ;;
5902 esac
5903 case "$use64bitall" in
5904 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5905 esac
5906 case "$archname" in
5907 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5908 ;;
5909 *) archname="$archname-$archname64"
5910 echo "...setting architecture name to $archname." >&4
5911 ;;
5912 esac
5913 ;;
5914 esac
5915esac
5916case "$uselongdouble" in
5917$define)
5918 echo "Long doubles selected." >&4
5919 case "$longdblsize" in
5920 $doublesize)
5921 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5922 ;;
5923 *)
5924 case "$archname" in
5925 *-ld*) echo "...and architecture name already has -ld." >&4
5926 ;;
5927 *) archname="$archname-ld"
5928 echo "...setting architecture name to $archname." >&4
5929 ;;
5930 esac
5931 ;;
5932 esac
5933 ;;
5934esac
5935case "$useperlio" in
5936$define)
5937 echo "Perlio selected." >&4
5938 ;;
5939*)
5940 echo "Perlio not selected, using stdio." >&4
5941 case "$archname" in
5942 *-stdio*) echo "...and architecture name already has -stdio." >&4
5943 ;;
5944 *) archname="$archname-stdio"
5945 echo "...setting architecture name to $archname." >&4
5946 ;;
5947 esac
5948 ;;
5949esac
5950
5951: determine root of directory hierarchy where package will be installed.
5952case "$prefix" in
5953'')
5954 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5955 ;;
5956*)
5957 dflt="$prefix"
5958 ;;
5959esac
5960$cat <<EOM
5961
5962By default, $package will be installed in $dflt/bin, manual pages
5963under $dflt/man, etc..., i.e. with $dflt as prefix for all
5964installation directories. Typically this is something like /usr/local.
5965If you wish to have binaries under /usr/bin but other parts of the
5966installation under /usr/local, that's ok: you will be prompted
5967separately for each of the installation directories, the prefix being
5968only used to set the defaults.
5969
5970EOM
5971fn=d~
5972rp='Installation prefix to use?'
5973. ./getfile
5974oldprefix=''
5975case "$prefix" in
5976'') ;;
5977*)
5978 case "$ans" in
5979 "$prefix") ;;
5980 *) oldprefix="$prefix";;
5981 esac
5982 ;;
5983esac
5984prefix="$ans"
5985prefixexp="$ansexp"
5986
5987case "$afsroot" in
5988'') afsroot=/afs ;;
5989*) afsroot=$afsroot ;;
5990esac
5991
5992: is AFS running?
5993echo " "
5994case "$afs" in
5995$define|true) afs=true ;;
5996$undef|false) afs=false ;;
5997*) if test -d $afsroot; then
5998 afs=true
5999 else
6000 afs=false
6001 fi
6002 ;;
6003esac
6004if $afs; then
6005 echo "AFS may be running... I'll be extra cautious then..." >&4
6006else
6007 echo "AFS does not seem to be running..." >&4
6008fi
6009
6010: determine installation prefix for where package is to be installed.
6011if $afs; then
6012$cat <<EOM
6013
6014Since you are running AFS, I need to distinguish the directory in which
6015files will reside from the directory in which they are installed (and from
6016which they are presumably copied to the former directory by occult means).
6017
6018EOM
6019 case "$installprefix" in
6020 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6021 *) dflt="$installprefix";;
6022 esac
6023else
6024$cat <<EOM
6025
6026In some special cases, particularly when building $package for distribution,
6027it is convenient to distinguish between the directory in which files should
6028be installed from the directory ($prefix) in which they
6029will eventually reside. For most users, these two directories are the same.
6030
6031EOM
6032 case "$installprefix" in
6033 '') dflt=$prefix ;;
6034 *) dflt=$installprefix;;
6035 esac
6036fi
6037fn=d~
6038rp='What installation prefix should I use for installing files?'
6039. ./getfile
6040installprefix="$ans"
6041installprefixexp="$ansexp"
6042
6043: set the prefixit variable, to compute a suitable default value
6044prefixit='case "$3" in
6045""|none)
6046 case "$oldprefix" in
6047 "") eval "$1=\"\$$2\"";;
6048 *)
6049 case "$3" in
6050 "") eval "$1=";;
6051 none)
6052 eval "tp=\"\$$2\"";
6053 case "$tp" in
6054 ""|" ") eval "$1=\"\$$2\"";;
6055 *) eval "$1=";;
6056 esac;;
6057 esac;;
6058 esac;;
6059*)
6060 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6061 case "$tp" in
6062 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6063 /*-$oldprefix/*|\~*-$oldprefix/*)
6064 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6065 *) eval "$1=\"\$$2\"";;
6066 esac;;
6067esac'
6068
6069: get the patchlevel
6070echo " "
6071echo "Getting the current patchlevel..." >&4
6072if $test -r $rsrc/patchlevel.h;then
6073 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6076 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6077 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6078 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6079 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6080else
6081 revision=0
6082 patchlevel=0
6083 subversion=0
6084 api_revision=0
6085 api_version=0
6086 api_subversion=0
6087 perl_patchlevel=0
6088 $echo "(You do not have patchlevel.h. Eek.)"
6089fi
6090if $test -r $rsrc/.patch ; then
6091 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6092 perl_patchlevel=`cat $rsrc/.patch`
6093 fi
6094fi
6095: Define a handy string here to avoid duplication in myconfig.SH and configpm.
6096version_patchlevel_string="version $patchlevel subversion $subversion"
6097case "$perl_patchlevel" in
60980|'') ;;
6099*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6100esac
6101
6102$echo "(You have $package $version_patchlevel_string.)"
6103
6104case "$osname" in
6105dos|vms)
6106 : XXX Should be a Configure test for double-dots in filenames.
6107 version=`echo $revision $patchlevel $subversion | \
6108 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6109 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6110 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6111 ;;
6112*)
6113 version=`echo $revision $patchlevel $subversion | \
6114 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6115 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6116 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6117 ;;
6118esac
6119: Special case the 5.005_xx maintenance series, which used 5.005
6120: without any subversion label as a subdirectory in $sitelib
6121if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6122 api_versionstring='5.005'
6123fi
6124
6125: determine installation style
6126: For now, try to deduce it from prefix unless it is already set.
6127: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6128case "$installstyle" in
6129'') case "$prefix" in
6130 *perl*) dflt='lib';;
6131 *) dflt='lib/perl5' ;;
6132 esac
6133 ;;
6134*) dflt="$installstyle" ;;
6135esac
6136: Probably not worth prompting for this since we prompt for all
6137: the directories individually, and the prompt would be too long and
6138: confusing anyway.
6139installstyle=$dflt
6140
6141: determine where private library files go
6142: Usual default is /usr/local/lib/perl5/$version.
6143: Also allow things like /opt/perl/lib/$version, since
6144: /opt/perl/lib/perl5... would be redundant.
6145: The default "style" setting is made in installstyle.U
6146case "$installstyle" in
6147*lib/perl5*) set dflt privlib lib/$package/$version ;;
6148*) set dflt privlib lib/$version ;;
6149esac
6150eval $prefixit
6151$cat <<EOM
6152
6153There are some auxiliary files for $package that need to be put into a
6154private library directory that is accessible by everyone.
6155
6156EOM
6157fn=d~+
6158rp='Pathname where the private library files will reside?'
6159. ./getfile
6160privlib="$ans"
6161privlibexp="$ansexp"
6162: Change installation prefix, if necessary.
6163if $test X"$prefix" != X"$installprefix"; then
6164 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6165else
6166 installprivlib="$privlibexp"
6167fi
6168
6169: set the prefixup variable, to restore leading tilda escape
6170prefixup='case "$prefixexp" in
6171"$prefix") ;;
6172*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6173esac'
6174
6175: determine where public architecture dependent libraries go
6176set archlib archlib
6177eval $prefixit
6178: privlib default is /usr/local/lib/$package/$version
6179: archlib default is /usr/local/lib/$package/$version/$archname
6180: privlib may have an optional trailing /share.
6181tdflt=`echo $privlib | $sed 's,/share$,,'`
6182tdflt=$tdflt/$archname
6183case "$archlib" in
6184'') dflt=$tdflt
6185 ;;
6186*) dflt="$archlib"
6187 ;;
6188esac
6189$cat <<EOM
6190
6191$spackage contains architecture-dependent library files. If you are
6192sharing libraries in a heterogeneous environment, you might store
6193these files in a separate location. Otherwise, you can just include
6194them with the rest of the public library files.
6195
6196EOM
6197fn=d+~
6198rp='Where do you want to put the public architecture-dependent libraries?'
6199. ./getfile
6200archlib="$ans"
6201archlibexp="$ansexp"
6202if $test X"$archlib" = X"$privlib"; then
6203 d_archlib="$undef"
6204else
6205 d_archlib="$define"
6206fi
6207: Change installation prefix, if necessary.
6208if $test X"$prefix" != X"$installprefix"; then
6209 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6210else
6211 installarchlib="$archlibexp"
6212fi
6213
6214
6215: Binary compatibility with 5.005 is not possible for builds
6216: with advanced features
6217case "$usethreads$usemultiplicity" in
6218*define*)
6219 bincompat5005="$undef"
6220 d_bincompat5005="$undef"
6221 ;;
6222*) $cat <<EOM
6223
6224This version of Perl can be compiled for binary compatibility with 5.005.
6225If you decide to do so, you will be able to continue using most of the
6226extensions that were compiled for Perl 5.005.
6227
6228EOM
6229 case "$bincompat5005$d_bincompat5005" in
6230 *"$undef"*) dflt=n ;;
6231 *) dflt=y ;;
6232 esac
6233 rp='Binary compatibility with Perl 5.005?'
6234 . ./myread
6235 case "$ans" in
6236 y*) val="$define" ;;
6237 *) val="$undef" ;;
6238 esac
6239 set d_bincompat5005
6240 eval $setvar
6241 case "$d_bincompat5005" in
6242 "$define")
6243 bincompat5005="$define"
6244 ;;
6245 *) bincompat5005="$undef"
6246 d_bincompat5005="$undef"
6247 ;;
6248 esac
6249 ;;
6250esac
6251
6252
6253: see if setuid scripts can be secure
6254$cat <<EOM
6255
6256Some kernels have a bug that prevents setuid #! scripts from being
6257secure. Some sites have disabled setuid #! scripts because of this.
6258
6259First let's decide if your kernel supports secure setuid #! scripts.
6260(If setuid #! scripts would be secure but have been disabled anyway,
6261don't say that they are secure if asked.)
6262
6263EOM
6264
6265val="$undef"
6266if $test -d /dev/fd; then
6267 echo "#!$ls" >reflect
6268 chmod +x,u+s reflect
6269 ./reflect >flect 2>&1
6270 if $contains "/dev/fd" flect >/dev/null; then
6271 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6272 val="$define"
6273 else
6274 $cat <<EOM
6275If you are not sure if they are secure, I can check but I'll need a
6276username and password different from the one you are using right now.
6277If you don't have such a username or don't want me to test, simply
6278enter 'none'.
6279
6280EOM
6281 rp='Other username to test security of setuid scripts with?'
6282 dflt='none'
6283 . ./myread
6284 case "$ans" in
6285 n|none)
6286 case "$d_suidsafe" in
6287 '') echo "I'll assume setuid scripts are *not* secure." >&4
6288 dflt=n;;
6289 "$undef")
6290 echo "Well, the $hint value is *not* secure." >&4
6291 dflt=n;;
6292 *) echo "Well, the $hint value *is* secure." >&4
6293 dflt=y;;
6294 esac
6295 ;;
6296 *)
6297 $rm -f reflect flect
6298 echo "#!$ls" >reflect
6299 chmod +x,u+s reflect
6300 echo >flect
6301 chmod a+w flect
6302 echo '"su" will (probably) prompt you for '"$ans's password."
6303 su $ans -c './reflect >flect'
6304 if $contains "/dev/fd" flect >/dev/null; then
6305 echo "Okay, it looks like setuid scripts are secure." >&4
6306 dflt=y
6307 else
6308 echo "I don't think setuid scripts are secure." >&4
6309 dflt=n
6310 fi
6311 ;;
6312 esac
6313 rp='Does your kernel have *secure* setuid scripts?'
6314 . ./myread
6315 case "$ans" in
6316 [yY]*) val="$define";;
6317 *) val="$undef";;
6318 esac
6319 fi
6320else
6321 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6322 echo "(That's for file descriptors, not floppy disks.)"
6323 val="$undef"
6324fi
6325set d_suidsafe
6326eval $setvar
6327
6328$rm -f reflect flect
6329
6330: now see if they want to do setuid emulation
6331echo " "
6332val="$undef"
6333case "$d_suidsafe" in
6334"$define")
6335 val="$undef"
6336 echo "No need to emulate SUID scripts since they are secure here." >& 4
6337 ;;
6338*)
6339 $cat <<EOM
6340Some systems have disabled setuid scripts, especially systems where
6341setuid scripts cannot be secure. On systems where setuid scripts have
6342been disabled, the setuid/setgid bits on scripts are currently
6343useless. It is possible for $package to detect those bits and emulate
6344setuid/setgid in a secure fashion. This emulation will only work if
6345setuid scripts have been disabled in your kernel.
6346
6347EOM
6348 case "$d_dosuid" in
6349 "$define") dflt=y ;;
6350 *) dflt=n ;;
6351 esac
6352 rp="Do you want to do setuid/setgid emulation?"
6353 . ./myread
6354 case "$ans" in
6355 [yY]*) val="$define";;
6356 *) val="$undef";;
6357 esac
6358 ;;
6359esac
6360set d_dosuid
6361eval $setvar
6362
6363: see if this is a malloc.h system
6364set malloc.h i_malloc
6365eval $inhdr
6366
6367: see if stdlib is available
6368set stdlib.h i_stdlib
6369eval $inhdr
6370
6371: determine which malloc to compile in
6372echo " "
6373case "$usemymalloc" in
6374[yY]*|true|$define) dflt='y' ;;
6375[nN]*|false|$undef) dflt='n' ;;
6376*) case "$ptrsize" in
6377 4) dflt='y' ;;
6378 *) dflt='n' ;;
6379 esac
6380 ;;
6381esac
6382rp="Do you wish to attempt to use the malloc that comes with $package?"
6383. ./myread
6384usemymalloc="$ans"
6385case "$ans" in
6386y*|true)
6387 usemymalloc='y'
6388 mallocsrc='malloc.c'
6389 mallocobj="malloc$_o"
6390 d_mymalloc="$define"
6391 case "$libs" in
6392 *-lmalloc*)
6393 : Remove malloc from list of libraries to use
6394 echo "Removing unneeded -lmalloc from library list" >&4
6395 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6396 shift
6397 libs="$*"
6398 echo "libs = $libs" >&4
6399 ;;
6400 esac
6401 ;;
6402*)
6403 usemymalloc='n'
6404 mallocsrc=''
6405 mallocobj=''
6406 d_mymalloc="$undef"
6407 ;;
6408esac
6409
6410: compute the return types of malloc and free
6411echo " "
6412$cat >malloc.c <<END
6413#$i_malloc I_MALLOC
6414#$i_stdlib I_STDLIB
6415#include <stdio.h>
6416#include <sys/types.h>
6417#ifdef I_MALLOC
6418#include <malloc.h>
6419#endif
6420#ifdef I_STDLIB
6421#include <stdlib.h>
6422#endif
6423#ifdef TRY_MALLOC
6424void *malloc();
6425#endif
6426#ifdef TRY_FREE
6427void free();
6428#endif
6429END
6430case "$malloctype" in
6431'')
6432 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6433 malloctype='void *'
6434 else
6435 malloctype='char *'
6436 fi
6437 ;;
6438esac
6439echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6440
6441case "$freetype" in
6442'')
6443 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6444 freetype='void'
6445 else
6446 freetype='int'
6447 fi
6448 ;;
6449esac
6450echo "Your system uses $freetype free(), it would seem." >&4
6451$rm -f malloc.[co]
6452$cat <<EOM
6453
6454After $package is installed, you may wish to install various
6455add-on modules and utilities. Typically, these add-ons will
6456be installed under $prefix with the rest
6457of this package. However, you may wish to install such add-ons
6458elsewhere under a different prefix.
6459
6460If you do not wish to put everything under a single prefix, that's
6461ok. You will be prompted for the individual locations; this siteprefix
6462is only used to suggest the defaults.
6463
6464The default should be fine for most people.
6465
6466EOM
6467fn=d~+
6468rp='Installation prefix to use for add-on modules and utilities?'
6469: XXX Here might be another good place for an installstyle setting.
6470case "$siteprefix" in
6471'') dflt=$prefix ;;
6472*) dflt=$siteprefix ;;
6473esac
6474. ./getfile
6475: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6476oldsiteprefix=''
6477case "$siteprefix" in
6478'') ;;
6479*) case "$ans" in
6480 "$prefix") ;;
6481 *) oldsiteprefix="$prefix";;
6482 esac
6483 ;;
6484esac
6485siteprefix="$ans"
6486siteprefixexp="$ansexp"
6487
6488: determine where site specific libraries go.
6489: Usual default is /usr/local/lib/perl5/site_perl/$version
6490: The default "style" setting is made in installstyle.U
6491: XXX No longer works with Prefixit stuff.
6492prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6493case "$sitelib" in
6494'') case "$installstyle" in
6495 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6496 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6497 esac
6498 ;;
6499*) dflt="$sitelib"
6500 ;;
6501esac
6502$cat <<EOM
6503
6504The installation process will create a directory for
6505site-specific extensions and modules. Most users find it convenient
6506to place all site-specific files in this directory rather than in the
6507main distribution directory.
6508
6509EOM
6510fn=d~+
6511rp='Pathname for the site-specific library files?'
6512. ./getfile
6513sitelib="$ans"
6514sitelibexp="$ansexp"
6515sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6516: Change installation prefix, if necessary.
6517if $test X"$prefix" != X"$installprefix"; then
6518 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6519else
6520 installsitelib="$sitelibexp"
6521fi
6522
6523: determine where site specific architecture-dependent libraries go.
6524: sitelib default is /usr/local/lib/perl5/site_perl/$version
6525: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6526: sitelib may have an optional trailing /share.
6527case "$sitearch" in
6528'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6529 dflt="$dflt/$archname"
6530 ;;
6531*) dflt="$sitearch"
6532 ;;
6533esac
6534set sitearch sitearch none
6535eval $prefixit
6536$cat <<EOM
6537
6538The installation process will also create a directory for
6539architecture-dependent site-specific extensions and modules.
6540
6541EOM
6542fn=d~+
6543rp='Pathname for the site-specific architecture-dependent library files?'
6544. ./getfile
6545sitearch="$ans"
6546sitearchexp="$ansexp"
6547: Change installation prefix, if necessary.
6548if $test X"$prefix" != X"$installprefix"; then
6549 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6550else
6551 installsitearch="$sitearchexp"
6552fi
6553
6554$cat <<EOM
6555
6556The installation process will also create a directory for
6557vendor-supplied add-ons. Vendors who supply perl with their system
6558may find it convenient to place all vendor-supplied files in this
6559directory rather than in the main distribution directory. This will
6560ease upgrades between binary-compatible maintenance versions of perl.
6561
6562Of course you may also use these directories in whatever way you see
6563fit. For example, you might use them to access modules shared over a
6564company-wide network.
6565
6566The default answer should be fine for most people.
6567This causes further questions about vendor add-ons to be skipped
6568and no vendor-specific directories will be configured for perl.
6569
6570EOM
6571rp='Do you want to configure vendor-specific add-on directories?'
6572case "$usevendorprefix" in
6573define|true|[yY]*) dflt=y ;;
6574*) : User may have set vendorprefix directly on Configure command line.
6575 case "$vendorprefix" in
6576 ''|' ') dflt=n ;;
6577 *) dflt=y ;;
6578 esac
6579 ;;
6580esac
6581. ./myread
6582case "$ans" in
6583[yY]*) fn=d~+
6584 rp='Installation prefix to use for vendor-supplied add-ons?'
6585 case "$vendorprefix" in
6586 '') dflt='' ;;
6587 *) dflt=$vendorprefix ;;
6588 esac
6589 . ./getfile
6590 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6591 oldvendorprefix=''
6592 case "$vendorprefix" in
6593 '') ;;
6594 *) case "$ans" in
6595 "$prefix") ;;
6596 *) oldvendorprefix="$prefix";;
6597 esac
6598 ;;
6599 esac
6600 usevendorprefix="$define"
6601 vendorprefix="$ans"
6602 vendorprefixexp="$ansexp"
6603 ;;
6604*) usevendorprefix="$undef"
6605 vendorprefix=''
6606 vendorprefixexp=''
6607 ;;
6608esac
6609
6610case "$vendorprefix" in
6611'') d_vendorlib="$undef"
6612 vendorlib=''
6613 vendorlibexp=''
6614 ;;
6615*) d_vendorlib="$define"
6616 : determine where vendor-supplied modules go.
6617 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6618 case "$vendorlib" in
6619 '')
6620 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6621 case "$installstyle" in
6622 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6623 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6624 esac
6625 ;;
6626 *) dflt="$vendorlib"
6627 ;;
6628 esac
6629 fn=d~+
6630 rp='Pathname for the vendor-supplied library files?'
6631 . ./getfile
6632 vendorlib="$ans"
6633 vendorlibexp="$ansexp"
6634 ;;
6635esac
6636vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6637: Change installation prefix, if necessary.
6638if $test X"$prefix" != X"$installprefix"; then
6639 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6640else
6641 installvendorlib="$vendorlibexp"
6642fi
6643
6644case "$vendorprefix" in
6645'') d_vendorarch="$undef"
6646 vendorarch=''
6647 vendorarchexp=''
6648 ;;
6649*) d_vendorarch="$define"
6650 : determine where vendor-supplied architecture-dependent libraries go.
6651 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6652 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6653 : vendorlib may have an optional trailing /share.
6654 case "$vendorarch" in
6655 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6656 dflt="$dflt/$archname"
6657 ;;
6658 *) dflt="$vendorarch" ;;
6659 esac
6660 fn=d~+
6661 rp='Pathname for vendor-supplied architecture-dependent files?'
6662 . ./getfile
6663 vendorarch="$ans"
6664 vendorarchexp="$ansexp"
6665 ;;
6666esac
6667: Change installation prefix, if necessary.
6668if $test X"$prefix" != X"$installprefix"; then
6669 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6670else
6671 installvendorarch="$vendorarchexp"
6672fi
6673
6674: Final catch-all directories to search
6675$cat <<EOM
6676
6677Lastly, you can have perl look in other directories for extensions and
6678modules in addition to those already specified.
6679These directories will be searched after
6680 $sitearch
6681 $sitelib
6682EOM
6683test X"$vendorlib" != "X" && echo ' ' $vendorlib
6684test X"$vendorarch" != "X" && echo ' ' $vendorarch
6685echo ' '
6686case "$otherlibdirs" in
6687''|' ') dflt='none' ;;
6688*) dflt="$otherlibdirs" ;;
6689esac
6690$cat <<EOM
6691Enter a colon-separated set of extra paths to include in perl's @INC
6692search path, or enter 'none' for no extra paths.
6693
6694EOM
6695
6696rp='Colon-separated list of additional directories for perl to search?'
6697. ./myread
6698case "$ans" in
6699' '|''|none) otherlibdirs=' ' ;;
6700*) otherlibdirs="$ans" ;;
6701esac
6702case "$otherlibdirs" in
6703' ') val=$undef ;;
6704*) val=$define ;;
6705esac
6706set d_perl_otherlibdirs
6707eval $setvar
6708
6709: Cruising for prototypes
6710echo " "
6711echo "Checking out function prototypes..." >&4
6712$cat >prototype.c <<'EOCP'
6713int main(int argc, char *argv[]) {
6714 exit(0);}
6715EOCP
6716if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6717 echo "Your C compiler appears to support function prototypes."
6718 val="$define"
6719else
6720 echo "Your C compiler doesn't seem to understand function prototypes."
6721 val="$undef"
6722fi
6723set prototype
6724eval $setvar
6725$rm -f prototype*
6726
6727case "$prototype" in
6728"$define") ;;
6729*) ansi2knr='ansi2knr'
6730 echo " "
6731 cat <<EOM >&4
6732
6733$me: FATAL ERROR:
6734This version of $package can only be compiled by a compiler that
6735understands function prototypes. Unfortunately, your C compiler
6736 $cc $ccflags
6737doesn't seem to understand them. Sorry about that.
6738
6739If GNU cc is available for your system, perhaps you could try that instead.
6740
6741Eventually, we hope to support building Perl with pre-ANSI compilers.
6742If you would like to help in that effort, please contact <perlbug@perl.org>.
6743
6744Aborting Configure now.
6745EOM
6746 exit 2
6747 ;;
6748esac
6749
6750: determine where public executables go
6751echo " "
6752set dflt bin bin
6753eval $prefixit
6754fn=d~
6755rp='Pathname where the public executables will reside?'
6756. ./getfile
6757if $test "X$ansexp" != "X$binexp"; then
6758 installbin=''
6759fi
6760bin="$ans"
6761binexp="$ansexp"
6762: Change installation prefix, if necessary.
6763: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6764if $test X"$prefix" != X"$installprefix"; then
6765 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6766else
6767 installbin="$binexp"
6768fi
6769
6770echo " "
6771case "$extras" in
6772'') dflt='n';;
6773*) dflt='y';;
6774esac
6775cat <<EOM
6776Perl can be built with extra modules or bundles of modules which
6777will be fetched from the CPAN and installed alongside Perl.
6778
6779Notice that you will need access to the CPAN; either via the Internet,
6780or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6781be asked later to configure the CPAN.pm module which will in turn do
6782the installation of the rest of the extra modules or bundles.)
6783
6784Notice also that if the modules require any external software such as
6785libraries and headers (the libz library and the zlib.h header for the
6786Compress::Zlib module, for example) you MUST have any such software
6787already installed, this configuration process will NOT install such
6788things for you.
6789
6790If this doesn't make any sense to you, just accept the default '$dflt'.
6791EOM
6792rp='Install any extra modules (y or n)?'
6793. ./myread
6794case "$ans" in
6795y|Y)
6796 cat <<EOM
6797
6798Please list any extra modules or bundles to be installed from CPAN,
6799with spaces between the names. The names can be in any format the
6800'install' command of CPAN.pm will understand. (Answer 'none',
6801without the quotes, to install no extra modules or bundles.)
6802EOM
6803 rp='Extras?'
6804 dflt="$extras"
6805 . ./myread
6806 extras="$ans"
6807esac
6808case "$extras" in
6809''|'none')
6810 val=''
6811 $rm -f ../extras.lst
6812 ;;
6813*) echo "(Saving the list of extras for later...)"
6814 echo "$extras" > ../extras.lst
6815 val="'$extras'"
6816 ;;
6817esac
6818set extras
6819eval $setvar
6820echo " "
6821
6822: Find perl5.005 or later.
6823echo "Looking for a previously installed perl5.005 or later... "
6824case "$perl5" in
6825'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6826 : Check if this perl is recent and can load a simple module
6827 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6828 perl5=$tdir/perl
6829 break;
6830 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6831 perl5=$tdir/perl5
6832 break;
6833 fi
6834 done
6835 ;;
6836*) perl5="$perl5"
6837 ;;
6838esac
6839case "$perl5" in
6840'') echo "None found. That's ok.";;
6841*) echo "Using $perl5." ;;
6842esac
6843
6844: Determine list of previous versions to include in @INC
6845$cat > getverlist <<EOPL
6846#!$perl5 -w
6847use File::Basename;
6848\$api_versionstring = "$api_versionstring";
6849\$version = "$version";
6850\$stem = "$sitelib_stem";
6851\$archname = "$archname";
6852EOPL
6853 $cat >> getverlist <<'EOPL'
6854# Can't have leading @ because metaconfig interprets it as a command!
6855;@inc_version_list=();
6856# XXX Redo to do opendir/readdir?
6857if (-d $stem) {
6858 chdir($stem);
6859 ;@candidates = glob("5.*");
6860}
6861else {
6862 ;@candidates = ();
6863}
6864
6865# XXX ToDo: These comparisons must be reworked when two-digit
6866# subversions come along, so that 5.7.10 compares as greater than
6867# 5.7.3! By that time, hope that 5.6.x is sufficiently
6868# widespread that we can use the built-in version vectors rather
6869# than reinventing them here. For 5.6.0, however, we must
6870# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6871foreach $d (@candidates) {
6872 if ($d lt $version) {
6873 if ($d ge $api_versionstring) {
6874 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6875 }
6876 elsif ($d ge "5.005") {
6877 unshift(@inc_version_list, grep { -d } $d);
6878 }
6879 }
6880 else {
6881 # Skip newer version. I.e. don't look in
6882 # 5.7.0 if we're installing 5.6.1.
6883 }
6884}
6885
6886if (@inc_version_list) {
6887 print join(' ', @inc_version_list);
6888}
6889else {
6890 # Blank space to preserve value for next Configure run.
6891 print " ";
6892}
6893EOPL
6894chmod +x getverlist
6895case "$inc_version_list" in
6896'') if test -x "$perl5$exe_ext"; then
6897 dflt=`$perl5 getverlist`
6898 else
6899 dflt='none'
6900 fi
6901 ;;
6902$undef) dflt='none' ;;
6903*) eval dflt=\"$inc_version_list\" ;;
6904esac
6905case "$dflt" in
6906''|' ') dflt=none ;;
6907esac
6908case "$dflt" in
69095.005) case "$bincompat5005" in
6910 $define|true|[yY]*) ;;
6911 *) dflt=none ;;
6912 esac
6913 ;;
6914esac
6915$cat <<'EOM'
6916
6917In order to ease the process of upgrading, this version of perl
6918can be configured to use modules built and installed with earlier
6919versions of perl that were installed under $prefix. Specify here
6920the list of earlier versions that this version of perl should check.
6921If Configure detected no earlier versions of perl installed under
6922$prefix, then the list will be empty. Answer 'none' to tell perl
6923to not search earlier versions.
6924
6925The default should almost always be sensible, so if you're not sure,
6926just accept the default.
6927EOM
6928
6929rp='List of earlier versions to include in @INC?'
6930. ./myread
6931case "$ans" in
6932[Nn]one|''|' ') inc_version_list=' ' ;;
6933*) inc_version_list="$ans" ;;
6934esac
6935case "$inc_version_list" in
6936''|' ')
6937 inc_version_list_init='0';;
6938*) inc_version_list_init=`echo $inc_version_list |
6939 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6940 ;;
6941esac
6942$rm -f getverlist
6943
6944: determine whether to install perl also as /usr/bin/perl
6945
6946echo " "
6947if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6948 $cat <<EOM
6949Many scripts expect perl to be installed as /usr/bin/perl.
6950I can install the perl you are about to compile also as /usr/bin/perl
6951(in addition to $installbin/perl).
6952EOM
6953 case "$installusrbinperl" in
6954 "$undef"|[nN]*) dflt='n';;
6955 *) dflt='y';;
6956 esac
6957 rp="Do you want to install perl as /usr/bin/perl?"
6958 . ./myread
6959 case "$ans" in
6960 [yY]*) val="$define";;
6961 *) val="$undef" ;;
6962 esac
6963else
6964 val="$undef"
6965fi
6966set installusrbinperl
6967eval $setvar
6968
6969: see if dld is available
6970set dld.h i_dld
6971eval $inhdr
6972
6973: see if dlopen exists
6974xxx_runnm="$runnm"
6975runnm=false
6976set dlopen d_dlopen
6977eval $inlibc
6978runnm="$xxx_runnm"
6979
6980: determine which dynamic loading, if any, to compile in
6981echo " "
6982dldir="ext/DynaLoader"
6983case "$usedl" in
6984$define|y|true)
6985 dflt='y'
6986 usedl="$define"
6987 ;;
6988$undef|n|false)
6989 dflt='n'
6990 usedl="$undef"
6991 ;;
6992*)
6993 dflt='n'
6994 case "$d_dlopen" in
6995 $define) dflt='y' ;;
6996 esac
6997 case "$i_dld" in
6998 $define) dflt='y' ;;
6999 esac
7000 : Does a dl_xxx.xs file exist for this operating system
7001 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7002 ;;
7003esac
7004rp="Do you wish to use dynamic loading?"
7005. ./myread
7006usedl="$ans"
7007case "$ans" in
7008y*) usedl="$define"
7009 case "$dlsrc" in
7010 '')
7011 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7012 dflt="$dldir/dl_${osname}.xs"
7013 elif $test "$d_dlopen" = "$define" ; then
7014 dflt="$dldir/dl_dlopen.xs"
7015 elif $test "$i_dld" = "$define" ; then
7016 dflt="$dldir/dl_dld.xs"
7017 else
7018 dflt=''
7019 fi
7020 ;;
7021 *) dflt="$dldir/$dlsrc"
7022 ;;
7023 esac
7024 echo "The following dynamic loading files are available:"
7025 : Can not go over to $dldir because getfile has path hard-coded in.
7026 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7027 rp="Source file to use for dynamic loading"
7028 fn="fne"
7029 gfpth="$src"
7030 . ./getfile
7031 usedl="$define"
7032 : emulate basename
7033 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7034
7035 $cat << EOM
7036
7037Some systems may require passing special flags to $cc -c to
7038compile modules that will be used to create a shared library.
7039To use no flags, say "none".
7040
7041EOM
7042 case "$cccdlflags" in
7043 '') case "$gccversion" in
7044 '') case "$osname" in
7045 hpux) dflt='+z' ;;
7046 next) dflt='none' ;;
7047 irix*) dflt='-KPIC' ;;
7048 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7049 sunos) dflt='-pic' ;;
7050 *) dflt='none' ;;
7051 esac
7052 ;;
7053 *) case "$osname" in
7054 darwin) dflt='none' ;;
7055 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7056 *) dflt='-fpic' ;;
7057 esac ;;
7058 esac ;;
7059 ' ') dflt='none' ;;
7060 *) dflt="$cccdlflags" ;;
7061 esac
7062 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7063 . ./myread
7064 case "$ans" in
7065 none) cccdlflags=' ' ;;
7066 *) cccdlflags="$ans" ;;
7067 esac
7068
7069 cat << EOM
7070
7071Some systems use ld to create libraries that can be dynamically loaded,
7072while other systems (such as those using ELF) use $cc.
7073
7074EOM
7075 case "$ld" in
7076 '') $cat >try.c <<'EOM'
7077/* Test for whether ELF binaries are produced */
7078#include <fcntl.h>
7079#include <stdlib.h>
7080int main() {
7081 char b[4];
7082 int i = open("a.out",O_RDONLY);
7083 if(i == -1)
7084 exit(1); /* fail */
7085 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7086 exit(0); /* succeed (yes, it's ELF) */
7087 else
7088 exit(1); /* fail */
7089}
7090EOM
7091 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7092 cat <<EOM
7093You appear to have ELF support. I'll use $cc to build dynamic libraries.
7094EOM
7095 dflt="$cc"
7096 else
7097 echo "I'll use ld to build dynamic libraries."
7098 dflt='ld'
7099 fi
7100 rm -f try.c a.out
7101 ;;
7102 *) dflt="$ld"
7103 ;;
7104 esac
7105
7106 rp="What command should be used to create dynamic libraries?"
7107 . ./myread
7108 ld="$ans"
7109
7110 cat << EOM
7111
7112Some systems may require passing special flags to $ld to create a
7113library that can be dynamically loaded. If your ld flags include
7114-L/other/path options to locate libraries outside your loader's normal
7115search path, you may need to specify those -L options here as well. To
7116use no flags, say "none".
7117
7118EOM
7119 case "$lddlflags" in
7120 '') case "$osname" in
7121 beos) dflt='-nostart' ;;
7122 hpux) dflt='-b';
7123 case "$gccversion" in
7124 '') dflt="$dflt +vnocompatwarnings" ;;
7125 esac
7126 ;;
7127 linux|irix*) dflt='-shared' ;;
7128 next) dflt='none' ;;
7129 solaris) dflt='-G' ;;
7130 sunos) dflt='-assert nodefinitions' ;;
7131 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7132 *) dflt='none' ;;
7133 esac
7134 ;;
7135 *) dflt="$lddlflags" ;;
7136 esac
7137
7138 : Try to guess additional flags to pick up local libraries.
7139 : Be careful not to append to a plain 'none'
7140 case "$dflt" in
7141 none) dflt='' ;;
7142 esac
7143 for thisflag in $ldflags; do
7144 case "$thisflag" in
7145 -L*|-R*)
7146 case " $dflt " in
7147 *" $thisflag "*) ;;
7148 *) dflt="$dflt $thisflag" ;;
7149 esac
7150 ;;
7151 esac
7152 done
7153
7154 case "$dflt" in
7155 ''|' ') dflt='none' ;;
7156 esac
7157
7158 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7159 . ./myread
7160 case "$ans" in
7161 none) lddlflags=' ' ;;
7162 *) lddlflags="$ans" ;;
7163 esac
7164
7165 cat <<EOM
7166
7167Some systems may require passing special flags to $cc to indicate that
7168the resulting executable will use dynamic linking. To use no flags,
7169say "none".
7170
7171EOM
7172 case "$ccdlflags" in
7173 '') case "$osname" in
7174 hpux) dflt='-Wl,-E' ;;
7175 linux) dflt='-rdynamic' ;;
7176 next) dflt='none' ;;
7177 sunos) dflt='none' ;;
7178 *) dflt='none' ;;
7179 esac ;;
7180 ' ') dflt='none' ;;
7181 *) dflt="$ccdlflags" ;;
7182 esac
7183 rp="Any special flags to pass to $cc to use dynamic linking?"
7184 . ./myread
7185 case "$ans" in
7186 none) ccdlflags=' ' ;;
7187 *) ccdlflags="$ans" ;;
7188 esac
7189 ;;
7190*) usedl="$undef"
7191 ld='ld'
7192 dlsrc='dl_none.xs'
7193 lddlflags=''
7194 ccdlflags=''
7195 ;;
7196esac
7197
7198also=''
7199case "$usedl" in
7200$undef)
7201 # No dynamic loading being used, so don't bother even to prompt.
7202 useshrplib='false'
7203 ;;
7204*) case "$useshrplib" in
7205 '') case "$osname" in
7206 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7207 dflt=y
7208 also='Building a shared libperl is required for dynamic loading to work on your system.'
7209 ;;
7210 next*)
7211 case "$osvers" in
7212 4*) dflt=y
7213 also='Building a shared libperl is needed for MAB support.'
7214 ;;
7215 *) dflt=n
7216 ;;
7217 esac
7218 ;;
7219 *) dflt=n
7220 ;;
7221 esac
7222 ;;
7223 $define|true|[Yy]*)
7224 dflt=y
7225 ;;
7226 *) dflt=n
7227 ;;
7228 esac
7229 $cat << EOM
7230
7231The perl executable is normally obtained by linking perlmain.c with
7232libperl${_a}, any static extensions (usually just DynaLoader), and
7233any other libraries needed on this system (such as -lm, etc.). Since
7234your system supports dynamic loading, it is probably possible to build
7235a shared libperl.$so. If you will have more than one executable linked
7236to libperl.$so, this will significantly reduce the size of each
7237executable, but it may have a noticeable affect on performance. The
7238default is probably sensible for your system.
7239$also
7240
7241EOM
7242 rp="Build a shared libperl.$so (y/n)"
7243 . ./myread
7244 case "$ans" in
7245 true|$define|[Yy]*)
7246 useshrplib='true' ;;
7247 *) useshrplib='false' ;;
7248 esac
7249 ;;
7250esac
7251
7252case "$useshrplib" in
7253true)
7254 case "$libperl" in
7255 '')
7256 # Figure out a good name for libperl.so. Since it gets stored in
7257 # a version-specific architecture-dependent library, the version
7258 # number isn't really that important, except for making cc/ld happy.
7259 #
7260 # A name such as libperl.so.3.1
7261 majmin="libperl.$so.$patchlevel.$subversion"
7262 # A name such as libperl.so.301
7263 majonly=`echo $patchlevel $subversion |
7264 $awk '{printf "%d%02d", $1, $2}'`
7265 majonly=libperl.$so.$majonly
7266 # I'd prefer to keep the os-specific stuff here to a minimum, and
7267 # rely on figuring it out from the naming of libc.
7268 case "${osname}${osvers}" in
7269 next4*)
7270 dflt=libperl.5.$so
7271 # XXX How handle the --version stuff for MAB?
7272 ;;
7273 linux*) # ld won't link with a bare -lperl otherwise.
7274 dflt=libperl.$so
7275 ;;
7276 cygwin*) # include version
7277 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7278 ;;
7279 *) # Try to guess based on whether libc has major.minor.
7280 case "$libc" in
7281 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7282 *libc.$so.[0-9]*) dflt=$majonly ;;
7283 *) dflt=libperl.$so ;;
7284 esac
7285 ;;
7286 esac
7287 ;;
7288 *) dflt=$libperl
7289 ;;
7290 esac
7291 cat << EOM
7292
7293I need to select a good name for the shared libperl. If your system uses
7294library names with major and minor numbers, then you might want something
7295like $majmin. Alternatively, if your system uses a single version
7296number for shared libraries, then you might want to use $majonly.
7297Or, your system might be quite happy with a simple libperl.$so.
7298
7299Since the shared libperl will get installed into a version-specific
7300architecture-dependent directory, the version number of the shared perl
7301library probably isn't important, so the default should be o.k.
7302
7303EOM
7304 rp='What name do you want to give to the shared libperl?'
7305 . ./myread
7306 libperl=$ans
7307 echo "Ok, I'll use $libperl"
7308 ;;
7309*)
7310 libperl="libperl${_a}"
7311 ;;
7312esac
7313
7314# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7315case "$shrpdir" in
7316'') ;;
7317*) $cat >&4 <<EOM
7318WARNING: Use of the shrpdir variable for the installation location of
7319the shared $libperl is not supported. It was never documented and
7320will not work in this version. Let me (perlbug@perl.org)
7321know of any problems this may cause.
7322
7323EOM
7324 case "$shrpdir" in
7325 "$archlibexp/CORE")
7326 $cat >&4 <<EOM
7327But your current setting of $shrpdir is
7328the default anyway, so it's harmless.
7329EOM
7330 ;;
7331 *)
7332 $cat >&4 <<EOM
7333Further, your current attempted setting of $shrpdir
7334conflicts with the value of $archlibexp/CORE
7335that installperl will use.
7336EOM
7337 ;;
7338 esac
7339 ;;
7340esac
7341
7342# How will the perl executable find the installed shared $libperl?
7343# Add $xxx to ccdlflags.
7344# If we can't figure out a command-line option, use $shrpenv to
7345# set env LD_RUN_PATH. The main perl makefile uses this.
7346shrpdir=$archlibexp/CORE
7347xxx=''
7348tmp_shrpenv=''
7349if "$useshrplib"; then
7350 case "$osname" in
7351 aix)
7352 # We'll set it in Makefile.SH...
7353 ;;
7354 solaris|netbsd)
7355 xxx="-R $shrpdir"
7356 ;;
7357 freebsd)
7358 xxx="-Wl,-R$shrpdir"
7359 ;;
7360 linux|irix*|dec_osf)
7361 xxx="-Wl,-rpath,$shrpdir"
7362 ;;
7363 next)
7364 # next doesn't like the default...
7365 ;;
7366 beos)
7367 # beos doesn't like the default, either.
7368 ;;
7369 hpux*)
7370 # hpux doesn't like the default, either.
7371 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7372 ;;
7373 *)
7374 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7375 ;;
7376 esac
7377 case "$xxx" in
7378 '') ;;
7379 *)
7380 # Only add $xxx if it isn't already in ccdlflags.
7381 case " $ccdlflags " in
7382 *" $xxx "*) ;;
7383 *) ccdlflags="$ccdlflags $xxx"
7384 cat <<EOM >&4
7385
7386Adding $xxx to the flags
7387passed to $ld so that the perl executable will find the
7388installed shared $libperl.
7389
7390EOM
7391 ;;
7392 esac
7393 ;;
7394 esac
7395fi
7396# Fix ccdlflags in AIX for building external extensions.
7397# (For building Perl itself bare -bE:perl.exp is needed,
7398# Makefile.SH takes care of this.)
7399case "$osname" in
7400aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7401esac
7402# Respect a hint or command-line value.
7403case "$shrpenv" in
7404'') shrpenv="$tmp_shrpenv" ;;
7405esac
7406case "$ldlibpthname" in
7407'') ldlibpthname=LD_LIBRARY_PATH ;;
7408none) ldlibpthname='' ;;
7409esac
7410
7411: determine where manual pages are on this system
7412echo " "
7413case "$sysman" in
7414'')
7415 syspath='/usr/share/man/man1 /usr/man/man1'
7416 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7417 syspath="$syspath /usr/man/u_man/man1"
7418 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7419 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7420 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7421 sysman=`./loc . /usr/man/man1 $syspath`
7422 ;;
7423esac
7424if $test -d "$sysman"; then
7425 echo "System manual is in $sysman." >&4
7426else
7427 echo "Could not find manual pages in source form." >&4
7428fi
7429
7430: determine where manual pages go
7431set man1dir man1dir none
7432eval $prefixit
7433$cat <<EOM
7434
7435$spackage has manual pages available in source form.
7436EOM
7437case "$nroff" in
7438nroff)
7439 echo "However, you don't have nroff, so they're probably useless to you."
7440 case "$man1dir" in
7441 '') man1dir="none";;
7442 esac;;
7443esac
7444echo "If you don't want the manual sources installed, answer 'none'."
7445case "$man1dir" in
7446' ') dflt=none
7447 ;;
7448'')
7449 lookpath="$prefixexp/share/man/man1"
7450 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7451 lookpath="$lookpath $prefixexp/man/p_man/man1"
7452 lookpath="$lookpath $prefixexp/man/u_man/man1"
7453 lookpath="$lookpath $prefixexp/man/man.1"
7454 case "$sysman" in
7455 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7456 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7457 esac
7458 set dflt
7459 eval $prefixup
7460 ;;
7461*) dflt="$man1dir"
7462 ;;
7463esac
7464echo " "
7465fn=dn+~
7466rp="Where do the main $spackage manual pages (source) go?"
7467. ./getfile
7468if $test "X$man1direxp" != "X$ansexp"; then
7469 installman1dir=''
7470fi
7471man1dir="$ans"
7472man1direxp="$ansexp"
7473case "$man1dir" in
7474'') man1dir=' '
7475 installman1dir='';;
7476esac
7477
7478: Change installation prefix, if necessary.
7479if $test X"$prefix" != X"$installprefix"; then
7480 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7481else
7482 installman1dir="$man1direxp"
7483fi
7484
7485: What suffix to use on installed man pages
7486
7487case "$man1dir" in
7488' ')
7489 man1ext='0'
7490 ;;
7491*)
7492 rp="What suffix should be used for the main $spackage man pages?"
7493 case "$man1ext" in
7494 '') case "$man1dir" in
7495 *1) dflt=1 ;;
7496 *1p) dflt=1p ;;
7497 *1pm) dflt=1pm ;;
7498 *l) dflt=l;;
7499 *n) dflt=n;;
7500 *o) dflt=o;;
7501 *p) dflt=p;;
7502 *C) dflt=C;;
7503 *L) dflt=L;;
7504 *L1) dflt=L1;;
7505 *) dflt=1;;
7506 esac
7507 ;;
7508 *) dflt="$man1ext";;
7509 esac
7510 . ./myread
7511 man1ext="$ans"
7512 ;;
7513esac
7514
7515: see if we can have long filenames
7516echo " "
7517first=123456789abcdef
7518$rm -f $first
7519if (echo hi >$first) 2>/dev/null; then
7520 if $test -f 123456789abcde; then
7521 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7522 val="$undef"
7523 else
7524 echo 'You can have filenames longer than 14 characters.'>&4
7525 val="$define"
7526 fi
7527else
7528 $cat <<'EOM'
7529You can't have filenames longer than 14 chars.
7530You can't even think about them!
7531EOM
7532 val="$undef"
7533fi
7534set d_flexfnam
7535eval $setvar
7536$rm -rf 123456789abcde*
7537
7538: determine where library module manual pages go
7539set man3dir man3dir none
7540eval $prefixit
7541$cat <<EOM
7542
7543$spackage has manual pages for many of the library modules.
7544EOM
7545
7546case "$nroff" in
7547nroff)
7548 $cat <<'EOM'
7549However, you don't have nroff, so they're probably useless to you.
7550EOM
7551 case "$man3dir" in
7552 '') man3dir="none";;
7553 esac;;
7554esac
7555
7556case "$d_flexfnam" in
7557undef)
7558 $cat <<'EOM'
7559However, your system can't handle the long file names like File::Basename.3.
7560EOM
7561 case "$man3dir" in
7562 '') man3dir="none";;
7563 esac;;
7564esac
7565
7566echo "If you don't want the manual sources installed, answer 'none'."
7567prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7568case "$man3dir" in
7569'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7570 if $test -d "$privlib/man/man3"; then
7571 cat <<EOM >&4
7572
7573WARNING: Previous versions of perl installed man3 pages into
7574$privlib/man/man3. This version will suggest a
7575new default of $dflt.
7576EOM
7577 tdflt=$dflt
7578 dflt='n'
7579 rp='Do you wish to preserve the old behavior?(y/n)'
7580 . ./myread
7581 case "$ans" in
7582 y*) dflt="$privlib/man/man3" ;;
7583 *) dflt=$tdflt ;;
7584 esac
7585 fi
7586 ;;
7587*) dflt="$man3dir" ;;
7588esac
7589case "$dflt" in
7590' ') dflt=none ;;
7591esac
7592echo " "
7593fn=dn+~
7594rp="Where do the $package library man pages (source) go?"
7595. ./getfile
7596man3dir="$ans"
7597man3direxp="$ansexp"
7598case "$man3dir" in
7599'') man3dir=' '
7600 installman3dir='';;
7601esac
7602
7603: Change installation prefix, if necessary.
7604if $test X"$prefix" != X"$installprefix"; then
7605 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7606else
7607 installman3dir="$man3direxp"
7608fi
7609
7610: What suffix to use on installed man pages
7611case "$man3dir" in
7612' ')
7613 man3ext='0'
7614 ;;
7615*)
7616 rp="What suffix should be used for the $package library man pages?"
7617 case "$man3ext" in
7618 '') case "$man3dir" in
7619 *3) dflt=3 ;;
7620 *3p) dflt=3p ;;
7621 *3pm) dflt=3pm ;;
7622 *l) dflt=l;;
7623 *n) dflt=n;;
7624 *o) dflt=o;;
7625 *p) dflt=p;;
7626 *C) dflt=C;;
7627 *L) dflt=L;;
7628 *L3) dflt=L3;;
7629 *) dflt=3;;
7630 esac
7631 ;;
7632 *) dflt="$man3ext";;
7633 esac
7634 . ./myread
7635 man3ext="$ans"
7636 ;;
7637esac
7638
7639: see if we have to deal with yellow pages, now NIS.
7640if $test -d /usr/etc/yp || $test -d /etc/yp; then
7641 if $test -f /usr/etc/nibindd; then
7642 echo " "
7643 echo "I'm fairly confident you're on a NeXT."
7644 echo " "
7645 rp='Do you get the hosts file via NetInfo?'
7646 dflt=y
7647 case "$hostcat" in
7648 nidump*) ;;
7649 '') ;;
7650 *) dflt=n;;
7651 esac
7652 . ./myread
7653 case "$ans" in
7654 y*) hostcat='nidump hosts .';;
7655 *) case "$hostcat" in
7656 nidump*) hostcat='';;
7657 esac
7658 ;;
7659 esac
7660 fi
7661 case "$hostcat" in
7662 nidump*) ;;
7663 *)
7664 case "$hostcat" in
7665 *ypcat*) dflt=y;;
7666 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7667 dflt=y
7668 else
7669 dflt=n
7670 fi;;
7671 *) dflt=n;;
7672 esac
7673 echo " "
7674 rp='Are you getting the hosts file via yellow pages?'
7675 . ./myread
7676 case "$ans" in
7677 y*) hostcat='ypcat hosts';;
7678 *) hostcat='cat /etc/hosts';;
7679 esac
7680 ;;
7681 esac
7682fi
7683case "$hostcat" in
7684'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7685esac
7686case "$groupcat" in
7687'') test -f /etc/group && groupcat='cat /etc/group';;
7688esac
7689case "$passcat" in
7690'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7691esac
7692
7693: now get the host name
7694echo " "
7695echo "Figuring out host name..." >&4
7696case "$myhostname" in
7697'') cont=true
7698 echo 'Maybe "hostname" will work...'
7699 if tans=`sh -c hostname 2>&1` ; then
7700 myhostname=$tans
7701 phostname=hostname
7702 cont=''
7703 fi
7704 ;;
7705*) cont='';;
7706esac
7707if $test "$cont"; then
7708 if ./xenix; then
7709 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7710 if tans=`cat /etc/systemid 2>&1` ; then
7711 myhostname=$tans
7712 phostname='cat /etc/systemid'
7713 echo "Whadyaknow. Xenix always was a bit strange..."
7714 cont=''
7715 fi
7716 elif $test -r /etc/systemid; then
7717 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7718 fi
7719fi
7720if $test "$cont"; then
7721 echo 'No, maybe "uuname -l" will work...'
7722 if tans=`sh -c 'uuname -l' 2>&1` ; then
7723 myhostname=$tans
7724 phostname='uuname -l'
7725 else
7726 echo 'Strange. Maybe "uname -n" will work...'
7727 if tans=`sh -c 'uname -n' 2>&1` ; then
7728 myhostname=$tans
7729 phostname='uname -n'
7730 else
7731 echo 'Oh well, maybe I can mine it out of whoami.h...'
7732 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7733 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7734 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7735 else
7736 case "$myhostname" in
7737 '') echo "Does this machine have an identity crisis or something?"
7738 phostname='';;
7739 *)
7740 echo "Well, you said $myhostname before..."
7741 phostname='echo $myhostname';;
7742 esac
7743 fi
7744 fi
7745 fi
7746fi
7747: you do not want to know about this
7748set $myhostname
7749myhostname=$1
7750
7751: verify guess
7752if $test "$myhostname" ; then
7753 dflt=y
7754 rp='Your host name appears to be "'$myhostname'".'" Right?"
7755 . ./myread
7756 case "$ans" in
7757 y*) ;;
7758 *) myhostname='';;
7759 esac
7760fi
7761
7762: bad guess or no guess
7763while $test "X$myhostname" = X ; do
7764 dflt=''
7765 rp="Please type the (one word) name of your host:"
7766 . ./myread
7767 myhostname="$ans"
7768done
7769
7770: translate upper to lower if necessary
7771case "$myhostname" in
7772*[A-Z]*)
7773 echo "(Normalizing case in your host name)"
7774 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7775 ;;
7776esac
7777
7778case "$myhostname" in
7779*.*)
7780 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7781 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7782 echo "(Trimming domain name from host name--host name is now $myhostname)"
7783 ;;
7784*) case "$mydomain" in
7785 '')
7786 {
7787 test "X$hostcat" = "Xypcat hosts" &&
7788 ypmatch "$myhostname" hosts 2>/dev/null |\
7789 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7790 $test -s hosts
7791 } || {
7792 test "X$hostcat" != "X" &&
7793 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7794 /[ ]$myhostname[ . ]/p" > hosts
7795 }
7796 tmp_re="[ . ]"
7797 if $test -f hosts; then
7798 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7799 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7800 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7801 hosts | $sort | $uniq | \
7802 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7803 case `$echo X$dflt` in
7804 X*\ *) echo "(Several hosts in the database matched hostname)"
7805 dflt=.
7806 ;;
7807 X.) echo "(You do not have fully-qualified names in the hosts database)"
7808 ;;
7809 esac
7810 else
7811 echo "(I cannot locate a hosts database anywhere)"
7812 dflt=.
7813 fi
7814 case "$dflt" in
7815 .)
7816 tans=`./loc resolv.conf X /etc /usr/etc`
7817 if $test -f "$tans"; then
7818 echo "(Attempting domain name extraction from $tans)"
7819 dflt=.`$sed -n -e 's/ / /g' \
7820 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7821 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7822 case "$dflt" in
7823 .) dflt=.`$sed -n -e 's/ / /g' \
7824 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7825 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7826 ;;
7827 esac
7828 fi
7829 ;;
7830 esac
7831 case "$dflt" in
7832 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7833 dflt=.`sh -c domainname 2>/dev/null`
7834 case "$dflt" in
7835 '') dflt='.';;
7836 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7837 esac
7838 ;;
7839 esac
7840 case "$dflt$osname" in
7841 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7842 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7843 ;;
7844 esac
7845 case "$dflt" in
7846 .) echo "(Lost all hope -- silly guess then)"
7847 dflt='.uucp'
7848 ;;
7849 esac
7850 $rm -f hosts
7851 ;;
7852 *) dflt="$mydomain";;
7853 esac;;
7854esac
7855echo " "
7856rp="What is your domain name?"
7857. ./myread
7858tans="$ans"
7859case "$ans" in
7860'') ;;
7861.*) ;;
7862*) tans=".$tans";;
7863esac
7864mydomain="$tans"
7865
7866: translate upper to lower if necessary
7867case "$mydomain" in
7868*[A-Z]*)
7869 echo "(Normalizing case in your domain name)"
7870 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7871 ;;
7872esac
7873
7874: a little sanity check here
7875case "$phostname" in
7876'') ;;
7877*)
7878 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7879 $myhostname$mydomain|$myhostname) ;;
7880 *)
7881 case "$phostname" in
7882 sed*)
7883 echo "(That doesn't agree with your whoami.h file, by the way.)"
7884 ;;
7885 *)
7886 echo "(That doesn't agree with your $phostname command, by the way.)"
7887 ;;
7888 esac
7889 ;;
7890 esac
7891 ;;
7892esac
7893
7894$cat <<EOM
7895
7896I need to get your e-mail address in Internet format if possible, i.e.
7897something like user@host.domain. Please answer accurately since I have
7898no easy means to double check it. The default value provided below
7899is most probably close to reality but may not be valid from outside
7900your organization...
7901
7902EOM
7903cont=x
7904while test "$cont"; do
7905 case "$cf_email" in
7906 '') dflt="$cf_by@$myhostname$mydomain";;
7907 *) dflt="$cf_email";;
7908 esac
7909 rp='What is your e-mail address?'
7910 . ./myread
7911 cf_email="$ans"
7912 case "$cf_email" in
7913 *@*.*) cont='' ;;
7914 *)
7915 rp='Address does not look like an Internet one. Use it anyway?'
7916 case "$fastread" in
7917 yes) dflt=y ;;
7918 *) dflt=n ;;
7919 esac
7920 . ./myread
7921 case "$ans" in
7922 y*) cont='' ;;
7923 *) echo " " ;;
7924 esac
7925 ;;
7926 esac
7927done
7928
7929$cat <<EOM
7930
7931If you or somebody else will be maintaining perl at your site, please
7932fill in the correct e-mail address here so that they may be contacted
7933if necessary. Currently, the "perlbug" program included with perl
7934will send mail to this address in addition to perlbug@perl.org. You may
7935enter "none" for no administrator.
7936
7937EOM
7938case "$perladmin" in
7939'') dflt="$cf_email";;
7940*) dflt="$perladmin";;
7941esac
7942rp='Perl administrator e-mail address'
7943. ./myread
7944perladmin="$ans"
7945
7946: determine whether to only install version-specific parts.
7947echo " "
7948$cat <<EOM
7949Do you want to install only the version-specific parts of the perl
7950distribution? Usually you do *not* want to do this.
7951EOM
7952case "$versiononly" in
7953"$define"|[Yy]*|true) dflt='y' ;;
7954*) dflt='n';
7955esac
7956rp="Do you want to install only the version-specific parts of perl?"
7957. ./myread
7958case "$ans" in
7959[yY]*) val="$define";;
7960*) val="$undef" ;;
7961esac
7962set versiononly
7963eval $setvar
7964
7965: figure out how to guarantee perl startup
7966case "$startperl" in
7967'')
7968 case "$sharpbang" in
7969 *!)
7970 $cat <<EOH
7971
7972I can use the #! construct to start perl on your system. This will
7973make startup of perl scripts faster, but may cause problems if you
7974want to share those scripts and perl is not in a standard place
7975($binexp/perl) on all your platforms. The alternative is to force
7976a shell by starting the script with a single ':' character.
7977
7978EOH
7979 case "$versiononly" in
7980 "$define") dflt="$binexp/perl$version";;
7981 *) dflt="$binexp/perl";;
7982 esac
7983 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7984 . ./myread
7985 case "$ans" in
7986 none) startperl=": # use perl";;
7987 *) startperl="#!$ans"
7988 if $test 30 -lt `echo "$ans" | wc -c`; then
7989 $cat >&4 <<EOM
7990
7991WARNING: Some systems limit the #! command to 32 characters.
7992If you experience difficulty running Perl scripts with #!, try
7993installing Perl in a directory with a shorter pathname.
7994
7995EOM
7996 fi ;;
7997 esac
7998 ;;
7999 *) startperl=": # use perl"
8000 ;;
8001 esac
8002 ;;
8003esac
8004echo "I'll use $startperl to start perl scripts."
8005
8006: figure best path for perl in scripts
8007case "$perlpath" in
8008'')
8009 perlpath="$binexp/perl"
8010 case "$startperl" in
8011 *!*) ;;
8012 *)
8013 $cat <<EOH
8014
8015I will use the "eval 'exec'" idiom to start Perl on your system.
8016I can use the full path of your Perl binary for this purpose, but
8017doing so may cause problems if you want to share those scripts and
8018Perl is not always in a standard place ($binexp/perl).
8019
8020EOH
8021 dflt="$binexp/perl"
8022 rp="What path shall I use in \"eval 'exec'\"?"
8023 . ./myread
8024 perlpath="$ans"
8025 ;;
8026 esac
8027 ;;
8028esac
8029case "$startperl" in
8030*!*) ;;
8031*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8032esac
8033
8034: determine where public executable scripts go
8035set scriptdir scriptdir
8036eval $prefixit
8037case "$scriptdir" in
8038'')
8039 dflt="$bin"
8040 : guess some guesses
8041 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8042 $test -d /usr/share/bin && dflt=/usr/share/bin
8043 $test -d /usr/local/script && dflt=/usr/local/script
8044 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8045 $test -d $prefixexp/script && dflt=$prefixexp/script
8046 set dflt
8047 eval $prefixup
8048 ;;
8049*) dflt="$scriptdir"
8050 ;;
8051esac
8052$cat <<EOM
8053
8054Some installations have a separate directory just for executable scripts so
8055that they can mount it across multiple architectures but keep the scripts in
8056one spot. You might, for example, have a subdirectory of /usr/share for this.
8057Or you might just lump your scripts in with all your other executables.
8058
8059EOM
8060fn=d~
8061rp='Where do you keep publicly executable scripts?'
8062. ./getfile
8063if $test "X$ansexp" != "X$scriptdirexp"; then
8064 installscript=''
8065fi
8066scriptdir="$ans"
8067scriptdirexp="$ansexp"
8068: Change installation prefix, if necessary.
8069if $test X"$prefix" != X"$installprefix"; then
8070 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8071else
8072 installscript="$scriptdirexp"
8073fi
8074
8075: determine where add-on public executables go
8076case "$sitebin" in
8077'') dflt=$siteprefix/bin ;;
8078*) dflt=$sitebin ;;
8079esac
8080fn=d~
8081rp='Pathname where the add-on public executables should be installed?'
8082. ./getfile
8083sitebin="$ans"
8084sitebinexp="$ansexp"
8085: Change installation prefix, if necessary.
8086if $test X"$prefix" != X"$installprefix"; then
8087 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8088else
8089 installsitebin="$sitebinexp"
8090fi
8091
8092: define an is-a-typedef? function
8093typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8094case "$inclist" in
8095"") inclist="sys/types.h";;
8096esac;
8097eval "varval=\$$var";
8098case "$varval" in
8099"")
8100 $rm -f temp.c;
8101 for inc in $inclist; do
8102 echo "#include <$inc>" >>temp.c;
8103 done;
8104 echo "#ifdef $type" >> temp.c;
8105 echo "printf(\"We have $type\");" >> temp.c;
8106 echo "#endif" >> temp.c;
8107 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8108 if $contains $type temp.E >/dev/null 2>&1; then
8109 eval "$var=\$type";
8110 else
8111 eval "$var=\$def";
8112 fi;
8113 $rm -f temp.?;;
8114*) eval "$var=\$varval";;
8115esac'
8116
8117: define an is-a-typedef? function that prompts if the type is not available.
8118typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8119case "$inclist" in
8120"") inclist="sys/types.h";;
8121esac;
8122eval "varval=\$$var";
8123case "$varval" in
8124"")
8125 $rm -f temp.c;
8126 for inc in $inclist; do
8127 echo "#include <$inc>" >>temp.c;
8128 done;
8129 echo "#ifdef $type" >> temp.c;
8130 echo "printf(\"We have $type\");" >> temp.c;
8131 echo "#endif" >> temp.c;
8132 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8133 echo " " ;
8134 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8135 if $contains $type temp.E >/dev/null 2>&1; then
8136 echo "$type found." >&4;
8137 eval "$var=\$type";
8138 else
8139 echo "$type NOT found." >&4;
8140 dflt="$def";
8141 . ./myread ;
8142 eval "$var=\$ans";
8143 fi;
8144 $rm -f temp.?;;
8145*) eval "$var=\$varval";;
8146esac'
8147
8148: see what type lseek is declared as in the kernel
8149rp="What is the type used for lseek's offset on this system?"
8150set off_t lseektype long stdio.h sys/types.h
8151eval $typedef_ask
8152
8153echo " "
8154echo "Checking to see how big your file offsets are..." >&4
8155$cat >try.c <<EOCP
8156#include <sys/types.h>
8157#include <stdio.h>
8158int main()
8159{
8160 printf("%d\n", (int)sizeof($lseektype));
8161 return(0);
8162}
8163EOCP
8164set try
8165if eval $compile_ok; then
8166 lseeksize=`$run ./try`
8167 echo "Your file offsets are $lseeksize bytes long."
8168else
8169 dflt=$longsize
8170 echo " "
8171 echo "(I can't seem to compile the test program. Guessing...)"
8172 rp="What is the size of your file offsets (in bytes)?"
8173 . ./myread
8174 lseeksize="$ans"
8175fi
8176$rm -f try.c try
8177
8178: see what type file positions are declared as in the library
8179rp="What is the type for file position used by fsetpos()?"
8180set fpos_t fpostype long stdio.h sys/types.h
8181eval $typedef_ask
8182
8183echo " "
8184case "$fpostype" in
8185*_t) zzz="$fpostype" ;;
8186*) zzz="fpos_t" ;;
8187esac
8188echo "Checking the size of $zzz..." >&4
8189cat > try.c <<EOCP
8190#include <sys/types.h>
8191#include <stdio.h>
8192int main() {
8193 printf("%d\n", (int)sizeof($fpostype));
8194 exit(0);
8195}
8196EOCP
8197set try
8198if eval $compile_ok; then
8199 yyy=`$run ./try`
8200 case "$yyy" in
8201 '') fpossize=4
8202 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8203 ;;
8204 *) fpossize=$yyy
8205 echo "Your $zzz is $fpossize bytes long."
8206 ;;
8207 esac
8208else
8209 dflt="$longsize"
8210 echo " " >&4
8211 echo "(I can't compile the test program. Guessing...)" >&4
8212 rp="What is the size of your file positions (in bytes)?"
8213 . ./myread
8214 fpossize="$ans"
8215fi
8216
8217
8218
8219# Backward compatibility (uselfs is deprecated).
8220case "$uselfs" in
8221"$define"|true|[yY]*)
8222 cat <<EOM >&4
8223
8224*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8225EOM
8226 uselargefiles="$define"
8227 ;;
8228esac
8229
8230case "$lseeksize:$fpossize" in
82318:8) cat <<EOM
8232
8233You can have files larger than 2 gigabytes.
8234EOM
8235 val="$define" ;;
8236*) case "$uselargefiles" in
8237 "$undef"|false|[nN]*) dflt='n' ;;
8238 *) dflt='y' ;;
8239 esac
8240 cat <<EOM
8241
8242Perl can be built to understand large files (files larger than 2 gigabytes)
8243on some systems. To do so, Configure can be run with -Duselargefiles.
8244
8245If this doesn't make any sense to you, just accept the default '$dflt'.
8246EOM
8247 rp='Try to understand large files, if available?'
8248 . ./myread
8249 case "$ans" in
8250 y|Y) val="$define" ;;
8251 *) val="$undef" ;;
8252 esac
8253 ;;
8254esac
8255set uselargefiles
8256eval $setvar
8257case "$uselargefiles" in
8258"$define")
8259: Look for a hint-file generated 'call-back-unit'. If the
8260: user has specified that a large files perl is to be built,
8261: we may need to set or change some other defaults.
8262 if $test -f uselargefiles.cbu; then
8263 echo "Your platform has some specific hints for large file builds, using them..."
8264 . ./uselargefiles.cbu
8265 echo " "
8266 echo "Rechecking to see how big your file offsets are..." >&4
8267 $cat >try.c <<EOCP
8268#include <sys/types.h>
8269#include <stdio.h>
8270int main()
8271{
8272 printf("%d\n", (int)sizeof($lseektype));
8273 return(0);
8274}
8275EOCP
8276 set try
8277 if eval $compile_ok; then
8278 lseeksize=`$run ./try`
8279 $echo "Your file offsets are now $lseeksize bytes long."
8280 else
8281 dflt="$lseeksize"
8282 echo " "
8283 echo "(I can't seem to compile the test program. Guessing...)"
8284 rp="What is the size of your file offsets (in bytes)?"
8285 . ./myread
8286 lseeksize="$ans"
8287 fi
8288 case "$fpostype" in
8289 *_t) zzz="$fpostype" ;;
8290 *) zzz="fpos_t" ;;
8291 esac
8292 $echo $n "Rechecking the size of $zzz...$c" >&4
8293 $cat > try.c <<EOCP
8294#include <sys/types.h>
8295#include <stdio.h>
8296int main() {
8297 printf("%d\n", (int)sizeof($fpostype));
8298 exit(0);
8299}
8300EOCP
8301 set try
8302 if eval $compile_ok; then
8303 yyy=`$run ./try`
8304 dflt="$lseeksize"
8305 case "$yyy" in
8306 '') echo " "
8307 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8308 ;;
8309 *) fpossize=$yyy
8310 echo " $fpossize bytes." >&4
8311 ;;
8312 esac
8313 else
8314 dflt="$fpossize"
8315 echo " "
8316 echo "(I can't compile the test program. Guessing...)" >&4
8317 rp="What is the size of your file positions (in bytes)?"
8318 . ./myread
8319 fpossize="$ans"
8320 fi
8321 $rm -f try.c try
8322 fi
8323 ;;
8324esac
8325
8326case "$vendorprefix" in
8327'') d_vendorbin="$undef"
8328 vendorbin=''
8329 vendorbinexp=''
8330 ;;
8331*) d_vendorbin="$define"
8332 : determine where vendor-supplied executables go.
8333 case "$vendorbin" in
8334 '') dflt=$vendorprefix/bin ;;
8335 *) dflt="$vendorbin" ;;
8336 esac
8337 fn=d~+
8338 rp='Pathname for the vendor-supplied executables directory?'
8339 . ./getfile
8340 vendorbin="$ans"
8341 vendorbinexp="$ansexp"
8342 ;;
8343esac
8344: Change installation prefix, if necessary.
8345if $test X"$prefix" != X"$installprefix"; then
8346 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8347else
8348 installvendorbin="$vendorbinexp"
8349fi
8350
8351: see if qgcvt exists
8352set qgcvt d_qgcvt
8353eval $inlibc
8354
8355echo " "
8356
8357if $test X"$d_longdbl" = X"$define"; then
8358
8359echo "Checking how to print long doubles..." >&4
8360
8361if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8362 $cat >try.c <<'EOCP'
8363#include <sys/types.h>
8364#include <stdio.h>
8365int main() {
8366 double d = 123.456;
8367 printf("%.3f\n", d);
8368}
8369EOCP
8370 set try
8371 if eval $compile; then
8372 yyy=`$run ./try`
8373 case "$yyy" in
8374 123.456)
8375 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8376 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8377 echo "We will use %f."
8378 ;;
8379 esac
8380 fi
8381fi
8382
8383if $test X"$sPRIfldbl" = X; then
8384 $cat >try.c <<'EOCP'
8385#include <sys/types.h>
8386#include <stdio.h>
8387int main() {
8388 long double d = 123.456;
8389 printf("%.3Lf\n", d);
8390}
8391EOCP
8392 set try
8393 if eval $compile; then
8394 yyy=`$run ./try`
8395 case "$yyy" in
8396 123.456)
8397 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8398 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8399 echo "We will use %Lf."
8400 ;;
8401 esac
8402 fi
8403fi
8404
8405if $test X"$sPRIfldbl" = X; then
8406 $cat >try.c <<'EOCP'
8407#include <sys/types.h>
8408#include <stdio.h>
8409int main() {
8410 long double d = 123.456;
8411 printf("%.3llf\n", d);
8412}
8413EOCP
8414 set try
8415 if eval $compile; then
8416 yyy=`$run ./try`
8417 case "$yyy" in
8418 123.456)
8419 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8420 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8421 echo "We will use %llf."
8422 ;;
8423 esac
8424 fi
8425fi
8426
8427if $test X"$sPRIfldbl" = X; then
8428 $cat >try.c <<'EOCP'
8429#include <sys/types.h>
8430#include <stdio.h>
8431int main() {
8432 long double d = 123.456;
8433 printf("%.3lf\n", d);
8434}
8435EOCP
8436 set try
8437 if eval $compile; then
8438 yyy=`$run ./try`
8439 case "$yyy" in
8440 123.456)
8441 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8442 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8443 echo "We will use %lf."
8444 ;;
8445 esac
8446 fi
8447fi
8448
8449if $test X"$sPRIfldbl" = X; then
8450 echo "Cannot figure out how to print long doubles." >&4
8451else
8452 sSCNfldbl=$sPRIfldbl # expect consistency
8453fi
8454
8455$rm -f try try.*
8456
8457fi # d_longdbl
8458
8459case "$sPRIfldbl" in
8460'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8461 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8462 d_SCNfldbl="$undef";
8463 ;;
8464*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8465 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8466 d_SCNfldbl="$define";
8467 ;;
8468esac
8469
8470: Check how to convert floats to strings.
8471echo " "
8472echo "Checking for an efficient way to convert floats to strings."
8473echo " " > try.c
8474case "$uselongdouble" in
8475"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8476esac
8477case "$d_longdbl" in
8478"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8479esac
8480case "$d_PRIgldbl" in
8481"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8482esac
8483$cat >>try.c <<EOP
8484#ifdef TRY_gconvert
8485#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8486char *myname = "gconvert";
8487#endif
8488#ifdef TRY_gcvt
8489#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8490char *myname = "gcvt";
8491#endif
8492#ifdef TRY_qgcvt
8493#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8494char *myname = "qgcvt";
8495#define DOUBLETYPE long double
8496#endif
8497#ifdef TRY_sprintf
8498#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8499#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8500#else
8501#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8502#endif
8503char *myname = "sprintf";
8504#endif
8505
8506#ifndef DOUBLETYPE
8507#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8508#define DOUBLETYPE long double
8509#else
8510#define DOUBLETYPE double
8511#endif
8512#endif
8513
8514#include <stdio.h>
8515
8516#define I_STDLIB $i_stdlib
8517#ifdef I_STDLIB
8518#include <stdlib.h>
8519#endif
8520
8521int
8522checkit(expect, got)
8523char *expect;
8524char *got;
8525{
8526 if (strcmp(expect, got)) {
8527 printf("%s oddity: Expected %s, got %s\n",
8528 myname, expect, got);
8529 exit(1);
8530 }
8531}
8532
8533int main()
8534{
8535 char buf[64];
8536 buf[63] = '\0';
8537
8538 /* This must be 1st test on (which?) platform */
8539 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8540 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8541 checkit("0.1", buf);
8542
8543 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8544 checkit("1", buf);
8545
8546 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8547 checkit("1.1", buf);
8548
8549 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8550 checkit("1.01", buf);
8551
8552 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8553 checkit("1.001", buf);
8554
8555 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8556 checkit("1.0001", buf);
8557
8558 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8559 checkit("1.00001", buf);
8560
8561 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8562 checkit("1.000001", buf);
8563
8564 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8565 checkit("0", buf);
8566
8567 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8568 checkit("-1", buf);
8569
8570 /* Some Linux gcvt's give 1.e+5 here. */
8571 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8572 checkit("100000", buf);
8573
8574 /* Some Linux gcvt's give -1.e+5 here. */
8575 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8576 checkit("-100000", buf);
8577
8578 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8579 checkit("123.456", buf);
8580
8581 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8582 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8583 if (strlen(buf) > 5)
8584 checkit("1e+030", buf); /* for Microsoft */
8585 else
8586 checkit("1e+30", buf);
8587
8588 exit(0);
8589}
8590EOP
8591case "$d_Gconvert" in
8592gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8593gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8594sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8595*) xxx_list='gconvert gcvt sprintf' ;;
8596esac
8597
8598case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8599"$define$define$define")
8600 # for long doubles prefer first qgcvt, then sprintf
8601 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8602 xxx_list="sprintf $xxx_list"
8603 case "$d_qgcvt" in
8604 "$define") xxx_list="qgcvt $xxx_list" ;;
8605 esac
8606 ;;
8607esac
8608
8609for xxx_convert in $xxx_list; do
8610 echo "Trying $xxx_convert..."
8611 $rm -f try try$_o
8612 set try -DTRY_$xxx_convert
8613 if eval $compile; then
8614 echo "$xxx_convert() found." >&4
8615 if $run ./try; then
8616 echo "I'll use $xxx_convert to convert floats into a string." >&4
8617 break;
8618 else
8619 echo "...But $xxx_convert didn't work as I expected."
8620 fi
8621 else
8622 echo "$xxx_convert NOT found." >&4
8623 fi
8624done
8625
8626case "$xxx_convert" in
8627gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8628gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8629qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8630*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8631 "$define$define$define")
8632 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8633 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8634 esac
8635 ;;
8636esac
8637
8638: see if _fwalk exists
8639set fwalk d__fwalk
8640eval $inlibc
8641
8642: Initialize h_fcntl
8643h_fcntl=false
8644
8645: Initialize h_sysfile
8646h_sysfile=false
8647
8648: access call always available on UNIX
8649set access d_access
8650eval $inlibc
8651
8652: locate the flags for 'access()'
8653case "$d_access" in
8654"$define")
8655 echo " "
8656 $cat >access.c <<'EOCP'
8657#include <sys/types.h>
8658#ifdef I_FCNTL
8659#include <fcntl.h>
8660#endif
8661#ifdef I_SYS_FILE
8662#include <sys/file.h>
8663#endif
8664#ifdef I_UNISTD
8665#include <unistd.h>
8666#endif
8667int main() {
8668 exit(R_OK);
8669}
8670EOCP
8671 : check sys/file.h first, no particular reason here
8672 if $test `./findhdr sys/file.h` && \
8673 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8674 h_sysfile=true;
8675 echo "<sys/file.h> defines the *_OK access constants." >&4
8676 elif $test `./findhdr fcntl.h` && \
8677 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8678 h_fcntl=true;
8679 echo "<fcntl.h> defines the *_OK access constants." >&4
8680 elif $test `./findhdr unistd.h` && \
8681 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8682 echo "<unistd.h> defines the *_OK access constants." >&4
8683 else
8684 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8685 fi
8686 ;;
8687esac
8688$rm -f access*
8689
8690: see if accessx exists
8691set accessx d_accessx
8692eval $inlibc
8693
8694: see if alarm exists
8695set alarm d_alarm
8696eval $inlibc
8697
8698: see if atolf exists
8699set atolf d_atolf
8700eval $inlibc
8701
8702: see if atoll exists
8703set atoll d_atoll
8704eval $inlibc
8705
8706: Look for GNU-cc style attribute checking
8707echo " "
8708echo "Checking whether your compiler can handle __attribute__ ..." >&4
8709$cat >attrib.c <<'EOCP'
8710#include <stdio.h>
8711void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8712EOCP
8713if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8714 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8715 echo "Your C compiler doesn't fully support __attribute__."
8716 val="$undef"
8717 else
8718 echo "Your C compiler supports __attribute__."
8719 val="$define"
8720 fi
8721else
8722 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8723 val="$undef"
8724fi
8725set d_attribut
8726eval $setvar
8727$rm -f attrib*
8728
8729: see if bcmp exists
8730set bcmp d_bcmp
8731eval $inlibc
8732
8733: see if bcopy exists
8734set bcopy d_bcopy
8735eval $inlibc
8736
8737: see if this is a unistd.h system
8738set unistd.h i_unistd
8739eval $inhdr
8740
8741: see if getpgrp exists
8742set getpgrp d_getpgrp
8743eval $inlibc
8744
8745case "$d_getpgrp" in
8746"$define")
8747 echo " "
8748 echo "Checking to see which flavor of getpgrp is in use..."
8749 $cat >try.c <<EOP
8750#$i_unistd I_UNISTD
8751#include <sys/types.h>
8752#ifdef I_UNISTD
8753# include <unistd.h>
8754#endif
8755int main()
8756{
8757 if (getuid() == 0) {
8758 printf("(I see you are running Configure as super-user...)\n");
8759 setuid(1);
8760 }
8761#ifdef TRY_BSD_PGRP
8762 if (getpgrp(1) == 0)
8763 exit(0);
8764#else
8765 if (getpgrp() > 0)
8766 exit(0);
8767#endif
8768 exit(1);
8769}
8770EOP
8771 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8772 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8773 val="$define"
8774 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8775 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8776 val="$undef"
8777 else
8778 echo "I can't seem to compile and run the test program."
8779 if ./usg; then
8780 xxx="a USG one, i.e. you use getpgrp()."
8781 else
8782 # SVR4 systems can appear rather BSD-ish.
8783 case "$i_unistd" in
8784 $undef)
8785 xxx="a BSD one, i.e. you use getpgrp(pid)."
8786 val="$define"
8787 ;;
8788 $define)
8789 xxx="probably a USG one, i.e. you use getpgrp()."
8790 val="$undef"
8791 ;;
8792 esac
8793 fi
8794 echo "Assuming your getpgrp is $xxx" >&4
8795 fi
8796 ;;
8797*) val="$undef";;
8798esac
8799set d_bsdgetpgrp
8800eval $setvar
8801$rm -f try try.*
8802
8803: see if setpgrp exists
8804set setpgrp d_setpgrp
8805eval $inlibc
8806
8807case "$d_setpgrp" in
8808"$define")
8809 echo " "
8810 echo "Checking to see which flavor of setpgrp is in use..."
8811 $cat >try.c <<EOP
8812#$i_unistd I_UNISTD
8813#include <sys/types.h>
8814#ifdef I_UNISTD
8815# include <unistd.h>
8816#endif
8817int main()
8818{
8819 if (getuid() == 0) {
8820 printf("(I see you are running Configure as super-user...)\n");
8821 setuid(1);
8822 }
8823#ifdef TRY_BSD_PGRP
8824 if (-1 == setpgrp(1, 1))
8825 exit(0);
8826#else
8827 if (setpgrp() != -1)
8828 exit(0);
8829#endif
8830 exit(1);
8831}
8832EOP
8833 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8834 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8835 val="$define"
8836 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8837 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8838 val="$undef"
8839 else
8840 echo "(I can't seem to compile and run the test program.)"
8841 if ./usg; then
8842 xxx="a USG one, i.e. you use setpgrp()."
8843 else
8844 # SVR4 systems can appear rather BSD-ish.
8845 case "$i_unistd" in
8846 $undef)
8847 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8848 val="$define"
8849 ;;
8850 $define)
8851 xxx="probably a USG one, i.e. you use setpgrp()."
8852 val="$undef"
8853 ;;
8854 esac
8855 fi
8856 echo "Assuming your setpgrp is $xxx" >&4
8857 fi
8858 ;;
8859*) val="$undef";;
8860esac
8861set d_bsdsetpgrp
8862eval $setvar
8863$rm -f try try.*
8864: see if bzero exists
8865set bzero d_bzero
8866eval $inlibc
8867
8868: see if signal is declared as pointer to function returning int or void
8869echo " "
8870xxx=`./findhdr signal.h`
8871$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8872if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8873 echo "You have int (*signal())() instead of void." >&4
8874 val="$undef"
8875elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8876 echo "You have void (*signal())()." >&4
8877 val="$define"
8878elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8879 echo "You have int (*signal())() instead of void." >&4
8880 val="$undef"
8881elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8882 echo "You have void (*signal())()." >&4
8883 val="$define"
8884else
8885 case "$d_voidsig" in
8886 '')
8887 echo "I can't determine whether signal handler returns void or int..." >&4
8888 dflt=void
8889 rp="What type does your signal handler return?"
8890 . ./myread
8891 case "$ans" in
8892 v*) val="$define";;
8893 *) val="$undef";;
8894 esac;;
8895 "$define")
8896 echo "As you already told me, signal handler returns void." >&4
8897 val="$define"
8898 ;;
8899 *) echo "As you already told me, signal handler returns int." >&4
8900 val="$undef"
8901 ;;
8902 esac
8903fi
8904set d_voidsig
8905eval $setvar
8906case "$d_voidsig" in
8907"$define") signal_t="void";;
8908*) signal_t="int";;
8909esac
8910$rm -f $$.tmp
8911
8912: check for ability to cast large floats to 32-bit ints.
8913echo " "
8914echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8915if $test "$intsize" -ge 4; then
8916 xxx=int
8917else
8918 xxx=long
8919fi
8920$cat >try.c <<EOCP
8921#include <stdio.h>
8922#include <sys/types.h>
8923#include <signal.h>
8924$signal_t blech(s) int s; { exit(3); }
8925int main()
8926{
8927 $xxx i32;
8928 double f, g;
8929 int result = 0;
8930 char str[16];
8931 signal(SIGFPE, blech);
8932
8933 /* Don't let compiler optimize the test away. Store the number
8934 in a writable string for gcc to pass to sscanf under HP/UX.
8935 */
8936 sprintf(str, "2147483647");
8937 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8938 g = 10 * f;
8939 i32 = ($xxx) g;
8940
8941 /* x86 processors will probably give 0x8000 0000, which is a
8942 sign change. We don't want that. We want to mimic SPARC
8943 behavior here, which is to preserve the sign and give
8944 back 0x7fff ffff.
8945 */
8946 if (i32 != ($xxx) f)
8947 result |= 1;
8948 exit(result);
8949}
8950EOCP
8951set try
8952if eval $compile_ok; then
8953 $run ./try
8954 yyy=$?
8955else
8956 echo "(I can't seem to compile the test program--assuming it can't)"
8957 yyy=1
8958fi
8959case "$yyy" in
89600) val="$define"
8961 echo "Yup, it can."
8962 ;;
8963*) val="$undef"
8964 echo "Nope, it can't."
8965 ;;
8966esac
8967set d_casti32
8968eval $setvar
8969$rm -f try try.*
8970
8971: check for ability to cast negative floats to unsigned
8972echo " "
8973echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8974$cat >try.c <<EOCP
8975#include <stdio.h>
8976#include <sys/types.h>
8977#include <signal.h>
8978$signal_t blech(s) int s; { exit(7); }
8979$signal_t blech_in_list(s) int s; { exit(4); }
8980unsigned long dummy_long(p) unsigned long p; { return p; }
8981unsigned int dummy_int(p) unsigned int p; { return p; }
8982unsigned short dummy_short(p) unsigned short p; { return p; }
8983int main()
8984{
8985 double f;
8986 unsigned long along;
8987 unsigned int aint;
8988 unsigned short ashort;
8989 int result = 0;
8990 char str[16];
8991
8992 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8993 a direct f = -123. assignment. gcc-2.8.0 reportedly
8994 optimized the whole file away
8995 */
8996 /* Store the number in a writable string for gcc to pass to
8997 sscanf under HP/UX.
8998 */
8999 sprintf(str, "-123");
9000 sscanf(str, "%lf", &f); /* f = -123.; */
9001
9002 signal(SIGFPE, blech);
9003 along = (unsigned long)f;
9004 aint = (unsigned int)f;
9005 ashort = (unsigned short)f;
9006 if (along != (unsigned long)-123)
9007 result |= 1;
9008 if (aint != (unsigned int)-123)
9009 result |= 1;
9010 if (ashort != (unsigned short)-123)
9011 result |= 1;
9012 sprintf(str, "1073741824.");
9013 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9014 f = f + f;
9015 along = 0;
9016 along = (unsigned long)f;
9017 if (along != 0x80000000)
9018 result |= 2;
9019 f -= 1.;
9020 along = 0;
9021 along = (unsigned long)f;
9022 if (along != 0x7fffffff)
9023 result |= 1;
9024 f += 2.;
9025 along = 0;
9026 along = (unsigned long)f;
9027 if (along != 0x80000001)
9028 result |= 2;
9029 if (result)
9030 exit(result);
9031 signal(SIGFPE, blech_in_list);
9032 sprintf(str, "123.");
9033 sscanf(str, "%lf", &f); /* f = 123.; */
9034 along = dummy_long((unsigned long)f);
9035 aint = dummy_int((unsigned int)f);
9036 ashort = dummy_short((unsigned short)f);
9037 if (along != (unsigned long)123)
9038 result |= 4;
9039 if (aint != (unsigned int)123)
9040 result |= 4;
9041 if (ashort != (unsigned short)123)
9042 result |= 4;
9043 exit(result);
9044
9045}
9046EOCP
9047set try
9048if eval $compile_ok; then
9049 $run ./try
9050 castflags=$?
9051else
9052 echo "(I can't seem to compile the test program--assuming it can't)"
9053 castflags=7
9054fi
9055case "$castflags" in
90560) val="$define"
9057 echo "Yup, it can."
9058 ;;
9059*) val="$undef"
9060 echo "Nope, it can't."
9061 ;;
9062esac
9063set d_castneg
9064eval $setvar
9065$rm -f try.*
9066
9067: see if vprintf exists
9068echo " "
9069if set vprintf val -f d_vprintf; eval $csym; $val; then
9070 echo 'vprintf() found.' >&4
9071 val="$define"
9072 $cat >try.c <<'EOF'
9073#include <varargs.h>
9074
9075int main() { xxx("foo"); }
9076
9077xxx(va_alist)
9078va_dcl
9079{
9080 va_list args;
9081 char buf[10];
9082
9083 va_start(args);
9084 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9085}
9086EOF
9087 set try
9088 if eval $compile && $run ./try; then
9089 echo "Your vsprintf() returns (int)." >&4
9090 val2="$undef"
9091 else
9092 echo "Your vsprintf() returns (char*)." >&4
9093 val2="$define"
9094 fi
9095else
9096 echo 'vprintf() NOT found.' >&4
9097 val="$undef"
9098 val2="$undef"
9099fi
9100$rm -f try try.*
9101set d_vprintf
9102eval $setvar
9103val=$val2
9104set d_charvspr
9105eval $setvar
9106
9107: see if chown exists
9108set chown d_chown
9109eval $inlibc
9110
9111: see if chroot exists
9112set chroot d_chroot
9113eval $inlibc
9114
9115: see if chsize exists
9116set chsize d_chsize
9117eval $inlibc
9118
9119: see if class exists
9120set class d_class
9121eval $inlibc
9122
9123hasstruct='varname=$1; struct=$2; shift; shift;
9124while $test $# -ge 2; do
9125 case "$1" in
9126 $define) echo "#include <$2>";;
9127 esac ;
9128 shift 2;
9129done > try.c;
9130echo "int main () { struct $struct foo; }" >> try.c;
9131set try;
9132if eval $compile; then
9133 val="$define";
9134else
9135 val="$undef";
9136fi;
9137set $varname;
9138eval $setvar;
9139$rm -f try.c try.o'
9140
9141: see if sys/types.h has to be included
9142set sys/types.h i_systypes
9143eval $inhdr
9144
9145hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9146while $test $# -ge 2; do
9147 case "$1" in
9148 $define) echo "#include <$2>";;
9149 esac ;
9150 shift 2;
9151done > try.c;
9152echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9153set try;
9154if eval $compile; then
9155 val="$define";
9156else
9157 val="$undef";
9158fi;
9159set $varname;
9160eval $setvar;
9161$rm -f try.c try.o'
9162
9163socketlib=''
9164sockethdr=''
9165: see whether socket exists
9166echo " "
9167$echo $n "Hmm... $c" >&4
9168if set socket val -f d_socket; eval $csym; $val; then
9169 echo "Looks like you have Berkeley networking support." >&4
9170 d_socket="$define"
9171 if set setsockopt val -f; eval $csym; $val; then
9172 d_oldsock="$undef"
9173 else
9174 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9175 d_oldsock="$define"
9176 fi
9177else
9178 if $contains socklib libc.list >/dev/null 2>&1; then
9179 echo "Looks like you have Berkeley networking support." >&4
9180 d_socket="$define"
9181 : we will have to assume that it supports the 4.2 BSD interface
9182 d_oldsock="$undef"
9183 else
9184 echo "You don't have Berkeley networking in libc$_a..." >&4
9185 if test "X$d_socket" = "X$define"; then
9186 echo "...but you seem to believe that you have sockets." >&4
9187 else
9188 for net in net socket
9189 do
9190 if test -f /usr/lib/lib$net$_a; then
9191 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9192 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9193 if $contains socket libc.list >/dev/null 2>&1; then
9194 d_socket="$define"
9195 socketlib="-l$net"
9196 case "$net" in
9197 net)
9198 echo "...but the Wollongong group seems to have hacked it in." >&4
9199 sockethdr="-I/usr/netinclude"
9200 ;;
9201 esac
9202 echo "Found Berkeley sockets interface in lib$net." >& 4
9203 if $contains setsockopt libc.list >/dev/null 2>&1; then
9204 d_oldsock="$undef"
9205 else
9206 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9207 d_oldsock="$define"
9208 fi
9209 break
9210 fi
9211 fi
9212 done
9213 if test "X$d_socket" != "X$define"; then
9214 echo "or anywhere else I see." >&4
9215 d_socket="$undef"
9216 d_oldsock="$undef"
9217 fi
9218 fi
9219 fi
9220fi
9221
9222: see if socketpair exists
9223set socketpair d_sockpair
9224eval $inlibc
9225
9226
9227echo " "
9228echo "Checking the availability of certain socket constants..." >& 4
9229for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9230 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9231 $cat >try.c <<EOF
9232#include <sys/types.h>
9233#include <sys/socket.h>
9234int main() {
9235 int i = $ENUM;
9236}
9237EOF
9238 val="$undef"
9239 set try; if eval $compile; then
9240 val="$define"
9241 fi
9242 set d_${enum}; eval $setvar
9243 $rm -f try.c try
9244done
9245
9246: see if this is a sys/uio.h system
9247set sys/uio.h i_sysuio
9248eval $inhdr
9249
9250
9251echo " "
9252echo "Checking to see if your system supports struct cmsghdr..." >&4
9253set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9254eval $hasstruct
9255case "$d_cmsghdr_s" in
9256"$define") echo "Yes, it does." ;;
9257*) echo "No, it doesn't." ;;
9258esac
9259
9260
9261: check for const keyword
9262echo " "
9263echo 'Checking to see if your C compiler knows about "const"...' >&4
9264$cat >const.c <<'EOCP'
9265typedef struct spug { int drokk; } spug;
9266int main()
9267{
9268 const char *foo;
9269 const spug y;
9270}
9271EOCP
9272if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9273 val="$define"
9274 echo "Yup, it does."
9275else
9276 val="$undef"
9277 echo "Nope, it doesn't."
9278fi
9279set d_const
9280eval $setvar
9281
9282: see if crypt exists
9283echo " "
9284if set crypt val -f d_crypt; eval $csym; $val; then
9285 echo 'crypt() found.' >&4
9286 val="$define"
9287 cryptlib=''
9288else
9289 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9290 if $test -z "$cryptlib"; then
9291 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9292 else
9293 cryptlib=-lcrypt
9294 fi
9295 if $test -z "$cryptlib"; then
9296 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9297 else
9298 cryptlib=-lcrypt
9299 fi
9300 if $test -z "$cryptlib"; then
9301 cryptlib=`./loc libcrypt$_a "" $libpth`
9302 else
9303 cryptlib=-lcrypt
9304 fi
9305 if $test -z "$cryptlib"; then
9306 echo 'crypt() NOT found.' >&4
9307 val="$undef"
9308 else
9309 val="$define"
9310 fi
9311fi
9312set d_crypt
9313eval $setvar
9314
9315: get csh whereabouts
9316case "$csh" in
9317'csh') val="$undef" ;;
9318*) val="$define" ;;
9319esac
9320set d_csh
9321eval $setvar
9322: Respect a hint or command line value for full_csh.
9323case "$full_csh" in
9324'') full_csh=$csh ;;
9325esac
9326
9327: see if cuserid exists
9328set cuserid d_cuserid
9329eval $inlibc
9330
9331: see if this is a limits.h system
9332set limits.h i_limits
9333eval $inhdr
9334
9335: see if this is a float.h system
9336set float.h i_float
9337eval $inhdr
9338
9339: See if number of significant digits in a double precision number is known
9340echo " "
9341$cat >dbl_dig.c <<EOM
9342#$i_limits I_LIMITS
9343#$i_float I_FLOAT
9344#ifdef I_LIMITS
9345#include <limits.h>
9346#endif
9347#ifdef I_FLOAT
9348#include <float.h>
9349#endif
9350#ifdef DBL_DIG
9351printf("Contains DBL_DIG");
9352#endif
9353EOM
9354$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9355if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9356 echo "DBL_DIG found." >&4
9357 val="$define"
9358else
9359 echo "DBL_DIG NOT found." >&4
9360 val="$undef"
9361fi
9362$rm -f dbl_dig.?
9363set d_dbl_dig
9364eval $setvar
9365
9366hasproto='varname=$1; func=$2; shift; shift;
9367while $test $# -ge 2; do
9368 case "$1" in
9369 $define) echo "#include <$2>";;
9370 esac ;
9371 shift 2;
9372done > try.c;
9373$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9374if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9375 echo "$func() prototype found.";
9376 val="$define";
9377else
9378 echo "$func() prototype NOT found.";
9379 val="$undef";
9380fi;
9381set $varname;
9382eval $setvar;
9383$rm -f try.c tryout.c'
9384
9385: see if dbm.h is available
9386: see if dbmclose exists
9387set dbmclose d_dbmclose
9388eval $inlibc
9389
9390case "$d_dbmclose" in
9391$define)
9392 set dbm.h i_dbm
9393 eval $inhdr
9394 case "$i_dbm" in
9395 $define)
9396 val="$undef"
9397 set i_rpcsvcdbm
9398 eval $setvar
9399 ;;
9400 *) set rpcsvc/dbm.h i_rpcsvcdbm
9401 eval $inhdr
9402 ;;
9403 esac
9404 ;;
9405*) echo "We won't be including <dbm.h>"
9406 val="$undef"
9407 set i_dbm
9408 eval $setvar
9409 val="$undef"
9410 set i_rpcsvcdbm
9411 eval $setvar
9412 ;;
9413esac
9414
9415: see if prototype for dbminit is available
9416echo " "
9417set d_dbminitproto dbminit $i_dbm dbm.h
9418eval $hasproto
9419
9420: see if difftime exists
9421set difftime d_difftime
9422eval $inlibc
9423
9424: see if this is a dirent system
9425echo " "
9426if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9427 val="$define"
9428 echo "<dirent.h> found." >&4
9429else
9430 val="$undef"
9431 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9432 echo "<sys/dir.h> found." >&4
9433 echo " "
9434 else
9435 xinc=`./findhdr sys/ndir.h`
9436 fi
9437 echo "<dirent.h> NOT found." >&4
9438fi
9439set i_dirent
9440eval $setvar
9441
9442: Look for type of directory structure.
9443echo " "
9444$cppstdin $cppflags $cppminus < "$xinc" > try.c
9445
9446case "$direntrytype" in
9447''|' ')
9448 case "$i_dirent" in
9449 $define) guess1='struct dirent' ;;
9450 *) guess1='struct direct' ;;
9451 esac
9452 ;;
9453*) guess1="$direntrytype"
9454 ;;
9455esac
9456
9457case "$guess1" in
9458'struct dirent') guess2='struct direct' ;;
9459*) guess2='struct dirent' ;;
9460esac
9461
9462if $contains "$guess1" try.c >/dev/null 2>&1; then
9463 direntrytype="$guess1"
9464 echo "Your directory entries are $direntrytype." >&4
9465elif $contains "$guess2" try.c >/dev/null 2>&1; then
9466 direntrytype="$guess2"
9467 echo "Your directory entries seem to be $direntrytype." >&4
9468else
9469 echo "I don't recognize your system's directory entries." >&4
9470 rp="What type is used for directory entries on this system?"
9471 dflt="$guess1"
9472 . ./myread
9473 direntrytype="$ans"
9474fi
9475$rm -f try.c
9476
9477
9478: see if the directory entry stores field length
9479echo " "
9480$cppstdin $cppflags $cppminus < "$xinc" > try.c
9481if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9482 echo "Good, your directory entry keeps length information in d_namlen." >&4
9483 val="$define"
9484else
9485 echo "Your directory entry does not know about the d_namlen field." >&4
9486 val="$undef"
9487fi
9488set d_dirnamlen
9489eval $setvar
9490$rm -f try.c
9491
9492: see if dlerror exists
9493xxx_runnm="$runnm"
9494runnm=false
9495set dlerror d_dlerror
9496eval $inlibc
9497runnm="$xxx_runnm"
9498
9499: see if dlfcn is available
9500set dlfcn.h i_dlfcn
9501eval $inhdr
9502
9503case "$usedl" in
9504$define|y|true)
9505 $cat << EOM
9506
9507On a few systems, the dynamically loaded modules that perl generates and uses
9508will need a different extension than shared libs. The default will probably
9509be appropriate.
9510
9511EOM
9512 case "$dlext" in
9513 '') dflt="$so" ;;
9514 *) dflt="$dlext" ;;
9515 esac
9516 rp='What is the extension of dynamically loaded modules'
9517 . ./myread
9518 dlext="$ans"
9519 ;;
9520*)
9521 dlext="none"
9522 ;;
9523esac
9524
9525: Check if dlsym need a leading underscore
9526echo " "
9527val="$undef"
9528
9529case "$dlsrc" in
9530dl_dlopen.xs)
9531 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9532 $cat >dyna.c <<'EOM'
9533fred () { }
9534EOM
9535
9536$cat >fred.c<<EOM
9537
9538#include <stdio.h>
9539#$i_dlfcn I_DLFCN
9540#ifdef I_DLFCN
9541#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9542#else
9543#include <sys/types.h>
9544#include <nlist.h>
9545#include <link.h>
9546#endif
9547
9548extern int fred() ;
9549
9550int main()
9551{
9552 void * handle ;
9553 void * symbol ;
9554#ifndef RTLD_LAZY
9555 int mode = 1 ;
9556#else
9557 int mode = RTLD_LAZY ;
9558#endif
9559 handle = dlopen("./dyna.$dlext", mode) ;
9560 if (handle == NULL) {
9561 printf ("1\n") ;
9562 fflush (stdout) ;
9563 exit(0);
9564 }
9565 symbol = dlsym(handle, "fred") ;
9566 if (symbol == NULL) {
9567 /* try putting a leading underscore */
9568 symbol = dlsym(handle, "_fred") ;
9569 if (symbol == NULL) {
9570 printf ("2\n") ;
9571 fflush (stdout) ;
9572 exit(0);
9573 }
9574 printf ("3\n") ;
9575 }
9576 else
9577 printf ("4\n") ;
9578 fflush (stdout) ;
9579 exit(0);
9580}
9581EOM
9582 : Call the object file tmp-dyna.o in case dlext=o.
9583 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9584 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9585 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9586 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9587 xxx=`$run ./fred`
9588 case $xxx in
9589 1) echo "Test program failed using dlopen." >&4
9590 echo "Perhaps you should not use dynamic loading." >&4;;
9591 2) echo "Test program failed using dlsym." >&4
9592 echo "Perhaps you should not use dynamic loading." >&4;;
9593 3) echo "dlsym needs a leading underscore" >&4
9594 val="$define" ;;
9595 4) echo "dlsym doesn't need a leading underscore." >&4;;
9596 esac
9597 else
9598 echo "I can't compile and run the test program." >&4
9599 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9600 fi
9601 ;;
9602esac
9603
9604$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9605
9606set d_dlsymun
9607eval $setvar
9608
9609: see if prototype for drand48 is available
9610echo " "
9611set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9612eval $hasproto
9613
9614: see if dup2 exists
9615set dup2 d_dup2
9616eval $inlibc
9617
9618: see if eaccess exists
9619set eaccess d_eaccess
9620eval $inlibc
9621
9622: see if endgrent exists
9623set endgrent d_endgrent
9624eval $inlibc
9625
9626: see if endhostent exists
9627set endhostent d_endhent
9628eval $inlibc
9629
9630: see if endnetent exists
9631set endnetent d_endnent
9632eval $inlibc
9633
9634: see if endprotoent exists
9635set endprotoent d_endpent
9636eval $inlibc
9637
9638: see if endpwent exists
9639set endpwent d_endpwent
9640eval $inlibc
9641
9642: see if endservent exists
9643set endservent d_endsent
9644eval $inlibc
9645
9646: Locate the flags for 'open()'
9647echo " "
9648$cat >try.c <<'EOCP'
9649#include <sys/types.h>
9650#ifdef I_FCNTL
9651#include <fcntl.h>
9652#endif
9653#ifdef I_SYS_FILE
9654#include <sys/file.h>
9655#endif
9656int main() {
9657 if(O_RDONLY);
9658#ifdef O_TRUNC
9659 exit(0);
9660#else
9661 exit(1);
9662#endif
9663}
9664EOCP
9665: check sys/file.h first to get FREAD on Sun
9666if $test `./findhdr sys/file.h` && \
9667 set try -DI_SYS_FILE && eval $compile; then
9668 h_sysfile=true;
9669 echo "<sys/file.h> defines the O_* constants..." >&4
9670 if $run ./try; then
9671 echo "and you have the 3 argument form of open()." >&4
9672 val="$define"
9673 else
9674 echo "but not the 3 argument form of open(). Oh, well." >&4
9675 val="$undef"
9676 fi
9677elif $test `./findhdr fcntl.h` && \
9678 set try -DI_FCNTL && eval $compile; then
9679 h_fcntl=true;
9680 echo "<fcntl.h> defines the O_* constants..." >&4
9681 if $run ./try; then
9682 echo "and you have the 3 argument form of open()." >&4
9683 val="$define"
9684 else
9685 echo "but not the 3 argument form of open(). Oh, well." >&4
9686 val="$undef"
9687 fi
9688else
9689 val="$undef"
9690 echo "I can't find the O_* constant definitions! You got problems." >&4
9691fi
9692set d_open3
9693eval $setvar
9694$rm -f try try.*
9695
9696: see which of string.h or strings.h is needed
9697echo " "
9698strings=`./findhdr string.h`
9699if $test "$strings" && $test -r "$strings"; then
9700 echo "Using <string.h> instead of <strings.h>." >&4
9701 val="$define"
9702else
9703 val="$undef"
9704 strings=`./findhdr strings.h`
9705 if $test "$strings" && $test -r "$strings"; then
9706 echo "Using <strings.h> instead of <string.h>." >&4
9707 else
9708 echo "No string header found -- You'll surely have problems." >&4
9709 fi
9710fi
9711set i_string
9712eval $setvar
9713case "$i_string" in
9714"$undef") strings=`./findhdr strings.h`;;
9715*) strings=`./findhdr string.h`;;
9716esac
9717
9718: check for non-blocking I/O stuff
9719case "$h_sysfile" in
9720true) echo "#include <sys/file.h>" > head.c;;
9721*)
9722 case "$h_fcntl" in
9723 true) echo "#include <fcntl.h>" > head.c;;
9724 *) echo "#include <sys/fcntl.h>" > head.c;;
9725 esac
9726 ;;
9727esac
9728echo " "
9729echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9730case "$o_nonblock" in
9731'')
9732 $cat head.c > try.c
9733 $cat >>try.c <<'EOCP'
9734#include <stdio.h>
9735#include <stdlib.h>
9736int main() {
9737#ifdef O_NONBLOCK
9738 printf("O_NONBLOCK\n");
9739 exit(0);
9740#endif
9741#ifdef O_NDELAY
9742 printf("O_NDELAY\n");
9743 exit(0);
9744#endif
9745#ifdef FNDELAY
9746 printf("FNDELAY\n");
9747 exit(0);
9748#endif
9749 exit(0);
9750}
9751EOCP
9752 set try
9753 if eval $compile_ok; then
9754 o_nonblock=`$run ./try`
9755 case "$o_nonblock" in
9756 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9757 *) echo "Seems like we can use $o_nonblock.";;
9758 esac
9759 else
9760 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9761 fi
9762 ;;
9763*) echo "Using $hint value $o_nonblock.";;
9764esac
9765$rm -f try try.* .out core
9766
9767echo " "
9768echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9769case "$eagain" in
9770'')
9771 $cat head.c > try.c
9772 $cat >>try.c <<EOCP
9773#include <errno.h>
9774#include <sys/types.h>
9775#include <signal.h>
9776#include <stdio.h>
9777#include <stdlib.h>
9778#define MY_O_NONBLOCK $o_nonblock
9779#ifndef errno /* XXX need better Configure test */
9780extern int errno;
9781#endif
9782#$i_unistd I_UNISTD
9783#ifdef I_UNISTD
9784#include <unistd.h>
9785#endif
9786#$i_string I_STRING
9787#ifdef I_STRING
9788#include <string.h>
9789#else
9790#include <strings.h>
9791#endif
9792$signal_t blech(x) int x; { exit(3); }
9793EOCP
9794 $cat >> try.c <<'EOCP'
9795int main()
9796{
9797 int pd[2];
9798 int pu[2];
9799 char buf[1];
9800 char string[100];
9801
9802 pipe(pd); /* Down: child -> parent */
9803 pipe(pu); /* Up: parent -> child */
9804 if (0 != fork()) {
9805 int ret;
9806 close(pd[1]); /* Parent reads from pd[0] */
9807 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9808#ifdef F_SETFL
9809 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9810 exit(1);
9811#else
9812 exit(4);
9813#endif
9814 signal(SIGALRM, blech);
9815 alarm(5);
9816 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9817 exit(2);
9818 sprintf(string, "%d\n", ret);
9819 write(2, string, strlen(string));
9820 alarm(0);
9821#ifdef EAGAIN
9822 if (errno == EAGAIN) {
9823 printf("EAGAIN\n");
9824 goto ok;
9825 }
9826#endif
9827#ifdef EWOULDBLOCK
9828 if (errno == EWOULDBLOCK)
9829 printf("EWOULDBLOCK\n");
9830#endif
9831 ok:
9832 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9833 sleep(2); /* Give it time to close our pipe */
9834 alarm(5);
9835 ret = read(pd[0], buf, 1); /* Should read EOF */
9836 alarm(0);
9837 sprintf(string, "%d\n", ret);
9838 write(3, string, strlen(string));
9839 exit(0);
9840 }
9841
9842 close(pd[0]); /* We write to pd[1] */
9843 close(pu[1]); /* We read from pu[0] */
9844 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9845 close(pd[1]); /* Pipe pd is now fully closed! */
9846 exit(0); /* Bye bye, thank you for playing! */
9847}
9848EOCP
9849 set try
9850 if eval $compile_ok; then
9851 echo "$startsh" >mtry
9852 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9853 chmod +x mtry
9854 ./mtry >/dev/null 2>&1
9855 case $? in
9856 0) eagain=`$cat try.out`;;
9857 1) echo "Could not perform non-blocking setting!";;
9858 2) echo "I did a successful read() for something that was not there!";;
9859 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9860 4) echo "Could not find F_SETFL!";;
9861 *) echo "Something terribly wrong happened during testing.";;
9862 esac
9863 rd_nodata=`$cat try.ret`
9864 echo "A read() system call with no data present returns $rd_nodata."
9865 case "$rd_nodata" in
9866 0|-1) ;;
9867 *)
9868 echo "(That's peculiar, fixing that to be -1.)"
9869 rd_nodata=-1
9870 ;;
9871 esac
9872 case "$eagain" in
9873 '')
9874 echo "Forcing errno EAGAIN on read() with no data available."
9875 eagain=EAGAIN
9876 ;;
9877 *)
9878 echo "Your read() sets errno to $eagain when no data is available."
9879 ;;
9880 esac
9881 status=`$cat try.err`
9882 case "$status" in
9883 0) echo "And it correctly returns 0 to signal EOF.";;
9884 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9885 *) echo "However, your read() returns '$status' on EOF??";;
9886 esac
9887 val="$define"
9888 if test "$status" = "$rd_nodata"; then
9889 echo "WARNING: you can't distinguish between EOF and no data!"
9890 val="$undef"
9891 fi
9892 else
9893 echo "I can't compile the test program--assuming errno EAGAIN will do."
9894 eagain=EAGAIN
9895 fi
9896 set d_eofnblk
9897 eval $setvar
9898 ;;
9899*)
9900 echo "Using $hint value $eagain."
9901 echo "Your read() returns $rd_nodata when no data is present."
9902 case "$d_eofnblk" in
9903 "$define") echo "And you can see EOF because read() returns 0.";;
9904 "$undef") echo "But you can't see EOF status from read() returned value.";;
9905 *)
9906 echo "(Assuming you can't see EOF status from read anyway.)"
9907 d_eofnblk=$undef
9908 ;;
9909 esac
9910 ;;
9911esac
9912$rm -f try try.* .out core head.c mtry
9913
9914: see if fchdir exists
9915set fchdir d_fchdir
9916eval $inlibc
9917
9918: see if fchmod exists
9919set fchmod d_fchmod
9920eval $inlibc
9921
9922: see if fchown exists
9923set fchown d_fchown
9924eval $inlibc
9925
9926: see if this is an fcntl system
9927set fcntl d_fcntl
9928eval $inlibc
9929
9930echo " "
9931: See if fcntl-based locking works.
9932$cat >try.c <<EOCP
9933#include <stdlib.h>
9934#include <unistd.h>
9935#include <fcntl.h>
9936#include <signal.h>
9937$signal_t blech(x) int x; { exit(3); }
9938int main() {
9939#if defined(F_SETLK) && defined(F_SETLKW)
9940 struct flock flock;
9941 int retval, fd;
9942 fd = open("try.c", O_RDONLY);
9943 flock.l_type = F_RDLCK;
9944 flock.l_whence = SEEK_SET;
9945 flock.l_start = flock.l_len = 0;
9946 signal(SIGALRM, blech);
9947 alarm(10);
9948 retval = fcntl(fd, F_SETLK, &flock);
9949 close(fd);
9950 (retval < 0 ? exit(2) : exit(0));
9951#else
9952 exit(2);
9953#endif
9954}
9955EOCP
9956echo "Checking if fcntl-based file locking works... "
9957case "$d_fcntl" in
9958"$define")
9959 set try
9960 if eval $compile_ok; then
9961 if $run ./try; then
9962 echo "Yes, it seems to work."
9963 val="$define"
9964 else
9965 echo "Nope, it didn't work."
9966 val="$undef"
9967 case "$?" in
9968 3) $cat >&4 <<EOM
9969***
9970*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9971*** This is (almost) impossible.
9972*** If your NFS lock daemons are not feeling well, something like
9973*** this may happen, please investigate. Cannot continue, aborting.
9974***
9975EOM
9976 exit 1
9977 ;;
9978 esac
9979 fi
9980 else
9981 echo "I'm unable to compile the test program, so I'll assume not."
9982 val="$undef"
9983 fi
9984 ;;
9985*) val="$undef";
9986 echo "Nope, since you don't even have fcntl()."
9987 ;;
9988esac
9989set d_fcntl_can_lock
9990eval $setvar
9991$rm -f try*
9992
9993
9994: see if sys/select.h has to be included
9995set sys/select.h i_sysselct
9996eval $inhdr
9997
9998: see if we should include time.h, sys/time.h, or both
9999echo " "
10000if test "X$timeincl" = X; then
10001 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10002 $echo $n "I'm now running the test program...$c"
10003 $cat >try.c <<'EOCP'
10004#include <sys/types.h>
10005#ifdef I_TIME
10006#include <time.h>
10007#endif
10008#ifdef I_SYSTIME
10009#ifdef SYSTIMEKERNEL
10010#define KERNEL
10011#endif
10012#include <sys/time.h>
10013#endif
10014#ifdef I_SYSSELECT
10015#include <sys/select.h>
10016#endif
10017int main()
10018{
10019 struct tm foo;
10020#ifdef S_TIMEVAL
10021 struct timeval bar;
10022#endif
10023#ifdef S_TIMEZONE
10024 struct timezone tzp;
10025#endif
10026 if (foo.tm_sec == foo.tm_sec)
10027 exit(0);
10028#ifdef S_TIMEVAL
10029 if (bar.tv_sec == bar.tv_sec)
10030 exit(0);
10031#endif
10032 exit(1);
10033}
10034EOCP
10035 flags=''
10036 for s_timezone in '-DS_TIMEZONE' ''; do
10037 sysselect=''
10038 for s_timeval in '-DS_TIMEVAL' ''; do
10039 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10040 for i_time in '' '-DI_TIME'; do
10041 for i_systime in '-DI_SYSTIME' ''; do
10042 case "$flags" in
10043 '') $echo $n ".$c"
10044 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10045 if eval $compile; then
10046 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10047 shift
10048 flags="$*"
10049 echo " "
10050 $echo $n "Succeeded with $flags$c"
10051 fi
10052 ;;
10053 esac
10054 done
10055 done
10056 done
10057 done
10058 done
10059 timeincl=''
10060 echo " "
10061 case "$flags" in
10062 *SYSTIMEKERNEL*) i_systimek="$define"
10063 timeincl=`./findhdr sys/time.h`
10064 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10065 *) i_systimek="$undef";;
10066 esac
10067 case "$flags" in
10068 *I_TIME*) i_time="$define"
10069 timeincl=`./findhdr time.h`" $timeincl"
10070 echo "We'll include <time.h>." >&4;;
10071 *) i_time="$undef";;
10072 esac
10073 case "$flags" in
10074 *I_SYSTIME*) i_systime="$define"
10075 timeincl=`./findhdr sys/time.h`" $timeincl"
10076 echo "We'll include <sys/time.h>." >&4;;
10077 *) i_systime="$undef";;
10078 esac
10079 $rm -f try.c try
10080fi
10081
10082: check for fd_set items
10083$cat <<EOM
10084
10085Checking to see how well your C compiler handles fd_set and friends ...
10086EOM
10087$cat >try.c <<EOCP
10088#$i_systime I_SYS_TIME
10089#$i_sysselct I_SYS_SELECT
10090#$d_socket HAS_SOCKET
10091#include <sys/types.h>
10092#ifdef HAS_SOCKET
10093#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10094#endif
10095#ifdef I_SYS_TIME
10096#include <sys/time.h>
10097#endif
10098#ifdef I_SYS_SELECT
10099#include <sys/select.h>
10100#endif
10101int main() {
10102 fd_set fds;
10103
10104#ifdef TRYBITS
10105 if(fds.fds_bits);
10106#endif
10107
10108#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10109 exit(0);
10110#else
10111 exit(1);
10112#endif
10113}
10114EOCP
10115set try -DTRYBITS
10116if eval $compile; then
10117 d_fds_bits="$define"
10118 d_fd_set="$define"
10119 echo "Well, your system knows about the normal fd_set typedef..." >&4
10120 if $run ./try; then
10121 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10122 d_fd_macros="$define"
10123 else
10124 $cat >&4 <<'EOM'
10125but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10126EOM
10127 d_fd_macros="$undef"
10128 fi
10129else
10130 $cat <<'EOM'
10131Hmm, your compiler has some difficulty with fd_set. Checking further...
10132EOM
10133 set try
10134 if eval $compile; then
10135 d_fds_bits="$undef"
10136 d_fd_set="$define"
10137 echo "Well, your system has some sort of fd_set available..." >&4
10138 if $run ./try; then
10139 echo "and you have the normal fd_set macros." >&4
10140 d_fd_macros="$define"
10141 else
10142 $cat <<'EOM'
10143but not the normal fd_set macros! Gross! More work for me...
10144EOM
10145 d_fd_macros="$undef"
10146 fi
10147 else
10148 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10149 d_fd_set="$undef"
10150 d_fds_bits="$undef"
10151 d_fd_macros="$undef"
10152 fi
10153fi
10154$rm -f try try.*
10155
10156: see if fgetpos exists
10157set fgetpos d_fgetpos
10158eval $inlibc
10159
10160: see if finite exists
10161set finite d_finite
10162eval $inlibc
10163
10164: see if finitel exists
10165set finitel d_finitel
10166eval $inlibc
10167
10168: see if flock exists
10169set flock d_flock
10170eval $inlibc
10171
10172: see if this is a sys/file.h system
10173val=''
10174set sys/file.h val
10175eval $inhdr
10176
10177: do we need to include sys/file.h ?
10178case "$val" in
10179"$define")
10180 echo " "
10181 if $h_sysfile; then
10182 val="$define"
10183 echo "We'll be including <sys/file.h>." >&4
10184 else
10185 val="$undef"
10186 echo "We won't be including <sys/file.h>." >&4
10187 fi
10188 ;;
10189*)
10190 h_sysfile=false
10191 ;;
10192esac
10193set i_sysfile
10194eval $setvar
10195
10196: see if prototype for flock is available
10197echo " "
10198set d_flockproto flock $i_sysfile sys/file.h
10199eval $hasproto
10200
10201: see if fork exists
10202set fork d_fork
10203eval $inlibc
10204
10205: see if fp_class exists
10206set fp_class d_fp_class
10207eval $inlibc
10208
10209: see if pathconf exists
10210set pathconf d_pathconf
10211eval $inlibc
10212
10213: see if fpathconf exists
10214set fpathconf d_fpathconf
10215eval $inlibc
10216
10217: see if fpclass exists
10218set fpclass d_fpclass
10219eval $inlibc
10220
10221: see if fpclassify exists
10222set fpclassify d_fpclassify
10223eval $inlibc
10224
10225: see if fpclassl exists
10226set fpclassl d_fpclassl
10227eval $inlibc
10228
10229
10230: check for fpos64_t
10231echo " "
10232echo "Checking to see if you have fpos64_t..." >&4
10233$cat >try.c <<EOCP
10234#include <stdio.h>
10235int main() { fpos64_t x = 7; }
10236EOCP
10237set try
10238if eval $compile; then
10239 val="$define"
10240 echo "You have fpos64_t."
10241else
10242 val="$undef"
10243 echo "You do not have fpos64_t."
10244 case "$fpossize" in
10245 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10246 esac
10247fi
10248$rm -f try.* try
10249set d_fpos64_t
10250eval $setvar
10251
10252: see if frexpl exists
10253set frexpl d_frexpl
10254eval $inlibc
10255
10256: see if this is a sys/param system
10257set sys/param.h i_sysparam
10258eval $inhdr
10259
10260: see if this is a sys/mount.h system
10261set sys/mount.h i_sysmount
10262eval $inhdr
10263
10264
10265echo " "
10266echo "Checking to see if your system supports struct fs_data..." >&4
10267set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10268eval $hasstruct
10269case "$d_fs_data_s" in
10270"$define") echo "Yes, it does." ;;
10271*) echo "No, it doesn't." ;;
10272esac
10273
10274: see if fseeko exists
10275set fseeko d_fseeko
10276eval $inlibc
10277case "$longsize" in
102788) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10279esac
10280
10281: see if fsetpos exists
10282set fsetpos d_fsetpos
10283eval $inlibc
10284
10285
10286: see if fstatfs exists
10287set fstatfs d_fstatfs
10288eval $inlibc
10289
10290
10291: see if statvfs exists
10292set statvfs d_statvfs
10293eval $inlibc
10294
10295: see if fstatvfs exists
10296set fstatvfs d_fstatvfs
10297eval $inlibc
10298
10299
10300: see if fsync exists
10301set fsync d_fsync
10302eval $inlibc
10303
10304: see if ftello exists
10305set ftello d_ftello
10306eval $inlibc
10307case "$longsize" in
103088) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10309esac
10310
10311: see if getcwd exists
10312set getcwd d_getcwd
10313eval $inlibc
10314
10315: see if getespwnam exists
10316set getespwnam d_getespwnam
10317eval $inlibc
10318
10319
10320: see if getfsstat exists
10321set getfsstat d_getfsstat
10322eval $inlibc
10323
10324: see if getgrent exists
10325set getgrent d_getgrent
10326eval $inlibc
10327
10328: see if gethostbyaddr exists
10329set gethostbyaddr d_gethbyaddr
10330eval $inlibc
10331
10332: see if gethostbyname exists
10333set gethostbyname d_gethbyname
10334eval $inlibc
10335
10336: see if gethostent exists
10337set gethostent d_gethent
10338eval $inlibc
10339
10340: see how we will look up host name
10341echo " "
10342call=''
10343if set gethostname val -f d_gethname; eval $csym; $val; then
10344 echo 'gethostname() found.' >&4
10345 d_gethname="$define"
10346 call=gethostname
10347fi
10348if set uname val -f d_uname; eval $csym; $val; then
10349 if ./xenix; then
10350 $cat <<'EOM'
10351uname() was found, but you're running xenix, and older versions of xenix
10352have a broken uname(). If you don't really know whether your xenix is old
10353enough to have a broken system call, use the default answer.
10354
10355EOM
10356 dflt=y
10357 case "$d_uname" in
10358 "$define") dflt=n;;
10359 esac
10360 rp='Is your uname() broken?'
10361 . ./myread
10362 case "$ans" in
10363 n*) d_uname="$define"; call=uname;;
10364 esac
10365 else
10366 echo 'uname() found.' >&4
10367 d_uname="$define"
10368 case "$call" in
10369 '') call=uname ;;
10370 esac
10371 fi
10372fi
10373case "$d_gethname" in
10374'') d_gethname="$undef";;
10375esac
10376case "$d_uname" in
10377'') d_uname="$undef";;
10378esac
10379case "$d_uname$d_gethname" in
10380*define*)
10381 dflt=n
10382 cat <<EOM
10383
10384Every now and then someone has a $call() that lies about the hostname
10385but can't be fixed for political or economic reasons. If you wish, I can
10386pretend $call() isn't there and maybe compute hostname at run-time
10387thanks to the '$phostname' command.
10388
10389EOM
10390 rp="Shall I ignore $call() from now on?"
10391 . ./myread
10392 case "$ans" in
10393 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10394 esac;;
10395esac
10396case "$phostname" in
10397'') aphostname='';;
10398*) case "$aphostname" in
10399 /*) ;;
10400 *) set X $phostname
10401 shift
10402 file=$1
10403 shift
10404 file=`./loc $file $file $pth`
10405 aphostname=`echo $file $*`
10406 ;;
10407 esac
10408 ;;
10409esac
10410case "$d_uname$d_gethname" in
10411*define*) ;;
10412*)
10413 case "$phostname" in
10414 '')
10415 echo "There will be no way for $package to get your hostname." >&4;;
10416 *)
10417 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10418 ;;
10419 esac;;
10420esac
10421case "$d_phostname" in
10422'') d_phostname="$undef";;
10423esac
10424
10425: see if this is a netdb.h system
10426set netdb.h i_netdb
10427eval $inhdr
10428
10429: see if prototypes for various gethostxxx netdb.h functions are available
10430echo " "
10431set d_gethostprotos gethostent $i_netdb netdb.h
10432eval $hasproto
10433
10434: see if getitimer exists
10435set getitimer d_getitimer
10436eval $inlibc
10437
10438: see if getlogin exists
10439set getlogin d_getlogin
10440eval $inlibc
10441
10442: see if getmnt exists
10443set getmnt d_getmnt
10444eval $inlibc
10445
10446: see if getmntent exists
10447set getmntent d_getmntent
10448eval $inlibc
10449
10450: see if getnetbyaddr exists
10451set getnetbyaddr d_getnbyaddr
10452eval $inlibc
10453
10454: see if getnetbyname exists
10455set getnetbyname d_getnbyname
10456eval $inlibc
10457
10458: see if getnetent exists
10459set getnetent d_getnent
10460eval $inlibc
10461
10462: see if prototypes for various getnetxxx netdb.h functions are available
10463echo " "
10464set d_getnetprotos getnetent $i_netdb netdb.h
10465eval $hasproto
10466
10467: see if getpagesize exists
10468set getpagesize d_getpagsz
10469eval $inlibc
10470
10471
10472: see if getprotobyname exists
10473set getprotobyname d_getpbyname
10474eval $inlibc
10475
10476: see if getprotobynumber exists
10477set getprotobynumber d_getpbynumber
10478eval $inlibc
10479
10480: see if getprotoent exists
10481set getprotoent d_getpent
10482eval $inlibc
10483
10484: see if getpgid exists
10485set getpgid d_getpgid
10486eval $inlibc
10487
10488: see if getpgrp2 exists
10489set getpgrp2 d_getpgrp2
10490eval $inlibc
10491
10492: see if getppid exists
10493set getppid d_getppid
10494eval $inlibc
10495
10496: see if getpriority exists
10497set getpriority d_getprior
10498eval $inlibc
10499
10500: see if prototypes for various getprotoxxx netdb.h functions are available
10501echo " "
10502set d_getprotoprotos getprotoent $i_netdb netdb.h
10503eval $hasproto
10504
10505: see if getprpwnam exists
10506set getprpwnam d_getprpwnam
10507eval $inlibc
10508
10509: see if getpwent exists
10510set getpwent d_getpwent
10511eval $inlibc
10512
10513
10514: see if getservbyname exists
10515set getservbyname d_getsbyname
10516eval $inlibc
10517
10518: see if getservbyport exists
10519set getservbyport d_getsbyport
10520eval $inlibc
10521
10522: see if getservent exists
10523set getservent d_getsent
10524eval $inlibc
10525
10526: see if prototypes for various getservxxx netdb.h functions are available
10527echo " "
10528set d_getservprotos getservent $i_netdb netdb.h
10529eval $hasproto
10530
10531: see if getspnam exists
10532set getspnam d_getspnam
10533eval $inlibc
10534
10535: see if gettimeofday or ftime exists
10536set gettimeofday d_gettimeod
10537eval $inlibc
10538case "$d_gettimeod" in
10539"$undef")
10540 set ftime d_ftime
10541 eval $inlibc
10542 ;;
10543*)
10544 val="$undef"; set d_ftime; eval $setvar
10545 ;;
10546esac
10547case "$d_gettimeod$d_ftime" in
10548"$undef$undef")
10549 echo " "
10550 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10551 ;;
10552esac
10553
10554: see if this is an grp system
10555set grp.h i_grp
10556eval $inhdr
10557
10558case "$i_grp" in
10559$define)
10560 xxx=`./findhdr grp.h`
10561 $cppstdin $cppflags $cppminus < $xxx >$$.h
10562
10563 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10564 val="$define"
10565 else
10566 val="$undef"
10567 fi
10568 set d_grpasswd
10569 eval $setvar
10570
10571 $rm -f $$.h
10572 ;;
10573*)
10574 val="$undef";
10575 set d_grpasswd; eval $setvar
10576 ;;
10577esac
10578
10579: see if hasmntopt exists
10580set hasmntopt d_hasmntopt
10581eval $inlibc
10582
10583: see if this is a netinet/in.h or sys/in.h system
10584set netinet/in.h i_niin sys/in.h i_sysin
10585eval $inhdr
10586
10587: see if arpa/inet.h has to be included
10588set arpa/inet.h i_arpainet
10589eval $inhdr
10590
10591: see if htonl --and friends-- exists
10592val=''
10593set htonl val
10594eval $inlibc
10595
10596: Maybe they are macros.
10597case "$val" in
10598$undef)
10599 $cat >htonl.c <<EOM
10600#include <stdio.h>
10601#include <sys/types.h>
10602#$i_niin I_NETINET_IN
10603#$i_sysin I_SYS_IN
10604#$i_arpainet I_ARPA_INET
10605#ifdef I_NETINET_IN
10606#include <netinet/in.h>
10607#endif
10608#ifdef I_SYS_IN
10609#include <sys/in.h>
10610#endif
10611#ifdef I_ARPA_INET
10612#include <arpa/inet.h>
10613#endif
10614#ifdef htonl
10615printf("Defined as a macro.");
10616#endif
10617EOM
10618 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10619 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10620 val="$define"
10621 echo "But it seems to be defined as a macro." >&4
10622 fi
10623 $rm -f htonl.?
10624 ;;
10625esac
10626set d_htonl
10627eval $setvar
10628
10629: index or strchr
10630echo " "
10631if set index val -f; eval $csym; $val; then
10632 if set strchr val -f d_strchr; eval $csym; $val; then
10633 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10634 val="$define"
10635 vali="$undef"
10636 echo "strchr() found." >&4
10637 else
10638 val="$undef"
10639 vali="$define"
10640 echo "index() found." >&4
10641 fi
10642 else
10643 val="$undef"
10644 vali="$define"
10645 echo "index() found." >&4
10646 fi
10647else
10648 if set strchr val -f d_strchr; eval $csym; $val; then
10649 val="$define"
10650 vali="$undef"
10651 echo "strchr() found." >&4
10652 else
10653 echo "No index() or strchr() found!" >&4
10654 val="$undef"
10655 vali="$undef"
10656 fi
10657fi
10658set d_strchr; eval $setvar
10659val="$vali"
10660set d_index; eval $setvar
10661
10662: check whether inet_aton exists
10663set inet_aton d_inetaton
10664eval $inlibc
10665
10666: Look for isascii
10667echo " "
10668$cat >isascii.c <<'EOCP'
10669#include <stdio.h>
10670#include <ctype.h>
10671int main() {
10672 int c = 'A';
10673 if (isascii(c))
10674 exit(0);
10675 else
10676 exit(1);
10677}
10678EOCP
10679set isascii
10680if eval $compile; then
10681 echo "isascii() found." >&4
10682 val="$define"
10683else
10684 echo "isascii() NOT found." >&4
10685 val="$undef"
10686fi
10687set d_isascii
10688eval $setvar
10689$rm -f isascii*
10690
10691: see if isfinite exists
10692set isfinite d_isfinite
10693eval $inlibc
10694
10695: see if isinf exists
10696set isinf d_isinf
10697eval $inlibc
10698
10699: see if isnan exists
10700set isnan d_isnan
10701eval $inlibc
10702
10703: see if isnanl exists
10704set isnanl d_isnanl
10705eval $inlibc
10706
10707: see if killpg exists
10708set killpg d_killpg
10709eval $inlibc
10710
10711: see if lchown exists
10712echo " "
10713$cat > try.c <<'EOCP'
10714/* System header to define __stub macros and hopefully few prototypes,
10715 which can conflict with char lchown(); below. */
10716#include <assert.h>
10717/* Override any gcc2 internal prototype to avoid an error. */
10718/* We use char because int might match the return type of a gcc2
10719 builtin and then its argument prototype would still apply. */
10720char lchown();
10721int main() {
10722 /* The GNU C library defines this for functions which it implements
10723 to always fail with ENOSYS. Some functions are actually named
10724 something starting with __ and the normal name is an alias. */
10725#if defined (__stub_lchown) || defined (__stub___lchown)
10726choke me
10727#else
10728lchown();
10729#endif
10730; return 0; }
10731EOCP
10732set try
10733if eval $compile; then
10734 $echo "lchown() found." >&4
10735 val="$define"
10736else
10737 $echo "lchown() NOT found." >&4
10738 val="$undef"
10739fi
10740set d_lchown
10741eval $setvar
10742
10743: See if number of significant digits in a double precision number is known
10744echo " "
10745$cat >ldbl_dig.c <<EOM
10746#$i_limits I_LIMITS
10747#$i_float I_FLOAT
10748#ifdef I_LIMITS
10749#include <limits.h>
10750#endif
10751#ifdef I_FLOAT
10752#include <float.h>
10753#endif
10754#ifdef LDBL_DIG
10755printf("Contains LDBL_DIG");
10756#endif
10757EOM
10758$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10759if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10760 echo "LDBL_DIG found." >&4
10761 val="$define"
10762else
10763 echo "LDBL_DIG NOT found." >&4
10764 val="$undef"
10765fi
10766$rm -f ldbl_dig.?
10767set d_ldbl_dig
10768eval $setvar
10769
10770: see if link exists
10771set link d_link
10772eval $inlibc
10773
10774: see if localeconv exists
10775set localeconv d_locconv
10776eval $inlibc
10777
10778: see if lockf exists
10779set lockf d_lockf
10780eval $inlibc
10781
10782: see if prototype for lseek is available
10783echo " "
10784set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10785eval $hasproto
10786
10787: see if lstat exists
10788set lstat d_lstat
10789eval $inlibc
10790
10791: see if madvise exists
10792set madvise d_madvise
10793eval $inlibc
10794
10795: see if mblen exists
10796set mblen d_mblen
10797eval $inlibc
10798
10799: see if mbstowcs exists
10800set mbstowcs d_mbstowcs
10801eval $inlibc
10802
10803: see if mbtowc exists
10804set mbtowc d_mbtowc
10805eval $inlibc
10806
10807: see if memchr exists
10808set memchr d_memchr
10809eval $inlibc
10810
10811: see if memcmp exists
10812set memcmp d_memcmp
10813eval $inlibc
10814
10815: see if memcpy exists
10816set memcpy d_memcpy
10817eval $inlibc
10818
10819: see if memmove exists
10820set memmove d_memmove
10821eval $inlibc
10822
10823: see if memset exists
10824set memset d_memset
10825eval $inlibc
10826
10827: see if mkdir exists
10828set mkdir d_mkdir
10829eval $inlibc
10830
10831: see if mkdtemp exists
10832set mkdtemp d_mkdtemp
10833eval $inlibc
10834
10835: see if mkfifo exists
10836set mkfifo d_mkfifo
10837eval $inlibc
10838
10839: see if mkstemp exists
10840set mkstemp d_mkstemp
10841eval $inlibc
10842
10843: see if mkstemps exists
10844set mkstemps d_mkstemps
10845eval $inlibc
10846
10847: see if mktime exists
10848set mktime d_mktime
10849eval $inlibc
10850
10851: see if this is a sys/mman.h system
10852set sys/mman.h i_sysmman
10853eval $inhdr
10854
10855: see if mmap exists
10856set mmap d_mmap
10857eval $inlibc
10858: see what shmat returns
10859: default to something harmless
10860mmaptype='void *'
10861case "$i_sysmman$d_mmap" in
10862"$define$define")
10863 $cat >mmap.c <<'END'
10864#include <sys/mman.h>
10865void *mmap();
10866END
10867 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10868 mmaptype='void *'
10869 else
10870 mmaptype='caddr_t'
10871 fi
10872 echo "and it returns ($mmaptype)." >&4
10873 ;;
10874esac
10875
10876
10877
10878: see if modfl exists
10879set modfl d_modfl
10880eval $inlibc
10881
10882d_modfl_pow32_bug="$undef"
10883
10884case "$d_longdbl$d_modfl" in
10885$define$define)
10886 $cat <<EOM
10887Checking to see whether your modfl() is okay for large values...
10888EOM
10889$cat >try.c <<EOCP
10890#include <math.h>
10891#include <stdio.h>
10892int main() {
10893 long double nv = 4294967303.15;
10894 long double v, w;
10895 v = modfl(nv, &w);
10896#ifdef __GLIBC__
10897 printf("glibc");
10898#endif
10899 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10900 return 0;
10901}
10902EOCP
10903 case "$osname:$gccversion" in
10904 aix:) saveccflags="$ccflags"
10905 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10906 esac
10907 set try
10908 if eval $compile; then
10909 foo=`$run ./try`
10910 case "$foo" in
10911 *" 4294967303.150000 1.150000 4294967302.000000")
10912 echo >&4 "Your modfl() is broken for large values."
10913 d_modfl_pow32_bug="$define"
10914 case "$foo" in
10915 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10916 ;;
10917 esac
10918 ;;
10919 *" 4294967303.150000 0.150000 4294967303.000000")
10920 echo >&4 "Your modfl() seems okay for large values."
10921 ;;
10922 *) echo >&4 "I don't understand your modfl() at all."
10923 d_modfl="$undef"
10924 ;;
10925 esac
10926 $rm -f try.* try core core.try.*
10927 else
10928 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10929 d_modfl="$undef"
10930 fi
10931 case "$osname:$gccversion" in
10932 aix:) ccflags="$saveccflags" ;; # restore
10933 esac
10934 ;;
10935esac
10936
10937: see if mprotect exists
10938set mprotect d_mprotect
10939eval $inlibc
10940
10941: see if msgctl exists
10942set msgctl d_msgctl
10943eval $inlibc
10944
10945: see if msgget exists
10946set msgget d_msgget
10947eval $inlibc
10948
10949: see if msgsnd exists
10950set msgsnd d_msgsnd
10951eval $inlibc
10952
10953: see if msgrcv exists
10954set msgrcv d_msgrcv
10955eval $inlibc
10956
10957: see how much of the 'msg*(2)' library is present.
10958h_msg=true
10959echo " "
10960case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10961*"$undef"*) h_msg=false;;
10962esac
10963case "$osname" in
10964freebsd)
10965 case "`ipcs 2>&1`" in
10966 "SVID messages"*"not configured"*)
10967 echo "Your $osname does not have the msg*(2) configured." >&4
10968 h_msg=false
10969 val="$undef"
10970 set msgctl d_msgctl
10971 eval $setvar
10972 set msgget d_msgget
10973 eval $setvar
10974 set msgsnd d_msgsnd
10975 eval $setvar
10976 set msgrcv d_msgrcv
10977 eval $setvar
10978 ;;
10979 esac
10980 ;;
10981esac
10982: we could also check for sys/ipc.h ...
10983if $h_msg && $test `./findhdr sys/msg.h`; then
10984 echo "You have the full msg*(2) library." >&4
10985 val="$define"
10986else
10987 echo "You don't have the full msg*(2) library." >&4
10988 val="$undef"
10989fi
10990set d_msg
10991eval $setvar
10992
10993
10994echo " "
10995echo "Checking to see if your system supports struct msghdr..." >&4
10996set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10997eval $hasstruct
10998case "$d_msghdr_s" in
10999"$define") echo "Yes, it does." ;;
11000*) echo "No, it doesn't." ;;
11001esac
11002
11003
11004: see if msync exists
11005set msync d_msync
11006eval $inlibc
11007
11008: see if munmap exists
11009set munmap d_munmap
11010eval $inlibc
11011
11012: see if nice exists
11013set nice d_nice
11014eval $inlibc
11015
11016: see if this is a langinfo.h system
11017set langinfo.h i_langinfo
11018eval $inhdr
11019
11020: see if nl_langinfo exists
11021set nl_langinfo d_nl_langinfo
11022eval $inlibc
11023
11024: check for length of character
11025echo " "
11026case "$charsize" in
11027'')
11028 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11029 $cat >try.c <<'EOCP'
11030#include <stdio.h>
11031int main()
11032{
11033 printf("%d\n", (int)sizeof(char));
11034 exit(0);
11035}
11036EOCP
11037 set try
11038 if eval $compile_ok; then
11039 dflt=`$run ./try`
11040 else
11041 dflt='1'
11042 echo "(I can't seem to compile the test program. Guessing...)"
11043 fi
11044 ;;
11045*)
11046 dflt="$charsize"
11047 ;;
11048esac
11049rp="What is the size of a character (in bytes)?"
11050. ./myread
11051charsize="$ans"
11052$rm -f try.c try
11053
11054: check for volatile keyword
11055echo " "
11056echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11057$cat >try.c <<'EOCP'
11058int main()
11059{
11060 typedef struct _goo_struct goo_struct;
11061 goo_struct * volatile goo = ((goo_struct *)0);
11062 struct _goo_struct {
11063 long long_int;
11064 int reg_int;
11065 char char_var;
11066 };
11067 typedef unsigned short foo_t;
11068 char *volatile foo;
11069 volatile int bar;
11070 volatile foo_t blech;
11071 foo = foo;
11072}
11073EOCP
11074if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11075 val="$define"
11076 echo "Yup, it does."
11077else
11078 val="$undef"
11079 echo "Nope, it doesn't."
11080fi
11081set d_volatile
11082eval $setvar
11083$rm -f try.*
11084
11085
11086echo " "
11087$echo "Choosing the C types to be used for Perl's internal types..." >&4
11088
11089case "$use64bitint:$d_quad:$quadtype" in
11090define:define:?*)
11091 ivtype="$quadtype"
11092 uvtype="$uquadtype"
11093 ivsize=8
11094 uvsize=8
11095 ;;
11096*) ivtype="long"
11097 uvtype="unsigned long"
11098 ivsize=$longsize
11099 uvsize=$longsize
11100 ;;
11101esac
11102
11103case "$uselongdouble:$d_longdbl" in
11104define:define)
11105 nvtype="long double"
11106 nvsize=$longdblsize
11107 ;;
11108*) nvtype=double
11109 nvsize=$doublesize
11110 ;;
11111esac
11112
11113$echo "(IV will be "$ivtype", $ivsize bytes)"
11114$echo "(UV will be "$uvtype", $uvsize bytes)"
11115$echo "(NV will be "$nvtype", $nvsize bytes)"
11116
11117$cat >try.c <<EOCP
11118#$i_inttypes I_INTTYPES
11119#ifdef I_INTTYPES
11120#include <inttypes.h>
11121#endif
11122#include <stdio.h>
11123int main() {
11124#ifdef INT8
11125 int8_t i = INT8_MAX;
11126 uint8_t u = UINT8_MAX;
11127 printf("int8_t\n");
11128#endif
11129#ifdef INT16
11130 int16_t i = INT16_MAX;
11131 uint16_t i = UINT16_MAX;
11132 printf("int16_t\n");
11133#endif
11134#ifdef INT32
11135 int32_t i = INT32_MAX;
11136 uint32_t u = UINT32_MAX;
11137 printf("int32_t\n");
11138#endif
11139}
11140EOCP
11141
11142case "$i8type" in
11143'') case "$charsize" in
11144 1) i8type=char
11145 u8type="unsigned char"
11146 i8size=$charsize
11147 u8size=$charsize
11148 ;;
11149 esac
11150 ;;
11151esac
11152case "$i8type" in
11153'') set try -DINT8
11154 if eval $compile; then
11155 case "`$run ./try`" in
11156 int8_t) i8type=int8_t
11157 u8type=uint8_t
11158 i8size=1
11159 u8size=1
11160 ;;
11161 esac
11162 fi
11163 ;;
11164esac
11165case "$i8type" in
11166'') if $test $charsize -ge 1; then
11167 i8type=char
11168 u8type="unsigned char"
11169 i8size=$charsize
11170 u8size=$charsize
11171 fi
11172 ;;
11173esac
11174
11175case "$i16type" in
11176'') case "$shortsize" in
11177 2) i16type=short
11178 u16type="unsigned short"
11179 i16size=$shortsize
11180 u16size=$shortsize
11181 ;;
11182 esac
11183 ;;
11184esac
11185case "$i16type" in
11186'') set try -DINT16
11187 if eval $compile; then
11188 case "`$run ./try`" in
11189 int16_t)
11190 i16type=int16_t
11191 u16type=uint16_t
11192 i16size=2
11193 u16size=2
11194 ;;
11195 esac
11196 fi
11197 ;;
11198esac
11199case "$i16type" in
11200'') if $test $shortsize -ge 2; then
11201 i16type=short
11202 u16type="unsigned short"
11203 i16size=$shortsize
11204 u16size=$shortsize
11205 fi
11206 ;;
11207esac
11208
11209case "$i32type" in
11210'') case "$longsize" in
11211 4) i32type=long
11212 u32type="unsigned long"
11213 i32size=$longsize
11214 u32size=$longsize
11215 ;;
11216 *) case "$intsize" in
11217 4) i32type=int
11218 u32type="unsigned int"
11219 i32size=$intsize
11220 u32size=$intsize
11221 ;;
11222 esac
11223 ;;
11224 esac
11225 ;;
11226esac
11227case "$i32type" in
11228'') set try -DINT32
11229 if eval $compile; then
11230 case "`$run ./try`" in
11231 int32_t)
11232 i32type=int32_t
11233 u32type=uint32_t
11234 i32size=4
11235 u32size=4
11236 ;;
11237 esac
11238 fi
11239 ;;
11240esac
11241case "$i32type" in
11242'') if $test $intsize -ge 4; then
11243 i32type=int
11244 u32type="unsigned int"
11245 i32size=$intsize
11246 u32size=$intsize
11247 fi
11248 ;;
11249esac
11250
11251case "$i64type" in
11252'') case "$d_quad:$quadtype" in
11253 define:?*)
11254 i64type="$quadtype"
11255 u64type="$uquadtype"
11256 i64size=8
11257 u64size=8
11258 ;;
11259 esac
11260 ;;
11261esac
11262
11263$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11264: volatile so that the compiler has to store it out to memory.
11265if test X"$d_volatile" = X"$define"; then
11266 volatile=volatile
11267fi
11268$cat <<EOP >try.c
11269#include <stdio.h>
11270#include <sys/types.h>
11271#include <signal.h>
11272#ifdef SIGFPE
11273$volatile int bletched = 0;
11274$signal_t blech(s) int s; { bletched = 1; }
11275#endif
11276int main() {
11277 $uvtype u = 0;
11278 $nvtype d;
11279 int n = 8 * $uvsize;
11280 int i;
11281#ifdef SIGFPE
11282 signal(SIGFPE, blech);
11283#endif
11284
11285 for (i = 0; i < n; i++) {
11286 u = u << 1 | ($uvtype)1;
11287 d = ($nvtype)u;
11288 if (($uvtype)d != u)
11289 break;
11290 if (d <= 0)
11291 break;
11292 d = ($nvtype)(u - 1);
11293 if (($uvtype)d != (u - 1))
11294 break;
11295#ifdef SIGFPE
11296 if (bletched) {
11297 break;
11298#endif
11299 }
11300 }
11301 printf("%d\n", ((i == n) ? -n : i));
11302 exit(0);
11303}
11304EOP
11305set try
11306
11307d_nv_preserves_uv="$undef"
11308if eval $compile; then
11309 d_nv_preserves_uv_bits="`$run ./try`"
11310fi
11311case "$d_nv_preserves_uv_bits" in
11312\-[1-9]*)
11313 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11314 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11315 d_nv_preserves_uv="$define"
11316 ;;
11317[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11318 d_nv_preserves_uv="$undef" ;;
11319*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11320 d_nv_preserves_uv_bits="$undef" ;;
11321esac
11322
11323$rm -f try.* try
11324
11325
11326: check for off64_t
11327echo " "
11328echo "Checking to see if you have off64_t..." >&4
11329$cat >try.c <<EOCP
11330#include <sys/types.h>
11331#include <unistd.h>
11332int main() { off64_t x = 7; }
11333EOCP
11334set try
11335if eval $compile; then
11336 val="$define"
11337 echo "You have off64_t."
11338else
11339 val="$undef"
11340 echo "You do not have off64_t."
11341 case "$lseeksize" in
11342 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11343 esac
11344fi
11345$rm -f try.* try
11346set d_off64_t
11347eval $setvar
11348
11349: see if POSIX threads are available
11350set pthread.h i_pthread
11351eval $inhdr
11352
11353
11354
11355
11356: how to create joinable pthreads
11357if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11358 echo " "
11359 echo "Checking what constant to use for creating joinable pthreads..." >&4
11360 $cat >try.c <<'EOCP'
11361#include <pthread.h>
11362int main() {
11363 int detachstate = JOINABLE;
11364}
11365EOCP
11366 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11367 if eval $compile; then
11368 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11369 val="$undef" # Yes, undef.
11370 set d_old_pthread_create_joinable
11371 eval $setvar
11372 val=""
11373 set old_pthread_create_joinable
11374 eval $setvar
11375 else
11376 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11377 if eval $compile; then
11378 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11379 val="$define"
11380 set d_old_pthread_create_joinable
11381 eval $setvar
11382 val=PTHREAD_CREATE_UNDETACHED
11383 set old_pthread_create_joinable
11384 eval $setvar
11385 else
11386 set try -DJOINABLE=__UNDETACHED
11387 if eval $compile; then
11388 echo "You seem to use __UNDETACHED." >&4
11389 val="$define"
11390 set d_old_pthread_create_joinable
11391 eval $setvar
11392 val=__UNDETACHED
11393 set old_pthread_create_joinable
11394 eval $setvar
11395 else
11396 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11397 val="$define"
11398 set d_old_pthread_create_joinable
11399 eval $setvar
11400 val=0
11401 set old_pthread_create_joinable
11402 eval $setvar
11403 fi
11404 fi
11405 fi
11406 $rm -f try try.*
11407else
11408 d_old_pthread_create_joinable="$undef"
11409 old_pthread_create_joinable=""
11410fi
11411
11412: see if pause exists
11413set pause d_pause
11414eval $inlibc
11415
11416: see if pipe exists
11417set pipe d_pipe
11418eval $inlibc
11419
11420: see if poll exists
11421set poll d_poll
11422eval $inlibc
11423
11424: see if pthread_atfork exists
11425set pthread_atfork d_pthread_atfork
11426eval $inlibc
11427
11428
11429: see whether the various POSIXish _yields exist
11430$cat >try.c <<EOP
11431#include <pthread.h>
11432#include <stdio.h>
11433int main() {
11434#ifdef SCHED_YIELD
11435 sched_yield();
11436#else
11437#ifdef PTHREAD_YIELD
11438 pthread_yield();
11439#else
11440#ifdef PTHREAD_YIELD_NULL
11441 pthread_yield(NULL);
11442#endif
11443#endif
11444#endif
11445}
11446EOP
11447: see if sched_yield exists
11448set try -DSCHED_YIELD
11449if eval $compile; then
11450 val="$define"
11451 sched_yield='sched_yield()'
11452else
11453 val="$undef"
11454fi
11455case "$usethreads" in
11456$define)
11457 case "$val" in
11458 $define) echo 'sched_yield() found.' >&4 ;;
11459 *) echo 'sched_yield() NOT found.' >&4 ;;
11460 esac
11461esac
11462set d_sched_yield
11463eval $setvar
11464
11465: see if pthread_yield exists
11466set try -DPTHREAD_YIELD
11467if eval $compile; then
11468 val="$define"
11469 case "$sched_yield" in
11470 '') sched_yield='pthread_yield()' ;;
11471 esac
11472else
11473 set try -DPTHREAD_YIELD_NULL
11474 if eval $compile; then
11475 val="$define"
11476 case "$sched_yield" in
11477 '') sched_yield='pthread_yield(NULL)' ;;
11478 esac
11479 else
11480 val="$undef"
11481 fi
11482fi
11483case "$usethreads" in
11484$define)
11485 case "$val" in
11486 $define) echo 'pthread_yield() found.' >&4 ;;
11487 *) echo 'pthread_yield() NOT found.' >&4 ;;
11488 esac
11489 ;;
11490esac
11491set d_pthread_yield
11492eval $setvar
11493
11494case "$sched_yield" in
11495'') sched_yield=undef ;;
11496esac
11497
11498$rm -f try try.*
11499
11500: see if this is a pwd.h system
11501set pwd.h i_pwd
11502eval $inhdr
11503
11504case "$i_pwd" in
11505$define)
11506 xxx=`./findhdr pwd.h`
11507 $cppstdin $cppflags $cppminus < $xxx >$$.h
11508
11509 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11510 val="$define"
11511 else
11512 val="$undef"
11513 fi
11514 set d_pwquota
11515 eval $setvar
11516
11517 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11518 val="$define"
11519 else
11520 val="$undef"
11521 fi
11522 set d_pwage
11523 eval $setvar
11524
11525 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11526 val="$define"
11527 else
11528 val="$undef"
11529 fi
11530 set d_pwchange
11531 eval $setvar
11532
11533 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11534 val="$define"
11535 else
11536 val="$undef"
11537 fi
11538 set d_pwclass
11539 eval $setvar
11540
11541 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11542 val="$define"
11543 else
11544 val="$undef"
11545 fi
11546 set d_pwexpire
11547 eval $setvar
11548
11549 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11550 val="$define"
11551 else
11552 val="$undef"
11553 fi
11554 set d_pwcomment
11555 eval $setvar
11556
11557 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11558 val="$define"
11559 else
11560 val="$undef"
11561 fi
11562 set d_pwgecos
11563 eval $setvar
11564
11565 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11566 val="$define"
11567 else
11568 val="$undef"
11569 fi
11570 set d_pwpasswd
11571 eval $setvar
11572
11573 $rm -f $$.h
11574 ;;
11575*)
11576 val="$undef";
11577 set d_pwquota; eval $setvar
11578 set d_pwage; eval $setvar
11579 set d_pwchange; eval $setvar
11580 set d_pwclass; eval $setvar
11581 set d_pwexpire; eval $setvar
11582 set d_pwcomment; eval $setvar
11583 set d_pwgecos; eval $setvar
11584 set d_pwpasswd; eval $setvar
11585 ;;
11586esac
11587
11588: see if readdir and friends exist
11589set readdir d_readdir
11590eval $inlibc
11591set seekdir d_seekdir
11592eval $inlibc
11593set telldir d_telldir
11594eval $inlibc
11595set rewinddir d_rewinddir
11596eval $inlibc
11597
11598: see if readlink exists
11599set readlink d_readlink
11600eval $inlibc
11601
11602: see if readv exists
11603set readv d_readv
11604eval $inlibc
11605
11606: see if recvmsg exists
11607set recvmsg d_recvmsg
11608eval $inlibc
11609
11610: see if rename exists
11611set rename d_rename
11612eval $inlibc
11613
11614: see if rmdir exists
11615set rmdir d_rmdir
11616eval $inlibc
11617
11618: see if memory.h is available.
11619val=''
11620set memory.h val
11621eval $inhdr
11622
11623: See if it conflicts with string.h
11624case "$val" in
11625$define)
11626 case "$strings" in
11627 '') ;;
11628 *)
11629 $cppstdin $cppflags $cppminus < $strings > mem.h
11630 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11631 echo " "
11632 echo "We won't be including <memory.h>."
11633 val="$undef"
11634 fi
11635 $rm -f mem.h
11636 ;;
11637 esac
11638esac
11639set i_memory
11640eval $setvar
11641
11642: can bcopy handle overlapping blocks?
11643echo " "
11644val="$undef"
11645case "$d_memmove" in
11646"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11647*) case "$d_bcopy" in
11648 "$define")
11649 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11650 $cat >try.c <<EOCP
11651#$i_memory I_MEMORY
11652#$i_stdlib I_STDLIB
11653#$i_string I_STRING
11654#$i_unistd I_UNISTD
11655EOCP
11656 $cat >>try.c <<'EOCP'
11657#include <stdio.h>
11658#ifdef I_MEMORY
11659# include <memory.h>
11660#endif
11661#ifdef I_STDLIB
11662# include <stdlib.h>
11663#endif
11664#ifdef I_STRING
11665# include <string.h>
11666#else
11667# include <strings.h>
11668#endif
11669#ifdef I_UNISTD
11670# include <unistd.h> /* Needed for NetBSD */
11671#endif
11672int main()
11673{
11674char buf[128], abc[128];
11675char *b;
11676int len;
11677int off;
11678int align;
11679
11680/* Copy "abcde..." string to char abc[] so that gcc doesn't
11681 try to store the string in read-only memory. */
11682bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11683
11684for (align = 7; align >= 0; align--) {
11685 for (len = 36; len; len--) {
11686 b = buf+align;
11687 bcopy(abc, b, len);
11688 for (off = 1; off <= len; off++) {
11689 bcopy(b, b+off, len);
11690 bcopy(b+off, b, len);
11691 if (bcmp(b, abc, len))
11692 exit(1);
11693 }
11694 }
11695}
11696exit(0);
11697}
11698EOCP
11699 set try
11700 if eval $compile_ok; then
11701 if ./try 2>/dev/null; then
11702 echo "Yes, it can."
11703 val="$define"
11704 else
11705 echo "It can't, sorry."
11706 fi
11707 else
11708 echo "(I can't compile the test program, so we'll assume not...)"
11709 fi
11710 ;;
11711 esac
11712 $rm -f try.* try core
11713 ;;
11714esac
11715set d_safebcpy
11716eval $setvar
11717
11718: can memcpy handle overlapping blocks?
11719echo " "
11720val="$undef"
11721case "$d_memmove" in
11722"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11723*) case "$d_memcpy" in
11724 "$define")
11725 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11726 $cat >try.c <<EOCP
11727#$i_memory I_MEMORY
11728#$i_stdlib I_STDLIB
11729#$i_string I_STRING
11730#$i_unistd I_UNISTD
11731EOCP
11732 $cat >>try.c <<'EOCP'
11733#include <stdio.h>
11734#ifdef I_MEMORY
11735# include <memory.h>
11736#endif
11737#ifdef I_STDLIB
11738# include <stdlib.h>
11739#endif
11740#ifdef I_STRING
11741# include <string.h>
11742#else
11743# include <strings.h>
11744#endif
11745#ifdef I_UNISTD
11746# include <unistd.h> /* Needed for NetBSD */
11747#endif
11748int main()
11749{
11750char buf[128], abc[128];
11751char *b;
11752int len;
11753int off;
11754int align;
11755
11756/* Copy "abcde..." string to char abc[] so that gcc doesn't
11757 try to store the string in read-only memory. */
11758memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11759
11760for (align = 7; align >= 0; align--) {
11761 for (len = 36; len; len--) {
11762 b = buf+align;
11763 memcpy(b, abc, len);
11764 for (off = 1; off <= len; off++) {
11765 memcpy(b+off, b, len);
11766 memcpy(b, b+off, len);
11767 if (memcmp(b, abc, len))
11768 exit(1);
11769 }
11770 }
11771}
11772exit(0);
11773}
11774EOCP
11775 set try
11776 if eval $compile_ok; then
11777 if ./try 2>/dev/null; then
11778 echo "Yes, it can."
11779 val="$define"
11780 else
11781 echo "It can't, sorry."
11782 fi
11783 else
11784 echo "(I can't compile the test program, so we'll assume not...)"
11785 fi
11786 ;;
11787 esac
11788 $rm -f try.* try core
11789 ;;
11790esac
11791set d_safemcpy
11792eval $setvar
11793
11794: can memcmp be trusted to compare relative magnitude?
11795val="$undef"
11796case "$d_memcmp" in
11797"$define")
11798 echo " "
11799 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11800 $cat >try.c <<EOCP
11801#$i_memory I_MEMORY
11802#$i_stdlib I_STDLIB
11803#$i_string I_STRING
11804#$i_unistd I_UNISTD
11805EOCP
11806 $cat >>try.c <<'EOCP'
11807#include <stdio.h>
11808#ifdef I_MEMORY
11809# include <memory.h>
11810#endif
11811#ifdef I_STDLIB
11812# include <stdlib.h>
11813#endif
11814#ifdef I_STRING
11815# include <string.h>
11816#else
11817# include <strings.h>
11818#endif
11819#ifdef I_UNISTD
11820# include <unistd.h> /* Needed for NetBSD */
11821#endif
11822int main()
11823{
11824char a = -1;
11825char b = 0;
11826if ((a < b) && memcmp(&a, &b, 1) < 0)
11827 exit(1);
11828exit(0);
11829}
11830EOCP
11831 set try
11832 if eval $compile_ok; then
11833 if $run ./try 2>/dev/null; then
11834 echo "Yes, it can."
11835 val="$define"
11836 else
11837 echo "No, it can't (it uses signed chars)."
11838 fi
11839 else
11840 echo "(I can't compile the test program, so we'll assume not...)"
11841 fi
11842 ;;
11843esac
11844$rm -f try.* try core
11845set d_sanemcmp
11846eval $setvar
11847
11848: see if prototype for sbrk is available
11849echo " "
11850set d_sbrkproto sbrk $i_unistd unistd.h
11851eval $hasproto
11852
11853: see if select exists
11854set select d_select
11855eval $inlibc
11856
11857: see if semctl exists
11858set semctl d_semctl
11859eval $inlibc
11860
11861: see if semget exists
11862set semget d_semget
11863eval $inlibc
11864
11865: see if semop exists
11866set semop d_semop
11867eval $inlibc
11868
11869: see how much of the 'sem*(2)' library is present.
11870h_sem=true
11871echo " "
11872case "$d_semctl$d_semget$d_semop" in
11873*"$undef"*) h_sem=false;;
11874esac
11875case "$osname" in
11876freebsd)
11877 case "`ipcs 2>&1`" in
11878 "SVID messages"*"not configured"*)
11879 echo "Your $osname does not have the sem*(2) configured." >&4
11880 h_sem=false
11881 val="$undef"
11882 set semctl d_semctl
11883 eval $setvar
11884 set semget d_semget
11885 eval $setvar
11886 set semop d_semop
11887 eval $setvar
11888 ;;
11889 esac
11890 ;;
11891esac
11892: we could also check for sys/ipc.h ...
11893if $h_sem && $test `./findhdr sys/sem.h`; then
11894 echo "You have the full sem*(2) library." >&4
11895 val="$define"
11896else
11897 echo "You don't have the full sem*(2) library." >&4
11898 val="$undef"
11899fi
11900set d_sem
11901eval $setvar
11902
11903: see whether sys/sem.h defines union semun
11904echo " "
11905$cat > try.c <<'END'
11906#include <sys/types.h>
11907#include <sys/ipc.h>
11908#include <sys/sem.h>
11909int main () { union semun semun; semun.buf = 0; }
11910END
11911set try
11912if eval $compile; then
11913 echo "You have union semun in <sys/sem.h>." >&4
11914 val="$define"
11915else
11916 echo "You do not have union semun in <sys/sem.h>." >&4
11917 val="$undef"
11918fi
11919$rm -f try try.c try.h
11920set d_union_semun
11921eval $setvar
11922
11923: see how to do semctl IPC_STAT
11924case "$d_sem" in
11925$define)
11926 : see whether semctl IPC_STAT can use union semun
11927 echo " "
11928 $cat > try.h <<END
11929#ifndef S_IRUSR
11930# ifdef S_IREAD
11931# define S_IRUSR S_IREAD
11932# define S_IWUSR S_IWRITE
11933# define S_IXUSR S_IEXEC
11934# else
11935# define S_IRUSR 0400
11936# define S_IWUSR 0200
11937# define S_IXUSR 0100
11938# endif
11939# define S_IRGRP (S_IRUSR>>3)
11940# define S_IWGRP (S_IWUSR>>3)
11941# define S_IXGRP (S_IXUSR>>3)
11942# define S_IROTH (S_IRUSR>>6)
11943# define S_IWOTH (S_IWUSR>>6)
11944# define S_IXOTH (S_IXUSR>>6)
11945#endif
11946#ifndef S_IRWXU
11947# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11948# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11949# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11950#endif
11951END
11952
11953 $cat > try.c <<END
11954#include <sys/types.h>
11955#include <sys/ipc.h>
11956#include <sys/sem.h>
11957#include <sys/stat.h>
11958#include <stdio.h>
11959#include <errno.h>
11960#include "try.h"
11961#ifndef errno
11962extern int errno;
11963#endif
11964#$d_union_semun HAS_UNION_SEMUN
11965int main() {
11966 union semun
11967#ifndef HAS_UNION_SEMUN
11968 {
11969 int val;
11970 struct semid_ds *buf;
11971 unsigned short *array;
11972 }
11973#endif
11974 arg;
11975 int sem, st;
11976
11977#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11978 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11979 if (sem > -1) {
11980 struct semid_ds argbuf;
11981 arg.buf = &argbuf;
11982# ifdef IPC_STAT
11983 st = semctl(sem, 0, IPC_STAT, arg);
11984 if (st == 0)
11985 printf("semun\n");
11986 else
11987# endif /* IPC_STAT */
11988 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11989# ifdef IPC_RMID
11990 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11991# endif /* IPC_RMID */
11992 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11993 } else
11994#endif /* IPC_PRIVATE && ... */
11995 printf("semget failed: errno = %d\n", errno);
11996 return 0;
11997}
11998END
11999 val="$undef"
12000 set try
12001 if eval $compile; then
12002 xxx=`$run ./try`
12003 case "$xxx" in
12004 semun) val="$define" ;;
12005 esac
12006 fi
12007 $rm -f try try.c
12008 set d_semctl_semun
12009 eval $setvar
12010 case "$d_semctl_semun" in
12011 $define)
12012 echo "You can use union semun for semctl IPC_STAT." >&4
12013 also='also'
12014 ;;
12015 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12016 also=''
12017 ;;
12018 esac
12019
12020 : see whether semctl IPC_STAT can use struct semid_ds pointer
12021 $cat > try.c <<'END'
12022#include <sys/types.h>
12023#include <sys/ipc.h>
12024#include <sys/sem.h>
12025#include <sys/stat.h>
12026#include "try.h"
12027#include <stdio.h>
12028#include <errno.h>
12029#ifndef errno
12030extern int errno;
12031#endif
12032int main() {
12033 struct semid_ds arg;
12034 int sem, st;
12035
12036#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12037 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12038 if (sem > -1) {
12039# ifdef IPC_STAT
12040 st = semctl(sem, 0, IPC_STAT, &arg);
12041 if (st == 0)
12042 printf("semid_ds\n");
12043 else
12044# endif /* IPC_STAT */
12045 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12046# ifdef IPC_RMID
12047 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12048# endif /* IPC_RMID */
12049 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12050 } else
12051#endif /* IPC_PRIVATE && ... */
12052 printf("semget failed: errno = %d\n", errno);
12053
12054 return 0;
12055}
12056END
12057 val="$undef"
12058 set try
12059 if eval $compile; then
12060 xxx=`$run ./try`
12061 case "$xxx" in
12062 semid_ds) val="$define" ;;
12063 esac
12064 fi
12065 $rm -f try try.c
12066 set d_semctl_semid_ds
12067 eval $setvar
12068 case "$d_semctl_semid_ds" in
12069 $define)
12070 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12071 ;;
12072 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12073 ;;
12074 esac
12075 $rm -f try.h
12076 ;;
12077*) val="$undef"
12078
12079 # We do not have the full sem*(2) library, so assume we can not
12080 # use either.
12081
12082 set d_semctl_semun
12083 eval $setvar
12084
12085 set d_semctl_semid_ds
12086 eval $setvar
12087 ;;
12088esac
12089
12090: see if sendmsg exists
12091set sendmsg d_sendmsg
12092eval $inlibc
12093
12094: see if setegid exists
12095set setegid d_setegid
12096eval $inlibc
12097
12098: see if seteuid exists
12099set seteuid d_seteuid
12100eval $inlibc
12101
12102: see if setgrent exists
12103set setgrent d_setgrent
12104eval $inlibc
12105
12106: see if sethostent exists
12107set sethostent d_sethent
12108eval $inlibc
12109
12110: see if setitimer exists
12111set setitimer d_setitimer
12112eval $inlibc
12113
12114: see if setlinebuf exists
12115set setlinebuf d_setlinebuf
12116eval $inlibc
12117
12118: see if setlocale exists
12119set setlocale d_setlocale
12120eval $inlibc
12121
12122: see if setnetent exists
12123set setnetent d_setnent
12124eval $inlibc
12125
12126: see if setprotoent exists
12127set setprotoent d_setpent
12128eval $inlibc
12129
12130: see if setpgid exists
12131set setpgid d_setpgid
12132eval $inlibc
12133
12134: see if setpgrp2 exists
12135set setpgrp2 d_setpgrp2
12136eval $inlibc
12137
12138: see if setpriority exists
12139set setpriority d_setprior
12140eval $inlibc
12141
12142: see if setproctitle exists
12143set setproctitle d_setproctitle
12144eval $inlibc
12145
12146: see if setpwent exists
12147set setpwent d_setpwent
12148eval $inlibc
12149
12150: see if setregid exists
12151set setregid d_setregid
12152eval $inlibc
12153set setresgid d_setresgid
12154eval $inlibc
12155
12156: see if setreuid exists
12157set setreuid d_setreuid
12158eval $inlibc
12159set setresuid d_setresuid
12160eval $inlibc
12161
12162: see if setrgid exists
12163set setrgid d_setrgid
12164eval $inlibc
12165
12166: see if setruid exists
12167set setruid d_setruid
12168eval $inlibc
12169
12170: see if setservent exists
12171set setservent d_setsent
12172eval $inlibc
12173
12174: see if setsid exists
12175set setsid d_setsid
12176eval $inlibc
12177
12178: see if setvbuf exists
12179set setvbuf d_setvbuf
12180eval $inlibc
12181
12182: see if sfio.h is available
12183set sfio.h i_sfio
12184eval $inhdr
12185
12186
12187: see if sfio library is available
12188case "$i_sfio" in
12189$define)
12190 val=''
12191 set sfreserve val
12192 eval $inlibc
12193 ;;
12194*)
12195 val="$undef"
12196 ;;
12197esac
12198: Ok, but do we want to use it.
12199case "$val" in
12200$define)
12201 case "$usesfio" in
12202 true|$define|[yY]*) dflt='y';;
12203 *) dflt='n';;
12204 esac
12205 echo "$package can use the sfio library, but it is experimental."
12206 case "$useperlio" in
12207 "$undef")
12208 echo "For sfio also the PerlIO abstraction layer is needed."
12209 echo "Earlier you said you wouldn't want that."
12210 ;;
12211 esac
12212 rp="You seem to have sfio available, do you want to try using it?"
12213 . ./myread
12214 case "$ans" in
12215 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12216 useperlio="$define"
12217 val="$define"
12218 ;;
12219 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12220 val="$undef"
12221 ;;
12222 esac
12223 ;;
12224*) case "$usesfio" in
12225 true|$define|[yY]*)
12226 echo "Sorry, cannot find sfio on this machine." >&4
12227 echo "Ignoring your setting of usesfio=$usesfio." >&4
12228 val="$undef"
12229 ;;
12230 esac
12231 ;;
12232esac
12233set d_sfio
12234eval $setvar
12235case "$d_sfio" in
12236$define) usesfio='true';;
12237*) usesfio='false';;
12238esac
12239case "$d_sfio" in
12240$define) ;;
12241*) : Remove sfio from list of libraries to use
12242 case "$libs" in
12243 *-lsfio*)
12244 echo "Removing unneeded -lsfio from library list" >&4
12245 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12246 shift
12247 libs="$*"
12248 echo "libs = $libs" >&4
12249 ;;
12250 esac
12251;;
12252esac
12253
12254
12255: see if shmctl exists
12256set shmctl d_shmctl
12257eval $inlibc
12258
12259: see if shmget exists
12260set shmget d_shmget
12261eval $inlibc
12262
12263: see if shmat exists
12264set shmat d_shmat
12265eval $inlibc
12266: see what shmat returns
12267case "$d_shmat" in
12268"$define")
12269 $cat >shmat.c <<'END'
12270#include <sys/shm.h>
12271void *shmat();
12272END
12273 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12274 shmattype='void *'
12275 else
12276 shmattype='char *'
12277 fi
12278 echo "and it returns ($shmattype)." >&4
12279 : see if a prototype for shmat is available
12280 xxx=`./findhdr sys/shm.h`
12281 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12282 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12283 val="$define"
12284 else
12285 val="$undef"
12286 fi
12287 $rm -f shmat.[co]
12288 ;;
12289*)
12290 val="$undef"
12291 ;;
12292esac
12293set d_shmatprototype
12294eval $setvar
12295
12296: see if shmdt exists
12297set shmdt d_shmdt
12298eval $inlibc
12299
12300: see how much of the 'shm*(2)' library is present.
12301h_shm=true
12302echo " "
12303case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12304*"$undef"*) h_shm=false;;
12305esac
12306case "$osname" in
12307freebsd)
12308 case "`ipcs 2>&1`" in
12309 "SVID shared memory"*"not configured"*)
12310 echo "Your $osname does not have the shm*(2) configured." >&4
12311 h_shm=false
12312 val="$undef"
12313 set shmctl d_shmctl
12314 evat $setvar
12315 set shmget d_shmget
12316 evat $setvar
12317 set shmat d_shmat
12318 evat $setvar
12319 set shmdt d_shmdt
12320 evat $setvar
12321 ;;
12322 esac
12323 ;;
12324esac
12325: we could also check for sys/ipc.h ...
12326if $h_shm && $test `./findhdr sys/shm.h`; then
12327 echo "You have the full shm*(2) library." >&4
12328 val="$define"
12329else
12330 echo "You don't have the full shm*(2) library." >&4
12331 val="$undef"
12332fi
12333set d_shm
12334eval $setvar
12335
12336echo " "
12337: see if we have sigaction
12338if set sigaction val -f d_sigaction; eval $csym; $val; then
12339 echo 'sigaction() found.' >&4
12340 $cat > try.c <<'EOP'
12341#include <stdio.h>
12342#include <sys/types.h>
12343#include <signal.h>
12344int main()
12345{
12346 struct sigaction act, oact;
12347 act.sa_flags = 0;
12348 oact.sa_handler = 0;
12349 /* so that act and oact are used */
12350 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12351}
12352EOP
12353 set try
12354 if eval $compile_ok; then
12355 val="$define"
12356 else
12357 echo "But you don't seem to have a useable struct sigaction." >&4
12358 val="$undef"
12359 fi
12360else
12361 echo 'sigaction NOT found.' >&4
12362 val="$undef"
12363fi
12364set d_sigaction; eval $setvar
12365$rm -f try try$_o try.c
12366
12367: see if sigprocmask exists
12368set sigprocmask d_sigprocmask
12369eval $inlibc
12370
12371: see if sigsetjmp exists
12372echo " "
12373case "$d_sigsetjmp" in
12374'')
12375 $cat >try.c <<'EOP'
12376#include <setjmp.h>
12377sigjmp_buf env;
12378int set = 1;
12379int main()
12380{
12381 if (sigsetjmp(env,1))
12382 exit(set);
12383 set = 0;
12384 siglongjmp(env, 1);
12385 exit(1);
12386}
12387EOP
12388 set try
12389 if eval $compile; then
12390 if $run ./try >/dev/null 2>&1; then
12391 echo "POSIX sigsetjmp found." >&4
12392 val="$define"
12393 else
12394 $cat >&4 <<EOM
12395Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12396I'll ignore them.
12397EOM
12398 val="$undef"
12399 fi
12400 else
12401 echo "sigsetjmp not found." >&4
12402 val="$undef"
12403 fi
12404 ;;
12405*) val="$d_sigsetjmp"
12406 case "$d_sigsetjmp" in
12407 $define) echo "POSIX sigsetjmp found." >&4;;
12408 $undef) echo "sigsetjmp not found." >&4;;
12409 esac
12410 ;;
12411esac
12412set d_sigsetjmp
12413eval $setvar
12414$rm -f try.c try
12415
12416: see if sockatmark exists
12417set sockatmark d_sockatmark
12418eval $inlibc
12419
12420: see if prototype for sockatmark is available
12421echo " "
12422set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12423eval $hasproto
12424
12425: see if socks5_init exists
12426set socks5_init d_socks5_init
12427eval $inlibc
12428
12429: see if prototype for setresgid is available
12430echo " "
12431set d_sresgproto setresgid $i_unistd unistd.h
12432eval $hasproto
12433
12434: see if prototype for setresuid is available
12435echo " "
12436set d_sresuproto setresuid $i_unistd unistd.h
12437eval $hasproto
12438
12439: see if sys/stat.h is available
12440set sys/stat.h i_sysstat
12441eval $inhdr
12442
12443
12444: see if stat knows about block sizes
12445echo " "
12446echo "Checking to see if your struct stat has st_blocks field..." >&4
12447set d_statblks stat st_blocks $i_sysstat sys/stat.h
12448eval $hasfield
12449
12450
12451: see if this is a sys/vfs.h system
12452set sys/vfs.h i_sysvfs
12453eval $inhdr
12454
12455
12456: see if this is a sys/statfs.h system
12457set sys/statfs.h i_sysstatfs
12458eval $inhdr
12459
12460
12461echo " "
12462echo "Checking to see if your system supports struct statfs..." >&4
12463set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
12464eval $hasstruct
12465case "$d_statfs_s" in
12466"$define") echo "Yes, it does." ;;
12467*) echo "No, it doesn't." ;;
12468esac
12469
12470
12471
12472: see if struct statfs knows about f_flags
12473case "$d_statfs_s" in
12474define)
12475 echo " "
12476 echo "Checking to see if your struct statfs has f_flags field..." >&4
12477 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
12478 eval $hasfield
12479 ;;
12480*) val="$undef"
12481 set d_statfs_f_flags
12482 eval $setvar
12483 ;;
12484esac
12485case "$d_statfs_f_flags" in
12486"$define") echo "Yes, it does." ;;
12487*) echo "No, it doesn't." ;;
12488esac
12489
12490: see if _ptr and _cnt from stdio act std
12491echo " "
12492
12493if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12494 echo "(Looks like you have stdio.h from BSD.)"
12495 case "$stdio_ptr" in
12496 '') stdio_ptr='((fp)->_p)'
12497 ptr_lval=$define
12498 ;;
12499 *) ptr_lval=$d_stdio_ptr_lval;;
12500 esac
12501 case "$stdio_cnt" in
12502 '') stdio_cnt='((fp)->_r)'
12503 cnt_lval=$define
12504 ;;
12505 *) cnt_lval=$d_stdio_cnt_lval;;
12506 esac
12507 case "$stdio_base" in
12508 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12509 esac
12510 case "$stdio_bufsiz" in
12511 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12512 esac
12513elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12514 echo "(Looks like you have stdio.h from Linux.)"
12515 case "$stdio_ptr" in
12516 '') stdio_ptr='((fp)->_IO_read_ptr)'
12517 ptr_lval=$define
12518 ;;
12519 *) ptr_lval=$d_stdio_ptr_lval;;
12520 esac
12521 case "$stdio_cnt" in
12522 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12523 cnt_lval=$undef
12524 ;;
12525 *) cnt_lval=$d_stdio_cnt_lval;;
12526 esac
12527 case "$stdio_base" in
12528 '') stdio_base='((fp)->_IO_read_base)';;
12529 esac
12530 case "$stdio_bufsiz" in
12531 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12532 esac
12533else
12534 case "$stdio_ptr" in
12535 '') stdio_ptr='((fp)->_ptr)'
12536 ptr_lval=$define
12537 ;;
12538 *) ptr_lval=$d_stdio_ptr_lval;;
12539 esac
12540 case "$stdio_cnt" in
12541 '') stdio_cnt='((fp)->_cnt)'
12542 cnt_lval=$define
12543 ;;
12544 *) cnt_lval=$d_stdio_cnt_lval;;
12545 esac
12546 case "$stdio_base" in
12547 '') stdio_base='((fp)->_base)';;
12548 esac
12549 case "$stdio_bufsiz" in
12550 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12551 esac
12552fi
12553
12554: test whether _ptr and _cnt really work
12555echo "Checking how std your stdio is..." >&4
12556$cat >try.c <<EOP
12557#include <stdio.h>
12558#define FILE_ptr(fp) $stdio_ptr
12559#define FILE_cnt(fp) $stdio_cnt
12560int main() {
12561 FILE *fp = fopen("try.c", "r");
12562 char c = getc(fp);
12563 if (
12564 18 <= FILE_cnt(fp) &&
12565 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12566 )
12567 exit(0);
12568 exit(1);
12569}
12570EOP
12571val="$undef"
12572set try
12573if eval $compile && $to try.c; then
12574 if $run ./try; then
12575 echo "Your stdio acts pretty std."
12576 val="$define"
12577 else
12578 echo "Your stdio isn't very std."
12579 fi
12580else
12581 echo "Your stdio doesn't appear very std."
12582fi
12583$rm -f try.c try
12584set d_stdstdio
12585eval $setvar
12586
12587: Can _ptr be used as an lvalue?
12588case "$d_stdstdio$ptr_lval" in
12589$define$define) val=$define ;;
12590*) val=$undef ;;
12591esac
12592set d_stdio_ptr_lval
12593eval $setvar
12594
12595: Can _cnt be used as an lvalue?
12596case "$d_stdstdio$cnt_lval" in
12597$define$define) val=$define ;;
12598*) val=$undef ;;
12599esac
12600set d_stdio_cnt_lval
12601eval $setvar
12602
12603
12604: test whether setting _ptr sets _cnt as a side effect
12605d_stdio_ptr_lval_sets_cnt="$undef"
12606d_stdio_ptr_lval_nochange_cnt="$undef"
12607case "$d_stdio_ptr_lval$d_stdstdio" in
12608$define$define)
12609 echo "Checking to see what happens if we set the stdio ptr..." >&4
12610$cat >try.c <<EOP
12611#include <stdio.h>
12612/* Can we scream? */
12613/* Eat dust sed :-) */
12614/* In the buffer space, no one can hear you scream. */
12615#define FILE_ptr(fp) $stdio_ptr
12616#define FILE_cnt(fp) $stdio_cnt
12617#include <sys/types.h>
12618int main() {
12619 FILE *fp = fopen("try.c", "r");
12620 int c;
12621 char *ptr;
12622 size_t cnt;
12623 if (!fp) {
12624 puts("Fail even to read");
12625 exit(1);
12626 }
12627 c = getc(fp); /* Read away the first # */
12628 if (c == EOF) {
12629 puts("Fail even to read");
12630 exit(1);
12631 }
12632 if (!(
12633 18 <= FILE_cnt(fp) &&
12634 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12635 )) {
12636 puts("Fail even to read");
12637 exit (1);
12638 }
12639 ptr = (char*) FILE_ptr(fp);
12640 cnt = (size_t)FILE_cnt(fp);
12641
12642 FILE_ptr(fp) += 42;
12643
12644 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12645 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12646 exit (1);
12647 }
12648 if (FILE_cnt(fp) <= 20) {
12649 printf ("Fail (<20 chars to test)");
12650 exit (1);
12651 }
12652 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12653 puts("Fail compare");
12654 exit (1);
12655 }
12656 if (cnt == FILE_cnt(fp)) {
12657 puts("Pass_unchanged");
12658 exit (0);
12659 }
12660 if (FILE_cnt(fp) == (cnt - 42)) {
12661 puts("Pass_changed");
12662 exit (0);
12663 }
12664 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12665 return 1;
12666
12667}
12668EOP
12669 set try
12670 if eval $compile && $to try.c; then
12671 case `$run ./try` in
12672 Pass_changed)
12673 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12674 d_stdio_ptr_lval_sets_cnt="$define" ;;
12675 Pass_unchanged)
12676 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12677 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12678 Fail*)
12679 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12680 *)
12681 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12682 esac
12683 else
12684 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12685 fi
12686 $rm -f try.c try
12687 ;;
12688esac
12689
12690: see if _base is also standard
12691val="$undef"
12692case "$d_stdstdio" in
12693$define)
12694 $cat >try.c <<EOP
12695#include <stdio.h>
12696#define FILE_base(fp) $stdio_base
12697#define FILE_bufsiz(fp) $stdio_bufsiz
12698int main() {
12699 FILE *fp = fopen("try.c", "r");
12700 char c = getc(fp);
12701 if (
12702 19 <= FILE_bufsiz(fp) &&
12703 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12704 )
12705 exit(0);
12706 exit(1);
12707}
12708EOP
12709 set try
12710 if eval $compile && $to try.c; then
12711 if $run ./try; then
12712 echo "And its _base field acts std."
12713 val="$define"
12714 else
12715 echo "But its _base field isn't std."
12716 fi
12717 else
12718 echo "However, it seems to be lacking the _base field."
12719 fi
12720 $rm -f try.c try
12721 ;;
12722esac
12723set d_stdiobase
12724eval $setvar
12725
12726$cat >&4 <<EOM
12727Checking how to access stdio streams by file descriptor number...
12728EOM
12729case "$stdio_stream_array" in
12730'') $cat >try.c <<EOCP
12731#include <stdio.h>
12732int main() {
12733 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12734 printf("yes\n");
12735}
12736EOCP
12737 for s in _iob __iob __sF
12738 do
12739 set try -DSTDIO_STREAM_ARRAY=$s
12740 if eval $compile; then
12741 case "`$run ./try`" in
12742 yes) stdio_stream_array=$s; break ;;
12743 esac
12744 fi
12745 done
12746 $rm -f try.* try$exe_ext
12747esac
12748case "$stdio_stream_array" in
12749'') $cat >&4 <<EOM
12750I can't figure out how to access stdio streams by file descriptor number.
12751EOM
12752 d_stdio_stream_array="$undef"
12753 ;;
12754*) $cat >&4 <<EOM
12755You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12756EOM
12757 d_stdio_stream_array="$define"
12758 ;;
12759esac
12760
12761: see if strcoll exists
12762set strcoll d_strcoll
12763eval $inlibc
12764
12765: check for structure copying
12766echo " "
12767echo "Checking to see if your C compiler can copy structs..." >&4
12768$cat >try.c <<'EOCP'
12769int main()
12770{
12771 struct blurfl {
12772 int dyick;
12773 } foo, bar;
12774
12775 foo = bar;
12776}
12777EOCP
12778if $cc -c try.c >/dev/null 2>&1 ; then
12779 val="$define"
12780 echo "Yup, it can."
12781else
12782 val="$undef"
12783 echo "Nope, it can't."
12784fi
12785set d_strctcpy
12786eval $setvar
12787$rm -f try.*
12788
12789: see if strerror and/or sys_errlist[] exist
12790echo " "
12791if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12792 if set strerror val -f d_strerror; eval $csym; $val; then
12793 echo 'strerror() found.' >&4
12794 d_strerror="$define"
12795 d_strerrm='strerror(e)'
12796 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12797 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12798 d_syserrlst="$define"
12799 else
12800 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12801 d_syserrlst="$undef"
12802 fi
12803 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12804 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12805 echo 'strerror() found in string header.' >&4
12806 d_strerror="$define"
12807 d_strerrm='strerror(e)'
12808 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12809 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12810 d_syserrlst="$define"
12811 else
12812 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12813 d_syserrlst="$undef"
12814 fi
12815 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12816 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12817 d_strerror="$undef"
12818 d_syserrlst="$define"
12819 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12820 else
12821 echo 'strerror() and sys_errlist[] NOT found.' >&4
12822 d_strerror="$undef"
12823 d_syserrlst="$undef"
12824 d_strerrm='"unknown"'
12825 fi
12826fi
12827
12828: see if strftime exists
12829set strftime d_strftime
12830eval $inlibc
12831
12832: see if strtod exists
12833set strtod d_strtod
12834eval $inlibc
12835
12836: see if strtol exists
12837set strtol d_strtol
12838eval $inlibc
12839
12840: see if strtold exists
12841set strtold d_strtold
12842eval $inlibc
12843
12844: see if strtoll exists
12845set strtoll d_strtoll
12846eval $inlibc
12847
12848case "$d_longlong-$d_strtoll" in
12849"$define-$define")
12850 $cat <<EOM
12851Checking whether your strtoll() works okay...
12852EOM
12853 $cat >try.c <<'EOCP'
12854#include <errno.h>
12855#ifdef __hpux
12856#define strtoll __strtoll
12857#endif
12858#ifdef __EMX__
12859#define strtoll _strtoll
12860#endif
12861#include <stdio.h>
12862extern long long int strtoll(char *s, char **, int);
12863static int bad = 0;
12864int check(char *s, long long ell, int een) {
12865 long long gll;
12866 errno = 0;
12867 gll = strtoll(s, 0, 10);
12868 if (!((gll == ell) && (errno == een)))
12869 bad++;
12870}
12871int main() {
12872 check(" 1", 1LL, 0);
12873 check(" 0", 0LL, 0);
12874 check("-1", -1LL, 0);
12875 check("-9223372036854775808", -9223372036854775808LL, 0);
12876 check("-9223372036854775808", -9223372036854775808LL, 0);
12877 check(" 9223372036854775807", 9223372036854775807LL, 0);
12878 check("-9223372036854775808", -9223372036854775808LL, 0);
12879 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12880 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12881 if (!bad)
12882 printf("ok\n");
12883}
12884EOCP
12885 set try
12886 if eval $compile; then
12887 yyy=`$run ./try`
12888 case "$yyy" in
12889 ok) echo "Your strtoll() seems to be working okay." ;;
12890 *) cat <<EOM >&4
12891Your strtoll() doesn't seem to be working okay.
12892EOM
12893 d_strtoll="$undef"
12894 ;;
12895 esac
12896 else
12897 echo "(I can't seem to compile the test program--assuming it doesn't)"
12898 d_strtoll="$undef"
12899 fi
12900 ;;
12901esac
12902
12903: see if strtoq exists
12904set strtoq d_strtoq
12905eval $inlibc
12906
12907: see if strtoul exists
12908set strtoul d_strtoul
12909eval $inlibc
12910
12911case "$d_strtoul" in
12912"$define")
12913 $cat <<EOM
12914Checking whether your strtoul() works okay...
12915EOM
12916 $cat >try.c <<'EOCP'
12917#include <errno.h>
12918#include <stdio.h>
12919extern unsigned long int strtoul(char *s, char **, int);
12920static int bad = 0;
12921void check(char *s, unsigned long eul, int een) {
12922 unsigned long gul;
12923 errno = 0;
12924 gul = strtoul(s, 0, 10);
12925 if (!((gul == eul) && (errno == een)))
12926 bad++;
12927}
12928int main() {
12929 check(" 1", 1L, 0);
12930 check(" 0", 0L, 0);
12931EOCP
12932 case "$longsize" in
12933 8)
12934 $cat >>try.c <<'EOCP'
12935 check("18446744073709551615", 18446744073709551615UL, 0);
12936 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12937#if 0 /* strtoul() for /^-/ strings is undefined. */
12938 check("-1", 18446744073709551615UL, 0);
12939 check("-18446744073709551614", 2, 0);
12940 check("-18446744073709551615", 1, 0);
12941 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12942 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12943#endif
12944EOCP
12945 ;;
12946 4)
12947 $cat >>try.c <<'EOCP'
12948 check("4294967295", 4294967295UL, 0);
12949 check("4294967296", 4294967295UL, ERANGE);
12950#if 0 /* strtoul() for /^-/ strings is undefined. */
12951 check("-1", 4294967295UL, 0);
12952 check("-4294967294", 2, 0);
12953 check("-4294967295", 1, 0);
12954 check("-4294967296", 4294967295UL, ERANGE);
12955 check("-4294967297", 4294967295UL, ERANGE);
12956#endif
12957EOCP
12958 ;;
12959 *)
12960: Should we write these tests to be more portable by sprintf-ing
12961: ~0 and then manipulating that char string as input for strtol?
12962 ;;
12963 esac
12964 $cat >>try.c <<'EOCP'
12965 if (!bad)
12966 printf("ok\n");
12967 return 0;
12968}
12969EOCP
12970 set try
12971 if eval $compile; then
12972 case "`$run ./try`" in
12973 ok) echo "Your strtoul() seems to be working okay." ;;
12974 *) cat <<EOM >&4
12975Your strtoul() doesn't seem to be working okay.
12976EOM
12977 d_strtoul="$undef"
12978 ;;
12979 esac
12980 fi
12981 ;;
12982esac
12983
12984: see if strtoull exists
12985set strtoull d_strtoull
12986eval $inlibc
12987
12988case "$d_longlong-$d_strtoull" in
12989"$define-$define")
12990 $cat <<EOM
12991Checking whether your strtoull() works okay...
12992EOM
12993 $cat >try.c <<'EOCP'
12994#include <errno.h>
12995#ifdef __hpux
12996#define strtoull __strtoull
12997#endif
12998#include <stdio.h>
12999extern unsigned long long int strtoull(char *s, char **, int);
13000static int bad = 0;
13001int check(char *s, long long eull, int een) {
13002 long long gull;
13003 errno = 0;
13004 gull = strtoull(s, 0, 10);
13005 if (!((gull == eull) && (errno == een)))
13006 bad++;
13007}
13008int main() {
13009 check(" 1", 1LL, 0);
13010 check(" 0", 0LL, 0);
13011 check("18446744073709551615", 18446744073709551615ULL, 0);
13012 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13013#if 0 /* strtoull() for /^-/ strings is undefined. */
13014 check("-1", 18446744073709551615ULL, 0);
13015 check("-18446744073709551614", 2LL, 0);
13016 check("-18446744073709551615", 1LL, 0);
13017 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13018 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13019#endif
13020 if (!bad)
13021 printf("ok\n");
13022}
13023EOCP
13024 set try
13025 if eval $compile; then
13026 case "`$run ./try`" in
13027 ok) echo "Your strtoull() seems to be working okay." ;;
13028 *) cat <<EOM >&4
13029Your strtoull() doesn't seem to be working okay.
13030EOM
13031 d_strtoull="$undef"
13032 ;;
13033 esac
13034 fi
13035 ;;
13036esac
13037
13038: see if strtouq exists
13039set strtouq d_strtouq
13040eval $inlibc
13041
13042case "$d_strtouq" in
13043"$define")
13044 $cat <<EOM
13045Checking whether your strtouq() works okay...
13046EOM
13047 $cat >try.c <<'EOCP'
13048#include <errno.h>
13049#include <stdio.h>
13050extern unsigned long long int strtouq(char *s, char **, int);
13051static int bad = 0;
13052void check(char *s, unsigned long long eull, int een) {
13053 unsigned long long gull;
13054 errno = 0;
13055 gull = strtouq(s, 0, 10);
13056 if (!((gull == eull) && (errno == een)))
13057 bad++;
13058}
13059int main() {
13060 check(" 1", 1LL, 0);
13061 check(" 0", 0LL, 0);
13062 check("18446744073709551615", 18446744073709551615ULL, 0);
13063 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13064#if 0 /* strtouq() for /^-/ strings is undefined. */
13065 check("-1", 18446744073709551615ULL, 0);
13066 check("-18446744073709551614", 2LL, 0);
13067 check("-18446744073709551615", 1LL, 0);
13068 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13069 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13070#endif
13071 if (!bad)
13072 printf("ok\n");
13073 return 0;
13074}
13075EOCP
13076 set try
13077 if eval $compile; then
13078 case "`$run ./try`" in
13079 ok) echo "Your strtouq() seems to be working okay." ;;
13080 *) cat <<EOM >&4
13081Your strtouq() doesn't seem to be working okay.
13082EOM
13083 d_strtouq="$undef"
13084 ;;
13085 esac
13086 fi
13087 ;;
13088esac
13089
13090: see if strxfrm exists
13091set strxfrm d_strxfrm
13092eval $inlibc
13093
13094: see if symlink exists
13095set symlink d_symlink
13096eval $inlibc
13097
13098: see if syscall exists
13099set syscall d_syscall
13100eval $inlibc
13101
13102: see if prototype for syscall is available
13103echo " "
13104set d_syscallproto syscall $i_unistd unistd.h
13105eval $hasproto
13106
13107: see if sysconf exists
13108set sysconf d_sysconf
13109eval $inlibc
13110
13111: see if system exists
13112set system d_system
13113eval $inlibc
13114
13115: see if tcgetpgrp exists
13116set tcgetpgrp d_tcgetpgrp
13117eval $inlibc
13118
13119: see if tcsetpgrp exists
13120set tcsetpgrp d_tcsetpgrp
13121eval $inlibc
13122
13123: see if prototype for telldir is available
13124echo " "
13125set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13126eval $hasproto
13127
13128: see if this is a sys/times.h system
13129set sys/times.h i_systimes
13130eval $inhdr
13131
13132: see if times exists
13133echo " "
13134if set times val -f d_times; eval $csym; $val; then
13135 echo 'times() found.' >&4
13136 d_times="$define"
13137 inc=''
13138 case "$i_systimes" in
13139 "$define") inc='sys/times.h';;
13140 esac
13141 rp="What is the type returned by times() on this system?"
13142 set clock_t clocktype long stdio.h sys/types.h $inc
13143 eval $typedef_ask
13144else
13145 echo 'times() NOT found, hope that will do.' >&4
13146 d_times="$undef"
13147 clocktype='int'
13148fi
13149
13150: see if truncate exists
13151set truncate d_truncate
13152eval $inlibc
13153
13154: see if tzname[] exists
13155echo " "
13156if set tzname val -a d_tzname; eval $csym; $val; then
13157 val="$define"
13158 echo 'tzname[] found.' >&4
13159else
13160 val="$undef"
13161 echo 'tzname[] NOT found.' >&4
13162fi
13163set d_tzname
13164eval $setvar
13165
13166case "$osname" in
13167next|rhapsody|darwin) multiarch="$define" ;;
13168esac
13169case "$multiarch" in
13170''|[nN]*) multiarch="$undef" ;;
13171esac
13172
13173: check for ordering of bytes in a long
13174echo " "
13175case "$usecrosscompile$multiarch" in
13176*$define*)
13177 $cat <<EOM
13178You seem to be either cross-compiling or doing a multiarchitecture build,
13179skipping the byteorder check.
13180
13181EOM
13182 byteorder='ffff'
13183 ;;
13184*)
13185 case "$byteorder" in
13186 '')
13187 $cat <<'EOM'
13188In the following, larger digits indicate more significance. A big-endian
13189machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13190little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13191machines may have weird orders like 3412. A Cray will report 87654321,
13192an Alpha will report 12345678. If the test program works the default is
13193probably right.
13194I'm now running the test program...
13195EOM
13196 $cat >try.c <<'EOCP'
13197#include <stdio.h>
13198int main()
13199{
13200 int i;
13201 union {
13202 unsigned long l;
13203 char c[sizeof(long)];
13204 } u;
13205
13206 if (sizeof(long) > 4)
13207 u.l = (0x08070605L << 32) | 0x04030201L;
13208 else
13209 u.l = 0x04030201L;
13210 for (i = 0; i < sizeof(long); i++)
13211 printf("%c", u.c[i]+'0');
13212 printf("\n");
13213 exit(0);
13214}
13215EOCP
13216 xxx_prompt=y
13217 set try
13218 if eval $compile && ./try > /dev/null; then
13219 dflt=`$run ./try`
13220 case "$dflt" in
13221 [1-4][1-4][1-4][1-4]|12345678|87654321)
13222 echo "(The test program ran ok.)"
13223 echo "byteorder=$dflt"
13224 xxx_prompt=n
13225 ;;
13226 ????|????????) echo "(The test program ran ok.)" ;;
13227 *) echo "(The test program didn't run right for some reason.)" ;;
13228 esac
13229 else
13230 dflt='4321'
13231 cat <<'EOM'
13232(I can't seem to compile the test program. Guessing big-endian...)
13233EOM
13234 fi
13235 case "$xxx_prompt" in
13236 y)
13237 rp="What is the order of bytes in a long?"
13238 . ./myread
13239 byteorder="$ans"
13240 ;;
13241 *) byteorder=$dflt
13242 ;;
13243 esac
13244 ;;
13245 esac
13246 $rm -f try.c try
13247 ;;
13248esac
13249
13250
13251$cat <<EOM
13252
13253Checking to see whether you can access character data unalignedly...
13254EOM
13255$cat >try.c <<EOCP
13256#include <stdio.h>
13257#define U32 $u32type
13258#define BYTEORDER $byteorder
13259int main() {
13260#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13261 U8 buf[] = "\0\0\0\1\0\0\0\0";
13262 U32 *up;
13263 int i;
13264
13265 if (sizeof(U32) != 4) {
13266 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13267 exit(1);
13268 }
13269
13270 fflush(stdout);
13271
13272 for (i = 0; i < 4; i++) {
13273 up = (U32*)(buf + i);
13274 if (! ((*up == 1 << (8*i)) || /* big-endian */
13275 (*up == 1 << (8*(3-i))) /* little-endian */
13276 )
13277 )
13278 {
13279 printf("read failed (%x)\n", *up);
13280 exit(2);
13281 }
13282 }
13283
13284 /* write test */
13285 for (i = 0; i < 4; i++) {
13286 up = (U32*)(buf + i);
13287 *up = 0xBeef;
13288 if (*up != 0xBeef) {
13289 printf("write failed (%x)\n", *up);
13290 exit(3);
13291 }
13292 }
13293
13294 exit(0);
13295#else
13296 printf("1\n");
13297 exit(1);
13298#endif
13299 return 0;
13300}
13301EOCP
13302set try
13303if eval $compile_ok; then
13304 echo "(Testing for character data alignment may dump core.)" >&4
13305 $run ./try 2>&1 >/dev/null
13306 case "$?" in
13307 0) cat >&4 <<EOM
13308You can access character data pretty unalignedly.
13309EOM
13310 d_u32align="$undef"
13311 ;;
13312 *) cat >&4 <<EOM
13313It seems that you must access character data in an aligned manner.
13314EOM
13315 d_u32align="$define"
13316 ;;
13317 esac
13318 $rm -f core core.try.* try.core
13319else
13320 rp='Can you access character data at unaligned addresses?'
13321 dflt='n'
13322 . ./myread
13323 case "$ans" in
13324 [yY]*) d_u32align="$undef" ;;
13325 *) d_u32align="$define" ;;
13326 esac
13327fi
13328
13329: see if ualarm exists
13330set ualarm d_ualarm
13331eval $inlibc
13332
13333: see if umask exists
13334set umask d_umask
13335eval $inlibc
13336
13337: see if unordered exists
13338set unordered d_unordered
13339eval $inlibc
13340
13341: see if usleep exists
13342set usleep d_usleep
13343eval $inlibc
13344
13345: see if prototype for usleep is available
13346echo " "
13347set d_usleepproto usleep $i_unistd unistd.h
13348eval $hasproto
13349
13350: see if ustat exists
13351set ustat d_ustat
13352eval $inlibc
13353
13354: backward compatibility for d_hvfork
13355if test X$d_hvfork != X; then
13356 d_vfork="$d_hvfork"
13357 d_hvfork=''
13358fi
13359: see if there is a vfork
13360val=''
13361set vfork val
13362eval $inlibc
13363
13364: Ok, but do we want to use it. vfork is reportedly unreliable in
13365: perl on Solaris 2.x, and probably elsewhere.
13366case "$val" in
13367$define)
13368 echo " "
13369 case "$usevfork" in
13370 false) dflt='n';;
13371 *) dflt='y';;
13372 esac
13373 cat <<'EOM'
13374
13375Perl can only use a vfork() that doesn't suffer from strict
13376restrictions on calling functions or modifying global data in
13377the child. For example, glibc-2.1 contains such a vfork()
13378that is unsuitable. If your system provides a proper fork()
13379call, chances are that you do NOT want perl to use vfork().
13380
13381EOM
13382 rp="Do you still want to use vfork()?"
13383 . ./myread
13384 case "$ans" in
13385 y|Y) ;;
13386 *)
13387 echo "Ok, we won't use vfork()."
13388 val="$undef"
13389 ;;
13390 esac
13391 ;;
13392esac
13393set d_vfork
13394eval $setvar
13395case "$d_vfork" in
13396$define) usevfork='true';;
13397*) usevfork='false';;
13398esac
13399
13400: see if this is an sysdir system
13401set sys/dir.h i_sysdir
13402eval $inhdr
13403
13404: see if this is an sysndir system
13405set sys/ndir.h i_sysndir
13406eval $inhdr
13407
13408: see if closedir exists
13409set closedir d_closedir
13410eval $inlibc
13411
13412case "$d_closedir" in
13413"$define")
13414 echo " "
13415 echo "Checking whether closedir() returns a status..." >&4
13416 cat > try.c <<EOM
13417#$i_dirent I_DIRENT /**/
13418#$i_sysdir I_SYS_DIR /**/
13419#$i_sysndir I_SYS_NDIR /**/
13420#$i_systypes I_SYS_TYPES /**/
13421
13422#if defined(I_SYS_TYPES)
13423#include <sys/types.h>
13424#endif
13425#if defined(I_DIRENT)
13426#include <dirent.h>
13427#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13428#include <sys/dir.h>
13429#endif
13430#else
13431#ifdef I_SYS_NDIR
13432#include <sys/ndir.h>
13433#else
13434#ifdef I_SYS_DIR
13435#ifdef hp9000s500
13436#include <ndir.h> /* may be wrong in the future */
13437#else
13438#include <sys/dir.h>
13439#endif
13440#endif
13441#endif
13442#endif
13443int main() { return closedir(opendir(".")); }
13444EOM
13445 set try
13446 if eval $compile_ok; then
13447 if $run ./try > /dev/null 2>&1 ; then
13448 echo "Yes, it does."
13449 val="$undef"
13450 else
13451 echo "No, it doesn't."
13452 val="$define"
13453 fi
13454 else
13455 echo "(I can't seem to compile the test program--assuming it doesn't)"
13456 val="$define"
13457 fi
13458 ;;
13459*)
13460 val="$undef";
13461 ;;
13462esac
13463set d_void_closedir
13464eval $setvar
13465$rm -f try try.*
13466: see if there is a wait4
13467set wait4 d_wait4
13468eval $inlibc
13469
13470: see if waitpid exists
13471set waitpid d_waitpid
13472eval $inlibc
13473
13474: see if wcstombs exists
13475set wcstombs d_wcstombs
13476eval $inlibc
13477
13478: see if wctomb exists
13479set wctomb d_wctomb
13480eval $inlibc
13481
13482: see if writev exists
13483set writev d_writev
13484eval $inlibc
13485
13486: preserve RCS keywords in files with variable substitution, grrr
13487Date='$Date'
13488Id='$Id'
13489Log='$Log'
13490RCSfile='$RCSfile'
13491Revision='$Revision'
13492
13493: check for alignment requirements
13494echo " "
13495case "$usecrosscompile$multiarch" in
13496*$define*)
13497 $cat <<EOM
13498You seem to be either cross-compiling or doing a multiarchitecture build,
13499skipping the memory alignment check.
13500
13501EOM
13502 case "$alignbytes" in
13503 '') alignbytes=8 ;;
13504 esac
13505 ;;
13506*)
13507 case "$alignbytes" in
13508 '') echo "Checking alignment constraints..." >&4
13509 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13510 $cat >try.c <<'EOCP'
13511typedef long double NV;
13512EOCP
13513 else
13514 $cat >try.c <<'EOCP'
13515typedef double NV;
13516EOCP
13517 fi
13518 $cat >>try.c <<'EOCP'
13519#include <stdio.h>
13520struct foobar {
13521 char foo;
13522 NV bar;
13523} try_algn;
13524int main()
13525{
13526 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13527 return(0);
13528}
13529EOCP
13530 set try
13531 if eval $compile_ok; then
13532 dflt=`$run ./try`
13533 else
13534 dflt='8'
13535 echo "(I can't seem to compile the test program...)"
13536 fi
13537 ;;
13538 *) dflt="$alignbytes"
13539 ;;
13540 esac
13541 rp="Doubles must be aligned on a how-many-byte boundary?"
13542 . ./myread
13543 alignbytes="$ans"
13544 $rm -f try.c try
13545 ;;
13546esac
13547
13548
13549: set the base revision
13550baserev=5.0
13551
13552: how do we catenate cpp tokens here?
13553echo " "
13554echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13555$cat >cpp_stuff.c <<'EOCP'
13556#define RCAT(a,b)a/**/b
13557#define ACAT(a,b)a ## b
13558RCAT(Rei,ser)
13559ACAT(Cir,cus)
13560EOCP
13561$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13562if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13563 echo "Oh! Smells like ANSI's been here." >&4
13564 echo "We can catify or stringify, separately or together!"
13565 cpp_stuff=42
13566elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13567 echo "Ah, yes! The good old days!" >&4
13568 echo "However, in the good old days we don't know how to stringify and"
13569 echo "catify at the same time."
13570 cpp_stuff=1
13571else
13572 $cat >&4 <<EOM
13573Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13574to have to edit the values of CAT[2-5] in config.h...
13575EOM
13576 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13577fi
13578$rm -f cpp_stuff.*
13579
13580: see if this is a db.h system
13581set db.h i_db
13582eval $inhdr
13583
13584case "$i_db" in
13585$define)
13586 : Check db version.
13587 echo " "
13588 echo "Checking Berkeley DB version ..." >&4
13589 $cat >try.c <<EOCP
13590#$d_const HASCONST
13591#ifndef HASCONST
13592#define const
13593#endif
13594#include <sys/types.h>
13595#include <stdio.h>
13596#include <db.h>
13597int main(int argc, char *argv[])
13598{
13599#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13600 int Major, Minor, Patch ;
13601 unsigned long Version ;
13602 (void)db_version(&Major, &Minor, &Patch) ;
13603 if (argc == 2) {
13604 printf("%d %d %d %d %d %d\n",
13605 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13606 Major, Minor, Patch);
13607 exit(0);
13608 }
13609 printf("You have Berkeley DB Version 2 or greater.\n");
13610
13611 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13612 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13613 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13614 Major, Minor, Patch) ;
13615
13616 /* check that db.h & libdb are compatible */
13617 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13618 printf("db.h and libdb are incompatible.\n") ;
13619 exit(3);
13620 }
13621
13622 printf("db.h and libdb are compatible.\n") ;
13623
13624 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13625 + DB_VERSION_PATCH ;
13626
13627 /* needs to be >= 2.3.4 */
13628 if (Version < 2003004) {
13629 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13630 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13631 exit(2);
13632 }
13633
13634 exit(0);
13635#else
13636#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13637 if (argc == 2) {
13638 printf("1 0 0\n");
13639 exit(0);
13640 }
13641 printf("You have Berkeley DB Version 1.\n");
13642 exit(0); /* DB version < 2: the coast is clear. */
13643#else
13644 exit(1); /* <db.h> not Berkeley DB? */
13645#endif
13646#endif
13647}
13648EOCP
13649 set try
13650 if eval $compile_ok && $run ./try; then
13651 echo 'Looks OK.' >&4
13652 set `$run ./try 1`
13653 db_version_major=$1
13654 db_version_minor=$2
13655 db_version_patch=$3
13656 else
13657 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13658 i_db=$undef
13659 case " $libs " in
13660 *"-ldb "*)
13661 : Remove db from list of libraries to use
13662 echo "Removing unusable -ldb from library list" >&4
13663 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13664 shift
13665 libs="$*"
13666 echo "libs = $libs" >&4
13667 ;;
13668 esac
13669 fi
13670 $rm -f try.*
13671 ;;
13672esac
13673
13674case "$i_db" in
13675define)
13676 : Check the return type needed for hash
13677 echo " "
13678 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13679 $cat >try.c <<EOCP
13680#$d_const HASCONST
13681#ifndef HASCONST
13682#define const
13683#endif
13684#include <sys/types.h>
13685#include <db.h>
13686
13687#ifndef DB_VERSION_MAJOR
13688u_int32_t hash_cb (ptr, size)
13689const void *ptr;
13690size_t size;
13691{
13692}
13693HASHINFO info;
13694int main()
13695{
13696 info.hash = hash_cb;
13697}
13698#endif
13699EOCP
13700 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13701 if $contains warning try.out >>/dev/null 2>&1 ; then
13702 db_hashtype='int'
13703 else
13704 db_hashtype='u_int32_t'
13705 fi
13706 else
13707 : XXX Maybe we should just give up here.
13708 db_hashtype=u_int32_t
13709 $cat try.out >&4
13710 echo "Help: I can't seem to compile the db test program." >&4
13711 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13712 fi
13713 $rm -f try.*
13714 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13715 ;;
13716*) db_hashtype=u_int32_t
13717 ;;
13718esac
13719case "$i_db" in
13720define)
13721 : Check the return type needed for prefix
13722 echo " "
13723 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13724 cat >try.c <<EOCP
13725#$d_const HASCONST
13726#ifndef HASCONST
13727#define const
13728#endif
13729#include <sys/types.h>
13730#include <db.h>
13731
13732#ifndef DB_VERSION_MAJOR
13733size_t prefix_cb (key1, key2)
13734const DBT *key1;
13735const DBT *key2;
13736{
13737}
13738BTREEINFO info;
13739int main()
13740{
13741 info.prefix = prefix_cb;
13742}
13743#endif
13744EOCP
13745 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13746 if $contains warning try.out >>/dev/null 2>&1 ; then
13747 db_prefixtype='int'
13748 else
13749 db_prefixtype='size_t'
13750 fi
13751 else
13752 db_prefixtype='size_t'
13753 : XXX Maybe we should just give up here.
13754 $cat try.out >&4
13755 echo "Help: I can't seem to compile the db test program." >&4
13756 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13757 fi
13758 $rm -f try.*
13759 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13760 ;;
13761*) db_prefixtype='size_t'
13762 ;;
13763esac
13764
13765
13766: How can we generate normalized random numbers ?
13767echo " "
13768echo "Looking for a random number function..." >&4
13769case "$randfunc" in
13770'')
13771 if set drand48 val -f; eval $csym; $val; then
13772 dflt="drand48"
13773 echo "Good, found drand48()." >&4
13774 elif set random val -f; eval $csym; $val; then
13775 dflt="random"
13776 echo "OK, found random()." >&4
13777 else
13778 dflt="rand"
13779 echo "Yick, looks like I have to use rand()." >&4
13780 fi
13781 echo " "
13782 ;;
13783*)
13784 dflt="$randfunc"
13785 ;;
13786esac
13787cont=true
13788
13789case "$ccflags" in
13790*-Dmy_rand=*|*-Dmy_srand=*)
13791 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13792 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13793 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13794 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13795 ;;
13796esac
13797
13798while $test "$cont"; do
13799 rp="Use which function to generate random numbers?"
13800 . ./myread
13801 if $test "$ans" = "$dflt"; then
13802 : null
13803 else
13804 randbits=''
13805 fi
13806 randfunc="$ans"
13807 if set $ans val -f; eval $csym; $val; then
13808 cont=''
13809 else
13810 dflt=y
13811 rp="I cannot find function $ans. Use that name anyway?"
13812 . ./myread
13813 dflt=rand
13814 case "$ans" in
13815 [yY]*) cont='';;
13816 esac
13817 fi
13818 case "$cont" in
13819 '')
13820 case "$randfunc" in
13821 drand48)
13822 drand01="drand48()"
13823 seedfunc="srand48"
13824 randbits=48
13825 randseedtype=long
13826 ;;
13827 rand|random)
13828 case "$randbits" in
13829 '')
13830echo "Checking to see how many bits your $randfunc() function produces..." >&4
13831 $cat >try.c <<EOCP
13832#$i_unistd I_UNISTD
13833#$i_stdlib I_STDLIB
13834#include <stdio.h>
13835#ifdef I_UNISTD
13836# include <unistd.h>
13837#endif
13838#ifdef I_STDLIB
13839# include <stdlib.h>
13840#endif
13841int main()
13842{
13843 register int i;
13844 register unsigned long tmp;
13845 register unsigned long max = 0L;
13846
13847 for (i = 1000; i; i--) {
13848 tmp = (unsigned long) $randfunc();
13849 if (tmp > max) max = tmp;
13850 }
13851 for (i = 0; max; i++)
13852 max /= 2;
13853 printf("%d\n",i);
13854}
13855EOCP
13856 set try
13857 if eval $compile_ok; then
13858 dflt=`try`
13859 else
13860 dflt='?'
13861 echo "(I can't seem to compile the test program...)"
13862 fi
13863 ;;
13864 *)
13865 dflt="$randbits"
13866 ;;
13867 esac
13868 rp="How many bits does your $randfunc() function produce?"
13869 . ./myread
13870 randbits="$ans"
13871 $rm -f try.c try
13872 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13873 seedfunc="s$randfunc"
13874 randseedtype=unsigned
13875 ;;
13876 *)
13877 dflt="31"
13878 rp="How many bits does your $randfunc() function produce?"
13879 . ./myread
13880 randbits="$ans"
13881 seedfunc="s$randfunc"
13882 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13883 if set $seedfunc val -f; eval $csym; $val; then
13884 echo "(Using $seedfunc() to seed random generator)"
13885 else
13886 echo "(Warning: no $seedfunc() to seed random generator)"
13887 seedfunc=rand
13888 fi
13889 randseedtype=unsigned
13890 ;;
13891 esac
13892 ;;
13893 esac
13894done
13895
13896echo " "
13897echo "Determining whether or not we are on an EBCDIC system..." >&4
13898$cat >try.c <<'EOM'
13899int main()
13900{
13901 if ('M'==0xd4) return 0;
13902 return 1;
13903}
13904EOM
13905
13906val=$undef
13907set try
13908if eval $compile_ok; then
13909 if $run ./try; then
13910 echo "You seem to speak EBCDIC." >&4
13911 val="$define"
13912 else
13913 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13914 fi
13915else
13916 echo "I'm unable to compile the test program." >&4
13917 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13918fi
13919$rm -f try try.*
13920set ebcdic
13921eval $setvar
13922
13923echo " "
13924$cat >&4 <<EOM
13925Checking how to flush all pending stdio output...
13926EOM
13927# I only know how to find the first 32 possibly open files on SunOS.
13928# See also hints/sunos_4_1.sh and util.c --AD
13929case "$osname" in
13930sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13931esac
13932$cat >>try.c <<EOCP
13933#include <stdio.h>
13934#$i_unistd I_UNISTD
13935#ifdef I_UNISTD
13936# include <unistd.h>
13937#endif
13938#$d_sysconf HAS_SYSCONF
13939#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13940#ifdef HAS_STDIO_STREAM_ARRAY
13941# define STDIO_STREAM_ARRAY $stdio_stream_array
13942#endif
13943int main() {
13944 FILE* p;
13945 unlink("try.out");
13946 p = fopen("try.out", "w");
13947#ifdef TRY_FPUTC
13948 fputc('x', p);
13949#else
13950# ifdef TRY_FPRINTF
13951 fprintf(p, "x");
13952# endif
13953#endif
13954#ifdef TRY_FFLUSH_NULL
13955 fflush(NULL);
13956#endif
13957#ifdef TRY_FFLUSH_ALL
13958 {
13959 long open_max = -1;
13960# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13961 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13962# else
13963# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13964 open_max = sysconf(_SC_OPEN_MAX);
13965# else
13966# ifdef FOPEN_MAX
13967 open_max = FOPEN_MAX;
13968# else
13969# ifdef OPEN_MAX
13970 open_max = OPEN_MAX;
13971# else
13972# ifdef _NFILE
13973 open_max = _NFILE;
13974# endif
13975# endif
13976# endif
13977# endif
13978# endif
13979# ifdef HAS_STDIO_STREAM_ARRAY
13980 if (open_max > 0) {
13981 long i;
13982 for (i = 0; i < open_max; i++)
13983 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13984 STDIO_STREAM_ARRAY[i]._file < open_max &&
13985 STDIO_STREAM_ARRAY[i]._flag)
13986 fflush(&STDIO_STREAM_ARRAY[i]);
13987 }
13988 }
13989# endif
13990#endif
13991 _exit(42);
13992}
13993EOCP
13994: first we have to find out how _not_ to flush
13995$to try.c
13996if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13997 output=''
13998 set try -DTRY_FPUTC
13999 if eval $compile; then
14000 $run ./try 2>/dev/null
14001 code="$?"
14002 $from try.out
14003 if $test ! -s try.out -a "X$code" = X42; then
14004 output=-DTRY_FPUTC
14005 fi
14006 fi
14007 case "$output" in
14008 '')
14009 set try -DTRY_FPRINTF
14010 if eval $compile; then
14011 $run ./try 2>/dev/null
14012 code="$?"
14013 $from try.out
14014 if $test ! -s try.out -a "X$code" = X42; then
14015 output=-DTRY_FPRINTF
14016 fi
14017 fi
14018 ;;
14019 esac
14020fi
14021: check for fflush NULL behaviour
14022case "$fflushNULL" in
14023'') set try -DTRY_FFLUSH_NULL $output
14024 if eval $compile; then
14025 $run ./try 2>/dev/null
14026 code="$?"
14027 $from try.out
14028 if $test -s try.out -a "X$code" = X42; then
14029 fflushNULL="`$cat try.out`"
14030 else
14031 if $test "X$code" != X42; then
14032 $cat >&4 <<EOM
14033(If this test failed, don't worry, we'll try another method shortly.)
14034EOM
14035 fi
14036 fi
14037 fi
14038 $rm -f core try.core core.try.*
14039 case "$fflushNULL" in
14040 x) $cat >&4 <<EOM
14041Your fflush(NULL) works okay for output streams.
14042Let's see if it clobbers input pipes...
14043EOM
14044# As of mid-March 2000 all versions of Solaris appear to have a stdio
14045# bug that improperly flushes the input end of pipes. So we avoid the
14046# autoflush on fork/system/exec support for now. :-(
14047$cat >tryp.c <<EOCP
14048#include <stdio.h>
14049int
14050main(int argc, char **argv)
14051{
14052 char buf[1024];
14053 int i;
14054 char *bp = buf;
14055 while (1) {
14056 while ((i = getc(stdin)) != -1
14057 && (*bp++ = i) != '\n'
14058 && bp < &buf[1024])
14059 /* DO NOTHING */ ;
14060 *bp = '\0';
14061 fprintf(stdout, "%s", buf);
14062 fflush(NULL);
14063 if (i == -1)
14064 return 0;
14065 bp = buf;
14066 }
14067}
14068EOCP
14069 fflushNULL="$define"
14070 set tryp
14071 if eval $compile; then
14072 $rm -f tryp.out
14073 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14074 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14075 $cat >&4 <<EOM
14076fflush(NULL) seems to behave okay with input streams.
14077EOM
14078 fflushNULL="$define"
14079 else
14080 $cat >&4 <<EOM
14081Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14082EOM
14083 fflushNULL="$undef"
14084 fi
14085 fi
14086 $rm -f core tryp.c tryp.core core.tryp.*
14087 ;;
14088 '') $cat >&4 <<EOM
14089Your fflush(NULL) isn't working (contrary to ANSI C).
14090EOM
14091 fflushNULL="$undef"
14092 ;;
14093 *) $cat >&4 <<EOM
14094Cannot figure out whether your fflush(NULL) works or not.
14095I'm assuming it doesn't (contrary to ANSI C).
14096EOM
14097 fflushNULL="$undef"
14098 ;;
14099 esac
14100 ;;
14101$define|true|[yY]*)
14102 fflushNULL="$define"
14103 ;;
14104*)
14105 fflushNULL="$undef"
14106 ;;
14107esac
14108: check explicit looping only if NULL did not work, and if the pipe
14109: bug does not show up on an explicit flush too
14110case "$fflushNULL" in
14111"$undef")
14112 $cat >tryp.c <<EOCP
14113#include <stdio.h>
14114int
14115main(int argc, char **argv)
14116{
14117 char buf[1024];
14118 int i;
14119 char *bp = buf;
14120 while (1) {
14121 while ((i = getc(stdin)) != -1
14122 && (*bp++ = i) != '\n'
14123 && bp < &buf[1024])
14124 /* DO NOTHING */ ;
14125 *bp = '\0';
14126 fprintf(stdout, "%s", buf);
14127 fflush(stdin);
14128 if (i == -1)
14129 return 0;
14130 bp = buf;
14131 }
14132}
14133EOCP
14134 set tryp
14135 if eval $compile; then
14136 $rm -f tryp.out
14137 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14138 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14139 $cat >&4 <<EOM
14140Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14141EOM
14142 : now check for fflushall behaviour
14143 case "$fflushall" in
14144 '') set try -DTRY_FFLUSH_ALL $output
14145 if eval $compile; then
14146 $cat >&4 <<EOM
14147(Now testing the other method--but note that this also may fail.)
14148EOM
14149 $run ./try 2>/dev/null
14150 code=$?
14151 $from try.out
14152 if $test -s try.out -a "X$code" = X42; then
14153 fflushall="`$cat try.out`"
14154 fi
14155 fi
14156 $rm -f core try.core core.try.*
14157 case "$fflushall" in
14158 x) $cat >&4 <<EOM
14159Whew. Flushing explicitly all the stdio streams works.
14160EOM
14161 fflushall="$define"
14162 ;;
14163 '') $cat >&4 <<EOM
14164Sigh. Flushing explicitly all the stdio streams doesn't work.
14165EOM
14166 fflushall="$undef"
14167 ;;
14168 *) $cat >&4 <<EOM
14169Cannot figure out whether flushing stdio streams explicitly works or not.
14170I'm assuming it doesn't.
14171EOM
14172 fflushall="$undef"
14173 ;;
14174 esac
14175 ;;
14176 "$define"|true|[yY]*)
14177 fflushall="$define"
14178 ;;
14179 *)
14180 fflushall="$undef"
14181 ;;
14182 esac
14183 else
14184 $cat >&4 <<EOM
14185All is futile. Even fflush(stdin) clobbers input pipes!
14186EOM
14187 fflushall="$undef"
14188 fi
14189 else
14190 fflushall="$undef"
14191 fi
14192 $rm -f core tryp.c tryp.core core.tryp.*
14193 ;;
14194*) fflushall="$undef"
14195 ;;
14196esac
14197
14198case "$fflushNULL$fflushall" in
14199undefundef)
14200 $cat <<EOM
14201OK, I give up. I cannot figure out how to flush pending stdio output.
14202We won't be flushing handles at all before fork/exec/popen.
14203EOM
14204 ;;
14205esac
14206$rm -f try.* try$exe_ext
14207
14208: Store the full pathname to the ar program for use in the C program
14209: Respect a hint or command line value for full_ar.
14210case "$full_ar" in
14211'') full_ar=$ar ;;
14212esac
14213
14214: Store the full pathname to the sed program for use in the C program
14215full_sed=$sed
14216
14217: see what type gids are declared as in the kernel
14218echo " "
14219echo "Looking for the type for group ids returned by getgid()."
14220set gid_t gidtype xxx stdio.h sys/types.h
14221eval $typedef
14222case "$gidtype" in
14223xxx)
14224 xxx=`./findhdr sys/user.h`
14225 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14226 case $1 in
14227 unsigned) dflt="$1 $2" ;;
14228 *) dflt="$1" ;;
14229 esac
14230 ;;
14231*) dflt="$gidtype";;
14232esac
14233case "$gidtype" in
14234gid_t) echo "gid_t found." ;;
14235*) rp="What is the type for group ids returned by getgid()?"
14236 . ./myread
14237 gidtype="$ans"
14238 ;;
14239esac
14240
14241echo " "
14242case "$gidtype" in
14243*_t) zzz="$gidtype" ;;
14244*) zzz="gid" ;;
14245esac
14246echo "Checking the size of $zzz..." >&4
14247cat > try.c <<EOCP
14248#include <sys/types.h>
14249#include <stdio.h>
14250int main() {
14251 printf("%d\n", (int)sizeof($gidtype));
14252 exit(0);
14253}
14254EOCP
14255set try
14256if eval $compile_ok; then
14257 yyy=`$run ./try`
14258 case "$yyy" in
14259 '') gidsize=4
14260 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14261 ;;
14262 *) gidsize=$yyy
14263 echo "Your $zzz is $gidsize bytes long."
14264 ;;
14265 esac
14266else
14267 gidsize=4
14268 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14269fi
14270
14271
14272echo " "
14273case "$gidtype" in
14274*_t) zzz="$gidtype" ;;
14275*) zzz="gid" ;;
14276esac
14277echo "Checking the sign of $zzz..." >&4
14278cat > try.c <<EOCP
14279#include <sys/types.h>
14280#include <stdio.h>
14281int main() {
14282 $gidtype foo = -1;
14283 if (foo < 0)
14284 printf("-1\n");
14285 else
14286 printf("1\n");
14287}
14288EOCP
14289set try
14290if eval $compile; then
14291 yyy=`$run ./try`
14292 case "$yyy" in
14293 '') gidsign=1
14294 echo "(I can't execute the test program--guessing unsigned.)" >&4
14295 ;;
14296 *) gidsign=$yyy
14297 case "$gidsign" in
14298 1) echo "Your $zzz is unsigned." ;;
14299 -1) echo "Your $zzz is signed." ;;
14300 esac
14301 ;;
14302 esac
14303else
14304 gidsign=1
14305 echo "(I can't compile the test program--guessing unsigned.)" >&4
14306fi
14307
14308
14309echo " "
14310
14311if $test X"$quadtype" != X; then
14312
14313echo "Checking how to print 64-bit integers..." >&4
14314
14315if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14316 $cat >try.c <<'EOCP'
14317#include <sys/types.h>
14318#include <stdio.h>
14319int main() {
14320 int q = 12345678901;
14321 printf("%ld\n", q);
14322}
14323EOCP
14324 set try
14325 if eval $compile; then
14326 yyy=`$run ./try`
14327 case "$yyy" in
14328 12345678901)
14329 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14330 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14331 echo "We will use %d."
14332 ;;
14333 esac
14334 fi
14335fi
14336
14337if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14338 $cat >try.c <<'EOCP'
14339#include <sys/types.h>
14340#include <stdio.h>
14341int main() {
14342 long q = 12345678901;
14343 printf("%ld\n", q);
14344}
14345EOCP
14346 set try
14347 if eval $compile; then
14348 yyy=`$run ./try`
14349 case "$yyy" in
14350 12345678901)
14351 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14352 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14353 echo "We will use %ld."
14354 ;;
14355 esac
14356 fi
14357fi
14358
14359if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14360 $cat >try.c <<'EOCP'
14361#include <sys/types.h>
14362#include <inttypes.h>
14363#include <stdio.h>
14364int main() {
14365 int64_t q = 12345678901;
14366 printf("%" PRId64 "\n", q);
14367}
14368EOCP
14369 set try
14370 if eval $compile; then
14371 yyy=`$run ./try`
14372 case "$yyy" in
14373 12345678901)
14374 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14375 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14376 echo "We will use the C9X style."
14377 ;;
14378 esac
14379 fi
14380fi
14381
14382if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14383 $cat >try.c <<EOCP
14384#include <sys/types.h>
14385#include <stdio.h>
14386int main() {
14387 $quadtype q = 12345678901;
14388 printf("%Ld\n", q);
14389}
14390EOCP
14391 set try
14392 if eval $compile; then
14393 yyy=`$run ./try`
14394 case "$yyy" in
14395 12345678901)
14396 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14397 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14398 echo "We will use %Ld."
14399 ;;
14400 esac
14401 fi
14402fi
14403
14404if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14405 $cat >try.c <<'EOCP'
14406#include <sys/types.h>
14407#include <stdio.h>
14408int main() {
14409 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14410 printf("%lld\n", q);
14411}
14412EOCP
14413 set try
14414 if eval $compile; then
14415 yyy=`$run ./try`
14416 case "$yyy" in
14417 12345678901)
14418 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14419 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14420 echo "We will use the %lld style."
14421 ;;
14422 esac
14423 fi
14424fi
14425
14426if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14427 $cat >try.c <<EOCP
14428#include <sys/types.h>
14429#include <stdio.h>
14430int main() {
14431 $quadtype q = 12345678901;
14432 printf("%qd\n", q);
14433}
14434EOCP
14435 set try
14436 if eval $compile; then
14437 yyy=`$run ./try`
14438 case "$yyy" in
14439 12345678901)
14440 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14441 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14442 echo "We will use %qd."
14443 ;;
14444 esac
14445 fi
14446fi
14447
14448if $test X"$sPRId64" = X; then
14449 echo "Cannot figure out how to print 64-bit integers." >&4
14450fi
14451
14452$rm -f try try.*
14453
14454fi
14455
14456case "$sPRId64" in
14457'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14458 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14459 ;;
14460*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14461 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14462 ;;
14463esac
14464
14465
14466echo " "
14467$echo "Checking the format strings to be used for Perl's internal types..." >&4
14468
14469if $test X"$ivsize" = X8; then
14470 ivdformat="$sPRId64"
14471 uvuformat="$sPRIu64"
14472 uvoformat="$sPRIo64"
14473 uvxformat="$sPRIx64"
14474 uvXUformat="$sPRIXU64"
14475else
14476 if $test X"$ivsize" = X"$longsize"; then
14477 ivdformat='"ld"'
14478 uvuformat='"lu"'
14479 uvoformat='"lo"'
14480 uvxformat='"lx"'
14481 uvXUformat='"lX"'
14482 else
14483 if $test X"$ivsize" = X"$intsize"; then
14484 ivdformat='"d"'
14485 uvuformat='"u"'
14486 uvoformat='"o"'
14487 uvxformat='"x"'
14488 uvXUformat='"X"'
14489 else
14490 : far out
14491 if $test X"$ivsize" = X"$shortsize"; then
14492 ivdformat='"hd"'
14493 uvuformat='"hu"'
14494 uvoformat='"ho"'
14495 uvxformat='"hx"'
14496 uvXUformat='"hX"'
14497 fi
14498 fi
14499 fi
14500fi
14501
14502if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14503 nveformat="$sPRIeldbl"
14504 nvfformat="$sPRIfldbl"
14505 nvgformat="$sPRIgldbl"
14506 nvEUformat="$sPRIEUldbl"
14507 nvFUformat="$sPRIFUldbl"
14508 nvGUformat="$sPRIGUldbl"
14509else
14510 nveformat='"e"'
14511 nvfformat='"f"'
14512 nvgformat='"g"'
14513 nvEUformat='"E"'
14514 nvFUformat='"F"'
14515 nvGUformat='"G"'
14516fi
14517
14518case "$ivdformat" in
14519'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14520 exit 1
14521 ;;
14522esac
14523
14524
14525echo " "
14526$echo "Checking the format string to be used for gids..." >&4
14527
14528case "$gidsign" in
14529-1) if $test X"$gidsize" = X"$ivsize"; then
14530 gidformat="$ivdformat"
14531 else
14532 if $test X"$gidsize" = X"$longsize"; then
14533 gidformat='"ld"'
14534 else
14535 if $test X"$gidsize" = X"$intsize"; then
14536 gidformat='"d"'
14537 else
14538 if $test X"$gidsize" = X"$shortsize"; then
14539 gidformat='"hd"'
14540 fi
14541 fi
14542 fi
14543 fi
14544 ;;
14545*) if $test X"$gidsize" = X"$uvsize"; then
14546 gidformat="$uvuformat"
14547 else
14548 if $test X"$gidsize" = X"$longsize"; then
14549 gidformat='"lu"'
14550 else
14551 if $test X"$gidsize" = X"$intsize"; then
14552 gidformat='"u"'
14553 else
14554 if $test X"$gidsize" = X"$shortsize"; then
14555 gidformat='"hu"'
14556 fi
14557 fi
14558 fi
14559 fi
14560 ;;
14561esac
14562
14563: see if getgroups exists
14564set getgroups d_getgrps
14565eval $inlibc
14566
14567: see if setgroups exists
14568set setgroups d_setgrps
14569eval $inlibc
14570
14571
14572: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14573echo " "
14574case "$d_getgrps$d_setgrps" in
14575*define*)
14576 case "$groupstype" in
14577 '') dflt="$gidtype" ;;
14578 *) dflt="$groupstype" ;;
14579 esac
14580 $cat <<EOM
14581What type of pointer is the second argument to getgroups() and setgroups()?
14582Usually this is the same as group ids, $gidtype, but not always.
14583
14584EOM
14585 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14586 . ./myread
14587 groupstype="$ans"
14588 ;;
14589*) groupstype="$gidtype";;
14590esac
14591
14592echo " "
14593echo "Checking if your $make program sets \$(MAKE)..." >&4
14594case "$make_set_make" in
14595'')
14596 $sed 's/^X //' > testmake.mak << 'EOF'
14597Xall:
14598X @echo 'maketemp="$(MAKE)"'
14599EOF
14600 case "`$make -f testmake.mak 2>/dev/null`" in
14601 *maketemp=*) make_set_make='#' ;;
14602 *) make_set_make="MAKE=$make" ;;
14603 esac
14604 $rm -f testmake.mak
14605 ;;
14606esac
14607case "$make_set_make" in
14608'#') echo "Yup, it does.";;
14609*) echo "Nope, it doesn't.";;
14610esac
14611
14612: see what type is used for mode_t
14613rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14614set mode_t modetype int stdio.h sys/types.h
14615eval $typedef_ask
14616
14617: see if stdarg is available
14618echo " "
14619if $test `./findhdr stdarg.h`; then
14620 echo "<stdarg.h> found." >&4
14621 valstd="$define"
14622else
14623 echo "<stdarg.h> NOT found." >&4
14624 valstd="$undef"
14625fi
14626
14627: see if varags is available
14628echo " "
14629if $test `./findhdr varargs.h`; then
14630 echo "<varargs.h> found." >&4
14631else
14632 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14633fi
14634
14635: set up the varargs testing programs
14636$cat > varargs.c <<EOP
14637#ifdef I_STDARG
14638#include <stdarg.h>
14639#endif
14640#ifdef I_VARARGS
14641#include <varargs.h>
14642#endif
14643
14644#ifdef I_STDARG
14645int f(char *p, ...)
14646#else
14647int f(va_alist)
14648va_dcl
14649#endif
14650{
14651 va_list ap;
14652#ifndef I_STDARG
14653 char *p;
14654#endif
14655#ifdef I_STDARG
14656 va_start(ap,p);
14657#else
14658 va_start(ap);
14659 p = va_arg(ap, char *);
14660#endif
14661 va_end(ap);
14662}
14663EOP
14664$cat > varargs <<EOP
14665$startsh
14666if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14667 echo "true"
14668else
14669 echo "false"
14670fi
14671$rm -f varargs$_o
14672EOP
14673chmod +x varargs
14674
14675: now check which varargs header should be included
14676echo " "
14677i_varhdr=''
14678case "$valstd" in
14679"$define")
14680 if `./varargs I_STDARG`; then
14681 val='stdarg.h'
14682 elif `./varargs I_VARARGS`; then
14683 val='varargs.h'
14684 fi
14685 ;;
14686*)
14687 if `./varargs I_VARARGS`; then
14688 val='varargs.h'
14689 fi
14690 ;;
14691esac
14692case "$val" in
14693'')
14694echo "I could not find the definition for va_dcl... You have problems..." >&4
14695 val="$undef"; set i_stdarg; eval $setvar
14696 val="$undef"; set i_varargs; eval $setvar
14697 ;;
14698*)
14699 set i_varhdr
14700 eval $setvar
14701 case "$i_varhdr" in
14702 stdarg.h)
14703 val="$define"; set i_stdarg; eval $setvar
14704 val="$undef"; set i_varargs; eval $setvar
14705 ;;
14706 varargs.h)
14707 val="$undef"; set i_stdarg; eval $setvar
14708 val="$define"; set i_varargs; eval $setvar
14709 ;;
14710 esac
14711 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14712esac
14713$rm -f varargs*
14714
14715: see if we need va_copy
14716echo " "
14717case "$i_stdarg" in
14718"$define")
14719 $cat >try.c <<EOCP
14720#include <stdarg.h>
14721#include <stdio.h>
14722#$i_stdlib I_STDLIB
14723#ifdef I_STDLIB
14724#include <stdlib.h>
14725#endif
14726#include <signal.h>
14727
14728int
14729ivfprintf(FILE *f, const char *fmt, va_list *valp)
14730{
14731 return vfprintf(f, fmt, *valp);
14732}
14733
14734int
14735myvfprintf(FILE *f, const char *fmt, va_list val)
14736{
14737 return ivfprintf(f, fmt, &val);
14738}
14739
14740int
14741myprintf(char *fmt, ...)
14742{
14743 va_list val;
14744 va_start(val, fmt);
14745 return myvfprintf(stdout, fmt, val);
14746}
14747
14748int
14749main(int ac, char **av)
14750{
14751 signal(SIGSEGV, exit);
14752
14753 myprintf("%s%cs all right, then\n", "that", '\'');
14754 exit(0);
14755}
14756EOCP
14757 set try
14758 if eval $compile && $run ./try 2>&1 >/dev/null; then
14759 case "`$run ./try`" in
14760 "that's all right, then")
14761 okay=yes
14762 ;;
14763 esac
14764 fi
14765 case "$okay" in
14766 yes) echo "It seems that you don't need va_copy()." >&4
14767 need_va_copy="$undef"
14768 ;;
14769 *) echo "It seems that va_copy() or similar will be needed." >&4
14770 need_va_copy="$define"
14771 ;;
14772 esac
14773 $rm -f try.* core core.* *.core *.core.*
14774 ;;
14775*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14776 ;;
14777esac
14778
14779: define a fucntion to check prototypes
14780$cat > protochk <<EOSH
14781$startsh
14782cc="$cc"
14783optimize="$optimize"
14784ccflags="$ccflags"
14785prototype="$prototype"
14786define="$define"
14787rm=$rm
14788EOSH
14789
14790$cat >> protochk <<'EOSH'
14791
14792$rm -f try.c
14793foo="$1"
14794shift
14795while test $# -ge 2; do
14796 case "$1" in
14797 $define) echo "#include <$2>" >> try.c ;;
14798 literal) echo "$2" >> try.c ;;
14799 esac
14800 shift 2
14801done
14802test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14803cat >> try.c <<'EOCP'
14804#ifdef CAN_PROTOTYPE
14805#define _(args) args
14806#else
14807#define _(args) ()
14808#endif
14809EOCP
14810echo "$foo" >> try.c
14811echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14812$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14813status=$?
14814$rm -f try.[co]
14815exit $status
14816EOSH
14817chmod +x protochk
14818$eunicefix protochk
14819
14820: see what type is used for size_t
14821rp="What is the type used for the length parameter for string functions?"
14822set size_t sizetype 'unsigned int' stdio.h sys/types.h
14823eval $typedef_ask
14824
14825: check for type of arguments to gethostbyaddr.
14826if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14827 case "$d_gethbyaddr" in
14828 $define)
14829 $cat <<EOM
14830
14831Checking to see what type of arguments are accepted by gethostbyaddr().
14832EOM
14833 hdrs="$define sys/types.h
14834 $d_socket sys/socket.h
14835 $i_niin netinet/in.h
14836 $i_netdb netdb.h
14837 $i_unistd unistd.h"
14838 : The first arg can 'char *' or 'void *'
14839 : The second arg is some of integral type
14840 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14841 for yyy in size_t long int; do
14842 case "$netdb_host_type" in
14843 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14844 if ./protochk "$try" $hdrs; then
14845 echo "Your system accepts $xxx for the first arg."
14846 echo "...and $yyy for the second arg."
14847 netdb_host_type="$xxx"
14848 netdb_hlen_type="$yyy"
14849 fi
14850 ;;
14851 esac
14852 done
14853 done
14854 : In case none of those worked, prompt the user.
14855 case "$netdb_host_type" in
14856 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14857 dflt='char *'
14858 . ./myread
14859 netdb_host_type=$ans
14860 rp='What is the type for the 2nd argument to gethostbyaddr?'
14861 dflt="$sizetype"
14862 . ./myread
14863 netdb_hlen_type=$ans
14864 ;;
14865 esac
14866 ;;
14867 *) : no gethostbyaddr, so pick harmless defaults
14868 netdb_host_type='char *'
14869 netdb_hlen_type="$sizetype"
14870 ;;
14871 esac
14872 # Remove the "const" if needed. -- but then we'll have a
14873 # prototype clash!
14874 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14875fi
14876
14877: check for type of argument to gethostbyname.
14878if test "X$netdb_name_type" = X ; then
14879 case "$d_gethbyname" in
14880 $define)
14881 $cat <<EOM
14882
14883Checking to see what type of argument is accepted by gethostbyname().
14884EOM
14885 hdrs="$define sys/types.h
14886 $d_socket sys/socket.h
14887 $i_niin netinet/in.h
14888 $i_netdb netdb.h
14889 $i_unistd unistd.h"
14890 for xxx in "const char *" "char *"; do
14891 case "$netdb_name_type" in
14892 '') try="extern struct hostent *gethostbyname($xxx);"
14893 if ./protochk "$try" $hdrs; then
14894 echo "Your system accepts $xxx."
14895 netdb_name_type="$xxx"
14896 fi
14897 ;;
14898 esac
14899 done
14900 : In case none of those worked, prompt the user.
14901 case "$netdb_name_type" in
14902 '') rp='What is the type for the 1st argument to gethostbyname?'
14903 dflt='char *'
14904 . ./myread
14905 netdb_name_type=$ans
14906 ;;
14907 esac
14908 ;;
14909 *) : no gethostbyname, so pick harmless default
14910 netdb_name_type='char *'
14911 ;;
14912 esac
14913fi
14914
14915: check for type of 1st argument to getnetbyaddr.
14916if test "X$netdb_net_type" = X ; then
14917 case "$d_getnbyaddr" in
14918 $define)
14919 $cat <<EOM
14920
14921Checking to see what type of 1st argument is accepted by getnetbyaddr().
14922EOM
14923 hdrs="$define sys/types.h
14924 $d_socket sys/socket.h
14925 $i_niin netinet/in.h
14926 $i_netdb netdb.h
14927 $i_unistd unistd.h"
14928 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14929 case "$netdb_net_type" in
14930 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14931 if ./protochk "$try" $hdrs; then
14932 echo "Your system accepts $xxx."
14933 netdb_net_type="$xxx"
14934 fi
14935 ;;
14936 esac
14937 done
14938 : In case none of those worked, prompt the user.
14939 case "$netdb_net_type" in
14940 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14941 dflt='long'
14942 . ./myread
14943 netdb_net_type=$ans
14944 ;;
14945 esac
14946 ;;
14947 *) : no getnetbyaddr, so pick harmless default
14948 netdb_net_type='long'
14949 ;;
14950 esac
14951fi
14952: locate the preferred pager for this system
14953case "$pager" in
14954'')
14955 dflt=''
14956 case "$pg" in
14957 /*) dflt=$pg;;
14958 [a-zA-Z]:/*) dflt=$pg;;
14959 esac
14960 case "$more" in
14961 /*) dflt=$more;;
14962 [a-zA-Z]:/*) dflt=$more;;
14963 esac
14964 case "$less" in
14965 /*) dflt=$less;;
14966 [a-zA-Z]:/*) dflt=$less;;
14967 esac
14968 case "$dflt" in
14969 '') dflt=/usr/ucb/more;;
14970 esac
14971 ;;
14972*) dflt="$pager";;
14973esac
14974echo " "
14975fn=f/
14976rp='What pager is used on your system?'
14977. ./getfile
14978pager="$ans"
14979
14980: see what type pids are declared as in the kernel
14981rp="What is the type of process ids on this system?"
14982set pid_t pidtype int stdio.h sys/types.h
14983eval $typedef_ask
14984
14985: Find earliest binary compatible site_perl subdirectory perl can use.
14986case "$bincompat5005" in
14987"$define") xs_apiversion='5.005' ;;
14988*) xs_apiversion=$version ;; # The current site_perl version.
14989esac
14990: Find earliest pure perl site_perl subdirectory perl can use.
14991: The versioned directories started at 5.005.
14992pm_apiversion='5.005'
14993
14994: see if ar generates random libraries by itself
14995echo " "
14996echo "Checking how to generate random libraries on your machine..." >&4
14997echo 'int bar1() { return bar2(); }' > bar1.c
14998echo 'int bar2() { return 2; }' > bar2.c
14999$cat > foo.c <<'EOP'
15000int main() { printf("%d\n", bar1()); exit(0); }
15001EOP
15002$cc $ccflags -c bar1.c >/dev/null 2>&1
15003$cc $ccflags -c bar2.c >/dev/null 2>&1
15004$cc $ccflags -c foo.c >/dev/null 2>&1
15005$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15006if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15007 $run ./foobar >/dev/null 2>&1; then
15008 echo "$ar appears to generate random libraries itself."
15009 orderlib=false
15010 ranlib=":"
15011elif $ar ts bar$_a >/dev/null 2>&1 &&
15012 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15013 $run ./foobar >/dev/null 2>&1; then
15014 echo "a table of contents needs to be added with '$ar ts'."
15015 orderlib=false
15016 ranlib="$ar ts"
15017else
15018 case "$ranlib" in
15019 :) ranlib='';;
15020 '')
15021 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15022 $test -f $ranlib || ranlib=''
15023 ;;
15024 esac
15025 if $test -n "$ranlib"; then
15026 echo "your system has '$ranlib'; we'll use that."
15027 orderlib=false
15028 else
15029 echo "your system doesn't seem to support random libraries"
15030 echo "so we'll use lorder and tsort to order the libraries."
15031 orderlib=true
15032 ranlib=":"
15033 fi
15034fi
15035$rm -f foo* bar*
15036
15037: check for type of arguments to select.
15038case "$selecttype" in
15039'') case "$d_select" in
15040 $define)
15041 echo " "
15042 $cat <<EOM
15043Checking to see what type of arguments are accepted by select().
15044EOM
15045 hdrs="$define sys/types.h
15046 $i_systime sys/time.h
15047 $i_sysselct sys/select.h
15048 $d_socket sys/socket.h"
15049 : The first arg can be int, unsigned, or size_t
15050 : The last arg may or may not be 'const'
15051 val=''
15052 : void pointer has been seen but using that
15053 : breaks the selectminbits test
15054 for xxx in 'fd_set *' 'int *'; do
15055 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15056 for tmo in 'struct timeval *' 'const struct timeval *'; do
15057 case "$val" in
15058 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15059 if ./protochk "$try" $hdrs; then
15060 echo "Your system accepts $xxx."
15061 val="$xxx"
15062 fi
15063 ;;
15064 esac
15065 done
15066 done
15067 done
15068 case "$val" in
15069 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15070 case "$d_fd_set" in
15071 $define) dflt="fd_set *" ;;
15072 *) dflt="int *" ;;
15073 esac
15074 . ./myread
15075 val=$ans
15076 ;;
15077 esac
15078 selecttype="$val"
15079 ;;
15080 *) : no select, so pick a harmless default
15081 selecttype='int *'
15082 ;;
15083 esac
15084 ;;
15085esac
15086
15087: check for the select 'width'
15088case "$selectminbits" in
15089'') case "$d_select" in
15090 $define)
15091 $cat <<EOM
15092
15093Checking to see on how many bits at a time your select() operates...
15094EOM
15095 $cat >try.c <<EOCP
15096#include <sys/types.h>
15097#$i_time I_TIME
15098#$i_systime I_SYS_TIME
15099#$i_systimek I_SYS_TIME_KERNEL
15100#ifdef I_TIME
15101# include <time.h>
15102#endif
15103#ifdef I_SYS_TIME
15104# ifdef I_SYS_TIME_KERNEL
15105# define KERNEL
15106# endif
15107# include <sys/time.h>
15108# ifdef I_SYS_TIME_KERNEL
15109# undef KERNEL
15110# endif
15111#endif
15112#$i_sysselct I_SYS_SELECT
15113#ifdef I_SYS_SELECT
15114#include <sys/select.h>
15115#endif
15116#$d_socket HAS_SOCKET
15117#ifdef HAS_SOCKET
15118# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15119#endif
15120#include <stdio.h>
15121$selecttype b;
15122#define S sizeof(*(b))
15123#define MINBITS 64
15124#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15125#define NBITS (NBYTES * 8)
15126int main() {
15127 char s[NBYTES];
15128 struct timeval t;
15129 int i;
15130 FILE* fp;
15131 int fd;
15132
15133 fclose(stdin);
15134 fp = fopen("try.c", "r");
15135 if (fp == 0)
15136 exit(1);
15137 fd = fileno(fp);
15138 if (fd < 0)
15139 exit(2);
15140 b = ($selecttype)s;
15141 for (i = 0; i < NBITS; i++)
15142 FD_SET(i, b);
15143 t.tv_sec = 0;
15144 t.tv_usec = 0;
15145 select(fd + 1, b, 0, 0, &t);
15146 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15147 printf("%d\n", i + 1);
15148 return 0;
15149}
15150EOCP
15151 set try
15152 if eval $compile_ok; then
15153 selectminbits=`$run ./try`
15154 case "$selectminbits" in
15155 '') cat >&4 <<EOM
15156Cannot figure out on how many bits at a time your select() operates.
15157I'll play safe and guess it is 32 bits.
15158EOM
15159 selectminbits=32
15160 bits="32 bits"
15161 ;;
15162 1) bits="1 bit" ;;
15163 *) bits="$selectminbits bits" ;;
15164 esac
15165 echo "Your select() operates on $bits at a time." >&4
15166 else
15167 rp='What is the minimum number of bits your select() operates on?'
15168 case "$byteorder" in
15169 1234|12345678) dflt=32 ;;
15170 *) dflt=1 ;;
15171 esac
15172 . ./myread
15173 val=$ans
15174 selectminbits="$val"
15175 fi
15176 $rm -f try.* try
15177 ;;
15178 *) : no select, so pick a harmless default
15179 selectminbits='32'
15180 ;;
15181 esac
15182 ;;
15183esac
15184
15185: Trace out the files included by signal.h, then look for SIGxxx names.
15186: Remove SIGARRAYSIZE used by HPUX.
15187: Remove SIGSTKSIZE used by Linux.
15188: Remove SIGSTKSZ used by Posix.
15189: Remove SIGTYP void lines used by OS2.
15190: Some cpps, like os390, dont give the file name anywhere
15191if [ "X$fieldn" = X ]; then
15192 : Just make some guesses. We check them later.
15193 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15194else
15195 xxx=`echo '#include <signal.h>' |
15196 $cppstdin $cppminus $cppflags 2>/dev/null |
15197 $grep '^[ ]*#.*include' |
15198 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15199fi
15200: Check this list of files to be sure we have parsed the cpp output ok.
15201: This will also avoid potentially non-existent files, such
15202: as ../foo/bar.h
15203xxxfiles=''
15204for xx in $xxx /dev/null ; do
15205 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15206done
15207: If we have found no files, at least try signal.h
15208case "$xxxfiles" in
15209'') xxxfiles=`./findhdr signal.h` ;;
15210esac
15211xxx=`awk '
15212$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15213 print substr($2, 4, 20)
15214}
15215$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15216 print substr($3, 4, 20)
15217}' $xxxfiles`
15218: Append some common names just in case the awk scan failed.
15219xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15220xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15221xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15222xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15223xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15224
15225: generate a few handy files for later
15226$cat > signal.c <<'EOCP'
15227#include <sys/types.h>
15228#include <signal.h>
15229#include <stdio.h>
15230int main() {
15231
15232/* Strange style to avoid deeply-nested #if/#else/#endif */
15233#ifndef NSIG
15234# ifdef _NSIG
15235# define NSIG (_NSIG)
15236# endif
15237#endif
15238
15239#ifndef NSIG
15240# ifdef SIGMAX
15241# define NSIG (SIGMAX+1)
15242# endif
15243#endif
15244
15245#ifndef NSIG
15246# ifdef SIG_MAX
15247# define NSIG (SIG_MAX+1)
15248# endif
15249#endif
15250
15251#ifndef NSIG
15252# ifdef MAXSIG
15253# define NSIG (MAXSIG+1)
15254# endif
15255#endif
15256
15257#ifndef NSIG
15258# ifdef MAX_SIG
15259# define NSIG (MAX_SIG+1)
15260# endif
15261#endif
15262
15263#ifndef NSIG
15264# ifdef SIGARRAYSIZE
15265# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15266# endif
15267#endif
15268
15269#ifndef NSIG
15270# ifdef _sys_nsig
15271# define NSIG (_sys_nsig) /* Solaris 2.5 */
15272# endif
15273#endif
15274
15275/* Default to some arbitrary number that's big enough to get most
15276 of the common signals.
15277*/
15278#ifndef NSIG
15279# define NSIG 50
15280#endif
15281
15282printf("NSIG %d\n", NSIG);
15283
15284#ifndef JUST_NSIG
15285
15286EOCP
15287
15288echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15289{
15290 printf "#ifdef SIG"; printf $1; printf "\n"
15291 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15292 printf $1; printf ");\n"
15293 printf "#endif\n"
15294}
15295END {
15296 printf "#endif /* JUST_NSIG */\n";
15297 printf "exit(0);\n}\n";
15298}
15299' >>signal.c
15300$cat >signal.awk <<'EOP'
15301BEGIN { ndups = 0 }
15302$1 ~ /^NSIG$/ { nsig = $2 }
15303($1 !~ /^NSIG$/) && (NF == 2) {
15304 if ($2 > maxsig) { maxsig = $2 }
15305 if (sig_name[$2]) {
15306 dup_name[ndups] = $1
15307 dup_num[ndups] = $2
15308 ndups++
15309 }
15310 else {
15311 sig_name[$2] = $1
15312 sig_num[$2] = $2
15313 }
15314}
15315END {
15316 if (nsig == 0) {
15317 nsig = maxsig + 1
15318 }
15319 printf("NSIG %d\n", nsig);
15320 for (n = 1; n < nsig; n++) {
15321 if (sig_name[n]) {
15322 printf("%s %d\n", sig_name[n], sig_num[n])
15323 }
15324 else {
15325 printf("NUM%d %d\n", n, n)
15326 }
15327 }
15328 for (n = 0; n < ndups; n++) {
15329 printf("%s %d\n", dup_name[n], dup_num[n])
15330 }
15331}
15332EOP
15333$cat >signal_cmd <<EOS
15334$startsh
15335if $test -s signal.lst; then
15336 echo "Using your existing signal.lst file"
15337 exit 0
15338fi
15339xxx="$xxx"
15340EOS
15341$cat >>signal_cmd <<'EOS'
15342
15343set signal
15344if eval $compile_ok; then
15345 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15346else
15347 echo "(I can't seem be able to compile the whole test program)" >&4
15348 echo "(I'll try it in little pieces.)" >&4
15349 set signal -DJUST_NSIG
15350 if eval $compile_ok; then
15351 $run ./signal$_exe > signal.nsg
15352 $cat signal.nsg
15353 else
15354 echo "I can't seem to figure out how many signals you have." >&4
15355 echo "Guessing 50." >&4
15356 echo 'NSIG 50' > signal.nsg
15357 fi
15358 : Now look at all the signal names, one at a time.
15359 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15360 $cat > signal.c <<EOCP
15361#include <sys/types.h>
15362#include <signal.h>
15363#include <stdio.h>
15364int main() {
15365printf("$xx %d\n", SIG${xx});
15366return 0;
15367}
15368EOCP
15369 set signal
15370 if eval $compile; then
15371 echo "SIG${xx} found."
15372 $run ./signal$_exe >> signal.ls1
15373 else
15374 echo "SIG${xx} NOT found."
15375 fi
15376 done
15377 if $test -s signal.ls1; then
15378 $cat signal.nsg signal.ls1 |
15379 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15380 fi
15381
15382fi
15383if $test -s signal.lst; then
15384 :
15385else
15386 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15387 echo 'kill -l' >signal
15388 set X `csh -f <signal`
15389 $rm -f signal
15390 shift
15391 case $# in
15392 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15393 esac
15394 echo $@ | $tr ' ' $trnl | \
15395 $awk '{ printf "%s %d\n", $1, ++s; }
15396 END { printf "NSIG %d\n", ++s }' >signal.lst
15397fi
15398$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15399EOS
15400chmod a+x signal_cmd
15401$eunicefix signal_cmd
15402
15403: generate list of signal names
15404echo " "
15405case "$sig_name_init" in
15406'') doinit=yes ;;
15407*) case "$sig_num_init" in
15408 ''|*,*) doinit=yes ;;
15409 esac ;;
15410esac
15411case "$doinit" in
15412yes)
15413 echo "Generating a list of signal names and numbers..." >&4
15414 . ./signal_cmd
15415 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15416 sig_name=`$awk 'BEGIN { printf "ZERO " }
15417 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15418 sig_num=`$awk 'BEGIN { printf "0 " }
15419 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15420 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15421 !/^NSIG/ { printf "\"%s\", ", $1 }
15422 END { printf "0\n" }' signal.lst`
15423 sig_num_init=`$awk 'BEGIN { printf "0, " }
15424 !/^NSIG/ { printf "%d, ", $2}
15425 END { printf "0\n"}' signal.lst`
15426 ;;
15427esac
15428echo "The following $sig_count signals are available:"
15429echo " "
15430echo $sig_name | $awk \
15431'BEGIN { linelen = 0 }
15432{
15433 for (i = 1; i <= NF; i++) {
15434 name = "SIG" $i " "
15435 linelen = linelen + length(name)
15436 if (linelen > 70) {
15437 printf "\n"
15438 linelen = length(name)
15439 }
15440 printf "%s", name
15441 }
15442 printf "\n"
15443}'
15444sig_size=`echo $sig_name | awk '{print NF}'`
15445$rm -f signal signal.c signal.awk signal.lst signal_cmd
15446
15447echo " "
15448case "$sizetype" in
15449*_t) zzz="$sizetype" ;;
15450*) zzz="filesize" ;;
15451esac
15452echo "Checking the size of $zzz..." >&4
15453cat > try.c <<EOCP
15454#include <sys/types.h>
15455#include <stdio.h>
15456int main() {
15457 printf("%d\n", (int)sizeof($sizetype));
15458 exit(0);
15459}
15460EOCP
15461set try
15462if eval $compile_ok; then
15463 yyy=`$run ./try`
15464 case "$yyy" in
15465 '') sizesize=4
15466 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15467 ;;
15468 *) sizesize=$yyy
15469 echo "Your $zzz size is $sizesize bytes."
15470 ;;
15471 esac
15472else
15473 sizesize=4
15474 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15475fi
15476
15477
15478: check for socklen_t
15479echo " "
15480echo "Checking to see if you have socklen_t..." >&4
15481$cat >try.c <<EOCP
15482#include <sys/types.h>
15483#$d_socket HAS_SOCKET
15484#ifdef HAS_SOCKET
15485#include <sys/socket.h>
15486#endif
15487int main() { socklen_t x = 16; }
15488EOCP
15489set try
15490if eval $compile; then
15491 val="$define"
15492 echo "You have socklen_t."
15493else
15494 val="$undef"
15495 echo "You do not have socklen_t."
15496 case "$sizetype" in
15497 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15498 esac
15499fi
15500$rm -f try try.*
15501set d_socklen_t
15502eval $setvar
15503
15504: see if this is a socks.h system
15505set socks.h i_socks
15506eval $inhdr
15507
15508: check for type of the size argument to socket calls
15509case "$d_socket" in
15510"$define")
15511 $cat <<EOM
15512
15513Checking to see what type is the last argument of accept().
15514EOM
15515 yyy=''
15516 case "$d_socklen_t" in
15517 "$define") yyy="$yyy socklen_t"
15518 esac
15519 yyy="$yyy $sizetype int long unsigned"
15520 for xxx in $yyy; do
15521 case "$socksizetype" in
15522 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15523 case "$usesocks" in
15524 "$define")
15525 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15526 echo "Your system accepts '$xxx *' for the last argument of accept()."
15527 socksizetype="$xxx"
15528 fi
15529 ;;
15530 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15531 echo "Your system accepts '$xxx *' for the last argument of accept()."
15532 socksizetype="$xxx"
15533 fi
15534 ;;
15535 esac
15536 ;;
15537 esac
15538 done
15539: In case none of those worked, prompt the user.
15540 case "$socksizetype" in
15541 '') rp='What is the type for socket address structure sizes?'
15542 dflt='int'
15543 . ./myread
15544 socksizetype=$ans
15545 ;;
15546 esac
15547 ;;
15548*) : no sockets, so pick relatively harmless default
15549 socksizetype='int'
15550 ;;
15551esac
15552
15553: see what type is used for signed size_t
15554set ssize_t ssizetype int stdio.h sys/types.h
15555eval $typedef
15556dflt="$ssizetype"
15557$cat > try.c <<EOM
15558#include <stdio.h>
15559#include <sys/types.h>
15560#define Size_t $sizetype
15561#define SSize_t $dflt
15562int main()
15563{
15564 if (sizeof(Size_t) == sizeof(SSize_t))
15565 printf("$dflt\n");
15566 else if (sizeof(Size_t) == sizeof(int))
15567 printf("int\n");
15568 else
15569 printf("long\n");
15570 exit(0);
15571}
15572EOM
15573echo " "
15574set try
15575if eval $compile_ok && $run ./try > /dev/null; then
15576 ssizetype=`$run ./try`
15577 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15578else
15579 $cat >&4 <<EOM
15580Help! I can't compile and run the ssize_t test program: please enlighten me!
15581(This is probably a misconfiguration in your system or libraries, and
15582you really ought to fix it. Still, I'll try anyway.)
15583
15584I need a type that is the same size as $sizetype, but is guaranteed to
15585be signed. Common values are ssize_t, int and long.
15586
15587EOM
15588 rp="What signed type is the same size as $sizetype?"
15589 . ./myread
15590 ssizetype="$ans"
15591fi
15592$rm -f try try.*
15593
15594: see what type of char stdio uses.
15595echo " "
15596echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15597if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15598 echo "Your stdio uses unsigned chars." >&4
15599 stdchar="unsigned char"
15600else
15601 echo "Your stdio uses signed chars." >&4
15602 stdchar="char"
15603fi
15604$rm -f stdioh
15605
15606
15607
15608: see if time exists
15609echo " "
15610if test "X$d_time" = X -o X"$timetype" = X; then
15611 if set time val -f d_time; eval $csym; $val; then
15612 echo 'time() found.' >&4
15613 val="$define"
15614 rp="What is the type returned by time() on this system?"
15615 set time_t timetype long stdio.h sys/types.h
15616 eval $typedef_ask
15617 else
15618 echo 'time() not found, hope that will do.' >&4
15619 val="$undef"
15620 timetype='int';
15621 fi
15622 set d_time
15623 eval $setvar
15624fi
15625
15626: see what type uids are declared as in the kernel
15627echo " "
15628echo "Looking for the type for user ids returned by getuid()."
15629set uid_t uidtype xxx stdio.h sys/types.h
15630eval $typedef
15631case "$uidtype" in
15632xxx)
15633 xxx=`./findhdr sys/user.h`
15634 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15635 case $1 in
15636 unsigned) dflt="$1 $2" ;;
15637 *) dflt="$1" ;;
15638 esac
15639 ;;
15640*) dflt="$uidtype";;
15641esac
15642case "$uidtype" in
15643uid_t) echo "uid_t found." ;;
15644*) rp="What is the type for user ids returned by getuid()?"
15645 . ./myread
15646 uidtype="$ans"
15647 ;;
15648esac
15649
15650echo " "
15651case "$uidtype" in
15652*_t) zzz="$uidtype" ;;
15653*) zzz="uid" ;;
15654esac
15655echo "Checking the size of $zzz..." >&4
15656cat > try.c <<EOCP
15657#include <sys/types.h>
15658#include <stdio.h>
15659int main() {
15660 printf("%d\n", (int)sizeof($uidtype));
15661 exit(0);
15662}
15663EOCP
15664set try
15665if eval $compile_ok; then
15666 yyy=`$run ./try`
15667 case "$yyy" in
15668 '') uidsize=4
15669 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15670 ;;
15671 *) uidsize=$yyy
15672 echo "Your $zzz is $uidsize bytes long."
15673 ;;
15674 esac
15675else
15676 uidsize=4
15677 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15678fi
15679
15680echo " "
15681case "$uidtype" in
15682*_t) zzz="$uidtype" ;;
15683*) zzz="uid" ;;
15684esac
15685echo "Checking the sign of $zzz..." >&4
15686cat > try.c <<EOCP
15687#include <sys/types.h>
15688#include <stdio.h>
15689int main() {
15690 $uidtype foo = -1;
15691 if (foo < 0)
15692 printf("-1\n");
15693 else
15694 printf("1\n");
15695}
15696EOCP
15697set try
15698if eval $compile; then
15699 yyy=`$run ./try`
15700 case "$yyy" in
15701 '') uidsign=1
15702 echo "(I can't execute the test program--guessing unsigned.)" >&4
15703 ;;
15704 *) uidsign=$yyy
15705 case "$uidsign" in
15706 1) echo "Your $zzz is unsigned." ;;
15707 -1) echo "Your $zzz is signed." ;;
15708 esac
15709 ;;
15710 esac
15711else
15712 uidsign=1
15713 echo "(I can't compile the test program--guessing unsigned.)" >&4
15714fi
15715
15716
15717
15718echo " "
15719$echo "Checking the format string to be used for uids..." >&4
15720
15721case "$uidsign" in
15722-1) if $test X"$uidsize" = X"$ivsize"; then
15723 uidformat="$ivdformat"
15724 else
15725 if $test X"$uidsize" = X"$longsize"; then
15726 uidformat='"ld"'
15727 else
15728 if $test X"$uidsize" = X"$intsize"; then
15729 uidformat='"d"'
15730 else
15731 if $test X"$uidsize" = X"$shortsize"; then
15732 uidformat='"hd"'
15733 fi
15734 fi
15735 fi
15736 fi
15737 ;;
15738*) if $test X"$uidsize" = X"$uvsize"; then
15739 uidformat="$uvuformat"
15740 else
15741 if $test X"$uidsize" = X"$longsize"; then
15742 uidformat='"lu"'
15743 else
15744 if $test X"$uidsize" = X"$intsize"; then
15745 uidformat='"u"'
15746 else
15747 if $test X"$uidsize" = X"$shortsize"; then
15748 uidformat='"hu"'
15749 fi
15750 fi
15751 fi
15752 fi
15753 ;;
15754esac
15755
15756: determine compiler compiler
15757case "$yacc" in
15758'')
15759 dflt=yacc;;
15760*)
15761 dflt="$yacc";;
15762esac
15763echo " "
15764comp='yacc'
15765if $test -f "$byacc"; then
15766 dflt="$byacc"
15767 comp="byacc or $comp"
15768fi
15769if $test -f "$bison"; then
15770 comp="$comp or bison -y"
15771fi
15772rp="Which compiler compiler ($comp) shall I use?"
15773. ./myread
15774yacc="$ans"
15775case "$yacc" in
15776*bis*)
15777 case "$yacc" in
15778 *-y*) ;;
15779 *)
15780 yacc="$yacc -y"
15781 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15782 ;;
15783 esac
15784 ;;
15785esac
15786
15787: see if fcntl.h is there
15788val=''
15789set fcntl.h val
15790eval $inhdr
15791
15792: see if we can include fcntl.h
15793case "$val" in
15794"$define")
15795 echo " "
15796 if $h_fcntl; then
15797 val="$define"
15798 echo "We'll be including <fcntl.h>." >&4
15799 else
15800 val="$undef"
15801 if $h_sysfile; then
15802 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15803 else
15804 echo "We won't be including <fcntl.h>." >&4
15805 fi
15806 fi
15807 ;;
15808*)
15809 h_fcntl=false
15810 val="$undef"
15811 ;;
15812esac
15813set i_fcntl
15814eval $setvar
15815
15816: see if this is a fp.h system
15817set fp.h i_fp
15818eval $inhdr
15819
15820: see if this is a fp_class.h system
15821set fp_class.h i_fp_class
15822eval $inhdr
15823
15824: see if this is a ieeefp.h system
15825set ieeefp.h i_ieeefp
15826eval $inhdr
15827
15828: see if this is a libutil.h system
15829set libutil.h i_libutil
15830eval $inhdr
15831
15832: see if locale.h is available
15833set locale.h i_locale
15834eval $inhdr
15835
15836: see if mach cthreads are available
15837if test "X$usethreads" = "X$define"; then
15838 set mach/cthreads.h i_machcthr
15839 eval $inhdr
15840else
15841 i_machcthr="$undef"
15842fi
15843
15844
15845
15846: see if this is a math.h system
15847set math.h i_math
15848eval $inhdr
15849
15850: see if this is a mntent.h system
15851set mntent.h i_mntent
15852eval $inhdr
15853
15854: see if ndbm.h is available
15855set ndbm.h t_ndbm
15856eval $inhdr
15857case "$t_ndbm" in
15858$define)
15859 : see if dbm_open exists
15860 set dbm_open d_dbm_open
15861 eval $inlibc
15862 case "$d_dbm_open" in
15863 $undef)
15864 t_ndbm="$undef"
15865 echo "We won't be including <ndbm.h>"
15866 ;;
15867 esac
15868 ;;
15869esac
15870val="$t_ndbm"
15871set i_ndbm
15872eval $setvar
15873
15874: see if net/errno.h is available
15875val=''
15876set net/errno.h val
15877eval $inhdr
15878
15879: Unfortunately, it causes problems on some systems. Arrgh.
15880case "$val" in
15881$define)
15882 cat > try.c <<'EOM'
15883#include <stdio.h>
15884#include <errno.h>
15885#include <net/errno.h>
15886int func()
15887{
15888 return ENOTSOCK;
15889}
15890EOM
15891 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15892 echo "We'll be including <net/errno.h>." >&4
15893 else
15894 echo "We won't be including <net/errno.h>." >&4
15895 val="$undef"
15896 fi
15897 $rm -f try.* try
15898 ;;
15899esac
15900set i_neterrno
15901eval $setvar
15902
15903: see if netinet/tcp.h is available
15904set netinet/tcp.h i_netinettcp
15905eval $inhdr
15906
15907: see if this is a poll.h system
15908set poll.h i_poll
15909eval $inhdr
15910
15911: see if this is a prot.h system
15912set prot.h i_prot
15913eval $inhdr
15914
15915echo " "
15916$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15917$cat <<'EOSH' > Cppsym.know
15918a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15919AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15920alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15921ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15922BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15923BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15924bull c cadmus clipper CMU COFF COMPILER_VERSION
15925concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15926CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15927Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15928FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15929GLIBC GLIBC_MINOR
15930GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15931H3050R H3050RX hbullx20 hcx host_mips
15932hp200 hp300 hp700 HP700 hp800 hp9000
15933hp9000s200 hp9000s300 hp9000s400 hp9000s500
15934hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15935i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15936IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15937INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15938LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15939LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15940Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15941LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15942M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15943M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15944M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15945MATH_HAS_NO_SIDE_EFFECTS
15946mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15947mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15948mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15949MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15950mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15951NetBSD news1500 news1700 news1800 news1900 news3700
15952news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15953ns32016 ns32332 ns32k nsc32000
15954OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15955pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15956pc532 pdp11 PGC PIC plexus PORTAR posix
15957POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15958POSIX_C_SOURCE POSIX_SOURCE POWER
15959PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15960riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15961SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15962sony sony_news sonyrisc sparc sparclite spectrum
15963stardent stdc STDC_EXT stratos sun sun3 sun386
15964Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15965SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15966SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15967sysV68 sysV88 Tek4132 Tek4300 titan
15968TM3200 TM5400 TM5600
15969tower tower32 tower32_200 tower32_600 tower32_700
15970tower32_800 tower32_850 tss
15971u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15972ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15973unix UNIX95 UNIX99 unixpc unos
15974USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15975USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15976USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15977USGr4 USGr4_2
15978Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15979XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15980XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15981z8000
15982EOSH
15983# Maybe put other stuff here too.
15984cat <<EOSH >>Cppsym.know
15985$osname
15986EOSH
15987./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15988./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15989$cat Cppsym.know > Cppsym.c
15990$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15991$rm -f Cppsym.a Cppsym.b Cppsym.c
15992cat <<EOSH > Cppsym
15993$startsh
15994if $test \$# -gt 0; then
15995 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15996 if $test -s Cppsym.got; then
15997 $rm -f Cppsym.got
15998 exit 0
15999 fi
16000 $rm -f Cppsym.got
16001 exit 1
16002else
16003 $tr " " "$trnl" | ./Cppsym.try
16004 exit 0
16005fi
16006EOSH
16007chmod +x Cppsym
16008$eunicefix Cppsym
16009cat <<EOSH > Cppsym.try
16010$startsh
16011cat <<'EOCP' > try.c
16012#include <stdio.h>
16013int main() {
16014EOCP
16015$awk \\
16016EOSH
16017cat <<'EOSH' >> Cppsym.try
16018'length($1) > 0 {
16019 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16020 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16021 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16022 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16023}' >> try.c
16024echo 'return 0;}' >> try.c
16025EOSH
16026cat <<EOSH >> Cppsym.try
16027ccflags="$ccflags"
16028case "$osname-$gccversion" in
16029irix-) ccflags="\$ccflags -woff 1178" ;;
16030os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16031esac
16032$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16033EOSH
16034chmod +x Cppsym.try
16035$eunicefix Cppsym.try
16036./Cppsym < Cppsym.know > Cppsym.true
16037: now check the C compiler for additional symbols
16038postprocess_cc_v=''
16039case "$osname" in
16040aix) postprocess_cc_v="|$tr , ' '" ;;
16041esac
16042$cat >ccsym <<EOS
16043$startsh
16044$cat >tmp.c <<EOF
16045extern int foo;
16046EOF
16047for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16048do
16049 case "\$i" in
16050 -D*) echo "\$i" | $sed 's/^-D//';;
16051 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16052 esac
16053done
16054$rm -f try.c
16055EOS
16056postprocess_cc_v=''
16057chmod +x ccsym
16058$eunicefix ccsym
16059./ccsym > ccsym1.raw
16060if $test -s ccsym1.raw; then
16061 $sort ccsym1.raw | $uniq >ccsym.raw
16062else
16063 mv ccsym1.raw ccsym.raw
16064fi
16065
16066$awk '/\=/ { print $0; next }
16067 { print $0"=1" }' ccsym.raw >ccsym.list
16068$awk '/\=/ { print $0; next }
16069 { print $0"=1" }' Cppsym.true >ccsym.true
16070$comm -13 ccsym.true ccsym.list >ccsym.own
16071$comm -12 ccsym.true ccsym.list >ccsym.com
16072$comm -23 ccsym.true ccsym.list >ccsym.cpp
16073also=''
16074if $test -z ccsym.raw; then
16075 echo "Your C compiler doesn't seem to define any symbols!" >&4
16076 echo " "
16077 echo "However, your C preprocessor defines the following symbols:"
16078 $cat Cppsym.true
16079 ccsymbols=''
16080 cppsymbols=`$cat Cppsym.true`
16081 cppsymbols=`echo $cppsymbols`
16082 cppccsymbols="$cppsymbols"
16083else
16084 if $test -s ccsym.com; then
16085 echo "Your C compiler and pre-processor define these symbols:"
16086 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16087 also='also '
16088 symbols='ones'
16089 cppccsymbols=`$cat ccsym.com`
16090 cppccsymbols=`echo $cppccsymbols`
16091 $test "$silent" || sleep 1
16092 fi
16093 if $test -s ccsym.cpp; then
16094 $test "$also" && echo " "
16095 echo "Your C pre-processor ${also}defines the following symbols:"
16096 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16097 also='further '
16098 cppsymbols=`$cat ccsym.cpp`
16099 cppsymbols=`echo $cppsymbols`
16100 $test "$silent" || sleep 1
16101 fi
16102 if $test -s ccsym.own; then
16103 $test "$also" && echo " "
16104 echo "Your C compiler ${also}defines the following cpp symbols:"
16105 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16106 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16107 ccsymbols=`$cat ccsym.own`
16108 ccsymbols=`echo $ccsymbols`
16109 $test "$silent" || sleep 1
16110 fi
16111fi
16112
16113: see if this is a termio system
16114val="$undef"
16115val2="$undef"
16116val3="$undef"
16117if $test `./findhdr termios.h`; then
16118 set tcsetattr i_termios
16119 eval $inlibc
16120 val3="$i_termios"
16121fi
16122echo " "
16123case "$val3" in
16124"$define") echo "You have POSIX termios.h... good!" >&4;;
16125*) if ./Cppsym pyr; then
16126 case "`/bin/universe`" in
16127 ucb) if $test `./findhdr sgtty.h`; then
16128 val2="$define"
16129 echo "<sgtty.h> found." >&4
16130 else
16131 echo "System is pyramid with BSD universe."
16132 echo "<sgtty.h> not found--you could have problems." >&4
16133 fi;;
16134 *) if $test `./findhdr termio.h`; then
16135 val="$define"
16136 echo "<termio.h> found." >&4
16137 else
16138 echo "System is pyramid with USG universe."
16139 echo "<termio.h> not found--you could have problems." >&4
16140 fi;;
16141 esac
16142 elif ./usg; then
16143 if $test `./findhdr termio.h`; then
16144 echo "<termio.h> found." >&4
16145 val="$define"
16146 elif $test `./findhdr sgtty.h`; then
16147 echo "<sgtty.h> found." >&4
16148 val2="$define"
16149 else
16150echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16151 fi
16152 else
16153 if $test `./findhdr sgtty.h`; then
16154 echo "<sgtty.h> found." >&4
16155 val2="$define"
16156 elif $test `./findhdr termio.h`; then
16157 echo "<termio.h> found." >&4
16158 val="$define"
16159 else
16160echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16161 fi
16162 fi;;
16163esac
16164set i_termio; eval $setvar
16165val=$val2; set i_sgtty; eval $setvar
16166val=$val3; set i_termios; eval $setvar
16167
16168: see if this is a shadow.h system
16169set shadow.h i_shadow
16170eval $inhdr
16171
16172: see if stddef is available
16173set stddef.h i_stddef
16174eval $inhdr
16175
16176: see if this is a sunmath.h system
16177set sunmath.h i_sunmath
16178eval $inhdr
16179
16180: see if sys/access.h is available
16181set sys/access.h i_sysaccess
16182eval $inhdr
16183
16184: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16185set sys/filio.h i_sysfilio
16186eval $inhdr
16187echo " "
16188if $test `./findhdr sys/ioctl.h`; then
16189 val="$define"
16190 echo '<sys/ioctl.h> found.' >&4
16191else
16192 val="$undef"
16193 if $test $i_sysfilio = "$define"; then
16194 echo '<sys/ioctl.h> NOT found.' >&4
16195 else
16196 $test $i_sgtty = "$define" && xxx="sgtty.h"
16197 $test $i_termio = "$define" && xxx="termio.h"
16198 $test $i_termios = "$define" && xxx="termios.h"
16199echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16200 fi
16201fi
16202set i_sysioctl
16203eval $setvar
16204
16205: see if socket ioctl defs are in sys/sockio.h
16206echo " "
16207xxx=`./findhdr sys/sockio.h`
16208if $test "$xxx"; then
16209 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16210 val="$define"
16211 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16212 else
16213 val="$undef"
16214 echo "No socket ioctls found in <sys/sockio.h>." >&4
16215 fi
16216else
16217 val="$undef"
16218 $cat <<EOM
16219<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16220EOM
16221fi
16222set i_syssockio
16223eval $setvar
16224
16225
16226: see if this is a syslog.h system
16227set syslog.h i_syslog
16228eval $inhdr
16229
16230
16231: see if this is a sys/mode.h system
16232set sys/mode.h i_sysmode
16233eval $inhdr
16234
16235: see if sys/resource.h has to be included
16236set sys/resource.h i_sysresrc
16237eval $inhdr
16238
16239: see if sys/security.h is available
16240set sys/security.h i_syssecrt
16241eval $inhdr
16242
16243: see if this is a sys/statvfs.h system
16244set sys/statvfs.h i_sysstatvfs
16245eval $inhdr
16246
16247: see if this is a sys/un.h system
16248set sys/un.h i_sysun
16249eval $inhdr
16250
16251
16252: see if this is a sys/utsname.h system
16253set sys/utsname.h i_sysutsname
16254eval $inhdr
16255
16256: see if this is a syswait system
16257set sys/wait.h i_syswait
16258eval $inhdr
16259
16260: see if this is a ustat.h system
16261set ustat.h i_ustat
16262eval $inhdr
16263
16264: see if this is an utime system
16265set utime.h i_utime
16266eval $inhdr
16267
16268: see if this is a values.h system
16269set values.h i_values
16270eval $inhdr
16271
16272: see if this is a vfork system
16273case "$d_vfork" in
16274"$define")
16275 set vfork.h i_vfork
16276 eval $inhdr
16277 ;;
16278*)
16279 i_vfork="$undef"
16280 ;;
16281esac
16282
16283: see if gdbm.h is available
16284set gdbm.h t_gdbm
16285eval $inhdr
16286case "$t_gdbm" in
16287$define)
16288 : see if gdbm_open exists
16289 set gdbm_open d_gdbm_open
16290 eval $inlibc
16291 case "$d_gdbm_open" in
16292 $undef)
16293 t_gdbm="$undef"
16294 echo "We won't be including <gdbm.h>"
16295 ;;
16296 esac
16297 ;;
16298esac
16299val="$t_gdbm"
16300set i_gdbm
16301eval $setvar
16302
16303echo " "
16304echo "Looking for extensions..." >&4
16305: If we are using the old config.sh, known_extensions may contain
16306: old or inaccurate or duplicate values.
16307known_extensions=''
16308nonxs_extensions=''
16309: We do not use find because it might not be available.
16310: We do not just use MANIFEST because the user may have dropped
16311: some additional extensions into the source tree and expect them
16312: to be built.
16313
16314: Function to recursively find available extensions, ignoring DynaLoader
16315: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16316find_extensions='
16317 for xxx in *; do
16318 case "$xxx" in
16319 DynaLoader|dynaload) ;;
16320 *)
16321 if $test -f $xxx/$xxx.xs; then
16322 known_extensions="$known_extensions $1$xxx";
16323 elif $test -f $xxx/Makefile.PL; then
16324 nonxs_extensions="$nonxs_extensions $1$xxx";
16325 else
16326 if $test -d $xxx -a $# -lt 10; then
16327 set $1$xxx/ $*;
16328 cd $xxx;
16329 eval $find_extensions;
16330 cd ..;
16331 shift;
16332 fi;
16333 fi
16334 ;;
16335 esac;
16336 done'
16337tdir=`pwd`
16338cd $rsrc/ext
16339set X
16340shift
16341eval $find_extensions
16342set X $nonxs_extensions
16343shift
16344nonxs_extensions="$*"
16345set X $known_extensions
16346shift
16347known_extensions="$*"
16348cd $tdir
16349
16350: Now see which are supported on this system.
16351avail_ext=''
16352for xxx in $known_extensions ; do
16353 case "$xxx" in
16354 DB_File|db_file)
16355 case "$i_db" in
16356 $define) avail_ext="$avail_ext $xxx" ;;
16357 esac
16358 ;;
16359 GDBM_File|gdbm_fil)
16360 case "$i_gdbm" in
16361 $define) avail_ext="$avail_ext $xxx" ;;
16362 esac
16363 ;;
16364 I18N/Langinfo|i18n_lan)
16365 case "$i_langinfo$d_nl_langinfo" in
16366 $define$define) avail_ext="$avail_ext $xxx" ;;
16367 esac
16368 ;;
16369 NDBM_File|ndbm_fil)
16370 case "$i_ndbm" in
16371 $define)
16372 case "$osname-$use64bitint" in
16373 cygwin-*|hpux-define)
16374 case "$libs" in
16375 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16376 esac
16377 ;;
16378 *) avail_ext="$avail_ext $xxx" ;;
16379 esac
16380 ;;
16381 esac
16382 ;;
16383 ODBM_File|odbm_fil)
16384 case "${i_dbm}${i_rpcsvcdbm}" in
16385 *"${define}"*)
16386 case "$osname-$use64bitint" in
16387 cygwin-*|hpux-define)
16388 case "$libs" in
16389 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16390 esac
16391 ;;
16392 *) avail_ext="$avail_ext $xxx" ;;
16393 esac
16394 ;;
16395 esac
16396 ;;
16397 POSIX|posix)
16398 case "$useposix" in
16399 true|define|y) avail_ext="$avail_ext $xxx" ;;
16400 esac
16401 ;;
16402 Opcode|opcode)
16403 case "$useopcode" in
16404 true|define|y) avail_ext="$avail_ext $xxx" ;;
16405 esac
16406 ;;
16407 Socket|socket)
16408 case "$d_socket" in
16409 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16410 esac
16411 ;;
16412 Sys/Syslog|sys/syslog)
16413 : XXX syslog requires socket
16414 case "$d_socket" in
16415 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16416 esac
16417 ;;
16418 Thread|thread)
16419 case "$usethreads" in
16420 true|$define|y)
16421 case "$useithreads" in
16422 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16423 esac
16424 esac
16425 ;;
16426 threads)
16427 case "$usethreads" in
16428 true|$define|y)
16429 case "$useithreads" in
16430 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16431 esac
16432 esac
16433 ;;
16434 IPC/SysV|ipc/sysv)
16435 : XXX Do we need a useipcsysv variable here
16436 case "${d_msg}${d_sem}${d_shm}" in
16437 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16438 esac
16439 ;;
16440 *) avail_ext="$avail_ext $xxx"
16441 ;;
16442 esac
16443done
16444
16445set X $avail_ext
16446shift
16447avail_ext="$*"
16448
16449: Now see which nonxs extensions are supported on this system.
16450: For now assume all are.
16451nonxs_ext=''
16452for xxx in $nonxs_extensions ; do
16453 case "$xxx" in
16454 *) nonxs_ext="$nonxs_ext $xxx"
16455 ;;
16456 esac
16457done
16458
16459set X $nonxs_ext
16460shift
16461nonxs_ext="$*"
16462
16463case $usedl in
16464$define)
16465 $cat <<EOM
16466A number of extensions are supplied with $package. You may choose to
16467compile these extensions for dynamic loading (the default), compile
16468them into the $package executable (static loading), or not include
16469them at all. Answer "none" to include no extensions.
16470Note that DynaLoader is always built and need not be mentioned here.
16471
16472EOM
16473 case "$dynamic_ext" in
16474 '') dflt="$avail_ext" ;;
16475 *) dflt="$dynamic_ext"
16476 # Perhaps we are reusing an old out-of-date config.sh.
16477 case "$hint" in
16478 previous)
16479 if test X"$dynamic_ext" != X"$avail_ext"; then
16480 $cat <<EOM
16481NOTICE: Your previous config.sh list may be incorrect.
16482The extensions now available to you are
16483 ${avail_ext}
16484but the default list from your previous config.sh is
16485 ${dynamic_ext}
16486
16487EOM
16488 fi
16489 ;;
16490 esac
16491 ;;
16492 esac
16493 case "$dflt" in
16494 '') dflt=none;;
16495 esac
16496 rp="What extensions do you wish to load dynamically?"
16497 . ./myread
16498 case "$ans" in
16499 none) dynamic_ext=' ' ;;
16500 *) dynamic_ext="$ans" ;;
16501 esac
16502
16503 case "$static_ext" in
16504 '')
16505 : Exclude those already listed in dynamic linking
16506 dflt=''
16507 for xxx in $avail_ext; do
16508 case " $dynamic_ext " in
16509 *" $xxx "*) ;;
16510 *) dflt="$dflt $xxx" ;;
16511 esac
16512 done
16513 set X $dflt
16514 shift
16515 dflt="$*"
16516 ;;
16517 *) dflt="$static_ext"
16518 ;;
16519 esac
16520
16521 case "$dflt" in
16522 '') dflt=none;;
16523 esac
16524 rp="What extensions do you wish to load statically?"
16525 . ./myread
16526 case "$ans" in
16527 none) static_ext=' ' ;;
16528 *) static_ext="$ans" ;;
16529 esac
16530 ;;
16531*)
16532 $cat <<EOM
16533A number of extensions are supplied with $package. Answer "none"
16534to include no extensions.
16535Note that DynaLoader is always built and need not be mentioned here.
16536
16537EOM
16538 case "$static_ext" in
16539 '') dflt="$avail_ext" ;;
16540 *) dflt="$static_ext"
16541 # Perhaps we are reusing an old out-of-date config.sh.
16542 case "$hint" in
16543 previous)
16544 if test X"$static_ext" != X"$avail_ext"; then
16545 $cat <<EOM
16546NOTICE: Your previous config.sh list may be incorrect.
16547The extensions now available to you are
16548 ${avail_ext}
16549but the default list from your previous config.sh is
16550 ${static_ext}
16551
16552EOM
16553 fi
16554 ;;
16555 esac
16556 ;;
16557 esac
16558 : Exclude those that are not xs extensions
16559 case "$dflt" in
16560 '') dflt=none;;
16561 esac
16562 rp="What extensions do you wish to include?"
16563 . ./myread
16564 case "$ans" in
16565 none) static_ext=' ' ;;
16566 *) static_ext="$ans" ;;
16567 esac
16568 ;;
16569esac
16570
16571set X $dynamic_ext $static_ext $nonxs_ext
16572shift
16573extensions="$*"
16574
16575: Remove libraries needed only for extensions
16576: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16577: The exception is SunOS 4.x, which needs them.
16578case "${osname}X${osvers}" in
16579sunos*X4*)
16580 perllibs="$libs"
16581 ;;
16582*) case "$usedl" in
16583 $define|true|[yY]*)
16584 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16585 shift
16586 perllibs="$*"
16587 ;;
16588 *) perllibs="$libs"
16589 ;;
16590 esac
16591 ;;
16592esac
16593
16594: Remove build directory name from cppstdin so it can be used from
16595: either the present location or the final installed location.
16596echo " "
16597: Get out of the UU directory to get correct path name.
16598cd ..
16599case "$cppstdin" in
16600`pwd`/cppstdin)
16601 echo "Stripping down cppstdin path name"
16602 cppstdin=cppstdin
16603 ;;
16604esac
16605cd UU
16606
16607: end of configuration questions
16608echo " "
16609echo "End of configuration questions."
16610echo " "
16611
16612: back to where it started
16613if test -d ../UU; then
16614 cd ..
16615fi
16616
16617: configuration may be patched via a 'config.over' file
16618if $test -f config.over; then
16619 echo " "
16620 dflt=y
16621 rp='I see a config.over file. Do you wish to load it?'
16622 . UU/myread
16623 case "$ans" in
16624 n*) echo "OK, I'll ignore it.";;
16625 *) . ./config.over
16626 echo "Configuration override changes have been loaded."
16627 ;;
16628 esac
16629fi
16630
16631: in case they want portability, strip down executable paths
16632case "$d_portable" in
16633"$define")
16634 echo " "
16635 echo "Stripping down executable paths..." >&4
16636 for file in $loclist $trylist; do
16637 eval temp=\$$file
16638 eval $file=`basename $temp`
16639 done
16640 ;;
16641esac
16642
16643: create config.sh file
16644echo " "
16645echo "Creating config.sh..." >&4
16646$spitshell <<EOT >config.sh
16647$startsh
16648#
16649# This file was produced by running the Configure script. It holds all the
16650# definitions figured out by Configure. Should you modify one of these values,
16651# do not forget to propagate your changes by running "Configure -der". You may
16652# instead choose to run each of the .SH files by yourself, or "Configure -S".
16653#
16654
16655# Package name : $package
16656# Source directory : $src
16657# Configuration time: $cf_time
16658# Configured by : $cf_by
16659# Target system : $myuname
16660
16661Author='$Author'
16662Date='$Date'
16663Header='$Header'
16664Id='$Id'
16665Locker='$Locker'
16666Log='$Log'
16667Mcc='$Mcc'
16668RCSfile='$RCSfile'
16669Revision='$Revision'
16670Source='$Source'
16671State='$State'
16672_a='$_a'
16673_exe='$_exe'
16674_o='$_o'
16675afs='$afs'
16676afsroot='$afsroot'
16677alignbytes='$alignbytes'
16678ansi2knr='$ansi2knr'
16679aphostname='$aphostname'
16680api_revision='$api_revision'
16681api_subversion='$api_subversion'
16682api_version='$api_version'
16683api_versionstring='$api_versionstring'
16684ar='$ar'
16685archlib='$archlib'
16686archlibexp='$archlibexp'
16687archname64='$archname64'
16688archname='$archname'
16689archobjs='$archobjs'
16690awk='$awk'
16691baserev='$baserev'
16692bash='$bash'
16693bin='$bin'
16694bincompat5005='$bincompat5005'
16695binexp='$binexp'
16696bison='$bison'
16697byacc='$byacc'
16698byteorder='$byteorder'
16699c='$c'
16700castflags='$castflags'
16701cat='$cat'
16702cc='$cc'
16703cccdlflags='$cccdlflags'
16704ccdlflags='$ccdlflags'
16705ccflags='$ccflags'
16706ccflags_uselargefiles='$ccflags_uselargefiles'
16707ccname='$ccname'
16708ccsymbols='$ccsymbols'
16709ccversion='$ccversion'
16710cf_by='$cf_by'
16711cf_email='$cf_email'
16712cf_time='$cf_time'
16713charsize='$charsize'
16714chgrp='$chgrp'
16715chmod='$chmod'
16716chown='$chown'
16717clocktype='$clocktype'
16718comm='$comm'
16719compress='$compress'
16720contains='$contains'
16721cp='$cp'
16722cpio='$cpio'
16723cpp='$cpp'
16724cpp_stuff='$cpp_stuff'
16725cppccsymbols='$cppccsymbols'
16726cppflags='$cppflags'
16727cpplast='$cpplast'
16728cppminus='$cppminus'
16729cpprun='$cpprun'
16730cppstdin='$cppstdin'
16731cppsymbols='$cppsymbols'
16732cryptlib='$cryptlib'
16733csh='$csh'
16734d_Gconvert='$d_Gconvert'
16735d_PRIEUldbl='$d_PRIEUldbl'
16736d_PRIFUldbl='$d_PRIFUldbl'
16737d_PRIGUldbl='$d_PRIGUldbl'
16738d_PRIXU64='$d_PRIXU64'
16739d_PRId64='$d_PRId64'
16740d_PRIeldbl='$d_PRIeldbl'
16741d_PRIfldbl='$d_PRIfldbl'
16742d_PRIgldbl='$d_PRIgldbl'
16743d_PRIi64='$d_PRIi64'
16744d_PRIo64='$d_PRIo64'
16745d_PRIu64='$d_PRIu64'
16746d_PRIx64='$d_PRIx64'
16747d_SCNfldbl='$d_SCNfldbl'
16748d__fwalk='$d__fwalk'
16749d_access='$d_access'
16750d_accessx='$d_accessx'
16751d_alarm='$d_alarm'
16752d_archlib='$d_archlib'
16753d_atolf='$d_atolf'
16754d_atoll='$d_atoll'
16755d_attribut='$d_attribut'
16756d_bcmp='$d_bcmp'
16757d_bcopy='$d_bcopy'
16758d_bincompat5005='$d_bincompat5005'
16759d_bsd='$d_bsd'
16760d_bsdgetpgrp='$d_bsdgetpgrp'
16761d_bsdsetpgrp='$d_bsdsetpgrp'
16762d_bzero='$d_bzero'
16763d_casti32='$d_casti32'
16764d_castneg='$d_castneg'
16765d_charvspr='$d_charvspr'
16766d_chown='$d_chown'
16767d_chroot='$d_chroot'
16768d_chsize='$d_chsize'
16769d_class='$d_class'
16770d_closedir='$d_closedir'
16771d_cmsghdr_s='$d_cmsghdr_s'
16772d_const='$d_const'
16773d_crypt='$d_crypt'
16774d_csh='$d_csh'
16775d_cuserid='$d_cuserid'
16776d_dbl_dig='$d_dbl_dig'
16777d_dbminitproto='$d_dbminitproto'
16778d_difftime='$d_difftime'
16779d_dirnamlen='$d_dirnamlen'
16780d_dlerror='$d_dlerror'
16781d_dlopen='$d_dlopen'
16782d_dlsymun='$d_dlsymun'
16783d_dosuid='$d_dosuid'
16784d_drand48proto='$d_drand48proto'
16785d_dup2='$d_dup2'
16786d_eaccess='$d_eaccess'
16787d_endgrent='$d_endgrent'
16788d_endhent='$d_endhent'
16789d_endnent='$d_endnent'
16790d_endpent='$d_endpent'
16791d_endpwent='$d_endpwent'
16792d_endsent='$d_endsent'
16793d_eofnblk='$d_eofnblk'
16794d_eunice='$d_eunice'
16795d_fchdir='$d_fchdir'
16796d_fchmod='$d_fchmod'
16797d_fchown='$d_fchown'
16798d_fcntl='$d_fcntl'
16799d_fcntl_can_lock='$d_fcntl_can_lock'
16800d_fd_macros='$d_fd_macros'
16801d_fd_set='$d_fd_set'
16802d_fds_bits='$d_fds_bits'
16803d_fgetpos='$d_fgetpos'
16804d_finite='$d_finite'
16805d_finitel='$d_finitel'
16806d_flexfnam='$d_flexfnam'
16807d_flock='$d_flock'
16808d_flockproto='$d_flockproto'
16809d_fork='$d_fork'
16810d_fp_class='$d_fp_class'
16811d_fpathconf='$d_fpathconf'
16812d_fpclass='$d_fpclass'
16813d_fpclassify='$d_fpclassify'
16814d_fpclassl='$d_fpclassl'
16815d_fpos64_t='$d_fpos64_t'
16816d_frexpl='$d_frexpl'
16817d_fs_data_s='$d_fs_data_s'
16818d_fseeko='$d_fseeko'
16819d_fsetpos='$d_fsetpos'
16820d_fstatfs='$d_fstatfs'
16821d_fstatvfs='$d_fstatvfs'
16822d_fsync='$d_fsync'
16823d_ftello='$d_ftello'
16824d_ftime='$d_ftime'
16825d_getcwd='$d_getcwd'
16826d_getespwnam='$d_getespwnam'
16827d_getfsstat='$d_getfsstat'
16828d_getgrent='$d_getgrent'
16829d_getgrps='$d_getgrps'
16830d_gethbyaddr='$d_gethbyaddr'
16831d_gethbyname='$d_gethbyname'
16832d_gethent='$d_gethent'
16833d_gethname='$d_gethname'
16834d_gethostprotos='$d_gethostprotos'
16835d_getitimer='$d_getitimer'
16836d_getlogin='$d_getlogin'
16837d_getmnt='$d_getmnt'
16838d_getmntent='$d_getmntent'
16839d_getnbyaddr='$d_getnbyaddr'
16840d_getnbyname='$d_getnbyname'
16841d_getnent='$d_getnent'
16842d_getnetprotos='$d_getnetprotos'
16843d_getpagsz='$d_getpagsz'
16844d_getpbyname='$d_getpbyname'
16845d_getpbynumber='$d_getpbynumber'
16846d_getpent='$d_getpent'
16847d_getpgid='$d_getpgid'
16848d_getpgrp2='$d_getpgrp2'
16849d_getpgrp='$d_getpgrp'
16850d_getppid='$d_getppid'
16851d_getprior='$d_getprior'
16852d_getprotoprotos='$d_getprotoprotos'
16853d_getprpwnam='$d_getprpwnam'
16854d_getpwent='$d_getpwent'
16855d_getsbyname='$d_getsbyname'
16856d_getsbyport='$d_getsbyport'
16857d_getsent='$d_getsent'
16858d_getservprotos='$d_getservprotos'
16859d_getspnam='$d_getspnam'
16860d_gettimeod='$d_gettimeod'
16861d_gnulibc='$d_gnulibc'
16862d_grpasswd='$d_grpasswd'
16863d_hasmntopt='$d_hasmntopt'
16864d_htonl='$d_htonl'
16865d_index='$d_index'
16866d_inetaton='$d_inetaton'
16867d_int64_t='$d_int64_t'
16868d_isascii='$d_isascii'
16869d_isfinite='$d_isfinite'
16870d_isinf='$d_isinf'
16871d_isnan='$d_isnan'
16872d_isnanl='$d_isnanl'
16873d_killpg='$d_killpg'
16874d_lchown='$d_lchown'
16875d_ldbl_dig='$d_ldbl_dig'
16876d_link='$d_link'
16877d_locconv='$d_locconv'
16878d_lockf='$d_lockf'
16879d_longdbl='$d_longdbl'
16880d_longlong='$d_longlong'
16881d_lseekproto='$d_lseekproto'
16882d_lstat='$d_lstat'
16883d_madvise='$d_madvise'
16884d_mblen='$d_mblen'
16885d_mbstowcs='$d_mbstowcs'
16886d_mbtowc='$d_mbtowc'
16887d_memchr='$d_memchr'
16888d_memcmp='$d_memcmp'
16889d_memcpy='$d_memcpy'
16890d_memmove='$d_memmove'
16891d_memset='$d_memset'
16892d_mkdir='$d_mkdir'
16893d_mkdtemp='$d_mkdtemp'
16894d_mkfifo='$d_mkfifo'
16895d_mkstemp='$d_mkstemp'
16896d_mkstemps='$d_mkstemps'
16897d_mktime='$d_mktime'
16898d_mmap='$d_mmap'
16899d_modfl='$d_modfl'
16900d_modfl_pow32_bug='$d_modfl_pow32_bug'
16901d_mprotect='$d_mprotect'
16902d_msg='$d_msg'
16903d_msg_ctrunc='$d_msg_ctrunc'
16904d_msg_dontroute='$d_msg_dontroute'
16905d_msg_oob='$d_msg_oob'
16906d_msg_peek='$d_msg_peek'
16907d_msg_proxy='$d_msg_proxy'
16908d_msgctl='$d_msgctl'
16909d_msgget='$d_msgget'
16910d_msghdr_s='$d_msghdr_s'
16911d_msgrcv='$d_msgrcv'
16912d_msgsnd='$d_msgsnd'
16913d_msync='$d_msync'
16914d_munmap='$d_munmap'
16915d_mymalloc='$d_mymalloc'
16916d_nice='$d_nice'
16917d_nl_langinfo='$d_nl_langinfo'
16918d_nv_preserves_uv='$d_nv_preserves_uv'
16919d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16920d_off64_t='$d_off64_t'
16921d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16922d_oldpthreads='$d_oldpthreads'
16923d_oldsock='$d_oldsock'
16924d_open3='$d_open3'
16925d_pathconf='$d_pathconf'
16926d_pause='$d_pause'
16927d_perl_otherlibdirs='$d_perl_otherlibdirs'
16928d_phostname='$d_phostname'
16929d_pipe='$d_pipe'
16930d_poll='$d_poll'
16931d_portable='$d_portable'
16932d_pthread_atfork='$d_pthread_atfork'
16933d_pthread_yield='$d_pthread_yield'
16934d_pwage='$d_pwage'
16935d_pwchange='$d_pwchange'
16936d_pwclass='$d_pwclass'
16937d_pwcomment='$d_pwcomment'
16938d_pwexpire='$d_pwexpire'
16939d_pwgecos='$d_pwgecos'
16940d_pwpasswd='$d_pwpasswd'
16941d_pwquota='$d_pwquota'
16942d_qgcvt='$d_qgcvt'
16943d_quad='$d_quad'
16944d_readdir='$d_readdir'
16945d_readlink='$d_readlink'
16946d_readv='$d_readv'
16947d_recvmsg='$d_recvmsg'
16948d_rename='$d_rename'
16949d_rewinddir='$d_rewinddir'
16950d_rmdir='$d_rmdir'
16951d_safebcpy='$d_safebcpy'
16952d_safemcpy='$d_safemcpy'
16953d_sanemcmp='$d_sanemcmp'
16954d_sbrkproto='$d_sbrkproto'
16955d_sched_yield='$d_sched_yield'
16956d_scm_rights='$d_scm_rights'
16957d_seekdir='$d_seekdir'
16958d_select='$d_select'
16959d_sem='$d_sem'
16960d_semctl='$d_semctl'
16961d_semctl_semid_ds='$d_semctl_semid_ds'
16962d_semctl_semun='$d_semctl_semun'
16963d_semget='$d_semget'
16964d_semop='$d_semop'
16965d_sendmsg='$d_sendmsg'
16966d_setegid='$d_setegid'
16967d_seteuid='$d_seteuid'
16968d_setgrent='$d_setgrent'
16969d_setgrps='$d_setgrps'
16970d_sethent='$d_sethent'
16971d_setitimer='$d_setitimer'
16972d_setlinebuf='$d_setlinebuf'
16973d_setlocale='$d_setlocale'
16974d_setnent='$d_setnent'
16975d_setpent='$d_setpent'
16976d_setpgid='$d_setpgid'
16977d_setpgrp2='$d_setpgrp2'
16978d_setpgrp='$d_setpgrp'
16979d_setprior='$d_setprior'
16980d_setproctitle='$d_setproctitle'
16981d_setpwent='$d_setpwent'
16982d_setregid='$d_setregid'
16983d_setresgid='$d_setresgid'
16984d_setresuid='$d_setresuid'
16985d_setreuid='$d_setreuid'
16986d_setrgid='$d_setrgid'
16987d_setruid='$d_setruid'
16988d_setsent='$d_setsent'
16989d_setsid='$d_setsid'
16990d_setvbuf='$d_setvbuf'
16991d_sfio='$d_sfio'
16992d_shm='$d_shm'
16993d_shmat='$d_shmat'
16994d_shmatprototype='$d_shmatprototype'
16995d_shmctl='$d_shmctl'
16996d_shmdt='$d_shmdt'
16997d_shmget='$d_shmget'
16998d_sigaction='$d_sigaction'
16999d_sigprocmask='$d_sigprocmask'
17000d_sigsetjmp='$d_sigsetjmp'
17001d_sockatmark='$d_sockatmark'
17002d_sockatmarkproto='$d_sockatmarkproto'
17003d_socket='$d_socket'
17004d_socklen_t='$d_socklen_t'
17005d_sockpair='$d_sockpair'
17006d_socks5_init='$d_socks5_init'
17007d_sqrtl='$d_sqrtl'
17008d_sresgproto='$d_sresgproto'
17009d_sresuproto='$d_sresuproto'
17010d_statblks='$d_statblks'
17011d_statfs_f_flags='$d_statfs_f_flags'
17012d_statfs_s='$d_statfs_s'
17013d_statvfs='$d_statvfs'
17014d_stdio_cnt_lval='$d_stdio_cnt_lval'
17015d_stdio_ptr_lval='$d_stdio_ptr_lval'
17016d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17017d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17018d_stdio_stream_array='$d_stdio_stream_array'
17019d_stdiobase='$d_stdiobase'
17020d_stdstdio='$d_stdstdio'
17021d_strchr='$d_strchr'
17022d_strcoll='$d_strcoll'
17023d_strctcpy='$d_strctcpy'
17024d_strerrm='$d_strerrm'
17025d_strerror='$d_strerror'
17026d_strftime='$d_strftime'
17027d_strtod='$d_strtod'
17028d_strtol='$d_strtol'
17029d_strtold='$d_strtold'
17030d_strtoll='$d_strtoll'
17031d_strtoq='$d_strtoq'
17032d_strtoul='$d_strtoul'
17033d_strtoull='$d_strtoull'
17034d_strtouq='$d_strtouq'
17035d_strxfrm='$d_strxfrm'
17036d_suidsafe='$d_suidsafe'
17037d_symlink='$d_symlink'
17038d_syscall='$d_syscall'
17039d_syscallproto='$d_syscallproto'
17040d_sysconf='$d_sysconf'
17041d_sysernlst='$d_sysernlst'
17042d_syserrlst='$d_syserrlst'
17043d_system='$d_system'
17044d_tcgetpgrp='$d_tcgetpgrp'
17045d_tcsetpgrp='$d_tcsetpgrp'
17046d_telldir='$d_telldir'
17047d_telldirproto='$d_telldirproto'
17048d_time='$d_time'
17049d_times='$d_times'
17050d_truncate='$d_truncate'
17051d_tzname='$d_tzname'
17052d_u32align='$d_u32align'
17053d_ualarm='$d_ualarm'
17054d_umask='$d_umask'
17055d_uname='$d_uname'
17056d_union_semun='$d_union_semun'
17057d_unordered='$d_unordered'
17058d_usleep='$d_usleep'
17059d_usleepproto='$d_usleepproto'
17060d_ustat='$d_ustat'
17061d_vendorarch='$d_vendorarch'
17062d_vendorbin='$d_vendorbin'
17063d_vendorlib='$d_vendorlib'
17064d_vfork='$d_vfork'
17065d_void_closedir='$d_void_closedir'
17066d_voidsig='$d_voidsig'
17067d_voidtty='$d_voidtty'
17068d_volatile='$d_volatile'
17069d_vprintf='$d_vprintf'
17070d_wait4='$d_wait4'
17071d_waitpid='$d_waitpid'
17072d_wcstombs='$d_wcstombs'
17073d_wctomb='$d_wctomb'
17074d_writev='$d_writev'
17075d_xenix='$d_xenix'
17076date='$date'
17077db_hashtype='$db_hashtype'
17078db_prefixtype='$db_prefixtype'
17079db_version_major='$db_version_major'
17080db_version_minor='$db_version_minor'
17081db_version_patch='$db_version_patch'
17082defvoidused='$defvoidused'
17083direntrytype='$direntrytype'
17084dlext='$dlext'
17085dlsrc='$dlsrc'
17086doublesize='$doublesize'
17087drand01='$drand01'
17088dynamic_ext='$dynamic_ext'
17089eagain='$eagain'
17090ebcdic='$ebcdic'
17091echo='$echo'
17092egrep='$egrep'
17093emacs='$emacs'
17094eunicefix='$eunicefix'
17095exe_ext='$exe_ext'
17096expr='$expr'
17097extensions='$extensions'
17098extras='$extras'
17099fflushNULL='$fflushNULL'
17100fflushall='$fflushall'
17101find='$find'
17102firstmakefile='$firstmakefile'
17103flex='$flex'
17104fpossize='$fpossize'
17105fpostype='$fpostype'
17106freetype='$freetype'
17107from='$from'
17108full_ar='$full_ar'
17109full_csh='$full_csh'
17110full_sed='$full_sed'
17111gccosandvers='$gccosandvers'
17112gccversion='$gccversion'
17113gidformat='$gidformat'
17114gidsign='$gidsign'
17115gidsize='$gidsize'
17116gidtype='$gidtype'
17117glibpth='$glibpth'
17118grep='$grep'
17119groupcat='$groupcat'
17120groupstype='$groupstype'
17121gzip='$gzip'
17122h_fcntl='$h_fcntl'
17123h_sysfile='$h_sysfile'
17124hint='$hint'
17125hostcat='$hostcat'
17126i16size='$i16size'
17127i16type='$i16type'
17128i32size='$i32size'
17129i32type='$i32type'
17130i64size='$i64size'
17131i64type='$i64type'
17132i8size='$i8size'
17133i8type='$i8type'
17134i_arpainet='$i_arpainet'
17135i_bsdioctl='$i_bsdioctl'
17136i_db='$i_db'
17137i_dbm='$i_dbm'
17138i_dirent='$i_dirent'
17139i_dld='$i_dld'
17140i_dlfcn='$i_dlfcn'
17141i_fcntl='$i_fcntl'
17142i_float='$i_float'
17143i_fp='$i_fp'
17144i_fp_class='$i_fp_class'
17145i_gdbm='$i_gdbm'
17146i_grp='$i_grp'
17147i_ieeefp='$i_ieeefp'
17148i_inttypes='$i_inttypes'
17149i_langinfo='$i_langinfo'
17150i_libutil='$i_libutil'
17151i_limits='$i_limits'
17152i_locale='$i_locale'
17153i_machcthr='$i_machcthr'
17154i_malloc='$i_malloc'
17155i_math='$i_math'
17156i_memory='$i_memory'
17157i_mntent='$i_mntent'
17158i_ndbm='$i_ndbm'
17159i_netdb='$i_netdb'
17160i_neterrno='$i_neterrno'
17161i_netinettcp='$i_netinettcp'
17162i_niin='$i_niin'
17163i_poll='$i_poll'
17164i_prot='$i_prot'
17165i_pthread='$i_pthread'
17166i_pwd='$i_pwd'
17167i_rpcsvcdbm='$i_rpcsvcdbm'
17168i_sfio='$i_sfio'
17169i_sgtty='$i_sgtty'
17170i_shadow='$i_shadow'
17171i_socks='$i_socks'
17172i_stdarg='$i_stdarg'
17173i_stddef='$i_stddef'
17174i_stdlib='$i_stdlib'
17175i_string='$i_string'
17176i_sunmath='$i_sunmath'
17177i_sysaccess='$i_sysaccess'
17178i_sysdir='$i_sysdir'
17179i_sysfile='$i_sysfile'
17180i_sysfilio='$i_sysfilio'
17181i_sysin='$i_sysin'
17182i_sysioctl='$i_sysioctl'
17183i_syslog='$i_syslog'
17184i_sysmman='$i_sysmman'
17185i_sysmode='$i_sysmode'
17186i_sysmount='$i_sysmount'
17187i_sysndir='$i_sysndir'
17188i_sysparam='$i_sysparam'
17189i_sysresrc='$i_sysresrc'
17190i_syssecrt='$i_syssecrt'
17191i_sysselct='$i_sysselct'
17192i_syssockio='$i_syssockio'
17193i_sysstat='$i_sysstat'
17194i_sysstatfs='$i_sysstatfs'
17195i_sysstatvfs='$i_sysstatvfs'
17196i_systime='$i_systime'
17197i_systimek='$i_systimek'
17198i_systimes='$i_systimes'
17199i_systypes='$i_systypes'
17200i_sysuio='$i_sysuio'
17201i_sysun='$i_sysun'
17202i_sysutsname='$i_sysutsname'
17203i_sysvfs='$i_sysvfs'
17204i_syswait='$i_syswait'
17205i_termio='$i_termio'
17206i_termios='$i_termios'
17207i_time='$i_time'
17208i_unistd='$i_unistd'
17209i_ustat='$i_ustat'
17210i_utime='$i_utime'
17211i_values='$i_values'
17212i_varargs='$i_varargs'
17213i_varhdr='$i_varhdr'
17214i_vfork='$i_vfork'
17215ignore_versioned_solibs='$ignore_versioned_solibs'
17216inc_version_list='$inc_version_list'
17217inc_version_list_init='$inc_version_list_init'
17218incpath='$incpath'
17219inews='$inews'
17220installarchlib='$installarchlib'
17221installbin='$installbin'
17222installman1dir='$installman1dir'
17223installman3dir='$installman3dir'
17224installprefix='$installprefix'
17225installprefixexp='$installprefixexp'
17226installprivlib='$installprivlib'
17227installscript='$installscript'
17228installsitearch='$installsitearch'
17229installsitebin='$installsitebin'
17230installsitelib='$installsitelib'
17231installstyle='$installstyle'
17232installusrbinperl='$installusrbinperl'
17233installvendorarch='$installvendorarch'
17234installvendorbin='$installvendorbin'
17235installvendorlib='$installvendorlib'
17236intsize='$intsize'
17237issymlink='$issymlink'
17238ivdformat='$ivdformat'
17239ivsize='$ivsize'
17240ivtype='$ivtype'
17241known_extensions='$known_extensions'
17242ksh='$ksh'
17243ld='$ld'
17244lddlflags='$lddlflags'
17245ldflags='$ldflags'
17246ldflags_uselargefiles='$ldflags_uselargefiles'
17247ldlibpthname='$ldlibpthname'
17248less='$less'
17249lib_ext='$lib_ext'
17250libc='$libc'
17251libperl='$libperl'
17252libpth='$libpth'
17253libs='$libs'
17254libsdirs='$libsdirs'
17255libsfiles='$libsfiles'
17256libsfound='$libsfound'
17257libspath='$libspath'
17258libswanted='$libswanted'
17259libswanted_uselargefiles='$libswanted_uselargefiles'
17260line='$line'
17261lint='$lint'
17262lkflags='$lkflags'
17263ln='$ln'
17264lns='$lns'
17265locincpth='$locincpth'
17266loclibpth='$loclibpth'
17267longdblsize='$longdblsize'
17268longlongsize='$longlongsize'
17269longsize='$longsize'
17270lp='$lp'
17271lpr='$lpr'
17272ls='$ls'
17273lseeksize='$lseeksize'
17274lseektype='$lseektype'
17275mail='$mail'
17276mailx='$mailx'
17277make='$make'
17278make_set_make='$make_set_make'
17279mallocobj='$mallocobj'
17280mallocsrc='$mallocsrc'
17281malloctype='$malloctype'
17282man1dir='$man1dir'
17283man1direxp='$man1direxp'
17284man1ext='$man1ext'
17285man3dir='$man3dir'
17286man3direxp='$man3direxp'
17287man3ext='$man3ext'
17288mips_type='$mips_type'
17289mkdir='$mkdir'
17290mmaptype='$mmaptype'
17291modetype='$modetype'
17292more='$more'
17293multiarch='$multiarch'
17294mv='$mv'
17295myarchname='$myarchname'
17296mydomain='$mydomain'
17297myhostname='$myhostname'
17298myuname='$myuname'
17299n='$n'
17300need_va_copy='$need_va_copy'
17301netdb_hlen_type='$netdb_hlen_type'
17302netdb_host_type='$netdb_host_type'
17303netdb_name_type='$netdb_name_type'
17304netdb_net_type='$netdb_net_type'
17305nm='$nm'
17306nm_opt='$nm_opt'
17307nm_so_opt='$nm_so_opt'
17308nonxs_ext='$nonxs_ext'
17309nroff='$nroff'
17310nvEUformat='$nvEUformat'
17311nvFUformat='$nvFUformat'
17312nvGUformat='$nvGUformat'
17313nveformat='$nveformat'
17314nvfformat='$nvfformat'
17315nvgformat='$nvgformat'
17316nvsize='$nvsize'
17317nvtype='$nvtype'
17318o_nonblock='$o_nonblock'
17319obj_ext='$obj_ext'
17320old_pthread_create_joinable='$old_pthread_create_joinable'
17321optimize='$optimize'
17322orderlib='$orderlib'
17323osname='$osname'
17324osvers='$osvers'
17325otherlibdirs='$otherlibdirs'
17326package='$package'
17327pager='$pager'
17328passcat='$passcat'
17329patchlevel='$patchlevel'
17330path_sep='$path_sep'
17331perl5='$perl5'
17332perl='$perl'
17333perl_patchlevel='$perl_patchlevel'
17334perladmin='$perladmin'
17335perllibs='$perllibs'
17336perlpath='$perlpath'
17337pg='$pg'
17338phostname='$phostname'
17339pidtype='$pidtype'
17340plibpth='$plibpth'
17341pm_apiversion='$pm_apiversion'
17342pmake='$pmake'
17343pr='$pr'
17344prefix='$prefix'
17345prefixexp='$prefixexp'
17346privlib='$privlib'
17347privlibexp='$privlibexp'
17348prototype='$prototype'
17349ptrsize='$ptrsize'
17350quadkind='$quadkind'
17351quadtype='$quadtype'
17352randbits='$randbits'
17353randfunc='$randfunc'
17354randseedtype='$randseedtype'
17355ranlib='$ranlib'
17356rd_nodata='$rd_nodata'
17357revision='$revision'
17358rm='$rm'
17359rmail='$rmail'
17360run='$run'
17361runnm='$runnm'
17362sPRIEUldbl='$sPRIEUldbl'
17363sPRIFUldbl='$sPRIFUldbl'
17364sPRIGUldbl='$sPRIGUldbl'
17365sPRIXU64='$sPRIXU64'
17366sPRId64='$sPRId64'
17367sPRIeldbl='$sPRIeldbl'
17368sPRIfldbl='$sPRIfldbl'
17369sPRIgldbl='$sPRIgldbl'
17370sPRIi64='$sPRIi64'
17371sPRIo64='$sPRIo64'
17372sPRIu64='$sPRIu64'
17373sPRIx64='$sPRIx64'
17374sSCNfldbl='$sSCNfldbl'
17375sched_yield='$sched_yield'
17376scriptdir='$scriptdir'
17377scriptdirexp='$scriptdirexp'
17378sed='$sed'
17379seedfunc='$seedfunc'
17380selectminbits='$selectminbits'
17381selecttype='$selecttype'
17382sendmail='$sendmail'
17383sh='$sh'
17384shar='$shar'
17385sharpbang='$sharpbang'
17386shmattype='$shmattype'
17387shortsize='$shortsize'
17388shrpenv='$shrpenv'
17389shsharp='$shsharp'
17390sig_count='$sig_count'
17391sig_name='$sig_name'
17392sig_name_init='$sig_name_init'
17393sig_num='$sig_num'
17394sig_num_init='$sig_num_init'
17395sig_size='$sig_size'
17396signal_t='$signal_t'
17397sitearch='$sitearch'
17398sitearchexp='$sitearchexp'
17399sitebin='$sitebin'
17400sitebinexp='$sitebinexp'
17401sitelib='$sitelib'
17402sitelib_stem='$sitelib_stem'
17403sitelibexp='$sitelibexp'
17404siteprefix='$siteprefix'
17405siteprefixexp='$siteprefixexp'
17406sizesize='$sizesize'
17407sizetype='$sizetype'
17408sleep='$sleep'
17409smail='$smail'
17410so='$so'
17411sockethdr='$sockethdr'
17412socketlib='$socketlib'
17413socksizetype='$socksizetype'
17414sort='$sort'
17415spackage='$spackage'
17416spitshell='$spitshell'
17417src='$src'
17418ssizetype='$ssizetype'
17419startperl='$startperl'
17420startsh='$startsh'
17421static_ext='$static_ext'
17422stdchar='$stdchar'
17423stdio_base='$stdio_base'
17424stdio_bufsiz='$stdio_bufsiz'
17425stdio_cnt='$stdio_cnt'
17426stdio_filbuf='$stdio_filbuf'
17427stdio_ptr='$stdio_ptr'
17428stdio_stream_array='$stdio_stream_array'
17429strings='$strings'
17430submit='$submit'
17431subversion='$subversion'
17432sysman='$sysman'
17433tail='$tail'
17434tar='$tar'
17435targetarch='$targetarch'
17436tbl='$tbl'
17437tee='$tee'
17438test='$test'
17439timeincl='$timeincl'
17440timetype='$timetype'
17441to='$to'
17442touch='$touch'
17443tr='$tr'
17444trnl='$trnl'
17445troff='$troff'
17446u16size='$u16size'
17447u16type='$u16type'
17448u32size='$u32size'
17449u32type='$u32type'
17450u64size='$u64size'
17451u64type='$u64type'
17452u8size='$u8size'
17453u8type='$u8type'
17454uidformat='$uidformat'
17455uidsign='$uidsign'
17456uidsize='$uidsize'
17457uidtype='$uidtype'
17458uname='$uname'
17459uniq='$uniq'
17460uquadtype='$uquadtype'
17461use5005threads='$use5005threads'
17462use64bitall='$use64bitall'
17463use64bitint='$use64bitint'
17464usecrosscompile='$usecrosscompile'
17465usedl='$usedl'
17466useithreads='$useithreads'
17467uselargefiles='$uselargefiles'
17468uselongdouble='$uselongdouble'
17469usemorebits='$usemorebits'
17470usemultiplicity='$usemultiplicity'
17471usemymalloc='$usemymalloc'
17472usenm='$usenm'
17473useopcode='$useopcode'
17474useperlio='$useperlio'
17475useposix='$useposix'
17476usereentrant='$usereentrant'
17477usesfio='$usesfio'
17478useshrplib='$useshrplib'
17479usesocks='$usesocks'
17480usethreads='$usethreads'
17481usevendorprefix='$usevendorprefix'
17482usevfork='$usevfork'
17483usrinc='$usrinc'
17484uuname='$uuname'
17485uvXUformat='$uvXUformat'
17486uvoformat='$uvoformat'
17487uvsize='$uvsize'
17488uvtype='$uvtype'
17489uvuformat='$uvuformat'
17490uvxformat='$uvxformat'
17491vendorarch='$vendorarch'
17492vendorarchexp='$vendorarchexp'
17493vendorbin='$vendorbin'
17494vendorbinexp='$vendorbinexp'
17495vendorlib='$vendorlib'
17496vendorlib_stem='$vendorlib_stem'
17497vendorlibexp='$vendorlibexp'
17498vendorprefix='$vendorprefix'
17499vendorprefixexp='$vendorprefixexp'
17500version='$version'
17501version_patchlevel_string='$version_patchlevel_string'
17502versiononly='$versiononly'
17503vi='$vi'
17504voidflags='$voidflags'
17505xlibpth='$xlibpth'
17506xs_apiversion='$xs_apiversion'
17507yacc='$yacc'
17508yaccflags='$yaccflags'
17509zcat='$zcat'
17510zip='$zip'
17511EOT
17512
17513: Add in command line options if available
17514$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17515
17516: add special variables
17517$test -f $src/patchlevel.h && \
17518awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17519echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17520echo "PERL_CONFIG_SH=true" >>config.sh
17521
17522: propagate old symbols
17523if $test -f UU/config.sh; then
17524 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17525 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17526 $sort | $uniq -u >UU/oldsyms
17527 set X `cat UU/oldsyms`
17528 shift
17529 case $# in
17530 0) ;;
17531 *)
17532 cat <<EOM
17533Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17534EOM
17535 echo "# Variables propagated from previous config.sh file." >>config.sh
17536 for sym in `cat UU/oldsyms`; do
17537 echo " Propagating $hint variable "'$'"$sym..."
17538 eval 'tmp="$'"${sym}"'"'
17539 echo "$tmp" | \
17540 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17541 done
17542 ;;
17543 esac
17544fi
17545
17546: Finish up by extracting the .SH files
17547case "$alldone" in
17548exit)
17549 $rm -rf UU
17550 echo "Extraction done."
17551 exit 0
17552 ;;
17553cont)
17554 ;;
17555'')
17556 dflt=''
17557 nostick=true
17558 $cat <<EOM
17559
17560If you'd like to make any changes to the config.sh file before I begin
17561to configure things, do it as a shell escape now (e.g. !vi config.sh).
17562
17563EOM
17564 rp="Press return or use a shell escape to edit config.sh:"
17565 . UU/myread
17566 nostick=''
17567 case "$ans" in
17568 '') ;;
17569 *) : in case they cannot read
17570 sh 1>&4 -c "$ans";;
17571 esac
17572 ;;
17573esac
17574
17575: if this fails, just run all the .SH files by hand
17576. ./config.sh
17577
17578echo " "
17579exec 1>&4
17580pwd=`pwd`
17581. ./UU/extract
17582cd $pwd
17583
17584if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17585 dflt=y
17586 case "$silent" in
17587 true) ;;
17588 *)
17589 $cat <<EOM
17590
17591Now you need to generate make dependencies by running "$make depend".
17592You might prefer to run it in background: "$make depend > makedepend.out &"
17593It can take a while, so you might not want to run it right now.
17594
17595EOM
17596 ;;
17597 esac
17598 rp="Run $make depend now?"
17599 . UU/myread
17600 case "$ans" in
17601 y*)
17602 $make depend && echo "Now you must run '$make'."
17603 ;;
17604 *)
17605 echo "You must run '$make depend' then '$make'."
17606 ;;
17607 esac
17608elif test -f [Mm]akefile; then
17609 echo " "
17610 echo "Now you must run a $make."
17611else
17612 echo "Configure done."
17613fi
17614
17615if $test -f Policy.sh; then
17616 $cat <<EOM
17617
17618If you compile $package on a different machine or from a different object
17619directory, copy the Policy.sh file from this object directory to the
17620new one before you run Configure -- this will help you with most of
17621the policy defaults.
17622
17623EOM
17624fi
17625if $test -f config.msg; then
17626 echo "Hmm. I also noted the following information while running:"
17627 echo " "
17628 $cat config.msg >&4
17629 $rm -f config.msg
17630fi
17631$rm -f kit*isdone ark*isdone
17632$rm -rf UU
17633
17634: End of Configure
17635