This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add test for change #22746 ([perl #29102] Crash on assign to lex fh)
[perl5.git] / Configure
CommitLineData
2304df62
AD
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
dfe9444c
AD
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.)
2304df62
AD
19#
20
dfe9444c 21# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
2304df62 22#
416d0bea 23# Generated on Wed Apr 14 18:21:40 METDST 2004 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
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
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
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
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
f6538904 50if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
cbee2ce6
JH
51 cat >&4 <<EOF
52***
53*** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54*** Configure that well. (Plan 9 is close to UNIX but not close enough.)
55*** Please read the README.plan9 for further instructions.
56*** Cannot continue, aborting.
57***
58EOF
59 exit 1
60fi
61
a0d0e21e
LW
62: compute my invocation name
63me=$0
64case "$0" in
65*/*)
66 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67 test "$me" || me=$0
68 ;;
69esac
70
dfe9444c 71: Proper separator for the PATH environment variable
8e07c86e
AD
72p_=:
73: On OS/2 this directory should exist if this is not floppy only system :-]
5c728af0 74if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
dfe9444c
AD
75 if test -n "$OS2_SHELL"; then
76 p_=\;
77 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
5c728af0 79 is_os2=yes
c4f23d77 80 elif test -n "$DJGPP"; then
495e2cbe
MB
81 case "X${MACHTYPE:-nonesuchmach}" in
82 *cygwin) ;;
83 *) p_=\; ;;
84 esac
dfe9444c 85 fi
39e571d4 86fi
a0d0e21e
LW
87
88: Proper PATH setting
89paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 90paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 91paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 92paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
93paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96paths="$paths /sbin /usr/sbin /usr/libexec"
3c728e00 97paths="$paths /system/gnu_library/bin"
a0d0e21e
LW
98
99for p in $paths
100do
8e07c86e
AD
101 case "$p_$PATH$p_" in
102 *$p_$p$p_*) ;;
103 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
104 esac
105done
106
8e07c86e 107PATH=.$p_$PATH
2304df62
AD
108export PATH
109
dfe9444c
AD
110: shall we be using ksh?
111inksh=''
112needksh=''
113avoidksh=''
114newsh=/bin/ksh
115changesh=''
ff0cee69 116if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
117 inksh=true
118fi
119if test -f /hp-ux -a -f /bin/ksh; then
120 needksh='to avoid sh bug in "here document" expansion'
121fi
122if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123 if test X`/usr/bin/uname -v` = X4; then
124 avoidksh="to avoid AIX 4's /bin/sh"
125 newsh=/usr/bin/bsh
2304df62 126 fi
dfe9444c 127fi
cf04f91f
JH
128if test -f /osf_boot -a -f /usr/sbin/setld; then
129 if test X`/usr/bin/uname -s` = XOSF1; then
130 avoidksh="to avoid Digital UNIX' ksh"
131 newsh=/bin/sh
132 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133 fi
134fi
dfe9444c
AD
135case "$inksh/$needksh" in
136/[a-z]*)
c4f23d77 137 ENV=''
dfe9444c
AD
138 changesh=true
139 reason="$needksh"
140 ;;
141esac
142case "$inksh/$avoidksh" in
143true/[a-z]*)
144 changesh=true
145 reason="$avoidksh"
146 ;;
147esac
148case "$inksh/$needksh-$avoidksh-" in
149true/--)
a0d0e21e
LW
150 cat <<EOM
151(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 152mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 153EOM
dfe9444c
AD
154 ;;
155esac
156case "$changesh" in
157true)
2e2a97a6 158 export newsh
dfe9444c
AD
159 echo "(Feeding myself to $newsh $reason.)"
160 case "$0" in
161 Configure|*/Configure) exec $newsh $0 "$@";;
162 *) exec $newsh Configure "$@";;
163 esac
164 ;;
165esac
2304df62 166
bfb7748a
AD
167: if needed set CDPATH to a harmless value that is not chatty
168: avoid bash 2.02 problems with empty CDPATH.
169case "$CDPATH" in
170'') ;;
171*) case "$SHELL" in
172 *bash*) CDPATH='.' ;;
173 *) CDPATH='' ;;
174 esac
175 ;;
176esac
2304df62
AD
177: Configure runs within the UU subdirectory
178test -d UU || mkdir UU
8e07c86e 179cd UU && rm -f ./*
2304df62 180
6b356c8e
JH
181ccname=''
182ccversion=''
b4eb6b3d
JH
183ccsymbols=''
184cppccsymbols=''
185cppsymbols=''
5440bc8e
JH
186from=''
187run=''
188targetarch=''
189to=''
190usecrosscompile=''
6b34ded5 191mistrustnm=''
9c839522 192perllibs=''
b4eb6b3d
JH
193dynamic_ext=''
194extensions=''
195known_extensions=''
196nonxs_ext=''
197static_ext=''
198useopcode=''
199useposix=''
6fcddf3b 200extras=''
ecfc5424 201d_bsd=''
40a7a20a 202d_eunice=''
2304df62
AD
203d_xenix=''
204eunicefix=''
205Mcc=''
dfe9444c 206ar=''
2304df62
AD
207awk=''
208bash=''
209bison=''
210byacc=''
211cat=''
212chgrp=''
213chmod=''
214chown=''
ecfc5424 215comm=''
2304df62
AD
216compress=''
217cp=''
218cpio=''
219cpp=''
220csh=''
221date=''
222echo=''
223egrep=''
224emacs=''
225expr=''
226find=''
227flex=''
3c728e00 228gmake=''
2304df62 229grep=''
8ff267be 230gzip=''
2304df62
AD
231inews=''
232ksh=''
233less=''
234line=''
235lint=''
236ln=''
237lp=''
238lpr=''
239ls=''
240mail=''
241mailx=''
dfe9444c 242make=''
2304df62
AD
243mkdir=''
244more=''
245mv=''
693762b4 246nm=''
2304df62
AD
247nroff=''
248perl=''
249pg=''
250pmake=''
251pr=''
252rm=''
253rmail=''
254sed=''
255sendmail=''
2304df62
AD
256shar=''
257sleep=''
258smail=''
259sort=''
260submit=''
261tail=''
262tar=''
263tbl=''
693762b4 264tee=''
2304df62
AD
265test=''
266touch=''
267tr=''
268troff=''
269uname=''
270uniq=''
271uuname=''
272vi=''
273zcat=''
8ff267be 274zip=''
b4eb6b3d
JH
275full_ar=''
276full_sed=''
a0d0e21e 277libswanted=''
2304df62
AD
278hint=''
279myuname=''
85e6fe83
LW
280osname=''
281osvers=''
2304df62
AD
282Author=''
283Date=''
284Header=''
285Id=''
286Locker=''
287Log=''
288RCSfile=''
289Revision=''
290Source=''
291State=''
dfe9444c
AD
292_a=''
293_exe=''
294_o=''
4633a7c4
LW
295archobjs=''
296exe_ext=''
297firstmakefile=''
298lib_ext=''
299obj_ext=''
300path_sep=''
b4eb6b3d 301afs=''
a6d26a0d 302afsroot=''
b4eb6b3d
JH
303alignbytes=''
304ansi2knr=''
305archlib=''
306archlibexp=''
307d_archlib=''
308installarchlib=''
309archname=''
310myarchname=''
311d_atolf=''
312d_atoll=''
313baserev=''
314bin=''
315binexp=''
316installbin=''
b4eb6b3d 317byteorder=''
2304df62 318cc=''
2304df62
AD
319ccflags=''
320cppflags=''
321ldflags=''
322lkflags=''
8e07c86e 323locincpth=''
2304df62 324optimize=''
b4eb6b3d 325cf_email=''
2304df62
AD
326cf_by=''
327cf_time=''
b4eb6b3d 328charsize=''
2304df62 329contains=''
b4eb6b3d 330cpp_stuff=''
2304df62
AD
331cpplast=''
332cppminus=''
333cpprun=''
334cppstdin=''
74cac757 335d__fwalk=''
b4eb6b3d
JH
336d_access=''
337d_accessx=''
55954f19 338d_aintl=''
b4eb6b3d 339d_alarm=''
10bc17b6
JH
340asctime_r_proto=''
341d_asctime_r=''
b4eb6b3d
JH
342d_attribut=''
343d_bcmp=''
344d_bcopy=''
345d_bzero=''
346d_casti32=''
347castflags=''
348d_castneg=''
349d_chown=''
350d_chroot=''
351d_chsize=''
758a5d79 352d_class=''
b4eb6b3d
JH
353d_closedir=''
354d_void_closedir=''
4e0554ec 355d_cmsghdr_s=''
b4eb6b3d 356d_const=''
36adc09b 357d_copysignl=''
b4eb6b3d
JH
358cryptlib=''
359d_crypt=''
10bc17b6
JH
360crypt_r_proto=''
361d_crypt_r=''
b4eb6b3d
JH
362d_csh=''
363full_csh=''
10bc17b6
JH
364ctermid_r_proto=''
365d_ctermid_r=''
366ctime_r_proto=''
367d_ctime_r=''
b4eb6b3d
JH
368d_cuserid=''
369d_dbl_dig=''
2ef53570 370d_dbminitproto=''
b4eb6b3d 371d_difftime=''
ae0e3d3b 372d_dirfd=''
b4eb6b3d 373d_dlerror=''
a0d0e21e 374d_dlopen=''
b4eb6b3d
JH
375d_dlsymun=''
376d_dosuid=''
377d_suidsafe=''
10bc17b6
JH
378d_drand48_r=''
379drand48_r_proto=''
b4eb6b3d
JH
380d_drand48proto=''
381d_dup2=''
382d_eaccess=''
383d_endgrent=''
10bc17b6
JH
384d_endgrent_r=''
385endgrent_r_proto=''
b4eb6b3d 386d_endhent=''
10bc17b6
JH
387d_endhostent_r=''
388endhostent_r_proto=''
b4eb6b3d 389d_endnent=''
10bc17b6
JH
390d_endnetent_r=''
391endnetent_r_proto=''
b4eb6b3d 392d_endpent=''
10bc17b6
JH
393d_endprotoent_r=''
394endprotoent_r_proto=''
b4eb6b3d 395d_endpwent=''
10bc17b6
JH
396d_endpwent_r=''
397endpwent_r_proto=''
b4eb6b3d 398d_endsent=''
10bc17b6
JH
399d_endservent_r=''
400endservent_r_proto=''
15b61c98 401d_faststdio=''
b363b713 402d_fchdir=''
b4eb6b3d
JH
403d_fchmod=''
404d_fchown=''
405d_fcntl=''
9d9004a9 406d_fcntl_can_lock=''
b4eb6b3d
JH
407d_fd_macros=''
408d_fd_set=''
409d_fds_bits=''
410d_fgetpos=''
758a5d79
JH
411d_finite=''
412d_finitel=''
b4eb6b3d
JH
413d_flexfnam=''
414d_flock=''
2ef53570 415d_flockproto=''
b4eb6b3d 416d_fork=''
758a5d79
JH
417d_fp_class=''
418d_fpclass=''
419d_fpclassify=''
420d_fpclassl=''
b4eb6b3d
JH
421d_fpos64_t=''
422d_frexpl=''
423d_fs_data_s=''
424d_fseeko=''
425d_fsetpos=''
426d_fstatfs=''
411ab01c 427d_fsync=''
b4eb6b3d
JH
428d_ftello=''
429d_ftime=''
430d_gettimeod=''
431d_Gconvert=''
432d_getcwd=''
433d_getespwnam=''
434d_getfsstat=''
435d_getgrent=''
10bc17b6
JH
436d_getgrent_r=''
437getgrent_r_proto=''
438d_getgrgid_r=''
439getgrgid_r_proto=''
440d_getgrnam_r=''
441getgrnam_r_proto=''
b4eb6b3d
JH
442d_getgrps=''
443d_gethbyaddr=''
444d_gethbyname=''
445d_gethent=''
446aphostname=''
447d_gethname=''
448d_phostname=''
449d_uname=''
10bc17b6
JH
450d_gethostbyaddr_r=''
451gethostbyaddr_r_proto=''
452d_gethostbyname_r=''
453gethostbyname_r_proto=''
454d_gethostent_r=''
455gethostent_r_proto=''
b4eb6b3d 456d_gethostprotos=''
4e0554ec 457d_getitimer=''
b4eb6b3d 458d_getlogin=''
10bc17b6
JH
459d_getlogin_r=''
460getlogin_r_proto=''
b4eb6b3d
JH
461d_getmnt=''
462d_getmntent=''
463d_getnbyaddr=''
464d_getnbyname=''
465d_getnent=''
10bc17b6
JH
466d_getnetbyaddr_r=''
467getnetbyaddr_r_proto=''
468d_getnetbyname_r=''
469getnetbyname_r_proto=''
470d_getnetent_r=''
471getnetent_r_proto=''
b4eb6b3d 472d_getnetprotos=''
0c0643d0 473d_getpagsz=''
b4eb6b3d
JH
474d_getpent=''
475d_getpgid=''
476d_getpgrp2=''
477d_bsdgetpgrp=''
478d_getpgrp=''
479d_getppid=''
480d_getprior=''
481d_getpbyname=''
482d_getpbynumber=''
10bc17b6
JH
483d_getprotobyname_r=''
484getprotobyname_r_proto=''
485d_getprotobynumber_r=''
486getprotobynumber_r_proto=''
487d_getprotoent_r=''
488getprotoent_r_proto=''
b4eb6b3d
JH
489d_getprotoprotos=''
490d_getprpwnam=''
491d_getpwent=''
10bc17b6
JH
492d_getpwent_r=''
493getpwent_r_proto=''
494d_getpwnam_r=''
495getpwnam_r_proto=''
496d_getpwuid_r=''
497getpwuid_r_proto=''
b4eb6b3d 498d_getsent=''
10bc17b6
JH
499d_getservbyname_r=''
500getservbyname_r_proto=''
501d_getservbyport_r=''
502getservbyport_r_proto=''
503d_getservent_r=''
504getservent_r_proto=''
b4eb6b3d
JH
505d_getservprotos=''
506d_getspnam=''
10bc17b6
JH
507d_getspnam_r=''
508getspnam_r_proto=''
b4eb6b3d
JH
509d_getsbyname=''
510d_getsbyport=''
10bc17b6
JH
511d_gmtime_r=''
512gmtime_r_proto=''
a4f3eea9 513d_gnulibc=''
5f6e0ee4 514gnulibc_version=''
b4eb6b3d
JH
515d_hasmntopt=''
516d_htonl=''
55954f19 517d_ilogbl=''
b4eb6b3d
JH
518d_inetaton=''
519d_int64_t=''
520d_isascii=''
758a5d79
JH
521d_isfinite=''
522d_isinf=''
b4eb6b3d
JH
523d_isnan=''
524d_isnanl=''
525d_killpg=''
526d_lchown=''
527d_ldbl_dig=''
528d_link=''
10bc17b6
JH
529d_localtime_r=''
530localtime_r_proto=''
b4eb6b3d
JH
531d_locconv=''
532d_lockf=''
533d_longdbl=''
534longdblsize=''
535d_longlong=''
536longlongsize=''
537d_lseekproto=''
538d_lstat=''
539d_madvise=''
540d_mblen=''
541d_mbstowcs=''
542d_mbtowc=''
543d_memchr=''
544d_memcmp=''
545d_memcpy=''
546d_memmove=''
547d_memset=''
548d_mkdir=''
549d_mkdtemp=''
550d_mkfifo=''
551d_mkstemp=''
552d_mkstemps=''
553d_mktime=''
554d_mmap=''
555mmaptype=''
556d_modfl=''
e67aeab1 557d_modfl_pow32_bug=''
bc9a1b2c 558d_modflproto=''
b4eb6b3d
JH
559d_mprotect=''
560d_msg=''
561d_msgctl=''
562d_msgget=''
4e0554ec 563d_msghdr_s=''
b4eb6b3d
JH
564d_msgrcv=''
565d_msgsnd=''
566d_msync=''
567d_munmap=''
568d_nice=''
2765b840 569d_nl_langinfo=''
b4eb6b3d
JH
570d_off64_t=''
571d_open3=''
572d_fpathconf=''
573d_pathconf=''
574d_pause=''
575d_pipe=''
576d_poll=''
2304df62 577d_portable=''
a33c94aa 578d_procselfexe=''
f24dbf84 579procselfexe=''
b4eb6b3d
JH
580d_old_pthread_create_joinable=''
581old_pthread_create_joinable=''
d6483fcc 582d_pthread_atfork=''
58d975c3 583d_pthread_attr_setscope=''
b4eb6b3d
JH
584d_pthread_yield=''
585d_sched_yield=''
586sched_yield=''
587d_qgcvt=''
10bc17b6
JH
588d_random_r=''
589random_r_proto=''
590d_readdir64_r=''
591readdir64_r_proto=''
b4eb6b3d
JH
592d_readdir=''
593d_rewinddir=''
594d_seekdir=''
595d_telldir=''
10bc17b6
JH
596d_readdir_r=''
597readdir_r_proto=''
b4eb6b3d 598d_readlink=''
4e0554ec
JH
599d_readv=''
600d_recvmsg=''
b4eb6b3d
JH
601d_rename=''
602d_rmdir=''
603d_safebcpy=''
604d_safemcpy=''
605d_sanemcmp=''
ef9f17be 606d_sbrkproto=''
55954f19 607d_scalbnl=''
b4eb6b3d
JH
608d_select=''
609d_sem=''
610d_semctl=''
611d_semget=''
612d_semop=''
4e0554ec 613d_sendmsg=''
b4eb6b3d
JH
614d_setegid=''
615d_seteuid=''
616d_setgrent=''
10bc17b6
JH
617d_setgrent_r=''
618setgrent_r_proto=''
b4eb6b3d
JH
619d_setgrps=''
620d_sethent=''
10bc17b6
JH
621d_sethostent_r=''
622sethostent_r_proto=''
4e0554ec 623d_setitimer=''
b4eb6b3d
JH
624d_setlinebuf=''
625d_setlocale=''
10bc17b6
JH
626d_setlocale_r=''
627setlocale_r_proto=''
b4eb6b3d 628d_setnent=''
10bc17b6
JH
629d_setnetent_r=''
630setnetent_r_proto=''
b4eb6b3d
JH
631d_setpent=''
632d_setpgid=''
633d_setpgrp2=''
634d_bsdsetpgrp=''
635d_setpgrp=''
636d_setprior=''
637d_setproctitle=''
10bc17b6
JH
638d_setprotoent_r=''
639setprotoent_r_proto=''
b4eb6b3d 640d_setpwent=''
10bc17b6
JH
641d_setpwent_r=''
642setpwent_r_proto=''
b4eb6b3d
JH
643d_setregid=''
644d_setresgid=''
645d_setresuid=''
646d_setreuid=''
647d_setrgid=''
648d_setruid=''
649d_setsent=''
10bc17b6
JH
650d_setservent_r=''
651setservent_r_proto=''
b4eb6b3d
JH
652d_setsid=''
653d_setvbuf=''
654d_sfio=''
655usesfio=''
656d_shm=''
657d_shmat=''
658d_shmatprototype=''
659shmattype=''
660d_shmctl=''
661d_shmdt=''
662d_shmget=''
663d_sigaction=''
983dbef6 664d_sigprocmask=''
b4eb6b3d 665d_sigsetjmp=''
49a78c82 666d_sockatmark=''
2ef53570 667d_sockatmarkproto=''
b4eb6b3d
JH
668d_msg_ctrunc=''
669d_msg_dontroute=''
670d_msg_oob=''
671d_msg_peek=''
672d_msg_proxy=''
673d_oldsock=''
674d_scm_rights=''
675d_socket=''
676d_sockpair=''
677sockethdr=''
678socketlib=''
679d_socklen_t=''
680d_socks5_init=''
681d_sqrtl=''
10bc17b6
JH
682d_srand48_r=''
683srand48_r_proto=''
684d_srandom_r=''
685srandom_r_proto=''
eef837ea 686d_sresgproto=''
640374d0 687d_sresuproto=''
b4eb6b3d
JH
688d_statblks=''
689d_statfs_f_flags=''
690d_statfs_s=''
691d_fstatvfs=''
692d_statvfs=''
693d_stdio_cnt_lval=''
694d_stdio_ptr_lval=''
a7ffa9b9
NC
695d_stdio_ptr_lval_nochange_cnt=''
696d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
697d_stdiobase=''
698d_stdstdio=''
699stdio_base=''
700stdio_bufsiz=''
701stdio_cnt=''
702stdio_filbuf=''
703stdio_ptr=''
704d_index=''
705d_strchr=''
706d_strcoll=''
707d_strctcpy=''
708d_strerrm=''
709d_strerror=''
710d_sysernlst=''
711d_syserrlst=''
10bc17b6
JH
712d_strerror_r=''
713strerror_r_proto=''
b3c85772 714d_strftime=''
b4eb6b3d
JH
715d_strtod=''
716d_strtol=''
717d_strtold=''
718d_strtoll=''
28e5dec8 719d_strtoq=''
b4eb6b3d
JH
720d_strtoul=''
721d_strtoull=''
722d_strtouq=''
723d_strxfrm=''
724d_symlink=''
725d_syscall=''
2ef53570 726d_syscallproto=''
b4eb6b3d
JH
727d_sysconf=''
728d_system=''
729d_tcgetpgrp=''
730d_tcsetpgrp=''
731d_telldirproto=''
732d_time=''
733timetype=''
734clocktype=''
735d_times=''
10bc17b6
JH
736d_tmpnam_r=''
737tmpnam_r_proto=''
b4eb6b3d 738d_truncate=''
10bc17b6
JH
739d_ttyname_r=''
740ttyname_r_proto=''
b4eb6b3d 741d_tzname=''
4e0554ec
JH
742d_u32align=''
743d_ualarm=''
b4eb6b3d
JH
744d_umask=''
745d_semctl_semid_ds=''
746d_semctl_semun=''
747d_union_semun=''
758a5d79 748d_unordered=''
4e0554ec 749d_usleep=''
2ef53570 750d_usleepproto=''
b4eb6b3d
JH
751d_ustat=''
752d_vfork=''
753usevfork=''
754d_voidsig=''
755signal_t=''
756d_volatile=''
757d_charvspr=''
758d_vprintf=''
759d_wait4=''
760d_waitpid=''
761d_wcstombs=''
762d_wctomb=''
4e0554ec 763d_writev=''
b4eb6b3d 764dlext=''
85e6fe83
LW
765cccdlflags=''
766ccdlflags=''
2304df62 767dlsrc=''
232e078e 768ld=''
85e6fe83 769lddlflags=''
2304df62 770usedl=''
b4eb6b3d
JH
771doublesize=''
772ebcdic=''
773fflushNULL=''
774fflushall=''
775fpossize=''
776fpostype=''
2d736872 777gccansipedantic=''
5b463ca7 778gccosandvers=''
8a27cf78 779gccversion=''
b4eb6b3d
JH
780gidformat=''
781gidsign=''
782gidsize=''
783gidtype=''
784groupstype=''
785h_fcntl=''
786h_sysfile=''
6e1038e0
MB
787html1dir=''
788html1direxp=''
789installhtml1dir=''
790html3dir=''
791html3direxp=''
792installhtml3dir=''
b4eb6b3d 793i_arpainet=''
10bc17b6 794i_crypt=''
b4eb6b3d
JH
795db_hashtype=''
796db_prefixtype=''
640374d0
JH
797db_version_major=''
798db_version_minor=''
799db_version_patch=''
b4eb6b3d
JH
800i_db=''
801i_dbm=''
802i_rpcsvcdbm=''
803d_dirnamlen=''
804direntrytype=''
805i_dirent=''
a0d0e21e 806i_dld=''
b4eb6b3d
JH
807i_dlfcn=''
808i_fcntl=''
809i_float=''
758a5d79
JH
810i_fp=''
811i_fp_class=''
b4eb6b3d
JH
812i_gdbm=''
813d_grpasswd=''
814i_grp=''
b4eb6b3d
JH
815i_ieeefp=''
816i_inttypes=''
2765b840 817i_langinfo=''
b4eb6b3d
JH
818i_libutil=''
819i_limits=''
820i_locale=''
821i_machcthr=''
822i_malloc=''
823i_math=''
824i_memory=''
825i_mntent=''
826i_ndbm=''
827i_netdb=''
828i_neterrno=''
829i_netinettcp=''
830i_niin=''
831i_sysin=''
832i_poll=''
833i_prot=''
834i_pthread=''
835d_pwage=''
836d_pwchange=''
837d_pwclass=''
838d_pwcomment=''
839d_pwexpire=''
840d_pwgecos=''
841d_pwpasswd=''
842d_pwquota=''
843i_pwd=''
844i_sfio=''
845i_shadow=''
846i_socks=''
847i_stddef=''
848i_stdlib=''
849i_string=''
850strings=''
851i_sunmath=''
852i_sysaccess=''
853i_sysdir=''
854i_sysfile=''
855d_voidtty=''
856i_bsdioctl=''
857i_sysfilio=''
858i_sysioctl=''
859i_syssockio=''
860i_syslog=''
861i_sysmman=''
862i_sysmode=''
863i_sysmount=''
864i_sysndir=''
865i_sysparam=''
866i_sysresrc=''
867i_syssecrt=''
868i_sysselct=''
869i_sysstat=''
870i_sysstatfs=''
871i_sysstatvfs=''
872i_systimes=''
873i_systypes=''
874i_sysuio=''
875i_sysun=''
876i_sysutsname=''
877i_sysvfs=''
878i_syswait=''
879i_sgtty=''
880i_termio=''
881i_termios=''
14b90194
JH
882d_tm_tm_gmtoff=''
883d_tm_tm_zone=''
b4eb6b3d
JH
884i_systime=''
885i_systimek=''
886i_time=''
887timeincl=''
888i_unistd=''
889i_ustat=''
890i_utime=''
891i_values=''
892i_stdarg=''
893i_varargs=''
894i_varhdr=''
895i_vfork=''
896inc_version_list=''
897inc_version_list_init=''
898installprefix=''
899installprefixexp=''
900installstyle=''
901installusrbinperl=''
902intsize=''
903longsize=''
904shortsize=''
4b661809 905issymlink=''
2304df62 906libc=''
b4eb6b3d
JH
907ldlibpthname=''
908libperl=''
909shrpenv=''
910useshrplib=''
a0d0e21e 911glibpth=''
2304df62 912libpth=''
8e07c86e 913loclibpth=''
2304df62
AD
914plibpth=''
915xlibpth=''
1cfa4ec7 916ignore_versioned_solibs=''
2304df62 917libs=''
43999f95
JH
918libsdirs=''
919libsfiles=''
920libsfound=''
13b3f787 921libspath=''
85e6fe83 922lns=''
b4eb6b3d
JH
923d_PRIEUldbl=''
924d_PRIFUldbl=''
925d_PRIGUldbl=''
926d_PRIeldbl=''
927d_PRIfldbl=''
928d_PRIgldbl=''
929d_SCNfldbl=''
930sPRIEUldbl=''
931sPRIFUldbl=''
932sPRIGUldbl=''
933sPRIeldbl=''
934sPRIfldbl=''
935sPRIgldbl=''
936sSCNfldbl=''
937lseeksize=''
938lseektype=''
8ff267be 939make_set_make=''
b4eb6b3d
JH
940d_mymalloc=''
941freetype=''
942mallocobj=''
943mallocsrc=''
944malloctype=''
9df442c2 945usemallocwrap=''
b4eb6b3d
JH
946usemymalloc=''
947installman1dir=''
948man1dir=''
949man1direxp=''
950man1ext=''
951installman3dir=''
952man3dir=''
953man3direxp=''
954man3ext=''
955modetype=''
956multiarch=''
957mydomain=''
958myhostname=''
959phostname=''
2304df62
AD
960c=''
961n=''
b4eb6b3d
JH
962d_eofnblk=''
963eagain=''
964o_nonblock=''
965rd_nodata=''
2cc61e15 966need_va_copy=''
b4eb6b3d
JH
967netdb_hlen_type=''
968netdb_host_type=''
969netdb_name_type=''
970netdb_net_type=''
971groupcat=''
972hostcat=''
973passcat=''
974orderlib=''
975ranlib=''
976d_perl_otherlibdirs=''
977otherlibdirs=''
2304df62
AD
978package=''
979spackage=''
b4eb6b3d
JH
980pager=''
981api_revision=''
982api_subversion=''
983api_version=''
984api_versionstring=''
985patchlevel=''
151e6568 986perl_patchlevel=''
b4eb6b3d
JH
987revision=''
988subversion=''
989version=''
861eb78d 990version_patchlevel_string=''
b4eb6b3d
JH
991perl5=''
992perladmin=''
993perlpath=''
994d_nv_preserves_uv=''
b4eb6b3d
JH
995i16size=''
996i16type=''
997i32size=''
998i32type=''
999i64size=''
1000i64type=''
1001i8size=''
1002i8type=''
1003ivsize=''
1004ivtype=''
53133ed1 1005nv_preserves_uv_bits=''
b4eb6b3d
JH
1006nvsize=''
1007nvtype=''
1008u16size=''
1009u16type=''
1010u32size=''
1011u32type=''
1012u64size=''
1013u64type=''
1014u8size=''
1015u8type=''
1016uvsize=''
1017uvtype=''
1018ivdformat=''
1019nvEUformat=''
1020nvFUformat=''
1021nvGUformat=''
1022nveformat=''
1023nvfformat=''
1024nvgformat=''
1025uvXUformat=''
1026uvoformat=''
1027uvuformat=''
1028uvxformat=''
1029pidtype=''
1030prefix=''
1031prefixexp=''
1032installprivlib=''
1033privlib=''
1034privlibexp=''
1035prototype=''
1036ptrsize=''
1037d_PRIXU64=''
1038d_PRId64=''
1039d_PRIi64=''
1040d_PRIo64=''
1041d_PRIu64=''
1042d_PRIx64=''
1043sPRIXU64=''
1044sPRId64=''
1045sPRIi64=''
1046sPRIo64=''
1047sPRIu64=''
1048sPRIx64=''
1049d_quad=''
1050quadkind=''
1051quadtype=''
1052uquadtype=''
1053drand01=''
1054randbits=''
1055randfunc=''
1056randseedtype=''
1057seedfunc=''
1058installscript=''
1059scriptdir=''
1060scriptdirexp=''
1061selectminbits=''
1062selecttype=''
8ff267be 1063sh=''
b4eb6b3d
JH
1064sig_count=''
1065sig_name=''
1066sig_name_init=''
1067sig_num=''
1068sig_num_init=''
76d3c696 1069sig_size=''
b4eb6b3d
JH
1070installsitearch=''
1071sitearch=''
1072sitearchexp=''
1073installsitebin=''
1074sitebin=''
1075sitebinexp=''
8d2cbf27
JH
1076installsitehtml1dir=''
1077sitehtml1dir=''
1078sitehtml1direxp=''
1079installsitehtml3dir=''
1080sitehtml3dir=''
1081sitehtml3direxp=''
b4eb6b3d
JH
1082installsitelib=''
1083sitelib=''
1084sitelib_stem=''
1085sitelibexp=''
91e123a8
JH
1086installsiteman1dir=''
1087siteman1dir=''
1088siteman1direxp=''
1089installsiteman3dir=''
1090siteman3dir=''
1091siteman3direxp=''
b4eb6b3d
JH
1092siteprefix=''
1093siteprefixexp=''
6e1038e0
MB
1094installsitescript=''
1095sitescript=''
1096sitescriptexp=''
b4eb6b3d
JH
1097sizesize=''
1098sizetype=''
a0d0e21e 1099so=''
b4eb6b3d 1100socksizetype=''
2304df62
AD
1101sharpbang=''
1102shsharp=''
1103spitshell=''
dfe9444c 1104src=''
b4eb6b3d
JH
1105ssizetype=''
1106startperl=''
2304df62 1107startsh=''
b4eb6b3d
JH
1108stdchar=''
1109d_stdio_stream_array=''
1110stdio_stream_array=''
1111sysman=''
5ff3f7a4 1112trnl=''
b4eb6b3d
JH
1113uidformat=''
1114uidsign=''
1115uidsize=''
1116uidtype=''
1117archname64=''
1118use64bitall=''
1119use64bitint=''
15b61c98 1120usefaststdio=''
b4eb6b3d
JH
1121ccflags_uselargefiles=''
1122ldflags_uselargefiles=''
1123libswanted_uselargefiles=''
1124uselargefiles=''
1125uselongdouble=''
1126usemorebits=''
1127usemultiplicity=''
2304df62 1128nm_opt=''
40a7a20a 1129nm_so_opt=''
2304df62
AD
1130runnm=''
1131usenm=''
b4eb6b3d 1132useperlio=''
29209bc5 1133usesocks=''
b4eb6b3d
JH
1134d_oldpthreads=''
1135use5005threads=''
1136useithreads=''
9514c62b 1137usereentrant=''
b4eb6b3d 1138usethreads=''
2304df62 1139incpath=''
2304df62
AD
1140mips_type=''
1141usrinc=''
b4eb6b3d
JH
1142d_vendorarch=''
1143installvendorarch=''
1144vendorarch=''
1145vendorarchexp=''
1146d_vendorbin=''
1147installvendorbin=''
1148vendorbin=''
1149vendorbinexp=''
8d2cbf27
JH
1150installvendorhtml1dir=''
1151vendorhtml1dir=''
1152vendorhtml1direxp=''
1153installvendorhtml3dir=''
1154vendorhtml3dir=''
1155vendorhtml3direxp=''
b4eb6b3d
JH
1156d_vendorlib=''
1157installvendorlib=''
1158vendorlib=''
1159vendorlib_stem=''
1160vendorlibexp=''
91e123a8
JH
1161installvendorman1dir=''
1162vendorman1dir=''
1163vendorman1direxp=''
1164installvendorman3dir=''
1165vendorman3dir=''
1166vendorman3direxp=''
b4eb6b3d
JH
1167usevendorprefix=''
1168vendorprefix=''
1169vendorprefixexp=''
6e1038e0
MB
1170d_vendorscript=''
1171installvendorscript=''
1172vendorscript=''
1173vendorscriptexp=''
d56c5707 1174versiononly=''
b4eb6b3d
JH
1175defvoidused=''
1176voidflags=''
3659ebf1
JH
1177yacc=''
1178yaccflags=''
2304df62
AD
1179CONFIG=''
1180
ecfc5424
AD
1181define='define'
1182undef='undef'
1183smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1184rmlist=''
1185
1186: We must find out about Eunice early
1187eunicefix=':'
1188if test -f /etc/unixtovms; then
1189 eunicefix=/etc/unixtovms
1190fi
1191if test -f /etc/unixtovms.exe; then
1192 eunicefix=/etc/unixtovms.exe
1193fi
1194
cfb04860 1195: Set executable suffix now -- needed before hints available
6153ba32
PG
1196if test -f "/libs/version.library"; then
1197: Amiga OS
1198 _exe=""
1199elif test -f "/system/gnu_library/bin/ar.pm"; then
1200: Stratus VOS
cfb04860 1201 _exe=".pm"
6153ba32
PG
1202elif test -n "$DJGPP"; then
1203: DOS DJGPP
cfb04860 1204 _exe=".exe"
5c728af0 1205elif test -d c:/. -o -n "$is_os2" ; then
506faf56 1206: OS/2 or cygwin
ba863942
JH
1207 _exe=".exe"
1208fi
868439a2 1209
b4eb6b3d 1210i_whoami=''
9da7673b
MB
1211ccname=''
1212ccversion=''
1213perllibs=''
1214: set useposix=false in your hint file to disable the POSIX extension.
1215useposix=true
1216: set useopcode=false in your hint file to disable the Opcode extension.
1217useopcode=true
1218: Trailing extension. Override this in a hint file, if needed.
1219: Extra object files, if any, needed on this platform.
1220archobjs=''
1221archname=''
ff935051
JH
1222: Possible local include directories to search.
1223: Set locincpth to "" in a hint file to defeat local include searches.
1224locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1225locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1226:
1227: no include file wanted by default
1228inclwanted=''
1229
b4eb6b3d 1230groupstype=''
64615a5e 1231libnames=''
732c9516
JH
1232: change the next line if compiling for Xenix/286 on Xenix/386
1233xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1234: Possible local library directories to search.
1235loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1236loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1237
1238: general looking path for locating libraries
5869b1f1 1239glibpth="/lib /usr/lib $xlibpth"
732c9516 1240glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1241test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1242test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1243
1244: Private path used by Configure to find libraries. Its value
1245: is prepended to libpth. This variable takes care of special
1246: machines, like the mips. Usually, it should be empty.
1247plibpth=''
1248
1cfa4ec7
GS
1249: default library list
1250libswanted=''
921b2963 1251: some systems want to use only the non-versioned libso:s
1cfa4ec7 1252ignore_versioned_solibs=''
9da7673b
MB
1253siteman1dir=''
1254siteman3dir=''
1255sitescript=''
b4eb6b3d
JH
1256archname64=''
1257ccflags_uselargefiles=''
1258ldflags_uselargefiles=''
1259libswanted_uselargefiles=''
1260: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1261: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1262: set usethreads on the Configure command line to enable threads.
cd040c5e 1263usereentrant='undef'
9da7673b
MB
1264: full support for void wanted by default
1265defvoidused=15
1266
ecfc5424 1267: List of libraries we want.
15431986 1268: If anyone needs extra -lxxx, put those in a hint file.
6bdd71ef
AB
1269libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1270libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1aef975c 1271: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1272: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1273glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274glibpth="/usr/shlib $glibpth"
1275: Do not use vfork unless overridden by a hint file.
1276usevfork=false
1277
8ff267be 1278: Find the basic shell for Bourne shell scripts
1279case "$sh" in
1280'')
8ff267be 1281 case "$SYSTYPE" in
1282 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283 *) xxx='/bin/sh';;
1284 esac
1285 if test -f "$xxx"; then
1286 sh="$xxx"
1287 else
1288 : Build up a list and do a single loop so we can 'break' out.
1289 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290 for xxx in sh bash ksh pdksh ash; do
1291 for p in $pth; do
1292 try="$try ${p}/${xxx}"
1293 done
1294 done
1295 for xxx in $try; do
1296 if test -f "$xxx"; then
1297 sh="$xxx";
8ff267be 1298 break
a5a94ea5
JH
1299 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300 sh="$xxx";
1301 break
8ff267be 1302 elif test -f "$xxx.exe"; then
1303 sh="$xxx";
8ff267be 1304 break
1305 fi
1306 done
1307 fi
1308 ;;
1309esac
1310
1311case "$sh" in
a33c94aa 1312'') cat >&2 <<EOM
8ff267be 1313$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1314
8ff267be 1315Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1316Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1317we'll try to straighten this all out.
8ff267be 1318EOM
1319 exit 1
1320 ;;
1321esac
1322
760ac839 1323: see if sh knows # comments
73614538 1324if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1325 shsharp=true
1326 spitshell=cat
760ac839 1327 xcat=/bin/cat
a931254c
JH
1328 test -f $xcat$_exe || xcat=/usr/bin/cat
1329 if test ! -f $xcat$_exe; then
4bdb8fb5 1330 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1331 if test -f $p/cat$_exe; then
1deb0a86 1332 xcat=$p/cat
3c728e00
JH
1333 break
1334 fi
1335 done
1deb0a86
JH
1336 if test ! -f $xcat$_exe; then
1337 echo "Can't find cat anywhere!"
3c728e00
JH
1338 exit 1
1339 fi
1340 fi
5440bc8e
JH
1341 echo "#!$xcat" >sharp
1342 $eunicefix sharp
1343 chmod +x sharp
1344 ./sharp > today
760ac839 1345 if test -s today; then
760ac839
LW
1346 sharpbang='#!'
1347 else
5440bc8e
JH
1348 echo "#! $xcat" > sharp
1349 $eunicefix sharp
1350 chmod +x sharp
1351 ./sharp > today
760ac839 1352 if test -s today; then
760ac839
LW
1353 sharpbang='#! '
1354 else
760ac839
LW
1355 sharpbang=': use '
1356 fi
1357 fi
1358else
dfe9444c 1359 echo " "
8ff267be 1360 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1361 shsharp=false
1362 cd ..
1363 echo "exec grep -v '^[ ]*#'" >spitshell
1364 chmod +x spitshell
1365 $eunicefix spitshell
1366 spitshell=`pwd`/spitshell
1367 cd UU
1368 echo "I presume that if # doesn't work, #! won't work either!"
1369 sharpbang=': use '
1370fi
5440bc8e 1371rm -f sharp today
760ac839
LW
1372
1373: figure out how to guarantee sh startup
8ff267be 1374case "$startsh" in
1375'') startsh=${sharpbang}${sh} ;;
1376*)
760ac839 1377esac
5440bc8e 1378cat >sharp <<EOSS
760ac839
LW
1379$startsh
1380set abc
1381test "$?abc" != 1
1382EOSS
1383
5440bc8e
JH
1384chmod +x sharp
1385$eunicefix sharp
1386if ./sharp; then
8ff267be 1387 : echo "Yup, it does."
760ac839 1388else
dfe9444c
AD
1389 echo "Hmm... '$startsh' does not guarantee sh startup..."
1390 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1391fi
5440bc8e 1392rm -f sharp
760ac839 1393
aebf16e7
AD
1394
1395: Save command line options in file UU/cmdline.opt for later use in
1396: generating config.sh.
1397cat > cmdline.opt <<EOSH
1398# Configure command line arguments.
1399config_arg0='$0'
1400config_args='$*'
1401config_argc=$#
1402EOSH
1403argn=1
ee45ea83
IZ
1404args_exp=''
1405args_sep=''
aebf16e7
AD
1406for arg in "$@"; do
1407 cat >>cmdline.opt <<EOSH
1408config_arg$argn='$arg'
1409EOSH
ee45ea83
IZ
1410 # Extreme backslashitis: replace each ' by '"'"'
1411 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412$arg
1413EOC
1414 arg_exp=`cat cmdl.opt`
1415 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1416 argn=`expr $argn + 1`
ee45ea83 1417 args_sep=' '
aebf16e7 1418done
ee45ea83
IZ
1419# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420# used by ./hints/os2.sh
1421rm -f cmdl.opt
aebf16e7 1422
2304df62
AD
1423: produce awk script to parse command line options
1424cat >options.awk <<'EOF'
1425BEGIN {
02e93a22 1426 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1427
1428 len = length(optstr);
1429 for (i = 1; i <= len; i++) {
1430 c = substr(optstr, i, 1);
1431 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432 if (a == ":") {
1433 arg[c] = 1;
1434 i++;
1435 }
1436 opt[c] = 1;
1437 }
1438}
1439{
1440 expect = 0;
1441 str = $0;
1442 if (substr(str, 1, 1) != "-") {
1443 printf("'%s'\n", str);
1444 next;
1445 }
1446 len = length($0);
1447 for (i = 2; i <= len; i++) {
1448 c = substr(str, i, 1);
1449 if (!opt[c]) {
1450 printf("-%s\n", substr(str, i));
1451 next;
1452 }
1453 printf("-%s\n", c);
1454 if (arg[c]) {
1455 if (i < len)
1456 printf("'%s'\n", substr(str, i + 1));
1457 else
1458 expect = 1;
1459 next;
1460 }
1461 }
1462}
1463END {
1464 if (expect)
1465 print "?";
1466}
1467EOF
1468
1469: process the command line options
4633a7c4
LW
1470set X `for arg in "$@"; do echo "X$arg"; done |
1471 sed -e s/X// | awk -f options.awk`
2304df62
AD
1472eval "set $*"
1473shift
1474rm -f options.awk
1475
1476: set up default values
1477fastread=''
1478reuseval=false
1479config_sh=''
1480alldone=''
1481error=''
1482silent=''
1483extractsh=''
ecfc5424 1484override=''
16d20bd9 1485knowitall=''
02e93a22 1486rm -f optdef.sh posthint.sh
28757baa 1487cat >optdef.sh <<EOS
1488$startsh
1489EOS
2304df62 1490
dfe9444c 1491
2304df62
AD
1492: option parsing
1493while test $# -gt 0; do
1494 case "$1" in
1495 -d) shift; fastread=yes;;
1496 -e) shift; alldone=cont;;
1497 -f)
1498 shift
1499 cd ..
1500 if test -r "$1"; then
1501 config_sh="$1"
1502 else
a0d0e21e 1503 echo "$me: cannot read config file $1." >&2
2304df62
AD
1504 error=true
1505 fi
1506 cd UU
1507 shift;;
1508 -h) shift; error=true;;
1509 -r) shift; reuseval=true;;
dfe9444c 1510 -s) shift; silent=true; realsilent=true;;
2304df62 1511 -E) shift; alldone=exit;;
16d20bd9 1512 -K) shift; knowitall=true;;
ecfc5424 1513 -O) shift; override=true;;
dfe9444c 1514 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1515 -D)
1516 shift
1517 case "$1" in
1518 *=)
1519 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520 echo "$me: ignoring -D $1" >&2
1521 ;;
ecfc5424 1522 *=*) echo "$1" | \
1aef975c
AD
1523 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1525 esac
1526 shift
1527 ;;
1528 -U)
1529 shift
1530 case "$1" in
1aef975c 1531 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1532 *=*)
1533 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534 echo "$me: ignoring -U $1" >&2
1535 ;;
1aef975c 1536 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1537 esac
1538 shift
1539 ;;
02e93a22
JH
1540 -A)
1541 shift
1542 xxx=''
1543 yyy="$1"
02e93a22 1544 zzz=''
5f83a3e9 1545 uuu=undef
02e93a22 1546 case "$yyy" in
f7c31117 1547 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
5f83a3e9
JH
1548 case "$zzz" in
1549 *:*) zzz='' ;;
1550 *) xxx=append
f7c31117
JH
1551 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1552 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
5f83a3e9
JH
1553 esac
1554 ;;
1555 esac
1556 case "$xxx" in
1557 '') case "$yyy" in
f7c31117
JH
1558 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1563 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
5f83a3e9
JH
1564 esac
1565 ;;
1566 esac
02e93a22
JH
1567 case "$xxx" in
1568 append)
5f83a3e9 1569 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1570 clear)
5f83a3e9 1571 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1572 define)
1573 case "$zzz" in
1574 '') zzz=define ;;
1575 esac
5f83a3e9 1576 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1577 eval)
5f83a3e9 1578 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1579 prepend)
5f83a3e9 1580 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1581 undef)
1582 case "$zzz" in
1583 '') zzz="$uuu" ;;
1584 esac
5f83a3e9
JH
1585 echo "$yyy=$zzz" >> posthint.sh ;;
1586 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1587 esac
bde6b06b 1588 shift
02e93a22 1589 ;;
dfe9444c 1590 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1591 exit 0;;
2304df62 1592 --) break;;
a0d0e21e 1593 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1594 *) break;;
1595 esac
1596done
1597
1598case "$error" in
1599true)
1600 cat >&2 <<EOM
2afac517 1601Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1602 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1603 -d : use defaults for all answers.
1604 -e : go on without questioning past the production of config.sh.
1605 -f : specify an alternate default configuration file.
1606 -h : print this help message and exit (with an error status).
1607 -r : reuse C symbols value if possible (skips costly nm extraction).
1608 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1609 -D : define symbol to have some value:
1610 -D symbol symbol gets the value 'define'
1611 -D symbol=value symbol gets the value 'value'
2304df62 1612 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1613 -K : do not use unless you know what you are doing.
ecfc5424 1614 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1615 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1616 -U : undefine symbol:
1617 -U symbol symbol gets the value 'undef'
1618 -U symbol= symbol gets completely empty
02e93a22 1619 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1620 -A symbol=value append " "value to symbol
02e93a22
JH
1621 -A append:symbol=value append value to symbol
1622 -A define:symbol=value define symbol to have value
02e93a22
JH
1623 -A clear:symbol define symbol to be ''
1624 -A define:symbol define symbol to be 'define'
1625 -A eval:symbol=value define symbol to be eval of value
1626 -A prepend:symbol=value prepend value to symbol
1627 -A undef:symbol define symbol to be 'undef'
1628 -A undef:symbol= define symbol to be ''
2304df62
AD
1629 -V : print version number and exit (with a zero status).
1630EOM
1631 exit 1
1632 ;;
1633esac
1634
dfe9444c
AD
1635: Sanity checks
1636case "$fastread$alldone" in
1637yescont|yesexit) ;;
1638*)
aaeb8e51
GS
1639 case "$extractsh" in
1640 true) ;;
1641 *)
1642 if test ! -t 0; then
1643 echo "Say 'sh Configure', not 'sh <Configure'"
1644 exit 1
1645 fi
1646 ;;
1647 esac
dfe9444c
AD
1648 ;;
1649esac
1650
2304df62
AD
1651exec 4>&1
1652case "$silent" in
1653true) exec 1>/dev/null;;
1654esac
1655
ecfc5424 1656: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1657touch optdef.sh
1658. ./optdef.sh
02e93a22
JH
1659: create the posthint manipulation script and leave the file out there...
1660touch posthint.sh
a0d0e21e 1661
2304df62 1662: set package name
85e6fe83 1663package=perl5
b4eb6b3d
JH
1664first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669esac
2304df62 1670
2304df62
AD
1671: Some greps do not return status, grrr.
1672echo "grimblepritz" >grimble
1673if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674 contains=contains
1675elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676 contains=grep
1677else
1678 contains=contains
1679fi
1680rm -f grimble
1681: the following should work in any shell
1682case "$contains" in
1683contains*)
1684 echo " "
1685 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1686 cat >contains <<'EOSS'
1687grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688EOSS
1689chmod +x contains
1690esac
1691
dfe9444c
AD
1692: Find the path to the source tree
1693case "$src" in
1694'') case "$0" in
b233458b
JH
1695 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696 case "$src" in
1697 /*) ;;
8504afb7 1698 .) ;;
b233458b
JH
1699 *) src=`cd ../$src && pwd` ;;
1700 esac
1701 ;;
dfe9444c
AD
1702 *) src='.';;
1703 esac;;
1704esac
1705case "$src" in
1706'') src=/
1707 rsrc=/
1708 ;;
1709/*) rsrc="$src";;
1710*) rsrc="../$src";;
1711esac
1712if test -f $rsrc/Configure && \
1713 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714then
1715 : found it, so we are ok.
1716else
1717 rsrc=''
1718 for src in . .. ../.. ../../.. ../../../..; do
1719 if test -f ../$src/Configure && \
1720 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721 then
1722 rsrc=../$src
1723 break
1724 fi
1725 done
1726fi
1727case "$rsrc" in
1728'')
1729 cat <<EOM >&4
1730
1731Sorry, I can't seem to locate the source dir for $package. Please start
1732Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734EOM
1735 exit 1
1736 ;;
1737../.) rsrc='..';;
1738*)
1739 echo " "
1740 echo "Sources for $package found in \"$src\"." >&4
1741 ;;
1742esac
1743
1744: script used to extract .SH files with variable substitutions
1745cat >extract <<'EOS'
a02608de 1746PERL_CONFIG_SH=true
dfe9444c 1747echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1748if test -f MANIFEST; then
1749 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1750else
1751 echo "(Looking for .SH files under the source directory.)"
6904989c 1752 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1753fi
1754shift
1755case $# in
6904989c 17560) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1757esac
6904989c 1758if test ! -f "$src/$1"; then
dfe9444c
AD
1759 shift
1760fi
1761mkdir_p='
1762name=$1;
1763create="";
1764while test $name; do
1765 if test ! -d "$name"; then
1766 create="$name $create";
1767 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769 else
1770 name="";
1771 fi;
1772done;
1773for file in $create; do
1774 mkdir $file;
1775done
1776'
1777for file in $*; do
1778 case "$src" in
1779 ".")
1780 case "$file" in
1781 */*)
1782 dir=`expr X$file : 'X\(.*\)/'`
1783 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1784 (cd "$dir" && . ./$file)
dfe9444c
AD
1785 ;;
1786 *)
1787 . ./$file
1788 ;;
1789 esac
1790 ;;
1791 *)
1792 case "$file" in
1793 */*)
1794 dir=`expr X$file : 'X\(.*\)/'`
1795 file=`expr X$file : 'X.*/\(.*\)'`
1796 (set x $dir; shift; eval $mkdir_p)
6904989c 1797 sh <"$src/$dir/$file"
dfe9444c
AD
1798 ;;
1799 *)
6904989c 1800 sh <"$src/$file"
dfe9444c
AD
1801 ;;
1802 esac
1803 ;;
1804 esac
1805done
6904989c 1806if test -f "$src/config_h.SH"; then
dfe9444c
AD
1807 if test ! -f config.h; then
1808 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1809 . "$src/config_h.SH"
dfe9444c
AD
1810 fi
1811fi
1812EOS
1813
1814: extract files and exit if asked to do so
1815case "$extractsh" in
1816true)
1817 case "$realsilent" in
1818 true) ;;
1819 *) exec 1>&4;;
1820 esac
1821 case "$config_sh" in
1822 '') config_sh='config.sh';;
1823 esac
1824 echo " "
1825 echo "Fetching answers from $config_sh..."
1826 cd ..
1827 . $config_sh
1828 test "$override" && . ./optdef.sh
1829 echo " "
1830 . UU/extract
1831 rm -rf UU
24ccb310 1832 echo "Extraction done."
dfe9444c
AD
1833 exit 0
1834 ;;
1835esac
1836
1837: Eunice requires " " instead of "", can you believe it
1838echo " "
1839: Here we go...
1840echo "Beginning of configuration questions for $package."
1841
1842trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
2304df62
AD
1844: first determine how to suppress newline on echo command
1845echo " "
1846echo "Checking echo to see how to suppress newlines..."
1847(echo "hi there\c" ; echo " ") >.echotmp
1848if $contains c .echotmp >/dev/null 2>&1 ; then
1849 echo "...using -n."
1850 n='-n'
1851 c=''
1852else
1853 cat <<'EOM'
1854...using \c
1855EOM
1856 n=''
1857 c='\c'
1858fi
1859echo $n "The star should be here-->$c"
1860echo '*'
1861rm -f .echotmp
1862
1863: Now test for existence of everything in MANIFEST
1864echo " "
6904989c 1865if test -f "$rsrc/MANIFEST"; then
2304df62 1866 echo "First let's make sure your kit is complete. Checking..." >&4
4242830c 1867 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
2304df62 1868 rm -f missing
dfe9444c 1869 tmppwd=`pwd`
2304df62 1870 for filelist in x??; do
6904989c 1871 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1872 done
1873 if test -s missing; then
1874 cat missing >&4
1875 cat >&4 <<'EOM'
1876
1877THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879You have the option of continuing the configuration process, despite the
1880distinct possibility that your kit is damaged, by typing 'y'es. If you
1881do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1882and contact the author (perlbug@perl.org).
2304df62
AD
1883
1884EOM
1885 echo $n "Continue? [n] $c" >&4
1886 read ans
1887 case "$ans" in
1888 y*)
1889 echo "Continuing..." >&4
1890 rm -f missing
1891 ;;
1892 *)
1893 echo "ABORTING..." >&4
1894 kill $$
1895 ;;
1896 esac
1897 else
dfe9444c 1898 echo "Looks good..."
2304df62
AD
1899 fi
1900else
1901 echo "There is no MANIFEST file. I hope your kit is complete !"
1902fi
1903rm -f missing x??
1904
5ff3f7a4
GS
1905echo " "
1906: Find the appropriate value for a newline for tr
1907if test -n "$DJGPP"; then
1908 trnl='\012'
1909fi
1910if test X"$trnl" = X; then
1911 case "`echo foo|tr '\n' x 2>/dev/null`" in
1912 foox) trnl='\n' ;;
1913 esac
1914fi
1915if test X"$trnl" = X; then
1916 case "`echo foo|tr '\012' x 2>/dev/null`" in
1917 foox) trnl='\012' ;;
1918 esac
1919fi
1920if test X"$trnl" = X; then
8be2c24c
JH
1921 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922 fooxy) trnl='\n\r' ;;
1923 esac
1924fi
1925if test X"$trnl" = X; then
5ff3f7a4
GS
1926 cat <<EOM >&2
1927
1928$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930EOM
1931 exit 1
1932fi
1933
2304df62
AD
1934: compute the number of columns on the terminal for proper question formatting
1935case "$COLUMNS" in
1936'') COLUMNS='80';;
1937esac
1938
1939: set up the echo used in my read
1940myecho="case \"\$xxxm\" in
1941'') echo $n \"\$rp $c\" >&4;;
1942*) case \"\$rp\" in
1943 '') echo $n \"[\$xxxm] $c\";;
1944 *)
1945 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1946 echo \"\$rp\" >&4
1947 echo $n \"[\$xxxm] $c\" >&4
1948 else
1949 echo $n \"\$rp [\$xxxm] $c\" >&4
1950 fi
1951 ;;
1952 esac;;
1953esac"
1954
1955: now set up to do reads with possible shell escape and default assignment
1956cat <<EOSC >myread
28757baa 1957$startsh
2304df62
AD
1958xxxm=\$dflt
1959$myecho
1960ans='!'
1961case "\$fastread" in
1962yes) case "\$dflt" in
1963 '') ;;
1964 *) ans='';
1965 case "\$silent-\$rp" in
1966 true-) ;;
1967 *) echo " " >&4;;
1968 esac;;
1969 esac;;
1970*) case "\$silent" in
1971 true) case "\$rp" in
1972 '') ans='';;
1973 esac;;
1974 esac;;
1975esac
1976while expr "X\$ans" : "X!" >/dev/null; do
1977 read answ
1978 set x \$xxxm
1979 shift
dfe9444c 1980 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1981 case "\$answ" in
dfe9444c
AD
1982 "!")
1983 sh 1>&4
1984 echo " "
1985 $myecho
1986 ;;
1987 !*)
1988 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989 shift
1990 sh 1>&4 -c "\$*"
1991 echo " "
1992 $myecho
1993 ;;
2304df62
AD
1994 "\$ans")
1995 case "\$ans" in
ecfc5424
AD
1996 \\&*)
1997 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998 shift
1999 case "\$1" in
2000 -d)
2001 fastread=yes
40a7a20a 2002 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
2003 ;;
2004 -*)
40a7a20a 2005 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
2006 ;;
2007 esac
2008 $myecho
2009 ans=!
2010 ;;
2304df62
AD
2011 esac;;
2012 *)
2013 case "\$aok" in
2014 y)
2015 echo "*** Substitution done -- please confirm."
2016 xxxm="\$ans"
c9795ab7 2017 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
2018 xxxm="\$ans"
2019 ans=!
2020 ;;
2021 *)
2022 echo "*** Error -- try again."
2023 ans=!
2024 ;;
2025 esac
2026 $myecho
2027 ;;
2028 esac
2029 case "\$ans\$xxxm\$nostick" in
2030 '')
2031 ans=!
2032 $myecho
2033 ;;
2034 esac
2035done
2036case "\$ans" in
2037'') ans="\$xxxm";;
2038esac
2039EOSC
2040
2041: create .config dir to save info across Configure sessions
2042test -d ../.config || mkdir ../.config
2043cat >../.config/README <<EOF
2044This directory created by Configure to save information that should
dfe9444c 2045persist across sessions for $package.
2304df62
AD
2046
2047You may safely delete it if you wish.
2048EOF
2049
9507cadf 2050xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 2051case "$usedevel" in
0107c034 2052$define|true|[yY]*) ;;
9507cadf 2053*) case "$xversion" in
0107c034
JH
2054 *[13579])
2055 cat >&4 <<EOH
2056*** WHOA THERE!!! ***
2057
2058 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
2059 The version of this $package distribution is $xversion, that is, odd,
2060 (as opposed to even) and that signifies a development release.
3d5d58b1 2061 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
2062
2063 Do ***NOT*** install this into production use.
2064 Data corruption and crashes are possible.
2065
2066 It is most seriously suggested that you do not continue any further
2067 unless you want to help in developing and debugging Perl.
2068
6adc6a45
JH
2069 If you *still* want to build perl, you can answer 'y' now,
2070 or pass -Dusedevel to Configure.
2071
0107c034
JH
2072EOH
2073 rp='Do you really want to continue?'
2074 dflt='n'
2075 . ./myread
2076 case "$ans" in
8feeef0e
JH
2077 [yY]) echo >&4 "Okay, continuing."
2078 usedevel="$define" ;;
0107c034
JH
2079 *) echo >&4 "Okay, bye."
2080 exit 1
2081 ;;
2082 esac
2083 ;;
2084 esac
2085 ;;
2086esac
8feeef0e
JH
2087case "$usedevel" in
2088$define|true|[yY]*)
2089 case "$versiononly" in
2090 '') versiononly="$define" ;;
2091 esac
2092 case "$installusrbinperl" in
2093 '') installusrbinperl="$undef" ;;
2094 esac
2095 ;;
2096esac
0107c034 2097
2304df62
AD
2098: general instructions
2099needman=true
2100firsttime=true
760ac839 2101user=`(logname) 2>/dev/null`
dfe9444c
AD
2102case "$user" in
2103'') user=`whoami 2>&1`;;
760ac839 2104esac
2304df62
AD
2105if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106 firsttime=false
2107 echo " "
2108 rp='Would you like to see the instructions?'
2109 dflt=n
2110 . ./myread
2111 case "$ans" in
2112 [yY]*) ;;
2113 *) needman=false;;
2114 esac
2115fi
2116if $needman; then
2117 cat <<EOH
4e2a5f63 2118
2304df62 2119This installation shell script will examine your system and ask you questions
a0d0e21e 2120to determine how the perl5 package should be installed. If you get
2304df62
AD
2121stuck on a question, you may use a ! shell escape to start a subshell or
2122execute a command. Many of the questions will have default answers in square
2123brackets; typing carriage return will give you the default.
2124
2125On some of the questions which ask for file or directory names you are allowed
2126to use the ~name construct to specify the login directory belonging to "name",
2127even if you don't have a shell which knows about that. Questions where this is
2128allowed will be marked "(~name ok)".
2129
2130EOH
2131 rp=''
2132 dflt='Type carriage return to continue'
2133 . ./myread
2134 cat <<'EOH'
2135
2136The prompter used in this script allows you to use shell variables and
2137backticks in your answers. You may use $1, $2, etc... to refer to the words
2138in the default answer, as if the default line was a set of arguments given to a
2139script shell. This means you may also use $* to repeat the whole default line,
2140so you do not have to re-type everything to add something to the default.
2141
2142Everytime there is a substitution, you will have to confirm. If there is an
2143error (e.g. an unmatched backtick), the default answer will remain unchanged
2144and you will be prompted again.
2145
2146If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2147the questions and use the computed defaults (or the previous answers if there
2148was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 2149You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 2150on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
2151
2152EOH
2153 . ./myread
2154 cat <<EOH
2155
2156Much effort has been expended to ensure that this shell script will run on any
2157Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
2158Configure and run it again. If you can't run Configure for some reason,
2159you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 2160have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
2161
2162This installation script affects things in two ways:
2163
21641) it may do direct variable substitutions on some of the files included
2165 in this kit.
21662) it builds a config.h file for inclusion in C programs. You may edit
2167 any of these files as the need arises after running this script.
2168
2169If you make a mistake on a question, there is no easy way to back up to it
2170currently. The easiest thing to do is to edit config.sh and rerun all the SH
2171files. Configure will offer to let you do this before it runs the SH files.
2172
2173EOH
2174 dflt='Type carriage return to continue'
2175 . ./myread
2176 case "$firsttime" in
2177 true) echo $user >>../.config/instruct;;
2178 esac
2179fi
2180
2304df62
AD
2181: find out where common programs are
2182echo " "
2183echo "Locating common programs..." >&4
2184cat <<EOSC >loc
2185$startsh
2186case \$# in
21870) exit 1;;
2188esac
2189thing=\$1
2190shift
2191dflt=\$1
2192shift
2193for dir in \$*; do
2194 case "\$thing" in
2195 .)
2196 if test -d \$dir/\$thing; then
2197 echo \$dir
2198 exit 0
2199 fi
2200 ;;
2201 *)
a0d0e21e 2202 for thisthing in \$dir/\$thing; do
ecfc5424 2203 : just loop through to pick last item
a0d0e21e 2204 done
25f94b33 2205 if test -f \$thisthing; then
a0d0e21e 2206 echo \$thisthing
2304df62 2207 exit 0
a5a94ea5
JH
2208 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209 echo \$thisthing
2210 exit 0
2304df62 2211 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2212 if test -n "$DJGPP"; then
2213 echo \$dir/\$thing.exe
b921d661 2214 elif test "$eunicefix" != ":"; then
c4f23d77
AD
2215 : on Eunice apparently
2216 echo \$dir/\$thing
b921d661 2217 exit 0
c4f23d77 2218 fi
2d736872 2219 exit 0
2304df62
AD
2220 fi
2221 ;;
2222 esac
2223done
2224echo \$dflt
2225exit 1
2226EOSC
2227chmod +x loc
2228$eunicefix loc
2229loclist="
2230awk
2231cat
f8006fac 2232chmod
b4eb6b3d
JH
2233comm
2234cp
2304df62
AD
2235echo
2236expr
2237grep
a0d0e21e 2238ls
b4eb6b3d 2239mkdir
2304df62
AD
2240rm
2241sed
b4eb6b3d 2242sort
85e6fe83 2243touch
2304df62 2244tr
b4eb6b3d 2245uniq
2304df62
AD
2246"
2247trylist="
2248Mcc
dfe9444c 2249ar
3659ebf1 2250bison
b4eb6b3d 2251byacc
2304df62 2252cpp
b4eb6b3d 2253csh
2304df62
AD
2254date
2255egrep
1fef16b3 2256gmake
8ff267be 2257gzip
b4eb6b3d 2258less
8ff267be 2259ln
3c728e00 2260make
b4eb6b3d 2261more
693762b4 2262nm
b4eb6b3d
JH
2263nroff
2264pg
2304df62
AD
2265test
2266uname
8ff267be 2267zip
2304df62 2268"
8e07c86e 2269pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2270pth="$pth /lib /usr/lib"
2271for file in $loclist; do
dfe9444c
AD
2272 eval xxx=\$$file
2273 case "$xxx" in
2274 /*|?:[\\/]*)
2275 if test -f "$xxx"; then
2276 : ok
2277 else
2278 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279 xxx=`./loc $file $file $pth`
2280 fi
2281 ;;
2282 '') xxx=`./loc $file $file $pth`;;
2283 *) xxx=`./loc $xxx $xxx $pth`;;
2284 esac
a5a94ea5 2285 eval $file=$xxx$_exe
2304df62
AD
2286 eval _$file=$xxx
2287 case "$xxx" in
2288 /*)
2289 echo $file is in $xxx.
2290 ;;
8e07c86e
AD
2291 ?:[\\/]*)
2292 echo $file is in $xxx.
2293 ;;
2304df62 2294 *)
25f94b33
AD
2295 echo "I don't know where '$file' is, and my life depends on it." >&4
2296 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2297 exit 1
2304df62
AD
2298 ;;
2299 esac
2300done
2301echo " "
2302echo "Don't worry if any of the following aren't found..."
2303say=offhand
2304for file in $trylist; do
dfe9444c
AD
2305 eval xxx=\$$file
2306 case "$xxx" in
2307 /*|?:[\\/]*)
2308 if test -f "$xxx"; then
2309 : ok
2310 else
2311 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312 xxx=`./loc $file $file $pth`
2313 fi
2314 ;;
2315 '') xxx=`./loc $file $file $pth`;;
2316 *) xxx=`./loc $xxx $xxx $pth`;;
2317 esac
306a8474 2318 eval $file=$xxx$_exe
2304df62
AD
2319 eval _$file=$xxx
2320 case "$xxx" in
2321 /*)
2322 echo $file is in $xxx.
2323 ;;
8e07c86e
AD
2324 ?:[\\/]*)
2325 echo $file is in $xxx.
2326 ;;
2304df62
AD
2327 *)
2328 echo "I don't see $file out there, $say."
2329 say=either
2330 ;;
2331 esac
2332done
2333case "$egrep" in
1fef16b3 2334egrep)
2304df62
AD
2335 echo "Substituting grep for egrep."
2336 egrep=$grep
868439a2 2337 _egrep=$grep
2304df62
AD
2338 ;;
2339esac
8ff267be 2340case "$ln" in
1fef16b3 2341ln)
8ff267be 2342 echo "Substituting cp for ln."
2343 ln=$cp
868439a2 2344 _ln=$cp
8ff267be 2345 ;;
2346esac
2e26f1d5
JH
2347case "$make" in
2348make)
2349 case "$gmake" in
2350 gmake)
2351 echo "I can't find make or gmake, and my life depends on it." >&4
2352 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353 exit 1
2354 ;;
2355 esac
2356 ;;
2357esac
2358case "$gmake" in
2359gmake) ;;
2360*) # We can't have osname yet.
1fef16b3
JH
2361 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362 # Assume that gmake, if found, is definitely GNU make
2363 # and prefer it over the system make.
2364 echo "Substituting gmake for make."
2365 make=$gmake
868439a2 2366 _make=$gmake
1fef16b3
JH
2367 fi
2368 ;;
a5a94ea5 2369esac
2304df62
AD
2370case "$test" in
2371test)
2372 echo "Hopefully test is built into your sh."
2373 ;;
2374*)
73614538 2375 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2376 echo "Using the test built into your sh."
2304df62
AD
2377 test=test
2378 _test=test
2379 fi
2380 ;;
2381esac
2382case "$echo" in
2383echo)
2384 echo "Hopefully echo is built into your sh."
2385 ;;
2386'') ;;
2387*)
2388 echo " "
2389echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390 $echo $n "hi there$c" >foo1
2391 echo $n "hi there$c" >foo2
2392 if cmp foo1 foo2 >/dev/null 2>&1; then
2393 echo "They are compatible. In fact, they may be identical."
2394 else
2395 case "$n" in
2396 '-n') n='' c='\c';;
2397 *) n='-n' c='';;
2398 esac
2399 cat <<FOO
2400They are not compatible! You are probably running ksh on a non-USG system.
2401I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402have echo built in and we may have to run some Bourne shell scripts. That
2403means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2404
2405FOO
2406 $echo $n "The star should be here-->$c"
2407 $echo "*"
2408 fi
2409 $rm -f foo1 foo2
2410 ;;
2411esac
2412
6b769f8f 2413cat <<EOS >trygcc
2573c5f9
JH
2414$startsh
2415EOS
6b769f8f 2416cat <<'EOSC' >>trygcc
2573c5f9
JH
2417case "$cc" in
2418'') ;;
2419*) $rm -f try try.*
2420 $cat >try.c <<EOM
2421int main(int argc, char *argv[]) {
2422 return 0;
2423}
2424EOM
e4778687 2425 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2426 :
2427 else
2428 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429 despair=yes
2430 trygcc=yes
2431 case "$cc" in
2432 *gcc*) trygcc=no ;;
2433 esac
2434 case "`$cc -v -c try.c 2>&1`" in
2435 *gcc*) trygcc=no ;;
2436 esac
2437 if $test X"$trygcc" = Xyes; then
2438 if gcc -o try -c try.c; then
2439 echo " "
2440 echo "You seem to have a working gcc, though." >&4
2441 rp="Would you like to use it?"
2442 dflt=y
2443 if $test -f myread; then
2444 . ./myread
2445 else
2446 if $test -f UU/myread; then
2447 . ./UU/myread
2448 else
2449 echo "Cannot find myread, sorry. Aborting." >&2
2450 exit 1
2451 fi
2452 fi
2453 case "$ans" in
6371411c
RB
2454 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455 if $test -f usethreads.cbu; then
2456 $cat >&4 <<EOM
2457
2458*** However, any setting of the C compiler flags (e.g. for thread support)
2459*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2460*** (together with e.g. -Dusethreads).
2461
2462EOM
2463 fi;;
2573c5f9
JH
2464 esac
2465 fi
2466 fi
6b769f8f
RB
2467 fi
2468 $rm -f try try.*
2469 ;;
2470esac
2471EOSC
2472
2473cat <<EOS >checkcc
2474$startsh
2475EOS
2476cat <<'EOSC' >>checkcc
2477case "$cc" in
2478'') ;;
2479*) $rm -f try try.*
2480 $cat >try.c <<EOM
2481int main(int argc, char *argv[]) {
2482 return 0;
2483}
2484EOM
2485 if $cc -o try $ccflags $ldflags try.c; then
2486 :
2487 else
2573c5f9 2488 if $test X"$despair" = Xyes; then
6b769f8f
RB
2489 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490 fi
2491 $cat >&4 <<EOM
5dd4fbdf
MB
2492You need to find a working C compiler.
2493Either (purchase and) install the C compiler supplied by your OS vendor,
2494or for a free C compiler try http://gcc.gnu.org/
2495I cannot continue any further, aborting.
2496EOM
6b769f8f 2497 exit 1
2573c5f9
JH
2498 fi
2499 $rm -f try try.*
2500 ;;
2501esac
2502EOSC
2503
a0d0e21e
LW
2504: determine whether symbolic links are supported
2505echo " "
2506$touch blurfl
2507if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508 echo "Symbolic links are supported." >&4
818f00be 2509 lns="$ln -s"
a0d0e21e
LW
2510else
2511 echo "Symbolic links are NOT supported." >&4
2512 lns="$ln"
2513fi
2514$rm -f blurfl sym
2515
dafca956
JH
2516: determine whether symbolic links are supported
2517echo " "
2518case "$lns" in
18ea2752 2519*"ln"*" -s")
dafca956
JH
2520 echo "Checking how to test for symbolic links..." >&4
2521 $lns blurfl sym
4b661809 2522 if $test "X$issymlink" = X; then
2e2a97a6
JH
2523 case "$newsh" in
2524 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526 esac
5d644a95
MB
2527 if test $? = 0; then
2528 issymlink="test -h"
2e2a97a6
JH
2529 else
2530 echo "Your builtin 'test -h' may be broken." >&4
2531 case "$test" in
2532 /*) ;;
2533 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534 for p in $pth
2535 do
2536 if test -f "$p/$test"; then
2537 test="$p/$test"
2538 break
2539 fi
2540 done
2541 ;;
2542 esac
2543 case "$test" in
2544 /*)
2545 echo "Trying external '$test -h'." >&4
2546 issymlink="$test -h"
2547 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2548 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2549 issymlink=''
2550 fi
2551 ;;
2552 *) issymlink='' ;;
2553 esac
5d644a95
MB
2554 fi
2555 fi
4b661809 2556 if $test "X$issymlink" = X; then
dafca956 2557 if $test -L sym 2>/dev/null; then
5d644a95 2558 issymlink="$test -L"
2e2a97a6 2559 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2560 fi
2561 fi
4b661809 2562 if $test "X$issymlink" != X; then
5d644a95 2563 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2564 else
2565 echo "I do not know how you can test for symbolic links." >&4
2566 fi
2567 $rm -f blurfl sym
2568 ;;
2569*) echo "No symbolic links, so not testing for their testing..." >&4
2570 ;;
2571esac
2572echo " "
2573
2574
2575case "$mksymlinks" in
2576$define|true|[yY]*)
2577 case "$src" in
2578 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579 exit 1
2580 ;;
4b661809 2581 *) case "$lns:$issymlink" in
f314eb9f 2582 *"ln"*" -s:"*"test -"?)
dafca956
JH
2583 echo "Creating the symbolic links..." >&4
2584 echo "(First creating the subdirectories...)" >&4
2585 cd ..
2586 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587 read directory
2588 test -z "$directory" && break
2589 mkdir -p $directory
2590 done
2591 # Sanity check 1.
2592 if test ! -d t/base; then
2593 echo "Failed to create the subdirectories. Aborting." >&4
2594 exit 1
2595 fi
2596 echo "(Then creating the symlinks...)" >&4
2597 awk '{print $1}' $src/MANIFEST | while true; do
2598 read filename
2599 test -z "$filename" && break
2600 if test -f $filename; then
5d644a95 2601 if $issymlink $filename; then
dafca956
JH
2602 rm -f $filename
2603 fi
2604 fi
2605 if test -f $filename; then
2606 echo "$filename already exists, not symlinking."
2607 else
2608 ln -s $src/$filename $filename
2609 fi
2610 done
2611 # Sanity check 2.
a0d24b8a
JH
2612 if test ! -f t/base/lex.t; then
2613 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2614 exit 1
2615 fi
2616 cd UU
2617 ;;
2618 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619 ;;
2620 esac
2621 ;;
2622 esac
2623 ;;
2624esac
2625
5440bc8e
JH
2626
2627case "$usecrosscompile" in
2628$define|true|[yY]*)
93bc48fa 2629 $echo "Cross-compiling..."
5440bc8e
JH
2630 croak=''
2631 case "$cc" in
2632 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2633 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2634 ar=$targetarch-ar
2635 # leave out ld, choosing it is more complex
2636 nm=$targetarch-nm
2637 ranlib=$targetarch-ranlib
93bc48fa 2638 $echo 'extern int foo;' > try.c
f8006fac 2639 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2640 shift
2641 if $test $# -gt 0; then
2642 incpth="$incpth $*"
f8006fac
JH
2643 incpth="`$echo $incpth|$sed 's/^ //'`"
2644 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2645 for i in $*; do
f8006fac 2646 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2647 if $test -d $j; then
2648 libpth="$libpth $j"
2649 fi
2650 done
f8006fac
JH
2651 libpth="`$echo $libpth|$sed 's/^ //'`"
2652 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2653 fi
2654 $rm -f try.c
5440bc8e
JH
2655 ;;
2656 esac
2657 case "$targetarch" in
93bc48fa
JH
2658 '') echo "Targetarch not defined." >&4; croak=y ;;
2659 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2660 esac
2661 case "$incpth" in
93bc48fa 2662 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2663 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2664 esac
2665 case "$libpth" in
93bc48fa 2666 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2667 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2668 esac
93bc48fa
JH
2669 case "$usrinc" in
2670 '') for i in $incpth; do
2671 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672 usrinc=$i
2673 echo "Guessing usrinc $usrinc." >&4
2674 break
2675 fi
2676 done
2677 case "$usrinc" in
2678 '') echo "Usrinc not defined." >&4; croak=y ;;
2679 esac
2680 ;;
2681 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2682 esac
93bc48fa
JH
2683 case "$targethost" in
2684 '') echo "Targethost not defined." >&4; croak=y ;;
2685 *) echo "Using targethost $targethost." >&4
5440bc8e 2686 esac
93bc48fa
JH
2687 locincpth=' '
2688 loclibpth=' '
5440bc8e 2689 case "$croak" in
93bc48fa 2690 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2691 esac
2692 case "$src" in
2693 /*) run=$src/Cross/run
93c0359c 2694 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2695 to=$src/Cross/to
2696 from=$src/Cross/from
2697 ;;
93bc48fa 2698 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2699 run=$pwd/Cross/run
f8006fac 2700 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2701 to=$pwd/Cross/to
2702 from=$pwd/Cross/from
2703 ;;
2704 esac
2705 case "$targetrun" in
2706 '') targetrun=ssh ;;
2707 esac
2708 case "$targetto" in
2709 '') targetto=scp ;;
2710 esac
2711 case "$targetfrom" in
2712 '') targetfrom=scp ;;
2713 esac
2714 run=$run-$targetrun
2715 to=$to-$targetto
2716 from=$from-$targetfrom
93bc48fa
JH
2717 case "$targetdir" in
2718 '') targetdir=/tmp
2719 echo "Guessing targetdir $targetdir." >&4
2720 ;;
2721 esac
5440bc8e 2722 case "$targetuser" in
93bc48fa
JH
2723 '') targetuser=root
2724 echo "Guessing targetuser $targetuser." >&4
2725 ;;
5440bc8e
JH
2726 esac
2727 case "$targetfrom" in
2728 scp) q=-q ;;
2729 *) q='' ;;
2730 esac
2731 case "$targetrun" in
2732 ssh|rsh)
2733 cat >$run <<EOF
2734#!/bin/sh
93c0359c
JH
2735case "\$1" in
2736-cwd)
2737 shift
2738 cwd=\$1
2739 shift
2740 ;;
2741esac
2742case "\$cwd" in
2743'') cwd=$targetdir ;;
2744esac
5440bc8e
JH
2745exe=\$1
2746shift
93c0359c
JH
2747if $test ! -f \$exe.xok; then
2748 $to \$exe
2749 $touch \$exe.xok
2750fi
2751$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2752EOF
2753 ;;
93bc48fa 2754 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2755 exit 1
2756 ;;
2757 esac
93c0359c
JH
2758 case "$targetmkdir" in
2759 */Cross/mkdir)
2760 cat >$targetmkdir <<EOF
2761#!/bin/sh
2762$targetrun -l $targetuser $targethost "mkdir -p \$@"
2763EOF
f8006fac 2764 $chmod a+rx $targetmkdir
93c0359c
JH
2765 ;;
2766 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2767 exit 1
2768 ;;
2769 esac
5440bc8e
JH
2770 case "$targetto" in
2771 scp|rcp)
2772 cat >$to <<EOF
2773#!/bin/sh
2774for f in \$@
2775do
93c0359c
JH
2776 case "\$f" in
2777 /*)
2778 $targetmkdir \`dirname \$f\`
2779 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2780 ;;
2781 *)
2782 $targetmkdir $targetdir/\`dirname \$f\`
2783 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784 ;;
2785 esac
5440bc8e
JH
2786done
2787exit 0
2788EOF
2789 ;;
2790 cp) cat >$to <<EOF
2791#!/bin/sh
93c0359c
JH
2792for f in \$@
2793do
2794 case "\$f" in
2795 /*)
2796 $mkdir -p $targetdir/\`dirname \$f\`
2797 $cp \$f $targetdir/\$f || exit 1
2798 ;;
2799 *)
2800 $targetmkdir $targetdir/\`dirname \$f\`
2801 $cp \$f $targetdir/\$f || exit 1
2802 ;;
2803 esac
2804done
2805exit 0
5440bc8e
JH
2806EOF
2807 ;;
93bc48fa 2808 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2809 exit 1
2810 ;;
2811 esac
2812 case "$targetfrom" in
2813 scp|rcp)
2814 cat >$from <<EOF
2815#!/bin/sh
2816for f in \$@
2817do
93c0359c 2818 $rm -f \$f
5440bc8e
JH
2819 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820done
2821exit 0
2822EOF
2823 ;;
2824 cp) cat >$from <<EOF
2825#!/bin/sh
2826for f in \$@
2827do
93c0359c 2828 $rm -f \$f
5440bc8e
JH
2829 cp $targetdir/\$f . || exit 1
2830done
2831exit 0
2832EOF
2833 ;;
93bc48fa 2834 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2835 exit 1
2836 ;;
2837 esac
93bc48fa
JH
2838 if $test ! -f $run; then
2839 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2840 else
f8006fac 2841 $chmod a+rx $run
5440bc8e 2842 fi
93bc48fa
JH
2843 if $test ! -f $to; then
2844 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2845 else
f8006fac 2846 $chmod a+rx $to
5440bc8e 2847 fi
93bc48fa
JH
2848 if $test ! -f $from; then
2849 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2850 else
f8006fac 2851 $chmod a+rx $from
5440bc8e 2852 fi
93bc48fa 2853 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2854 exit 1
2855 fi
2856 cat >&4 <<EOF
f8006fac
JH
2857Using '$run' for remote execution,
2858and '$from' and '$to'
93bc48fa 2859for remote file transfer.
5440bc8e
JH
2860EOF
2861 ;;
2862*) run=''
2863 to=:
2864 from=:
2865 usecrosscompile='undef'
2866 targetarch=''
2867 ;;
2868esac
2869
ecfc5424
AD
2870: see whether [:lower:] and [:upper:] are supported character classes
2871echo " "
ecfc5424
AD
2872case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873ABYZ)
2874 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875 up='[:upper:]'
2876 low='[:lower:]'
2877 ;;
416d0bea
MB
2878*) # There is a discontinuity in EBCDIC between 'R' and 'S'
2879 # (0xd9 and 0xe2), therefore that is a nice testing point.
2880 if test "X$up" = X -o "X$low" = X; then
2881 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2882 rs) up='[A-Z]'
2883 low='[a-z]'
28e8609d
JH
2884 ;;
2885 esac
416d0bea 2886 fi
28e8609d 2887 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2888 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2889 rs) up='A-Z'
28e8609d
JH
2890 low='a-z'
2891 ;;
2892 esac
416d0bea 2893 fi
28e8609d 2894 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2895 case "`echo RS | od -x 2>/dev/null`" in
2896 *D9E2*|*d9e2*)
28e8609d
JH
2897 echo "Hey, this might be EBCDIC." >&4
2898 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2899 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900 rs) up='[A-IJ-RS-Z]'
2901 low='[a-ij-rs-z]'
28e8609d
JH
2902 ;;
2903 esac
2904 fi
2905 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2906 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907 rs) up='A-IJ-RS-Z'
2908 low='a-ij-rs-z'
28e8609d
JH
2909 ;;
2910 esac
2911 fi
2912 ;;
2913 esac
2914 fi
2915esac
416d0bea
MB
2916case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917rs)
28e8609d
JH
2918 echo "Using $up and $low to convert case." >&4
2919 ;;
ecfc5424 2920*)
28e8609d
JH
2921 echo "I don't know how to translate letters from upper to lower case." >&4
2922 echo "Your tr is not acting any way I know of." >&4
2923 exit 1
2924 ;;
ecfc5424
AD
2925esac
2926: set up the translation script tr, must be called with ./tr of course
2927cat >tr <<EOSC
2928$startsh
2929case "\$1\$2" in
2930'[A-Z][a-z]') exec $tr '$up' '$low';;
2931'[a-z][A-Z]') exec $tr '$low' '$up';;
2932esac
2933exec $tr "\$@"
2934EOSC
2935chmod +x tr
2936$eunicefix tr
2937
2304df62
AD
2938: Try to determine whether config.sh was made on this system
2939case "$config_sh" in
2940'')
43999f95
JH
2941myuname=`$uname -a 2>/dev/null`
2942$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2943# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944# because the A-Z/a-z are not consecutive.
a0d0e21e 2945myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2946 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2947newmyuname="$myuname"
2304df62 2948dflt=n
16d20bd9
AD
2949case "$knowitall" in
2950'')
2951 if test -f ../config.sh; then
2952 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953 eval "`grep myuname= ../config.sh`"
2954 fi
2955 if test "X$myuname" = "X$newmyuname"; then
2956 dflt=y
2957 fi
2304df62 2958 fi
16d20bd9
AD
2959 ;;
2960*) dflt=y;;
2961esac
2304df62
AD
2962
2963: Get old answers from old config file if Configure was run on the
2964: same system, otherwise use the hints.
2965hint=default
2966cd ..
2967if test -f config.sh; then
16d20bd9
AD
2968 echo " "
2969 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2970 . UU/myread
2971 case "$ans" in
f83701cd
AD
2972 n*|N*) echo "OK, I'll ignore it."
2973 mv config.sh config.sh.old
2974 myuname="$newmyuname"
2975 ;;
2304df62 2976 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2977 tmp_n="$n"
2978 tmp_c="$c"
85cad39c 2979 tmp_sh="$sh"
2304df62
AD
2980 . ./config.sh
2981 cp config.sh UU
ecfc5424
AD
2982 n="$tmp_n"
2983 c="$tmp_c"
85cad39c 2984 : Older versions did not always set $sh. Catch re-use of such
2985 : an old config.sh.
2986 case "$sh" in
2987 '') sh="$tmp_sh" ;;
2988 esac
2304df62
AD
2989 hint=previous
2990 ;;
2991 esac
2992fi
2573c5f9 2993. ./UU/checkcc
2304df62
AD
2994if test ! -f config.sh; then
2995 $cat <<EOM
2996
4e2a5f63
AD
2997First time through, eh? I have some defaults handy for some systems
2998that need some extra help getting the Configure answers right:
2304df62
AD
2999
3000EOM
dfe9444c 3001 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
3002 dflt=''
3003 : Half the following guesses are probably wrong... If you have better
7f2de2d2 3004 : tests or hints, please send them to perlbug@perl.org
2304df62 3005 : The metaconfig authors would also appreciate a copy...
a0d0e21e 3006 $test -f /irix && osname=irix
85e6fe83
LW
3007 $test -f /xenix && osname=sco_xenix
3008 $test -f /dynix && osname=dynix
3009 $test -f /dnix && osname=dnix
5f05dabc 3010 $test -f /lynx.os && osname=lynxos
3011 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 3012 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 3013 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 3014 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
3015 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
3017 $test -d /usr/apollo/bin && osname=apollo
3018 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 3019 $test -d /usr/include/minix && osname=minix
d54344fc 3020 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 3021 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 3022 osname=machten
4633a7c4 3023 if $test -x /sbin/version; then
dfe9444c 3024 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
3025 $sed -e 's/[A-Za-z]$//'`
3026 elif $test -x /usr/etc/version; then
dfe9444c 3027 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
3028 $sed -e 's/[A-Za-z]$//'`
3029 else
3030 osvers="$2.$3"
3031 fi
3032 fi
aaacdc8b
GS
3033
3034 $test -f /sys/posix.dll &&
3035 $test -f /usr/bin/what &&
3036 set X `/usr/bin/what /sys/posix.dll` &&
3037 $test "$3" = UWIN &&
3038 osname=uwin &&
3039 osvers="$5"
3040
2304df62
AD
3041 if $test -f $uname; then
3042 set X $myuname
3043 shift
3044
2304df62 3045 case "$5" in
85e6fe83 3046 fps*) osname=fps ;;
2304df62
AD
3047 mips*)
3048 case "$4" in
85e6fe83
LW
3049 umips) osname=umips ;;
3050 *) osname=mips ;;
2304df62 3051 esac;;
85e6fe83
LW
3052 [23]100) osname=mips ;;
3053 next*) osname=next ;;
ecfc5424 3054 i386*)
c6912327
JH
3055 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
3057 osname='sco'
3058 osvers=$tmp
3059 elif $test -f /etc/kconfig; then
ecfc5424 3060 osname=isc
bd628c73 3061 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
3062 osvers=4
3063 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064 osvers=3
2304df62 3065 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 3066 osvers=2
ecfc5424
AD
3067 fi
3068 fi
2000072c 3069 tmp=''
ecfc5424 3070 ;;
c4f23d77
AD
3071 pc*)
3072 if test -n "$DJGPP"; then
3073 osname=dos
3074 osvers=djgpp
3075 fi
3076 ;;
2304df62
AD
3077 esac
3078
3079 case "$1" in
a0d0e21e
LW
3080 aix) osname=aix
3081 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082 case "$tmp" in
1aef975c 3083 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
3084 '<3240'|'<>3240') osvers=3.2.0 ;;
3085 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 3087 *) osvers=$tmp;;
a0d0e21e
LW
3088 esac
3089 ;;
aaacdc8b
GS
3090 bsd386) osname=bsd386
3091 osvers=`$uname -r`
3092 ;;
3093 cygwin*) osname=cygwin
3094 osvers="$3"
3095 ;;
23f87696
SZ
3096 *dc.osx) osname=dcosx
3097 osvers="$3"
3098 ;;
a0d0e21e
LW
3099 dnix) osname=dnix
3100 osvers="$3"
3101 ;;
3102 domainos) osname=apollo
3103 osvers="$3"
3104 ;;
761ee4e8 3105 dgux) osname=dgux
a0d0e21e
LW
3106 osvers="$3"
3107 ;;
760ac839 3108 dynixptx*) osname=dynixptx
e58e581d 3109 osvers=`echo "$4"|sed 's/^v//'`
760ac839 3110 ;;
a0d0e21e
LW
3111 freebsd) osname=freebsd
3112 osvers="$3" ;;
761ee4e8
BD
3113 genix) osname=genix ;;
3114 gnu) osname=gnu
3115 osvers="$3" ;;
3116 hp*) osname=hpux
bfb7748a 3117 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 3118 ;;
761ee4e8 3119 irix*) osname=irix
a0d0e21e
LW
3120 case "$3" in
3121 4*) osvers=4 ;;
3122 5*) osvers=5 ;;
ecfc5424 3123 *) osvers="$3" ;;
a0d0e21e
LW
3124 esac
3125 ;;
761ee4e8 3126 linux) osname=linux
a0d0e21e 3127 case "$3" in
a0d0e21e
LW
3128 *) osvers="$3" ;;
3129 esac
3130 ;;
761ee4e8 3131 MiNT) osname=mint
28e8609d
JH
3132 ;;
3133 netbsd*) osname=netbsd
ecfc5424
AD
3134 osvers="$3"
3135 ;;
4e81affe
MM
3136 news-os) osvers="$3"
3137 case "$3" in
3138 4*) osname=newsos4 ;;
3139 *) osname=newsos ;;
3140 esac
3141 ;;
aaacdc8b 3142 next*) osname=next ;;
28bb1e2c 3143 nonstop-ux) osname=nonstopux ;;
65dc58a1
TM
3144 openbsd) osname=openbsd
3145 osvers="$3"
3146 ;;
5c728af0
IZ
3147 os2) osname=os2
3148 osvers="$4"
3149 ;;
aaacdc8b
GS
3150 POSIX-BC | posix-bc ) osname=posix-bc
3151 osvers="$3"
a0d0e21e 3152 ;;
ae3afa4e
TH
3153 powerux | power_ux | powermax_os | powermaxos | \
3154 powerunix | power_unix) osname=powerux
3155 osvers="$3"
3156 ;;
aaacdc8b
GS
3157 qnx) osname=qnx
3158 osvers="$4"
3159 ;;
a0d0e21e
LW
3160 solaris) osname=solaris
3161 case "$3" in
3162 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 3163 *) osvers="$3" ;;
a0d0e21e
LW
3164 esac
3165 ;;
85e6fe83
LW
3166 sunos) osname=sunos
3167 case "$3" in
85e6fe83
LW
3168 5*) osname=solaris
3169 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 3170 *) osvers="$3" ;;
2304df62
AD
3171 esac
3172 ;;
a0d0e21e 3173 titanos) osname=titanos
85e6fe83 3174 case "$3" in
a0d0e21e
LW
3175 1*) osvers=1 ;;
3176 2*) osvers=2 ;;
3177 3*) osvers=3 ;;
3178 4*) osvers=4 ;;
ecfc5424 3179 *) osvers="$3" ;;
2304df62
AD
3180 esac
3181 ;;
85e6fe83 3182 ultrix) osname=ultrix
ecfc5424 3183 osvers="$3"
2304df62 3184 ;;
28757baa 3185 osf1|mls+) case "$5" in
fed7345c
AD
3186 alpha)
3187 osname=dec_osf
fdd85a03 3188 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2aa76180
JH
3189 case "$osvers" in
3190 [1-9].[0-9]*) ;;
3191 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3192 esac
ecfc5424
AD
3193 ;;
3194 hp*) osname=hp_osf1 ;;
3195 mips) osname=mips_osf1 ;;
85e6fe83
LW
3196 esac
3197 ;;
af1ff193 3198 # UnixWare 7.1.2 is known as Open UNIX 8
381c1bae 3199 openunix|unixware) osname=svr5
0337d152
BG
3200 osvers="$4"
3201 ;;
3c728e00 3202 uts) osname=uts
a0d0e21e
LW
3203 osvers="$3"
3204 ;;
3c728e00
JH
3205 vos) osvers="$3"
3206 ;;
85e6fe83 3207 $2) case "$osname" in
2304df62 3208 *isc*) ;;
a0d0e21e 3209 *freebsd*) ;;
5f05dabc 3210 svr*)
a0d0e21e
LW
3211 : svr4.x or possibly later
3212 case "svr$3" in
3213 ${osname}*)
3214 osname=svr$3
3215 osvers=$4
3216 ;;
3217 esac
3218 case "$osname" in
3219 svr4.0)
3220 : Check for ESIX
3221 if test -f /stand/boot ; then
3222 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3223 if test -n "$INITPROG" -a -f "$INITPROG"; then
3224 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3225 if test -n "$isesix"; then
a0d0e21e
LW
3226 osname=esix4
3227 fi
3228 fi
3229 fi
3230 ;;
3231 esac
3232 ;;
2304df62 3233 *) if test -f /etc/systemid; then
a0d0e21e
LW
3234 osname=sco
3235 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3236 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3237 osvers=$1.$2.$3
c4f23d77 3238 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3239 osvers=$1.$2
c4f23d77 3240 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3241 osvers=$1
2304df62 3242 fi
a0d0e21e
LW
3243 else
3244 case "$osname" in
3245 '') : Still unknown. Probably a generic Sys V.
3246 osname="sysv"
3247 osvers="$3"
3248 ;;
3249 esac
2304df62
AD
3250 fi
3251 ;;
3252 esac
3253 ;;
a0d0e21e
LW
3254 *) case "$osname" in
3255 '') : Still unknown. Probably a generic BSD.
3256 osname="$1"
3257 osvers="$3"
3258 ;;
3259 esac
3260 ;;
2304df62
AD
3261 esac
3262 else
dfe9444c
AD
3263 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3264 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3265 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3266 osname=news_os
2304df62 3267 fi
dfe9444c 3268 $rm -f UU/kernel.what
5c728af0 3269 elif test -d c:/. -o -n "$is_os2" ; then
8e07c86e
AD
3270 set X $myuname
3271 osname=os2
3272 osvers="$5"
2304df62
AD
3273 fi
3274 fi
85e6fe83 3275
5440bc8e
JH
3276 case "$targetarch" in
3277 '') ;;
3278 *) hostarch=$osname
3279 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3280 osvers=''
3281 ;;
3282 esac
3283
a0d0e21e
LW
3284 : Now look for a hint file osname_osvers, unless one has been
3285 : specified already.
3286 case "$hintfile" in
3287 ''|' ')
1e127011 3288 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3289 : Also try without trailing minor version numbers.
1e127011
DD
3290 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3291 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3292 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3293 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3294 case "$file" in
3295 '') dflt=none ;;
3296 *) case "$osvers" in
3297 '') dflt=$file
3298 ;;
dfe9444c 3299 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3300 dflt=$file
dfe9444c 3301 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3302 dflt=$xfile
dfe9444c 3303 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3304 dflt=$xxfile
dfe9444c 3305 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3306 dflt=$xxxfile
dfe9444c 3307 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3308 dflt=$xxxxfile
dfe9444c 3309 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3310 dflt="${osname}"
3311 else
3312 dflt=none
3313 fi
3314 ;;
3315 esac
85e6fe83
LW
3316 ;;
3317 esac
4e2a5f63
AD
3318 if $test -f Policy.sh ; then
3319 case "$dflt" in
3320 *Policy*) ;;
3321 none) dflt="Policy" ;;
3322 *) dflt="Policy $dflt" ;;
3323 esac
3324 fi
85e6fe83 3325 ;;
a0d0e21e 3326 *)
ecfc5424 3327 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3328 ;;
2304df62 3329 esac
1aef975c 3330
4e2a5f63
AD
3331 if $test -f Policy.sh ; then
3332 $cat <<EOM
3333
3334There's also a Policy hint file available, which should make the
3335site-specific (policy) questions easier to answer.
3336EOM
3337
3338 fi
3339
2304df62
AD
3340 $cat <<EOM
3341
3342You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3343A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3344is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3345
3346EOM
4e2a5f63 3347
2304df62 3348 rp="Which of these apply, if any?"
dfe9444c 3349 . UU/myread
85e6fe83
LW
3350 tans=$ans
3351 for file in $tans; do
4e2a5f63
AD
3352 if $test X$file = XPolicy -a -f Policy.sh; then
3353 . Policy.sh
3354 $cat Policy.sh >> UU/config.sh
3355 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3356 . $src/hints/$file.sh
3357 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3358 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3359 : nothing
3360 else
85e6fe83
LW
3361 : Give one chance to correct a possible typo.
3362 echo "$file.sh does not exist"
3363 dflt=$file
3364 rp="hint to use instead?"
dfe9444c 3365 . UU/myread
85e6fe83 3366 for file in $ans; do
dfe9444c
AD
3367 if $test -f "$src/hints/$file.sh"; then
3368 . $src/hints/$file.sh
3369 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3370 elif $test X$ans = X -o X$ans = Xnone ; then
3371 : nothing
3372 else
3373 echo "$file.sh does not exist -- ignored."
3374 fi
3375 done
2304df62
AD
3376 fi
3377 done
85e6fe83 3378
2304df62 3379 hint=recommended
85e6fe83 3380 : Remember our hint file for later.
dfe9444c 3381 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3382 hintfile="$file"
85e6fe83 3383 else
a0d0e21e 3384 hintfile=''
85e6fe83 3385 fi
2304df62
AD
3386fi
3387cd UU
3388;;
3389*)
3390 echo " "
3391 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3392 tmp_n="$n"
3393 tmp_c="$c"
2304df62
AD
3394 cd ..
3395 cp $config_sh config.sh 2>/dev/null
a78b0d02 3396 chmod +w config.sh
2304df62
AD
3397 . ./config.sh
3398 cd UU
3399 cp ../config.sh .
ecfc5424
AD
3400 n="$tmp_n"
3401 c="$tmp_c"
2304df62
AD
3402 hint=previous
3403 ;;
3404esac
1aef975c 3405test "$override" && . ./optdef.sh
2304df62
AD
3406
3407: Restore computed paths
3408for file in $loclist $trylist; do
3409 eval $file="\$_$file"
3410done
3411
85e6fe83 3412cat << EOM
a0d0e21e 3413
85e6fe83 3414Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3415The default value is probably right if the name rings a bell. Otherwise,
3416since spelling matters for me, either accept the default or answer "none"
3417to leave it blank.
a0d0e21e 3418
85e6fe83 3419EOM
85e6fe83 3420case "$osname" in
a0d0e21e 3421 ''|' ')
85e6fe83 3422 case "$hintfile" in
a0d0e21e 3423 ''|' '|none) dflt=none ;;
ecfc5424 3424 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3425 esac
3426 ;;
3427 *) dflt="$osname" ;;
3428esac
3429rp="Operating system name?"
3430. ./myread
3431case "$ans" in
ecfc5424
AD
3432none) osname='' ;;
3433*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3434esac
8ff267be 3435echo " "
3436case "$osvers" in
3437 ''|' ')
3438 case "$hintfile" in
3439 ''|' '|none) dflt=none ;;
3440 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3441 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3442 case "$dflt" in
3443 ''|' ') dflt=none ;;
3444 esac
3445 ;;
3446 esac
3447 ;;
3448 *) dflt="$osvers" ;;
3449esac
3450rp="Operating system version?"
3451. ./myread
3452case "$ans" in
3453none) osvers='' ;;
3454*) osvers="$ans" ;;
3455esac
3456
02e93a22
JH
3457
3458. ./posthint.sh
3459
2304df62 3460: who configured the system
59b83a6f 3461cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
dfe9444c
AD
3462case "$cf_by" in
3463"")
7c04078e 3464 cf_by=`(logname) 2>/dev/null`
dfe9444c 3465 case "$cf_by" in
7c04078e
GA
3466 "")
3467 cf_by=`(whoami) 2>/dev/null`
3468 case "$cf_by" in
3469 "") cf_by=unknown ;;
3470 esac ;;
8ff267be 3471 esac ;;
3472esac
2304df62 3473
b4eb6b3d
JH
3474: set up the script used to warn in case of inconsistency
3475cat <<EOS >whoa
3476$startsh
3477EOS
3478cat <<'EOSC' >>whoa
3479dflt=y
3480echo " "
3481echo "*** WHOA THERE!!! ***" >&4
3482echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3483rp=" Keep the $hint value?"
3484. ./myread
3485case "$ans" in
3486y) td=$was; tu=$was;;
3487esac
3488EOSC
3489
3490: function used to set $1 to $val
3491setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3492case "$val$was" in
3493$define$undef) . ./whoa; eval "$var=\$td";;
3494$undef$define) . ./whoa; eval "$var=\$tu";;
3495*) eval "$var=$val";;
3496esac'
3497
b29b105d
JH
3498case "$usesocks" in
3499$define|true|[yY]*) dflt='y';;
3500*) dflt='n';;
3501esac
3502cat <<EOM
3503
3504Perl can be built to use the SOCKS proxy protocol library. To do so,
3505Configure must be run with -Dusesocks. If you use SOCKS you also need
3506to use the PerlIO abstraction layer, this will be implicitly selected.
3507
3508If this doesn't make any sense to you, just accept the default '$dflt'.
3509EOM
3510rp='Build Perl for SOCKS?'
3511. ./myread
3512case "$ans" in
3513y|Y) val="$define" ;;
3514*) val="$undef" ;;
3515esac
3516set usesocks
3517eval $setvar
3518
3519case "$usesocks" in
3520$define|true|[yY]*) useperlio="$define";;
3521esac
3522
3523case "$useperlio" in
3524$define|true|[yY]*|'') dflt='y';;
3525*) dflt='n';;
3526esac
3527cat <<EOM
3528
3529Previous version of $package used the standard IO mechanisms as
3530defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3531alternate IO mechanisms via the PerlIO abstraction layer, but the
3532stdio mechanism is still available if needed. The abstraction layer
3533can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3534Using PerlIO with sfio may cause problems with some extension modules.
3535
3536If this doesn't make any sense to you, just accept the default '$dflt'.
3537EOM
3538rp='Use the PerlIO abstraction layer?'
3539. ./myread
3540case "$ans" in
3541y|Y)
3542 val="$define"
3543 ;;
3544*)
3545 echo "Ok, doing things the stdio way."
3546 val="$undef"
3547 ;;
3548esac
3549set useperlio
3550eval $setvar
3551
3552case "$usesocks" in
3553$define|true|[yY]*)
3554 case "$useperlio" in
3555 $define|true|[yY]*) ;;
3556 *) cat >&4 <<EOM
3557
3558You are using the SOCKS proxy protocol library which means that you
3559should also use the PerlIO layer. You may be headed for trouble.
3560
3561EOM
3562 ;;
3563 esac
3564 ;;
3565esac
3566
3567
b4eb6b3d
JH
3568case "$usethreads" in
3569$define|true|[yY]*) dflt='y';;
8e285145
AD
3570*) # Catch case where user specified ithreads or 5005threads but
3571 # forgot -Dusethreads (A.D. 4/2002)
3572 case "$useithreads$use5005threads" in
b29b105d
JH
3573 *$define*)
3574 case "$useperlio" in
3575 "$define") dflt='y' ;;
3576 *) dflt='n' ;;
3577 esac
3578 ;;
3579 *) dflt='n';;
8e285145
AD
3580 esac
3581 ;;
b4eb6b3d
JH
3582esac
3583cat <<EOM
3584
3585Perl can be built to take advantage of threads on some systems.
3586To do so, Configure can be run with -Dusethreads.
3587
bfce6503
DM
3588Note that Perl built with threading support runs slightly slower
3589and uses more memory than plain Perl. The current implementation
3590is believed to be stable, but it is fairly new, and so should be
3591treated with caution.
b4eb6b3d
JH
3592
3593If this doesn't make any sense to you, just accept the default '$dflt'.
3594EOM
3595rp='Build a threading Perl?'
3596. ./myread
3597case "$ans" in
3598y|Y) val="$define" ;;
3599*) val="$undef" ;;
3600esac
3601set usethreads
3602eval $setvar
3603
3604case "$usethreads" in
3605$define)
3606 $cat <<EOM
3607
bfce6503
DM
3608Since release 5.6, Perl has had two different threading implementations,
3609the newer interpreter-based version (ithreads) with one interpreter per
3610thread, and the older 5.005 version (5005threads).
3611The 5005threads version is effectively unmaintained and will probably be
3612removed in Perl 5.10, so there should be no need to build a Perl using it
3613unless needed for backwards compatibility with some existing 5.005threads
3614code.
b4eb6b3d 3615
b4eb6b3d
JH
3616EOM
3617 : Default to ithreads unless overridden on command line or with
3618 : old config.sh
3619 dflt='y'
3620 case "$use5005threads" in
3621 $define|true|[yY]*) dflt='n';;
3622 esac
3623 case "$useithreads" in
3624 $undef|false|[nN]*) dflt='n';;
3625 esac
bfce6503 3626 rp='Use the newer interpreter-based ithreads?'
b4eb6b3d
JH
3627 . ./myread
3628 case "$ans" in
3629 y|Y) val="$define" ;;
3630 *) val="$undef" ;;
3631 esac
3632 set useithreads
3633 eval $setvar
3634 : Now set use5005threads to the opposite value.
3635 case "$useithreads" in
3636 $define) val="$undef" ;;
3637 *) val="$define" ;;
3638 esac
3639 set use5005threads
3640 eval $setvar
3641 ;;
3642*)
3643 useithreads="$undef"
3644 use5005threads="$undef"
3645 ;;
3646esac
3647
c915ce7f
JH
3648case "$useithreads$use5005threads" in
3649"$define$define")
3650 $cat >&4 <<EOM
3651
3652You cannot have both the ithreads and the 5.005 threads enabled
3653at the same time. Disabling the 5.005 threads since they are
3654much less stable than the ithreads.
3655
3656EOM
3657 use5005threads="$undef"
3658 ;;
3659esac
3660
b29b105d
JH
3661if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3662 cat >&4 <<EOF
3663***
3664*** To build with ithreads you must also use the PerlIO layer.
3665*** Cannot continue, aborting.
3666***
3667EOF
3668 exit 1
3669fi
3670
b4eb6b3d
JH
3671case "$d_oldpthreads" in
3672'') : Configure tests would be welcome here. For now, assume undef.
3673 val="$undef" ;;
3674*) val="$d_oldpthreads" ;;
3675esac
3676set d_oldpthreads
3677eval $setvar
3678
3679
b4eb6b3d
JH
3680: Look for a hint-file generated 'call-back-unit'. If the
3681: user has specified that a threading perl is to be built,
3682: we may need to set or change some other defaults.
9da7673b
MB
3683if $test -f usethreads.cbu; then
3684 echo "Your platform has some specific hints regarding threaded builds, using them..."
3685 . ./usethreads.cbu
3686else
3687 case "$usethreads" in
3688 "$define"|true|[yY]*)
b4eb6b3d 3689 $cat <<EOM
9da7673b 3690(Your platform does not have any specific hints for threaded builds.
b4eb6b3d
JH
3691 Assuming POSIX threads, then.)
3692EOM
b4eb6b3d 3693 ;;
9da7673b
MB
3694 esac
3695fi
b4eb6b3d
JH
3696
3697cat <<EOM
3698
3699Perl can be built so that multiple Perl interpreters can coexist
3700within the same Perl executable.
3701EOM
3702
3703case "$useithreads" in
3704$define)
3705 cat <<EOM
3706This multiple interpreter support is required for interpreter-based threads.
3707EOM
3708 val="$define"
3709 ;;
3710*) case "$usemultiplicity" in
3711 $define|true|[yY]*) dflt='y';;
3712 *) dflt='n';;
3713 esac
3714 echo " "
3715 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3716 rp='Build Perl for multiplicity?'
3717 . ./myread
3718 case "$ans" in
3719 y|Y) val="$define" ;;
3720 *) val="$undef" ;;
3721 esac
3722 ;;
3723esac
3724set usemultiplicity
3725eval $setvar
3726
96056487
JH
3727
3728case "$usemorebits" in
3729"$define"|true|[yY]*)
3730 use64bitint="$define"
3731 uselongdouble="$define"
3732 usemorebits="$define"
3733 ;;
3734*) usemorebits="$undef"
3735 ;;
3736esac
3737
e5e20432
JH
3738: make some quick guesses about what we are up against
3739echo " "
3740$echo $n "Hmm... $c"
3741echo exit 1 >bsd
3742echo exit 1 >usg
3743echo exit 1 >v7
3744echo exit 1 >osf1
3745echo exit 1 >eunice
3746echo exit 1 >xenix
3747echo exit 1 >venix
3748echo exit 1 >os2
3749d_bsd="$undef"
3750$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3751if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3752then
3753 echo "Looks kind of like an OSF/1 system, but we'll see..."
3754 echo exit 0 >osf1
381aa1ff 3755elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3756 xxx=`./loc addbib blurfl $pth`
3757 if $test -f $xxx; then
3758 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3759 echo exit 0 >bsd
3760 echo exit 0 >usg
3761 else
3762 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3763 echo "Looks kind of like an extended USG system, but we'll see..."
3764 else
3765 echo "Looks kind of like a USG system, but we'll see..."
3766 fi
3767 echo exit 0 >usg
3768 fi
3769elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770 echo "Looks kind of like a BSD system, but we'll see..."
3771 d_bsd="$define"
3772 echo exit 0 >bsd
3773else
3774 echo "Looks kind of like a Version 7 system, but we'll see..."
3775 echo exit 0 >v7
3776fi
3777case "$eunicefix" in
3778*unixtovms*)
3779 $cat <<'EOI'
3780There is, however, a strange, musty smell in the air that reminds me of
3781something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3782EOI
3783 echo exit 0 >eunice
3784 d_eunice="$define"
3785: it so happens the Eunice I know will not run shell scripts in Unix format
3786 ;;
3787*)
3788 echo " "
3789 echo "Congratulations. You aren't running Eunice."
3790 d_eunice="$undef"
3791 ;;
3792esac
3793: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3794: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3795: semicolon as a patch separator
e5e20432
JH
3796case "$p_" in
3797:) ;;
3798*)
3799 $cat <<'EOI'
3800I have the feeling something is not exactly right, however...don't tell me...
3801lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3802(Or you may be running DOS with DJGPP.)
e5e20432
JH
3803EOI
3804 echo exit 0 >os2
3805 ;;
3806esac
3807if test -f /xenix; then
3808 echo "Actually, this looks more like a XENIX system..."
3809 echo exit 0 >xenix
3810 d_xenix="$define"
3811else
3812 echo " "
3813 echo "It's not Xenix..."
3814 d_xenix="$undef"
3815fi
3816chmod +x xenix
3817$eunicefix xenix
3818if test -f /venix; then
3819 echo "Actually, this looks more like a VENIX system..."
3820 echo exit 0 >venix
3821else
3822 echo " "
3823 if ./xenix; then
3824 : null
3825 else
3826 echo "Nor is it Venix..."
3827 fi
3828fi
3829chmod +x bsd usg v7 osf1 eunice xenix venix os2
3830$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3831$rm -f foo
3832
5869b1f1
JH
3833case "$cc" in
3834'') dflt=cc;;
3835*) dflt="$cc";;
3836esac
3837rp="Use which C compiler?"
3838. ./myread
3839cc="$ans"
6b769f8f
RB
3840
3841: See if they have not cc but they do have gcc
3842. ./trygcc
e5e20432
JH
3843: Look for a hint-file generated 'call-back-unit'. Now that the
3844: user has specified the compiler, we may need to set or change some
3845: other defaults.
3846if $test -f cc.cbu; then
3847 . ./cc.cbu
3848fi
2573c5f9 3849. ./checkcc
8a27cf78 3850
e5e20432
JH
3851echo " "
3852echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3853$cat >try.c <<EOM
e5e20432
JH
3854#include <stdio.h>
3855int main() {
3856#ifdef __GNUC__
3857#ifdef __VERSION__
3858 printf("%s\n", __VERSION__);
3859#else
3860 printf("%s\n", "1");
3861#endif
3862#endif
073b6de5 3863 return(0);
e5e20432
JH
3864}
3865EOM
5440bc8e
JH
3866if $cc -o try $ccflags $ldflags try.c; then
3867 gccversion=`$run ./try`
e5e20432
JH
3868 case "$gccversion" in
3869 '') echo "You are not using GNU cc." ;;
fc68435e 3870 *) echo "You are using GNU cc $gccversion."
48fe685d 3871 ccname=gcc
fc68435e 3872 ;;
e5e20432
JH
3873 esac
3874else
3875 echo " "
3876 echo "*** WHOA THERE!!! ***" >&4
3877 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3878 case "$knowitall" in
3879 '')
3880 echo " You'd better start hunting for one and let me know about it." >&4
3881 exit 1
3882 ;;
3883 esac
3884fi
5440bc8e 3885$rm -f try try.*
e5e20432
JH
3886case "$gccversion" in
38871*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3888esac
5b463ca7
KS
3889case "$gccversion" in
3890'') gccosandvers='' ;;
10b4ebb5
JH
3891*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3892 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3893 gccshortvers=''
5b463ca7 3894 case "$gccosandvers" in
02903077
JH
3895 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3896 $osname$osvers) ;; # looking good
5b463ca7
KS
3897 $osname*) cat <<EOM >&4
3898
3899*** WHOA THERE!!! ***
3900
3901 Your gcc has not been compiled for the exact release of
3902 your operating system ($gccosandvers versus $osname$osvers).
3903
3904 In general it is a good idea to keep gcc synchronized with
3905 the operating system because otherwise serious problems
3906 may ensue when trying to compile software, like Perl.
3907
3908 I'm trying to be optimistic here, though, and will continue.
3909 If later during the configuration and build icky compilation
02903077
JH
3910 problems appear (headerfile conflicts being the most common
3911 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3912 your operating system release.
3913
3914EOM
3915 ;;
81575342 3916 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3917 esac
3918 ;;
3919esac
e723fc21
JH
3920case "$ccname" in
3921'') ccname="$cc" ;;
3922esac
e5e20432 3923
224cb7cb 3924# gcc 3.* complain about adding -Idirectories that they already know about,
76589481
JH
3925# so we will take those off from locincpth.
3926case "$gccversion" in
39273*)
3928 echo "main(){}">try.c
224cb7cb
JH
3929 for incdir in $locincpth; do
3930 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
48fe685d 3931 grep '^c[cp]p*[01]: warning: changing search order '`
224cb7cb 3932 if test "X$warn" != X; then
44b94491 3933 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
224cb7cb 3934 fi
76589481
JH
3935 done
3936 $rm -f try try.*
3937esac
640374d0 3938
bd9b35c9
JH
3939: decide how portable to be. Allow command line overrides.
3940case "$d_portable" in
3941"$undef") ;;
3942*) d_portable="$define" ;;
104d25b7 3943esac
85ab1d1d 3944
bd9b35c9
JH
3945: set up shell script to do ~ expansion
3946cat >filexp <<EOSS
3947$startsh
3948: expand filename
3949case "\$1" in
3950 ~/*|~)
3951 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3952 ;;
3953 ~*)
3954 if $test -f /bin/csh; then
3955 /bin/csh -f -c "glob \$1"
3956 failed=\$?
3957 echo ""
3958 exit \$failed
e5e20432 3959 else
bd9b35c9
JH
3960 name=\`$expr x\$1 : '..\([^/]*\)'\`
3961 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3962 if $test ! -d "\$dir"; then
3963 me=\`basename \$0\`
3964 echo "\$me: can't locate home directory for: \$name" >&2
3965 exit 1
3966 fi
3967 case "\$1" in
3968 */*)
3969 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3970 ;;
3971 *)
3972 echo \$dir
e5e20432
JH
3973 ;;
3974 esac
3975 fi
b691c02f 3976 ;;
4633a7c4 3977*)
bd9b35c9 3978 echo \$1
2304df62
AD
3979 ;;
3980esac
4633a7c4
LW
3981EOSS
3982chmod +x filexp
3983$eunicefix filexp
2304df62
AD
3984
3985: now set up to get a file name
28757baa 3986cat <<EOS >getfile
3987$startsh
3988EOS
3989cat <<'EOSC' >>getfile
2304df62
AD
3990tilde=''
3991fullpath=''
3992already=''
3993skip=''
3994none_ok=''
3995exp_file=''
a0d0e21e 3996nopath_ok=''
2304df62
AD
3997orig_rp="$rp"
3998orig_dflt="$dflt"
b233458b
JH
3999case "$gfpth" in
4000'') gfpth='.' ;;
4001esac
2304df62
AD
4002
4003case "$fn" in
ecfc5424 4004*\(*)
d604bb53
JH
4005 : getfile will accept an answer from the comma-separated list
4006 : enclosed in parentheses even if it does not meet other criteria.
4007 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
4008 fn=`echo $fn | sed 's/(.*)//'`
4009 ;;
4010esac
4011
4012case "$fn" in
a0d0e21e
LW
4013*:*)
4014 loc_file=`expr $fn : '.*:\(.*\)'`
4015 fn=`expr $fn : '\(.*\):.*'`
4016 ;;
4017esac
4018
4019case "$fn" in
2304df62
AD
4020*~*) tilde=true;;
4021esac
4022case "$fn" in
4023*/*) fullpath=true;;
4024esac
4025case "$fn" in
4026*+*) skip=true;;
4027esac
4028case "$fn" in
4029*n*) none_ok=true;;
4030esac
4031case "$fn" in
4032*e*) exp_file=true;;
4033esac
a0d0e21e
LW
4034case "$fn" in
4035*p*) nopath_ok=true;;
4036esac
2304df62
AD
4037
4038case "$fn" in
4039*f*) type='File';;
4040*d*) type='Directory';;
a0d0e21e 4041*l*) type='Locate';;
2304df62
AD
4042esac
4043
4044what="$type"
4045case "$what" in
4046Locate) what='File';;
4047esac
4048
4049case "$exp_file" in
4050'')
4051 case "$d_portable" in
4052 "$define") ;;
4053 *) exp_file=true;;
4054 esac
4055 ;;
4056esac
4057
4058cd ..
4059while test "$type"; do
4060 redo=''
4061 rp="$orig_rp"
4062 dflt="$orig_dflt"
4063 case "$tilde" in
4064 true) rp="$rp (~name ok)";;
4065 esac
4066 . UU/myread
ecfc5424
AD
4067 if test -f UU/getfile.ok && \
4068 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4069 then
4070 value="$ans"
4071 ansexp="$ans"
4072 break
4073 fi
2304df62
AD
4074 case "$ans" in
4075 none)
4076 value=''
4077 ansexp=''
4078 case "$none_ok" in
4079 true) type='';;
4080 esac
4081 ;;
4082 *)
4083 case "$tilde" in
4084 '') value="$ans"
4085 ansexp="$ans";;
4086 *)
4087 value=`UU/filexp $ans`
4088 case $? in
4089 0)
4090 if test "$ans" != "$value"; then
ecfc5424 4091 echo "(That expands to $value on this system.)"
2304df62
AD
4092 fi
4093 ;;
4094 *) value="$ans";;
4095 esac
4096 ansexp="$value"
4097 case "$exp_file" in
4098 '') value="$ans";;
4099 esac
4100 ;;
4101 esac
4102 case "$fullpath" in
4103 true)
4104 case "$ansexp" in
4105 /*) value="$ansexp" ;;
23da6c43 4106 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
4107 *)
4108 redo=true
4109 case "$already" in
4110 true)
4111 echo "I shall only accept a full path name, as in /bin/ls." >&4
4112 echo "Use a ! shell escape if you wish to check pathnames." >&4
4113 ;;
4114 *)
4115 echo "Please give a full path name, starting with slash." >&4
4116 case "$tilde" in
4117 true)
4118 echo "Note that using ~name is ok provided it expands well." >&4
4119 already=true
4120 ;;
4121 esac
4122 esac
4123 ;;
4124 esac
4125 ;;
4126 esac
4127 case "$redo" in
4128 '')
4129 case "$type" in
4130 File)
b233458b
JH
4131 for fp in $gfpth; do
4132 if test "X$fp" = X.; then
4133 pf="$ansexp"
4134 else
4135 pf="$fp/$ansexp"
4136 fi
4137 if test -f "$pf"; then
4138 type=''
4139 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4140 then
4141 echo "($value is not a plain file, but that's ok.)"
4142 type=''
4143 fi
4144 if test X"$type" = X; then
4145 value="$pf"
4146 break
4147 fi
4148 done
2304df62
AD
4149 ;;
4150 Directory)
b233458b
JH
4151 for fp in $gfpth; do
4152 if test "X$fp" = X.; then
f78bfc9c
JH
4153 dir="$ans"
4154 direxp="$ansexp"
b233458b 4155 else
dd858076 4156 dir="$fp/$ansexp"
f78bfc9c 4157 direxp="$fp/$ansexp"
b233458b 4158 fi
f78bfc9c 4159 if test -d "$direxp"; then
b233458b 4160 type=''
f78bfc9c 4161 value="$dir"
b233458b
JH
4162 break
4163 fi
4164 done
2304df62
AD
4165 ;;
4166 Locate)
40000a8c 4167 if test -d "$ansexp"; then
a0d0e21e
LW
4168 echo "(Looking for $loc_file in directory $value.)"
4169 value="$value/$loc_file"
40000a8c 4170 ansexp="$ansexp/$loc_file"
2304df62 4171 fi
40000a8c 4172 if test -f "$ansexp"; then
2304df62
AD
4173 type=''
4174 fi
a0d0e21e
LW
4175 case "$nopath_ok" in
4176 true) case "$value" in
4177 */*) ;;
4178 *) echo "Assuming $value will be in people's path."
4179 type=''
4180 ;;
4181 esac
4182 ;;
4183 esac
2304df62
AD
4184 ;;
4185 esac
4186
4187 case "$skip" in
4188 true) type='';
4189 esac
4190
4191 case "$type" in
4192 '') ;;
4193 *)
4194 if test "$fastread" = yes; then
4195 dflt=y
4196 else
4197 dflt=n
4198 fi
4199 rp="$what $value doesn't exist. Use that name anyway?"
4200 . UU/myread
4201 dflt=''
4202 case "$ans" in
4203 y*) type='';;
4204 *) echo " ";;
4205 esac
4206 ;;
4207 esac
4208 ;;
4209 esac
4210 ;;
4211 esac
4212done
4213cd UU
4214ans="$value"
4215rp="$orig_rp"
4216dflt="$orig_dflt"
ecfc5424 4217rm -f getfile.ok
b233458b 4218test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
4219EOSC
4220
bd9b35c9
JH
4221: What should the include directory be ?
4222echo " "
4223$echo $n "Hmm... $c"
4224dflt='/usr/include'
4225incpath=''
4226mips_type=''
4227if $test -f /bin/mips && /bin/mips; then
4228 echo "Looks like a MIPS system..."
4229 $cat >usr.c <<'EOCP'
4230#ifdef SYSTYPE_BSD43
4231/bsd43
4232#endif
4233EOCP
8a27cf78 4234 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
4235 dflt='/bsd43/usr/include'
4236 incpath='/bsd43'
4237 mips_type='BSD 4.3'
4238 else
4239 mips_type='System V'
4240 fi
4241 $rm -f usr.c usr.out
4242 echo "and you're compiling with the $mips_type compiler and libraries."
4243 xxx_prompt=y
4244 echo "exit 0" >mips
4245else
4246 echo "Doesn't look like a MIPS system."
4247 xxx_prompt=n
4248 echo "exit 1" >mips
4249fi
4250chmod +x mips
4251$eunicefix mips
4252case "$usrinc" in
4253'') ;;
4254*) dflt="$usrinc";;
4255esac
4256case "$xxx_prompt" in
4257y) fn=d/
4258 echo " "
4259 rp='Where are the include files you want to use?'
4260 . ./getfile
4261 usrinc="$ans"
8e07c86e 4262 ;;
bd9b35c9 4263*) usrinc="$dflt"
8e07c86e
AD
4264 ;;
4265esac
2304df62 4266
96056487
JH
4267: see how we invoke the C preprocessor
4268echo " "
4269echo "Now, how can we feed standard input to your C preprocessor..." >&4
4270cat <<'EOT' >testcpp.c
4271#define ABC abc
4272#define XYZ xyz
4273ABC.XYZ
4274EOT
4275cd ..
4276if test ! -f cppstdin; then
4277 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4278 # AIX cc -E doesn't show the absolute headerfile
4279 # locations but we'll cheat by using the -M flag.
4280 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
4281 else
4282 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4283 fi
4284else
4285 echo "Keeping your $hint cppstdin wrapper."
4286fi
4287chmod 755 cppstdin
4288wrapper=`pwd`/cppstdin
4289ok='false'
4290cd UU
4291
4292if $test "X$cppstdin" != "X" && \
4293 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4294 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4295then
4296 echo "You used to use $cppstdin $cppminus so we'll use that again."
4297 case "$cpprun" in
4298 '') echo "But let's see if we can live without a wrapper..." ;;
4299 *)
4300 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4301 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4302 then
4303 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4304 ok='true'
4305 else
4306 echo "(However, $cpprun $cpplast does not work, let's see...)"
4307 fi
4308 ;;
4309 esac
4310else
4311 case "$cppstdin" in
4312 '') ;;
4313 *)
4314 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4315 ;;
4316 esac
4317fi
4318
4319if $ok; then
4320 : nothing
4321elif echo 'Maybe "'"$cc"' -E" will work...'; \
4322 $cc -E <testcpp.c >testcpp.out 2>&1; \
4323 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324 echo "Yup, it does."
4325 x_cpp="$cc -E"
4326 x_minus='';
4327elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4328 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4329 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330 echo "Yup, it does."
4331 x_cpp="$cc -E"
4332 x_minus='-';
4333elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4334 $cc -P <testcpp.c >testcpp.out 2>&1; \
4335 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336 echo "Yipee, that works!"
4337 x_cpp="$cc -P"
4338 x_minus='';
4339elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4340 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4341 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342 echo "At long last!"
4343 x_cpp="$cc -P"
4344 x_minus='-';
4345elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4346 $cpp <testcpp.c >testcpp.out 2>&1; \
4347 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348 echo "It works!"
4349 x_cpp="$cpp"
4350 x_minus='';
4351elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4352 $cpp - <testcpp.c >testcpp.out 2>&1; \
4353 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354 echo "Hooray, it works! I was beginning to wonder."
4355 x_cpp="$cpp"
4356 x_minus='-';
4357elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4358 $wrapper <testcpp.c >testcpp.out 2>&1; \
4359 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4360 x_cpp="$wrapper"
4361 x_minus=''
4362 echo "Eureka!"
4363else
4364 dflt=''
4365 rp="No dice. I can't find a C preprocessor. Name one:"
4366 . ./myread
4367 x_cpp="$ans"
4368 x_minus=''
4369 $x_cpp <testcpp.c >testcpp.out 2>&1
4370 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4371 echo "OK, that will do." >&4
4372 else
4373echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4374 exit 1
4375 fi
4376fi
4377
4378case "$ok" in
4379false)
4380 cppstdin="$x_cpp"
4381 cppminus="$x_minus"
4382 cpprun="$x_cpp"
4383 cpplast="$x_minus"
4384 set X $x_cpp
4385 shift
4386 case "$1" in
4387 "$cpp")
4388 echo "Perhaps can we force $cc -E using a wrapper..."
4389 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4390 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4391 then
4392 echo "Yup, we can."
4393 cppstdin="$wrapper"
4394 cppminus='';
4395 else
4396 echo "Nope, we'll have to live without it..."
4397 fi
4398 ;;
4399 esac
4400 case "$cpprun" in
4401 "$wrapper")
4402 cpprun=''
4403 cpplast=''
4404 ;;
4405 esac
4406 ;;
4407esac
4408
4409case "$cppstdin" in
4410"$wrapper"|'cppstdin') ;;
4411*) $rm -f $wrapper;;
4412esac
4413$rm -f testcpp.c testcpp.out
4414
bd9b35c9
JH
4415: Set private lib path
4416case "$plibpth" in
4417'') if ./mips; then
4418 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4419 fi;;
4420esac
4421case "$libpth" in
4422' ') dlist='';;
4423'') dlist="$loclibpth $plibpth $glibpth";;
4424*) dlist="$libpth";;
4425esac
4426
4427: Now check and see which directories actually exist, avoiding duplicates
4428libpth=''
4429for xxx in $dlist
4430do
4431 if $test -d $xxx; then
4432 case " $libpth " in
4433 *" $xxx "*) ;;
4434 *) libpth="$libpth $xxx";;
4435 esac
4436 fi
4437done
4438$cat <<'EOM'
4439
4440Some systems have incompatible or broken versions of libraries. Among
4441the directories listed in the question below, please remove any you
4442know not to be holding relevant libraries, and add any that are needed.
4443Say "none" for none.
8e07c86e
AD
4444
4445EOM
bd9b35c9
JH
4446case "$libpth" in
4447'') dflt='none';;
8e07c86e 4448*)
bd9b35c9
JH
4449 set X $libpth
4450 shift
4451 dflt=${1+"$@"}
8e07c86e 4452 ;;
a0d0e21e 4453esac
bd9b35c9
JH
4454rp="Directories to use for library searches?"
4455. ./myread
4456case "$ans" in
4457none) libpth=' ';;
4458*) libpth="$ans";;
4459esac
a0d0e21e 4460
bd9b35c9
JH
4461: compute shared library extension
4462case "$so" in
4463'')
4464 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4465 dflt='sl'
dd4e71fd 4466 else
bd9b35c9 4467 dflt='so'
dd4e71fd
JH
4468 fi
4469 ;;
bd9b35c9 4470*) dflt="$so";;
dd4e71fd 4471esac
dd4e71fd
JH
4472$cat <<EOM
4473
bd9b35c9 4474On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4475you want to suppress searching of shared libraries for the remainder
bd9b35c9 4476of this configuration.
dd4e71fd
JH
4477
4478EOM
bd9b35c9
JH
4479rp='What is the file extension used for shared libraries?'
4480. ./myread
4481so="$ans"
dd4e71fd 4482
bd9b35c9
JH
4483: Define several unixisms.
4484: Hints files or command line option can be used to override them.
4485: The convoluted testing is in case hints files set either the old
4486: or the new name.
4487case "$_exe" in
4488'') case "$exe_ext" in
1fef16b3 4489 '') ;;
bd9b35c9 4490 *) _exe="$exe_ext" ;;
dd4e71fd 4491 esac
bd9b35c9 4492 ;;
bfb7748a 4493esac
bd9b35c9
JH
4494case "$_a" in
4495'') case "$lib_ext" in
4496 '') _a='.a';;
4497 *) _a="$lib_ext" ;;
dd4e71fd
JH
4498 esac
4499 ;;
dd4e71fd 4500esac
bd9b35c9
JH
4501case "$_o" in
4502'') case "$obj_ext" in
4503 '') _o='.o';;
4504 *) _o="$obj_ext";;
4505 esac
4506 ;;
4507esac
4508case "$p_" in
4509'') case "$path_sep" in
4510 '') p_=':';;
4511 *) p_="$path_sep";;
4512 esac
4513 ;;
4514esac
4515exe_ext=$_exe
4516lib_ext=$_a
4517obj_ext=$_o
4518path_sep=$p_
dd4e71fd 4519
b4eb6b3d
JH
4520: Which makefile gets called first. This is used by make depend.
4521case "$firstmakefile" in
4522'') firstmakefile='makefile';;
4633a7c4 4523esac
4633a7c4 4524
1f603089
JH
4525case "$ccflags" in
4526*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4527esac
4528
4529case "$uselongdouble" in
4530$define|true|[yY]*) dflt='y';;
4531*) dflt='n';;
4532esac
4533cat <<EOM
4534
4535Perl can be built to take advantage of long doubles which
4536(if available) may give more accuracy and range for floating point numbers.
4537
4538If this doesn't make any sense to you, just accept the default '$dflt'.
4539EOM
4540rp='Try to use long doubles if available?'
4541. ./myread
4542case "$ans" in
4543y|Y) val="$define" ;;
4544*) val="$undef" ;;
4545esac
4546set uselongdouble
4547eval $setvar
4548
4549case "$uselongdouble" in
4550true|[yY]*) uselongdouble="$define" ;;
4551esac
4552
1f603089
JH
4553: Look for a hint-file generated 'call-back-unit'. If the
4554: user has specified that long doubles should be used,
4555: we may need to set or change some other defaults.
9da7673b
MB
4556if $test -f uselongdouble.cbu; then
4557 echo "Your platform has some specific hints regarding long doubles, using them..."
4558 . ./uselongdouble.cbu
4559else
4560 case "$uselongdouble" in
4561 $define)
1f603089 4562 $cat <<EOM
9da7673b 4563(Your platform does not have any specific hints for long doubles.)
1f603089 4564EOM
1f603089 4565 ;;
9da7673b
MB
4566 esac
4567fi
1f603089 4568
bd9b35c9
JH
4569: Looking for optional libraries
4570echo " "
4571echo "Checking for optional libraries..." >&4
4572case "$libs" in
4573' '|'') dflt='';;
4574*) dflt="$libs";;
4575esac
4576case "$libswanted" in
4577'') libswanted='c_s';;
4578esac
4579case "$usesocks" in
923fc586 4580"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4581esac
68435ea7
JH
4582libsfound=''
4583libsfiles=''
4584libsdirs=''
13b3f787
JH
4585libspath=''
4586for thisdir in $libpth $xlibpth; do
4587 test -d $thisdir && libspath="$libspath $thisdir"
4588done
bd9b35c9 4589for thislib in $libswanted; do
13b3f787 4590 for thisdir in $libspath; do
f7dd4e7f
JH
4591 xxx=''
4592 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
eade9b71 4593 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
f7dd4e7f
JH
4594 $test -f "$xxx" && eval $libscheck
4595 $test -f "$xxx" && libstyle=shared
4596 fi
4597 if test ! -f "$xxx"; then
4598 xxx=$thisdir/lib$thislib.$so
4599 $test -f "$xxx" && eval $libscheck
4600 $test -f "$xxx" && libstyle=shared
4601 fi
4602 if test ! -f "$xxx"; then
4603 xxx=$thisdir/lib$thislib$_a
4604 $test -f "$xxx" && eval $libscheck
4605 $test -f "$xxx" && libstyle=static
4606 fi
4607 if test ! -f "$xxx"; then
4608 xxx=$thisdir/$thislib$_a
4609 $test -f "$xxx" && eval $libscheck
4610 $test -f "$xxx" && libstyle=static
4611 fi
4612 if test ! -f "$xxx"; then
4613 xxx=$thisdir/lib${thislib}_s$_a
4614 $test -f "$xxx" && eval $libscheck
4615 $test -f "$xxx" && libstyle=static
09ea5ba9 4616 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4617 fi
4618 if test ! -f "$xxx"; then
4619 xxx=$thisdir/Slib$thislib$_a
4620 $test -f "$xxx" && eval $libscheck
4621 $test -f "$xxx" && libstyle=static
4622 fi
4623 if $test -f "$xxx"; then
43999f95 4624 case "$libstyle" in
f7dd4e7f
JH
4625 shared) echo "Found -l$thislib (shared)." ;;
4626 static) echo "Found -l$thislib." ;;
4627 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4628 esac
bd9b35c9
JH
4629 case " $dflt " in
4630 *"-l$thislib "*);;
f7dd4e7f 4631 *) dflt="$dflt -l$thislib"
43999f95
JH
4632 libsfound="$libsfound $xxx"
4633 yyy=`basename $xxx`
4634 libsfiles="$libsfiles $yyy"
1e127011 4635 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4636 case " $libsdirs " in
4637 *" $yyy "*) ;;
4638 *) libsdirs="$libsdirs $yyy" ;;
4639 esac
4640 ;;
bd9b35c9 4641 esac
f7dd4e7f
JH
4642 break
4643 fi
4644 done
4645 if $test ! -f "$xxx"; then
4646 echo "No -l$thislib."
bd9b35c9
JH
4647 fi
4648done
4649set X $dflt
4650shift
4651dflt="$*"
4652case "$libs" in
4653'') dflt="$dflt";;
4654*) dflt="$libs";;
4655esac
4656case "$dflt" in
4657' '|'') dflt='none';;
4658esac
4633a7c4 4659
bd9b35c9 4660$cat <<EOM
4633a7c4 4661
bd9b35c9
JH
4662In order to compile $package on your machine, a number of libraries
4663are usually needed. Include any other special libraries here as well.
4664Say "none" for none. The default list is almost always right.
8e07c86e 4665EOM
8e07c86e 4666
bd9b35c9
JH
4667echo " "
4668rp="What libraries to use?"
4669. ./myread
4670case "$ans" in
4671none) libs=' ';;
4672*) libs="$ans";;
4673esac
d71b2b6b 4674
bd9b35c9
JH
4675: determine optimization, if desired, or use for debug flag also
4676case "$optimize" in
4677' '|$undef) dflt='none';;
4678'') dflt='-O';;
4679*) dflt="$optimize";;
4680esac
4681$cat <<EOH
d71b2b6b 4682
bd9b35c9
JH
4683By default, $package compiles with the -O flag to use the optimizer.
4684Alternately, you might want to use the symbolic debugger, which uses
4685the -g flag (on traditional Unix systems). Either flag can be
4686specified here. To use neither flag, specify the word "none".
d71b2b6b 4687
bd9b35c9
JH
4688EOH
4689rp="What optimizer/debugger flag should be used?"
4690. ./myread
4691optimize="$ans"
4692case "$optimize" in
4693'none') optimize=" ";;
4694esac
4695
4696dflt=''
4697: We will not override a previous value, but we might want to
4698: augment a hint file
4699case "$hint" in
4700default|recommended)
4701 case "$gccversion" in
4702 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4703 esac
bd9b35c9
JH
4704 case "$optimize" in
4705 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4706 esac
bd9b35c9
JH
4707 case "$gccversion" in
4708 2*) if test -d /etc/conf/kconfig.d &&
4709 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4710 then
4711 dflt="$dflt -posix"
4712 fi
f0d04425 4713 ;;
bd9b35c9
JH
4714 esac
4715 case "$gccversion" in
4716 1*) ;;
4717 2.[0-8]*) ;;
4718 ?*) echo " "
4719 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4720 echo 'int main(void) { return 0; }' > gcctest.c
4721 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4722 echo "Yes, it does." 2>&1
4723 case "$ccflags" in
4724 *strict-aliasing*)
4725 echo "Leaving current flags $ccflags alone." 2>&1
4726 ;;
4727 *) dflt="$dflt -fno-strict-aliasing" ;;
4728 esac
4729 else
4730 echo "Nope, it doesn't, but that's ok." 2>&1
4731 fi
f0d04425 4732 ;;
e5e20432
JH
4733 esac
4734 ;;
4735esac
4736
bd9b35c9
JH
4737case "$mips_type" in
4738*BSD*|'') inclwanted="$locincpth $usrinc";;
4739*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4740esac
4741for thisincl in $inclwanted; do
4742 if $test -d $thisincl; then
4743 if $test x$thisincl != x$usrinc; then
4744 case "$dflt" in
422af00a
LC
4745 *" -I$thisincl "*);;
4746 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4747 esac
4748 fi
4749 fi
4750done
40a7a20a 4751
bd9b35c9
JH
4752inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4753 xxx=true;
4754elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4755 xxx=true;
4756else
4757 xxx=false;
4758fi;
4759if $xxx; then
4760 case "$dflt" in
4761 *$2*);;
4762 *) dflt="$dflt -D$2";;
4763 esac;
4764fi'
40a7a20a 4765
bd9b35c9 4766set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4767
bd9b35c9
JH
4768case "$usesocks" in
4769$define)
4770 ccflags="$ccflags -DSOCKS"
4771 ;;
4772esac
40a7a20a 4773
bd9b35c9
JH
4774case "$hint" in
4775default|recommended) dflt="$ccflags $dflt" ;;
4776*) dflt="$ccflags";;
4777esac
40a7a20a 4778
bd9b35c9
JH
4779case "$dflt" in
4780''|' ') dflt=none;;
4781esac
422af00a 4782
bd9b35c9 4783$cat <<EOH
40a7a20a 4784
bd9b35c9
JH
4785Your C compiler may want other flags. For this question you should include
4786-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4787but you should NOT include libraries or ld flags like -lwhatever. If you
4788want $package to honor its debug switch, you should include -DDEBUGGING here.
4789Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4790
bd9b35c9 4791To use no flags, specify the word "none".
40a7a20a 4792
bd9b35c9
JH
4793EOH
4794set X $dflt
4795shift
4796dflt=${1+"$@"}
4797rp="Any additional cc flags?"
4798. ./myread
4799case "$ans" in
4800none) ccflags='';;
4801*) ccflags="$ans";;
4802esac
8e07c86e 4803
bd9b35c9 4804: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4805case "$cppflags" in
4806'') cppflags="$ccflags" ;;
4807*) cppflags="$cppflags $ccflags" ;;
4808esac
bd9b35c9
JH
4809case "$gccversion" in
48101*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4811esac
bd9b35c9
JH
4812case "$mips_type" in
4813'');;
4814*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4815esac
4816case "$cppflags" in
4817'');;
4818*)
4819 echo " "
4820 echo "Let me guess what the preprocessor flags are..." >&4
4821 set X $cppflags
4822 shift
4823 cppflags=''
4824 $cat >cpp.c <<'EOM'
4825#define BLURFL foo
8e07c86e 4826
bd9b35c9
JH
4827BLURFL xx LFRULB
4828EOM
4829 previous=''
4830 for flag in $*
4831 do
4832 case "$flag" in
4833 -*) ftry="$flag";;
4834 *) ftry="$previous $flag";;
4835 esac
4836 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4837 >cpp1.out 2>/dev/null && \
4838 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4839 >cpp2.out 2>/dev/null && \
4840 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4841 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4842 then
4843 cppflags="$cppflags $ftry"
4844 previous=''
4845 else
4846 previous="$flag"
4847 fi
4848 done
4849 set X $cppflags
4850 shift
4851 cppflags=${1+"$@"}
4852 case "$cppflags" in
4853 *-*) echo "They appear to be: $cppflags";;
4854 esac
4855 $rm -f cpp.c cpp?.out
2afac517 4856 ;;
4857esac
8e07c86e 4858
bd9b35c9
JH
4859: flags used in final linking phase
4860case "$ldflags" in
4861'') if ./venix; then
4862 dflt='-i -z'
10a23457 4863 else
bd9b35c9 4864 dflt=''
10a23457 4865 fi
bd9b35c9
JH
4866 case "$ccflags" in
4867 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4868 esac
bd9b35c9
JH
4869 ;;
4870*) dflt="$ldflags";;
4871esac
4872
4873: Try to guess additional flags to pick up local libraries.
4874for thislibdir in $libpth; do
4875 case " $loclibpth " in
4876 *" $thislibdir "*)
4877 case "$dflt " in
4878 *"-L$thislibdir "*) ;;
4879 *) dflt="$dflt -L$thislibdir" ;;
4880 esac
c4f23d77
AD
4881 ;;
4882 esac
bd9b35c9 4883done
c4f23d77 4884
bd9b35c9
JH
4885case "$dflt" in
4886'') dflt='none' ;;
4887esac
c4f23d77 4888
bd9b35c9
JH
4889$cat <<EOH
4890
4891Your C linker may need flags. For this question you should
4892include -L/whatever and any other flags used by the C linker, but you
4893should NOT include libraries like -lwhatever.
4894
4895Make sure you include the appropriate -L/path flags if your C linker
4896does not normally search all of the directories you specified above,
4897namely
4898 $libpth
4899To use no flags, specify the word "none".
4900
4901EOH
4902
4903rp="Any additional ld flags (NOT including libraries)?"
4904. ./myread
4905case "$ans" in
4906none) ldflags='';;
4907*) ldflags="$ans";;
4908esac
4909rmlist="$rmlist pdp11"
4910
4911: coherency check
4912echo " "
4913echo "Checking your choice of C compiler and flags for coherency..." >&4
4914$cat > try.c <<'EOF'
4915#include <stdio.h>
55954f19 4916int main() { printf("Ok\n"); return(0); }
bd9b35c9 4917EOF
7a282f6d 4918set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4919shift
4920$cat >try.msg <<'EOM'
4921I've tried to compile and run the following simple program:
4922
4923EOM
4924$cat try.c >> try.msg
4925
4926$cat >> try.msg <<EOM
4927
4928I used the command:
4929
4930 $*
5440bc8e 4931 $run ./try
bd9b35c9
JH
4932
4933and I got the following output:
4934
4935EOM
4936dflt=y
73614538 4937if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4938 if $sh -c "$run ./try" >>try.msg 2>&1; then
4939 xxx=`$run ./try`
bd9b35c9
JH
4940 case "$xxx" in
4941 "Ok") dflt=n ;;
4942 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4943 case " $libs " in
4944 *" -lsfio "*)
4945 cat >> try.msg <<'EOQS'
4946If $libs contains -lsfio, and sfio is mis-configured, then it
4947sometimes (apparently) runs and exits with a 0 status, but with no
4948output! It may have to do with sfio's use of _exit vs. exit.
4949
4950EOQS
4951 rp="You have a big problem. Shall I abort Configure"
4952 dflt=y
4953 ;;
4954 esac
4955 ;;
4956 esac
4957 else
4958 echo "The program compiled OK, but exited with status $?." >>try.msg
4959 rp="You have a problem. Shall I abort Configure"
4960 dflt=y
4961 fi
4962else
4963 echo "I can't compile the test program." >>try.msg
4964 rp="You have a BIG problem. Shall I abort Configure"
4965 dflt=y
4966fi
4967case "$dflt" in
4968y)
4969 $cat try.msg >&4
4970 case "$knowitall" in
4971 '')
4972 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4973 ;;
bd9b35c9 4974 *) dflt=n;;
c4f23d77 4975 esac
bd9b35c9
JH
4976 echo " "
4977 . ./myread
4978 case "$ans" in
4979 n*|N*) ;;
4980 *) echo "Ok. Stopping Configure." >&4
4981 exit 1
c4f23d77
AD
4982 ;;
4983 esac
4984 ;;
bd9b35c9 4985n) echo "OK, that should do.";;
c4f23d77 4986esac
bd9b35c9 4987$rm -f try try.* core
c4f23d77 4988
bd9b35c9
JH
4989: define a shorthand compile call
4990compile='
4991mc_file=$1;
4992shift;
08413ebc 4993$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4994: define a shorthand compile call for compilations that should be ok.
4995compile_ok='
4996mc_file=$1;
4997shift;
7a282f6d 4998$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4999
8dfa8df9
JH
5000: determine filename position in cpp output
5001echo " "
5002echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
5003case "$osname" in
5004vos) testaccess=-e ;;
5005*) testaccess=-r ;;
5006esac
8dfa8df9
JH
5007echo '#include <stdio.h>' > foo.c
5008$cat >fieldn <<EOF
5009$startsh
5010$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5011$grep '^[ ]*#.*stdio\.h' | \
5012while read cline; do
5013 pos=1
5014 set \$cline
5015 while $test \$# -gt 0; do
a5a94ea5 5016 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
5017 echo "\$pos"
5018 exit 0
5019 fi
5020 shift
5021 pos=\`expr \$pos + 1\`
5022 done
5023done
5024EOF
5025chmod +x fieldn
5026fieldn=`./fieldn`
5027$rm -f foo.c fieldn
5028case $fieldn in
5029'') pos='???';;
50301) pos=first;;
50312) pos=second;;
50323) pos=third;;
5033*) pos="${fieldn}th";;
5034esac
5035echo "Your cpp writes the filename in the $pos field of the line."
5036
3c728e00
JH
5037case "$osname" in
5038vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5c728af0 5039os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
3c728e00
JH
5040*) cppfilter='' ;;
5041esac
8dfa8df9
JH
5042: locate header file
5043$cat >findhdr <<EOF
5044$startsh
5045wanted=\$1
5046name=''
5047for usrincdir in $usrinc
5048do
5049 if test -f \$usrincdir/\$wanted; then
5050 echo "\$usrincdir/\$wanted"
5051 exit 0
5052 fi
5053done
5054awkprg='{ print \$$fieldn }'
5055echo "#include <\$wanted>" > foo\$\$.c
5056$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 5057$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
5058while read cline; do
5059 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5060 case "\$name" in
5061 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5062 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5063 *) exit 2;;
5064 esac;
5065done;
5066#
5067# status = 0: grep returned 0 lines, case statement not executed
5068# status = 1: headerfile found
5069# status = 2: while loop executed, no headerfile found
5070#
5071status=\$?
5072$rm -f foo\$\$.c;
5073if test \$status -eq 1; then
5074 exit 0;
5075fi
5076exit 1
5077EOF
5078chmod +x findhdr
5079
5080: define an alternate in-header-list? function
5081inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5082cont=true; xxf="echo \"<\$1> found.\" >&4";
5083case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5084*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5085esac;
5086case $# in 4) instead=instead;; *) instead="at last";; esac;
5087while $test "$cont"; do
5088 xxx=`./findhdr $1`
5089 var=$2; eval "was=\$$2";
5090 if $test "$xxx" && $test -r "$xxx";
5091 then eval $xxf;
5092 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5093 cont="";
5094 else eval $xxnf;
5095 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5096 set $yyy; shift; shift; yyy=$@;
5097 case $# in 0) cont="";;
5098 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5099 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5100 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5101 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5102 esac;
5103done;
5104while $test "$yyy";
5105do set $yyy; var=$2; eval "was=\$$2";
5106 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5107 set $yyy; shift; shift; yyy=$@;
5108done'
5109
d1daaddf
JH
5110: see if stdlib is available
5111set stdlib.h i_stdlib
5112eval $inhdr
5113
5114: check for lengths of integral types
5115echo " "
5116case "$intsize" in
5117'')
5118 echo "Checking to see how big your integers are..." >&4
c63dfae1 5119 $cat >try.c <<EOCP
d1daaddf
JH
5120#include <stdio.h>
5121#$i_stdlib I_STDLIB
5122#ifdef I_STDLIB
5123#include <stdlib.h>
5124#endif
5125int main()
5126{
5127 printf("intsize=%d;\n", (int)sizeof(int));
5128 printf("longsize=%d;\n", (int)sizeof(long));
5129 printf("shortsize=%d;\n", (int)sizeof(short));
5130 exit(0);
5131}
5132EOCP
5133 set try
5134 if eval $compile_ok && $run ./try > /dev/null; then
5135 eval `$run ./try`
5136 echo "Your integers are $intsize bytes long."
5137 echo "Your long integers are $longsize bytes long."
5138 echo "Your short integers are $shortsize bytes long."
5139 else
5140 $cat >&4 <<EOM
5141!
5142Help! I can't compile and run the intsize test program: please enlighten me!
5143(This is probably a misconfiguration in your system or libraries, and
5144you really ought to fix it. Still, I'll try anyway.)
5145!
5146EOM
5147 dflt=4
5148 rp="What is the size of an integer (in bytes)?"
5149 . ./myread
5150 intsize="$ans"
5151 dflt=$intsize
5152 rp="What is the size of a long integer (in bytes)?"
5153 . ./myread
5154 longsize="$ans"
5155 dflt=2
5156 rp="What is the size of a short integer (in bytes)?"
5157 . ./myread
5158 shortsize="$ans"
5159 fi
5160 ;;
5161esac
5162$rm -f try try.*
5163
5164: check for long long
5165echo " "
5166echo "Checking to see if you have long long..." >&4
5167echo 'int main() { long long x = 7; return 0; }' > try.c
5168set try
5169if eval $compile; then
5170 val="$define"
5171 echo "You have long long."
5172else
5173 val="$undef"
5174 echo "You do not have long long."
5175fi
5176$rm try.*
5177set d_longlong
5178eval $setvar
5179
5180: check for length of long long
5181case "${d_longlong}${longlongsize}" in
5182$define)
5183 echo " "
5184 echo "Checking to see how big your long longs are..." >&4
5185 $cat >try.c <<'EOCP'
5186#include <stdio.h>
5187int main()
5188{
5189 printf("%d\n", (int)sizeof(long long));
5190 return(0);
5191}
5192EOCP
5193 set try
5194 if eval $compile_ok; then
5195 longlongsize=`$run ./try`
5196 echo "Your long longs are $longlongsize bytes long."
5197 else
5198 dflt='8'
5199 echo " "
5200 echo "(I can't seem to compile the test program. Guessing...)"
5201 rp="What is the size of a long long (in bytes)?"
5202 . ./myread
5203 longlongsize="$ans"
5204 fi
5205 if $test "X$longsize" = "X$longlongsize"; then
5206 echo "(That isn't any different from an ordinary long.)"
5207 fi
5208 ;;
5209esac
5210$rm -f try.* try
5211
8dfa8df9
JH
5212: see if inttypes.h is available
5213: we want a real compile instead of Inhdr because some systems
5214: have an inttypes.h which includes non-existent headers
5215echo " "
5216$cat >try.c <<EOCP
5217#include <inttypes.h>
5218int main() {
5219 static int32_t foo32 = 0x12345678;
5220}
5221EOCP
5222set try
5223if eval $compile; then
5224 echo "<inttypes.h> found." >&4
5225 val="$define"
5226else
5227 echo "<inttypes.h> NOT found." >&4
5228 val="$undef"
5229fi
5230$rm -f try.c try
5231set i_inttypes
5232eval $setvar
5233
5234: check for int64_t
5235echo " "
5236echo "Checking to see if you have int64_t..." >&4
5237$cat >try.c <<EOCP
5238#include <sys/types.h>
5239#$i_inttypes I_INTTYPES
5240#ifdef I_INTTYPES
5241#include <inttypes.h>
5242#endif
5243int main() { int64_t x = 7; }
5244EOCP
5245set try
5246if eval $compile; then
5247 val="$define"
5248 echo "You have int64_t."
5249else
5250 val="$undef"
5251 echo "You do not have int64_t."
5252fi
5253$rm -f try try.*
5254set d_int64_t
5255eval $setvar
5256
5257
5258echo " "
5259echo "Checking which 64-bit integer type we could use..." >&4
5260
5261case "$intsize" in
52628) val=int
5263 set quadtype
5264 eval $setvar
5265 val='"unsigned int"'
5266 set uquadtype
5267 eval $setvar
5268 quadkind=1
5269 ;;
5270*) case "$longsize" in
5271 8) val=long
5272 set quadtype
5273 eval $setvar
5274 val='"unsigned long"'
5275 set uquadtype
5276 eval $setvar
5277 quadkind=2
5278 ;;
5279 *) case "$d_longlong:$longlongsize" in
5280 define:8)
5281 val='"long long"'
5282 set quadtype
5283 eval $setvar
5284 val='"unsigned long long"'
5285 set uquadtype
5286 eval $setvar
5287 quadkind=3
5288 ;;
5289 *) case "$d_int64_t" in
5290 define)
5291 val=int64_t
5292 set quadtype
5293 eval $setvar
5294 val=uint64_t
5295 set uquadtype
5296 eval $setvar
5297 quadkind=4
5298 ;;
5299 esac
5300 ;;
5301 esac
5302 ;;
5303 esac
5304 ;;
5305esac
5306
5307case "$quadtype" in
5308'') echo "Alas, no 64-bit integer types in sight." >&4
5309 d_quad="$undef"
5310 ;;
5311*) echo "We could use '$quadtype' for 64-bit integers." >&4
5312 d_quad="$define"
5313 ;;
5314esac
5315
b4eb6b3d
JH
5316
5317case "$uselonglong" in
5318"$define"|true|[yY]*)
5319 cat <<EOM >&4
5320
5321*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5322EOM
5323 use64bitint="$define"
5324 ;;
5325esac
5326case "$use64bits" in
5327"$define"|true|[yY]*)
5328 cat <<EOM >&4
5329
5330*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5331EOM
5332 use64bitint="$define"
5333 ;;
5334esac
5335case "$use64bitints" in
5336"$define"|true|[yY]*)
5337 cat <<EOM >&4
5338
5339*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5340EOM
5341 use64bitint="$define"
5342 ;;
5343esac
5344case "$use64bitsint" in
5345"$define"|true|[yY]*)
5346 cat <<EOM >&4
5347
5348*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5349EOM
5350 use64bitint="$define"
5351 ;;
5352esac
5353case "$uselonglongs" in
5354"$define"|true|[yY]*)
5355 cat <<EOM >&4
5356
5357*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5358EOM
5359 use64bitint="$define"
5360 ;;
5361esac
5362case "$use64bitsall" in
5363"$define"|true|[yY]*)
5364 cat <<EOM >&4
5365
5366*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5367EOM
5368 use64bitall="$define"
5369 ;;
5370esac
5371
5372case "$ccflags" in
5373*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5374esac
5375case "$use64bitall" in
5376"$define"|true|[yY]*) use64bitint="$define" ;;
5377esac
5378
5379case "$longsize" in
53808) cat <<EOM
5381
5382You have natively 64-bit long integers.
5383EOM
5384 val="$define"
5385 ;;
5386*) case "$use64bitint" in
5387 "$define"|true|[yY]*) dflt='y';;
5388 *) dflt='n';;
5389 esac
8dfa8df9
JH
5390 case "$d_quad" in
5391 "$define") ;;
5392 *) dflt='n' ;;
5393 esac
b4eb6b3d
JH
5394 cat <<EOM
5395
5396Perl can be built to take advantage of 64-bit integer types
5397on some systems. To do so, Configure can be run with -Duse64bitint.
5398Choosing this option will most probably introduce binary incompatibilities.
5399
5400If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5401(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5402EOM
5403 rp='Try to use 64-bit integers, if available?'
5404 . ./myread
5405 case "$ans" in
5406 [yY]*) val="$define" ;;
5407 *) val="$undef" ;;
5408 esac
5409 ;;
5410esac
5411set use64bitint
5412eval $setvar
5413
5414case "$use64bitall" in
5415"$define"|true|[yY]*) dflt='y' ;;
5416*) case "$longsize" in
5417 8) dflt='y' ;;
5418 *) dflt='n' ;;
5419 esac
5420 ;;
5421esac
5422cat <<EOM
5423
5424You may also choose to try maximal 64-bitness. It means using as much
542564-bitness as possible on the platform. This in turn means even more
5426binary incompatibilities. On the other hand, your platform may not
5427have any more 64-bitness available than what you already have chosen.
5428
5429If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5430(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5431EOM
5432rp='Try to use maximal 64-bit support, if available?'
5433. ./myread
5434case "$ans" in
5435[yY]*) val="$define" ;;
5436*) val="$undef" ;;
5437esac
5438set use64bitall
5439eval $setvar
5440case "$use64bitall" in
5441"$define")
5442 case "$use64bitint" in
5443 "$undef")
5444 cat <<EOM
5445
5446Since you have chosen a maximally 64-bit build, I'm also turning on
5447the use of 64-bit integers.
5448EOM
5449 use64bitint="$define" ;;
5450 esac
5451 ;;
5452esac
5453
b4eb6b3d
JH
5454: Look for a hint-file generated 'call-back-unit'. If the
5455: user has specified that a 64-bit perl is to be built,
5456: we may need to set or change some other defaults.
19a100ff 5457if $test -f use64bitint.cbu; then
9da7673b 5458 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
19a100ff
MB
5459 . ./use64bitint.cbu
5460fi
9da7673b
MB
5461case "$use64bitint" in
5462"$define"|true|[yY]*)
b4eb6b3d
JH
5463 case "$longsize" in
5464 4) case "$archname64" in
5465 '') archname64=64int ;;
5466 esac
5467 ;;
5468 esac
5469 ;;
5470esac
5471
b4eb6b3d
JH
5472: Look for a hint-file generated 'call-back-unit'. If the
5473: user has specified that a maximally 64-bit perl is to be built,
5474: we may need to set or change some other defaults.
19a100ff 5475if $test -f use64bitall.cbu; then
9da7673b 5476 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
19a100ff
MB
5477 . ./use64bitall.cbu
5478fi
9da7673b
MB
5479case "$use64bitall" in
5480"$define"|true|[yY]*)
b4eb6b3d
JH
5481 case "$longsize" in
5482 4) case "$archname64" in
5483 ''|64int) archname64=64all ;;
5484 esac
5485 ;;
5486 esac
5487 ;;
5488esac
5489
1911a026
JH
5490case "$d_quad:$use64bitint" in
5491$undef:$define)
5492 cat >&4 <<EOF
5493
5494*** You have chosen to use 64-bit integers,
19a100ff 5495*** but none can be found.
09b58c7b 5496*** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
1911a026
JH
5497*** Cannot continue, aborting.
5498
5499EOF
5500 exit 1
5501 ;;
5502esac
5503
36adc09b
JH
5504: check for length of double
5505echo " "
5506case "$doublesize" in
5507'')
5508 echo "Checking to see how big your double precision numbers are..." >&4
5509 $cat >try.c <<EOCP
5510#include <stdio.h>
1911a026
JH
5511#$i_stdlib I_STDLIB
5512#ifdef I_STDLIB
5513#include <stdlib.h>
5514#endif
36adc09b
JH
5515int main()
5516{
5517 printf("%d\n", (int)sizeof(double));
1911a026 5518 exit(0);
36adc09b
JH
5519}
5520EOCP
5521 set try
5522 if eval $compile_ok; then
5523 doublesize=`$run ./try`
5524 echo "Your double is $doublesize bytes long."
5525 else
5526 dflt='8'
5527 echo "(I can't seem to compile the test program. Guessing...)"
5528 rp="What is the size of a double precision number (in bytes)?"
5529 . ./myread
5530 doublesize="$ans"
5531 fi
5532 ;;
5533esac
5534$rm -f try.c try
5535
5536: check for long doubles
5537echo " "
5538echo "Checking to see if you have long double..." >&4
5539echo 'int main() { long double x = 7.0; }' > try.c
5540set try
5541if eval $compile; then
5542 val="$define"
5543 echo "You have long double."
5544else
5545 val="$undef"
5546 echo "You do not have long double."
5547fi
5548$rm try.*
5549set d_longdbl
5550eval $setvar
5551
5552: check for length of long double
5553case "${d_longdbl}${longdblsize}" in
5554$define)
5555 echo " "
5556 echo "Checking to see how big your long doubles are..." >&4
5557 $cat >try.c <<'EOCP'
5558#include <stdio.h>
5559int main()
5560{
5561 printf("%d\n", sizeof(long double));
5562}
5563EOCP
5564 set try
5565 set try
5566 if eval $compile; then
5567 longdblsize=`$run ./try`
5568 echo "Your long doubles are $longdblsize bytes long."
5569 else
5570 dflt='8'
5571 echo " "
5572 echo "(I can't seem to compile the test program. Guessing...)" >&4
5573 rp="What is the size of a long double (in bytes)?"
5574 . ./myread
5575 longdblsize="$ans"
5576 fi
5577 if $test "X$doublesize" = "X$longdblsize"; then
7ad90562
AD
5578 echo "That isn't any different from an ordinary double."
5579 echo "I'll keep your setting anyway, but you may see some"
5580 echo "harmless compilation warnings."
36adc09b
JH
5581 fi
5582 ;;
5583esac
5584$rm -f try.* try
5585
89ce900e 5586: determine the architecture name
b4eb6b3d 5587echo " "
89ce900e
JH
5588if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5589 tarch=`arch`"-$osname"
5590elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5591 if uname -m > tmparch 2>&1 ; then
5592 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5593 -e 's/$/'"-$osname/" tmparch`
5594 else
5595 tarch="$osname"
5596 fi
5597 $rm -f tmparch
b4eb6b3d 5598else
89ce900e 5599 tarch="$osname"
b4eb6b3d 5600fi
89ce900e
JH
5601case "$myarchname" in
5602''|"$tarch") ;;
5603*)
5604 echo "(Your architecture name used to be $myarchname.)"
5605 archname=''
5606 ;;
5607esac
5608case "$targetarch" in
5609'') ;;
5610*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5611esac
5612myarchname="$tarch"
5613case "$archname" in
5614'') dflt="$tarch";;
5615*) dflt="$archname";;
5616esac
5617rp='What is your architecture name'
5618. ./myread
5619archname="$ans"
5620case "$usethreads" in
5621$define)
5622 echo "Threads selected." >&4
5623 case "$archname" in
5624 *-thread*) echo "...and architecture name already has -thread." >&4
5625 ;;
5626 *) archname="$archname-thread"
5627 echo "...setting architecture name to $archname." >&4
5628 ;;
5629 esac
5630 ;;
5631esac
5632case "$usemultiplicity" in
5633$define)
5634 echo "Multiplicity selected." >&4
5635 case "$archname" in
5636 *-multi*) echo "...and architecture name already has -multi." >&4
5637 ;;
5638 *) archname="$archname-multi"
5639 echo "...setting architecture name to $archname." >&4
5640 ;;
5641 esac
5642 ;;
5643esac
5644case "$use64bitint$use64bitall" in
5645*"$define"*)
5646 case "$archname64" in
5647 '')
5648 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
bd9b35c9 5649 ;;
89ce900e
JH
5650 *)
5651 case "$use64bitint" in
5652 "$define") echo "64 bit integers selected." >&4 ;;
5653 esac
5654 case "$use64bitall" in
5655 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5656 esac
5657 case "$archname" in
5658 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5659 ;;
5660 *) archname="$archname-$archname64"
5661 echo "...setting architecture name to $archname." >&4
5662 ;;
5663 esac
c1a7f87b
JH
5664 ;;
5665 esac
89ce900e
JH
5666esac
5667case "$uselongdouble" in
5668$define)
5669 echo "Long doubles selected." >&4
5670 case "$longdblsize" in
5671 $doublesize)
5672 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5673 ;;
5674 *)
5675 case "$archname" in
5676 *-ld*) echo "...and architecture name already has -ld." >&4
5677 ;;
5678 *) archname="$archname-ld"
5679 echo "...setting architecture name to $archname." >&4
5680 ;;
5681 esac
bd9b35c9
JH
5682 ;;
5683 esac
bd9b35c9 5684 ;;
89ce900e
JH
5685esac
5686case "$useperlio" in
5687$define)
5688 echo "Perlio selected." >&4
5689 ;;
bd9b35c9 5690*)
89ce900e
JH
5691 echo "Perlio not selected, using stdio." >&4
5692 case "$archname" in
5693 *-stdio*) echo "...and architecture name already has -stdio." >&4
5694 ;;
5695 *) archname="$archname-stdio"
5696 echo "...setting architecture name to $archname." >&4
5697 ;;
5698 esac
bd9b35c9
JH
5699 ;;
5700esac
d2e0c6f7
JH
5701if $test -f archname.cbu; then
5702 echo "Your platform has some specific hints for architecture name, using them..."
5703 . ./archname.cbu
5704fi
bd9b35c9 5705
89ce900e
JH
5706: determine root of directory hierarchy where package will be installed.
5707case "$prefix" in
5708'')
5709 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5710 ;;
5711*?/)
5712 dflt=`echo "$prefix" | sed 's/.$//'`
5713 ;;
5714*)
5715 dflt="$prefix"
5716 ;;
5717esac
5718$cat <<EOM
c1a7f87b 5719
89ce900e
JH
5720By default, $package will be installed in $dflt/bin, manual pages
5721under $dflt/man, etc..., i.e. with $dflt as prefix for all
5722installation directories. Typically this is something like /usr/local.
5723If you wish to have binaries under /usr/bin but other parts of the
5724installation under /usr/local, that's ok: you will be prompted
5725separately for each of the installation directories, the prefix being
5726only used to set the defaults.
bd9b35c9
JH
5727
5728EOM
89ce900e
JH
5729fn=d~
5730rp='Installation prefix to use?'
5731. ./getfile
5732oldprefix=''
5733case "$prefix" in
5734'') ;;
5735*)
5736 case "$ans" in
5737 "$prefix") ;;
5738 *) oldprefix="$prefix";;
5739 esac
5740 ;;
bd9b35c9 5741esac
89ce900e
JH
5742prefix="$ans"
5743prefixexp="$ansexp"
bd9b35c9 5744
89ce900e
JH
5745case "$afsroot" in
5746'') afsroot=/afs ;;
5747*) afsroot=$afsroot ;;
8e07c86e 5748esac
29209bc5 5749
89ce900e
JH
5750: is AFS running?
5751echo " "
5752case "$afs" in
5753$define|true) afs=true ;;
5754$undef|false) afs=false ;;
5755*) if test -d $afsroot; then
5756 afs=true
c1a7f87b 5757 else
89ce900e
JH
5758 afs=false
5759 fi
5760 ;;
c1a7f87b 5761esac
89ce900e
JH
5762if $afs; then
5763 echo "AFS may be running... I'll be extra cautious then..." >&4
5764else
5765 echo "AFS does not seem to be running..." >&4
5766fi
b4eb6b3d
JH
5767
5768: determine installation prefix for where package is to be installed.
5769if $afs; then
5770$cat <<EOM
5771
5772Since you are running AFS, I need to distinguish the directory in which
5773files will reside from the directory in which they are installed (and from
5774which they are presumably copied to the former directory by occult means).
5775
5776EOM
5777 case "$installprefix" in
5778 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5779 *) dflt="$installprefix";;
5780 esac
5781else
5782$cat <<EOM
5783
5784In some special cases, particularly when building $package for distribution,
c2bfb7b1
MB
5785it is convenient to distinguish the directory in which files should be
5786installed from the directory ($prefix) in which they will
5787eventually reside. For most users, these two directories are the same.
b4eb6b3d
JH
5788
5789EOM
5790 case "$installprefix" in
5791 '') dflt=$prefix ;;
5792 *) dflt=$installprefix;;
5793 esac
5794fi
5795fn=d~
5796rp='What installation prefix should I use for installing files?'
5797. ./getfile
5798installprefix="$ans"
5799installprefixexp="$ansexp"
5800
5801: set the prefixit variable, to compute a suitable default value
5802prefixit='case "$3" in
5803""|none)
5804 case "$oldprefix" in
5805 "") eval "$1=\"\$$2\"";;
5806 *)
5807 case "$3" in
5808 "") eval "$1=";;
5809 none)
5810 eval "tp=\"\$$2\"";
5811 case "$tp" in
5812 ""|" ") eval "$1=\"\$$2\"";;
5813 *) eval "$1=";;
5814 esac;;
5815 esac;;
5816 esac;;
5817*)
5818 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5819 case "$tp" in
5820 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5821 /*-$oldprefix/*|\~*-$oldprefix/*)
5822 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5823 *) eval "$1=\"\$$2\"";;
5824 esac;;
5825esac'
5826
b4eb6b3d
JH
5827: get the patchlevel
5828echo " "
5829echo "Getting the current patchlevel..." >&4
5830if $test -r $rsrc/patchlevel.h;then
5831 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5832 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5833 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5834 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5835 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5836 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 5837 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
5838else
5839 revision=0
5840 patchlevel=0
5841 subversion=0
5842 api_revision=0
5843 api_version=0
5844 api_subversion=0
151e6568
MB
5845 perl_patchlevel=0
5846 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 5847fi
151e6568
MB
5848if $test -r $rsrc/.patch ; then
5849 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5850 perl_patchlevel=`cat $rsrc/.patch`
5851 fi
5852fi
861eb78d
AD
5853: Define a handy string here to avoid duplication in myconfig.SH and configpm.
5854version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 5855case "$perl_patchlevel" in
861eb78d
AD
58560|'') ;;
5857*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 5858esac
861eb78d
AD
5859
5860$echo "(You have $package $version_patchlevel_string.)"
5861
b4eb6b3d
JH
5862case "$osname" in
5863dos|vms)
5864 : XXX Should be a Configure test for double-dots in filenames.
5865 version=`echo $revision $patchlevel $subversion | \
5866 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5867 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5868 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5869 ;;
5870*)
5871 version=`echo $revision $patchlevel $subversion | \
5872 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5873 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5874 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5875 ;;
5876esac
5877: Special case the 5.005_xx maintenance series, which used 5.005
5878: without any subversion label as a subdirectory in $sitelib
5879if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5880 api_versionstring='5.005'
5881fi
5882
5883: determine installation style
5884: For now, try to deduce it from prefix unless it is already set.
5885: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5886case "$installstyle" in
5887'') case "$prefix" in
5888 *perl*) dflt='lib';;
5889 *) dflt='lib/perl5' ;;
5890 esac
5891 ;;
5892*) dflt="$installstyle" ;;
5893esac
5894: Probably not worth prompting for this since we prompt for all
5895: the directories individually, and the prompt would be too long and
5896: confusing anyway.
5897installstyle=$dflt
5898
5899: determine where private library files go
5900: Usual default is /usr/local/lib/perl5/$version.
5901: Also allow things like /opt/perl/lib/$version, since
5902: /opt/perl/lib/perl5... would be redundant.
5903: The default "style" setting is made in installstyle.U
5904case "$installstyle" in
5905*lib/perl5*) set dflt privlib lib/$package/$version ;;
5906*) set dflt privlib lib/$version ;;
5907esac
5908eval $prefixit
5909$cat <<EOM
5910
5911There are some auxiliary files for $package that need to be put into a
5912private library directory that is accessible by everyone.
5913
5914EOM
5915fn=d~+
5916rp='Pathname where the private library files will reside?'
5917. ./getfile
5918privlib="$ans"
5919privlibexp="$ansexp"
5920: Change installation prefix, if necessary.
5921if $test X"$prefix" != X"$installprefix"; then
5922 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5923else
5924 installprivlib="$privlibexp"
5925fi
5926
5927: set the prefixup variable, to restore leading tilda escape
5928prefixup='case "$prefixexp" in
5929"$prefix") ;;
5930*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5931esac'
5932
5933: determine where public architecture dependent libraries go
5934set archlib archlib
5935eval $prefixit
5936: privlib default is /usr/local/lib/$package/$version
5937: archlib default is /usr/local/lib/$package/$version/$archname
5938: privlib may have an optional trailing /share.
5939tdflt=`echo $privlib | $sed 's,/share$,,'`
5940tdflt=$tdflt/$archname
5941case "$archlib" in
5942'') dflt=$tdflt
5943 ;;
5944*) dflt="$archlib"
5945 ;;
5946esac
5947$cat <<EOM
5948
5949$spackage contains architecture-dependent library files. If you are
5950sharing libraries in a heterogeneous environment, you might store
5951these files in a separate location. Otherwise, you can just include
5952them with the rest of the public library files.
5953
5954EOM
5955fn=d+~
5956rp='Where do you want to put the public architecture-dependent libraries?'
5957. ./getfile
5958archlib="$ans"
5959archlibexp="$ansexp"
5960if $test X"$archlib" = X"$privlib"; then
5961 d_archlib="$undef"
5962else
5963 d_archlib="$define"
5964fi
5965: Change installation prefix, if necessary.
5966if $test X"$prefix" != X"$installprefix"; then
5967 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5968else
5969 installarchlib="$archlibexp"
5970fi
5971
b4eb6b3d
JH
5972: see if setuid scripts can be secure
5973$cat <<EOM
5974
5975Some kernels have a bug that prevents setuid #! scripts from being
5976secure. Some sites have disabled setuid #! scripts because of this.
5977
5978First let's decide if your kernel supports secure setuid #! scripts.
5979(If setuid #! scripts would be secure but have been disabled anyway,
5980don't say that they are secure if asked.)
5981
5982EOM
5983
5984val="$undef"
5985if $test -d /dev/fd; then
5986 echo "#!$ls" >reflect
5987 chmod +x,u+s reflect
5988 ./reflect >flect 2>&1
5989 if $contains "/dev/fd" flect >/dev/null; then
5990 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5991 val="$define"
5992 else
5993 $cat <<EOM
5994If you are not sure if they are secure, I can check but I'll need a
5995username and password different from the one you are using right now.
5996If you don't have such a username or don't want me to test, simply
5997enter 'none'.
5998
5999EOM
6000 rp='Other username to test security of setuid scripts with?'
6001 dflt='none'
6002 . ./myread
6003 case "$ans" in
6004 n|none)
6005 case "$d_suidsafe" in
6006 '') echo "I'll assume setuid scripts are *not* secure." >&4
6007 dflt=n;;
6008 "$undef")
6009 echo "Well, the $hint value is *not* secure." >&4
6010 dflt=n;;
6011 *) echo "Well, the $hint value *is* secure." >&4
6012 dflt=y;;
6013 esac
c1a7f87b 6014 ;;
b4eb6b3d
JH
6015 *)
6016 $rm -f reflect flect
6017 echo "#!$ls" >reflect
6018 chmod +x,u+s reflect
6019 echo >flect
6020 chmod a+w flect
6021 echo '"su" will (probably) prompt you for '"$ans's password."
6022 su $ans -c './reflect >flect'
6023 if $contains "/dev/fd" flect >/dev/null; then
6024 echo "Okay, it looks like setuid scripts are secure." >&4
6025 dflt=y
6026 else
6027 echo "I don't think setuid scripts are secure." >&4
6028 dflt=n
6029 fi
6030 ;;
6031 esac
6032 rp='Does your kernel have *secure* setuid scripts?'
6033 . ./myread
6034 case "$ans" in
6035 [yY]*) val="$define";;
6036 *) val="$undef";;
6037 esac
6038 fi
6039else
6040 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6041 echo "(That's for file descriptors, not floppy disks.)"
6042 val="$undef"
6043fi
6044set d_suidsafe
6045eval $setvar
6046
6047$rm -f reflect flect
6048
6049: now see if they want to do setuid emulation
6050echo " "
6051val="$undef"
6052case "$d_suidsafe" in
6053"$define")
6054 val="$undef"
3c728e00 6055 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6056 ;;
6057*)
6058 $cat <<EOM
6059Some systems have disabled setuid scripts, especially systems where
6060setuid scripts cannot be secure. On systems where setuid scripts have
6061been disabled, the setuid/setgid bits on scripts are currently
6062useless. It is possible for $package to detect those bits and emulate
6063setuid/setgid in a secure fashion. This emulation will only work if
6064setuid scripts have been disabled in your kernel.
6065
6066EOM
6067 case "$d_dosuid" in
6068 "$define") dflt=y ;;
6069 *) dflt=n ;;
6070 esac
6071 rp="Do you want to do setuid/setgid emulation?"
6072 . ./myread
6073 case "$ans" in
6074 [yY]*) val="$define";;
6075 *) val="$undef";;
6076 esac
6077 ;;
6078esac
6079set d_dosuid
6080eval $setvar
6081
b4eb6b3d 6082: see if this is a malloc.h system
01d07975
YST
6083: we want a real compile instead of Inhdr because some systems have a
6084: malloc.h that just gives a compile error saying to use stdlib.h instead
6085echo " "
6086$cat >try.c <<EOCP
6087#include <stdlib.h>
6088#include <malloc.h>
6089int main () { return 0; }
6090EOCP
6091set try
6092if eval $compile; then
6093 echo "<malloc.h> found." >&4
6094 val="$define"
6095else
6096 echo "<malloc.h> NOT found." >&4
6097 val="$undef"
6098fi
6099$rm -f try.c try
6100set i_malloc
6101eval $setvar
b4eb6b3d 6102
c8b93cf9
JH
6103: check for void type
6104echo " "
6105echo "Checking to see how well your C compiler groks the void type..." >&4
6106case "$voidflags" in
6107'')
c727eafa 6108 $cat >try.c <<EOCP
d1daaddf
JH
6109#$i_stdlib I_STDLIB
6110#ifdef I_STDLIB
6111#include <stdlib.h>
6112#endif
c8b93cf9
JH
6113#if TRY & 1
6114void sub() {
6115#else
6116sub() {
6117#endif
6118 extern void moo(); /* function returning void */
6119 void (*goo)(); /* ptr to func returning void */
6120#if TRY & 8
6121 void *hue; /* generic ptr */
6122#endif
6123#if TRY & 2
6124 void (*foo[10])();
6125#endif
6126
6127#if TRY & 4
6128 if(goo == moo) {
6129 exit(0);
6130 }
6131#endif
6132 exit(0);
6133}
6134int main() { sub(); }
6135EOCP
6136 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6137 voidflags=$defvoidused
6138 echo "Good. It appears to support void to the level $package wants.">&4
6139 if $contains warning .out >/dev/null 2>&1; then
6140 echo "However, you might get some warnings that look like this:"
6141 $cat .out
6142 fi
6143 else
6144echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6145 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6146 echo "It supports 1..."
6147 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6148 echo "It also supports 2..."
6149 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6150 voidflags=7
6151 echo "And it supports 4 but not 8 definitely."
6152 else
6153 echo "It doesn't support 4..."
6154 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6155 voidflags=11
6156 echo "But it supports 8."
6157 else
6158 voidflags=3
6159 echo "Neither does it support 8."
6160 fi
6161 fi
6162 else
6163 echo "It does not support 2..."
6164 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6165 voidflags=13
6166 echo "But it supports 4 and 8."
6167 else
6168 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6169 voidflags=5
6170 echo "And it supports 4 but has not heard about 8."
6171 else
6172 echo "However it supports 8 but not 4."
6173 fi
6174 fi
6175 fi
6176 else
6177 echo "There is no support at all for void."
6178 voidflags=0
6179 fi
6180 fi
6181esac
6182case "$voidflags" in
6183"$defvoidused") ;;
6184*) $cat >&4 <<'EOM'
6185 Support flag bits are:
6186 1: basic void declarations.
6187 2: arrays of pointers to functions returning void.
6188 4: operations between pointers to and addresses of void functions.
6189 8: generic void pointers.
6190EOM
6191 dflt="$voidflags";
6192 rp="Your void support flags add up to what?"
6193 . ./myread
6194 voidflags="$ans"
6195 ;;
6196esac
6197$rm -f try.* .out
6198
6199: check for length of pointer
6200echo " "
6201case "$ptrsize" in
6202'')
6203 echo "Checking to see how big your pointers are..." >&4
6204 if test "$voidflags" -gt 7; then
6205 echo '#define VOID_PTR char *' > try.c
6206 else
6207 echo '#define VOID_PTR void *' > try.c
6208 fi
74d00865 6209 $cat >>try.c <<EOCP
c8b93cf9 6210#include <stdio.h>
d1daaddf
JH
6211#$i_stdlib I_STDLIB
6212#ifdef I_STDLIB
6213#include <stdlib.h>
6214#endif
c8b93cf9
JH
6215int main()
6216{
6217 printf("%d\n", (int)sizeof(VOID_PTR));
6218 exit(0);
6219}
6220EOCP
6221 set try
6222 if eval $compile_ok; then
6223 ptrsize=`$run ./try`
6224 echo "Your pointers are $ptrsize bytes long."
6225 else
6226 dflt='4'
6227 echo "(I can't seem to compile the test program. Guessing...)" >&4
6228 rp="What is the size of a pointer (in bytes)?"
6229 . ./myread
6230 ptrsize="$ans"
6231 fi
6232 ;;
6233esac
6234$rm -f try.c try
6235case "$use64bitall" in
6236"$define"|true|[yY]*)
6237 case "$ptrsize" in
6238 4) cat <<EOM >&4
6239
1911a026
JH
6240*** You have chosen a maximally 64-bit build,
6241*** but your pointers are only 4 bytes wide.
09b58c7b
JH
6242*** Please rerun Configure without -Duse64bitall.
6243EOM
6244 case "$d_quad" in
6245 define)
6246 cat <<EOM >&4
6247*** Since you have quads, you could possibly try with -Duse64bitint.
6248EOM
6249 ;;
6250 esac
6251 cat <<EOM >&4
1911a026 6252*** Cannot continue, aborting.
c8b93cf9
JH
6253
6254EOM
09b58c7b 6255
1911a026 6256 exit 1
c8b93cf9
JH
6257 ;;
6258 esac
6259 ;;
6260esac
6261
19a100ff 6262
9df442c2
NC
6263: determine whether to use malloc wrapping
6264echo " "
6265case "$usemallocwrap" in
6266[yY]*|true|$define) dflt='y' ;;
6267[nN]*|false|$undef) dflt='n' ;;
6268*) case "$usedevel" in
6269 [yY]*|true|$define) dflt='y' ;;
6270 *) dflt='n' ;;
6271 esac
6272 ;;
6273esac
6274rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6275. ./myread
6276usemallocwrap="$ans"
6277case "$ans" in
6278y*|true)
6279 usemallocwrap="$define" ;;
6280*)
6281 usemallocwrap="$undef" ;;
6282esac
c8b93cf9 6283
b4eb6b3d
JH
6284: determine which malloc to compile in
6285echo " "
6286case "$usemymalloc" in
c4163172
JH
6287[yY]*|true|$define) dflt='y' ;;
6288[nN]*|false|$undef) dflt='n' ;;
6289*) case "$ptrsize" in
6290 4) dflt='y' ;;
6291 *) dflt='n' ;;
6292 esac
6293 ;;
8dfa8df9 6294esac
b4eb6b3d
JH
6295rp="Do you wish to attempt to use the malloc that comes with $package?"
6296. ./myread
6297usemymalloc="$ans"
6298case "$ans" in
6299y*|true)
6300 usemymalloc='y'
6301 mallocsrc='malloc.c'
6302 mallocobj="malloc$_o"
6303 d_mymalloc="$define"
6304 case "$libs" in
6305 *-lmalloc*)
6306 : Remove malloc from list of libraries to use
6307 echo "Removing unneeded -lmalloc from library list" >&4
6308 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6309 shift
6310 libs="$*"
6311 echo "libs = $libs" >&4
6312 ;;
6313 esac
6314 ;;
6315*)
6316 usemymalloc='n'
6317 mallocsrc=''
6318 mallocobj=''
6319 d_mymalloc="$undef"
6320 ;;
6321esac
6322
6323: compute the return types of malloc and free
6324echo " "
6325$cat >malloc.c <<END
6326#$i_malloc I_MALLOC
6327#$i_stdlib I_STDLIB
6328#include <stdio.h>
6329#include <sys/types.h>
6330#ifdef I_MALLOC
6331#include <malloc.h>
6332#endif
6333#ifdef I_STDLIB
6334#include <stdlib.h>
6335#endif
6336#ifdef TRY_MALLOC
6337void *malloc();
6338#endif
6339#ifdef TRY_FREE
6340void free();
6341#endif
6342END
6343case "$malloctype" in
6344'')
6345 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6346 malloctype='void *'
6347 else
6348 malloctype='char *'
6349 fi
6350 ;;
6351esac
6352echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6353
6354case "$freetype" in
6355'')
6356 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6357 freetype='void'
6358 else
6359 freetype='int'
6360 fi
6361 ;;
6362esac
6363echo "Your system uses $freetype free(), it would seem." >&4
6364$rm -f malloc.[co]
6365$cat <<EOM
6366
6367After $package is installed, you may wish to install various
6368add-on modules and utilities. Typically, these add-ons will
6369be installed under $prefix with the rest
6370of this package. However, you may wish to install such add-ons
6371elsewhere under a different prefix.
6372
6373If you do not wish to put everything under a single prefix, that's
6374ok. You will be prompted for the individual locations; this siteprefix
6375is only used to suggest the defaults.
6376
6377The default should be fine for most people.
6378
6379EOM
6380fn=d~+
6381rp='Installation prefix to use for add-on modules and utilities?'
6382: XXX Here might be another good place for an installstyle setting.
6383case "$siteprefix" in
6384'') dflt=$prefix ;;
6385*) dflt=$siteprefix ;;
6386esac
6387. ./getfile
6388: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6389oldsiteprefix=''
6390case "$siteprefix" in
6391'') ;;
6392*) case "$ans" in
6393 "$prefix") ;;
6394 *) oldsiteprefix="$prefix";;
6395 esac
6396 ;;
6397esac
6398siteprefix="$ans"
6399siteprefixexp="$ansexp"
6400
6401: determine where site specific libraries go.
6402: Usual default is /usr/local/lib/perl5/site_perl/$version
6403: The default "style" setting is made in installstyle.U
6404: XXX No longer works with Prefixit stuff.
6405prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6406case "$sitelib" in
6407'') case "$installstyle" in
6408 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6409 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6410 esac
6411 ;;
6412*) dflt="$sitelib"
6413 ;;
6414esac
6415$cat <<EOM
6416
6417The installation process will create a directory for
6418site-specific extensions and modules. Most users find it convenient
6419to place all site-specific files in this directory rather than in the
6420main distribution directory.
6421
6422EOM
6423fn=d~+
6424rp='Pathname for the site-specific library files?'
6425. ./getfile
6426sitelib="$ans"
6427sitelibexp="$ansexp"
6428sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6429: Change installation prefix, if necessary.
6430if $test X"$prefix" != X"$installprefix"; then
6431 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6432else
6433 installsitelib="$sitelibexp"
6434fi
6435
6436: determine where site specific architecture-dependent libraries go.
6437: sitelib default is /usr/local/lib/perl5/site_perl/$version
6438: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6439: sitelib may have an optional trailing /share.
6440case "$sitearch" in
6441'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6442 dflt="$dflt/$archname"
6443 ;;
6444*) dflt="$sitearch"
6445 ;;
6446esac
6447set sitearch sitearch none
6448eval $prefixit
6449$cat <<EOM
6450
6451The installation process will also create a directory for
6452architecture-dependent site-specific extensions and modules.
6453
6454EOM
6455fn=d~+
6456rp='Pathname for the site-specific architecture-dependent library files?'
6457. ./getfile
6458sitearch="$ans"
6459sitearchexp="$ansexp"
6460: Change installation prefix, if necessary.
6461if $test X"$prefix" != X"$installprefix"; then
6462 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6463else
6464 installsitearch="$sitearchexp"
6465fi
6466
6467$cat <<EOM
6468
6469The installation process will also create a directory for
6470vendor-supplied add-ons. Vendors who supply perl with their system
6471may find it convenient to place all vendor-supplied files in this
6472directory rather than in the main distribution directory. This will
6473ease upgrades between binary-compatible maintenance versions of perl.
6474
6475Of course you may also use these directories in whatever way you see
6476fit. For example, you might use them to access modules shared over a
6477company-wide network.
6478
6479The default answer should be fine for most people.
6480This causes further questions about vendor add-ons to be skipped
6481and no vendor-specific directories will be configured for perl.
6482
6483EOM
6484rp='Do you want to configure vendor-specific add-on directories?'
6485case "$usevendorprefix" in
6486define|true|[yY]*) dflt=y ;;
6487*) : User may have set vendorprefix directly on Configure command line.
6488 case "$vendorprefix" in
6489 ''|' ') dflt=n ;;
6490 *) dflt=y ;;
6491 esac
6492 ;;
6493esac
6494. ./myread
6495case "$ans" in
6496[yY]*) fn=d~+
6497 rp='Installation prefix to use for vendor-supplied add-ons?'
6498 case "$vendorprefix" in
6499 '') dflt='' ;;
6500 *) dflt=$vendorprefix ;;
6501 esac
6502 . ./getfile
6503 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6504 oldvendorprefix=''
6505 case "$vendorprefix" in
6506 '') ;;
6507 *) case "$ans" in
6508 "$prefix") ;;
6509 *) oldvendorprefix="$prefix";;
6510 esac
6511 ;;
6512 esac
6513 usevendorprefix="$define"
6514 vendorprefix="$ans"
6515 vendorprefixexp="$ansexp"
6516 ;;
6517*) usevendorprefix="$undef"
6518 vendorprefix=''
6519 vendorprefixexp=''
6520 ;;
6521esac
6522
6523case "$vendorprefix" in
6524'') d_vendorlib="$undef"
6525 vendorlib=''
6526 vendorlibexp=''
6527 ;;
6528*) d_vendorlib="$define"
6529 : determine where vendor-supplied modules go.
6530 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6531 case "$vendorlib" in
6532 '')
6533 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6534 case "$installstyle" in
6535 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6536 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6537 esac
6538 ;;
6539 *) dflt="$vendorlib"
6540 ;;
6541 esac
6542 fn=d~+
6543 rp='Pathname for the vendor-supplied library files?'
6544 . ./getfile
6545 vendorlib="$ans"
6546 vendorlibexp="$ansexp"
6547 ;;
6548esac
6549vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6550: Change installation prefix, if necessary.
6551if $test X"$prefix" != X"$installprefix"; then
6552 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6553else
6554 installvendorlib="$vendorlibexp"
6555fi
6556
6557case "$vendorprefix" in
6558'') d_vendorarch="$undef"
6559 vendorarch=''
6560 vendorarchexp=''
6561 ;;
6562*) d_vendorarch="$define"
6563 : determine where vendor-supplied architecture-dependent libraries go.
6564 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6565 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6566 : vendorlib may have an optional trailing /share.
6567 case "$vendorarch" in
6568 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6569 dflt="$dflt/$archname"
6570 ;;
6571 *) dflt="$vendorarch" ;;
6572 esac
6573 fn=d~+
6574 rp='Pathname for vendor-supplied architecture-dependent files?'
6575 . ./getfile
6576 vendorarch="$ans"
6577 vendorarchexp="$ansexp"
6578 ;;
6579esac
6580: Change installation prefix, if necessary.
6581if $test X"$prefix" != X"$installprefix"; then
6582 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6583else
6584 installvendorarch="$vendorarchexp"
6585fi
6586
6587: Final catch-all directories to search
6588$cat <<EOM
6589
6590Lastly, you can have perl look in other directories for extensions and
6591modules in addition to those already specified.
6592These directories will be searched after
6593 $sitearch
6594 $sitelib
6595EOM
6596test X"$vendorlib" != "X" && echo ' ' $vendorlib
6597test X"$vendorarch" != "X" && echo ' ' $vendorarch
6598echo ' '
6599case "$otherlibdirs" in
6600''|' ') dflt='none' ;;
6601*) dflt="$otherlibdirs" ;;
6602esac
6603$cat <<EOM
6604Enter a colon-separated set of extra paths to include in perl's @INC
6605search path, or enter 'none' for no extra paths.
6606
6607EOM
6608
6609rp='Colon-separated list of additional directories for perl to search?'
6610. ./myread
6611case "$ans" in
6612' '|''|none) otherlibdirs=' ' ;;
6613*) otherlibdirs="$ans" ;;
6614esac
6615case "$otherlibdirs" in
6616' ') val=$undef ;;
6617*) val=$define ;;
6618esac
6619set d_perl_otherlibdirs
6620eval $setvar
6621
6622: Cruising for prototypes
6623echo " "
6624echo "Checking out function prototypes..." >&4
55954f19
JH
6625$cat >prototype.c <<EOCP
6626#$i_stdlib I_STDLIB
6627#ifdef I_STDLIB
6628#include <stdlib.h>
6629#endif
b4eb6b3d
JH
6630int main(int argc, char *argv[]) {
6631 exit(0);}
6632EOCP
6633if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6634 echo "Your C compiler appears to support function prototypes."
6635 val="$define"
6636else
6637 echo "Your C compiler doesn't seem to understand function prototypes."
6638 val="$undef"
6639fi
6640set prototype
6641eval $setvar
6642$rm -f prototype*
6643
6644case "$prototype" in
6645"$define") ;;
6646*) ansi2knr='ansi2knr'
6647 echo " "
6648 cat <<EOM >&4
6649
6650$me: FATAL ERROR:
6651This version of $package can only be compiled by a compiler that
6652understands function prototypes. Unfortunately, your C compiler
6653 $cc $ccflags
6654doesn't seem to understand them. Sorry about that.
6655
6656If GNU cc is available for your system, perhaps you could try that instead.
6657
6658Eventually, we hope to support building Perl with pre-ANSI compilers.
6659If you would like to help in that effort, please contact <perlbug@perl.org>.
6660
6661Aborting Configure now.
6662EOM
6663 exit 2
6664 ;;
6665esac
6666
6667: determine where public executables go
6668echo " "
6669set dflt bin bin
6670eval $prefixit
6671fn=d~
6672rp='Pathname where the public executables will reside?'
6673. ./getfile
6674if $test "X$ansexp" != "X$binexp"; then
6675 installbin=''
6676fi
6677bin="$ans"
6678binexp="$ansexp"
6679: Change installation prefix, if necessary.
6680: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6681if $test X"$prefix" != X"$installprefix"; then
6682 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6683else
6684 installbin="$binexp"
6685fi
6686
6fcddf3b 6687echo " "
6fcddf3b 6688case "$extras" in
bf35c3f6
JH
6689'') dflt='n';;
6690*) dflt='y';;
6fcddf3b
JH
6691esac
6692cat <<EOM
6693Perl can be built with extra modules or bundles of modules which
6694will be fetched from the CPAN and installed alongside Perl.
6695
6696Notice that you will need access to the CPAN; either via the Internet,
6697or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6698be asked later to configure the CPAN.pm module which will in turn do
6699the installation of the rest of the extra modules or bundles.)
6700
6701Notice also that if the modules require any external software such as
dd2de242
JH
6702libraries and headers (the libz library and the zlib.h header for the
6703Compress::Zlib module, for example) you MUST have any such software
6704already installed, this configuration process will NOT install such
6705things for you.
6fcddf3b
JH
6706
6707If this doesn't make any sense to you, just accept the default '$dflt'.
6708EOM
dd2de242 6709rp='Install any extra modules (y or n)?'
6fcddf3b
JH
6710. ./myread
6711case "$ans" in
6712y|Y)
6713 cat <<EOM
6714
6715Please list any extra modules or bundles to be installed from CPAN,
6716with spaces between the names. The names can be in any format the
dd2de242
JH
6717'install' command of CPAN.pm will understand. (Answer 'none',
6718without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
6719EOM
6720 rp='Extras?'
6721 dflt="$extras"
6722 . ./myread
6723 extras="$ans"
6724esac
6725case "$extras" in
6726''|'none')
6727 val=''
6728 $rm -f ../extras.lst
6729 ;;
6730*) echo "(Saving the list of extras for later...)"
dd2de242
JH
6731 echo "$extras" > ../extras.lst
6732 val="'$extras'"
6fcddf3b
JH
6733 ;;
6734esac
6735set extras
6736eval $setvar
6737echo " "
6738
6e1038e0
MB
6739: determine where html pages for programs go
6740set html1dir html1dir none
6741eval $prefixit
6742$cat <<EOM
6743
6744If you wish to install html files for programs in $spackage, indicate
6745the appropriate directory here. To skip installing html files,
6746answer "none".
6747EOM
6748case "$html1dir" in
6749''|none|$undef|' ') dflt=none ;;
6750*) dflt=$html1dir ;;
6751esac
6752fn=dn+~
6753rp="Directory for the main $spackage html pages?"
6754. ./getfile
6755html1dir="$ans"
6756html1direxp="$ansexp"
6757: Use ' ' for none so value is preserved next time through Configure
6758$test X"$html1dir" = "X" && html1dir=' '
6759: Change installation prefix, if necessary.
6760if $test X"$prefix" != X"$installprefix"; then
6761 installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6762else
6763 installhtml1dir="$html1direxp"
6764fi
6765
6766: determine where html pages for libraries and modules go
6767set html3dir html3dir none
6768eval $prefixit
6769$cat <<EOM
6770
6771If you wish to install html files for modules associated with $spackage,
6772indicate the appropriate directory here. To skip installing html files,
6773answer "none".
6774EOM
6775: There is no obvious default. If they have specified html1dir, then
6776: try to key off that, possibly changing .../html1 into .../html3.
6777case "$html3dir" in
6778'') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6779*) dflt=$html3dir ;;
6780esac
6781fn=dn+~
6782rp="Directory for the $spackage module html pages?"
6783. ./getfile
6784html3dir="$ans"
6785html3direxp="$ansexp"
6786: Use ' ' for none so value is preserved next time through Configure
6787$test X"$html3dir" = "X" && html3dir=' '
6788: Change installation prefix, if necessary.
6789if $test X"$prefix" != X"$installprefix"; then
6790 installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6791else
6792 installhtml3dir="$html3direxp"
6793fi
6794
b4eb6b3d
JH
6795: Find perl5.005 or later.
6796echo "Looking for a previously installed perl5.005 or later... "
6797case "$perl5" in
a938a3bb 6798'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6799 : Check if this perl is recent and can load a simple module
a938a3bb 6800 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6801 perl5=$tdir/perl
6802 break;
a938a3bb
IZ
6803 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6804 perl5=$tdir/perl5
b4eb6b3d
JH
6805 break;
6806 fi
89ce900e
JH
6807 done
6808 ;;
6809*) perl5="$perl5"
6810 ;;
6811esac
6812case "$perl5" in
6813'') echo "None found. That's ok.";;
6814*) echo "Using $perl5." ;;
6815esac
6816
6817: Determine list of previous versions to include in @INC
6818$cat > getverlist <<EOPL
6819#!$perl5 -w
6820use File::Basename;
6821\$api_versionstring = "$api_versionstring";
6822\$version = "$version";
6823\$stem = "$sitelib_stem";
6824\$archname = "$archname";
6825EOPL
6826 $cat >> getverlist <<'EOPL'
6827# Can't have leading @ because metaconfig interprets it as a command!
6828;@inc_version_list=();
6829# XXX Redo to do opendir/readdir?
6830if (-d $stem) {
6831 chdir($stem);
6832 ;@candidates = glob("5.*");
6833}
6834else {
6835 ;@candidates = ();
6836}
6837
6838# XXX ToDo: These comparisons must be reworked when two-digit
6839# subversions come along, so that 5.7.10 compares as greater than
6840# 5.7.3! By that time, hope that 5.6.x is sufficiently
6841# widespread that we can use the built-in version vectors rather
6842# than reinventing them here. For 5.6.0, however, we must
6843# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6844foreach $d (@candidates) {
6845 if ($d lt $version) {
6846 if ($d ge $api_versionstring) {
6847 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6848 }
6849 elsif ($d ge "5.005") {
6850 unshift(@inc_version_list, grep { -d } $d);
6851 }
6852 }
6853 else {
6854 # Skip newer version. I.e. don't look in
6855 # 5.7.0 if we're installing 5.6.1.
6856 }
6857}
6858
6859if (@inc_version_list) {
6860 print join(' ', @inc_version_list);
6861}
6862else {
6863 # Blank space to preserve value for next Configure run.
6864 print " ";
6865}
6866EOPL
6867chmod +x getverlist
6868case "$inc_version_list" in
6869'') if test -x "$perl5$exe_ext"; then
6870 dflt=`$perl5 getverlist`
6871 else
6872 dflt='none'
6873 fi
6874 ;;
6875$undef) dflt='none' ;;
6876*) eval dflt=\"$inc_version_list\" ;;
6877esac
6878case "$dflt" in
6879''|' ') dflt=none ;;
6880esac
6881case "$dflt" in
68825.005) dflt=none ;;
6883esac
6884$cat <<EOM
6885
6886In order to ease the process of upgrading, this version of perl
6887can be configured to use modules built and installed with earlier
6888versions of perl that were installed under $prefix. Specify here
6889the list of earlier versions that this version of perl should check.
6890If Configure detected no earlier versions of perl installed under
6891$prefix, then the list will be empty. Answer 'none' to tell perl
6892to not search earlier versions.
6893
6894The default should almost always be sensible, so if you're not sure,
6895just accept the default.
6896EOM
6897
6898rp='List of earlier versions to include in @INC?'
6899. ./myread
6900case "$ans" in
d2556f21 6901[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
89ce900e
JH
6902*) inc_version_list="$ans" ;;
6903esac
6904case "$inc_version_list" in
6905''|' ')
6906 inc_version_list_init='0';;
6907*) inc_version_list_init=`echo $inc_version_list |
6908 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6909 ;;
6910esac
6911$rm -f getverlist
6912
6913: determine whether to install perl also as /usr/bin/perl
6914
6915echo " "
6916if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6917 $cat <<EOM
6918Many scripts expect perl to be installed as /usr/bin/perl.
6919
6920If you want to, I can install the perl you are about to compile
6921as /usr/bin/perl (in addition to $bin/perl).
6922EOM
6923 if test -f /usr/bin/perl; then
6924 $cat <<EOM
6925
6926However, please note that because you already have a /usr/bin/perl,
6927overwriting that with a new Perl would very probably cause problems.
6928Therefore I'm assuming you don't want to do that (unless you insist).
6929
6930EOM
6931 case "$installusrbinperl" in
6932 "$define"|[yY]*) dflt='y';;
6933 *) dflt='n';;
6934 esac
6935 else
6936 $cat <<EOM
6937
6938Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6939
6940EOM
6941 case "$installusrbinperl" in
6942 "$undef"|[nN]*) dflt='n';;
6943 *) dflt='y';;
6944 esac
6945 fi
6946 rp="Do you want to install perl as /usr/bin/perl?"
6947 . ./myread
6948 case "$ans" in
6949 [yY]*) val="$define";;
6950 *) val="$undef" ;;
6951 esac
6952else
6953 val="$undef"
6954fi
6955set installusrbinperl
6956eval $setvar
6957
6958echo " "
6959echo "Checking for GNU C Library..." >&4
6960cat >try.c <<'EOCP'
6961/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
6962 alone are insufficient to distinguish different versions, such as
6963 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
6964 libc version 2.1.0. A. Dougherty, June 3, 2002.
6965*/
6966#include <stdio.h>
6967int main(void)
6968{
6969#ifdef __GLIBC__
6970# ifdef __GLIBC_MINOR__
6971# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6972# include <gnu/libc-version.h>
6973 printf("%s\n", gnu_get_libc_version());
6974# else
6975 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
6976# endif
6977# else
6978 printf("%d\n", __GLIBC__);
6979# endif
6980 return 0;
6981#else
6982 return 1;
6983#endif
6984}
6985EOCP
6986set try
6987if eval $compile_ok && $run ./try > glibc.ver; then
6988 val="$define"
6989 gnulibc_version=`$cat glibc.ver`
6990 echo "You are using the GNU C Library version $gnulibc_version"
6991else
6992 val="$undef"
6993 gnulibc_version=''
6994 echo "You are not using the GNU C Library"
6995fi
6996$rm -f try try.* glibc.ver
6997set d_gnulibc
6998eval $setvar
6999
7000: see if nm is to be used to determine whether a symbol is defined or not
7001case "$usenm" in
7002'')
7003 dflt=''
7004 case "$d_gnulibc" in
7005 "$define")
7006 echo " "
7007 echo "nm probably won't work on the GNU C Library." >&4
7008 dflt=n
7009 ;;
7010 esac
7011 case "$dflt" in
7012 '')
7013 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7014 echo " "
7015 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7016 echo "'nm' won't be sufficient on this sytem." >&4
7017 dflt=n
7018 fi
7019 ;;
7020 esac
7021 case "$dflt" in
7022 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7023 if $test $dflt -gt 20; then
7024 dflt=y
7025 else
7026 dflt=n
7027 fi
7028 ;;
7029 esac
b4eb6b3d 7030 ;;
89ce900e
JH
7031*)
7032 case "$usenm" in
7033 true|$define) dflt=y;;
7034 *) dflt=n;;
7035 esac
b4eb6b3d
JH
7036 ;;
7037esac
89ce900e 7038$cat <<EOM
b4eb6b3d 7039
89ce900e
JH
7040I can use $nm to extract the symbols from your C libraries. This
7041is a time consuming task which may generate huge output on the disk (up
7042to 3 megabytes) but that should make the symbols extraction faster. The
7043alternative is to skip the 'nm' extraction part and to compile a small
7044test program instead to determine whether each symbol is present. If
7045you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7046this may be the best solution.
b4eb6b3d 7047
89ce900e 7048You probably shouldn't let me use 'nm' if you are using the GNU C Library.
b4eb6b3d 7049
89ce900e
JH
7050EOM
7051rp="Shall I use $nm to extract C symbols from the libraries?"
7052. ./myread
7053case "$ans" in
7054[Nn]*) usenm=false;;
7055*) usenm=true;;
b4eb6b3d 7056esac
89ce900e
JH
7057
7058runnm=$usenm
7059case "$reuseval" in
7060true) runnm=false;;
b4eb6b3d 7061esac
b4eb6b3d 7062
89ce900e
JH
7063: nm options which may be necessary
7064case "$nm_opt" in
7065'') if $test -f /mach_boot; then
7066 nm_opt='' # Mach
7067 elif $test -d /usr/ccs/lib; then
7068 nm_opt='-p' # Solaris (and SunOS?)
7069 elif $test -f /dgux; then
7070 nm_opt='-p' # DG-UX
7071 elif $test -f /lib64/rld; then
7072 nm_opt='-p' # 64-bit Irix
7073 else
7074 nm_opt=''
7075 fi;;
7076esac
b4eb6b3d 7077
89ce900e
JH
7078: nm options which may be necessary for shared libraries but illegal
7079: for archive libraries. Thank you, Linux.
7080case "$nm_so_opt" in
7081'') case "$myuname" in
7082 *linux*)
7083 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7084 nm_so_opt='--dynamic'
7085 fi
7086 ;;
7087 esac
7088 ;;
7089esac
b4eb6b3d 7090
89ce900e
JH
7091case "$runnm" in
7092true)
7093: get list of predefined functions in a handy place
7094echo " "
7095case "$libc" in
7096'') libc=unknown
7097 case "$libs" in
7098 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7099 esac
7100 ;;
b4eb6b3d 7101esac
89ce900e
JH
7102case "$libs" in
7103'') ;;
7104*) for thislib in $libs; do
7105 case "$thislib" in
7106 -lc|-lc_s)
7107 : Handle C library specially below.
7108 ;;
7109 -l*)
7110 thislib=`echo $thislib | $sed -e 's/^-l//'`
7111 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7112 :
7113 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7114 :
7115 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7116 :
7117 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7118 :
7119 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7120 :
7121 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7122 :
7123 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7124 :
7125 else
7126 try=''
7127 fi
7128 libnames="$libnames $try"
7129 ;;
7130 *) libnames="$libnames $thislib" ;;
7131 esac
7132 done
b4eb6b3d
JH
7133 ;;
7134esac
89ce900e
JH
7135xxx=normal
7136case "$libc" in
7137unknown)
7138 set /lib/libc.$so
7139 for xxx in $libpth; do
7140 $test -r $1 || set $xxx/libc.$so
7141 : The messy sed command sorts on library version numbers.
7142 $test -r $1 || \
7143 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7144 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7145 h
7146 s/[0-9][0-9]*/0000&/g
7147 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7148 G
7149 s/\n/ /' | \
7150 $sort | $sed -e 's/^.* //'`
7151 eval set \$$#
7152 done
7153 $test -r $1 || set /usr/ccs/lib/libc.$so
7154 $test -r $1 || set /lib/libsys_s$_a
7155 ;;
7156*)
7157 set blurfl
7158 ;;
7159esac
7160if $test -r "$1"; then
7161 echo "Your (shared) C library seems to be in $1."
7162 libc="$1"
7163elif $test -r /lib/libc && $test -r /lib/clib; then
7164 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7165 xxx=apollo
7166 libc='/lib/clib /lib/libc'
7167 if $test -r /lib/syslib; then
7168 echo "(Your math library is in /lib/syslib.)"
7169 libc="$libc /lib/syslib"
7170 fi
7171elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7172 echo "Your C library seems to be in $libc, as you said before."
7173elif $test -r $incpath/usr/lib/libc$_a; then
7174 libc=$incpath/usr/lib/libc$_a;
7175 echo "Your C library seems to be in $libc. That's fine."
7176elif $test -r /lib/libc$_a; then
7177 libc=/lib/libc$_a;
7178 echo "Your C library seems to be in $libc. You're normal."
7179else
7180 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7181 :
7182 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7183 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7184 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7185 :
7186 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7187 :
7188 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7189 :
7190 else
7191 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7192 fi
7193 if $test -r "$tans"; then
7194 echo "Your C library seems to be in $tans, of all places."
7195 libc=$tans
7196 else
7197 libc='blurfl'
7198 fi
7199fi
7200if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7201 dflt="$libc"
7202 cat <<EOM
b4eb6b3d 7203
89ce900e
JH
7204If the guess above is wrong (which it might be if you're using a strange
7205compiler, or your machine supports multiple models), you can override it here.
b4eb6b3d 7206
89ce900e
JH
7207EOM
7208else
7209 dflt=''
7210 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7211 cat >&4 <<EOM
7212I can't seem to find your C library. I've looked in the following places:
5e366f65 7213
b4eb6b3d 7214EOM
89ce900e
JH
7215 $sed 's/^/ /' libpath
7216 cat <<EOM
5e366f65 7217
89ce900e 7218None of these seems to contain your C library. I need to get its name...
5e366f65
JH
7219
7220EOM
89ce900e
JH
7221fi
7222fn=f
7223rp='Where is your C library?'
7224. ./getfile
7225libc="$ans"
5e366f65 7226
89ce900e
JH
7227echo " "
7228echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7229set X `cat libnames`
7230shift
7231xxx=files
7232case $# in 1) xxx=file; esac
7233echo "Extracting names from the following $xxx for later perusal:" >&4
7234echo " "
7235$sed 's/^/ /' libnames >&4
7236echo " "
7237$echo $n "This may take a while...$c" >&4
5e366f65 7238
89ce900e
JH
7239for file in $*; do
7240 case $file in
7241 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7242 *) $nm $nm_opt $file 2>/dev/null;;
b4eb6b3d 7243 esac
89ce900e
JH
7244done >libc.tmp
7245
7246$echo $n ".$c"
7247$grep fprintf libc.tmp > libc.ptf
7248xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7249xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7250xxx='[ADTSIW]'
ab900c53 7251if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
89ce900e
JH
7252 eval $xscan;\
7253 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254 eval $xrun
7255elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7256 eval $xscan;\
7257 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258 eval $xrun
7259elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7260 eval $xscan;\
7261 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7262 eval $xrun
7263elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7264 eval $xscan;\
7265 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7266 eval $xrun
7267elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7268 eval $xscan;\
7269 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7270 eval $xrun
7271elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7272 eval $xscan;\
7273 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7274 eval $xrun
7275elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7276 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7277 eval $xscan;\
7278 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7279 eval $xrun
7280elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7281 eval $xscan;\
7282 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7283 eval $xrun
7284elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7285 eval $xscan;\
7286 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7287 eval $xrun
7288elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7289 eval $xscan;\
7290 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7291 eval $xrun
7292elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7293 eval $xscan;\
7294 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7295 eval $xrun
7296elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7297 eval $xscan;\
7298 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7299 eval $xrun
7300elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7301 eval $xscan;\
7302 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7303 eval $xrun
7304elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7305 eval $xscan;\
7306 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7307 eval $xrun
b4eb6b3d 7308else
89ce900e
JH
7309 $nm -p $* 2>/dev/null >libc.tmp
7310 $grep fprintf libc.tmp > libc.ptf
7311 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7312 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7313 then
7314 nm_opt='-p'
7315 eval $xrun
7316 else
7317 echo " "
7318 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7319 com=''
7320 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7321 for thisname in $libnames $libc; do
7322 $ar t $thisname >>libc.tmp
7323 done
7324 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7325 echo "Ok." >&4
7326 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7327 # Repeat libc to extract forwarders to DLL entries too
7328 for thisname in $libnames $libc; do
7329 $ar tv $thisname >>libc.tmp
7330 # Revision 50 of EMX has bug in $ar.
7331 # it will not extract forwarders to DLL entries
7332 # Use emximp which will extract exactly them.
7333 emximp -o tmp.imp $thisname \
7334 2>/dev/null && \
7335 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7336 < tmp.imp >>libc.tmp
7337 $rm tmp.imp
7338 done
7339 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7340 echo "Ok." >&4
7341 else
7342 echo "$ar didn't seem to work right." >&4
7343 echo "Maybe this is a Cray...trying bld instead..." >&4
7344 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7345 then
7346 for thisname in $libnames; do
7347 bld t $libnames | \
7348 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7349 $ar t $thisname >>libc.tmp
7350 done
7351 echo "Ok." >&4
7352 else
7353 echo "That didn't work either. Giving up." >&4
7354 exit 1
7355 fi
7356 fi
7357 fi
b4eb6b3d 7358fi
89ce900e
JH
7359nm_extract="$com"
7360case "$PASE" in
7361define)
7362 echo " "
7363 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7364 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7365 ;;
7366*) if $test -f /lib/syscalls.exp; then
7367 echo " "
7368 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7369 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7370 fi
7371 ;;
7372esac
7373;;
7374esac
7375$rm -f libnames libpath
b4eb6b3d
JH
7376
7377: see if dld is available
7378set dld.h i_dld
7379eval $inhdr
7380
89ce900e
JH
7381: is a C symbol defined?
7382csym='tlook=$1;
7383case "$3" in
373dfab3
JH
7384-v) tf=libc.tmp; tdc="";;
7385-a) tf=libc.tmp; tdc="[]";;
7386*) tlook="^$1\$"; tf=libc.list; tdc="()";;
89ce900e
JH
7387esac;
7388tx=yes;
7389case "$reuseval-$4" in
7390true-) ;;
7391true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7392esac;
7393case "$tx" in
7394yes)
ab900c53 7395 tval=false;
5129fff4
JH
7396 if $test "$runnm" = true; then
7397 if $contains $tlook $tf >/dev/null 2>&1; then
ab900c53 7398 tval=true;
5129fff4 7399 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
373dfab3 7400 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7401 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
373dfab3
JH
7402 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7403 $rm -f try$_exe try.c core core.* try.core;
89ce900e 7404 fi;
5129fff4 7405 else
373dfab3 7406 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7407 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
373dfab3 7408 $rm -f try$_exe try.c;
ab900c53
AB
7409 fi;
7410 ;;
89ce900e
JH
7411*)
7412 case "$tval" in
7413 $define) tval=true;;
7414 *) tval=false;;
ab900c53
AB
7415 esac;
7416 ;;
89ce900e
JH
7417esac;
7418eval "$2=$tval"'
7419
7420: define an is-in-libc? function
7421inlibc='echo " "; td=$define; tu=$undef;
7422sym=$1; var=$2; eval "was=\$$2";
7423tx=yes;
7424case "$reuseval$was" in
7425true) ;;
7426true*) tx=no;;
7427esac;
7428case "$tx" in
7429yes)
7430 set $sym tres -f;
7431 eval $csym;
7432 case "$tres" in
7433 true)
7434 echo "$sym() found." >&4;
7435 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7436 *)
7437 echo "$sym() NOT found." >&4;
7438 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7439 esac;;
7440*)
7441 case "$was" in
7442 $define) echo "$sym() found." >&4;;
7443 *) echo "$sym() NOT found." >&4;;
7444 esac;;
7445esac'
7446
b4eb6b3d
JH
7447: see if dlopen exists
7448xxx_runnm="$runnm"
7449runnm=false
7450set dlopen d_dlopen
7451eval $inlibc
7452runnm="$xxx_runnm"
7453
7454: determine which dynamic loading, if any, to compile in
7455echo " "
7456dldir="ext/DynaLoader"
7457case "$usedl" in
7458$define|y|true)
7459 dflt='y'
7460 usedl="$define"
7461 ;;
7462$undef|n|false)
7463 dflt='n'
7464 usedl="$undef"
7465 ;;
7466*)
7467 dflt='n'
7468 case "$d_dlopen" in
7469 $define) dflt='y' ;;
7470 esac
7471 case "$i_dld" in
7472 $define) dflt='y' ;;
7473 esac
7474 : Does a dl_xxx.xs file exist for this operating system
7475 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7476 ;;
7477esac
7478rp="Do you wish to use dynamic loading?"
7479. ./myread
7480usedl="$ans"
7481case "$ans" in
7482y*) usedl="$define"
7483 case "$dlsrc" in
7484 '')
7485 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7486 dflt="$dldir/dl_${osname}.xs"
7487 elif $test "$d_dlopen" = "$define" ; then
7488 dflt="$dldir/dl_dlopen.xs"
7489 elif $test "$i_dld" = "$define" ; then
7490 dflt="$dldir/dl_dld.xs"
7491 else
7492 dflt=''
7493 fi
7494 ;;
7495 *) dflt="$dldir/$dlsrc"
7496 ;;
7497 esac
7498 echo "The following dynamic loading files are available:"
7499 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7500 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7501 rp="Source file to use for dynamic loading"
7502 fn="fne"
7503 gfpth="$src"
7504 . ./getfile
7505 usedl="$define"
7506 : emulate basename
7507 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7508
7509 $cat << EOM
7510
7511Some systems may require passing special flags to $cc -c to
7512compile modules that will be used to create a shared library.
7513To use no flags, say "none".
7514
7515EOM
7516 case "$cccdlflags" in
7517 '') case "$gccversion" in
7518 '') case "$osname" in
7519 hpux) dflt='+z' ;;
7520 next) dflt='none' ;;
7521 irix*) dflt='-KPIC' ;;
48bcfe03 7522 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7523 sunos) dflt='-pic' ;;
7524 *) dflt='none' ;;
7525 esac
7526 ;;
7527 *) case "$osname" in
b6cc0f4c 7528 darwin) dflt='none' ;;
48bcfe03 7529 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7530 *) dflt='-fpic' ;;
7531 esac ;;
7532 esac ;;
7533 ' ') dflt='none' ;;
7534 *) dflt="$cccdlflags" ;;
7535 esac
7536 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7537 . ./myread
7538 case "$ans" in
7539 none) cccdlflags=' ' ;;
7540 *) cccdlflags="$ans" ;;
7541 esac
7542
7543 cat << EOM
7544
7545Some systems use ld to create libraries that can be dynamically loaded,
7546while other systems (such as those using ELF) use $cc.
7547
7548EOM
7549 case "$ld" in
55954f19 7550 '') $cat >try.c <<EOM
b4eb6b3d
JH
7551/* Test for whether ELF binaries are produced */
7552#include <fcntl.h>
55954f19
JH
7553#$i_stdlib I_STDLIB
7554#ifdef I_STDLIB
b4eb6b3d 7555#include <stdlib.h>
55954f19 7556#endif
b4eb6b3d
JH
7557int main() {
7558 char b[4];
7559 int i = open("a.out",O_RDONLY);
7560 if(i == -1)
7561 exit(1); /* fail */
7562 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7563 exit(0); /* succeed (yes, it's ELF) */
7564 else
7565 exit(1); /* fail */
7566}
7567EOM
5440bc8e 7568 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7569 cat <<EOM
7570You appear to have ELF support. I'll use $cc to build dynamic libraries.
7571EOM
7572 dflt="$cc"
7573 else
7574 echo "I'll use ld to build dynamic libraries."
7575 dflt='ld'
7576 fi
7577 rm -f try.c a.out
7578 ;;
7579 *) dflt="$ld"
7580 ;;
7581 esac
7582
7583 rp="What command should be used to create dynamic libraries?"
7584 . ./myread
7585 ld="$ans"
7586
7587 cat << EOM
7588
7589Some systems may require passing special flags to $ld to create a
7590library that can be dynamically loaded. If your ld flags include
7591-L/other/path options to locate libraries outside your loader's normal
7592search path, you may need to specify those -L options here as well. To
7593use no flags, say "none".
7594
7595EOM
7596 case "$lddlflags" in
7597 '') case "$osname" in
7598 beos) dflt='-nostart' ;;
7599 hpux) dflt='-b';
7600 case "$gccversion" in
7601 '') dflt="$dflt +vnocompatwarnings" ;;
7602 esac
7603 ;;
7604 linux|irix*) dflt='-shared' ;;
7605 next) dflt='none' ;;
7606 solaris) dflt='-G' ;;
7607 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7608 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7609 *) dflt='none' ;;
7610 esac
7611 ;;
7612 *) dflt="$lddlflags" ;;
7613 esac
7614
7615 : Try to guess additional flags to pick up local libraries.
7616 : Be careful not to append to a plain 'none'
7617 case "$dflt" in
7618 none) dflt='' ;;
7619 esac
7620 for thisflag in $ldflags; do
7621 case "$thisflag" in
b5b9f165 7622 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7623 case " $dflt " in
7624 *" $thisflag "*) ;;
7625 *) dflt="$dflt $thisflag" ;;
7626 esac
7627 ;;
7628 esac
7629 done
7630
7631 case "$dflt" in
7632 ''|' ') dflt='none' ;;
7633 esac
7634
7635 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7636 . ./myread
7637 case "$ans" in
7638 none) lddlflags=' ' ;;
7639 *) lddlflags="$ans" ;;
7640 esac
7641
7642 cat <<EOM
7643
7644Some systems may require passing special flags to $cc to indicate that
7645the resulting executable will use dynamic linking. To use no flags,
7646say "none".
7647
7648EOM
7649 case "$ccdlflags" in
7650 '') case "$osname" in
91fc0aa5
AH
7651 linux|hpux) dflt='-Wl,-E' ;;
7652 next|sunos) dflt='none' ;;
7653 *) dflt='none' ;;
b4eb6b3d
JH
7654 esac ;;
7655 ' ') dflt='none' ;;
7656 *) dflt="$ccdlflags" ;;
7657 esac
7658 rp="Any special flags to pass to $cc to use dynamic linking?"
7659 . ./myread
7660 case "$ans" in
7661 none) ccdlflags=' ' ;;
7662 *) ccdlflags="$ans" ;;
7663 esac
7664 ;;
7665*) usedl="$undef"
7666 ld='ld'
7667 dlsrc='dl_none.xs'
7668 lddlflags=''
7669 ccdlflags=''
7670 ;;
7671esac
7672
7673also=''
7674case "$usedl" in
7675$undef)
7676 # No dynamic loading being used, so don't bother even to prompt.
7677 useshrplib='false'
7678 ;;
7679*) case "$useshrplib" in
7680 '') case "$osname" in
48bcfe03 7681 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7682 dflt=y
7683 also='Building a shared libperl is required for dynamic loading to work on your system.'
7684 ;;
7685 next*)
7686 case "$osvers" in
7687 4*) dflt=y
7688 also='Building a shared libperl is needed for MAB support.'
7689 ;;
7690 *) dflt=n
7691 ;;
7692 esac
7693 ;;
7694 *) dflt=n
7695 ;;
7696 esac
7697 ;;
7698 $define|true|[Yy]*)
7699 dflt=y
7700 ;;
7701 *) dflt=n
7702 ;;
7703 esac
7704 $cat << EOM
7705
7706The perl executable is normally obtained by linking perlmain.c with
7707libperl${_a}, any static extensions (usually just DynaLoader), and
7708any other libraries needed on this system (such as -lm, etc.). Since
7709your system supports dynamic loading, it is probably possible to build
7710a shared libperl.$so. If you will have more than one executable linked
7711to libperl.$so, this will significantly reduce the size of each
7712executable, but it may have a noticeable affect on performance. The
7713default is probably sensible for your system.
7714$also
7715
7716EOM
7717 rp="Build a shared libperl.$so (y/n)"
7718 . ./myread
7719 case "$ans" in
7720 true|$define|[Yy]*)
7721 useshrplib='true' ;;
7722 *) useshrplib='false' ;;
7723 esac
7724 ;;
7725esac
7726
7727case "$useshrplib" in
7728true)
7729 case "$libperl" in
7730 '')
7731 # Figure out a good name for libperl.so. Since it gets stored in
7732 # a version-specific architecture-dependent library, the version
7733 # number isn't really that important, except for making cc/ld happy.
7734 #
7735 # A name such as libperl.so.3.1
7736 majmin="libperl.$so.$patchlevel.$subversion"
7737 # A name such as libperl.so.301
7738 majonly=`echo $patchlevel $subversion |
7739 $awk '{printf "%d%02d", $1, $2}'`
7740 majonly=libperl.$so.$majonly
7741 # I'd prefer to keep the os-specific stuff here to a minimum, and
7742 # rely on figuring it out from the naming of libc.
7743 case "${osname}${osvers}" in
7744 next4*)
7745 dflt=libperl.5.$so
7746 # XXX How handle the --version stuff for MAB?
7747 ;;
7748 linux*) # ld won't link with a bare -lperl otherwise.
7749 dflt=libperl.$so
7750 ;;
b53432e4
GH
7751 cygwin*) # ld links against an importlib
7752 dflt=libperl$lib_ext
b4eb6b3d
JH
7753 ;;
7754 *) # Try to guess based on whether libc has major.minor.
7755 case "$libc" in
7756 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7757 *libc.$so.[0-9]*) dflt=$majonly ;;
7758 *) dflt=libperl.$so ;;
7759 esac
7760 ;;
7761 esac
7762 ;;
7763 *) dflt=$libperl
7764 ;;
7765 esac
7766 cat << EOM
7767
7768I need to select a good name for the shared libperl. If your system uses
7769library names with major and minor numbers, then you might want something
7770like $majmin. Alternatively, if your system uses a single version
7771number for shared libraries, then you might want to use $majonly.
7772Or, your system might be quite happy with a simple libperl.$so.
7773
7774Since the shared libperl will get installed into a version-specific
7775architecture-dependent directory, the version number of the shared perl
7776library probably isn't important, so the default should be o.k.
7777
7778EOM
7779 rp='What name do you want to give to the shared libperl?'
7780 . ./myread
7781 libperl=$ans
7782 echo "Ok, I'll use $libperl"
7783 ;;
7784*)
7785 libperl="libperl${_a}"
7786 ;;
7787esac
7788
7789# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7790case "$shrpdir" in
7791'') ;;
7792*) $cat >&4 <<EOM
7793WARNING: Use of the shrpdir variable for the installation location of
7794the shared $libperl is not supported. It was never documented and
7795will not work in this version. Let me (perlbug@perl.org)
7796know of any problems this may cause.
7797
7798EOM
7799 case "$shrpdir" in
7800 "$archlibexp/CORE")
7801 $cat >&4 <<EOM
7802But your current setting of $shrpdir is
7803the default anyway, so it's harmless.
7804EOM
7805 ;;
7806 *)
7807 $cat >&4 <<EOM
7808Further, your current attempted setting of $shrpdir
7809conflicts with the value of $archlibexp/CORE
7810that installperl will use.
7811EOM
7812 ;;
7813 esac
7814 ;;
7815esac
7816
7817# How will the perl executable find the installed shared $libperl?
7818# Add $xxx to ccdlflags.
7819# If we can't figure out a command-line option, use $shrpenv to
7820# set env LD_RUN_PATH. The main perl makefile uses this.
7821shrpdir=$archlibexp/CORE
7822xxx=''
7823tmp_shrpenv=''
7824if "$useshrplib"; then
7825 case "$osname" in
7826 aix)
7827 # We'll set it in Makefile.SH...
7828 ;;
b5b9f165 7829 solaris)
b4eb6b3d
JH
7830 xxx="-R $shrpdir"
7831 ;;
32b2ae02 7832 freebsd|netbsd|openbsd)
b4eb6b3d
JH
7833 xxx="-Wl,-R$shrpdir"
7834 ;;
6b20d41b 7835 bsdos|linux|irix*|dec_osf)
b4eb6b3d
JH
7836 xxx="-Wl,-rpath,$shrpdir"
7837 ;;
7838 next)
7839 # next doesn't like the default...
7840 ;;
7841 beos)
7842 # beos doesn't like the default, either.
7843 ;;
7844 hpux*)
7845 # hpux doesn't like the default, either.
7846 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7847 ;;
7848 *)
7849 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7850 ;;
7851 esac
7852 case "$xxx" in
7853 '') ;;
7854 *)
7855 # Only add $xxx if it isn't already in ccdlflags.
7856 case " $ccdlflags " in
7857 *" $xxx "*) ;;
7858 *) ccdlflags="$ccdlflags $xxx"
7859 cat <<EOM >&4
7860
7861Adding $xxx to the flags
7862passed to $ld so that the perl executable will find the
7863installed shared $libperl.
7864
7865EOM
7866 ;;
7867 esac
7868 ;;
7869 esac
7870fi
7871# Fix ccdlflags in AIX for building external extensions.
7872# (For building Perl itself bare -bE:perl.exp is needed,
7873# Makefile.SH takes care of this.)
7874case "$osname" in
7875aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7876esac
7877# Respect a hint or command-line value.
7878case "$shrpenv" in
7879'') shrpenv="$tmp_shrpenv" ;;
7880esac
7881case "$ldlibpthname" in
7882'') ldlibpthname=LD_LIBRARY_PATH ;;
7883none) ldlibpthname='' ;;
7884esac
7885
7886: determine where manual pages are on this system
7887echo " "
7888case "$sysman" in
7889'')
4a0a3829
SD
7890 syspath='/usr/share/man/man1 /usr/man/man1'
7891 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7892 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7893 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7894 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7895 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7896 sysman=`./loc . /usr/man/man1 $syspath`
7897 ;;
7898esac
7899if $test -d "$sysman"; then
7900 echo "System manual is in $sysman." >&4
7901else
7902 echo "Could not find manual pages in source form." >&4
7903fi
7904
7905: determine where manual pages go
7906set man1dir man1dir none
7907eval $prefixit
7908$cat <<EOM
7909
7910$spackage has manual pages available in source form.
7911EOM
7912case "$nroff" in
7913nroff)
7914 echo "However, you don't have nroff, so they're probably useless to you."
7915 case "$man1dir" in
7916 '') man1dir="none";;
7917 esac;;
7918esac
7919echo "If you don't want the manual sources installed, answer 'none'."
7920case "$man1dir" in
7921' ') dflt=none
7922 ;;
7923'')
4a0a3829
SD
7924 lookpath="$prefixexp/share/man/man1"
7925 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7926 lookpath="$lookpath $prefixexp/man/p_man/man1"
7927 lookpath="$lookpath $prefixexp/man/u_man/man1"
7928 lookpath="$lookpath $prefixexp/man/man.1"
7929 case "$sysman" in
7930 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7931 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7932 esac
7933 set dflt
7934 eval $prefixup
7935 ;;
7936*) dflt="$man1dir"
7937 ;;
7938esac
7939echo " "
7940fn=dn+~
7941rp="Where do the main $spackage manual pages (source) go?"
7942. ./getfile
7943if $test "X$man1direxp" != "X$ansexp"; then
7944 installman1dir=''
7945fi
7946man1dir="$ans"
7947man1direxp="$ansexp"
7948case "$man1dir" in
7949'') man1dir=' '
7950 installman1dir='';;
7951esac
7952
7953: Change installation prefix, if necessary.
7954if $test X"$prefix" != X"$installprefix"; then
7955 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7956else
7957 installman1dir="$man1direxp"
7958fi
7959
7960: What suffix to use on installed man pages
7961
7962case "$man1dir" in
7963' ')
7964 man1ext='0'
7965 ;;
7966*)
7967 rp="What suffix should be used for the main $spackage man pages?"
7968 case "$man1ext" in
7969 '') case "$man1dir" in
7970 *1) dflt=1 ;;
7971 *1p) dflt=1p ;;
7972 *1pm) dflt=1pm ;;
7973 *l) dflt=l;;
7974 *n) dflt=n;;
7975 *o) dflt=o;;
7976 *p) dflt=p;;
7977 *C) dflt=C;;
7978 *L) dflt=L;;
7979 *L1) dflt=L1;;
7980 *) dflt=1;;
7981 esac
7982 ;;
7983 *) dflt="$man1ext";;
7984 esac
7985 . ./myread
7986 man1ext="$ans"
7987 ;;
7988esac
7989
7990: see if we can have long filenames
7991echo " "
7992first=123456789abcdef
7993$rm -f $first
7994if (echo hi >$first) 2>/dev/null; then
7995 if $test -f 123456789abcde; then
7996 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7997 val="$undef"
7998 else
7999 echo 'You can have filenames longer than 14 characters.'>&4
8000 val="$define"
8001 fi
8002else
8003 $cat <<'EOM'
8004You can't have filenames longer than 14 chars.
8005You can't even think about them!
8006EOM
8007 val="$undef"
8008fi
8009set d_flexfnam
8010eval $setvar
8011$rm -rf 123456789abcde*
8012
8013: determine where library module manual pages go
8014set man3dir man3dir none
8015eval $prefixit
8016$cat <<EOM
8017
8018$spackage has manual pages for many of the library modules.
8019EOM
8020
8021case "$nroff" in
8022nroff)
8023 $cat <<'EOM'
8024However, you don't have nroff, so they're probably useless to you.
8025EOM
8026 case "$man3dir" in
8027 '') man3dir="none";;
8028 esac;;
8029esac
8030
8031case "$d_flexfnam" in
8032undef)
8033 $cat <<'EOM'
8034However, your system can't handle the long file names like File::Basename.3.
8035EOM
8036 case "$man3dir" in
8037 '') man3dir="none";;
8038 esac;;
8039esac
8040
8041echo "If you don't want the manual sources installed, answer 'none'."
8042prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8043case "$man3dir" in
8044'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8045 if $test -d "$privlib/man/man3"; then
8046 cat <<EOM >&4
8047
8048WARNING: Previous versions of perl installed man3 pages into
8049$privlib/man/man3. This version will suggest a
8050new default of $dflt.
8051EOM
8052 tdflt=$dflt
8053 dflt='n'
8054 rp='Do you wish to preserve the old behavior?(y/n)'
8055 . ./myread
8056 case "$ans" in
8057 y*) dflt="$privlib/man/man3" ;;
8058 *) dflt=$tdflt ;;
8059 esac
8060 fi
8061 ;;
8062*) dflt="$man3dir" ;;
8063esac
8064case "$dflt" in
8065' ') dflt=none ;;
8066esac
8067echo " "
8068fn=dn+~
8069rp="Where do the $package library man pages (source) go?"
8070. ./getfile
8071man3dir="$ans"
8072man3direxp="$ansexp"
8073case "$man3dir" in
8074'') man3dir=' '
8075 installman3dir='';;
8076esac
8077
8078: Change installation prefix, if necessary.
8079if $test X"$prefix" != X"$installprefix"; then
8080 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8081else
8082 installman3dir="$man3direxp"
8083fi
8084
8085: What suffix to use on installed man pages
8086case "$man3dir" in
8087' ')
8088 man3ext='0'
8089 ;;
8090*)
8091 rp="What suffix should be used for the $package library man pages?"
8092 case "$man3ext" in
8093 '') case "$man3dir" in
8094 *3) dflt=3 ;;
8095 *3p) dflt=3p ;;
8096 *3pm) dflt=3pm ;;
8097 *l) dflt=l;;
8098 *n) dflt=n;;
8099 *o) dflt=o;;
8100 *p) dflt=p;;
8101 *C) dflt=C;;
8102 *L) dflt=L;;
8103 *L3) dflt=L3;;
8104 *) dflt=3;;
8105 esac
8106 ;;
8107 *) dflt="$man3ext";;
8108 esac
8109 . ./myread
8110 man3ext="$ans"
8111 ;;
8112esac
8113
8114: see if we have to deal with yellow pages, now NIS.
0384a54a 8115if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
8116 if $test -f /usr/etc/nibindd; then
8117 echo " "
8118 echo "I'm fairly confident you're on a NeXT."
8119 echo " "
8120 rp='Do you get the hosts file via NetInfo?'
8121 dflt=y
8122 case "$hostcat" in
8123 nidump*) ;;
8124 '') ;;
8125 *) dflt=n;;
8126 esac
8127 . ./myread
8128 case "$ans" in
8129 y*) hostcat='nidump hosts .';;
8130 *) case "$hostcat" in
8131 nidump*) hostcat='';;
8132 esac
8133 ;;
8134 esac
8135 fi
8136 case "$hostcat" in
8137 nidump*) ;;
8138 *)
8139 case "$hostcat" in
8140 *ypcat*) dflt=y;;
8141 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8142 dflt=y
8143 else
8144 dflt=n
8145 fi;;
8146 *) dflt=n;;
8147 esac
8148 echo " "
8149 rp='Are you getting the hosts file via yellow pages?'
8150 . ./myread
8151 case "$ans" in
8152 y*) hostcat='ypcat hosts';;
8153 *) hostcat='cat /etc/hosts';;
8154 esac
8155 ;;
8156 esac
8157fi
8158case "$hostcat" in
8159'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8160esac
8161case "$groupcat" in
8162'') test -f /etc/group && groupcat='cat /etc/group';;
8163esac
8164case "$passcat" in
8165'') test -f /etc/passwd && passcat='cat /etc/passwd';;
8166esac
8167
8168: now get the host name
8169echo " "
8170echo "Figuring out host name..." >&4
8171case "$myhostname" in
8172'') cont=true
8173 echo 'Maybe "hostname" will work...'
73614538 8174 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
8175 myhostname=$tans
8176 phostname=hostname
8177 cont=''
8178 fi
8179 ;;
8180*) cont='';;
8181esac
8182if $test "$cont"; then
8183 if ./xenix; then
8184 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8185 if tans=`cat /etc/systemid 2>&1` ; then
8186 myhostname=$tans
8187 phostname='cat /etc/systemid'
8188 echo "Whadyaknow. Xenix always was a bit strange..."
8189 cont=''
8190 fi
8191 elif $test -r /etc/systemid; then
8192 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8193 fi
8194fi
8195if $test "$cont"; then
8196 echo 'No, maybe "uuname -l" will work...'
73614538 8197 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8198 myhostname=$tans
8199 phostname='uuname -l'
8200 else
8201 echo 'Strange. Maybe "uname -n" will work...'
73614538 8202 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8203 myhostname=$tans
8204 phostname='uname -n'
8205 else
8206 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8207 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8208 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8209 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8210 else
8211 case "$myhostname" in
8212 '') echo "Does this machine have an identity crisis or something?"
8213 phostname='';;
8214 *)
8215 echo "Well, you said $myhostname before..."
8216 phostname='echo $myhostname';;
8217 esac
8218 fi
8219 fi
8220 fi
8221fi
52a549d0
JH
8222case "$myhostname" in
8223'') myhostname=noname ;;
8224esac
b4eb6b3d
JH
8225: you do not want to know about this
8226set $myhostname
8227myhostname=$1
8228
8229: verify guess
8230if $test "$myhostname" ; then
8231 dflt=y
8232 rp='Your host name appears to be "'$myhostname'".'" Right?"
8233 . ./myread
8234 case "$ans" in
8235 y*) ;;
8236 *) myhostname='';;
8237 esac
8238fi
8239
8240: bad guess or no guess
8241while $test "X$myhostname" = X ; do
8242 dflt=''
8243 rp="Please type the (one word) name of your host:"
8244 . ./myread
8245 myhostname="$ans"
8246done
8247
8248: translate upper to lower if necessary
8249case "$myhostname" in
8250*[A-Z]*)
8251 echo "(Normalizing case in your host name)"
8252 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8253 ;;
8254esac
8255
8256case "$myhostname" in
8257*.*)
8258 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8259 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8260 echo "(Trimming domain name from host name--host name is now $myhostname)"
8261 ;;
8262*) case "$mydomain" in
8263 '')
8264 {
8265 test "X$hostcat" = "Xypcat hosts" &&
8266 ypmatch "$myhostname" hosts 2>/dev/null |\
8267 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8268 $test -s hosts
8269 } || {
8270 test "X$hostcat" != "X" &&
8271 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8272 /[ ]$myhostname[ . ]/p" > hosts
8273 }
8274 tmp_re="[ . ]"
f08cbdd1
PP
8275 if $test -f hosts; then
8276 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8277 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8278 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8279 hosts | $sort | $uniq | \
8280 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8281 case `$echo X$dflt` in
8282 X*\ *) echo "(Several hosts in the database matched hostname)"
8283 dflt=.
8284 ;;
8285 X.) echo "(You do not have fully-qualified names in the hosts database)"
8286 ;;
8287 esac
8288 else
8289 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8290 dflt=.
f08cbdd1 8291 fi
b4eb6b3d
JH
8292 case "$dflt" in
8293 .)
8294 tans=`./loc resolv.conf X /etc /usr/etc`
8295 if $test -f "$tans"; then
8296 echo "(Attempting domain name extraction from $tans)"
8297 dflt=.`$sed -n -e 's/ / /g' \
8298 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8299 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8300 case "$dflt" in
8301 .) dflt=.`$sed -n -e 's/ / /g' \
8302 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8303 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8304 ;;
8305 esac
8306 fi
8307 ;;
8308 esac
8309 case "$dflt" in
8310 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8311 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8312 case "$dflt" in
8313 '') dflt='.';;
8314 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8315 esac
8316 ;;
8317 esac
59c9e5d6
PP
8318 case "$dflt$osname" in
8319 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8320 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8321 ;;
8322 esac
b4eb6b3d
JH
8323 case "$dflt" in
8324 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8325 dflt='.nonet'
b4eb6b3d
JH
8326 ;;
8327 esac
8328 $rm -f hosts
8329 ;;
8330 *) dflt="$mydomain";;
8331 esac;;
8332esac
8333echo " "
8334rp="What is your domain name?"
8335. ./myread
8336tans="$ans"
8337case "$ans" in
8338'') ;;
8339.*) ;;
8340*) tans=".$tans";;
8341esac
8342mydomain="$tans"
8343
8344: translate upper to lower if necessary
8345case "$mydomain" in
8346*[A-Z]*)
8347 echo "(Normalizing case in your domain name)"
8348 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8349 ;;
8350esac
8351
8352: a little sanity check here
8353case "$phostname" in
8354'') ;;
8355*)
8356 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8357 $myhostname$mydomain|$myhostname) ;;
8358 *)
8359 case "$phostname" in
8360 sed*)
8361 echo "(That doesn't agree with your whoami.h file, by the way.)"
8362 ;;
8363 *)
8364 echo "(That doesn't agree with your $phostname command, by the way.)"
8365 ;;
8366 esac
8367 ;;
8368 esac
8369 ;;
8370esac
8371
8372$cat <<EOM
8373
8374I need to get your e-mail address in Internet format if possible, i.e.
8375something like user@host.domain. Please answer accurately since I have
8376no easy means to double check it. The default value provided below
8377is most probably close to reality but may not be valid from outside
8378your organization...
8379
8380EOM
8381cont=x
8382while test "$cont"; do
8383 case "$cf_email" in
8384 '') dflt="$cf_by@$myhostname$mydomain";;
8385 *) dflt="$cf_email";;
8386 esac
8387 rp='What is your e-mail address?'
8388 . ./myread
8389 cf_email="$ans"
8390 case "$cf_email" in
8391 *@*.*) cont='' ;;
8392 *)
8393 rp='Address does not look like an Internet one. Use it anyway?'
8394 case "$fastread" in
8395 yes) dflt=y ;;
8396 *) dflt=n ;;
8397 esac
8398 . ./myread
8399 case "$ans" in
8400 y*) cont='' ;;
8401 *) echo " " ;;
8402 esac
8403 ;;
8404 esac
8405done
8406
8407$cat <<EOM
8408
8409If you or somebody else will be maintaining perl at your site, please
8410fill in the correct e-mail address here so that they may be contacted
8411if necessary. Currently, the "perlbug" program included with perl
8412will send mail to this address in addition to perlbug@perl.org. You may
8413enter "none" for no administrator.
8414
8415EOM
8416case "$perladmin" in
8417'') dflt="$cf_email";;
8418*) dflt="$perladmin";;
8419esac
8420rp='Perl administrator e-mail address'
8421. ./myread
8422perladmin="$ans"
8423
674912d7
RB
8424: determine whether to only install version-specific parts.
8425echo " "
8426$cat <<EOM
8427Do you want to install only the version-specific parts of the perl
8428distribution? Usually you do *not* want to do this.
8429EOM
8430case "$versiononly" in
8431"$define"|[Yy]*|true) dflt='y' ;;
8432*) dflt='n';
8433esac
8434rp="Do you want to install only the version-specific parts of perl?"
8435. ./myread
8436case "$ans" in
8437[yY]*) val="$define";;
8438*) val="$undef" ;;
8439esac
8440set versiononly
8441eval $setvar
8442
ad493445
MB
8443case "$versiononly" in
8444"$define") inc_version_list=''
8445 inc_version_list_init=0
8446 ;;
8447esac
8448
b4eb6b3d
JH
8449: figure out how to guarantee perl startup
8450case "$startperl" in
8451'')
8452 case "$sharpbang" in
8453 *!)
8454 $cat <<EOH
8455
8456I can use the #! construct to start perl on your system. This will
8457make startup of perl scripts faster, but may cause problems if you
8458want to share those scripts and perl is not in a standard place
8459($binexp/perl) on all your platforms. The alternative is to force
8460a shell by starting the script with a single ':' character.
8461
8462EOH
674912d7
RB
8463 case "$versiononly" in
8464 "$define") dflt="$binexp/perl$version";;
8465 *) dflt="$binexp/perl";;
8466 esac
b4eb6b3d
JH
8467 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8468 . ./myread
8469 case "$ans" in
8470 none) startperl=": # use perl";;
8471 *) startperl="#!$ans"
8472 if $test 30 -lt `echo "$ans" | wc -c`; then
8473 $cat >&4 <<EOM
8474
8475WARNING: Some systems limit the #! command to 32 characters.
8476If you experience difficulty running Perl scripts with #!, try
8477installing Perl in a directory with a shorter pathname.
8478
8479EOM
8480 fi ;;
8481 esac
8482 ;;
8483 *) startperl=": # use perl"
8484 ;;
8485 esac
8486 ;;
8487esac
8488echo "I'll use $startperl to start perl scripts."
8489
8490: figure best path for perl in scripts
8491case "$perlpath" in
8492'')
5e20a8ca
RGS
8493 case "$versiononly" in
8494 "$define") perlpath="$binexp/perl$version";;
8495 *) perlpath="$binexp/perl";;
8496 esac
b4eb6b3d
JH
8497 case "$startperl" in
8498 *!*) ;;
8499 *)
8500 $cat <<EOH
8501
8502I will use the "eval 'exec'" idiom to start Perl on your system.
8503I can use the full path of your Perl binary for this purpose, but
8504doing so may cause problems if you want to share those scripts and
8505Perl is not always in a standard place ($binexp/perl).
8506
8507EOH
8508 dflt="$binexp/perl"
8509 rp="What path shall I use in \"eval 'exec'\"?"
8510 . ./myread
8511 perlpath="$ans"
8512 ;;
8513 esac
8514 ;;
8515esac
8516case "$startperl" in
8517*!*) ;;
8518*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8519esac
8520
8521: determine where public executable scripts go
8522set scriptdir scriptdir
8523eval $prefixit
8524case "$scriptdir" in
8525'')
8526 dflt="$bin"
8527 : guess some guesses
8528 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8529 $test -d /usr/share/bin && dflt=/usr/share/bin
8530 $test -d /usr/local/script && dflt=/usr/local/script
8531 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8532 $test -d $prefixexp/script && dflt=$prefixexp/script
8533 set dflt
8534 eval $prefixup
8535 ;;
8536*) dflt="$scriptdir"
8537 ;;
8538esac
8539$cat <<EOM
8540
8541Some installations have a separate directory just for executable scripts so
8542that they can mount it across multiple architectures but keep the scripts in
8543one spot. You might, for example, have a subdirectory of /usr/share for this.
8544Or you might just lump your scripts in with all your other executables.
8545
8546EOM
8547fn=d~
8548rp='Where do you keep publicly executable scripts?'
8549. ./getfile
8550if $test "X$ansexp" != "X$scriptdirexp"; then
8551 installscript=''
8552fi
8553scriptdir="$ans"
8554scriptdirexp="$ansexp"
8555: Change installation prefix, if necessary.
8556if $test X"$prefix" != X"$installprefix"; then
8557 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8558else
8559 installscript="$scriptdirexp"
8560fi
8561
8562: determine where add-on public executables go
8563case "$sitebin" in
8564'') dflt=$siteprefix/bin ;;
8565*) dflt=$sitebin ;;
8566esac
8567fn=d~
8568rp='Pathname where the add-on public executables should be installed?'
8569. ./getfile
8570sitebin="$ans"
8571sitebinexp="$ansexp"
8572: Change installation prefix, if necessary.
8573if $test X"$prefix" != X"$installprefix"; then
8574 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8575else
8576 installsitebin="$sitebinexp"
8577fi
8578
6e1038e0 8579: determine where add-on html pages go
8d2cbf27 8580: There is no standard location, so try to copy the previously-selected
6e1038e0 8581: directory structure for the core html pages.
8d2cbf27
JH
8582case "$sitehtml1dir" in
8583'') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8584*) dflt=$sitehtml1dir ;;
6e1038e0
MB
8585esac
8586case "$dflt" in
8587''|' ') dflt=none ;;
8588esac
8589fn=dn+~
8590rp='Pathname where the site-specific html pages should be installed?'
8591. ./getfile
8d2cbf27
JH
8592sitehtml1dir="$ans"
8593sitehtml1direxp="$ansexp"
6e1038e0
MB
8594: Change installation prefix, if necessary.
8595if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8596 installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8597else
8d2cbf27 8598 installsitehtml1dir="$sitehtml1direxp"
6e1038e0
MB
8599fi
8600
8601: determine where add-on library html pages go
8602: There is no standard location, so try to copy the previously-selected
8603: directory structure for the core html pages.
8d2cbf27
JH
8604case "$sitehtml3dir" in
8605'') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8606*) dflt=$sitehtml3dir ;;
6e1038e0
MB
8607esac
8608case "$dflt" in
8609''|' ') dflt=none ;;
8610esac
8611fn=dn+~
8612rp='Pathname where the site-specific library html pages should be installed?'
8613. ./getfile
8d2cbf27
JH
8614sitehtml3dir="$ans"
8615sitehtml3direxp="$ansexp"
6e1038e0
MB
8616: Change installation prefix, if necessary.
8617if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8618 installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8619else
8d2cbf27 8620 installsitehtml3dir="$sitehtml3direxp"
6e1038e0
MB
8621fi
8622
8623: determine where add-on manual pages go
91e123a8
JH
8624case "$siteman1dir" in
8625'') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8626*) dflt=$siteman1dir ;;
6e1038e0 8627esac
257059b5
JH
8628case "$dflt" in
8629''|' ') dflt=none ;;
8630esac
6e1038e0
MB
8631fn=dn+~
8632rp='Pathname where the site-specific manual pages should be installed?'
8633. ./getfile
91e123a8
JH
8634siteman1dir="$ans"
8635siteman1direxp="$ansexp"
6e1038e0
MB
8636: Change installation prefix, if necessary.
8637if $test X"$prefix" != X"$installprefix"; then
91e123a8 8638 installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8639else
91e123a8 8640 installsiteman1dir="$siteman1direxp"
6e1038e0
MB
8641fi
8642
8643: determine where add-on library man pages go
91e123a8
JH
8644case "$siteman3dir" in
8645'') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8646*) dflt=$siteman3dir ;;
6e1038e0 8647esac
257059b5
JH
8648case "$dflt" in
8649''|' ') dflt=none ;;
8650esac
6e1038e0
MB
8651fn=dn+~
8652rp='Pathname where the site-specific library manual pages should be installed?'
8653. ./getfile
91e123a8
JH
8654siteman3dir="$ans"
8655siteman3direxp="$ansexp"
6e1038e0
MB
8656: Change installation prefix, if necessary.
8657if $test X"$prefix" != X"$installprefix"; then
91e123a8 8658 installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8659else
91e123a8 8660 installsiteman3dir="$siteman3direxp"
6e1038e0
MB
8661fi
8662
8663: determine where add-on public executable scripts go
8664case "$sitescript" in
8665'') dflt=$siteprefix/script
8666 $test -d $dflt || dflt=$sitebin ;;
8667*) dflt="$sitescript" ;;
8668esac
8669fn=d~+
8670rp='Pathname where add-on public executable scripts should be installed?'
8671. ./getfile
8672sitescript="$ans"
8673sitescriptexp="$ansexp"
8674: Change installation prefix, if necessary.
8675if $test X"$prefix" != X"$installprefix"; then
8676 installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8677else
8678 installsitescript="$sitescriptexp"
8679fi
8680
15b61c98
JH
8681case "$usefaststdio" in
8682$define|true|[yY]*|'')
8683 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8684 case "$xversion" in
8685 [68]) dflt='y' ;;
8686 *) dflt='n' ;;
8687 esac
8688 ;;
8689*) dflt='n';;
8690esac
8691cat <<EOM
8692
8693Perl can be built to use 'fast stdio', which means using the stdio
8694library but also directly manipulating the stdio buffers to enable
8695faster I/O. Using stdio is better for backward compatibility (especially
8696for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8697interface has been preferred instead of stdio.
8698
8699If this doesn't make any sense to you, just accept the default '$dflt'.
8700EOM
8701rp='Use the "fast stdio" if available?'
8702. ./myread
8703case "$ans" in
8704y|Y) val="$define" ;;
8705*) val="$undef" ;;
8706esac
8707set usefaststdio
8708eval $setvar
8709
8710
96056487
JH
8711: define an is-a-typedef? function
8712typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8713case "$inclist" in
8714"") inclist="sys/types.h";;
8715esac;
8716eval "varval=\$$var";
8717case "$varval" in
8718"")
8719 $rm -f temp.c;
8720 for inc in $inclist; do
8721 echo "#include <$inc>" >>temp.c;
8722 done;
8723 echo "#ifdef $type" >> temp.c;
8724 echo "printf(\"We have $type\");" >> temp.c;
8725 echo "#endif" >> temp.c;
8726 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8727 if $contains $type temp.E >/dev/null 2>&1; then
8728 eval "$var=\$type";
8729 else
8730 eval "$var=\$def";
8731 fi;
8732 $rm -f temp.?;;
8733*) eval "$var=\$varval";;
8734esac'
8735
8736: define an is-a-typedef? function that prompts if the type is not available.
8737typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8738case "$inclist" in
8739"") inclist="sys/types.h";;
8740esac;
8741eval "varval=\$$var";
8742case "$varval" in
8743"")
8744 $rm -f temp.c;
8745 for inc in $inclist; do
8746 echo "#include <$inc>" >>temp.c;
8747 done;
8748 echo "#ifdef $type" >> temp.c;
8749 echo "printf(\"We have $type\");" >> temp.c;
8750 echo "#endif" >> temp.c;
8751 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8752 echo " " ;
8753 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8754 if $contains $type temp.E >/dev/null 2>&1; then
8755 echo "$type found." >&4;
8756 eval "$var=\$type";
8757 else
8758 echo "$type NOT found." >&4;
8759 dflt="$def";
8760 . ./myread ;
8761 eval "$var=\$ans";
8762 fi;
8763 $rm -f temp.?;;
8764*) eval "$var=\$varval";;
8765esac'
8766
8767: see what type lseek is declared as in the kernel
8768rp="What is the type used for lseek's offset on this system?"
8769set off_t lseektype long stdio.h sys/types.h
8770eval $typedef_ask
8771
8772echo " "
8773echo "Checking to see how big your file offsets are..." >&4
8774$cat >try.c <<EOCP
8775#include <sys/types.h>
8776#include <stdio.h>
8777int main()
8778{
8779 printf("%d\n", (int)sizeof($lseektype));
8780 return(0);
8781}
8782EOCP
8783set try
8784if eval $compile_ok; then
8785 lseeksize=`$run ./try`
8786 echo "Your file offsets are $lseeksize bytes long."
8787else
8788 dflt=$longsize
8789 echo " "
8790 echo "(I can't seem to compile the test program. Guessing...)"
8791 rp="What is the size of your file offsets (in bytes)?"
8792 . ./myread
8793 lseeksize="$ans"
8794fi
8795$rm -f try.c try
8796
8797: see what type file positions are declared as in the library
8798rp="What is the type for file position used by fsetpos()?"
8799set fpos_t fpostype long stdio.h sys/types.h
8800eval $typedef_ask
8801
8802echo " "
8803case "$fpostype" in
8804*_t) zzz="$fpostype" ;;
8805*) zzz="fpos_t" ;;
8806esac
8807echo "Checking the size of $zzz..." >&4
8808cat > try.c <<EOCP
8809#include <sys/types.h>
8810#include <stdio.h>
d1daaddf
JH
8811#$i_stdlib I_STDLIB
8812#ifdef I_STDLIB
8813#include <stdlib.h>
8814#endif
96056487
JH
8815int main() {
8816 printf("%d\n", (int)sizeof($fpostype));
8817 exit(0);
8818}
8819EOCP
8820set try
8821if eval $compile_ok; then
8822 yyy=`$run ./try`
8823 case "$yyy" in
8824 '') fpossize=4
8825 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8826 ;;
8827 *) fpossize=$yyy
8828 echo "Your $zzz is $fpossize bytes long."
8829 ;;
8830 esac
8831else
8832 dflt="$longsize"
8833 echo " " >&4
8834 echo "(I can't compile the test program. Guessing...)" >&4
8835 rp="What is the size of your file positions (in bytes)?"
8836 . ./myread
8837 fpossize="$ans"
8838fi
8839
96056487
JH
8840# Backward compatibility (uselfs is deprecated).
8841case "$uselfs" in
8842"$define"|true|[yY]*)
8843 cat <<EOM >&4
8844
8845*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8846EOM
8847 uselargefiles="$define"
8848 ;;
8849esac
8850
8851case "$lseeksize:$fpossize" in
88528:8) cat <<EOM
8853
8854You can have files larger than 2 gigabytes.
8855EOM
8856 val="$define" ;;
8857*) case "$uselargefiles" in
8858 "$undef"|false|[nN]*) dflt='n' ;;
8859 *) dflt='y' ;;
8860 esac
8861 cat <<EOM
8862
8863Perl can be built to understand large files (files larger than 2 gigabytes)
8864on some systems. To do so, Configure can be run with -Duselargefiles.
8865
8866If this doesn't make any sense to you, just accept the default '$dflt'.
8867EOM
8868 rp='Try to understand large files, if available?'
8869 . ./myread
8870 case "$ans" in
8871 y|Y) val="$define" ;;
8872 *) val="$undef" ;;
8873 esac
8874 ;;
8875esac
8876set uselargefiles
8877eval $setvar
96056487
JH
8878: Look for a hint-file generated 'call-back-unit'. If the
8879: user has specified that a large files perl is to be built,
8880: we may need to set or change some other defaults.
9da7673b
MB
8881if $test -f uselargefiles.cbu; then
8882 echo "Your platform has some specific hints regarding large file builds, using them..."
8883 . ./uselargefiles.cbu
8884fi
8885case "$uselargefiles" in
8886"$define")
96056487 8887 if $test -f uselargefiles.cbu; then
96056487
JH
8888 echo " "
8889 echo "Rechecking to see how big your file offsets are..." >&4
8890 $cat >try.c <<EOCP
8891#include <sys/types.h>
8892#include <stdio.h>
8893int main()
8894{
8895 printf("%d\n", (int)sizeof($lseektype));
8896 return(0);
8897}
8898EOCP
8899 set try
8900 if eval $compile_ok; then
8901 lseeksize=`$run ./try`
8902 $echo "Your file offsets are now $lseeksize bytes long."
8903 else
8904 dflt="$lseeksize"
8905 echo " "
8906 echo "(I can't seem to compile the test program. Guessing...)"
8907 rp="What is the size of your file offsets (in bytes)?"
8908 . ./myread
8909 lseeksize="$ans"
8910 fi
8911 case "$fpostype" in
8912 *_t) zzz="$fpostype" ;;
8913 *) zzz="fpos_t" ;;
8914 esac
8915 $echo $n "Rechecking the size of $zzz...$c" >&4
8916 $cat > try.c <<EOCP
8917#include <sys/types.h>
8918#include <stdio.h>
55954f19
JH
8919#$i_stdlib I_STDLIB
8920#ifdef I_STDLIB
8921#include <stdlib.h>
8922#endif
96056487
JH
8923int main() {
8924 printf("%d\n", (int)sizeof($fpostype));
073b6de5 8925 return(0);
96056487
JH
8926}
8927EOCP
8928 set try
8929 if eval $compile_ok; then
8930 yyy=`$run ./try`
8931 dflt="$lseeksize"
8932 case "$yyy" in
8933 '') echo " "
8934 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8935 ;;
8936 *) fpossize=$yyy
8937 echo " $fpossize bytes." >&4
8938 ;;
8939 esac
8940 else
8941 dflt="$fpossize"
8942 echo " "
8943 echo "(I can't compile the test program. Guessing...)" >&4
8944 rp="What is the size of your file positions (in bytes)?"
8945 . ./myread
8946 fpossize="$ans"
8947 fi
8948 $rm -f try.c try
8949 fi
8950 ;;
8951esac
8952
b4eb6b3d
JH
8953case "$vendorprefix" in
8954'') d_vendorbin="$undef"
8955 vendorbin=''
8956 vendorbinexp=''
8957 ;;
8958*) d_vendorbin="$define"
8959 : determine where vendor-supplied executables go.
8960 case "$vendorbin" in
8961 '') dflt=$vendorprefix/bin ;;
8962 *) dflt="$vendorbin" ;;
8963 esac
8964 fn=d~+
8965 rp='Pathname for the vendor-supplied executables directory?'
8966 . ./getfile
8967 vendorbin="$ans"
8968 vendorbinexp="$ansexp"
8969 ;;
8970esac
8971: Change installation prefix, if necessary.
8972if $test X"$prefix" != X"$installprefix"; then
8973 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8974else
8975 installvendorbin="$vendorbinexp"
8976fi
8977
6e1038e0 8978case "$vendorprefix" in
8d2cbf27
JH
8979'') vendorhtml1dir=''
8980 vendorhtml1direxp=''
6e1038e0
MB
8981 ;;
8982*) : determine where vendor-supplied html pages go.
8983 : There is no standard location, so try to copy the previously-selected
8984 : directory structure for the core html pages.
8985 : XXX Better default suggestions would be welcome.
8d2cbf27 8986 case "$vendorhtml1dir" in
6e1038e0 8987 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 8988 *) dflt=$vendorhtml1dir ;;
6e1038e0
MB
8989 esac
8990 case "$dflt" in
8991 ''|' ') dflt=none ;;
8992 esac
8993 fn=dn+~
8994 rp='Pathname for the vendor-supplied html pages?'
8995 . ./getfile
8d2cbf27
JH
8996 vendorhtml1dir="$ans"
8997 vendorhtml1direxp="$ansexp"
6e1038e0
MB
8998 ;;
8999esac
9000: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 9001$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
6e1038e0
MB
9002: Change installation prefix, if necessary.
9003if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 9004 installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9005else
8d2cbf27 9006 installvendorhtml1dir="$vendorhtml1direxp"
6e1038e0
MB
9007fi
9008
9009case "$vendorprefix" in
8d2cbf27
JH
9010'') vendorhtml3dir=''
9011 vendorhtml3direxp=''
6e1038e0
MB
9012 ;;
9013*) : determine where vendor-supplied module html pages go.
9014 : There is no standard location, so try to copy the previously-selected
9015 : directory structure for the core html pages.
9016 : XXX Better default suggestions would be welcome.
8d2cbf27 9017 case "$vendorhtml3dir" in
6e1038e0 9018 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 9019 *) dflt=$vendorhtml3dir ;;
6e1038e0
MB
9020 esac
9021 case "$dflt" in
9022 ''|' ') dflt=none ;;
9023 esac
9024 fn=dn+~
9025 rp='Pathname for the vendor-supplied html pages?'
9026 . ./getfile
8d2cbf27
JH
9027 vendorhtml3dir="$ans"
9028 vendorhtml3direxp="$ansexp"
6e1038e0
MB
9029 ;;
9030esac
9031: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 9032$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
6e1038e0
MB
9033: Change installation prefix, if necessary.
9034if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 9035 installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9036else
8d2cbf27 9037 installvendorhtml3dir="$vendorhtml3direxp"
6e1038e0
MB
9038fi
9039
9040case "$vendorprefix" in
91e123a8
JH
9041'') vendorman1dir=''
9042 vendorman1direxp=''
6e1038e0
MB
9043 ;;
9044*) : determine where vendor-supplied manual pages go.
91e123a8 9045 case "$vendorman1dir" in
6e1038e0 9046 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9047 *) dflt=$vendorman1dir ;;
6e1038e0
MB
9048 esac
9049 case "$dflt" in
9050 ''|' ') dflt=none ;;
9051 esac
9052 fn=nd~+
9053 rp='Pathname for the vendor-supplied manual section 1 pages?'
9054 . ./getfile
91e123a8
JH
9055 vendorman1dir="$ans"
9056 vendorman1direxp="$ansexp"
6e1038e0
MB
9057 ;;
9058esac
9059: Use ' ' for none so value is preserved next time through Configure
91e123a8 9060$test X"$vendorman1dir" = "X" && vendorman1dir=' '
6e1038e0
MB
9061: Change installation prefix, if necessary.
9062if $test X"$prefix" != X"$installprefix"; then
91e123a8 9063 installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9064else
91e123a8 9065 installvendorman1dir="$vendorman1direxp"
6e1038e0
MB
9066fi
9067
9068case "$vendorprefix" in
91e123a8
JH
9069'') vendorman3dir=''
9070 vendorman3direxp=''
6e1038e0
MB
9071 ;;
9072*) : determine where vendor-supplied module manual pages go.
91e123a8 9073 case "$vendorman3dir" in
6e1038e0 9074 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9075 *) dflt=$vendorman3dir ;;
6e1038e0
MB
9076 esac
9077 case "$dflt" in
9078 ''|' ') dflt=none ;;
9079 esac
9080 fn=nd~+
9081 rp='Pathname for the vendor-supplied manual section 3 pages?'
9082 . ./getfile
91e123a8
JH
9083 vendorman3dir="$ans"
9084 vendorman3direxp="$ansexp"
6e1038e0
MB
9085 ;;
9086esac
9087: Use ' ' for none so value is preserved next time through Configure
91e123a8 9088$test X"$vendorman3dir" = "X" && vendorman3dir=' '
6e1038e0
MB
9089: Change installation prefix, if necessary.
9090if $test X"$prefix" != X"$installprefix"; then
91e123a8 9091 installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9092else
91e123a8 9093 installvendorman3dir="$vendorman3direxp"
6e1038e0
MB
9094fi
9095
9096case "$vendorprefix" in
9097'') d_vendorscript="$undef"
9098 vendorscript=''
9099 vendorscriptexp=''
9100 ;;
9101*) d_vendorscript="$define"
9102 : determine where vendor-supplied scripts go.
9103 case "$vendorscript" in
9104 '') dflt=$vendorprefix/script
9105 $test -d $dflt || dflt=$vendorbin ;;
9106 *) dflt="$vendorscript" ;;
9107 esac
9108 $cat <<EOM
9109
9110The installation process will create a directory for
9111vendor-supplied scripts.
9112
9113EOM
9114 fn=d~+
9115 rp='Pathname for the vendor-supplied scripts directory?'
9116 . ./getfile
9117 vendorscript="$ans"
9118 vendorscriptexp="$ansexp"
9119 ;;
9120esac
9121: Change installation prefix, if necessary.
9122if $test X"$prefix" != X"$installprefix"; then
9123 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9124else
9125 installvendorscript="$vendorscriptexp"
9126fi
9127
b4eb6b3d
JH
9128: see if qgcvt exists
9129set qgcvt d_qgcvt
9130eval $inlibc
9131
89ce900e
JH
9132echo " "
9133
9134if $test X"$d_longdbl" = X"$define"; then
9135
9136echo "Checking how to print long doubles..." >&4
9137
9138if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9139 $cat >try.c <<'EOCP'
9140#include <sys/types.h>
9141#include <stdio.h>
9142int main() {
9143 double d = 123.456;
9144 printf("%.3f\n", d);
9145}
9146EOCP
9147 set try
9148 if eval $compile; then
9149 yyy=`$run ./try`
9150 case "$yyy" in
9151 123.456)
9152 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9153 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9154 echo "We will use %f."
9155 ;;
9156 esac
9157 fi
9158fi
9159
9160if $test X"$sPRIfldbl" = X; then
9161 $cat >try.c <<'EOCP'
9162#include <sys/types.h>
9163#include <stdio.h>
9164int main() {
9165 long double d = 123.456;
9166 printf("%.3Lf\n", d);
9167}
9168EOCP
9169 set try
9170 if eval $compile; then
9171 yyy=`$run ./try`
9172 case "$yyy" in
9173 123.456)
9174 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9175 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9176 echo "We will use %Lf."
9177 ;;
9178 esac
9179 fi
9180fi
9181
9182if $test X"$sPRIfldbl" = X; then
9183 $cat >try.c <<'EOCP'
9184#include <sys/types.h>
9185#include <stdio.h>
9186int main() {
9187 long double d = 123.456;
9188 printf("%.3llf\n", d);
9189}
9190EOCP
9191 set try
9192 if eval $compile; then
9193 yyy=`$run ./try`
9194 case "$yyy" in
9195 123.456)
9196 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9197 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9198 echo "We will use %llf."
9199 ;;
9200 esac
9201 fi
9202fi
9203
9204if $test X"$sPRIfldbl" = X; then
9205 $cat >try.c <<'EOCP'
9206#include <sys/types.h>
9207#include <stdio.h>
9208int main() {
9209 long double d = 123.456;
9210 printf("%.3lf\n", d);
9211}
9212EOCP
9213 set try
9214 if eval $compile; then
9215 yyy=`$run ./try`
9216 case "$yyy" in
9217 123.456)
9218 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9219 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9220 echo "We will use %lf."
9221 ;;
9222 esac
9223 fi
9224fi
9225
9226if $test X"$sPRIfldbl" = X; then
9227 echo "Cannot figure out how to print long doubles." >&4
9228else
9229 sSCNfldbl=$sPRIfldbl # expect consistency
9230fi
9231
9232$rm -f try try.*
9233
9234fi # d_longdbl
9235
9236case "$sPRIfldbl" in
9237'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9238 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9239 d_SCNfldbl="$undef";
9240 ;;
9241*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9242 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9243 d_SCNfldbl="$define";
9244 ;;
9245esac
9246
b4eb6b3d 9247: Check how to convert floats to strings.
a5b10d80
YST
9248
9249if test "X$d_Gconvert" = X; then
9250
b4eb6b3d
JH
9251echo " "
9252echo "Checking for an efficient way to convert floats to strings."
9253echo " " > try.c
9254case "$uselongdouble" in
9255"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9256esac
9257case "$d_longdbl" in
9258"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9259esac
9260case "$d_PRIgldbl" in
9261"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9262esac
9263$cat >>try.c <<EOP
9264#ifdef TRY_gconvert
9265#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9266char *myname = "gconvert";
9267#endif
9268#ifdef TRY_gcvt
9269#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9270char *myname = "gcvt";
9271#endif
9272#ifdef TRY_qgcvt
9273#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9274char *myname = "qgcvt";
9275#define DOUBLETYPE long double
9276#endif
9277#ifdef TRY_sprintf
a5b10d80
YST
9278#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9279#ifdef HAS_PRIgldbl
b4eb6b3d
JH
9280#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9281#else
a5b10d80
YST
9282#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9283#endif
9284#else
b4eb6b3d
JH
9285#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9286#endif
9287char *myname = "sprintf";
9288#endif
9289
9290#ifndef DOUBLETYPE
9291#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9292#define DOUBLETYPE long double
9293#else
9294#define DOUBLETYPE double
9295#endif
9296#endif
9297
9298#include <stdio.h>
9299
9300#define I_STDLIB $i_stdlib
9301#ifdef I_STDLIB
9302#include <stdlib.h>
9303#endif
9304
9305int
9306checkit(expect, got)
9307char *expect;
9308char *got;
9309{
9310 if (strcmp(expect, got)) {
9311 printf("%s oddity: Expected %s, got %s\n",
9312 myname, expect, got);
9313 exit(1);
9314 }
9315}
9316
9317int main()
9318{
9319 char buf[64];
9320 buf[63] = '\0';
9321
9322 /* This must be 1st test on (which?) platform */
9323 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9324 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9325 checkit("0.1", buf);
9326
a5b10d80
YST
9327 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9328 checkit("0.01", buf);
9329
9330 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9331 checkit("0.001", buf);
9332
9333 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9334 checkit("0.0001", buf);
9335
9336 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9337 if (strlen(buf) > 5)
9338 checkit("9e-005", buf); /* for Microsoft ?? */
9339 else
9340 checkit("9e-05", buf);
9341
b4eb6b3d
JH
9342 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9343 checkit("1", buf);
9344
9345 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9346 checkit("1.1", buf);
9347
9348 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9349 checkit("1.01", buf);
9350
9351 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9352 checkit("1.001", buf);
9353
9354 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9355 checkit("1.0001", buf);
9356
9357 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9358 checkit("1.00001", buf);
9359
9360 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9361 checkit("1.000001", buf);
9362
9363 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9364 checkit("0", buf);
9365
9366 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9367 checkit("-1", buf);
9368
9369 /* Some Linux gcvt's give 1.e+5 here. */
9370 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9371 checkit("100000", buf);
9372
9373 /* Some Linux gcvt's give -1.e+5 here. */
9374 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9375 checkit("-100000", buf);
9376
9377 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9378 checkit("123.456", buf);
9379
ab6ca9f4 9380 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
94b339ad
YST
9381 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9382 /* 34 should be enough to scare even long double
9383 * places into using the e notation. */
ab6ca9f4 9384 if (strlen(buf) > 5)
94b339ad 9385 checkit("1e+034", buf); /* for Microsoft */
ab6ca9f4 9386 else
94b339ad 9387 checkit("1e+34", buf);
8e2a5ede 9388
d1eb8299
YST
9389 /* For Perl, if you add additional tests here, also add them to
9390 * t/base/num.t for benefit of platforms not using Configure or
9391 * overriding d_Gconvert */
9392
b4eb6b3d
JH
9393 exit(0);
9394}
9395EOP
ab6ca9f4 9396: first add preferred functions to our list
a5b10d80 9397xxx_list=""
ab6ca9f4 9398for xxx_convert in $gconvert_preference; do
a5b10d80
YST
9399 case $xxx_convert in
9400 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
ab6ca9f4 9401 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
a5b10d80
YST
9402 esac
9403done
9404: then add any others
9405for xxx_convert in gconvert gcvt sprintf; do
9406 case "$xxx_list" in
9407 *$xxx_convert*) ;;
9408 *) xxx_list="$xxx_list $xxx_convert" ;;
9409 esac
9410done
9411
9412case "$d_longdbl$uselongdouble" in
9413"$define$define")
9414 : again, add prefered functions to our list first
9415 xxx_ld_list=""
ab6ca9f4 9416 for xxx_convert in $gconvert_ld_preference; do
a5b10d80
YST
9417 case $xxx_convert in
9418 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
ab6ca9f4 9419 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
a5b10d80
YST
9420 esac
9421 done
9422 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9423 for xxx_convert in qgcvt sprintf $xxx_list; do
9424 case "$xxx_ld_list" in
9425 $xxx_convert*|*" $xxx_convert"*) ;;
9426 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9427 esac
9428 done
9429 : if sprintf cannot do long doubles, move it to the end
9430 if test "$d_PRIgldbl" != "$define"; then
9431 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9432 fi
9433 : if no qgcvt, remove it
9434 if test "$d_qgcvt" != "$define"; then
9435 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9436 fi
9437 : use the ld_list
9438 xxx_list="$xxx_ld_list"
b4eb6b3d
JH
9439 ;;
9440esac
9441
9442for xxx_convert in $xxx_list; do
9443 echo "Trying $xxx_convert..."
9444 $rm -f try try$_o
9445 set try -DTRY_$xxx_convert
9446 if eval $compile; then
9447 echo "$xxx_convert() found." >&4
5440bc8e 9448 if $run ./try; then
b4eb6b3d
JH
9449 echo "I'll use $xxx_convert to convert floats into a string." >&4
9450 break;
9451 else
9452 echo "...But $xxx_convert didn't work as I expected."
a5b10d80 9453 xxx_convert=''
b4eb6b3d
JH
9454 fi
9455 else
9456 echo "$xxx_convert NOT found." >&4
9457 fi
9458done
ab6ca9f4 9459
a5b10d80
YST
9460if test X$xxx_convert = X; then
9461 echo "*** WHOA THERE!!! ***" >&4
9462 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9463 xxx_convert=sprintf
9464fi
9465
b4eb6b3d
JH
9466case "$xxx_convert" in
9467gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9468gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9469qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9470*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9471 "$define$define$define")
9472 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
a5b10d80
YST
9473 "$define$define$undef")
9474 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
b4eb6b3d
JH
9475 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9476 esac
9477 ;;
9478esac
9479
a5b10d80
YST
9480fi
9481
74cac757
JH
9482: see if _fwalk exists
9483set fwalk d__fwalk
9484eval $inlibc
9485
b4eb6b3d
JH
9486: Initialize h_fcntl
9487h_fcntl=false
9488
9489: Initialize h_sysfile
9490h_sysfile=false
9491
9492: access call always available on UNIX
9493set access d_access
9494eval $inlibc
9495
9496: locate the flags for 'access()'
9497case "$d_access" in
9498"$define")
9499 echo " "
55954f19 9500 $cat >access.c <<EOCP
b4eb6b3d
JH
9501#include <sys/types.h>
9502#ifdef I_FCNTL
9503#include <fcntl.h>
9504#endif
9505#ifdef I_SYS_FILE
9506#include <sys/file.h>
9507#endif
9508#ifdef I_UNISTD
9509#include <unistd.h>
9510#endif
55954f19
JH
9511#$i_stdlib I_STDLIB
9512#ifdef I_STDLIB
9513#include <stdlib.h>
9514#endif
b4eb6b3d
JH
9515int main() {
9516 exit(R_OK);
9517}
9518EOCP
9519 : check sys/file.h first, no particular reason here
9520 if $test `./findhdr sys/file.h` && \
7a282f6d 9521 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9522 h_sysfile=true;
9523 echo "<sys/file.h> defines the *_OK access constants." >&4
9524 elif $test `./findhdr fcntl.h` && \
7a282f6d 9525 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9526 h_fcntl=true;
9527 echo "<fcntl.h> defines the *_OK access constants." >&4
9528 elif $test `./findhdr unistd.h` && \
7a282f6d 9529 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9530 echo "<unistd.h> defines the *_OK access constants." >&4
9531 else
9532 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9533 fi
9534 ;;
9535esac
9536$rm -f access*
9537
9538: see if accessx exists
9539set accessx d_accessx
9540eval $inlibc
9541
89ce900e
JH
9542: see if aintl exists
9543set aintl d_aintl
9544eval $inlibc
9545
b4eb6b3d
JH
9546: see if alarm exists
9547set alarm d_alarm
9548eval $inlibc
9549
a9dade78
JH
9550: see if POSIX threads are available
9551set pthread.h i_pthread
9552eval $inhdr
9553
10bc17b6
JH
9554: define a fucntion to check prototypes
9555$cat > protochk <<EOSH
9556$startsh
9557cc="$cc"
9558optimize="$optimize"
9559ccflags="$ccflags"
9560prototype="$prototype"
9561define="$define"
9562rm=$rm
a9dade78
JH
9563usethreads=$usethreads
9564i_pthread=$i_pthread
9565pthread_h_first=$pthread_h_first
10bc17b6
JH
9566EOSH
9567
9568$cat >> protochk <<'EOSH'
9569
9570$rm -f try.c
9571foo="$1"
9572shift
9573while test $# -ge 2; do
9574 case "$1" in
9575 $define) echo "#include <$2>" >> try.c ;;
9576 literal) echo "$2" >> try.c ;;
9577 esac
cce6a207
MB
9578 # Extra magic for the benefit of systems that need pthread.h
9579 # to be included early to correctly detect threadsafe functions.
9580 # Such functions must guarantee themselves, though, that the usethreads
9581 # and i_pthread have been defined, before calling protochk.
9582 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9583 echo "#include <pthread.h>" >> try.c
9584 pthread_h_done=yes
9585 fi
10bc17b6
JH
9586 shift 2
9587done
9588test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9589cat >> try.c <<'EOCP'
9590#ifdef CAN_PROTOTYPE
9591#define _(args) args
9592#else
9593#define _(args) ()
9594#endif
9595EOCP
9596echo "$foo" >> try.c
9597echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9598$cc $optimize $ccflags -c try.c > /dev/null 2>&1
9599status=$?
9600$rm -f try.[co]
9601exit $status
9602EOSH
9603chmod +x protochk
9604$eunicefix protochk
9605
89ce900e
JH
9606hasproto='varname=$1; func=$2; shift; shift;
9607while $test $# -ge 2; do
9608 case "$1" in
9609 $define) echo "#include <$2>";;
9610 esac ;
9611 shift 2;
9612done > try.c;
9613$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9614if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9615 echo "$func() prototype found.";
9616 val="$define";
9617else
9618 echo "$func() prototype NOT found.";
9619 val="$undef";
9620fi;
9621set $varname;
9622eval $setvar;
9623$rm -f try.c tryout.c'
9624
10bc17b6
JH
9625: see if sys/types.h has to be included
9626set sys/types.h i_systypes
9627eval $inhdr
9628
9629: see if sys/select.h has to be included
9630set sys/select.h i_sysselct
9631eval $inhdr
9632
9633hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9634while $test $# -ge 2; do
9635 case "$1" in
9636 $define) echo "#include <$2>";;
9637 esac ;
9638 shift 2;
9639done > try.c;
9640echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9641set try;
9642if eval $compile; then
9643 val="$define";
9644else
9645 val="$undef";
9646fi;
9647set $varname;
9648eval $setvar;
9649$rm -f try.c try.o'
9650
9651: see if we should include time.h, sys/time.h, or both
9652echo " "
9653if test "X$timeincl" = X; then
9654 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9655 $echo $n "I'm now running the test program...$c"
55954f19 9656 $cat >try.c <<EOCP
10bc17b6
JH
9657#include <sys/types.h>
9658#ifdef I_TIME
9659#include <time.h>
9660#endif
9661#ifdef I_SYSTIME
9662#ifdef SYSTIMEKERNEL
9663#define KERNEL
9664#endif
9665#include <sys/time.h>
9666#endif
9667#ifdef I_SYSSELECT
9668#include <sys/select.h>
9669#endif
55954f19
JH
9670#$i_stdlib I_STDLIB
9671#ifdef I_STDLIB
9672#include <stdlib.h>
9673#endif
10bc17b6
JH
9674int main()
9675{
9676 struct tm foo;
9677#ifdef S_TIMEVAL
9678 struct timeval bar;
9679#endif
9680#ifdef S_TIMEZONE
9681 struct timezone tzp;
9682#endif
9683 if (foo.tm_sec == foo.tm_sec)
9684 exit(0);
9685#ifdef S_TIMEVAL
9686 if (bar.tv_sec == bar.tv_sec)
9687 exit(0);
9688#endif
9689 exit(1);
9690}
9691EOCP
9692 flags=''
9693 for s_timezone in '-DS_TIMEZONE' ''; do
9694 sysselect=''
9695 for s_timeval in '-DS_TIMEVAL' ''; do
9696 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9697 for i_time in '' '-DI_TIME'; do
9698 for i_systime in '-DI_SYSTIME' ''; do
9699 case "$flags" in
9700 '') $echo $n ".$c"
9701 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9702 if eval $compile; then
9703 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9704 shift
9705 flags="$*"
9706 echo " "
9707 $echo $n "Succeeded with $flags$c"
9708 fi
9709 ;;
9710 esac
9711 done
9712 done
9713 done
9714 done
9715 done
9716 timeincl=''
9717 echo " "
9718 case "$flags" in
9719 *SYSTIMEKERNEL*) i_systimek="$define"
9720 timeincl=`./findhdr sys/time.h`
9721 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9722 *) i_systimek="$undef";;
9723 esac
9724 case "$flags" in
9725 *I_TIME*) i_time="$define"
9726 timeincl=`./findhdr time.h`" $timeincl"
9727 echo "We'll include <time.h>." >&4;;
9728 *) i_time="$undef";;
9729 esac
9730 case "$flags" in
9731 *I_SYSTIME*) i_systime="$define"
9732 timeincl=`./findhdr sys/time.h`" $timeincl"
9733 echo "We'll include <sys/time.h>." >&4;;
9734 *) i_systime="$undef";;
9735 esac
9736 $rm -f try.c try
9737fi
9738: see if struct tm knows about tm_zone
9739case "$i_systime$i_time" in
9740*$define*)
9741 echo " "
9742 echo "Checking to see if your struct tm has tm_zone field..." >&4
9743 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9744 eval $hasfield
9745 ;;
9746*) val="$undef"
9747 set d_tm_tm_zone
9748 eval $setvar
9749 ;;
9750esac
9751case "$d_tm_tm_zone" in
9752"$define") echo "Yes, it does." ;;
9753*) echo "No, it doesn't." ;;
9754esac
9755: see if struct tm knows about tm_gmtoff
9756case "$i_systime$i_time" in
9757*$define*)
9758 echo " "
9759 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9760 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9761 eval $hasfield
9762 ;;
9763*) val="$undef"
9764 set d_tm_tm_gmtoff
9765 eval $setvar
9766 ;;
9767esac
9768case "$d_tm_tm_gmtoff" in
9769"$define") echo "Yes, it does." ;;
9770*) echo "No, it doesn't." ;;
9771esac
9772
9773: see if asctime_r exists
9774set asctime_r d_asctime_r
9775eval $inlibc
9776case "$d_asctime_r" in
9777"$define")
d63eadf0 9778 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
9779 case "$d_asctime_r_proto:$usethreads" in
9780 ":define") d_asctime_r_proto=define
a48ec845
JH
9781 set d_asctime_r_proto asctime_r $hdrs
9782 eval $hasproto ;;
9783 *) ;;
9784 esac
9785 case "$d_asctime_r_proto" in
9786 define)
10bc17b6
JH
9787 case "$asctime_r_proto" in
9788 ''|0) try='char* asctime_r(const struct tm*, char*);'
9789 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9790 esac
9791 case "$asctime_r_proto" in
9792 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9793 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9794 esac
9795 case "$asctime_r_proto" in
9796 ''|0) try='int asctime_r(const struct tm*, char*);'
9797 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9798 esac
9799 case "$asctime_r_proto" in
9800 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9801 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9802 esac
9803 case "$asctime_r_proto" in
90e831dc 9804 ''|0) d_asctime_r=undef
10bc17b6 9805 asctime_r_proto=0
a48ec845 9806 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
9807 * ) case "$asctime_r_proto" in
9808 REENTRANT_PROTO*) ;;
9809 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9810 esac
9811 echo "Prototype: $try" ;;
9812 esac
9813 ;;
c18e646a
JH
9814 *) case "$usethreads" in
9815 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9816 esac
90e831dc
SB
9817 d_asctime_r=undef
9818 asctime_r_proto=0
c18e646a 9819 ;;
a48ec845
JH
9820 esac
9821 ;;
10bc17b6
JH
9822*) asctime_r_proto=0
9823 ;;
9824esac
9825
b4eb6b3d
JH
9826: see if atolf exists
9827set atolf d_atolf
9828eval $inlibc
9829
9830: see if atoll exists
9831set atoll d_atoll
9832eval $inlibc
9833
9834: Look for GNU-cc style attribute checking
9835echo " "
9836echo "Checking whether your compiler can handle __attribute__ ..." >&4
9837$cat >attrib.c <<'EOCP'
9838#include <stdio.h>
04fa0c70 9839void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
b4eb6b3d
JH
9840EOCP
9841if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9842 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9843 echo "Your C compiler doesn't fully support __attribute__."
9844 val="$undef"
9845 else
9846 echo "Your C compiler supports __attribute__."
9847 val="$define"
9848 fi
9849else
9850 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9851 val="$undef"
9852fi
9853set d_attribut
9854eval $setvar
9855$rm -f attrib*
9856
9857: see if bcmp exists
9858set bcmp d_bcmp
9859eval $inlibc
9860
9861: see if bcopy exists
9862set bcopy d_bcopy
9863eval $inlibc
9864
9865: see if this is a unistd.h system
9866set unistd.h i_unistd
9867eval $inhdr
9868
9869: see if getpgrp exists
9870set getpgrp d_getpgrp
9871eval $inlibc
9872
9873case "$d_getpgrp" in
9874"$define")
9875 echo " "
9876 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 9877 $cat >try.c <<EOP
b4eb6b3d
JH
9878#$i_unistd I_UNISTD
9879#include <sys/types.h>
9880#ifdef I_UNISTD
9881# include <unistd.h>
9882#endif
55954f19
JH
9883#$i_stdlib I_STDLIB
9884#ifdef I_STDLIB
9885#include <stdlib.h>
9886#endif
b4eb6b3d
JH
9887int main()
9888{
9889 if (getuid() == 0) {
9890 printf("(I see you are running Configure as super-user...)\n");
9891 setuid(1);
9892 }
9893#ifdef TRY_BSD_PGRP
9894 if (getpgrp(1) == 0)
9895 exit(0);
9896#else
9897 if (getpgrp() > 0)
9898 exit(0);
9899#endif
9900 exit(1);
9901}
9902EOP
5440bc8e 9903 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9904 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9905 val="$define"
5440bc8e 9906 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9907 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9908 val="$undef"
9909 else
9910 echo "I can't seem to compile and run the test program."
9911 if ./usg; then
9912 xxx="a USG one, i.e. you use getpgrp()."
9913 else
9914 # SVR4 systems can appear rather BSD-ish.
9915 case "$i_unistd" in
9916 $undef)
9917 xxx="a BSD one, i.e. you use getpgrp(pid)."
9918 val="$define"
9919 ;;
9920 $define)
9921 xxx="probably a USG one, i.e. you use getpgrp()."
9922 val="$undef"
9923 ;;
9924 esac
9925 fi
9926 echo "Assuming your getpgrp is $xxx" >&4
9927 fi
9928 ;;
9929*) val="$undef";;
9930esac
9931set d_bsdgetpgrp
9932eval $setvar
5440bc8e 9933$rm -f try try.*
b4eb6b3d
JH
9934
9935: see if setpgrp exists
9936set setpgrp d_setpgrp
9937eval $inlibc
9938
9939case "$d_setpgrp" in
9940"$define")
9941 echo " "
9942 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 9943 $cat >try.c <<EOP
b4eb6b3d
JH
9944#$i_unistd I_UNISTD
9945#include <sys/types.h>
9946#ifdef I_UNISTD
9947# include <unistd.h>
9948#endif
55954f19
JH
9949#$i_stdlib I_STDLIB
9950#ifdef I_STDLIB
9951#include <stdlib.h>
9952#endif
b4eb6b3d
JH
9953int main()
9954{
9955 if (getuid() == 0) {
9956 printf("(I see you are running Configure as super-user...)\n");
9957 setuid(1);
9958 }
9959#ifdef TRY_BSD_PGRP
9960 if (-1 == setpgrp(1, 1))
9961 exit(0);
9962#else
9963 if (setpgrp() != -1)
9964 exit(0);
9965#endif
9966 exit(1);
9967}
9968EOP
5440bc8e 9969 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9970 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9971 val="$define"
5440bc8e 9972 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9973 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9974 val="$undef"
9975 else
9976 echo "(I can't seem to compile and run the test program.)"
9977 if ./usg; then
9978 xxx="a USG one, i.e. you use setpgrp()."
9979 else
9980 # SVR4 systems can appear rather BSD-ish.
9981 case "$i_unistd" in
9982 $undef)
9983 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9984 val="$define"
9985 ;;
9986 $define)
9987 xxx="probably a USG one, i.e. you use setpgrp()."
9988 val="$undef"
9989 ;;
9990 esac
9991 fi
9992 echo "Assuming your setpgrp is $xxx" >&4
9993 fi
9994 ;;
9995*) val="$undef";;
9996esac
9997set d_bsdsetpgrp
9998eval $setvar
5440bc8e 9999$rm -f try try.*
b4eb6b3d
JH
10000: see if bzero exists
10001set bzero d_bzero
10002eval $inlibc
10003
10004: see if signal is declared as pointer to function returning int or void
10005echo " "
10006xxx=`./findhdr signal.h`
10007$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10008if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10009 echo "You have int (*signal())() instead of void." >&4
10010 val="$undef"
10011elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10012 echo "You have void (*signal())()." >&4
10013 val="$define"
10014elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10015 echo "You have int (*signal())() instead of void." >&4
10016 val="$undef"
10017elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10018 echo "You have void (*signal())()." >&4
10019 val="$define"
10020else
10021 case "$d_voidsig" in
10022 '')
10023 echo "I can't determine whether signal handler returns void or int..." >&4
10024 dflt=void
10025 rp="What type does your signal handler return?"
10026 . ./myread
10027 case "$ans" in
10028 v*) val="$define";;
10029 *) val="$undef";;
10030 esac;;
10031 "$define")
10032 echo "As you already told me, signal handler returns void." >&4
10033 val="$define"
10034 ;;
10035 *) echo "As you already told me, signal handler returns int." >&4
10036 val="$undef"
10037 ;;
10038 esac
10039fi
10040set d_voidsig
10041eval $setvar
10042case "$d_voidsig" in
10043"$define") signal_t="void";;
10044*) signal_t="int";;
10045esac
10046$rm -f $$.tmp
10047
10048: check for ability to cast large floats to 32-bit ints.
10049echo " "
10050echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10051if $test "$intsize" -ge 4; then
10052 xxx=int
10053else
10054 xxx=long
10055fi
10056$cat >try.c <<EOCP
10057#include <stdio.h>
d1daaddf
JH
10058#$i_stdlib I_STDLIB
10059#ifdef I_STDLIB
10060#include <stdlib.h>
10061#endif
b4eb6b3d
JH
10062#include <sys/types.h>
10063#include <signal.h>
10064$signal_t blech(s) int s; { exit(3); }
10065int main()
10066{
10067 $xxx i32;
10068 double f, g;
10069 int result = 0;
10070 char str[16];
10071 signal(SIGFPE, blech);
10072
10073 /* Don't let compiler optimize the test away. Store the number
10074 in a writable string for gcc to pass to sscanf under HP/UX.
10075 */
10076 sprintf(str, "2147483647");
10077 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10078 g = 10 * f;
10079 i32 = ($xxx) g;
10080
10081 /* x86 processors will probably give 0x8000 0000, which is a
10082 sign change. We don't want that. We want to mimic SPARC
10083 behavior here, which is to preserve the sign and give
10084 back 0x7fff ffff.
10085 */
10086 if (i32 != ($xxx) f)
10087 result |= 1;
10088 exit(result);
10089}
10090EOCP
10091set try
10092if eval $compile_ok; then
5440bc8e 10093 $run ./try
b4eb6b3d
JH
10094 yyy=$?
10095else
10096 echo "(I can't seem to compile the test program--assuming it can't)"
10097 yyy=1
10098fi
10099case "$yyy" in
101000) val="$define"
10101 echo "Yup, it can."
10102 ;;
10103*) val="$undef"
10104 echo "Nope, it can't."
10105 ;;
10106esac
10107set d_casti32
10108eval $setvar
10109$rm -f try try.*
10110
10111: check for ability to cast negative floats to unsigned
10112echo " "
10113echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10114$cat >try.c <<EOCP
10115#include <stdio.h>
d1daaddf
JH
10116#$i_stdlib I_STDLIB
10117#ifdef I_STDLIB
10118#include <stdlib.h>
10119#endif
b4eb6b3d
JH
10120#include <sys/types.h>
10121#include <signal.h>
10122$signal_t blech(s) int s; { exit(7); }
10123$signal_t blech_in_list(s) int s; { exit(4); }
10124unsigned long dummy_long(p) unsigned long p; { return p; }
10125unsigned int dummy_int(p) unsigned int p; { return p; }
10126unsigned short dummy_short(p) unsigned short p; { return p; }
10127int main()
10128{
10129 double f;
10130 unsigned long along;
10131 unsigned int aint;
10132 unsigned short ashort;
10133 int result = 0;
10134 char str[16];
10135
10136 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10137 a direct f = -123. assignment. gcc-2.8.0 reportedly
10138 optimized the whole file away
10139 */
10140 /* Store the number in a writable string for gcc to pass to
10141 sscanf under HP/UX.
10142 */
10143 sprintf(str, "-123");
10144 sscanf(str, "%lf", &f); /* f = -123.; */
10145
10146 signal(SIGFPE, blech);
10147 along = (unsigned long)f;
10148 aint = (unsigned int)f;
10149 ashort = (unsigned short)f;
10150 if (along != (unsigned long)-123)
10151 result |= 1;
10152 if (aint != (unsigned int)-123)
10153 result |= 1;
10154 if (ashort != (unsigned short)-123)
10155 result |= 1;
10156 sprintf(str, "1073741824.");
10157 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10158 f = f + f;
10159 along = 0;
10160 along = (unsigned long)f;
10161 if (along != 0x80000000)
10162 result |= 2;
10163 f -= 1.;
10164 along = 0;
10165 along = (unsigned long)f;
10166 if (along != 0x7fffffff)
10167 result |= 1;
10168 f += 2.;
10169 along = 0;
10170 along = (unsigned long)f;
10171 if (along != 0x80000001)
10172 result |= 2;
10173 if (result)
10174 exit(result);
10175 signal(SIGFPE, blech_in_list);
10176 sprintf(str, "123.");
10177 sscanf(str, "%lf", &f); /* f = 123.; */
10178 along = dummy_long((unsigned long)f);
10179 aint = dummy_int((unsigned int)f);
10180 ashort = dummy_short((unsigned short)f);
10181 if (along != (unsigned long)123)
10182 result |= 4;
10183 if (aint != (unsigned int)123)
10184 result |= 4;
10185 if (ashort != (unsigned short)123)
10186 result |= 4;
10187 exit(result);
10188
10189}
10190EOCP
10191set try
10192if eval $compile_ok; then
5440bc8e 10193 $run ./try
b4eb6b3d
JH
10194 castflags=$?
10195else
10196 echo "(I can't seem to compile the test program--assuming it can't)"
10197 castflags=7
10198fi
10199case "$castflags" in
102000) val="$define"
10201 echo "Yup, it can."
10202 ;;
10203*) val="$undef"
10204 echo "Nope, it can't."
10205 ;;
10206esac
10207set d_castneg
10208eval $setvar
10209$rm -f try.*
10210
10211: see if vprintf exists
10212echo " "
10213if set vprintf val -f d_vprintf; eval $csym; $val; then
10214 echo 'vprintf() found.' >&4
10215 val="$define"
55954f19 10216 $cat >try.c <<EOF
b4eb6b3d 10217#include <varargs.h>
55954f19
JH
10218#$i_stdlib I_STDLIB
10219#ifdef I_STDLIB
10220#include <stdlib.h>
10221#endif
b4eb6b3d
JH
10222
10223int main() { xxx("foo"); }
10224
10225xxx(va_alist)
10226va_dcl
10227{
10228 va_list args;
10229 char buf[10];
10230
10231 va_start(args);
10232 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10233}
10234EOF
5440bc8e
JH
10235 set try
10236 if eval $compile && $run ./try; then
b4eb6b3d
JH
10237 echo "Your vsprintf() returns (int)." >&4
10238 val2="$undef"
10239 else
10240 echo "Your vsprintf() returns (char*)." >&4
10241 val2="$define"
10242 fi
10243else
10244 echo 'vprintf() NOT found.' >&4
10245 val="$undef"
10246 val2="$undef"
10247fi
5440bc8e 10248$rm -f try try.*
b4eb6b3d
JH
10249set d_vprintf
10250eval $setvar
10251val=$val2
10252set d_charvspr
10253eval $setvar
10254
10255: see if chown exists
10256set chown d_chown
10257eval $inlibc
10258
10259: see if chroot exists
10260set chroot d_chroot
10261eval $inlibc
10262
10263: see if chsize exists
10264set chsize d_chsize
10265eval $inlibc
10266
758a5d79
JH
10267: see if class exists
10268set class d_class
10269eval $inlibc
10270
4e0554ec
JH
10271hasstruct='varname=$1; struct=$2; shift; shift;
10272while $test $# -ge 2; do
10273 case "$1" in
10274 $define) echo "#include <$2>";;
10275 esac ;
10276 shift 2;
10277done > try.c;
10278echo "int main () { struct $struct foo; }" >> try.c;
10279set try;
10280if eval $compile; then
10281 val="$define";
10282else
10283 val="$undef";
10284fi;
10285set $varname;
10286eval $setvar;
10287$rm -f try.c try.o'
10288
4e0554ec
JH
10289socketlib=''
10290sockethdr=''
10291: see whether socket exists
10292echo " "
10293$echo $n "Hmm... $c" >&4
10294if set socket val -f d_socket; eval $csym; $val; then
10295 echo "Looks like you have Berkeley networking support." >&4
10296 d_socket="$define"
10297 if set setsockopt val -f; eval $csym; $val; then
10298 d_oldsock="$undef"
10299 else
10300 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10301 d_oldsock="$define"
10302 fi
10303else
10304 if $contains socklib libc.list >/dev/null 2>&1; then
10305 echo "Looks like you have Berkeley networking support." >&4
10306 d_socket="$define"
10307 : we will have to assume that it supports the 4.2 BSD interface
10308 d_oldsock="$undef"
10309 else
10310 echo "You don't have Berkeley networking in libc$_a..." >&4
10311 if test "X$d_socket" = "X$define"; then
10312 echo "...but you seem to believe that you have sockets." >&4
10313 else
10314 for net in net socket
10315 do
10316 if test -f /usr/lib/lib$net$_a; then
10317 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10318 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10319 if $contains socket libc.list >/dev/null 2>&1; then
10320 d_socket="$define"
10321 socketlib="-l$net"
10322 case "$net" in
10323 net)
10324 echo "...but the Wollongong group seems to have hacked it in." >&4
10325 sockethdr="-I/usr/netinclude"
10326 ;;
10327 esac
3c728e00 10328 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
10329 if $contains setsockopt libc.list >/dev/null 2>&1; then
10330 d_oldsock="$undef"
10331 else
10332 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10333 d_oldsock="$define"
10334 fi
10335 break
10336 fi
10337 fi
10338 done
10339 if test "X$d_socket" != "X$define"; then
10340 echo "or anywhere else I see." >&4
10341 d_socket="$undef"
10342 d_oldsock="$undef"
10343 fi
10344 fi
10345 fi
10346fi
10347
10348: see if socketpair exists
10349set socketpair d_sockpair
10350eval $inlibc
10351
10352
10353echo " "
3c728e00 10354echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
10355for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10356 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10357 $cat >try.c <<EOF
10358#include <sys/types.h>
10359#include <sys/socket.h>
10360int main() {
10361 int i = $ENUM;
10362}
10363EOF
10364 val="$undef"
10365 set try; if eval $compile; then
10366 val="$define"
10367 fi
10368 set d_${enum}; eval $setvar
10369 $rm -f try.c try
10370done
10371
10372: see if this is a sys/uio.h system
10373set sys/uio.h i_sysuio
10374eval $inhdr
10375
10376
10377echo " "
10378echo "Checking to see if your system supports struct cmsghdr..." >&4
10379set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10380eval $hasstruct
10381case "$d_cmsghdr_s" in
10382"$define") echo "Yes, it does." ;;
10383*) echo "No, it doesn't." ;;
10384esac
10385
10386
b4eb6b3d
JH
10387: check for const keyword
10388echo " "
10389echo 'Checking to see if your C compiler knows about "const"...' >&4
10390$cat >const.c <<'EOCP'
10391typedef struct spug { int drokk; } spug;
76f47787 10392int main()
b4eb6b3d
JH
10393{
10394 const char *foo;
10395 const spug y;
10396}
10397EOCP
10398if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10399 val="$define"
10400 echo "Yup, it does."
10401else
10402 val="$undef"
10403 echo "Nope, it doesn't."
10404fi
10405set d_const
10406eval $setvar
10407
89ce900e
JH
10408: see if copysignl exists
10409set copysignl d_copysignl
10410eval $inlibc
10411
b4eb6b3d
JH
10412: see if crypt exists
10413echo " "
a5a94ea5
JH
10414set crypt d_crypt
10415eval $inlibc
10416case "$d_crypt" in
10417$define) cryptlib='' ;;
10418*) if set crypt val -f d_crypt; eval $csym; $val; then
10419 echo 'crypt() found.' >&4
b4eb6b3d 10420 val="$define"
a5a94ea5
JH
10421 cryptlib=''
10422 else
10423 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10424 if $test -z "$cryptlib"; then
10425 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10426 else
10427 cryptlib=-lcrypt
10428 fi
10429 if $test -z "$cryptlib"; then
10430 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10431 else
10432 cryptlib=-lcrypt
10433 fi
10434 if $test -z "$cryptlib"; then
10435 cryptlib=`./loc libcrypt$_a "" $libpth`
10436 else
10437 cryptlib=-lcrypt
10438 fi
10439 if $test -z "$cryptlib"; then
10440 echo 'crypt() NOT found.' >&4
10441 val="$undef"
10442 else
10443 val="$define"
10444 fi
b4eb6b3d 10445 fi
a5a94ea5
JH
10446 set d_crypt
10447 eval $setvar
10448 ;;
10449esac
b4eb6b3d 10450
10bc17b6
JH
10451: see if this is a crypt.h system
10452set crypt.h i_crypt
10453eval $inhdr
10454
10455: see if crypt_r exists
10456set crypt_r d_crypt_r
10457eval $inlibc
10458case "$d_crypt_r" in
10459"$define")
10460 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
c18e646a
JH
10461 case "$d_crypt_r_proto:$usethreads" in
10462 ":define") d_crypt_r_proto=define
a48ec845
JH
10463 set d_crypt_r_proto crypt_r $hdrs
10464 eval $hasproto ;;
10465 *) ;;
10466 esac
10467 case "$d_crypt_r_proto" in
10468 define)
10bc17b6
JH
10469 case "$crypt_r_proto" in
10470 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10471 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10472 esac
10473 case "$crypt_r_proto" in
b430fd04
JH
10474 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10475 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10476 esac
10477 case "$crypt_r_proto" in
90e831dc 10478 ''|0) d_crypt_r=undef
10bc17b6 10479 crypt_r_proto=0
a48ec845 10480 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10481 * ) case "$crypt_r_proto" in
10482 REENTRANT_PROTO*) ;;
10483 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10484 esac
10485 echo "Prototype: $try" ;;
10486 esac
10487 ;;
c18e646a
JH
10488 *) case "$usethreads" in
10489 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10490 esac
90e831dc
SB
10491 d_crypt_r=undef
10492 crypt_r_proto=0
c18e646a 10493 ;;
a48ec845
JH
10494 esac
10495 ;;
10bc17b6
JH
10496*) crypt_r_proto=0
10497 ;;
10498esac
10499
b4eb6b3d
JH
10500: get csh whereabouts
10501case "$csh" in
10502'csh') val="$undef" ;;
10503*) val="$define" ;;
10504esac
10505set d_csh
10506eval $setvar
10507: Respect a hint or command line value for full_csh.
10508case "$full_csh" in
10509'') full_csh=$csh ;;
10510esac
10511
10bc17b6
JH
10512: see if ctermid_r exists
10513set ctermid_r d_ctermid_r
10514eval $inlibc
10515case "$d_ctermid_r" in
10516"$define")
31ee0cb7 10517 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
10518 case "$d_ctermid_r_proto:$usethreads" in
10519 ":define") d_ctermid_r_proto=define
a48ec845
JH
10520 set d_ctermid_r_proto ctermid_r $hdrs
10521 eval $hasproto ;;
10522 *) ;;
10523 esac
10524 case "$d_ctermid_r_proto" in
10525 define)
10bc17b6
JH
10526 case "$ctermid_r_proto" in
10527 ''|0) try='char* ctermid_r(char*);'
10528 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10529 esac
10530 case "$ctermid_r_proto" in
90e831dc 10531 ''|0) d_ctermid_r=undef
10bc17b6 10532 ctermid_r_proto=0
a48ec845 10533 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10534 * ) case "$ctermid_r_proto" in
10535 REENTRANT_PROTO*) ;;
10536 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10537 esac
10538 echo "Prototype: $try" ;;
10539 esac
10540 ;;
c18e646a
JH
10541 *) case "$usethreads" in
10542 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10543 esac
90e831dc
SB
10544 d_ctermid_r=undef
10545 ctermid_r_proto=0
c18e646a 10546 ;;
a48ec845
JH
10547 esac
10548 ;;
10bc17b6
JH
10549*) ctermid_r_proto=0
10550 ;;
10551esac
10552
10553: see if ctime_r exists
10554set ctime_r d_ctime_r
10555eval $inlibc
10556case "$d_ctime_r" in
10557"$define")
d63eadf0 10558 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
10559 case "$d_ctime_r_proto:$usethreads" in
10560 ":define") d_ctime_r_proto=define
a48ec845
JH
10561 set d_ctime_r_proto ctime_r $hdrs
10562 eval $hasproto ;;
10563 *) ;;
10564 esac
10565 case "$d_ctime_r_proto" in
10566 define)
10bc17b6
JH
10567 case "$ctime_r_proto" in
10568 ''|0) try='char* ctime_r(const time_t*, char*);'
10569 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10570 esac
10571 case "$ctime_r_proto" in
10572 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10573 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10574 esac
10575 case "$ctime_r_proto" in
10576 ''|0) try='int ctime_r(const time_t*, char*);'
10577 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10578 esac
10579 case "$ctime_r_proto" in
10580 ''|0) try='int ctime_r(const time_t*, char*, int);'
10581 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10582 esac
10583 case "$ctime_r_proto" in
90e831dc 10584 ''|0) d_ctime_r=undef
10bc17b6 10585 ctime_r_proto=0
a48ec845 10586 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10587 * ) case "$ctime_r_proto" in
10588 REENTRANT_PROTO*) ;;
10589 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10590 esac
10591 echo "Prototype: $try" ;;
10592 esac
10593 ;;
c18e646a
JH
10594 *) case "$usethreads" in
10595 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10596 esac
90e831dc
SB
10597 d_ctime_r=undef
10598 ctime_r_proto=0
c18e646a 10599 ;;
a48ec845
JH
10600 esac
10601 ;;
10bc17b6
JH
10602*) ctime_r_proto=0
10603 ;;
10604esac
10605
b4eb6b3d
JH
10606: see if cuserid exists
10607set cuserid d_cuserid
10608eval $inlibc
10609
10610: see if this is a limits.h system
10611set limits.h i_limits
10612eval $inhdr
10613
10614: see if this is a float.h system
10615set float.h i_float
10616eval $inhdr
10617
10618: See if number of significant digits in a double precision number is known
10619echo " "
10620$cat >dbl_dig.c <<EOM
10621#$i_limits I_LIMITS
10622#$i_float I_FLOAT
10623#ifdef I_LIMITS
10624#include <limits.h>
10625#endif
10626#ifdef I_FLOAT
10627#include <float.h>
10628#endif
10629#ifdef DBL_DIG
10630printf("Contains DBL_DIG");
10631#endif
10632EOM
10633$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10634if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10635 echo "DBL_DIG found." >&4
10636 val="$define"
10637else
10638 echo "DBL_DIG NOT found." >&4
10639 val="$undef"
10640fi
10641$rm -f dbl_dig.?
10642set d_dbl_dig
10643eval $setvar
10644
2ef53570
JH
10645: see if dbm.h is available
10646: see if dbmclose exists
10647set dbmclose d_dbmclose
10648eval $inlibc
10649
10650case "$d_dbmclose" in
10651$define)
10652 set dbm.h i_dbm
10653 eval $inhdr
10654 case "$i_dbm" in
10655 $define)
10656 val="$undef"
10657 set i_rpcsvcdbm
10658 eval $setvar
10659 ;;
10660 *) set rpcsvc/dbm.h i_rpcsvcdbm
10661 eval $inhdr
10662 ;;
10663 esac
10664 ;;
10665*) echo "We won't be including <dbm.h>"
10666 val="$undef"
10667 set i_dbm
10668 eval $setvar
10669 val="$undef"
10670 set i_rpcsvcdbm
10671 eval $setvar
10672 ;;
10673esac
10674
10675: see if prototype for dbminit is available
10676echo " "
10677set d_dbminitproto dbminit $i_dbm dbm.h
10678eval $hasproto
10679
b4eb6b3d
JH
10680: see if difftime exists
10681set difftime d_difftime
10682eval $inlibc
10683
10684: see if this is a dirent system
10685echo " "
10686if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10687 val="$define"
10688 echo "<dirent.h> found." >&4
10689else
10690 val="$undef"
10691 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10692 echo "<sys/dir.h> found." >&4
10693 echo " "
10694 else
10695 xinc=`./findhdr sys/ndir.h`
10696 fi
10697 echo "<dirent.h> NOT found." >&4
10698fi
10699set i_dirent
10700eval $setvar
10701
10702: Look for type of directory structure.
10703echo " "
10704$cppstdin $cppflags $cppminus < "$xinc" > try.c
10705
10706case "$direntrytype" in
10707''|' ')
10708 case "$i_dirent" in
10709 $define) guess1='struct dirent' ;;
10710 *) guess1='struct direct' ;;
10711 esac
10712 ;;
10713*) guess1="$direntrytype"
10714 ;;
10715esac
10716
10717case "$guess1" in
10718'struct dirent') guess2='struct direct' ;;
10719*) guess2='struct dirent' ;;
10720esac
10721
10722if $contains "$guess1" try.c >/dev/null 2>&1; then
10723 direntrytype="$guess1"
10724 echo "Your directory entries are $direntrytype." >&4
10725elif $contains "$guess2" try.c >/dev/null 2>&1; then
10726 direntrytype="$guess2"
10727 echo "Your directory entries seem to be $direntrytype." >&4
10728else
10729 echo "I don't recognize your system's directory entries." >&4
10730 rp="What type is used for directory entries on this system?"
10731 dflt="$guess1"
10732 . ./myread
10733 direntrytype="$ans"
10734fi
10735$rm -f try.c
10736
10737
10738: see if the directory entry stores field length
10739echo " "
10740$cppstdin $cppflags $cppminus < "$xinc" > try.c
10741if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10742 echo "Good, your directory entry keeps length information in d_namlen." >&4
10743 val="$define"
10744else
10745 echo "Your directory entry does not know about the d_namlen field." >&4
10746 val="$undef"
10747fi
10748set d_dirnamlen
10749eval $setvar
10750$rm -f try.c
10751
ae0e3d3b
JH
10752: see if this is an sysdir system
10753set sys/dir.h i_sysdir
10754eval $inhdr
10755
10756: see if this is an sysndir system
10757set sys/ndir.h i_sysndir
10758eval $inhdr
10759
10760: Look for dirfd
10761echo " "
10762$cat >dirfd.c <<EOM
10763#include <stdio.h>
55954f19
JH
10764#$i_stdlib I_STDLIB
10765#ifdef I_STDLIB
10766#include <stdlib.h>
10767#endif
ae0e3d3b
JH
10768#$i_dirent I_DIRENT /**/
10769#$i_sysdir I_SYS_DIR /**/
10770#$i_sysndir I_SYS_NDIR /**/
10771#$i_systypes I_SYS_TYPES /**/
10772#if defined(I_SYS_TYPES)
10773#include <sys/types.h>
10774#endif
10775#if defined(I_DIRENT)
10776#include <dirent.h>
10777#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10778#include <sys/dir.h>
10779#endif
10780#else
10781#ifdef I_SYS_NDIR
10782#include <sys/ndir.h>
10783#else
10784#ifdef I_SYS_DIR
10785#ifdef hp9000s500
10786#include <ndir.h> /* may be wrong in the future */
10787#else
10788#include <sys/dir.h>
10789#endif
10790#endif
10791#endif
10792#endif
10793int main() {
10794 DIR *dirp = opendir(".");
10795 if (dirfd(dirp) >= 0)
10796 exit(0);
10797 else
10798 exit(1);
10799}
10800EOM
10801set dirfd
10802if eval $compile; then
10803 val="$define"
10804fi
10805case "$val" in
10806$define) echo "dirfd() found." >&4 ;;
10807*) echo "dirfd() NOT found." >&4 ;;
10808esac
10809set d_dirfd
10810eval $setvar
10811$rm -f dirfd*
10812
b4eb6b3d
JH
10813: see if dlerror exists
10814xxx_runnm="$runnm"
10815runnm=false
10816set dlerror d_dlerror
10817eval $inlibc
10818runnm="$xxx_runnm"
10819
10820: see if dlfcn is available
10821set dlfcn.h i_dlfcn
10822eval $inhdr
10823
10824case "$usedl" in
10825$define|y|true)
10826 $cat << EOM
10827
10828On a few systems, the dynamically loaded modules that perl generates and uses
10829will need a different extension than shared libs. The default will probably
10830be appropriate.
10831
10832EOM
10833 case "$dlext" in
10834 '') dflt="$so" ;;
10835 *) dflt="$dlext" ;;
10836 esac
10837 rp='What is the extension of dynamically loaded modules'
10838 . ./myread
10839 dlext="$ans"
10840 ;;
10841*)
10842 dlext="none"
10843 ;;
10844esac
10845
10846: Check if dlsym need a leading underscore
10847echo " "
10848val="$undef"
10849
10850case "$dlsrc" in
10851dl_dlopen.xs)
10852 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10853 $cat >dyna.c <<'EOM'
10854fred () { }
10855EOM
10856
10857$cat >fred.c<<EOM
10858
10859#include <stdio.h>
55954f19
JH
10860#$i_stdlib I_STDLIB
10861#ifdef I_STDLIB
10862#include <stdlib.h>
10863#endif
b4eb6b3d
JH
10864#$i_dlfcn I_DLFCN
10865#ifdef I_DLFCN
5440bc8e 10866#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
10867#else
10868#include <sys/types.h>
10869#include <nlist.h>
10870#include <link.h>
10871#endif
10872
10873extern int fred() ;
10874
10875int main()
10876{
10877 void * handle ;
10878 void * symbol ;
10879#ifndef RTLD_LAZY
10880 int mode = 1 ;
10881#else
10882 int mode = RTLD_LAZY ;
10883#endif
10884 handle = dlopen("./dyna.$dlext", mode) ;
10885 if (handle == NULL) {
10886 printf ("1\n") ;
10887 fflush (stdout) ;
10888 exit(0);
10889 }
10890 symbol = dlsym(handle, "fred") ;
10891 if (symbol == NULL) {
10892 /* try putting a leading underscore */
10893 symbol = dlsym(handle, "_fred") ;
10894 if (symbol == NULL) {
10895 printf ("2\n") ;
10896 fflush (stdout) ;
10897 exit(0);
10898 }
10899 printf ("3\n") ;
10900 }
10901 else
10902 printf ("4\n") ;
10903 fflush (stdout) ;
10904 exit(0);
10905}
10906EOM
10907 : Call the object file tmp-dyna.o in case dlext=o.
10908 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10909 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 10910 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
10911 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10912 xxx=`$run ./fred`
b4eb6b3d
JH
10913 case $xxx in
10914 1) echo "Test program failed using dlopen." >&4
10915 echo "Perhaps you should not use dynamic loading." >&4;;
10916 2) echo "Test program failed using dlsym." >&4
10917 echo "Perhaps you should not use dynamic loading." >&4;;
10918 3) echo "dlsym needs a leading underscore" >&4
10919 val="$define" ;;
10920 4) echo "dlsym doesn't need a leading underscore." >&4;;
10921 esac
10922 else
10923 echo "I can't compile and run the test program." >&4
10924 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10925 fi
10926 ;;
10927esac
10928
3c728e00 10929$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
10930
10931set d_dlsymun
10932eval $setvar
10933
10bc17b6
JH
10934: see if drand48_r exists
10935set drand48_r d_drand48_r
10936eval $inlibc
10937case "$d_drand48_r" in
10938"$define")
10939 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
10940 case "$d_drand48_r_proto:$usethreads" in
10941 ":define") d_drand48_r_proto=define
a48ec845
JH
10942 set d_drand48_r_proto drand48_r $hdrs
10943 eval $hasproto ;;
10944 *) ;;
10945 esac
10946 case "$d_drand48_r_proto" in
10947 define)
10bc17b6
JH
10948 case "$drand48_r_proto" in
10949 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10950 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10951 esac
10952 case "$drand48_r_proto" in
90e831dc 10953 ''|0) d_drand48_r=undef
10bc17b6 10954 drand48_r_proto=0
a48ec845 10955 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10956 * ) case "$drand48_r_proto" in
10957 REENTRANT_PROTO*) ;;
10958 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10959 esac
10960 echo "Prototype: $try" ;;
10961 esac
10962 ;;
c18e646a
JH
10963 *) case "$usethreads" in
10964 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10965 esac
90e831dc
SB
10966 d_drand48_r=undef
10967 drand48_r_proto=0
c18e646a 10968 ;;
a48ec845
JH
10969 esac
10970 ;;
10bc17b6
JH
10971*) drand48_r_proto=0
10972 ;;
10973esac
10974
10975: see if prototype for drand48 is available
10976echo " "
10977set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10978eval $hasproto
10979
b4eb6b3d
JH
10980: see if dup2 exists
10981set dup2 d_dup2
10982eval $inlibc
10983
10984: see if eaccess exists
10985set eaccess d_eaccess
10986eval $inlibc
10987
10988: see if endgrent exists
10989set endgrent d_endgrent
10990eval $inlibc
10991
10bc17b6
JH
10992: see if this is an grp system
10993set grp.h i_grp
10994eval $inhdr
10995
10996case "$i_grp" in
10997$define)
10998 xxx=`./findhdr grp.h`
10999 $cppstdin $cppflags $cppminus < $xxx >$$.h
11000
11001 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11002 val="$define"
11003 else
11004 val="$undef"
11005 fi
11006 set d_grpasswd
11007 eval $setvar
11008
11009 $rm -f $$.h
11010 ;;
11011*)
11012 val="$undef";
11013 set d_grpasswd; eval $setvar
11014 ;;
11015esac
11016
11017: see if endgrent_r exists
11018set endgrent_r d_endgrent_r
11019eval $inlibc
11020case "$d_endgrent_r" in
11021"$define")
11022 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
11023 case "$d_endgrent_r_proto:$usethreads" in
11024 ":define") d_endgrent_r_proto=define
a48ec845
JH
11025 set d_endgrent_r_proto endgrent_r $hdrs
11026 eval $hasproto ;;
11027 *) ;;
11028 esac
11029 case "$d_endgrent_r_proto" in
11030 define)
10bc17b6
JH
11031 case "$endgrent_r_proto" in
11032 ''|0) try='int endgrent_r(FILE**);'
11033 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11034 esac
11035 case "$endgrent_r_proto" in
11036 ''|0) try='void endgrent_r(FILE**);'
11037 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11038 esac
11039 case "$endgrent_r_proto" in
90e831dc 11040 ''|0) d_endgrent_r=undef
10bc17b6 11041 endgrent_r_proto=0
a48ec845 11042 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11043 * ) case "$endgrent_r_proto" in
11044 REENTRANT_PROTO*) ;;
11045 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11046 esac
11047 echo "Prototype: $try" ;;
11048 esac
11049 ;;
c18e646a
JH
11050 *) case "$usethreads" in
11051 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11052 esac
90e831dc
SB
11053 d_endgrent_r=undef
11054 endgrent_r_proto=0
c18e646a 11055 ;;
a48ec845
JH
11056 esac
11057 ;;
10bc17b6
JH
11058*) endgrent_r_proto=0
11059 ;;
11060esac
11061
b4eb6b3d
JH
11062: see if endhostent exists
11063set endhostent d_endhent
11064eval $inlibc
11065
10bc17b6
JH
11066: see if this is a netdb.h system
11067set netdb.h i_netdb
11068eval $inhdr
11069
11070: see if endhostent_r exists
11071set endhostent_r d_endhostent_r
11072eval $inlibc
11073case "$d_endhostent_r" in
11074"$define")
11075 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11076 case "$d_endhostent_r_proto:$usethreads" in
11077 ":define") d_endhostent_r_proto=define
a48ec845
JH
11078 set d_endhostent_r_proto endhostent_r $hdrs
11079 eval $hasproto ;;
11080 *) ;;
11081 esac
11082 case "$d_endhostent_r_proto" in
11083 define)
10bc17b6
JH
11084 case "$endhostent_r_proto" in
11085 ''|0) try='int endhostent_r(struct hostent_data*);'
31ee0cb7 11086 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10bc17b6
JH
11087 esac
11088 case "$endhostent_r_proto" in
11089 ''|0) try='void endhostent_r(struct hostent_data*);'
31ee0cb7 11090 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10bc17b6
JH
11091 esac
11092 case "$endhostent_r_proto" in
90e831dc 11093 ''|0) d_endhostent_r=undef
10bc17b6 11094 endhostent_r_proto=0
a48ec845 11095 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11096 * ) case "$endhostent_r_proto" in
11097 REENTRANT_PROTO*) ;;
11098 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11099 esac
11100 echo "Prototype: $try" ;;
11101 esac
11102 ;;
c18e646a
JH
11103 *) case "$usethreads" in
11104 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11105 esac
90e831dc
SB
11106 d_endhostent_r=undef
11107 endhostent_r_proto=0
c18e646a 11108 ;;
a48ec845
JH
11109 esac
11110 ;;
10bc17b6
JH
11111*) endhostent_r_proto=0
11112 ;;
11113esac
11114
b4eb6b3d
JH
11115: see if endnetent exists
11116set endnetent d_endnent
11117eval $inlibc
11118
10bc17b6
JH
11119: see if endnetent_r exists
11120set endnetent_r d_endnetent_r
11121eval $inlibc
11122case "$d_endnetent_r" in
11123"$define")
11124 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11125 case "$d_endnetent_r_proto:$usethreads" in
11126 ":define") d_endnetent_r_proto=define
a48ec845
JH
11127 set d_endnetent_r_proto endnetent_r $hdrs
11128 eval $hasproto ;;
11129 *) ;;
11130 esac
11131 case "$d_endnetent_r_proto" in
11132 define)
10bc17b6
JH
11133 case "$endnetent_r_proto" in
11134 ''|0) try='int endnetent_r(struct netent_data*);'
31ee0cb7 11135 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10bc17b6
JH
11136 esac
11137 case "$endnetent_r_proto" in
11138 ''|0) try='void endnetent_r(struct netent_data*);'
31ee0cb7 11139 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10bc17b6
JH
11140 esac
11141 case "$endnetent_r_proto" in
90e831dc 11142 ''|0) d_endnetent_r=undef
10bc17b6 11143 endnetent_r_proto=0
a48ec845 11144 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11145 * ) case "$endnetent_r_proto" in
11146 REENTRANT_PROTO*) ;;
11147 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11148 esac
11149 echo "Prototype: $try" ;;
11150 esac
11151 ;;
c18e646a
JH
11152 *) case "$usethreads" in
11153 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11154 esac
90e831dc
SB
11155 d_endnetent_r=undef
11156 endnetent_r_proto=0
c18e646a 11157 ;;
a48ec845
JH
11158 esac
11159 ;;
10bc17b6
JH
11160*) endnetent_r_proto=0
11161 ;;
11162esac
11163
b4eb6b3d
JH
11164: see if endprotoent exists
11165set endprotoent d_endpent
11166eval $inlibc
11167
10bc17b6
JH
11168: see if endprotoent_r exists
11169set endprotoent_r d_endprotoent_r
11170eval $inlibc
11171case "$d_endprotoent_r" in
11172"$define")
11173 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11174 case "$d_endprotoent_r_proto:$usethreads" in
11175 ":define") d_endprotoent_r_proto=define
a48ec845
JH
11176 set d_endprotoent_r_proto endprotoent_r $hdrs
11177 eval $hasproto ;;
11178 *) ;;
11179 esac
11180 case "$d_endprotoent_r_proto" in
11181 define)
10bc17b6
JH
11182 case "$endprotoent_r_proto" in
11183 ''|0) try='int endprotoent_r(struct protoent_data*);'
31ee0cb7 11184 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10bc17b6
JH
11185 esac
11186 case "$endprotoent_r_proto" in
11187 ''|0) try='void endprotoent_r(struct protoent_data*);'
31ee0cb7 11188 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10bc17b6
JH
11189 esac
11190 case "$endprotoent_r_proto" in
90e831dc 11191 ''|0) d_endprotoent_r=undef
10bc17b6 11192 endprotoent_r_proto=0
a48ec845 11193 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11194 * ) case "$endprotoent_r_proto" in
11195 REENTRANT_PROTO*) ;;
11196 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11197 esac
11198 echo "Prototype: $try" ;;
11199 esac
11200 ;;
c18e646a
JH
11201 *) case "$usethreads" in
11202 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11203 esac
90e831dc
SB
11204 d_endprotoent_r=undef
11205 endprotoent_r_proto=0
c18e646a 11206 ;;
a48ec845
JH
11207 esac
11208 ;;
10bc17b6
JH
11209*) endprotoent_r_proto=0
11210 ;;
11211esac
11212
b4eb6b3d
JH
11213: see if endpwent exists
11214set endpwent d_endpwent
11215eval $inlibc
11216
10bc17b6
JH
11217: see if this is a pwd.h system
11218set pwd.h i_pwd
11219eval $inhdr
11220
11221case "$i_pwd" in
11222$define)
11223 xxx=`./findhdr pwd.h`
11224 $cppstdin $cppflags $cppminus < $xxx >$$.h
11225
11226 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11227 val="$define"
11228 else
11229 val="$undef"
11230 fi
11231 set d_pwquota
11232 eval $setvar
11233
11234 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11235 val="$define"
11236 else
11237 val="$undef"
11238 fi
11239 set d_pwage
11240 eval $setvar
11241
11242 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11243 val="$define"
11244 else
11245 val="$undef"
11246 fi
11247 set d_pwchange
11248 eval $setvar
11249
11250 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11251 val="$define"
11252 else
11253 val="$undef"
11254 fi
11255 set d_pwclass
11256 eval $setvar
11257
11258 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11259 val="$define"
11260 else
11261 val="$undef"
11262 fi
11263 set d_pwexpire
11264 eval $setvar
11265
11266 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11267 val="$define"
11268 else
11269 val="$undef"
11270 fi
11271 set d_pwcomment
11272 eval $setvar
11273
11274 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11275 val="$define"
11276 else
11277 val="$undef"
11278 fi
11279 set d_pwgecos
11280 eval $setvar
11281
11282 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11283 val="$define"
11284 else
11285 val="$undef"
11286 fi
11287 set d_pwpasswd
11288 eval $setvar
11289
11290 $rm -f $$.h
11291 ;;
11292*)
11293 val="$undef";
11294 set d_pwquota; eval $setvar
11295 set d_pwage; eval $setvar
11296 set d_pwchange; eval $setvar
11297 set d_pwclass; eval $setvar
11298 set d_pwexpire; eval $setvar
11299 set d_pwcomment; eval $setvar
11300 set d_pwgecos; eval $setvar
11301 set d_pwpasswd; eval $setvar
11302 ;;
11303esac
11304
11305: see if endpwent_r exists
11306set endpwent_r d_endpwent_r
11307eval $inlibc
11308case "$d_endpwent_r" in
11309"$define")
11310 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
11311 case "$d_endpwent_r_proto:$usethreads" in
11312 ":define") d_endpwent_r_proto=define
a48ec845
JH
11313 set d_endpwent_r_proto endpwent_r $hdrs
11314 eval $hasproto ;;
11315 *) ;;
11316 esac
11317 case "$d_endpwent_r_proto" in
11318 define)
10bc17b6
JH
11319 case "$endpwent_r_proto" in
11320 ''|0) try='int endpwent_r(FILE**);'
11321 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11322 esac
11323 case "$endpwent_r_proto" in
11324 ''|0) try='void endpwent_r(FILE**);'
11325 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11326 esac
11327 case "$endpwent_r_proto" in
90e831dc 11328 ''|0) d_endpwent_r=undef
10bc17b6 11329 endpwent_r_proto=0
a48ec845 11330 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11331 * ) case "$endpwent_r_proto" in
11332 REENTRANT_PROTO*) ;;
11333 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11334 esac
11335 echo "Prototype: $try" ;;
11336 esac
11337 ;;
c18e646a
JH
11338 *) case "$usethreads" in
11339 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11340 esac
90e831dc
SB
11341 d_endpwent_r=undef
11342 endpwent_r_proto=0
c18e646a 11343 ;;
a48ec845
JH
11344 esac
11345 ;;
10bc17b6
JH
11346*) endpwent_r_proto=0
11347 ;;
11348esac
11349
b4eb6b3d
JH
11350: see if endservent exists
11351set endservent d_endsent
11352eval $inlibc
11353
10bc17b6
JH
11354: see if endservent_r exists
11355set endservent_r d_endservent_r
11356eval $inlibc
11357case "$d_endservent_r" in
11358"$define")
11359 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11360 case "$d_endservent_r_proto:$usethreads" in
11361 ":define") d_endservent_r_proto=define
a48ec845
JH
11362 set d_endservent_r_proto endservent_r $hdrs
11363 eval $hasproto ;;
11364 *) ;;
11365 esac
11366 case "$d_endservent_r_proto" in
11367 define)
10bc17b6
JH
11368 case "$endservent_r_proto" in
11369 ''|0) try='int endservent_r(struct servent_data*);'
31ee0cb7 11370 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10bc17b6
JH
11371 esac
11372 case "$endservent_r_proto" in
11373 ''|0) try='void endservent_r(struct servent_data*);'
31ee0cb7 11374 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10bc17b6
JH
11375 esac
11376 case "$endservent_r_proto" in
90e831dc 11377 ''|0) d_endservent_r=undef
10bc17b6 11378 endservent_r_proto=0
a48ec845 11379 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11380 * ) case "$endservent_r_proto" in
11381 REENTRANT_PROTO*) ;;
11382 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11383 esac
11384 echo "Prototype: $try" ;;
11385 esac
11386 ;;
c18e646a
JH
11387 *) case "$usethreads" in
11388 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11389 esac
90e831dc
SB
11390 d_endservent_r=undef
11391 endservent_r_proto=0
c18e646a 11392 ;;
a48ec845
JH
11393 esac
11394 ;;
10bc17b6
JH
11395*) endservent_r_proto=0
11396 ;;
11397esac
11398
b4eb6b3d
JH
11399: Locate the flags for 'open()'
11400echo " "
55954f19 11401$cat >try.c <<EOCP
b4eb6b3d
JH
11402#include <sys/types.h>
11403#ifdef I_FCNTL
11404#include <fcntl.h>
11405#endif
11406#ifdef I_SYS_FILE
11407#include <sys/file.h>
11408#endif
55954f19
JH
11409#$i_stdlib I_STDLIB
11410#ifdef I_STDLIB
11411#include <stdlib.h>
11412#endif
b4eb6b3d
JH
11413int main() {
11414 if(O_RDONLY);
11415#ifdef O_TRUNC
11416 exit(0);
11417#else
11418 exit(1);
11419#endif
11420}
11421EOCP
11422: check sys/file.h first to get FREAD on Sun
11423if $test `./findhdr sys/file.h` && \
5440bc8e 11424 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
11425 h_sysfile=true;
11426 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 11427 if $run ./try; then
b4eb6b3d
JH
11428 echo "and you have the 3 argument form of open()." >&4
11429 val="$define"
11430 else
11431 echo "but not the 3 argument form of open(). Oh, well." >&4
11432 val="$undef"
11433 fi
11434elif $test `./findhdr fcntl.h` && \
5440bc8e 11435 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
11436 h_fcntl=true;
11437 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 11438 if $run ./try; then
b4eb6b3d
JH
11439 echo "and you have the 3 argument form of open()." >&4
11440 val="$define"
11441 else
11442 echo "but not the 3 argument form of open(). Oh, well." >&4
11443 val="$undef"
11444 fi
11445else
11446 val="$undef"
11447 echo "I can't find the O_* constant definitions! You got problems." >&4
11448fi
11449set d_open3
11450eval $setvar
5440bc8e 11451$rm -f try try.*
b4eb6b3d
JH
11452
11453: see which of string.h or strings.h is needed
11454echo " "
11455strings=`./findhdr string.h`
11456if $test "$strings" && $test -r "$strings"; then
11457 echo "Using <string.h> instead of <strings.h>." >&4
11458 val="$define"
11459else
11460 val="$undef"
11461 strings=`./findhdr strings.h`
11462 if $test "$strings" && $test -r "$strings"; then
11463 echo "Using <strings.h> instead of <string.h>." >&4
11464 else
11465 echo "No string header found -- You'll surely have problems." >&4
11466 fi
11467fi
11468set i_string
11469eval $setvar
11470case "$i_string" in
11471"$undef") strings=`./findhdr strings.h`;;
11472*) strings=`./findhdr string.h`;;
11473esac
11474
3c728e00
JH
11475: see if this is a sys/file.h system
11476val=''
11477set sys/file.h val
11478eval $inhdr
11479
11480: do we need to include sys/file.h ?
11481case "$val" in
11482"$define")
11483 echo " "
11484 if $h_sysfile; then
11485 val="$define"
11486 echo "We'll be including <sys/file.h>." >&4
11487 else
11488 val="$undef"
11489 echo "We won't be including <sys/file.h>." >&4
11490 fi
11491 ;;
11492*)
11493 h_sysfile=false
11494 ;;
11495esac
11496set i_sysfile
11497eval $setvar
11498
11499: see if fcntl.h is there
11500val=''
11501set fcntl.h val
11502eval $inhdr
11503
11504: see if we can include fcntl.h
11505case "$val" in
11506"$define")
11507 echo " "
11508 if $h_fcntl; then
11509 val="$define"
11510 echo "We'll be including <fcntl.h>." >&4
11511 else
11512 val="$undef"
11513 if $h_sysfile; then
11514 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11515 else
11516 echo "We won't be including <fcntl.h>." >&4
11517 fi
11518 fi
11519 ;;
11520*)
11521 h_fcntl=false
11522 val="$undef"
11523 ;;
11524esac
11525set i_fcntl
11526eval $setvar
11527
b4eb6b3d
JH
11528: check for non-blocking I/O stuff
11529case "$h_sysfile" in
a0acbdc3
JH
11530true) echo "#include <sys/file.h>" > head.c;;
11531*)
11532 case "$h_fcntl" in
11533 true) echo "#include <fcntl.h>" > head.c;;
11534 *) echo "#include <sys/fcntl.h>" > head.c;;
11535 esac
11536 ;;
b4eb6b3d
JH
11537esac
11538echo " "
11539echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11540case "$o_nonblock" in
11541'')
11542 $cat head.c > try.c
3c728e00 11543 $cat >>try.c <<EOCP
b4eb6b3d 11544#include <stdio.h>
55954f19
JH
11545#$i_stdlib I_STDLIB
11546#ifdef I_STDLIB
80b3ef99 11547#include <stdlib.h>
55954f19 11548#endif
3c728e00
JH
11549#$i_fcntl I_FCNTL
11550#ifdef I_FCNTL
11551#include <fcntl.h>
11552#endif
b4eb6b3d
JH
11553int main() {
11554#ifdef O_NONBLOCK
11555 printf("O_NONBLOCK\n");
11556 exit(0);
11557#endif
11558#ifdef O_NDELAY
11559 printf("O_NDELAY\n");
11560 exit(0);
11561#endif
11562#ifdef FNDELAY
11563 printf("FNDELAY\n");
11564 exit(0);
11565#endif
11566 exit(0);
11567}
11568EOCP
11569 set try
11570 if eval $compile_ok; then
5440bc8e 11571 o_nonblock=`$run ./try`
b4eb6b3d
JH
11572 case "$o_nonblock" in
11573 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11574 *) echo "Seems like we can use $o_nonblock.";;
11575 esac
11576 else
11577 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11578 fi
11579 ;;
11580*) echo "Using $hint value $o_nonblock.";;
11581esac
11582$rm -f try try.* .out core
11583
11584echo " "
11585echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11586case "$eagain" in
11587'')
11588 $cat head.c > try.c
11589 $cat >>try.c <<EOCP
11590#include <errno.h>
11591#include <sys/types.h>
11592#include <signal.h>
11593#include <stdio.h>
55954f19
JH
11594#$i_stdlib I_STDLIB
11595#ifdef I_STDLIB
11596#include <stdlib.h>
11597#endif
1deb0a86
JH
11598#$i_fcntl I_FCNTL
11599#ifdef I_FCNTL
11600#include <fcntl.h>
11601#endif
b4eb6b3d
JH
11602#define MY_O_NONBLOCK $o_nonblock
11603#ifndef errno /* XXX need better Configure test */
11604extern int errno;
11605#endif
11606#$i_unistd I_UNISTD
11607#ifdef I_UNISTD
11608#include <unistd.h>
11609#endif
11610#$i_string I_STRING
11611#ifdef I_STRING
11612#include <string.h>
11613#else
11614#include <strings.h>
11615#endif
11616$signal_t blech(x) int x; { exit(3); }
11617EOCP
11618 $cat >> try.c <<'EOCP'
11619int main()
11620{
11621 int pd[2];
11622 int pu[2];
11623 char buf[1];
11624 char string[100];
11625
11626 pipe(pd); /* Down: child -> parent */
11627 pipe(pu); /* Up: parent -> child */
11628 if (0 != fork()) {
11629 int ret;
11630 close(pd[1]); /* Parent reads from pd[0] */
11631 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 11632#ifdef F_SETFL
b4eb6b3d
JH
11633 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11634 exit(1);
a0acbdc3
JH
11635#else
11636 exit(4);
11637#endif
b4eb6b3d
JH
11638 signal(SIGALRM, blech);
11639 alarm(5);
11640 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11641 exit(2);
11642 sprintf(string, "%d\n", ret);
11643 write(2, string, strlen(string));
11644 alarm(0);
11645#ifdef EAGAIN
11646 if (errno == EAGAIN) {
11647 printf("EAGAIN\n");
11648 goto ok;
11649 }
11650#endif
11651#ifdef EWOULDBLOCK
11652 if (errno == EWOULDBLOCK)
11653 printf("EWOULDBLOCK\n");
11654#endif
11655 ok:
11656 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11657 sleep(2); /* Give it time to close our pipe */
11658 alarm(5);
11659 ret = read(pd[0], buf, 1); /* Should read EOF */
11660 alarm(0);
11661 sprintf(string, "%d\n", ret);
868439a2 11662 write(4, string, strlen(string));
b4eb6b3d
JH
11663 exit(0);
11664 }
11665
11666 close(pd[0]); /* We write to pd[1] */
11667 close(pu[1]); /* We read from pu[0] */
11668 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11669 close(pd[1]); /* Pipe pd is now fully closed! */
11670 exit(0); /* Bye bye, thank you for playing! */
11671}
11672EOCP
11673 set try
11674 if eval $compile_ok; then
11675 echo "$startsh" >mtry
868439a2 11676 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
11677 chmod +x mtry
11678 ./mtry >/dev/null 2>&1
11679 case $? in
11680 0) eagain=`$cat try.out`;;
11681 1) echo "Could not perform non-blocking setting!";;
11682 2) echo "I did a successful read() for something that was not there!";;
11683 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 11684 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
11685 *) echo "Something terribly wrong happened during testing.";;
11686 esac
11687 rd_nodata=`$cat try.ret`
11688 echo "A read() system call with no data present returns $rd_nodata."
11689 case "$rd_nodata" in
11690 0|-1) ;;
11691 *)
11692 echo "(That's peculiar, fixing that to be -1.)"
11693 rd_nodata=-1
11694 ;;
11695 esac
11696 case "$eagain" in
11697 '')
11698 echo "Forcing errno EAGAIN on read() with no data available."
11699 eagain=EAGAIN
11700 ;;
11701 *)
11702 echo "Your read() sets errno to $eagain when no data is available."
11703 ;;
11704 esac
11705 status=`$cat try.err`
11706 case "$status" in
11707 0) echo "And it correctly returns 0 to signal EOF.";;
11708 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11709 *) echo "However, your read() returns '$status' on EOF??";;
11710 esac
11711 val="$define"
11712 if test "$status" = "$rd_nodata"; then
11713 echo "WARNING: you can't distinguish between EOF and no data!"
11714 val="$undef"
11715 fi
11716 else
11717 echo "I can't compile the test program--assuming errno EAGAIN will do."
11718 eagain=EAGAIN
11719 fi
11720 set d_eofnblk
11721 eval $setvar
11722 ;;
11723*)
11724 echo "Using $hint value $eagain."
11725 echo "Your read() returns $rd_nodata when no data is present."
11726 case "$d_eofnblk" in
11727 "$define") echo "And you can see EOF because read() returns 0.";;
11728 "$undef") echo "But you can't see EOF status from read() returned value.";;
11729 *)
11730 echo "(Assuming you can't see EOF status from read anyway.)"
11731 d_eofnblk=$undef
11732 ;;
11733 esac
11734 ;;
11735esac
11736$rm -f try try.* .out core head.c mtry
11737
15b61c98
JH
11738: see if _ptr and _cnt from stdio act std
11739echo " "
b4eb6b3d 11740
15b61c98
JH
11741if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11742 echo "(Looks like you have stdio.h from BSD.)"
11743 case "$stdio_ptr" in
11744 '') stdio_ptr='((fp)->_p)'
11745 ptr_lval=$define
11746 ;;
11747 *) ptr_lval=$d_stdio_ptr_lval;;
11748 esac
11749 case "$stdio_cnt" in
11750 '') stdio_cnt='((fp)->_r)'
11751 cnt_lval=$define
11752 ;;
11753 *) cnt_lval=$d_stdio_cnt_lval;;
11754 esac
11755 case "$stdio_base" in
11756 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11757 esac
11758 case "$stdio_bufsiz" in
11759 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11760 esac
11761elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11762 echo "(Looks like you have stdio.h from Linux.)"
11763 case "$stdio_ptr" in
11764 '') stdio_ptr='((fp)->_IO_read_ptr)'
11765 ptr_lval=$define
11766 ;;
11767 *) ptr_lval=$d_stdio_ptr_lval;;
11768 esac
11769 case "$stdio_cnt" in
11770 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11771 cnt_lval=$undef
11772 ;;
11773 *) cnt_lval=$d_stdio_cnt_lval;;
11774 esac
11775 case "$stdio_base" in
11776 '') stdio_base='((fp)->_IO_read_base)';;
11777 esac
11778 case "$stdio_bufsiz" in
11779 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11780 esac
11781else
11782 case "$stdio_ptr" in
11783 '') stdio_ptr='((fp)->_ptr)'
11784 ptr_lval=$define
11785 ;;
11786 *) ptr_lval=$d_stdio_ptr_lval;;
11787 esac
11788 case "$stdio_cnt" in
11789 '') stdio_cnt='((fp)->_cnt)'
11790 cnt_lval=$define
11791 ;;
11792 *) cnt_lval=$d_stdio_cnt_lval;;
11793 esac
11794 case "$stdio_base" in
11795 '') stdio_base='((fp)->_base)';;
11796 esac
11797 case "$stdio_bufsiz" in
11798 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11799 esac
11800fi
b4eb6b3d 11801
15b61c98
JH
11802: test whether _ptr and _cnt really work
11803echo "Checking how std your stdio is..." >&4
11804$cat >try.c <<EOP
11805#include <stdio.h>
55954f19
JH
11806#$i_stdlib I_STDLIB
11807#ifdef I_STDLIB
9d9004a9 11808#include <stdlib.h>
55954f19 11809#endif
15b61c98
JH
11810#define FILE_ptr(fp) $stdio_ptr
11811#define FILE_cnt(fp) $stdio_cnt
9d9004a9 11812int main() {
15b61c98
JH
11813 FILE *fp = fopen("try.c", "r");
11814 char c = getc(fp);
11815 if (
11816 18 <= FILE_cnt(fp) &&
11817 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11818 )
11819 exit(0);
11820 exit(1);
9d9004a9 11821}
15b61c98
JH
11822EOP
11823val="$undef"
11824set try
11825if eval $compile && $to try.c; then
11826 if $run ./try; then
11827 echo "Your stdio acts pretty std."
11828 val="$define"
9d9004a9 11829 else
15b61c98 11830 echo "Your stdio isn't very std."
9d9004a9 11831 fi
15b61c98
JH
11832else
11833 echo "Your stdio doesn't appear very std."
11834fi
11835$rm -f try.c try
11836
11837# glibc 2.2.90 and above apparently change stdio streams so Perl's
11838# direct buffer manipulation no longer works. The Configure tests
11839# should be changed to correctly detect this, but until then,
11840# the following check should at least let perl compile and run.
11841# (This quick fix should be updated before 5.8.1.)
11842# To be defensive, reject all unknown versions, and all versions > 2.2.9.
11843# A. Dougherty, June 3, 2002.
11844case "$d_gnulibc" in
11845$define)
11846 case "$gnulibc_version" in
11847 2.[01]*) ;;
11848 2.2) ;;
11849 2.2.[0-9]) ;;
11850 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11851 val="$undef"
11852 ;;
11853 esac
9d9004a9
AD
11854 ;;
11855esac
15b61c98 11856set d_stdstdio
9d9004a9 11857eval $setvar
9d9004a9 11858
15b61c98
JH
11859: Can _ptr be used as an lvalue?
11860case "$d_stdstdio$ptr_lval" in
11861$define$define) val=$define ;;
11862*) val=$undef ;;
11863esac
11864set d_stdio_ptr_lval
11865eval $setvar
9d9004a9 11866
15b61c98
JH
11867: Can _cnt be used as an lvalue?
11868case "$d_stdstdio$cnt_lval" in
11869$define$define) val=$define ;;
11870*) val=$undef ;;
11871esac
11872set d_stdio_cnt_lval
11873eval $setvar
b4eb6b3d 11874
15b61c98
JH
11875
11876: test whether setting _ptr sets _cnt as a side effect
11877d_stdio_ptr_lval_sets_cnt="$undef"
11878d_stdio_ptr_lval_nochange_cnt="$undef"
11879case "$d_stdio_ptr_lval$d_stdstdio" in
11880$define$define)
11881 echo "Checking to see what happens if we set the stdio ptr..." >&4
11882$cat >try.c <<EOP
11883#include <stdio.h>
11884/* Can we scream? */
11885/* Eat dust sed :-) */
11886/* In the buffer space, no one can hear you scream. */
55954f19
JH
11887#$i_stdlib I_STDLIB
11888#ifdef I_STDLIB
11889#include <stdlib.h>
11890#endif
15b61c98
JH
11891#define FILE_ptr(fp) $stdio_ptr
11892#define FILE_cnt(fp) $stdio_cnt
b4eb6b3d 11893#include <sys/types.h>
b4eb6b3d 11894int main() {
15b61c98
JH
11895 FILE *fp = fopen("try.c", "r");
11896 int c;
11897 char *ptr;
11898 size_t cnt;
11899 if (!fp) {
11900 puts("Fail even to read");
11901 exit(1);
11902 }
11903 c = getc(fp); /* Read away the first # */
11904 if (c == EOF) {
11905 puts("Fail even to read");
11906 exit(1);
11907 }
11908 if (!(
11909 18 <= FILE_cnt(fp) &&
11910 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11911 )) {
11912 puts("Fail even to read");
11913 exit (1);
11914 }
11915 ptr = (char*) FILE_ptr(fp);
11916 cnt = (size_t)FILE_cnt(fp);
11917
11918 FILE_ptr(fp) += 42;
11919
11920 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11921 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11922 exit (1);
11923 }
11924 if (FILE_cnt(fp) <= 20) {
11925 printf ("Fail (<20 chars to test)");
11926 exit (1);
11927 }
11928 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11929 puts("Fail compare");
11930 exit (1);
11931 }
11932 if (cnt == FILE_cnt(fp)) {
11933 puts("Pass_unchanged");
11934 exit (0);
11935 }
11936 if (FILE_cnt(fp) == (cnt - 42)) {
11937 puts("Pass_changed");
11938 exit (0);
11939 }
11940 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11941 return 1;
11942
11943}
11944EOP
11945 set try
11946 if eval $compile && $to try.c; then
11947 case `$run ./try` in
11948 Pass_changed)
11949 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11950 d_stdio_ptr_lval_sets_cnt="$define" ;;
11951 Pass_unchanged)
11952 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11953 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11954 Fail*)
11955 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11956 *)
11957 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11958 esac
11959 else
11960 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11961 fi
11962 $rm -f try.c try
11963 ;;
11964esac
11965
11966: see if _base is also standard
11967val="$undef"
11968case "$d_stdstdio" in
11969$define)
11970 $cat >try.c <<EOP
11971#include <stdio.h>
11972#$i_stdlib I_STDLIB
11973#ifdef I_STDLIB
11974#include <stdlib.h>
11975#endif
11976#define FILE_base(fp) $stdio_base
11977#define FILE_bufsiz(fp) $stdio_bufsiz
11978int main() {
11979 FILE *fp = fopen("try.c", "r");
11980 char c = getc(fp);
11981 if (
11982 19 <= FILE_bufsiz(fp) &&
11983 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11984 )
11985 exit(0);
11986 exit(1);
11987}
11988EOP
11989 set try
11990 if eval $compile && $to try.c; then
11991 if $run ./try; then
11992 echo "And its _base field acts std."
11993 val="$define"
11994 else
11995 echo "But its _base field isn't std."
11996 fi
11997 else
11998 echo "However, it seems to be lacking the _base field."
11999 fi
12000 $rm -f try.c try
12001 ;;
12002esac
12003set d_stdiobase
12004eval $setvar
12005
12006: see if fast_stdio exists
12007val="$undef"
12008case "$d_stdstdio:$d_stdio_ptr_lval" in
12009"$define:$define")
12010 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12011 *$define*)
12012 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12013 val="$define"
12014 ;;
12015 esac
12016 ;;
12017esac
12018set d_faststdio
12019eval $setvar
12020
12021
12022
12023: see if fchdir exists
12024set fchdir d_fchdir
12025eval $inlibc
12026
12027: see if fchmod exists
12028set fchmod d_fchmod
12029eval $inlibc
12030
12031: see if fchown exists
12032set fchown d_fchown
12033eval $inlibc
12034
12035: see if this is an fcntl system
12036set fcntl d_fcntl
12037eval $inlibc
12038
12039echo " "
12040: See if fcntl-based locking works.
12041$cat >try.c <<EOCP
12042#$i_stdlib I_STDLIB
12043#ifdef I_STDLIB
12044#include <stdlib.h>
12045#endif
12046#include <unistd.h>
12047#include <fcntl.h>
12048#include <signal.h>
12049$signal_t blech(x) int x; { exit(3); }
12050int main() {
12051#if defined(F_SETLK) && defined(F_SETLKW)
12052 struct flock flock;
12053 int retval, fd;
12054 fd = open("try.c", O_RDONLY);
12055 flock.l_type = F_RDLCK;
12056 flock.l_whence = SEEK_SET;
12057 flock.l_start = flock.l_len = 0;
12058 signal(SIGALRM, blech);
12059 alarm(10);
12060 retval = fcntl(fd, F_SETLK, &flock);
12061 close(fd);
12062 (retval < 0 ? exit(2) : exit(0));
12063#else
12064 exit(2);
12065#endif
12066}
12067EOCP
12068echo "Checking if fcntl-based file locking works... "
12069case "$d_fcntl" in
12070"$define")
12071 set try
12072 if eval $compile_ok; then
12073 if $run ./try; then
12074 echo "Yes, it seems to work."
12075 val="$define"
12076 else
12077 echo "Nope, it didn't work."
12078 val="$undef"
12079 case "$?" in
12080 3) $cat >&4 <<EOM
12081***
12082*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12083*** This is (almost) impossible.
12084*** If your NFS lock daemons are not feeling well, something like
12085*** this may happen, please investigate. Cannot continue, aborting.
12086***
12087EOM
12088 exit 1
12089 ;;
12090 esac
12091 fi
12092 else
12093 echo "I'm unable to compile the test program, so I'll assume not."
12094 val="$undef"
12095 fi
12096 ;;
12097*) val="$undef";
12098 echo "Nope, since you don't even have fcntl()."
12099 ;;
12100esac
12101set d_fcntl_can_lock
12102eval $setvar
12103$rm -f try*
12104
12105
12106: check for fd_set items
12107$cat <<EOM
12108
12109Checking to see how well your C compiler handles fd_set and friends ...
12110EOM
12111$cat >try.c <<EOCP
12112#$i_stdlib I_STDLIB
12113#ifdef I_STDLIB
12114#include <stdlib.h>
12115#endif
12116#$i_systime I_SYS_TIME
12117#$i_sysselct I_SYS_SELECT
12118#$d_socket HAS_SOCKET
12119#include <sys/types.h>
12120#ifdef HAS_SOCKET
12121#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12122#endif
12123#ifdef I_SYS_TIME
12124#include <sys/time.h>
12125#endif
12126#ifdef I_SYS_SELECT
12127#include <sys/select.h>
12128#endif
12129int main() {
12130 fd_set fds;
12131
12132#ifdef TRYBITS
12133 if(fds.fds_bits);
12134#endif
12135
12136#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12137 exit(0);
12138#else
12139 exit(1);
12140#endif
12141}
12142EOCP
12143set try -DTRYBITS
12144if eval $compile; then
12145 d_fds_bits="$define"
12146 d_fd_set="$define"
12147 echo "Well, your system knows about the normal fd_set typedef..." >&4
12148 if $run ./try; then
b4eb6b3d
JH
12149 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12150 d_fd_macros="$define"
12151 else
12152 $cat >&4 <<'EOM'
12153but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12154EOM
12155 d_fd_macros="$undef"
12156 fi
12157else
12158 $cat <<'EOM'
12159Hmm, your compiler has some difficulty with fd_set. Checking further...
12160EOM
5440bc8e 12161 set try
b4eb6b3d
JH
12162 if eval $compile; then
12163 d_fds_bits="$undef"
12164 d_fd_set="$define"
12165 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 12166 if $run ./try; then
b4eb6b3d
JH
12167 echo "and you have the normal fd_set macros." >&4
12168 d_fd_macros="$define"
12169 else
12170 $cat <<'EOM'
12171but not the normal fd_set macros! Gross! More work for me...
12172EOM
12173 d_fd_macros="$undef"
12174 fi
12175 else
12176 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12177 d_fd_set="$undef"
12178 d_fds_bits="$undef"
12179 d_fd_macros="$undef"
12180 fi
12181fi
5440bc8e 12182$rm -f try try.*
b4eb6b3d
JH
12183
12184: see if fgetpos exists
12185set fgetpos d_fgetpos
12186eval $inlibc
12187
758a5d79
JH
12188: see if finite exists
12189set finite d_finite
12190eval $inlibc
12191
12192: see if finitel exists
12193set finitel d_finitel
12194eval $inlibc
12195
b4eb6b3d
JH
12196: see if flock exists
12197set flock d_flock
12198eval $inlibc
12199
2ef53570
JH
12200: see if prototype for flock is available
12201echo " "
12202set d_flockproto flock $i_sysfile sys/file.h
12203eval $hasproto
12204
b4eb6b3d
JH
12205: see if fork exists
12206set fork d_fork
12207eval $inlibc
12208
758a5d79
JH
12209: see if fp_class exists
12210set fp_class d_fp_class
12211eval $inlibc
12212
b4eb6b3d
JH
12213: see if pathconf exists
12214set pathconf d_pathconf
12215eval $inlibc
12216
12217: see if fpathconf exists
12218set fpathconf d_fpathconf
12219eval $inlibc
12220
758a5d79
JH
12221: see if fpclass exists
12222set fpclass d_fpclass
12223eval $inlibc
12224
12225: see if fpclassify exists
12226set fpclassify d_fpclassify
12227eval $inlibc
12228
12229: see if fpclassl exists
12230set fpclassl d_fpclassl
12231eval $inlibc
12232
b4eb6b3d
JH
12233
12234: check for fpos64_t
12235echo " "
12236echo "Checking to see if you have fpos64_t..." >&4
12237$cat >try.c <<EOCP
12238#include <stdio.h>
12239int main() { fpos64_t x = 7; }
12240EOCP
12241set try
12242if eval $compile; then
12243 val="$define"
12244 echo "You have fpos64_t."
12245else
12246 val="$undef"
12247 echo "You do not have fpos64_t."
12248 case "$fpossize" in
12249 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12250 esac
12251fi
12252$rm -f try.* try
12253set d_fpos64_t
12254eval $setvar
12255
12256: see if frexpl exists
12257set frexpl d_frexpl
12258eval $inlibc
12259
b4eb6b3d
JH
12260: see if this is a sys/param system
12261set sys/param.h i_sysparam
12262eval $inhdr
12263
12264: see if this is a sys/mount.h system
12265set sys/mount.h i_sysmount
12266eval $inhdr
12267
b4eb6b3d
JH
12268
12269echo " "
12270echo "Checking to see if your system supports struct fs_data..." >&4
12271set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12272eval $hasstruct
12273case "$d_fs_data_s" in
12274"$define") echo "Yes, it does." ;;
12275*) echo "No, it doesn't." ;;
12276esac
12277
12278: see if fseeko exists
12279set fseeko d_fseeko
12280eval $inlibc
12281case "$longsize" in
122828) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12283esac
12284
12285: see if fsetpos exists
12286set fsetpos d_fsetpos
12287eval $inlibc
12288
12289
12290: see if fstatfs exists
12291set fstatfs d_fstatfs
12292eval $inlibc
12293
12294
12295: see if statvfs exists
12296set statvfs d_statvfs
12297eval $inlibc
12298
12299: see if fstatvfs exists
12300set fstatvfs d_fstatvfs
12301eval $inlibc
12302
12303
411ab01c
JH
12304: see if fsync exists
12305set fsync d_fsync
12306eval $inlibc
12307
b4eb6b3d
JH
12308: see if ftello exists
12309set ftello d_ftello
12310eval $inlibc
12311case "$longsize" in
123128) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12313esac
12314
12315: see if getcwd exists
12316set getcwd d_getcwd
12317eval $inlibc
12318
12319: see if getespwnam exists
12320set getespwnam d_getespwnam
12321eval $inlibc
12322
12323
12324: see if getfsstat exists
12325set getfsstat d_getfsstat
12326eval $inlibc
12327
12328: see if getgrent exists
12329set getgrent d_getgrent
12330eval $inlibc
12331
10bc17b6
JH
12332: see if getgrent_r exists
12333set getgrent_r d_getgrent_r
12334eval $inlibc
12335case "$d_getgrent_r" in
12336"$define")
12337 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12338 case "$d_getgrent_r_proto:$usethreads" in
12339 ":define") d_getgrent_r_proto=define
a48ec845
JH
12340 set d_getgrent_r_proto getgrent_r $hdrs
12341 eval $hasproto ;;
12342 *) ;;
12343 esac
12344 case "$d_getgrent_r_proto" in
12345 define)
10bc17b6
JH
12346 case "$getgrent_r_proto" in
12347 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12348 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12349 esac
12350 case "$getgrent_r_proto" in
12351 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12352 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12353 esac
12354 case "$getgrent_r_proto" in
12355 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12356 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12357 esac
12358 case "$getgrent_r_proto" in
12359 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12360 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12361 esac
12362 case "$getgrent_r_proto" in
12363 ''|0) try='int getgrent_r(struct group*, char*, int);'
12364 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12365 esac
12366 case "$getgrent_r_proto" in
12367 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12368 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12369 esac
12370 case "$getgrent_r_proto" in
90e831dc 12371 ''|0) d_getgrent_r=undef
10bc17b6 12372 getgrent_r_proto=0
a48ec845 12373 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12374 * ) case "$getgrent_r_proto" in
12375 REENTRANT_PROTO*) ;;
12376 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12377 esac
12378 echo "Prototype: $try" ;;
12379 esac
12380 ;;
c18e646a
JH
12381 *) case "$usethreads" in
12382 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12383 esac
90e831dc
SB
12384 d_getgrent_r=undef
12385 getgrent_r_proto=0
c18e646a 12386 ;;
a48ec845
JH
12387 esac
12388 ;;
10bc17b6
JH
12389*) getgrent_r_proto=0
12390 ;;
12391esac
12392
12393: see if getgrgid_r exists
12394set getgrgid_r d_getgrgid_r
12395eval $inlibc
12396case "$d_getgrgid_r" in
12397"$define")
12398 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12399 case "$d_getgrgid_r_proto:$usethreads" in
12400 ":define") d_getgrgid_r_proto=define
a48ec845
JH
12401 set d_getgrgid_r_proto getgrgid_r $hdrs
12402 eval $hasproto ;;
12403 *) ;;
12404 esac
12405 case "$d_getgrgid_r_proto" in
12406 define)
10bc17b6
JH
12407 case "$getgrgid_r_proto" in
12408 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12409 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12410 esac
12411 case "$getgrgid_r_proto" in
12412 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12413 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12414 esac
12415 case "$getgrgid_r_proto" in
12416 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12417 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12418 esac
12419 case "$getgrgid_r_proto" in
12420 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12421 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12422 esac
12423 case "$getgrgid_r_proto" in
90e831dc 12424 ''|0) d_getgrgid_r=undef
10bc17b6 12425 getgrgid_r_proto=0
a48ec845 12426 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12427 * ) case "$getgrgid_r_proto" in
12428 REENTRANT_PROTO*) ;;
12429 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12430 esac
12431 echo "Prototype: $try" ;;
12432 esac
12433 ;;
c18e646a
JH
12434 *) case "$usethreads" in
12435 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12436 esac
90e831dc
SB
12437 d_getgrgid_r=undef
12438 getgrgid_r_proto=0
c18e646a 12439 ;;
a48ec845
JH
12440 esac
12441 ;;
10bc17b6
JH
12442*) getgrgid_r_proto=0
12443 ;;
12444esac
12445
12446: see if getgrnam_r exists
12447set getgrnam_r d_getgrnam_r
12448eval $inlibc
12449case "$d_getgrnam_r" in
12450"$define")
12451 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12452 case "$d_getgrnam_r_proto:$usethreads" in
12453 ":define") d_getgrnam_r_proto=define
a48ec845
JH
12454 set d_getgrnam_r_proto getgrnam_r $hdrs
12455 eval $hasproto ;;
12456 *) ;;
12457 esac
12458 case "$d_getgrnam_r_proto" in
12459 define)
10bc17b6
JH
12460 case "$getgrnam_r_proto" in
12461 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12462 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12463 esac
12464 case "$getgrnam_r_proto" in
12465 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12466 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12467 esac
12468 case "$getgrnam_r_proto" in
12469 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12470 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12471 esac
12472 case "$getgrnam_r_proto" in
12473 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12474 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12475 esac
12476 case "$getgrnam_r_proto" in
12477 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12478 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12479 esac
12480 case "$getgrnam_r_proto" in
90e831dc 12481 ''|0) d_getgrnam_r=undef
10bc17b6 12482 getgrnam_r_proto=0
a48ec845 12483 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12484 * ) case "$getgrnam_r_proto" in
12485 REENTRANT_PROTO*) ;;
12486 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12487 esac
12488 echo "Prototype: $try" ;;
12489 esac
12490 ;;
c18e646a
JH
12491 *) case "$usethreads" in
12492 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12493 esac
90e831dc
SB
12494 d_getgrnam_r=undef
12495 getgrnam_r_proto=0
c18e646a 12496 ;;
a48ec845
JH
12497 esac
12498 ;;
10bc17b6
JH
12499*) getgrnam_r_proto=0
12500 ;;
12501esac
12502
b4eb6b3d
JH
12503: see if gethostbyaddr exists
12504set gethostbyaddr d_gethbyaddr
12505eval $inlibc
12506
12507: see if gethostbyname exists
12508set gethostbyname d_gethbyname
12509eval $inlibc
12510
12511: see if gethostent exists
12512set gethostent d_gethent
12513eval $inlibc
12514
12515: see how we will look up host name
12516echo " "
12517call=''
12518if set gethostname val -f d_gethname; eval $csym; $val; then
12519 echo 'gethostname() found.' >&4
12520 d_gethname="$define"
12521 call=gethostname
12522fi
12523if set uname val -f d_uname; eval $csym; $val; then
12524 if ./xenix; then
12525 $cat <<'EOM'
12526uname() was found, but you're running xenix, and older versions of xenix
12527have a broken uname(). If you don't really know whether your xenix is old
12528enough to have a broken system call, use the default answer.
12529
12530EOM
12531 dflt=y
12532 case "$d_uname" in
12533 "$define") dflt=n;;
12534 esac
12535 rp='Is your uname() broken?'
12536 . ./myread
12537 case "$ans" in
12538 n*) d_uname="$define"; call=uname;;
12539 esac
12540 else
12541 echo 'uname() found.' >&4
12542 d_uname="$define"
12543 case "$call" in
12544 '') call=uname ;;
12545 esac
12546 fi
12547fi
12548case "$d_gethname" in
12549'') d_gethname="$undef";;
12550esac
12551case "$d_uname" in
12552'') d_uname="$undef";;
12553esac
12554case "$d_uname$d_gethname" in
12555*define*)
12556 dflt=n
12557 cat <<EOM
12558
12559Every now and then someone has a $call() that lies about the hostname
12560but can't be fixed for political or economic reasons. If you wish, I can
12561pretend $call() isn't there and maybe compute hostname at run-time
12562thanks to the '$phostname' command.
12563
12564EOM
12565 rp="Shall I ignore $call() from now on?"
12566 . ./myread
12567 case "$ans" in
12568 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12569 esac;;
12570esac
12571case "$phostname" in
12572'') aphostname='';;
12573*) case "$aphostname" in
12574 /*) ;;
12575 *) set X $phostname
12576 shift
12577 file=$1
12578 shift
12579 file=`./loc $file $file $pth`
12580 aphostname=`echo $file $*`
12581 ;;
12582 esac
12583 ;;
12584esac
12585case "$d_uname$d_gethname" in
12586*define*) ;;
12587*)
12588 case "$phostname" in
12589 '')
12590 echo "There will be no way for $package to get your hostname." >&4;;
12591 *)
12592 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12593 ;;
12594 esac;;
12595esac
12596case "$d_phostname" in
12597'') d_phostname="$undef";;
12598esac
12599
10bc17b6
JH
12600: see if gethostbyaddr_r exists
12601set gethostbyaddr_r d_gethostbyaddr_r
12602eval $inlibc
12603case "$d_gethostbyaddr_r" in
12604"$define")
12605 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12606 case "$d_gethostbyaddr_r_proto:$usethreads" in
12607 ":define") d_gethostbyaddr_r_proto=define
a48ec845
JH
12608 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12609 eval $hasproto ;;
12610 *) ;;
12611 esac
12612 case "$d_gethostbyaddr_r_proto" in
12613 define)
10bc17b6
JH
12614 case "$gethostbyaddr_r_proto" in
12615 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12616 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12617 esac
12618 case "$gethostbyaddr_r_proto" in
12619 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12620 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12621 esac
12622 case "$gethostbyaddr_r_proto" in
12623 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12624 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12625 esac
12626 case "$gethostbyaddr_r_proto" in
12627 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12628 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12629 esac
12630 case "$gethostbyaddr_r_proto" in
12631 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12632 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12633 esac
12634 case "$gethostbyaddr_r_proto" in
12635 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12636 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12637 esac
12638 case "$gethostbyaddr_r_proto" in
12639 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12640 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12641 esac
12642 case "$gethostbyaddr_r_proto" in
12643 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12644 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12645 esac
12646 case "$gethostbyaddr_r_proto" in
12647 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12648 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12649 esac
12650 case "$gethostbyaddr_r_proto" in
12651 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12652 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12653 esac
12654 case "$gethostbyaddr_r_proto" in
a845a0d4
JH
12655 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12656 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12657 esac
12658 case "$gethostbyaddr_r_proto" in
90e831dc 12659 ''|0) d_gethostbyaddr_r=undef
10bc17b6 12660 gethostbyaddr_r_proto=0
a48ec845 12661 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12662 * ) case "$gethostbyaddr_r_proto" in
12663 REENTRANT_PROTO*) ;;
12664 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12665 esac
12666 echo "Prototype: $try" ;;
12667 esac
12668 ;;
c18e646a
JH
12669 *) case "$usethreads" in
12670 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12671 esac
90e831dc
SB
12672 d_gethostbyaddr_r=undef
12673 gethostbyaddr_r_proto=0
c18e646a 12674 ;;
a48ec845
JH
12675 esac
12676 ;;
10bc17b6
JH
12677*) gethostbyaddr_r_proto=0
12678 ;;
12679esac
12680
12681: see if gethostbyname_r exists
12682set gethostbyname_r d_gethostbyname_r
12683eval $inlibc
12684case "$d_gethostbyname_r" in
12685"$define")
12686 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12687 case "$d_gethostbyname_r_proto:$usethreads" in
12688 ":define") d_gethostbyname_r_proto=define
a48ec845
JH
12689 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12690 eval $hasproto ;;
12691 *) ;;
12692 esac
12693 case "$d_gethostbyname_r_proto" in
12694 define)
10bc17b6
JH
12695 case "$gethostbyname_r_proto" in
12696 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12697 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12698 esac
12699 case "$gethostbyname_r_proto" in
12700 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12701 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12702 esac
12703 case "$gethostbyname_r_proto" in
12704 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12705 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12706 esac
12707 case "$gethostbyname_r_proto" in
90e831dc 12708 ''|0) d_gethostbyname_r=undef
10bc17b6 12709 gethostbyname_r_proto=0
a48ec845 12710 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12711 * ) case "$gethostbyname_r_proto" in
12712 REENTRANT_PROTO*) ;;
12713 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12714 esac
12715 echo "Prototype: $try" ;;
12716 esac
12717 ;;
c18e646a
JH
12718 *) case "$usethreads" in
12719 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12720 esac
90e831dc
SB
12721 d_gethostbyname_r=undef
12722 gethostbyname_r_proto=0
c18e646a 12723 ;;
a48ec845
JH
12724 esac
12725 ;;
10bc17b6
JH
12726*) gethostbyname_r_proto=0
12727 ;;
12728esac
12729
12730: see if gethostent_r exists
12731set gethostent_r d_gethostent_r
12732eval $inlibc
12733case "$d_gethostent_r" in
12734"$define")
12735 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12736 case "$d_gethostent_r_proto:$usethreads" in
12737 ":define") d_gethostent_r_proto=define
a48ec845
JH
12738 set d_gethostent_r_proto gethostent_r $hdrs
12739 eval $hasproto ;;
12740 *) ;;
12741 esac
12742 case "$d_gethostent_r_proto" in
12743 define)
10bc17b6
JH
12744 case "$gethostent_r_proto" in
12745 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12746 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12747 esac
12748 case "$gethostent_r_proto" in
12749 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12750 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12751 esac
12752 case "$gethostent_r_proto" in
12753 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12754 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12755 esac
12756 case "$gethostent_r_proto" in
12757 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12758 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12759 esac
12760 case "$gethostent_r_proto" in
12761 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12762 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12763 esac
12764 case "$gethostent_r_proto" in
12765 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12766 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12767 esac
12768 case "$gethostent_r_proto" in
90e831dc 12769 ''|0) d_gethostent_r=undef
10bc17b6 12770 gethostent_r_proto=0
a48ec845 12771 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12772 * ) case "$gethostent_r_proto" in
12773 REENTRANT_PROTO*) ;;
12774 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12775 esac
12776 echo "Prototype: $try" ;;
12777 esac
12778 ;;
c18e646a
JH
12779 *) case "$usethreads" in
12780 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12781 esac
90e831dc
SB
12782 d_gethostent_r=undef
12783 gethostent_r_proto=0
c18e646a 12784 ;;
a48ec845
JH
12785 esac
12786 ;;
10bc17b6
JH
12787*) gethostent_r_proto=0
12788 ;;
12789esac
b4eb6b3d
JH
12790
12791: see if prototypes for various gethostxxx netdb.h functions are available
12792echo " "
12793set d_gethostprotos gethostent $i_netdb netdb.h
12794eval $hasproto
12795
4e0554ec
JH
12796: see if getitimer exists
12797set getitimer d_getitimer
12798eval $inlibc
12799
b4eb6b3d
JH
12800: see if getlogin exists
12801set getlogin d_getlogin
12802eval $inlibc
12803
10bc17b6
JH
12804: see if getlogin_r exists
12805set getlogin_r d_getlogin_r
12806eval $inlibc
12807case "$d_getlogin_r" in
12808"$define")
12809 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
12810 case "$d_getlogin_r_proto:$usethreads" in
12811 ":define") d_getlogin_r_proto=define
a48ec845
JH
12812 set d_getlogin_r_proto getlogin_r $hdrs
12813 eval $hasproto ;;
12814 *) ;;
12815 esac
12816 case "$d_getlogin_r_proto" in
12817 define)
10bc17b6
JH
12818 case "$getlogin_r_proto" in
12819 ''|0) try='int getlogin_r(char*, size_t);'
12820 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12821 esac
12822 case "$getlogin_r_proto" in
12823 ''|0) try='int getlogin_r(char*, int);'
12824 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12825 esac
12826 case "$getlogin_r_proto" in
12827 ''|0) try='char* getlogin_r(char*, size_t);'
12828 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12829 esac
12830 case "$getlogin_r_proto" in
12831 ''|0) try='char* getlogin_r(char*, int);'
12832 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12833 esac
12834 case "$getlogin_r_proto" in
90e831dc 12835 ''|0) d_getlogin_r=undef
10bc17b6 12836 getlogin_r_proto=0
a48ec845 12837 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12838 * ) case "$getlogin_r_proto" in
12839 REENTRANT_PROTO*) ;;
12840 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12841 esac
12842 echo "Prototype: $try" ;;
12843 esac
12844 ;;
c18e646a
JH
12845 *) case "$usethreads" in
12846 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12847 esac
90e831dc
SB
12848 d_getlogin_r=undef
12849 getlogin_r_proto=0
c18e646a 12850 ;;
a48ec845
JH
12851 esac
12852 ;;
10bc17b6
JH
12853*) getlogin_r_proto=0
12854 ;;
12855esac
12856
b4eb6b3d
JH
12857: see if getmnt exists
12858set getmnt d_getmnt
12859eval $inlibc
12860
12861: see if getmntent exists
12862set getmntent d_getmntent
12863eval $inlibc
12864
12865: see if getnetbyaddr exists
12866set getnetbyaddr d_getnbyaddr
12867eval $inlibc
12868
12869: see if getnetbyname exists
12870set getnetbyname d_getnbyname
12871eval $inlibc
12872
12873: see if getnetent exists
12874set getnetent d_getnent
12875eval $inlibc
12876
10bc17b6
JH
12877: see if getnetbyaddr_r exists
12878set getnetbyaddr_r d_getnetbyaddr_r
12879eval $inlibc
12880case "$d_getnetbyaddr_r" in
12881"$define")
12882 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12883 case "$d_getnetbyaddr_r_proto:$usethreads" in
12884 ":define") d_getnetbyaddr_r_proto=define
a48ec845
JH
12885 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12886 eval $hasproto ;;
12887 *) ;;
12888 esac
12889 case "$d_getnetbyaddr_r_proto" in
12890 define)
10bc17b6
JH
12891 case "$getnetbyaddr_r_proto" in
12892 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12893 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12894 esac
12895 case "$getnetbyaddr_r_proto" in
12896 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12897 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12898 esac
12899 case "$getnetbyaddr_r_proto" in
12900 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12901 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12902 esac
12903 case "$getnetbyaddr_r_proto" in
12904 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12905 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12906 esac
12907 case "$getnetbyaddr_r_proto" in
12908 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12909 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12910 esac
12911 case "$getnetbyaddr_r_proto" in
12912 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12913 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12914 esac
12915 case "$getnetbyaddr_r_proto" in
12916 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12917 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12918 esac
12919 case "$getnetbyaddr_r_proto" in
a845a0d4
JH
12920 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12921 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12922 esac
12923 case "$getnetbyaddr_r_proto" in
90e831dc 12924 ''|0) d_getnetbyaddr_r=undef
10bc17b6 12925 getnetbyaddr_r_proto=0
a48ec845 12926 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12927 * ) case "$getnetbyaddr_r_proto" in
12928 REENTRANT_PROTO*) ;;
12929 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12930 esac
12931 echo "Prototype: $try" ;;
12932 esac
12933 ;;
c18e646a
JH
12934 *) case "$usethreads" in
12935 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12936 esac
90e831dc
SB
12937 d_getnetbyaddr_r=undef
12938 getnetbyaddr_r_proto=0
c18e646a 12939 ;;
a48ec845
JH
12940 esac
12941 ;;
10bc17b6
JH
12942*) getnetbyaddr_r_proto=0
12943 ;;
12944esac
12945
12946: see if getnetbyname_r exists
12947set getnetbyname_r d_getnetbyname_r
12948eval $inlibc
12949case "$d_getnetbyname_r" in
12950"$define")
12951 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12952 case "$d_getnetbyname_r_proto:$usethreads" in
12953 ":define") d_getnetbyname_r_proto=define
a48ec845
JH
12954 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12955 eval $hasproto ;;
12956 *) ;;
12957 esac
12958 case "$d_getnetbyname_r_proto" in
12959 define)
10bc17b6
JH
12960 case "$getnetbyname_r_proto" in
12961 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12962 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12963 esac
12964 case "$getnetbyname_r_proto" in
12965 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12966 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12967 esac
12968 case "$getnetbyname_r_proto" in
12969 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12970 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12971 esac
12972 case "$getnetbyname_r_proto" in
12973 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12974 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12975 esac
12976 case "$getnetbyname_r_proto" in
90e831dc 12977 ''|0) d_getnetbyname_r=undef
10bc17b6 12978 getnetbyname_r_proto=0
a48ec845 12979 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12980 * ) case "$getnetbyname_r_proto" in
12981 REENTRANT_PROTO*) ;;
12982 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12983 esac
12984 echo "Prototype: $try" ;;
12985 esac
12986 ;;
c18e646a
JH
12987 *) case "$usethreads" in
12988 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12989 esac
90e831dc
SB
12990 d_getnetbyname_r=undef
12991 getnetbyname_r_proto=0
c18e646a 12992 ;;
a48ec845
JH
12993 esac
12994 ;;
10bc17b6
JH
12995*) getnetbyname_r_proto=0
12996 ;;
12997esac
12998
12999: see if getnetent_r exists
13000set getnetent_r d_getnetent_r
13001eval $inlibc
13002case "$d_getnetent_r" in
13003"$define")
13004 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13005 case "$d_getnetent_r_proto:$usethreads" in
13006 ":define") d_getnetent_r_proto=define
a48ec845
JH
13007 set d_getnetent_r_proto getnetent_r $hdrs
13008 eval $hasproto ;;
13009 *) ;;
13010 esac
13011 case "$d_getnetent_r_proto" in
13012 define)
10bc17b6
JH
13013 case "$getnetent_r_proto" in
13014 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13015 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13016 esac
13017 case "$getnetent_r_proto" in
13018 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13019 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13020 esac
13021 case "$getnetent_r_proto" in
13022 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13023 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13024 esac
13025 case "$getnetent_r_proto" in
13026 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13027 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13028 esac
13029 case "$getnetent_r_proto" in
13030 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13031 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13032 esac
13033 case "$getnetent_r_proto" in
13034 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13035 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13036 esac
13037 case "$getnetent_r_proto" in
90e831dc 13038 ''|0) d_getnetent_r=undef
10bc17b6 13039 getnetent_r_proto=0
a48ec845 13040 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13041 * ) case "$getnetent_r_proto" in
13042 REENTRANT_PROTO*) ;;
13043 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13044 esac
13045 echo "Prototype: $try" ;;
13046 esac
13047 ;;
c18e646a
JH
13048 *) case "$usethreads" in
13049 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13050 esac
90e831dc
SB
13051 d_getnetent_r=undef
13052 getnetent_r_proto=0
c18e646a 13053 ;;
a48ec845
JH
13054 esac
13055 ;;
10bc17b6
JH
13056*) getnetent_r_proto=0
13057 ;;
13058esac
13059
b4eb6b3d
JH
13060: see if prototypes for various getnetxxx netdb.h functions are available
13061echo " "
13062set d_getnetprotos getnetent $i_netdb netdb.h
13063eval $hasproto
13064
0c0643d0
JH
13065: see if getpagesize exists
13066set getpagesize d_getpagsz
13067eval $inlibc
13068
b4eb6b3d
JH
13069
13070: see if getprotobyname exists
13071set getprotobyname d_getpbyname
13072eval $inlibc
13073
13074: see if getprotobynumber exists
13075set getprotobynumber d_getpbynumber
13076eval $inlibc
13077
13078: see if getprotoent exists
13079set getprotoent d_getpent
13080eval $inlibc
13081
13082: see if getpgid exists
13083set getpgid d_getpgid
13084eval $inlibc
13085
13086: see if getpgrp2 exists
13087set getpgrp2 d_getpgrp2
13088eval $inlibc
13089
13090: see if getppid exists
13091set getppid d_getppid
13092eval $inlibc
13093
13094: see if getpriority exists
13095set getpriority d_getprior
13096eval $inlibc
13097
10bc17b6
JH
13098: see if getprotobyname_r exists
13099set getprotobyname_r d_getprotobyname_r
13100eval $inlibc
13101case "$d_getprotobyname_r" in
13102"$define")
13103 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13104 case "$d_getprotobyname_r_proto:$usethreads" in
13105 ":define") d_getprotobyname_r_proto=define
a48ec845
JH
13106 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13107 eval $hasproto ;;
13108 *) ;;
13109 esac
13110 case "$d_getprotobyname_r_proto" in
13111 define)
10bc17b6
JH
13112 case "$getprotobyname_r_proto" in
13113 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13114 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13115 esac
13116 case "$getprotobyname_r_proto" in
13117 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13118 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13119 esac
13120 case "$getprotobyname_r_proto" in
13121 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13122 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13123 esac
13124 case "$getprotobyname_r_proto" in
90e831dc 13125 ''|0) d_getprotobyname_r=undef
10bc17b6 13126 getprotobyname_r_proto=0
a48ec845 13127 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13128 * ) case "$getprotobyname_r_proto" in
13129 REENTRANT_PROTO*) ;;
13130 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13131 esac
13132 echo "Prototype: $try" ;;
13133 esac
13134 ;;
c18e646a
JH
13135 *) case "$usethreads" in
13136 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13137 esac
90e831dc
SB
13138 d_getprotobyname_r=undef
13139 getprotobyname_r_proto=0
c18e646a 13140 ;;
a48ec845
JH
13141 esac
13142 ;;
10bc17b6
JH
13143*) getprotobyname_r_proto=0
13144 ;;
13145esac
13146
13147: see if getprotobynumber_r exists
13148set getprotobynumber_r d_getprotobynumber_r
13149eval $inlibc
13150case "$d_getprotobynumber_r" in
13151"$define")
13152 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13153 case "$d_getprotobynumber_r_proto:$usethreads" in
13154 ":define") d_getprotobynumber_r_proto=define
a48ec845
JH
13155 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13156 eval $hasproto ;;
13157 *) ;;
13158 esac
13159 case "$d_getprotobynumber_r_proto" in
13160 define)
10bc17b6
JH
13161 case "$getprotobynumber_r_proto" in
13162 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13163 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13164 esac
13165 case "$getprotobynumber_r_proto" in
13166 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13167 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13168 esac
13169 case "$getprotobynumber_r_proto" in
13170 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13171 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13172 esac
13173 case "$getprotobynumber_r_proto" in
90e831dc 13174 ''|0) d_getprotobynumber_r=undef
10bc17b6 13175 getprotobynumber_r_proto=0
a48ec845 13176 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13177 * ) case "$getprotobynumber_r_proto" in
13178 REENTRANT_PROTO*) ;;
13179 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13180 esac
13181 echo "Prototype: $try" ;;
13182 esac
13183 ;;
c18e646a
JH
13184 *) case "$usethreads" in
13185 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13186 esac
90e831dc
SB
13187 d_getprotobynumber_r=undef
13188 getprotobynumber_r_proto=0
c18e646a 13189 ;;
a48ec845
JH
13190 esac
13191 ;;
10bc17b6
JH
13192*) getprotobynumber_r_proto=0
13193 ;;
13194esac
13195
13196: see if getprotoent_r exists
13197set getprotoent_r d_getprotoent_r
13198eval $inlibc
13199case "$d_getprotoent_r" in
13200"$define")
13201 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13202 case "$d_getprotoent_r_proto:$usethreads" in
13203 ":define") d_getprotoent_r_proto=define
a48ec845
JH
13204 set d_getprotoent_r_proto getprotoent_r $hdrs
13205 eval $hasproto ;;
13206 *) ;;
13207 esac
13208 case "$d_getprotoent_r_proto" in
13209 define)
10bc17b6
JH
13210 case "$getprotoent_r_proto" in
13211 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13212 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13213 esac
13214 case "$getprotoent_r_proto" in
13215 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13216 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13217 esac
13218 case "$getprotoent_r_proto" in
13219 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13220 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13221 esac
13222 case "$getprotoent_r_proto" in
13223 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13224 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13225 esac
13226 case "$getprotoent_r_proto" in
90e831dc 13227 ''|0) d_getprotoent_r=undef
10bc17b6 13228 getprotoent_r_proto=0
a48ec845 13229 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13230 * ) case "$getprotoent_r_proto" in
13231 REENTRANT_PROTO*) ;;
13232 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13233 esac
13234 echo "Prototype: $try" ;;
13235 esac
13236 ;;
c18e646a
JH
13237 *) case "$usethreads" in
13238 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13239 esac
90e831dc
SB
13240 d_getprotoent_r=undef
13241 getprotoent_r_proto=0
c18e646a 13242 ;;
a48ec845
JH
13243 esac
13244 ;;
10bc17b6
JH
13245*) getprotoent_r_proto=0
13246 ;;
13247esac
13248
b4eb6b3d
JH
13249: see if prototypes for various getprotoxxx netdb.h functions are available
13250echo " "
13251set d_getprotoprotos getprotoent $i_netdb netdb.h
13252eval $hasproto
13253
13254: see if getprpwnam exists
13255set getprpwnam d_getprpwnam
13256eval $inlibc
13257
13258: see if getpwent exists
13259set getpwent d_getpwent
13260eval $inlibc
13261
10bc17b6
JH
13262: see if getpwent_r exists
13263set getpwent_r d_getpwent_r
13264eval $inlibc
13265case "$d_getpwent_r" in
13266"$define")
13267 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13268 case "$d_getpwent_r_proto:$usethreads" in
13269 ":define") d_getpwent_r_proto=define
a48ec845
JH
13270 set d_getpwent_r_proto getpwent_r $hdrs
13271 eval $hasproto ;;
13272 *) ;;
13273 esac
13274 case "$d_getpwent_r_proto" in
13275 define)
10bc17b6
JH
13276 case "$getpwent_r_proto" in
13277 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13278 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13279 esac
13280 case "$getpwent_r_proto" in
13281 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13282 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13283 esac
13284 case "$getpwent_r_proto" in
13285 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13286 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13287 esac
13288 case "$getpwent_r_proto" in
13289 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13290 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13291 esac
13292 case "$getpwent_r_proto" in
13293 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13294 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13295 esac
13296 case "$getpwent_r_proto" in
13297 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13298 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13299 esac
13300 case "$getpwent_r_proto" in
90e831dc 13301 ''|0) d_getpwent_r=undef
10bc17b6 13302 getpwent_r_proto=0
a48ec845 13303 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13304 * ) case "$getpwent_r_proto" in
13305 REENTRANT_PROTO*) ;;
13306 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13307 esac
13308 echo "Prototype: $try" ;;
13309 esac
13310 ;;
c18e646a
JH
13311 *) case "$usethreads" in
13312 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13313 esac
90e831dc
SB
13314 d_getpwent_r=undef
13315 getpwent_r_proto=0
c18e646a 13316 ;;
a48ec845
JH
13317 esac
13318 ;;
10bc17b6
JH
13319*) getpwent_r_proto=0
13320 ;;
13321esac
13322
13323: see if getpwnam_r exists
13324set getpwnam_r d_getpwnam_r
13325eval $inlibc
13326case "$d_getpwnam_r" in
13327"$define")
13328 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13329 case "$d_getpwnam_r_proto:$usethreads" in
13330 ":define") d_getpwnam_r_proto=define
a48ec845
JH
13331 set d_getpwnam_r_proto getpwnam_r $hdrs
13332 eval $hasproto ;;
13333 *) ;;
13334 esac
13335 case "$d_getpwnam_r_proto" in
13336 define)
10bc17b6
JH
13337 case "$getpwnam_r_proto" in
13338 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13339 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13340 esac
13341 case "$getpwnam_r_proto" in
13342 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13343 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13344 esac
13345 case "$getpwnam_r_proto" in
13346 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13347 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13348 esac
13349 case "$getpwnam_r_proto" in
13350 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13351 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13352 esac
13353 case "$getpwnam_r_proto" in
90e831dc 13354 ''|0) d_getpwnam_r=undef
10bc17b6 13355 getpwnam_r_proto=0
a48ec845 13356 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13357 * ) case "$getpwnam_r_proto" in
13358 REENTRANT_PROTO*) ;;
13359 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13360 esac
13361 echo "Prototype: $try" ;;
13362 esac
13363 ;;
c18e646a
JH
13364 *) case "$usethreads" in
13365 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13366 esac
90e831dc
SB
13367 d_getpwnam_r=undef
13368 getpwnam_r_proto=0
c18e646a 13369 ;;
a48ec845
JH
13370 esac
13371 ;;
10bc17b6
JH
13372*) getpwnam_r_proto=0
13373 ;;
13374esac
13375
13376: see if getpwuid_r exists
13377set getpwuid_r d_getpwuid_r
13378eval $inlibc
13379case "$d_getpwuid_r" in
13380"$define")
13381 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13382 case "$d_getpwuid_r_proto:$usethreads" in
13383 ":define") d_getpwuid_r_proto=define
a48ec845
JH
13384 set d_getpwuid_r_proto getpwuid_r $hdrs
13385 eval $hasproto ;;
13386 *) ;;
13387 esac
13388 case "$d_getpwuid_r_proto" in
13389 define)
10bc17b6
JH
13390 case "$getpwuid_r_proto" in
13391 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13392 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13393 esac
13394 case "$getpwuid_r_proto" in
13395 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13396 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13397 esac
13398 case "$getpwuid_r_proto" in
13399 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13400 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13401 esac
13402 case "$getpwuid_r_proto" in
13403 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13404 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13405 esac
13406 case "$getpwuid_r_proto" in
90e831dc 13407 ''|0) d_getpwuid_r=undef
10bc17b6 13408 getpwuid_r_proto=0
a48ec845 13409 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13410 * ) case "$getpwuid_r_proto" in
13411 REENTRANT_PROTO*) ;;
13412 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13413 esac
13414 echo "Prototype: $try" ;;
13415 esac
13416 ;;
c18e646a
JH
13417 *) case "$usethreads" in
13418 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13419 esac
90e831dc
SB
13420 d_getpwuid_r=undef
13421 getpwuid_r_proto=0
c18e646a 13422 ;;
a48ec845
JH
13423 esac
13424 ;;
10bc17b6
JH
13425*) getpwuid_r_proto=0
13426 ;;
13427esac
13428
b4eb6b3d
JH
13429
13430: see if getservbyname exists
13431set getservbyname d_getsbyname
13432eval $inlibc
13433
13434: see if getservbyport exists
13435set getservbyport d_getsbyport
13436eval $inlibc
13437
13438: see if getservent exists
13439set getservent d_getsent
13440eval $inlibc
13441
10bc17b6
JH
13442: see if getservbyname_r exists
13443set getservbyname_r d_getservbyname_r
13444eval $inlibc
13445case "$d_getservbyname_r" in
13446"$define")
13447 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13448 case "$d_getservbyname_r_proto:$usethreads" in
13449 ":define") d_getservbyname_r_proto=define
a48ec845
JH
13450 set d_getservbyname_r_proto getservbyname_r $hdrs
13451 eval $hasproto ;;
13452 *) ;;
13453 esac
13454 case "$d_getservbyname_r_proto" in
13455 define)
10bc17b6
JH
13456 case "$getservbyname_r_proto" in
13457 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13458 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13459 esac
13460 case "$getservbyname_r_proto" in
13461 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13462 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13463 esac
13464 case "$getservbyname_r_proto" in
13465 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13466 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13467 esac
13468 case "$getservbyname_r_proto" in
90e831dc 13469 ''|0) d_getservbyname_r=undef
10bc17b6 13470 getservbyname_r_proto=0
a48ec845 13471 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13472 * ) case "$getservbyname_r_proto" in
13473 REENTRANT_PROTO*) ;;
13474 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13475 esac
13476 echo "Prototype: $try" ;;
13477 esac
13478 ;;
c18e646a
JH
13479 *) case "$usethreads" in
13480 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13481 esac
90e831dc
SB
13482 d_getservbyname_r=undef
13483 getservbyname_r_proto=0
c18e646a 13484 ;;
a48ec845
JH
13485 esac
13486 ;;
10bc17b6
JH
13487*) getservbyname_r_proto=0
13488 ;;
13489esac
13490
13491: see if getservbyport_r exists
13492set getservbyport_r d_getservbyport_r
13493eval $inlibc
13494case "$d_getservbyport_r" in
13495"$define")
13496 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13497 case "$d_getservbyport_r_proto:$usethreads" in
13498 ":define") d_getservbyport_r_proto=define
a48ec845
JH
13499 set d_getservbyport_r_proto getservbyport_r $hdrs
13500 eval $hasproto ;;
13501 *) ;;
13502 esac
13503 case "$d_getservbyport_r_proto" in
13504 define)
10bc17b6
JH
13505 case "$getservbyport_r_proto" in
13506 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13507 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13508 esac
13509 case "$getservbyport_r_proto" in
13510 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13511 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13512 esac
13513 case "$getservbyport_r_proto" in
13514 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13515 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13516 esac
13517 case "$getservbyport_r_proto" in
90e831dc 13518 ''|0) d_getservbyport_r=undef
10bc17b6 13519 getservbyport_r_proto=0
a48ec845 13520 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13521 * ) case "$getservbyport_r_proto" in
13522 REENTRANT_PROTO*) ;;
13523 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13524 esac
13525 echo "Prototype: $try" ;;
13526 esac
13527 ;;
c18e646a
JH
13528 *) case "$usethreads" in
13529 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13530 esac
90e831dc
SB
13531 d_getservbyport_r=undef
13532 getservbyport_r_proto=0
c18e646a 13533 ;;
a48ec845
JH
13534 esac
13535 ;;
10bc17b6
JH
13536*) getservbyport_r_proto=0
13537 ;;
13538esac
13539
13540: see if getservent_r exists
13541set getservent_r d_getservent_r
13542eval $inlibc
13543case "$d_getservent_r" in
13544"$define")
13545 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13546 case "$d_getservent_r_proto:$usethreads" in
13547 ":define") d_getservent_r_proto=define
a48ec845
JH
13548 set d_getservent_r_proto getservent_r $hdrs
13549 eval $hasproto ;;
13550 *) ;;
13551 esac
13552 case "$d_getservent_r_proto" in
13553 define)
10bc17b6
JH
13554 case "$getservent_r_proto" in
13555 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13556 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13557 esac
13558 case "$getservent_r_proto" in
13559 ''|0) try='int getservent_r(struct servent*, char*, int);'
13560 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13561 esac
13562 case "$getservent_r_proto" in
13563 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13564 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13565 esac
13566 case "$getservent_r_proto" in
13567 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13568 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13569 esac
13570 case "$getservent_r_proto" in
90e831dc 13571 ''|0) d_getservent_r=undef
10bc17b6 13572 getservent_r_proto=0
a48ec845 13573 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13574 * ) case "$getservent_r_proto" in
13575 REENTRANT_PROTO*) ;;
13576 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13577 esac
13578 echo "Prototype: $try" ;;
13579 esac
13580 ;;
c18e646a
JH
13581 *) case "$usethreads" in
13582 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13583 esac
90e831dc
SB
13584 d_getservent_r=undef
13585 getservent_r_proto=0
c18e646a 13586 ;;
a48ec845
JH
13587 esac
13588 ;;
10bc17b6
JH
13589*) getservent_r_proto=0
13590 ;;
13591esac
13592
b4eb6b3d
JH
13593: see if prototypes for various getservxxx netdb.h functions are available
13594echo " "
13595set d_getservprotos getservent $i_netdb netdb.h
13596eval $hasproto
13597
13598: see if getspnam exists
13599set getspnam d_getspnam
13600eval $inlibc
13601
10bc17b6
JH
13602: see if this is a shadow.h system
13603set shadow.h i_shadow
13604eval $inhdr
13605
13606: see if getspnam_r exists
13607set getspnam_r d_getspnam_r
13608eval $inlibc
13609case "$d_getspnam_r" in
13610"$define")
13611 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
c18e646a
JH
13612 case "$d_getspnam_r_proto:$usethreads" in
13613 ":define") d_getspnam_r_proto=define
a48ec845
JH
13614 set d_getspnam_r_proto getspnam_r $hdrs
13615 eval $hasproto ;;
13616 *) ;;
13617 esac
13618 case "$d_getspnam_r_proto" in
13619 define)
10bc17b6
JH
13620 case "$getspnam_r_proto" in
13621 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13622 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13623 esac
13624 case "$getspnam_r_proto" in
13625 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13626 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13627 esac
13628 case "$getspnam_r_proto" in
90e831dc 13629 ''|0) d_getspnam_r=undef
10bc17b6 13630 getspnam_r_proto=0
a48ec845 13631 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13632 * ) case "$getspnam_r_proto" in
13633 REENTRANT_PROTO*) ;;
13634 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13635 esac
13636 echo "Prototype: $try" ;;
13637 esac
13638 ;;
c18e646a
JH
13639 *) case "$usethreads" in
13640 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13641 esac
90e831dc
SB
13642 d_getspnam_r=undef
13643 getspnam_r_proto=0
c18e646a 13644 ;;
a48ec845
JH
13645 esac
13646 ;;
10bc17b6
JH
13647*) getspnam_r_proto=0
13648 ;;
13649esac
13650
b4eb6b3d
JH
13651: see if gettimeofday or ftime exists
13652set gettimeofday d_gettimeod
13653eval $inlibc
13654case "$d_gettimeod" in
13655"$undef")
13656 set ftime d_ftime
13657 eval $inlibc
13658 ;;
13659*)
13660 val="$undef"; set d_ftime; eval $setvar
13661 ;;
13662esac
13663case "$d_gettimeod$d_ftime" in
13664"$undef$undef")
13665 echo " "
13666 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13667 ;;
13668esac
13669
10bc17b6
JH
13670: see if gmtime_r exists
13671set gmtime_r d_gmtime_r
13672eval $inlibc
13673case "$d_gmtime_r" in
13674"$define")
d63eadf0 13675 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13676 case "$d_gmtime_r_proto:$usethreads" in
13677 ":define") d_gmtime_r_proto=define
a48ec845
JH
13678 set d_gmtime_r_proto gmtime_r $hdrs
13679 eval $hasproto ;;
13680 *) ;;
13681 esac
13682 case "$d_gmtime_r_proto" in
13683 define)
10bc17b6
JH
13684 case "$gmtime_r_proto" in
13685 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13686 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13687 esac
13688 case "$gmtime_r_proto" in
13689 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13690 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13691 esac
13692 case "$gmtime_r_proto" in
90e831dc 13693 ''|0) d_gmtime_r=undef
10bc17b6 13694 gmtime_r_proto=0
a48ec845 13695 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13696 * ) case "$gmtime_r_proto" in
13697 REENTRANT_PROTO*) ;;
13698 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13699 esac
13700 echo "Prototype: $try" ;;
13701 esac
b4eb6b3d 13702 ;;
c18e646a
JH
13703 *) case "$usethreads" in
13704 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13705 esac
90e831dc
SB
13706 d_gmtime_r=undef
13707 gmtime_r_proto=0
c18e646a 13708 ;;
a48ec845
JH
13709 esac
13710 ;;
10bc17b6 13711*) gmtime_r_proto=0
b4eb6b3d
JH
13712 ;;
13713esac
13714
13715: see if hasmntopt exists
13716set hasmntopt d_hasmntopt
13717eval $inlibc
13718
13719: see if this is a netinet/in.h or sys/in.h system
13720set netinet/in.h i_niin sys/in.h i_sysin
13721eval $inhdr
13722
13723: see if arpa/inet.h has to be included
13724set arpa/inet.h i_arpainet
13725eval $inhdr
13726
13727: see if htonl --and friends-- exists
13728val=''
13729set htonl val
13730eval $inlibc
13731
13732: Maybe they are macros.
13733case "$val" in
13734$undef)
13735 $cat >htonl.c <<EOM
13736#include <stdio.h>
13737#include <sys/types.h>
13738#$i_niin I_NETINET_IN
13739#$i_sysin I_SYS_IN
13740#$i_arpainet I_ARPA_INET
13741#ifdef I_NETINET_IN
13742#include <netinet/in.h>
13743#endif
13744#ifdef I_SYS_IN
13745#include <sys/in.h>
13746#endif
13747#ifdef I_ARPA_INET
13748#include <arpa/inet.h>
13749#endif
13750#ifdef htonl
13751printf("Defined as a macro.");
13752#endif
13753EOM
13754 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13755 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13756 val="$define"
13757 echo "But it seems to be defined as a macro." >&4
13758 fi
13759 $rm -f htonl.?
13760 ;;
13761esac
13762set d_htonl
13763eval $setvar
13764
36adc09b
JH
13765: see if ilogbl exists
13766set ilogbl d_ilogbl
13767eval $inlibc
13768
b4eb6b3d
JH
13769: index or strchr
13770echo " "
13771if set index val -f; eval $csym; $val; then
13772 if set strchr val -f d_strchr; eval $csym; $val; then
13773 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13774 val="$define"
13775 vali="$undef"
13776 echo "strchr() found." >&4
13777 else
13778 val="$undef"
13779 vali="$define"
13780 echo "index() found." >&4
13781 fi
13782 else
13783 val="$undef"
13784 vali="$define"
8dfa8df9
JH
13785 echo "index() found." >&4
13786 fi
b4eb6b3d 13787else
8dfa8df9
JH
13788 if set strchr val -f d_strchr; eval $csym; $val; then
13789 val="$define"
13790 vali="$undef"
13791 echo "strchr() found." >&4
13792 else
13793 echo "No index() or strchr() found!" >&4
13794 val="$undef"
13795 vali="$undef"
13796 fi
b4eb6b3d 13797fi
8dfa8df9
JH
13798set d_strchr; eval $setvar
13799val="$vali"
13800set d_index; eval $setvar
13801
13802: check whether inet_aton exists
13803set inet_aton d_inetaton
13804eval $inlibc
b4eb6b3d
JH
13805
13806: Look for isascii
13807echo " "
36adc09b 13808$cat >isascii.c <<EOCP
b4eb6b3d
JH
13809#include <stdio.h>
13810#include <ctype.h>
55954f19
JH
13811#$i_stdlib I_STDLIB
13812#ifdef I_STDLIB
13813#include <stdlib.h>
13814#endif
b4eb6b3d
JH
13815int main() {
13816 int c = 'A';
13817 if (isascii(c))
13818 exit(0);
13819 else
13820 exit(1);
13821}
13822EOCP
13823set isascii
13824if eval $compile; then
13825 echo "isascii() found." >&4
13826 val="$define"
13827else
13828 echo "isascii() NOT found." >&4
13829 val="$undef"
13830fi
13831set d_isascii
13832eval $setvar
13833$rm -f isascii*
13834
758a5d79
JH
13835: see if isfinite exists
13836set isfinite d_isfinite
13837eval $inlibc
13838
13839: see if isinf exists
13840set isinf d_isinf
13841eval $inlibc
13842
b4eb6b3d
JH
13843: see if isnan exists
13844set isnan d_isnan
13845eval $inlibc
13846
13847: see if isnanl exists
13848set isnanl d_isnanl
13849eval $inlibc
13850
13851: see if killpg exists
13852set killpg d_killpg
13853eval $inlibc
13854
13855: see if lchown exists
13856echo " "
13857$cat > try.c <<'EOCP'
13858/* System header to define __stub macros and hopefully few prototypes,
13859 which can conflict with char lchown(); below. */
13860#include <assert.h>
13861/* Override any gcc2 internal prototype to avoid an error. */
13862/* We use char because int might match the return type of a gcc2
13863 builtin and then its argument prototype would still apply. */
13864char lchown();
13865int main() {
13866 /* The GNU C library defines this for functions which it implements
13867 to always fail with ENOSYS. Some functions are actually named
13868 something starting with __ and the normal name is an alias. */
13869#if defined (__stub_lchown) || defined (__stub___lchown)
13870choke me
13871#else
13872lchown();
13873#endif
13874; return 0; }
13875EOCP
13876set try
13877if eval $compile; then
13878 $echo "lchown() found." >&4
13879 val="$define"
13880else
13881 $echo "lchown() NOT found." >&4
13882 val="$undef"
13883fi
13884set d_lchown
13885eval $setvar
13886
13887: See if number of significant digits in a double precision number is known
13888echo " "
13889$cat >ldbl_dig.c <<EOM
13890#$i_limits I_LIMITS
13891#$i_float I_FLOAT
13892#ifdef I_LIMITS
13893#include <limits.h>
13894#endif
13895#ifdef I_FLOAT
13896#include <float.h>
13897#endif
13898#ifdef LDBL_DIG
13899printf("Contains LDBL_DIG");
13900#endif
13901EOM
13902$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13903if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13904 echo "LDBL_DIG found." >&4
13905 val="$define"
13906else
13907 echo "LDBL_DIG NOT found." >&4
13908 val="$undef"
13909fi
13910$rm -f ldbl_dig.?
13911set d_ldbl_dig
13912eval $setvar
13913
13914: see if link exists
13915set link d_link
13916eval $inlibc
13917
10bc17b6
JH
13918: see if localtime_r exists
13919set localtime_r d_localtime_r
13920eval $inlibc
13921case "$d_localtime_r" in
13922"$define")
d63eadf0 13923 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13924 case "$d_localtime_r_proto:$usethreads" in
13925 ":define") d_localtime_r_proto=define
a48ec845
JH
13926 set d_localtime_r_proto localtime_r $hdrs
13927 eval $hasproto ;;
13928 *) ;;
13929 esac
13930 case "$d_localtime_r_proto" in
13931 define)
10bc17b6
JH
13932 case "$localtime_r_proto" in
13933 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13934 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13935 esac
13936 case "$localtime_r_proto" in
13937 ''|0) try='int localtime_r(const time_t*, struct tm*);'
13938 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13939 esac
13940 case "$localtime_r_proto" in
90e831dc 13941 ''|0) d_localtime_r=undef
10bc17b6 13942 localtime_r_proto=0
a48ec845 13943 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13944 * ) case "$localtime_r_proto" in
13945 REENTRANT_PROTO*) ;;
13946 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13947 esac
13948 echo "Prototype: $try" ;;
13949 esac
13950 ;;
c18e646a
JH
13951 *) case "$usethreads" in
13952 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13953 esac
90e831dc
SB
13954 d_localtime_r=undef
13955 localtime_r_proto=0
c18e646a 13956 ;;
a48ec845
JH
13957 esac
13958 ;;
10bc17b6
JH
13959*) localtime_r_proto=0
13960 ;;
13961esac
13962
b4eb6b3d
JH
13963: see if localeconv exists
13964set localeconv d_locconv
13965eval $inlibc
13966
13967: see if lockf exists
13968set lockf d_lockf
13969eval $inlibc
13970
b4eb6b3d
JH
13971: see if prototype for lseek is available
13972echo " "
4786929f 13973set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
13974eval $hasproto
13975
13976: see if lstat exists
13977set lstat d_lstat
13978eval $inlibc
13979
13980: see if madvise exists
13981set madvise d_madvise
13982eval $inlibc
13983
13984: see if mblen exists
13985set mblen d_mblen
13986eval $inlibc
13987
13988: see if mbstowcs exists
13989set mbstowcs d_mbstowcs
13990eval $inlibc
13991
13992: see if mbtowc exists
13993set mbtowc d_mbtowc
13994eval $inlibc
13995
13996: see if memchr exists
13997set memchr d_memchr
13998eval $inlibc
13999
14000: see if memcmp exists
14001set memcmp d_memcmp
14002eval $inlibc
14003
14004: see if memcpy exists
14005set memcpy d_memcpy
14006eval $inlibc
14007
14008: see if memmove exists
14009set memmove d_memmove
14010eval $inlibc
14011
14012: see if memset exists
14013set memset d_memset
14014eval $inlibc
14015
14016: see if mkdir exists
14017set mkdir d_mkdir
14018eval $inlibc
14019
14020: see if mkdtemp exists
14021set mkdtemp d_mkdtemp
14022eval $inlibc
14023
14024: see if mkfifo exists
14025set mkfifo d_mkfifo
14026eval $inlibc
14027
14028: see if mkstemp exists
14029set mkstemp d_mkstemp
14030eval $inlibc
14031
14032: see if mkstemps exists
14033set mkstemps d_mkstemps
14034eval $inlibc
14035
14036: see if mktime exists
14037set mktime d_mktime
14038eval $inlibc
14039
14040: see if this is a sys/mman.h system
14041set sys/mman.h i_sysmman
14042eval $inhdr
14043
14044: see if mmap exists
14045set mmap d_mmap
14046eval $inlibc
14047: see what shmat returns
14048: default to something harmless
14049mmaptype='void *'
14050case "$i_sysmman$d_mmap" in
14051"$define$define")
14052 $cat >mmap.c <<'END'
14053#include <sys/mman.h>
14054void *mmap();
14055END
14056 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14057 mmaptype='void *'
14058 else
14059 mmaptype='caddr_t'
14060 fi
14061 echo "and it returns ($mmaptype)." >&4
14062 ;;
14063esac
14064
14065
14066
89ce900e
JH
14067: see if sqrtl exists
14068set sqrtl d_sqrtl
14069eval $inlibc
14070
af1ff193
JH
14071: see if scalbnl exists
14072set scalbnl d_scalbnl
14073eval $inlibc
14074
89ce900e
JH
14075: see if modfl exists
14076set modfl d_modfl
14077eval $inlibc
14078
14079: see if prototype for modfl is available
14080echo " "
14081set d_modflproto modfl math.h
14082eval $hasproto
14083
14084d_modfl_pow32_bug="$undef"
14085
14086case "$d_longdbl$d_modfl" in
14087$define$define)
14088 $cat <<EOM
14089Checking to see whether your modfl() is okay for large values...
14090EOM
14091$cat >try.c <<EOCP
14092#include <math.h>
14093#include <stdio.h>
14094EOCP
14095if $test "X$d_modflproto" != "X$define"; then
14096 $cat >>try.c <<EOCP
14097/* Sigh. many current glibcs provide the function, but do not prototype it. */
14098long double modfl (long double, long double *);
14099EOCP
14100fi
14101$cat >>try.c <<EOCP
14102int main() {
14103 long double nv = 4294967303.15;
14104 long double v, w;
14105 v = modfl(nv, &w);
14106#ifdef __GLIBC__
14107 printf("glibc");
14108#endif
14109 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14110 return 0;
14111}
14112EOCP
14113 case "$osname:$gccversion" in
14114 aix:) saveccflags="$ccflags"
14115 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14116 esac
14117 set try
14118 if eval $compile; then
14119 foo=`$run ./try`
14120 case "$foo" in
14121 *" 4294967303.150000 1.150000 4294967302.000000")
14122 echo >&4 "Your modfl() is broken for large values."
14123 d_modfl_pow32_bug="$define"
14124 case "$foo" in
14125 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14126 ;;
14127 esac
14128 ;;
14129 *" 4294967303.150000 0.150000 4294967303.000000")
14130 echo >&4 "Your modfl() seems okay for large values."
14131 ;;
14132 *) echo >&4 "I don't understand your modfl() at all."
14133 d_modfl="$undef"
14134 ;;
14135 esac
14136 $rm -f try.* try core core.try.*
14137 else
14138 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14139 d_modfl="$undef"
14140 fi
14141 case "$osname:$gccversion" in
14142 aix:) ccflags="$saveccflags" ;; # restore
14143 esac
14144 ;;
14145esac
14146
14147if $test "$uselongdouble" = "$define"; then
af1ff193
JH
14148 message=""
14149 if $test "$d_sqrtl" != "$define"; then
14150 message="$message sqrtl"
14151 fi
14152 if $test "$d_modfl" != "$define"; then
89ce900e
JH
14153 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14154 echo "You have both aintl and copysignl, so I can emulate modfl."
14155 else
af1ff193 14156 message="$message modfl"
89ce900e 14157 fi
af1ff193
JH
14158 fi
14159 if $test "$d_frexpl" != "$define"; then
14160 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14161 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14162 else
14163 message="$message frexpl"
14164 fi
14165 fi
89ce900e 14166
af1ff193 14167 if $test "$message" != ""; then
89ce900e
JH
14168 $cat <<EOM >&4
14169
14170*** You requested the use of long doubles but you do not seem to have
af1ff193
JH
14171*** the following mathematical functions needed for long double support:
14172*** $message
fe63a0b4
JH
14173*** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14174*** Cannot continue, aborting.
89ce900e
JH
14175
14176EOM
14177
fe63a0b4 14178 exit 1
89ce900e
JH
14179 fi
14180fi
14181
b4eb6b3d
JH
14182: see if mprotect exists
14183set mprotect d_mprotect
14184eval $inlibc
14185
14186: see if msgctl exists
14187set msgctl d_msgctl
14188eval $inlibc
14189
14190: see if msgget exists
14191set msgget d_msgget
14192eval $inlibc
14193
14194: see if msgsnd exists
14195set msgsnd d_msgsnd
14196eval $inlibc
14197
14198: see if msgrcv exists
14199set msgrcv d_msgrcv
14200eval $inlibc
14201
14202: see how much of the 'msg*(2)' library is present.
14203h_msg=true
14204echo " "
14205case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14206*"$undef"*) h_msg=false;;
14207esac
14208case "$osname" in
14209freebsd)
14210 case "`ipcs 2>&1`" in
14211 "SVID messages"*"not configured"*)
14212 echo "Your $osname does not have the msg*(2) configured." >&4
14213 h_msg=false
14214 val="$undef"
14215 set msgctl d_msgctl
14216 eval $setvar
14217 set msgget d_msgget
14218 eval $setvar
14219 set msgsnd d_msgsnd
14220 eval $setvar
14221 set msgrcv d_msgrcv
14222 eval $setvar
14223 ;;
14224 esac
14225 ;;
14226esac
14227: we could also check for sys/ipc.h ...
14228if $h_msg && $test `./findhdr sys/msg.h`; then
14229 echo "You have the full msg*(2) library." >&4
14230 val="$define"
14231else
14232 echo "You don't have the full msg*(2) library." >&4
14233 val="$undef"
14234fi
14235set d_msg
14236eval $setvar
14237
4e0554ec
JH
14238
14239echo " "
14240echo "Checking to see if your system supports struct msghdr..." >&4
14241set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14242eval $hasstruct
14243case "$d_msghdr_s" in
14244"$define") echo "Yes, it does." ;;
14245*) echo "No, it doesn't." ;;
14246esac
14247
14248
b4eb6b3d
JH
14249: see if msync exists
14250set msync d_msync
14251eval $inlibc
14252
14253: see if munmap exists
14254set munmap d_munmap
14255eval $inlibc
14256
14257: see if nice exists
14258set nice d_nice
14259eval $inlibc
14260
2765b840
JH
14261: see if this is a langinfo.h system
14262set langinfo.h i_langinfo
14263eval $inhdr
14264
14265: see if nl_langinfo exists
14266set nl_langinfo d_nl_langinfo
14267eval $inlibc
14268
b4eb6b3d
JH
14269: check for length of character
14270echo " "
14271case "$charsize" in
14272'')
14273 echo "Checking to see how big your characters are (hey, you never know)..." >&4
74d00865 14274 $cat >try.c <<EOCP
b4eb6b3d 14275#include <stdio.h>
d1daaddf
JH
14276#$i_stdlib I_STDLIB
14277#ifdef I_STDLIB
14278#include <stdlib.h>
14279#endif
b4eb6b3d
JH
14280int main()
14281{
14282 printf("%d\n", (int)sizeof(char));
14283 exit(0);
14284}
14285EOCP
14286 set try
14287 if eval $compile_ok; then
5440bc8e 14288 dflt=`$run ./try`
b4eb6b3d
JH
14289 else
14290 dflt='1'
14291 echo "(I can't seem to compile the test program. Guessing...)"
14292 fi
14293 ;;
14294*)
14295 dflt="$charsize"
14296 ;;
14297esac
14298rp="What is the size of a character (in bytes)?"
14299. ./myread
14300charsize="$ans"
14301$rm -f try.c try
14302
1d1be0dc
NC
14303: check for volatile keyword
14304echo " "
14305echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14306$cat >try.c <<'EOCP'
76f47787 14307int main()
1d1be0dc
NC
14308{
14309 typedef struct _goo_struct goo_struct;
14310 goo_struct * volatile goo = ((goo_struct *)0);
14311 struct _goo_struct {
14312 long long_int;
14313 int reg_int;
14314 char char_var;
14315 };
14316 typedef unsigned short foo_t;
14317 char *volatile foo;
14318 volatile int bar;
14319 volatile foo_t blech;
14320 foo = foo;
14321}
14322EOCP
14323if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14324 val="$define"
14325 echo "Yup, it does."
14326else
14327 val="$undef"
14328 echo "Nope, it doesn't."
14329fi
14330set d_volatile
14331eval $setvar
14332$rm -f try.*
14333
b4eb6b3d
JH
14334
14335echo " "
14336$echo "Choosing the C types to be used for Perl's internal types..." >&4
14337
14338case "$use64bitint:$d_quad:$quadtype" in
14339define:define:?*)
14340 ivtype="$quadtype"
14341 uvtype="$uquadtype"
14342 ivsize=8
14343 uvsize=8
14344 ;;
14345*) ivtype="long"
14346 uvtype="unsigned long"
14347 ivsize=$longsize
14348 uvsize=$longsize
14349 ;;
14350esac
14351
14352case "$uselongdouble:$d_longdbl" in
14353define:define)
14354 nvtype="long double"
14355 nvsize=$longdblsize
14356 ;;
14357*) nvtype=double
14358 nvsize=$doublesize
14359 ;;
14360esac
14361
14362$echo "(IV will be "$ivtype", $ivsize bytes)"
14363$echo "(UV will be "$uvtype", $uvsize bytes)"
14364$echo "(NV will be "$nvtype", $nvsize bytes)"
14365
14366$cat >try.c <<EOCP
14367#$i_inttypes I_INTTYPES
14368#ifdef I_INTTYPES
14369#include <inttypes.h>
14370#endif
14371#include <stdio.h>
14372int main() {
14373#ifdef INT8
14374 int8_t i = INT8_MAX;
14375 uint8_t u = UINT8_MAX;
14376 printf("int8_t\n");
14377#endif
14378#ifdef INT16
14379 int16_t i = INT16_MAX;
14380 uint16_t i = UINT16_MAX;
14381 printf("int16_t\n");
14382#endif
14383#ifdef INT32
14384 int32_t i = INT32_MAX;
14385 uint32_t u = UINT32_MAX;
14386 printf("int32_t\n");
14387#endif
14388}
14389EOCP
14390
14391case "$i8type" in
14392'') case "$charsize" in
14393 1) i8type=char
14394 u8type="unsigned char"
14395 i8size=$charsize
14396 u8size=$charsize
14397 ;;
14398 esac
14399 ;;
14400esac
14401case "$i8type" in
14402'') set try -DINT8
14403 if eval $compile; then
5440bc8e 14404 case "`$run ./try`" in
b4eb6b3d
JH
14405 int8_t) i8type=int8_t
14406 u8type=uint8_t
14407 i8size=1
14408 u8size=1
14409 ;;
14410 esac
14411 fi
14412 ;;
14413esac
14414case "$i8type" in
14415'') if $test $charsize -ge 1; then
14416 i8type=char
14417 u8type="unsigned char"
14418 i8size=$charsize
14419 u8size=$charsize
14420 fi
14421 ;;
14422esac
14423
14424case "$i16type" in
14425'') case "$shortsize" in
14426 2) i16type=short
14427 u16type="unsigned short"
14428 i16size=$shortsize
14429 u16size=$shortsize
14430 ;;
14431 esac
14432 ;;
14433esac
14434case "$i16type" in
14435'') set try -DINT16
14436 if eval $compile; then
5440bc8e 14437 case "`$run ./try`" in
b4eb6b3d
JH
14438 int16_t)
14439 i16type=int16_t
14440 u16type=uint16_t
14441 i16size=2
14442 u16size=2
14443 ;;
14444 esac
14445 fi
14446 ;;
14447esac
14448case "$i16type" in
14449'') if $test $shortsize -ge 2; then
14450 i16type=short
14451 u16type="unsigned short"
14452 i16size=$shortsize
14453 u16size=$shortsize
14454 fi
14455 ;;
14456esac
14457
14458case "$i32type" in
14459'') case "$longsize" in
14460 4) i32type=long
14461 u32type="unsigned long"
14462 i32size=$longsize
14463 u32size=$longsize
14464 ;;
14465 *) case "$intsize" in
14466 4) i32type=int
14467 u32type="unsigned int"
14468 i32size=$intsize
14469 u32size=$intsize
14470 ;;
14471 esac
14472 ;;
14473 esac
14474 ;;
14475esac
14476case "$i32type" in
14477'') set try -DINT32
14478 if eval $compile; then
5440bc8e 14479 case "`$run ./try`" in
b4eb6b3d
JH
14480 int32_t)
14481 i32type=int32_t
14482 u32type=uint32_t
14483 i32size=4
14484 u32size=4
14485 ;;
14486 esac
14487 fi
14488 ;;
14489esac
14490case "$i32type" in
14491'') if $test $intsize -ge 4; then
14492 i32type=int
14493 u32type="unsigned int"
14494 i32size=$intsize
14495 u32size=$intsize
14496 fi
14497 ;;
14498esac
14499
14500case "$i64type" in
14501'') case "$d_quad:$quadtype" in
14502 define:?*)
14503 i64type="$quadtype"
14504 u64type="$uquadtype"
14505 i64size=8
14506 u64size=8
14507 ;;
14508 esac
14509 ;;
14510esac
14511
1d1be0dc
NC
14512$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14513: volatile so that the compiler has to store it out to memory.
14514if test X"$d_volatile" = X"$define"; then
14515 volatile=volatile
14516fi
b4eb6b3d
JH
14517$cat <<EOP >try.c
14518#include <stdio.h>
55954f19
JH
14519#$i_stdlib I_STDLIB
14520#ifdef I_STDLIB
14521#include <stdlib.h>
14522#endif
1d1be0dc
NC
14523#include <sys/types.h>
14524#include <signal.h>
14525#ifdef SIGFPE
14526$volatile int bletched = 0;
14527$signal_t blech(s) int s; { bletched = 1; }
14528#endif
b4eb6b3d
JH
14529int main() {
14530 $uvtype u = 0;
1d1be0dc 14531 $nvtype d;
b4eb6b3d
JH
14532 int n = 8 * $uvsize;
14533 int i;
1d1be0dc
NC
14534#ifdef SIGFPE
14535 signal(SIGFPE, blech);
14536#endif
14537
b4eb6b3d
JH
14538 for (i = 0; i < n; i++) {
14539 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
14540 d = ($nvtype)u;
14541 if (($uvtype)d != u)
b4eb6b3d 14542 break;
1d1be0dc
NC
14543 if (d <= 0)
14544 break;
14545 d = ($nvtype)(u - 1);
14546 if (($uvtype)d != (u - 1))
14547 break;
14548#ifdef SIGFPE
14549 if (bletched) {
14550 break;
14551#endif
14552 }
b4eb6b3d 14553 }
efd1522b 14554 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
14555 exit(0);
14556}
14557EOP
1d1be0dc
NC
14558set try
14559
14560d_nv_preserves_uv="$undef"
14561if eval $compile; then
53133ed1 14562 nv_preserves_uv_bits="`$run ./try`"
1d1be0dc 14563fi
53133ed1 14564case "$nv_preserves_uv_bits" in
1d1be0dc 14565\-[1-9]*)
53133ed1
NC
14566 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14567 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc 14568 d_nv_preserves_uv="$define"
b4eb6b3d 14569 ;;
53133ed1 14570[1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc
NC
14571 d_nv_preserves_uv="$undef" ;;
14572*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
53133ed1 14573 nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
14574esac
14575
1d1be0dc
NC
14576$rm -f try.* try
14577
b4eb6b3d
JH
14578
14579: check for off64_t
14580echo " "
14581echo "Checking to see if you have off64_t..." >&4
14582$cat >try.c <<EOCP
14583#include <sys/types.h>
14584#include <unistd.h>
14585int main() { off64_t x = 7; }
14586EOCP
14587set try
14588if eval $compile; then
14589 val="$define"
14590 echo "You have off64_t."
14591else
14592 val="$undef"
14593 echo "You do not have off64_t."
14594 case "$lseeksize" in
14595 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14596 esac
14597fi
14598$rm -f try.* try
14599set d_off64_t
14600eval $setvar
14601
b4eb6b3d
JH
14602: how to create joinable pthreads
14603if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14604 echo " "
14605 echo "Checking what constant to use for creating joinable pthreads..." >&4
14606 $cat >try.c <<'EOCP'
14607#include <pthread.h>
14608int main() {
14609 int detachstate = JOINABLE;
14610}
14611EOCP
14612 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14613 if eval $compile; then
14614 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14615 val="$undef" # Yes, undef.
14616 set d_old_pthread_create_joinable
14617 eval $setvar
14618 val=""
14619 set old_pthread_create_joinable
14620 eval $setvar
14621 else
14622 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14623 if eval $compile; then
14624 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14625 val="$define"
14626 set d_old_pthread_create_joinable
14627 eval $setvar
14628 val=PTHREAD_CREATE_UNDETACHED
14629 set old_pthread_create_joinable
14630 eval $setvar
14631 else
14632 set try -DJOINABLE=__UNDETACHED
14633 if eval $compile; then
14634 echo "You seem to use __UNDETACHED." >&4
14635 val="$define"
14636 set d_old_pthread_create_joinable
14637 eval $setvar
14638 val=__UNDETACHED
14639 set old_pthread_create_joinable
14640 eval $setvar
14641 else
14642 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
14643 val="$define"
14644 set d_old_pthread_create_joinable
14645 eval $setvar
14646 val=0
14647 set old_pthread_create_joinable
14648 eval $setvar
14649 fi
14650 fi
14651 fi
14652 $rm -f try try.*
14653else
14654 d_old_pthread_create_joinable="$undef"
14655 old_pthread_create_joinable=""
14656fi
14657
14658: see if pause exists
14659set pause d_pause
14660eval $inlibc
14661
14662: see if pipe exists
14663set pipe d_pipe
14664eval $inlibc
14665
14666: see if poll exists
14667set poll d_poll
14668eval $inlibc
14669
c7aff470
NIS
14670: see if readlink exists
14671set readlink d_readlink
14672eval $inlibc
14673
14674echo " "
f24dbf84 14675procselfexe=''
c7aff470 14676val="$undef"
a33c94aa
JH
14677case "$d_readlink" in
14678"$define")
c7aff470
NIS
14679 if $issymlink /proc/self/exe ; then
14680 $ls -l /proc/self/exe > reflect
51660ed5 14681 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 14682 echo "You have Linux-like /proc/self/exe."
92236451 14683 procselfexe='"/proc/self/exe"'
f24dbf84 14684 val="$define"
f24dbf84
JH
14685 fi
14686 fi
14687 if $issymlink /proc/curproc/file ; then
14688 $ls -l /proc/curproc/file > reflect
14689 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14690 echo "You have BSD-like /proc/curproc/file."
92236451 14691 procselfexe='"/proc/curproc/file"'
f24dbf84 14692 val="$define"
c7aff470 14693 fi
c7aff470 14694 fi
a33c94aa
JH
14695 ;;
14696esac
428dc699 14697$rm -f reflect
c7aff470
NIS
14698set d_procselfexe
14699eval $setvar
14700
263fee3f
JH
14701: see whether the pthread_atfork exists
14702$cat >try.c <<EOP
14703#include <pthread.h>
14704#include <stdio.h>
14705int main() {
14706#ifdef PTHREAD_ATFORK
14707 pthread_atfork(NULL,NULL,NULL);
14708#endif
14709}
14710EOP
14711
d6483fcc 14712: see if pthread_atfork exists
263fee3f
JH
14713set try -DPTHREAD_ATFORK
14714if eval $compile; then
14715 val="$define"
14716else
14717 val="$undef"
14718fi
14719case "$usethreads" in
14720$define)
14721 case "$val" in
14722 $define) echo 'pthread_atfork found.' >&4 ;;
14723 *) echo 'pthread_atfork NOT found.' >&4 ;;
14724 esac
14725esac
14726set d_pthread_atfork
14727eval $setvar
d6483fcc 14728
58d975c3
JH
14729: see if pthread_attr_setscope exists
14730set pthread_attr_setscope d_pthread_attr_setscope
14731eval $inlibc
14732
b4eb6b3d
JH
14733
14734: see whether the various POSIXish _yields exist
14735$cat >try.c <<EOP
14736#include <pthread.h>
14737#include <stdio.h>
14738int main() {
14739#ifdef SCHED_YIELD
14740 sched_yield();
14741#else
14742#ifdef PTHREAD_YIELD
14743 pthread_yield();
14744#else
14745#ifdef PTHREAD_YIELD_NULL
14746 pthread_yield(NULL);
14747#endif
14748#endif
14749#endif
14750}
14751EOP
14752: see if sched_yield exists
14753set try -DSCHED_YIELD
14754if eval $compile; then
14755 val="$define"
14756 sched_yield='sched_yield()'
14757else
14758 val="$undef"
14759fi
14760case "$usethreads" in
14761$define)
14762 case "$val" in
14763 $define) echo 'sched_yield() found.' >&4 ;;
14764 *) echo 'sched_yield() NOT found.' >&4 ;;
14765 esac
14766esac
10bc17b6
JH
14767set d_sched_yield
14768eval $setvar
b4eb6b3d 14769
10bc17b6
JH
14770: see if pthread_yield exists
14771set try -DPTHREAD_YIELD
14772if eval $compile; then
14773 val="$define"
14774 case "$sched_yield" in
14775 '') sched_yield='pthread_yield()' ;;
14776 esac
14777else
14778 set try -DPTHREAD_YIELD_NULL
14779 if eval $compile; then
14780 val="$define"
14781 case "$sched_yield" in
14782 '') sched_yield='pthread_yield(NULL)' ;;
14783 esac
14784 else
14785 val="$undef"
14786 fi
14787fi
14788case "$usethreads" in
14789$define)
14790 case "$val" in
14791 $define) echo 'pthread_yield() found.' >&4 ;;
14792 *) echo 'pthread_yield() NOT found.' >&4 ;;
14793 esac
14794 ;;
14795esac
14796set d_pthread_yield
14797eval $setvar
b4eb6b3d 14798
10bc17b6
JH
14799case "$sched_yield" in
14800'') sched_yield=undef ;;
14801esac
b4eb6b3d 14802
10bc17b6
JH
14803$rm -f try try.*
14804
14805: see if random_r exists
14806set random_r d_random_r
14807eval $inlibc
14808case "$d_random_r" in
14809"$define")
14810 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
14811 case "$d_random_r_proto:$usethreads" in
14812 ":define") d_random_r_proto=define
a48ec845
JH
14813 set d_random_r_proto random_r $hdrs
14814 eval $hasproto ;;
14815 *) ;;
14816 esac
14817 case "$d_random_r_proto" in
14818 define)
10bc17b6
JH
14819 case "$random_r_proto" in
14820 ''|0) try='int random_r(int*, struct random_data*);'
a845a0d4
JH
14821 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14822 esac
14823 case "$random_r_proto" in
14824 ''|0) try='int random_r(long*, struct random_data*);'
14825 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14826 esac
14827 case "$random_r_proto" in
14828 ''|0) try='int random_r(struct random_data*, int32_t*);'
14829 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
10bc17b6
JH
14830 esac
14831 case "$random_r_proto" in
90e831dc 14832 ''|0) d_random_r=undef
10bc17b6 14833 random_r_proto=0
a48ec845 14834 echo "Disabling random_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14835 * ) case "$random_r_proto" in
14836 REENTRANT_PROTO*) ;;
14837 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14838 esac
14839 echo "Prototype: $try" ;;
14840 esac
b4eb6b3d 14841 ;;
c18e646a
JH
14842 *) case "$usethreads" in
14843 define) echo "random_r has no prototype, not using it." >&4 ;;
14844 esac
90e831dc
SB
14845 d_random_r=undef
14846 random_r_proto=0
c18e646a 14847 ;;
a48ec845
JH
14848 esac
14849 ;;
10bc17b6 14850*) random_r_proto=0
b4eb6b3d
JH
14851 ;;
14852esac
14853
14854: see if readdir and friends exist
14855set readdir d_readdir
14856eval $inlibc
14857set seekdir d_seekdir
14858eval $inlibc
14859set telldir d_telldir
14860eval $inlibc
14861set rewinddir d_rewinddir
14862eval $inlibc
14863
10bc17b6
JH
14864: see if readdir64_r exists
14865set readdir64_r d_readdir64_r
14866eval $inlibc
14867case "$d_readdir64_r" in
14868"$define")
14869 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14870 case "$d_readdir64_r_proto:$usethreads" in
14871 ":define") d_readdir64_r_proto=define
a48ec845
JH
14872 set d_readdir64_r_proto readdir64_r $hdrs
14873 eval $hasproto ;;
14874 *) ;;
14875 esac
14876 case "$d_readdir64_r_proto" in
14877 define)
10bc17b6
JH
14878 case "$readdir64_r_proto" in
14879 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14880 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14881 esac
14882 case "$readdir64_r_proto" in
14883 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14884 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14885 esac
14886 case "$readdir64_r_proto" in
90e831dc 14887 ''|0) d_readdir64_r=undef
10bc17b6 14888 readdir64_r_proto=0
a48ec845 14889 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14890 * ) case "$readdir64_r_proto" in
14891 REENTRANT_PROTO*) ;;
14892 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14893 esac
14894 echo "Prototype: $try" ;;
14895 esac
14896 ;;
c18e646a
JH
14897 *) case "$usethreads" in
14898 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14899 esac
90e831dc
SB
14900 d_readdir64_r=undef
14901 readdir64_r_proto=0
c18e646a 14902 ;;
a48ec845
JH
14903 esac
14904 ;;
10bc17b6
JH
14905*) readdir64_r_proto=0
14906 ;;
14907esac
14908
14909: see if readdir_r exists
14910set readdir_r d_readdir_r
14911eval $inlibc
14912case "$d_readdir_r" in
14913"$define")
14914 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14915 case "$d_readdir_r_proto:$usethreads" in
14916 ":define") d_readdir_r_proto=define
a48ec845
JH
14917 set d_readdir_r_proto readdir_r $hdrs
14918 eval $hasproto ;;
14919 *) ;;
14920 esac
14921 case "$d_readdir_r_proto" in
14922 define)
10bc17b6
JH
14923 case "$readdir_r_proto" in
14924 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14925 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14926 esac
14927 case "$readdir_r_proto" in
14928 ''|0) try='int readdir_r(DIR*, struct dirent*);'
14929 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14930 esac
14931 case "$readdir_r_proto" in
90e831dc 14932 ''|0) d_readdir_r=undef
10bc17b6 14933 readdir_r_proto=0
a48ec845 14934 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14935 * ) case "$readdir_r_proto" in
14936 REENTRANT_PROTO*) ;;
14937 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14938 esac
14939 echo "Prototype: $try" ;;
14940 esac
14941 ;;
c18e646a
JH
14942 *) case "$usethreads" in
14943 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14944 esac
90e831dc
SB
14945 d_readdir_r=undef
14946 readdir_r_proto=0
c18e646a 14947 ;;
a48ec845
JH
14948 esac
14949 ;;
10bc17b6
JH
14950*) readdir_r_proto=0
14951 ;;
14952esac
14953
4e0554ec
JH
14954: see if readv exists
14955set readv d_readv
14956eval $inlibc
14957
14958: see if recvmsg exists
14959set recvmsg d_recvmsg
14960eval $inlibc
14961
b4eb6b3d
JH
14962: see if rename exists
14963set rename d_rename
14964eval $inlibc
14965
14966: see if rmdir exists
14967set rmdir d_rmdir
14968eval $inlibc
14969
14970: see if memory.h is available.
14971val=''
14972set memory.h val
14973eval $inhdr
14974
14975: See if it conflicts with string.h
14976case "$val" in
14977$define)
14978 case "$strings" in
14979 '') ;;
14980 *)
14981 $cppstdin $cppflags $cppminus < $strings > mem.h
14982 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14983 echo " "
14984 echo "We won't be including <memory.h>."
14985 val="$undef"
14986 fi
14987 $rm -f mem.h
14988 ;;
14989 esac
14990esac
14991set i_memory
14992eval $setvar
14993
14994: can bcopy handle overlapping blocks?
b6cc3bc4 14995echo " "
b4eb6b3d 14996val="$undef"
b6cc3bc4
AD
14997case "$d_memmove" in
14998"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14999*) case "$d_bcopy" in
15000 "$define")
15001 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15002 $cat >try.c <<EOCP
b4eb6b3d
JH
15003#$i_memory I_MEMORY
15004#$i_stdlib I_STDLIB
15005#$i_string I_STRING
15006#$i_unistd I_UNISTD
15007EOCP
15008 $cat >>try.c <<'EOCP'
15009#include <stdio.h>
15010#ifdef I_MEMORY
15011# include <memory.h>
15012#endif
15013#ifdef I_STDLIB
15014# include <stdlib.h>
15015#endif
15016#ifdef I_STRING
15017# include <string.h>
15018#else
15019# include <strings.h>
15020#endif
15021#ifdef I_UNISTD
15022# include <unistd.h> /* Needed for NetBSD */
15023#endif
15024int main()
15025{
15026char buf[128], abc[128];
15027char *b;
15028int len;
15029int off;
15030int align;
15031
b6cc3bc4
AD
15032/* Copy "abcde..." string to char abc[] so that gcc doesn't
15033 try to store the string in read-only memory. */
b4eb6b3d
JH
15034bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15035
15036for (align = 7; align >= 0; align--) {
15037 for (len = 36; len; len--) {
15038 b = buf+align;
15039 bcopy(abc, b, len);
15040 for (off = 1; off <= len; off++) {
15041 bcopy(b, b+off, len);
15042 bcopy(b+off, b, len);
15043 if (bcmp(b, abc, len))
15044 exit(1);
15045 }
15046 }
15047}
15048exit(0);
15049}
15050EOCP
b6cc3bc4
AD
15051 set try
15052 if eval $compile_ok; then
15053 if ./try 2>/dev/null; then
15054 echo "Yes, it can."
15055 val="$define"
15056 else
15057 echo "It can't, sorry."
15058 fi
b4eb6b3d 15059 else
b6cc3bc4 15060 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15061 fi
b6cc3bc4
AD
15062 ;;
15063 esac
15064 $rm -f try.* try core
b4eb6b3d
JH
15065 ;;
15066esac
b4eb6b3d
JH
15067set d_safebcpy
15068eval $setvar
15069
15070: can memcpy handle overlapping blocks?
b6cc3bc4 15071echo " "
b4eb6b3d 15072val="$undef"
b6cc3bc4
AD
15073case "$d_memmove" in
15074"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15075*) case "$d_memcpy" in
15076 "$define")
15077 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15078 $cat >try.c <<EOCP
b4eb6b3d
JH
15079#$i_memory I_MEMORY
15080#$i_stdlib I_STDLIB
15081#$i_string I_STRING
15082#$i_unistd I_UNISTD
15083EOCP
15084 $cat >>try.c <<'EOCP'
15085#include <stdio.h>
15086#ifdef I_MEMORY
15087# include <memory.h>
15088#endif
15089#ifdef I_STDLIB
15090# include <stdlib.h>
15091#endif
15092#ifdef I_STRING
15093# include <string.h>
15094#else
15095# include <strings.h>
15096#endif
15097#ifdef I_UNISTD
15098# include <unistd.h> /* Needed for NetBSD */
15099#endif
15100int main()
15101{
15102char buf[128], abc[128];
15103char *b;
15104int len;
15105int off;
15106int align;
15107
15108/* Copy "abcde..." string to char abc[] so that gcc doesn't
15109 try to store the string in read-only memory. */
15110memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15111
15112for (align = 7; align >= 0; align--) {
15113 for (len = 36; len; len--) {
15114 b = buf+align;
15115 memcpy(b, abc, len);
15116 for (off = 1; off <= len; off++) {
15117 memcpy(b+off, b, len);
15118 memcpy(b, b+off, len);
15119 if (memcmp(b, abc, len))
15120 exit(1);
15121 }
15122 }
15123}
15124exit(0);
15125}
15126EOCP
b6cc3bc4
AD
15127 set try
15128 if eval $compile_ok; then
15129 if ./try 2>/dev/null; then
15130 echo "Yes, it can."
15131 val="$define"
15132 else
15133 echo "It can't, sorry."
15134 fi
b4eb6b3d 15135 else
b6cc3bc4 15136 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15137 fi
b6cc3bc4
AD
15138 ;;
15139 esac
15140 $rm -f try.* try core
b4eb6b3d
JH
15141 ;;
15142esac
b4eb6b3d
JH
15143set d_safemcpy
15144eval $setvar
15145
15146: can memcmp be trusted to compare relative magnitude?
15147val="$undef"
15148case "$d_memcmp" in
15149"$define")
15150 echo " "
15151 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15152 $cat >try.c <<EOCP
15153#$i_memory I_MEMORY
15154#$i_stdlib I_STDLIB
15155#$i_string I_STRING
15156#$i_unistd I_UNISTD
15157EOCP
15158 $cat >>try.c <<'EOCP'
15159#include <stdio.h>
15160#ifdef I_MEMORY
15161# include <memory.h>
15162#endif
15163#ifdef I_STDLIB
36adc09b 15164# include <stdlib.h>
b4eb6b3d
JH
15165#endif
15166#ifdef I_STRING
15167# include <string.h>
15168#else
15169# include <strings.h>
15170#endif
15171#ifdef I_UNISTD
15172# include <unistd.h> /* Needed for NetBSD */
15173#endif
15174int main()
15175{
15176char a = -1;
15177char b = 0;
15178if ((a < b) && memcmp(&a, &b, 1) < 0)
15179 exit(1);
15180exit(0);
15181}
15182EOCP
15183 set try
15184 if eval $compile_ok; then
5440bc8e 15185 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
15186 echo "Yes, it can."
15187 val="$define"
15188 else
15189 echo "No, it can't (it uses signed chars)."
15190 fi
15191 else
15192 echo "(I can't compile the test program, so we'll assume not...)"
15193 fi
15194 ;;
15195esac
15196$rm -f try.* try core
15197set d_sanemcmp
15198eval $setvar
15199
ef9f17be
JH
15200: see if prototype for sbrk is available
15201echo " "
15202set d_sbrkproto sbrk $i_unistd unistd.h
15203eval $hasproto
15204
b4eb6b3d
JH
15205: see if select exists
15206set select d_select
15207eval $inlibc
15208
15209: see if semctl exists
15210set semctl d_semctl
15211eval $inlibc
15212
15213: see if semget exists
15214set semget d_semget
15215eval $inlibc
15216
15217: see if semop exists
15218set semop d_semop
15219eval $inlibc
15220
15221: see how much of the 'sem*(2)' library is present.
15222h_sem=true
15223echo " "
15224case "$d_semctl$d_semget$d_semop" in
15225*"$undef"*) h_sem=false;;
15226esac
15227case "$osname" in
15228freebsd)
15229 case "`ipcs 2>&1`" in
15230 "SVID messages"*"not configured"*)
15231 echo "Your $osname does not have the sem*(2) configured." >&4
15232 h_sem=false
15233 val="$undef"
15234 set semctl d_semctl
15235 eval $setvar
15236 set semget d_semget
15237 eval $setvar
15238 set semop d_semop
15239 eval $setvar
15240 ;;
15241 esac
15242 ;;
15243esac
15244: we could also check for sys/ipc.h ...
15245if $h_sem && $test `./findhdr sys/sem.h`; then
15246 echo "You have the full sem*(2) library." >&4
15247 val="$define"
15248else
15249 echo "You don't have the full sem*(2) library." >&4
15250 val="$undef"
15251fi
15252set d_sem
15253eval $setvar
15254
15255: see whether sys/sem.h defines union semun
15256echo " "
15257$cat > try.c <<'END'
15258#include <sys/types.h>
15259#include <sys/ipc.h>
15260#include <sys/sem.h>
15261int main () { union semun semun; semun.buf = 0; }
15262END
15263set try
15264if eval $compile; then
15265 echo "You have union semun in <sys/sem.h>." >&4
15266 val="$define"
15267else
15268 echo "You do not have union semun in <sys/sem.h>." >&4
15269 val="$undef"
15270fi
2fad75a1 15271$rm -f try try.c
b4eb6b3d
JH
15272set d_union_semun
15273eval $setvar
15274
15275: see how to do semctl IPC_STAT
15276case "$d_sem" in
15277$define)
b4eb6b3d
JH
15278 echo " "
15279 $cat > try.h <<END
15280#ifndef S_IRUSR
15281# ifdef S_IREAD
15282# define S_IRUSR S_IREAD
15283# define S_IWUSR S_IWRITE
15284# define S_IXUSR S_IEXEC
15285# else
15286# define S_IRUSR 0400
15287# define S_IWUSR 0200
15288# define S_IXUSR 0100
15289# endif
15290# define S_IRGRP (S_IRUSR>>3)
15291# define S_IWGRP (S_IWUSR>>3)
15292# define S_IXGRP (S_IXUSR>>3)
15293# define S_IROTH (S_IRUSR>>6)
15294# define S_IWOTH (S_IWUSR>>6)
15295# define S_IXOTH (S_IXUSR>>6)
15296#endif
15297#ifndef S_IRWXU
15298# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15299# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15300# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15301#endif
15302END
2fad75a1
JH
15303 : see whether semctl IPC_STAT can use union semun
15304 val="$undef"
15305 case "$d_semctl_semun" in
15306 '')
15307 $cat > try.c <<END
b4eb6b3d
JH
15308#include <sys/types.h>
15309#include <sys/ipc.h>
15310#include <sys/sem.h>
15311#include <sys/stat.h>
15312#include <stdio.h>
15313#include <errno.h>
15314#include "try.h"
15315#ifndef errno
15316extern int errno;
15317#endif
15318#$d_union_semun HAS_UNION_SEMUN
15319int main() {
15320 union semun
15321#ifndef HAS_UNION_SEMUN
15322 {
15323 int val;
15324 struct semid_ds *buf;
15325 unsigned short *array;
15326 }
15327#endif
15328 arg;
15329 int sem, st;
15330
15331#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15332 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15333 if (sem > -1) {
15334 struct semid_ds argbuf;
15335 arg.buf = &argbuf;
15336# ifdef IPC_STAT
15337 st = semctl(sem, 0, IPC_STAT, arg);
15338 if (st == 0)
15339 printf("semun\n");
15340 else
15341# endif /* IPC_STAT */
15342 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15343# ifdef IPC_RMID
15344 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15345# endif /* IPC_RMID */
15346 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15347 } else
15348#endif /* IPC_PRIVATE && ... */
15349 printf("semget failed: errno = %d\n", errno);
15350 return 0;
15351}
15352END
2fad75a1
JH
15353 set try
15354 if eval $compile; then
15355 xxx=`$run ./try`
15356 case "$xxx" in
15357 semun) val="$define" ;;
15358 esac
15359 fi
15360 $rm -f try try.c
15361 ;;
15362 esac
b4eb6b3d
JH
15363 set d_semctl_semun
15364 eval $setvar
15365 case "$d_semctl_semun" in
15366 $define)
15367 echo "You can use union semun for semctl IPC_STAT." >&4
15368 also='also'
15369 ;;
15370 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15371 also=''
15372 ;;
15373 esac
15374
15375 : see whether semctl IPC_STAT can use struct semid_ds pointer
2fad75a1
JH
15376 val="$undef"
15377 case "$d_semctl_semid_ds" in
15378 '')
15379 $cat > try.c <<'END'
b4eb6b3d
JH
15380#include <sys/types.h>
15381#include <sys/ipc.h>
15382#include <sys/sem.h>
15383#include <sys/stat.h>
15384#include "try.h"
15385#include <stdio.h>
15386#include <errno.h>
15387#ifndef errno
15388extern int errno;
15389#endif
15390int main() {
15391 struct semid_ds arg;
15392 int sem, st;
15393
15394#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15395 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15396 if (sem > -1) {
15397# ifdef IPC_STAT
15398 st = semctl(sem, 0, IPC_STAT, &arg);
15399 if (st == 0)
15400 printf("semid_ds\n");
15401 else
15402# endif /* IPC_STAT */
15403 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15404# ifdef IPC_RMID
15405 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15406# endif /* IPC_RMID */
15407 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15408 } else
15409#endif /* IPC_PRIVATE && ... */
15410 printf("semget failed: errno = %d\n", errno);
15411
15412 return 0;
15413}
15414END
2fad75a1
JH
15415 set try
15416 if eval $compile; then
15417 xxx=`$run ./try`
15418 case "$xxx" in
15419 semid_ds) val="$define" ;;
15420 esac
15421 fi
15422 $rm -f try try.c
15423 ;;
15424 esac
b4eb6b3d
JH
15425 set d_semctl_semid_ds
15426 eval $setvar
15427 case "$d_semctl_semid_ds" in
15428 $define)
15429 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15430 ;;
15431 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15432 ;;
15433 esac
15434 $rm -f try.h
15435 ;;
15436*) val="$undef"
15437
15438 # We do not have the full sem*(2) library, so assume we can not
15439 # use either.
15440
15441 set d_semctl_semun
15442 eval $setvar
15443
15444 set d_semctl_semid_ds
15445 eval $setvar
15446 ;;
15447esac
15448
4e0554ec
JH
15449: see if sendmsg exists
15450set sendmsg d_sendmsg
15451eval $inlibc
15452
b4eb6b3d
JH
15453: see if setegid exists
15454set setegid d_setegid
15455eval $inlibc
15456
15457: see if seteuid exists
15458set seteuid d_seteuid
15459eval $inlibc
15460
15461: see if setgrent exists
15462set setgrent d_setgrent
15463eval $inlibc
15464
10bc17b6
JH
15465: see if setgrent_r exists
15466set setgrent_r d_setgrent_r
15467eval $inlibc
15468case "$d_setgrent_r" in
15469"$define")
15470 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
15471 case "$d_setgrent_r_proto:$usethreads" in
15472 ":define") d_setgrent_r_proto=define
a48ec845
JH
15473 set d_setgrent_r_proto setgrent_r $hdrs
15474 eval $hasproto ;;
15475 *) ;;
15476 esac
15477 case "$d_setgrent_r_proto" in
15478 define)
10bc17b6
JH
15479 case "$setgrent_r_proto" in
15480 ''|0) try='int setgrent_r(FILE**);'
15481 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15482 esac
15483 case "$setgrent_r_proto" in
15484 ''|0) try='void setgrent_r(FILE**);'
15485 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15486 esac
15487 case "$setgrent_r_proto" in
90e831dc 15488 ''|0) d_setgrent_r=undef
10bc17b6 15489 setgrent_r_proto=0
a48ec845 15490 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15491 * ) case "$setgrent_r_proto" in
15492 REENTRANT_PROTO*) ;;
15493 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15494 esac
15495 echo "Prototype: $try" ;;
15496 esac
15497 ;;
c18e646a
JH
15498 *) case "$usethreads" in
15499 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15500 esac
90e831dc
SB
15501 d_setgrent_r=undef
15502 setgrent_r_proto=0
c18e646a 15503 ;;
a48ec845
JH
15504 esac
15505 ;;
10bc17b6
JH
15506*) setgrent_r_proto=0
15507 ;;
15508esac
15509
b4eb6b3d
JH
15510: see if sethostent exists
15511set sethostent d_sethent
15512eval $inlibc
15513
10bc17b6
JH
15514: see if sethostent_r exists
15515set sethostent_r d_sethostent_r
15516eval $inlibc
15517case "$d_sethostent_r" in
15518"$define")
15519 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15520 case "$d_sethostent_r_proto:$usethreads" in
15521 ":define") d_sethostent_r_proto=define
a48ec845
JH
15522 set d_sethostent_r_proto sethostent_r $hdrs
15523 eval $hasproto ;;
15524 *) ;;
15525 esac
15526 case "$d_sethostent_r_proto" in
15527 define)
10bc17b6
JH
15528 case "$sethostent_r_proto" in
15529 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15530 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15531 esac
15532 case "$sethostent_r_proto" in
15533 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15534 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15535 esac
15536 case "$sethostent_r_proto" in
90e831dc 15537 ''|0) d_sethostent_r=undef
10bc17b6 15538 sethostent_r_proto=0
a48ec845 15539 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15540 * ) case "$sethostent_r_proto" in
15541 REENTRANT_PROTO*) ;;
15542 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15543 esac
15544 echo "Prototype: $try" ;;
15545 esac
15546 ;;
c18e646a
JH
15547 *) case "$usethreads" in
15548 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15549 esac
90e831dc
SB
15550 d_sethostent_r=undef
15551 sethostent_r_proto=0
c18e646a 15552 ;;
a48ec845
JH
15553 esac
15554 ;;
10bc17b6
JH
15555*) sethostent_r_proto=0
15556 ;;
15557esac
15558
4e0554ec
JH
15559: see if setitimer exists
15560set setitimer d_setitimer
15561eval $inlibc
15562
b4eb6b3d
JH
15563: see if setlinebuf exists
15564set setlinebuf d_setlinebuf
15565eval $inlibc
15566
15567: see if setlocale exists
15568set setlocale d_setlocale
15569eval $inlibc
15570
10bc17b6
JH
15571: see if locale.h is available
15572set locale.h i_locale
15573eval $inhdr
15574
15575: see if setlocale_r exists
15576set setlocale_r d_setlocale_r
15577eval $inlibc
15578case "$d_setlocale_r" in
15579"$define")
15580 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
c18e646a
JH
15581 case "$d_setlocale_r_proto:$usethreads" in
15582 ":define") d_setlocale_r_proto=define
a48ec845
JH
15583 set d_setlocale_r_proto setlocale_r $hdrs
15584 eval $hasproto ;;
15585 *) ;;
15586 esac
15587 case "$d_setlocale_r_proto" in
15588 define)
10bc17b6
JH
15589 case "$setlocale_r_proto" in
15590 ''|0) try='int setlocale_r(int, const char*, char*, int);'
15591 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15592 esac
15593 case "$setlocale_r_proto" in
90e831dc 15594 ''|0) d_setlocale_r=undef
10bc17b6 15595 setlocale_r_proto=0
a48ec845 15596 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15597 * ) case "$setlocale_r_proto" in
15598 REENTRANT_PROTO*) ;;
15599 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15600 esac
15601 echo "Prototype: $try" ;;
15602 esac
15603 ;;
c18e646a
JH
15604 *) case "$usethreads" in
15605 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15606 esac
90e831dc
SB
15607 d_setlocale_r=undef
15608 setlocale_r_proto=0
c18e646a 15609 ;;
a48ec845
JH
15610 esac
15611 ;;
10bc17b6
JH
15612*) setlocale_r_proto=0
15613 ;;
15614esac
15615
b4eb6b3d
JH
15616: see if setnetent exists
15617set setnetent d_setnent
15618eval $inlibc
15619
10bc17b6
JH
15620: see if setnetent_r exists
15621set setnetent_r d_setnetent_r
15622eval $inlibc
15623case "$d_setnetent_r" in
15624"$define")
15625 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15626 case "$d_setnetent_r_proto:$usethreads" in
15627 ":define") d_setnetent_r_proto=define
a48ec845
JH
15628 set d_setnetent_r_proto setnetent_r $hdrs
15629 eval $hasproto ;;
15630 *) ;;
15631 esac
15632 case "$d_setnetent_r_proto" in
15633 define)
10bc17b6
JH
15634 case "$setnetent_r_proto" in
15635 ''|0) try='int setnetent_r(int, struct netent_data*);'
15636 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15637 esac
15638 case "$setnetent_r_proto" in
15639 ''|0) try='void setnetent_r(int, struct netent_data*);'
15640 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15641 esac
15642 case "$setnetent_r_proto" in
90e831dc 15643 ''|0) d_setnetent_r=undef
10bc17b6 15644 setnetent_r_proto=0
a48ec845 15645 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15646 * ) case "$setnetent_r_proto" in
15647 REENTRANT_PROTO*) ;;
15648 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15649 esac
15650 echo "Prototype: $try" ;;
15651 esac
15652 ;;
c18e646a
JH
15653 *) case "$usethreads" in
15654 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15655 esac
90e831dc
SB
15656 d_setnetent_r=undef
15657 setnetent_r_proto=0
c18e646a 15658 ;;
a48ec845
JH
15659 esac
15660 ;;
10bc17b6
JH
15661*) setnetent_r_proto=0
15662 ;;
15663esac
15664
b4eb6b3d
JH
15665: see if setprotoent exists
15666set setprotoent d_setpent
15667eval $inlibc
15668
15669: see if setpgid exists
15670set setpgid d_setpgid
15671eval $inlibc
15672
15673: see if setpgrp2 exists
15674set setpgrp2 d_setpgrp2
15675eval $inlibc
15676
15677: see if setpriority exists
15678set setpriority d_setprior
15679eval $inlibc
15680
15681: see if setproctitle exists
15682set setproctitle d_setproctitle
15683eval $inlibc
15684
10bc17b6
JH
15685: see if setprotoent_r exists
15686set setprotoent_r d_setprotoent_r
15687eval $inlibc
15688case "$d_setprotoent_r" in
15689"$define")
15690 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15691 case "$d_setprotoent_r_proto:$usethreads" in
15692 ":define") d_setprotoent_r_proto=define
a48ec845
JH
15693 set d_setprotoent_r_proto setprotoent_r $hdrs
15694 eval $hasproto ;;
15695 *) ;;
15696 esac
15697 case "$d_setprotoent_r_proto" in
15698 define)
10bc17b6
JH
15699 case "$setprotoent_r_proto" in
15700 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15701 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15702 esac
15703 case "$setprotoent_r_proto" in
15704 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15705 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15706 esac
15707 case "$setprotoent_r_proto" in
90e831dc 15708 ''|0) d_setprotoent_r=undef
10bc17b6 15709 setprotoent_r_proto=0
a48ec845 15710 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15711 * ) case "$setprotoent_r_proto" in
15712 REENTRANT_PROTO*) ;;
15713 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15714 esac
15715 echo "Prototype: $try" ;;
15716 esac
15717 ;;
c18e646a
JH
15718 *) case "$usethreads" in
15719 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15720 esac
90e831dc
SB
15721 d_setprotoent_r=undef
15722 setprotoent_r_proto=0
c18e646a 15723 ;;
a48ec845
JH
15724 esac
15725 ;;
10bc17b6
JH
15726*) setprotoent_r_proto=0
15727 ;;
15728esac
15729
b4eb6b3d
JH
15730: see if setpwent exists
15731set setpwent d_setpwent
15732eval $inlibc
15733
10bc17b6
JH
15734: see if setpwent_r exists
15735set setpwent_r d_setpwent_r
15736eval $inlibc
15737case "$d_setpwent_r" in
15738"$define")
15739 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
15740 case "$d_setpwent_r_proto:$usethreads" in
15741 ":define") d_setpwent_r_proto=define
a48ec845
JH
15742 set d_setpwent_r_proto setpwent_r $hdrs
15743 eval $hasproto ;;
15744 *) ;;
15745 esac
15746 case "$d_setpwent_r_proto" in
15747 define)
10bc17b6
JH
15748 case "$setpwent_r_proto" in
15749 ''|0) try='int setpwent_r(FILE**);'
15750 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15751 esac
15752 case "$setpwent_r_proto" in
15753 ''|0) try='void setpwent_r(FILE**);'
15754 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15755 esac
15756 case "$setpwent_r_proto" in
90e831dc 15757 ''|0) d_setpwent_r=undef
10bc17b6 15758 setpwent_r_proto=0
a48ec845 15759 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15760 * ) case "$setpwent_r_proto" in
15761 REENTRANT_PROTO*) ;;
15762 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15763 esac
15764 echo "Prototype: $try" ;;
15765 esac
15766 ;;
c18e646a
JH
15767 *) case "$usethreads" in
15768 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15769 esac
90e831dc
SB
15770 d_setpwent_r=undef
15771 setpwent_r_proto=0
c18e646a 15772 ;;
a48ec845
JH
15773 esac
15774 ;;
10bc17b6
JH
15775*) setpwent_r_proto=0
15776 ;;
15777esac
15778
b4eb6b3d
JH
15779: see if setregid exists
15780set setregid d_setregid
15781eval $inlibc
15782set setresgid d_setresgid
15783eval $inlibc
15784
15785: see if setreuid exists
15786set setreuid d_setreuid
15787eval $inlibc
15788set setresuid d_setresuid
15789eval $inlibc
15790
15791: see if setrgid exists
15792set setrgid d_setrgid
15793eval $inlibc
15794
15795: see if setruid exists
15796set setruid d_setruid
15797eval $inlibc
15798
15799: see if setservent exists
15800set setservent d_setsent
15801eval $inlibc
15802
10bc17b6
JH
15803: see if setservent_r exists
15804set setservent_r d_setservent_r
15805eval $inlibc
15806case "$d_setservent_r" in
15807"$define")
15808 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15809 case "$d_setservent_r_proto:$usethreads" in
15810 ":define") d_setservent_r_proto=define
a48ec845
JH
15811 set d_setservent_r_proto setservent_r $hdrs
15812 eval $hasproto ;;
15813 *) ;;
15814 esac
15815 case "$d_setservent_r_proto" in
15816 define)
10bc17b6
JH
15817 case "$setservent_r_proto" in
15818 ''|0) try='int setservent_r(int, struct servent_data*);'
15819 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15820 esac
15821 case "$setservent_r_proto" in
15822 ''|0) try='void setservent_r(int, struct servent_data*);'
15823 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15824 esac
15825 case "$setservent_r_proto" in
90e831dc 15826 ''|0) d_setservent_r=undef
10bc17b6 15827 setservent_r_proto=0
a48ec845 15828 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15829 * ) case "$setservent_r_proto" in
15830 REENTRANT_PROTO*) ;;
15831 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15832 esac
15833 echo "Prototype: $try" ;;
15834 esac
15835 ;;
c18e646a
JH
15836 *) case "$usethreads" in
15837 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15838 esac
90e831dc
SB
15839 d_setservent_r=undef
15840 setservent_r_proto=0
c18e646a 15841 ;;
a48ec845
JH
15842 esac
15843 ;;
10bc17b6
JH
15844*) setservent_r_proto=0
15845 ;;
15846esac
15847
b4eb6b3d
JH
15848: see if setsid exists
15849set setsid d_setsid
15850eval $inlibc
15851
15852: see if setvbuf exists
15853set setvbuf d_setvbuf
15854eval $inlibc
15855
15856: see if sfio.h is available
15857set sfio.h i_sfio
15858eval $inhdr
15859
15860
15861: see if sfio library is available
15862case "$i_sfio" in
15863$define)
15864 val=''
15865 set sfreserve val
15866 eval $inlibc
15867 ;;
15868*)
15869 val="$undef"
15870 ;;
15871esac
15872: Ok, but do we want to use it.
15873case "$val" in
15874$define)
15875 case "$usesfio" in
15876 true|$define|[yY]*) dflt='y';;
15877 *) dflt='n';;
15878 esac
15879 echo "$package can use the sfio library, but it is experimental."
15880 case "$useperlio" in
15881 "$undef")
15882 echo "For sfio also the PerlIO abstraction layer is needed."
15883 echo "Earlier you said you wouldn't want that."
15884 ;;
15885 esac
15886 rp="You seem to have sfio available, do you want to try using it?"
15887 . ./myread
15888 case "$ans" in
15889 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15890 useperlio="$define"
15891 val="$define"
15892 ;;
15893 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15894 val="$undef"
b4eb6b3d
JH
15895 ;;
15896 esac
15897 ;;
15898*) case "$usesfio" in
15899 true|$define|[yY]*)
15900 echo "Sorry, cannot find sfio on this machine." >&4
15901 echo "Ignoring your setting of usesfio=$usesfio." >&4
15902 val="$undef"
15903 ;;
15904 esac
15905 ;;
15906esac
15907set d_sfio
15908eval $setvar
15909case "$d_sfio" in
15910$define) usesfio='true';;
15911*) usesfio='false';;
15912esac
3659ebf1
JH
15913case "$d_sfio" in
15914$define) ;;
15915*) : Remove sfio from list of libraries to use
7483f793
JH
15916 case "$libs" in
15917 *-lsfio*)
15918 echo "Removing unneeded -lsfio from library list" >&4
15919 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15920 shift
15921 libs="$*"
15922 echo "libs = $libs" >&4
15923 ;;
15924 esac
3659ebf1
JH
15925;;
15926esac
15927
b4eb6b3d
JH
15928
15929: see if shmctl exists
15930set shmctl d_shmctl
15931eval $inlibc
15932
15933: see if shmget exists
15934set shmget d_shmget
15935eval $inlibc
15936
15937: see if shmat exists
15938set shmat d_shmat
15939eval $inlibc
15940: see what shmat returns
15941case "$d_shmat" in
15942"$define")
15943 $cat >shmat.c <<'END'
15944#include <sys/shm.h>
15945void *shmat();
15946END
15947 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15948 shmattype='void *'
15949 else
15950 shmattype='char *'
15951 fi
15952 echo "and it returns ($shmattype)." >&4
15953 : see if a prototype for shmat is available
15954 xxx=`./findhdr sys/shm.h`
15955 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15956 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15957 val="$define"
15958 else
15959 val="$undef"
15960 fi
15961 $rm -f shmat.[co]
15962 ;;
15963*)
15964 val="$undef"
15965 ;;
15966esac
15967set d_shmatprototype
15968eval $setvar
15969
15970: see if shmdt exists
15971set shmdt d_shmdt
15972eval $inlibc
15973
15974: see how much of the 'shm*(2)' library is present.
15975h_shm=true
15976echo " "
15977case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15978*"$undef"*) h_shm=false;;
15979esac
15980case "$osname" in
15981freebsd)
15982 case "`ipcs 2>&1`" in
15983 "SVID shared memory"*"not configured"*)
15984 echo "Your $osname does not have the shm*(2) configured." >&4
15985 h_shm=false
15986 val="$undef"
15987 set shmctl d_shmctl
15988 evat $setvar
15989 set shmget d_shmget
15990 evat $setvar
15991 set shmat d_shmat
15992 evat $setvar
15993 set shmdt d_shmdt
15994 evat $setvar
15995 ;;
15996 esac
15997 ;;
15998esac
15999: we could also check for sys/ipc.h ...
16000if $h_shm && $test `./findhdr sys/shm.h`; then
16001 echo "You have the full shm*(2) library." >&4
16002 val="$define"
16003else
16004 echo "You don't have the full shm*(2) library." >&4
16005 val="$undef"
16006fi
16007set d_shm
16008eval $setvar
16009
16010echo " "
16011: see if we have sigaction
16012if set sigaction val -f d_sigaction; eval $csym; $val; then
16013 echo 'sigaction() found.' >&4
073b6de5 16014 $cat > try.c <<EOP
b4eb6b3d
JH
16015#include <stdio.h>
16016#include <sys/types.h>
16017#include <signal.h>
073b6de5
JH
16018#$i_stdlib I_STDLIB
16019#ifdef I_STDLIB
16020#include <stdlib.h>
16021#endif
b4eb6b3d
JH
16022int main()
16023{
16024 struct sigaction act, oact;
16025 act.sa_flags = 0;
16026 oact.sa_handler = 0;
16027 /* so that act and oact are used */
16028 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16029}
16030EOP
16031 set try
16032 if eval $compile_ok; then
16033 val="$define"
16034 else
16035 echo "But you don't seem to have a useable struct sigaction." >&4
16036 val="$undef"
16037 fi
16038else
16039 echo 'sigaction NOT found.' >&4
16040 val="$undef"
16041fi
16042set d_sigaction; eval $setvar
16043$rm -f try try$_o try.c
16044
983dbef6
JH
16045: see if sigprocmask exists
16046set sigprocmask d_sigprocmask
16047eval $inlibc
16048
b4eb6b3d
JH
16049: see if sigsetjmp exists
16050echo " "
16051case "$d_sigsetjmp" in
16052'')
c727eafa 16053 $cat >try.c <<EOP
b4eb6b3d 16054#include <setjmp.h>
d1daaddf
JH
16055#$i_stdlib I_STDLIB
16056#ifdef I_STDLIB
16057#include <stdlib.h>
16058#endif
b4eb6b3d
JH
16059sigjmp_buf env;
16060int set = 1;
16061int main()
16062{
16063 if (sigsetjmp(env,1))
16064 exit(set);
16065 set = 0;
16066 siglongjmp(env, 1);
16067 exit(1);
16068}
16069EOP
16070 set try
16071 if eval $compile; then
5440bc8e 16072 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
16073 echo "POSIX sigsetjmp found." >&4
16074 val="$define"
16075 else
16076 $cat >&4 <<EOM
16077Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16078I'll ignore them.
16079EOM
16080 val="$undef"
16081 fi
16082 else
16083 echo "sigsetjmp not found." >&4
16084 val="$undef"
16085 fi
16086 ;;
16087*) val="$d_sigsetjmp"
16088 case "$d_sigsetjmp" in
16089 $define) echo "POSIX sigsetjmp found." >&4;;
16090 $undef) echo "sigsetjmp not found." >&4;;
16091 esac
16092 ;;
16093esac
16094set d_sigsetjmp
16095eval $setvar
16096$rm -f try.c try
16097
49a78c82
JH
16098: see if sockatmark exists
16099set sockatmark d_sockatmark
16100eval $inlibc
16101
2ef53570
JH
16102: see if prototype for sockatmark is available
16103echo " "
16104set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16105eval $hasproto
16106
b4eb6b3d
JH
16107: see if socks5_init exists
16108set socks5_init d_socks5_init
16109eval $inlibc
16110
10bc17b6
JH
16111: see if srand48_r exists
16112set srand48_r d_srand48_r
16113eval $inlibc
16114case "$d_srand48_r" in
16115"$define")
16116 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16117 case "$d_srand48_r_proto:$usethreads" in
16118 ":define") d_srand48_r_proto=define
a48ec845
JH
16119 set d_srand48_r_proto srand48_r $hdrs
16120 eval $hasproto ;;
16121 *) ;;
16122 esac
16123 case "$d_srand48_r_proto" in
16124 define)
10bc17b6
JH
16125 case "$srand48_r_proto" in
16126 ''|0) try='int srand48_r(long, struct drand48_data*);'
16127 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16128 esac
16129 case "$srand48_r_proto" in
90e831dc 16130 ''|0) d_srand48_r=undef
10bc17b6 16131 srand48_r_proto=0
a48ec845 16132 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16133 * ) case "$srand48_r_proto" in
16134 REENTRANT_PROTO*) ;;
16135 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16136 esac
16137 echo "Prototype: $try" ;;
16138 esac
16139 ;;
c18e646a
JH
16140 *) case "$usethreads" in
16141 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16142 esac
90e831dc
SB
16143 d_srand48_r=undef
16144 srand48_r_proto=0
c18e646a 16145 ;;
a48ec845
JH
16146 esac
16147 ;;
10bc17b6
JH
16148*) srand48_r_proto=0
16149 ;;
16150esac
16151
16152: see if srandom_r exists
16153set srandom_r d_srandom_r
16154eval $inlibc
16155case "$d_srandom_r" in
16156"$define")
16157 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16158 case "$d_srandom_r_proto:$usethreads" in
16159 ":define") d_srandom_r_proto=define
a48ec845
JH
16160 set d_srandom_r_proto srandom_r $hdrs
16161 eval $hasproto ;;
16162 *) ;;
16163 esac
16164 case "$d_srandom_r_proto" in
16165 define)
10bc17b6
JH
16166 case "$srandom_r_proto" in
16167 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16168 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16169 esac
16170 case "$srandom_r_proto" in
90e831dc 16171 ''|0) d_srandom_r=undef
10bc17b6 16172 srandom_r_proto=0
a48ec845 16173 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16174 * ) case "$srandom_r_proto" in
16175 REENTRANT_PROTO*) ;;
16176 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16177 esac
16178 echo "Prototype: $try" ;;
16179 esac
16180 ;;
c18e646a
JH
16181 *) case "$usethreads" in
16182 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16183 esac
90e831dc
SB
16184 d_srandom_r=undef
16185 srandom_r_proto=0
c18e646a 16186 ;;
a48ec845
JH
16187 esac
16188 ;;
10bc17b6
JH
16189*) srandom_r_proto=0
16190 ;;
16191esac
16192
eef837ea
JH
16193: see if prototype for setresgid is available
16194echo " "
16195set d_sresgproto setresgid $i_unistd unistd.h
16196eval $hasproto
16197
640374d0
JH
16198: see if prototype for setresuid is available
16199echo " "
16200set d_sresuproto setresuid $i_unistd unistd.h
16201eval $hasproto
16202
b4eb6b3d
JH
16203: see if sys/stat.h is available
16204set sys/stat.h i_sysstat
16205eval $inhdr
16206
16207
16208: see if stat knows about block sizes
16209echo " "
16210echo "Checking to see if your struct stat has st_blocks field..." >&4
16211set d_statblks stat st_blocks $i_sysstat sys/stat.h
16212eval $hasfield
16213
16214
16215: see if this is a sys/vfs.h system
16216set sys/vfs.h i_sysvfs
16217eval $inhdr
16218
16219
16220: see if this is a sys/statfs.h system
16221set sys/statfs.h i_sysstatfs
16222eval $inhdr
16223
16224
16225echo " "
16226echo "Checking to see if your system supports struct statfs..." >&4
16227set 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
16228eval $hasstruct
16229case "$d_statfs_s" in
16230"$define") echo "Yes, it does." ;;
16231*) echo "No, it doesn't." ;;
16232esac
16233
16234
16235
16236: see if struct statfs knows about f_flags
16237case "$d_statfs_s" in
16238define)
16239 echo " "
16240 echo "Checking to see if your struct statfs has f_flags field..." >&4
16241 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
16242 eval $hasfield
16243 ;;
16244*) val="$undef"
16245 set d_statfs_f_flags
16246 eval $setvar
16247 ;;
16248esac
16249case "$d_statfs_f_flags" in
16250"$define") echo "Yes, it does." ;;
16251*) echo "No, it doesn't." ;;
16252esac
16253
b4eb6b3d
JH
16254$cat >&4 <<EOM
16255Checking how to access stdio streams by file descriptor number...
16256EOM
16257case "$stdio_stream_array" in
16258'') $cat >try.c <<EOCP
16259#include <stdio.h>
16260int main() {
16261 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16262 printf("yes\n");
16263}
16264EOCP
16265 for s in _iob __iob __sF
16266 do
16267 set try -DSTDIO_STREAM_ARRAY=$s
16268 if eval $compile; then
5440bc8e 16269 case "`$run ./try`" in
b4eb6b3d
JH
16270 yes) stdio_stream_array=$s; break ;;
16271 esac
16272 fi
16273 done
16274 $rm -f try.* try$exe_ext
16275esac
16276case "$stdio_stream_array" in
16277'') $cat >&4 <<EOM
16278I can't figure out how to access stdio streams by file descriptor number.
16279EOM
16280 d_stdio_stream_array="$undef"
16281 ;;
16282*) $cat >&4 <<EOM
16283You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16284EOM
16285 d_stdio_stream_array="$define"
16286 ;;
16287esac
16288
16289: see if strcoll exists
16290set strcoll d_strcoll
16291eval $inlibc
16292
16293: check for structure copying
16294echo " "
16295echo "Checking to see if your C compiler can copy structs..." >&4
16296$cat >try.c <<'EOCP'
76f47787 16297int main()
b4eb6b3d
JH
16298{
16299 struct blurfl {
16300 int dyick;
16301 } foo, bar;
16302
16303 foo = bar;
16304}
16305EOCP
16306if $cc -c try.c >/dev/null 2>&1 ; then
16307 val="$define"
16308 echo "Yup, it can."
16309else
16310 val="$undef"
16311 echo "Nope, it can't."
16312fi
16313set d_strctcpy
16314eval $setvar
16315$rm -f try.*
16316
16317: see if strerror and/or sys_errlist[] exist
16318echo " "
16319if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16320 if set strerror val -f d_strerror; eval $csym; $val; then
16321 echo 'strerror() found.' >&4
16322 d_strerror="$define"
16323 d_strerrm='strerror(e)'
16324 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16325 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16326 d_syserrlst="$define"
16327 else
16328 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16329 d_syserrlst="$undef"
16330 fi
16331 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16332 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16333 echo 'strerror() found in string header.' >&4
16334 d_strerror="$define"
16335 d_strerrm='strerror(e)'
16336 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16337 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16338 d_syserrlst="$define"
16339 else
16340 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16341 d_syserrlst="$undef"
16342 fi
16343 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16344 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16345 d_strerror="$undef"
16346 d_syserrlst="$define"
16347 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16348 else
16349 echo 'strerror() and sys_errlist[] NOT found.' >&4
16350 d_strerror="$undef"
16351 d_syserrlst="$undef"
16352 d_strerrm='"unknown"'
16353 fi
16354fi
16355
10bc17b6
JH
16356: see if strerror_r exists
16357set strerror_r d_strerror_r
16358eval $inlibc
16359case "$d_strerror_r" in
16360"$define")
16361 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
c18e646a
JH
16362 case "$d_strerror_r_proto:$usethreads" in
16363 ":define") d_strerror_r_proto=define
a48ec845
JH
16364 set d_strerror_r_proto strerror_r $hdrs
16365 eval $hasproto ;;
16366 *) ;;
16367 esac
16368 case "$d_strerror_r_proto" in
16369 define)
10bc17b6
JH
16370 case "$strerror_r_proto" in
16371 ''|0) try='int strerror_r(int, char*, size_t);'
16372 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16373 esac
16374 case "$strerror_r_proto" in
16375 ''|0) try='int strerror_r(int, char*, int);'
16376 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16377 esac
16378 case "$strerror_r_proto" in
16379 ''|0) try='char* strerror_r(int, char*, size_t);'
16380 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16381 esac
16382 case "$strerror_r_proto" in
90e831dc 16383 ''|0) d_strerror_r=undef
10bc17b6 16384 strerror_r_proto=0
a48ec845 16385 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16386 * ) case "$strerror_r_proto" in
16387 REENTRANT_PROTO*) ;;
16388 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16389 esac
16390 echo "Prototype: $try" ;;
16391 esac
16392 ;;
c18e646a
JH
16393 *) case "$usethreads" in
16394 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16395 esac
90e831dc
SB
16396 d_strerror_r=undef
16397 strerror_r_proto=0
c18e646a 16398 ;;
a48ec845
JH
16399 esac
16400 ;;
10bc17b6
JH
16401*) strerror_r_proto=0
16402 ;;
16403esac
16404
b3c85772
JH
16405: see if strftime exists
16406set strftime d_strftime
16407eval $inlibc
16408
b4eb6b3d
JH
16409: see if strtod exists
16410set strtod d_strtod
16411eval $inlibc
16412
16413: see if strtol exists
16414set strtol d_strtol
16415eval $inlibc
16416
16417: see if strtold exists
16418set strtold d_strtold
16419eval $inlibc
16420
16421: see if strtoll exists
16422set strtoll d_strtoll
16423eval $inlibc
16424
16425case "$d_longlong-$d_strtoll" in
16426"$define-$define")
16427 $cat <<EOM
16428Checking whether your strtoll() works okay...
16429EOM
16430 $cat >try.c <<'EOCP'
16431#include <errno.h>
16432#ifdef __hpux
16433#define strtoll __strtoll
16434#endif
e75931a7
YST
16435#ifdef __EMX__
16436#define strtoll _strtoll
16437#endif
b4eb6b3d
JH
16438#include <stdio.h>
16439extern long long int strtoll(char *s, char **, int);
16440static int bad = 0;
16441int check(char *s, long long ell, int een) {
16442 long long gll;
16443 errno = 0;
16444 gll = strtoll(s, 0, 10);
16445 if (!((gll == ell) && (errno == een)))
16446 bad++;
16447}
16448int main() {
16449 check(" 1", 1LL, 0);
16450 check(" 0", 0LL, 0);
16451 check("-1", -1LL, 0);
16452 check("-9223372036854775808", -9223372036854775808LL, 0);
16453 check("-9223372036854775808", -9223372036854775808LL, 0);
16454 check(" 9223372036854775807", 9223372036854775807LL, 0);
16455 check("-9223372036854775808", -9223372036854775808LL, 0);
16456 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
16457 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16458 if (!bad)
16459 printf("ok\n");
16460}
16461EOCP
16462 set try
16463 if eval $compile; then
5440bc8e 16464 yyy=`$run ./try`
e75931a7 16465 case "$yyy" in
b4eb6b3d
JH
16466 ok) echo "Your strtoll() seems to be working okay." ;;
16467 *) cat <<EOM >&4
16468Your strtoll() doesn't seem to be working okay.
16469EOM
16470 d_strtoll="$undef"
16471 ;;
69eadf66 16472 esac
e75931a7
YST
16473 else
16474 echo "(I can't seem to compile the test program--assuming it doesn't)"
16475 d_strtoll="$undef"
b4eb6b3d
JH
16476 fi
16477 ;;
16478esac
16479
28e5dec8
JH
16480: see if strtoq exists
16481set strtoq d_strtoq
16482eval $inlibc
16483
b4eb6b3d
JH
16484: see if strtoul exists
16485set strtoul d_strtoul
16486eval $inlibc
16487
d0e6d399
NC
16488case "$d_strtoul" in
16489"$define")
16490 $cat <<EOM
16491Checking whether your strtoul() works okay...
16492EOM
16493 $cat >try.c <<'EOCP'
16494#include <errno.h>
16495#include <stdio.h>
16496extern unsigned long int strtoul(char *s, char **, int);
16497static int bad = 0;
16498void check(char *s, unsigned long eul, int een) {
16499 unsigned long gul;
16500 errno = 0;
16501 gul = strtoul(s, 0, 10);
16502 if (!((gul == eul) && (errno == een)))
16503 bad++;
16504}
16505int main() {
16506 check(" 1", 1L, 0);
16507 check(" 0", 0L, 0);
16508EOCP
16509 case "$longsize" in
16510 8)
16511 $cat >>try.c <<'EOCP'
09c0d2c4
JH
16512 check("18446744073709551615", 18446744073709551615UL, 0);
16513 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 16514#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 16515 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
16516 check("-18446744073709551614", 2, 0);
16517 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
16518 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16519 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 16520#endif
d0e6d399
NC
16521EOCP
16522 ;;
16523 4)
16524 $cat >>try.c <<'EOCP'
16525 check("4294967295", 4294967295UL, 0);
16526 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 16527#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
16528 check("-1", 4294967295UL, 0);
16529 check("-4294967294", 2, 0);
16530 check("-4294967295", 1, 0);
16531 check("-4294967296", 4294967295UL, ERANGE);
16532 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 16533#endif
d0e6d399
NC
16534EOCP
16535 ;;
16536 *)
16537: Should we write these tests to be more portable by sprintf-ing
16538: ~0 and then manipulating that char string as input for strtol?
16539 ;;
16540 esac
16541 $cat >>try.c <<'EOCP'
16542 if (!bad)
16543 printf("ok\n");
16544 return 0;
16545}
16546EOCP
16547 set try
16548 if eval $compile; then
5440bc8e 16549 case "`$run ./try`" in
d0e6d399
NC
16550 ok) echo "Your strtoul() seems to be working okay." ;;
16551 *) cat <<EOM >&4
16552Your strtoul() doesn't seem to be working okay.
16553EOM
16554 d_strtoul="$undef"
16555 ;;
16556 esac
16557 fi
16558 ;;
16559esac
16560
b4eb6b3d
JH
16561: see if strtoull exists
16562set strtoull d_strtoull
16563eval $inlibc
16564
16565case "$d_longlong-$d_strtoull" in
16566"$define-$define")
16567 $cat <<EOM
16568Checking whether your strtoull() works okay...
16569EOM
16570 $cat >try.c <<'EOCP'
16571#include <errno.h>
16572#ifdef __hpux
16573#define strtoull __strtoull
16574#endif
16575#include <stdio.h>
16576extern unsigned long long int strtoull(char *s, char **, int);
16577static int bad = 0;
16578int check(char *s, long long eull, int een) {
16579 long long gull;
16580 errno = 0;
16581 gull = strtoull(s, 0, 10);
16582 if (!((gull == eull) && (errno == een)))
16583 bad++;
16584}
16585int main() {
d0e6d399
NC
16586 check(" 1", 1LL, 0);
16587 check(" 0", 0LL, 0);
16588 check("18446744073709551615", 18446744073709551615ULL, 0);
16589 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16590#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
16591 check("-1", 18446744073709551615ULL, 0);
16592 check("-18446744073709551614", 2LL, 0);
16593 check("-18446744073709551615", 1LL, 0);
16594 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16595 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16596#endif
b4eb6b3d
JH
16597 if (!bad)
16598 printf("ok\n");
16599}
16600EOCP
16601 set try
16602 if eval $compile; then
5440bc8e 16603 case "`$run ./try`" in
b4eb6b3d
JH
16604 ok) echo "Your strtoull() seems to be working okay." ;;
16605 *) cat <<EOM >&4
16606Your strtoull() doesn't seem to be working okay.
16607EOM
16608 d_strtoull="$undef"
16609 ;;
16610 esac
16611 fi
16612 ;;
16613esac
16614
16615: see if strtouq exists
16616set strtouq d_strtouq
16617eval $inlibc
16618
d0e6d399
NC
16619case "$d_strtouq" in
16620"$define")
16621 $cat <<EOM
16622Checking whether your strtouq() works okay...
16623EOM
16624 $cat >try.c <<'EOCP'
16625#include <errno.h>
16626#include <stdio.h>
16627extern unsigned long long int strtouq(char *s, char **, int);
16628static int bad = 0;
16629void check(char *s, unsigned long long eull, int een) {
16630 unsigned long long gull;
16631 errno = 0;
16632 gull = strtouq(s, 0, 10);
16633 if (!((gull == eull) && (errno == een)))
16634 bad++;
16635}
16636int main() {
16637 check(" 1", 1LL, 0);
16638 check(" 0", 0LL, 0);
16639 check("18446744073709551615", 18446744073709551615ULL, 0);
16640 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16641#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
16642 check("-1", 18446744073709551615ULL, 0);
16643 check("-18446744073709551614", 2LL, 0);
16644 check("-18446744073709551615", 1LL, 0);
16645 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16646 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16647#endif
d0e6d399
NC
16648 if (!bad)
16649 printf("ok\n");
16650 return 0;
16651}
16652EOCP
16653 set try
16654 if eval $compile; then
5440bc8e 16655 case "`$run ./try`" in
d0e6d399
NC
16656 ok) echo "Your strtouq() seems to be working okay." ;;
16657 *) cat <<EOM >&4
16658Your strtouq() doesn't seem to be working okay.
16659EOM
16660 d_strtouq="$undef"
16661 ;;
16662 esac
16663 fi
16664 ;;
16665esac
16666
b4eb6b3d
JH
16667: see if strxfrm exists
16668set strxfrm d_strxfrm
16669eval $inlibc
16670
16671: see if symlink exists
16672set symlink d_symlink
16673eval $inlibc
16674
16675: see if syscall exists
16676set syscall d_syscall
16677eval $inlibc
16678
2ef53570
JH
16679: see if prototype for syscall is available
16680echo " "
16681set d_syscallproto syscall $i_unistd unistd.h
16682eval $hasproto
16683
b4eb6b3d
JH
16684: see if sysconf exists
16685set sysconf d_sysconf
16686eval $inlibc
16687
16688: see if system exists
16689set system d_system
16690eval $inlibc
16691
16692: see if tcgetpgrp exists
16693set tcgetpgrp d_tcgetpgrp
16694eval $inlibc
16695
16696: see if tcsetpgrp exists
16697set tcsetpgrp d_tcsetpgrp
16698eval $inlibc
16699
16700: see if prototype for telldir is available
16701echo " "
16702set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16703eval $hasproto
16704
ad493445
MB
16705: see if time exists
16706echo " "
16707if test "X$d_time" = X -o X"$timetype" = X; then
16708 if set time val -f d_time; eval $csym; $val; then
16709 echo 'time() found.' >&4
16710 val="$define"
16711 rp="What is the type returned by time() on this system?"
16712 set time_t timetype long stdio.h sys/types.h
16713 eval $typedef_ask
16714 else
16715 echo 'time() not found, hope that will do.' >&4
16716 val="$undef"
16717 timetype='int';
16718 fi
16719 set d_time
16720 eval $setvar
16721fi
16722
b4eb6b3d
JH
16723: see if this is a sys/times.h system
16724set sys/times.h i_systimes
16725eval $inhdr
16726
16727: see if times exists
16728echo " "
16729if set times val -f d_times; eval $csym; $val; then
16730 echo 'times() found.' >&4
16731 d_times="$define"
16732 inc=''
16733 case "$i_systimes" in
16734 "$define") inc='sys/times.h';;
16735 esac
16736 rp="What is the type returned by times() on this system?"
16737 set clock_t clocktype long stdio.h sys/types.h $inc
16738 eval $typedef_ask
16739else
16740 echo 'times() NOT found, hope that will do.' >&4
16741 d_times="$undef"
16742 clocktype='int'
16743fi
16744
10bc17b6
JH
16745: see if tmpnam_r exists
16746set tmpnam_r d_tmpnam_r
16747eval $inlibc
16748case "$d_tmpnam_r" in
16749"$define")
31ee0cb7 16750 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
16751 case "$d_tmpnam_r_proto:$usethreads" in
16752 ":define") d_tmpnam_r_proto=define
a48ec845
JH
16753 set d_tmpnam_r_proto tmpnam_r $hdrs
16754 eval $hasproto ;;
16755 *) ;;
16756 esac
16757 case "$d_tmpnam_r_proto" in
16758 define)
10bc17b6
JH
16759 case "$tmpnam_r_proto" in
16760 ''|0) try='char* tmpnam_r(char*);'
16761 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16762 esac
16763 case "$tmpnam_r_proto" in
90e831dc 16764 ''|0) d_tmpnam_r=undef
10bc17b6 16765 tmpnam_r_proto=0
a48ec845 16766 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16767 * ) case "$tmpnam_r_proto" in
16768 REENTRANT_PROTO*) ;;
16769 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16770 esac
16771 echo "Prototype: $try" ;;
16772 esac
16773 ;;
c18e646a
JH
16774 *) case "$usethreads" in
16775 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16776 esac
90e831dc
SB
16777 d_tmpnam_r=undef
16778 tmpnam_r_proto=0
c18e646a 16779 ;;
a48ec845
JH
16780 esac
16781 ;;
10bc17b6
JH
16782*) tmpnam_r_proto=0
16783 ;;
16784esac
16785
b4eb6b3d
JH
16786: see if truncate exists
16787set truncate d_truncate
16788eval $inlibc
16789
10bc17b6
JH
16790: see if ttyname_r exists
16791set ttyname_r d_ttyname_r
16792eval $inlibc
16793case "$d_ttyname_r" in
16794"$define")
16795 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
16796 case "$d_ttyname_r_proto:$usethreads" in
16797 ":define") d_ttyname_r_proto=define
a48ec845
JH
16798 set d_ttyname_r_proto ttyname_r $hdrs
16799 eval $hasproto ;;
16800 *) ;;
16801 esac
16802 case "$d_ttyname_r_proto" in
16803 define)
10bc17b6
JH
16804 case "$ttyname_r_proto" in
16805 ''|0) try='int ttyname_r(int, char*, size_t);'
16806 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16807 esac
16808 case "$ttyname_r_proto" in
16809 ''|0) try='int ttyname_r(int, char*, int);'
16810 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16811 esac
16812 case "$ttyname_r_proto" in
16813 ''|0) try='char* ttyname_r(int, char*, int);'
16814 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16815 esac
16816 case "$ttyname_r_proto" in
90e831dc 16817 ''|0) d_ttyname_r=undef
10bc17b6 16818 ttyname_r_proto=0
a48ec845 16819 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16820 * ) case "$ttyname_r_proto" in
16821 REENTRANT_PROTO*) ;;
16822 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16823 esac
16824 echo "Prototype: $try" ;;
16825 esac
16826 ;;
c18e646a
JH
16827 *) case "$usethreads" in
16828 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16829 esac
90e831dc
SB
16830 d_ttyname_r=undef
16831 ttyname_r_proto=0
c18e646a 16832 ;;
a48ec845
JH
16833 esac
16834 ;;
10bc17b6
JH
16835*) ttyname_r_proto=0
16836 ;;
16837esac
16838
b4eb6b3d
JH
16839: see if tzname[] exists
16840echo " "
16841if set tzname val -a d_tzname; eval $csym; $val; then
16842 val="$define"
16843 echo 'tzname[] found.' >&4
16844else
16845 val="$undef"
16846 echo 'tzname[] NOT found.' >&4
16847fi
16848set d_tzname
16849eval $setvar
16850
4e0554ec
JH
16851case "$osname" in
16852next|rhapsody|darwin) multiarch="$define" ;;
16853esac
16854case "$multiarch" in
16855''|[nN]*) multiarch="$undef" ;;
16856esac
16857
24412007 16858: check for ordering of bytes in a UV
4e0554ec 16859echo " "
5440bc8e 16860case "$usecrosscompile$multiarch" in
4e0554ec
JH
16861*$define*)
16862 $cat <<EOM
16863You seem to be either cross-compiling or doing a multiarchitecture build,
16864skipping the byteorder check.
16865
16866EOM
5440bc8e 16867 byteorder='ffff'
4e0554ec
JH
16868 ;;
16869*)
16870 case "$byteorder" in
16871 '')
16872 $cat <<'EOM'
16873In the following, larger digits indicate more significance. A big-endian
16874machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16875little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16876machines may have weird orders like 3412. A Cray will report 87654321,
16877an Alpha will report 12345678. If the test program works the default is
16878probably right.
16879I'm now running the test program...
16880EOM
24412007 16881 $cat >try.c <<EOCP
4e0554ec 16882#include <stdio.h>
55954f19
JH
16883#$i_stdlib I_STDLIB
16884#ifdef I_STDLIB
16885#include <stdlib.h>
16886#endif
24412007
JH
16887#include <sys/types.h>
16888typedef $uvtype UV;
4e0554ec
JH
16889int main()
16890{
16891 int i;
16892 union {
24412007
JH
16893 UV l;
16894 char c[$uvsize];
4e0554ec
JH
16895 } u;
16896
24412007 16897 if ($uvsize > 4)
b5ded3e5 16898 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
4e0554ec 16899 else
a4c53327 16900 u.l = (UV)0x04030201;
24412007 16901 for (i = 0; i < $uvsize; i++)
4e0554ec
JH
16902 printf("%c", u.c[i]+'0');
16903 printf("\n");
16904 exit(0);
16905}
16906EOCP
16907 xxx_prompt=y
16908 set try
16909 if eval $compile && ./try > /dev/null; then
5440bc8e 16910 dflt=`$run ./try`
4e0554ec
JH
16911 case "$dflt" in
16912 [1-4][1-4][1-4][1-4]|12345678|87654321)
16913 echo "(The test program ran ok.)"
16914 echo "byteorder=$dflt"
16915 xxx_prompt=n
16916 ;;
16917 ????|????????) echo "(The test program ran ok.)" ;;
16918 *) echo "(The test program didn't run right for some reason.)" ;;
16919 esac
16920 else
16921 dflt='4321'
16922 cat <<'EOM'
16923(I can't seem to compile the test program. Guessing big-endian...)
16924EOM
16925 fi
16926 case "$xxx_prompt" in
16927 y)
24412007 16928 rp="What is the order of bytes in $uvtype?"
4e0554ec
JH
16929 . ./myread
16930 byteorder="$ans"
16931 ;;
16932 *) byteorder=$dflt
16933 ;;
16934 esac
16935 ;;
16936 esac
16937 $rm -f try.c try
16938 ;;
16939esac
16940
16941
16942$cat <<EOM
16943
16944Checking to see whether you can access character data unalignedly...
16945EOM
dc7b0a4f
JH
16946case "$d_u32align" in
16947'') $cat >try.c <<EOCP
4e0554ec 16948#include <stdio.h>
d1daaddf
JH
16949#$i_stdlib I_STDLIB
16950#ifdef I_STDLIB
16951#include <stdlib.h>
16952#endif
4e0554ec 16953#define U32 $u32type
d308175a
JH
16954#define BYTEORDER 0x$byteorder
16955#define U8 $u8type
9958dc3c
JH
16956#include <signal.h>
16957#ifdef SIGBUS
16958$signal_t bletch(s) int s; { exit(4); }
16959#endif
4e0554ec
JH
16960int main() {
16961#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
8906a23e 16962 U8 buf[8];
4e0554ec
JH
16963 U32 *up;
16964 int i;
16965
16966 if (sizeof(U32) != 4) {
16967 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16968 exit(1);
16969 }
16970
16971 fflush(stdout);
16972
9958dc3c
JH
16973#ifdef SIGBUS
16974 signal(SIGBUS, bletch);
16975#endif
16976
8906a23e
JH
16977 buf[0] = 0;
16978 buf[1] = 0;
16979 buf[2] = 0;
16980 buf[3] = 1;
7eac3fd6 16981 buf[4] = 0;
8906a23e
JH
16982 buf[5] = 0;
16983 buf[6] = 0;
7eac3fd6 16984 buf[7] = 1;
8906a23e 16985
4e0554ec
JH
16986 for (i = 0; i < 4; i++) {
16987 up = (U32*)(buf + i);
16988 if (! ((*up == 1 << (8*i)) || /* big-endian */
16989 (*up == 1 << (8*(3-i))) /* little-endian */
16990 )
16991 )
16992 {
16993 printf("read failed (%x)\n", *up);
16994 exit(2);
16995 }
16996 }
16997
16998 /* write test */
16999 for (i = 0; i < 4; i++) {
17000 up = (U32*)(buf + i);
17001 *up = 0xBeef;
17002 if (*up != 0xBeef) {
17003 printf("write failed (%x)\n", *up);
17004 exit(3);
17005 }
17006 }
17007
17008 exit(0);
17009#else
17010 printf("1\n");
17011 exit(1);
17012#endif
17013 return 0;
17014}
17015EOCP
17016set try
17017if eval $compile_ok; then
d308175a 17018 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 17019 $run ./try 2>&1 >/dev/null
4e0554ec
JH
17020 case "$?" in
17021 0) cat >&4 <<EOM
17022You can access character data pretty unalignedly.
17023EOM
17024 d_u32align="$undef"
17025 ;;
17026 *) cat >&4 <<EOM
17027It seems that you must access character data in an aligned manner.
17028EOM
17029 d_u32align="$define"
17030 ;;
17031 esac
4e0554ec
JH
17032else
17033 rp='Can you access character data at unaligned addresses?'
17034 dflt='n'
17035 . ./myread
17036 case "$ans" in
17037 [yY]*) d_u32align="$undef" ;;
17038 *) d_u32align="$define" ;;
17039 esac
17040fi
e36b5403 17041$rm -f core core.try.* try.core
dc7b0a4f
JH
17042;;
17043esac
4e0554ec
JH
17044
17045: see if ualarm exists
17046set ualarm d_ualarm
17047eval $inlibc
17048
b4eb6b3d
JH
17049: see if umask exists
17050set umask d_umask
17051eval $inlibc
17052
758a5d79
JH
17053: see if unordered exists
17054set unordered d_unordered
17055eval $inlibc
17056
4e0554ec
JH
17057: see if usleep exists
17058set usleep d_usleep
17059eval $inlibc
17060
2ef53570
JH
17061: see if prototype for usleep is available
17062echo " "
17063set d_usleepproto usleep $i_unistd unistd.h
17064eval $hasproto
17065
b4eb6b3d
JH
17066: see if ustat exists
17067set ustat d_ustat
17068eval $inlibc
17069
17070: backward compatibility for d_hvfork
17071if test X$d_hvfork != X; then
17072 d_vfork="$d_hvfork"
17073 d_hvfork=''
17074fi
17075: see if there is a vfork
17076val=''
17077set vfork val
17078eval $inlibc
17079
17080: Ok, but do we want to use it. vfork is reportedly unreliable in
17081: perl on Solaris 2.x, and probably elsewhere.
17082case "$val" in
17083$define)
17084 echo " "
17085 case "$usevfork" in
17086 false) dflt='n';;
17087 *) dflt='y';;
17088 esac
17089 cat <<'EOM'
17090
17091Perl can only use a vfork() that doesn't suffer from strict
17092restrictions on calling functions or modifying global data in
17093the child. For example, glibc-2.1 contains such a vfork()
17094that is unsuitable. If your system provides a proper fork()
17095call, chances are that you do NOT want perl to use vfork().
17096
17097EOM
17098 rp="Do you still want to use vfork()?"
17099 . ./myread
17100 case "$ans" in
17101 y|Y) ;;
17102 *)
17103 echo "Ok, we won't use vfork()."
17104 val="$undef"
17105 ;;
17106 esac
17107 ;;
17108esac
17109set d_vfork
17110eval $setvar
17111case "$d_vfork" in
17112$define) usevfork='true';;
17113*) usevfork='false';;
17114esac
17115
b4eb6b3d
JH
17116: see if closedir exists
17117set closedir d_closedir
17118eval $inlibc
17119
17120case "$d_closedir" in
17121"$define")
17122 echo " "
17123 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 17124 cat > try.c <<EOM
b4eb6b3d
JH
17125#$i_dirent I_DIRENT /**/
17126#$i_sysdir I_SYS_DIR /**/
17127#$i_sysndir I_SYS_NDIR /**/
17128#$i_systypes I_SYS_TYPES /**/
17129
17130#if defined(I_SYS_TYPES)
17131#include <sys/types.h>
17132#endif
17133#if defined(I_DIRENT)
17134#include <dirent.h>
17135#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17136#include <sys/dir.h>
17137#endif
17138#else
17139#ifdef I_SYS_NDIR
17140#include <sys/ndir.h>
17141#else
17142#ifdef I_SYS_DIR
17143#ifdef hp9000s500
17144#include <ndir.h> /* may be wrong in the future */
17145#else
17146#include <sys/dir.h>
17147#endif
17148#endif
17149#endif
17150#endif
17151int main() { return closedir(opendir(".")); }
17152EOM
5440bc8e 17153 set try
b4eb6b3d 17154 if eval $compile_ok; then
5440bc8e 17155 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
17156 echo "Yes, it does."
17157 val="$undef"
17158 else
17159 echo "No, it doesn't."
17160 val="$define"
17161 fi
17162 else
17163 echo "(I can't seem to compile the test program--assuming it doesn't)"
17164 val="$define"
17165 fi
17166 ;;
17167*)
17168 val="$undef";
17169 ;;
17170esac
17171set d_void_closedir
17172eval $setvar
5440bc8e 17173$rm -f try try.*
b4eb6b3d
JH
17174: see if there is a wait4
17175set wait4 d_wait4
17176eval $inlibc
17177
17178: see if waitpid exists
17179set waitpid d_waitpid
17180eval $inlibc
17181
17182: see if wcstombs exists
17183set wcstombs d_wcstombs
17184eval $inlibc
17185
17186: see if wctomb exists
17187set wctomb d_wctomb
17188eval $inlibc
17189
4e0554ec
JH
17190: see if writev exists
17191set writev d_writev
17192eval $inlibc
17193
b4eb6b3d
JH
17194: preserve RCS keywords in files with variable substitution, grrr
17195Date='$Date'
17196Id='$Id'
17197Log='$Log'
17198RCSfile='$RCSfile'
17199Revision='$Revision'
17200
b4eb6b3d
JH
17201: check for alignment requirements
17202echo " "
5440bc8e 17203case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
17204*$define*)
17205 $cat <<EOM
17206You seem to be either cross-compiling or doing a multiarchitecture build,
17207skipping the memory alignment check.
17208
17209EOM
17210 case "$alignbytes" in
17211 '') alignbytes=8 ;;
17212 esac
17213 ;;
17214*)
17215 case "$alignbytes" in
17216 '') echo "Checking alignment constraints..." >&4
17217 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17218 $cat >try.c <<'EOCP'
17219typedef long double NV;
17220EOCP
17221 else
17222 $cat >try.c <<'EOCP'
17223typedef double NV;
17224EOCP
17225 fi
17226 $cat >>try.c <<'EOCP'
17227#include <stdio.h>
17228struct foobar {
17229 char foo;
17230 NV bar;
17231} try_algn;
17232int main()
17233{
17234 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17235 return(0);
17236}
17237EOCP
17238 set try
17239 if eval $compile_ok; then
5440bc8e 17240 dflt=`$run ./try`
b4eb6b3d
JH
17241 else
17242 dflt='8'
17243 echo "(I can't seem to compile the test program...)"
17244 fi
17245 ;;
17246 *) dflt="$alignbytes"
17247 ;;
17248 esac
17249 rp="Doubles must be aligned on a how-many-byte boundary?"
17250 . ./myread
17251 alignbytes="$ans"
17252 $rm -f try.c try
17253 ;;
17254esac
17255
17256
17257: set the base revision
17258baserev=5.0
17259
3099fc99 17260: how do we concatenate cpp tokens here?
b4eb6b3d 17261echo " "
3099fc99 17262echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
b4eb6b3d
JH
17263$cat >cpp_stuff.c <<'EOCP'
17264#define RCAT(a,b)a/**/b
17265#define ACAT(a,b)a ## b
17266RCAT(Rei,ser)
17267ACAT(Cir,cus)
17268EOCP
17269$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17270if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17271 echo "Oh! Smells like ANSI's been here." >&4
17272 echo "We can catify or stringify, separately or together!"
17273 cpp_stuff=42
17274elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17275 echo "Ah, yes! The good old days!" >&4
17276 echo "However, in the good old days we don't know how to stringify and"
17277 echo "catify at the same time."
17278 cpp_stuff=1
17279else
17280 $cat >&4 <<EOM
3099fc99
CW
17281Hmm, I don't seem to be able to concatenate tokens with your cpp.
17282You're going to have to edit the values of CAT[2-5] in config.h...
b4eb6b3d
JH
17283EOM
17284 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17285fi
17286$rm -f cpp_stuff.*
17287
17288: see if this is a db.h system
17289set db.h i_db
17290eval $inhdr
17291
17292case "$i_db" in
17293$define)
17294 : Check db version.
17295 echo " "
17296 echo "Checking Berkeley DB version ..." >&4
17297 $cat >try.c <<EOCP
17298#$d_const HASCONST
17299#ifndef HASCONST
17300#define const
17301#endif
17302#include <sys/types.h>
17303#include <stdio.h>
55954f19
JH
17304#$i_stdlib I_STDLIB
17305#ifdef I_STDLIB
17306#include <stdlib.h>
17307#endif
b4eb6b3d 17308#include <db.h>
640374d0 17309int main(int argc, char *argv[])
b4eb6b3d
JH
17310{
17311#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17312 int Major, Minor, Patch ;
17313 unsigned long Version ;
17314 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
17315 if (argc == 2) {
17316 printf("%d %d %d %d %d %d\n",
17317 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17318 Major, Minor, Patch);
17319 exit(0);
17320 }
17321 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
17322
17323 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17324 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17325 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17326 Major, Minor, Patch) ;
17327
17328 /* check that db.h & libdb are compatible */
17329 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 17330 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
17331 exit(3);
17332 }
17333
640374d0 17334 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
17335
17336 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17337 + DB_VERSION_PATCH ;
17338
17339 /* needs to be >= 2.3.4 */
17340 if (Version < 2003004) {
17341 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 17342 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
17343 exit(2);
17344 }
17345
17346 exit(0);
17347#else
17348#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
17349 if (argc == 2) {
17350 printf("1 0 0\n");
17351 exit(0);
17352 }
17353 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
17354 exit(0); /* DB version < 2: the coast is clear. */
17355#else
17356 exit(1); /* <db.h> not Berkeley DB? */
17357#endif
17358#endif
17359}
17360EOCP
17361 set try
5440bc8e 17362 if eval $compile_ok && $run ./try; then
b4eb6b3d 17363 echo 'Looks OK.' >&4
5440bc8e 17364 set `$run ./try 1`
640374d0
JH
17365 db_version_major=$1
17366 db_version_minor=$2
17367 db_version_patch=$3
b4eb6b3d
JH
17368 else
17369 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17370 i_db=$undef
17371 case " $libs " in
17372 *"-ldb "*)
17373 : Remove db from list of libraries to use
17374 echo "Removing unusable -ldb from library list" >&4
17375 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17376 shift
17377 libs="$*"
17378 echo "libs = $libs" >&4
17379 ;;
17380 esac
17381 fi
17382 $rm -f try.*
17383 ;;
17384esac
17385
17386case "$i_db" in
17387define)
17388 : Check the return type needed for hash
17389 echo " "
17390 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17391 $cat >try.c <<EOCP
17392#$d_const HASCONST
17393#ifndef HASCONST
17394#define const
17395#endif
17396#include <sys/types.h>
17397#include <db.h>
17398
17399#ifndef DB_VERSION_MAJOR
17400u_int32_t hash_cb (ptr, size)
17401const void *ptr;
17402size_t size;
17403{
17404}
17405HASHINFO info;
17406int main()
17407{
17408 info.hash = hash_cb;
17409}
17410#endif
17411EOCP
17412 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17413 if $contains warning try.out >>/dev/null 2>&1 ; then
17414 db_hashtype='int'
17415 else
17416 db_hashtype='u_int32_t'
17417 fi
17418 else
17419 : XXX Maybe we should just give up here.
17420 db_hashtype=u_int32_t
17421 $cat try.out >&4
17422 echo "Help: I can't seem to compile the db test program." >&4
17423 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17424 fi
17425 $rm -f try.*
17426 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17427 ;;
17428*) db_hashtype=u_int32_t
17429 ;;
17430esac
17431case "$i_db" in
17432define)
17433 : Check the return type needed for prefix
17434 echo " "
17435 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17436 cat >try.c <<EOCP
17437#$d_const HASCONST
17438#ifndef HASCONST
17439#define const
17440#endif
17441#include <sys/types.h>
17442#include <db.h>
17443
17444#ifndef DB_VERSION_MAJOR
17445size_t prefix_cb (key1, key2)
17446const DBT *key1;
17447const DBT *key2;
17448{
17449}
17450BTREEINFO info;
17451int main()
17452{
17453 info.prefix = prefix_cb;
17454}
17455#endif
17456EOCP
17457 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17458 if $contains warning try.out >>/dev/null 2>&1 ; then
17459 db_prefixtype='int'
17460 else
17461 db_prefixtype='size_t'
17462 fi
17463 else
17464 db_prefixtype='size_t'
17465 : XXX Maybe we should just give up here.
17466 $cat try.out >&4
17467 echo "Help: I can't seem to compile the db test program." >&4
17468 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17469 fi
17470 $rm -f try.*
17471 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17472 ;;
17473*) db_prefixtype='size_t'
17474 ;;
17475esac
17476
b4eb6b3d
JH
17477
17478: How can we generate normalized random numbers ?
17479echo " "
17480echo "Looking for a random number function..." >&4
17481case "$randfunc" in
17482'')
17483 if set drand48 val -f; eval $csym; $val; then
17484 dflt="drand48"
17485 echo "Good, found drand48()." >&4
17486 elif set random val -f; eval $csym; $val; then
17487 dflt="random"
17488 echo "OK, found random()." >&4
17489 else
17490 dflt="rand"
17491 echo "Yick, looks like I have to use rand()." >&4
17492 fi
17493 echo " "
17494 ;;
17495*)
17496 dflt="$randfunc"
17497 ;;
17498esac
17499cont=true
17500
17501case "$ccflags" in
17502*-Dmy_rand=*|*-Dmy_srand=*)
17503 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17504 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17505 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17506 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17507 ;;
17508esac
17509
17510while $test "$cont"; do
17511 rp="Use which function to generate random numbers?"
17512 . ./myread
17513 if $test "$ans" = "$dflt"; then
17514 : null
17515 else
17516 randbits=''
17517 fi
17518 randfunc="$ans"
17519 if set $ans val -f; eval $csym; $val; then
17520 cont=''
17521 else
17522 dflt=y
17523 rp="I cannot find function $ans. Use that name anyway?"
17524 . ./myread
17525 dflt=rand
17526 case "$ans" in
17527 [yY]*) cont='';;
17528 esac
17529 fi
17530 case "$cont" in
17531 '')
17532 case "$randfunc" in
17533 drand48)
17534 drand01="drand48()"
17535 seedfunc="srand48"
17536 randbits=48
17537 randseedtype=long
17538 ;;
17539 rand|random)
17540 case "$randbits" in
17541 '')
17542echo "Checking to see how many bits your $randfunc() function produces..." >&4
17543 $cat >try.c <<EOCP
17544#$i_unistd I_UNISTD
17545#$i_stdlib I_STDLIB
17546#include <stdio.h>
17547#ifdef I_UNISTD
17548# include <unistd.h>
17549#endif
17550#ifdef I_STDLIB
17551# include <stdlib.h>
17552#endif
17553int main()
17554{
17555 register int i;
17556 register unsigned long tmp;
17557 register unsigned long max = 0L;
17558
17559 for (i = 1000; i; i--) {
17560 tmp = (unsigned long) $randfunc();
17561 if (tmp > max) max = tmp;
17562 }
17563 for (i = 0; max; i++)
17564 max /= 2;
17565 printf("%d\n",i);
17566}
17567EOCP
17568 set try
17569 if eval $compile_ok; then
17570 dflt=`try`
17571 else
17572 dflt='?'
17573 echo "(I can't seem to compile the test program...)"
17574 fi
17575 ;;
17576 *)
17577 dflt="$randbits"
17578 ;;
17579 esac
17580 rp="How many bits does your $randfunc() function produce?"
17581 . ./myread
17582 randbits="$ans"
17583 $rm -f try.c try
17584 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17585 seedfunc="s$randfunc"
17586 randseedtype=unsigned
17587 ;;
17588 *)
17589 dflt="31"
17590 rp="How many bits does your $randfunc() function produce?"
17591 . ./myread
17592 randbits="$ans"
17593 seedfunc="s$randfunc"
17594 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17595 if set $seedfunc val -f; eval $csym; $val; then
17596 echo "(Using $seedfunc() to seed random generator)"
17597 else
17598 echo "(Warning: no $seedfunc() to seed random generator)"
17599 seedfunc=rand
17600 fi
17601 randseedtype=unsigned
17602 ;;
17603 esac
17604 ;;
17605 esac
17606done
17607
17608echo " "
17609echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 17610$cat >try.c <<'EOM'
b4eb6b3d
JH
17611int main()
17612{
17613 if ('M'==0xd4) return 0;
17614 return 1;
17615}
17616EOM
17617
17618val=$undef
5440bc8e 17619set try
b4eb6b3d 17620if eval $compile_ok; then
5440bc8e 17621 if $run ./try; then
b4eb6b3d
JH
17622 echo "You seem to speak EBCDIC." >&4
17623 val="$define"
17624 else
5440bc8e 17625 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
17626 fi
17627else
17628 echo "I'm unable to compile the test program." >&4
17629 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17630fi
5440bc8e 17631$rm -f try try.*
b4eb6b3d
JH
17632set ebcdic
17633eval $setvar
17634
17635echo " "
17636$cat >&4 <<EOM
17637Checking how to flush all pending stdio output...
17638EOM
17639# I only know how to find the first 32 possibly open files on SunOS.
17640# See also hints/sunos_4_1.sh and util.c --AD
17641case "$osname" in
17642sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17643esac
17644$cat >>try.c <<EOCP
17645#include <stdio.h>
55954f19
JH
17646#$i_stdlib I_STDLIB
17647#ifdef I_STDLIB
17648#include <stdlib.h>
17649#endif
b4eb6b3d
JH
17650#$i_unistd I_UNISTD
17651#ifdef I_UNISTD
17652# include <unistd.h>
17653#endif
17654#$d_sysconf HAS_SYSCONF
17655#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17656#ifdef HAS_STDIO_STREAM_ARRAY
17657# define STDIO_STREAM_ARRAY $stdio_stream_array
17658#endif
17659int main() {
5440bc8e
JH
17660 FILE* p;
17661 unlink("try.out");
17662 p = fopen("try.out", "w");
b4eb6b3d
JH
17663#ifdef TRY_FPUTC
17664 fputc('x', p);
17665#else
17666# ifdef TRY_FPRINTF
17667 fprintf(p, "x");
17668# endif
17669#endif
17670#ifdef TRY_FFLUSH_NULL
17671 fflush(NULL);
17672#endif
17673#ifdef TRY_FFLUSH_ALL
17674 {
17675 long open_max = -1;
17676# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17677 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17678# else
17679# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17680 open_max = sysconf(_SC_OPEN_MAX);
17681# else
17682# ifdef FOPEN_MAX
17683 open_max = FOPEN_MAX;
17684# else
17685# ifdef OPEN_MAX
17686 open_max = OPEN_MAX;
17687# else
17688# ifdef _NFILE
17689 open_max = _NFILE;
17690# endif
17691# endif
17692# endif
17693# endif
17694# endif
17695# ifdef HAS_STDIO_STREAM_ARRAY
17696 if (open_max > 0) {
17697 long i;
17698 for (i = 0; i < open_max; i++)
17699 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17700 STDIO_STREAM_ARRAY[i]._file < open_max &&
17701 STDIO_STREAM_ARRAY[i]._flag)
17702 fflush(&STDIO_STREAM_ARRAY[i]);
17703 }
17704 }
17705# endif
17706#endif
17707 _exit(42);
17708}
17709EOCP
17710: first we have to find out how _not_ to flush
5440bc8e 17711$to try.c
b4eb6b3d
JH
17712if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17713 output=''
17714 set try -DTRY_FPUTC
17715 if eval $compile; then
fbe73d74 17716 $run ./try 2>/dev/null
28f5ac64 17717 code="$?"
5440bc8e 17718 $from try.out
28f5ac64 17719 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17720 output=-DTRY_FPUTC
17721 fi
17722 fi
17723 case "$output" in
17724 '')
17725 set try -DTRY_FPRINTF
b4eb6b3d 17726 if eval $compile; then
fbe73d74 17727 $run ./try 2>/dev/null
28f5ac64 17728 code="$?"
5440bc8e 17729 $from try.out
28f5ac64 17730 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17731 output=-DTRY_FPRINTF
17732 fi
17733 fi
17734 ;;
17735 esac
17736fi
17737: check for fflush NULL behaviour
17738case "$fflushNULL" in
17739'') set try -DTRY_FFLUSH_NULL $output
17740 if eval $compile; then
5440bc8e 17741 $run ./try 2>/dev/null
b4eb6b3d 17742 code="$?"
5440bc8e 17743 $from try.out
b4eb6b3d
JH
17744 if $test -s try.out -a "X$code" = X42; then
17745 fflushNULL="`$cat try.out`"
17746 else
17747 if $test "X$code" != X42; then
17748 $cat >&4 <<EOM
17749(If this test failed, don't worry, we'll try another method shortly.)
17750EOM
17751 fi
17752 fi
17753 fi
17754 $rm -f core try.core core.try.*
17755 case "$fflushNULL" in
17756 x) $cat >&4 <<EOM
17757Your fflush(NULL) works okay for output streams.
17758Let's see if it clobbers input pipes...
17759EOM
17760# As of mid-March 2000 all versions of Solaris appear to have a stdio
17761# bug that improperly flushes the input end of pipes. So we avoid the
17762# autoflush on fork/system/exec support for now. :-(
17763$cat >tryp.c <<EOCP
17764#include <stdio.h>
17765int
17766main(int argc, char **argv)
17767{
17768 char buf[1024];
17769 int i;
17770 char *bp = buf;
17771 while (1) {
17772 while ((i = getc(stdin)) != -1
17773 && (*bp++ = i) != '\n'
17774 && bp < &buf[1024])
17775 /* DO NOTHING */ ;
17776 *bp = '\0';
17777 fprintf(stdout, "%s", buf);
17778 fflush(NULL);
17779 if (i == -1)
17780 return 0;
17781 bp = buf;
17782 }
17783}
17784EOCP
17785 fflushNULL="$define"
17786 set tryp
17787 if eval $compile; then
17788 $rm -f tryp.out
5440bc8e 17789 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17790 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17791 $cat >&4 <<EOM
17792fflush(NULL) seems to behave okay with input streams.
17793EOM
17794 fflushNULL="$define"
17795 else
17796 $cat >&4 <<EOM
17797Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17798EOM
17799 fflushNULL="$undef"
17800 fi
17801 fi
17802 $rm -f core tryp.c tryp.core core.tryp.*
17803 ;;
17804 '') $cat >&4 <<EOM
17805Your fflush(NULL) isn't working (contrary to ANSI C).
17806EOM
17807 fflushNULL="$undef"
17808 ;;
17809 *) $cat >&4 <<EOM
17810Cannot figure out whether your fflush(NULL) works or not.
17811I'm assuming it doesn't (contrary to ANSI C).
17812EOM
17813 fflushNULL="$undef"
17814 ;;
17815 esac
17816 ;;
17817$define|true|[yY]*)
17818 fflushNULL="$define"
17819 ;;
17820*)
17821 fflushNULL="$undef"
17822 ;;
17823esac
17824: check explicit looping only if NULL did not work, and if the pipe
17825: bug does not show up on an explicit flush too
17826case "$fflushNULL" in
17827"$undef")
17828 $cat >tryp.c <<EOCP
17829#include <stdio.h>
17830int
17831main(int argc, char **argv)
17832{
17833 char buf[1024];
17834 int i;
17835 char *bp = buf;
17836 while (1) {
17837 while ((i = getc(stdin)) != -1
17838 && (*bp++ = i) != '\n'
17839 && bp < &buf[1024])
17840 /* DO NOTHING */ ;
17841 *bp = '\0';
17842 fprintf(stdout, "%s", buf);
17843 fflush(stdin);
17844 if (i == -1)
17845 return 0;
17846 bp = buf;
17847 }
17848}
17849EOCP
17850 set tryp
17851 if eval $compile; then
17852 $rm -f tryp.out
5440bc8e 17853 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17854 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17855 $cat >&4 <<EOM
17856Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17857EOM
17858 : now check for fflushall behaviour
17859 case "$fflushall" in
17860 '') set try -DTRY_FFLUSH_ALL $output
17861 if eval $compile; then
17862 $cat >&4 <<EOM
17863(Now testing the other method--but note that this also may fail.)
17864EOM
5440bc8e 17865 $run ./try 2>/dev/null
28f5ac64 17866 code=$?
fbe73d74 17867 $from try.out
28f5ac64 17868 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17869 fflushall="`$cat try.out`"
17870 fi
17871 fi
17872 $rm -f core try.core core.try.*
17873 case "$fflushall" in
17874 x) $cat >&4 <<EOM
17875Whew. Flushing explicitly all the stdio streams works.
17876EOM
17877 fflushall="$define"
17878 ;;
17879 '') $cat >&4 <<EOM
17880Sigh. Flushing explicitly all the stdio streams doesn't work.
17881EOM
17882 fflushall="$undef"
17883 ;;
17884 *) $cat >&4 <<EOM
17885Cannot figure out whether flushing stdio streams explicitly works or not.
17886I'm assuming it doesn't.
17887EOM
17888 fflushall="$undef"
17889 ;;
17890 esac
17891 ;;
17892 "$define"|true|[yY]*)
17893 fflushall="$define"
17894 ;;
17895 *)
17896 fflushall="$undef"
17897 ;;
17898 esac
17899 else
17900 $cat >&4 <<EOM
17901All is futile. Even fflush(stdin) clobbers input pipes!
17902EOM
17903 fflushall="$undef"
17904 fi
17905 else
17906 fflushall="$undef"
17907 fi
17908 $rm -f core tryp.c tryp.core core.tryp.*
17909 ;;
17910*) fflushall="$undef"
17911 ;;
17912esac
17913
17914case "$fflushNULL$fflushall" in
17915undefundef)
17916 $cat <<EOM
17917OK, I give up. I cannot figure out how to flush pending stdio output.
17918We won't be flushing handles at all before fork/exec/popen.
17919EOM
17920 ;;
17921esac
17922$rm -f try.* try$exe_ext
17923
17924: Store the full pathname to the ar program for use in the C program
17925: Respect a hint or command line value for full_ar.
17926case "$full_ar" in
17927'') full_ar=$ar ;;
17928esac
17929
17930: Store the full pathname to the sed program for use in the C program
17931full_sed=$sed
17932
17933: see what type gids are declared as in the kernel
17934echo " "
17935echo "Looking for the type for group ids returned by getgid()."
17936set gid_t gidtype xxx stdio.h sys/types.h
17937eval $typedef
17938case "$gidtype" in
17939xxx)
17940 xxx=`./findhdr sys/user.h`
17941 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17942 case $1 in
17943 unsigned) dflt="$1 $2" ;;
17944 *) dflt="$1" ;;
17945 esac
17946 ;;
17947*) dflt="$gidtype";;
17948esac
17949case "$gidtype" in
17950gid_t) echo "gid_t found." ;;
17951*) rp="What is the type for group ids returned by getgid()?"
17952 . ./myread
17953 gidtype="$ans"
17954 ;;
17955esac
17956
17957echo " "
17958case "$gidtype" in
17959*_t) zzz="$gidtype" ;;
17960*) zzz="gid" ;;
17961esac
17962echo "Checking the size of $zzz..." >&4
17963cat > try.c <<EOCP
17964#include <sys/types.h>
17965#include <stdio.h>
d1daaddf
JH
17966#$i_stdlib I_STDLIB
17967#ifdef I_STDLIB
17968#include <stdlib.h>
17969#endif
b4eb6b3d
JH
17970int main() {
17971 printf("%d\n", (int)sizeof($gidtype));
17972 exit(0);
17973}
17974EOCP
17975set try
17976if eval $compile_ok; then
5440bc8e 17977 yyy=`$run ./try`
b4eb6b3d
JH
17978 case "$yyy" in
17979 '') gidsize=4
17980 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17981 ;;
17982 *) gidsize=$yyy
17983 echo "Your $zzz is $gidsize bytes long."
17984 ;;
17985 esac
17986else
17987 gidsize=4
17988 echo "(I can't compile the test program--guessing $gidsize.)" >&4
17989fi
17990
17991
17992echo " "
17993case "$gidtype" in
17994*_t) zzz="$gidtype" ;;
17995*) zzz="gid" ;;
17996esac
17997echo "Checking the sign of $zzz..." >&4
17998cat > try.c <<EOCP
17999#include <sys/types.h>
18000#include <stdio.h>
18001int main() {
18002 $gidtype foo = -1;
18003 if (foo < 0)
18004 printf("-1\n");
18005 else
18006 printf("1\n");
18007}
18008EOCP
18009set try
18010if eval $compile; then
5440bc8e 18011 yyy=`$run ./try`
b4eb6b3d
JH
18012 case "$yyy" in
18013 '') gidsign=1
18014 echo "(I can't execute the test program--guessing unsigned.)" >&4
18015 ;;
18016 *) gidsign=$yyy
18017 case "$gidsign" in
18018 1) echo "Your $zzz is unsigned." ;;
18019 -1) echo "Your $zzz is signed." ;;
18020 esac
18021 ;;
18022 esac
18023else
18024 gidsign=1
18025 echo "(I can't compile the test program--guessing unsigned.)" >&4
18026fi
18027
18028
18029echo " "
18030
18031if $test X"$quadtype" != X; then
18032
18033echo "Checking how to print 64-bit integers..." >&4
18034
18035if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18036 $cat >try.c <<'EOCP'
18037#include <sys/types.h>
18038#include <stdio.h>
18039int main() {
18040 int q = 12345678901;
18041 printf("%ld\n", q);
18042}
18043EOCP
18044 set try
18045 if eval $compile; then
5440bc8e 18046 yyy=`$run ./try`
b4eb6b3d
JH
18047 case "$yyy" in
18048 12345678901)
18049 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18050 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18051 echo "We will use %d."
18052 ;;
18053 esac
18054 fi
18055fi
18056
18057if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18058 $cat >try.c <<'EOCP'
18059#include <sys/types.h>
18060#include <stdio.h>
18061int main() {
18062 long q = 12345678901;
18063 printf("%ld\n", q);
18064}
18065EOCP
18066 set try
18067 if eval $compile; then
5440bc8e 18068 yyy=`$run ./try`
b4eb6b3d
JH
18069 case "$yyy" in
18070 12345678901)
18071 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18072 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18073 echo "We will use %ld."
18074 ;;
18075 esac
18076 fi
18077fi
18078
18079if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18080 $cat >try.c <<'EOCP'
18081#include <sys/types.h>
18082#include <inttypes.h>
18083#include <stdio.h>
18084int main() {
18085 int64_t q = 12345678901;
18086 printf("%" PRId64 "\n", q);
18087}
18088EOCP
18089 set try
18090 if eval $compile; then
5440bc8e 18091 yyy=`$run ./try`
b4eb6b3d
JH
18092 case "$yyy" in
18093 12345678901)
18094 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18095 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18096 echo "We will use the C9X style."
18097 ;;
18098 esac
18099 fi
18100fi
18101
2ef53570
JH
18102if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18103 $cat >try.c <<EOCP
b4eb6b3d
JH
18104#include <sys/types.h>
18105#include <stdio.h>
18106int main() {
2ef53570
JH
18107 $quadtype q = 12345678901;
18108 printf("%Ld\n", q);
b4eb6b3d
JH
18109}
18110EOCP
18111 set try
18112 if eval $compile; then
5440bc8e 18113 yyy=`$run ./try`
b4eb6b3d
JH
18114 case "$yyy" in
18115 12345678901)
2ef53570
JH
18116 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18117 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18118 echo "We will use %Ld."
b4eb6b3d
JH
18119 ;;
18120 esac
18121 fi
18122fi
18123
2ef53570
JH
18124if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18125 $cat >try.c <<'EOCP'
b4eb6b3d
JH
18126#include <sys/types.h>
18127#include <stdio.h>
18128int main() {
2ef53570
JH
18129 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18130 printf("%lld\n", q);
b4eb6b3d
JH
18131}
18132EOCP
18133 set try
18134 if eval $compile; then
5440bc8e 18135 yyy=`$run ./try`
b4eb6b3d
JH
18136 case "$yyy" in
18137 12345678901)
2ef53570
JH
18138 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18139 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18140 echo "We will use the %lld style."
b4eb6b3d
JH
18141 ;;
18142 esac
18143 fi
18144fi
18145
18146if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18147 $cat >try.c <<EOCP
18148#include <sys/types.h>
18149#include <stdio.h>
18150int main() {
18151 $quadtype q = 12345678901;
18152 printf("%qd\n", q);
18153}
18154EOCP
18155 set try
18156 if eval $compile; then
5440bc8e 18157 yyy=`$run ./try`
b4eb6b3d
JH
18158 case "$yyy" in
18159 12345678901)
18160 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18161 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18162 echo "We will use %qd."
18163 ;;
18164 esac
18165 fi
18166fi
18167
18168if $test X"$sPRId64" = X; then
18169 echo "Cannot figure out how to print 64-bit integers." >&4
18170fi
18171
18172$rm -f try try.*
18173
18174fi
18175
18176case "$sPRId64" in
18177'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18178 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18179 ;;
18180*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18181 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18182 ;;
18183esac
18184
18185
18186echo " "
18187$echo "Checking the format strings to be used for Perl's internal types..." >&4
18188
18189if $test X"$ivsize" = X8; then
18190 ivdformat="$sPRId64"
18191 uvuformat="$sPRIu64"
18192 uvoformat="$sPRIo64"
18193 uvxformat="$sPRIx64"
18194 uvXUformat="$sPRIXU64"
18195else
18196 if $test X"$ivsize" = X"$longsize"; then
18197 ivdformat='"ld"'
18198 uvuformat='"lu"'
18199 uvoformat='"lo"'
18200 uvxformat='"lx"'
18201 uvXUformat='"lX"'
18202 else
18203 if $test X"$ivsize" = X"$intsize"; then
18204 ivdformat='"d"'
18205 uvuformat='"u"'
18206 uvoformat='"o"'
18207 uvxformat='"x"'
18208 uvXUformat='"X"'
18209 else
18210 : far out
18211 if $test X"$ivsize" = X"$shortsize"; then
18212 ivdformat='"hd"'
18213 uvuformat='"hu"'
18214 uvoformat='"ho"'
18215 uvxformat='"hx"'
18216 uvXUformat='"hX"'
18217 fi
18218 fi
18219 fi
18220fi
18221
18222if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18223 nveformat="$sPRIeldbl"
18224 nvfformat="$sPRIfldbl"
18225 nvgformat="$sPRIgldbl"
18226 nvEUformat="$sPRIEUldbl"
18227 nvFUformat="$sPRIFUldbl"
18228 nvGUformat="$sPRIGUldbl"
18229else
18230 nveformat='"e"'
18231 nvfformat='"f"'
18232 nvgformat='"g"'
18233 nvEUformat='"E"'
18234 nvFUformat='"F"'
18235 nvGUformat='"G"'
18236fi
18237
18238case "$ivdformat" in
3c728e00 18239'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
18240 exit 1
18241 ;;
18242esac
18243
18244
18245echo " "
18246$echo "Checking the format string to be used for gids..." >&4
18247
18248case "$gidsign" in
18249-1) if $test X"$gidsize" = X"$ivsize"; then
18250 gidformat="$ivdformat"
18251 else
18252 if $test X"$gidsize" = X"$longsize"; then
18253 gidformat='"ld"'
18254 else
18255 if $test X"$gidsize" = X"$intsize"; then
18256 gidformat='"d"'
18257 else
18258 if $test X"$gidsize" = X"$shortsize"; then
18259 gidformat='"hd"'
18260 fi
18261 fi
18262 fi
18263 fi
18264 ;;
18265*) if $test X"$gidsize" = X"$uvsize"; then
18266 gidformat="$uvuformat"
18267 else
18268 if $test X"$gidsize" = X"$longsize"; then
18269 gidformat='"lu"'
18270 else
18271 if $test X"$gidsize" = X"$intsize"; then
18272 gidformat='"u"'
18273 else
18274 if $test X"$gidsize" = X"$shortsize"; then
18275 gidformat='"hu"'
18276 fi
18277 fi
18278 fi
18279 fi
18280 ;;
18281esac
18282
18283: see if getgroups exists
18284set getgroups d_getgrps
18285eval $inlibc
18286
18287: see if setgroups exists
18288set setgroups d_setgrps
18289eval $inlibc
18290
18291
18292: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18293echo " "
18294case "$d_getgrps$d_setgrps" in
18295*define*)
18296 case "$groupstype" in
18297 '') dflt="$gidtype" ;;
18298 *) dflt="$groupstype" ;;
18299 esac
18300 $cat <<EOM
18301What type of pointer is the second argument to getgroups() and setgroups()?
18302Usually this is the same as group ids, $gidtype, but not always.
18303
18304EOM
18305 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18306 . ./myread
18307 groupstype="$ans"
18308 ;;
18309*) groupstype="$gidtype";;
18310esac
18311
18312echo " "
18313echo "Checking if your $make program sets \$(MAKE)..." >&4
18314case "$make_set_make" in
18315'')
18316 $sed 's/^X //' > testmake.mak << 'EOF'
18317Xall:
18318X @echo 'maketemp="$(MAKE)"'
18319EOF
18320 case "`$make -f testmake.mak 2>/dev/null`" in
18321 *maketemp=*) make_set_make='#' ;;
18322 *) make_set_make="MAKE=$make" ;;
18323 esac
18324 $rm -f testmake.mak
18325 ;;
18326esac
18327case "$make_set_make" in
18328'#') echo "Yup, it does.";;
18329*) echo "Nope, it doesn't.";;
18330esac
18331
18332: see what type is used for mode_t
18333rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18334set mode_t modetype int stdio.h sys/types.h
18335eval $typedef_ask
18336
2cc61e15
DD
18337: see if stdarg is available
18338echo " "
18339if $test `./findhdr stdarg.h`; then
18340 echo "<stdarg.h> found." >&4
18341 valstd="$define"
18342else
18343 echo "<stdarg.h> NOT found." >&4
18344 valstd="$undef"
18345fi
18346
18347: see if varags is available
18348echo " "
18349if $test `./findhdr varargs.h`; then
18350 echo "<varargs.h> found." >&4
18351else
18352 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18353fi
18354
18355: set up the varargs testing programs
18356$cat > varargs.c <<EOP
18357#ifdef I_STDARG
18358#include <stdarg.h>
18359#endif
18360#ifdef I_VARARGS
18361#include <varargs.h>
18362#endif
18363
18364#ifdef I_STDARG
18365int f(char *p, ...)
18366#else
18367int f(va_alist)
18368va_dcl
18369#endif
18370{
18371 va_list ap;
18372#ifndef I_STDARG
18373 char *p;
18374#endif
18375#ifdef I_STDARG
18376 va_start(ap,p);
18377#else
18378 va_start(ap);
18379 p = va_arg(ap, char *);
18380#endif
18381 va_end(ap);
18382}
18383EOP
18384$cat > varargs <<EOP
18385$startsh
18386if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18387 echo "true"
18388else
18389 echo "false"
18390fi
18391$rm -f varargs$_o
18392EOP
18393chmod +x varargs
18394
18395: now check which varargs header should be included
18396echo " "
18397i_varhdr=''
18398case "$valstd" in
18399"$define")
18400 if `./varargs I_STDARG`; then
18401 val='stdarg.h'
18402 elif `./varargs I_VARARGS`; then
18403 val='varargs.h'
18404 fi
18405 ;;
18406*)
18407 if `./varargs I_VARARGS`; then
18408 val='varargs.h'
18409 fi
18410 ;;
18411esac
18412case "$val" in
18413'')
18414echo "I could not find the definition for va_dcl... You have problems..." >&4
18415 val="$undef"; set i_stdarg; eval $setvar
18416 val="$undef"; set i_varargs; eval $setvar
18417 ;;
18418*)
18419 set i_varhdr
18420 eval $setvar
18421 case "$i_varhdr" in
18422 stdarg.h)
18423 val="$define"; set i_stdarg; eval $setvar
18424 val="$undef"; set i_varargs; eval $setvar
18425 ;;
18426 varargs.h)
18427 val="$undef"; set i_stdarg; eval $setvar
18428 val="$define"; set i_varargs; eval $setvar
18429 ;;
18430 esac
18431 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18432esac
18433$rm -f varargs*
18434
18435: see if we need va_copy
18436echo " "
18437case "$i_stdarg" in
18438"$define")
18439 $cat >try.c <<EOCP
18440#include <stdarg.h>
18441#include <stdio.h>
85c8a686
DD
18442#$i_stdlib I_STDLIB
18443#ifdef I_STDLIB
18444#include <stdlib.h>
18445#endif
18446#include <signal.h>
2cc61e15
DD
18447
18448int
18449ivfprintf(FILE *f, const char *fmt, va_list *valp)
18450{
18451 return vfprintf(f, fmt, *valp);
18452}
18453
18454int
18455myvfprintf(FILE *f, const char *fmt, va_list val)
18456{
18457 return ivfprintf(f, fmt, &val);
18458}
18459
18460int
18461myprintf(char *fmt, ...)
18462{
18463 va_list val;
18464 va_start(val, fmt);
18465 return myvfprintf(stdout, fmt, val);
18466}
18467
18468int
18469main(int ac, char **av)
18470{
85c8a686
DD
18471 signal(SIGSEGV, exit);
18472
2cc61e15
DD
18473 myprintf("%s%cs all right, then\n", "that", '\'');
18474 exit(0);
18475}
18476EOCP
18477 set try
5440bc8e
JH
18478 if eval $compile && $run ./try 2>&1 >/dev/null; then
18479 case "`$run ./try`" in
2cc61e15
DD
18480 "that's all right, then")
18481 okay=yes
18482 ;;
18483 esac
18484 fi
18485 case "$okay" in
18486 yes) echo "It seems that you don't need va_copy()." >&4
18487 need_va_copy="$undef"
18488 ;;
18489 *) echo "It seems that va_copy() or similar will be needed." >&4
18490 need_va_copy="$define"
18491 ;;
18492 esac
18493 $rm -f try.* core core.* *.core *.core.*
18494 ;;
18495*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18496 ;;
18497esac
18498
b4eb6b3d
JH
18499: see what type is used for size_t
18500rp="What is the type used for the length parameter for string functions?"
18501set size_t sizetype 'unsigned int' stdio.h sys/types.h
18502eval $typedef_ask
18503
18504: check for type of arguments to gethostbyaddr.
18505if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18506 case "$d_gethbyaddr" in
18507 $define)
18508 $cat <<EOM
18509
18510Checking to see what type of arguments are accepted by gethostbyaddr().
18511EOM
18512 hdrs="$define sys/types.h
18513 $d_socket sys/socket.h
18514 $i_niin netinet/in.h
18515 $i_netdb netdb.h
18516 $i_unistd unistd.h"
18517 : The first arg can 'char *' or 'void *'
18518 : The second arg is some of integral type
18519 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18520 for yyy in size_t long int; do
18521 case "$netdb_host_type" in
18522 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18523 if ./protochk "$try" $hdrs; then
18524 echo "Your system accepts $xxx for the first arg."
18525 echo "...and $yyy for the second arg."
18526 netdb_host_type="$xxx"
18527 netdb_hlen_type="$yyy"
18528 fi
18529 ;;
18530 esac
18531 done
18532 done
18533 : In case none of those worked, prompt the user.
18534 case "$netdb_host_type" in
18535 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18536 dflt='char *'
18537 . ./myread
18538 netdb_host_type=$ans
18539 rp='What is the type for the 2nd argument to gethostbyaddr?'
18540 dflt="$sizetype"
18541 . ./myread
18542 netdb_hlen_type=$ans
18543 ;;
18544 esac
18545 ;;
18546 *) : no gethostbyaddr, so pick harmless defaults
18547 netdb_host_type='char *'
18548 netdb_hlen_type="$sizetype"
18549 ;;
18550 esac
18551 # Remove the "const" if needed. -- but then we'll have a
18552 # prototype clash!
18553 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18554fi
18555
18556: check for type of argument to gethostbyname.
18557if test "X$netdb_name_type" = X ; then
18558 case "$d_gethbyname" in
18559 $define)
18560 $cat <<EOM
18561
18562Checking to see what type of argument is accepted by gethostbyname().
18563EOM
18564 hdrs="$define sys/types.h
18565 $d_socket sys/socket.h
18566 $i_niin netinet/in.h
18567 $i_netdb netdb.h
18568 $i_unistd unistd.h"
18569 for xxx in "const char *" "char *"; do
18570 case "$netdb_name_type" in
18571 '') try="extern struct hostent *gethostbyname($xxx);"
18572 if ./protochk "$try" $hdrs; then
18573 echo "Your system accepts $xxx."
18574 netdb_name_type="$xxx"
18575 fi
18576 ;;
18577 esac
18578 done
18579 : In case none of those worked, prompt the user.
18580 case "$netdb_name_type" in
18581 '') rp='What is the type for the 1st argument to gethostbyname?'
18582 dflt='char *'
18583 . ./myread
18584 netdb_name_type=$ans
18585 ;;
18586 esac
18587 ;;
18588 *) : no gethostbyname, so pick harmless default
18589 netdb_name_type='char *'
18590 ;;
18591 esac
18592fi
18593
18594: check for type of 1st argument to getnetbyaddr.
18595if test "X$netdb_net_type" = X ; then
18596 case "$d_getnbyaddr" in
18597 $define)
18598 $cat <<EOM
18599
18600Checking to see what type of 1st argument is accepted by getnetbyaddr().
18601EOM
18602 hdrs="$define sys/types.h
18603 $d_socket sys/socket.h
18604 $i_niin netinet/in.h
18605 $i_netdb netdb.h
18606 $i_unistd unistd.h"
18607 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18608 case "$netdb_net_type" in
18609 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18610 if ./protochk "$try" $hdrs; then
18611 echo "Your system accepts $xxx."
18612 netdb_net_type="$xxx"
18613 fi
18614 ;;
18615 esac
18616 done
18617 : In case none of those worked, prompt the user.
18618 case "$netdb_net_type" in
18619 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18620 dflt='long'
18621 . ./myread
18622 netdb_net_type=$ans
18623 ;;
18624 esac
18625 ;;
18626 *) : no getnetbyaddr, so pick harmless default
18627 netdb_net_type='long'
18628 ;;
18629 esac
18630fi
18631: locate the preferred pager for this system
d604bb53 18632fn=f/
b4eb6b3d
JH
18633case "$pager" in
18634'')
18635 dflt=''
18636 case "$pg" in
18637 /*) dflt=$pg;;
18638 [a-zA-Z]:/*) dflt=$pg;;
18639 esac
18640 case "$more" in
18641 /*) dflt=$more;;
18642 [a-zA-Z]:/*) dflt=$more;;
18643 esac
18644 case "$less" in
18645 /*) dflt=$less;;
18646 [a-zA-Z]:/*) dflt=$less;;
18647 esac
18648 case "$dflt" in
18649 '') dflt=/usr/ucb/more;;
18650 esac
18651 ;;
d604bb53
JH
18652*) dflt="$pager"
18653 : Instruct ./getfile to trust the hinted or previous pager value,
18654 : even if it does not begin with a slash. For example, on os2,
18655 : pager might be cmd /c more. See comments in UU/getfile.
18656 fn="f/($pager)"
18657 ;;
b4eb6b3d
JH
18658esac
18659echo " "
b4eb6b3d
JH
18660rp='What pager is used on your system?'
18661. ./getfile
18662pager="$ans"
18663
18664: see what type pids are declared as in the kernel
18665rp="What is the type of process ids on this system?"
18666set pid_t pidtype int stdio.h sys/types.h
18667eval $typedef_ask
18668
b4eb6b3d
JH
18669: see if ar generates random libraries by itself
18670echo " "
18671echo "Checking how to generate random libraries on your machine..." >&4
18672echo 'int bar1() { return bar2(); }' > bar1.c
18673echo 'int bar2() { return 2; }' > bar2.c
55954f19
JH
18674$cat > foo.c <<EOP
18675#$i_stdlib I_STDLIB
18676#ifdef I_STDLIB
18677#include <stdlib.h>
18678#endif
b4eb6b3d
JH
18679int main() { printf("%d\n", bar1()); exit(0); }
18680EOP
18681$cc $ccflags -c bar1.c >/dev/null 2>&1
18682$cc $ccflags -c bar2.c >/dev/null 2>&1
18683$cc $ccflags -c foo.c >/dev/null 2>&1
18684$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 18685if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18686 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18687 echo "$ar appears to generate random libraries itself."
18688 orderlib=false
18689 ranlib=":"
18690elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 18691 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18692 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18693 echo "a table of contents needs to be added with '$ar ts'."
18694 orderlib=false
18695 ranlib="$ar ts"
18696else
18697 case "$ranlib" in
18698 :) ranlib='';;
18699 '')
18700 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18701 $test -f $ranlib || ranlib=''
18702 ;;
18703 esac
18704 if $test -n "$ranlib"; then
18705 echo "your system has '$ranlib'; we'll use that."
18706 orderlib=false
18707 else
18708 echo "your system doesn't seem to support random libraries"
18709 echo "so we'll use lorder and tsort to order the libraries."
18710 orderlib=true
18711 ranlib=":"
18712 fi
18713fi
18714$rm -f foo* bar*
18715
18716: check for type of arguments to select.
18717case "$selecttype" in
18718'') case "$d_select" in
18719 $define)
18720 echo " "
18721 $cat <<EOM
18722Checking to see what type of arguments are accepted by select().
18723EOM
18724 hdrs="$define sys/types.h
18725 $i_systime sys/time.h
18726 $i_sysselct sys/select.h
18727 $d_socket sys/socket.h"
18728 : The first arg can be int, unsigned, or size_t
18729 : The last arg may or may not be 'const'
18730 val=''
18731 : void pointer has been seen but using that
18732 : breaks the selectminbits test
18733 for xxx in 'fd_set *' 'int *'; do
18734 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18735 for tmo in 'struct timeval *' 'const struct timeval *'; do
18736 case "$val" in
18737 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18738 if ./protochk "$try" $hdrs; then
18739 echo "Your system accepts $xxx."
18740 val="$xxx"
18741 fi
18742 ;;
18743 esac
18744 done
18745 done
18746 done
18747 case "$val" in
18748 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18749 case "$d_fd_set" in
18750 $define) dflt="fd_set *" ;;
18751 *) dflt="int *" ;;
18752 esac
18753 . ./myread
18754 val=$ans
18755 ;;
18756 esac
18757 selecttype="$val"
18758 ;;
18759 *) : no select, so pick a harmless default
18760 selecttype='int *'
18761 ;;
18762 esac
18763 ;;
18764esac
18765
18766: check for the select 'width'
18767case "$selectminbits" in
e6e7e605
JH
18768'') safebits=`expr $ptrsize \* 8`
18769 case "$d_select" in
b4eb6b3d
JH
18770 $define)
18771 $cat <<EOM
18772
18773Checking to see on how many bits at a time your select() operates...
18774EOM
18775 $cat >try.c <<EOCP
18776#include <sys/types.h>
18777#$i_time I_TIME
18778#$i_systime I_SYS_TIME
18779#$i_systimek I_SYS_TIME_KERNEL
18780#ifdef I_TIME
18781# include <time.h>
18782#endif
18783#ifdef I_SYS_TIME
18784# ifdef I_SYS_TIME_KERNEL
18785# define KERNEL
18786# endif
18787# include <sys/time.h>
18788# ifdef I_SYS_TIME_KERNEL
18789# undef KERNEL
18790# endif
18791#endif
18792#$i_sysselct I_SYS_SELECT
18793#ifdef I_SYS_SELECT
18794#include <sys/select.h>
18795#endif
18796#$d_socket HAS_SOCKET
18797#ifdef HAS_SOCKET
18798# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18799#endif
18800#include <stdio.h>
d1daaddf
JH
18801#$i_stdlib I_STDLIB
18802#ifdef I_STDLIB
18803#include <stdlib.h>
18804#endif
b4eb6b3d
JH
18805$selecttype b;
18806#define S sizeof(*(b))
18807#define MINBITS 64
18808#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18809#define NBITS (NBYTES * 8)
18810int main() {
e6e7e605 18811 char *s = malloc(NBYTES);
b4eb6b3d
JH
18812 struct timeval t;
18813 int i;
18814 FILE* fp;
18815 int fd;
18816
e6e7e605
JH
18817 if (!s)
18818 exit(1);
b4eb6b3d
JH
18819 fclose(stdin);
18820 fp = fopen("try.c", "r");
18821 if (fp == 0)
e6e7e605 18822 exit(2);
b4eb6b3d
JH
18823 fd = fileno(fp);
18824 if (fd < 0)
e6e7e605 18825 exit(3);
b4eb6b3d
JH
18826 b = ($selecttype)s;
18827 for (i = 0; i < NBITS; i++)
18828 FD_SET(i, b);
18829 t.tv_sec = 0;
18830 t.tv_usec = 0;
18831 select(fd + 1, b, 0, 0, &t);
18832 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
e6e7e605 18833 free(s);
b4eb6b3d
JH
18834 printf("%d\n", i + 1);
18835 return 0;
18836}
18837EOCP
18838 set try
18839 if eval $compile_ok; then
5440bc8e 18840 selectminbits=`$run ./try`
b4eb6b3d
JH
18841 case "$selectminbits" in
18842 '') cat >&4 <<EOM
18843Cannot figure out on how many bits at a time your select() operates.
e6e7e605 18844I'll play safe and guess it is $safebits bits.
b4eb6b3d 18845EOM
e6e7e605
JH
18846 selectminbits=$safebits
18847 bits="$safebits bits"
b4eb6b3d
JH
18848 ;;
18849 1) bits="1 bit" ;;
18850 *) bits="$selectminbits bits" ;;
18851 esac
18852 echo "Your select() operates on $bits at a time." >&4
18853 else
18854 rp='What is the minimum number of bits your select() operates on?'
18855 case "$byteorder" in
e6e7e605
JH
18856 12345678) dflt=64 ;;
18857 1234) dflt=32 ;;
b4eb6b3d
JH
18858 *) dflt=1 ;;
18859 esac
18860 . ./myread
18861 val=$ans
18862 selectminbits="$val"
18863 fi
18864 $rm -f try.* try
18865 ;;
18866 *) : no select, so pick a harmless default
e6e7e605 18867 selectminbits=$safebits
b4eb6b3d
JH
18868 ;;
18869 esac
18870 ;;
18871esac
18872
18873: Trace out the files included by signal.h, then look for SIGxxx names.
18874: Remove SIGARRAYSIZE used by HPUX.
18875: Remove SIGSTKSIZE used by Linux.
18876: Remove SIGSTKSZ used by Posix.
18877: Remove SIGTYP void lines used by OS2.
18878: Some cpps, like os390, dont give the file name anywhere
18879if [ "X$fieldn" = X ]; then
18880 : Just make some guesses. We check them later.
18881 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18882else
18883 xxx=`echo '#include <signal.h>' |
18884 $cppstdin $cppminus $cppflags 2>/dev/null |
18885 $grep '^[ ]*#.*include' |
a938a3bb 18886 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
18887fi
18888: Check this list of files to be sure we have parsed the cpp output ok.
18889: This will also avoid potentially non-existent files, such
18890: as ../foo/bar.h
18891xxxfiles=''
18892for xx in $xxx /dev/null ; do
18893 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18894done
18895: If we have found no files, at least try signal.h
18896case "$xxxfiles" in
18897'') xxxfiles=`./findhdr signal.h` ;;
18898esac
18899xxx=`awk '
18900$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18901 print substr($2, 4, 20)
18902}
18903$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18904 print substr($3, 4, 20)
18905}' $xxxfiles`
18906: Append some common names just in case the awk scan failed.
18907xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18908xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18909xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18910xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18911xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18912
18913: generate a few handy files for later
55954f19 18914$cat > signal.c <<EOCP
b4eb6b3d
JH
18915#include <sys/types.h>
18916#include <signal.h>
55954f19
JH
18917#$i_stdlib I_STDLIB
18918#ifdef I_STDLIB
18919#include <stdlib.h>
18920#endif
b4eb6b3d
JH
18921#include <stdio.h>
18922int main() {
18923
18924/* Strange style to avoid deeply-nested #if/#else/#endif */
18925#ifndef NSIG
18926# ifdef _NSIG
18927# define NSIG (_NSIG)
18928# endif
18929#endif
18930
18931#ifndef NSIG
18932# ifdef SIGMAX
18933# define NSIG (SIGMAX+1)
18934# endif
18935#endif
18936
18937#ifndef NSIG
18938# ifdef SIG_MAX
18939# define NSIG (SIG_MAX+1)
18940# endif
18941#endif
18942
18943#ifndef NSIG
18944# ifdef MAXSIG
18945# define NSIG (MAXSIG+1)
18946# endif
18947#endif
18948
18949#ifndef NSIG
18950# ifdef MAX_SIG
18951# define NSIG (MAX_SIG+1)
18952# endif
18953#endif
18954
18955#ifndef NSIG
18956# ifdef SIGARRAYSIZE
18957# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18958# endif
18959#endif
18960
18961#ifndef NSIG
18962# ifdef _sys_nsig
18963# define NSIG (_sys_nsig) /* Solaris 2.5 */
18964# endif
18965#endif
18966
18967/* Default to some arbitrary number that's big enough to get most
18968 of the common signals.
18969*/
18970#ifndef NSIG
18971# define NSIG 50
18972#endif
18973
18974printf("NSIG %d\n", NSIG);
18975
18976#ifndef JUST_NSIG
18977
18978EOCP
18979
18980echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18981{
18982 printf "#ifdef SIG"; printf $1; printf "\n"
65197d93 18983 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
b4eb6b3d
JH
18984 printf $1; printf ");\n"
18985 printf "#endif\n"
18986}
18987END {
18988 printf "#endif /* JUST_NSIG */\n";
18989 printf "exit(0);\n}\n";
18990}
18991' >>signal.c
18992$cat >signal.awk <<'EOP'
18993BEGIN { ndups = 0 }
65197d93 18994$1 ~ /^NSIG$/ { nsig = $2 }
1ebe1ffb 18995($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
65197d93
JH
18996 if ($2 > maxsig) { maxsig = $2 }
18997 if (sig_name[$2]) {
18998 dup_name[ndups] = $1
18999 dup_num[ndups] = $2
b4eb6b3d
JH
19000 ndups++
19001 }
1ebe1ffb 19002 else {
65197d93
JH
19003 sig_name[$2] = $1
19004 sig_num[$2] = $2
b4eb6b3d
JH
19005 }
19006}
19007END {
19008 if (nsig == 0) {
19009 nsig = maxsig + 1
19010 }
19011 printf("NSIG %d\n", nsig);
19012 for (n = 1; n < nsig; n++) {
19013 if (sig_name[n]) {
19014 printf("%s %d\n", sig_name[n], sig_num[n])
19015 }
19016 else {
19017 printf("NUM%d %d\n", n, n)
19018 }
19019 }
19020 for (n = 0; n < ndups; n++) {
19021 printf("%s %d\n", dup_name[n], dup_num[n])
19022 }
19023}
19024EOP
19025$cat >signal_cmd <<EOS
19026$startsh
19027if $test -s signal.lst; then
19028 echo "Using your existing signal.lst file"
19029 exit 0
19030fi
19031xxx="$xxx"
19032EOS
19033$cat >>signal_cmd <<'EOS'
19034
19035set signal
19036if eval $compile_ok; then
1eb9ad5b 19037 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19038else
19039 echo "(I can't seem be able to compile the whole test program)" >&4
19040 echo "(I'll try it in little pieces.)" >&4
19041 set signal -DJUST_NSIG
19042 if eval $compile_ok; then
5440bc8e 19043 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
19044 $cat signal.nsg
19045 else
19046 echo "I can't seem to figure out how many signals you have." >&4
19047 echo "Guessing 50." >&4
19048 echo 'NSIG 50' > signal.nsg
19049 fi
19050 : Now look at all the signal names, one at a time.
19051 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19052 $cat > signal.c <<EOCP
19053#include <sys/types.h>
19054#include <signal.h>
19055#include <stdio.h>
19056int main() {
19057printf("$xx %d\n", SIG${xx});
19058return 0;
19059}
19060EOCP
19061 set signal
19062 if eval $compile; then
19063 echo "SIG${xx} found."
5440bc8e 19064 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
19065 else
19066 echo "SIG${xx} NOT found."
19067 fi
19068 done
19069 if $test -s signal.ls1; then
19070 $cat signal.nsg signal.ls1 |
65197d93 19071 $sort -n | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19072 fi
19073
19074fi
19075if $test -s signal.lst; then
19076 :
19077else
19078 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19079 echo 'kill -l' >signal
19080 set X `csh -f <signal`
19081 $rm -f signal
19082 shift
19083 case $# in
19084 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19085 esac
19086 echo $@ | $tr ' ' $trnl | \
19087 $awk '{ printf "%s %d\n", $1, ++s; }
19088 END { printf "NSIG %d\n", ++s }' >signal.lst
19089fi
19090$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19091EOS
19092chmod a+x signal_cmd
19093$eunicefix signal_cmd
19094
19095: generate list of signal names
19096echo " "
19097case "$sig_name_init" in
19098'') doinit=yes ;;
19099*) case "$sig_num_init" in
19100 ''|*,*) doinit=yes ;;
19101 esac ;;
19102esac
19103case "$doinit" in
19104yes)
19105 echo "Generating a list of signal names and numbers..." >&4
19106 . ./signal_cmd
19107 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19108 sig_name=`$awk 'BEGIN { printf "ZERO " }
19109 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19110 sig_num=`$awk 'BEGIN { printf "0 " }
19111 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19112 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19113 !/^NSIG/ { printf "\"%s\", ", $1 }
19114 END { printf "0\n" }' signal.lst`
19115 sig_num_init=`$awk 'BEGIN { printf "0, " }
19116 !/^NSIG/ { printf "%d, ", $2}
19117 END { printf "0\n"}' signal.lst`
19118 ;;
19119esac
19120echo "The following $sig_count signals are available:"
19121echo " "
19122echo $sig_name | $awk \
19123'BEGIN { linelen = 0 }
19124{
19125 for (i = 1; i <= NF; i++) {
19126 name = "SIG" $i " "
19127 linelen = linelen + length(name)
19128 if (linelen > 70) {
19129 printf "\n"
19130 linelen = length(name)
19131 }
19132 printf "%s", name
19133 }
19134 printf "\n"
19135}'
76d3c696 19136sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
19137$rm -f signal signal.c signal.awk signal.lst signal_cmd
19138
19139echo " "
19140case "$sizetype" in
19141*_t) zzz="$sizetype" ;;
19142*) zzz="filesize" ;;
19143esac
19144echo "Checking the size of $zzz..." >&4
19145cat > try.c <<EOCP
19146#include <sys/types.h>
19147#include <stdio.h>
d1daaddf
JH
19148#$i_stdlib I_STDLIB
19149#ifdef I_STDLIB
19150#include <stdlib.h>
19151#endif
b4eb6b3d
JH
19152int main() {
19153 printf("%d\n", (int)sizeof($sizetype));
19154 exit(0);
19155}
19156EOCP
19157set try
19158if eval $compile_ok; then
5440bc8e 19159 yyy=`$run ./try`
b4eb6b3d
JH
19160 case "$yyy" in
19161 '') sizesize=4
19162 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19163 ;;
19164 *) sizesize=$yyy
19165 echo "Your $zzz size is $sizesize bytes."
19166 ;;
19167 esac
19168else
19169 sizesize=4
19170 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19171fi
19172
19173
19174: check for socklen_t
19175echo " "
19176echo "Checking to see if you have socklen_t..." >&4
19177$cat >try.c <<EOCP
19178#include <sys/types.h>
19179#$d_socket HAS_SOCKET
19180#ifdef HAS_SOCKET
19181#include <sys/socket.h>
19182#endif
19183int main() { socklen_t x = 16; }
19184EOCP
19185set try
19186if eval $compile; then
19187 val="$define"
19188 echo "You have socklen_t."
19189else
19190 val="$undef"
19191 echo "You do not have socklen_t."
19192 case "$sizetype" in
19193 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19194 esac
19195fi
19196$rm -f try try.*
19197set d_socklen_t
19198eval $setvar
19199
a7710f8d
JH
19200: see if this is a socks.h system
19201set socks.h i_socks
19202eval $inhdr
19203
b4eb6b3d
JH
19204: check for type of the size argument to socket calls
19205case "$d_socket" in
19206"$define")
19207 $cat <<EOM
19208
19209Checking to see what type is the last argument of accept().
19210EOM
b4eb6b3d
JH
19211 yyy=''
19212 case "$d_socklen_t" in
19213 "$define") yyy="$yyy socklen_t"
19214 esac
19215 yyy="$yyy $sizetype int long unsigned"
19216 for xxx in $yyy; do
19217 case "$socksizetype" in
19218 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
19219 case "$usesocks" in
19220 "$define")
19221 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19222 echo "Your system accepts '$xxx *' for the last argument of accept()."
19223 socksizetype="$xxx"
19224 fi
19225 ;;
19226 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19227 echo "Your system accepts '$xxx *' for the last argument of accept()."
19228 socksizetype="$xxx"
19229 fi
19230 ;;
19231 esac
b4eb6b3d
JH
19232 ;;
19233 esac
19234 done
19235: In case none of those worked, prompt the user.
19236 case "$socksizetype" in
19237 '') rp='What is the type for socket address structure sizes?'
19238 dflt='int'
19239 . ./myread
19240 socksizetype=$ans
19241 ;;
19242 esac
19243 ;;
19244*) : no sockets, so pick relatively harmless default
19245 socksizetype='int'
19246 ;;
19247esac
19248
19249: see what type is used for signed size_t
19250set ssize_t ssizetype int stdio.h sys/types.h
19251eval $typedef
19252dflt="$ssizetype"
5440bc8e 19253$cat > try.c <<EOM
b4eb6b3d 19254#include <stdio.h>
d1daaddf
JH
19255#$i_stdlib I_STDLIB
19256#ifdef I_STDLIB
19257#include <stdlib.h>
19258#endif
b4eb6b3d
JH
19259#include <sys/types.h>
19260#define Size_t $sizetype
19261#define SSize_t $dflt
19262int main()
19263{
19264 if (sizeof(Size_t) == sizeof(SSize_t))
19265 printf("$dflt\n");
19266 else if (sizeof(Size_t) == sizeof(int))
19267 printf("int\n");
19268 else
19269 printf("long\n");
19270 exit(0);
19271}
19272EOM
19273echo " "
5440bc8e
JH
19274set try
19275if eval $compile_ok && $run ./try > /dev/null; then
19276 ssizetype=`$run ./try`
b4eb6b3d
JH
19277 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19278else
19279 $cat >&4 <<EOM
19280Help! I can't compile and run the ssize_t test program: please enlighten me!
19281(This is probably a misconfiguration in your system or libraries, and
19282you really ought to fix it. Still, I'll try anyway.)
19283
19284I need a type that is the same size as $sizetype, but is guaranteed to
19285be signed. Common values are ssize_t, int and long.
19286
19287EOM
19288 rp="What signed type is the same size as $sizetype?"
19289 . ./myread
19290 ssizetype="$ans"
19291fi
5440bc8e 19292$rm -f try try.*
b4eb6b3d
JH
19293
19294: see what type of char stdio uses.
19295echo " "
aa517f50
JH
19296echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19297if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
19298 echo "Your stdio uses unsigned chars." >&4
19299 stdchar="unsigned char"
19300else
aa517f50
JH
19301 echo "Your stdio uses signed chars." >&4
19302 stdchar="char"
b4eb6b3d 19303fi
aa517f50
JH
19304$rm -f stdioh
19305
19306
b4eb6b3d 19307
b4eb6b3d
JH
19308: see what type uids are declared as in the kernel
19309echo " "
19310echo "Looking for the type for user ids returned by getuid()."
19311set uid_t uidtype xxx stdio.h sys/types.h
19312eval $typedef
19313case "$uidtype" in
19314xxx)
19315 xxx=`./findhdr sys/user.h`
19316 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19317 case $1 in
19318 unsigned) dflt="$1 $2" ;;
19319 *) dflt="$1" ;;
19320 esac
19321 ;;
19322*) dflt="$uidtype";;
19323esac
19324case "$uidtype" in
19325uid_t) echo "uid_t found." ;;
19326*) rp="What is the type for user ids returned by getuid()?"
19327 . ./myread
19328 uidtype="$ans"
19329 ;;
19330esac
19331
19332echo " "
19333case "$uidtype" in
19334*_t) zzz="$uidtype" ;;
19335*) zzz="uid" ;;
19336esac
19337echo "Checking the size of $zzz..." >&4
19338cat > try.c <<EOCP
19339#include <sys/types.h>
19340#include <stdio.h>
d1daaddf
JH
19341#$i_stdlib I_STDLIB
19342#ifdef I_STDLIB
19343#include <stdlib.h>
19344#endif
b4eb6b3d
JH
19345int main() {
19346 printf("%d\n", (int)sizeof($uidtype));
19347 exit(0);
19348}
19349EOCP
19350set try
19351if eval $compile_ok; then
5440bc8e 19352 yyy=`$run ./try`
b4eb6b3d
JH
19353 case "$yyy" in
19354 '') uidsize=4
19355 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19356 ;;
19357 *) uidsize=$yyy
19358 echo "Your $zzz is $uidsize bytes long."
19359 ;;
19360 esac
19361else
19362 uidsize=4
19363 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19364fi
19365
19366echo " "
19367case "$uidtype" in
19368*_t) zzz="$uidtype" ;;
19369*) zzz="uid" ;;
19370esac
19371echo "Checking the sign of $zzz..." >&4
19372cat > try.c <<EOCP
19373#include <sys/types.h>
19374#include <stdio.h>
19375int main() {
19376 $uidtype foo = -1;
19377 if (foo < 0)
19378 printf("-1\n");
19379 else
19380 printf("1\n");
19381}
19382EOCP
19383set try
19384if eval $compile; then
5440bc8e 19385 yyy=`$run ./try`
b4eb6b3d
JH
19386 case "$yyy" in
19387 '') uidsign=1
19388 echo "(I can't execute the test program--guessing unsigned.)" >&4
19389 ;;
19390 *) uidsign=$yyy
19391 case "$uidsign" in
19392 1) echo "Your $zzz is unsigned." ;;
19393 -1) echo "Your $zzz is signed." ;;
19394 esac
19395 ;;
19396 esac
19397else
19398 uidsign=1
19399 echo "(I can't compile the test program--guessing unsigned.)" >&4
19400fi
19401
19402
19403
19404echo " "
19405$echo "Checking the format string to be used for uids..." >&4
19406
19407case "$uidsign" in
19408-1) if $test X"$uidsize" = X"$ivsize"; then
19409 uidformat="$ivdformat"
19410 else
19411 if $test X"$uidsize" = X"$longsize"; then
19412 uidformat='"ld"'
19413 else
19414 if $test X"$uidsize" = X"$intsize"; then
19415 uidformat='"d"'
19416 else
19417 if $test X"$uidsize" = X"$shortsize"; then
19418 uidformat='"hd"'
19419 fi
19420 fi
19421 fi
19422 fi
19423 ;;
19424*) if $test X"$uidsize" = X"$uvsize"; then
19425 uidformat="$uvuformat"
19426 else
19427 if $test X"$uidsize" = X"$longsize"; then
19428 uidformat='"lu"'
19429 else
19430 if $test X"$uidsize" = X"$intsize"; then
19431 uidformat='"u"'
19432 else
19433 if $test X"$uidsize" = X"$shortsize"; then
19434 uidformat='"hu"'
19435 fi
19436 fi
19437 fi
19438 fi
19439 ;;
19440esac
19441
3659ebf1
JH
19442: determine compiler compiler
19443case "$yacc" in
19444'')
19445 dflt=yacc;;
19446*)
19447 dflt="$yacc";;
19448esac
19449echo " "
19450comp='yacc'
3c728e00 19451if $test -f "$byacc$_exe"; then
3659ebf1
JH
19452 dflt="$byacc"
19453 comp="byacc or $comp"
19454fi
3c728e00 19455if $test -f "$bison$_exe"; then
3659ebf1
JH
19456 comp="$comp or bison -y"
19457fi
19458rp="Which compiler compiler ($comp) shall I use?"
19459. ./myread
19460yacc="$ans"
19461case "$yacc" in
19462*bis*)
19463 case "$yacc" in
19464 *-y*) ;;
19465 *)
19466 yacc="$yacc -y"
19467 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19468 ;;
19469 esac
19470 ;;
19471esac
19472
758a5d79
JH
19473: see if this is a fp.h system
19474set fp.h i_fp
19475eval $inhdr
19476
19477: see if this is a fp_class.h system
19478set fp_class.h i_fp_class
19479eval $inhdr
19480
b4eb6b3d 19481: see if this is a ieeefp.h system
b5b9f165
JH
19482case "$i_ieeefp" in
19483'' ) set ieeefp.h i_ieeefp
19484 eval $inhdr
19485 ;;
19486esac
b4eb6b3d
JH
19487
19488: see if this is a libutil.h system
19489set libutil.h i_libutil
19490eval $inhdr
19491
b4eb6b3d
JH
19492: see if mach cthreads are available
19493if test "X$usethreads" = "X$define"; then
19494 set mach/cthreads.h i_machcthr
19495 eval $inhdr
19496else
19497 i_machcthr="$undef"
19498fi
19499
19500
19501
19502: see if this is a math.h system
19503set math.h i_math
19504eval $inhdr
19505
19506: see if this is a mntent.h system
19507set mntent.h i_mntent
19508eval $inhdr
19509
19510: see if ndbm.h is available
19511set ndbm.h t_ndbm
19512eval $inhdr
1c6861ad
JS
19513
19514case "$t_ndbm" in
19515$undef)
19516 # Some Linux distributions such as RedHat 7.1 put the
19517 # ndbm.h header in /usr/include/gdbm/ndbm.h.
19518 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 19519 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
19520 ccflags="$ccflags -I/usr/include/gdbm"
19521 cppflags="$cppflags -I/usr/include/gdbm"
19522 t_ndbm=$define
19523 fi
19524 ;;
19525esac
19526
b4eb6b3d
JH
19527case "$t_ndbm" in
19528$define)
19529 : see if dbm_open exists
19530 set dbm_open d_dbm_open
19531 eval $inlibc
19532 case "$d_dbm_open" in
19533 $undef)
19534 t_ndbm="$undef"
19535 echo "We won't be including <ndbm.h>"
19536 ;;
19537 esac
19538 ;;
19539esac
19540val="$t_ndbm"
19541set i_ndbm
19542eval $setvar
19543
19544: see if net/errno.h is available
19545val=''
19546set net/errno.h val
19547eval $inhdr
19548
19549: Unfortunately, it causes problems on some systems. Arrgh.
19550case "$val" in
19551$define)
19552 cat > try.c <<'EOM'
19553#include <stdio.h>
19554#include <errno.h>
19555#include <net/errno.h>
19556int func()
19557{
19558 return ENOTSOCK;
19559}
19560EOM
19561 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19562 echo "We'll be including <net/errno.h>." >&4
19563 else
19564 echo "We won't be including <net/errno.h>." >&4
19565 val="$undef"
19566 fi
19567 $rm -f try.* try
19568 ;;
19569esac
19570set i_neterrno
19571eval $setvar
19572
19573: see if netinet/tcp.h is available
19574set netinet/tcp.h i_netinettcp
19575eval $inhdr
19576
19577: see if this is a poll.h system
19578set poll.h i_poll
19579eval $inhdr
19580
19581: see if this is a prot.h system
19582set prot.h i_prot
19583eval $inhdr
19584
19585echo " "
19586$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19587$cat <<'EOSH' > Cppsym.know
19588a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19589AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
19590alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19591ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19592BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
19593BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19594bull c cadmus clipper CMU COFF COMPILER_VERSION
19595concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19596CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
19597Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19598FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19599GLIBC GLIBC_MINOR
19600GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
19601H3050R H3050RX hbullx20 hcx host_mips
19602hp200 hp300 hp700 HP700 hp800 hp9000
19603hp9000s200 hp9000s300 hp9000s400 hp9000s500
19604hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19605i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 19606IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
19607INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19608LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19609LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19610Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19611LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19612M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19613M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19614M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19615MATH_HAS_NO_SIDE_EFFECTS
19616mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19617mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19618mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19619MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19620mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19621NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 19622news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
19623ns32016 ns32332 ns32k nsc32000
19624OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19625pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19626pc532 pdp11 PGC PIC plexus PORTAR posix
19627POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19628POSIX_C_SOURCE POSIX_SOURCE POWER
19629PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 19630riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
19631SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19632sony sony_news sonyrisc sparc sparclite spectrum
19633stardent stdc STDC_EXT stratos sun sun3 sun386
19634Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19635SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19636SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19637sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 19638TM3200 TM5400 TM5600
b4eb6b3d
JH
19639tower tower32 tower32_200 tower32_600 tower32_700
19640tower32_800 tower32_850 tss
19641u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19642ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
19643unix UNIX95 UNIX99 unixpc unos
19644USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19645USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19646USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19647USGr4 USGr4_2
b4eb6b3d
JH
19648Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19649XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19650XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19651z8000
19652EOSH
19653# Maybe put other stuff here too.
19654cat <<EOSH >>Cppsym.know
19655$osname
19656EOSH
19657./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19658./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19659$cat Cppsym.know > Cppsym.c
381aa1ff 19660$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
19661$rm -f Cppsym.a Cppsym.b Cppsym.c
19662cat <<EOSH > Cppsym
19663$startsh
19664if $test \$# -gt 0; then
19665 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19666 if $test -s Cppsym.got; then
19667 $rm -f Cppsym.got
19668 exit 0
19669 fi
19670 $rm -f Cppsym.got
19671 exit 1
19672else
19673 $tr " " "$trnl" | ./Cppsym.try
19674 exit 0
19675fi
19676EOSH
19677chmod +x Cppsym
19678$eunicefix Cppsym
19679cat <<EOSH > Cppsym.try
19680$startsh
19681cat <<'EOCP' > try.c
19682#include <stdio.h>
19683int main() {
19684EOCP
19685$awk \\
19686EOSH
19687cat <<'EOSH' >> Cppsym.try
19688'length($1) > 0 {
2ef53570
JH
19689 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
19690 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
19691 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
19692 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
b4eb6b3d 19693}' >> try.c
2ef53570 19694echo 'return 0;}' >> try.c
b4eb6b3d
JH
19695EOSH
19696cat <<EOSH >> Cppsym.try
19697ccflags="$ccflags"
19698case "$osname-$gccversion" in
19699irix-) ccflags="\$ccflags -woff 1178" ;;
19700os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19701esac
5440bc8e 19702$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
19703EOSH
19704chmod +x Cppsym.try
19705$eunicefix Cppsym.try
19706./Cppsym < Cppsym.know > Cppsym.true
19707: now check the C compiler for additional symbols
19708postprocess_cc_v=''
19709case "$osname" in
19710aix) postprocess_cc_v="|$tr , ' '" ;;
19711esac
19712$cat >ccsym <<EOS
19713$startsh
19714$cat >tmp.c <<EOF
19715extern int foo;
19716EOF
19717for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19718do
19719 case "\$i" in
19720 -D*) echo "\$i" | $sed 's/^-D//';;
b2a76591 19721 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
b4eb6b3d
JH
19722 esac
19723done
19724$rm -f try.c
19725EOS
19726postprocess_cc_v=''
19727chmod +x ccsym
19728$eunicefix ccsym
19729./ccsym > ccsym1.raw
19730if $test -s ccsym1.raw; then
19731 $sort ccsym1.raw | $uniq >ccsym.raw
19732else
19733 mv ccsym1.raw ccsym.raw
19734fi
19735
19736$awk '/\=/ { print $0; next }
19737 { print $0"=1" }' ccsym.raw >ccsym.list
19738$awk '/\=/ { print $0; next }
19739 { print $0"=1" }' Cppsym.true >ccsym.true
19740$comm -13 ccsym.true ccsym.list >ccsym.own
19741$comm -12 ccsym.true ccsym.list >ccsym.com
19742$comm -23 ccsym.true ccsym.list >ccsym.cpp
19743also=''
19744if $test -z ccsym.raw; then
19745 echo "Your C compiler doesn't seem to define any symbols!" >&4
19746 echo " "
19747 echo "However, your C preprocessor defines the following symbols:"
19748 $cat Cppsym.true
19749 ccsymbols=''
19750 cppsymbols=`$cat Cppsym.true`
19751 cppsymbols=`echo $cppsymbols`
19752 cppccsymbols="$cppsymbols"
19753else
19754 if $test -s ccsym.com; then
19755 echo "Your C compiler and pre-processor define these symbols:"
19756 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19757 also='also '
19758 symbols='ones'
19759 cppccsymbols=`$cat ccsym.com`
19760 cppccsymbols=`echo $cppccsymbols`
19761 $test "$silent" || sleep 1
19762 fi
19763 if $test -s ccsym.cpp; then
19764 $test "$also" && echo " "
19765 echo "Your C pre-processor ${also}defines the following symbols:"
19766 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19767 also='further '
19768 cppsymbols=`$cat ccsym.cpp`
19769 cppsymbols=`echo $cppsymbols`
19770 $test "$silent" || sleep 1
19771 fi
19772 if $test -s ccsym.own; then
19773 $test "$also" && echo " "
19774 echo "Your C compiler ${also}defines the following cpp symbols:"
19775 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19776 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19777 ccsymbols=`$cat ccsym.own`
19778 ccsymbols=`echo $ccsymbols`
19779 $test "$silent" || sleep 1
19780 fi
19781fi
b4eb6b3d
JH
19782
19783: see if this is a termio system
19784val="$undef"
19785val2="$undef"
19786val3="$undef"
19787if $test `./findhdr termios.h`; then
19788 set tcsetattr i_termios
19789 eval $inlibc
19790 val3="$i_termios"
19791fi
19792echo " "
19793case "$val3" in
19794"$define") echo "You have POSIX termios.h... good!" >&4;;
19795*) if ./Cppsym pyr; then
19796 case "`/bin/universe`" in
19797 ucb) if $test `./findhdr sgtty.h`; then
19798 val2="$define"
19799 echo "<sgtty.h> found." >&4
19800 else
19801 echo "System is pyramid with BSD universe."
19802 echo "<sgtty.h> not found--you could have problems." >&4
19803 fi;;
19804 *) if $test `./findhdr termio.h`; then
19805 val="$define"
19806 echo "<termio.h> found." >&4
19807 else
19808 echo "System is pyramid with USG universe."
19809 echo "<termio.h> not found--you could have problems." >&4
19810 fi;;
19811 esac
19812 elif ./usg; then
19813 if $test `./findhdr termio.h`; then
19814 echo "<termio.h> found." >&4
19815 val="$define"
19816 elif $test `./findhdr sgtty.h`; then
19817 echo "<sgtty.h> found." >&4
19818 val2="$define"
19819 else
19820echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19821 fi
19822 else
19823 if $test `./findhdr sgtty.h`; then
19824 echo "<sgtty.h> found." >&4
19825 val2="$define"
19826 elif $test `./findhdr termio.h`; then
19827 echo "<termio.h> found." >&4
19828 val="$define"
19829 else
19830echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19831 fi
19832 fi;;
19833esac
19834set i_termio; eval $setvar
19835val=$val2; set i_sgtty; eval $setvar
19836val=$val3; set i_termios; eval $setvar
19837
b4eb6b3d
JH
19838: see if stddef is available
19839set stddef.h i_stddef
19840eval $inhdr
923fc586 19841
b4eb6b3d
JH
19842: see if this is a sunmath.h system
19843set sunmath.h i_sunmath
19844eval $inhdr
5f80c64f 19845
b4eb6b3d
JH
19846: see if sys/access.h is available
19847set sys/access.h i_sysaccess
19848eval $inhdr
19849
19850: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19851set sys/filio.h i_sysfilio
19852eval $inhdr
19853echo " "
19854if $test `./findhdr sys/ioctl.h`; then
19855 val="$define"
19856 echo '<sys/ioctl.h> found.' >&4
19857else
19858 val="$undef"
19859 if $test $i_sysfilio = "$define"; then
19860 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 19861 else
b4eb6b3d
JH
19862 $test $i_sgtty = "$define" && xxx="sgtty.h"
19863 $test $i_termio = "$define" && xxx="termio.h"
19864 $test $i_termios = "$define" && xxx="termios.h"
19865echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19866 fi
19867fi
19868set i_sysioctl
19869eval $setvar
19870
49a78c82
JH
19871: see if socket ioctl defs are in sys/sockio.h
19872echo " "
19873xxx=`./findhdr sys/sockio.h`
19874if $test "$xxx"; then
19875 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19876 val="$define"
19877 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19878 else
19879 val="$undef"
19880 echo "No socket ioctls found in <sys/sockio.h>." >&4
19881 fi
19882else
19883 val="$undef"
19884 $cat <<EOM
19885<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19886EOM
19887fi
19888set i_syssockio
19889eval $setvar
19890
b4eb6b3d
JH
19891
19892: see if this is a syslog.h system
19893set syslog.h i_syslog
19894eval $inhdr
19895
19896
19897: see if this is a sys/mode.h system
19898set sys/mode.h i_sysmode
19899eval $inhdr
19900
19901: see if sys/resource.h has to be included
19902set sys/resource.h i_sysresrc
19903eval $inhdr
19904
19905: see if sys/security.h is available
19906set sys/security.h i_syssecrt
19907eval $inhdr
19908
19909: see if this is a sys/statvfs.h system
19910set sys/statvfs.h i_sysstatvfs
19911eval $inhdr
19912
b4eb6b3d
JH
19913: see if this is a sys/un.h system
19914set sys/un.h i_sysun
19915eval $inhdr
19916
19917
19918: see if this is a sys/utsname.h system
19919set sys/utsname.h i_sysutsname
19920eval $inhdr
19921
19922: see if this is a syswait system
19923set sys/wait.h i_syswait
19924eval $inhdr
19925
19926: see if this is a ustat.h system
19927set ustat.h i_ustat
19928eval $inhdr
19929
19930: see if this is an utime system
19931set utime.h i_utime
19932eval $inhdr
19933
19934: see if this is a values.h system
19935set values.h i_values
19936eval $inhdr
19937
19938: see if this is a vfork system
19939case "$d_vfork" in
19940"$define")
19941 set vfork.h i_vfork
19942 eval $inhdr
19943 ;;
19944*)
19945 i_vfork="$undef"
19946 ;;
19947esac
19948
19949: see if gdbm.h is available
19950set gdbm.h t_gdbm
19951eval $inhdr
19952case "$t_gdbm" in
19953$define)
19954 : see if gdbm_open exists
19955 set gdbm_open d_gdbm_open
19956 eval $inlibc
19957 case "$d_gdbm_open" in
19958 $undef)
19959 t_gdbm="$undef"
19960 echo "We won't be including <gdbm.h>"
5f80c64f 19961 ;;
b4eb6b3d
JH
19962 esac
19963 ;;
19964esac
19965val="$t_gdbm"
19966set i_gdbm
19967eval $setvar
19968
19969echo " "
19970echo "Looking for extensions..." >&4
19971: If we are using the old config.sh, known_extensions may contain
19972: old or inaccurate or duplicate values.
19973known_extensions=''
19974nonxs_extensions=''
19975: We do not use find because it might not be available.
19976: We do not just use MANIFEST because the user may have dropped
19977: some additional extensions into the source tree and expect them
19978: to be built.
19979
19980: Function to recursively find available extensions, ignoring DynaLoader
19981: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19982find_extensions='
19983 for xxx in *; do
19984 case "$xxx" in
19985 DynaLoader|dynaload) ;;
19986 *)
19987 if $test -f $xxx/$xxx.xs; then
19988 known_extensions="$known_extensions $1$xxx";
19989 elif $test -f $xxx/Makefile.PL; then
19990 nonxs_extensions="$nonxs_extensions $1$xxx";
19991 else
19992 if $test -d $xxx -a $# -lt 10; then
19993 set $1$xxx/ $*;
6904989c 19994 cd "$xxx";
b4eb6b3d
JH
19995 eval $find_extensions;
19996 cd ..;
19997 shift;
19998 fi;
19999 fi
20000 ;;
20001 esac;
20002 done'
20003tdir=`pwd`
6904989c 20004cd "$rsrc/ext"
b4eb6b3d
JH
20005set X
20006shift
20007eval $find_extensions
4e1a6d26
AD
20008# Special case: Add in threads/shared since it is not picked up by the
20009# recursive find above (and adding in general recursive finding breaks
20010# SDBM_File/sdbm). A.D. 10/25/2001.
998b396c 20011known_extensions="$known_extensions threads/shared"
b4eb6b3d
JH
20012set X $nonxs_extensions
20013shift
20014nonxs_extensions="$*"
20015set X $known_extensions
20016shift
20017known_extensions="$*"
6904989c 20018cd "$tdir"
b4eb6b3d
JH
20019
20020: Now see which are supported on this system.
20021avail_ext=''
20022for xxx in $known_extensions ; do
20023 case "$xxx" in
20024 DB_File|db_file)
20025 case "$i_db" in
20026 $define) avail_ext="$avail_ext $xxx" ;;
20027 esac
20028 ;;
20029 GDBM_File|gdbm_fil)
20030 case "$i_gdbm" in
20031 $define) avail_ext="$avail_ext $xxx" ;;
20032 esac
20033 ;;
1d59c593 20034 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
20035 case "$i_langinfo$d_nl_langinfo" in
20036 $define$define) avail_ext="$avail_ext $xxx" ;;
20037 esac
20038 ;;
b4eb6b3d
JH
20039 NDBM_File|ndbm_fil)
20040 case "$i_ndbm" in
20041 $define)
20042 case "$osname-$use64bitint" in
0be9fa5d 20043 hpux-define)
b4eb6b3d
JH
20044 case "$libs" in
20045 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20046 esac
20047 ;;
20048 *) avail_ext="$avail_ext $xxx" ;;
20049 esac
20050 ;;
20051 esac
20052 ;;
20053 ODBM_File|odbm_fil)
20054 case "${i_dbm}${i_rpcsvcdbm}" in
20055 *"${define}"*)
20056 case "$osname-$use64bitint" in
0be9fa5d 20057 hpux-define)
b4eb6b3d
JH
20058 case "$libs" in
20059 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20060 esac
20061 ;;
20062 *) avail_ext="$avail_ext $xxx" ;;
20063 esac
20064 ;;
20065 esac
20066 ;;
20067 POSIX|posix)
20068 case "$useposix" in
20069 true|define|y) avail_ext="$avail_ext $xxx" ;;
20070 esac
20071 ;;
20072 Opcode|opcode)
20073 case "$useopcode" in
20074 true|define|y) avail_ext="$avail_ext $xxx" ;;
20075 esac
20076 ;;
20077 Socket|socket)
20078 case "$d_socket" in
4a9f028c
JH
20079 true|$define|y)
20080 case "$osname" in
20081 beos) ;; # not unless BONE
20082 *) avail_ext="$avail_ext $xxx" ;;
20083 esac
20084 ;;
b4eb6b3d
JH
20085 esac
20086 ;;
20087 Sys/Syslog|sys/syslog)
20088 : XXX syslog requires socket
20089 case "$d_socket" in
20090 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20091 esac
20092 ;;
20093 Thread|thread)
b00ec89b
AB
20094 case "$usethreads" in
20095 true|$define|y)
20096 case "$useithreads" in
20097 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20098 esac
b4eb6b3d
JH
20099 esac
20100 ;;
f9b6ed1c
AD
20101 XS/APItest|xs/apitest)
20102 # This is just for testing. Skip it unless we have dynamic loading.
20103
20104 case "$usedl" in
20105 $define) avail_ext="$avail_ext $xxx" ;;
20106 esac
20107 ;;
20108 XS/Typemap|xs/typemap)
20109 # This is just for testing. Skip it unless we have dynamic loading.
20110 case "$usedl" in
20111 $define) avail_ext="$avail_ext $xxx" ;;
20112 esac
20113 ;;
7deadc5f 20114 threads|threads/shared)
73e09c8f
JH
20115 # threads and threads::shared are special cases.
20116 # To stop people from asking "Perl 5.8.0 was supposed
20117 # to have this new fancy threads implementation but my
20118 # perl doesn't have it" and from people trying to
20119 # (re)install the threads module using CPAN.pm and
20120 # CPAN.pm then offering to reinstall Perl 5.8.0,
20121 # the threads.pm and threads/shared.pm will always be
20122 # there, croaking informatively ("you need to rebuild
20123 # all of Perl with threads, sorry") when threads haven't
20124 # been compiled in.
20125 # --jhi
20126 avail_ext="$avail_ext $xxx"
1dca008a 20127 ;;
b4eb6b3d
JH
20128 IPC/SysV|ipc/sysv)
20129 : XXX Do we need a useipcsysv variable here
20130 case "${d_msg}${d_sem}${d_shm}" in
20131 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20132 esac
20133 ;;
20134 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
20135 ;;
20136 esac
b4eb6b3d 20137done
5f80c64f 20138
b4eb6b3d
JH
20139set X $avail_ext
20140shift
20141avail_ext="$*"
5f80c64f 20142
ef0c5be8
JH
20143case "$onlyextensions" in
20144'') ;;
20145*) keepextensions=''
20146 echo "You have requested that only certains extensions be included..." >&4
20147 for i in $onlyextensions; do
20148 case " $avail_ext " in
20149 *" $i "*)
20150 echo "Keeping extension $i."
20151 keepextensions="$keepextensions $i"
20152 ;;
20153 *) echo "Ignoring extension $i." ;;
20154 esac
20155 done
20156 avail_ext="$keepextensions"
20157 ;;
20158esac
20159
20160case "$noextensions" in
20161'') ;;
20162*) keepextensions=''
20163 echo "You have requested that certain extensions be ignored..." >&4
20164 for i in $avail_ext; do
c3dadc13
AD
20165 case " $noextensions " in
20166 *" $i "*) echo "Ignoring extension $i." ;;
ef0c5be8
JH
20167 *) echo "Keeping extension $i.";
20168 keepextensions="$keepextensions $i"
20169 ;;
20170 esac
20171 done
20172 avail_ext="$keepextensions"
20173 ;;
20174esac
20175
b4eb6b3d
JH
20176: Now see which nonxs extensions are supported on this system.
20177: For now assume all are.
20178nonxs_ext=''
20179for xxx in $nonxs_extensions ; do
20180 case "$xxx" in
20181 *) nonxs_ext="$nonxs_ext $xxx"
20182 ;;
20183 esac
20184done
5f80c64f 20185
b4eb6b3d
JH
20186set X $nonxs_ext
20187shift
20188nonxs_ext="$*"
20189
20190case $usedl in
20191$define)
20192 $cat <<EOM
20193A number of extensions are supplied with $package. You may choose to
20194compile these extensions for dynamic loading (the default), compile
20195them into the $package executable (static loading), or not include
20196them at all. Answer "none" to include no extensions.
20197Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
20198
20199EOM
b4eb6b3d 20200 case "$dynamic_ext" in
736accd3
YST
20201 '')
20202 : Exclude those listed in static_ext
20203 dflt=''
20204 for xxx in $avail_ext; do
20205 case " $static_ext " in
20206 *" $xxx "*) ;;
20207 *) dflt="$dflt $xxx" ;;
20208 esac
20209 done
20210 set X $dflt
20211 shift
20212 dflt="$*"
20213 ;;
b4eb6b3d
JH
20214 *) dflt="$dynamic_ext"
20215 # Perhaps we are reusing an old out-of-date config.sh.
20216 case "$hint" in
20217 previous)
20218 if test X"$dynamic_ext" != X"$avail_ext"; then
20219 $cat <<EOM
20220NOTICE: Your previous config.sh list may be incorrect.
20221The extensions now available to you are
20222 ${avail_ext}
20223but the default list from your previous config.sh is
20224 ${dynamic_ext}
9c839522 20225
b4eb6b3d
JH
20226EOM
20227 fi
9c839522
PM
20228 ;;
20229 esac
b4eb6b3d
JH
20230 ;;
20231 esac
5f80c64f 20232 case "$dflt" in
b4eb6b3d
JH
20233 '') dflt=none;;
20234 esac
20235 rp="What extensions do you wish to load dynamically?"
20236 . ./myread
20237 case "$ans" in
20238 none) dynamic_ext=' ' ;;
20239 *) dynamic_ext="$ans" ;;
5f80c64f 20240 esac
5f80c64f 20241
b4eb6b3d
JH
20242 case "$static_ext" in
20243 '')
20244 : Exclude those already listed in dynamic linking
20245 dflt=''
20246 for xxx in $avail_ext; do
20247 case " $dynamic_ext " in
20248 *" $xxx "*) ;;
20249 *) dflt="$dflt $xxx" ;;
20250 esac
20251 done
20252 set X $dflt
20253 shift
20254 dflt="$*"
20255 ;;
20256 *) dflt="$static_ext"
20257 ;;
20258 esac
9c839522 20259
b4eb6b3d
JH
20260 case "$dflt" in
20261 '') dflt=none;;
20262 esac
20263 rp="What extensions do you wish to load statically?"
20264 . ./myread
20265 case "$ans" in
20266 none) static_ext=' ' ;;
20267 *) static_ext="$ans" ;;
20268 esac
20269 ;;
20270*)
20271 $cat <<EOM
20272A number of extensions are supplied with $package. Answer "none"
20273to include no extensions.
20274Note that DynaLoader is always built and need not be mentioned here.
9c839522 20275
b4eb6b3d
JH
20276EOM
20277 case "$static_ext" in
20278 '') dflt="$avail_ext" ;;
20279 *) dflt="$static_ext"
20280 # Perhaps we are reusing an old out-of-date config.sh.
20281 case "$hint" in
20282 previous)
20283 if test X"$static_ext" != X"$avail_ext"; then
20284 $cat <<EOM
20285NOTICE: Your previous config.sh list may be incorrect.
20286The extensions now available to you are
20287 ${avail_ext}
20288but the default list from your previous config.sh is
20289 ${static_ext}
5f80c64f
JH
20290
20291EOM
b4eb6b3d
JH
20292 fi
20293 ;;
20294 esac
20295 ;;
20296 esac
20297 : Exclude those that are not xs extensions
20298 case "$dflt" in
20299 '') dflt=none;;
20300 esac
20301 rp="What extensions do you wish to include?"
20302 . ./myread
20303 case "$ans" in
20304 none) static_ext=' ' ;;
20305 *) static_ext="$ans" ;;
20306 esac
20307 ;;
5f80c64f 20308esac
f1f6834f
AD
20309#
20310# Encode is a special case. If we are building Encode as a static
20311# extension, we need to explicitly list its subextensions as well.
20312# For other nested extensions, this is handled automatically by
20313# the appropriate Makefile.PL.
20314case " $static_ext " in
20315 *" Encode "*) # Add the subextensions of Encode
20316 cd "$rsrc/ext"
20317 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20318 static_ext="$static_ext Encode/$xxx"
20319 done
20320 cd "$tdir"
20321 ;;
20322esac
5f80c64f 20323
b4eb6b3d
JH
20324set X $dynamic_ext $static_ext $nonxs_ext
20325shift
20326extensions="$*"
20327
93a2cd18
AD
20328# Sanity check: We require an extension suitable for use with
20329# AnyDBM_File, as well as Fcntl and IO. (Failure to have these
20330# should show up as failures in the test suite, but it's helpful to
20331# catch them now.) The 'extensions' list is normally sorted
20332# alphabetically, so we need to accept either
20333# DB_File ... Fcntl ... IO ....
20334# or something like
20335# Fcntl ... NDBM_File ... IO ....
42fde7b2
JH
20336case " $extensions" in
20337*"_File "*" Fcntl "*" IO "*) ;; # DB_File
20338*" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20339*" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
7a8675bc
JH
20340*) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20341 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20342 ;;
20343esac
20344
9c839522
PM
20345: Remove libraries needed only for extensions
20346: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
20347: The exception is SunOS 4.x, which needs them.
20348case "${osname}X${osvers}" in
20349sunos*X4*)
20350 perllibs="$libs"
20351 ;;
20352*) case "$usedl" in
20353 $define|true|[yY]*)
20354 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20355 shift
20356 perllibs="$*"
20357 ;;
20358 *) perllibs="$libs"
20359 ;;
20360 esac
20361 ;;
9c839522 20362esac
5f80c64f
JH
20363
20364: Remove build directory name from cppstdin so it can be used from
20365: either the present location or the final installed location.
20366echo " "
20367: Get out of the UU directory to get correct path name.
20368cd ..
20369case "$cppstdin" in
20370`pwd`/cppstdin)
20371 echo "Stripping down cppstdin path name"
20372 cppstdin=cppstdin
20373 ;;
20374esac
20375cd UU
20376
20377: end of configuration questions
20378echo " "
20379echo "End of configuration questions."
20380echo " "
20381
20382: back to where it started
20383if test -d ../UU; then
20384 cd ..
20385fi
20386
48370efc
JH
20387: configuration may be patched via a 'config.arch' file
20388if $test -f config.arch; then
20389 echo "I see a config.arch file, loading it."
20390 . ./config.arch
20391fi
20392
5f80c64f
JH
20393: configuration may be patched via a 'config.over' file
20394if $test -f config.over; then
20395 echo " "
20396 dflt=y
20397 rp='I see a config.over file. Do you wish to load it?'
20398 . UU/myread
20399 case "$ans" in
20400 n*) echo "OK, I'll ignore it.";;
20401 *) . ./config.over
20402 echo "Configuration override changes have been loaded."
20403 ;;
20404 esac
20405fi
20406
20407: in case they want portability, strip down executable paths
20408case "$d_portable" in
20409"$define")
20410 echo " "
20411 echo "Stripping down executable paths..." >&4
20412 for file in $loclist $trylist; do
534ac15a
JH
20413 eval temp=\$$file
20414 eval $file=`basename $temp`
5f80c64f
JH
20415 done
20416 ;;
20417esac
20418
20419: create config.sh file
20420echo " "
20421echo "Creating config.sh..." >&4
20422$spitshell <<EOT >config.sh
20423$startsh
20424#
20425# This file was produced by running the Configure script. It holds all the
20426# definitions figured out by Configure. Should you modify one of these values,
20427# do not forget to propagate your changes by running "Configure -der". You may
20428# instead choose to run each of the .SH files by yourself, or "Configure -S".
20429#
20430
20431# Package name : $package
20432# Source directory : $src
20433# Configuration time: $cf_time
20434# Configured by : $cf_by
20435# Target system : $myuname
20436
20437Author='$Author'
20438Date='$Date'
20439Header='$Header'
20440Id='$Id'
20441Locker='$Locker'
20442Log='$Log'
20443Mcc='$Mcc'
20444RCSfile='$RCSfile'
20445Revision='$Revision'
20446Source='$Source'
20447State='$State'
20448_a='$_a'
20449_exe='$_exe'
20450_o='$_o'
b4eb6b3d 20451afs='$afs'
a6d26a0d 20452afsroot='$afsroot'
b4eb6b3d
JH
20453alignbytes='$alignbytes'
20454ansi2knr='$ansi2knr'
20455aphostname='$aphostname'
20456api_revision='$api_revision'
20457api_subversion='$api_subversion'
20458api_version='$api_version'
20459api_versionstring='$api_versionstring'
5f80c64f 20460ar='$ar'
b4eb6b3d
JH
20461archlib='$archlib'
20462archlibexp='$archlibexp'
20463archname64='$archname64'
20464archname='$archname'
5f80c64f 20465archobjs='$archobjs'
10bc17b6 20466asctime_r_proto='$asctime_r_proto'
5f80c64f 20467awk='$awk'
b4eb6b3d 20468baserev='$baserev'
5f80c64f 20469bash='$bash'
b4eb6b3d 20470bin='$bin'
b4eb6b3d 20471binexp='$binexp'
5f80c64f
JH
20472bison='$bison'
20473byacc='$byacc'
b4eb6b3d 20474byteorder='$byteorder'
5f80c64f 20475c='$c'
b4eb6b3d 20476castflags='$castflags'
5f80c64f
JH
20477cat='$cat'
20478cc='$cc'
20479cccdlflags='$cccdlflags'
20480ccdlflags='$ccdlflags'
20481ccflags='$ccflags'
b4eb6b3d 20482ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 20483ccname='$ccname'
b4eb6b3d 20484ccsymbols='$ccsymbols'
6b356c8e 20485ccversion='$ccversion'
5f80c64f 20486cf_by='$cf_by'
b4eb6b3d 20487cf_email='$cf_email'
5f80c64f 20488cf_time='$cf_time'
b4eb6b3d 20489charsize='$charsize'
5f80c64f
JH
20490chgrp='$chgrp'
20491chmod='$chmod'
20492chown='$chown'
b4eb6b3d 20493clocktype='$clocktype'
5f80c64f
JH
20494comm='$comm'
20495compress='$compress'
20496contains='$contains'
20497cp='$cp'
20498cpio='$cpio'
20499cpp='$cpp'
b4eb6b3d
JH
20500cpp_stuff='$cpp_stuff'
20501cppccsymbols='$cppccsymbols'
5f80c64f
JH
20502cppflags='$cppflags'
20503cpplast='$cpplast'
20504cppminus='$cppminus'
20505cpprun='$cpprun'
20506cppstdin='$cppstdin'
b4eb6b3d 20507cppsymbols='$cppsymbols'
10bc17b6 20508crypt_r_proto='$crypt_r_proto'
b4eb6b3d 20509cryptlib='$cryptlib'
5f80c64f 20510csh='$csh'
10bc17b6
JH
20511ctermid_r_proto='$ctermid_r_proto'
20512ctime_r_proto='$ctime_r_proto'
b4eb6b3d
JH
20513d_Gconvert='$d_Gconvert'
20514d_PRIEUldbl='$d_PRIEUldbl'
20515d_PRIFUldbl='$d_PRIFUldbl'
20516d_PRIGUldbl='$d_PRIGUldbl'
20517d_PRIXU64='$d_PRIXU64'
20518d_PRId64='$d_PRId64'
20519d_PRIeldbl='$d_PRIeldbl'
20520d_PRIfldbl='$d_PRIfldbl'
20521d_PRIgldbl='$d_PRIgldbl'
20522d_PRIi64='$d_PRIi64'
20523d_PRIo64='$d_PRIo64'
20524d_PRIu64='$d_PRIu64'
20525d_PRIx64='$d_PRIx64'
20526d_SCNfldbl='$d_SCNfldbl'
74cac757 20527d__fwalk='$d__fwalk'
b4eb6b3d
JH
20528d_access='$d_access'
20529d_accessx='$d_accessx'
55954f19 20530d_aintl='$d_aintl'
b4eb6b3d
JH
20531d_alarm='$d_alarm'
20532d_archlib='$d_archlib'
10bc17b6 20533d_asctime_r='$d_asctime_r'
b4eb6b3d
JH
20534d_atolf='$d_atolf'
20535d_atoll='$d_atoll'
20536d_attribut='$d_attribut'
20537d_bcmp='$d_bcmp'
20538d_bcopy='$d_bcopy'
5f80c64f 20539d_bsd='$d_bsd'
b4eb6b3d
JH
20540d_bsdgetpgrp='$d_bsdgetpgrp'
20541d_bsdsetpgrp='$d_bsdsetpgrp'
20542d_bzero='$d_bzero'
20543d_casti32='$d_casti32'
20544d_castneg='$d_castneg'
20545d_charvspr='$d_charvspr'
20546d_chown='$d_chown'
20547d_chroot='$d_chroot'
20548d_chsize='$d_chsize'
758a5d79 20549d_class='$d_class'
b4eb6b3d 20550d_closedir='$d_closedir'
4e0554ec 20551d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d 20552d_const='$d_const'
55954f19 20553d_copysignl='$d_copysignl'
b4eb6b3d 20554d_crypt='$d_crypt'
10bc17b6 20555d_crypt_r='$d_crypt_r'
b4eb6b3d 20556d_csh='$d_csh'
10bc17b6
JH
20557d_ctermid_r='$d_ctermid_r'
20558d_ctime_r='$d_ctime_r'
b4eb6b3d
JH
20559d_cuserid='$d_cuserid'
20560d_dbl_dig='$d_dbl_dig'
2ef53570 20561d_dbminitproto='$d_dbminitproto'
b4eb6b3d 20562d_difftime='$d_difftime'
ae0e3d3b 20563d_dirfd='$d_dirfd'
b4eb6b3d
JH
20564d_dirnamlen='$d_dirnamlen'
20565d_dlerror='$d_dlerror'
5f80c64f 20566d_dlopen='$d_dlopen'
b4eb6b3d
JH
20567d_dlsymun='$d_dlsymun'
20568d_dosuid='$d_dosuid'
10bc17b6 20569d_drand48_r='$d_drand48_r'
b4eb6b3d
JH
20570d_drand48proto='$d_drand48proto'
20571d_dup2='$d_dup2'
20572d_eaccess='$d_eaccess'
20573d_endgrent='$d_endgrent'
10bc17b6 20574d_endgrent_r='$d_endgrent_r'
b4eb6b3d 20575d_endhent='$d_endhent'
10bc17b6 20576d_endhostent_r='$d_endhostent_r'
b4eb6b3d 20577d_endnent='$d_endnent'
10bc17b6 20578d_endnetent_r='$d_endnetent_r'
b4eb6b3d 20579d_endpent='$d_endpent'
10bc17b6 20580d_endprotoent_r='$d_endprotoent_r'
b4eb6b3d 20581d_endpwent='$d_endpwent'
10bc17b6 20582d_endpwent_r='$d_endpwent_r'
b4eb6b3d 20583d_endsent='$d_endsent'
10bc17b6 20584d_endservent_r='$d_endservent_r'
b4eb6b3d 20585d_eofnblk='$d_eofnblk'
5f80c64f 20586d_eunice='$d_eunice'
15b61c98 20587d_faststdio='$d_faststdio'
b363b713 20588d_fchdir='$d_fchdir'
b4eb6b3d
JH
20589d_fchmod='$d_fchmod'
20590d_fchown='$d_fchown'
20591d_fcntl='$d_fcntl'
9d9004a9 20592d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
20593d_fd_macros='$d_fd_macros'
20594d_fd_set='$d_fd_set'
20595d_fds_bits='$d_fds_bits'
20596d_fgetpos='$d_fgetpos'
758a5d79
JH
20597d_finite='$d_finite'
20598d_finitel='$d_finitel'
b4eb6b3d
JH
20599d_flexfnam='$d_flexfnam'
20600d_flock='$d_flock'
2ef53570 20601d_flockproto='$d_flockproto'
b4eb6b3d 20602d_fork='$d_fork'
758a5d79 20603d_fp_class='$d_fp_class'
b4eb6b3d 20604d_fpathconf='$d_fpathconf'
758a5d79
JH
20605d_fpclass='$d_fpclass'
20606d_fpclassify='$d_fpclassify'
20607d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
20608d_fpos64_t='$d_fpos64_t'
20609d_frexpl='$d_frexpl'
20610d_fs_data_s='$d_fs_data_s'
20611d_fseeko='$d_fseeko'
20612d_fsetpos='$d_fsetpos'
20613d_fstatfs='$d_fstatfs'
20614d_fstatvfs='$d_fstatvfs'
411ab01c 20615d_fsync='$d_fsync'
b4eb6b3d
JH
20616d_ftello='$d_ftello'
20617d_ftime='$d_ftime'
20618d_getcwd='$d_getcwd'
20619d_getespwnam='$d_getespwnam'
20620d_getfsstat='$d_getfsstat'
20621d_getgrent='$d_getgrent'
10bc17b6
JH
20622d_getgrent_r='$d_getgrent_r'
20623d_getgrgid_r='$d_getgrgid_r'
20624d_getgrnam_r='$d_getgrnam_r'
b4eb6b3d
JH
20625d_getgrps='$d_getgrps'
20626d_gethbyaddr='$d_gethbyaddr'
20627d_gethbyname='$d_gethbyname'
20628d_gethent='$d_gethent'
20629d_gethname='$d_gethname'
10bc17b6
JH
20630d_gethostbyaddr_r='$d_gethostbyaddr_r'
20631d_gethostbyname_r='$d_gethostbyname_r'
20632d_gethostent_r='$d_gethostent_r'
b4eb6b3d 20633d_gethostprotos='$d_gethostprotos'
4e0554ec 20634d_getitimer='$d_getitimer'
b4eb6b3d 20635d_getlogin='$d_getlogin'
10bc17b6 20636d_getlogin_r='$d_getlogin_r'
b4eb6b3d
JH
20637d_getmnt='$d_getmnt'
20638d_getmntent='$d_getmntent'
20639d_getnbyaddr='$d_getnbyaddr'
20640d_getnbyname='$d_getnbyname'
20641d_getnent='$d_getnent'
10bc17b6
JH
20642d_getnetbyaddr_r='$d_getnetbyaddr_r'
20643d_getnetbyname_r='$d_getnetbyname_r'
20644d_getnetent_r='$d_getnetent_r'
b4eb6b3d 20645d_getnetprotos='$d_getnetprotos'
0c0643d0 20646d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
20647d_getpbyname='$d_getpbyname'
20648d_getpbynumber='$d_getpbynumber'
20649d_getpent='$d_getpent'
20650d_getpgid='$d_getpgid'
20651d_getpgrp2='$d_getpgrp2'
20652d_getpgrp='$d_getpgrp'
20653d_getppid='$d_getppid'
20654d_getprior='$d_getprior'
10bc17b6
JH
20655d_getprotobyname_r='$d_getprotobyname_r'
20656d_getprotobynumber_r='$d_getprotobynumber_r'
20657d_getprotoent_r='$d_getprotoent_r'
b4eb6b3d
JH
20658d_getprotoprotos='$d_getprotoprotos'
20659d_getprpwnam='$d_getprpwnam'
20660d_getpwent='$d_getpwent'
10bc17b6
JH
20661d_getpwent_r='$d_getpwent_r'
20662d_getpwnam_r='$d_getpwnam_r'
20663d_getpwuid_r='$d_getpwuid_r'
b4eb6b3d
JH
20664d_getsbyname='$d_getsbyname'
20665d_getsbyport='$d_getsbyport'
20666d_getsent='$d_getsent'
10bc17b6
JH
20667d_getservbyname_r='$d_getservbyname_r'
20668d_getservbyport_r='$d_getservbyport_r'
20669d_getservent_r='$d_getservent_r'
b4eb6b3d
JH
20670d_getservprotos='$d_getservprotos'
20671d_getspnam='$d_getspnam'
10bc17b6 20672d_getspnam_r='$d_getspnam_r'
b4eb6b3d 20673d_gettimeod='$d_gettimeod'
10bc17b6 20674d_gmtime_r='$d_gmtime_r'
5f80c64f 20675d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
20676d_grpasswd='$d_grpasswd'
20677d_hasmntopt='$d_hasmntopt'
20678d_htonl='$d_htonl'
55954f19 20679d_ilogbl='$d_ilogbl'
b4eb6b3d
JH
20680d_index='$d_index'
20681d_inetaton='$d_inetaton'
20682d_int64_t='$d_int64_t'
20683d_isascii='$d_isascii'
758a5d79
JH
20684d_isfinite='$d_isfinite'
20685d_isinf='$d_isinf'
b4eb6b3d
JH
20686d_isnan='$d_isnan'
20687d_isnanl='$d_isnanl'
20688d_killpg='$d_killpg'
20689d_lchown='$d_lchown'
20690d_ldbl_dig='$d_ldbl_dig'
20691d_link='$d_link'
10bc17b6 20692d_localtime_r='$d_localtime_r'
b4eb6b3d
JH
20693d_locconv='$d_locconv'
20694d_lockf='$d_lockf'
20695d_longdbl='$d_longdbl'
20696d_longlong='$d_longlong'
20697d_lseekproto='$d_lseekproto'
20698d_lstat='$d_lstat'
20699d_madvise='$d_madvise'
20700d_mblen='$d_mblen'
20701d_mbstowcs='$d_mbstowcs'
20702d_mbtowc='$d_mbtowc'
20703d_memchr='$d_memchr'
20704d_memcmp='$d_memcmp'
20705d_memcpy='$d_memcpy'
20706d_memmove='$d_memmove'
20707d_memset='$d_memset'
20708d_mkdir='$d_mkdir'
20709d_mkdtemp='$d_mkdtemp'
20710d_mkfifo='$d_mkfifo'
20711d_mkstemp='$d_mkstemp'
20712d_mkstemps='$d_mkstemps'
20713d_mktime='$d_mktime'
20714d_mmap='$d_mmap'
20715d_modfl='$d_modfl'
e67aeab1 20716d_modfl_pow32_bug='$d_modfl_pow32_bug'
bc9a1b2c 20717d_modflproto='$d_modflproto'
b4eb6b3d
JH
20718d_mprotect='$d_mprotect'
20719d_msg='$d_msg'
20720d_msg_ctrunc='$d_msg_ctrunc'
20721d_msg_dontroute='$d_msg_dontroute'
20722d_msg_oob='$d_msg_oob'
20723d_msg_peek='$d_msg_peek'
20724d_msg_proxy='$d_msg_proxy'
20725d_msgctl='$d_msgctl'
20726d_msgget='$d_msgget'
4e0554ec 20727d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
20728d_msgrcv='$d_msgrcv'
20729d_msgsnd='$d_msgsnd'
20730d_msync='$d_msync'
20731d_munmap='$d_munmap'
20732d_mymalloc='$d_mymalloc'
20733d_nice='$d_nice'
2765b840 20734d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d 20735d_nv_preserves_uv='$d_nv_preserves_uv'
b4eb6b3d
JH
20736d_off64_t='$d_off64_t'
20737d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20738d_oldpthreads='$d_oldpthreads'
20739d_oldsock='$d_oldsock'
20740d_open3='$d_open3'
20741d_pathconf='$d_pathconf'
20742d_pause='$d_pause'
20743d_perl_otherlibdirs='$d_perl_otherlibdirs'
20744d_phostname='$d_phostname'
20745d_pipe='$d_pipe'
20746d_poll='$d_poll'
5f80c64f 20747d_portable='$d_portable'
c7aff470 20748d_procselfexe='$d_procselfexe'
d6483fcc 20749d_pthread_atfork='$d_pthread_atfork'
58d975c3 20750d_pthread_attr_setscope='$d_pthread_attr_setscope'
b4eb6b3d
JH
20751d_pthread_yield='$d_pthread_yield'
20752d_pwage='$d_pwage'
20753d_pwchange='$d_pwchange'
20754d_pwclass='$d_pwclass'
20755d_pwcomment='$d_pwcomment'
20756d_pwexpire='$d_pwexpire'
20757d_pwgecos='$d_pwgecos'
20758d_pwpasswd='$d_pwpasswd'
20759d_pwquota='$d_pwquota'
20760d_qgcvt='$d_qgcvt'
20761d_quad='$d_quad'
10bc17b6
JH
20762d_random_r='$d_random_r'
20763d_readdir64_r='$d_readdir64_r'
b4eb6b3d 20764d_readdir='$d_readdir'
10bc17b6 20765d_readdir_r='$d_readdir_r'
b4eb6b3d 20766d_readlink='$d_readlink'
4e0554ec
JH
20767d_readv='$d_readv'
20768d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
20769d_rename='$d_rename'
20770d_rewinddir='$d_rewinddir'
20771d_rmdir='$d_rmdir'
20772d_safebcpy='$d_safebcpy'
20773d_safemcpy='$d_safemcpy'
20774d_sanemcmp='$d_sanemcmp'
ef9f17be 20775d_sbrkproto='$d_sbrkproto'
55954f19 20776d_scalbnl='$d_scalbnl'
b4eb6b3d
JH
20777d_sched_yield='$d_sched_yield'
20778d_scm_rights='$d_scm_rights'
20779d_seekdir='$d_seekdir'
20780d_select='$d_select'
20781d_sem='$d_sem'
20782d_semctl='$d_semctl'
20783d_semctl_semid_ds='$d_semctl_semid_ds'
20784d_semctl_semun='$d_semctl_semun'
20785d_semget='$d_semget'
20786d_semop='$d_semop'
4e0554ec 20787d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
20788d_setegid='$d_setegid'
20789d_seteuid='$d_seteuid'
20790d_setgrent='$d_setgrent'
10bc17b6 20791d_setgrent_r='$d_setgrent_r'
b4eb6b3d
JH
20792d_setgrps='$d_setgrps'
20793d_sethent='$d_sethent'
10bc17b6 20794d_sethostent_r='$d_sethostent_r'
4e0554ec 20795d_setitimer='$d_setitimer'
b4eb6b3d
JH
20796d_setlinebuf='$d_setlinebuf'
20797d_setlocale='$d_setlocale'
10bc17b6 20798d_setlocale_r='$d_setlocale_r'
b4eb6b3d 20799d_setnent='$d_setnent'
10bc17b6 20800d_setnetent_r='$d_setnetent_r'
b4eb6b3d
JH
20801d_setpent='$d_setpent'
20802d_setpgid='$d_setpgid'
20803d_setpgrp2='$d_setpgrp2'
20804d_setpgrp='$d_setpgrp'
20805d_setprior='$d_setprior'
20806d_setproctitle='$d_setproctitle'
10bc17b6 20807d_setprotoent_r='$d_setprotoent_r'
b4eb6b3d 20808d_setpwent='$d_setpwent'
10bc17b6 20809d_setpwent_r='$d_setpwent_r'
b4eb6b3d
JH
20810d_setregid='$d_setregid'
20811d_setresgid='$d_setresgid'
20812d_setresuid='$d_setresuid'
20813d_setreuid='$d_setreuid'
20814d_setrgid='$d_setrgid'
20815d_setruid='$d_setruid'
20816d_setsent='$d_setsent'
10bc17b6 20817d_setservent_r='$d_setservent_r'
b4eb6b3d
JH
20818d_setsid='$d_setsid'
20819d_setvbuf='$d_setvbuf'
20820d_sfio='$d_sfio'
20821d_shm='$d_shm'
20822d_shmat='$d_shmat'
20823d_shmatprototype='$d_shmatprototype'
20824d_shmctl='$d_shmctl'
20825d_shmdt='$d_shmdt'
20826d_shmget='$d_shmget'
20827d_sigaction='$d_sigaction'
983dbef6 20828d_sigprocmask='$d_sigprocmask'
b4eb6b3d 20829d_sigsetjmp='$d_sigsetjmp'
49a78c82 20830d_sockatmark='$d_sockatmark'
2ef53570 20831d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
20832d_socket='$d_socket'
20833d_socklen_t='$d_socklen_t'
20834d_sockpair='$d_sockpair'
20835d_socks5_init='$d_socks5_init'
20836d_sqrtl='$d_sqrtl'
10bc17b6
JH
20837d_srand48_r='$d_srand48_r'
20838d_srandom_r='$d_srandom_r'
eef837ea 20839d_sresgproto='$d_sresgproto'
640374d0 20840d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
20841d_statblks='$d_statblks'
20842d_statfs_f_flags='$d_statfs_f_flags'
20843d_statfs_s='$d_statfs_s'
20844d_statvfs='$d_statvfs'
20845d_stdio_cnt_lval='$d_stdio_cnt_lval'
20846d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
20847d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20848d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
20849d_stdio_stream_array='$d_stdio_stream_array'
20850d_stdiobase='$d_stdiobase'
20851d_stdstdio='$d_stdstdio'
20852d_strchr='$d_strchr'
20853d_strcoll='$d_strcoll'
20854d_strctcpy='$d_strctcpy'
20855d_strerrm='$d_strerrm'
20856d_strerror='$d_strerror'
10bc17b6 20857d_strerror_r='$d_strerror_r'
b3c85772 20858d_strftime='$d_strftime'
b4eb6b3d
JH
20859d_strtod='$d_strtod'
20860d_strtol='$d_strtol'
20861d_strtold='$d_strtold'
20862d_strtoll='$d_strtoll'
28e5dec8 20863d_strtoq='$d_strtoq'
b4eb6b3d
JH
20864d_strtoul='$d_strtoul'
20865d_strtoull='$d_strtoull'
20866d_strtouq='$d_strtouq'
20867d_strxfrm='$d_strxfrm'
20868d_suidsafe='$d_suidsafe'
20869d_symlink='$d_symlink'
20870d_syscall='$d_syscall'
2ef53570 20871d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
20872d_sysconf='$d_sysconf'
20873d_sysernlst='$d_sysernlst'
20874d_syserrlst='$d_syserrlst'
20875d_system='$d_system'
20876d_tcgetpgrp='$d_tcgetpgrp'
20877d_tcsetpgrp='$d_tcsetpgrp'
20878d_telldir='$d_telldir'
20879d_telldirproto='$d_telldirproto'
20880d_time='$d_time'
20881d_times='$d_times'
14b90194
JH
20882d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20883d_tm_tm_zone='$d_tm_tm_zone'
10bc17b6 20884d_tmpnam_r='$d_tmpnam_r'
b4eb6b3d 20885d_truncate='$d_truncate'
10bc17b6 20886d_ttyname_r='$d_ttyname_r'
b4eb6b3d 20887d_tzname='$d_tzname'
4e0554ec
JH
20888d_u32align='$d_u32align'
20889d_ualarm='$d_ualarm'
b4eb6b3d
JH
20890d_umask='$d_umask'
20891d_uname='$d_uname'
20892d_union_semun='$d_union_semun'
758a5d79 20893d_unordered='$d_unordered'
4e0554ec 20894d_usleep='$d_usleep'
2ef53570 20895d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
20896d_ustat='$d_ustat'
20897d_vendorarch='$d_vendorarch'
20898d_vendorbin='$d_vendorbin'
20899d_vendorlib='$d_vendorlib'
6e1038e0 20900d_vendorscript='$d_vendorscript'
b4eb6b3d
JH
20901d_vfork='$d_vfork'
20902d_void_closedir='$d_void_closedir'
20903d_voidsig='$d_voidsig'
20904d_voidtty='$d_voidtty'
20905d_volatile='$d_volatile'
20906d_vprintf='$d_vprintf'
20907d_wait4='$d_wait4'
20908d_waitpid='$d_waitpid'
20909d_wcstombs='$d_wcstombs'
20910d_wctomb='$d_wctomb'
4e0554ec 20911d_writev='$d_writev'
5f80c64f
JH
20912d_xenix='$d_xenix'
20913date='$date'
b4eb6b3d
JH
20914db_hashtype='$db_hashtype'
20915db_prefixtype='$db_prefixtype'
640374d0
JH
20916db_version_major='$db_version_major'
20917db_version_minor='$db_version_minor'
20918db_version_patch='$db_version_patch'
b4eb6b3d
JH
20919defvoidused='$defvoidused'
20920direntrytype='$direntrytype'
20921dlext='$dlext'
5f80c64f 20922dlsrc='$dlsrc'
b4eb6b3d
JH
20923doublesize='$doublesize'
20924drand01='$drand01'
10bc17b6 20925drand48_r_proto='$drand48_r_proto'
b4eb6b3d
JH
20926dynamic_ext='$dynamic_ext'
20927eagain='$eagain'
20928ebcdic='$ebcdic'
5f80c64f
JH
20929echo='$echo'
20930egrep='$egrep'
20931emacs='$emacs'
10bc17b6
JH
20932endgrent_r_proto='$endgrent_r_proto'
20933endhostent_r_proto='$endhostent_r_proto'
20934endnetent_r_proto='$endnetent_r_proto'
20935endprotoent_r_proto='$endprotoent_r_proto'
20936endpwent_r_proto='$endpwent_r_proto'
20937endservent_r_proto='$endservent_r_proto'
5f80c64f
JH
20938eunicefix='$eunicefix'
20939exe_ext='$exe_ext'
20940expr='$expr'
b4eb6b3d 20941extensions='$extensions'
6fcddf3b 20942extras='$extras'
b4eb6b3d
JH
20943fflushNULL='$fflushNULL'
20944fflushall='$fflushall'
5f80c64f
JH
20945find='$find'
20946firstmakefile='$firstmakefile'
20947flex='$flex'
b4eb6b3d
JH
20948fpossize='$fpossize'
20949fpostype='$fpostype'
20950freetype='$freetype'
5440bc8e 20951from='$from'
b4eb6b3d
JH
20952full_ar='$full_ar'
20953full_csh='$full_csh'
20954full_sed='$full_sed'
2d736872 20955gccansipedantic='$gccansipedantic'
5b463ca7 20956gccosandvers='$gccosandvers'
5f80c64f 20957gccversion='$gccversion'
10bc17b6
JH
20958getgrent_r_proto='$getgrent_r_proto'
20959getgrgid_r_proto='$getgrgid_r_proto'
20960getgrnam_r_proto='$getgrnam_r_proto'
20961gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20962gethostbyname_r_proto='$gethostbyname_r_proto'
20963gethostent_r_proto='$gethostent_r_proto'
20964getlogin_r_proto='$getlogin_r_proto'
20965getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20966getnetbyname_r_proto='$getnetbyname_r_proto'
20967getnetent_r_proto='$getnetent_r_proto'
20968getprotobyname_r_proto='$getprotobyname_r_proto'
20969getprotobynumber_r_proto='$getprotobynumber_r_proto'
20970getprotoent_r_proto='$getprotoent_r_proto'
20971getpwent_r_proto='$getpwent_r_proto'
20972getpwnam_r_proto='$getpwnam_r_proto'
20973getpwuid_r_proto='$getpwuid_r_proto'
20974getservbyname_r_proto='$getservbyname_r_proto'
20975getservbyport_r_proto='$getservbyport_r_proto'
20976getservent_r_proto='$getservent_r_proto'
20977getspnam_r_proto='$getspnam_r_proto'
b4eb6b3d
JH
20978gidformat='$gidformat'
20979gidsign='$gidsign'
20980gidsize='$gidsize'
20981gidtype='$gidtype'
5f80c64f 20982glibpth='$glibpth'
3c728e00 20983gmake='$gmake'
10bc17b6 20984gmtime_r_proto='$gmtime_r_proto'
5f6e0ee4 20985gnulibc_version='$gnulibc_version'
5f80c64f 20986grep='$grep'
b4eb6b3d
JH
20987groupcat='$groupcat'
20988groupstype='$groupstype'
5f80c64f 20989gzip='$gzip'
b4eb6b3d
JH
20990h_fcntl='$h_fcntl'
20991h_sysfile='$h_sysfile'
5f80c64f 20992hint='$hint'
b4eb6b3d 20993hostcat='$hostcat'
6e1038e0
MB
20994html1dir='$html1dir'
20995html1direxp='$html1direxp'
20996html3dir='$html3dir'
20997html3direxp='$html3direxp'
b4eb6b3d
JH
20998i16size='$i16size'
20999i16type='$i16type'
21000i32size='$i32size'
21001i32type='$i32type'
21002i64size='$i64size'
21003i64type='$i64type'
21004i8size='$i8size'
21005i8type='$i8type'
21006i_arpainet='$i_arpainet'
21007i_bsdioctl='$i_bsdioctl'
10bc17b6 21008i_crypt='$i_crypt'
b4eb6b3d
JH
21009i_db='$i_db'
21010i_dbm='$i_dbm'
21011i_dirent='$i_dirent'
5f80c64f 21012i_dld='$i_dld'
b4eb6b3d
JH
21013i_dlfcn='$i_dlfcn'
21014i_fcntl='$i_fcntl'
21015i_float='$i_float'
758a5d79
JH
21016i_fp='$i_fp'
21017i_fp_class='$i_fp_class'
b4eb6b3d
JH
21018i_gdbm='$i_gdbm'
21019i_grp='$i_grp'
b4eb6b3d
JH
21020i_ieeefp='$i_ieeefp'
21021i_inttypes='$i_inttypes'
2765b840 21022i_langinfo='$i_langinfo'
b4eb6b3d
JH
21023i_libutil='$i_libutil'
21024i_limits='$i_limits'
21025i_locale='$i_locale'
21026i_machcthr='$i_machcthr'
21027i_malloc='$i_malloc'
21028i_math='$i_math'
21029i_memory='$i_memory'
21030i_mntent='$i_mntent'
21031i_ndbm='$i_ndbm'
21032i_netdb='$i_netdb'
21033i_neterrno='$i_neterrno'
21034i_netinettcp='$i_netinettcp'
21035i_niin='$i_niin'
21036i_poll='$i_poll'
21037i_prot='$i_prot'
21038i_pthread='$i_pthread'
21039i_pwd='$i_pwd'
21040i_rpcsvcdbm='$i_rpcsvcdbm'
21041i_sfio='$i_sfio'
21042i_sgtty='$i_sgtty'
21043i_shadow='$i_shadow'
21044i_socks='$i_socks'
21045i_stdarg='$i_stdarg'
21046i_stddef='$i_stddef'
21047i_stdlib='$i_stdlib'
21048i_string='$i_string'
21049i_sunmath='$i_sunmath'
21050i_sysaccess='$i_sysaccess'
21051i_sysdir='$i_sysdir'
21052i_sysfile='$i_sysfile'
21053i_sysfilio='$i_sysfilio'
21054i_sysin='$i_sysin'
21055i_sysioctl='$i_sysioctl'
21056i_syslog='$i_syslog'
21057i_sysmman='$i_sysmman'
21058i_sysmode='$i_sysmode'
21059i_sysmount='$i_sysmount'
21060i_sysndir='$i_sysndir'
21061i_sysparam='$i_sysparam'
21062i_sysresrc='$i_sysresrc'
21063i_syssecrt='$i_syssecrt'
21064i_sysselct='$i_sysselct'
21065i_syssockio='$i_syssockio'
21066i_sysstat='$i_sysstat'
21067i_sysstatfs='$i_sysstatfs'
21068i_sysstatvfs='$i_sysstatvfs'
21069i_systime='$i_systime'
21070i_systimek='$i_systimek'
21071i_systimes='$i_systimes'
21072i_systypes='$i_systypes'
21073i_sysuio='$i_sysuio'
21074i_sysun='$i_sysun'
21075i_sysutsname='$i_sysutsname'
21076i_sysvfs='$i_sysvfs'
21077i_syswait='$i_syswait'
21078i_termio='$i_termio'
21079i_termios='$i_termios'
21080i_time='$i_time'
21081i_unistd='$i_unistd'
21082i_ustat='$i_ustat'
21083i_utime='$i_utime'
21084i_values='$i_values'
21085i_varargs='$i_varargs'
21086i_varhdr='$i_varhdr'
21087i_vfork='$i_vfork'
5f80c64f 21088ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
21089inc_version_list='$inc_version_list'
21090inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
21091incpath='$incpath'
21092inews='$inews'
b4eb6b3d
JH
21093installarchlib='$installarchlib'
21094installbin='$installbin'
6e1038e0
MB
21095installhtml1dir='$installhtml1dir'
21096installhtml3dir='$installhtml3dir'
b4eb6b3d
JH
21097installman1dir='$installman1dir'
21098installman3dir='$installman3dir'
21099installprefix='$installprefix'
21100installprefixexp='$installprefixexp'
21101installprivlib='$installprivlib'
21102installscript='$installscript'
21103installsitearch='$installsitearch'
21104installsitebin='$installsitebin'
8d2cbf27
JH
21105installsitehtml1dir='$installsitehtml1dir'
21106installsitehtml3dir='$installsitehtml3dir'
b4eb6b3d 21107installsitelib='$installsitelib'
91e123a8
JH
21108installsiteman1dir='$installsiteman1dir'
21109installsiteman3dir='$installsiteman3dir'
6e1038e0 21110installsitescript='$installsitescript'
b4eb6b3d
JH
21111installstyle='$installstyle'
21112installusrbinperl='$installusrbinperl'
21113installvendorarch='$installvendorarch'
21114installvendorbin='$installvendorbin'
8d2cbf27
JH
21115installvendorhtml1dir='$installvendorhtml1dir'
21116installvendorhtml3dir='$installvendorhtml3dir'
b4eb6b3d 21117installvendorlib='$installvendorlib'
91e123a8
JH
21118installvendorman1dir='$installvendorman1dir'
21119installvendorman3dir='$installvendorman3dir'
6e1038e0 21120installvendorscript='$installvendorscript'
b4eb6b3d 21121intsize='$intsize'
4b661809 21122issymlink='$issymlink'
b4eb6b3d
JH
21123ivdformat='$ivdformat'
21124ivsize='$ivsize'
21125ivtype='$ivtype'
21126known_extensions='$known_extensions'
5f80c64f 21127ksh='$ksh'
5f80c64f
JH
21128ld='$ld'
21129lddlflags='$lddlflags'
21130ldflags='$ldflags'
b4eb6b3d
JH
21131ldflags_uselargefiles='$ldflags_uselargefiles'
21132ldlibpthname='$ldlibpthname'
5f80c64f
JH
21133less='$less'
21134lib_ext='$lib_ext'
21135libc='$libc'
b4eb6b3d 21136libperl='$libperl'
5f80c64f
JH
21137libpth='$libpth'
21138libs='$libs'
43999f95
JH
21139libsdirs='$libsdirs'
21140libsfiles='$libsfiles'
21141libsfound='$libsfound'
13b3f787 21142libspath='$libspath'
5f80c64f 21143libswanted='$libswanted'
b4eb6b3d 21144libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
21145line='$line'
21146lint='$lint'
21147lkflags='$lkflags'
21148ln='$ln'
21149lns='$lns'
10bc17b6 21150localtime_r_proto='$localtime_r_proto'
5f80c64f
JH
21151locincpth='$locincpth'
21152loclibpth='$loclibpth'
b4eb6b3d
JH
21153longdblsize='$longdblsize'
21154longlongsize='$longlongsize'
21155longsize='$longsize'
5f80c64f
JH
21156lp='$lp'
21157lpr='$lpr'
21158ls='$ls'
b4eb6b3d
JH
21159lseeksize='$lseeksize'
21160lseektype='$lseektype'
5f80c64f
JH
21161mail='$mail'
21162mailx='$mailx'
21163make='$make'
21164make_set_make='$make_set_make'
b4eb6b3d
JH
21165mallocobj='$mallocobj'
21166mallocsrc='$mallocsrc'
21167malloctype='$malloctype'
21168man1dir='$man1dir'
21169man1direxp='$man1direxp'
21170man1ext='$man1ext'
21171man3dir='$man3dir'
21172man3direxp='$man3direxp'
21173man3ext='$man3ext'
5f80c64f 21174mips_type='$mips_type'
5129fff4 21175mistrustnm='$mistrustnm'
5f80c64f 21176mkdir='$mkdir'
b4eb6b3d
JH
21177mmaptype='$mmaptype'
21178modetype='$modetype'
5f80c64f 21179more='$more'
b4eb6b3d 21180multiarch='$multiarch'
5f80c64f 21181mv='$mv'
b4eb6b3d
JH
21182myarchname='$myarchname'
21183mydomain='$mydomain'
21184myhostname='$myhostname'
5f80c64f
JH
21185myuname='$myuname'
21186n='$n'
2cc61e15 21187need_va_copy='$need_va_copy'
b4eb6b3d
JH
21188netdb_hlen_type='$netdb_hlen_type'
21189netdb_host_type='$netdb_host_type'
21190netdb_name_type='$netdb_name_type'
21191netdb_net_type='$netdb_net_type'
5f80c64f
JH
21192nm='$nm'
21193nm_opt='$nm_opt'
21194nm_so_opt='$nm_so_opt'
b4eb6b3d 21195nonxs_ext='$nonxs_ext'
5f80c64f 21196nroff='$nroff'
b4eb6b3d
JH
21197nvEUformat='$nvEUformat'
21198nvFUformat='$nvFUformat'
21199nvGUformat='$nvGUformat'
53133ed1 21200nv_preserves_uv_bits='$nv_preserves_uv_bits'
b4eb6b3d
JH
21201nveformat='$nveformat'
21202nvfformat='$nvfformat'
21203nvgformat='$nvgformat'
21204nvsize='$nvsize'
21205nvtype='$nvtype'
21206o_nonblock='$o_nonblock'
5f80c64f 21207obj_ext='$obj_ext'
b4eb6b3d 21208old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 21209optimize='$optimize'
b4eb6b3d 21210orderlib='$orderlib'
5f80c64f
JH
21211osname='$osname'
21212osvers='$osvers'
b4eb6b3d 21213otherlibdirs='$otherlibdirs'
5f80c64f 21214package='$package'
b4eb6b3d
JH
21215pager='$pager'
21216passcat='$passcat'
21217patchlevel='$patchlevel'
5f80c64f 21218path_sep='$path_sep'
b4eb6b3d 21219perl5='$perl5'
5f80c64f 21220perl='$perl'
151e6568 21221perl_patchlevel='$perl_patchlevel'
b4eb6b3d 21222perladmin='$perladmin'
9c839522 21223perllibs='$perllibs'
b4eb6b3d 21224perlpath='$perlpath'
5f80c64f 21225pg='$pg'
b4eb6b3d
JH
21226phostname='$phostname'
21227pidtype='$pidtype'
5f80c64f
JH
21228plibpth='$plibpth'
21229pmake='$pmake'
21230pr='$pr'
b4eb6b3d
JH
21231prefix='$prefix'
21232prefixexp='$prefixexp'
21233privlib='$privlib'
21234privlibexp='$privlibexp'
f24dbf84 21235procselfexe='$procselfexe'
b4eb6b3d
JH
21236prototype='$prototype'
21237ptrsize='$ptrsize'
21238quadkind='$quadkind'
21239quadtype='$quadtype'
21240randbits='$randbits'
21241randfunc='$randfunc'
10bc17b6 21242random_r_proto='$random_r_proto'
b4eb6b3d
JH
21243randseedtype='$randseedtype'
21244ranlib='$ranlib'
21245rd_nodata='$rd_nodata'
10bc17b6
JH
21246readdir64_r_proto='$readdir64_r_proto'
21247readdir_r_proto='$readdir_r_proto'
b4eb6b3d 21248revision='$revision'
5f80c64f
JH
21249rm='$rm'
21250rmail='$rmail'
5440bc8e 21251run='$run'
5f80c64f 21252runnm='$runnm'
b4eb6b3d
JH
21253sPRIEUldbl='$sPRIEUldbl'
21254sPRIFUldbl='$sPRIFUldbl'
21255sPRIGUldbl='$sPRIGUldbl'
21256sPRIXU64='$sPRIXU64'
21257sPRId64='$sPRId64'
21258sPRIeldbl='$sPRIeldbl'
21259sPRIfldbl='$sPRIfldbl'
21260sPRIgldbl='$sPRIgldbl'
21261sPRIi64='$sPRIi64'
21262sPRIo64='$sPRIo64'
21263sPRIu64='$sPRIu64'
21264sPRIx64='$sPRIx64'
21265sSCNfldbl='$sSCNfldbl'
21266sched_yield='$sched_yield'
21267scriptdir='$scriptdir'
21268scriptdirexp='$scriptdirexp'
5f80c64f 21269sed='$sed'
b4eb6b3d
JH
21270seedfunc='$seedfunc'
21271selectminbits='$selectminbits'
21272selecttype='$selecttype'
5f80c64f 21273sendmail='$sendmail'
10bc17b6
JH
21274setgrent_r_proto='$setgrent_r_proto'
21275sethostent_r_proto='$sethostent_r_proto'
21276setlocale_r_proto='$setlocale_r_proto'
21277setnetent_r_proto='$setnetent_r_proto'
21278setprotoent_r_proto='$setprotoent_r_proto'
21279setpwent_r_proto='$setpwent_r_proto'
21280setservent_r_proto='$setservent_r_proto'
5f80c64f
JH
21281sh='$sh'
21282shar='$shar'
21283sharpbang='$sharpbang'
b4eb6b3d
JH
21284shmattype='$shmattype'
21285shortsize='$shortsize'
21286shrpenv='$shrpenv'
5f80c64f 21287shsharp='$shsharp'
b4eb6b3d
JH
21288sig_count='$sig_count'
21289sig_name='$sig_name'
21290sig_name_init='$sig_name_init'
21291sig_num='$sig_num'
21292sig_num_init='$sig_num_init'
76d3c696 21293sig_size='$sig_size'
b4eb6b3d
JH
21294signal_t='$signal_t'
21295sitearch='$sitearch'
21296sitearchexp='$sitearchexp'
21297sitebin='$sitebin'
21298sitebinexp='$sitebinexp'
8d2cbf27
JH
21299sitehtml1dir='$sitehtml1dir'
21300sitehtml1direxp='$sitehtml1direxp'
21301sitehtml3dir='$sitehtml3dir'
21302sitehtml3direxp='$sitehtml3direxp'
b4eb6b3d
JH
21303sitelib='$sitelib'
21304sitelib_stem='$sitelib_stem'
21305sitelibexp='$sitelibexp'
91e123a8
JH
21306siteman1dir='$siteman1dir'
21307siteman1direxp='$siteman1direxp'
21308siteman3dir='$siteman3dir'
21309siteman3direxp='$siteman3direxp'
b4eb6b3d
JH
21310siteprefix='$siteprefix'
21311siteprefixexp='$siteprefixexp'
6e1038e0
MB
21312sitescript='$sitescript'
21313sitescriptexp='$sitescriptexp'
b4eb6b3d
JH
21314sizesize='$sizesize'
21315sizetype='$sizetype'
5f80c64f
JH
21316sleep='$sleep'
21317smail='$smail'
5f80c64f 21318so='$so'
b4eb6b3d
JH
21319sockethdr='$sockethdr'
21320socketlib='$socketlib'
21321socksizetype='$socksizetype'
5f80c64f
JH
21322sort='$sort'
21323spackage='$spackage'
21324spitshell='$spitshell'
10bc17b6
JH
21325srand48_r_proto='$srand48_r_proto'
21326srandom_r_proto='$srandom_r_proto'
5f80c64f 21327src='$src'
b4eb6b3d
JH
21328ssizetype='$ssizetype'
21329startperl='$startperl'
5f80c64f 21330startsh='$startsh'
b4eb6b3d
JH
21331static_ext='$static_ext'
21332stdchar='$stdchar'
21333stdio_base='$stdio_base'
21334stdio_bufsiz='$stdio_bufsiz'
21335stdio_cnt='$stdio_cnt'
21336stdio_filbuf='$stdio_filbuf'
21337stdio_ptr='$stdio_ptr'
21338stdio_stream_array='$stdio_stream_array'
10bc17b6 21339strerror_r_proto='$strerror_r_proto'
b4eb6b3d 21340strings='$strings'
5f80c64f 21341submit='$submit'
b4eb6b3d
JH
21342subversion='$subversion'
21343sysman='$sysman'
5f80c64f
JH
21344tail='$tail'
21345tar='$tar'
5440bc8e 21346targetarch='$targetarch'
5f80c64f
JH
21347tbl='$tbl'
21348tee='$tee'
21349test='$test'
b4eb6b3d
JH
21350timeincl='$timeincl'
21351timetype='$timetype'
10bc17b6 21352tmpnam_r_proto='$tmpnam_r_proto'
5440bc8e 21353to='$to'
5f80c64f
JH
21354touch='$touch'
21355tr='$tr'
21356trnl='$trnl'
21357troff='$troff'
10bc17b6 21358ttyname_r_proto='$ttyname_r_proto'
b4eb6b3d
JH
21359u16size='$u16size'
21360u16type='$u16type'
21361u32size='$u32size'
21362u32type='$u32type'
21363u64size='$u64size'
21364u64type='$u64type'
21365u8size='$u8size'
21366u8type='$u8type'
21367uidformat='$uidformat'
21368uidsign='$uidsign'
21369uidsize='$uidsize'
21370uidtype='$uidtype'
5f80c64f
JH
21371uname='$uname'
21372uniq='$uniq'
b4eb6b3d
JH
21373uquadtype='$uquadtype'
21374use5005threads='$use5005threads'
21375use64bitall='$use64bitall'
21376use64bitint='$use64bitint'
5440bc8e 21377usecrosscompile='$usecrosscompile'
5f80c64f 21378usedl='$usedl'
15b61c98 21379usefaststdio='$usefaststdio'
b4eb6b3d
JH
21380useithreads='$useithreads'
21381uselargefiles='$uselargefiles'
21382uselongdouble='$uselongdouble'
19a100ff 21383usemallocwrap='$usemallocwrap'
b4eb6b3d
JH
21384usemorebits='$usemorebits'
21385usemultiplicity='$usemultiplicity'
21386usemymalloc='$usemymalloc'
5f80c64f 21387usenm='$usenm'
b4eb6b3d
JH
21388useopcode='$useopcode'
21389useperlio='$useperlio'
21390useposix='$useposix'
9514c62b 21391usereentrant='$usereentrant'
b4eb6b3d
JH
21392usesfio='$usesfio'
21393useshrplib='$useshrplib'
29209bc5 21394usesocks='$usesocks'
b4eb6b3d
JH
21395usethreads='$usethreads'
21396usevendorprefix='$usevendorprefix'
21397usevfork='$usevfork'
5f80c64f
JH
21398usrinc='$usrinc'
21399uuname='$uuname'
b4eb6b3d
JH
21400uvXUformat='$uvXUformat'
21401uvoformat='$uvoformat'
21402uvsize='$uvsize'
21403uvtype='$uvtype'
21404uvuformat='$uvuformat'
21405uvxformat='$uvxformat'
21406vendorarch='$vendorarch'
21407vendorarchexp='$vendorarchexp'
21408vendorbin='$vendorbin'
21409vendorbinexp='$vendorbinexp'
8d2cbf27
JH
21410vendorhtml1dir='$vendorhtml1dir'
21411vendorhtml1direxp='$vendorhtml1direxp'
21412vendorhtml3dir='$vendorhtml3dir'
21413vendorhtml3direxp='$vendorhtml3direxp'
b4eb6b3d
JH
21414vendorlib='$vendorlib'
21415vendorlib_stem='$vendorlib_stem'
21416vendorlibexp='$vendorlibexp'
91e123a8
JH
21417vendorman1dir='$vendorman1dir'
21418vendorman1direxp='$vendorman1direxp'
21419vendorman3dir='$vendorman3dir'
21420vendorman3direxp='$vendorman3direxp'
b4eb6b3d
JH
21421vendorprefix='$vendorprefix'
21422vendorprefixexp='$vendorprefixexp'
6e1038e0
MB
21423vendorscript='$vendorscript'
21424vendorscriptexp='$vendorscriptexp'
b4eb6b3d 21425version='$version'
861eb78d 21426version_patchlevel_string='$version_patchlevel_string'
d56c5707 21427versiononly='$versiononly'
5f80c64f 21428vi='$vi'
b4eb6b3d 21429voidflags='$voidflags'
5f80c64f 21430xlibpth='$xlibpth'
3659ebf1
JH
21431yacc='$yacc'
21432yaccflags='$yaccflags'
5f80c64f
JH
21433zcat='$zcat'
21434zip='$zip'
21435EOT
21436
21437: Add in command line options if available
21438$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21439
21440: add special variables
21441$test -f $src/patchlevel.h && \
d00b958f 21442awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 21443echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 21444echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
21445
21446: propagate old symbols
21447if $test -f UU/config.sh; then
381aa1ff 21448 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 21449 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 21450 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
21451 set X `cat UU/oldsyms`
21452 shift
21453 case $# in
21454 0) ;;
21455 *)
21456 cat <<EOM
21457Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21458EOM
21459 echo "# Variables propagated from previous config.sh file." >>config.sh
21460 for sym in `cat UU/oldsyms`; do
21461 echo " Propagating $hint variable "'$'"$sym..."
21462 eval 'tmp="$'"${sym}"'"'
21463 echo "$tmp" | \
21464 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21465 done
21466 ;;
21467 esac
21468fi
21469
21470: Finish up by extracting the .SH files
21471case "$alldone" in
21472exit)
21473 $rm -rf UU
24ccb310 21474 echo "Extraction done."
5f80c64f
JH
21475 exit 0
21476 ;;
21477cont)
21478 ;;
21479'')
21480 dflt=''
21481 nostick=true
21482 $cat <<EOM
21483
21484If you'd like to make any changes to the config.sh file before I begin
21485to configure things, do it as a shell escape now (e.g. !vi config.sh).
21486
21487EOM
21488 rp="Press return or use a shell escape to edit config.sh:"
21489 . UU/myread
21490 nostick=''
21491 case "$ans" in
21492 '') ;;
21493 *) : in case they cannot read
21494 sh 1>&4 -c "$ans";;
21495 esac
21496 ;;
21497esac
21498
21499: if this fails, just run all the .SH files by hand
21500. ./config.sh
21501
21502echo " "
21503exec 1>&4
a43e8593 21504pwd=`pwd`
5f80c64f 21505. ./UU/extract
6904989c 21506cd "$pwd"
5f80c64f
JH
21507
21508if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21509 dflt=y
21510 case "$silent" in
21511 true) ;;
21512 *)
21513 $cat <<EOM
21514
21515Now you need to generate make dependencies by running "$make depend".
21516You might prefer to run it in background: "$make depend > makedepend.out &"
21517It can take a while, so you might not want to run it right now.
21518
21519EOM
21520 ;;
21521 esac
21522 rp="Run $make depend now?"
21523 . UU/myread
21524 case "$ans" in
21525 y*)
3d5d58b1 21526 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
21527 ;;
21528 *)
21529 echo "You must run '$make depend' then '$make'."
21530 ;;
21531 esac
21532elif test -f [Mm]akefile; then
21533 echo " "
21534 echo "Now you must run a $make."
21535else
24ccb310 21536 echo "Configure done."
5f80c64f
JH
21537fi
21538
21539if $test -f Policy.sh; then
21540 $cat <<EOM
21541
21542If you compile $package on a different machine or from a different object
21543directory, copy the Policy.sh file from this object directory to the
21544new one before you run Configure -- this will help you with most of
21545the policy defaults.
21546
21547EOM
21548fi
21549if $test -f config.msg; then
21550 echo "Hmm. I also noted the following information while running:"
21551 echo " "
21552 $cat config.msg >&4
21553 $rm -f config.msg
21554fi
21555$rm -f kit*isdone ark*isdone
21556$rm -rf UU
21557
21558: End of Configure
21559