This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make the spelling of whitespace (vs white-space and white space)
[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#
fb2e1bc0 23# Generated on Mon Jan 31 12:56:14 CET 2005 [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 93paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
87bdd940 94paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
232e078e
AD
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=''
08c92000
MB
715d_strlcat=''
716d_strlcpy=''
b4eb6b3d
JH
717d_strtod=''
718d_strtol=''
719d_strtold=''
720d_strtoll=''
28e5dec8 721d_strtoq=''
b4eb6b3d
JH
722d_strtoul=''
723d_strtoull=''
724d_strtouq=''
725d_strxfrm=''
726d_symlink=''
727d_syscall=''
2ef53570 728d_syscallproto=''
b4eb6b3d
JH
729d_sysconf=''
730d_system=''
731d_tcgetpgrp=''
732d_tcsetpgrp=''
733d_telldirproto=''
734d_time=''
735timetype=''
736clocktype=''
737d_times=''
10bc17b6
JH
738d_tmpnam_r=''
739tmpnam_r_proto=''
b4eb6b3d 740d_truncate=''
10bc17b6
JH
741d_ttyname_r=''
742ttyname_r_proto=''
b4eb6b3d 743d_tzname=''
4e0554ec
JH
744d_u32align=''
745d_ualarm=''
b4eb6b3d
JH
746d_umask=''
747d_semctl_semid_ds=''
748d_semctl_semun=''
749d_union_semun=''
758a5d79 750d_unordered=''
4e0554ec 751d_usleep=''
2ef53570 752d_usleepproto=''
b4eb6b3d
JH
753d_ustat=''
754d_vfork=''
755usevfork=''
756d_voidsig=''
757signal_t=''
758d_volatile=''
759d_charvspr=''
760d_vprintf=''
761d_wait4=''
762d_waitpid=''
763d_wcstombs=''
764d_wctomb=''
4e0554ec 765d_writev=''
b4eb6b3d 766dlext=''
85e6fe83
LW
767cccdlflags=''
768ccdlflags=''
2304df62 769dlsrc=''
232e078e 770ld=''
85e6fe83 771lddlflags=''
2304df62 772usedl=''
b4eb6b3d
JH
773doublesize=''
774ebcdic=''
775fflushNULL=''
776fflushall=''
777fpossize=''
778fpostype=''
2d736872 779gccansipedantic=''
5b463ca7 780gccosandvers=''
8a27cf78 781gccversion=''
b4eb6b3d
JH
782gidformat=''
783gidsign=''
784gidsize=''
785gidtype=''
786groupstype=''
787h_fcntl=''
788h_sysfile=''
6e1038e0
MB
789html1dir=''
790html1direxp=''
791installhtml1dir=''
792html3dir=''
793html3direxp=''
794installhtml3dir=''
b4eb6b3d 795i_arpainet=''
10bc17b6 796i_crypt=''
b4eb6b3d
JH
797db_hashtype=''
798db_prefixtype=''
640374d0
JH
799db_version_major=''
800db_version_minor=''
801db_version_patch=''
b4eb6b3d
JH
802i_db=''
803i_dbm=''
804i_rpcsvcdbm=''
805d_dirnamlen=''
806direntrytype=''
807i_dirent=''
a0d0e21e 808i_dld=''
b4eb6b3d
JH
809i_dlfcn=''
810i_fcntl=''
811i_float=''
758a5d79
JH
812i_fp=''
813i_fp_class=''
b4eb6b3d
JH
814i_gdbm=''
815d_grpasswd=''
816i_grp=''
b4eb6b3d
JH
817i_ieeefp=''
818i_inttypes=''
2765b840 819i_langinfo=''
b4eb6b3d
JH
820i_libutil=''
821i_limits=''
822i_locale=''
823i_machcthr=''
824i_malloc=''
825i_math=''
826i_memory=''
827i_mntent=''
828i_ndbm=''
829i_netdb=''
830i_neterrno=''
831i_netinettcp=''
832i_niin=''
833i_sysin=''
834i_poll=''
835i_prot=''
836i_pthread=''
837d_pwage=''
838d_pwchange=''
839d_pwclass=''
840d_pwcomment=''
841d_pwexpire=''
842d_pwgecos=''
843d_pwpasswd=''
844d_pwquota=''
845i_pwd=''
846i_sfio=''
847i_shadow=''
848i_socks=''
849i_stddef=''
850i_stdlib=''
851i_string=''
852strings=''
853i_sunmath=''
854i_sysaccess=''
855i_sysdir=''
856i_sysfile=''
857d_voidtty=''
858i_bsdioctl=''
859i_sysfilio=''
860i_sysioctl=''
861i_syssockio=''
862i_syslog=''
863i_sysmman=''
864i_sysmode=''
865i_sysmount=''
866i_sysndir=''
867i_sysparam=''
868i_sysresrc=''
869i_syssecrt=''
870i_sysselct=''
871i_sysstat=''
872i_sysstatfs=''
873i_sysstatvfs=''
874i_systimes=''
875i_systypes=''
876i_sysuio=''
877i_sysun=''
878i_sysutsname=''
879i_sysvfs=''
880i_syswait=''
881i_sgtty=''
882i_termio=''
883i_termios=''
14b90194
JH
884d_tm_tm_gmtoff=''
885d_tm_tm_zone=''
b4eb6b3d
JH
886i_systime=''
887i_systimek=''
888i_time=''
889timeincl=''
890i_unistd=''
891i_ustat=''
892i_utime=''
893i_values=''
894i_stdarg=''
895i_varargs=''
896i_varhdr=''
897i_vfork=''
898inc_version_list=''
899inc_version_list_init=''
900installprefix=''
901installprefixexp=''
902installstyle=''
903installusrbinperl=''
904intsize=''
905longsize=''
906shortsize=''
4b661809 907issymlink=''
2304df62 908libc=''
b4eb6b3d
JH
909ldlibpthname=''
910libperl=''
911shrpenv=''
912useshrplib=''
a0d0e21e 913glibpth=''
2304df62 914libpth=''
8e07c86e 915loclibpth=''
2304df62
AD
916plibpth=''
917xlibpth=''
1cfa4ec7 918ignore_versioned_solibs=''
2304df62 919libs=''
43999f95
JH
920libsdirs=''
921libsfiles=''
922libsfound=''
13b3f787 923libspath=''
85e6fe83 924lns=''
b4eb6b3d
JH
925d_PRIEUldbl=''
926d_PRIFUldbl=''
927d_PRIGUldbl=''
928d_PRIeldbl=''
929d_PRIfldbl=''
930d_PRIgldbl=''
931d_SCNfldbl=''
932sPRIEUldbl=''
933sPRIFUldbl=''
934sPRIGUldbl=''
935sPRIeldbl=''
936sPRIfldbl=''
937sPRIgldbl=''
938sSCNfldbl=''
939lseeksize=''
940lseektype=''
8ff267be 941make_set_make=''
b4eb6b3d
JH
942d_mymalloc=''
943freetype=''
944mallocobj=''
945mallocsrc=''
946malloctype=''
9df442c2 947usemallocwrap=''
b4eb6b3d
JH
948usemymalloc=''
949installman1dir=''
950man1dir=''
951man1direxp=''
952man1ext=''
953installman3dir=''
954man3dir=''
955man3direxp=''
956man3ext=''
957modetype=''
958multiarch=''
959mydomain=''
960myhostname=''
961phostname=''
2304df62
AD
962c=''
963n=''
b4eb6b3d
JH
964d_eofnblk=''
965eagain=''
966o_nonblock=''
967rd_nodata=''
2cc61e15 968need_va_copy=''
b4eb6b3d
JH
969netdb_hlen_type=''
970netdb_host_type=''
971netdb_name_type=''
972netdb_net_type=''
973groupcat=''
974hostcat=''
975passcat=''
976orderlib=''
977ranlib=''
978d_perl_otherlibdirs=''
979otherlibdirs=''
2304df62
AD
980package=''
981spackage=''
b4eb6b3d
JH
982pager=''
983api_revision=''
984api_subversion=''
985api_version=''
986api_versionstring=''
987patchlevel=''
151e6568 988perl_patchlevel=''
b4eb6b3d
JH
989revision=''
990subversion=''
991version=''
861eb78d 992version_patchlevel_string=''
b4eb6b3d
JH
993perl5=''
994perladmin=''
995perlpath=''
996d_nv_preserves_uv=''
b4eb6b3d
JH
997i16size=''
998i16type=''
999i32size=''
1000i32type=''
1001i64size=''
1002i64type=''
1003i8size=''
1004i8type=''
1005ivsize=''
1006ivtype=''
53133ed1 1007nv_preserves_uv_bits=''
b4eb6b3d
JH
1008nvsize=''
1009nvtype=''
1010u16size=''
1011u16type=''
1012u32size=''
1013u32type=''
1014u64size=''
1015u64type=''
1016u8size=''
1017u8type=''
1018uvsize=''
1019uvtype=''
1020ivdformat=''
1021nvEUformat=''
1022nvFUformat=''
1023nvGUformat=''
1024nveformat=''
1025nvfformat=''
1026nvgformat=''
1027uvXUformat=''
1028uvoformat=''
1029uvuformat=''
1030uvxformat=''
1031pidtype=''
1032prefix=''
1033prefixexp=''
1034installprivlib=''
1035privlib=''
1036privlibexp=''
1037prototype=''
1038ptrsize=''
1039d_PRIXU64=''
1040d_PRId64=''
1041d_PRIi64=''
1042d_PRIo64=''
1043d_PRIu64=''
1044d_PRIx64=''
1045sPRIXU64=''
1046sPRId64=''
1047sPRIi64=''
1048sPRIo64=''
1049sPRIu64=''
1050sPRIx64=''
1051d_quad=''
1052quadkind=''
1053quadtype=''
1054uquadtype=''
1055drand01=''
1056randbits=''
1057randfunc=''
1058randseedtype=''
1059seedfunc=''
1060installscript=''
1061scriptdir=''
1062scriptdirexp=''
1063selectminbits=''
1064selecttype=''
8ff267be 1065sh=''
b4eb6b3d
JH
1066sig_count=''
1067sig_name=''
1068sig_name_init=''
1069sig_num=''
1070sig_num_init=''
76d3c696 1071sig_size=''
b4eb6b3d
JH
1072installsitearch=''
1073sitearch=''
1074sitearchexp=''
1075installsitebin=''
1076sitebin=''
1077sitebinexp=''
8d2cbf27
JH
1078installsitehtml1dir=''
1079sitehtml1dir=''
1080sitehtml1direxp=''
1081installsitehtml3dir=''
1082sitehtml3dir=''
1083sitehtml3direxp=''
b4eb6b3d
JH
1084installsitelib=''
1085sitelib=''
1086sitelib_stem=''
1087sitelibexp=''
91e123a8
JH
1088installsiteman1dir=''
1089siteman1dir=''
1090siteman1direxp=''
1091installsiteman3dir=''
1092siteman3dir=''
1093siteman3direxp=''
b4eb6b3d
JH
1094siteprefix=''
1095siteprefixexp=''
6e1038e0
MB
1096installsitescript=''
1097sitescript=''
1098sitescriptexp=''
b4eb6b3d
JH
1099sizesize=''
1100sizetype=''
a0d0e21e 1101so=''
b4eb6b3d 1102socksizetype=''
2304df62
AD
1103sharpbang=''
1104shsharp=''
1105spitshell=''
dfe9444c 1106src=''
b4eb6b3d
JH
1107ssizetype=''
1108startperl=''
2304df62 1109startsh=''
b4eb6b3d
JH
1110stdchar=''
1111d_stdio_stream_array=''
1112stdio_stream_array=''
1113sysman=''
5ff3f7a4 1114trnl=''
b4eb6b3d
JH
1115uidformat=''
1116uidsign=''
1117uidsize=''
1118uidtype=''
1119archname64=''
1120use64bitall=''
1121use64bitint=''
15b61c98 1122usefaststdio=''
b4eb6b3d
JH
1123ccflags_uselargefiles=''
1124ldflags_uselargefiles=''
1125libswanted_uselargefiles=''
1126uselargefiles=''
1127uselongdouble=''
1128usemorebits=''
1129usemultiplicity=''
2304df62 1130nm_opt=''
40a7a20a 1131nm_so_opt=''
2304df62
AD
1132runnm=''
1133usenm=''
b4eb6b3d 1134useperlio=''
db0f2be4 1135userelocatableinc=''
29209bc5 1136usesocks=''
b4eb6b3d
JH
1137d_oldpthreads=''
1138use5005threads=''
1139useithreads=''
9514c62b 1140usereentrant=''
b4eb6b3d 1141usethreads=''
2304df62 1142incpath=''
2304df62
AD
1143mips_type=''
1144usrinc=''
b4eb6b3d
JH
1145d_vendorarch=''
1146installvendorarch=''
1147vendorarch=''
1148vendorarchexp=''
1149d_vendorbin=''
1150installvendorbin=''
1151vendorbin=''
1152vendorbinexp=''
8d2cbf27
JH
1153installvendorhtml1dir=''
1154vendorhtml1dir=''
1155vendorhtml1direxp=''
1156installvendorhtml3dir=''
1157vendorhtml3dir=''
1158vendorhtml3direxp=''
b4eb6b3d
JH
1159d_vendorlib=''
1160installvendorlib=''
1161vendorlib=''
1162vendorlib_stem=''
1163vendorlibexp=''
91e123a8
JH
1164installvendorman1dir=''
1165vendorman1dir=''
1166vendorman1direxp=''
1167installvendorman3dir=''
1168vendorman3dir=''
1169vendorman3direxp=''
b4eb6b3d
JH
1170usevendorprefix=''
1171vendorprefix=''
1172vendorprefixexp=''
6e1038e0
MB
1173d_vendorscript=''
1174installvendorscript=''
1175vendorscript=''
1176vendorscriptexp=''
d56c5707 1177versiononly=''
b4eb6b3d
JH
1178defvoidused=''
1179voidflags=''
3659ebf1
JH
1180yacc=''
1181yaccflags=''
2304df62
AD
1182CONFIG=''
1183
ecfc5424
AD
1184define='define'
1185undef='undef'
1186smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1187rmlist=''
1188
1189: We must find out about Eunice early
1190eunicefix=':'
1191if test -f /etc/unixtovms; then
1192 eunicefix=/etc/unixtovms
1193fi
1194if test -f /etc/unixtovms.exe; then
1195 eunicefix=/etc/unixtovms.exe
1196fi
1197
cfb04860 1198: Set executable suffix now -- needed before hints available
6153ba32
PG
1199if test -f "/libs/version.library"; then
1200: Amiga OS
1201 _exe=""
1202elif test -f "/system/gnu_library/bin/ar.pm"; then
1203: Stratus VOS
cfb04860 1204 _exe=".pm"
6153ba32
PG
1205elif test -n "$DJGPP"; then
1206: DOS DJGPP
cfb04860 1207 _exe=".exe"
5c728af0 1208elif test -d c:/. -o -n "$is_os2" ; then
506faf56 1209: OS/2 or cygwin
ba863942
JH
1210 _exe=".exe"
1211fi
868439a2 1212
b4eb6b3d 1213i_whoami=''
9da7673b
MB
1214ccname=''
1215ccversion=''
1216perllibs=''
1217: set useposix=false in your hint file to disable the POSIX extension.
1218useposix=true
1219: set useopcode=false in your hint file to disable the Opcode extension.
1220useopcode=true
1221: Trailing extension. Override this in a hint file, if needed.
1222: Extra object files, if any, needed on this platform.
1223archobjs=''
1224archname=''
ff935051
JH
1225: Possible local include directories to search.
1226: Set locincpth to "" in a hint file to defeat local include searches.
1227locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1228locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1229:
1230: no include file wanted by default
1231inclwanted=''
1232
b4eb6b3d 1233groupstype=''
64615a5e 1234libnames=''
732c9516
JH
1235: change the next line if compiling for Xenix/286 on Xenix/386
1236xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1237: Possible local library directories to search.
1238loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1239loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1240
1241: general looking path for locating libraries
5869b1f1 1242glibpth="/lib /usr/lib $xlibpth"
732c9516 1243glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1244test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1245test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1246
1247: Private path used by Configure to find libraries. Its value
1248: is prepended to libpth. This variable takes care of special
1249: machines, like the mips. Usually, it should be empty.
1250plibpth=''
1251
1cfa4ec7
GS
1252: default library list
1253libswanted=''
921b2963 1254: some systems want to use only the non-versioned libso:s
1cfa4ec7 1255ignore_versioned_solibs=''
9da7673b
MB
1256siteman1dir=''
1257siteman3dir=''
1258sitescript=''
b4eb6b3d
JH
1259archname64=''
1260ccflags_uselargefiles=''
1261ldflags_uselargefiles=''
1262libswanted_uselargefiles=''
1263: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1264: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1265: set usethreads on the Configure command line to enable threads.
cd040c5e 1266usereentrant='undef'
9da7673b
MB
1267: full support for void wanted by default
1268defvoidused=15
1269
ecfc5424 1270: List of libraries we want.
15431986 1271: If anyone needs extra -lxxx, put those in a hint file.
6bdd71ef
AB
1272libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1273libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1aef975c 1274: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1275: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1276glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1277glibpth="/usr/shlib $glibpth"
1278: Do not use vfork unless overridden by a hint file.
1279usevfork=false
1280
8ff267be 1281: Find the basic shell for Bourne shell scripts
1282case "$sh" in
1283'')
8ff267be 1284 case "$SYSTYPE" in
1285 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1286 *) xxx='/bin/sh';;
1287 esac
1288 if test -f "$xxx"; then
1289 sh="$xxx"
1290 else
1291 : Build up a list and do a single loop so we can 'break' out.
1292 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1293 for xxx in sh bash ksh pdksh ash; do
1294 for p in $pth; do
1295 try="$try ${p}/${xxx}"
1296 done
1297 done
1298 for xxx in $try; do
1299 if test -f "$xxx"; then
1300 sh="$xxx";
8ff267be 1301 break
a5a94ea5
JH
1302 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1303 sh="$xxx";
1304 break
8ff267be 1305 elif test -f "$xxx.exe"; then
1306 sh="$xxx";
8ff267be 1307 break
1308 fi
1309 done
1310 fi
1311 ;;
1312esac
1313
1314case "$sh" in
a33c94aa 1315'') cat >&2 <<EOM
8ff267be 1316$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1317
8ff267be 1318Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1319Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1320we'll try to straighten this all out.
8ff267be 1321EOM
1322 exit 1
1323 ;;
1324esac
1325
760ac839 1326: see if sh knows # comments
73614538 1327if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1328 shsharp=true
1329 spitshell=cat
760ac839 1330 xcat=/bin/cat
a931254c
JH
1331 test -f $xcat$_exe || xcat=/usr/bin/cat
1332 if test ! -f $xcat$_exe; then
4bdb8fb5 1333 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1334 if test -f $p/cat$_exe; then
1deb0a86 1335 xcat=$p/cat
3c728e00
JH
1336 break
1337 fi
1338 done
1deb0a86
JH
1339 if test ! -f $xcat$_exe; then
1340 echo "Can't find cat anywhere!"
3c728e00
JH
1341 exit 1
1342 fi
1343 fi
5440bc8e
JH
1344 echo "#!$xcat" >sharp
1345 $eunicefix sharp
1346 chmod +x sharp
1347 ./sharp > today
760ac839 1348 if test -s today; then
760ac839
LW
1349 sharpbang='#!'
1350 else
5440bc8e
JH
1351 echo "#! $xcat" > sharp
1352 $eunicefix sharp
1353 chmod +x sharp
1354 ./sharp > today
760ac839 1355 if test -s today; then
760ac839
LW
1356 sharpbang='#! '
1357 else
760ac839
LW
1358 sharpbang=': use '
1359 fi
1360 fi
1361else
dfe9444c 1362 echo " "
8ff267be 1363 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1364 shsharp=false
1365 cd ..
1366 echo "exec grep -v '^[ ]*#'" >spitshell
1367 chmod +x spitshell
1368 $eunicefix spitshell
1369 spitshell=`pwd`/spitshell
1370 cd UU
1371 echo "I presume that if # doesn't work, #! won't work either!"
1372 sharpbang=': use '
1373fi
5440bc8e 1374rm -f sharp today
760ac839
LW
1375
1376: figure out how to guarantee sh startup
8ff267be 1377case "$startsh" in
1378'') startsh=${sharpbang}${sh} ;;
1379*)
760ac839 1380esac
5440bc8e 1381cat >sharp <<EOSS
760ac839
LW
1382$startsh
1383set abc
1384test "$?abc" != 1
1385EOSS
1386
5440bc8e
JH
1387chmod +x sharp
1388$eunicefix sharp
1389if ./sharp; then
8ff267be 1390 : echo "Yup, it does."
760ac839 1391else
dfe9444c
AD
1392 echo "Hmm... '$startsh' does not guarantee sh startup..."
1393 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1394fi
5440bc8e 1395rm -f sharp
760ac839 1396
aebf16e7
AD
1397
1398: Save command line options in file UU/cmdline.opt for later use in
1399: generating config.sh.
1400cat > cmdline.opt <<EOSH
1401# Configure command line arguments.
1402config_arg0='$0'
1403config_args='$*'
1404config_argc=$#
1405EOSH
1406argn=1
ee45ea83
IZ
1407args_exp=''
1408args_sep=''
aebf16e7
AD
1409for arg in "$@"; do
1410 cat >>cmdline.opt <<EOSH
1411config_arg$argn='$arg'
1412EOSH
ee45ea83
IZ
1413 # Extreme backslashitis: replace each ' by '"'"'
1414 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1415$arg
1416EOC
1417 arg_exp=`cat cmdl.opt`
1418 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1419 argn=`expr $argn + 1`
ee45ea83 1420 args_sep=' '
aebf16e7 1421done
ee45ea83
IZ
1422# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1423# used by ./hints/os2.sh
1424rm -f cmdl.opt
aebf16e7 1425
2304df62
AD
1426: produce awk script to parse command line options
1427cat >options.awk <<'EOF'
1428BEGIN {
02e93a22 1429 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1430
1431 len = length(optstr);
1432 for (i = 1; i <= len; i++) {
1433 c = substr(optstr, i, 1);
1434 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1435 if (a == ":") {
1436 arg[c] = 1;
1437 i++;
1438 }
1439 opt[c] = 1;
1440 }
1441}
1442{
1443 expect = 0;
1444 str = $0;
1445 if (substr(str, 1, 1) != "-") {
1446 printf("'%s'\n", str);
1447 next;
1448 }
1449 len = length($0);
1450 for (i = 2; i <= len; i++) {
1451 c = substr(str, i, 1);
1452 if (!opt[c]) {
1453 printf("-%s\n", substr(str, i));
1454 next;
1455 }
1456 printf("-%s\n", c);
1457 if (arg[c]) {
1458 if (i < len)
1459 printf("'%s'\n", substr(str, i + 1));
1460 else
1461 expect = 1;
1462 next;
1463 }
1464 }
1465}
1466END {
1467 if (expect)
1468 print "?";
1469}
1470EOF
1471
1472: process the command line options
4633a7c4
LW
1473set X `for arg in "$@"; do echo "X$arg"; done |
1474 sed -e s/X// | awk -f options.awk`
2304df62
AD
1475eval "set $*"
1476shift
1477rm -f options.awk
1478
1479: set up default values
1480fastread=''
1481reuseval=false
1482config_sh=''
1483alldone=''
1484error=''
1485silent=''
1486extractsh=''
ecfc5424 1487override=''
16d20bd9 1488knowitall=''
02e93a22 1489rm -f optdef.sh posthint.sh
28757baa 1490cat >optdef.sh <<EOS
1491$startsh
1492EOS
2304df62 1493
dfe9444c 1494
2304df62
AD
1495: option parsing
1496while test $# -gt 0; do
1497 case "$1" in
1498 -d) shift; fastread=yes;;
1499 -e) shift; alldone=cont;;
1500 -f)
1501 shift
1502 cd ..
1503 if test -r "$1"; then
1504 config_sh="$1"
1505 else
a0d0e21e 1506 echo "$me: cannot read config file $1." >&2
2304df62
AD
1507 error=true
1508 fi
1509 cd UU
1510 shift;;
1511 -h) shift; error=true;;
1512 -r) shift; reuseval=true;;
dfe9444c 1513 -s) shift; silent=true; realsilent=true;;
2304df62 1514 -E) shift; alldone=exit;;
16d20bd9 1515 -K) shift; knowitall=true;;
ecfc5424 1516 -O) shift; override=true;;
dfe9444c 1517 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1518 -D)
1519 shift
1520 case "$1" in
1521 *=)
1522 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1523 echo "$me: ignoring -D $1" >&2
1524 ;;
ecfc5424 1525 *=*) echo "$1" | \
1aef975c
AD
1526 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1527 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1528 esac
1529 shift
1530 ;;
1531 -U)
1532 shift
1533 case "$1" in
1aef975c 1534 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1535 *=*)
1536 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1537 echo "$me: ignoring -U $1" >&2
1538 ;;
1aef975c 1539 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1540 esac
1541 shift
1542 ;;
02e93a22
JH
1543 -A)
1544 shift
1545 xxx=''
1546 yyy="$1"
02e93a22 1547 zzz=''
5f83a3e9 1548 uuu=undef
02e93a22 1549 case "$yyy" in
f7c31117 1550 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
5f83a3e9
JH
1551 case "$zzz" in
1552 *:*) zzz='' ;;
1553 *) xxx=append
f7c31117
JH
1554 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1555 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
5f83a3e9
JH
1556 esac
1557 ;;
1558 esac
1559 case "$xxx" in
1560 '') case "$yyy" in
f7c31117
JH
1561 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1562 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1563 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1564 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1565 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1566 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
5f83a3e9
JH
1567 esac
1568 ;;
1569 esac
02e93a22
JH
1570 case "$xxx" in
1571 append)
5f83a3e9 1572 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1573 clear)
5f83a3e9 1574 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1575 define)
1576 case "$zzz" in
1577 '') zzz=define ;;
1578 esac
5f83a3e9 1579 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1580 eval)
5f83a3e9 1581 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1582 prepend)
5f83a3e9 1583 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1584 undef)
1585 case "$zzz" in
1586 '') zzz="$uuu" ;;
1587 esac
5f83a3e9
JH
1588 echo "$yyy=$zzz" >> posthint.sh ;;
1589 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1590 esac
bde6b06b 1591 shift
02e93a22 1592 ;;
dfe9444c 1593 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1594 exit 0;;
2304df62 1595 --) break;;
a0d0e21e 1596 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1597 *) break;;
1598 esac
1599done
1600
1601case "$error" in
1602true)
1603 cat >&2 <<EOM
2afac517 1604Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1605 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1606 -d : use defaults for all answers.
1607 -e : go on without questioning past the production of config.sh.
1608 -f : specify an alternate default configuration file.
1609 -h : print this help message and exit (with an error status).
1610 -r : reuse C symbols value if possible (skips costly nm extraction).
1611 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1612 -D : define symbol to have some value:
1613 -D symbol symbol gets the value 'define'
1614 -D symbol=value symbol gets the value 'value'
2304df62 1615 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1616 -K : do not use unless you know what you are doing.
ecfc5424 1617 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1618 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1619 -U : undefine symbol:
1620 -U symbol symbol gets the value 'undef'
1621 -U symbol= symbol gets completely empty
02e93a22 1622 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1623 -A symbol=value append " "value to symbol
02e93a22
JH
1624 -A append:symbol=value append value to symbol
1625 -A define:symbol=value define symbol to have value
02e93a22
JH
1626 -A clear:symbol define symbol to be ''
1627 -A define:symbol define symbol to be 'define'
1628 -A eval:symbol=value define symbol to be eval of value
1629 -A prepend:symbol=value prepend value to symbol
1630 -A undef:symbol define symbol to be 'undef'
1631 -A undef:symbol= define symbol to be ''
2304df62
AD
1632 -V : print version number and exit (with a zero status).
1633EOM
1634 exit 1
1635 ;;
1636esac
1637
dfe9444c
AD
1638: Sanity checks
1639case "$fastread$alldone" in
1640yescont|yesexit) ;;
1641*)
aaeb8e51
GS
1642 case "$extractsh" in
1643 true) ;;
1644 *)
1645 if test ! -t 0; then
1646 echo "Say 'sh Configure', not 'sh <Configure'"
1647 exit 1
1648 fi
1649 ;;
1650 esac
dfe9444c
AD
1651 ;;
1652esac
1653
2304df62
AD
1654exec 4>&1
1655case "$silent" in
1656true) exec 1>/dev/null;;
1657esac
1658
ecfc5424 1659: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1660touch optdef.sh
1661. ./optdef.sh
02e93a22
JH
1662: create the posthint manipulation script and leave the file out there...
1663touch posthint.sh
a0d0e21e 1664
2304df62 1665: set package name
85e6fe83 1666package=perl5
b4eb6b3d
JH
1667first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1668last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1669case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1670ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1671*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1672esac
2304df62 1673
2304df62
AD
1674: Some greps do not return status, grrr.
1675echo "grimblepritz" >grimble
1676if grep blurfldyick grimble >/dev/null 2>&1 ; then
1677 contains=contains
1678elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1679 contains=grep
1680else
1681 contains=contains
1682fi
1683rm -f grimble
1684: the following should work in any shell
1685case "$contains" in
1686contains*)
1687 echo " "
1688 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1689 cat >contains <<'EOSS'
1690grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1691EOSS
1692chmod +x contains
1693esac
1694
dfe9444c
AD
1695: Find the path to the source tree
1696case "$src" in
1697'') case "$0" in
b233458b
JH
1698 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1699 case "$src" in
1700 /*) ;;
8504afb7 1701 .) ;;
b233458b
JH
1702 *) src=`cd ../$src && pwd` ;;
1703 esac
1704 ;;
dfe9444c
AD
1705 *) src='.';;
1706 esac;;
1707esac
1708case "$src" in
1709'') src=/
1710 rsrc=/
1711 ;;
1712/*) rsrc="$src";;
1713*) rsrc="../$src";;
1714esac
1715if test -f $rsrc/Configure && \
1716 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1717then
1718 : found it, so we are ok.
1719else
1720 rsrc=''
1721 for src in . .. ../.. ../../.. ../../../..; do
1722 if test -f ../$src/Configure && \
1723 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1724 then
1725 rsrc=../$src
1726 break
1727 fi
1728 done
1729fi
1730case "$rsrc" in
1731'')
1732 cat <<EOM >&4
1733
1734Sorry, I can't seem to locate the source dir for $package. Please start
1735Configure with an explicit path -- i.e. /some/path/Configure.
1736
1737EOM
1738 exit 1
1739 ;;
1740../.) rsrc='..';;
1741*)
1742 echo " "
1743 echo "Sources for $package found in \"$src\"." >&4
1744 ;;
1745esac
1746
1747: script used to extract .SH files with variable substitutions
1748cat >extract <<'EOS'
a02608de 1749PERL_CONFIG_SH=true
dfe9444c 1750echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1751if test -f MANIFEST; then
1752 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1753else
1754 echo "(Looking for .SH files under the source directory.)"
6904989c 1755 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1756fi
1757shift
1758case $# in
6904989c 17590) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1760esac
6904989c 1761if test ! -f "$src/$1"; then
dfe9444c
AD
1762 shift
1763fi
1764mkdir_p='
1765name=$1;
1766create="";
1767while test $name; do
1768 if test ! -d "$name"; then
1769 create="$name $create";
1770 name=`echo $name | sed -e "s|^[^/]*$||"`;
1771 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1772 else
1773 name="";
1774 fi;
1775done;
1776for file in $create; do
1777 mkdir $file;
1778done
1779'
1780for file in $*; do
1781 case "$src" in
1782 ".")
1783 case "$file" in
1784 */*)
1785 dir=`expr X$file : 'X\(.*\)/'`
1786 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1787 (cd "$dir" && . ./$file)
dfe9444c
AD
1788 ;;
1789 *)
1790 . ./$file
1791 ;;
1792 esac
1793 ;;
1794 *)
1795 case "$file" in
1796 */*)
1797 dir=`expr X$file : 'X\(.*\)/'`
1798 file=`expr X$file : 'X.*/\(.*\)'`
1799 (set x $dir; shift; eval $mkdir_p)
6904989c 1800 sh <"$src/$dir/$file"
dfe9444c
AD
1801 ;;
1802 *)
6904989c 1803 sh <"$src/$file"
dfe9444c
AD
1804 ;;
1805 esac
1806 ;;
1807 esac
1808done
6904989c 1809if test -f "$src/config_h.SH"; then
dfe9444c
AD
1810 if test ! -f config.h; then
1811 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1812 . "$src/config_h.SH"
dfe9444c
AD
1813 fi
1814fi
1815EOS
1816
1817: extract files and exit if asked to do so
1818case "$extractsh" in
1819true)
1820 case "$realsilent" in
1821 true) ;;
1822 *) exec 1>&4;;
1823 esac
1824 case "$config_sh" in
1825 '') config_sh='config.sh';;
1826 esac
1827 echo " "
1828 echo "Fetching answers from $config_sh..."
1829 cd ..
1830 . $config_sh
1831 test "$override" && . ./optdef.sh
1832 echo " "
1833 . UU/extract
1834 rm -rf UU
24ccb310 1835 echo "Extraction done."
dfe9444c
AD
1836 exit 0
1837 ;;
1838esac
1839
1840: Eunice requires " " instead of "", can you believe it
1841echo " "
1842: Here we go...
1843echo "Beginning of configuration questions for $package."
1844
1845trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1846
2304df62
AD
1847: first determine how to suppress newline on echo command
1848echo " "
1849echo "Checking echo to see how to suppress newlines..."
1850(echo "hi there\c" ; echo " ") >.echotmp
1851if $contains c .echotmp >/dev/null 2>&1 ; then
1852 echo "...using -n."
1853 n='-n'
1854 c=''
1855else
1856 cat <<'EOM'
1857...using \c
1858EOM
1859 n=''
1860 c='\c'
1861fi
1862echo $n "The star should be here-->$c"
1863echo '*'
1864rm -f .echotmp
1865
1866: Now test for existence of everything in MANIFEST
1867echo " "
6904989c 1868if test -f "$rsrc/MANIFEST"; then
2304df62 1869 echo "First let's make sure your kit is complete. Checking..." >&4
4242830c 1870 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
2304df62 1871 rm -f missing
dfe9444c 1872 tmppwd=`pwd`
2304df62 1873 for filelist in x??; do
6904989c 1874 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1875 done
1876 if test -s missing; then
1877 cat missing >&4
1878 cat >&4 <<'EOM'
1879
1880THIS PACKAGE SEEMS TO BE INCOMPLETE.
1881
1882You have the option of continuing the configuration process, despite the
1883distinct possibility that your kit is damaged, by typing 'y'es. If you
1884do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1885and contact the author (perlbug@perl.org).
2304df62
AD
1886
1887EOM
1888 echo $n "Continue? [n] $c" >&4
1889 read ans
1890 case "$ans" in
1891 y*)
1892 echo "Continuing..." >&4
1893 rm -f missing
1894 ;;
1895 *)
1896 echo "ABORTING..." >&4
1897 kill $$
1898 ;;
1899 esac
1900 else
dfe9444c 1901 echo "Looks good..."
2304df62
AD
1902 fi
1903else
1904 echo "There is no MANIFEST file. I hope your kit is complete !"
1905fi
1906rm -f missing x??
1907
5ff3f7a4
GS
1908echo " "
1909: Find the appropriate value for a newline for tr
1910if test -n "$DJGPP"; then
1911 trnl='\012'
1912fi
1913if test X"$trnl" = X; then
1914 case "`echo foo|tr '\n' x 2>/dev/null`" in
1915 foox) trnl='\n' ;;
1916 esac
1917fi
1918if test X"$trnl" = X; then
1919 case "`echo foo|tr '\012' x 2>/dev/null`" in
1920 foox) trnl='\012' ;;
1921 esac
1922fi
1923if test X"$trnl" = X; then
8be2c24c
JH
1924 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1925 fooxy) trnl='\n\r' ;;
1926 esac
1927fi
1928if test X"$trnl" = X; then
5ff3f7a4
GS
1929 cat <<EOM >&2
1930
1931$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1932
1933EOM
1934 exit 1
1935fi
1936
2304df62
AD
1937: compute the number of columns on the terminal for proper question formatting
1938case "$COLUMNS" in
1939'') COLUMNS='80';;
1940esac
1941
1942: set up the echo used in my read
1943myecho="case \"\$xxxm\" in
1944'') echo $n \"\$rp $c\" >&4;;
1945*) case \"\$rp\" in
1946 '') echo $n \"[\$xxxm] $c\";;
1947 *)
1948 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1949 echo \"\$rp\" >&4
1950 echo $n \"[\$xxxm] $c\" >&4
1951 else
1952 echo $n \"\$rp [\$xxxm] $c\" >&4
1953 fi
1954 ;;
1955 esac;;
1956esac"
1957
1958: now set up to do reads with possible shell escape and default assignment
1959cat <<EOSC >myread
28757baa 1960$startsh
2304df62
AD
1961xxxm=\$dflt
1962$myecho
1963ans='!'
1964case "\$fastread" in
1965yes) case "\$dflt" in
1966 '') ;;
1967 *) ans='';
1968 case "\$silent-\$rp" in
1969 true-) ;;
1970 *) echo " " >&4;;
1971 esac;;
1972 esac;;
1973*) case "\$silent" in
1974 true) case "\$rp" in
1975 '') ans='';;
1976 esac;;
1977 esac;;
1978esac
1979while expr "X\$ans" : "X!" >/dev/null; do
1980 read answ
1981 set x \$xxxm
1982 shift
dfe9444c 1983 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1984 case "\$answ" in
dfe9444c
AD
1985 "!")
1986 sh 1>&4
1987 echo " "
1988 $myecho
1989 ;;
1990 !*)
1991 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1992 shift
1993 sh 1>&4 -c "\$*"
1994 echo " "
1995 $myecho
1996 ;;
2304df62
AD
1997 "\$ans")
1998 case "\$ans" in
ecfc5424
AD
1999 \\&*)
2000 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2001 shift
2002 case "\$1" in
2003 -d)
2004 fastread=yes
40a7a20a 2005 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
2006 ;;
2007 -*)
40a7a20a 2008 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
2009 ;;
2010 esac
2011 $myecho
2012 ans=!
2013 ;;
2304df62
AD
2014 esac;;
2015 *)
2016 case "\$aok" in
2017 y)
2018 echo "*** Substitution done -- please confirm."
2019 xxxm="\$ans"
c9795ab7 2020 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
2021 xxxm="\$ans"
2022 ans=!
2023 ;;
2024 *)
2025 echo "*** Error -- try again."
2026 ans=!
2027 ;;
2028 esac
2029 $myecho
2030 ;;
2031 esac
2032 case "\$ans\$xxxm\$nostick" in
2033 '')
2034 ans=!
2035 $myecho
2036 ;;
2037 esac
2038done
2039case "\$ans" in
2040'') ans="\$xxxm";;
2041esac
2042EOSC
2043
2044: create .config dir to save info across Configure sessions
2045test -d ../.config || mkdir ../.config
2046cat >../.config/README <<EOF
2047This directory created by Configure to save information that should
dfe9444c 2048persist across sessions for $package.
2304df62
AD
2049
2050You may safely delete it if you wish.
2051EOF
2052
9507cadf 2053xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 2054case "$usedevel" in
0107c034 2055$define|true|[yY]*) ;;
9507cadf 2056*) case "$xversion" in
0107c034
JH
2057 *[13579])
2058 cat >&4 <<EOH
2059*** WHOA THERE!!! ***
2060
2061 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
2062 The version of this $package distribution is $xversion, that is, odd,
2063 (as opposed to even) and that signifies a development release.
3d5d58b1 2064 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
2065
2066 Do ***NOT*** install this into production use.
2067 Data corruption and crashes are possible.
2068
2069 It is most seriously suggested that you do not continue any further
2070 unless you want to help in developing and debugging Perl.
2071
6adc6a45
JH
2072 If you *still* want to build perl, you can answer 'y' now,
2073 or pass -Dusedevel to Configure.
2074
0107c034
JH
2075EOH
2076 rp='Do you really want to continue?'
2077 dflt='n'
2078 . ./myread
2079 case "$ans" in
8feeef0e
JH
2080 [yY]) echo >&4 "Okay, continuing."
2081 usedevel="$define" ;;
0107c034
JH
2082 *) echo >&4 "Okay, bye."
2083 exit 1
2084 ;;
2085 esac
2086 ;;
2087 esac
2088 ;;
2089esac
8feeef0e
JH
2090case "$usedevel" in
2091$define|true|[yY]*)
2092 case "$versiononly" in
2093 '') versiononly="$define" ;;
2094 esac
2095 case "$installusrbinperl" in
2096 '') installusrbinperl="$undef" ;;
2097 esac
2098 ;;
2099esac
0107c034 2100
2304df62
AD
2101: general instructions
2102needman=true
2103firsttime=true
760ac839 2104user=`(logname) 2>/dev/null`
dfe9444c
AD
2105case "$user" in
2106'') user=`whoami 2>&1`;;
760ac839 2107esac
2304df62
AD
2108if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2109 firsttime=false
2110 echo " "
2111 rp='Would you like to see the instructions?'
2112 dflt=n
2113 . ./myread
2114 case "$ans" in
2115 [yY]*) ;;
2116 *) needman=false;;
2117 esac
2118fi
2119if $needman; then
2120 cat <<EOH
4e2a5f63 2121
2304df62 2122This installation shell script will examine your system and ask you questions
a0d0e21e 2123to determine how the perl5 package should be installed. If you get
2304df62
AD
2124stuck on a question, you may use a ! shell escape to start a subshell or
2125execute a command. Many of the questions will have default answers in square
2126brackets; typing carriage return will give you the default.
2127
2128On some of the questions which ask for file or directory names you are allowed
2129to use the ~name construct to specify the login directory belonging to "name",
2130even if you don't have a shell which knows about that. Questions where this is
2131allowed will be marked "(~name ok)".
2132
2133EOH
2134 rp=''
2135 dflt='Type carriage return to continue'
2136 . ./myread
2137 cat <<'EOH'
2138
2139The prompter used in this script allows you to use shell variables and
2140backticks in your answers. You may use $1, $2, etc... to refer to the words
2141in the default answer, as if the default line was a set of arguments given to a
2142script shell. This means you may also use $* to repeat the whole default line,
2143so you do not have to re-type everything to add something to the default.
2144
2145Everytime there is a substitution, you will have to confirm. If there is an
2146error (e.g. an unmatched backtick), the default answer will remain unchanged
2147and you will be prompted again.
2148
2149If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2150the questions and use the computed defaults (or the previous answers if there
2151was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 2152You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 2153on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
2154
2155EOH
2156 . ./myread
2157 cat <<EOH
2158
2159Much effort has been expended to ensure that this shell script will run on any
2160Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
2161Configure and run it again. If you can't run Configure for some reason,
2162you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 2163have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
2164
2165This installation script affects things in two ways:
2166
21671) it may do direct variable substitutions on some of the files included
2168 in this kit.
21692) it builds a config.h file for inclusion in C programs. You may edit
2170 any of these files as the need arises after running this script.
2171
2172If you make a mistake on a question, there is no easy way to back up to it
2173currently. The easiest thing to do is to edit config.sh and rerun all the SH
2174files. Configure will offer to let you do this before it runs the SH files.
2175
2176EOH
2177 dflt='Type carriage return to continue'
2178 . ./myread
2179 case "$firsttime" in
2180 true) echo $user >>../.config/instruct;;
2181 esac
2182fi
2183
2304df62
AD
2184: find out where common programs are
2185echo " "
2186echo "Locating common programs..." >&4
2187cat <<EOSC >loc
2188$startsh
2189case \$# in
21900) exit 1;;
2191esac
2192thing=\$1
2193shift
2194dflt=\$1
2195shift
2196for dir in \$*; do
2197 case "\$thing" in
2198 .)
2199 if test -d \$dir/\$thing; then
2200 echo \$dir
2201 exit 0
2202 fi
2203 ;;
2204 *)
a0d0e21e 2205 for thisthing in \$dir/\$thing; do
ecfc5424 2206 : just loop through to pick last item
a0d0e21e 2207 done
25f94b33 2208 if test -f \$thisthing; then
a0d0e21e 2209 echo \$thisthing
2304df62 2210 exit 0
a5a94ea5
JH
2211 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2212 echo \$thisthing
2213 exit 0
2304df62 2214 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2215 if test -n "$DJGPP"; then
2216 echo \$dir/\$thing.exe
b921d661 2217 elif test "$eunicefix" != ":"; then
c4f23d77
AD
2218 : on Eunice apparently
2219 echo \$dir/\$thing
b921d661 2220 exit 0
c4f23d77 2221 fi
2d736872 2222 exit 0
2304df62
AD
2223 fi
2224 ;;
2225 esac
2226done
2227echo \$dflt
2228exit 1
2229EOSC
2230chmod +x loc
2231$eunicefix loc
2232loclist="
2233awk
2234cat
f8006fac 2235chmod
b4eb6b3d
JH
2236comm
2237cp
2304df62
AD
2238echo
2239expr
2240grep
a0d0e21e 2241ls
b4eb6b3d 2242mkdir
2304df62
AD
2243rm
2244sed
b4eb6b3d 2245sort
85e6fe83 2246touch
2304df62 2247tr
b4eb6b3d 2248uniq
2304df62
AD
2249"
2250trylist="
2251Mcc
dfe9444c 2252ar
3659ebf1 2253bison
b4eb6b3d 2254byacc
2304df62 2255cpp
b4eb6b3d 2256csh
2304df62
AD
2257date
2258egrep
1fef16b3 2259gmake
8ff267be 2260gzip
b4eb6b3d 2261less
8ff267be 2262ln
3c728e00 2263make
b4eb6b3d 2264more
693762b4 2265nm
b4eb6b3d
JH
2266nroff
2267pg
2304df62
AD
2268test
2269uname
8ff267be 2270zip
2304df62 2271"
8e07c86e 2272pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2273pth="$pth /lib /usr/lib"
2274for file in $loclist; do
dfe9444c
AD
2275 eval xxx=\$$file
2276 case "$xxx" in
2277 /*|?:[\\/]*)
2278 if test -f "$xxx"; then
2279 : ok
2280 else
2281 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2282 xxx=`./loc $file $file $pth`
2283 fi
2284 ;;
2285 '') xxx=`./loc $file $file $pth`;;
2286 *) xxx=`./loc $xxx $xxx $pth`;;
2287 esac
a5a94ea5 2288 eval $file=$xxx$_exe
2304df62
AD
2289 eval _$file=$xxx
2290 case "$xxx" in
2291 /*)
2292 echo $file is in $xxx.
2293 ;;
8e07c86e
AD
2294 ?:[\\/]*)
2295 echo $file is in $xxx.
2296 ;;
2304df62 2297 *)
25f94b33
AD
2298 echo "I don't know where '$file' is, and my life depends on it." >&4
2299 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2300 exit 1
2304df62
AD
2301 ;;
2302 esac
2303done
2304echo " "
2305echo "Don't worry if any of the following aren't found..."
2306say=offhand
2307for file in $trylist; do
dfe9444c
AD
2308 eval xxx=\$$file
2309 case "$xxx" in
2310 /*|?:[\\/]*)
2311 if test -f "$xxx"; then
2312 : ok
2313 else
2314 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2315 xxx=`./loc $file $file $pth`
2316 fi
2317 ;;
2318 '') xxx=`./loc $file $file $pth`;;
2319 *) xxx=`./loc $xxx $xxx $pth`;;
2320 esac
306a8474 2321 eval $file=$xxx$_exe
2304df62
AD
2322 eval _$file=$xxx
2323 case "$xxx" in
2324 /*)
2325 echo $file is in $xxx.
2326 ;;
8e07c86e
AD
2327 ?:[\\/]*)
2328 echo $file is in $xxx.
2329 ;;
2304df62
AD
2330 *)
2331 echo "I don't see $file out there, $say."
2332 say=either
2333 ;;
2334 esac
2335done
2336case "$egrep" in
1fef16b3 2337egrep)
2304df62
AD
2338 echo "Substituting grep for egrep."
2339 egrep=$grep
868439a2 2340 _egrep=$grep
2304df62
AD
2341 ;;
2342esac
8ff267be 2343case "$ln" in
1fef16b3 2344ln)
8ff267be 2345 echo "Substituting cp for ln."
2346 ln=$cp
868439a2 2347 _ln=$cp
8ff267be 2348 ;;
2349esac
2e26f1d5
JH
2350case "$make" in
2351make)
2352 case "$gmake" in
2353 gmake)
2354 echo "I can't find make or gmake, and my life depends on it." >&4
2355 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2356 exit 1
2357 ;;
2358 esac
2359 ;;
2360esac
2361case "$gmake" in
2362gmake) ;;
2363*) # We can't have osname yet.
1fef16b3
JH
2364 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2365 # Assume that gmake, if found, is definitely GNU make
2366 # and prefer it over the system make.
2367 echo "Substituting gmake for make."
2368 make=$gmake
868439a2 2369 _make=$gmake
1fef16b3
JH
2370 fi
2371 ;;
a5a94ea5 2372esac
2304df62
AD
2373case "$test" in
2374test)
2375 echo "Hopefully test is built into your sh."
2376 ;;
2377*)
73614538 2378 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2379 echo "Using the test built into your sh."
2304df62
AD
2380 test=test
2381 _test=test
2382 fi
2383 ;;
2384esac
2385case "$echo" in
2386echo)
2387 echo "Hopefully echo is built into your sh."
2388 ;;
2389'') ;;
2390*)
2391 echo " "
2392echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2393 $echo $n "hi there$c" >foo1
2394 echo $n "hi there$c" >foo2
2395 if cmp foo1 foo2 >/dev/null 2>&1; then
2396 echo "They are compatible. In fact, they may be identical."
2397 else
2398 case "$n" in
2399 '-n') n='' c='\c';;
2400 *) n='-n' c='';;
2401 esac
2402 cat <<FOO
2403They are not compatible! You are probably running ksh on a non-USG system.
2404I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2405have echo built in and we may have to run some Bourne shell scripts. That
2406means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2407
2408FOO
2409 $echo $n "The star should be here-->$c"
2410 $echo "*"
2411 fi
2412 $rm -f foo1 foo2
2413 ;;
2414esac
2415
6b769f8f 2416cat <<EOS >trygcc
2573c5f9
JH
2417$startsh
2418EOS
6b769f8f 2419cat <<'EOSC' >>trygcc
2573c5f9
JH
2420case "$cc" in
2421'') ;;
2422*) $rm -f try try.*
2423 $cat >try.c <<EOM
2424int main(int argc, char *argv[]) {
2425 return 0;
2426}
2427EOM
e4778687 2428 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2429 :
2430 else
2431 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2432 despair=yes
2433 trygcc=yes
2434 case "$cc" in
2435 *gcc*) trygcc=no ;;
2436 esac
2437 case "`$cc -v -c try.c 2>&1`" in
2438 *gcc*) trygcc=no ;;
2439 esac
2440 if $test X"$trygcc" = Xyes; then
2441 if gcc -o try -c try.c; then
2442 echo " "
2443 echo "You seem to have a working gcc, though." >&4
2444 rp="Would you like to use it?"
2445 dflt=y
2446 if $test -f myread; then
2447 . ./myread
2448 else
2449 if $test -f UU/myread; then
2450 . ./UU/myread
2451 else
2452 echo "Cannot find myread, sorry. Aborting." >&2
2453 exit 1
2454 fi
2455 fi
2456 case "$ans" in
6371411c
RB
2457 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2458 if $test -f usethreads.cbu; then
2459 $cat >&4 <<EOM
2460
2461*** However, any setting of the C compiler flags (e.g. for thread support)
2462*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2463*** (together with e.g. -Dusethreads).
2464
2465EOM
2466 fi;;
2573c5f9
JH
2467 esac
2468 fi
2469 fi
6b769f8f
RB
2470 fi
2471 $rm -f try try.*
2472 ;;
2473esac
2474EOSC
2475
2476cat <<EOS >checkcc
2477$startsh
2478EOS
2479cat <<'EOSC' >>checkcc
2480case "$cc" in
2481'') ;;
2482*) $rm -f try try.*
2483 $cat >try.c <<EOM
2484int main(int argc, char *argv[]) {
2485 return 0;
2486}
2487EOM
2488 if $cc -o try $ccflags $ldflags try.c; then
2489 :
2490 else
2573c5f9 2491 if $test X"$despair" = Xyes; then
6b769f8f
RB
2492 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2493 fi
2494 $cat >&4 <<EOM
5dd4fbdf
MB
2495You need to find a working C compiler.
2496Either (purchase and) install the C compiler supplied by your OS vendor,
2497or for a free C compiler try http://gcc.gnu.org/
2498I cannot continue any further, aborting.
2499EOM
6b769f8f 2500 exit 1
2573c5f9
JH
2501 fi
2502 $rm -f try try.*
2503 ;;
2504esac
2505EOSC
2506
a0d0e21e
LW
2507: determine whether symbolic links are supported
2508echo " "
2509$touch blurfl
2510if $ln -s blurfl sym > /dev/null 2>&1 ; then
2511 echo "Symbolic links are supported." >&4
818f00be 2512 lns="$ln -s"
a0d0e21e
LW
2513else
2514 echo "Symbolic links are NOT supported." >&4
2515 lns="$ln"
2516fi
2517$rm -f blurfl sym
2518
dafca956
JH
2519: determine whether symbolic links are supported
2520echo " "
2521case "$lns" in
18ea2752 2522*"ln"*" -s")
dafca956
JH
2523 echo "Checking how to test for symbolic links..." >&4
2524 $lns blurfl sym
4b661809 2525 if $test "X$issymlink" = X; then
2e2a97a6
JH
2526 case "$newsh" in
2527 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2528 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2529 esac
5d644a95
MB
2530 if test $? = 0; then
2531 issymlink="test -h"
2e2a97a6
JH
2532 else
2533 echo "Your builtin 'test -h' may be broken." >&4
2534 case "$test" in
2535 /*) ;;
2536 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2537 for p in $pth
2538 do
2539 if test -f "$p/$test"; then
2540 test="$p/$test"
2541 break
2542 fi
2543 done
2544 ;;
2545 esac
2546 case "$test" in
2547 /*)
2548 echo "Trying external '$test -h'." >&4
2549 issymlink="$test -h"
2550 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2551 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2552 issymlink=''
2553 fi
2554 ;;
2555 *) issymlink='' ;;
2556 esac
5d644a95
MB
2557 fi
2558 fi
4b661809 2559 if $test "X$issymlink" = X; then
dafca956 2560 if $test -L sym 2>/dev/null; then
5d644a95 2561 issymlink="$test -L"
2e2a97a6 2562 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2563 fi
2564 fi
4b661809 2565 if $test "X$issymlink" != X; then
5d644a95 2566 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2567 else
2568 echo "I do not know how you can test for symbolic links." >&4
2569 fi
2570 $rm -f blurfl sym
2571 ;;
2572*) echo "No symbolic links, so not testing for their testing..." >&4
2573 ;;
2574esac
2575echo " "
2576
2577
2578case "$mksymlinks" in
2579$define|true|[yY]*)
2580 case "$src" in
2581 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2582 exit 1
2583 ;;
4b661809 2584 *) case "$lns:$issymlink" in
f314eb9f 2585 *"ln"*" -s:"*"test -"?)
dafca956
JH
2586 echo "Creating the symbolic links..." >&4
2587 echo "(First creating the subdirectories...)" >&4
2588 cd ..
2589 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2590 read directory
2591 test -z "$directory" && break
2592 mkdir -p $directory
2593 done
2594 # Sanity check 1.
2595 if test ! -d t/base; then
2596 echo "Failed to create the subdirectories. Aborting." >&4
2597 exit 1
2598 fi
2599 echo "(Then creating the symlinks...)" >&4
2600 awk '{print $1}' $src/MANIFEST | while true; do
2601 read filename
2602 test -z "$filename" && break
2603 if test -f $filename; then
5d644a95 2604 if $issymlink $filename; then
dafca956
JH
2605 rm -f $filename
2606 fi
2607 fi
2608 if test -f $filename; then
2609 echo "$filename already exists, not symlinking."
2610 else
2611 ln -s $src/$filename $filename
2612 fi
2613 done
2614 # Sanity check 2.
a0d24b8a
JH
2615 if test ! -f t/base/lex.t; then
2616 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2617 exit 1
2618 fi
2619 cd UU
2620 ;;
2621 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2622 ;;
2623 esac
2624 ;;
2625 esac
2626 ;;
2627esac
2628
5440bc8e
JH
2629
2630case "$usecrosscompile" in
2631$define|true|[yY]*)
93bc48fa 2632 $echo "Cross-compiling..."
5440bc8e
JH
2633 croak=''
2634 case "$cc" in
2635 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2636 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2637 ar=$targetarch-ar
2638 # leave out ld, choosing it is more complex
2639 nm=$targetarch-nm
2640 ranlib=$targetarch-ranlib
93bc48fa 2641 $echo 'extern int foo;' > try.c
f8006fac 2642 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2643 shift
2644 if $test $# -gt 0; then
2645 incpth="$incpth $*"
f8006fac
JH
2646 incpth="`$echo $incpth|$sed 's/^ //'`"
2647 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2648 for i in $*; do
f8006fac 2649 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2650 if $test -d $j; then
2651 libpth="$libpth $j"
2652 fi
2653 done
f8006fac
JH
2654 libpth="`$echo $libpth|$sed 's/^ //'`"
2655 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2656 fi
2657 $rm -f try.c
5440bc8e
JH
2658 ;;
2659 esac
2660 case "$targetarch" in
93bc48fa
JH
2661 '') echo "Targetarch not defined." >&4; croak=y ;;
2662 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2663 esac
2664 case "$incpth" in
93bc48fa 2665 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2666 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2667 esac
2668 case "$libpth" in
93bc48fa 2669 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2670 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2671 esac
93bc48fa
JH
2672 case "$usrinc" in
2673 '') for i in $incpth; do
2674 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2675 usrinc=$i
2676 echo "Guessing usrinc $usrinc." >&4
2677 break
2678 fi
2679 done
2680 case "$usrinc" in
2681 '') echo "Usrinc not defined." >&4; croak=y ;;
2682 esac
2683 ;;
2684 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2685 esac
93bc48fa
JH
2686 case "$targethost" in
2687 '') echo "Targethost not defined." >&4; croak=y ;;
2688 *) echo "Using targethost $targethost." >&4
5440bc8e 2689 esac
93bc48fa
JH
2690 locincpth=' '
2691 loclibpth=' '
5440bc8e 2692 case "$croak" in
93bc48fa 2693 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2694 esac
2695 case "$src" in
2696 /*) run=$src/Cross/run
93c0359c 2697 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2698 to=$src/Cross/to
2699 from=$src/Cross/from
2700 ;;
93bc48fa 2701 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2702 run=$pwd/Cross/run
f8006fac 2703 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2704 to=$pwd/Cross/to
2705 from=$pwd/Cross/from
2706 ;;
2707 esac
2708 case "$targetrun" in
2709 '') targetrun=ssh ;;
2710 esac
2711 case "$targetto" in
2712 '') targetto=scp ;;
2713 esac
2714 case "$targetfrom" in
2715 '') targetfrom=scp ;;
2716 esac
2717 run=$run-$targetrun
2718 to=$to-$targetto
2719 from=$from-$targetfrom
93bc48fa
JH
2720 case "$targetdir" in
2721 '') targetdir=/tmp
2722 echo "Guessing targetdir $targetdir." >&4
2723 ;;
2724 esac
5440bc8e 2725 case "$targetuser" in
93bc48fa
JH
2726 '') targetuser=root
2727 echo "Guessing targetuser $targetuser." >&4
2728 ;;
5440bc8e
JH
2729 esac
2730 case "$targetfrom" in
2731 scp) q=-q ;;
2732 *) q='' ;;
2733 esac
2734 case "$targetrun" in
2735 ssh|rsh)
2736 cat >$run <<EOF
2737#!/bin/sh
93c0359c
JH
2738case "\$1" in
2739-cwd)
2740 shift
2741 cwd=\$1
2742 shift
2743 ;;
2744esac
2745case "\$cwd" in
2746'') cwd=$targetdir ;;
2747esac
5440bc8e
JH
2748exe=\$1
2749shift
93c0359c
JH
2750if $test ! -f \$exe.xok; then
2751 $to \$exe
2752 $touch \$exe.xok
2753fi
2754$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2755EOF
2756 ;;
93bc48fa 2757 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2758 exit 1
2759 ;;
2760 esac
93c0359c
JH
2761 case "$targetmkdir" in
2762 */Cross/mkdir)
2763 cat >$targetmkdir <<EOF
2764#!/bin/sh
2765$targetrun -l $targetuser $targethost "mkdir -p \$@"
2766EOF
f8006fac 2767 $chmod a+rx $targetmkdir
93c0359c
JH
2768 ;;
2769 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2770 exit 1
2771 ;;
2772 esac
5440bc8e
JH
2773 case "$targetto" in
2774 scp|rcp)
2775 cat >$to <<EOF
2776#!/bin/sh
2777for f in \$@
2778do
93c0359c
JH
2779 case "\$f" in
2780 /*)
2781 $targetmkdir \`dirname \$f\`
2782 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2783 ;;
2784 *)
2785 $targetmkdir $targetdir/\`dirname \$f\`
2786 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2787 ;;
2788 esac
5440bc8e
JH
2789done
2790exit 0
2791EOF
2792 ;;
2793 cp) cat >$to <<EOF
2794#!/bin/sh
93c0359c
JH
2795for f in \$@
2796do
2797 case "\$f" in
2798 /*)
2799 $mkdir -p $targetdir/\`dirname \$f\`
2800 $cp \$f $targetdir/\$f || exit 1
2801 ;;
2802 *)
2803 $targetmkdir $targetdir/\`dirname \$f\`
2804 $cp \$f $targetdir/\$f || exit 1
2805 ;;
2806 esac
2807done
2808exit 0
5440bc8e
JH
2809EOF
2810 ;;
93bc48fa 2811 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2812 exit 1
2813 ;;
2814 esac
2815 case "$targetfrom" in
2816 scp|rcp)
2817 cat >$from <<EOF
2818#!/bin/sh
2819for f in \$@
2820do
93c0359c 2821 $rm -f \$f
5440bc8e
JH
2822 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2823done
2824exit 0
2825EOF
2826 ;;
2827 cp) cat >$from <<EOF
2828#!/bin/sh
2829for f in \$@
2830do
93c0359c 2831 $rm -f \$f
5440bc8e
JH
2832 cp $targetdir/\$f . || exit 1
2833done
2834exit 0
2835EOF
2836 ;;
93bc48fa 2837 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2838 exit 1
2839 ;;
2840 esac
93bc48fa
JH
2841 if $test ! -f $run; then
2842 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2843 else
f8006fac 2844 $chmod a+rx $run
5440bc8e 2845 fi
93bc48fa
JH
2846 if $test ! -f $to; then
2847 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2848 else
f8006fac 2849 $chmod a+rx $to
5440bc8e 2850 fi
93bc48fa
JH
2851 if $test ! -f $from; then
2852 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2853 else
f8006fac 2854 $chmod a+rx $from
5440bc8e 2855 fi
93bc48fa 2856 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2857 exit 1
2858 fi
2859 cat >&4 <<EOF
f8006fac
JH
2860Using '$run' for remote execution,
2861and '$from' and '$to'
93bc48fa 2862for remote file transfer.
5440bc8e
JH
2863EOF
2864 ;;
2865*) run=''
2866 to=:
2867 from=:
2868 usecrosscompile='undef'
2869 targetarch=''
2870 ;;
2871esac
2872
ecfc5424
AD
2873: see whether [:lower:] and [:upper:] are supported character classes
2874echo " "
ecfc5424
AD
2875case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2876ABYZ)
2877 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2878 up='[:upper:]'
2879 low='[:lower:]'
2880 ;;
416d0bea
MB
2881*) # There is a discontinuity in EBCDIC between 'R' and 'S'
2882 # (0xd9 and 0xe2), therefore that is a nice testing point.
2883 if test "X$up" = X -o "X$low" = X; then
2884 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2885 rs) up='[A-Z]'
2886 low='[a-z]'
28e8609d
JH
2887 ;;
2888 esac
416d0bea 2889 fi
28e8609d 2890 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2891 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2892 rs) up='A-Z'
28e8609d
JH
2893 low='a-z'
2894 ;;
2895 esac
416d0bea 2896 fi
28e8609d 2897 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2898 case "`echo RS | od -x 2>/dev/null`" in
2899 *D9E2*|*d9e2*)
28e8609d
JH
2900 echo "Hey, this might be EBCDIC." >&4
2901 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2902 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2903 rs) up='[A-IJ-RS-Z]'
2904 low='[a-ij-rs-z]'
28e8609d
JH
2905 ;;
2906 esac
2907 fi
2908 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
2909 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2910 rs) up='A-IJ-RS-Z'
2911 low='a-ij-rs-z'
28e8609d
JH
2912 ;;
2913 esac
2914 fi
2915 ;;
2916 esac
2917 fi
2918esac
416d0bea
MB
2919case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2920rs)
28e8609d
JH
2921 echo "Using $up and $low to convert case." >&4
2922 ;;
ecfc5424 2923*)
28e8609d
JH
2924 echo "I don't know how to translate letters from upper to lower case." >&4
2925 echo "Your tr is not acting any way I know of." >&4
2926 exit 1
2927 ;;
ecfc5424
AD
2928esac
2929: set up the translation script tr, must be called with ./tr of course
2930cat >tr <<EOSC
2931$startsh
2932case "\$1\$2" in
2933'[A-Z][a-z]') exec $tr '$up' '$low';;
2934'[a-z][A-Z]') exec $tr '$low' '$up';;
2935esac
2936exec $tr "\$@"
2937EOSC
2938chmod +x tr
2939$eunicefix tr
2940
2304df62
AD
2941: Try to determine whether config.sh was made on this system
2942case "$config_sh" in
2943'')
43999f95
JH
2944myuname=`$uname -a 2>/dev/null`
2945$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2946# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2947# because the A-Z/a-z are not consecutive.
a0d0e21e 2948myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2949 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2950newmyuname="$myuname"
2304df62 2951dflt=n
16d20bd9
AD
2952case "$knowitall" in
2953'')
2954 if test -f ../config.sh; then
2955 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2956 eval "`grep myuname= ../config.sh`"
2957 fi
2958 if test "X$myuname" = "X$newmyuname"; then
2959 dflt=y
2960 fi
2304df62 2961 fi
16d20bd9
AD
2962 ;;
2963*) dflt=y;;
2964esac
2304df62
AD
2965
2966: Get old answers from old config file if Configure was run on the
2967: same system, otherwise use the hints.
2968hint=default
2969cd ..
2970if test -f config.sh; then
16d20bd9
AD
2971 echo " "
2972 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2973 . UU/myread
2974 case "$ans" in
f83701cd
AD
2975 n*|N*) echo "OK, I'll ignore it."
2976 mv config.sh config.sh.old
2977 myuname="$newmyuname"
2978 ;;
2304df62 2979 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2980 tmp_n="$n"
2981 tmp_c="$c"
85cad39c 2982 tmp_sh="$sh"
2304df62
AD
2983 . ./config.sh
2984 cp config.sh UU
ecfc5424
AD
2985 n="$tmp_n"
2986 c="$tmp_c"
85cad39c 2987 : Older versions did not always set $sh. Catch re-use of such
2988 : an old config.sh.
2989 case "$sh" in
2990 '') sh="$tmp_sh" ;;
2991 esac
2304df62
AD
2992 hint=previous
2993 ;;
2994 esac
2995fi
2573c5f9 2996. ./UU/checkcc
2304df62
AD
2997if test ! -f config.sh; then
2998 $cat <<EOM
2999
4e2a5f63
AD
3000First time through, eh? I have some defaults handy for some systems
3001that need some extra help getting the Configure answers right:
2304df62
AD
3002
3003EOM
dfe9444c 3004 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
3005 dflt=''
3006 : Half the following guesses are probably wrong... If you have better
7f2de2d2 3007 : tests or hints, please send them to perlbug@perl.org
2304df62 3008 : The metaconfig authors would also appreciate a copy...
a0d0e21e 3009 $test -f /irix && osname=irix
85e6fe83
LW
3010 $test -f /xenix && osname=sco_xenix
3011 $test -f /dynix && osname=dynix
3012 $test -f /dnix && osname=dnix
5f05dabc 3013 $test -f /lynx.os && osname=lynxos
3014 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 3015 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 3016 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 3017 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
3018 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3019 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
3020 $test -d /usr/apollo/bin && osname=apollo
3021 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 3022 $test -d /usr/include/minix && osname=minix
d54344fc 3023 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 3024 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 3025 osname=machten
4633a7c4 3026 if $test -x /sbin/version; then
dfe9444c 3027 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
3028 $sed -e 's/[A-Za-z]$//'`
3029 elif $test -x /usr/etc/version; then
dfe9444c 3030 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
3031 $sed -e 's/[A-Za-z]$//'`
3032 else
3033 osvers="$2.$3"
3034 fi
3035 fi
aaacdc8b
GS
3036
3037 $test -f /sys/posix.dll &&
3038 $test -f /usr/bin/what &&
3039 set X `/usr/bin/what /sys/posix.dll` &&
3040 $test "$3" = UWIN &&
3041 osname=uwin &&
3042 osvers="$5"
3043
2304df62
AD
3044 if $test -f $uname; then
3045 set X $myuname
3046 shift
3047
2304df62 3048 case "$5" in
85e6fe83 3049 fps*) osname=fps ;;
2304df62
AD
3050 mips*)
3051 case "$4" in
85e6fe83
LW
3052 umips) osname=umips ;;
3053 *) osname=mips ;;
2304df62 3054 esac;;
85e6fe83
LW
3055 [23]100) osname=mips ;;
3056 next*) osname=next ;;
ecfc5424 3057 i386*)
c6912327
JH
3058 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3059 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
3060 osname='sco'
3061 osvers=$tmp
3062 elif $test -f /etc/kconfig; then
ecfc5424 3063 osname=isc
bd628c73 3064 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
3065 osvers=4
3066 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3067 osvers=3
2304df62 3068 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 3069 osvers=2
ecfc5424
AD
3070 fi
3071 fi
2000072c 3072 tmp=''
ecfc5424 3073 ;;
c4f23d77
AD
3074 pc*)
3075 if test -n "$DJGPP"; then
3076 osname=dos
3077 osvers=djgpp
3078 fi
3079 ;;
2304df62
AD
3080 esac
3081
3082 case "$1" in
a0d0e21e
LW
3083 aix) osname=aix
3084 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3085 case "$tmp" in
e81c5c2a
NC
3086 # oslevel can fail with:
3087 # oslevel: Unable to acquire lock.
3088 *not\ found) osvers="$4"."$3" ;;
a0d0e21e
LW
3089 '<3240'|'<>3240') osvers=3.2.0 ;;
3090 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3091 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 3092 *) osvers=$tmp;;
a0d0e21e
LW
3093 esac
3094 ;;
aaacdc8b
GS
3095 bsd386) osname=bsd386
3096 osvers=`$uname -r`
3097 ;;
3098 cygwin*) osname=cygwin
3099 osvers="$3"
3100 ;;
23f87696
SZ
3101 *dc.osx) osname=dcosx
3102 osvers="$3"
3103 ;;
a0d0e21e
LW
3104 dnix) osname=dnix
3105 osvers="$3"
3106 ;;
3107 domainos) osname=apollo
3108 osvers="$3"
3109 ;;
761ee4e8 3110 dgux) osname=dgux
a0d0e21e
LW
3111 osvers="$3"
3112 ;;
760ac839 3113 dynixptx*) osname=dynixptx
e58e581d 3114 osvers=`echo "$4"|sed 's/^v//'`
760ac839 3115 ;;
a0d0e21e
LW
3116 freebsd) osname=freebsd
3117 osvers="$3" ;;
761ee4e8
BD
3118 genix) osname=genix ;;
3119 gnu) osname=gnu
3120 osvers="$3" ;;
3121 hp*) osname=hpux
bfb7748a 3122 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 3123 ;;
761ee4e8 3124 irix*) osname=irix
a0d0e21e
LW
3125 case "$3" in
3126 4*) osvers=4 ;;
3127 5*) osvers=5 ;;
ecfc5424 3128 *) osvers="$3" ;;
a0d0e21e
LW
3129 esac
3130 ;;
761ee4e8 3131 linux) osname=linux
a0d0e21e 3132 case "$3" in
a0d0e21e
LW
3133 *) osvers="$3" ;;
3134 esac
3135 ;;
761ee4e8 3136 MiNT) osname=mint
28e8609d
JH
3137 ;;
3138 netbsd*) osname=netbsd
ecfc5424
AD
3139 osvers="$3"
3140 ;;
4e81affe
MM
3141 news-os) osvers="$3"
3142 case "$3" in
3143 4*) osname=newsos4 ;;
3144 *) osname=newsos ;;
3145 esac
3146 ;;
aaacdc8b 3147 next*) osname=next ;;
28bb1e2c 3148 nonstop-ux) osname=nonstopux ;;
65dc58a1
TM
3149 openbsd) osname=openbsd
3150 osvers="$3"
3151 ;;
5c728af0
IZ
3152 os2) osname=os2
3153 osvers="$4"
3154 ;;
aaacdc8b
GS
3155 POSIX-BC | posix-bc ) osname=posix-bc
3156 osvers="$3"
a0d0e21e 3157 ;;
ae3afa4e
TH
3158 powerux | power_ux | powermax_os | powermaxos | \
3159 powerunix | power_unix) osname=powerux
3160 osvers="$3"
3161 ;;
aaacdc8b
GS
3162 qnx) osname=qnx
3163 osvers="$4"
3164 ;;
a0d0e21e
LW
3165 solaris) osname=solaris
3166 case "$3" in
3167 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 3168 *) osvers="$3" ;;
a0d0e21e
LW
3169 esac
3170 ;;
85e6fe83
LW
3171 sunos) osname=sunos
3172 case "$3" in
85e6fe83
LW
3173 5*) osname=solaris
3174 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 3175 *) osvers="$3" ;;
2304df62
AD
3176 esac
3177 ;;
a0d0e21e 3178 titanos) osname=titanos
85e6fe83 3179 case "$3" in
a0d0e21e
LW
3180 1*) osvers=1 ;;
3181 2*) osvers=2 ;;
3182 3*) osvers=3 ;;
3183 4*) osvers=4 ;;
ecfc5424 3184 *) osvers="$3" ;;
2304df62
AD
3185 esac
3186 ;;
85e6fe83 3187 ultrix) osname=ultrix
ecfc5424 3188 osvers="$3"
2304df62 3189 ;;
28757baa 3190 osf1|mls+) case "$5" in
fed7345c
AD
3191 alpha)
3192 osname=dec_osf
fdd85a03 3193 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2aa76180
JH
3194 case "$osvers" in
3195 [1-9].[0-9]*) ;;
3196 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3197 esac
ecfc5424
AD
3198 ;;
3199 hp*) osname=hp_osf1 ;;
3200 mips) osname=mips_osf1 ;;
85e6fe83
LW
3201 esac
3202 ;;
af1ff193 3203 # UnixWare 7.1.2 is known as Open UNIX 8
381c1bae 3204 openunix|unixware) osname=svr5
0337d152
BG
3205 osvers="$4"
3206 ;;
3c728e00 3207 uts) osname=uts
a0d0e21e
LW
3208 osvers="$3"
3209 ;;
3c728e00
JH
3210 vos) osvers="$3"
3211 ;;
85e6fe83 3212 $2) case "$osname" in
2304df62 3213 *isc*) ;;
a0d0e21e 3214 *freebsd*) ;;
5f05dabc 3215 svr*)
a0d0e21e
LW
3216 : svr4.x or possibly later
3217 case "svr$3" in
3218 ${osname}*)
3219 osname=svr$3
3220 osvers=$4
3221 ;;
3222 esac
3223 case "$osname" in
3224 svr4.0)
3225 : Check for ESIX
3226 if test -f /stand/boot ; then
3227 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3228 if test -n "$INITPROG" -a -f "$INITPROG"; then
3229 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3230 if test -n "$isesix"; then
a0d0e21e
LW
3231 osname=esix4
3232 fi
3233 fi
3234 fi
3235 ;;
3236 esac
3237 ;;
2304df62 3238 *) if test -f /etc/systemid; then
a0d0e21e
LW
3239 osname=sco
3240 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3241 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3242 osvers=$1.$2.$3
c4f23d77 3243 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3244 osvers=$1.$2
c4f23d77 3245 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3246 osvers=$1
2304df62 3247 fi
a0d0e21e
LW
3248 else
3249 case "$osname" in
3250 '') : Still unknown. Probably a generic Sys V.
3251 osname="sysv"
3252 osvers="$3"
3253 ;;
3254 esac
2304df62
AD
3255 fi
3256 ;;
3257 esac
3258 ;;
a0d0e21e
LW
3259 *) case "$osname" in
3260 '') : Still unknown. Probably a generic BSD.
3261 osname="$1"
3262 osvers="$3"
3263 ;;
3264 esac
3265 ;;
2304df62
AD
3266 esac
3267 else
dfe9444c
AD
3268 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3269 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3270 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3271 osname=news_os
2304df62 3272 fi
dfe9444c 3273 $rm -f UU/kernel.what
5c728af0 3274 elif test -d c:/. -o -n "$is_os2" ; then
8e07c86e
AD
3275 set X $myuname
3276 osname=os2
3277 osvers="$5"
2304df62
AD
3278 fi
3279 fi
85e6fe83 3280
5440bc8e
JH
3281 case "$targetarch" in
3282 '') ;;
3283 *) hostarch=$osname
3284 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3285 osvers=''
3286 ;;
3287 esac
3288
a0d0e21e
LW
3289 : Now look for a hint file osname_osvers, unless one has been
3290 : specified already.
3291 case "$hintfile" in
3292 ''|' ')
1e127011 3293 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3294 : Also try without trailing minor version numbers.
1e127011
DD
3295 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3296 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3297 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3298 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3299 case "$file" in
3300 '') dflt=none ;;
3301 *) case "$osvers" in
3302 '') dflt=$file
3303 ;;
dfe9444c 3304 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3305 dflt=$file
dfe9444c 3306 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3307 dflt=$xfile
dfe9444c 3308 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3309 dflt=$xxfile
dfe9444c 3310 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3311 dflt=$xxxfile
dfe9444c 3312 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3313 dflt=$xxxxfile
dfe9444c 3314 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3315 dflt="${osname}"
3316 else
3317 dflt=none
3318 fi
3319 ;;
3320 esac
85e6fe83
LW
3321 ;;
3322 esac
4e2a5f63
AD
3323 if $test -f Policy.sh ; then
3324 case "$dflt" in
3325 *Policy*) ;;
3326 none) dflt="Policy" ;;
3327 *) dflt="Policy $dflt" ;;
3328 esac
3329 fi
85e6fe83 3330 ;;
a0d0e21e 3331 *)
ecfc5424 3332 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3333 ;;
2304df62 3334 esac
1aef975c 3335
4e2a5f63
AD
3336 if $test -f Policy.sh ; then
3337 $cat <<EOM
3338
3339There's also a Policy hint file available, which should make the
3340site-specific (policy) questions easier to answer.
3341EOM
3342
3343 fi
3344
2304df62
AD
3345 $cat <<EOM
3346
3347You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3348A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3349is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3350
3351EOM
4e2a5f63 3352
2304df62 3353 rp="Which of these apply, if any?"
dfe9444c 3354 . UU/myread
85e6fe83
LW
3355 tans=$ans
3356 for file in $tans; do
4e2a5f63
AD
3357 if $test X$file = XPolicy -a -f Policy.sh; then
3358 . Policy.sh
3359 $cat Policy.sh >> UU/config.sh
3360 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3361 . $src/hints/$file.sh
3362 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3363 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3364 : nothing
3365 else
85e6fe83
LW
3366 : Give one chance to correct a possible typo.
3367 echo "$file.sh does not exist"
3368 dflt=$file
3369 rp="hint to use instead?"
dfe9444c 3370 . UU/myread
85e6fe83 3371 for file in $ans; do
dfe9444c
AD
3372 if $test -f "$src/hints/$file.sh"; then
3373 . $src/hints/$file.sh
3374 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3375 elif $test X$ans = X -o X$ans = Xnone ; then
3376 : nothing
3377 else
3378 echo "$file.sh does not exist -- ignored."
3379 fi
3380 done
2304df62
AD
3381 fi
3382 done
85e6fe83 3383
2304df62 3384 hint=recommended
85e6fe83 3385 : Remember our hint file for later.
dfe9444c 3386 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3387 hintfile="$file"
85e6fe83 3388 else
a0d0e21e 3389 hintfile=''
85e6fe83 3390 fi
2304df62
AD
3391fi
3392cd UU
3393;;
3394*)
3395 echo " "
3396 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3397 tmp_n="$n"
3398 tmp_c="$c"
2304df62
AD
3399 cd ..
3400 cp $config_sh config.sh 2>/dev/null
a78b0d02 3401 chmod +w config.sh
2304df62
AD
3402 . ./config.sh
3403 cd UU
3404 cp ../config.sh .
ecfc5424
AD
3405 n="$tmp_n"
3406 c="$tmp_c"
2304df62
AD
3407 hint=previous
3408 ;;
3409esac
1aef975c 3410test "$override" && . ./optdef.sh
2304df62
AD
3411
3412: Restore computed paths
3413for file in $loclist $trylist; do
3414 eval $file="\$_$file"
3415done
3416
85e6fe83 3417cat << EOM
a0d0e21e 3418
85e6fe83 3419Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3420The default value is probably right if the name rings a bell. Otherwise,
3421since spelling matters for me, either accept the default or answer "none"
3422to leave it blank.
a0d0e21e 3423
85e6fe83 3424EOM
85e6fe83 3425case "$osname" in
a0d0e21e 3426 ''|' ')
85e6fe83 3427 case "$hintfile" in
a0d0e21e 3428 ''|' '|none) dflt=none ;;
ecfc5424 3429 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3430 esac
3431 ;;
3432 *) dflt="$osname" ;;
3433esac
3434rp="Operating system name?"
3435. ./myread
3436case "$ans" in
ecfc5424
AD
3437none) osname='' ;;
3438*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3439esac
8ff267be 3440echo " "
3441case "$osvers" in
3442 ''|' ')
3443 case "$hintfile" in
3444 ''|' '|none) dflt=none ;;
3445 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3446 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3447 case "$dflt" in
3448 ''|' ') dflt=none ;;
3449 esac
3450 ;;
3451 esac
3452 ;;
3453 *) dflt="$osvers" ;;
3454esac
3455rp="Operating system version?"
3456. ./myread
3457case "$ans" in
3458none) osvers='' ;;
3459*) osvers="$ans" ;;
3460esac
3461
02e93a22
JH
3462
3463. ./posthint.sh
3464
2304df62 3465: who configured the system
59b83a6f 3466cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
dfe9444c
AD
3467case "$cf_by" in
3468"")
7c04078e 3469 cf_by=`(logname) 2>/dev/null`
dfe9444c 3470 case "$cf_by" in
7c04078e
GA
3471 "")
3472 cf_by=`(whoami) 2>/dev/null`
3473 case "$cf_by" in
3474 "") cf_by=unknown ;;
3475 esac ;;
8ff267be 3476 esac ;;
3477esac
2304df62 3478
b4eb6b3d
JH
3479: set up the script used to warn in case of inconsistency
3480cat <<EOS >whoa
3481$startsh
3482EOS
3483cat <<'EOSC' >>whoa
3484dflt=y
3485echo " "
3486echo "*** WHOA THERE!!! ***" >&4
3487echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3488rp=" Keep the $hint value?"
3489. ./myread
3490case "$ans" in
3491y) td=$was; tu=$was;;
3492esac
3493EOSC
3494
3495: function used to set $1 to $val
3496setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3497case "$val$was" in
3498$define$undef) . ./whoa; eval "$var=\$td";;
3499$undef$define) . ./whoa; eval "$var=\$tu";;
3500*) eval "$var=$val";;
3501esac'
3502
b29b105d
JH
3503case "$usesocks" in
3504$define|true|[yY]*) dflt='y';;
3505*) dflt='n';;
3506esac
3507cat <<EOM
3508
3509Perl can be built to use the SOCKS proxy protocol library. To do so,
3510Configure must be run with -Dusesocks. If you use SOCKS you also need
3511to use the PerlIO abstraction layer, this will be implicitly selected.
3512
3513If this doesn't make any sense to you, just accept the default '$dflt'.
3514EOM
3515rp='Build Perl for SOCKS?'
3516. ./myread
3517case "$ans" in
3518y|Y) val="$define" ;;
3519*) val="$undef" ;;
3520esac
3521set usesocks
3522eval $setvar
3523
3524case "$usesocks" in
3525$define|true|[yY]*) useperlio="$define";;
3526esac
3527
3528case "$useperlio" in
3529$define|true|[yY]*|'') dflt='y';;
3530*) dflt='n';;
3531esac
3532cat <<EOM
3533
3534Previous version of $package used the standard IO mechanisms as
3535defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3536alternate IO mechanisms via the PerlIO abstraction layer, but the
3537stdio mechanism is still available if needed. The abstraction layer
3538can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3539Using PerlIO with sfio may cause problems with some extension modules.
3540
3541If this doesn't make any sense to you, just accept the default '$dflt'.
3542EOM
3543rp='Use the PerlIO abstraction layer?'
3544. ./myread
3545case "$ans" in
3546y|Y)
3547 val="$define"
3548 ;;
3549*)
3550 echo "Ok, doing things the stdio way."
3551 val="$undef"
3552 ;;
3553esac
3554set useperlio
3555eval $setvar
3556
3557case "$usesocks" in
3558$define|true|[yY]*)
3559 case "$useperlio" in
3560 $define|true|[yY]*) ;;
3561 *) cat >&4 <<EOM
3562
3563You are using the SOCKS proxy protocol library which means that you
3564should also use the PerlIO layer. You may be headed for trouble.
3565
3566EOM
3567 ;;
3568 esac
3569 ;;
3570esac
3571
3572
b4eb6b3d
JH
3573case "$usethreads" in
3574$define|true|[yY]*) dflt='y';;
8e285145
AD
3575*) # Catch case where user specified ithreads or 5005threads but
3576 # forgot -Dusethreads (A.D. 4/2002)
3577 case "$useithreads$use5005threads" in
b29b105d
JH
3578 *$define*)
3579 case "$useperlio" in
3580 "$define") dflt='y' ;;
3581 *) dflt='n' ;;
3582 esac
3583 ;;
3584 *) dflt='n';;
8e285145
AD
3585 esac
3586 ;;
b4eb6b3d
JH
3587esac
3588cat <<EOM
3589
3590Perl can be built to take advantage of threads on some systems.
3591To do so, Configure can be run with -Dusethreads.
3592
bfce6503
DM
3593Note that Perl built with threading support runs slightly slower
3594and uses more memory than plain Perl. The current implementation
3595is believed to be stable, but it is fairly new, and so should be
3596treated with caution.
b4eb6b3d
JH
3597
3598If this doesn't make any sense to you, just accept the default '$dflt'.
3599EOM
3600rp='Build a threading Perl?'
3601. ./myread
3602case "$ans" in
3603y|Y) val="$define" ;;
3604*) val="$undef" ;;
3605esac
3606set usethreads
3607eval $setvar
3608
3609case "$usethreads" in
3610$define)
3611 $cat <<EOM
3612
bfce6503
DM
3613Since release 5.6, Perl has had two different threading implementations,
3614the newer interpreter-based version (ithreads) with one interpreter per
3615thread, and the older 5.005 version (5005threads).
3616The 5005threads version is effectively unmaintained and will probably be
3617removed in Perl 5.10, so there should be no need to build a Perl using it
3618unless needed for backwards compatibility with some existing 5.005threads
3619code.
b4eb6b3d 3620
b4eb6b3d
JH
3621EOM
3622 : Default to ithreads unless overridden on command line or with
3623 : old config.sh
3624 dflt='y'
3625 case "$use5005threads" in
3626 $define|true|[yY]*) dflt='n';;
3627 esac
3628 case "$useithreads" in
3629 $undef|false|[nN]*) dflt='n';;
3630 esac
bfce6503 3631 rp='Use the newer interpreter-based ithreads?'
b4eb6b3d
JH
3632 . ./myread
3633 case "$ans" in
3634 y|Y) val="$define" ;;
3635 *) val="$undef" ;;
3636 esac
3637 set useithreads
3638 eval $setvar
3639 : Now set use5005threads to the opposite value.
3640 case "$useithreads" in
3641 $define) val="$undef" ;;
3642 *) val="$define" ;;
3643 esac
3644 set use5005threads
3645 eval $setvar
3646 ;;
3647*)
3648 useithreads="$undef"
3649 use5005threads="$undef"
3650 ;;
3651esac
3652
c915ce7f
JH
3653case "$useithreads$use5005threads" in
3654"$define$define")
3655 $cat >&4 <<EOM
3656
3657You cannot have both the ithreads and the 5.005 threads enabled
3658at the same time. Disabling the 5.005 threads since they are
3659much less stable than the ithreads.
3660
3661EOM
3662 use5005threads="$undef"
3663 ;;
3664esac
3665
b29b105d
JH
3666if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3667 cat >&4 <<EOF
3668***
3669*** To build with ithreads you must also use the PerlIO layer.
3670*** Cannot continue, aborting.
3671***
3672EOF
3673 exit 1
3674fi
3675
b4eb6b3d
JH
3676case "$d_oldpthreads" in
3677'') : Configure tests would be welcome here. For now, assume undef.
3678 val="$undef" ;;
3679*) val="$d_oldpthreads" ;;
3680esac
3681set d_oldpthreads
3682eval $setvar
3683
3684
b4eb6b3d
JH
3685: Look for a hint-file generated 'call-back-unit'. If the
3686: user has specified that a threading perl is to be built,
3687: we may need to set or change some other defaults.
9da7673b
MB
3688if $test -f usethreads.cbu; then
3689 echo "Your platform has some specific hints regarding threaded builds, using them..."
3690 . ./usethreads.cbu
3691else
3692 case "$usethreads" in
3693 "$define"|true|[yY]*)
b4eb6b3d 3694 $cat <<EOM
9da7673b 3695(Your platform does not have any specific hints for threaded builds.
b4eb6b3d
JH
3696 Assuming POSIX threads, then.)
3697EOM
b4eb6b3d 3698 ;;
9da7673b
MB
3699 esac
3700fi
b4eb6b3d
JH
3701
3702cat <<EOM
3703
3704Perl can be built so that multiple Perl interpreters can coexist
3705within the same Perl executable.
3706EOM
3707
3708case "$useithreads" in
3709$define)
3710 cat <<EOM
3711This multiple interpreter support is required for interpreter-based threads.
3712EOM
3713 val="$define"
3714 ;;
3715*) case "$usemultiplicity" in
3716 $define|true|[yY]*) dflt='y';;
3717 *) dflt='n';;
3718 esac
3719 echo " "
3720 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3721 rp='Build Perl for multiplicity?'
3722 . ./myread
3723 case "$ans" in
3724 y|Y) val="$define" ;;
3725 *) val="$undef" ;;
3726 esac
3727 ;;
3728esac
3729set usemultiplicity
3730eval $setvar
3731
96056487
JH
3732
3733case "$usemorebits" in
3734"$define"|true|[yY]*)
3735 use64bitint="$define"
3736 uselongdouble="$define"
3737 usemorebits="$define"
3738 ;;
3739*) usemorebits="$undef"
3740 ;;
3741esac
3742
e5e20432
JH
3743: make some quick guesses about what we are up against
3744echo " "
3745$echo $n "Hmm... $c"
3746echo exit 1 >bsd
3747echo exit 1 >usg
3748echo exit 1 >v7
3749echo exit 1 >osf1
3750echo exit 1 >eunice
3751echo exit 1 >xenix
3752echo exit 1 >venix
3753echo exit 1 >os2
3754d_bsd="$undef"
3755$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3756if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3757then
3758 echo "Looks kind of like an OSF/1 system, but we'll see..."
3759 echo exit 0 >osf1
381aa1ff 3760elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3761 xxx=`./loc addbib blurfl $pth`
3762 if $test -f $xxx; then
3763 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3764 echo exit 0 >bsd
3765 echo exit 0 >usg
3766 else
3767 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3768 echo "Looks kind of like an extended USG system, but we'll see..."
3769 else
3770 echo "Looks kind of like a USG system, but we'll see..."
3771 fi
3772 echo exit 0 >usg
3773 fi
3774elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3775 echo "Looks kind of like a BSD system, but we'll see..."
3776 d_bsd="$define"
3777 echo exit 0 >bsd
3778else
3779 echo "Looks kind of like a Version 7 system, but we'll see..."
3780 echo exit 0 >v7
3781fi
3782case "$eunicefix" in
3783*unixtovms*)
3784 $cat <<'EOI'
3785There is, however, a strange, musty smell in the air that reminds me of
3786something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3787EOI
3788 echo exit 0 >eunice
3789 d_eunice="$define"
3790: it so happens the Eunice I know will not run shell scripts in Unix format
3791 ;;
3792*)
3793 echo " "
3794 echo "Congratulations. You aren't running Eunice."
3795 d_eunice="$undef"
3796 ;;
3797esac
3798: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3799: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3800: semicolon as a patch separator
e5e20432
JH
3801case "$p_" in
3802:) ;;
3803*)
3804 $cat <<'EOI'
3805I have the feeling something is not exactly right, however...don't tell me...
3806lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3807(Or you may be running DOS with DJGPP.)
e5e20432
JH
3808EOI
3809 echo exit 0 >os2
3810 ;;
3811esac
3812if test -f /xenix; then
3813 echo "Actually, this looks more like a XENIX system..."
3814 echo exit 0 >xenix
3815 d_xenix="$define"
3816else
3817 echo " "
3818 echo "It's not Xenix..."
3819 d_xenix="$undef"
3820fi
3821chmod +x xenix
3822$eunicefix xenix
3823if test -f /venix; then
3824 echo "Actually, this looks more like a VENIX system..."
3825 echo exit 0 >venix
3826else
3827 echo " "
3828 if ./xenix; then
3829 : null
3830 else
3831 echo "Nor is it Venix..."
3832 fi
3833fi
3834chmod +x bsd usg v7 osf1 eunice xenix venix os2
3835$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3836$rm -f foo
3837
5869b1f1
JH
3838case "$cc" in
3839'') dflt=cc;;
3840*) dflt="$cc";;
3841esac
3842rp="Use which C compiler?"
3843. ./myread
3844cc="$ans"
6b769f8f
RB
3845
3846: See if they have not cc but they do have gcc
3847. ./trygcc
e5e20432
JH
3848: Look for a hint-file generated 'call-back-unit'. Now that the
3849: user has specified the compiler, we may need to set or change some
3850: other defaults.
3851if $test -f cc.cbu; then
3852 . ./cc.cbu
3853fi
2573c5f9 3854. ./checkcc
8a27cf78 3855
e5e20432
JH
3856echo " "
3857echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3858$cat >try.c <<EOM
e5e20432
JH
3859#include <stdio.h>
3860int main() {
3861#ifdef __GNUC__
3862#ifdef __VERSION__
3863 printf("%s\n", __VERSION__);
3864#else
3865 printf("%s\n", "1");
3866#endif
3867#endif
073b6de5 3868 return(0);
e5e20432
JH
3869}
3870EOM
5440bc8e
JH
3871if $cc -o try $ccflags $ldflags try.c; then
3872 gccversion=`$run ./try`
e5e20432
JH
3873 case "$gccversion" in
3874 '') echo "You are not using GNU cc." ;;
fc68435e 3875 *) echo "You are using GNU cc $gccversion."
48fe685d 3876 ccname=gcc
fc68435e 3877 ;;
e5e20432
JH
3878 esac
3879else
3880 echo " "
3881 echo "*** WHOA THERE!!! ***" >&4
3882 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3883 case "$knowitall" in
3884 '')
3885 echo " You'd better start hunting for one and let me know about it." >&4
3886 exit 1
3887 ;;
3888 esac
3889fi
5440bc8e 3890$rm -f try try.*
e5e20432
JH
3891case "$gccversion" in
38921*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3893esac
5b463ca7
KS
3894case "$gccversion" in
3895'') gccosandvers='' ;;
10b4ebb5
JH
3896*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3897 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3898 gccshortvers=''
5b463ca7 3899 case "$gccosandvers" in
02903077
JH
3900 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3901 $osname$osvers) ;; # looking good
5b463ca7
KS
3902 $osname*) cat <<EOM >&4
3903
3904*** WHOA THERE!!! ***
3905
3906 Your gcc has not been compiled for the exact release of
3907 your operating system ($gccosandvers versus $osname$osvers).
3908
3909 In general it is a good idea to keep gcc synchronized with
3910 the operating system because otherwise serious problems
3911 may ensue when trying to compile software, like Perl.
3912
3913 I'm trying to be optimistic here, though, and will continue.
3914 If later during the configuration and build icky compilation
02903077
JH
3915 problems appear (headerfile conflicts being the most common
3916 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3917 your operating system release.
3918
3919EOM
3920 ;;
81575342 3921 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3922 esac
3923 ;;
3924esac
e723fc21
JH
3925case "$ccname" in
3926'') ccname="$cc" ;;
3927esac
e5e20432 3928
224cb7cb 3929# gcc 3.* complain about adding -Idirectories that they already know about,
76589481
JH
3930# so we will take those off from locincpth.
3931case "$gccversion" in
39323*)
3933 echo "main(){}">try.c
224cb7cb
JH
3934 for incdir in $locincpth; do
3935 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
48fe685d 3936 grep '^c[cp]p*[01]: warning: changing search order '`
224cb7cb 3937 if test "X$warn" != X; then
44b94491 3938 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
224cb7cb 3939 fi
76589481
JH
3940 done
3941 $rm -f try try.*
3942esac
640374d0 3943
bd9b35c9
JH
3944: decide how portable to be. Allow command line overrides.
3945case "$d_portable" in
3946"$undef") ;;
3947*) d_portable="$define" ;;
104d25b7 3948esac
85ab1d1d 3949
bd9b35c9
JH
3950: set up shell script to do ~ expansion
3951cat >filexp <<EOSS
3952$startsh
3953: expand filename
3954case "\$1" in
3955 ~/*|~)
3956 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3957 ;;
3958 ~*)
3959 if $test -f /bin/csh; then
3960 /bin/csh -f -c "glob \$1"
3961 failed=\$?
3962 echo ""
3963 exit \$failed
e5e20432 3964 else
bd9b35c9
JH
3965 name=\`$expr x\$1 : '..\([^/]*\)'\`
3966 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3967 if $test ! -d "\$dir"; then
3968 me=\`basename \$0\`
3969 echo "\$me: can't locate home directory for: \$name" >&2
3970 exit 1
3971 fi
3972 case "\$1" in
3973 */*)
3974 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3975 ;;
3976 *)
3977 echo \$dir
e5e20432
JH
3978 ;;
3979 esac
3980 fi
b691c02f 3981 ;;
4633a7c4 3982*)
bd9b35c9 3983 echo \$1
2304df62
AD
3984 ;;
3985esac
4633a7c4
LW
3986EOSS
3987chmod +x filexp
3988$eunicefix filexp
2304df62
AD
3989
3990: now set up to get a file name
28757baa 3991cat <<EOS >getfile
3992$startsh
3993EOS
3994cat <<'EOSC' >>getfile
2304df62
AD
3995tilde=''
3996fullpath=''
3997already=''
3998skip=''
3999none_ok=''
4000exp_file=''
a0d0e21e 4001nopath_ok=''
2304df62
AD
4002orig_rp="$rp"
4003orig_dflt="$dflt"
b233458b
JH
4004case "$gfpth" in
4005'') gfpth='.' ;;
4006esac
2304df62
AD
4007
4008case "$fn" in
ecfc5424 4009*\(*)
d604bb53
JH
4010 : getfile will accept an answer from the comma-separated list
4011 : enclosed in parentheses even if it does not meet other criteria.
4012 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
4013 fn=`echo $fn | sed 's/(.*)//'`
4014 ;;
4015esac
4016
4017case "$fn" in
a0d0e21e
LW
4018*:*)
4019 loc_file=`expr $fn : '.*:\(.*\)'`
4020 fn=`expr $fn : '\(.*\):.*'`
4021 ;;
4022esac
4023
4024case "$fn" in
2304df62
AD
4025*~*) tilde=true;;
4026esac
4027case "$fn" in
4028*/*) fullpath=true;;
4029esac
4030case "$fn" in
4031*+*) skip=true;;
4032esac
4033case "$fn" in
4034*n*) none_ok=true;;
4035esac
4036case "$fn" in
4037*e*) exp_file=true;;
4038esac
a0d0e21e
LW
4039case "$fn" in
4040*p*) nopath_ok=true;;
4041esac
2304df62
AD
4042
4043case "$fn" in
4044*f*) type='File';;
4045*d*) type='Directory';;
a0d0e21e 4046*l*) type='Locate';;
2304df62
AD
4047esac
4048
4049what="$type"
4050case "$what" in
4051Locate) what='File';;
4052esac
4053
4054case "$exp_file" in
4055'')
4056 case "$d_portable" in
4057 "$define") ;;
4058 *) exp_file=true;;
4059 esac
4060 ;;
4061esac
4062
4063cd ..
4064while test "$type"; do
4065 redo=''
4066 rp="$orig_rp"
4067 dflt="$orig_dflt"
4068 case "$tilde" in
4069 true) rp="$rp (~name ok)";;
4070 esac
4071 . UU/myread
ecfc5424
AD
4072 if test -f UU/getfile.ok && \
4073 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4074 then
4075 value="$ans"
4076 ansexp="$ans"
4077 break
4078 fi
2304df62
AD
4079 case "$ans" in
4080 none)
4081 value=''
4082 ansexp=''
4083 case "$none_ok" in
4084 true) type='';;
4085 esac
4086 ;;
4087 *)
4088 case "$tilde" in
4089 '') value="$ans"
4090 ansexp="$ans";;
4091 *)
4092 value=`UU/filexp $ans`
4093 case $? in
4094 0)
4095 if test "$ans" != "$value"; then
ecfc5424 4096 echo "(That expands to $value on this system.)"
2304df62
AD
4097 fi
4098 ;;
4099 *) value="$ans";;
4100 esac
4101 ansexp="$value"
4102 case "$exp_file" in
4103 '') value="$ans";;
4104 esac
4105 ;;
4106 esac
4107 case "$fullpath" in
4108 true)
4109 case "$ansexp" in
4110 /*) value="$ansexp" ;;
23da6c43 4111 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
4112 *)
4113 redo=true
4114 case "$already" in
4115 true)
4116 echo "I shall only accept a full path name, as in /bin/ls." >&4
4117 echo "Use a ! shell escape if you wish to check pathnames." >&4
4118 ;;
4119 *)
4120 echo "Please give a full path name, starting with slash." >&4
4121 case "$tilde" in
4122 true)
4123 echo "Note that using ~name is ok provided it expands well." >&4
4124 already=true
4125 ;;
4126 esac
4127 esac
4128 ;;
4129 esac
4130 ;;
4131 esac
4132 case "$redo" in
4133 '')
4134 case "$type" in
4135 File)
b233458b
JH
4136 for fp in $gfpth; do
4137 if test "X$fp" = X.; then
4138 pf="$ansexp"
4139 else
4140 pf="$fp/$ansexp"
4141 fi
4142 if test -f "$pf"; then
4143 type=''
4144 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4145 then
4146 echo "($value is not a plain file, but that's ok.)"
4147 type=''
4148 fi
4149 if test X"$type" = X; then
4150 value="$pf"
4151 break
4152 fi
4153 done
2304df62
AD
4154 ;;
4155 Directory)
b233458b
JH
4156 for fp in $gfpth; do
4157 if test "X$fp" = X.; then
f78bfc9c
JH
4158 dir="$ans"
4159 direxp="$ansexp"
b233458b 4160 else
dd858076 4161 dir="$fp/$ansexp"
f78bfc9c 4162 direxp="$fp/$ansexp"
b233458b 4163 fi
f78bfc9c 4164 if test -d "$direxp"; then
b233458b 4165 type=''
f78bfc9c 4166 value="$dir"
b233458b
JH
4167 break
4168 fi
4169 done
2304df62
AD
4170 ;;
4171 Locate)
40000a8c 4172 if test -d "$ansexp"; then
a0d0e21e
LW
4173 echo "(Looking for $loc_file in directory $value.)"
4174 value="$value/$loc_file"
40000a8c 4175 ansexp="$ansexp/$loc_file"
2304df62 4176 fi
40000a8c 4177 if test -f "$ansexp"; then
2304df62
AD
4178 type=''
4179 fi
a0d0e21e
LW
4180 case "$nopath_ok" in
4181 true) case "$value" in
4182 */*) ;;
4183 *) echo "Assuming $value will be in people's path."
4184 type=''
4185 ;;
4186 esac
4187 ;;
4188 esac
2304df62
AD
4189 ;;
4190 esac
4191
4192 case "$skip" in
4193 true) type='';
4194 esac
4195
4196 case "$type" in
4197 '') ;;
4198 *)
4199 if test "$fastread" = yes; then
4200 dflt=y
4201 else
4202 dflt=n
4203 fi
4204 rp="$what $value doesn't exist. Use that name anyway?"
4205 . UU/myread
4206 dflt=''
4207 case "$ans" in
4208 y*) type='';;
4209 *) echo " ";;
4210 esac
4211 ;;
4212 esac
4213 ;;
4214 esac
4215 ;;
4216 esac
4217done
4218cd UU
4219ans="$value"
4220rp="$orig_rp"
4221dflt="$orig_dflt"
ecfc5424 4222rm -f getfile.ok
b233458b 4223test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
4224EOSC
4225
bd9b35c9
JH
4226: What should the include directory be ?
4227echo " "
4228$echo $n "Hmm... $c"
4229dflt='/usr/include'
4230incpath=''
4231mips_type=''
4232if $test -f /bin/mips && /bin/mips; then
4233 echo "Looks like a MIPS system..."
4234 $cat >usr.c <<'EOCP'
4235#ifdef SYSTYPE_BSD43
4236/bsd43
4237#endif
4238EOCP
8a27cf78 4239 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
4240 dflt='/bsd43/usr/include'
4241 incpath='/bsd43'
4242 mips_type='BSD 4.3'
4243 else
4244 mips_type='System V'
4245 fi
4246 $rm -f usr.c usr.out
4247 echo "and you're compiling with the $mips_type compiler and libraries."
4248 xxx_prompt=y
4249 echo "exit 0" >mips
4250else
4251 echo "Doesn't look like a MIPS system."
4252 xxx_prompt=n
4253 echo "exit 1" >mips
4254fi
4255chmod +x mips
4256$eunicefix mips
4257case "$usrinc" in
4258'') ;;
4259*) dflt="$usrinc";;
4260esac
4261case "$xxx_prompt" in
4262y) fn=d/
4263 echo " "
4264 rp='Where are the include files you want to use?'
4265 . ./getfile
4266 usrinc="$ans"
8e07c86e 4267 ;;
bd9b35c9 4268*) usrinc="$dflt"
8e07c86e
AD
4269 ;;
4270esac
2304df62 4271
96056487
JH
4272: see how we invoke the C preprocessor
4273echo " "
4274echo "Now, how can we feed standard input to your C preprocessor..." >&4
4275cat <<'EOT' >testcpp.c
4276#define ABC abc
4277#define XYZ xyz
4278ABC.XYZ
4279EOT
4280cd ..
4281if test ! -f cppstdin; then
4282 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4283 # AIX cc -E doesn't show the absolute headerfile
4284 # locations but we'll cheat by using the -M flag.
4285 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
4286 else
4287 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4288 fi
4289else
4290 echo "Keeping your $hint cppstdin wrapper."
4291fi
4292chmod 755 cppstdin
4293wrapper=`pwd`/cppstdin
4294ok='false'
4295cd UU
4296
4297if $test "X$cppstdin" != "X" && \
4298 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4299 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4300then
4301 echo "You used to use $cppstdin $cppminus so we'll use that again."
4302 case "$cpprun" in
4303 '') echo "But let's see if we can live without a wrapper..." ;;
4304 *)
4305 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4306 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4307 then
4308 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4309 ok='true'
4310 else
4311 echo "(However, $cpprun $cpplast does not work, let's see...)"
4312 fi
4313 ;;
4314 esac
4315else
4316 case "$cppstdin" in
4317 '') ;;
4318 *)
4319 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4320 ;;
4321 esac
4322fi
4323
4324if $ok; then
4325 : nothing
4326elif echo 'Maybe "'"$cc"' -E" will work...'; \
4327 $cc -E <testcpp.c >testcpp.out 2>&1; \
4328 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4329 echo "Yup, it does."
4330 x_cpp="$cc -E"
4331 x_minus='';
4332elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4333 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4334 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4335 echo "Yup, it does."
4336 x_cpp="$cc -E"
4337 x_minus='-';
4338elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4339 $cc -P <testcpp.c >testcpp.out 2>&1; \
4340 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4341 echo "Yipee, that works!"
4342 x_cpp="$cc -P"
4343 x_minus='';
4344elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4345 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4346 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4347 echo "At long last!"
4348 x_cpp="$cc -P"
4349 x_minus='-';
4350elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4351 $cpp <testcpp.c >testcpp.out 2>&1; \
4352 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4353 echo "It works!"
4354 x_cpp="$cpp"
4355 x_minus='';
4356elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4357 $cpp - <testcpp.c >testcpp.out 2>&1; \
4358 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4359 echo "Hooray, it works! I was beginning to wonder."
4360 x_cpp="$cpp"
4361 x_minus='-';
4362elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4363 $wrapper <testcpp.c >testcpp.out 2>&1; \
4364 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4365 x_cpp="$wrapper"
4366 x_minus=''
4367 echo "Eureka!"
4368else
4369 dflt=''
4370 rp="No dice. I can't find a C preprocessor. Name one:"
4371 . ./myread
4372 x_cpp="$ans"
4373 x_minus=''
4374 $x_cpp <testcpp.c >testcpp.out 2>&1
4375 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4376 echo "OK, that will do." >&4
4377 else
4378echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4379 exit 1
4380 fi
4381fi
4382
4383case "$ok" in
4384false)
4385 cppstdin="$x_cpp"
4386 cppminus="$x_minus"
4387 cpprun="$x_cpp"
4388 cpplast="$x_minus"
4389 set X $x_cpp
4390 shift
4391 case "$1" in
4392 "$cpp")
4393 echo "Perhaps can we force $cc -E using a wrapper..."
4394 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4395 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4396 then
4397 echo "Yup, we can."
4398 cppstdin="$wrapper"
4399 cppminus='';
4400 else
4401 echo "Nope, we'll have to live without it..."
4402 fi
4403 ;;
4404 esac
4405 case "$cpprun" in
4406 "$wrapper")
4407 cpprun=''
4408 cpplast=''
4409 ;;
4410 esac
4411 ;;
4412esac
4413
4414case "$cppstdin" in
4415"$wrapper"|'cppstdin') ;;
4416*) $rm -f $wrapper;;
4417esac
4418$rm -f testcpp.c testcpp.out
4419
bd9b35c9
JH
4420: Set private lib path
4421case "$plibpth" in
4422'') if ./mips; then
4423 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4424 fi;;
4425esac
4426case "$libpth" in
4427' ') dlist='';;
4428'') dlist="$loclibpth $plibpth $glibpth";;
4429*) dlist="$libpth";;
4430esac
4431
4432: Now check and see which directories actually exist, avoiding duplicates
4433libpth=''
4434for xxx in $dlist
4435do
4436 if $test -d $xxx; then
4437 case " $libpth " in
4438 *" $xxx "*) ;;
4439 *) libpth="$libpth $xxx";;
4440 esac
4441 fi
4442done
4443$cat <<'EOM'
4444
4445Some systems have incompatible or broken versions of libraries. Among
4446the directories listed in the question below, please remove any you
4447know not to be holding relevant libraries, and add any that are needed.
4448Say "none" for none.
8e07c86e
AD
4449
4450EOM
bd9b35c9
JH
4451case "$libpth" in
4452'') dflt='none';;
8e07c86e 4453*)
bd9b35c9
JH
4454 set X $libpth
4455 shift
4456 dflt=${1+"$@"}
8e07c86e 4457 ;;
a0d0e21e 4458esac
bd9b35c9
JH
4459rp="Directories to use for library searches?"
4460. ./myread
4461case "$ans" in
4462none) libpth=' ';;
4463*) libpth="$ans";;
4464esac
a0d0e21e 4465
bd9b35c9
JH
4466: compute shared library extension
4467case "$so" in
4468'')
4469 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4470 dflt='sl'
dd4e71fd 4471 else
bd9b35c9 4472 dflt='so'
dd4e71fd
JH
4473 fi
4474 ;;
bd9b35c9 4475*) dflt="$so";;
dd4e71fd 4476esac
dd4e71fd
JH
4477$cat <<EOM
4478
bd9b35c9 4479On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4480you want to suppress searching of shared libraries for the remainder
bd9b35c9 4481of this configuration.
dd4e71fd
JH
4482
4483EOM
bd9b35c9
JH
4484rp='What is the file extension used for shared libraries?'
4485. ./myread
4486so="$ans"
dd4e71fd 4487
bd9b35c9
JH
4488: Define several unixisms.
4489: Hints files or command line option can be used to override them.
4490: The convoluted testing is in case hints files set either the old
4491: or the new name.
4492case "$_exe" in
4493'') case "$exe_ext" in
1fef16b3 4494 '') ;;
bd9b35c9 4495 *) _exe="$exe_ext" ;;
dd4e71fd 4496 esac
bd9b35c9 4497 ;;
bfb7748a 4498esac
bd9b35c9
JH
4499case "$_a" in
4500'') case "$lib_ext" in
4501 '') _a='.a';;
4502 *) _a="$lib_ext" ;;
dd4e71fd
JH
4503 esac
4504 ;;
dd4e71fd 4505esac
bd9b35c9
JH
4506case "$_o" in
4507'') case "$obj_ext" in
4508 '') _o='.o';;
4509 *) _o="$obj_ext";;
4510 esac
4511 ;;
4512esac
4513case "$p_" in
4514'') case "$path_sep" in
4515 '') p_=':';;
4516 *) p_="$path_sep";;
4517 esac
4518 ;;
4519esac
4520exe_ext=$_exe
4521lib_ext=$_a
4522obj_ext=$_o
4523path_sep=$p_
dd4e71fd 4524
b4eb6b3d
JH
4525: Which makefile gets called first. This is used by make depend.
4526case "$firstmakefile" in
4527'') firstmakefile='makefile';;
4633a7c4 4528esac
4633a7c4 4529
1f603089
JH
4530case "$ccflags" in
4531*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4532esac
4533
4534case "$uselongdouble" in
4535$define|true|[yY]*) dflt='y';;
4536*) dflt='n';;
4537esac
4538cat <<EOM
4539
4540Perl can be built to take advantage of long doubles which
4541(if available) may give more accuracy and range for floating point numbers.
4542
4543If this doesn't make any sense to you, just accept the default '$dflt'.
4544EOM
4545rp='Try to use long doubles if available?'
4546. ./myread
4547case "$ans" in
4548y|Y) val="$define" ;;
4549*) val="$undef" ;;
4550esac
4551set uselongdouble
4552eval $setvar
4553
4554case "$uselongdouble" in
4555true|[yY]*) uselongdouble="$define" ;;
4556esac
4557
1f603089
JH
4558: Look for a hint-file generated 'call-back-unit'. If the
4559: user has specified that long doubles should be used,
4560: we may need to set or change some other defaults.
9da7673b
MB
4561if $test -f uselongdouble.cbu; then
4562 echo "Your platform has some specific hints regarding long doubles, using them..."
4563 . ./uselongdouble.cbu
4564else
4565 case "$uselongdouble" in
4566 $define)
1f603089 4567 $cat <<EOM
9da7673b 4568(Your platform does not have any specific hints for long doubles.)
1f603089 4569EOM
1f603089 4570 ;;
9da7673b
MB
4571 esac
4572fi
1f603089 4573
bd9b35c9
JH
4574: Looking for optional libraries
4575echo " "
4576echo "Checking for optional libraries..." >&4
4577case "$libs" in
4578' '|'') dflt='';;
4579*) dflt="$libs";;
4580esac
4581case "$libswanted" in
4582'') libswanted='c_s';;
4583esac
4584case "$usesocks" in
923fc586 4585"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4586esac
68435ea7
JH
4587libsfound=''
4588libsfiles=''
4589libsdirs=''
13b3f787
JH
4590libspath=''
4591for thisdir in $libpth $xlibpth; do
4592 test -d $thisdir && libspath="$libspath $thisdir"
4593done
bd9b35c9 4594for thislib in $libswanted; do
13b3f787 4595 for thisdir in $libspath; do
f7dd4e7f
JH
4596 xxx=''
4597 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
eade9b71 4598 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
f7dd4e7f
JH
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.$so
4604 $test -f "$xxx" && eval $libscheck
4605 $test -f "$xxx" && libstyle=shared
4606 fi
4607 if test ! -f "$xxx"; then
4608 xxx=$thisdir/lib$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/$thislib$_a
4614 $test -f "$xxx" && eval $libscheck
4615 $test -f "$xxx" && libstyle=static
4616 fi
4617 if test ! -f "$xxx"; then
4618 xxx=$thisdir/lib${thislib}_s$_a
4619 $test -f "$xxx" && eval $libscheck
4620 $test -f "$xxx" && libstyle=static
09ea5ba9 4621 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4622 fi
4623 if test ! -f "$xxx"; then
4624 xxx=$thisdir/Slib$thislib$_a
4625 $test -f "$xxx" && eval $libscheck
4626 $test -f "$xxx" && libstyle=static
4627 fi
4628 if $test -f "$xxx"; then
43999f95 4629 case "$libstyle" in
f7dd4e7f
JH
4630 shared) echo "Found -l$thislib (shared)." ;;
4631 static) echo "Found -l$thislib." ;;
4632 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4633 esac
bd9b35c9
JH
4634 case " $dflt " in
4635 *"-l$thislib "*);;
f7dd4e7f 4636 *) dflt="$dflt -l$thislib"
43999f95
JH
4637 libsfound="$libsfound $xxx"
4638 yyy=`basename $xxx`
4639 libsfiles="$libsfiles $yyy"
1e127011 4640 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4641 case " $libsdirs " in
4642 *" $yyy "*) ;;
4643 *) libsdirs="$libsdirs $yyy" ;;
4644 esac
4645 ;;
bd9b35c9 4646 esac
f7dd4e7f
JH
4647 break
4648 fi
4649 done
4650 if $test ! -f "$xxx"; then
4651 echo "No -l$thislib."
bd9b35c9
JH
4652 fi
4653done
4654set X $dflt
4655shift
4656dflt="$*"
4657case "$libs" in
4658'') dflt="$dflt";;
4659*) dflt="$libs";;
4660esac
4661case "$dflt" in
4662' '|'') dflt='none';;
4663esac
4633a7c4 4664
bd9b35c9 4665$cat <<EOM
4633a7c4 4666
bd9b35c9
JH
4667In order to compile $package on your machine, a number of libraries
4668are usually needed. Include any other special libraries here as well.
4669Say "none" for none. The default list is almost always right.
8e07c86e 4670EOM
8e07c86e 4671
bd9b35c9
JH
4672echo " "
4673rp="What libraries to use?"
4674. ./myread
4675case "$ans" in
4676none) libs=' ';;
4677*) libs="$ans";;
4678esac
d71b2b6b 4679
bd9b35c9
JH
4680: determine optimization, if desired, or use for debug flag also
4681case "$optimize" in
4682' '|$undef) dflt='none';;
4683'') dflt='-O';;
4684*) dflt="$optimize";;
4685esac
4686$cat <<EOH
d71b2b6b 4687
bd9b35c9
JH
4688By default, $package compiles with the -O flag to use the optimizer.
4689Alternately, you might want to use the symbolic debugger, which uses
4690the -g flag (on traditional Unix systems). Either flag can be
4691specified here. To use neither flag, specify the word "none".
d71b2b6b 4692
bd9b35c9
JH
4693EOH
4694rp="What optimizer/debugger flag should be used?"
4695. ./myread
4696optimize="$ans"
4697case "$optimize" in
4698'none') optimize=" ";;
4699esac
4700
4701dflt=''
4702: We will not override a previous value, but we might want to
4703: augment a hint file
4704case "$hint" in
4705default|recommended)
4706 case "$gccversion" in
4707 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4708 esac
bd9b35c9
JH
4709 case "$optimize" in
4710 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4711 esac
bd9b35c9
JH
4712 case "$gccversion" in
4713 2*) if test -d /etc/conf/kconfig.d &&
4714 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4715 then
00e89ad4 4716 # Interactive Systems (ISC) POSIX mode.
bd9b35c9
JH
4717 dflt="$dflt -posix"
4718 fi
f0d04425 4719 ;;
bd9b35c9
JH
4720 esac
4721 case "$gccversion" in
4722 1*) ;;
4723 2.[0-8]*) ;;
4724 ?*) echo " "
4725 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4726 echo 'int main(void) { return 0; }' > gcctest.c
4727 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4728 echo "Yes, it does." 2>&1
4729 case "$ccflags" in
00e89ad4 4730 *strict-aliasing*)
bd9b35c9
JH
4731 echo "Leaving current flags $ccflags alone." 2>&1
4732 ;;
4733 *) dflt="$dflt -fno-strict-aliasing" ;;
4734 esac
4735 else
4736 echo "Nope, it doesn't, but that's ok." 2>&1
4737 fi
f0d04425 4738 ;;
e5e20432 4739 esac
00e89ad4
AD
4740 # For gcc, adding -pipe speeds up compilations for some, but apparently
4741 # some assemblers can't read from stdin. (It also slows down compilations
4742 # in other cases, but those are apparently rarer these days.) AD 5/2004.
4743 case "$gccversion" in
4744 ?*) echo " "
4745 echo "Checking if your compiler accepts -pipe" 2>&1
4746 echo 'int main(void) { return 0; }' > gcctest.c
4747 if $cc -O2 -pipe -o gcctest gcctest.c; then
4748 echo "Yes, it does." 2>&1
4749 case "$ccflags" in
4750 *-pipe*)
4751 echo "Leaving current flags $ccflags alone." 2>&1
4752 ;;
4753 *) dflt="$dflt -pipe" ;;
4754 esac
4755 else
4756 echo "Nope, it doesn't, but that's ok." 2>&1
4757 fi
4758 ;;
4759 esac
e5e20432
JH
4760 ;;
4761esac
4762
bd9b35c9
JH
4763case "$mips_type" in
4764*BSD*|'') inclwanted="$locincpth $usrinc";;
4765*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4766esac
4767for thisincl in $inclwanted; do
4768 if $test -d $thisincl; then
4769 if $test x$thisincl != x$usrinc; then
4770 case "$dflt" in
00e89ad4
AD
4771 *" -I$thisincl "*);;
4772 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4773 esac
4774 fi
4775 fi
4776done
40a7a20a 4777
bd9b35c9
JH
4778inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4779 xxx=true;
4780elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4781 xxx=true;
4782else
4783 xxx=false;
4784fi;
4785if $xxx; then
4786 case "$dflt" in
4787 *$2*);;
4788 *) dflt="$dflt -D$2";;
4789 esac;
4790fi'
40a7a20a 4791
bd9b35c9 4792set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4793
bd9b35c9
JH
4794case "$usesocks" in
4795$define)
4796 ccflags="$ccflags -DSOCKS"
4797 ;;
4798esac
40a7a20a 4799
bd9b35c9
JH
4800case "$hint" in
4801default|recommended) dflt="$ccflags $dflt" ;;
4802*) dflt="$ccflags";;
4803esac
40a7a20a 4804
bd9b35c9
JH
4805case "$dflt" in
4806''|' ') dflt=none;;
4807esac
422af00a 4808
bd9b35c9 4809$cat <<EOH
40a7a20a 4810
bd9b35c9
JH
4811Your C compiler may want other flags. For this question you should include
4812-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4813but you should NOT include libraries or ld flags like -lwhatever. If you
4814want $package to honor its debug switch, you should include -DDEBUGGING here.
4815Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4816
bd9b35c9 4817To use no flags, specify the word "none".
40a7a20a 4818
bd9b35c9
JH
4819EOH
4820set X $dflt
4821shift
4822dflt=${1+"$@"}
4823rp="Any additional cc flags?"
4824. ./myread
4825case "$ans" in
4826none) ccflags='';;
4827*) ccflags="$ans";;
4828esac
8e07c86e 4829
bd9b35c9 4830: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4831case "$cppflags" in
4832'') cppflags="$ccflags" ;;
4833*) cppflags="$cppflags $ccflags" ;;
4834esac
bd9b35c9
JH
4835case "$gccversion" in
48361*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4837esac
bd9b35c9
JH
4838case "$mips_type" in
4839'');;
4840*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4841esac
4842case "$cppflags" in
4843'');;
4844*)
4845 echo " "
4846 echo "Let me guess what the preprocessor flags are..." >&4
4847 set X $cppflags
4848 shift
4849 cppflags=''
4850 $cat >cpp.c <<'EOM'
4851#define BLURFL foo
8e07c86e 4852
bd9b35c9
JH
4853BLURFL xx LFRULB
4854EOM
4855 previous=''
4856 for flag in $*
4857 do
4858 case "$flag" in
4859 -*) ftry="$flag";;
4860 *) ftry="$previous $flag";;
4861 esac
4862 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4863 >cpp1.out 2>/dev/null && \
4864 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4865 >cpp2.out 2>/dev/null && \
4866 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4867 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4868 then
4869 cppflags="$cppflags $ftry"
4870 previous=''
4871 else
4872 previous="$flag"
4873 fi
4874 done
4875 set X $cppflags
4876 shift
4877 cppflags=${1+"$@"}
4878 case "$cppflags" in
4879 *-*) echo "They appear to be: $cppflags";;
4880 esac
4881 $rm -f cpp.c cpp?.out
2afac517 4882 ;;
4883esac
8e07c86e 4884
bd9b35c9
JH
4885: flags used in final linking phase
4886case "$ldflags" in
4887'') if ./venix; then
4888 dflt='-i -z'
10a23457 4889 else
bd9b35c9 4890 dflt=''
10a23457 4891 fi
bd9b35c9
JH
4892 case "$ccflags" in
4893 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4894 esac
bd9b35c9
JH
4895 ;;
4896*) dflt="$ldflags";;
4897esac
4898
4899: Try to guess additional flags to pick up local libraries.
4900for thislibdir in $libpth; do
4901 case " $loclibpth " in
4902 *" $thislibdir "*)
00e89ad4 4903 case "$dflt " in
bd9b35c9
JH
4904 *"-L$thislibdir "*) ;;
4905 *) dflt="$dflt -L$thislibdir" ;;
4906 esac
c4f23d77
AD
4907 ;;
4908 esac
bd9b35c9 4909done
c4f23d77 4910
bd9b35c9
JH
4911case "$dflt" in
4912'') dflt='none' ;;
4913esac
c4f23d77 4914
bd9b35c9
JH
4915$cat <<EOH
4916
4917Your C linker may need flags. For this question you should
4918include -L/whatever and any other flags used by the C linker, but you
4919should NOT include libraries like -lwhatever.
4920
4921Make sure you include the appropriate -L/path flags if your C linker
4922does not normally search all of the directories you specified above,
4923namely
4924 $libpth
4925To use no flags, specify the word "none".
4926
4927EOH
4928
4929rp="Any additional ld flags (NOT including libraries)?"
4930. ./myread
4931case "$ans" in
4932none) ldflags='';;
4933*) ldflags="$ans";;
4934esac
4935rmlist="$rmlist pdp11"
4936
4937: coherency check
4938echo " "
4939echo "Checking your choice of C compiler and flags for coherency..." >&4
4940$cat > try.c <<'EOF'
4941#include <stdio.h>
55954f19 4942int main() { printf("Ok\n"); return(0); }
bd9b35c9 4943EOF
7a282f6d 4944set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4945shift
4946$cat >try.msg <<'EOM'
4947I've tried to compile and run the following simple program:
4948
4949EOM
4950$cat try.c >> try.msg
4951
4952$cat >> try.msg <<EOM
4953
4954I used the command:
4955
4956 $*
5440bc8e 4957 $run ./try
bd9b35c9
JH
4958
4959and I got the following output:
4960
4961EOM
4962dflt=y
73614538 4963if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4964 if $sh -c "$run ./try" >>try.msg 2>&1; then
4965 xxx=`$run ./try`
bd9b35c9
JH
4966 case "$xxx" in
4967 "Ok") dflt=n ;;
4968 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4969 case " $libs " in
4970 *" -lsfio "*)
4971 cat >> try.msg <<'EOQS'
4972If $libs contains -lsfio, and sfio is mis-configured, then it
4973sometimes (apparently) runs and exits with a 0 status, but with no
4974output! It may have to do with sfio's use of _exit vs. exit.
4975
4976EOQS
4977 rp="You have a big problem. Shall I abort Configure"
4978 dflt=y
4979 ;;
4980 esac
4981 ;;
4982 esac
4983 else
4984 echo "The program compiled OK, but exited with status $?." >>try.msg
4985 rp="You have a problem. Shall I abort Configure"
4986 dflt=y
4987 fi
4988else
4989 echo "I can't compile the test program." >>try.msg
4990 rp="You have a BIG problem. Shall I abort Configure"
4991 dflt=y
4992fi
4993case "$dflt" in
4994y)
4995 $cat try.msg >&4
4996 case "$knowitall" in
4997 '')
4998 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4999 ;;
bd9b35c9 5000 *) dflt=n;;
c4f23d77 5001 esac
bd9b35c9
JH
5002 echo " "
5003 . ./myread
5004 case "$ans" in
5005 n*|N*) ;;
5006 *) echo "Ok. Stopping Configure." >&4
5007 exit 1
c4f23d77
AD
5008 ;;
5009 esac
5010 ;;
bd9b35c9 5011n) echo "OK, that should do.";;
c4f23d77 5012esac
bd9b35c9 5013$rm -f try try.* core
c4f23d77 5014
bd9b35c9
JH
5015: define a shorthand compile call
5016compile='
5017mc_file=$1;
5018shift;
08413ebc 5019$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
5020: define a shorthand compile call for compilations that should be ok.
5021compile_ok='
5022mc_file=$1;
5023shift;
7a282f6d 5024$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 5025
8dfa8df9
JH
5026: determine filename position in cpp output
5027echo " "
5028echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
5029case "$osname" in
5030vos) testaccess=-e ;;
5031*) testaccess=-r ;;
5032esac
8dfa8df9
JH
5033echo '#include <stdio.h>' > foo.c
5034$cat >fieldn <<EOF
5035$startsh
5036$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5037$grep '^[ ]*#.*stdio\.h' | \
5038while read cline; do
5039 pos=1
5040 set \$cline
5041 while $test \$# -gt 0; do
a5a94ea5 5042 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
5043 echo "\$pos"
5044 exit 0
5045 fi
5046 shift
5047 pos=\`expr \$pos + 1\`
5048 done
5049done
5050EOF
5051chmod +x fieldn
5052fieldn=`./fieldn`
5053$rm -f foo.c fieldn
5054case $fieldn in
5055'') pos='???';;
50561) pos=first;;
50572) pos=second;;
50583) pos=third;;
5059*) pos="${fieldn}th";;
5060esac
5061echo "Your cpp writes the filename in the $pos field of the line."
5062
3c728e00
JH
5063case "$osname" in
5064vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5c728af0 5065os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
3c728e00
JH
5066*) cppfilter='' ;;
5067esac
8dfa8df9
JH
5068: locate header file
5069$cat >findhdr <<EOF
5070$startsh
5071wanted=\$1
5072name=''
5073for usrincdir in $usrinc
5074do
5075 if test -f \$usrincdir/\$wanted; then
5076 echo "\$usrincdir/\$wanted"
5077 exit 0
5078 fi
5079done
5080awkprg='{ print \$$fieldn }'
5081echo "#include <\$wanted>" > foo\$\$.c
5082$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 5083$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
5084while read cline; do
5085 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5086 case "\$name" in
5087 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5088 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5089 *) exit 2;;
5090 esac;
5091done;
5092#
5093# status = 0: grep returned 0 lines, case statement not executed
5094# status = 1: headerfile found
5095# status = 2: while loop executed, no headerfile found
5096#
5097status=\$?
5098$rm -f foo\$\$.c;
5099if test \$status -eq 1; then
5100 exit 0;
5101fi
5102exit 1
5103EOF
5104chmod +x findhdr
5105
5106: define an alternate in-header-list? function
5107inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5108cont=true; xxf="echo \"<\$1> found.\" >&4";
5109case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5110*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5111esac;
5112case $# in 4) instead=instead;; *) instead="at last";; esac;
5113while $test "$cont"; do
5114 xxx=`./findhdr $1`
5115 var=$2; eval "was=\$$2";
5116 if $test "$xxx" && $test -r "$xxx";
5117 then eval $xxf;
5118 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5119 cont="";
5120 else eval $xxnf;
5121 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5122 set $yyy; shift; shift; yyy=$@;
5123 case $# in 0) cont="";;
5124 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5125 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5126 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5127 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5128 esac;
5129done;
5130while $test "$yyy";
5131do set $yyy; var=$2; eval "was=\$$2";
5132 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5133 set $yyy; shift; shift; yyy=$@;
5134done'
5135
d1daaddf
JH
5136: see if stdlib is available
5137set stdlib.h i_stdlib
5138eval $inhdr
5139
5140: check for lengths of integral types
5141echo " "
5142case "$intsize" in
5143'')
5144 echo "Checking to see how big your integers are..." >&4
c63dfae1 5145 $cat >try.c <<EOCP
d1daaddf
JH
5146#include <stdio.h>
5147#$i_stdlib I_STDLIB
5148#ifdef I_STDLIB
5149#include <stdlib.h>
5150#endif
5151int main()
5152{
5153 printf("intsize=%d;\n", (int)sizeof(int));
5154 printf("longsize=%d;\n", (int)sizeof(long));
5155 printf("shortsize=%d;\n", (int)sizeof(short));
5156 exit(0);
5157}
5158EOCP
5159 set try
5160 if eval $compile_ok && $run ./try > /dev/null; then
5161 eval `$run ./try`
5162 echo "Your integers are $intsize bytes long."
5163 echo "Your long integers are $longsize bytes long."
5164 echo "Your short integers are $shortsize bytes long."
5165 else
5166 $cat >&4 <<EOM
5167!
5168Help! I can't compile and run the intsize test program: please enlighten me!
5169(This is probably a misconfiguration in your system or libraries, and
5170you really ought to fix it. Still, I'll try anyway.)
5171!
5172EOM
5173 dflt=4
5174 rp="What is the size of an integer (in bytes)?"
5175 . ./myread
5176 intsize="$ans"
5177 dflt=$intsize
5178 rp="What is the size of a long integer (in bytes)?"
5179 . ./myread
5180 longsize="$ans"
5181 dflt=2
5182 rp="What is the size of a short integer (in bytes)?"
5183 . ./myread
5184 shortsize="$ans"
5185 fi
5186 ;;
5187esac
5188$rm -f try try.*
5189
5190: check for long long
5191echo " "
5192echo "Checking to see if you have long long..." >&4
5193echo 'int main() { long long x = 7; return 0; }' > try.c
5194set try
5195if eval $compile; then
5196 val="$define"
5197 echo "You have long long."
5198else
5199 val="$undef"
5200 echo "You do not have long long."
5201fi
5202$rm try.*
5203set d_longlong
5204eval $setvar
5205
5206: check for length of long long
5207case "${d_longlong}${longlongsize}" in
5208$define)
5209 echo " "
5210 echo "Checking to see how big your long longs are..." >&4
5211 $cat >try.c <<'EOCP'
5212#include <stdio.h>
5213int main()
5214{
5215 printf("%d\n", (int)sizeof(long long));
5216 return(0);
5217}
5218EOCP
5219 set try
5220 if eval $compile_ok; then
5221 longlongsize=`$run ./try`
5222 echo "Your long longs are $longlongsize bytes long."
5223 else
5224 dflt='8'
5225 echo " "
5226 echo "(I can't seem to compile the test program. Guessing...)"
5227 rp="What is the size of a long long (in bytes)?"
5228 . ./myread
5229 longlongsize="$ans"
5230 fi
5231 if $test "X$longsize" = "X$longlongsize"; then
5232 echo "(That isn't any different from an ordinary long.)"
5233 fi
5234 ;;
5235esac
5236$rm -f try.* try
5237
8dfa8df9
JH
5238: see if inttypes.h is available
5239: we want a real compile instead of Inhdr because some systems
5240: have an inttypes.h which includes non-existent headers
5241echo " "
5242$cat >try.c <<EOCP
5243#include <inttypes.h>
5244int main() {
5245 static int32_t foo32 = 0x12345678;
5246}
5247EOCP
5248set try
5249if eval $compile; then
5250 echo "<inttypes.h> found." >&4
5251 val="$define"
5252else
5253 echo "<inttypes.h> NOT found." >&4
5254 val="$undef"
5255fi
5256$rm -f try.c try
5257set i_inttypes
5258eval $setvar
5259
5260: check for int64_t
5261echo " "
5262echo "Checking to see if you have int64_t..." >&4
5263$cat >try.c <<EOCP
5264#include <sys/types.h>
5265#$i_inttypes I_INTTYPES
5266#ifdef I_INTTYPES
5267#include <inttypes.h>
5268#endif
5269int main() { int64_t x = 7; }
5270EOCP
5271set try
5272if eval $compile; then
5273 val="$define"
5274 echo "You have int64_t."
5275else
5276 val="$undef"
5277 echo "You do not have int64_t."
5278fi
5279$rm -f try try.*
5280set d_int64_t
5281eval $setvar
5282
5283
5284echo " "
5285echo "Checking which 64-bit integer type we could use..." >&4
5286
5287case "$intsize" in
52888) val=int
5289 set quadtype
5290 eval $setvar
5291 val='"unsigned int"'
5292 set uquadtype
5293 eval $setvar
5294 quadkind=1
5295 ;;
5296*) case "$longsize" in
5297 8) val=long
5298 set quadtype
5299 eval $setvar
5300 val='"unsigned long"'
5301 set uquadtype
5302 eval $setvar
5303 quadkind=2
5304 ;;
5305 *) case "$d_longlong:$longlongsize" in
5306 define:8)
5307 val='"long long"'
5308 set quadtype
5309 eval $setvar
5310 val='"unsigned long long"'
5311 set uquadtype
5312 eval $setvar
5313 quadkind=3
5314 ;;
5315 *) case "$d_int64_t" in
5316 define)
5317 val=int64_t
5318 set quadtype
5319 eval $setvar
5320 val=uint64_t
5321 set uquadtype
5322 eval $setvar
5323 quadkind=4
5324 ;;
5325 esac
5326 ;;
5327 esac
5328 ;;
5329 esac
5330 ;;
5331esac
5332
5333case "$quadtype" in
5334'') echo "Alas, no 64-bit integer types in sight." >&4
5335 d_quad="$undef"
5336 ;;
5337*) echo "We could use '$quadtype' for 64-bit integers." >&4
5338 d_quad="$define"
5339 ;;
5340esac
5341
b4eb6b3d
JH
5342
5343case "$uselonglong" in
5344"$define"|true|[yY]*)
5345 cat <<EOM >&4
5346
5347*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5348EOM
5349 use64bitint="$define"
5350 ;;
5351esac
5352case "$use64bits" in
5353"$define"|true|[yY]*)
5354 cat <<EOM >&4
5355
5356*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5357EOM
5358 use64bitint="$define"
5359 ;;
5360esac
5361case "$use64bitints" in
5362"$define"|true|[yY]*)
5363 cat <<EOM >&4
5364
5365*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5366EOM
5367 use64bitint="$define"
5368 ;;
5369esac
5370case "$use64bitsint" in
5371"$define"|true|[yY]*)
5372 cat <<EOM >&4
5373
5374*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5375EOM
5376 use64bitint="$define"
5377 ;;
5378esac
5379case "$uselonglongs" in
5380"$define"|true|[yY]*)
5381 cat <<EOM >&4
5382
5383*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5384EOM
5385 use64bitint="$define"
5386 ;;
5387esac
5388case "$use64bitsall" in
5389"$define"|true|[yY]*)
5390 cat <<EOM >&4
5391
5392*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5393EOM
5394 use64bitall="$define"
5395 ;;
5396esac
5397
5398case "$ccflags" in
5399*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5400esac
5401case "$use64bitall" in
5402"$define"|true|[yY]*) use64bitint="$define" ;;
5403esac
5404
5405case "$longsize" in
54068) cat <<EOM
5407
5408You have natively 64-bit long integers.
5409EOM
5410 val="$define"
5411 ;;
5412*) case "$use64bitint" in
5413 "$define"|true|[yY]*) dflt='y';;
5414 *) dflt='n';;
5415 esac
8dfa8df9
JH
5416 case "$d_quad" in
5417 "$define") ;;
5418 *) dflt='n' ;;
5419 esac
b4eb6b3d
JH
5420 cat <<EOM
5421
5422Perl can be built to take advantage of 64-bit integer types
5423on some systems. To do so, Configure can be run with -Duse64bitint.
5424Choosing this option will most probably introduce binary incompatibilities.
5425
5426If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5427(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5428EOM
5429 rp='Try to use 64-bit integers, if available?'
5430 . ./myread
5431 case "$ans" in
5432 [yY]*) val="$define" ;;
5433 *) val="$undef" ;;
5434 esac
5435 ;;
5436esac
5437set use64bitint
5438eval $setvar
5439
5440case "$use64bitall" in
5441"$define"|true|[yY]*) dflt='y' ;;
5442*) case "$longsize" in
5443 8) dflt='y' ;;
5444 *) dflt='n' ;;
5445 esac
5446 ;;
5447esac
5448cat <<EOM
5449
5450You may also choose to try maximal 64-bitness. It means using as much
545164-bitness as possible on the platform. This in turn means even more
5452binary incompatibilities. On the other hand, your platform may not
5453have any more 64-bitness available than what you already have chosen.
5454
5455If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5456(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5457EOM
5458rp='Try to use maximal 64-bit support, if available?'
5459. ./myread
5460case "$ans" in
5461[yY]*) val="$define" ;;
5462*) val="$undef" ;;
5463esac
5464set use64bitall
5465eval $setvar
5466case "$use64bitall" in
5467"$define")
5468 case "$use64bitint" in
5469 "$undef")
5470 cat <<EOM
5471
5472Since you have chosen a maximally 64-bit build, I'm also turning on
5473the use of 64-bit integers.
5474EOM
5475 use64bitint="$define" ;;
5476 esac
5477 ;;
5478esac
5479
b4eb6b3d
JH
5480: Look for a hint-file generated 'call-back-unit'. If the
5481: user has specified that a 64-bit perl is to be built,
5482: we may need to set or change some other defaults.
19a100ff 5483if $test -f use64bitint.cbu; then
9da7673b 5484 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
19a100ff
MB
5485 . ./use64bitint.cbu
5486fi
9da7673b
MB
5487case "$use64bitint" in
5488"$define"|true|[yY]*)
b4eb6b3d
JH
5489 case "$longsize" in
5490 4) case "$archname64" in
5491 '') archname64=64int ;;
5492 esac
5493 ;;
5494 esac
5495 ;;
5496esac
5497
b4eb6b3d
JH
5498: Look for a hint-file generated 'call-back-unit'. If the
5499: user has specified that a maximally 64-bit perl is to be built,
5500: we may need to set or change some other defaults.
19a100ff 5501if $test -f use64bitall.cbu; then
9da7673b 5502 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
19a100ff
MB
5503 . ./use64bitall.cbu
5504fi
9da7673b
MB
5505case "$use64bitall" in
5506"$define"|true|[yY]*)
b4eb6b3d
JH
5507 case "$longsize" in
5508 4) case "$archname64" in
5509 ''|64int) archname64=64all ;;
5510 esac
5511 ;;
5512 esac
5513 ;;
5514esac
5515
1911a026
JH
5516case "$d_quad:$use64bitint" in
5517$undef:$define)
5518 cat >&4 <<EOF
5519
5520*** You have chosen to use 64-bit integers,
19a100ff 5521*** but none can be found.
09b58c7b 5522*** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
1911a026
JH
5523*** Cannot continue, aborting.
5524
5525EOF
5526 exit 1
5527 ;;
5528esac
5529
36adc09b
JH
5530: check for length of double
5531echo " "
5532case "$doublesize" in
5533'')
5534 echo "Checking to see how big your double precision numbers are..." >&4
5535 $cat >try.c <<EOCP
5536#include <stdio.h>
1911a026
JH
5537#$i_stdlib I_STDLIB
5538#ifdef I_STDLIB
5539#include <stdlib.h>
5540#endif
36adc09b
JH
5541int main()
5542{
5543 printf("%d\n", (int)sizeof(double));
1911a026 5544 exit(0);
36adc09b
JH
5545}
5546EOCP
5547 set try
5548 if eval $compile_ok; then
5549 doublesize=`$run ./try`
5550 echo "Your double is $doublesize bytes long."
5551 else
5552 dflt='8'
5553 echo "(I can't seem to compile the test program. Guessing...)"
5554 rp="What is the size of a double precision number (in bytes)?"
5555 . ./myread
5556 doublesize="$ans"
5557 fi
5558 ;;
5559esac
5560$rm -f try.c try
5561
5562: check for long doubles
5563echo " "
5564echo "Checking to see if you have long double..." >&4
5565echo 'int main() { long double x = 7.0; }' > try.c
5566set try
5567if eval $compile; then
5568 val="$define"
5569 echo "You have long double."
5570else
5571 val="$undef"
5572 echo "You do not have long double."
5573fi
5574$rm try.*
5575set d_longdbl
5576eval $setvar
5577
5578: check for length of long double
5579case "${d_longdbl}${longdblsize}" in
5580$define)
5581 echo " "
5582 echo "Checking to see how big your long doubles are..." >&4
5583 $cat >try.c <<'EOCP'
5584#include <stdio.h>
5585int main()
5586{
5587 printf("%d\n", sizeof(long double));
5588}
5589EOCP
5590 set try
5591 set try
5592 if eval $compile; then
5593 longdblsize=`$run ./try`
5594 echo "Your long doubles are $longdblsize bytes long."
5595 else
5596 dflt='8'
5597 echo " "
5598 echo "(I can't seem to compile the test program. Guessing...)" >&4
5599 rp="What is the size of a long double (in bytes)?"
5600 . ./myread
5601 longdblsize="$ans"
5602 fi
5603 if $test "X$doublesize" = "X$longdblsize"; then
7ad90562
AD
5604 echo "That isn't any different from an ordinary double."
5605 echo "I'll keep your setting anyway, but you may see some"
5606 echo "harmless compilation warnings."
36adc09b
JH
5607 fi
5608 ;;
5609esac
5610$rm -f try.* try
5611
89ce900e 5612: determine the architecture name
b4eb6b3d 5613echo " "
89ce900e
JH
5614if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5615 tarch=`arch`"-$osname"
5616elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5617 if uname -m > tmparch 2>&1 ; then
5618 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5619 -e 's/$/'"-$osname/" tmparch`
5620 else
5621 tarch="$osname"
5622 fi
5623 $rm -f tmparch
b4eb6b3d 5624else
89ce900e 5625 tarch="$osname"
b4eb6b3d 5626fi
89ce900e
JH
5627case "$myarchname" in
5628''|"$tarch") ;;
5629*)
5630 echo "(Your architecture name used to be $myarchname.)"
5631 archname=''
5632 ;;
5633esac
5634case "$targetarch" in
5635'') ;;
5636*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5637esac
5638myarchname="$tarch"
5639case "$archname" in
5640'') dflt="$tarch";;
5641*) dflt="$archname";;
5642esac
5643rp='What is your architecture name'
5644. ./myread
5645archname="$ans"
5646case "$usethreads" in
5647$define)
5648 echo "Threads selected." >&4
5649 case "$archname" in
5650 *-thread*) echo "...and architecture name already has -thread." >&4
5651 ;;
5652 *) archname="$archname-thread"
5653 echo "...setting architecture name to $archname." >&4
5654 ;;
5655 esac
5656 ;;
5657esac
5658case "$usemultiplicity" in
5659$define)
5660 echo "Multiplicity selected." >&4
5661 case "$archname" in
5662 *-multi*) echo "...and architecture name already has -multi." >&4
5663 ;;
5664 *) archname="$archname-multi"
5665 echo "...setting architecture name to $archname." >&4
5666 ;;
5667 esac
5668 ;;
5669esac
5670case "$use64bitint$use64bitall" in
5671*"$define"*)
5672 case "$archname64" in
5673 '')
5674 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
bd9b35c9 5675 ;;
89ce900e
JH
5676 *)
5677 case "$use64bitint" in
5678 "$define") echo "64 bit integers selected." >&4 ;;
5679 esac
5680 case "$use64bitall" in
5681 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5682 esac
5683 case "$archname" in
5684 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5685 ;;
5686 *) archname="$archname-$archname64"
5687 echo "...setting architecture name to $archname." >&4
5688 ;;
5689 esac
c1a7f87b
JH
5690 ;;
5691 esac
89ce900e
JH
5692esac
5693case "$uselongdouble" in
5694$define)
5695 echo "Long doubles selected." >&4
5696 case "$longdblsize" in
5697 $doublesize)
5698 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5699 ;;
5700 *)
5701 case "$archname" in
5702 *-ld*) echo "...and architecture name already has -ld." >&4
5703 ;;
5704 *) archname="$archname-ld"
5705 echo "...setting architecture name to $archname." >&4
5706 ;;
5707 esac
bd9b35c9
JH
5708 ;;
5709 esac
bd9b35c9 5710 ;;
89ce900e
JH
5711esac
5712case "$useperlio" in
5713$define)
5714 echo "Perlio selected." >&4
5715 ;;
bd9b35c9 5716*)
89ce900e
JH
5717 echo "Perlio not selected, using stdio." >&4
5718 case "$archname" in
5719 *-stdio*) echo "...and architecture name already has -stdio." >&4
5720 ;;
5721 *) archname="$archname-stdio"
5722 echo "...setting architecture name to $archname." >&4
5723 ;;
5724 esac
bd9b35c9
JH
5725 ;;
5726esac
d2e0c6f7
JH
5727if $test -f archname.cbu; then
5728 echo "Your platform has some specific hints for architecture name, using them..."
5729 . ./archname.cbu
5730fi
bd9b35c9 5731
89ce900e
JH
5732: determine root of directory hierarchy where package will be installed.
5733case "$prefix" in
5734'')
5735 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5736 ;;
5737*?/)
5738 dflt=`echo "$prefix" | sed 's/.$//'`
5739 ;;
5740*)
5741 dflt="$prefix"
5742 ;;
5743esac
5744$cat <<EOM
c1a7f87b 5745
89ce900e
JH
5746By default, $package will be installed in $dflt/bin, manual pages
5747under $dflt/man, etc..., i.e. with $dflt as prefix for all
5748installation directories. Typically this is something like /usr/local.
5749If you wish to have binaries under /usr/bin but other parts of the
5750installation under /usr/local, that's ok: you will be prompted
5751separately for each of the installation directories, the prefix being
5752only used to set the defaults.
bd9b35c9
JH
5753
5754EOM
89ce900e
JH
5755fn=d~
5756rp='Installation prefix to use?'
5757. ./getfile
5758oldprefix=''
5759case "$prefix" in
5760'') ;;
5761*)
5762 case "$ans" in
5763 "$prefix") ;;
5764 *) oldprefix="$prefix";;
5765 esac
5766 ;;
bd9b35c9 5767esac
89ce900e
JH
5768prefix="$ans"
5769prefixexp="$ansexp"
bd9b35c9 5770
89ce900e
JH
5771case "$afsroot" in
5772'') afsroot=/afs ;;
5773*) afsroot=$afsroot ;;
8e07c86e 5774esac
29209bc5 5775
89ce900e
JH
5776: is AFS running?
5777echo " "
5778case "$afs" in
5779$define|true) afs=true ;;
5780$undef|false) afs=false ;;
5781*) if test -d $afsroot; then
5782 afs=true
c1a7f87b 5783 else
89ce900e
JH
5784 afs=false
5785 fi
5786 ;;
c1a7f87b 5787esac
89ce900e
JH
5788if $afs; then
5789 echo "AFS may be running... I'll be extra cautious then..." >&4
5790else
5791 echo "AFS does not seem to be running..." >&4
5792fi
b4eb6b3d
JH
5793
5794: determine installation prefix for where package is to be installed.
5795if $afs; then
5796$cat <<EOM
5797
5798Since you are running AFS, I need to distinguish the directory in which
5799files will reside from the directory in which they are installed (and from
5800which they are presumably copied to the former directory by occult means).
5801
5802EOM
5803 case "$installprefix" in
5804 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5805 *) dflt="$installprefix";;
5806 esac
5807else
5808$cat <<EOM
5809
5810In some special cases, particularly when building $package for distribution,
c2bfb7b1
MB
5811it is convenient to distinguish the directory in which files should be
5812installed from the directory ($prefix) in which they will
5813eventually reside. For most users, these two directories are the same.
b4eb6b3d
JH
5814
5815EOM
5816 case "$installprefix" in
5817 '') dflt=$prefix ;;
5818 *) dflt=$installprefix;;
5819 esac
5820fi
5821fn=d~
5822rp='What installation prefix should I use for installing files?'
5823. ./getfile
5824installprefix="$ans"
5825installprefixexp="$ansexp"
5826
5827: set the prefixit variable, to compute a suitable default value
5828prefixit='case "$3" in
5829""|none)
5830 case "$oldprefix" in
5831 "") eval "$1=\"\$$2\"";;
5832 *)
5833 case "$3" in
5834 "") eval "$1=";;
5835 none)
5836 eval "tp=\"\$$2\"";
5837 case "$tp" in
5838 ""|" ") eval "$1=\"\$$2\"";;
5839 *) eval "$1=";;
5840 esac;;
5841 esac;;
5842 esac;;
5843*)
5844 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5845 case "$tp" in
5846 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5847 /*-$oldprefix/*|\~*-$oldprefix/*)
5848 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5849 *) eval "$1=\"\$$2\"";;
5850 esac;;
5851esac'
5852
b4eb6b3d
JH
5853: get the patchlevel
5854echo " "
5855echo "Getting the current patchlevel..." >&4
5856if $test -r $rsrc/patchlevel.h;then
5857 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5858 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5859 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5860 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5861 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5862 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 5863 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
5864else
5865 revision=0
5866 patchlevel=0
5867 subversion=0
5868 api_revision=0
5869 api_version=0
5870 api_subversion=0
151e6568
MB
5871 perl_patchlevel=0
5872 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 5873fi
151e6568
MB
5874if $test -r $rsrc/.patch ; then
5875 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5876 perl_patchlevel=`cat $rsrc/.patch`
5877 fi
5878fi
861eb78d
AD
5879: Define a handy string here to avoid duplication in myconfig.SH and configpm.
5880version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 5881case "$perl_patchlevel" in
861eb78d
AD
58820|'') ;;
5883*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 5884esac
861eb78d
AD
5885
5886$echo "(You have $package $version_patchlevel_string.)"
5887
b4eb6b3d
JH
5888case "$osname" in
5889dos|vms)
5890 : XXX Should be a Configure test for double-dots in filenames.
5891 version=`echo $revision $patchlevel $subversion | \
5892 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5893 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5894 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5895 ;;
5896*)
5897 version=`echo $revision $patchlevel $subversion | \
5898 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5899 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5900 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5901 ;;
5902esac
5903: Special case the 5.005_xx maintenance series, which used 5.005
5904: without any subversion label as a subdirectory in $sitelib
5905if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5906 api_versionstring='5.005'
5907fi
5908
5909: determine installation style
5910: For now, try to deduce it from prefix unless it is already set.
5911: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5912case "$installstyle" in
5913'') case "$prefix" in
5914 *perl*) dflt='lib';;
5915 *) dflt='lib/perl5' ;;
5916 esac
5917 ;;
5918*) dflt="$installstyle" ;;
5919esac
5920: Probably not worth prompting for this since we prompt for all
5921: the directories individually, and the prompt would be too long and
5922: confusing anyway.
5923installstyle=$dflt
5924
5925: determine where private library files go
5926: Usual default is /usr/local/lib/perl5/$version.
5927: Also allow things like /opt/perl/lib/$version, since
5928: /opt/perl/lib/perl5... would be redundant.
5929: The default "style" setting is made in installstyle.U
5930case "$installstyle" in
5931*lib/perl5*) set dflt privlib lib/$package/$version ;;
5932*) set dflt privlib lib/$version ;;
5933esac
5934eval $prefixit
5935$cat <<EOM
5936
5937There are some auxiliary files for $package that need to be put into a
5938private library directory that is accessible by everyone.
5939
5940EOM
5941fn=d~+
5942rp='Pathname where the private library files will reside?'
5943. ./getfile
5944privlib="$ans"
5945privlibexp="$ansexp"
5946: Change installation prefix, if necessary.
5947if $test X"$prefix" != X"$installprefix"; then
5948 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5949else
5950 installprivlib="$privlibexp"
5951fi
5952
5953: set the prefixup variable, to restore leading tilda escape
5954prefixup='case "$prefixexp" in
5955"$prefix") ;;
5956*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5957esac'
5958
5959: determine where public architecture dependent libraries go
5960set archlib archlib
5961eval $prefixit
5962: privlib default is /usr/local/lib/$package/$version
5963: archlib default is /usr/local/lib/$package/$version/$archname
5964: privlib may have an optional trailing /share.
5965tdflt=`echo $privlib | $sed 's,/share$,,'`
5966tdflt=$tdflt/$archname
5967case "$archlib" in
5968'') dflt=$tdflt
5969 ;;
5970*) dflt="$archlib"
5971 ;;
5972esac
5973$cat <<EOM
5974
5975$spackage contains architecture-dependent library files. If you are
5976sharing libraries in a heterogeneous environment, you might store
5977these files in a separate location. Otherwise, you can just include
5978them with the rest of the public library files.
5979
5980EOM
5981fn=d+~
5982rp='Where do you want to put the public architecture-dependent libraries?'
5983. ./getfile
5984archlib="$ans"
5985archlibexp="$ansexp"
5986if $test X"$archlib" = X"$privlib"; then
5987 d_archlib="$undef"
5988else
5989 d_archlib="$define"
5990fi
5991: Change installation prefix, if necessary.
5992if $test X"$prefix" != X"$installprefix"; then
5993 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5994else
5995 installarchlib="$archlibexp"
5996fi
5997
b4eb6b3d
JH
5998: see if setuid scripts can be secure
5999$cat <<EOM
6000
6001Some kernels have a bug that prevents setuid #! scripts from being
6002secure. Some sites have disabled setuid #! scripts because of this.
6003
6004First let's decide if your kernel supports secure setuid #! scripts.
6005(If setuid #! scripts would be secure but have been disabled anyway,
6006don't say that they are secure if asked.)
6007
6008EOM
6009
6010val="$undef"
6011if $test -d /dev/fd; then
6012 echo "#!$ls" >reflect
6013 chmod +x,u+s reflect
6014 ./reflect >flect 2>&1
6015 if $contains "/dev/fd" flect >/dev/null; then
6016 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6017 val="$define"
6018 else
6019 $cat <<EOM
6020If you are not sure if they are secure, I can check but I'll need a
6021username and password different from the one you are using right now.
6022If you don't have such a username or don't want me to test, simply
6023enter 'none'.
6024
6025EOM
6026 rp='Other username to test security of setuid scripts with?'
6027 dflt='none'
6028 . ./myread
6029 case "$ans" in
6030 n|none)
6031 case "$d_suidsafe" in
6032 '') echo "I'll assume setuid scripts are *not* secure." >&4
6033 dflt=n;;
6034 "$undef")
6035 echo "Well, the $hint value is *not* secure." >&4
6036 dflt=n;;
6037 *) echo "Well, the $hint value *is* secure." >&4
6038 dflt=y;;
6039 esac
c1a7f87b 6040 ;;
b4eb6b3d
JH
6041 *)
6042 $rm -f reflect flect
6043 echo "#!$ls" >reflect
6044 chmod +x,u+s reflect
6045 echo >flect
6046 chmod a+w flect
6047 echo '"su" will (probably) prompt you for '"$ans's password."
6048 su $ans -c './reflect >flect'
6049 if $contains "/dev/fd" flect >/dev/null; then
6050 echo "Okay, it looks like setuid scripts are secure." >&4
6051 dflt=y
6052 else
6053 echo "I don't think setuid scripts are secure." >&4
6054 dflt=n
6055 fi
6056 ;;
6057 esac
6058 rp='Does your kernel have *secure* setuid scripts?'
6059 . ./myread
6060 case "$ans" in
6061 [yY]*) val="$define";;
6062 *) val="$undef";;
6063 esac
6064 fi
6065else
6066 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6067 echo "(That's for file descriptors, not floppy disks.)"
6068 val="$undef"
6069fi
6070set d_suidsafe
6071eval $setvar
6072
6073$rm -f reflect flect
6074
6075: now see if they want to do setuid emulation
6076echo " "
6077val="$undef"
6078case "$d_suidsafe" in
6079"$define")
6080 val="$undef"
3c728e00 6081 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6082 ;;
6083*)
6084 $cat <<EOM
6085Some systems have disabled setuid scripts, especially systems where
6086setuid scripts cannot be secure. On systems where setuid scripts have
6087been disabled, the setuid/setgid bits on scripts are currently
6088useless. It is possible for $package to detect those bits and emulate
6089setuid/setgid in a secure fashion. This emulation will only work if
6090setuid scripts have been disabled in your kernel.
6091
6092EOM
6093 case "$d_dosuid" in
6094 "$define") dflt=y ;;
6095 *) dflt=n ;;
6096 esac
6097 rp="Do you want to do setuid/setgid emulation?"
6098 . ./myread
6099 case "$ans" in
6100 [yY]*) val="$define";;
6101 *) val="$undef";;
6102 esac
6103 ;;
6104esac
6105set d_dosuid
6106eval $setvar
6107
b4eb6b3d 6108: see if this is a malloc.h system
01d07975
YST
6109: we want a real compile instead of Inhdr because some systems have a
6110: malloc.h that just gives a compile error saying to use stdlib.h instead
6111echo " "
6112$cat >try.c <<EOCP
6113#include <stdlib.h>
6114#include <malloc.h>
6115int main () { return 0; }
6116EOCP
6117set try
6118if eval $compile; then
6119 echo "<malloc.h> found." >&4
6120 val="$define"
6121else
6122 echo "<malloc.h> NOT found." >&4
6123 val="$undef"
6124fi
6125$rm -f try.c try
6126set i_malloc
6127eval $setvar
b4eb6b3d 6128
c8b93cf9
JH
6129: check for void type
6130echo " "
6131echo "Checking to see how well your C compiler groks the void type..." >&4
6132case "$voidflags" in
6133'')
c727eafa 6134 $cat >try.c <<EOCP
d1daaddf
JH
6135#$i_stdlib I_STDLIB
6136#ifdef I_STDLIB
6137#include <stdlib.h>
6138#endif
c8b93cf9
JH
6139#if TRY & 1
6140void sub() {
6141#else
6142sub() {
6143#endif
6144 extern void moo(); /* function returning void */
6145 void (*goo)(); /* ptr to func returning void */
6146#if TRY & 8
6147 void *hue; /* generic ptr */
6148#endif
6149#if TRY & 2
6150 void (*foo[10])();
6151#endif
6152
6153#if TRY & 4
6154 if(goo == moo) {
6155 exit(0);
6156 }
6157#endif
6158 exit(0);
6159}
6160int main() { sub(); }
6161EOCP
6162 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6163 voidflags=$defvoidused
6164 echo "Good. It appears to support void to the level $package wants.">&4
6165 if $contains warning .out >/dev/null 2>&1; then
6166 echo "However, you might get some warnings that look like this:"
6167 $cat .out
6168 fi
6169 else
6170echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6171 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6172 echo "It supports 1..."
6173 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6174 echo "It also supports 2..."
6175 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6176 voidflags=7
6177 echo "And it supports 4 but not 8 definitely."
6178 else
6179 echo "It doesn't support 4..."
6180 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6181 voidflags=11
6182 echo "But it supports 8."
6183 else
6184 voidflags=3
6185 echo "Neither does it support 8."
6186 fi
6187 fi
6188 else
6189 echo "It does not support 2..."
6190 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6191 voidflags=13
6192 echo "But it supports 4 and 8."
6193 else
6194 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6195 voidflags=5
6196 echo "And it supports 4 but has not heard about 8."
6197 else
6198 echo "However it supports 8 but not 4."
6199 fi
6200 fi
6201 fi
6202 else
6203 echo "There is no support at all for void."
6204 voidflags=0
6205 fi
6206 fi
6207esac
6208case "$voidflags" in
6209"$defvoidused") ;;
6210*) $cat >&4 <<'EOM'
6211 Support flag bits are:
6212 1: basic void declarations.
6213 2: arrays of pointers to functions returning void.
6214 4: operations between pointers to and addresses of void functions.
6215 8: generic void pointers.
6216EOM
6217 dflt="$voidflags";
6218 rp="Your void support flags add up to what?"
6219 . ./myread
6220 voidflags="$ans"
6221 ;;
6222esac
6223$rm -f try.* .out
6224
6225: check for length of pointer
6226echo " "
6227case "$ptrsize" in
6228'')
6229 echo "Checking to see how big your pointers are..." >&4
6230 if test "$voidflags" -gt 7; then
6231 echo '#define VOID_PTR char *' > try.c
6232 else
6233 echo '#define VOID_PTR void *' > try.c
6234 fi
74d00865 6235 $cat >>try.c <<EOCP
c8b93cf9 6236#include <stdio.h>
d1daaddf
JH
6237#$i_stdlib I_STDLIB
6238#ifdef I_STDLIB
6239#include <stdlib.h>
6240#endif
c8b93cf9
JH
6241int main()
6242{
6243 printf("%d\n", (int)sizeof(VOID_PTR));
6244 exit(0);
6245}
6246EOCP
6247 set try
6248 if eval $compile_ok; then
6249 ptrsize=`$run ./try`
6250 echo "Your pointers are $ptrsize bytes long."
6251 else
6252 dflt='4'
6253 echo "(I can't seem to compile the test program. Guessing...)" >&4
6254 rp="What is the size of a pointer (in bytes)?"
6255 . ./myread
6256 ptrsize="$ans"
6257 fi
6258 ;;
6259esac
6260$rm -f try.c try
6261case "$use64bitall" in
6262"$define"|true|[yY]*)
6263 case "$ptrsize" in
6264 4) cat <<EOM >&4
6265
1911a026
JH
6266*** You have chosen a maximally 64-bit build,
6267*** but your pointers are only 4 bytes wide.
09b58c7b
JH
6268*** Please rerun Configure without -Duse64bitall.
6269EOM
6270 case "$d_quad" in
6271 define)
6272 cat <<EOM >&4
6273*** Since you have quads, you could possibly try with -Duse64bitint.
6274EOM
6275 ;;
6276 esac
6277 cat <<EOM >&4
1911a026 6278*** Cannot continue, aborting.
c8b93cf9
JH
6279
6280EOM
09b58c7b 6281
1911a026 6282 exit 1
c8b93cf9
JH
6283 ;;
6284 esac
6285 ;;
6286esac
6287
19a100ff 6288
9df442c2
NC
6289: determine whether to use malloc wrapping
6290echo " "
6291case "$usemallocwrap" in
6292[yY]*|true|$define) dflt='y' ;;
6293[nN]*|false|$undef) dflt='n' ;;
6294*) case "$usedevel" in
6295 [yY]*|true|$define) dflt='y' ;;
6296 *) dflt='n' ;;
6297 esac
6298 ;;
6299esac
6300rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6301. ./myread
6302usemallocwrap="$ans"
6303case "$ans" in
6304y*|true)
6305 usemallocwrap="$define" ;;
6306*)
6307 usemallocwrap="$undef" ;;
6308esac
c8b93cf9 6309
b4eb6b3d
JH
6310: determine which malloc to compile in
6311echo " "
6312case "$usemymalloc" in
c4163172
JH
6313[yY]*|true|$define) dflt='y' ;;
6314[nN]*|false|$undef) dflt='n' ;;
6315*) case "$ptrsize" in
6316 4) dflt='y' ;;
6317 *) dflt='n' ;;
6318 esac
6319 ;;
8dfa8df9 6320esac
b4eb6b3d
JH
6321rp="Do you wish to attempt to use the malloc that comes with $package?"
6322. ./myread
6323usemymalloc="$ans"
6324case "$ans" in
6325y*|true)
6326 usemymalloc='y'
6327 mallocsrc='malloc.c'
6328 mallocobj="malloc$_o"
6329 d_mymalloc="$define"
6330 case "$libs" in
6331 *-lmalloc*)
6332 : Remove malloc from list of libraries to use
6333 echo "Removing unneeded -lmalloc from library list" >&4
6334 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6335 shift
6336 libs="$*"
6337 echo "libs = $libs" >&4
6338 ;;
6339 esac
6340 ;;
6341*)
6342 usemymalloc='n'
6343 mallocsrc=''
6344 mallocobj=''
6345 d_mymalloc="$undef"
6346 ;;
6347esac
6348
6349: compute the return types of malloc and free
6350echo " "
6351$cat >malloc.c <<END
6352#$i_malloc I_MALLOC
6353#$i_stdlib I_STDLIB
6354#include <stdio.h>
6355#include <sys/types.h>
6356#ifdef I_MALLOC
6357#include <malloc.h>
6358#endif
6359#ifdef I_STDLIB
6360#include <stdlib.h>
6361#endif
6362#ifdef TRY_MALLOC
6363void *malloc();
6364#endif
6365#ifdef TRY_FREE
6366void free();
6367#endif
6368END
6369case "$malloctype" in
6370'')
6371 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6372 malloctype='void *'
6373 else
6374 malloctype='char *'
6375 fi
6376 ;;
6377esac
6378echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6379
6380case "$freetype" in
6381'')
6382 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6383 freetype='void'
6384 else
6385 freetype='int'
6386 fi
6387 ;;
6388esac
6389echo "Your system uses $freetype free(), it would seem." >&4
6390$rm -f malloc.[co]
6391$cat <<EOM
6392
6393After $package is installed, you may wish to install various
6394add-on modules and utilities. Typically, these add-ons will
6395be installed under $prefix with the rest
6396of this package. However, you may wish to install such add-ons
6397elsewhere under a different prefix.
6398
6399If you do not wish to put everything under a single prefix, that's
6400ok. You will be prompted for the individual locations; this siteprefix
6401is only used to suggest the defaults.
6402
6403The default should be fine for most people.
6404
6405EOM
6406fn=d~+
6407rp='Installation prefix to use for add-on modules and utilities?'
6408: XXX Here might be another good place for an installstyle setting.
6409case "$siteprefix" in
6410'') dflt=$prefix ;;
6411*) dflt=$siteprefix ;;
6412esac
6413. ./getfile
6414: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6415oldsiteprefix=''
6416case "$siteprefix" in
6417'') ;;
6418*) case "$ans" in
6419 "$prefix") ;;
6420 *) oldsiteprefix="$prefix";;
6421 esac
6422 ;;
6423esac
6424siteprefix="$ans"
6425siteprefixexp="$ansexp"
6426
6427: determine where site specific libraries go.
6428: Usual default is /usr/local/lib/perl5/site_perl/$version
6429: The default "style" setting is made in installstyle.U
6430: XXX No longer works with Prefixit stuff.
6431prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6432case "$sitelib" in
6433'') case "$installstyle" in
6434 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6435 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6436 esac
6437 ;;
6438*) dflt="$sitelib"
6439 ;;
6440esac
6441$cat <<EOM
6442
6443The installation process will create a directory for
6444site-specific extensions and modules. Most users find it convenient
6445to place all site-specific files in this directory rather than in the
6446main distribution directory.
6447
6448EOM
6449fn=d~+
6450rp='Pathname for the site-specific library files?'
6451. ./getfile
6452sitelib="$ans"
6453sitelibexp="$ansexp"
6454sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6455: Change installation prefix, if necessary.
6456if $test X"$prefix" != X"$installprefix"; then
6457 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6458else
6459 installsitelib="$sitelibexp"
6460fi
6461
6462: determine where site specific architecture-dependent libraries go.
6463: sitelib default is /usr/local/lib/perl5/site_perl/$version
6464: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6465: sitelib may have an optional trailing /share.
6466case "$sitearch" in
6467'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6468 dflt="$dflt/$archname"
6469 ;;
6470*) dflt="$sitearch"
6471 ;;
6472esac
6473set sitearch sitearch none
6474eval $prefixit
6475$cat <<EOM
6476
6477The installation process will also create a directory for
6478architecture-dependent site-specific extensions and modules.
6479
6480EOM
6481fn=d~+
6482rp='Pathname for the site-specific architecture-dependent library files?'
6483. ./getfile
6484sitearch="$ans"
6485sitearchexp="$ansexp"
6486: Change installation prefix, if necessary.
6487if $test X"$prefix" != X"$installprefix"; then
6488 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6489else
6490 installsitearch="$sitearchexp"
6491fi
6492
6493$cat <<EOM
6494
6495The installation process will also create a directory for
6496vendor-supplied add-ons. Vendors who supply perl with their system
6497may find it convenient to place all vendor-supplied files in this
6498directory rather than in the main distribution directory. This will
6499ease upgrades between binary-compatible maintenance versions of perl.
6500
6501Of course you may also use these directories in whatever way you see
6502fit. For example, you might use them to access modules shared over a
6503company-wide network.
6504
6505The default answer should be fine for most people.
6506This causes further questions about vendor add-ons to be skipped
6507and no vendor-specific directories will be configured for perl.
6508
6509EOM
6510rp='Do you want to configure vendor-specific add-on directories?'
6511case "$usevendorprefix" in
6512define|true|[yY]*) dflt=y ;;
6513*) : User may have set vendorprefix directly on Configure command line.
6514 case "$vendorprefix" in
6515 ''|' ') dflt=n ;;
6516 *) dflt=y ;;
6517 esac
6518 ;;
6519esac
6520. ./myread
6521case "$ans" in
6522[yY]*) fn=d~+
6523 rp='Installation prefix to use for vendor-supplied add-ons?'
6524 case "$vendorprefix" in
6525 '') dflt='' ;;
6526 *) dflt=$vendorprefix ;;
6527 esac
6528 . ./getfile
6529 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6530 oldvendorprefix=''
6531 case "$vendorprefix" in
6532 '') ;;
6533 *) case "$ans" in
6534 "$prefix") ;;
6535 *) oldvendorprefix="$prefix";;
6536 esac
6537 ;;
6538 esac
6539 usevendorprefix="$define"
6540 vendorprefix="$ans"
6541 vendorprefixexp="$ansexp"
6542 ;;
6543*) usevendorprefix="$undef"
6544 vendorprefix=''
6545 vendorprefixexp=''
6546 ;;
6547esac
6548
6549case "$vendorprefix" in
6550'') d_vendorlib="$undef"
6551 vendorlib=''
6552 vendorlibexp=''
6553 ;;
6554*) d_vendorlib="$define"
6555 : determine where vendor-supplied modules go.
6556 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6557 case "$vendorlib" in
6558 '')
6559 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6560 case "$installstyle" in
6561 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6562 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6563 esac
6564 ;;
6565 *) dflt="$vendorlib"
6566 ;;
6567 esac
6568 fn=d~+
6569 rp='Pathname for the vendor-supplied library files?'
6570 . ./getfile
6571 vendorlib="$ans"
6572 vendorlibexp="$ansexp"
6573 ;;
6574esac
6575vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6576: Change installation prefix, if necessary.
6577if $test X"$prefix" != X"$installprefix"; then
6578 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6579else
6580 installvendorlib="$vendorlibexp"
6581fi
6582
6583case "$vendorprefix" in
6584'') d_vendorarch="$undef"
6585 vendorarch=''
6586 vendorarchexp=''
6587 ;;
6588*) d_vendorarch="$define"
6589 : determine where vendor-supplied architecture-dependent libraries go.
6590 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6591 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6592 : vendorlib may have an optional trailing /share.
6593 case "$vendorarch" in
6594 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6595 dflt="$dflt/$archname"
6596 ;;
6597 *) dflt="$vendorarch" ;;
6598 esac
6599 fn=d~+
6600 rp='Pathname for vendor-supplied architecture-dependent files?'
6601 . ./getfile
6602 vendorarch="$ans"
6603 vendorarchexp="$ansexp"
6604 ;;
6605esac
6606: Change installation prefix, if necessary.
6607if $test X"$prefix" != X"$installprefix"; then
6608 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6609else
6610 installvendorarch="$vendorarchexp"
6611fi
6612
6613: Final catch-all directories to search
6614$cat <<EOM
6615
6616Lastly, you can have perl look in other directories for extensions and
6617modules in addition to those already specified.
6618These directories will be searched after
6619 $sitearch
6620 $sitelib
6621EOM
6622test X"$vendorlib" != "X" && echo ' ' $vendorlib
6623test X"$vendorarch" != "X" && echo ' ' $vendorarch
6624echo ' '
6625case "$otherlibdirs" in
6626''|' ') dflt='none' ;;
6627*) dflt="$otherlibdirs" ;;
6628esac
6629$cat <<EOM
6630Enter a colon-separated set of extra paths to include in perl's @INC
6631search path, or enter 'none' for no extra paths.
6632
6633EOM
6634
6635rp='Colon-separated list of additional directories for perl to search?'
6636. ./myread
6637case "$ans" in
6638' '|''|none) otherlibdirs=' ' ;;
6639*) otherlibdirs="$ans" ;;
6640esac
6641case "$otherlibdirs" in
6642' ') val=$undef ;;
6643*) val=$define ;;
6644esac
6645set d_perl_otherlibdirs
6646eval $setvar
6647
6648: Cruising for prototypes
6649echo " "
6650echo "Checking out function prototypes..." >&4
55954f19
JH
6651$cat >prototype.c <<EOCP
6652#$i_stdlib I_STDLIB
6653#ifdef I_STDLIB
6654#include <stdlib.h>
6655#endif
b4eb6b3d
JH
6656int main(int argc, char *argv[]) {
6657 exit(0);}
6658EOCP
6659if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6660 echo "Your C compiler appears to support function prototypes."
6661 val="$define"
6662else
6663 echo "Your C compiler doesn't seem to understand function prototypes."
6664 val="$undef"
6665fi
6666set prototype
6667eval $setvar
6668$rm -f prototype*
6669
6670case "$prototype" in
6671"$define") ;;
6672*) ansi2knr='ansi2knr'
6673 echo " "
6674 cat <<EOM >&4
6675
6676$me: FATAL ERROR:
6677This version of $package can only be compiled by a compiler that
6678understands function prototypes. Unfortunately, your C compiler
6679 $cc $ccflags
6680doesn't seem to understand them. Sorry about that.
6681
6682If GNU cc is available for your system, perhaps you could try that instead.
6683
6684Eventually, we hope to support building Perl with pre-ANSI compilers.
6685If you would like to help in that effort, please contact <perlbug@perl.org>.
6686
6687Aborting Configure now.
6688EOM
6689 exit 2
6690 ;;
6691esac
6692
6693: determine where public executables go
6694echo " "
6695set dflt bin bin
6696eval $prefixit
6697fn=d~
6698rp='Pathname where the public executables will reside?'
6699. ./getfile
6700if $test "X$ansexp" != "X$binexp"; then
6701 installbin=''
6702fi
6703bin="$ans"
6704binexp="$ansexp"
6705: Change installation prefix, if necessary.
6706: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6707if $test X"$prefix" != X"$installprefix"; then
6708 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6709else
6710 installbin="$binexp"
6711fi
6712
6fcddf3b 6713echo " "
6fcddf3b 6714case "$extras" in
bf35c3f6
JH
6715'') dflt='n';;
6716*) dflt='y';;
6fcddf3b
JH
6717esac
6718cat <<EOM
6719Perl can be built with extra modules or bundles of modules which
6720will be fetched from the CPAN and installed alongside Perl.
6721
6722Notice that you will need access to the CPAN; either via the Internet,
6723or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6724be asked later to configure the CPAN.pm module which will in turn do
6725the installation of the rest of the extra modules or bundles.)
6726
6727Notice also that if the modules require any external software such as
dd2de242
JH
6728libraries and headers (the libz library and the zlib.h header for the
6729Compress::Zlib module, for example) you MUST have any such software
6730already installed, this configuration process will NOT install such
6731things for you.
6fcddf3b
JH
6732
6733If this doesn't make any sense to you, just accept the default '$dflt'.
6734EOM
dd2de242 6735rp='Install any extra modules (y or n)?'
6fcddf3b
JH
6736. ./myread
6737case "$ans" in
6738y|Y)
6739 cat <<EOM
6740
6741Please list any extra modules or bundles to be installed from CPAN,
6742with spaces between the names. The names can be in any format the
dd2de242
JH
6743'install' command of CPAN.pm will understand. (Answer 'none',
6744without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
6745EOM
6746 rp='Extras?'
6747 dflt="$extras"
6748 . ./myread
6749 extras="$ans"
6750esac
6751case "$extras" in
6752''|'none')
6753 val=''
6754 $rm -f ../extras.lst
6755 ;;
6756*) echo "(Saving the list of extras for later...)"
dd2de242
JH
6757 echo "$extras" > ../extras.lst
6758 val="'$extras'"
6fcddf3b
JH
6759 ;;
6760esac
6761set extras
6762eval $setvar
6763echo " "
6764
6e1038e0
MB
6765: determine where html pages for programs go
6766set html1dir html1dir none
6767eval $prefixit
6768$cat <<EOM
6769
6770If you wish to install html files for programs in $spackage, indicate
6771the appropriate directory here. To skip installing html files,
6772answer "none".
6773EOM
6774case "$html1dir" in
6775''|none|$undef|' ') dflt=none ;;
6776*) dflt=$html1dir ;;
6777esac
6778fn=dn+~
6779rp="Directory for the main $spackage html pages?"
6780. ./getfile
6781html1dir="$ans"
6782html1direxp="$ansexp"
6783: Use ' ' for none so value is preserved next time through Configure
6784$test X"$html1dir" = "X" && html1dir=' '
6785: Change installation prefix, if necessary.
6786if $test X"$prefix" != X"$installprefix"; then
6787 installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6788else
6789 installhtml1dir="$html1direxp"
6790fi
6791
6792: determine where html pages for libraries and modules go
6793set html3dir html3dir none
6794eval $prefixit
6795$cat <<EOM
6796
6797If you wish to install html files for modules associated with $spackage,
6798indicate the appropriate directory here. To skip installing html files,
6799answer "none".
6800EOM
6801: There is no obvious default. If they have specified html1dir, then
6802: try to key off that, possibly changing .../html1 into .../html3.
6803case "$html3dir" in
6804'') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6805*) dflt=$html3dir ;;
6806esac
6807fn=dn+~
6808rp="Directory for the $spackage module html pages?"
6809. ./getfile
6810html3dir="$ans"
6811html3direxp="$ansexp"
6812: Use ' ' for none so value is preserved next time through Configure
6813$test X"$html3dir" = "X" && html3dir=' '
6814: Change installation prefix, if necessary.
6815if $test X"$prefix" != X"$installprefix"; then
6816 installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6817else
6818 installhtml3dir="$html3direxp"
6819fi
6820
b4eb6b3d
JH
6821: Find perl5.005 or later.
6822echo "Looking for a previously installed perl5.005 or later... "
6823case "$perl5" in
a938a3bb 6824'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6825 : Check if this perl is recent and can load a simple module
a938a3bb 6826 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6827 perl5=$tdir/perl
6828 break;
a938a3bb
IZ
6829 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6830 perl5=$tdir/perl5
b4eb6b3d
JH
6831 break;
6832 fi
89ce900e
JH
6833 done
6834 ;;
6835*) perl5="$perl5"
6836 ;;
6837esac
6838case "$perl5" in
6839'') echo "None found. That's ok.";;
6840*) echo "Using $perl5." ;;
6841esac
6842
6843: Determine list of previous versions to include in @INC
6844$cat > getverlist <<EOPL
6845#!$perl5 -w
6846use File::Basename;
6847\$api_versionstring = "$api_versionstring";
6848\$version = "$version";
6849\$stem = "$sitelib_stem";
6850\$archname = "$archname";
6851EOPL
6852 $cat >> getverlist <<'EOPL'
6853# Can't have leading @ because metaconfig interprets it as a command!
6854;@inc_version_list=();
6855# XXX Redo to do opendir/readdir?
6856if (-d $stem) {
6857 chdir($stem);
6858 ;@candidates = glob("5.*");
6859}
6860else {
6861 ;@candidates = ();
6862}
6863
6864# XXX ToDo: These comparisons must be reworked when two-digit
6865# subversions come along, so that 5.7.10 compares as greater than
6866# 5.7.3! By that time, hope that 5.6.x is sufficiently
6867# widespread that we can use the built-in version vectors rather
6868# than reinventing them here. For 5.6.0, however, we must
6869# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6870foreach $d (@candidates) {
6871 if ($d lt $version) {
6872 if ($d ge $api_versionstring) {
6873 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6874 }
6875 elsif ($d ge "5.005") {
6876 unshift(@inc_version_list, grep { -d } $d);
6877 }
6878 }
6879 else {
6880 # Skip newer version. I.e. don't look in
6881 # 5.7.0 if we're installing 5.6.1.
6882 }
6883}
6884
6885if (@inc_version_list) {
6886 print join(' ', @inc_version_list);
6887}
6888else {
6889 # Blank space to preserve value for next Configure run.
6890 print " ";
6891}
6892EOPL
6893chmod +x getverlist
6894case "$inc_version_list" in
6895'') if test -x "$perl5$exe_ext"; then
6896 dflt=`$perl5 getverlist`
6897 else
6898 dflt='none'
6899 fi
6900 ;;
6901$undef) dflt='none' ;;
6902*) eval dflt=\"$inc_version_list\" ;;
6903esac
6904case "$dflt" in
6905''|' ') dflt=none ;;
6906esac
6907case "$dflt" in
69085.005) dflt=none ;;
6909esac
6910$cat <<EOM
6911
6912In order to ease the process of upgrading, this version of perl
6913can be configured to use modules built and installed with earlier
6914versions of perl that were installed under $prefix. Specify here
6915the list of earlier versions that this version of perl should check.
6916If Configure detected no earlier versions of perl installed under
6917$prefix, then the list will be empty. Answer 'none' to tell perl
6918to not search earlier versions.
6919
6920The default should almost always be sensible, so if you're not sure,
6921just accept the default.
6922EOM
6923
6924rp='List of earlier versions to include in @INC?'
6925. ./myread
6926case "$ans" in
d2556f21 6927[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
89ce900e
JH
6928*) inc_version_list="$ans" ;;
6929esac
6930case "$inc_version_list" in
6931''|' ')
6932 inc_version_list_init='0';;
6933*) inc_version_list_init=`echo $inc_version_list |
6934 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6935 ;;
6936esac
6937$rm -f getverlist
6938
6939: determine whether to install perl also as /usr/bin/perl
6940
6941echo " "
6942if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6943 $cat <<EOM
6944Many scripts expect perl to be installed as /usr/bin/perl.
6945
6946If you want to, I can install the perl you are about to compile
6947as /usr/bin/perl (in addition to $bin/perl).
6948EOM
6949 if test -f /usr/bin/perl; then
6950 $cat <<EOM
6951
6952However, please note that because you already have a /usr/bin/perl,
6953overwriting that with a new Perl would very probably cause problems.
6954Therefore I'm assuming you don't want to do that (unless you insist).
6955
6956EOM
6957 case "$installusrbinperl" in
6958 "$define"|[yY]*) dflt='y';;
6959 *) dflt='n';;
6960 esac
6961 else
6962 $cat <<EOM
6963
6964Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6965
6966EOM
6967 case "$installusrbinperl" in
6968 "$undef"|[nN]*) dflt='n';;
6969 *) dflt='y';;
6970 esac
6971 fi
6972 rp="Do you want to install perl as /usr/bin/perl?"
6973 . ./myread
6974 case "$ans" in
6975 [yY]*) val="$define";;
6976 *) val="$undef" ;;
6977 esac
6978else
6979 val="$undef"
6980fi
6981set installusrbinperl
6982eval $setvar
6983
6984echo " "
6985echo "Checking for GNU C Library..." >&4
6986cat >try.c <<'EOCP'
6987/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
6988 alone are insufficient to distinguish different versions, such as
6989 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
6990 libc version 2.1.0. A. Dougherty, June 3, 2002.
6991*/
6992#include <stdio.h>
6993int main(void)
6994{
6995#ifdef __GLIBC__
6996# ifdef __GLIBC_MINOR__
6997# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6998# include <gnu/libc-version.h>
6999 printf("%s\n", gnu_get_libc_version());
7000# else
7001 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7002# endif
7003# else
7004 printf("%d\n", __GLIBC__);
7005# endif
7006 return 0;
7007#else
7008 return 1;
7009#endif
7010}
7011EOCP
7012set try
7013if eval $compile_ok && $run ./try > glibc.ver; then
7014 val="$define"
7015 gnulibc_version=`$cat glibc.ver`
7016 echo "You are using the GNU C Library version $gnulibc_version"
7017else
7018 val="$undef"
7019 gnulibc_version=''
7020 echo "You are not using the GNU C Library"
7021fi
7022$rm -f try try.* glibc.ver
7023set d_gnulibc
7024eval $setvar
7025
7026: see if nm is to be used to determine whether a symbol is defined or not
7027case "$usenm" in
7028'')
7029 dflt=''
7030 case "$d_gnulibc" in
7031 "$define")
7032 echo " "
7033 echo "nm probably won't work on the GNU C Library." >&4
7034 dflt=n
7035 ;;
7036 esac
7037 case "$dflt" in
7038 '')
7039 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7040 echo " "
7041 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7042 echo "'nm' won't be sufficient on this sytem." >&4
7043 dflt=n
7044 fi
7045 ;;
7046 esac
7047 case "$dflt" in
7048 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7049 if $test $dflt -gt 20; then
7050 dflt=y
7051 else
7052 dflt=n
7053 fi
7054 ;;
7055 esac
b4eb6b3d 7056 ;;
89ce900e
JH
7057*)
7058 case "$usenm" in
7059 true|$define) dflt=y;;
7060 *) dflt=n;;
7061 esac
b4eb6b3d
JH
7062 ;;
7063esac
89ce900e 7064$cat <<EOM
b4eb6b3d 7065
89ce900e
JH
7066I can use $nm to extract the symbols from your C libraries. This
7067is a time consuming task which may generate huge output on the disk (up
7068to 3 megabytes) but that should make the symbols extraction faster. The
7069alternative is to skip the 'nm' extraction part and to compile a small
7070test program instead to determine whether each symbol is present. If
7071you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7072this may be the best solution.
b4eb6b3d 7073
89ce900e 7074You probably shouldn't let me use 'nm' if you are using the GNU C Library.
b4eb6b3d 7075
89ce900e
JH
7076EOM
7077rp="Shall I use $nm to extract C symbols from the libraries?"
7078. ./myread
7079case "$ans" in
7080[Nn]*) usenm=false;;
7081*) usenm=true;;
b4eb6b3d 7082esac
89ce900e
JH
7083
7084runnm=$usenm
7085case "$reuseval" in
7086true) runnm=false;;
b4eb6b3d 7087esac
b4eb6b3d 7088
89ce900e
JH
7089: nm options which may be necessary
7090case "$nm_opt" in
7091'') if $test -f /mach_boot; then
7092 nm_opt='' # Mach
7093 elif $test -d /usr/ccs/lib; then
7094 nm_opt='-p' # Solaris (and SunOS?)
7095 elif $test -f /dgux; then
7096 nm_opt='-p' # DG-UX
7097 elif $test -f /lib64/rld; then
7098 nm_opt='-p' # 64-bit Irix
7099 else
7100 nm_opt=''
7101 fi;;
7102esac
b4eb6b3d 7103
89ce900e
JH
7104: nm options which may be necessary for shared libraries but illegal
7105: for archive libraries. Thank you, Linux.
7106case "$nm_so_opt" in
7107'') case "$myuname" in
fb2e1bc0 7108 *linux*|gnu*)
89ce900e
JH
7109 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7110 nm_so_opt='--dynamic'
7111 fi
7112 ;;
7113 esac
7114 ;;
7115esac
b4eb6b3d 7116
89ce900e
JH
7117case "$runnm" in
7118true)
7119: get list of predefined functions in a handy place
7120echo " "
7121case "$libc" in
7122'') libc=unknown
7123 case "$libs" in
7124 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7125 esac
7126 ;;
b4eb6b3d 7127esac
89ce900e
JH
7128case "$libs" in
7129'') ;;
7130*) for thislib in $libs; do
7131 case "$thislib" in
7132 -lc|-lc_s)
7133 : Handle C library specially below.
7134 ;;
7135 -l*)
7136 thislib=`echo $thislib | $sed -e 's/^-l//'`
7137 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7138 :
7139 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7140 :
7141 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7142 :
7143 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7144 :
7145 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7146 :
7147 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7148 :
7149 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7150 :
7151 else
7152 try=''
7153 fi
7154 libnames="$libnames $try"
7155 ;;
7156 *) libnames="$libnames $thislib" ;;
7157 esac
7158 done
b4eb6b3d
JH
7159 ;;
7160esac
89ce900e
JH
7161xxx=normal
7162case "$libc" in
7163unknown)
7164 set /lib/libc.$so
7165 for xxx in $libpth; do
7166 $test -r $1 || set $xxx/libc.$so
7167 : The messy sed command sorts on library version numbers.
7168 $test -r $1 || \
7169 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7170 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7171 h
7172 s/[0-9][0-9]*/0000&/g
7173 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7174 G
7175 s/\n/ /' | \
7176 $sort | $sed -e 's/^.* //'`
7177 eval set \$$#
7178 done
7179 $test -r $1 || set /usr/ccs/lib/libc.$so
7180 $test -r $1 || set /lib/libsys_s$_a
7181 ;;
7182*)
7183 set blurfl
7184 ;;
7185esac
7186if $test -r "$1"; then
7187 echo "Your (shared) C library seems to be in $1."
7188 libc="$1"
7189elif $test -r /lib/libc && $test -r /lib/clib; then
7190 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7191 xxx=apollo
7192 libc='/lib/clib /lib/libc'
7193 if $test -r /lib/syslib; then
7194 echo "(Your math library is in /lib/syslib.)"
7195 libc="$libc /lib/syslib"
7196 fi
7197elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7198 echo "Your C library seems to be in $libc, as you said before."
7199elif $test -r $incpath/usr/lib/libc$_a; then
7200 libc=$incpath/usr/lib/libc$_a;
7201 echo "Your C library seems to be in $libc. That's fine."
7202elif $test -r /lib/libc$_a; then
7203 libc=/lib/libc$_a;
7204 echo "Your C library seems to be in $libc. You're normal."
7205else
7206 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7207 :
7208 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7209 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7210 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7211 :
7212 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7213 :
7214 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7215 :
7216 else
7217 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7218 fi
7219 if $test -r "$tans"; then
7220 echo "Your C library seems to be in $tans, of all places."
7221 libc=$tans
7222 else
7223 libc='blurfl'
7224 fi
7225fi
7226if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7227 dflt="$libc"
7228 cat <<EOM
b4eb6b3d 7229
89ce900e
JH
7230If the guess above is wrong (which it might be if you're using a strange
7231compiler, or your machine supports multiple models), you can override it here.
b4eb6b3d 7232
89ce900e
JH
7233EOM
7234else
7235 dflt=''
7236 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7237 cat >&4 <<EOM
7238I can't seem to find your C library. I've looked in the following places:
5e366f65 7239
b4eb6b3d 7240EOM
89ce900e
JH
7241 $sed 's/^/ /' libpath
7242 cat <<EOM
5e366f65 7243
89ce900e 7244None of these seems to contain your C library. I need to get its name...
5e366f65
JH
7245
7246EOM
89ce900e
JH
7247fi
7248fn=f
7249rp='Where is your C library?'
7250. ./getfile
7251libc="$ans"
5e366f65 7252
89ce900e
JH
7253echo " "
7254echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7255set X `cat libnames`
7256shift
7257xxx=files
7258case $# in 1) xxx=file; esac
7259echo "Extracting names from the following $xxx for later perusal:" >&4
7260echo " "
7261$sed 's/^/ /' libnames >&4
7262echo " "
7263$echo $n "This may take a while...$c" >&4
5e366f65 7264
89ce900e
JH
7265for file in $*; do
7266 case $file in
7267 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7268 *) $nm $nm_opt $file 2>/dev/null;;
b4eb6b3d 7269 esac
89ce900e
JH
7270done >libc.tmp
7271
7272$echo $n ".$c"
7273$grep fprintf libc.tmp > libc.ptf
7274xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7275xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7276xxx='[ADTSIW]'
ab900c53 7277if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
89ce900e
JH
7278 eval $xscan;\
7279 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7280 eval $xrun
7281elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7282 eval $xscan;\
7283 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7284 eval $xrun
7285elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7286 eval $xscan;\
7287 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7288 eval $xrun
7289elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7290 eval $xscan;\
7291 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7292 eval $xrun
7293elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7294 eval $xscan;\
7295 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7296 eval $xrun
7297elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7298 eval $xscan;\
7299 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7300 eval $xrun
7301elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7302 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7303 eval $xscan;\
7304 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7305 eval $xrun
7306elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7307 eval $xscan;\
7308 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7309 eval $xrun
7310elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7311 eval $xscan;\
7312 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7313 eval $xrun
7314elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7315 eval $xscan;\
7316 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7317 eval $xrun
7318elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7319 eval $xscan;\
7320 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7321 eval $xrun
7322elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7323 eval $xscan;\
7324 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7325 eval $xrun
7326elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7327 eval $xscan;\
7328 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7329 eval $xrun
7330elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7331 eval $xscan;\
7332 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7333 eval $xrun
b4eb6b3d 7334else
89ce900e
JH
7335 $nm -p $* 2>/dev/null >libc.tmp
7336 $grep fprintf libc.tmp > libc.ptf
7337 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7338 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7339 then
7340 nm_opt='-p'
7341 eval $xrun
7342 else
7343 echo " "
7344 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7345 com=''
7346 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7347 for thisname in $libnames $libc; do
7348 $ar t $thisname >>libc.tmp
7349 done
7350 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7351 echo "Ok." >&4
7352 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7353 # Repeat libc to extract forwarders to DLL entries too
7354 for thisname in $libnames $libc; do
7355 $ar tv $thisname >>libc.tmp
7356 # Revision 50 of EMX has bug in $ar.
7357 # it will not extract forwarders to DLL entries
7358 # Use emximp which will extract exactly them.
7359 emximp -o tmp.imp $thisname \
7360 2>/dev/null && \
7361 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7362 < tmp.imp >>libc.tmp
7363 $rm tmp.imp
7364 done
7365 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7366 echo "Ok." >&4
7367 else
7368 echo "$ar didn't seem to work right." >&4
7369 echo "Maybe this is a Cray...trying bld instead..." >&4
7370 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7371 then
7372 for thisname in $libnames; do
7373 bld t $libnames | \
7374 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7375 $ar t $thisname >>libc.tmp
7376 done
7377 echo "Ok." >&4
7378 else
7379 echo "That didn't work either. Giving up." >&4
7380 exit 1
7381 fi
7382 fi
7383 fi
b4eb6b3d 7384fi
89ce900e
JH
7385nm_extract="$com"
7386case "$PASE" in
7387define)
7388 echo " "
7389 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7390 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7391 ;;
7392*) if $test -f /lib/syscalls.exp; then
7393 echo " "
7394 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7395 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7396 fi
7397 ;;
7398esac
7399;;
7400esac
7401$rm -f libnames libpath
b4eb6b3d
JH
7402
7403: see if dld is available
7404set dld.h i_dld
7405eval $inhdr
7406
89ce900e
JH
7407: is a C symbol defined?
7408csym='tlook=$1;
7409case "$3" in
373dfab3
JH
7410-v) tf=libc.tmp; tdc="";;
7411-a) tf=libc.tmp; tdc="[]";;
7412*) tlook="^$1\$"; tf=libc.list; tdc="()";;
89ce900e
JH
7413esac;
7414tx=yes;
7415case "$reuseval-$4" in
7416true-) ;;
7417true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7418esac;
7419case "$tx" in
7420yes)
ab900c53 7421 tval=false;
5129fff4
JH
7422 if $test "$runnm" = true; then
7423 if $contains $tlook $tf >/dev/null 2>&1; then
ab900c53 7424 tval=true;
5129fff4 7425 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
373dfab3 7426 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7427 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
373dfab3
JH
7428 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7429 $rm -f try$_exe try.c core core.* try.core;
89ce900e 7430 fi;
5129fff4 7431 else
373dfab3 7432 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7433 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
373dfab3 7434 $rm -f try$_exe try.c;
ab900c53
AB
7435 fi;
7436 ;;
89ce900e
JH
7437*)
7438 case "$tval" in
7439 $define) tval=true;;
7440 *) tval=false;;
ab900c53
AB
7441 esac;
7442 ;;
89ce900e
JH
7443esac;
7444eval "$2=$tval"'
7445
7446: define an is-in-libc? function
7447inlibc='echo " "; td=$define; tu=$undef;
7448sym=$1; var=$2; eval "was=\$$2";
7449tx=yes;
7450case "$reuseval$was" in
7451true) ;;
7452true*) tx=no;;
7453esac;
7454case "$tx" in
7455yes)
7456 set $sym tres -f;
7457 eval $csym;
7458 case "$tres" in
7459 true)
7460 echo "$sym() found." >&4;
7461 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7462 *)
7463 echo "$sym() NOT found." >&4;
7464 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7465 esac;;
7466*)
7467 case "$was" in
7468 $define) echo "$sym() found." >&4;;
7469 *) echo "$sym() NOT found." >&4;;
7470 esac;;
7471esac'
7472
b4eb6b3d
JH
7473: see if dlopen exists
7474xxx_runnm="$runnm"
7475runnm=false
7476set dlopen d_dlopen
7477eval $inlibc
7478runnm="$xxx_runnm"
7479
7480: determine which dynamic loading, if any, to compile in
7481echo " "
7482dldir="ext/DynaLoader"
7483case "$usedl" in
7484$define|y|true)
7485 dflt='y'
7486 usedl="$define"
7487 ;;
7488$undef|n|false)
7489 dflt='n'
7490 usedl="$undef"
7491 ;;
7492*)
7493 dflt='n'
7494 case "$d_dlopen" in
7495 $define) dflt='y' ;;
7496 esac
7497 case "$i_dld" in
7498 $define) dflt='y' ;;
7499 esac
7500 : Does a dl_xxx.xs file exist for this operating system
7501 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7502 ;;
7503esac
7504rp="Do you wish to use dynamic loading?"
7505. ./myread
7506usedl="$ans"
7507case "$ans" in
7508y*) usedl="$define"
7509 case "$dlsrc" in
7510 '')
7511 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7512 dflt="$dldir/dl_${osname}.xs"
7513 elif $test "$d_dlopen" = "$define" ; then
7514 dflt="$dldir/dl_dlopen.xs"
7515 elif $test "$i_dld" = "$define" ; then
7516 dflt="$dldir/dl_dld.xs"
7517 else
7518 dflt=''
7519 fi
7520 ;;
7521 *) dflt="$dldir/$dlsrc"
7522 ;;
7523 esac
7524 echo "The following dynamic loading files are available:"
7525 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7526 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7527 rp="Source file to use for dynamic loading"
7528 fn="fne"
7529 gfpth="$src"
7530 . ./getfile
7531 usedl="$define"
7532 : emulate basename
7533 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7534
7535 $cat << EOM
7536
7537Some systems may require passing special flags to $cc -c to
7538compile modules that will be used to create a shared library.
7539To use no flags, say "none".
7540
7541EOM
7542 case "$cccdlflags" in
7543 '') case "$gccversion" in
7544 '') case "$osname" in
7545 hpux) dflt='+z' ;;
7546 next) dflt='none' ;;
7547 irix*) dflt='-KPIC' ;;
48bcfe03 7548 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7549 sunos) dflt='-pic' ;;
7550 *) dflt='none' ;;
7551 esac
7552 ;;
7553 *) case "$osname" in
b6cc0f4c 7554 darwin) dflt='none' ;;
48bcfe03 7555 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7556 *) dflt='-fpic' ;;
7557 esac ;;
7558 esac ;;
7559 ' ') dflt='none' ;;
7560 *) dflt="$cccdlflags" ;;
7561 esac
7562 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7563 . ./myread
7564 case "$ans" in
7565 none) cccdlflags=' ' ;;
7566 *) cccdlflags="$ans" ;;
7567 esac
7568
7569 cat << EOM
7570
7571Some systems use ld to create libraries that can be dynamically loaded,
7572while other systems (such as those using ELF) use $cc.
7573
7574EOM
7575 case "$ld" in
55954f19 7576 '') $cat >try.c <<EOM
b4eb6b3d
JH
7577/* Test for whether ELF binaries are produced */
7578#include <fcntl.h>
55954f19
JH
7579#$i_stdlib I_STDLIB
7580#ifdef I_STDLIB
b4eb6b3d 7581#include <stdlib.h>
55954f19 7582#endif
b4eb6b3d
JH
7583int main() {
7584 char b[4];
7585 int i = open("a.out",O_RDONLY);
7586 if(i == -1)
7587 exit(1); /* fail */
7588 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7589 exit(0); /* succeed (yes, it's ELF) */
7590 else
7591 exit(1); /* fail */
7592}
7593EOM
5440bc8e 7594 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7595 cat <<EOM
7596You appear to have ELF support. I'll use $cc to build dynamic libraries.
7597EOM
7598 dflt="$cc"
7599 else
7600 echo "I'll use ld to build dynamic libraries."
7601 dflt='ld'
7602 fi
7603 rm -f try.c a.out
7604 ;;
7605 *) dflt="$ld"
7606 ;;
7607 esac
7608
7609 rp="What command should be used to create dynamic libraries?"
7610 . ./myread
7611 ld="$ans"
7612
7613 cat << EOM
7614
7615Some systems may require passing special flags to $ld to create a
7616library that can be dynamically loaded. If your ld flags include
7617-L/other/path options to locate libraries outside your loader's normal
7618search path, you may need to specify those -L options here as well. To
7619use no flags, say "none".
7620
7621EOM
7622 case "$lddlflags" in
7623 '') case "$osname" in
7624 beos) dflt='-nostart' ;;
7625 hpux) dflt='-b';
7626 case "$gccversion" in
7627 '') dflt="$dflt +vnocompatwarnings" ;;
7628 esac
7629 ;;
fb2e1bc0 7630 linux|irix*|gnu*) dflt='-shared' ;;
b4eb6b3d
JH
7631 next) dflt='none' ;;
7632 solaris) dflt='-G' ;;
7633 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7634 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7635 *) dflt='none' ;;
7636 esac
7637 ;;
7638 *) dflt="$lddlflags" ;;
7639 esac
7640
7641 : Try to guess additional flags to pick up local libraries.
7642 : Be careful not to append to a plain 'none'
7643 case "$dflt" in
7644 none) dflt='' ;;
7645 esac
7646 for thisflag in $ldflags; do
7647 case "$thisflag" in
b5b9f165 7648 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7649 case " $dflt " in
7650 *" $thisflag "*) ;;
7651 *) dflt="$dflt $thisflag" ;;
7652 esac
7653 ;;
7654 esac
7655 done
7656
7657 case "$dflt" in
7658 ''|' ') dflt='none' ;;
7659 esac
7660
7661 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7662 . ./myread
7663 case "$ans" in
7664 none) lddlflags=' ' ;;
7665 *) lddlflags="$ans" ;;
7666 esac
7667
7668 cat <<EOM
7669
7670Some systems may require passing special flags to $cc to indicate that
7671the resulting executable will use dynamic linking. To use no flags,
7672say "none".
7673
7674EOM
7675 case "$ccdlflags" in
7676 '') case "$osname" in
fb2e1bc0 7677 linux|hpux|gnu*) dflt='-Wl,-E' ;;
91fc0aa5
AH
7678 next|sunos) dflt='none' ;;
7679 *) dflt='none' ;;
b4eb6b3d
JH
7680 esac ;;
7681 ' ') dflt='none' ;;
7682 *) dflt="$ccdlflags" ;;
7683 esac
7684 rp="Any special flags to pass to $cc to use dynamic linking?"
7685 . ./myread
7686 case "$ans" in
7687 none) ccdlflags=' ' ;;
7688 *) ccdlflags="$ans" ;;
7689 esac
7690 ;;
7691*) usedl="$undef"
7692 ld='ld'
7693 dlsrc='dl_none.xs'
7694 lddlflags=''
7695 ccdlflags=''
7696 ;;
7697esac
7698
7699also=''
7700case "$usedl" in
7701$undef)
7702 # No dynamic loading being used, so don't bother even to prompt.
7703 useshrplib='false'
7704 ;;
7705*) case "$useshrplib" in
7706 '') case "$osname" in
48bcfe03 7707 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7708 dflt=y
7709 also='Building a shared libperl is required for dynamic loading to work on your system.'
7710 ;;
7711 next*)
7712 case "$osvers" in
7713 4*) dflt=y
7714 also='Building a shared libperl is needed for MAB support.'
7715 ;;
7716 *) dflt=n
7717 ;;
7718 esac
7719 ;;
7720 *) dflt=n
7721 ;;
7722 esac
7723 ;;
7724 $define|true|[Yy]*)
7725 dflt=y
7726 ;;
7727 *) dflt=n
7728 ;;
7729 esac
7730 $cat << EOM
7731
7732The perl executable is normally obtained by linking perlmain.c with
7733libperl${_a}, any static extensions (usually just DynaLoader), and
7734any other libraries needed on this system (such as -lm, etc.). Since
7735your system supports dynamic loading, it is probably possible to build
7736a shared libperl.$so. If you will have more than one executable linked
7737to libperl.$so, this will significantly reduce the size of each
7738executable, but it may have a noticeable affect on performance. The
7739default is probably sensible for your system.
7740$also
7741
7742EOM
7743 rp="Build a shared libperl.$so (y/n)"
7744 . ./myread
7745 case "$ans" in
7746 true|$define|[Yy]*)
7747 useshrplib='true' ;;
7748 *) useshrplib='false' ;;
7749 esac
7750 ;;
7751esac
7752
7753case "$useshrplib" in
7754true)
7755 case "$libperl" in
7756 '')
7757 # Figure out a good name for libperl.so. Since it gets stored in
7758 # a version-specific architecture-dependent library, the version
7759 # number isn't really that important, except for making cc/ld happy.
7760 #
7761 # A name such as libperl.so.3.1
7762 majmin="libperl.$so.$patchlevel.$subversion"
7763 # A name such as libperl.so.301
7764 majonly=`echo $patchlevel $subversion |
7765 $awk '{printf "%d%02d", $1, $2}'`
7766 majonly=libperl.$so.$majonly
7767 # I'd prefer to keep the os-specific stuff here to a minimum, and
7768 # rely on figuring it out from the naming of libc.
7769 case "${osname}${osvers}" in
7770 next4*)
7771 dflt=libperl.5.$so
7772 # XXX How handle the --version stuff for MAB?
7773 ;;
fb2e1bc0 7774 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
b4eb6b3d
JH
7775 dflt=libperl.$so
7776 ;;
b53432e4
GH
7777 cygwin*) # ld links against an importlib
7778 dflt=libperl$lib_ext
b4eb6b3d
JH
7779 ;;
7780 *) # Try to guess based on whether libc has major.minor.
7781 case "$libc" in
7782 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7783 *libc.$so.[0-9]*) dflt=$majonly ;;
7784 *) dflt=libperl.$so ;;
7785 esac
7786 ;;
7787 esac
7788 ;;
7789 *) dflt=$libperl
7790 ;;
7791 esac
7792 cat << EOM
7793
7794I need to select a good name for the shared libperl. If your system uses
7795library names with major and minor numbers, then you might want something
7796like $majmin. Alternatively, if your system uses a single version
7797number for shared libraries, then you might want to use $majonly.
7798Or, your system might be quite happy with a simple libperl.$so.
7799
7800Since the shared libperl will get installed into a version-specific
7801architecture-dependent directory, the version number of the shared perl
7802library probably isn't important, so the default should be o.k.
7803
7804EOM
7805 rp='What name do you want to give to the shared libperl?'
7806 . ./myread
7807 libperl=$ans
7808 echo "Ok, I'll use $libperl"
7809 ;;
7810*)
7811 libperl="libperl${_a}"
7812 ;;
7813esac
7814
7815# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7816case "$shrpdir" in
7817'') ;;
7818*) $cat >&4 <<EOM
7819WARNING: Use of the shrpdir variable for the installation location of
7820the shared $libperl is not supported. It was never documented and
7821will not work in this version. Let me (perlbug@perl.org)
7822know of any problems this may cause.
7823
7824EOM
7825 case "$shrpdir" in
7826 "$archlibexp/CORE")
7827 $cat >&4 <<EOM
7828But your current setting of $shrpdir is
7829the default anyway, so it's harmless.
7830EOM
7831 ;;
7832 *)
7833 $cat >&4 <<EOM
7834Further, your current attempted setting of $shrpdir
7835conflicts with the value of $archlibexp/CORE
7836that installperl will use.
7837EOM
7838 ;;
7839 esac
7840 ;;
7841esac
7842
7843# How will the perl executable find the installed shared $libperl?
7844# Add $xxx to ccdlflags.
7845# If we can't figure out a command-line option, use $shrpenv to
7846# set env LD_RUN_PATH. The main perl makefile uses this.
7847shrpdir=$archlibexp/CORE
7848xxx=''
7849tmp_shrpenv=''
7850if "$useshrplib"; then
7851 case "$osname" in
7852 aix)
7853 # We'll set it in Makefile.SH...
7854 ;;
b5b9f165 7855 solaris)
b4eb6b3d
JH
7856 xxx="-R $shrpdir"
7857 ;;
46fcf6af 7858 freebsd|netbsd|openbsd|interix)
b4eb6b3d
JH
7859 xxx="-Wl,-R$shrpdir"
7860 ;;
fb2e1bc0 7861 bsdos|linux|irix*|dec_osf|gnu*)
b4eb6b3d
JH
7862 xxx="-Wl,-rpath,$shrpdir"
7863 ;;
7864 next)
7865 # next doesn't like the default...
7866 ;;
7867 beos)
7868 # beos doesn't like the default, either.
7869 ;;
7870 hpux*)
7871 # hpux doesn't like the default, either.
7872 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7873 ;;
7874 *)
7875 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7876 ;;
7877 esac
7878 case "$xxx" in
7879 '') ;;
7880 *)
7881 # Only add $xxx if it isn't already in ccdlflags.
7882 case " $ccdlflags " in
7883 *" $xxx "*) ;;
7884 *) ccdlflags="$ccdlflags $xxx"
7885 cat <<EOM >&4
7886
7887Adding $xxx to the flags
7888passed to $ld so that the perl executable will find the
7889installed shared $libperl.
7890
7891EOM
7892 ;;
7893 esac
7894 ;;
7895 esac
7896fi
7897# Fix ccdlflags in AIX for building external extensions.
7898# (For building Perl itself bare -bE:perl.exp is needed,
7899# Makefile.SH takes care of this.)
7900case "$osname" in
7901aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7902esac
7903# Respect a hint or command-line value.
7904case "$shrpenv" in
7905'') shrpenv="$tmp_shrpenv" ;;
7906esac
7907case "$ldlibpthname" in
7908'') ldlibpthname=LD_LIBRARY_PATH ;;
7909none) ldlibpthname='' ;;
7910esac
7911
7912: determine where manual pages are on this system
7913echo " "
7914case "$sysman" in
7915'')
4a0a3829
SD
7916 syspath='/usr/share/man/man1 /usr/man/man1'
7917 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7918 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7919 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7920 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7921 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7922 sysman=`./loc . /usr/man/man1 $syspath`
7923 ;;
7924esac
7925if $test -d "$sysman"; then
7926 echo "System manual is in $sysman." >&4
7927else
7928 echo "Could not find manual pages in source form." >&4
7929fi
7930
7931: determine where manual pages go
7932set man1dir man1dir none
7933eval $prefixit
7934$cat <<EOM
7935
7936$spackage has manual pages available in source form.
7937EOM
7938case "$nroff" in
7939nroff)
7940 echo "However, you don't have nroff, so they're probably useless to you."
7941 case "$man1dir" in
7942 '') man1dir="none";;
7943 esac;;
7944esac
7945echo "If you don't want the manual sources installed, answer 'none'."
7946case "$man1dir" in
7947' ') dflt=none
7948 ;;
7949'')
4a0a3829
SD
7950 lookpath="$prefixexp/share/man/man1"
7951 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7952 lookpath="$lookpath $prefixexp/man/p_man/man1"
7953 lookpath="$lookpath $prefixexp/man/u_man/man1"
7954 lookpath="$lookpath $prefixexp/man/man.1"
7955 case "$sysman" in
7956 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7957 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7958 esac
7959 set dflt
7960 eval $prefixup
7961 ;;
7962*) dflt="$man1dir"
7963 ;;
7964esac
7965echo " "
7966fn=dn+~
7967rp="Where do the main $spackage manual pages (source) go?"
7968. ./getfile
7969if $test "X$man1direxp" != "X$ansexp"; then
7970 installman1dir=''
7971fi
7972man1dir="$ans"
7973man1direxp="$ansexp"
7974case "$man1dir" in
7975'') man1dir=' '
7976 installman1dir='';;
7977esac
7978
7979: Change installation prefix, if necessary.
7980if $test X"$prefix" != X"$installprefix"; then
7981 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7982else
7983 installman1dir="$man1direxp"
7984fi
7985
7986: What suffix to use on installed man pages
7987
7988case "$man1dir" in
7989' ')
7990 man1ext='0'
7991 ;;
7992*)
7993 rp="What suffix should be used for the main $spackage man pages?"
7994 case "$man1ext" in
7995 '') case "$man1dir" in
7996 *1) dflt=1 ;;
7997 *1p) dflt=1p ;;
7998 *1pm) dflt=1pm ;;
7999 *l) dflt=l;;
8000 *n) dflt=n;;
8001 *o) dflt=o;;
8002 *p) dflt=p;;
8003 *C) dflt=C;;
8004 *L) dflt=L;;
8005 *L1) dflt=L1;;
8006 *) dflt=1;;
8007 esac
8008 ;;
8009 *) dflt="$man1ext";;
8010 esac
8011 . ./myread
8012 man1ext="$ans"
8013 ;;
8014esac
8015
8016: see if we can have long filenames
8017echo " "
8018first=123456789abcdef
8019$rm -f $first
8020if (echo hi >$first) 2>/dev/null; then
8021 if $test -f 123456789abcde; then
8022 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8023 val="$undef"
8024 else
8025 echo 'You can have filenames longer than 14 characters.'>&4
8026 val="$define"
8027 fi
8028else
8029 $cat <<'EOM'
8030You can't have filenames longer than 14 chars.
8031You can't even think about them!
8032EOM
8033 val="$undef"
8034fi
8035set d_flexfnam
8036eval $setvar
8037$rm -rf 123456789abcde*
8038
8039: determine where library module manual pages go
8040set man3dir man3dir none
8041eval $prefixit
8042$cat <<EOM
8043
8044$spackage has manual pages for many of the library modules.
8045EOM
8046
8047case "$nroff" in
8048nroff)
8049 $cat <<'EOM'
8050However, you don't have nroff, so they're probably useless to you.
8051EOM
8052 case "$man3dir" in
8053 '') man3dir="none";;
8054 esac;;
8055esac
8056
8057case "$d_flexfnam" in
8058undef)
8059 $cat <<'EOM'
8060However, your system can't handle the long file names like File::Basename.3.
8061EOM
8062 case "$man3dir" in
8063 '') man3dir="none";;
8064 esac;;
8065esac
8066
8067echo "If you don't want the manual sources installed, answer 'none'."
8068prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8069case "$man3dir" in
8070'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8071 if $test -d "$privlib/man/man3"; then
8072 cat <<EOM >&4
8073
8074WARNING: Previous versions of perl installed man3 pages into
8075$privlib/man/man3. This version will suggest a
8076new default of $dflt.
8077EOM
8078 tdflt=$dflt
8079 dflt='n'
8080 rp='Do you wish to preserve the old behavior?(y/n)'
8081 . ./myread
8082 case "$ans" in
8083 y*) dflt="$privlib/man/man3" ;;
8084 *) dflt=$tdflt ;;
8085 esac
8086 fi
8087 ;;
8088*) dflt="$man3dir" ;;
8089esac
8090case "$dflt" in
8091' ') dflt=none ;;
8092esac
8093echo " "
8094fn=dn+~
8095rp="Where do the $package library man pages (source) go?"
8096. ./getfile
8097man3dir="$ans"
8098man3direxp="$ansexp"
8099case "$man3dir" in
8100'') man3dir=' '
8101 installman3dir='';;
8102esac
8103
8104: Change installation prefix, if necessary.
8105if $test X"$prefix" != X"$installprefix"; then
8106 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8107else
8108 installman3dir="$man3direxp"
8109fi
8110
8111: What suffix to use on installed man pages
8112case "$man3dir" in
8113' ')
8114 man3ext='0'
8115 ;;
8116*)
8117 rp="What suffix should be used for the $package library man pages?"
8118 case "$man3ext" in
8119 '') case "$man3dir" in
8120 *3) dflt=3 ;;
8121 *3p) dflt=3p ;;
8122 *3pm) dflt=3pm ;;
8123 *l) dflt=l;;
8124 *n) dflt=n;;
8125 *o) dflt=o;;
8126 *p) dflt=p;;
8127 *C) dflt=C;;
8128 *L) dflt=L;;
8129 *L3) dflt=L3;;
8130 *) dflt=3;;
8131 esac
8132 ;;
8133 *) dflt="$man3ext";;
8134 esac
8135 . ./myread
8136 man3ext="$ans"
8137 ;;
8138esac
8139
8140: see if we have to deal with yellow pages, now NIS.
0384a54a 8141if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
8142 if $test -f /usr/etc/nibindd; then
8143 echo " "
8144 echo "I'm fairly confident you're on a NeXT."
8145 echo " "
8146 rp='Do you get the hosts file via NetInfo?'
8147 dflt=y
8148 case "$hostcat" in
8149 nidump*) ;;
8150 '') ;;
8151 *) dflt=n;;
8152 esac
8153 . ./myread
8154 case "$ans" in
8155 y*) hostcat='nidump hosts .';;
8156 *) case "$hostcat" in
8157 nidump*) hostcat='';;
8158 esac
8159 ;;
8160 esac
8161 fi
8162 case "$hostcat" in
8163 nidump*) ;;
8164 *)
8165 case "$hostcat" in
8166 *ypcat*) dflt=y;;
8167 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8168 dflt=y
8169 else
8170 dflt=n
8171 fi;;
8172 *) dflt=n;;
8173 esac
8174 echo " "
8175 rp='Are you getting the hosts file via yellow pages?'
8176 . ./myread
8177 case "$ans" in
8178 y*) hostcat='ypcat hosts';;
8179 *) hostcat='cat /etc/hosts';;
8180 esac
8181 ;;
8182 esac
8183fi
8184case "$hostcat" in
8185'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8186esac
8187case "$groupcat" in
8188'') test -f /etc/group && groupcat='cat /etc/group';;
8189esac
8190case "$passcat" in
8191'') test -f /etc/passwd && passcat='cat /etc/passwd';;
8192esac
8193
8194: now get the host name
8195echo " "
8196echo "Figuring out host name..." >&4
8197case "$myhostname" in
8198'') cont=true
8199 echo 'Maybe "hostname" will work...'
73614538 8200 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
8201 myhostname=$tans
8202 phostname=hostname
8203 cont=''
8204 fi
8205 ;;
8206*) cont='';;
8207esac
8208if $test "$cont"; then
8209 if ./xenix; then
8210 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8211 if tans=`cat /etc/systemid 2>&1` ; then
8212 myhostname=$tans
8213 phostname='cat /etc/systemid'
8214 echo "Whadyaknow. Xenix always was a bit strange..."
8215 cont=''
8216 fi
8217 elif $test -r /etc/systemid; then
8218 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8219 fi
8220fi
8221if $test "$cont"; then
8222 echo 'No, maybe "uuname -l" will work...'
73614538 8223 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8224 myhostname=$tans
8225 phostname='uuname -l'
8226 else
8227 echo 'Strange. Maybe "uname -n" will work...'
73614538 8228 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8229 myhostname=$tans
8230 phostname='uname -n'
8231 else
8232 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8233 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8234 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8235 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8236 else
8237 case "$myhostname" in
8238 '') echo "Does this machine have an identity crisis or something?"
8239 phostname='';;
8240 *)
8241 echo "Well, you said $myhostname before..."
8242 phostname='echo $myhostname';;
8243 esac
8244 fi
8245 fi
8246 fi
8247fi
52a549d0
JH
8248case "$myhostname" in
8249'') myhostname=noname ;;
8250esac
b4eb6b3d
JH
8251: you do not want to know about this
8252set $myhostname
8253myhostname=$1
8254
8255: verify guess
8256if $test "$myhostname" ; then
8257 dflt=y
8258 rp='Your host name appears to be "'$myhostname'".'" Right?"
8259 . ./myread
8260 case "$ans" in
8261 y*) ;;
8262 *) myhostname='';;
8263 esac
8264fi
8265
8266: bad guess or no guess
8267while $test "X$myhostname" = X ; do
8268 dflt=''
8269 rp="Please type the (one word) name of your host:"
8270 . ./myread
8271 myhostname="$ans"
8272done
8273
8274: translate upper to lower if necessary
8275case "$myhostname" in
8276*[A-Z]*)
8277 echo "(Normalizing case in your host name)"
8278 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8279 ;;
8280esac
8281
8282case "$myhostname" in
8283*.*)
8284 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8285 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8286 echo "(Trimming domain name from host name--host name is now $myhostname)"
8287 ;;
8288*) case "$mydomain" in
8289 '')
8290 {
8291 test "X$hostcat" = "Xypcat hosts" &&
8292 ypmatch "$myhostname" hosts 2>/dev/null |\
8293 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8294 $test -s hosts
8295 } || {
8296 test "X$hostcat" != "X" &&
8297 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8298 /[ ]$myhostname[ . ]/p" > hosts
8299 }
8300 tmp_re="[ . ]"
f08cbdd1
PP
8301 if $test -f hosts; then
8302 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8303 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8304 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8305 hosts | $sort | $uniq | \
8306 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8307 case `$echo X$dflt` in
8308 X*\ *) echo "(Several hosts in the database matched hostname)"
8309 dflt=.
8310 ;;
8311 X.) echo "(You do not have fully-qualified names in the hosts database)"
8312 ;;
8313 esac
8314 else
8315 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8316 dflt=.
f08cbdd1 8317 fi
b4eb6b3d
JH
8318 case "$dflt" in
8319 .)
8320 tans=`./loc resolv.conf X /etc /usr/etc`
8321 if $test -f "$tans"; then
8322 echo "(Attempting domain name extraction from $tans)"
8323 dflt=.`$sed -n -e 's/ / /g' \
8324 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8325 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8326 case "$dflt" in
8327 .) dflt=.`$sed -n -e 's/ / /g' \
8328 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8329 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8330 ;;
8331 esac
8332 fi
8333 ;;
8334 esac
8335 case "$dflt" in
8336 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8337 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8338 case "$dflt" in
8339 '') dflt='.';;
8340 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8341 esac
8342 ;;
8343 esac
59c9e5d6
PP
8344 case "$dflt$osname" in
8345 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8346 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8347 ;;
8348 esac
b4eb6b3d
JH
8349 case "$dflt" in
8350 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8351 dflt='.nonet'
b4eb6b3d
JH
8352 ;;
8353 esac
8354 $rm -f hosts
8355 ;;
8356 *) dflt="$mydomain";;
8357 esac;;
8358esac
8359echo " "
8360rp="What is your domain name?"
8361. ./myread
8362tans="$ans"
8363case "$ans" in
8364'') ;;
8365.*) ;;
8366*) tans=".$tans";;
8367esac
8368mydomain="$tans"
8369
8370: translate upper to lower if necessary
8371case "$mydomain" in
8372*[A-Z]*)
8373 echo "(Normalizing case in your domain name)"
8374 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8375 ;;
8376esac
8377
8378: a little sanity check here
8379case "$phostname" in
8380'') ;;
8381*)
8382 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8383 $myhostname$mydomain|$myhostname) ;;
8384 *)
8385 case "$phostname" in
8386 sed*)
8387 echo "(That doesn't agree with your whoami.h file, by the way.)"
8388 ;;
8389 *)
8390 echo "(That doesn't agree with your $phostname command, by the way.)"
8391 ;;
8392 esac
8393 ;;
8394 esac
8395 ;;
8396esac
8397
8398$cat <<EOM
8399
8400I need to get your e-mail address in Internet format if possible, i.e.
8401something like user@host.domain. Please answer accurately since I have
8402no easy means to double check it. The default value provided below
8403is most probably close to reality but may not be valid from outside
8404your organization...
8405
8406EOM
8407cont=x
8408while test "$cont"; do
8409 case "$cf_email" in
8410 '') dflt="$cf_by@$myhostname$mydomain";;
8411 *) dflt="$cf_email";;
8412 esac
8413 rp='What is your e-mail address?'
8414 . ./myread
8415 cf_email="$ans"
8416 case "$cf_email" in
8417 *@*.*) cont='' ;;
8418 *)
8419 rp='Address does not look like an Internet one. Use it anyway?'
8420 case "$fastread" in
8421 yes) dflt=y ;;
8422 *) dflt=n ;;
8423 esac
8424 . ./myread
8425 case "$ans" in
8426 y*) cont='' ;;
8427 *) echo " " ;;
8428 esac
8429 ;;
8430 esac
8431done
8432
8433$cat <<EOM
8434
8435If you or somebody else will be maintaining perl at your site, please
8436fill in the correct e-mail address here so that they may be contacted
8437if necessary. Currently, the "perlbug" program included with perl
8438will send mail to this address in addition to perlbug@perl.org. You may
8439enter "none" for no administrator.
8440
8441EOM
8442case "$perladmin" in
8443'') dflt="$cf_email";;
8444*) dflt="$perladmin";;
8445esac
8446rp='Perl administrator e-mail address'
8447. ./myread
8448perladmin="$ans"
8449
674912d7
RB
8450: determine whether to only install version-specific parts.
8451echo " "
8452$cat <<EOM
8453Do you want to install only the version-specific parts of the perl
8454distribution? Usually you do *not* want to do this.
8455EOM
8456case "$versiononly" in
8457"$define"|[Yy]*|true) dflt='y' ;;
8458*) dflt='n';
8459esac
8460rp="Do you want to install only the version-specific parts of perl?"
8461. ./myread
8462case "$ans" in
8463[yY]*) val="$define";;
8464*) val="$undef" ;;
8465esac
8466set versiononly
8467eval $setvar
8468
ad493445
MB
8469case "$versiononly" in
8470"$define") inc_version_list=''
8471 inc_version_list_init=0
8472 ;;
8473esac
8474
b4eb6b3d
JH
8475: figure out how to guarantee perl startup
8476case "$startperl" in
8477'')
8478 case "$sharpbang" in
8479 *!)
8480 $cat <<EOH
8481
8482I can use the #! construct to start perl on your system. This will
8483make startup of perl scripts faster, but may cause problems if you
8484want to share those scripts and perl is not in a standard place
8485($binexp/perl) on all your platforms. The alternative is to force
8486a shell by starting the script with a single ':' character.
8487
8488EOH
674912d7
RB
8489 case "$versiononly" in
8490 "$define") dflt="$binexp/perl$version";;
8491 *) dflt="$binexp/perl";;
8492 esac
b4eb6b3d
JH
8493 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8494 . ./myread
8495 case "$ans" in
8496 none) startperl=": # use perl";;
8497 *) startperl="#!$ans"
8498 if $test 30 -lt `echo "$ans" | wc -c`; then
8499 $cat >&4 <<EOM
8500
8501WARNING: Some systems limit the #! command to 32 characters.
8502If you experience difficulty running Perl scripts with #!, try
8503installing Perl in a directory with a shorter pathname.
8504
8505EOM
8506 fi ;;
8507 esac
8508 ;;
8509 *) startperl=": # use perl"
8510 ;;
8511 esac
8512 ;;
8513esac
8514echo "I'll use $startperl to start perl scripts."
8515
8516: figure best path for perl in scripts
8517case "$perlpath" in
8518'')
5e20a8ca
RGS
8519 case "$versiononly" in
8520 "$define") perlpath="$binexp/perl$version";;
8521 *) perlpath="$binexp/perl";;
8522 esac
b4eb6b3d
JH
8523 case "$startperl" in
8524 *!*) ;;
8525 *)
8526 $cat <<EOH
8527
8528I will use the "eval 'exec'" idiom to start Perl on your system.
8529I can use the full path of your Perl binary for this purpose, but
8530doing so may cause problems if you want to share those scripts and
8531Perl is not always in a standard place ($binexp/perl).
8532
8533EOH
8534 dflt="$binexp/perl"
8535 rp="What path shall I use in \"eval 'exec'\"?"
8536 . ./myread
8537 perlpath="$ans"
8538 ;;
8539 esac
8540 ;;
8541esac
8542case "$startperl" in
8543*!*) ;;
8544*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8545esac
8546
8547: determine where public executable scripts go
8548set scriptdir scriptdir
8549eval $prefixit
8550case "$scriptdir" in
8551'')
8552 dflt="$bin"
8553 : guess some guesses
8554 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8555 $test -d /usr/share/bin && dflt=/usr/share/bin
8556 $test -d /usr/local/script && dflt=/usr/local/script
8557 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8558 $test -d $prefixexp/script && dflt=$prefixexp/script
8559 set dflt
8560 eval $prefixup
8561 ;;
8562*) dflt="$scriptdir"
8563 ;;
8564esac
8565$cat <<EOM
8566
8567Some installations have a separate directory just for executable scripts so
8568that they can mount it across multiple architectures but keep the scripts in
8569one spot. You might, for example, have a subdirectory of /usr/share for this.
8570Or you might just lump your scripts in with all your other executables.
8571
8572EOM
8573fn=d~
8574rp='Where do you keep publicly executable scripts?'
8575. ./getfile
8576if $test "X$ansexp" != "X$scriptdirexp"; then
8577 installscript=''
8578fi
8579scriptdir="$ans"
8580scriptdirexp="$ansexp"
8581: Change installation prefix, if necessary.
8582if $test X"$prefix" != X"$installprefix"; then
8583 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8584else
8585 installscript="$scriptdirexp"
8586fi
8587
8588: determine where add-on public executables go
8589case "$sitebin" in
8590'') dflt=$siteprefix/bin ;;
8591*) dflt=$sitebin ;;
8592esac
8593fn=d~
8594rp='Pathname where the add-on public executables should be installed?'
8595. ./getfile
8596sitebin="$ans"
8597sitebinexp="$ansexp"
8598: Change installation prefix, if necessary.
8599if $test X"$prefix" != X"$installprefix"; then
8600 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8601else
8602 installsitebin="$sitebinexp"
8603fi
8604
6e1038e0 8605: determine where add-on html pages go
8d2cbf27 8606: There is no standard location, so try to copy the previously-selected
6e1038e0 8607: directory structure for the core html pages.
8d2cbf27
JH
8608case "$sitehtml1dir" in
8609'') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8610*) dflt=$sitehtml1dir ;;
6e1038e0
MB
8611esac
8612case "$dflt" in
8613''|' ') dflt=none ;;
8614esac
8615fn=dn+~
8616rp='Pathname where the site-specific html pages should be installed?'
8617. ./getfile
8d2cbf27
JH
8618sitehtml1dir="$ans"
8619sitehtml1direxp="$ansexp"
6e1038e0
MB
8620: Change installation prefix, if necessary.
8621if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8622 installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8623else
8d2cbf27 8624 installsitehtml1dir="$sitehtml1direxp"
6e1038e0
MB
8625fi
8626
8627: determine where add-on library html pages go
8628: There is no standard location, so try to copy the previously-selected
8629: directory structure for the core html pages.
8d2cbf27
JH
8630case "$sitehtml3dir" in
8631'') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8632*) dflt=$sitehtml3dir ;;
6e1038e0
MB
8633esac
8634case "$dflt" in
8635''|' ') dflt=none ;;
8636esac
8637fn=dn+~
8638rp='Pathname where the site-specific library html pages should be installed?'
8639. ./getfile
8d2cbf27
JH
8640sitehtml3dir="$ans"
8641sitehtml3direxp="$ansexp"
6e1038e0
MB
8642: Change installation prefix, if necessary.
8643if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8644 installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8645else
8d2cbf27 8646 installsitehtml3dir="$sitehtml3direxp"
6e1038e0
MB
8647fi
8648
8649: determine where add-on manual pages go
91e123a8
JH
8650case "$siteman1dir" in
8651'') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8652*) dflt=$siteman1dir ;;
6e1038e0 8653esac
257059b5
JH
8654case "$dflt" in
8655''|' ') dflt=none ;;
8656esac
6e1038e0
MB
8657fn=dn+~
8658rp='Pathname where the site-specific manual pages should be installed?'
8659. ./getfile
91e123a8
JH
8660siteman1dir="$ans"
8661siteman1direxp="$ansexp"
6e1038e0
MB
8662: Change installation prefix, if necessary.
8663if $test X"$prefix" != X"$installprefix"; then
91e123a8 8664 installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8665else
91e123a8 8666 installsiteman1dir="$siteman1direxp"
6e1038e0
MB
8667fi
8668
8669: determine where add-on library man pages go
91e123a8
JH
8670case "$siteman3dir" in
8671'') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8672*) dflt=$siteman3dir ;;
6e1038e0 8673esac
257059b5
JH
8674case "$dflt" in
8675''|' ') dflt=none ;;
8676esac
6e1038e0
MB
8677fn=dn+~
8678rp='Pathname where the site-specific library manual pages should be installed?'
8679. ./getfile
91e123a8
JH
8680siteman3dir="$ans"
8681siteman3direxp="$ansexp"
6e1038e0
MB
8682: Change installation prefix, if necessary.
8683if $test X"$prefix" != X"$installprefix"; then
91e123a8 8684 installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8685else
91e123a8 8686 installsiteman3dir="$siteman3direxp"
6e1038e0
MB
8687fi
8688
8689: determine where add-on public executable scripts go
8690case "$sitescript" in
8691'') dflt=$siteprefix/script
8692 $test -d $dflt || dflt=$sitebin ;;
8693*) dflt="$sitescript" ;;
8694esac
8695fn=d~+
8696rp='Pathname where add-on public executable scripts should be installed?'
8697. ./getfile
8698sitescript="$ans"
8699sitescriptexp="$ansexp"
8700: Change installation prefix, if necessary.
8701if $test X"$prefix" != X"$installprefix"; then
8702 installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8703else
8704 installsitescript="$sitescriptexp"
8705fi
8706
15b61c98
JH
8707case "$usefaststdio" in
8708$define|true|[yY]*|'')
8709 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8710 case "$xversion" in
8711 [68]) dflt='y' ;;
8712 *) dflt='n' ;;
8713 esac
8714 ;;
8715*) dflt='n';;
8716esac
8717cat <<EOM
8718
8719Perl can be built to use 'fast stdio', which means using the stdio
8720library but also directly manipulating the stdio buffers to enable
8721faster I/O. Using stdio is better for backward compatibility (especially
8722for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8723interface has been preferred instead of stdio.
8724
8725If this doesn't make any sense to you, just accept the default '$dflt'.
8726EOM
8727rp='Use the "fast stdio" if available?'
8728. ./myread
8729case "$ans" in
8730y|Y) val="$define" ;;
8731*) val="$undef" ;;
8732esac
8733set usefaststdio
8734eval $setvar
8735
8736
96056487
JH
8737: define an is-a-typedef? function
8738typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8739case "$inclist" in
8740"") inclist="sys/types.h";;
8741esac;
8742eval "varval=\$$var";
8743case "$varval" in
8744"")
8745 $rm -f temp.c;
8746 for inc in $inclist; do
8747 echo "#include <$inc>" >>temp.c;
8748 done;
8749 echo "#ifdef $type" >> temp.c;
8750 echo "printf(\"We have $type\");" >> temp.c;
8751 echo "#endif" >> temp.c;
8752 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8753 if $contains $type temp.E >/dev/null 2>&1; then
8754 eval "$var=\$type";
8755 else
8756 eval "$var=\$def";
8757 fi;
8758 $rm -f temp.?;;
8759*) eval "$var=\$varval";;
8760esac'
8761
8762: define an is-a-typedef? function that prompts if the type is not available.
8763typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8764case "$inclist" in
8765"") inclist="sys/types.h";;
8766esac;
8767eval "varval=\$$var";
8768case "$varval" in
8769"")
8770 $rm -f temp.c;
8771 for inc in $inclist; do
8772 echo "#include <$inc>" >>temp.c;
8773 done;
8774 echo "#ifdef $type" >> temp.c;
8775 echo "printf(\"We have $type\");" >> temp.c;
8776 echo "#endif" >> temp.c;
8777 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8778 echo " " ;
8779 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8780 if $contains $type temp.E >/dev/null 2>&1; then
8781 echo "$type found." >&4;
8782 eval "$var=\$type";
8783 else
8784 echo "$type NOT found." >&4;
8785 dflt="$def";
8786 . ./myread ;
8787 eval "$var=\$ans";
8788 fi;
8789 $rm -f temp.?;;
8790*) eval "$var=\$varval";;
8791esac'
8792
8793: see what type lseek is declared as in the kernel
8794rp="What is the type used for lseek's offset on this system?"
8795set off_t lseektype long stdio.h sys/types.h
8796eval $typedef_ask
8797
8798echo " "
8799echo "Checking to see how big your file offsets are..." >&4
8800$cat >try.c <<EOCP
8801#include <sys/types.h>
8802#include <stdio.h>
8803int main()
8804{
8805 printf("%d\n", (int)sizeof($lseektype));
8806 return(0);
8807}
8808EOCP
8809set try
8810if eval $compile_ok; then
8811 lseeksize=`$run ./try`
8812 echo "Your file offsets are $lseeksize bytes long."
8813else
8814 dflt=$longsize
8815 echo " "
8816 echo "(I can't seem to compile the test program. Guessing...)"
8817 rp="What is the size of your file offsets (in bytes)?"
8818 . ./myread
8819 lseeksize="$ans"
8820fi
8821$rm -f try.c try
8822
8823: see what type file positions are declared as in the library
8824rp="What is the type for file position used by fsetpos()?"
8825set fpos_t fpostype long stdio.h sys/types.h
8826eval $typedef_ask
8827
8828echo " "
8829case "$fpostype" in
8830*_t) zzz="$fpostype" ;;
8831*) zzz="fpos_t" ;;
8832esac
8833echo "Checking the size of $zzz..." >&4
8834cat > try.c <<EOCP
8835#include <sys/types.h>
8836#include <stdio.h>
d1daaddf
JH
8837#$i_stdlib I_STDLIB
8838#ifdef I_STDLIB
8839#include <stdlib.h>
8840#endif
96056487
JH
8841int main() {
8842 printf("%d\n", (int)sizeof($fpostype));
8843 exit(0);
8844}
8845EOCP
8846set try
8847if eval $compile_ok; then
8848 yyy=`$run ./try`
8849 case "$yyy" in
8850 '') fpossize=4
8851 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8852 ;;
8853 *) fpossize=$yyy
8854 echo "Your $zzz is $fpossize bytes long."
8855 ;;
8856 esac
8857else
8858 dflt="$longsize"
8859 echo " " >&4
8860 echo "(I can't compile the test program. Guessing...)" >&4
8861 rp="What is the size of your file positions (in bytes)?"
8862 . ./myread
8863 fpossize="$ans"
8864fi
8865
96056487
JH
8866# Backward compatibility (uselfs is deprecated).
8867case "$uselfs" in
8868"$define"|true|[yY]*)
8869 cat <<EOM >&4
8870
8871*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8872EOM
8873 uselargefiles="$define"
8874 ;;
8875esac
8876
8877case "$lseeksize:$fpossize" in
88788:8) cat <<EOM
8879
8880You can have files larger than 2 gigabytes.
8881EOM
8882 val="$define" ;;
8883*) case "$uselargefiles" in
8884 "$undef"|false|[nN]*) dflt='n' ;;
8885 *) dflt='y' ;;
8886 esac
8887 cat <<EOM
8888
8889Perl can be built to understand large files (files larger than 2 gigabytes)
8890on some systems. To do so, Configure can be run with -Duselargefiles.
8891
8892If this doesn't make any sense to you, just accept the default '$dflt'.
8893EOM
8894 rp='Try to understand large files, if available?'
8895 . ./myread
8896 case "$ans" in
8897 y|Y) val="$define" ;;
8898 *) val="$undef" ;;
8899 esac
8900 ;;
8901esac
8902set uselargefiles
8903eval $setvar
96056487
JH
8904: Look for a hint-file generated 'call-back-unit'. If the
8905: user has specified that a large files perl is to be built,
8906: we may need to set or change some other defaults.
9da7673b
MB
8907if $test -f uselargefiles.cbu; then
8908 echo "Your platform has some specific hints regarding large file builds, using them..."
8909 . ./uselargefiles.cbu
8910fi
8911case "$uselargefiles" in
8912"$define")
96056487 8913 if $test -f uselargefiles.cbu; then
96056487
JH
8914 echo " "
8915 echo "Rechecking to see how big your file offsets are..." >&4
8916 $cat >try.c <<EOCP
8917#include <sys/types.h>
8918#include <stdio.h>
8919int main()
8920{
8921 printf("%d\n", (int)sizeof($lseektype));
8922 return(0);
8923}
8924EOCP
8925 set try
8926 if eval $compile_ok; then
8927 lseeksize=`$run ./try`
8928 $echo "Your file offsets are now $lseeksize bytes long."
8929 else
8930 dflt="$lseeksize"
8931 echo " "
8932 echo "(I can't seem to compile the test program. Guessing...)"
8933 rp="What is the size of your file offsets (in bytes)?"
8934 . ./myread
8935 lseeksize="$ans"
8936 fi
8937 case "$fpostype" in
8938 *_t) zzz="$fpostype" ;;
8939 *) zzz="fpos_t" ;;
8940 esac
8941 $echo $n "Rechecking the size of $zzz...$c" >&4
8942 $cat > try.c <<EOCP
8943#include <sys/types.h>
8944#include <stdio.h>
55954f19
JH
8945#$i_stdlib I_STDLIB
8946#ifdef I_STDLIB
8947#include <stdlib.h>
8948#endif
96056487
JH
8949int main() {
8950 printf("%d\n", (int)sizeof($fpostype));
073b6de5 8951 return(0);
96056487
JH
8952}
8953EOCP
8954 set try
8955 if eval $compile_ok; then
8956 yyy=`$run ./try`
8957 dflt="$lseeksize"
8958 case "$yyy" in
8959 '') echo " "
8960 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8961 ;;
8962 *) fpossize=$yyy
8963 echo " $fpossize bytes." >&4
8964 ;;
8965 esac
8966 else
8967 dflt="$fpossize"
8968 echo " "
8969 echo "(I can't compile the test program. Guessing...)" >&4
8970 rp="What is the size of your file positions (in bytes)?"
8971 . ./myread
8972 fpossize="$ans"
8973 fi
8974 $rm -f try.c try
8975 fi
8976 ;;
8977esac
8978
db0f2be4
MB
8979# probably will refer to
8980# $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8981need_relocation=0
8982userelocatableinc=undef
8983
b4eb6b3d
JH
8984case "$vendorprefix" in
8985'') d_vendorbin="$undef"
8986 vendorbin=''
8987 vendorbinexp=''
8988 ;;
8989*) d_vendorbin="$define"
8990 : determine where vendor-supplied executables go.
8991 case "$vendorbin" in
8992 '') dflt=$vendorprefix/bin ;;
8993 *) dflt="$vendorbin" ;;
8994 esac
8995 fn=d~+
8996 rp='Pathname for the vendor-supplied executables directory?'
8997 . ./getfile
8998 vendorbin="$ans"
8999 vendorbinexp="$ansexp"
9000 ;;
9001esac
9002: Change installation prefix, if necessary.
9003if $test X"$prefix" != X"$installprefix"; then
9004 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9005else
9006 installvendorbin="$vendorbinexp"
9007fi
9008
6e1038e0 9009case "$vendorprefix" in
8d2cbf27
JH
9010'') vendorhtml1dir=''
9011 vendorhtml1direxp=''
6e1038e0
MB
9012 ;;
9013*) : determine where vendor-supplied 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 "$vendorhtml1dir" in
6e1038e0 9018 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 9019 *) dflt=$vendorhtml1dir ;;
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 vendorhtml1dir="$ans"
9028 vendorhtml1direxp="$ansexp"
6e1038e0
MB
9029 ;;
9030esac
9031: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 9032$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
6e1038e0
MB
9033: Change installation prefix, if necessary.
9034if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 9035 installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9036else
8d2cbf27 9037 installvendorhtml1dir="$vendorhtml1direxp"
6e1038e0
MB
9038fi
9039
9040case "$vendorprefix" in
8d2cbf27
JH
9041'') vendorhtml3dir=''
9042 vendorhtml3direxp=''
6e1038e0
MB
9043 ;;
9044*) : determine where vendor-supplied module html pages go.
9045 : There is no standard location, so try to copy the previously-selected
9046 : directory structure for the core html pages.
9047 : XXX Better default suggestions would be welcome.
8d2cbf27 9048 case "$vendorhtml3dir" in
6e1038e0 9049 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 9050 *) dflt=$vendorhtml3dir ;;
6e1038e0
MB
9051 esac
9052 case "$dflt" in
9053 ''|' ') dflt=none ;;
9054 esac
9055 fn=dn+~
9056 rp='Pathname for the vendor-supplied html pages?'
9057 . ./getfile
8d2cbf27
JH
9058 vendorhtml3dir="$ans"
9059 vendorhtml3direxp="$ansexp"
6e1038e0
MB
9060 ;;
9061esac
9062: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 9063$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
6e1038e0
MB
9064: Change installation prefix, if necessary.
9065if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 9066 installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9067else
8d2cbf27 9068 installvendorhtml3dir="$vendorhtml3direxp"
6e1038e0
MB
9069fi
9070
9071case "$vendorprefix" in
91e123a8
JH
9072'') vendorman1dir=''
9073 vendorman1direxp=''
6e1038e0
MB
9074 ;;
9075*) : determine where vendor-supplied manual pages go.
91e123a8 9076 case "$vendorman1dir" in
6e1038e0 9077 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9078 *) dflt=$vendorman1dir ;;
6e1038e0
MB
9079 esac
9080 case "$dflt" in
9081 ''|' ') dflt=none ;;
9082 esac
9083 fn=nd~+
9084 rp='Pathname for the vendor-supplied manual section 1 pages?'
9085 . ./getfile
91e123a8
JH
9086 vendorman1dir="$ans"
9087 vendorman1direxp="$ansexp"
6e1038e0
MB
9088 ;;
9089esac
9090: Use ' ' for none so value is preserved next time through Configure
91e123a8 9091$test X"$vendorman1dir" = "X" && vendorman1dir=' '
6e1038e0
MB
9092: Change installation prefix, if necessary.
9093if $test X"$prefix" != X"$installprefix"; then
91e123a8 9094 installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9095else
91e123a8 9096 installvendorman1dir="$vendorman1direxp"
6e1038e0
MB
9097fi
9098
9099case "$vendorprefix" in
91e123a8
JH
9100'') vendorman3dir=''
9101 vendorman3direxp=''
6e1038e0
MB
9102 ;;
9103*) : determine where vendor-supplied module manual pages go.
91e123a8 9104 case "$vendorman3dir" in
6e1038e0 9105 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9106 *) dflt=$vendorman3dir ;;
6e1038e0
MB
9107 esac
9108 case "$dflt" in
9109 ''|' ') dflt=none ;;
9110 esac
9111 fn=nd~+
9112 rp='Pathname for the vendor-supplied manual section 3 pages?'
9113 . ./getfile
91e123a8
JH
9114 vendorman3dir="$ans"
9115 vendorman3direxp="$ansexp"
6e1038e0
MB
9116 ;;
9117esac
9118: Use ' ' for none so value is preserved next time through Configure
91e123a8 9119$test X"$vendorman3dir" = "X" && vendorman3dir=' '
6e1038e0
MB
9120: Change installation prefix, if necessary.
9121if $test X"$prefix" != X"$installprefix"; then
91e123a8 9122 installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9123else
91e123a8 9124 installvendorman3dir="$vendorman3direxp"
6e1038e0
MB
9125fi
9126
9127case "$vendorprefix" in
9128'') d_vendorscript="$undef"
9129 vendorscript=''
9130 vendorscriptexp=''
9131 ;;
9132*) d_vendorscript="$define"
9133 : determine where vendor-supplied scripts go.
9134 case "$vendorscript" in
9135 '') dflt=$vendorprefix/script
9136 $test -d $dflt || dflt=$vendorbin ;;
9137 *) dflt="$vendorscript" ;;
9138 esac
9139 $cat <<EOM
9140
9141The installation process will create a directory for
9142vendor-supplied scripts.
9143
9144EOM
9145 fn=d~+
9146 rp='Pathname for the vendor-supplied scripts directory?'
9147 . ./getfile
9148 vendorscript="$ans"
9149 vendorscriptexp="$ansexp"
9150 ;;
9151esac
9152: Change installation prefix, if necessary.
9153if $test X"$prefix" != X"$installprefix"; then
9154 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9155else
9156 installvendorscript="$vendorscriptexp"
9157fi
9158
b4eb6b3d
JH
9159: see if qgcvt exists
9160set qgcvt d_qgcvt
9161eval $inlibc
9162
89ce900e
JH
9163echo " "
9164
9165if $test X"$d_longdbl" = X"$define"; then
9166
9167echo "Checking how to print long doubles..." >&4
9168
9169if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9170 $cat >try.c <<'EOCP'
9171#include <sys/types.h>
9172#include <stdio.h>
9173int main() {
9174 double d = 123.456;
9175 printf("%.3f\n", d);
9176}
9177EOCP
9178 set try
9179 if eval $compile; then
9180 yyy=`$run ./try`
9181 case "$yyy" in
9182 123.456)
9183 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9184 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9185 echo "We will use %f."
9186 ;;
9187 esac
9188 fi
9189fi
9190
9191if $test X"$sPRIfldbl" = X; then
9192 $cat >try.c <<'EOCP'
9193#include <sys/types.h>
9194#include <stdio.h>
9195int main() {
9196 long double d = 123.456;
9197 printf("%.3Lf\n", d);
9198}
9199EOCP
9200 set try
9201 if eval $compile; then
9202 yyy=`$run ./try`
9203 case "$yyy" in
9204 123.456)
9205 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9206 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9207 echo "We will use %Lf."
9208 ;;
9209 esac
9210 fi
9211fi
9212
9213if $test X"$sPRIfldbl" = X; then
9214 $cat >try.c <<'EOCP'
9215#include <sys/types.h>
9216#include <stdio.h>
9217int main() {
9218 long double d = 123.456;
9219 printf("%.3llf\n", d);
9220}
9221EOCP
9222 set try
9223 if eval $compile; then
9224 yyy=`$run ./try`
9225 case "$yyy" in
9226 123.456)
9227 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9228 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9229 echo "We will use %llf."
9230 ;;
9231 esac
9232 fi
9233fi
9234
9235if $test X"$sPRIfldbl" = X; then
9236 $cat >try.c <<'EOCP'
9237#include <sys/types.h>
9238#include <stdio.h>
9239int main() {
9240 long double d = 123.456;
9241 printf("%.3lf\n", d);
9242}
9243EOCP
9244 set try
9245 if eval $compile; then
9246 yyy=`$run ./try`
9247 case "$yyy" in
9248 123.456)
9249 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9250 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9251 echo "We will use %lf."
9252 ;;
9253 esac
9254 fi
9255fi
9256
9257if $test X"$sPRIfldbl" = X; then
9258 echo "Cannot figure out how to print long doubles." >&4
9259else
9260 sSCNfldbl=$sPRIfldbl # expect consistency
9261fi
9262
9263$rm -f try try.*
9264
9265fi # d_longdbl
9266
9267case "$sPRIfldbl" in
9268'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9269 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9270 d_SCNfldbl="$undef";
9271 ;;
9272*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9273 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9274 d_SCNfldbl="$define";
9275 ;;
9276esac
9277
b4eb6b3d 9278: Check how to convert floats to strings.
a5b10d80
YST
9279
9280if test "X$d_Gconvert" = X; then
9281
b4eb6b3d
JH
9282echo " "
9283echo "Checking for an efficient way to convert floats to strings."
9284echo " " > try.c
9285case "$uselongdouble" in
9286"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9287esac
9288case "$d_longdbl" in
9289"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9290esac
9291case "$d_PRIgldbl" in
9292"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9293esac
9294$cat >>try.c <<EOP
9295#ifdef TRY_gconvert
9296#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9297char *myname = "gconvert";
9298#endif
9299#ifdef TRY_gcvt
9300#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9301char *myname = "gcvt";
9302#endif
9303#ifdef TRY_qgcvt
9304#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9305char *myname = "qgcvt";
9306#define DOUBLETYPE long double
9307#endif
9308#ifdef TRY_sprintf
a5b10d80
YST
9309#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9310#ifdef HAS_PRIgldbl
b4eb6b3d
JH
9311#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9312#else
a5b10d80
YST
9313#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9314#endif
9315#else
b4eb6b3d
JH
9316#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9317#endif
9318char *myname = "sprintf";
9319#endif
9320
9321#ifndef DOUBLETYPE
9322#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9323#define DOUBLETYPE long double
9324#else
9325#define DOUBLETYPE double
9326#endif
9327#endif
9328
9329#include <stdio.h>
9330
9331#define I_STDLIB $i_stdlib
9332#ifdef I_STDLIB
9333#include <stdlib.h>
9334#endif
9335
9336int
9337checkit(expect, got)
9338char *expect;
9339char *got;
9340{
9341 if (strcmp(expect, got)) {
9342 printf("%s oddity: Expected %s, got %s\n",
9343 myname, expect, got);
9344 exit(1);
9345 }
9346}
9347
9348int main()
9349{
9350 char buf[64];
9351 buf[63] = '\0';
9352
9353 /* This must be 1st test on (which?) platform */
9354 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9355 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9356 checkit("0.1", buf);
9357
a5b10d80
YST
9358 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9359 checkit("0.01", buf);
9360
9361 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9362 checkit("0.001", buf);
9363
9364 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9365 checkit("0.0001", buf);
9366
9367 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9368 if (strlen(buf) > 5)
9369 checkit("9e-005", buf); /* for Microsoft ?? */
9370 else
9371 checkit("9e-05", buf);
9372
b4eb6b3d
JH
9373 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9374 checkit("1", buf);
9375
9376 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9377 checkit("1.1", buf);
9378
9379 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9380 checkit("1.01", buf);
9381
9382 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9383 checkit("1.001", buf);
9384
9385 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9386 checkit("1.0001", buf);
9387
9388 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9389 checkit("1.00001", buf);
9390
9391 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9392 checkit("1.000001", buf);
9393
9394 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9395 checkit("0", buf);
9396
9397 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9398 checkit("-1", buf);
9399
9400 /* Some Linux gcvt's give 1.e+5 here. */
9401 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9402 checkit("100000", buf);
9403
9404 /* Some Linux gcvt's give -1.e+5 here. */
9405 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9406 checkit("-100000", buf);
9407
9408 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9409 checkit("123.456", buf);
9410
ab6ca9f4 9411 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
94b339ad
YST
9412 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9413 /* 34 should be enough to scare even long double
9414 * places into using the e notation. */
ab6ca9f4 9415 if (strlen(buf) > 5)
94b339ad 9416 checkit("1e+034", buf); /* for Microsoft */
ab6ca9f4 9417 else
94b339ad 9418 checkit("1e+34", buf);
8e2a5ede 9419
d1eb8299
YST
9420 /* For Perl, if you add additional tests here, also add them to
9421 * t/base/num.t for benefit of platforms not using Configure or
9422 * overriding d_Gconvert */
9423
b4eb6b3d
JH
9424 exit(0);
9425}
9426EOP
ab6ca9f4 9427: first add preferred functions to our list
a5b10d80 9428xxx_list=""
ab6ca9f4 9429for xxx_convert in $gconvert_preference; do
a5b10d80
YST
9430 case $xxx_convert in
9431 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
ab6ca9f4 9432 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
a5b10d80
YST
9433 esac
9434done
9435: then add any others
9436for xxx_convert in gconvert gcvt sprintf; do
9437 case "$xxx_list" in
9438 *$xxx_convert*) ;;
9439 *) xxx_list="$xxx_list $xxx_convert" ;;
9440 esac
9441done
9442
9443case "$d_longdbl$uselongdouble" in
9444"$define$define")
9445 : again, add prefered functions to our list first
9446 xxx_ld_list=""
ab6ca9f4 9447 for xxx_convert in $gconvert_ld_preference; do
a5b10d80
YST
9448 case $xxx_convert in
9449 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
ab6ca9f4 9450 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
a5b10d80
YST
9451 esac
9452 done
9453 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9454 for xxx_convert in qgcvt sprintf $xxx_list; do
9455 case "$xxx_ld_list" in
9456 $xxx_convert*|*" $xxx_convert"*) ;;
9457 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9458 esac
9459 done
9460 : if sprintf cannot do long doubles, move it to the end
9461 if test "$d_PRIgldbl" != "$define"; then
9462 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9463 fi
9464 : if no qgcvt, remove it
9465 if test "$d_qgcvt" != "$define"; then
9466 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9467 fi
9468 : use the ld_list
9469 xxx_list="$xxx_ld_list"
b4eb6b3d
JH
9470 ;;
9471esac
9472
9473for xxx_convert in $xxx_list; do
9474 echo "Trying $xxx_convert..."
9475 $rm -f try try$_o
9476 set try -DTRY_$xxx_convert
9477 if eval $compile; then
9478 echo "$xxx_convert() found." >&4
5440bc8e 9479 if $run ./try; then
b4eb6b3d
JH
9480 echo "I'll use $xxx_convert to convert floats into a string." >&4
9481 break;
9482 else
9483 echo "...But $xxx_convert didn't work as I expected."
a5b10d80 9484 xxx_convert=''
b4eb6b3d
JH
9485 fi
9486 else
9487 echo "$xxx_convert NOT found." >&4
9488 fi
9489done
ab6ca9f4 9490
a5b10d80
YST
9491if test X$xxx_convert = X; then
9492 echo "*** WHOA THERE!!! ***" >&4
9493 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9494 xxx_convert=sprintf
9495fi
9496
b4eb6b3d
JH
9497case "$xxx_convert" in
9498gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9499gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9500qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9501*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9502 "$define$define$define")
9503 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
a5b10d80
YST
9504 "$define$define$undef")
9505 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
b4eb6b3d
JH
9506 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9507 esac
9508 ;;
9509esac
9510
a5b10d80
YST
9511fi
9512
74cac757
JH
9513: see if _fwalk exists
9514set fwalk d__fwalk
9515eval $inlibc
9516
b4eb6b3d
JH
9517: Initialize h_fcntl
9518h_fcntl=false
9519
9520: Initialize h_sysfile
9521h_sysfile=false
9522
9523: access call always available on UNIX
9524set access d_access
9525eval $inlibc
9526
9527: locate the flags for 'access()'
9528case "$d_access" in
9529"$define")
9530 echo " "
55954f19 9531 $cat >access.c <<EOCP
b4eb6b3d
JH
9532#include <sys/types.h>
9533#ifdef I_FCNTL
9534#include <fcntl.h>
9535#endif
9536#ifdef I_SYS_FILE
9537#include <sys/file.h>
9538#endif
9539#ifdef I_UNISTD
9540#include <unistd.h>
9541#endif
55954f19
JH
9542#$i_stdlib I_STDLIB
9543#ifdef I_STDLIB
9544#include <stdlib.h>
9545#endif
b4eb6b3d
JH
9546int main() {
9547 exit(R_OK);
9548}
9549EOCP
9550 : check sys/file.h first, no particular reason here
9551 if $test `./findhdr sys/file.h` && \
7a282f6d 9552 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9553 h_sysfile=true;
9554 echo "<sys/file.h> defines the *_OK access constants." >&4
9555 elif $test `./findhdr fcntl.h` && \
7a282f6d 9556 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9557 h_fcntl=true;
9558 echo "<fcntl.h> defines the *_OK access constants." >&4
9559 elif $test `./findhdr unistd.h` && \
7a282f6d 9560 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9561 echo "<unistd.h> defines the *_OK access constants." >&4
9562 else
9563 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9564 fi
9565 ;;
9566esac
9567$rm -f access*
9568
9569: see if accessx exists
9570set accessx d_accessx
9571eval $inlibc
9572
89ce900e
JH
9573: see if aintl exists
9574set aintl d_aintl
9575eval $inlibc
9576
b4eb6b3d
JH
9577: see if alarm exists
9578set alarm d_alarm
9579eval $inlibc
9580
a9dade78
JH
9581: see if POSIX threads are available
9582set pthread.h i_pthread
9583eval $inhdr
9584
10bc17b6
JH
9585: define a fucntion to check prototypes
9586$cat > protochk <<EOSH
9587$startsh
9588cc="$cc"
9589optimize="$optimize"
9590ccflags="$ccflags"
9591prototype="$prototype"
9592define="$define"
9593rm=$rm
a9dade78
JH
9594usethreads=$usethreads
9595i_pthread=$i_pthread
9596pthread_h_first=$pthread_h_first
10bc17b6
JH
9597EOSH
9598
9599$cat >> protochk <<'EOSH'
9600
9601$rm -f try.c
9602foo="$1"
9603shift
9604while test $# -ge 2; do
9605 case "$1" in
9606 $define) echo "#include <$2>" >> try.c ;;
9607 literal) echo "$2" >> try.c ;;
9608 esac
cce6a207
MB
9609 # Extra magic for the benefit of systems that need pthread.h
9610 # to be included early to correctly detect threadsafe functions.
9611 # Such functions must guarantee themselves, though, that the usethreads
9612 # and i_pthread have been defined, before calling protochk.
9613 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9614 echo "#include <pthread.h>" >> try.c
9615 pthread_h_done=yes
9616 fi
10bc17b6
JH
9617 shift 2
9618done
9619test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9620cat >> try.c <<'EOCP'
9621#ifdef CAN_PROTOTYPE
9622#define _(args) args
9623#else
9624#define _(args) ()
9625#endif
9626EOCP
9627echo "$foo" >> try.c
9628echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9629$cc $optimize $ccflags -c try.c > /dev/null 2>&1
9630status=$?
9631$rm -f try.[co]
9632exit $status
9633EOSH
9634chmod +x protochk
9635$eunicefix protochk
9636
89ce900e
JH
9637hasproto='varname=$1; func=$2; shift; shift;
9638while $test $# -ge 2; do
9639 case "$1" in
9640 $define) echo "#include <$2>";;
9641 esac ;
9642 shift 2;
9643done > try.c;
9644$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9645if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9646 echo "$func() prototype found.";
9647 val="$define";
9648else
9649 echo "$func() prototype NOT found.";
9650 val="$undef";
9651fi;
9652set $varname;
9653eval $setvar;
9654$rm -f try.c tryout.c'
9655
10bc17b6
JH
9656: see if sys/types.h has to be included
9657set sys/types.h i_systypes
9658eval $inhdr
9659
9660: see if sys/select.h has to be included
9661set sys/select.h i_sysselct
9662eval $inhdr
9663
9664hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9665while $test $# -ge 2; do
9666 case "$1" in
9667 $define) echo "#include <$2>";;
9668 esac ;
9669 shift 2;
9670done > try.c;
9671echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9672set try;
9673if eval $compile; then
9674 val="$define";
9675else
9676 val="$undef";
9677fi;
9678set $varname;
9679eval $setvar;
9680$rm -f try.c try.o'
9681
9682: see if we should include time.h, sys/time.h, or both
9683echo " "
9684if test "X$timeincl" = X; then
9685 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9686 $echo $n "I'm now running the test program...$c"
55954f19 9687 $cat >try.c <<EOCP
10bc17b6
JH
9688#include <sys/types.h>
9689#ifdef I_TIME
9690#include <time.h>
9691#endif
9692#ifdef I_SYSTIME
9693#ifdef SYSTIMEKERNEL
9694#define KERNEL
9695#endif
9696#include <sys/time.h>
9697#endif
9698#ifdef I_SYSSELECT
9699#include <sys/select.h>
9700#endif
55954f19
JH
9701#$i_stdlib I_STDLIB
9702#ifdef I_STDLIB
9703#include <stdlib.h>
9704#endif
10bc17b6
JH
9705int main()
9706{
9707 struct tm foo;
9708#ifdef S_TIMEVAL
9709 struct timeval bar;
9710#endif
9711#ifdef S_TIMEZONE
9712 struct timezone tzp;
9713#endif
9714 if (foo.tm_sec == foo.tm_sec)
9715 exit(0);
9716#ifdef S_TIMEVAL
9717 if (bar.tv_sec == bar.tv_sec)
9718 exit(0);
9719#endif
9720 exit(1);
9721}
9722EOCP
9723 flags=''
9724 for s_timezone in '-DS_TIMEZONE' ''; do
9725 sysselect=''
9726 for s_timeval in '-DS_TIMEVAL' ''; do
9727 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9728 for i_time in '' '-DI_TIME'; do
9729 for i_systime in '-DI_SYSTIME' ''; do
9730 case "$flags" in
9731 '') $echo $n ".$c"
9732 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9733 if eval $compile; then
9734 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9735 shift
9736 flags="$*"
9737 echo " "
9738 $echo $n "Succeeded with $flags$c"
9739 fi
9740 ;;
9741 esac
9742 done
9743 done
9744 done
9745 done
9746 done
9747 timeincl=''
9748 echo " "
9749 case "$flags" in
9750 *SYSTIMEKERNEL*) i_systimek="$define"
9751 timeincl=`./findhdr sys/time.h`
9752 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9753 *) i_systimek="$undef";;
9754 esac
9755 case "$flags" in
9756 *I_TIME*) i_time="$define"
9757 timeincl=`./findhdr time.h`" $timeincl"
9758 echo "We'll include <time.h>." >&4;;
9759 *) i_time="$undef";;
9760 esac
9761 case "$flags" in
9762 *I_SYSTIME*) i_systime="$define"
9763 timeincl=`./findhdr sys/time.h`" $timeincl"
9764 echo "We'll include <sys/time.h>." >&4;;
9765 *) i_systime="$undef";;
9766 esac
9767 $rm -f try.c try
9768fi
9769: see if struct tm knows about tm_zone
9770case "$i_systime$i_time" in
9771*$define*)
9772 echo " "
9773 echo "Checking to see if your struct tm has tm_zone field..." >&4
9774 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9775 eval $hasfield
9776 ;;
9777*) val="$undef"
9778 set d_tm_tm_zone
9779 eval $setvar
9780 ;;
9781esac
9782case "$d_tm_tm_zone" in
9783"$define") echo "Yes, it does." ;;
9784*) echo "No, it doesn't." ;;
9785esac
9786: see if struct tm knows about tm_gmtoff
9787case "$i_systime$i_time" in
9788*$define*)
9789 echo " "
9790 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9791 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9792 eval $hasfield
9793 ;;
9794*) val="$undef"
9795 set d_tm_tm_gmtoff
9796 eval $setvar
9797 ;;
9798esac
9799case "$d_tm_tm_gmtoff" in
9800"$define") echo "Yes, it does." ;;
9801*) echo "No, it doesn't." ;;
9802esac
9803
9804: see if asctime_r exists
9805set asctime_r d_asctime_r
9806eval $inlibc
9807case "$d_asctime_r" in
9808"$define")
d63eadf0 9809 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
9810 case "$d_asctime_r_proto:$usethreads" in
9811 ":define") d_asctime_r_proto=define
a48ec845
JH
9812 set d_asctime_r_proto asctime_r $hdrs
9813 eval $hasproto ;;
9814 *) ;;
9815 esac
9816 case "$d_asctime_r_proto" in
9817 define)
10bc17b6
JH
9818 case "$asctime_r_proto" in
9819 ''|0) try='char* asctime_r(const struct tm*, char*);'
9820 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9821 esac
9822 case "$asctime_r_proto" in
9823 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9824 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9825 esac
9826 case "$asctime_r_proto" in
9827 ''|0) try='int asctime_r(const struct tm*, char*);'
9828 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9829 esac
9830 case "$asctime_r_proto" in
9831 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9832 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9833 esac
9834 case "$asctime_r_proto" in
90e831dc 9835 ''|0) d_asctime_r=undef
10bc17b6 9836 asctime_r_proto=0
a48ec845 9837 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
9838 * ) case "$asctime_r_proto" in
9839 REENTRANT_PROTO*) ;;
9840 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9841 esac
9842 echo "Prototype: $try" ;;
9843 esac
9844 ;;
c18e646a
JH
9845 *) case "$usethreads" in
9846 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9847 esac
90e831dc
SB
9848 d_asctime_r=undef
9849 asctime_r_proto=0
c18e646a 9850 ;;
a48ec845
JH
9851 esac
9852 ;;
10bc17b6
JH
9853*) asctime_r_proto=0
9854 ;;
9855esac
9856
b4eb6b3d
JH
9857: see if atolf exists
9858set atolf d_atolf
9859eval $inlibc
9860
9861: see if atoll exists
9862set atoll d_atoll
9863eval $inlibc
9864
9865: Look for GNU-cc style attribute checking
bde30f85
GA
9866case "$d_attribut" in
9867'')
b4eb6b3d
JH
9868echo " "
9869echo "Checking whether your compiler can handle __attribute__ ..." >&4
9870$cat >attrib.c <<'EOCP'
9871#include <stdio.h>
04fa0c70 9872void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
b4eb6b3d
JH
9873EOCP
9874if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9875 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9876 echo "Your C compiler doesn't fully support __attribute__."
9877 val="$undef"
9878 else
9879 echo "Your C compiler supports __attribute__."
9880 val="$define"
9881 fi
9882else
9883 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9884 val="$undef"
9885fi
bde30f85
GA
9886;;
9887*) val="$d_attribut" ;;
9888esac
b4eb6b3d
JH
9889set d_attribut
9890eval $setvar
9891$rm -f attrib*
9892
9893: see if bcmp exists
9894set bcmp d_bcmp
9895eval $inlibc
9896
9897: see if bcopy exists
9898set bcopy d_bcopy
9899eval $inlibc
9900
9901: see if this is a unistd.h system
9902set unistd.h i_unistd
9903eval $inhdr
9904
9905: see if getpgrp exists
9906set getpgrp d_getpgrp
9907eval $inlibc
9908
9909case "$d_getpgrp" in
9910"$define")
9911 echo " "
9912 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 9913 $cat >try.c <<EOP
b4eb6b3d
JH
9914#$i_unistd I_UNISTD
9915#include <sys/types.h>
9916#ifdef I_UNISTD
9917# include <unistd.h>
9918#endif
55954f19
JH
9919#$i_stdlib I_STDLIB
9920#ifdef I_STDLIB
9921#include <stdlib.h>
9922#endif
b4eb6b3d
JH
9923int main()
9924{
9925 if (getuid() == 0) {
9926 printf("(I see you are running Configure as super-user...)\n");
9927 setuid(1);
9928 }
9929#ifdef TRY_BSD_PGRP
9930 if (getpgrp(1) == 0)
9931 exit(0);
9932#else
9933 if (getpgrp() > 0)
9934 exit(0);
9935#endif
9936 exit(1);
9937}
9938EOP
5440bc8e 9939 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9940 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9941 val="$define"
5440bc8e 9942 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9943 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9944 val="$undef"
9945 else
9946 echo "I can't seem to compile and run the test program."
9947 if ./usg; then
9948 xxx="a USG one, i.e. you use getpgrp()."
9949 else
9950 # SVR4 systems can appear rather BSD-ish.
9951 case "$i_unistd" in
9952 $undef)
9953 xxx="a BSD one, i.e. you use getpgrp(pid)."
9954 val="$define"
9955 ;;
9956 $define)
9957 xxx="probably a USG one, i.e. you use getpgrp()."
9958 val="$undef"
9959 ;;
9960 esac
9961 fi
9962 echo "Assuming your getpgrp is $xxx" >&4
9963 fi
9964 ;;
9965*) val="$undef";;
9966esac
9967set d_bsdgetpgrp
9968eval $setvar
5440bc8e 9969$rm -f try try.*
b4eb6b3d
JH
9970
9971: see if setpgrp exists
9972set setpgrp d_setpgrp
9973eval $inlibc
9974
9975case "$d_setpgrp" in
9976"$define")
9977 echo " "
9978 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 9979 $cat >try.c <<EOP
b4eb6b3d
JH
9980#$i_unistd I_UNISTD
9981#include <sys/types.h>
9982#ifdef I_UNISTD
9983# include <unistd.h>
9984#endif
55954f19
JH
9985#$i_stdlib I_STDLIB
9986#ifdef I_STDLIB
9987#include <stdlib.h>
9988#endif
b4eb6b3d
JH
9989int main()
9990{
9991 if (getuid() == 0) {
9992 printf("(I see you are running Configure as super-user...)\n");
9993 setuid(1);
9994 }
9995#ifdef TRY_BSD_PGRP
9996 if (-1 == setpgrp(1, 1))
9997 exit(0);
9998#else
9999 if (setpgrp() != -1)
10000 exit(0);
10001#endif
10002 exit(1);
10003}
10004EOP
5440bc8e 10005 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
10006 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10007 val="$define"
5440bc8e 10008 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
10009 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10010 val="$undef"
10011 else
10012 echo "(I can't seem to compile and run the test program.)"
10013 if ./usg; then
10014 xxx="a USG one, i.e. you use setpgrp()."
10015 else
10016 # SVR4 systems can appear rather BSD-ish.
10017 case "$i_unistd" in
10018 $undef)
10019 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10020 val="$define"
10021 ;;
10022 $define)
10023 xxx="probably a USG one, i.e. you use setpgrp()."
10024 val="$undef"
10025 ;;
10026 esac
10027 fi
10028 echo "Assuming your setpgrp is $xxx" >&4
10029 fi
10030 ;;
10031*) val="$undef";;
10032esac
10033set d_bsdsetpgrp
10034eval $setvar
5440bc8e 10035$rm -f try try.*
b4eb6b3d
JH
10036: see if bzero exists
10037set bzero d_bzero
10038eval $inlibc
10039
10040: see if signal is declared as pointer to function returning int or void
10041echo " "
10042xxx=`./findhdr signal.h`
10043$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10044if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10045 echo "You have int (*signal())() instead of void." >&4
10046 val="$undef"
10047elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10048 echo "You have void (*signal())()." >&4
10049 val="$define"
10050elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10051 echo "You have int (*signal())() instead of void." >&4
10052 val="$undef"
10053elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10054 echo "You have void (*signal())()." >&4
10055 val="$define"
10056else
10057 case "$d_voidsig" in
10058 '')
10059 echo "I can't determine whether signal handler returns void or int..." >&4
10060 dflt=void
10061 rp="What type does your signal handler return?"
10062 . ./myread
10063 case "$ans" in
10064 v*) val="$define";;
10065 *) val="$undef";;
10066 esac;;
10067 "$define")
10068 echo "As you already told me, signal handler returns void." >&4
10069 val="$define"
10070 ;;
10071 *) echo "As you already told me, signal handler returns int." >&4
10072 val="$undef"
10073 ;;
10074 esac
10075fi
10076set d_voidsig
10077eval $setvar
10078case "$d_voidsig" in
10079"$define") signal_t="void";;
10080*) signal_t="int";;
10081esac
10082$rm -f $$.tmp
10083
10084: check for ability to cast large floats to 32-bit ints.
10085echo " "
10086echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10087if $test "$intsize" -ge 4; then
10088 xxx=int
10089else
10090 xxx=long
10091fi
10092$cat >try.c <<EOCP
10093#include <stdio.h>
d1daaddf
JH
10094#$i_stdlib I_STDLIB
10095#ifdef I_STDLIB
10096#include <stdlib.h>
10097#endif
b4eb6b3d
JH
10098#include <sys/types.h>
10099#include <signal.h>
10100$signal_t blech(s) int s; { exit(3); }
10101int main()
10102{
10103 $xxx i32;
10104 double f, g;
10105 int result = 0;
10106 char str[16];
10107 signal(SIGFPE, blech);
10108
10109 /* Don't let compiler optimize the test away. Store the number
10110 in a writable string for gcc to pass to sscanf under HP/UX.
10111 */
10112 sprintf(str, "2147483647");
10113 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10114 g = 10 * f;
10115 i32 = ($xxx) g;
10116
10117 /* x86 processors will probably give 0x8000 0000, which is a
4a39fcde 10118 sign change. We don't want that. We want to mimic SPARC
b4eb6b3d
JH
10119 behavior here, which is to preserve the sign and give
10120 back 0x7fff ffff.
10121 */
10122 if (i32 != ($xxx) f)
10123 result |= 1;
10124 exit(result);
10125}
10126EOCP
10127set try
10128if eval $compile_ok; then
5440bc8e 10129 $run ./try
b4eb6b3d
JH
10130 yyy=$?
10131else
10132 echo "(I can't seem to compile the test program--assuming it can't)"
10133 yyy=1
10134fi
10135case "$yyy" in
101360) val="$define"
10137 echo "Yup, it can."
10138 ;;
10139*) val="$undef"
10140 echo "Nope, it can't."
10141 ;;
10142esac
10143set d_casti32
10144eval $setvar
10145$rm -f try try.*
10146
10147: check for ability to cast negative floats to unsigned
10148echo " "
10149echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10150$cat >try.c <<EOCP
10151#include <stdio.h>
d1daaddf
JH
10152#$i_stdlib I_STDLIB
10153#ifdef I_STDLIB
10154#include <stdlib.h>
10155#endif
b4eb6b3d
JH
10156#include <sys/types.h>
10157#include <signal.h>
10158$signal_t blech(s) int s; { exit(7); }
10159$signal_t blech_in_list(s) int s; { exit(4); }
10160unsigned long dummy_long(p) unsigned long p; { return p; }
10161unsigned int dummy_int(p) unsigned int p; { return p; }
10162unsigned short dummy_short(p) unsigned short p; { return p; }
10163int main()
10164{
10165 double f;
10166 unsigned long along;
10167 unsigned int aint;
10168 unsigned short ashort;
10169 int result = 0;
10170 char str[16];
10171
10172 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10173 a direct f = -123. assignment. gcc-2.8.0 reportedly
10174 optimized the whole file away
10175 */
10176 /* Store the number in a writable string for gcc to pass to
10177 sscanf under HP/UX.
10178 */
10179 sprintf(str, "-123");
10180 sscanf(str, "%lf", &f); /* f = -123.; */
10181
10182 signal(SIGFPE, blech);
10183 along = (unsigned long)f;
10184 aint = (unsigned int)f;
10185 ashort = (unsigned short)f;
10186 if (along != (unsigned long)-123)
10187 result |= 1;
10188 if (aint != (unsigned int)-123)
10189 result |= 1;
10190 if (ashort != (unsigned short)-123)
10191 result |= 1;
10192 sprintf(str, "1073741824.");
10193 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10194 f = f + f;
10195 along = 0;
10196 along = (unsigned long)f;
10197 if (along != 0x80000000)
10198 result |= 2;
10199 f -= 1.;
10200 along = 0;
10201 along = (unsigned long)f;
10202 if (along != 0x7fffffff)
10203 result |= 1;
10204 f += 2.;
10205 along = 0;
10206 along = (unsigned long)f;
10207 if (along != 0x80000001)
10208 result |= 2;
10209 if (result)
10210 exit(result);
10211 signal(SIGFPE, blech_in_list);
10212 sprintf(str, "123.");
10213 sscanf(str, "%lf", &f); /* f = 123.; */
10214 along = dummy_long((unsigned long)f);
10215 aint = dummy_int((unsigned int)f);
10216 ashort = dummy_short((unsigned short)f);
10217 if (along != (unsigned long)123)
10218 result |= 4;
10219 if (aint != (unsigned int)123)
10220 result |= 4;
10221 if (ashort != (unsigned short)123)
10222 result |= 4;
10223 exit(result);
10224
10225}
10226EOCP
10227set try
10228if eval $compile_ok; then
5440bc8e 10229 $run ./try
b4eb6b3d
JH
10230 castflags=$?
10231else
10232 echo "(I can't seem to compile the test program--assuming it can't)"
10233 castflags=7
10234fi
10235case "$castflags" in
102360) val="$define"
10237 echo "Yup, it can."
10238 ;;
10239*) val="$undef"
10240 echo "Nope, it can't."
10241 ;;
10242esac
10243set d_castneg
10244eval $setvar
10245$rm -f try.*
10246
10247: see if vprintf exists
10248echo " "
10249if set vprintf val -f d_vprintf; eval $csym; $val; then
10250 echo 'vprintf() found.' >&4
10251 val="$define"
55954f19 10252 $cat >try.c <<EOF
b4eb6b3d 10253#include <varargs.h>
55954f19
JH
10254#$i_stdlib I_STDLIB
10255#ifdef I_STDLIB
10256#include <stdlib.h>
10257#endif
b4eb6b3d
JH
10258
10259int main() { xxx("foo"); }
10260
10261xxx(va_alist)
10262va_dcl
10263{
10264 va_list args;
10265 char buf[10];
10266
10267 va_start(args);
10268 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10269}
10270EOF
5440bc8e
JH
10271 set try
10272 if eval $compile && $run ./try; then
b4eb6b3d
JH
10273 echo "Your vsprintf() returns (int)." >&4
10274 val2="$undef"
10275 else
10276 echo "Your vsprintf() returns (char*)." >&4
10277 val2="$define"
10278 fi
10279else
10280 echo 'vprintf() NOT found.' >&4
10281 val="$undef"
10282 val2="$undef"
10283fi
5440bc8e 10284$rm -f try try.*
b4eb6b3d
JH
10285set d_vprintf
10286eval $setvar
10287val=$val2
10288set d_charvspr
10289eval $setvar
10290
10291: see if chown exists
10292set chown d_chown
10293eval $inlibc
10294
10295: see if chroot exists
10296set chroot d_chroot
10297eval $inlibc
10298
10299: see if chsize exists
10300set chsize d_chsize
10301eval $inlibc
10302
758a5d79
JH
10303: see if class exists
10304set class d_class
10305eval $inlibc
10306
4e0554ec
JH
10307hasstruct='varname=$1; struct=$2; shift; shift;
10308while $test $# -ge 2; do
10309 case "$1" in
10310 $define) echo "#include <$2>";;
10311 esac ;
10312 shift 2;
10313done > try.c;
10314echo "int main () { struct $struct foo; }" >> try.c;
10315set try;
10316if eval $compile; then
10317 val="$define";
10318else
10319 val="$undef";
10320fi;
10321set $varname;
10322eval $setvar;
10323$rm -f try.c try.o'
10324
4e0554ec
JH
10325socketlib=''
10326sockethdr=''
10327: see whether socket exists
10328echo " "
10329$echo $n "Hmm... $c" >&4
10330if set socket val -f d_socket; eval $csym; $val; then
10331 echo "Looks like you have Berkeley networking support." >&4
10332 d_socket="$define"
10333 if set setsockopt val -f; eval $csym; $val; then
10334 d_oldsock="$undef"
10335 else
10336 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10337 d_oldsock="$define"
10338 fi
10339else
10340 if $contains socklib libc.list >/dev/null 2>&1; then
10341 echo "Looks like you have Berkeley networking support." >&4
10342 d_socket="$define"
10343 : we will have to assume that it supports the 4.2 BSD interface
10344 d_oldsock="$undef"
10345 else
10346 echo "You don't have Berkeley networking in libc$_a..." >&4
10347 if test "X$d_socket" = "X$define"; then
10348 echo "...but you seem to believe that you have sockets." >&4
10349 else
10350 for net in net socket
10351 do
10352 if test -f /usr/lib/lib$net$_a; then
10353 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10354 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10355 if $contains socket libc.list >/dev/null 2>&1; then
10356 d_socket="$define"
10357 socketlib="-l$net"
10358 case "$net" in
10359 net)
10360 echo "...but the Wollongong group seems to have hacked it in." >&4
10361 sockethdr="-I/usr/netinclude"
10362 ;;
10363 esac
3c728e00 10364 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
10365 if $contains setsockopt libc.list >/dev/null 2>&1; then
10366 d_oldsock="$undef"
10367 else
10368 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10369 d_oldsock="$define"
10370 fi
10371 break
10372 fi
10373 fi
10374 done
10375 if test "X$d_socket" != "X$define"; then
10376 echo "or anywhere else I see." >&4
10377 d_socket="$undef"
10378 d_oldsock="$undef"
10379 fi
10380 fi
10381 fi
10382fi
10383
10384: see if socketpair exists
10385set socketpair d_sockpair
10386eval $inlibc
10387
10388
10389echo " "
3c728e00 10390echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
10391for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10392 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10393 $cat >try.c <<EOF
10394#include <sys/types.h>
10395#include <sys/socket.h>
10396int main() {
10397 int i = $ENUM;
10398}
10399EOF
10400 val="$undef"
10401 set try; if eval $compile; then
10402 val="$define"
10403 fi
10404 set d_${enum}; eval $setvar
10405 $rm -f try.c try
10406done
10407
10408: see if this is a sys/uio.h system
10409set sys/uio.h i_sysuio
10410eval $inhdr
10411
10412
10413echo " "
10414echo "Checking to see if your system supports struct cmsghdr..." >&4
10415set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10416eval $hasstruct
10417case "$d_cmsghdr_s" in
10418"$define") echo "Yes, it does." ;;
10419*) echo "No, it doesn't." ;;
10420esac
10421
10422
b4eb6b3d
JH
10423: check for const keyword
10424echo " "
10425echo 'Checking to see if your C compiler knows about "const"...' >&4
10426$cat >const.c <<'EOCP'
10427typedef struct spug { int drokk; } spug;
76f47787 10428int main()
b4eb6b3d
JH
10429{
10430 const char *foo;
10431 const spug y;
10432}
10433EOCP
10434if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10435 val="$define"
10436 echo "Yup, it does."
10437else
10438 val="$undef"
10439 echo "Nope, it doesn't."
10440fi
10441set d_const
10442eval $setvar
10443
89ce900e
JH
10444: see if copysignl exists
10445set copysignl d_copysignl
10446eval $inlibc
10447
b4eb6b3d
JH
10448: see if crypt exists
10449echo " "
a5a94ea5
JH
10450set crypt d_crypt
10451eval $inlibc
10452case "$d_crypt" in
10453$define) cryptlib='' ;;
10454*) if set crypt val -f d_crypt; eval $csym; $val; then
10455 echo 'crypt() found.' >&4
b4eb6b3d 10456 val="$define"
a5a94ea5
JH
10457 cryptlib=''
10458 else
10459 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10460 if $test -z "$cryptlib"; then
10461 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10462 else
10463 cryptlib=-lcrypt
10464 fi
10465 if $test -z "$cryptlib"; then
10466 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10467 else
10468 cryptlib=-lcrypt
10469 fi
10470 if $test -z "$cryptlib"; then
10471 cryptlib=`./loc libcrypt$_a "" $libpth`
10472 else
10473 cryptlib=-lcrypt
10474 fi
10475 if $test -z "$cryptlib"; then
10476 echo 'crypt() NOT found.' >&4
10477 val="$undef"
10478 else
10479 val="$define"
10480 fi
b4eb6b3d 10481 fi
a5a94ea5
JH
10482 set d_crypt
10483 eval $setvar
10484 ;;
10485esac
b4eb6b3d 10486
10bc17b6
JH
10487: see if this is a crypt.h system
10488set crypt.h i_crypt
10489eval $inhdr
10490
10491: see if crypt_r exists
10492set crypt_r d_crypt_r
10493eval $inlibc
10494case "$d_crypt_r" in
10495"$define")
10496 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
c18e646a
JH
10497 case "$d_crypt_r_proto:$usethreads" in
10498 ":define") d_crypt_r_proto=define
a48ec845
JH
10499 set d_crypt_r_proto crypt_r $hdrs
10500 eval $hasproto ;;
10501 *) ;;
10502 esac
10503 case "$d_crypt_r_proto" in
10504 define)
10bc17b6
JH
10505 case "$crypt_r_proto" in
10506 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10507 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10508 esac
10509 case "$crypt_r_proto" in
b430fd04
JH
10510 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10511 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10512 esac
10513 case "$crypt_r_proto" in
90e831dc 10514 ''|0) d_crypt_r=undef
10bc17b6 10515 crypt_r_proto=0
a48ec845 10516 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10517 * ) case "$crypt_r_proto" in
10518 REENTRANT_PROTO*) ;;
10519 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10520 esac
10521 echo "Prototype: $try" ;;
10522 esac
10523 ;;
c18e646a
JH
10524 *) case "$usethreads" in
10525 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10526 esac
90e831dc
SB
10527 d_crypt_r=undef
10528 crypt_r_proto=0
c18e646a 10529 ;;
a48ec845
JH
10530 esac
10531 ;;
10bc17b6
JH
10532*) crypt_r_proto=0
10533 ;;
10534esac
10535
b4eb6b3d
JH
10536: get csh whereabouts
10537case "$csh" in
10538'csh') val="$undef" ;;
10539*) val="$define" ;;
10540esac
10541set d_csh
10542eval $setvar
10543: Respect a hint or command line value for full_csh.
10544case "$full_csh" in
10545'') full_csh=$csh ;;
10546esac
10547
10bc17b6
JH
10548: see if ctermid_r exists
10549set ctermid_r d_ctermid_r
10550eval $inlibc
10551case "$d_ctermid_r" in
10552"$define")
31ee0cb7 10553 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
10554 case "$d_ctermid_r_proto:$usethreads" in
10555 ":define") d_ctermid_r_proto=define
a48ec845
JH
10556 set d_ctermid_r_proto ctermid_r $hdrs
10557 eval $hasproto ;;
10558 *) ;;
10559 esac
10560 case "$d_ctermid_r_proto" in
10561 define)
10bc17b6
JH
10562 case "$ctermid_r_proto" in
10563 ''|0) try='char* ctermid_r(char*);'
10564 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10565 esac
10566 case "$ctermid_r_proto" in
90e831dc 10567 ''|0) d_ctermid_r=undef
10bc17b6 10568 ctermid_r_proto=0
a48ec845 10569 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10570 * ) case "$ctermid_r_proto" in
10571 REENTRANT_PROTO*) ;;
10572 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10573 esac
10574 echo "Prototype: $try" ;;
10575 esac
10576 ;;
c18e646a
JH
10577 *) case "$usethreads" in
10578 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10579 esac
90e831dc
SB
10580 d_ctermid_r=undef
10581 ctermid_r_proto=0
c18e646a 10582 ;;
a48ec845
JH
10583 esac
10584 ;;
10bc17b6
JH
10585*) ctermid_r_proto=0
10586 ;;
10587esac
10588
10589: see if ctime_r exists
10590set ctime_r d_ctime_r
10591eval $inlibc
10592case "$d_ctime_r" in
10593"$define")
d63eadf0 10594 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
10595 case "$d_ctime_r_proto:$usethreads" in
10596 ":define") d_ctime_r_proto=define
a48ec845
JH
10597 set d_ctime_r_proto ctime_r $hdrs
10598 eval $hasproto ;;
10599 *) ;;
10600 esac
10601 case "$d_ctime_r_proto" in
10602 define)
10bc17b6
JH
10603 case "$ctime_r_proto" in
10604 ''|0) try='char* ctime_r(const time_t*, char*);'
10605 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10606 esac
10607 case "$ctime_r_proto" in
10608 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10609 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10610 esac
10611 case "$ctime_r_proto" in
10612 ''|0) try='int ctime_r(const time_t*, char*);'
10613 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10614 esac
10615 case "$ctime_r_proto" in
10616 ''|0) try='int ctime_r(const time_t*, char*, int);'
10617 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10618 esac
10619 case "$ctime_r_proto" in
90e831dc 10620 ''|0) d_ctime_r=undef
10bc17b6 10621 ctime_r_proto=0
a48ec845 10622 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10623 * ) case "$ctime_r_proto" in
10624 REENTRANT_PROTO*) ;;
10625 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10626 esac
10627 echo "Prototype: $try" ;;
10628 esac
10629 ;;
c18e646a
JH
10630 *) case "$usethreads" in
10631 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10632 esac
90e831dc
SB
10633 d_ctime_r=undef
10634 ctime_r_proto=0
c18e646a 10635 ;;
a48ec845
JH
10636 esac
10637 ;;
10bc17b6
JH
10638*) ctime_r_proto=0
10639 ;;
10640esac
10641
b4eb6b3d
JH
10642: see if cuserid exists
10643set cuserid d_cuserid
10644eval $inlibc
10645
10646: see if this is a limits.h system
10647set limits.h i_limits
10648eval $inhdr
10649
10650: see if this is a float.h system
10651set float.h i_float
10652eval $inhdr
10653
10654: See if number of significant digits in a double precision number is known
10655echo " "
10656$cat >dbl_dig.c <<EOM
10657#$i_limits I_LIMITS
10658#$i_float I_FLOAT
10659#ifdef I_LIMITS
10660#include <limits.h>
10661#endif
10662#ifdef I_FLOAT
10663#include <float.h>
10664#endif
10665#ifdef DBL_DIG
10666printf("Contains DBL_DIG");
10667#endif
10668EOM
10669$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10670if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10671 echo "DBL_DIG found." >&4
10672 val="$define"
10673else
10674 echo "DBL_DIG NOT found." >&4
10675 val="$undef"
10676fi
10677$rm -f dbl_dig.?
10678set d_dbl_dig
10679eval $setvar
10680
2ef53570
JH
10681: see if dbm.h is available
10682: see if dbmclose exists
10683set dbmclose d_dbmclose
10684eval $inlibc
10685
10686case "$d_dbmclose" in
10687$define)
10688 set dbm.h i_dbm
10689 eval $inhdr
10690 case "$i_dbm" in
10691 $define)
10692 val="$undef"
10693 set i_rpcsvcdbm
10694 eval $setvar
10695 ;;
10696 *) set rpcsvc/dbm.h i_rpcsvcdbm
10697 eval $inhdr
10698 ;;
10699 esac
10700 ;;
10701*) echo "We won't be including <dbm.h>"
10702 val="$undef"
10703 set i_dbm
10704 eval $setvar
10705 val="$undef"
10706 set i_rpcsvcdbm
10707 eval $setvar
10708 ;;
10709esac
10710
10711: see if prototype for dbminit is available
10712echo " "
10713set d_dbminitproto dbminit $i_dbm dbm.h
10714eval $hasproto
10715
b4eb6b3d
JH
10716: see if difftime exists
10717set difftime d_difftime
10718eval $inlibc
10719
10720: see if this is a dirent system
10721echo " "
10722if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10723 val="$define"
10724 echo "<dirent.h> found." >&4
10725else
10726 val="$undef"
10727 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10728 echo "<sys/dir.h> found." >&4
10729 echo " "
10730 else
10731 xinc=`./findhdr sys/ndir.h`
10732 fi
10733 echo "<dirent.h> NOT found." >&4
10734fi
10735set i_dirent
10736eval $setvar
10737
10738: Look for type of directory structure.
10739echo " "
10740$cppstdin $cppflags $cppminus < "$xinc" > try.c
10741
10742case "$direntrytype" in
10743''|' ')
10744 case "$i_dirent" in
10745 $define) guess1='struct dirent' ;;
10746 *) guess1='struct direct' ;;
10747 esac
10748 ;;
10749*) guess1="$direntrytype"
10750 ;;
10751esac
10752
10753case "$guess1" in
10754'struct dirent') guess2='struct direct' ;;
10755*) guess2='struct dirent' ;;
10756esac
10757
10758if $contains "$guess1" try.c >/dev/null 2>&1; then
10759 direntrytype="$guess1"
10760 echo "Your directory entries are $direntrytype." >&4
10761elif $contains "$guess2" try.c >/dev/null 2>&1; then
10762 direntrytype="$guess2"
10763 echo "Your directory entries seem to be $direntrytype." >&4
10764else
10765 echo "I don't recognize your system's directory entries." >&4
10766 rp="What type is used for directory entries on this system?"
10767 dflt="$guess1"
10768 . ./myread
10769 direntrytype="$ans"
10770fi
10771$rm -f try.c
10772
10773
10774: see if the directory entry stores field length
10775echo " "
10776$cppstdin $cppflags $cppminus < "$xinc" > try.c
10777if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10778 echo "Good, your directory entry keeps length information in d_namlen." >&4
10779 val="$define"
10780else
10781 echo "Your directory entry does not know about the d_namlen field." >&4
10782 val="$undef"
10783fi
10784set d_dirnamlen
10785eval $setvar
10786$rm -f try.c
10787
ae0e3d3b
JH
10788: see if this is an sysdir system
10789set sys/dir.h i_sysdir
10790eval $inhdr
10791
10792: see if this is an sysndir system
10793set sys/ndir.h i_sysndir
10794eval $inhdr
10795
10796: Look for dirfd
10797echo " "
10798$cat >dirfd.c <<EOM
10799#include <stdio.h>
55954f19
JH
10800#$i_stdlib I_STDLIB
10801#ifdef I_STDLIB
10802#include <stdlib.h>
10803#endif
ae0e3d3b
JH
10804#$i_dirent I_DIRENT /**/
10805#$i_sysdir I_SYS_DIR /**/
10806#$i_sysndir I_SYS_NDIR /**/
10807#$i_systypes I_SYS_TYPES /**/
10808#if defined(I_SYS_TYPES)
10809#include <sys/types.h>
10810#endif
10811#if defined(I_DIRENT)
10812#include <dirent.h>
10813#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10814#include <sys/dir.h>
10815#endif
10816#else
10817#ifdef I_SYS_NDIR
10818#include <sys/ndir.h>
10819#else
10820#ifdef I_SYS_DIR
10821#ifdef hp9000s500
10822#include <ndir.h> /* may be wrong in the future */
10823#else
10824#include <sys/dir.h>
10825#endif
10826#endif
10827#endif
10828#endif
10829int main() {
10830 DIR *dirp = opendir(".");
10831 if (dirfd(dirp) >= 0)
10832 exit(0);
10833 else
10834 exit(1);
10835}
10836EOM
10837set dirfd
10838if eval $compile; then
10839 val="$define"
10840fi
10841case "$val" in
10842$define) echo "dirfd() found." >&4 ;;
10843*) echo "dirfd() NOT found." >&4 ;;
10844esac
10845set d_dirfd
10846eval $setvar
10847$rm -f dirfd*
10848
b4eb6b3d
JH
10849: see if dlerror exists
10850xxx_runnm="$runnm"
10851runnm=false
10852set dlerror d_dlerror
10853eval $inlibc
10854runnm="$xxx_runnm"
10855
10856: see if dlfcn is available
10857set dlfcn.h i_dlfcn
10858eval $inhdr
10859
10860case "$usedl" in
10861$define|y|true)
10862 $cat << EOM
10863
10864On a few systems, the dynamically loaded modules that perl generates and uses
10865will need a different extension than shared libs. The default will probably
10866be appropriate.
10867
10868EOM
10869 case "$dlext" in
10870 '') dflt="$so" ;;
10871 *) dflt="$dlext" ;;
10872 esac
10873 rp='What is the extension of dynamically loaded modules'
10874 . ./myread
10875 dlext="$ans"
10876 ;;
10877*)
10878 dlext="none"
10879 ;;
10880esac
10881
10882: Check if dlsym need a leading underscore
10883echo " "
10884val="$undef"
10885
10886case "$dlsrc" in
10887dl_dlopen.xs)
10888 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10889 $cat >dyna.c <<'EOM'
10890fred () { }
10891EOM
10892
10893$cat >fred.c<<EOM
10894
10895#include <stdio.h>
55954f19
JH
10896#$i_stdlib I_STDLIB
10897#ifdef I_STDLIB
10898#include <stdlib.h>
10899#endif
b4eb6b3d
JH
10900#$i_dlfcn I_DLFCN
10901#ifdef I_DLFCN
5440bc8e 10902#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
10903#else
10904#include <sys/types.h>
10905#include <nlist.h>
10906#include <link.h>
10907#endif
10908
10909extern int fred() ;
10910
10911int main()
10912{
10913 void * handle ;
10914 void * symbol ;
10915#ifndef RTLD_LAZY
10916 int mode = 1 ;
10917#else
10918 int mode = RTLD_LAZY ;
10919#endif
10920 handle = dlopen("./dyna.$dlext", mode) ;
10921 if (handle == NULL) {
10922 printf ("1\n") ;
10923 fflush (stdout) ;
10924 exit(0);
10925 }
10926 symbol = dlsym(handle, "fred") ;
10927 if (symbol == NULL) {
10928 /* try putting a leading underscore */
10929 symbol = dlsym(handle, "_fred") ;
10930 if (symbol == NULL) {
10931 printf ("2\n") ;
10932 fflush (stdout) ;
10933 exit(0);
10934 }
10935 printf ("3\n") ;
10936 }
10937 else
10938 printf ("4\n") ;
10939 fflush (stdout) ;
10940 exit(0);
10941}
10942EOM
10943 : Call the object file tmp-dyna.o in case dlext=o.
10944 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10945 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 10946 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
10947 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10948 xxx=`$run ./fred`
b4eb6b3d
JH
10949 case $xxx in
10950 1) echo "Test program failed using dlopen." >&4
10951 echo "Perhaps you should not use dynamic loading." >&4;;
10952 2) echo "Test program failed using dlsym." >&4
10953 echo "Perhaps you should not use dynamic loading." >&4;;
10954 3) echo "dlsym needs a leading underscore" >&4
10955 val="$define" ;;
10956 4) echo "dlsym doesn't need a leading underscore." >&4;;
10957 esac
10958 else
10959 echo "I can't compile and run the test program." >&4
10960 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10961 fi
10962 ;;
10963esac
10964
3c728e00 10965$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
10966
10967set d_dlsymun
10968eval $setvar
10969
10bc17b6
JH
10970: see if drand48_r exists
10971set drand48_r d_drand48_r
10972eval $inlibc
10973case "$d_drand48_r" in
10974"$define")
10975 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
10976 case "$d_drand48_r_proto:$usethreads" in
10977 ":define") d_drand48_r_proto=define
a48ec845
JH
10978 set d_drand48_r_proto drand48_r $hdrs
10979 eval $hasproto ;;
10980 *) ;;
10981 esac
10982 case "$d_drand48_r_proto" in
10983 define)
10bc17b6
JH
10984 case "$drand48_r_proto" in
10985 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10986 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10987 esac
10988 case "$drand48_r_proto" in
90e831dc 10989 ''|0) d_drand48_r=undef
10bc17b6 10990 drand48_r_proto=0
a48ec845 10991 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10992 * ) case "$drand48_r_proto" in
10993 REENTRANT_PROTO*) ;;
10994 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10995 esac
10996 echo "Prototype: $try" ;;
10997 esac
10998 ;;
c18e646a
JH
10999 *) case "$usethreads" in
11000 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11001 esac
90e831dc
SB
11002 d_drand48_r=undef
11003 drand48_r_proto=0
c18e646a 11004 ;;
a48ec845
JH
11005 esac
11006 ;;
10bc17b6
JH
11007*) drand48_r_proto=0
11008 ;;
11009esac
11010
11011: see if prototype for drand48 is available
11012echo " "
11013set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11014eval $hasproto
11015
b4eb6b3d
JH
11016: see if dup2 exists
11017set dup2 d_dup2
11018eval $inlibc
11019
11020: see if eaccess exists
11021set eaccess d_eaccess
11022eval $inlibc
11023
11024: see if endgrent exists
11025set endgrent d_endgrent
11026eval $inlibc
11027
10bc17b6
JH
11028: see if this is an grp system
11029set grp.h i_grp
11030eval $inhdr
11031
11032case "$i_grp" in
11033$define)
11034 xxx=`./findhdr grp.h`
11035 $cppstdin $cppflags $cppminus < $xxx >$$.h
11036
11037 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11038 val="$define"
11039 else
11040 val="$undef"
11041 fi
11042 set d_grpasswd
11043 eval $setvar
11044
11045 $rm -f $$.h
11046 ;;
11047*)
11048 val="$undef";
11049 set d_grpasswd; eval $setvar
11050 ;;
11051esac
11052
11053: see if endgrent_r exists
11054set endgrent_r d_endgrent_r
11055eval $inlibc
11056case "$d_endgrent_r" in
11057"$define")
11058 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
11059 case "$d_endgrent_r_proto:$usethreads" in
11060 ":define") d_endgrent_r_proto=define
a48ec845
JH
11061 set d_endgrent_r_proto endgrent_r $hdrs
11062 eval $hasproto ;;
11063 *) ;;
11064 esac
11065 case "$d_endgrent_r_proto" in
11066 define)
10bc17b6
JH
11067 case "$endgrent_r_proto" in
11068 ''|0) try='int endgrent_r(FILE**);'
11069 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11070 esac
11071 case "$endgrent_r_proto" in
11072 ''|0) try='void endgrent_r(FILE**);'
11073 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11074 esac
11075 case "$endgrent_r_proto" in
90e831dc 11076 ''|0) d_endgrent_r=undef
10bc17b6 11077 endgrent_r_proto=0
a48ec845 11078 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11079 * ) case "$endgrent_r_proto" in
11080 REENTRANT_PROTO*) ;;
11081 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11082 esac
11083 echo "Prototype: $try" ;;
11084 esac
11085 ;;
c18e646a
JH
11086 *) case "$usethreads" in
11087 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11088 esac
90e831dc
SB
11089 d_endgrent_r=undef
11090 endgrent_r_proto=0
c18e646a 11091 ;;
a48ec845
JH
11092 esac
11093 ;;
10bc17b6
JH
11094*) endgrent_r_proto=0
11095 ;;
11096esac
11097
b4eb6b3d
JH
11098: see if endhostent exists
11099set endhostent d_endhent
11100eval $inlibc
11101
10bc17b6
JH
11102: see if this is a netdb.h system
11103set netdb.h i_netdb
11104eval $inhdr
11105
11106: see if endhostent_r exists
11107set endhostent_r d_endhostent_r
11108eval $inlibc
11109case "$d_endhostent_r" in
11110"$define")
11111 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11112 case "$d_endhostent_r_proto:$usethreads" in
11113 ":define") d_endhostent_r_proto=define
a48ec845
JH
11114 set d_endhostent_r_proto endhostent_r $hdrs
11115 eval $hasproto ;;
11116 *) ;;
11117 esac
11118 case "$d_endhostent_r_proto" in
11119 define)
10bc17b6
JH
11120 case "$endhostent_r_proto" in
11121 ''|0) try='int endhostent_r(struct hostent_data*);'
31ee0cb7 11122 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10bc17b6
JH
11123 esac
11124 case "$endhostent_r_proto" in
11125 ''|0) try='void endhostent_r(struct hostent_data*);'
31ee0cb7 11126 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10bc17b6
JH
11127 esac
11128 case "$endhostent_r_proto" in
90e831dc 11129 ''|0) d_endhostent_r=undef
10bc17b6 11130 endhostent_r_proto=0
a48ec845 11131 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11132 * ) case "$endhostent_r_proto" in
11133 REENTRANT_PROTO*) ;;
11134 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11135 esac
11136 echo "Prototype: $try" ;;
11137 esac
11138 ;;
c18e646a
JH
11139 *) case "$usethreads" in
11140 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11141 esac
90e831dc
SB
11142 d_endhostent_r=undef
11143 endhostent_r_proto=0
c18e646a 11144 ;;
a48ec845
JH
11145 esac
11146 ;;
10bc17b6
JH
11147*) endhostent_r_proto=0
11148 ;;
11149esac
11150
b4eb6b3d
JH
11151: see if endnetent exists
11152set endnetent d_endnent
11153eval $inlibc
11154
10bc17b6
JH
11155: see if endnetent_r exists
11156set endnetent_r d_endnetent_r
11157eval $inlibc
11158case "$d_endnetent_r" in
11159"$define")
11160 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11161 case "$d_endnetent_r_proto:$usethreads" in
11162 ":define") d_endnetent_r_proto=define
a48ec845
JH
11163 set d_endnetent_r_proto endnetent_r $hdrs
11164 eval $hasproto ;;
11165 *) ;;
11166 esac
11167 case "$d_endnetent_r_proto" in
11168 define)
10bc17b6
JH
11169 case "$endnetent_r_proto" in
11170 ''|0) try='int endnetent_r(struct netent_data*);'
31ee0cb7 11171 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10bc17b6
JH
11172 esac
11173 case "$endnetent_r_proto" in
11174 ''|0) try='void endnetent_r(struct netent_data*);'
31ee0cb7 11175 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10bc17b6
JH
11176 esac
11177 case "$endnetent_r_proto" in
90e831dc 11178 ''|0) d_endnetent_r=undef
10bc17b6 11179 endnetent_r_proto=0
a48ec845 11180 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11181 * ) case "$endnetent_r_proto" in
11182 REENTRANT_PROTO*) ;;
11183 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11184 esac
11185 echo "Prototype: $try" ;;
11186 esac
11187 ;;
c18e646a
JH
11188 *) case "$usethreads" in
11189 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11190 esac
90e831dc
SB
11191 d_endnetent_r=undef
11192 endnetent_r_proto=0
c18e646a 11193 ;;
a48ec845
JH
11194 esac
11195 ;;
10bc17b6
JH
11196*) endnetent_r_proto=0
11197 ;;
11198esac
11199
b4eb6b3d
JH
11200: see if endprotoent exists
11201set endprotoent d_endpent
11202eval $inlibc
11203
10bc17b6
JH
11204: see if endprotoent_r exists
11205set endprotoent_r d_endprotoent_r
11206eval $inlibc
11207case "$d_endprotoent_r" in
11208"$define")
11209 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11210 case "$d_endprotoent_r_proto:$usethreads" in
11211 ":define") d_endprotoent_r_proto=define
a48ec845
JH
11212 set d_endprotoent_r_proto endprotoent_r $hdrs
11213 eval $hasproto ;;
11214 *) ;;
11215 esac
11216 case "$d_endprotoent_r_proto" in
11217 define)
10bc17b6
JH
11218 case "$endprotoent_r_proto" in
11219 ''|0) try='int endprotoent_r(struct protoent_data*);'
31ee0cb7 11220 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10bc17b6
JH
11221 esac
11222 case "$endprotoent_r_proto" in
11223 ''|0) try='void endprotoent_r(struct protoent_data*);'
31ee0cb7 11224 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10bc17b6
JH
11225 esac
11226 case "$endprotoent_r_proto" in
90e831dc 11227 ''|0) d_endprotoent_r=undef
10bc17b6 11228 endprotoent_r_proto=0
a48ec845 11229 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11230 * ) case "$endprotoent_r_proto" in
11231 REENTRANT_PROTO*) ;;
11232 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11233 esac
11234 echo "Prototype: $try" ;;
11235 esac
11236 ;;
c18e646a
JH
11237 *) case "$usethreads" in
11238 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11239 esac
90e831dc
SB
11240 d_endprotoent_r=undef
11241 endprotoent_r_proto=0
c18e646a 11242 ;;
a48ec845
JH
11243 esac
11244 ;;
10bc17b6
JH
11245*) endprotoent_r_proto=0
11246 ;;
11247esac
11248
b4eb6b3d
JH
11249: see if endpwent exists
11250set endpwent d_endpwent
11251eval $inlibc
11252
10bc17b6
JH
11253: see if this is a pwd.h system
11254set pwd.h i_pwd
11255eval $inhdr
11256
11257case "$i_pwd" in
11258$define)
11259 xxx=`./findhdr pwd.h`
11260 $cppstdin $cppflags $cppminus < $xxx >$$.h
11261
11262 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11263 val="$define"
11264 else
11265 val="$undef"
11266 fi
11267 set d_pwquota
11268 eval $setvar
11269
11270 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11271 val="$define"
11272 else
11273 val="$undef"
11274 fi
11275 set d_pwage
11276 eval $setvar
11277
11278 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11279 val="$define"
11280 else
11281 val="$undef"
11282 fi
11283 set d_pwchange
11284 eval $setvar
11285
11286 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11287 val="$define"
11288 else
11289 val="$undef"
11290 fi
11291 set d_pwclass
11292 eval $setvar
11293
11294 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11295 val="$define"
11296 else
11297 val="$undef"
11298 fi
11299 set d_pwexpire
11300 eval $setvar
11301
11302 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11303 val="$define"
11304 else
11305 val="$undef"
11306 fi
11307 set d_pwcomment
11308 eval $setvar
11309
11310 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11311 val="$define"
11312 else
11313 val="$undef"
11314 fi
11315 set d_pwgecos
11316 eval $setvar
11317
11318 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11319 val="$define"
11320 else
11321 val="$undef"
11322 fi
11323 set d_pwpasswd
11324 eval $setvar
11325
11326 $rm -f $$.h
11327 ;;
11328*)
11329 val="$undef";
11330 set d_pwquota; eval $setvar
11331 set d_pwage; eval $setvar
11332 set d_pwchange; eval $setvar
11333 set d_pwclass; eval $setvar
11334 set d_pwexpire; eval $setvar
11335 set d_pwcomment; eval $setvar
11336 set d_pwgecos; eval $setvar
11337 set d_pwpasswd; eval $setvar
11338 ;;
11339esac
11340
11341: see if endpwent_r exists
11342set endpwent_r d_endpwent_r
11343eval $inlibc
11344case "$d_endpwent_r" in
11345"$define")
11346 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
11347 case "$d_endpwent_r_proto:$usethreads" in
11348 ":define") d_endpwent_r_proto=define
a48ec845
JH
11349 set d_endpwent_r_proto endpwent_r $hdrs
11350 eval $hasproto ;;
11351 *) ;;
11352 esac
11353 case "$d_endpwent_r_proto" in
11354 define)
10bc17b6
JH
11355 case "$endpwent_r_proto" in
11356 ''|0) try='int endpwent_r(FILE**);'
11357 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11358 esac
11359 case "$endpwent_r_proto" in
11360 ''|0) try='void endpwent_r(FILE**);'
11361 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11362 esac
11363 case "$endpwent_r_proto" in
90e831dc 11364 ''|0) d_endpwent_r=undef
10bc17b6 11365 endpwent_r_proto=0
a48ec845 11366 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11367 * ) case "$endpwent_r_proto" in
11368 REENTRANT_PROTO*) ;;
11369 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11370 esac
11371 echo "Prototype: $try" ;;
11372 esac
11373 ;;
c18e646a
JH
11374 *) case "$usethreads" in
11375 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11376 esac
90e831dc
SB
11377 d_endpwent_r=undef
11378 endpwent_r_proto=0
c18e646a 11379 ;;
a48ec845
JH
11380 esac
11381 ;;
10bc17b6
JH
11382*) endpwent_r_proto=0
11383 ;;
11384esac
11385
b4eb6b3d
JH
11386: see if endservent exists
11387set endservent d_endsent
11388eval $inlibc
11389
10bc17b6
JH
11390: see if endservent_r exists
11391set endservent_r d_endservent_r
11392eval $inlibc
11393case "$d_endservent_r" in
11394"$define")
11395 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11396 case "$d_endservent_r_proto:$usethreads" in
11397 ":define") d_endservent_r_proto=define
a48ec845
JH
11398 set d_endservent_r_proto endservent_r $hdrs
11399 eval $hasproto ;;
11400 *) ;;
11401 esac
11402 case "$d_endservent_r_proto" in
11403 define)
10bc17b6
JH
11404 case "$endservent_r_proto" in
11405 ''|0) try='int endservent_r(struct servent_data*);'
31ee0cb7 11406 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10bc17b6
JH
11407 esac
11408 case "$endservent_r_proto" in
11409 ''|0) try='void endservent_r(struct servent_data*);'
31ee0cb7 11410 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10bc17b6
JH
11411 esac
11412 case "$endservent_r_proto" in
90e831dc 11413 ''|0) d_endservent_r=undef
10bc17b6 11414 endservent_r_proto=0
a48ec845 11415 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11416 * ) case "$endservent_r_proto" in
11417 REENTRANT_PROTO*) ;;
11418 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11419 esac
11420 echo "Prototype: $try" ;;
11421 esac
11422 ;;
c18e646a
JH
11423 *) case "$usethreads" in
11424 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11425 esac
90e831dc
SB
11426 d_endservent_r=undef
11427 endservent_r_proto=0
c18e646a 11428 ;;
a48ec845
JH
11429 esac
11430 ;;
10bc17b6
JH
11431*) endservent_r_proto=0
11432 ;;
11433esac
11434
b4eb6b3d
JH
11435: Locate the flags for 'open()'
11436echo " "
55954f19 11437$cat >try.c <<EOCP
b4eb6b3d
JH
11438#include <sys/types.h>
11439#ifdef I_FCNTL
11440#include <fcntl.h>
11441#endif
11442#ifdef I_SYS_FILE
11443#include <sys/file.h>
11444#endif
55954f19
JH
11445#$i_stdlib I_STDLIB
11446#ifdef I_STDLIB
11447#include <stdlib.h>
11448#endif
b4eb6b3d
JH
11449int main() {
11450 if(O_RDONLY);
11451#ifdef O_TRUNC
11452 exit(0);
11453#else
11454 exit(1);
11455#endif
11456}
11457EOCP
11458: check sys/file.h first to get FREAD on Sun
11459if $test `./findhdr sys/file.h` && \
5440bc8e 11460 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
11461 h_sysfile=true;
11462 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 11463 if $run ./try; then
b4eb6b3d
JH
11464 echo "and you have the 3 argument form of open()." >&4
11465 val="$define"
11466 else
11467 echo "but not the 3 argument form of open(). Oh, well." >&4
11468 val="$undef"
11469 fi
11470elif $test `./findhdr fcntl.h` && \
5440bc8e 11471 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
11472 h_fcntl=true;
11473 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 11474 if $run ./try; then
b4eb6b3d
JH
11475 echo "and you have the 3 argument form of open()." >&4
11476 val="$define"
11477 else
11478 echo "but not the 3 argument form of open(). Oh, well." >&4
11479 val="$undef"
11480 fi
11481else
11482 val="$undef"
11483 echo "I can't find the O_* constant definitions! You got problems." >&4
11484fi
11485set d_open3
11486eval $setvar
5440bc8e 11487$rm -f try try.*
b4eb6b3d
JH
11488
11489: see which of string.h or strings.h is needed
11490echo " "
11491strings=`./findhdr string.h`
11492if $test "$strings" && $test -r "$strings"; then
11493 echo "Using <string.h> instead of <strings.h>." >&4
11494 val="$define"
11495else
11496 val="$undef"
11497 strings=`./findhdr strings.h`
11498 if $test "$strings" && $test -r "$strings"; then
11499 echo "Using <strings.h> instead of <string.h>." >&4
11500 else
11501 echo "No string header found -- You'll surely have problems." >&4
11502 fi
11503fi
11504set i_string
11505eval $setvar
11506case "$i_string" in
11507"$undef") strings=`./findhdr strings.h`;;
11508*) strings=`./findhdr string.h`;;
11509esac
11510
3c728e00
JH
11511: see if this is a sys/file.h system
11512val=''
11513set sys/file.h val
11514eval $inhdr
11515
11516: do we need to include sys/file.h ?
11517case "$val" in
11518"$define")
11519 echo " "
11520 if $h_sysfile; then
11521 val="$define"
11522 echo "We'll be including <sys/file.h>." >&4
11523 else
11524 val="$undef"
11525 echo "We won't be including <sys/file.h>." >&4
11526 fi
11527 ;;
11528*)
11529 h_sysfile=false
11530 ;;
11531esac
11532set i_sysfile
11533eval $setvar
11534
11535: see if fcntl.h is there
11536val=''
11537set fcntl.h val
11538eval $inhdr
11539
11540: see if we can include fcntl.h
11541case "$val" in
11542"$define")
11543 echo " "
11544 if $h_fcntl; then
11545 val="$define"
11546 echo "We'll be including <fcntl.h>." >&4
11547 else
11548 val="$undef"
11549 if $h_sysfile; then
11550 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11551 else
11552 echo "We won't be including <fcntl.h>." >&4
11553 fi
11554 fi
11555 ;;
11556*)
11557 h_fcntl=false
11558 val="$undef"
11559 ;;
11560esac
11561set i_fcntl
11562eval $setvar
11563
b4eb6b3d
JH
11564: check for non-blocking I/O stuff
11565case "$h_sysfile" in
a0acbdc3
JH
11566true) echo "#include <sys/file.h>" > head.c;;
11567*)
11568 case "$h_fcntl" in
11569 true) echo "#include <fcntl.h>" > head.c;;
11570 *) echo "#include <sys/fcntl.h>" > head.c;;
11571 esac
11572 ;;
b4eb6b3d
JH
11573esac
11574echo " "
11575echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11576case "$o_nonblock" in
11577'')
11578 $cat head.c > try.c
3c728e00 11579 $cat >>try.c <<EOCP
b4eb6b3d 11580#include <stdio.h>
55954f19
JH
11581#$i_stdlib I_STDLIB
11582#ifdef I_STDLIB
80b3ef99 11583#include <stdlib.h>
55954f19 11584#endif
3c728e00
JH
11585#$i_fcntl I_FCNTL
11586#ifdef I_FCNTL
11587#include <fcntl.h>
11588#endif
b4eb6b3d
JH
11589int main() {
11590#ifdef O_NONBLOCK
11591 printf("O_NONBLOCK\n");
11592 exit(0);
11593#endif
11594#ifdef O_NDELAY
11595 printf("O_NDELAY\n");
11596 exit(0);
11597#endif
11598#ifdef FNDELAY
11599 printf("FNDELAY\n");
11600 exit(0);
11601#endif
11602 exit(0);
11603}
11604EOCP
11605 set try
11606 if eval $compile_ok; then
5440bc8e 11607 o_nonblock=`$run ./try`
b4eb6b3d
JH
11608 case "$o_nonblock" in
11609 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11610 *) echo "Seems like we can use $o_nonblock.";;
11611 esac
11612 else
11613 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11614 fi
11615 ;;
11616*) echo "Using $hint value $o_nonblock.";;
11617esac
11618$rm -f try try.* .out core
11619
11620echo " "
11621echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11622case "$eagain" in
11623'')
11624 $cat head.c > try.c
11625 $cat >>try.c <<EOCP
11626#include <errno.h>
11627#include <sys/types.h>
11628#include <signal.h>
11629#include <stdio.h>
55954f19
JH
11630#$i_stdlib I_STDLIB
11631#ifdef I_STDLIB
11632#include <stdlib.h>
11633#endif
1deb0a86
JH
11634#$i_fcntl I_FCNTL
11635#ifdef I_FCNTL
11636#include <fcntl.h>
11637#endif
b4eb6b3d
JH
11638#define MY_O_NONBLOCK $o_nonblock
11639#ifndef errno /* XXX need better Configure test */
11640extern int errno;
11641#endif
11642#$i_unistd I_UNISTD
11643#ifdef I_UNISTD
11644#include <unistd.h>
11645#endif
11646#$i_string I_STRING
11647#ifdef I_STRING
11648#include <string.h>
11649#else
11650#include <strings.h>
11651#endif
11652$signal_t blech(x) int x; { exit(3); }
11653EOCP
11654 $cat >> try.c <<'EOCP'
11655int main()
11656{
11657 int pd[2];
11658 int pu[2];
11659 char buf[1];
11660 char string[100];
11661
11662 pipe(pd); /* Down: child -> parent */
11663 pipe(pu); /* Up: parent -> child */
11664 if (0 != fork()) {
11665 int ret;
11666 close(pd[1]); /* Parent reads from pd[0] */
11667 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 11668#ifdef F_SETFL
b4eb6b3d
JH
11669 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11670 exit(1);
a0acbdc3
JH
11671#else
11672 exit(4);
11673#endif
b4eb6b3d
JH
11674 signal(SIGALRM, blech);
11675 alarm(5);
11676 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11677 exit(2);
11678 sprintf(string, "%d\n", ret);
11679 write(2, string, strlen(string));
11680 alarm(0);
11681#ifdef EAGAIN
11682 if (errno == EAGAIN) {
11683 printf("EAGAIN\n");
11684 goto ok;
11685 }
11686#endif
11687#ifdef EWOULDBLOCK
11688 if (errno == EWOULDBLOCK)
11689 printf("EWOULDBLOCK\n");
11690#endif
11691 ok:
11692 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11693 sleep(2); /* Give it time to close our pipe */
11694 alarm(5);
11695 ret = read(pd[0], buf, 1); /* Should read EOF */
11696 alarm(0);
11697 sprintf(string, "%d\n", ret);
868439a2 11698 write(4, string, strlen(string));
b4eb6b3d
JH
11699 exit(0);
11700 }
11701
11702 close(pd[0]); /* We write to pd[1] */
11703 close(pu[1]); /* We read from pu[0] */
11704 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11705 close(pd[1]); /* Pipe pd is now fully closed! */
11706 exit(0); /* Bye bye, thank you for playing! */
11707}
11708EOCP
11709 set try
11710 if eval $compile_ok; then
11711 echo "$startsh" >mtry
868439a2 11712 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
11713 chmod +x mtry
11714 ./mtry >/dev/null 2>&1
11715 case $? in
11716 0) eagain=`$cat try.out`;;
11717 1) echo "Could not perform non-blocking setting!";;
11718 2) echo "I did a successful read() for something that was not there!";;
11719 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 11720 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
11721 *) echo "Something terribly wrong happened during testing.";;
11722 esac
11723 rd_nodata=`$cat try.ret`
11724 echo "A read() system call with no data present returns $rd_nodata."
11725 case "$rd_nodata" in
11726 0|-1) ;;
11727 *)
11728 echo "(That's peculiar, fixing that to be -1.)"
11729 rd_nodata=-1
11730 ;;
11731 esac
11732 case "$eagain" in
11733 '')
11734 echo "Forcing errno EAGAIN on read() with no data available."
11735 eagain=EAGAIN
11736 ;;
11737 *)
11738 echo "Your read() sets errno to $eagain when no data is available."
11739 ;;
11740 esac
11741 status=`$cat try.err`
11742 case "$status" in
11743 0) echo "And it correctly returns 0 to signal EOF.";;
11744 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11745 *) echo "However, your read() returns '$status' on EOF??";;
11746 esac
11747 val="$define"
11748 if test "$status" = "$rd_nodata"; then
11749 echo "WARNING: you can't distinguish between EOF and no data!"
11750 val="$undef"
11751 fi
11752 else
11753 echo "I can't compile the test program--assuming errno EAGAIN will do."
11754 eagain=EAGAIN
11755 fi
11756 set d_eofnblk
11757 eval $setvar
11758 ;;
11759*)
11760 echo "Using $hint value $eagain."
11761 echo "Your read() returns $rd_nodata when no data is present."
11762 case "$d_eofnblk" in
11763 "$define") echo "And you can see EOF because read() returns 0.";;
11764 "$undef") echo "But you can't see EOF status from read() returned value.";;
11765 *)
11766 echo "(Assuming you can't see EOF status from read anyway.)"
11767 d_eofnblk=$undef
11768 ;;
11769 esac
11770 ;;
11771esac
11772$rm -f try try.* .out core head.c mtry
11773
15b61c98
JH
11774: see if _ptr and _cnt from stdio act std
11775echo " "
b4eb6b3d 11776
15b61c98
JH
11777if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11778 echo "(Looks like you have stdio.h from BSD.)"
11779 case "$stdio_ptr" in
11780 '') stdio_ptr='((fp)->_p)'
11781 ptr_lval=$define
11782 ;;
11783 *) ptr_lval=$d_stdio_ptr_lval;;
11784 esac
11785 case "$stdio_cnt" in
11786 '') stdio_cnt='((fp)->_r)'
11787 cnt_lval=$define
11788 ;;
11789 *) cnt_lval=$d_stdio_cnt_lval;;
11790 esac
11791 case "$stdio_base" in
11792 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11793 esac
11794 case "$stdio_bufsiz" in
11795 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11796 esac
11797elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11798 echo "(Looks like you have stdio.h from Linux.)"
11799 case "$stdio_ptr" in
11800 '') stdio_ptr='((fp)->_IO_read_ptr)'
11801 ptr_lval=$define
11802 ;;
11803 *) ptr_lval=$d_stdio_ptr_lval;;
11804 esac
11805 case "$stdio_cnt" in
11806 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11807 cnt_lval=$undef
11808 ;;
11809 *) cnt_lval=$d_stdio_cnt_lval;;
11810 esac
11811 case "$stdio_base" in
11812 '') stdio_base='((fp)->_IO_read_base)';;
11813 esac
11814 case "$stdio_bufsiz" in
11815 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11816 esac
11817else
11818 case "$stdio_ptr" in
11819 '') stdio_ptr='((fp)->_ptr)'
11820 ptr_lval=$define
11821 ;;
11822 *) ptr_lval=$d_stdio_ptr_lval;;
11823 esac
11824 case "$stdio_cnt" in
11825 '') stdio_cnt='((fp)->_cnt)'
11826 cnt_lval=$define
11827 ;;
11828 *) cnt_lval=$d_stdio_cnt_lval;;
11829 esac
11830 case "$stdio_base" in
11831 '') stdio_base='((fp)->_base)';;
11832 esac
11833 case "$stdio_bufsiz" in
11834 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11835 esac
11836fi
b4eb6b3d 11837
15b61c98
JH
11838: test whether _ptr and _cnt really work
11839echo "Checking how std your stdio is..." >&4
11840$cat >try.c <<EOP
11841#include <stdio.h>
55954f19
JH
11842#$i_stdlib I_STDLIB
11843#ifdef I_STDLIB
9d9004a9 11844#include <stdlib.h>
55954f19 11845#endif
15b61c98
JH
11846#define FILE_ptr(fp) $stdio_ptr
11847#define FILE_cnt(fp) $stdio_cnt
9d9004a9 11848int main() {
15b61c98
JH
11849 FILE *fp = fopen("try.c", "r");
11850 char c = getc(fp);
11851 if (
11852 18 <= FILE_cnt(fp) &&
11853 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11854 )
11855 exit(0);
11856 exit(1);
9d9004a9 11857}
15b61c98
JH
11858EOP
11859val="$undef"
11860set try
11861if eval $compile && $to try.c; then
11862 if $run ./try; then
11863 echo "Your stdio acts pretty std."
11864 val="$define"
9d9004a9 11865 else
15b61c98 11866 echo "Your stdio isn't very std."
9d9004a9 11867 fi
15b61c98
JH
11868else
11869 echo "Your stdio doesn't appear very std."
11870fi
11871$rm -f try.c try
11872
11873# glibc 2.2.90 and above apparently change stdio streams so Perl's
11874# direct buffer manipulation no longer works. The Configure tests
11875# should be changed to correctly detect this, but until then,
11876# the following check should at least let perl compile and run.
11877# (This quick fix should be updated before 5.8.1.)
11878# To be defensive, reject all unknown versions, and all versions > 2.2.9.
11879# A. Dougherty, June 3, 2002.
11880case "$d_gnulibc" in
11881$define)
11882 case "$gnulibc_version" in
11883 2.[01]*) ;;
11884 2.2) ;;
11885 2.2.[0-9]) ;;
11886 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11887 val="$undef"
11888 ;;
11889 esac
9d9004a9
AD
11890 ;;
11891esac
15b61c98 11892set d_stdstdio
9d9004a9 11893eval $setvar
9d9004a9 11894
15b61c98
JH
11895: Can _ptr be used as an lvalue?
11896case "$d_stdstdio$ptr_lval" in
11897$define$define) val=$define ;;
11898*) val=$undef ;;
11899esac
11900set d_stdio_ptr_lval
11901eval $setvar
9d9004a9 11902
15b61c98
JH
11903: Can _cnt be used as an lvalue?
11904case "$d_stdstdio$cnt_lval" in
11905$define$define) val=$define ;;
11906*) val=$undef ;;
11907esac
11908set d_stdio_cnt_lval
11909eval $setvar
b4eb6b3d 11910
15b61c98
JH
11911
11912: test whether setting _ptr sets _cnt as a side effect
11913d_stdio_ptr_lval_sets_cnt="$undef"
11914d_stdio_ptr_lval_nochange_cnt="$undef"
11915case "$d_stdio_ptr_lval$d_stdstdio" in
11916$define$define)
11917 echo "Checking to see what happens if we set the stdio ptr..." >&4
11918$cat >try.c <<EOP
11919#include <stdio.h>
11920/* Can we scream? */
11921/* Eat dust sed :-) */
11922/* In the buffer space, no one can hear you scream. */
55954f19
JH
11923#$i_stdlib I_STDLIB
11924#ifdef I_STDLIB
11925#include <stdlib.h>
11926#endif
15b61c98
JH
11927#define FILE_ptr(fp) $stdio_ptr
11928#define FILE_cnt(fp) $stdio_cnt
b4eb6b3d 11929#include <sys/types.h>
b4eb6b3d 11930int main() {
15b61c98
JH
11931 FILE *fp = fopen("try.c", "r");
11932 int c;
11933 char *ptr;
11934 size_t cnt;
11935 if (!fp) {
11936 puts("Fail even to read");
11937 exit(1);
11938 }
11939 c = getc(fp); /* Read away the first # */
11940 if (c == EOF) {
11941 puts("Fail even to read");
11942 exit(1);
11943 }
11944 if (!(
11945 18 <= FILE_cnt(fp) &&
11946 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11947 )) {
11948 puts("Fail even to read");
11949 exit (1);
11950 }
11951 ptr = (char*) FILE_ptr(fp);
11952 cnt = (size_t)FILE_cnt(fp);
11953
11954 FILE_ptr(fp) += 42;
11955
11956 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11957 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11958 exit (1);
11959 }
11960 if (FILE_cnt(fp) <= 20) {
11961 printf ("Fail (<20 chars to test)");
11962 exit (1);
11963 }
11964 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11965 puts("Fail compare");
11966 exit (1);
11967 }
11968 if (cnt == FILE_cnt(fp)) {
11969 puts("Pass_unchanged");
11970 exit (0);
11971 }
11972 if (FILE_cnt(fp) == (cnt - 42)) {
11973 puts("Pass_changed");
11974 exit (0);
11975 }
11976 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11977 return 1;
11978
11979}
11980EOP
11981 set try
11982 if eval $compile && $to try.c; then
11983 case `$run ./try` in
11984 Pass_changed)
11985 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11986 d_stdio_ptr_lval_sets_cnt="$define" ;;
11987 Pass_unchanged)
11988 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11989 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11990 Fail*)
11991 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11992 *)
11993 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11994 esac
11995 else
11996 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11997 fi
11998 $rm -f try.c try
11999 ;;
12000esac
12001
12002: see if _base is also standard
12003val="$undef"
12004case "$d_stdstdio" in
12005$define)
12006 $cat >try.c <<EOP
12007#include <stdio.h>
12008#$i_stdlib I_STDLIB
12009#ifdef I_STDLIB
12010#include <stdlib.h>
12011#endif
12012#define FILE_base(fp) $stdio_base
12013#define FILE_bufsiz(fp) $stdio_bufsiz
12014int main() {
12015 FILE *fp = fopen("try.c", "r");
12016 char c = getc(fp);
12017 if (
12018 19 <= FILE_bufsiz(fp) &&
12019 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12020 )
12021 exit(0);
12022 exit(1);
12023}
12024EOP
12025 set try
12026 if eval $compile && $to try.c; then
12027 if $run ./try; then
12028 echo "And its _base field acts std."
12029 val="$define"
12030 else
12031 echo "But its _base field isn't std."
12032 fi
12033 else
12034 echo "However, it seems to be lacking the _base field."
12035 fi
12036 $rm -f try.c try
12037 ;;
12038esac
12039set d_stdiobase
12040eval $setvar
12041
12042: see if fast_stdio exists
12043val="$undef"
12044case "$d_stdstdio:$d_stdio_ptr_lval" in
12045"$define:$define")
12046 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12047 *$define*)
12048 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12049 val="$define"
12050 ;;
12051 esac
12052 ;;
12053esac
12054set d_faststdio
12055eval $setvar
12056
12057
12058
12059: see if fchdir exists
12060set fchdir d_fchdir
12061eval $inlibc
12062
12063: see if fchmod exists
12064set fchmod d_fchmod
12065eval $inlibc
12066
12067: see if fchown exists
12068set fchown d_fchown
12069eval $inlibc
12070
12071: see if this is an fcntl system
12072set fcntl d_fcntl
12073eval $inlibc
12074
12075echo " "
12076: See if fcntl-based locking works.
12077$cat >try.c <<EOCP
12078#$i_stdlib I_STDLIB
12079#ifdef I_STDLIB
12080#include <stdlib.h>
12081#endif
12082#include <unistd.h>
12083#include <fcntl.h>
12084#include <signal.h>
12085$signal_t blech(x) int x; { exit(3); }
12086int main() {
12087#if defined(F_SETLK) && defined(F_SETLKW)
12088 struct flock flock;
12089 int retval, fd;
12090 fd = open("try.c", O_RDONLY);
12091 flock.l_type = F_RDLCK;
12092 flock.l_whence = SEEK_SET;
12093 flock.l_start = flock.l_len = 0;
12094 signal(SIGALRM, blech);
12095 alarm(10);
12096 retval = fcntl(fd, F_SETLK, &flock);
12097 close(fd);
12098 (retval < 0 ? exit(2) : exit(0));
12099#else
12100 exit(2);
12101#endif
12102}
12103EOCP
12104echo "Checking if fcntl-based file locking works... "
12105case "$d_fcntl" in
12106"$define")
12107 set try
12108 if eval $compile_ok; then
12109 if $run ./try; then
12110 echo "Yes, it seems to work."
12111 val="$define"
12112 else
12113 echo "Nope, it didn't work."
12114 val="$undef"
12115 case "$?" in
12116 3) $cat >&4 <<EOM
12117***
12118*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12119*** This is (almost) impossible.
12120*** If your NFS lock daemons are not feeling well, something like
12121*** this may happen, please investigate. Cannot continue, aborting.
12122***
12123EOM
12124 exit 1
12125 ;;
12126 esac
12127 fi
12128 else
12129 echo "I'm unable to compile the test program, so I'll assume not."
12130 val="$undef"
12131 fi
12132 ;;
12133*) val="$undef";
12134 echo "Nope, since you don't even have fcntl()."
12135 ;;
12136esac
12137set d_fcntl_can_lock
12138eval $setvar
12139$rm -f try*
12140
12141
12142: check for fd_set items
12143$cat <<EOM
12144
12145Checking to see how well your C compiler handles fd_set and friends ...
12146EOM
12147$cat >try.c <<EOCP
12148#$i_stdlib I_STDLIB
12149#ifdef I_STDLIB
12150#include <stdlib.h>
12151#endif
12152#$i_systime I_SYS_TIME
12153#$i_sysselct I_SYS_SELECT
12154#$d_socket HAS_SOCKET
12155#include <sys/types.h>
12156#ifdef HAS_SOCKET
12157#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12158#endif
12159#ifdef I_SYS_TIME
12160#include <sys/time.h>
12161#endif
12162#ifdef I_SYS_SELECT
12163#include <sys/select.h>
12164#endif
12165int main() {
12166 fd_set fds;
12167
12168#ifdef TRYBITS
12169 if(fds.fds_bits);
12170#endif
12171
12172#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12173 exit(0);
12174#else
12175 exit(1);
12176#endif
12177}
12178EOCP
12179set try -DTRYBITS
12180if eval $compile; then
12181 d_fds_bits="$define"
12182 d_fd_set="$define"
12183 echo "Well, your system knows about the normal fd_set typedef..." >&4
12184 if $run ./try; then
b4eb6b3d
JH
12185 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12186 d_fd_macros="$define"
12187 else
12188 $cat >&4 <<'EOM'
12189but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12190EOM
12191 d_fd_macros="$undef"
12192 fi
12193else
12194 $cat <<'EOM'
12195Hmm, your compiler has some difficulty with fd_set. Checking further...
12196EOM
5440bc8e 12197 set try
b4eb6b3d
JH
12198 if eval $compile; then
12199 d_fds_bits="$undef"
12200 d_fd_set="$define"
12201 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 12202 if $run ./try; then
b4eb6b3d
JH
12203 echo "and you have the normal fd_set macros." >&4
12204 d_fd_macros="$define"
12205 else
12206 $cat <<'EOM'
12207but not the normal fd_set macros! Gross! More work for me...
12208EOM
12209 d_fd_macros="$undef"
12210 fi
12211 else
12212 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12213 d_fd_set="$undef"
12214 d_fds_bits="$undef"
12215 d_fd_macros="$undef"
12216 fi
12217fi
5440bc8e 12218$rm -f try try.*
b4eb6b3d
JH
12219
12220: see if fgetpos exists
12221set fgetpos d_fgetpos
12222eval $inlibc
12223
758a5d79
JH
12224: see if finite exists
12225set finite d_finite
12226eval $inlibc
12227
12228: see if finitel exists
12229set finitel d_finitel
12230eval $inlibc
12231
b4eb6b3d
JH
12232: see if flock exists
12233set flock d_flock
12234eval $inlibc
12235
2ef53570
JH
12236: see if prototype for flock is available
12237echo " "
12238set d_flockproto flock $i_sysfile sys/file.h
12239eval $hasproto
12240
b4eb6b3d
JH
12241: see if fork exists
12242set fork d_fork
12243eval $inlibc
12244
758a5d79
JH
12245: see if fp_class exists
12246set fp_class d_fp_class
12247eval $inlibc
12248
b4eb6b3d
JH
12249: see if pathconf exists
12250set pathconf d_pathconf
12251eval $inlibc
12252
12253: see if fpathconf exists
12254set fpathconf d_fpathconf
12255eval $inlibc
12256
758a5d79
JH
12257: see if fpclass exists
12258set fpclass d_fpclass
12259eval $inlibc
12260
12261: see if fpclassify exists
12262set fpclassify d_fpclassify
12263eval $inlibc
12264
12265: see if fpclassl exists
12266set fpclassl d_fpclassl
12267eval $inlibc
12268
b4eb6b3d
JH
12269
12270: check for fpos64_t
12271echo " "
12272echo "Checking to see if you have fpos64_t..." >&4
12273$cat >try.c <<EOCP
12274#include <stdio.h>
12275int main() { fpos64_t x = 7; }
12276EOCP
12277set try
12278if eval $compile; then
12279 val="$define"
12280 echo "You have fpos64_t."
12281else
12282 val="$undef"
12283 echo "You do not have fpos64_t."
12284 case "$fpossize" in
12285 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12286 esac
12287fi
12288$rm -f try.* try
12289set d_fpos64_t
12290eval $setvar
12291
12292: see if frexpl exists
12293set frexpl d_frexpl
12294eval $inlibc
12295
b4eb6b3d
JH
12296: see if this is a sys/param system
12297set sys/param.h i_sysparam
12298eval $inhdr
12299
12300: see if this is a sys/mount.h system
12301set sys/mount.h i_sysmount
12302eval $inhdr
12303
b4eb6b3d
JH
12304
12305echo " "
12306echo "Checking to see if your system supports struct fs_data..." >&4
12307set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12308eval $hasstruct
12309case "$d_fs_data_s" in
12310"$define") echo "Yes, it does." ;;
12311*) echo "No, it doesn't." ;;
12312esac
12313
12314: see if fseeko exists
12315set fseeko d_fseeko
12316eval $inlibc
12317case "$longsize" in
123188) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12319esac
12320
12321: see if fsetpos exists
12322set fsetpos d_fsetpos
12323eval $inlibc
12324
12325
12326: see if fstatfs exists
12327set fstatfs d_fstatfs
12328eval $inlibc
12329
12330
12331: see if statvfs exists
12332set statvfs d_statvfs
12333eval $inlibc
12334
12335: see if fstatvfs exists
12336set fstatvfs d_fstatvfs
12337eval $inlibc
12338
12339
411ab01c
JH
12340: see if fsync exists
12341set fsync d_fsync
12342eval $inlibc
12343
b4eb6b3d
JH
12344: see if ftello exists
12345set ftello d_ftello
12346eval $inlibc
12347case "$longsize" in
123488) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12349esac
12350
12351: see if getcwd exists
12352set getcwd d_getcwd
12353eval $inlibc
12354
12355: see if getespwnam exists
12356set getespwnam d_getespwnam
12357eval $inlibc
12358
12359
12360: see if getfsstat exists
12361set getfsstat d_getfsstat
12362eval $inlibc
12363
12364: see if getgrent exists
12365set getgrent d_getgrent
12366eval $inlibc
12367
10bc17b6
JH
12368: see if getgrent_r exists
12369set getgrent_r d_getgrent_r
12370eval $inlibc
12371case "$d_getgrent_r" in
12372"$define")
12373 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12374 case "$d_getgrent_r_proto:$usethreads" in
12375 ":define") d_getgrent_r_proto=define
a48ec845
JH
12376 set d_getgrent_r_proto getgrent_r $hdrs
12377 eval $hasproto ;;
12378 *) ;;
12379 esac
12380 case "$d_getgrent_r_proto" in
12381 define)
10bc17b6
JH
12382 case "$getgrent_r_proto" in
12383 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12384 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12385 esac
12386 case "$getgrent_r_proto" in
12387 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12388 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12389 esac
12390 case "$getgrent_r_proto" in
12391 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12392 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12393 esac
12394 case "$getgrent_r_proto" in
12395 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12396 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12397 esac
12398 case "$getgrent_r_proto" in
12399 ''|0) try='int getgrent_r(struct group*, char*, int);'
12400 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12401 esac
12402 case "$getgrent_r_proto" in
12403 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12404 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12405 esac
12406 case "$getgrent_r_proto" in
90e831dc 12407 ''|0) d_getgrent_r=undef
10bc17b6 12408 getgrent_r_proto=0
a48ec845 12409 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12410 * ) case "$getgrent_r_proto" in
12411 REENTRANT_PROTO*) ;;
12412 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12413 esac
12414 echo "Prototype: $try" ;;
12415 esac
12416 ;;
c18e646a
JH
12417 *) case "$usethreads" in
12418 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12419 esac
90e831dc
SB
12420 d_getgrent_r=undef
12421 getgrent_r_proto=0
c18e646a 12422 ;;
a48ec845
JH
12423 esac
12424 ;;
10bc17b6
JH
12425*) getgrent_r_proto=0
12426 ;;
12427esac
12428
12429: see if getgrgid_r exists
12430set getgrgid_r d_getgrgid_r
12431eval $inlibc
12432case "$d_getgrgid_r" in
12433"$define")
12434 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12435 case "$d_getgrgid_r_proto:$usethreads" in
12436 ":define") d_getgrgid_r_proto=define
a48ec845
JH
12437 set d_getgrgid_r_proto getgrgid_r $hdrs
12438 eval $hasproto ;;
12439 *) ;;
12440 esac
12441 case "$d_getgrgid_r_proto" in
12442 define)
10bc17b6
JH
12443 case "$getgrgid_r_proto" in
12444 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12445 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12446 esac
12447 case "$getgrgid_r_proto" in
12448 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12449 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12450 esac
12451 case "$getgrgid_r_proto" in
12452 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12453 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12454 esac
12455 case "$getgrgid_r_proto" in
12456 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12457 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12458 esac
12459 case "$getgrgid_r_proto" in
90e831dc 12460 ''|0) d_getgrgid_r=undef
10bc17b6 12461 getgrgid_r_proto=0
a48ec845 12462 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12463 * ) case "$getgrgid_r_proto" in
12464 REENTRANT_PROTO*) ;;
12465 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12466 esac
12467 echo "Prototype: $try" ;;
12468 esac
12469 ;;
c18e646a
JH
12470 *) case "$usethreads" in
12471 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12472 esac
90e831dc
SB
12473 d_getgrgid_r=undef
12474 getgrgid_r_proto=0
c18e646a 12475 ;;
a48ec845
JH
12476 esac
12477 ;;
10bc17b6
JH
12478*) getgrgid_r_proto=0
12479 ;;
12480esac
12481
12482: see if getgrnam_r exists
12483set getgrnam_r d_getgrnam_r
12484eval $inlibc
12485case "$d_getgrnam_r" in
12486"$define")
12487 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12488 case "$d_getgrnam_r_proto:$usethreads" in
12489 ":define") d_getgrnam_r_proto=define
a48ec845
JH
12490 set d_getgrnam_r_proto getgrnam_r $hdrs
12491 eval $hasproto ;;
12492 *) ;;
12493 esac
12494 case "$d_getgrnam_r_proto" in
12495 define)
10bc17b6
JH
12496 case "$getgrnam_r_proto" in
12497 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12498 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12499 esac
12500 case "$getgrnam_r_proto" in
12501 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12502 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12503 esac
12504 case "$getgrnam_r_proto" in
12505 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12506 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12507 esac
12508 case "$getgrnam_r_proto" in
12509 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12510 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12511 esac
12512 case "$getgrnam_r_proto" in
12513 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12514 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12515 esac
12516 case "$getgrnam_r_proto" in
90e831dc 12517 ''|0) d_getgrnam_r=undef
10bc17b6 12518 getgrnam_r_proto=0
a48ec845 12519 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12520 * ) case "$getgrnam_r_proto" in
12521 REENTRANT_PROTO*) ;;
12522 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12523 esac
12524 echo "Prototype: $try" ;;
12525 esac
12526 ;;
c18e646a
JH
12527 *) case "$usethreads" in
12528 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12529 esac
90e831dc
SB
12530 d_getgrnam_r=undef
12531 getgrnam_r_proto=0
c18e646a 12532 ;;
a48ec845
JH
12533 esac
12534 ;;
10bc17b6
JH
12535*) getgrnam_r_proto=0
12536 ;;
12537esac
12538
b4eb6b3d
JH
12539: see if gethostbyaddr exists
12540set gethostbyaddr d_gethbyaddr
12541eval $inlibc
12542
12543: see if gethostbyname exists
12544set gethostbyname d_gethbyname
12545eval $inlibc
12546
12547: see if gethostent exists
12548set gethostent d_gethent
12549eval $inlibc
12550
12551: see how we will look up host name
12552echo " "
12553call=''
12554if set gethostname val -f d_gethname; eval $csym; $val; then
12555 echo 'gethostname() found.' >&4
12556 d_gethname="$define"
12557 call=gethostname
12558fi
12559if set uname val -f d_uname; eval $csym; $val; then
12560 if ./xenix; then
12561 $cat <<'EOM'
12562uname() was found, but you're running xenix, and older versions of xenix
12563have a broken uname(). If you don't really know whether your xenix is old
12564enough to have a broken system call, use the default answer.
12565
12566EOM
12567 dflt=y
12568 case "$d_uname" in
12569 "$define") dflt=n;;
12570 esac
12571 rp='Is your uname() broken?'
12572 . ./myread
12573 case "$ans" in
12574 n*) d_uname="$define"; call=uname;;
12575 esac
12576 else
12577 echo 'uname() found.' >&4
12578 d_uname="$define"
12579 case "$call" in
12580 '') call=uname ;;
12581 esac
12582 fi
12583fi
12584case "$d_gethname" in
12585'') d_gethname="$undef";;
12586esac
12587case "$d_uname" in
12588'') d_uname="$undef";;
12589esac
12590case "$d_uname$d_gethname" in
12591*define*)
12592 dflt=n
12593 cat <<EOM
12594
12595Every now and then someone has a $call() that lies about the hostname
12596but can't be fixed for political or economic reasons. If you wish, I can
12597pretend $call() isn't there and maybe compute hostname at run-time
12598thanks to the '$phostname' command.
12599
12600EOM
12601 rp="Shall I ignore $call() from now on?"
12602 . ./myread
12603 case "$ans" in
12604 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12605 esac;;
12606esac
12607case "$phostname" in
12608'') aphostname='';;
12609*) case "$aphostname" in
12610 /*) ;;
12611 *) set X $phostname
12612 shift
12613 file=$1
12614 shift
12615 file=`./loc $file $file $pth`
12616 aphostname=`echo $file $*`
12617 ;;
12618 esac
12619 ;;
12620esac
12621case "$d_uname$d_gethname" in
12622*define*) ;;
12623*)
12624 case "$phostname" in
12625 '')
12626 echo "There will be no way for $package to get your hostname." >&4;;
12627 *)
12628 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12629 ;;
12630 esac;;
12631esac
12632case "$d_phostname" in
12633'') d_phostname="$undef";;
12634esac
12635
10bc17b6
JH
12636: see if gethostbyaddr_r exists
12637set gethostbyaddr_r d_gethostbyaddr_r
12638eval $inlibc
12639case "$d_gethostbyaddr_r" in
12640"$define")
12641 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12642 case "$d_gethostbyaddr_r_proto:$usethreads" in
12643 ":define") d_gethostbyaddr_r_proto=define
a48ec845
JH
12644 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12645 eval $hasproto ;;
12646 *) ;;
12647 esac
12648 case "$d_gethostbyaddr_r_proto" in
12649 define)
10bc17b6
JH
12650 case "$gethostbyaddr_r_proto" in
12651 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12652 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12653 esac
12654 case "$gethostbyaddr_r_proto" in
12655 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12656 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12657 esac
12658 case "$gethostbyaddr_r_proto" in
12659 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12660 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12661 esac
12662 case "$gethostbyaddr_r_proto" in
12663 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12664 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12665 esac
12666 case "$gethostbyaddr_r_proto" in
12667 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12668 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12669 esac
12670 case "$gethostbyaddr_r_proto" in
12671 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12672 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12673 esac
12674 case "$gethostbyaddr_r_proto" in
12675 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12676 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12677 esac
12678 case "$gethostbyaddr_r_proto" in
12679 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12680 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12681 esac
12682 case "$gethostbyaddr_r_proto" in
12683 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12684 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12685 esac
12686 case "$gethostbyaddr_r_proto" in
12687 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12688 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12689 esac
12690 case "$gethostbyaddr_r_proto" in
a845a0d4
JH
12691 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12692 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12693 esac
12694 case "$gethostbyaddr_r_proto" in
90e831dc 12695 ''|0) d_gethostbyaddr_r=undef
10bc17b6 12696 gethostbyaddr_r_proto=0
a48ec845 12697 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12698 * ) case "$gethostbyaddr_r_proto" in
12699 REENTRANT_PROTO*) ;;
12700 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12701 esac
12702 echo "Prototype: $try" ;;
12703 esac
12704 ;;
c18e646a
JH
12705 *) case "$usethreads" in
12706 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12707 esac
90e831dc
SB
12708 d_gethostbyaddr_r=undef
12709 gethostbyaddr_r_proto=0
c18e646a 12710 ;;
a48ec845
JH
12711 esac
12712 ;;
10bc17b6
JH
12713*) gethostbyaddr_r_proto=0
12714 ;;
12715esac
12716
12717: see if gethostbyname_r exists
12718set gethostbyname_r d_gethostbyname_r
12719eval $inlibc
12720case "$d_gethostbyname_r" in
12721"$define")
12722 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12723 case "$d_gethostbyname_r_proto:$usethreads" in
12724 ":define") d_gethostbyname_r_proto=define
a48ec845
JH
12725 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12726 eval $hasproto ;;
12727 *) ;;
12728 esac
12729 case "$d_gethostbyname_r_proto" in
12730 define)
10bc17b6
JH
12731 case "$gethostbyname_r_proto" in
12732 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12733 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12734 esac
12735 case "$gethostbyname_r_proto" in
12736 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12737 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12738 esac
12739 case "$gethostbyname_r_proto" in
12740 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12741 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12742 esac
12743 case "$gethostbyname_r_proto" in
90e831dc 12744 ''|0) d_gethostbyname_r=undef
10bc17b6 12745 gethostbyname_r_proto=0
a48ec845 12746 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12747 * ) case "$gethostbyname_r_proto" in
12748 REENTRANT_PROTO*) ;;
12749 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12750 esac
12751 echo "Prototype: $try" ;;
12752 esac
12753 ;;
c18e646a
JH
12754 *) case "$usethreads" in
12755 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12756 esac
90e831dc
SB
12757 d_gethostbyname_r=undef
12758 gethostbyname_r_proto=0
c18e646a 12759 ;;
a48ec845
JH
12760 esac
12761 ;;
10bc17b6
JH
12762*) gethostbyname_r_proto=0
12763 ;;
12764esac
12765
12766: see if gethostent_r exists
12767set gethostent_r d_gethostent_r
12768eval $inlibc
12769case "$d_gethostent_r" in
12770"$define")
12771 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12772 case "$d_gethostent_r_proto:$usethreads" in
12773 ":define") d_gethostent_r_proto=define
a48ec845
JH
12774 set d_gethostent_r_proto gethostent_r $hdrs
12775 eval $hasproto ;;
12776 *) ;;
12777 esac
12778 case "$d_gethostent_r_proto" in
12779 define)
10bc17b6
JH
12780 case "$gethostent_r_proto" in
12781 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12782 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12783 esac
12784 case "$gethostent_r_proto" in
12785 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12786 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12787 esac
12788 case "$gethostent_r_proto" in
12789 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12790 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12791 esac
12792 case "$gethostent_r_proto" in
12793 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12794 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12795 esac
12796 case "$gethostent_r_proto" in
12797 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12798 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12799 esac
12800 case "$gethostent_r_proto" in
12801 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12802 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12803 esac
12804 case "$gethostent_r_proto" in
90e831dc 12805 ''|0) d_gethostent_r=undef
10bc17b6 12806 gethostent_r_proto=0
a48ec845 12807 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12808 * ) case "$gethostent_r_proto" in
12809 REENTRANT_PROTO*) ;;
12810 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12811 esac
12812 echo "Prototype: $try" ;;
12813 esac
12814 ;;
c18e646a
JH
12815 *) case "$usethreads" in
12816 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12817 esac
90e831dc
SB
12818 d_gethostent_r=undef
12819 gethostent_r_proto=0
c18e646a 12820 ;;
a48ec845
JH
12821 esac
12822 ;;
10bc17b6
JH
12823*) gethostent_r_proto=0
12824 ;;
12825esac
b4eb6b3d
JH
12826
12827: see if prototypes for various gethostxxx netdb.h functions are available
12828echo " "
12829set d_gethostprotos gethostent $i_netdb netdb.h
12830eval $hasproto
12831
4e0554ec
JH
12832: see if getitimer exists
12833set getitimer d_getitimer
12834eval $inlibc
12835
b4eb6b3d
JH
12836: see if getlogin exists
12837set getlogin d_getlogin
12838eval $inlibc
12839
10bc17b6
JH
12840: see if getlogin_r exists
12841set getlogin_r d_getlogin_r
12842eval $inlibc
12843case "$d_getlogin_r" in
12844"$define")
12845 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
12846 case "$d_getlogin_r_proto:$usethreads" in
12847 ":define") d_getlogin_r_proto=define
a48ec845
JH
12848 set d_getlogin_r_proto getlogin_r $hdrs
12849 eval $hasproto ;;
12850 *) ;;
12851 esac
12852 case "$d_getlogin_r_proto" in
12853 define)
10bc17b6
JH
12854 case "$getlogin_r_proto" in
12855 ''|0) try='int getlogin_r(char*, size_t);'
12856 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12857 esac
12858 case "$getlogin_r_proto" in
12859 ''|0) try='int getlogin_r(char*, int);'
12860 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12861 esac
12862 case "$getlogin_r_proto" in
12863 ''|0) try='char* getlogin_r(char*, size_t);'
12864 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12865 esac
12866 case "$getlogin_r_proto" in
12867 ''|0) try='char* getlogin_r(char*, int);'
12868 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12869 esac
12870 case "$getlogin_r_proto" in
90e831dc 12871 ''|0) d_getlogin_r=undef
10bc17b6 12872 getlogin_r_proto=0
a48ec845 12873 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12874 * ) case "$getlogin_r_proto" in
12875 REENTRANT_PROTO*) ;;
12876 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12877 esac
12878 echo "Prototype: $try" ;;
12879 esac
12880 ;;
c18e646a
JH
12881 *) case "$usethreads" in
12882 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12883 esac
90e831dc
SB
12884 d_getlogin_r=undef
12885 getlogin_r_proto=0
c18e646a 12886 ;;
a48ec845
JH
12887 esac
12888 ;;
10bc17b6
JH
12889*) getlogin_r_proto=0
12890 ;;
12891esac
12892
b4eb6b3d
JH
12893: see if getmnt exists
12894set getmnt d_getmnt
12895eval $inlibc
12896
12897: see if getmntent exists
12898set getmntent d_getmntent
12899eval $inlibc
12900
12901: see if getnetbyaddr exists
12902set getnetbyaddr d_getnbyaddr
12903eval $inlibc
12904
12905: see if getnetbyname exists
12906set getnetbyname d_getnbyname
12907eval $inlibc
12908
12909: see if getnetent exists
12910set getnetent d_getnent
12911eval $inlibc
12912
10bc17b6
JH
12913: see if getnetbyaddr_r exists
12914set getnetbyaddr_r d_getnetbyaddr_r
12915eval $inlibc
12916case "$d_getnetbyaddr_r" in
12917"$define")
12918 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12919 case "$d_getnetbyaddr_r_proto:$usethreads" in
12920 ":define") d_getnetbyaddr_r_proto=define
a48ec845
JH
12921 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12922 eval $hasproto ;;
12923 *) ;;
12924 esac
12925 case "$d_getnetbyaddr_r_proto" in
12926 define)
10bc17b6
JH
12927 case "$getnetbyaddr_r_proto" in
12928 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12929 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12930 esac
12931 case "$getnetbyaddr_r_proto" in
12932 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12933 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12934 esac
12935 case "$getnetbyaddr_r_proto" in
12936 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12937 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12938 esac
12939 case "$getnetbyaddr_r_proto" in
12940 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12941 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12942 esac
12943 case "$getnetbyaddr_r_proto" in
12944 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12945 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12946 esac
12947 case "$getnetbyaddr_r_proto" in
12948 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12949 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12950 esac
12951 case "$getnetbyaddr_r_proto" in
12952 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12953 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12954 esac
12955 case "$getnetbyaddr_r_proto" in
a845a0d4
JH
12956 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12957 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12958 esac
12959 case "$getnetbyaddr_r_proto" in
90e831dc 12960 ''|0) d_getnetbyaddr_r=undef
10bc17b6 12961 getnetbyaddr_r_proto=0
a48ec845 12962 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12963 * ) case "$getnetbyaddr_r_proto" in
12964 REENTRANT_PROTO*) ;;
12965 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12966 esac
12967 echo "Prototype: $try" ;;
12968 esac
12969 ;;
c18e646a
JH
12970 *) case "$usethreads" in
12971 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12972 esac
90e831dc
SB
12973 d_getnetbyaddr_r=undef
12974 getnetbyaddr_r_proto=0
c18e646a 12975 ;;
a48ec845
JH
12976 esac
12977 ;;
10bc17b6
JH
12978*) getnetbyaddr_r_proto=0
12979 ;;
12980esac
12981
12982: see if getnetbyname_r exists
12983set getnetbyname_r d_getnetbyname_r
12984eval $inlibc
12985case "$d_getnetbyname_r" in
12986"$define")
12987 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12988 case "$d_getnetbyname_r_proto:$usethreads" in
12989 ":define") d_getnetbyname_r_proto=define
a48ec845
JH
12990 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12991 eval $hasproto ;;
12992 *) ;;
12993 esac
12994 case "$d_getnetbyname_r_proto" in
12995 define)
10bc17b6
JH
12996 case "$getnetbyname_r_proto" in
12997 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12998 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12999 esac
13000 case "$getnetbyname_r_proto" in
13001 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13002 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13003 esac
13004 case "$getnetbyname_r_proto" in
13005 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13006 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13007 esac
13008 case "$getnetbyname_r_proto" in
13009 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13010 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13011 esac
13012 case "$getnetbyname_r_proto" in
90e831dc 13013 ''|0) d_getnetbyname_r=undef
10bc17b6 13014 getnetbyname_r_proto=0
a48ec845 13015 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13016 * ) case "$getnetbyname_r_proto" in
13017 REENTRANT_PROTO*) ;;
13018 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13019 esac
13020 echo "Prototype: $try" ;;
13021 esac
13022 ;;
c18e646a
JH
13023 *) case "$usethreads" in
13024 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13025 esac
90e831dc
SB
13026 d_getnetbyname_r=undef
13027 getnetbyname_r_proto=0
c18e646a 13028 ;;
a48ec845
JH
13029 esac
13030 ;;
10bc17b6
JH
13031*) getnetbyname_r_proto=0
13032 ;;
13033esac
13034
13035: see if getnetent_r exists
13036set getnetent_r d_getnetent_r
13037eval $inlibc
13038case "$d_getnetent_r" in
13039"$define")
13040 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13041 case "$d_getnetent_r_proto:$usethreads" in
13042 ":define") d_getnetent_r_proto=define
a48ec845
JH
13043 set d_getnetent_r_proto getnetent_r $hdrs
13044 eval $hasproto ;;
13045 *) ;;
13046 esac
13047 case "$d_getnetent_r_proto" in
13048 define)
10bc17b6
JH
13049 case "$getnetent_r_proto" in
13050 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13051 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13052 esac
13053 case "$getnetent_r_proto" in
13054 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13055 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13056 esac
13057 case "$getnetent_r_proto" in
13058 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13059 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13060 esac
13061 case "$getnetent_r_proto" in
13062 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13063 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13064 esac
13065 case "$getnetent_r_proto" in
13066 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13067 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13068 esac
13069 case "$getnetent_r_proto" in
13070 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13071 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13072 esac
13073 case "$getnetent_r_proto" in
90e831dc 13074 ''|0) d_getnetent_r=undef
10bc17b6 13075 getnetent_r_proto=0
a48ec845 13076 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13077 * ) case "$getnetent_r_proto" in
13078 REENTRANT_PROTO*) ;;
13079 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13080 esac
13081 echo "Prototype: $try" ;;
13082 esac
13083 ;;
c18e646a
JH
13084 *) case "$usethreads" in
13085 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13086 esac
90e831dc
SB
13087 d_getnetent_r=undef
13088 getnetent_r_proto=0
c18e646a 13089 ;;
a48ec845
JH
13090 esac
13091 ;;
10bc17b6
JH
13092*) getnetent_r_proto=0
13093 ;;
13094esac
13095
b4eb6b3d
JH
13096: see if prototypes for various getnetxxx netdb.h functions are available
13097echo " "
13098set d_getnetprotos getnetent $i_netdb netdb.h
13099eval $hasproto
13100
0c0643d0
JH
13101: see if getpagesize exists
13102set getpagesize d_getpagsz
13103eval $inlibc
13104
b4eb6b3d
JH
13105
13106: see if getprotobyname exists
13107set getprotobyname d_getpbyname
13108eval $inlibc
13109
13110: see if getprotobynumber exists
13111set getprotobynumber d_getpbynumber
13112eval $inlibc
13113
13114: see if getprotoent exists
13115set getprotoent d_getpent
13116eval $inlibc
13117
13118: see if getpgid exists
13119set getpgid d_getpgid
13120eval $inlibc
13121
13122: see if getpgrp2 exists
13123set getpgrp2 d_getpgrp2
13124eval $inlibc
13125
13126: see if getppid exists
13127set getppid d_getppid
13128eval $inlibc
13129
13130: see if getpriority exists
13131set getpriority d_getprior
13132eval $inlibc
13133
10bc17b6
JH
13134: see if getprotobyname_r exists
13135set getprotobyname_r d_getprotobyname_r
13136eval $inlibc
13137case "$d_getprotobyname_r" in
13138"$define")
13139 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13140 case "$d_getprotobyname_r_proto:$usethreads" in
13141 ":define") d_getprotobyname_r_proto=define
a48ec845
JH
13142 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13143 eval $hasproto ;;
13144 *) ;;
13145 esac
13146 case "$d_getprotobyname_r_proto" in
13147 define)
10bc17b6
JH
13148 case "$getprotobyname_r_proto" in
13149 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13150 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13151 esac
13152 case "$getprotobyname_r_proto" in
13153 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13154 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13155 esac
13156 case "$getprotobyname_r_proto" in
13157 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13158 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13159 esac
13160 case "$getprotobyname_r_proto" in
90e831dc 13161 ''|0) d_getprotobyname_r=undef
10bc17b6 13162 getprotobyname_r_proto=0
a48ec845 13163 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13164 * ) case "$getprotobyname_r_proto" in
13165 REENTRANT_PROTO*) ;;
13166 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13167 esac
13168 echo "Prototype: $try" ;;
13169 esac
13170 ;;
c18e646a
JH
13171 *) case "$usethreads" in
13172 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13173 esac
90e831dc
SB
13174 d_getprotobyname_r=undef
13175 getprotobyname_r_proto=0
c18e646a 13176 ;;
a48ec845
JH
13177 esac
13178 ;;
10bc17b6
JH
13179*) getprotobyname_r_proto=0
13180 ;;
13181esac
13182
13183: see if getprotobynumber_r exists
13184set getprotobynumber_r d_getprotobynumber_r
13185eval $inlibc
13186case "$d_getprotobynumber_r" in
13187"$define")
13188 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13189 case "$d_getprotobynumber_r_proto:$usethreads" in
13190 ":define") d_getprotobynumber_r_proto=define
a48ec845
JH
13191 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13192 eval $hasproto ;;
13193 *) ;;
13194 esac
13195 case "$d_getprotobynumber_r_proto" in
13196 define)
10bc17b6
JH
13197 case "$getprotobynumber_r_proto" in
13198 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13199 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13200 esac
13201 case "$getprotobynumber_r_proto" in
13202 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13203 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13204 esac
13205 case "$getprotobynumber_r_proto" in
13206 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13207 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13208 esac
13209 case "$getprotobynumber_r_proto" in
90e831dc 13210 ''|0) d_getprotobynumber_r=undef
10bc17b6 13211 getprotobynumber_r_proto=0
a48ec845 13212 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13213 * ) case "$getprotobynumber_r_proto" in
13214 REENTRANT_PROTO*) ;;
13215 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13216 esac
13217 echo "Prototype: $try" ;;
13218 esac
13219 ;;
c18e646a
JH
13220 *) case "$usethreads" in
13221 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13222 esac
90e831dc
SB
13223 d_getprotobynumber_r=undef
13224 getprotobynumber_r_proto=0
c18e646a 13225 ;;
a48ec845
JH
13226 esac
13227 ;;
10bc17b6
JH
13228*) getprotobynumber_r_proto=0
13229 ;;
13230esac
13231
13232: see if getprotoent_r exists
13233set getprotoent_r d_getprotoent_r
13234eval $inlibc
13235case "$d_getprotoent_r" in
13236"$define")
13237 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13238 case "$d_getprotoent_r_proto:$usethreads" in
13239 ":define") d_getprotoent_r_proto=define
a48ec845
JH
13240 set d_getprotoent_r_proto getprotoent_r $hdrs
13241 eval $hasproto ;;
13242 *) ;;
13243 esac
13244 case "$d_getprotoent_r_proto" in
13245 define)
10bc17b6
JH
13246 case "$getprotoent_r_proto" in
13247 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13248 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13249 esac
13250 case "$getprotoent_r_proto" in
13251 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13252 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13253 esac
13254 case "$getprotoent_r_proto" in
13255 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13256 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13257 esac
13258 case "$getprotoent_r_proto" in
13259 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13260 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13261 esac
13262 case "$getprotoent_r_proto" in
90e831dc 13263 ''|0) d_getprotoent_r=undef
10bc17b6 13264 getprotoent_r_proto=0
a48ec845 13265 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13266 * ) case "$getprotoent_r_proto" in
13267 REENTRANT_PROTO*) ;;
13268 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13269 esac
13270 echo "Prototype: $try" ;;
13271 esac
13272 ;;
c18e646a
JH
13273 *) case "$usethreads" in
13274 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13275 esac
90e831dc
SB
13276 d_getprotoent_r=undef
13277 getprotoent_r_proto=0
c18e646a 13278 ;;
a48ec845
JH
13279 esac
13280 ;;
10bc17b6
JH
13281*) getprotoent_r_proto=0
13282 ;;
13283esac
13284
b4eb6b3d
JH
13285: see if prototypes for various getprotoxxx netdb.h functions are available
13286echo " "
13287set d_getprotoprotos getprotoent $i_netdb netdb.h
13288eval $hasproto
13289
13290: see if getprpwnam exists
13291set getprpwnam d_getprpwnam
13292eval $inlibc
13293
13294: see if getpwent exists
13295set getpwent d_getpwent
13296eval $inlibc
13297
10bc17b6
JH
13298: see if getpwent_r exists
13299set getpwent_r d_getpwent_r
13300eval $inlibc
13301case "$d_getpwent_r" in
13302"$define")
13303 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13304 case "$d_getpwent_r_proto:$usethreads" in
13305 ":define") d_getpwent_r_proto=define
a48ec845
JH
13306 set d_getpwent_r_proto getpwent_r $hdrs
13307 eval $hasproto ;;
13308 *) ;;
13309 esac
13310 case "$d_getpwent_r_proto" in
13311 define)
10bc17b6
JH
13312 case "$getpwent_r_proto" in
13313 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13314 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13315 esac
13316 case "$getpwent_r_proto" in
13317 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13318 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13319 esac
13320 case "$getpwent_r_proto" in
13321 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13322 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13323 esac
13324 case "$getpwent_r_proto" in
13325 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13326 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13327 esac
13328 case "$getpwent_r_proto" in
13329 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13330 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13331 esac
13332 case "$getpwent_r_proto" in
13333 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13334 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13335 esac
13336 case "$getpwent_r_proto" in
90e831dc 13337 ''|0) d_getpwent_r=undef
10bc17b6 13338 getpwent_r_proto=0
a48ec845 13339 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13340 * ) case "$getpwent_r_proto" in
13341 REENTRANT_PROTO*) ;;
13342 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13343 esac
13344 echo "Prototype: $try" ;;
13345 esac
13346 ;;
c18e646a
JH
13347 *) case "$usethreads" in
13348 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13349 esac
90e831dc
SB
13350 d_getpwent_r=undef
13351 getpwent_r_proto=0
c18e646a 13352 ;;
a48ec845
JH
13353 esac
13354 ;;
10bc17b6
JH
13355*) getpwent_r_proto=0
13356 ;;
13357esac
13358
13359: see if getpwnam_r exists
13360set getpwnam_r d_getpwnam_r
13361eval $inlibc
13362case "$d_getpwnam_r" in
13363"$define")
13364 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13365 case "$d_getpwnam_r_proto:$usethreads" in
13366 ":define") d_getpwnam_r_proto=define
a48ec845
JH
13367 set d_getpwnam_r_proto getpwnam_r $hdrs
13368 eval $hasproto ;;
13369 *) ;;
13370 esac
13371 case "$d_getpwnam_r_proto" in
13372 define)
10bc17b6
JH
13373 case "$getpwnam_r_proto" in
13374 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13375 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13376 esac
13377 case "$getpwnam_r_proto" in
13378 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13379 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13380 esac
13381 case "$getpwnam_r_proto" in
13382 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13383 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13384 esac
13385 case "$getpwnam_r_proto" in
13386 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13387 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13388 esac
13389 case "$getpwnam_r_proto" in
90e831dc 13390 ''|0) d_getpwnam_r=undef
10bc17b6 13391 getpwnam_r_proto=0
a48ec845 13392 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13393 * ) case "$getpwnam_r_proto" in
13394 REENTRANT_PROTO*) ;;
13395 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13396 esac
13397 echo "Prototype: $try" ;;
13398 esac
13399 ;;
c18e646a
JH
13400 *) case "$usethreads" in
13401 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13402 esac
90e831dc
SB
13403 d_getpwnam_r=undef
13404 getpwnam_r_proto=0
c18e646a 13405 ;;
a48ec845
JH
13406 esac
13407 ;;
10bc17b6
JH
13408*) getpwnam_r_proto=0
13409 ;;
13410esac
13411
13412: see if getpwuid_r exists
13413set getpwuid_r d_getpwuid_r
13414eval $inlibc
13415case "$d_getpwuid_r" in
13416"$define")
13417 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13418 case "$d_getpwuid_r_proto:$usethreads" in
13419 ":define") d_getpwuid_r_proto=define
a48ec845
JH
13420 set d_getpwuid_r_proto getpwuid_r $hdrs
13421 eval $hasproto ;;
13422 *) ;;
13423 esac
13424 case "$d_getpwuid_r_proto" in
13425 define)
10bc17b6
JH
13426 case "$getpwuid_r_proto" in
13427 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13428 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13429 esac
13430 case "$getpwuid_r_proto" in
13431 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13432 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13433 esac
13434 case "$getpwuid_r_proto" in
13435 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13436 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13437 esac
13438 case "$getpwuid_r_proto" in
13439 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13440 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13441 esac
13442 case "$getpwuid_r_proto" in
90e831dc 13443 ''|0) d_getpwuid_r=undef
10bc17b6 13444 getpwuid_r_proto=0
a48ec845 13445 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13446 * ) case "$getpwuid_r_proto" in
13447 REENTRANT_PROTO*) ;;
13448 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13449 esac
13450 echo "Prototype: $try" ;;
13451 esac
13452 ;;
c18e646a
JH
13453 *) case "$usethreads" in
13454 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13455 esac
90e831dc
SB
13456 d_getpwuid_r=undef
13457 getpwuid_r_proto=0
c18e646a 13458 ;;
a48ec845
JH
13459 esac
13460 ;;
10bc17b6
JH
13461*) getpwuid_r_proto=0
13462 ;;
13463esac
13464
b4eb6b3d
JH
13465
13466: see if getservbyname exists
13467set getservbyname d_getsbyname
13468eval $inlibc
13469
13470: see if getservbyport exists
13471set getservbyport d_getsbyport
13472eval $inlibc
13473
13474: see if getservent exists
13475set getservent d_getsent
13476eval $inlibc
13477
10bc17b6
JH
13478: see if getservbyname_r exists
13479set getservbyname_r d_getservbyname_r
13480eval $inlibc
13481case "$d_getservbyname_r" in
13482"$define")
13483 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13484 case "$d_getservbyname_r_proto:$usethreads" in
13485 ":define") d_getservbyname_r_proto=define
a48ec845
JH
13486 set d_getservbyname_r_proto getservbyname_r $hdrs
13487 eval $hasproto ;;
13488 *) ;;
13489 esac
13490 case "$d_getservbyname_r_proto" in
13491 define)
10bc17b6
JH
13492 case "$getservbyname_r_proto" in
13493 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13494 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13495 esac
13496 case "$getservbyname_r_proto" in
13497 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13498 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13499 esac
13500 case "$getservbyname_r_proto" in
13501 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13502 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13503 esac
13504 case "$getservbyname_r_proto" in
90e831dc 13505 ''|0) d_getservbyname_r=undef
10bc17b6 13506 getservbyname_r_proto=0
a48ec845 13507 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13508 * ) case "$getservbyname_r_proto" in
13509 REENTRANT_PROTO*) ;;
13510 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13511 esac
13512 echo "Prototype: $try" ;;
13513 esac
13514 ;;
c18e646a
JH
13515 *) case "$usethreads" in
13516 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13517 esac
90e831dc
SB
13518 d_getservbyname_r=undef
13519 getservbyname_r_proto=0
c18e646a 13520 ;;
a48ec845
JH
13521 esac
13522 ;;
10bc17b6
JH
13523*) getservbyname_r_proto=0
13524 ;;
13525esac
13526
13527: see if getservbyport_r exists
13528set getservbyport_r d_getservbyport_r
13529eval $inlibc
13530case "$d_getservbyport_r" in
13531"$define")
13532 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13533 case "$d_getservbyport_r_proto:$usethreads" in
13534 ":define") d_getservbyport_r_proto=define
a48ec845
JH
13535 set d_getservbyport_r_proto getservbyport_r $hdrs
13536 eval $hasproto ;;
13537 *) ;;
13538 esac
13539 case "$d_getservbyport_r_proto" in
13540 define)
10bc17b6
JH
13541 case "$getservbyport_r_proto" in
13542 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13543 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13544 esac
13545 case "$getservbyport_r_proto" in
13546 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13547 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13548 esac
13549 case "$getservbyport_r_proto" in
13550 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13551 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13552 esac
13553 case "$getservbyport_r_proto" in
90e831dc 13554 ''|0) d_getservbyport_r=undef
10bc17b6 13555 getservbyport_r_proto=0
a48ec845 13556 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13557 * ) case "$getservbyport_r_proto" in
13558 REENTRANT_PROTO*) ;;
13559 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13560 esac
13561 echo "Prototype: $try" ;;
13562 esac
13563 ;;
c18e646a
JH
13564 *) case "$usethreads" in
13565 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13566 esac
90e831dc
SB
13567 d_getservbyport_r=undef
13568 getservbyport_r_proto=0
c18e646a 13569 ;;
a48ec845
JH
13570 esac
13571 ;;
10bc17b6
JH
13572*) getservbyport_r_proto=0
13573 ;;
13574esac
13575
13576: see if getservent_r exists
13577set getservent_r d_getservent_r
13578eval $inlibc
13579case "$d_getservent_r" in
13580"$define")
13581 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13582 case "$d_getservent_r_proto:$usethreads" in
13583 ":define") d_getservent_r_proto=define
a48ec845
JH
13584 set d_getservent_r_proto getservent_r $hdrs
13585 eval $hasproto ;;
13586 *) ;;
13587 esac
13588 case "$d_getservent_r_proto" in
13589 define)
10bc17b6
JH
13590 case "$getservent_r_proto" in
13591 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13592 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13593 esac
13594 case "$getservent_r_proto" in
13595 ''|0) try='int getservent_r(struct servent*, char*, int);'
13596 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13597 esac
13598 case "$getservent_r_proto" in
13599 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13600 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13601 esac
13602 case "$getservent_r_proto" in
13603 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13604 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13605 esac
13606 case "$getservent_r_proto" in
90e831dc 13607 ''|0) d_getservent_r=undef
10bc17b6 13608 getservent_r_proto=0
a48ec845 13609 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13610 * ) case "$getservent_r_proto" in
13611 REENTRANT_PROTO*) ;;
13612 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13613 esac
13614 echo "Prototype: $try" ;;
13615 esac
13616 ;;
c18e646a
JH
13617 *) case "$usethreads" in
13618 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13619 esac
90e831dc
SB
13620 d_getservent_r=undef
13621 getservent_r_proto=0
c18e646a 13622 ;;
a48ec845
JH
13623 esac
13624 ;;
10bc17b6
JH
13625*) getservent_r_proto=0
13626 ;;
13627esac
13628
b4eb6b3d
JH
13629: see if prototypes for various getservxxx netdb.h functions are available
13630echo " "
13631set d_getservprotos getservent $i_netdb netdb.h
13632eval $hasproto
13633
13634: see if getspnam exists
13635set getspnam d_getspnam
13636eval $inlibc
13637
10bc17b6
JH
13638: see if this is a shadow.h system
13639set shadow.h i_shadow
13640eval $inhdr
13641
13642: see if getspnam_r exists
13643set getspnam_r d_getspnam_r
13644eval $inlibc
13645case "$d_getspnam_r" in
13646"$define")
13647 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
c18e646a
JH
13648 case "$d_getspnam_r_proto:$usethreads" in
13649 ":define") d_getspnam_r_proto=define
a48ec845
JH
13650 set d_getspnam_r_proto getspnam_r $hdrs
13651 eval $hasproto ;;
13652 *) ;;
13653 esac
13654 case "$d_getspnam_r_proto" in
13655 define)
10bc17b6
JH
13656 case "$getspnam_r_proto" in
13657 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13658 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13659 esac
13660 case "$getspnam_r_proto" in
13661 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13662 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13663 esac
13664 case "$getspnam_r_proto" in
90e831dc 13665 ''|0) d_getspnam_r=undef
10bc17b6 13666 getspnam_r_proto=0
a48ec845 13667 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13668 * ) case "$getspnam_r_proto" in
13669 REENTRANT_PROTO*) ;;
13670 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13671 esac
13672 echo "Prototype: $try" ;;
13673 esac
13674 ;;
c18e646a
JH
13675 *) case "$usethreads" in
13676 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13677 esac
90e831dc
SB
13678 d_getspnam_r=undef
13679 getspnam_r_proto=0
c18e646a 13680 ;;
a48ec845
JH
13681 esac
13682 ;;
10bc17b6
JH
13683*) getspnam_r_proto=0
13684 ;;
13685esac
13686
b4eb6b3d
JH
13687: see if gettimeofday or ftime exists
13688set gettimeofday d_gettimeod
13689eval $inlibc
13690case "$d_gettimeod" in
13691"$undef")
13692 set ftime d_ftime
13693 eval $inlibc
13694 ;;
13695*)
13696 val="$undef"; set d_ftime; eval $setvar
13697 ;;
13698esac
13699case "$d_gettimeod$d_ftime" in
13700"$undef$undef")
13701 echo " "
13702 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13703 ;;
13704esac
13705
10bc17b6
JH
13706: see if gmtime_r exists
13707set gmtime_r d_gmtime_r
13708eval $inlibc
13709case "$d_gmtime_r" in
13710"$define")
d63eadf0 13711 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13712 case "$d_gmtime_r_proto:$usethreads" in
13713 ":define") d_gmtime_r_proto=define
a48ec845
JH
13714 set d_gmtime_r_proto gmtime_r $hdrs
13715 eval $hasproto ;;
13716 *) ;;
13717 esac
13718 case "$d_gmtime_r_proto" in
13719 define)
10bc17b6
JH
13720 case "$gmtime_r_proto" in
13721 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13722 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13723 esac
13724 case "$gmtime_r_proto" in
13725 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13726 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13727 esac
13728 case "$gmtime_r_proto" in
90e831dc 13729 ''|0) d_gmtime_r=undef
10bc17b6 13730 gmtime_r_proto=0
a48ec845 13731 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13732 * ) case "$gmtime_r_proto" in
13733 REENTRANT_PROTO*) ;;
13734 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13735 esac
13736 echo "Prototype: $try" ;;
13737 esac
b4eb6b3d 13738 ;;
c18e646a
JH
13739 *) case "$usethreads" in
13740 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13741 esac
90e831dc
SB
13742 d_gmtime_r=undef
13743 gmtime_r_proto=0
c18e646a 13744 ;;
a48ec845
JH
13745 esac
13746 ;;
10bc17b6 13747*) gmtime_r_proto=0
b4eb6b3d
JH
13748 ;;
13749esac
13750
13751: see if hasmntopt exists
13752set hasmntopt d_hasmntopt
13753eval $inlibc
13754
13755: see if this is a netinet/in.h or sys/in.h system
13756set netinet/in.h i_niin sys/in.h i_sysin
13757eval $inhdr
13758
13759: see if arpa/inet.h has to be included
13760set arpa/inet.h i_arpainet
13761eval $inhdr
13762
13763: see if htonl --and friends-- exists
13764val=''
13765set htonl val
13766eval $inlibc
13767
13768: Maybe they are macros.
13769case "$val" in
13770$undef)
13771 $cat >htonl.c <<EOM
13772#include <stdio.h>
13773#include <sys/types.h>
13774#$i_niin I_NETINET_IN
13775#$i_sysin I_SYS_IN
13776#$i_arpainet I_ARPA_INET
13777#ifdef I_NETINET_IN
13778#include <netinet/in.h>
13779#endif
13780#ifdef I_SYS_IN
13781#include <sys/in.h>
13782#endif
13783#ifdef I_ARPA_INET
13784#include <arpa/inet.h>
13785#endif
13786#ifdef htonl
13787printf("Defined as a macro.");
13788#endif
13789EOM
13790 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13791 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13792 val="$define"
13793 echo "But it seems to be defined as a macro." >&4
13794 fi
13795 $rm -f htonl.?
13796 ;;
13797esac
13798set d_htonl
13799eval $setvar
13800
36adc09b
JH
13801: see if ilogbl exists
13802set ilogbl d_ilogbl
13803eval $inlibc
13804
b4eb6b3d
JH
13805: index or strchr
13806echo " "
13807if set index val -f; eval $csym; $val; then
13808 if set strchr val -f d_strchr; eval $csym; $val; then
13809 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13810 val="$define"
13811 vali="$undef"
13812 echo "strchr() found." >&4
13813 else
13814 val="$undef"
13815 vali="$define"
13816 echo "index() found." >&4
13817 fi
13818 else
13819 val="$undef"
13820 vali="$define"
8dfa8df9
JH
13821 echo "index() found." >&4
13822 fi
b4eb6b3d 13823else
8dfa8df9
JH
13824 if set strchr val -f d_strchr; eval $csym; $val; then
13825 val="$define"
13826 vali="$undef"
13827 echo "strchr() found." >&4
13828 else
13829 echo "No index() or strchr() found!" >&4
13830 val="$undef"
13831 vali="$undef"
13832 fi
b4eb6b3d 13833fi
8dfa8df9
JH
13834set d_strchr; eval $setvar
13835val="$vali"
13836set d_index; eval $setvar
13837
13838: check whether inet_aton exists
13839set inet_aton d_inetaton
13840eval $inlibc
b4eb6b3d
JH
13841
13842: Look for isascii
13843echo " "
36adc09b 13844$cat >isascii.c <<EOCP
b4eb6b3d
JH
13845#include <stdio.h>
13846#include <ctype.h>
55954f19
JH
13847#$i_stdlib I_STDLIB
13848#ifdef I_STDLIB
13849#include <stdlib.h>
13850#endif
b4eb6b3d
JH
13851int main() {
13852 int c = 'A';
13853 if (isascii(c))
13854 exit(0);
13855 else
13856 exit(1);
13857}
13858EOCP
13859set isascii
13860if eval $compile; then
13861 echo "isascii() found." >&4
13862 val="$define"
13863else
13864 echo "isascii() NOT found." >&4
13865 val="$undef"
13866fi
13867set d_isascii
13868eval $setvar
13869$rm -f isascii*
13870
758a5d79
JH
13871: see if isfinite exists
13872set isfinite d_isfinite
13873eval $inlibc
13874
13875: see if isinf exists
13876set isinf d_isinf
13877eval $inlibc
13878
b4eb6b3d
JH
13879: see if isnan exists
13880set isnan d_isnan
13881eval $inlibc
13882
13883: see if isnanl exists
13884set isnanl d_isnanl
13885eval $inlibc
13886
13887: see if killpg exists
13888set killpg d_killpg
13889eval $inlibc
13890
13891: see if lchown exists
13892echo " "
13893$cat > try.c <<'EOCP'
13894/* System header to define __stub macros and hopefully few prototypes,
13895 which can conflict with char lchown(); below. */
13896#include <assert.h>
13897/* Override any gcc2 internal prototype to avoid an error. */
13898/* We use char because int might match the return type of a gcc2
13899 builtin and then its argument prototype would still apply. */
13900char lchown();
13901int main() {
13902 /* The GNU C library defines this for functions which it implements
13903 to always fail with ENOSYS. Some functions are actually named
13904 something starting with __ and the normal name is an alias. */
13905#if defined (__stub_lchown) || defined (__stub___lchown)
13906choke me
13907#else
13908lchown();
13909#endif
13910; return 0; }
13911EOCP
13912set try
13913if eval $compile; then
13914 $echo "lchown() found." >&4
13915 val="$define"
13916else
13917 $echo "lchown() NOT found." >&4
13918 val="$undef"
13919fi
13920set d_lchown
13921eval $setvar
13922
13923: See if number of significant digits in a double precision number is known
13924echo " "
13925$cat >ldbl_dig.c <<EOM
13926#$i_limits I_LIMITS
13927#$i_float I_FLOAT
13928#ifdef I_LIMITS
13929#include <limits.h>
13930#endif
13931#ifdef I_FLOAT
13932#include <float.h>
13933#endif
13934#ifdef LDBL_DIG
13935printf("Contains LDBL_DIG");
13936#endif
13937EOM
13938$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13939if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13940 echo "LDBL_DIG found." >&4
13941 val="$define"
13942else
13943 echo "LDBL_DIG NOT found." >&4
13944 val="$undef"
13945fi
13946$rm -f ldbl_dig.?
13947set d_ldbl_dig
13948eval $setvar
13949
13950: see if link exists
13951set link d_link
13952eval $inlibc
13953
10bc17b6
JH
13954: see if localtime_r exists
13955set localtime_r d_localtime_r
13956eval $inlibc
13957case "$d_localtime_r" in
13958"$define")
d63eadf0 13959 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13960 case "$d_localtime_r_proto:$usethreads" in
13961 ":define") d_localtime_r_proto=define
a48ec845
JH
13962 set d_localtime_r_proto localtime_r $hdrs
13963 eval $hasproto ;;
13964 *) ;;
13965 esac
13966 case "$d_localtime_r_proto" in
13967 define)
10bc17b6
JH
13968 case "$localtime_r_proto" in
13969 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13970 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13971 esac
13972 case "$localtime_r_proto" in
13973 ''|0) try='int localtime_r(const time_t*, struct tm*);'
13974 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13975 esac
13976 case "$localtime_r_proto" in
90e831dc 13977 ''|0) d_localtime_r=undef
10bc17b6 13978 localtime_r_proto=0
a48ec845 13979 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13980 * ) case "$localtime_r_proto" in
13981 REENTRANT_PROTO*) ;;
13982 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13983 esac
13984 echo "Prototype: $try" ;;
13985 esac
13986 ;;
c18e646a
JH
13987 *) case "$usethreads" in
13988 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13989 esac
90e831dc
SB
13990 d_localtime_r=undef
13991 localtime_r_proto=0
c18e646a 13992 ;;
a48ec845
JH
13993 esac
13994 ;;
10bc17b6
JH
13995*) localtime_r_proto=0
13996 ;;
13997esac
13998
b4eb6b3d
JH
13999: see if localeconv exists
14000set localeconv d_locconv
14001eval $inlibc
14002
14003: see if lockf exists
14004set lockf d_lockf
14005eval $inlibc
14006
b4eb6b3d
JH
14007: see if prototype for lseek is available
14008echo " "
4786929f 14009set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
14010eval $hasproto
14011
14012: see if lstat exists
14013set lstat d_lstat
14014eval $inlibc
14015
14016: see if madvise exists
14017set madvise d_madvise
14018eval $inlibc
14019
14020: see if mblen exists
14021set mblen d_mblen
14022eval $inlibc
14023
14024: see if mbstowcs exists
14025set mbstowcs d_mbstowcs
14026eval $inlibc
14027
14028: see if mbtowc exists
14029set mbtowc d_mbtowc
14030eval $inlibc
14031
14032: see if memchr exists
14033set memchr d_memchr
14034eval $inlibc
14035
14036: see if memcmp exists
14037set memcmp d_memcmp
14038eval $inlibc
14039
14040: see if memcpy exists
14041set memcpy d_memcpy
14042eval $inlibc
14043
14044: see if memmove exists
14045set memmove d_memmove
14046eval $inlibc
14047
14048: see if memset exists
14049set memset d_memset
14050eval $inlibc
14051
14052: see if mkdir exists
14053set mkdir d_mkdir
14054eval $inlibc
14055
14056: see if mkdtemp exists
14057set mkdtemp d_mkdtemp
14058eval $inlibc
14059
14060: see if mkfifo exists
14061set mkfifo d_mkfifo
14062eval $inlibc
14063
14064: see if mkstemp exists
14065set mkstemp d_mkstemp
14066eval $inlibc
14067
14068: see if mkstemps exists
14069set mkstemps d_mkstemps
14070eval $inlibc
14071
14072: see if mktime exists
14073set mktime d_mktime
14074eval $inlibc
14075
14076: see if this is a sys/mman.h system
14077set sys/mman.h i_sysmman
14078eval $inhdr
14079
14080: see if mmap exists
14081set mmap d_mmap
14082eval $inlibc
14083: see what shmat returns
14084: default to something harmless
14085mmaptype='void *'
14086case "$i_sysmman$d_mmap" in
14087"$define$define")
14088 $cat >mmap.c <<'END'
14089#include <sys/mman.h>
14090void *mmap();
14091END
14092 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14093 mmaptype='void *'
14094 else
14095 mmaptype='caddr_t'
14096 fi
14097 echo "and it returns ($mmaptype)." >&4
14098 ;;
14099esac
14100
14101
14102
89ce900e
JH
14103: see if sqrtl exists
14104set sqrtl d_sqrtl
14105eval $inlibc
14106
af1ff193
JH
14107: see if scalbnl exists
14108set scalbnl d_scalbnl
14109eval $inlibc
14110
89ce900e
JH
14111: see if modfl exists
14112set modfl d_modfl
14113eval $inlibc
14114
14115: see if prototype for modfl is available
14116echo " "
14117set d_modflproto modfl math.h
14118eval $hasproto
14119
14120d_modfl_pow32_bug="$undef"
14121
14122case "$d_longdbl$d_modfl" in
14123$define$define)
14124 $cat <<EOM
14125Checking to see whether your modfl() is okay for large values...
14126EOM
14127$cat >try.c <<EOCP
14128#include <math.h>
14129#include <stdio.h>
14130EOCP
14131if $test "X$d_modflproto" != "X$define"; then
14132 $cat >>try.c <<EOCP
14133/* Sigh. many current glibcs provide the function, but do not prototype it. */
14134long double modfl (long double, long double *);
14135EOCP
14136fi
14137$cat >>try.c <<EOCP
14138int main() {
14139 long double nv = 4294967303.15;
14140 long double v, w;
14141 v = modfl(nv, &w);
14142#ifdef __GLIBC__
14143 printf("glibc");
14144#endif
14145 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14146 return 0;
14147}
14148EOCP
14149 case "$osname:$gccversion" in
14150 aix:) saveccflags="$ccflags"
14151 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14152 esac
14153 set try
14154 if eval $compile; then
14155 foo=`$run ./try`
14156 case "$foo" in
14157 *" 4294967303.150000 1.150000 4294967302.000000")
14158 echo >&4 "Your modfl() is broken for large values."
14159 d_modfl_pow32_bug="$define"
14160 case "$foo" in
14161 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14162 ;;
14163 esac
14164 ;;
14165 *" 4294967303.150000 0.150000 4294967303.000000")
14166 echo >&4 "Your modfl() seems okay for large values."
14167 ;;
14168 *) echo >&4 "I don't understand your modfl() at all."
14169 d_modfl="$undef"
14170 ;;
14171 esac
14172 $rm -f try.* try core core.try.*
14173 else
14174 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14175 d_modfl="$undef"
14176 fi
14177 case "$osname:$gccversion" in
14178 aix:) ccflags="$saveccflags" ;; # restore
14179 esac
14180 ;;
14181esac
14182
14183if $test "$uselongdouble" = "$define"; then
af1ff193
JH
14184 message=""
14185 if $test "$d_sqrtl" != "$define"; then
14186 message="$message sqrtl"
14187 fi
14188 if $test "$d_modfl" != "$define"; then
89ce900e
JH
14189 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14190 echo "You have both aintl and copysignl, so I can emulate modfl."
14191 else
af1ff193 14192 message="$message modfl"
89ce900e 14193 fi
af1ff193
JH
14194 fi
14195 if $test "$d_frexpl" != "$define"; then
14196 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14197 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14198 else
14199 message="$message frexpl"
14200 fi
14201 fi
89ce900e 14202
af1ff193 14203 if $test "$message" != ""; then
89ce900e
JH
14204 $cat <<EOM >&4
14205
14206*** You requested the use of long doubles but you do not seem to have
af1ff193
JH
14207*** the following mathematical functions needed for long double support:
14208*** $message
fe63a0b4
JH
14209*** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14210*** Cannot continue, aborting.
89ce900e
JH
14211
14212EOM
14213
fe63a0b4 14214 exit 1
89ce900e
JH
14215 fi
14216fi
14217
b4eb6b3d
JH
14218: see if mprotect exists
14219set mprotect d_mprotect
14220eval $inlibc
14221
14222: see if msgctl exists
14223set msgctl d_msgctl
14224eval $inlibc
14225
14226: see if msgget exists
14227set msgget d_msgget
14228eval $inlibc
14229
14230: see if msgsnd exists
14231set msgsnd d_msgsnd
14232eval $inlibc
14233
14234: see if msgrcv exists
14235set msgrcv d_msgrcv
14236eval $inlibc
14237
14238: see how much of the 'msg*(2)' library is present.
14239h_msg=true
14240echo " "
14241case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14242*"$undef"*) h_msg=false;;
14243esac
14244case "$osname" in
14245freebsd)
14246 case "`ipcs 2>&1`" in
14247 "SVID messages"*"not configured"*)
14248 echo "Your $osname does not have the msg*(2) configured." >&4
14249 h_msg=false
14250 val="$undef"
14251 set msgctl d_msgctl
14252 eval $setvar
14253 set msgget d_msgget
14254 eval $setvar
14255 set msgsnd d_msgsnd
14256 eval $setvar
14257 set msgrcv d_msgrcv
14258 eval $setvar
14259 ;;
14260 esac
14261 ;;
14262esac
14263: we could also check for sys/ipc.h ...
14264if $h_msg && $test `./findhdr sys/msg.h`; then
14265 echo "You have the full msg*(2) library." >&4
14266 val="$define"
14267else
14268 echo "You don't have the full msg*(2) library." >&4
14269 val="$undef"
14270fi
14271set d_msg
14272eval $setvar
14273
4e0554ec
JH
14274
14275echo " "
14276echo "Checking to see if your system supports struct msghdr..." >&4
14277set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14278eval $hasstruct
14279case "$d_msghdr_s" in
14280"$define") echo "Yes, it does." ;;
14281*) echo "No, it doesn't." ;;
14282esac
14283
14284
b4eb6b3d
JH
14285: see if msync exists
14286set msync d_msync
14287eval $inlibc
14288
14289: see if munmap exists
14290set munmap d_munmap
14291eval $inlibc
14292
14293: see if nice exists
14294set nice d_nice
14295eval $inlibc
14296
2765b840
JH
14297: see if this is a langinfo.h system
14298set langinfo.h i_langinfo
14299eval $inhdr
14300
14301: see if nl_langinfo exists
14302set nl_langinfo d_nl_langinfo
14303eval $inlibc
14304
b4eb6b3d
JH
14305: check for length of character
14306echo " "
14307case "$charsize" in
14308'')
14309 echo "Checking to see how big your characters are (hey, you never know)..." >&4
74d00865 14310 $cat >try.c <<EOCP
b4eb6b3d 14311#include <stdio.h>
d1daaddf
JH
14312#$i_stdlib I_STDLIB
14313#ifdef I_STDLIB
14314#include <stdlib.h>
14315#endif
b4eb6b3d
JH
14316int main()
14317{
14318 printf("%d\n", (int)sizeof(char));
14319 exit(0);
14320}
14321EOCP
14322 set try
14323 if eval $compile_ok; then
5440bc8e 14324 dflt=`$run ./try`
b4eb6b3d
JH
14325 else
14326 dflt='1'
14327 echo "(I can't seem to compile the test program. Guessing...)"
14328 fi
14329 ;;
14330*)
14331 dflt="$charsize"
14332 ;;
14333esac
14334rp="What is the size of a character (in bytes)?"
14335. ./myread
14336charsize="$ans"
14337$rm -f try.c try
14338
1d1be0dc
NC
14339: check for volatile keyword
14340echo " "
14341echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14342$cat >try.c <<'EOCP'
76f47787 14343int main()
1d1be0dc
NC
14344{
14345 typedef struct _goo_struct goo_struct;
14346 goo_struct * volatile goo = ((goo_struct *)0);
14347 struct _goo_struct {
14348 long long_int;
14349 int reg_int;
14350 char char_var;
14351 };
14352 typedef unsigned short foo_t;
14353 char *volatile foo;
14354 volatile int bar;
14355 volatile foo_t blech;
14356 foo = foo;
14357}
14358EOCP
14359if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14360 val="$define"
14361 echo "Yup, it does."
14362else
14363 val="$undef"
14364 echo "Nope, it doesn't."
14365fi
14366set d_volatile
14367eval $setvar
14368$rm -f try.*
14369
b4eb6b3d
JH
14370
14371echo " "
14372$echo "Choosing the C types to be used for Perl's internal types..." >&4
14373
14374case "$use64bitint:$d_quad:$quadtype" in
14375define:define:?*)
14376 ivtype="$quadtype"
14377 uvtype="$uquadtype"
14378 ivsize=8
14379 uvsize=8
14380 ;;
14381*) ivtype="long"
14382 uvtype="unsigned long"
14383 ivsize=$longsize
14384 uvsize=$longsize
14385 ;;
14386esac
14387
14388case "$uselongdouble:$d_longdbl" in
14389define:define)
14390 nvtype="long double"
14391 nvsize=$longdblsize
14392 ;;
14393*) nvtype=double
14394 nvsize=$doublesize
14395 ;;
14396esac
14397
14398$echo "(IV will be "$ivtype", $ivsize bytes)"
14399$echo "(UV will be "$uvtype", $uvsize bytes)"
14400$echo "(NV will be "$nvtype", $nvsize bytes)"
14401
14402$cat >try.c <<EOCP
14403#$i_inttypes I_INTTYPES
14404#ifdef I_INTTYPES
14405#include <inttypes.h>
14406#endif
14407#include <stdio.h>
14408int main() {
14409#ifdef INT8
14410 int8_t i = INT8_MAX;
14411 uint8_t u = UINT8_MAX;
14412 printf("int8_t\n");
14413#endif
14414#ifdef INT16
14415 int16_t i = INT16_MAX;
14416 uint16_t i = UINT16_MAX;
14417 printf("int16_t\n");
14418#endif
14419#ifdef INT32
14420 int32_t i = INT32_MAX;
14421 uint32_t u = UINT32_MAX;
14422 printf("int32_t\n");
14423#endif
14424}
14425EOCP
14426
14427case "$i8type" in
14428'') case "$charsize" in
14429 1) i8type=char
14430 u8type="unsigned char"
14431 i8size=$charsize
14432 u8size=$charsize
14433 ;;
14434 esac
14435 ;;
14436esac
14437case "$i8type" in
14438'') set try -DINT8
14439 if eval $compile; then
5440bc8e 14440 case "`$run ./try`" in
b4eb6b3d
JH
14441 int8_t) i8type=int8_t
14442 u8type=uint8_t
14443 i8size=1
14444 u8size=1
14445 ;;
14446 esac
14447 fi
14448 ;;
14449esac
14450case "$i8type" in
14451'') if $test $charsize -ge 1; then
14452 i8type=char
14453 u8type="unsigned char"
14454 i8size=$charsize
14455 u8size=$charsize
14456 fi
14457 ;;
14458esac
14459
14460case "$i16type" in
14461'') case "$shortsize" in
14462 2) i16type=short
14463 u16type="unsigned short"
14464 i16size=$shortsize
14465 u16size=$shortsize
14466 ;;
14467 esac
14468 ;;
14469esac
14470case "$i16type" in
14471'') set try -DINT16
14472 if eval $compile; then
5440bc8e 14473 case "`$run ./try`" in
b4eb6b3d
JH
14474 int16_t)
14475 i16type=int16_t
14476 u16type=uint16_t
14477 i16size=2
14478 u16size=2
14479 ;;
14480 esac
14481 fi
14482 ;;
14483esac
14484case "$i16type" in
14485'') if $test $shortsize -ge 2; then
14486 i16type=short
14487 u16type="unsigned short"
14488 i16size=$shortsize
14489 u16size=$shortsize
14490 fi
14491 ;;
14492esac
14493
14494case "$i32type" in
14495'') case "$longsize" in
14496 4) i32type=long
14497 u32type="unsigned long"
14498 i32size=$longsize
14499 u32size=$longsize
14500 ;;
14501 *) case "$intsize" in
14502 4) i32type=int
14503 u32type="unsigned int"
14504 i32size=$intsize
14505 u32size=$intsize
14506 ;;
14507 esac
14508 ;;
14509 esac
14510 ;;
14511esac
14512case "$i32type" in
14513'') set try -DINT32
14514 if eval $compile; then
5440bc8e 14515 case "`$run ./try`" in
b4eb6b3d
JH
14516 int32_t)
14517 i32type=int32_t
14518 u32type=uint32_t
14519 i32size=4
14520 u32size=4
14521 ;;
14522 esac
14523 fi
14524 ;;
14525esac
14526case "$i32type" in
14527'') if $test $intsize -ge 4; then
14528 i32type=int
14529 u32type="unsigned int"
14530 i32size=$intsize
14531 u32size=$intsize
14532 fi
14533 ;;
14534esac
14535
14536case "$i64type" in
14537'') case "$d_quad:$quadtype" in
14538 define:?*)
14539 i64type="$quadtype"
14540 u64type="$uquadtype"
14541 i64size=8
14542 u64size=8
14543 ;;
14544 esac
14545 ;;
14546esac
14547
1d1be0dc
NC
14548$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14549: volatile so that the compiler has to store it out to memory.
14550if test X"$d_volatile" = X"$define"; then
14551 volatile=volatile
14552fi
b4eb6b3d
JH
14553$cat <<EOP >try.c
14554#include <stdio.h>
55954f19
JH
14555#$i_stdlib I_STDLIB
14556#ifdef I_STDLIB
14557#include <stdlib.h>
14558#endif
1d1be0dc
NC
14559#include <sys/types.h>
14560#include <signal.h>
14561#ifdef SIGFPE
14562$volatile int bletched = 0;
14563$signal_t blech(s) int s; { bletched = 1; }
14564#endif
b4eb6b3d
JH
14565int main() {
14566 $uvtype u = 0;
1d1be0dc 14567 $nvtype d;
b4eb6b3d
JH
14568 int n = 8 * $uvsize;
14569 int i;
1d1be0dc
NC
14570#ifdef SIGFPE
14571 signal(SIGFPE, blech);
14572#endif
14573
b4eb6b3d
JH
14574 for (i = 0; i < n; i++) {
14575 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
14576 d = ($nvtype)u;
14577 if (($uvtype)d != u)
b4eb6b3d 14578 break;
1d1be0dc
NC
14579 if (d <= 0)
14580 break;
14581 d = ($nvtype)(u - 1);
14582 if (($uvtype)d != (u - 1))
14583 break;
14584#ifdef SIGFPE
14585 if (bletched) {
14586 break;
14587#endif
14588 }
b4eb6b3d 14589 }
efd1522b 14590 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
14591 exit(0);
14592}
14593EOP
1d1be0dc
NC
14594set try
14595
14596d_nv_preserves_uv="$undef"
14597if eval $compile; then
53133ed1 14598 nv_preserves_uv_bits="`$run ./try`"
1d1be0dc 14599fi
53133ed1 14600case "$nv_preserves_uv_bits" in
1d1be0dc 14601\-[1-9]*)
53133ed1
NC
14602 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14603 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc 14604 d_nv_preserves_uv="$define"
b4eb6b3d 14605 ;;
53133ed1 14606[1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc
NC
14607 d_nv_preserves_uv="$undef" ;;
14608*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
53133ed1 14609 nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
14610esac
14611
1d1be0dc
NC
14612$rm -f try.* try
14613
b4eb6b3d
JH
14614
14615: check for off64_t
14616echo " "
14617echo "Checking to see if you have off64_t..." >&4
14618$cat >try.c <<EOCP
14619#include <sys/types.h>
14620#include <unistd.h>
14621int main() { off64_t x = 7; }
14622EOCP
14623set try
14624if eval $compile; then
14625 val="$define"
14626 echo "You have off64_t."
14627else
14628 val="$undef"
14629 echo "You do not have off64_t."
14630 case "$lseeksize" in
14631 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14632 esac
14633fi
14634$rm -f try.* try
14635set d_off64_t
14636eval $setvar
14637
b4eb6b3d
JH
14638: how to create joinable pthreads
14639if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14640 echo " "
14641 echo "Checking what constant to use for creating joinable pthreads..." >&4
14642 $cat >try.c <<'EOCP'
14643#include <pthread.h>
14644int main() {
14645 int detachstate = JOINABLE;
14646}
14647EOCP
14648 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14649 if eval $compile; then
14650 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14651 val="$undef" # Yes, undef.
14652 set d_old_pthread_create_joinable
14653 eval $setvar
14654 val=""
14655 set old_pthread_create_joinable
14656 eval $setvar
14657 else
14658 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14659 if eval $compile; then
14660 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14661 val="$define"
14662 set d_old_pthread_create_joinable
14663 eval $setvar
14664 val=PTHREAD_CREATE_UNDETACHED
14665 set old_pthread_create_joinable
14666 eval $setvar
14667 else
14668 set try -DJOINABLE=__UNDETACHED
14669 if eval $compile; then
14670 echo "You seem to use __UNDETACHED." >&4
14671 val="$define"
14672 set d_old_pthread_create_joinable
14673 eval $setvar
14674 val=__UNDETACHED
14675 set old_pthread_create_joinable
14676 eval $setvar
14677 else
14678 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
14679 val="$define"
14680 set d_old_pthread_create_joinable
14681 eval $setvar
14682 val=0
14683 set old_pthread_create_joinable
14684 eval $setvar
14685 fi
14686 fi
14687 fi
14688 $rm -f try try.*
14689else
14690 d_old_pthread_create_joinable="$undef"
14691 old_pthread_create_joinable=""
14692fi
14693
14694: see if pause exists
14695set pause d_pause
14696eval $inlibc
14697
14698: see if pipe exists
14699set pipe d_pipe
14700eval $inlibc
14701
14702: see if poll exists
14703set poll d_poll
14704eval $inlibc
14705
c7aff470
NIS
14706: see if readlink exists
14707set readlink d_readlink
14708eval $inlibc
14709
14710echo " "
f24dbf84 14711procselfexe=''
c7aff470 14712val="$undef"
a33c94aa
JH
14713case "$d_readlink" in
14714"$define")
c7aff470
NIS
14715 if $issymlink /proc/self/exe ; then
14716 $ls -l /proc/self/exe > reflect
51660ed5 14717 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 14718 echo "You have Linux-like /proc/self/exe."
92236451 14719 procselfexe='"/proc/self/exe"'
f24dbf84 14720 val="$define"
f24dbf84
JH
14721 fi
14722 fi
14723 if $issymlink /proc/curproc/file ; then
14724 $ls -l /proc/curproc/file > reflect
14725 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14726 echo "You have BSD-like /proc/curproc/file."
92236451 14727 procselfexe='"/proc/curproc/file"'
f24dbf84 14728 val="$define"
c7aff470 14729 fi
c7aff470 14730 fi
a33c94aa
JH
14731 ;;
14732esac
428dc699 14733$rm -f reflect
c7aff470
NIS
14734set d_procselfexe
14735eval $setvar
14736
263fee3f
JH
14737: see whether the pthread_atfork exists
14738$cat >try.c <<EOP
14739#include <pthread.h>
14740#include <stdio.h>
14741int main() {
14742#ifdef PTHREAD_ATFORK
14743 pthread_atfork(NULL,NULL,NULL);
14744#endif
14745}
14746EOP
14747
d6483fcc 14748: see if pthread_atfork exists
263fee3f
JH
14749set try -DPTHREAD_ATFORK
14750if eval $compile; then
14751 val="$define"
14752else
14753 val="$undef"
14754fi
14755case "$usethreads" in
14756$define)
14757 case "$val" in
14758 $define) echo 'pthread_atfork found.' >&4 ;;
14759 *) echo 'pthread_atfork NOT found.' >&4 ;;
14760 esac
14761esac
14762set d_pthread_atfork
14763eval $setvar
d6483fcc 14764
58d975c3
JH
14765: see if pthread_attr_setscope exists
14766set pthread_attr_setscope d_pthread_attr_setscope
14767eval $inlibc
14768
b4eb6b3d
JH
14769
14770: see whether the various POSIXish _yields exist
14771$cat >try.c <<EOP
14772#include <pthread.h>
14773#include <stdio.h>
14774int main() {
14775#ifdef SCHED_YIELD
14776 sched_yield();
14777#else
14778#ifdef PTHREAD_YIELD
14779 pthread_yield();
14780#else
14781#ifdef PTHREAD_YIELD_NULL
14782 pthread_yield(NULL);
14783#endif
14784#endif
14785#endif
14786}
14787EOP
14788: see if sched_yield exists
14789set try -DSCHED_YIELD
14790if eval $compile; then
14791 val="$define"
14792 sched_yield='sched_yield()'
14793else
14794 val="$undef"
14795fi
14796case "$usethreads" in
14797$define)
14798 case "$val" in
14799 $define) echo 'sched_yield() found.' >&4 ;;
14800 *) echo 'sched_yield() NOT found.' >&4 ;;
14801 esac
14802esac
10bc17b6
JH
14803set d_sched_yield
14804eval $setvar
b4eb6b3d 14805
10bc17b6
JH
14806: see if pthread_yield exists
14807set try -DPTHREAD_YIELD
14808if eval $compile; then
14809 val="$define"
14810 case "$sched_yield" in
14811 '') sched_yield='pthread_yield()' ;;
14812 esac
14813else
14814 set try -DPTHREAD_YIELD_NULL
14815 if eval $compile; then
14816 val="$define"
14817 case "$sched_yield" in
14818 '') sched_yield='pthread_yield(NULL)' ;;
14819 esac
14820 else
14821 val="$undef"
14822 fi
14823fi
14824case "$usethreads" in
14825$define)
14826 case "$val" in
14827 $define) echo 'pthread_yield() found.' >&4 ;;
14828 *) echo 'pthread_yield() NOT found.' >&4 ;;
14829 esac
14830 ;;
14831esac
14832set d_pthread_yield
14833eval $setvar
b4eb6b3d 14834
10bc17b6
JH
14835case "$sched_yield" in
14836'') sched_yield=undef ;;
14837esac
b4eb6b3d 14838
10bc17b6
JH
14839$rm -f try try.*
14840
14841: see if random_r exists
14842set random_r d_random_r
14843eval $inlibc
14844case "$d_random_r" in
14845"$define")
14846 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
14847 case "$d_random_r_proto:$usethreads" in
14848 ":define") d_random_r_proto=define
a48ec845
JH
14849 set d_random_r_proto random_r $hdrs
14850 eval $hasproto ;;
14851 *) ;;
14852 esac
14853 case "$d_random_r_proto" in
14854 define)
10bc17b6
JH
14855 case "$random_r_proto" in
14856 ''|0) try='int random_r(int*, struct random_data*);'
a845a0d4
JH
14857 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14858 esac
14859 case "$random_r_proto" in
14860 ''|0) try='int random_r(long*, struct random_data*);'
14861 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14862 esac
14863 case "$random_r_proto" in
14864 ''|0) try='int random_r(struct random_data*, int32_t*);'
14865 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
10bc17b6
JH
14866 esac
14867 case "$random_r_proto" in
90e831dc 14868 ''|0) d_random_r=undef
10bc17b6 14869 random_r_proto=0
a48ec845 14870 echo "Disabling random_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14871 * ) case "$random_r_proto" in
14872 REENTRANT_PROTO*) ;;
14873 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14874 esac
14875 echo "Prototype: $try" ;;
14876 esac
b4eb6b3d 14877 ;;
c18e646a
JH
14878 *) case "$usethreads" in
14879 define) echo "random_r has no prototype, not using it." >&4 ;;
14880 esac
90e831dc
SB
14881 d_random_r=undef
14882 random_r_proto=0
c18e646a 14883 ;;
a48ec845
JH
14884 esac
14885 ;;
10bc17b6 14886*) random_r_proto=0
b4eb6b3d
JH
14887 ;;
14888esac
14889
14890: see if readdir and friends exist
14891set readdir d_readdir
14892eval $inlibc
14893set seekdir d_seekdir
14894eval $inlibc
14895set telldir d_telldir
14896eval $inlibc
14897set rewinddir d_rewinddir
14898eval $inlibc
14899
10bc17b6
JH
14900: see if readdir64_r exists
14901set readdir64_r d_readdir64_r
14902eval $inlibc
14903case "$d_readdir64_r" in
14904"$define")
14905 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14906 case "$d_readdir64_r_proto:$usethreads" in
14907 ":define") d_readdir64_r_proto=define
a48ec845
JH
14908 set d_readdir64_r_proto readdir64_r $hdrs
14909 eval $hasproto ;;
14910 *) ;;
14911 esac
14912 case "$d_readdir64_r_proto" in
14913 define)
10bc17b6
JH
14914 case "$readdir64_r_proto" in
14915 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14916 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14917 esac
14918 case "$readdir64_r_proto" in
14919 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14920 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14921 esac
14922 case "$readdir64_r_proto" in
90e831dc 14923 ''|0) d_readdir64_r=undef
10bc17b6 14924 readdir64_r_proto=0
a48ec845 14925 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14926 * ) case "$readdir64_r_proto" in
14927 REENTRANT_PROTO*) ;;
14928 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14929 esac
14930 echo "Prototype: $try" ;;
14931 esac
14932 ;;
c18e646a
JH
14933 *) case "$usethreads" in
14934 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14935 esac
90e831dc
SB
14936 d_readdir64_r=undef
14937 readdir64_r_proto=0
c18e646a 14938 ;;
a48ec845
JH
14939 esac
14940 ;;
10bc17b6
JH
14941*) readdir64_r_proto=0
14942 ;;
14943esac
14944
14945: see if readdir_r exists
14946set readdir_r d_readdir_r
14947eval $inlibc
14948case "$d_readdir_r" in
14949"$define")
14950 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14951 case "$d_readdir_r_proto:$usethreads" in
14952 ":define") d_readdir_r_proto=define
a48ec845
JH
14953 set d_readdir_r_proto readdir_r $hdrs
14954 eval $hasproto ;;
14955 *) ;;
14956 esac
14957 case "$d_readdir_r_proto" in
14958 define)
10bc17b6
JH
14959 case "$readdir_r_proto" in
14960 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14961 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14962 esac
14963 case "$readdir_r_proto" in
14964 ''|0) try='int readdir_r(DIR*, struct dirent*);'
14965 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14966 esac
14967 case "$readdir_r_proto" in
90e831dc 14968 ''|0) d_readdir_r=undef
10bc17b6 14969 readdir_r_proto=0
a48ec845 14970 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14971 * ) case "$readdir_r_proto" in
14972 REENTRANT_PROTO*) ;;
14973 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14974 esac
14975 echo "Prototype: $try" ;;
14976 esac
14977 ;;
c18e646a
JH
14978 *) case "$usethreads" in
14979 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14980 esac
90e831dc
SB
14981 d_readdir_r=undef
14982 readdir_r_proto=0
c18e646a 14983 ;;
a48ec845
JH
14984 esac
14985 ;;
10bc17b6
JH
14986*) readdir_r_proto=0
14987 ;;
14988esac
14989
4e0554ec
JH
14990: see if readv exists
14991set readv d_readv
14992eval $inlibc
14993
14994: see if recvmsg exists
14995set recvmsg d_recvmsg
14996eval $inlibc
14997
b4eb6b3d
JH
14998: see if rename exists
14999set rename d_rename
15000eval $inlibc
15001
15002: see if rmdir exists
15003set rmdir d_rmdir
15004eval $inlibc
15005
15006: see if memory.h is available.
15007val=''
15008set memory.h val
15009eval $inhdr
15010
15011: See if it conflicts with string.h
15012case "$val" in
15013$define)
15014 case "$strings" in
15015 '') ;;
15016 *)
15017 $cppstdin $cppflags $cppminus < $strings > mem.h
15018 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15019 echo " "
15020 echo "We won't be including <memory.h>."
15021 val="$undef"
15022 fi
15023 $rm -f mem.h
15024 ;;
15025 esac
15026esac
15027set i_memory
15028eval $setvar
15029
15030: can bcopy handle overlapping blocks?
b6cc3bc4 15031echo " "
b4eb6b3d 15032val="$undef"
b6cc3bc4
AD
15033case "$d_memmove" in
15034"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15035*) case "$d_bcopy" in
15036 "$define")
15037 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15038 $cat >try.c <<EOCP
b4eb6b3d
JH
15039#$i_memory I_MEMORY
15040#$i_stdlib I_STDLIB
15041#$i_string I_STRING
15042#$i_unistd I_UNISTD
15043EOCP
15044 $cat >>try.c <<'EOCP'
15045#include <stdio.h>
15046#ifdef I_MEMORY
15047# include <memory.h>
15048#endif
15049#ifdef I_STDLIB
15050# include <stdlib.h>
15051#endif
15052#ifdef I_STRING
15053# include <string.h>
15054#else
15055# include <strings.h>
15056#endif
15057#ifdef I_UNISTD
15058# include <unistd.h> /* Needed for NetBSD */
15059#endif
15060int main()
15061{
15062char buf[128], abc[128];
15063char *b;
15064int len;
15065int off;
15066int align;
15067
b6cc3bc4
AD
15068/* Copy "abcde..." string to char abc[] so that gcc doesn't
15069 try to store the string in read-only memory. */
b4eb6b3d
JH
15070bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15071
15072for (align = 7; align >= 0; align--) {
15073 for (len = 36; len; len--) {
15074 b = buf+align;
15075 bcopy(abc, b, len);
15076 for (off = 1; off <= len; off++) {
15077 bcopy(b, b+off, len);
15078 bcopy(b+off, b, len);
15079 if (bcmp(b, abc, len))
15080 exit(1);
15081 }
15082 }
15083}
15084exit(0);
15085}
15086EOCP
b6cc3bc4
AD
15087 set try
15088 if eval $compile_ok; then
15089 if ./try 2>/dev/null; then
15090 echo "Yes, it can."
15091 val="$define"
15092 else
15093 echo "It can't, sorry."
15094 fi
b4eb6b3d 15095 else
b6cc3bc4 15096 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15097 fi
b6cc3bc4
AD
15098 ;;
15099 esac
15100 $rm -f try.* try core
b4eb6b3d
JH
15101 ;;
15102esac
b4eb6b3d
JH
15103set d_safebcpy
15104eval $setvar
15105
15106: can memcpy handle overlapping blocks?
b6cc3bc4 15107echo " "
b4eb6b3d 15108val="$undef"
b6cc3bc4
AD
15109case "$d_memmove" in
15110"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15111*) case "$d_memcpy" in
15112 "$define")
15113 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15114 $cat >try.c <<EOCP
b4eb6b3d
JH
15115#$i_memory I_MEMORY
15116#$i_stdlib I_STDLIB
15117#$i_string I_STRING
15118#$i_unistd I_UNISTD
15119EOCP
15120 $cat >>try.c <<'EOCP'
15121#include <stdio.h>
15122#ifdef I_MEMORY
15123# include <memory.h>
15124#endif
15125#ifdef I_STDLIB
15126# include <stdlib.h>
15127#endif
15128#ifdef I_STRING
15129# include <string.h>
15130#else
15131# include <strings.h>
15132#endif
15133#ifdef I_UNISTD
15134# include <unistd.h> /* Needed for NetBSD */
15135#endif
15136int main()
15137{
15138char buf[128], abc[128];
15139char *b;
15140int len;
15141int off;
15142int align;
15143
15144/* Copy "abcde..." string to char abc[] so that gcc doesn't
15145 try to store the string in read-only memory. */
15146memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15147
15148for (align = 7; align >= 0; align--) {
15149 for (len = 36; len; len--) {
15150 b = buf+align;
15151 memcpy(b, abc, len);
15152 for (off = 1; off <= len; off++) {
15153 memcpy(b+off, b, len);
15154 memcpy(b, b+off, len);
15155 if (memcmp(b, abc, len))
15156 exit(1);
15157 }
15158 }
15159}
15160exit(0);
15161}
15162EOCP
b6cc3bc4
AD
15163 set try
15164 if eval $compile_ok; then
15165 if ./try 2>/dev/null; then
15166 echo "Yes, it can."
15167 val="$define"
15168 else
15169 echo "It can't, sorry."
15170 fi
b4eb6b3d 15171 else
b6cc3bc4 15172 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15173 fi
b6cc3bc4
AD
15174 ;;
15175 esac
15176 $rm -f try.* try core
b4eb6b3d
JH
15177 ;;
15178esac
b4eb6b3d
JH
15179set d_safemcpy
15180eval $setvar
15181
15182: can memcmp be trusted to compare relative magnitude?
15183val="$undef"
15184case "$d_memcmp" in
15185"$define")
15186 echo " "
15187 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15188 $cat >try.c <<EOCP
15189#$i_memory I_MEMORY
15190#$i_stdlib I_STDLIB
15191#$i_string I_STRING
15192#$i_unistd I_UNISTD
15193EOCP
15194 $cat >>try.c <<'EOCP'
15195#include <stdio.h>
15196#ifdef I_MEMORY
15197# include <memory.h>
15198#endif
15199#ifdef I_STDLIB
36adc09b 15200# include <stdlib.h>
b4eb6b3d
JH
15201#endif
15202#ifdef I_STRING
15203# include <string.h>
15204#else
15205# include <strings.h>
15206#endif
15207#ifdef I_UNISTD
15208# include <unistd.h> /* Needed for NetBSD */
15209#endif
15210int main()
15211{
15212char a = -1;
15213char b = 0;
15214if ((a < b) && memcmp(&a, &b, 1) < 0)
15215 exit(1);
15216exit(0);
15217}
15218EOCP
15219 set try
15220 if eval $compile_ok; then
5440bc8e 15221 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
15222 echo "Yes, it can."
15223 val="$define"
15224 else
15225 echo "No, it can't (it uses signed chars)."
15226 fi
15227 else
15228 echo "(I can't compile the test program, so we'll assume not...)"
15229 fi
15230 ;;
15231esac
15232$rm -f try.* try core
15233set d_sanemcmp
15234eval $setvar
15235
ef9f17be
JH
15236: see if prototype for sbrk is available
15237echo " "
15238set d_sbrkproto sbrk $i_unistd unistd.h
15239eval $hasproto
15240
b4eb6b3d
JH
15241: see if select exists
15242set select d_select
15243eval $inlibc
15244
15245: see if semctl exists
15246set semctl d_semctl
15247eval $inlibc
15248
15249: see if semget exists
15250set semget d_semget
15251eval $inlibc
15252
15253: see if semop exists
15254set semop d_semop
15255eval $inlibc
15256
15257: see how much of the 'sem*(2)' library is present.
15258h_sem=true
15259echo " "
15260case "$d_semctl$d_semget$d_semop" in
15261*"$undef"*) h_sem=false;;
15262esac
15263case "$osname" in
15264freebsd)
15265 case "`ipcs 2>&1`" in
15266 "SVID messages"*"not configured"*)
15267 echo "Your $osname does not have the sem*(2) configured." >&4
15268 h_sem=false
15269 val="$undef"
15270 set semctl d_semctl
15271 eval $setvar
15272 set semget d_semget
15273 eval $setvar
15274 set semop d_semop
15275 eval $setvar
15276 ;;
15277 esac
15278 ;;
15279esac
15280: we could also check for sys/ipc.h ...
15281if $h_sem && $test `./findhdr sys/sem.h`; then
15282 echo "You have the full sem*(2) library." >&4
15283 val="$define"
15284else
15285 echo "You don't have the full sem*(2) library." >&4
15286 val="$undef"
15287fi
15288set d_sem
15289eval $setvar
15290
15291: see whether sys/sem.h defines union semun
15292echo " "
15293$cat > try.c <<'END'
15294#include <sys/types.h>
15295#include <sys/ipc.h>
15296#include <sys/sem.h>
15297int main () { union semun semun; semun.buf = 0; }
15298END
15299set try
15300if eval $compile; then
15301 echo "You have union semun in <sys/sem.h>." >&4
15302 val="$define"
15303else
15304 echo "You do not have union semun in <sys/sem.h>." >&4
15305 val="$undef"
15306fi
2fad75a1 15307$rm -f try try.c
b4eb6b3d
JH
15308set d_union_semun
15309eval $setvar
15310
15311: see how to do semctl IPC_STAT
15312case "$d_sem" in
15313$define)
b4eb6b3d
JH
15314 echo " "
15315 $cat > try.h <<END
15316#ifndef S_IRUSR
15317# ifdef S_IREAD
15318# define S_IRUSR S_IREAD
15319# define S_IWUSR S_IWRITE
15320# define S_IXUSR S_IEXEC
15321# else
15322# define S_IRUSR 0400
15323# define S_IWUSR 0200
15324# define S_IXUSR 0100
15325# endif
15326# define S_IRGRP (S_IRUSR>>3)
15327# define S_IWGRP (S_IWUSR>>3)
15328# define S_IXGRP (S_IXUSR>>3)
15329# define S_IROTH (S_IRUSR>>6)
15330# define S_IWOTH (S_IWUSR>>6)
15331# define S_IXOTH (S_IXUSR>>6)
15332#endif
15333#ifndef S_IRWXU
15334# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15335# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15336# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15337#endif
15338END
2fad75a1
JH
15339 : see whether semctl IPC_STAT can use union semun
15340 val="$undef"
15341 case "$d_semctl_semun" in
15342 '')
15343 $cat > try.c <<END
b4eb6b3d
JH
15344#include <sys/types.h>
15345#include <sys/ipc.h>
15346#include <sys/sem.h>
15347#include <sys/stat.h>
15348#include <stdio.h>
15349#include <errno.h>
15350#include "try.h"
15351#ifndef errno
15352extern int errno;
15353#endif
15354#$d_union_semun HAS_UNION_SEMUN
15355int main() {
15356 union semun
15357#ifndef HAS_UNION_SEMUN
15358 {
15359 int val;
15360 struct semid_ds *buf;
15361 unsigned short *array;
15362 }
15363#endif
15364 arg;
15365 int sem, st;
15366
15367#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15368 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15369 if (sem > -1) {
15370 struct semid_ds argbuf;
15371 arg.buf = &argbuf;
15372# ifdef IPC_STAT
15373 st = semctl(sem, 0, IPC_STAT, arg);
15374 if (st == 0)
15375 printf("semun\n");
15376 else
15377# endif /* IPC_STAT */
15378 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15379# ifdef IPC_RMID
15380 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15381# endif /* IPC_RMID */
15382 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15383 } else
15384#endif /* IPC_PRIVATE && ... */
15385 printf("semget failed: errno = %d\n", errno);
15386 return 0;
15387}
15388END
2fad75a1
JH
15389 set try
15390 if eval $compile; then
15391 xxx=`$run ./try`
15392 case "$xxx" in
15393 semun) val="$define" ;;
15394 esac
15395 fi
15396 $rm -f try try.c
15397 ;;
15398 esac
b4eb6b3d
JH
15399 set d_semctl_semun
15400 eval $setvar
15401 case "$d_semctl_semun" in
15402 $define)
15403 echo "You can use union semun for semctl IPC_STAT." >&4
15404 also='also'
15405 ;;
15406 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15407 also=''
15408 ;;
15409 esac
15410
15411 : see whether semctl IPC_STAT can use struct semid_ds pointer
2fad75a1
JH
15412 val="$undef"
15413 case "$d_semctl_semid_ds" in
15414 '')
15415 $cat > try.c <<'END'
b4eb6b3d
JH
15416#include <sys/types.h>
15417#include <sys/ipc.h>
15418#include <sys/sem.h>
15419#include <sys/stat.h>
15420#include "try.h"
15421#include <stdio.h>
15422#include <errno.h>
15423#ifndef errno
15424extern int errno;
15425#endif
15426int main() {
15427 struct semid_ds arg;
15428 int sem, st;
15429
15430#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15431 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15432 if (sem > -1) {
15433# ifdef IPC_STAT
15434 st = semctl(sem, 0, IPC_STAT, &arg);
15435 if (st == 0)
15436 printf("semid_ds\n");
15437 else
15438# endif /* IPC_STAT */
15439 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15440# ifdef IPC_RMID
15441 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15442# endif /* IPC_RMID */
15443 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15444 } else
15445#endif /* IPC_PRIVATE && ... */
15446 printf("semget failed: errno = %d\n", errno);
15447
15448 return 0;
15449}
15450END
2fad75a1
JH
15451 set try
15452 if eval $compile; then
15453 xxx=`$run ./try`
15454 case "$xxx" in
15455 semid_ds) val="$define" ;;
15456 esac
15457 fi
15458 $rm -f try try.c
15459 ;;
15460 esac
b4eb6b3d
JH
15461 set d_semctl_semid_ds
15462 eval $setvar
15463 case "$d_semctl_semid_ds" in
15464 $define)
15465 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15466 ;;
15467 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15468 ;;
15469 esac
15470 $rm -f try.h
15471 ;;
15472*) val="$undef"
15473
15474 # We do not have the full sem*(2) library, so assume we can not
15475 # use either.
15476
15477 set d_semctl_semun
15478 eval $setvar
15479
15480 set d_semctl_semid_ds
15481 eval $setvar
15482 ;;
15483esac
15484
4e0554ec
JH
15485: see if sendmsg exists
15486set sendmsg d_sendmsg
15487eval $inlibc
15488
b4eb6b3d
JH
15489: see if setegid exists
15490set setegid d_setegid
15491eval $inlibc
15492
15493: see if seteuid exists
15494set seteuid d_seteuid
15495eval $inlibc
15496
15497: see if setgrent exists
15498set setgrent d_setgrent
15499eval $inlibc
15500
10bc17b6
JH
15501: see if setgrent_r exists
15502set setgrent_r d_setgrent_r
15503eval $inlibc
15504case "$d_setgrent_r" in
15505"$define")
15506 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
15507 case "$d_setgrent_r_proto:$usethreads" in
15508 ":define") d_setgrent_r_proto=define
a48ec845
JH
15509 set d_setgrent_r_proto setgrent_r $hdrs
15510 eval $hasproto ;;
15511 *) ;;
15512 esac
15513 case "$d_setgrent_r_proto" in
15514 define)
10bc17b6
JH
15515 case "$setgrent_r_proto" in
15516 ''|0) try='int setgrent_r(FILE**);'
15517 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15518 esac
15519 case "$setgrent_r_proto" in
15520 ''|0) try='void setgrent_r(FILE**);'
15521 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15522 esac
15523 case "$setgrent_r_proto" in
90e831dc 15524 ''|0) d_setgrent_r=undef
10bc17b6 15525 setgrent_r_proto=0
a48ec845 15526 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15527 * ) case "$setgrent_r_proto" in
15528 REENTRANT_PROTO*) ;;
15529 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15530 esac
15531 echo "Prototype: $try" ;;
15532 esac
15533 ;;
c18e646a
JH
15534 *) case "$usethreads" in
15535 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15536 esac
90e831dc
SB
15537 d_setgrent_r=undef
15538 setgrent_r_proto=0
c18e646a 15539 ;;
a48ec845
JH
15540 esac
15541 ;;
10bc17b6
JH
15542*) setgrent_r_proto=0
15543 ;;
15544esac
15545
b4eb6b3d
JH
15546: see if sethostent exists
15547set sethostent d_sethent
15548eval $inlibc
15549
10bc17b6
JH
15550: see if sethostent_r exists
15551set sethostent_r d_sethostent_r
15552eval $inlibc
15553case "$d_sethostent_r" in
15554"$define")
15555 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15556 case "$d_sethostent_r_proto:$usethreads" in
15557 ":define") d_sethostent_r_proto=define
a48ec845
JH
15558 set d_sethostent_r_proto sethostent_r $hdrs
15559 eval $hasproto ;;
15560 *) ;;
15561 esac
15562 case "$d_sethostent_r_proto" in
15563 define)
10bc17b6
JH
15564 case "$sethostent_r_proto" in
15565 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15566 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15567 esac
15568 case "$sethostent_r_proto" in
15569 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15570 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15571 esac
15572 case "$sethostent_r_proto" in
90e831dc 15573 ''|0) d_sethostent_r=undef
10bc17b6 15574 sethostent_r_proto=0
a48ec845 15575 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15576 * ) case "$sethostent_r_proto" in
15577 REENTRANT_PROTO*) ;;
15578 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15579 esac
15580 echo "Prototype: $try" ;;
15581 esac
15582 ;;
c18e646a
JH
15583 *) case "$usethreads" in
15584 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15585 esac
90e831dc
SB
15586 d_sethostent_r=undef
15587 sethostent_r_proto=0
c18e646a 15588 ;;
a48ec845
JH
15589 esac
15590 ;;
10bc17b6
JH
15591*) sethostent_r_proto=0
15592 ;;
15593esac
15594
4e0554ec
JH
15595: see if setitimer exists
15596set setitimer d_setitimer
15597eval $inlibc
15598
b4eb6b3d
JH
15599: see if setlinebuf exists
15600set setlinebuf d_setlinebuf
15601eval $inlibc
15602
15603: see if setlocale exists
15604set setlocale d_setlocale
15605eval $inlibc
15606
10bc17b6
JH
15607: see if locale.h is available
15608set locale.h i_locale
15609eval $inhdr
15610
15611: see if setlocale_r exists
15612set setlocale_r d_setlocale_r
15613eval $inlibc
15614case "$d_setlocale_r" in
15615"$define")
15616 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
c18e646a
JH
15617 case "$d_setlocale_r_proto:$usethreads" in
15618 ":define") d_setlocale_r_proto=define
a48ec845
JH
15619 set d_setlocale_r_proto setlocale_r $hdrs
15620 eval $hasproto ;;
15621 *) ;;
15622 esac
15623 case "$d_setlocale_r_proto" in
15624 define)
10bc17b6
JH
15625 case "$setlocale_r_proto" in
15626 ''|0) try='int setlocale_r(int, const char*, char*, int);'
15627 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15628 esac
15629 case "$setlocale_r_proto" in
90e831dc 15630 ''|0) d_setlocale_r=undef
10bc17b6 15631 setlocale_r_proto=0
a48ec845 15632 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15633 * ) case "$setlocale_r_proto" in
15634 REENTRANT_PROTO*) ;;
15635 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15636 esac
15637 echo "Prototype: $try" ;;
15638 esac
15639 ;;
c18e646a
JH
15640 *) case "$usethreads" in
15641 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15642 esac
90e831dc
SB
15643 d_setlocale_r=undef
15644 setlocale_r_proto=0
c18e646a 15645 ;;
a48ec845
JH
15646 esac
15647 ;;
10bc17b6
JH
15648*) setlocale_r_proto=0
15649 ;;
15650esac
15651
b4eb6b3d
JH
15652: see if setnetent exists
15653set setnetent d_setnent
15654eval $inlibc
15655
10bc17b6
JH
15656: see if setnetent_r exists
15657set setnetent_r d_setnetent_r
15658eval $inlibc
15659case "$d_setnetent_r" in
15660"$define")
15661 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15662 case "$d_setnetent_r_proto:$usethreads" in
15663 ":define") d_setnetent_r_proto=define
a48ec845
JH
15664 set d_setnetent_r_proto setnetent_r $hdrs
15665 eval $hasproto ;;
15666 *) ;;
15667 esac
15668 case "$d_setnetent_r_proto" in
15669 define)
10bc17b6
JH
15670 case "$setnetent_r_proto" in
15671 ''|0) try='int setnetent_r(int, struct netent_data*);'
15672 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15673 esac
15674 case "$setnetent_r_proto" in
15675 ''|0) try='void setnetent_r(int, struct netent_data*);'
15676 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15677 esac
15678 case "$setnetent_r_proto" in
90e831dc 15679 ''|0) d_setnetent_r=undef
10bc17b6 15680 setnetent_r_proto=0
a48ec845 15681 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15682 * ) case "$setnetent_r_proto" in
15683 REENTRANT_PROTO*) ;;
15684 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15685 esac
15686 echo "Prototype: $try" ;;
15687 esac
15688 ;;
c18e646a
JH
15689 *) case "$usethreads" in
15690 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15691 esac
90e831dc
SB
15692 d_setnetent_r=undef
15693 setnetent_r_proto=0
c18e646a 15694 ;;
a48ec845
JH
15695 esac
15696 ;;
10bc17b6
JH
15697*) setnetent_r_proto=0
15698 ;;
15699esac
15700
b4eb6b3d
JH
15701: see if setprotoent exists
15702set setprotoent d_setpent
15703eval $inlibc
15704
15705: see if setpgid exists
15706set setpgid d_setpgid
15707eval $inlibc
15708
15709: see if setpgrp2 exists
15710set setpgrp2 d_setpgrp2
15711eval $inlibc
15712
15713: see if setpriority exists
15714set setpriority d_setprior
15715eval $inlibc
15716
15717: see if setproctitle exists
15718set setproctitle d_setproctitle
15719eval $inlibc
15720
10bc17b6
JH
15721: see if setprotoent_r exists
15722set setprotoent_r d_setprotoent_r
15723eval $inlibc
15724case "$d_setprotoent_r" in
15725"$define")
15726 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15727 case "$d_setprotoent_r_proto:$usethreads" in
15728 ":define") d_setprotoent_r_proto=define
a48ec845
JH
15729 set d_setprotoent_r_proto setprotoent_r $hdrs
15730 eval $hasproto ;;
15731 *) ;;
15732 esac
15733 case "$d_setprotoent_r_proto" in
15734 define)
10bc17b6
JH
15735 case "$setprotoent_r_proto" in
15736 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15737 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15738 esac
15739 case "$setprotoent_r_proto" in
15740 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15741 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15742 esac
15743 case "$setprotoent_r_proto" in
90e831dc 15744 ''|0) d_setprotoent_r=undef
10bc17b6 15745 setprotoent_r_proto=0
a48ec845 15746 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15747 * ) case "$setprotoent_r_proto" in
15748 REENTRANT_PROTO*) ;;
15749 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15750 esac
15751 echo "Prototype: $try" ;;
15752 esac
15753 ;;
c18e646a
JH
15754 *) case "$usethreads" in
15755 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15756 esac
90e831dc
SB
15757 d_setprotoent_r=undef
15758 setprotoent_r_proto=0
c18e646a 15759 ;;
a48ec845
JH
15760 esac
15761 ;;
10bc17b6
JH
15762*) setprotoent_r_proto=0
15763 ;;
15764esac
15765
b4eb6b3d
JH
15766: see if setpwent exists
15767set setpwent d_setpwent
15768eval $inlibc
15769
10bc17b6
JH
15770: see if setpwent_r exists
15771set setpwent_r d_setpwent_r
15772eval $inlibc
15773case "$d_setpwent_r" in
15774"$define")
15775 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
15776 case "$d_setpwent_r_proto:$usethreads" in
15777 ":define") d_setpwent_r_proto=define
a48ec845
JH
15778 set d_setpwent_r_proto setpwent_r $hdrs
15779 eval $hasproto ;;
15780 *) ;;
15781 esac
15782 case "$d_setpwent_r_proto" in
15783 define)
10bc17b6
JH
15784 case "$setpwent_r_proto" in
15785 ''|0) try='int setpwent_r(FILE**);'
15786 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15787 esac
15788 case "$setpwent_r_proto" in
15789 ''|0) try='void setpwent_r(FILE**);'
15790 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15791 esac
15792 case "$setpwent_r_proto" in
90e831dc 15793 ''|0) d_setpwent_r=undef
10bc17b6 15794 setpwent_r_proto=0
a48ec845 15795 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15796 * ) case "$setpwent_r_proto" in
15797 REENTRANT_PROTO*) ;;
15798 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15799 esac
15800 echo "Prototype: $try" ;;
15801 esac
15802 ;;
c18e646a
JH
15803 *) case "$usethreads" in
15804 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15805 esac
90e831dc
SB
15806 d_setpwent_r=undef
15807 setpwent_r_proto=0
c18e646a 15808 ;;
a48ec845
JH
15809 esac
15810 ;;
10bc17b6
JH
15811*) setpwent_r_proto=0
15812 ;;
15813esac
15814
b4eb6b3d
JH
15815: see if setregid exists
15816set setregid d_setregid
15817eval $inlibc
15818set setresgid d_setresgid
15819eval $inlibc
15820
15821: see if setreuid exists
15822set setreuid d_setreuid
15823eval $inlibc
15824set setresuid d_setresuid
15825eval $inlibc
15826
15827: see if setrgid exists
15828set setrgid d_setrgid
15829eval $inlibc
15830
15831: see if setruid exists
15832set setruid d_setruid
15833eval $inlibc
15834
15835: see if setservent exists
15836set setservent d_setsent
15837eval $inlibc
15838
10bc17b6
JH
15839: see if setservent_r exists
15840set setservent_r d_setservent_r
15841eval $inlibc
15842case "$d_setservent_r" in
15843"$define")
15844 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15845 case "$d_setservent_r_proto:$usethreads" in
15846 ":define") d_setservent_r_proto=define
a48ec845
JH
15847 set d_setservent_r_proto setservent_r $hdrs
15848 eval $hasproto ;;
15849 *) ;;
15850 esac
15851 case "$d_setservent_r_proto" in
15852 define)
10bc17b6
JH
15853 case "$setservent_r_proto" in
15854 ''|0) try='int setservent_r(int, struct servent_data*);'
15855 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15856 esac
15857 case "$setservent_r_proto" in
15858 ''|0) try='void setservent_r(int, struct servent_data*);'
15859 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15860 esac
15861 case "$setservent_r_proto" in
90e831dc 15862 ''|0) d_setservent_r=undef
10bc17b6 15863 setservent_r_proto=0
a48ec845 15864 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15865 * ) case "$setservent_r_proto" in
15866 REENTRANT_PROTO*) ;;
15867 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15868 esac
15869 echo "Prototype: $try" ;;
15870 esac
15871 ;;
c18e646a
JH
15872 *) case "$usethreads" in
15873 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15874 esac
90e831dc
SB
15875 d_setservent_r=undef
15876 setservent_r_proto=0
c18e646a 15877 ;;
a48ec845
JH
15878 esac
15879 ;;
10bc17b6
JH
15880*) setservent_r_proto=0
15881 ;;
15882esac
15883
b4eb6b3d
JH
15884: see if setsid exists
15885set setsid d_setsid
15886eval $inlibc
15887
15888: see if setvbuf exists
15889set setvbuf d_setvbuf
15890eval $inlibc
15891
15892: see if sfio.h is available
15893set sfio.h i_sfio
15894eval $inhdr
15895
15896
15897: see if sfio library is available
15898case "$i_sfio" in
15899$define)
15900 val=''
15901 set sfreserve val
15902 eval $inlibc
15903 ;;
15904*)
15905 val="$undef"
15906 ;;
15907esac
15908: Ok, but do we want to use it.
15909case "$val" in
15910$define)
15911 case "$usesfio" in
15912 true|$define|[yY]*) dflt='y';;
15913 *) dflt='n';;
15914 esac
15915 echo "$package can use the sfio library, but it is experimental."
15916 case "$useperlio" in
15917 "$undef")
15918 echo "For sfio also the PerlIO abstraction layer is needed."
15919 echo "Earlier you said you wouldn't want that."
15920 ;;
15921 esac
15922 rp="You seem to have sfio available, do you want to try using it?"
15923 . ./myread
15924 case "$ans" in
15925 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15926 useperlio="$define"
15927 val="$define"
15928 ;;
15929 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15930 val="$undef"
b4eb6b3d
JH
15931 ;;
15932 esac
15933 ;;
15934*) case "$usesfio" in
15935 true|$define|[yY]*)
15936 echo "Sorry, cannot find sfio on this machine." >&4
15937 echo "Ignoring your setting of usesfio=$usesfio." >&4
15938 val="$undef"
15939 ;;
15940 esac
15941 ;;
15942esac
15943set d_sfio
15944eval $setvar
15945case "$d_sfio" in
15946$define) usesfio='true';;
15947*) usesfio='false';;
15948esac
3659ebf1
JH
15949case "$d_sfio" in
15950$define) ;;
15951*) : Remove sfio from list of libraries to use
7483f793
JH
15952 case "$libs" in
15953 *-lsfio*)
15954 echo "Removing unneeded -lsfio from library list" >&4
15955 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15956 shift
15957 libs="$*"
15958 echo "libs = $libs" >&4
15959 ;;
15960 esac
3659ebf1
JH
15961;;
15962esac
15963
b4eb6b3d
JH
15964
15965: see if shmctl exists
15966set shmctl d_shmctl
15967eval $inlibc
15968
15969: see if shmget exists
15970set shmget d_shmget
15971eval $inlibc
15972
15973: see if shmat exists
15974set shmat d_shmat
15975eval $inlibc
15976: see what shmat returns
15977case "$d_shmat" in
15978"$define")
15979 $cat >shmat.c <<'END'
15980#include <sys/shm.h>
15981void *shmat();
15982END
15983 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15984 shmattype='void *'
15985 else
15986 shmattype='char *'
15987 fi
15988 echo "and it returns ($shmattype)." >&4
15989 : see if a prototype for shmat is available
15990 xxx=`./findhdr sys/shm.h`
15991 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15992 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15993 val="$define"
15994 else
15995 val="$undef"
15996 fi
15997 $rm -f shmat.[co]
15998 ;;
15999*)
16000 val="$undef"
16001 ;;
16002esac
16003set d_shmatprototype
16004eval $setvar
16005
16006: see if shmdt exists
16007set shmdt d_shmdt
16008eval $inlibc
16009
16010: see how much of the 'shm*(2)' library is present.
16011h_shm=true
16012echo " "
16013case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16014*"$undef"*) h_shm=false;;
16015esac
16016case "$osname" in
16017freebsd)
16018 case "`ipcs 2>&1`" in
16019 "SVID shared memory"*"not configured"*)
16020 echo "Your $osname does not have the shm*(2) configured." >&4
16021 h_shm=false
16022 val="$undef"
16023 set shmctl d_shmctl
16024 evat $setvar
16025 set shmget d_shmget
16026 evat $setvar
16027 set shmat d_shmat
16028 evat $setvar
16029 set shmdt d_shmdt
16030 evat $setvar
16031 ;;
16032 esac
16033 ;;
16034esac
16035: we could also check for sys/ipc.h ...
16036if $h_shm && $test `./findhdr sys/shm.h`; then
16037 echo "You have the full shm*(2) library." >&4
16038 val="$define"
16039else
16040 echo "You don't have the full shm*(2) library." >&4
16041 val="$undef"
16042fi
16043set d_shm
16044eval $setvar
16045
16046echo " "
16047: see if we have sigaction
16048if set sigaction val -f d_sigaction; eval $csym; $val; then
16049 echo 'sigaction() found.' >&4
073b6de5 16050 $cat > try.c <<EOP
b4eb6b3d
JH
16051#include <stdio.h>
16052#include <sys/types.h>
16053#include <signal.h>
073b6de5
JH
16054#$i_stdlib I_STDLIB
16055#ifdef I_STDLIB
16056#include <stdlib.h>
16057#endif
b4eb6b3d
JH
16058int main()
16059{
16060 struct sigaction act, oact;
16061 act.sa_flags = 0;
16062 oact.sa_handler = 0;
16063 /* so that act and oact are used */
16064 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16065}
16066EOP
16067 set try
16068 if eval $compile_ok; then
16069 val="$define"
16070 else
16071 echo "But you don't seem to have a useable struct sigaction." >&4
16072 val="$undef"
16073 fi
16074else
16075 echo 'sigaction NOT found.' >&4
16076 val="$undef"
16077fi
16078set d_sigaction; eval $setvar
16079$rm -f try try$_o try.c
16080
983dbef6
JH
16081: see if sigprocmask exists
16082set sigprocmask d_sigprocmask
16083eval $inlibc
16084
b4eb6b3d
JH
16085: see if sigsetjmp exists
16086echo " "
16087case "$d_sigsetjmp" in
16088'')
c727eafa 16089 $cat >try.c <<EOP
b4eb6b3d 16090#include <setjmp.h>
d1daaddf
JH
16091#$i_stdlib I_STDLIB
16092#ifdef I_STDLIB
16093#include <stdlib.h>
16094#endif
b4eb6b3d
JH
16095sigjmp_buf env;
16096int set = 1;
16097int main()
16098{
16099 if (sigsetjmp(env,1))
16100 exit(set);
16101 set = 0;
16102 siglongjmp(env, 1);
16103 exit(1);
16104}
16105EOP
16106 set try
16107 if eval $compile; then
5440bc8e 16108 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
16109 echo "POSIX sigsetjmp found." >&4
16110 val="$define"
16111 else
16112 $cat >&4 <<EOM
16113Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16114I'll ignore them.
16115EOM
16116 val="$undef"
16117 fi
16118 else
16119 echo "sigsetjmp not found." >&4
16120 val="$undef"
16121 fi
16122 ;;
16123*) val="$d_sigsetjmp"
16124 case "$d_sigsetjmp" in
16125 $define) echo "POSIX sigsetjmp found." >&4;;
16126 $undef) echo "sigsetjmp not found." >&4;;
16127 esac
16128 ;;
16129esac
16130set d_sigsetjmp
16131eval $setvar
16132$rm -f try.c try
16133
49a78c82
JH
16134: see if sockatmark exists
16135set sockatmark d_sockatmark
16136eval $inlibc
16137
2ef53570
JH
16138: see if prototype for sockatmark is available
16139echo " "
16140set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16141eval $hasproto
16142
b4eb6b3d
JH
16143: see if socks5_init exists
16144set socks5_init d_socks5_init
16145eval $inlibc
16146
10bc17b6
JH
16147: see if srand48_r exists
16148set srand48_r d_srand48_r
16149eval $inlibc
16150case "$d_srand48_r" in
16151"$define")
16152 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16153 case "$d_srand48_r_proto:$usethreads" in
16154 ":define") d_srand48_r_proto=define
a48ec845
JH
16155 set d_srand48_r_proto srand48_r $hdrs
16156 eval $hasproto ;;
16157 *) ;;
16158 esac
16159 case "$d_srand48_r_proto" in
16160 define)
10bc17b6
JH
16161 case "$srand48_r_proto" in
16162 ''|0) try='int srand48_r(long, struct drand48_data*);'
16163 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16164 esac
16165 case "$srand48_r_proto" in
90e831dc 16166 ''|0) d_srand48_r=undef
10bc17b6 16167 srand48_r_proto=0
a48ec845 16168 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16169 * ) case "$srand48_r_proto" in
16170 REENTRANT_PROTO*) ;;
16171 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16172 esac
16173 echo "Prototype: $try" ;;
16174 esac
16175 ;;
c18e646a
JH
16176 *) case "$usethreads" in
16177 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16178 esac
90e831dc
SB
16179 d_srand48_r=undef
16180 srand48_r_proto=0
c18e646a 16181 ;;
a48ec845
JH
16182 esac
16183 ;;
10bc17b6
JH
16184*) srand48_r_proto=0
16185 ;;
16186esac
16187
16188: see if srandom_r exists
16189set srandom_r d_srandom_r
16190eval $inlibc
16191case "$d_srandom_r" in
16192"$define")
16193 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16194 case "$d_srandom_r_proto:$usethreads" in
16195 ":define") d_srandom_r_proto=define
a48ec845
JH
16196 set d_srandom_r_proto srandom_r $hdrs
16197 eval $hasproto ;;
16198 *) ;;
16199 esac
16200 case "$d_srandom_r_proto" in
16201 define)
10bc17b6
JH
16202 case "$srandom_r_proto" in
16203 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16204 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16205 esac
16206 case "$srandom_r_proto" in
90e831dc 16207 ''|0) d_srandom_r=undef
10bc17b6 16208 srandom_r_proto=0
a48ec845 16209 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16210 * ) case "$srandom_r_proto" in
16211 REENTRANT_PROTO*) ;;
16212 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16213 esac
16214 echo "Prototype: $try" ;;
16215 esac
16216 ;;
c18e646a
JH
16217 *) case "$usethreads" in
16218 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16219 esac
90e831dc
SB
16220 d_srandom_r=undef
16221 srandom_r_proto=0
c18e646a 16222 ;;
a48ec845
JH
16223 esac
16224 ;;
10bc17b6
JH
16225*) srandom_r_proto=0
16226 ;;
16227esac
16228
eef837ea
JH
16229: see if prototype for setresgid is available
16230echo " "
16231set d_sresgproto setresgid $i_unistd unistd.h
16232eval $hasproto
16233
640374d0
JH
16234: see if prototype for setresuid is available
16235echo " "
16236set d_sresuproto setresuid $i_unistd unistd.h
16237eval $hasproto
16238
b4eb6b3d
JH
16239: see if sys/stat.h is available
16240set sys/stat.h i_sysstat
16241eval $inhdr
16242
16243
16244: see if stat knows about block sizes
16245echo " "
16246echo "Checking to see if your struct stat has st_blocks field..." >&4
16247set d_statblks stat st_blocks $i_sysstat sys/stat.h
16248eval $hasfield
16249
16250
16251: see if this is a sys/vfs.h system
16252set sys/vfs.h i_sysvfs
16253eval $inhdr
16254
16255
16256: see if this is a sys/statfs.h system
16257set sys/statfs.h i_sysstatfs
16258eval $inhdr
16259
16260
16261echo " "
16262echo "Checking to see if your system supports struct statfs..." >&4
16263set 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
16264eval $hasstruct
16265case "$d_statfs_s" in
16266"$define") echo "Yes, it does." ;;
16267*) echo "No, it doesn't." ;;
16268esac
16269
16270
16271
16272: see if struct statfs knows about f_flags
16273case "$d_statfs_s" in
16274define)
16275 echo " "
16276 echo "Checking to see if your struct statfs has f_flags field..." >&4
16277 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
16278 eval $hasfield
16279 ;;
16280*) val="$undef"
16281 set d_statfs_f_flags
16282 eval $setvar
16283 ;;
16284esac
16285case "$d_statfs_f_flags" in
16286"$define") echo "Yes, it does." ;;
16287*) echo "No, it doesn't." ;;
16288esac
16289
b4eb6b3d
JH
16290$cat >&4 <<EOM
16291Checking how to access stdio streams by file descriptor number...
16292EOM
16293case "$stdio_stream_array" in
16294'') $cat >try.c <<EOCP
16295#include <stdio.h>
16296int main() {
16297 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16298 printf("yes\n");
16299}
16300EOCP
16301 for s in _iob __iob __sF
16302 do
16303 set try -DSTDIO_STREAM_ARRAY=$s
16304 if eval $compile; then
5440bc8e 16305 case "`$run ./try`" in
b4eb6b3d
JH
16306 yes) stdio_stream_array=$s; break ;;
16307 esac
16308 fi
16309 done
16310 $rm -f try.* try$exe_ext
16311esac
16312case "$stdio_stream_array" in
16313'') $cat >&4 <<EOM
16314I can't figure out how to access stdio streams by file descriptor number.
16315EOM
16316 d_stdio_stream_array="$undef"
16317 ;;
16318*) $cat >&4 <<EOM
16319You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16320EOM
16321 d_stdio_stream_array="$define"
16322 ;;
16323esac
16324
16325: see if strcoll exists
16326set strcoll d_strcoll
16327eval $inlibc
16328
16329: check for structure copying
16330echo " "
16331echo "Checking to see if your C compiler can copy structs..." >&4
16332$cat >try.c <<'EOCP'
76f47787 16333int main()
b4eb6b3d
JH
16334{
16335 struct blurfl {
16336 int dyick;
16337 } foo, bar;
16338
16339 foo = bar;
16340}
16341EOCP
16342if $cc -c try.c >/dev/null 2>&1 ; then
16343 val="$define"
16344 echo "Yup, it can."
16345else
16346 val="$undef"
16347 echo "Nope, it can't."
16348fi
16349set d_strctcpy
16350eval $setvar
16351$rm -f try.*
16352
16353: see if strerror and/or sys_errlist[] exist
16354echo " "
16355if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16356 if set strerror val -f d_strerror; eval $csym; $val; then
16357 echo 'strerror() found.' >&4
16358 d_strerror="$define"
16359 d_strerrm='strerror(e)'
16360 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16361 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16362 d_syserrlst="$define"
16363 else
16364 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16365 d_syserrlst="$undef"
16366 fi
16367 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16368 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16369 echo 'strerror() found in string header.' >&4
16370 d_strerror="$define"
16371 d_strerrm='strerror(e)'
16372 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16373 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16374 d_syserrlst="$define"
16375 else
16376 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16377 d_syserrlst="$undef"
16378 fi
16379 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16380 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16381 d_strerror="$undef"
16382 d_syserrlst="$define"
16383 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16384 else
16385 echo 'strerror() and sys_errlist[] NOT found.' >&4
16386 d_strerror="$undef"
16387 d_syserrlst="$undef"
16388 d_strerrm='"unknown"'
16389 fi
16390fi
16391
10bc17b6
JH
16392: see if strerror_r exists
16393set strerror_r d_strerror_r
16394eval $inlibc
16395case "$d_strerror_r" in
16396"$define")
16397 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
c18e646a
JH
16398 case "$d_strerror_r_proto:$usethreads" in
16399 ":define") d_strerror_r_proto=define
a48ec845
JH
16400 set d_strerror_r_proto strerror_r $hdrs
16401 eval $hasproto ;;
16402 *) ;;
16403 esac
16404 case "$d_strerror_r_proto" in
16405 define)
10bc17b6
JH
16406 case "$strerror_r_proto" in
16407 ''|0) try='int strerror_r(int, char*, size_t);'
16408 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16409 esac
16410 case "$strerror_r_proto" in
16411 ''|0) try='int strerror_r(int, char*, int);'
16412 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16413 esac
16414 case "$strerror_r_proto" in
16415 ''|0) try='char* strerror_r(int, char*, size_t);'
16416 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16417 esac
16418 case "$strerror_r_proto" in
90e831dc 16419 ''|0) d_strerror_r=undef
10bc17b6 16420 strerror_r_proto=0
a48ec845 16421 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16422 * ) case "$strerror_r_proto" in
16423 REENTRANT_PROTO*) ;;
16424 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16425 esac
16426 echo "Prototype: $try" ;;
16427 esac
16428 ;;
c18e646a
JH
16429 *) case "$usethreads" in
16430 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16431 esac
90e831dc
SB
16432 d_strerror_r=undef
16433 strerror_r_proto=0
c18e646a 16434 ;;
a48ec845
JH
16435 esac
16436 ;;
10bc17b6
JH
16437*) strerror_r_proto=0
16438 ;;
16439esac
16440
b3c85772
JH
16441: see if strftime exists
16442set strftime d_strftime
16443eval $inlibc
16444
08c92000
MB
16445: see if strlcat exists
16446set strlcat d_strlcat
16447eval $inlibc
16448
16449: see if strlcpy exists
16450set strlcpy d_strlcpy
16451eval $inlibc
16452
b4eb6b3d
JH
16453: see if strtod exists
16454set strtod d_strtod
16455eval $inlibc
16456
16457: see if strtol exists
16458set strtol d_strtol
16459eval $inlibc
16460
16461: see if strtold exists
16462set strtold d_strtold
16463eval $inlibc
16464
16465: see if strtoll exists
16466set strtoll d_strtoll
16467eval $inlibc
16468
16469case "$d_longlong-$d_strtoll" in
16470"$define-$define")
16471 $cat <<EOM
16472Checking whether your strtoll() works okay...
16473EOM
16474 $cat >try.c <<'EOCP'
16475#include <errno.h>
16476#ifdef __hpux
16477#define strtoll __strtoll
16478#endif
e75931a7
YST
16479#ifdef __EMX__
16480#define strtoll _strtoll
16481#endif
b4eb6b3d
JH
16482#include <stdio.h>
16483extern long long int strtoll(char *s, char **, int);
16484static int bad = 0;
16485int check(char *s, long long ell, int een) {
16486 long long gll;
16487 errno = 0;
16488 gll = strtoll(s, 0, 10);
16489 if (!((gll == ell) && (errno == een)))
16490 bad++;
16491}
16492int main() {
16493 check(" 1", 1LL, 0);
16494 check(" 0", 0LL, 0);
16495 check("-1", -1LL, 0);
16496 check("-9223372036854775808", -9223372036854775808LL, 0);
16497 check("-9223372036854775808", -9223372036854775808LL, 0);
16498 check(" 9223372036854775807", 9223372036854775807LL, 0);
16499 check("-9223372036854775808", -9223372036854775808LL, 0);
16500 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
16501 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16502 if (!bad)
16503 printf("ok\n");
16504}
16505EOCP
16506 set try
16507 if eval $compile; then
5440bc8e 16508 yyy=`$run ./try`
e75931a7 16509 case "$yyy" in
b4eb6b3d
JH
16510 ok) echo "Your strtoll() seems to be working okay." ;;
16511 *) cat <<EOM >&4
16512Your strtoll() doesn't seem to be working okay.
16513EOM
16514 d_strtoll="$undef"
16515 ;;
69eadf66 16516 esac
e75931a7
YST
16517 else
16518 echo "(I can't seem to compile the test program--assuming it doesn't)"
16519 d_strtoll="$undef"
b4eb6b3d
JH
16520 fi
16521 ;;
16522esac
16523
28e5dec8
JH
16524: see if strtoq exists
16525set strtoq d_strtoq
16526eval $inlibc
16527
b4eb6b3d
JH
16528: see if strtoul exists
16529set strtoul d_strtoul
16530eval $inlibc
16531
d0e6d399
NC
16532case "$d_strtoul" in
16533"$define")
16534 $cat <<EOM
16535Checking whether your strtoul() works okay...
16536EOM
16537 $cat >try.c <<'EOCP'
16538#include <errno.h>
16539#include <stdio.h>
16540extern unsigned long int strtoul(char *s, char **, int);
16541static int bad = 0;
16542void check(char *s, unsigned long eul, int een) {
16543 unsigned long gul;
16544 errno = 0;
16545 gul = strtoul(s, 0, 10);
16546 if (!((gul == eul) && (errno == een)))
16547 bad++;
16548}
16549int main() {
16550 check(" 1", 1L, 0);
16551 check(" 0", 0L, 0);
16552EOCP
16553 case "$longsize" in
16554 8)
16555 $cat >>try.c <<'EOCP'
09c0d2c4
JH
16556 check("18446744073709551615", 18446744073709551615UL, 0);
16557 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 16558#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 16559 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
16560 check("-18446744073709551614", 2, 0);
16561 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
16562 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16563 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 16564#endif
d0e6d399
NC
16565EOCP
16566 ;;
16567 4)
16568 $cat >>try.c <<'EOCP'
16569 check("4294967295", 4294967295UL, 0);
16570 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 16571#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
16572 check("-1", 4294967295UL, 0);
16573 check("-4294967294", 2, 0);
16574 check("-4294967295", 1, 0);
16575 check("-4294967296", 4294967295UL, ERANGE);
16576 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 16577#endif
d0e6d399
NC
16578EOCP
16579 ;;
16580 *)
16581: Should we write these tests to be more portable by sprintf-ing
16582: ~0 and then manipulating that char string as input for strtol?
16583 ;;
16584 esac
16585 $cat >>try.c <<'EOCP'
16586 if (!bad)
16587 printf("ok\n");
16588 return 0;
16589}
16590EOCP
16591 set try
16592 if eval $compile; then
5440bc8e 16593 case "`$run ./try`" in
d0e6d399
NC
16594 ok) echo "Your strtoul() seems to be working okay." ;;
16595 *) cat <<EOM >&4
16596Your strtoul() doesn't seem to be working okay.
16597EOM
16598 d_strtoul="$undef"
16599 ;;
16600 esac
16601 fi
16602 ;;
16603esac
16604
b4eb6b3d
JH
16605: see if strtoull exists
16606set strtoull d_strtoull
16607eval $inlibc
16608
16609case "$d_longlong-$d_strtoull" in
16610"$define-$define")
16611 $cat <<EOM
16612Checking whether your strtoull() works okay...
16613EOM
16614 $cat >try.c <<'EOCP'
16615#include <errno.h>
16616#ifdef __hpux
16617#define strtoull __strtoull
16618#endif
16619#include <stdio.h>
16620extern unsigned long long int strtoull(char *s, char **, int);
16621static int bad = 0;
16622int check(char *s, long long eull, int een) {
16623 long long gull;
16624 errno = 0;
16625 gull = strtoull(s, 0, 10);
16626 if (!((gull == eull) && (errno == een)))
16627 bad++;
16628}
16629int main() {
d0e6d399
NC
16630 check(" 1", 1LL, 0);
16631 check(" 0", 0LL, 0);
16632 check("18446744073709551615", 18446744073709551615ULL, 0);
16633 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16634#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
16635 check("-1", 18446744073709551615ULL, 0);
16636 check("-18446744073709551614", 2LL, 0);
16637 check("-18446744073709551615", 1LL, 0);
16638 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16639 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16640#endif
b4eb6b3d
JH
16641 if (!bad)
16642 printf("ok\n");
16643}
16644EOCP
16645 set try
16646 if eval $compile; then
5440bc8e 16647 case "`$run ./try`" in
b4eb6b3d
JH
16648 ok) echo "Your strtoull() seems to be working okay." ;;
16649 *) cat <<EOM >&4
16650Your strtoull() doesn't seem to be working okay.
16651EOM
16652 d_strtoull="$undef"
16653 ;;
16654 esac
16655 fi
16656 ;;
16657esac
16658
16659: see if strtouq exists
16660set strtouq d_strtouq
16661eval $inlibc
16662
d0e6d399
NC
16663case "$d_strtouq" in
16664"$define")
16665 $cat <<EOM
16666Checking whether your strtouq() works okay...
16667EOM
16668 $cat >try.c <<'EOCP'
16669#include <errno.h>
16670#include <stdio.h>
16671extern unsigned long long int strtouq(char *s, char **, int);
16672static int bad = 0;
16673void check(char *s, unsigned long long eull, int een) {
16674 unsigned long long gull;
16675 errno = 0;
16676 gull = strtouq(s, 0, 10);
16677 if (!((gull == eull) && (errno == een)))
16678 bad++;
16679}
16680int main() {
16681 check(" 1", 1LL, 0);
16682 check(" 0", 0LL, 0);
16683 check("18446744073709551615", 18446744073709551615ULL, 0);
16684 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16685#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
16686 check("-1", 18446744073709551615ULL, 0);
16687 check("-18446744073709551614", 2LL, 0);
16688 check("-18446744073709551615", 1LL, 0);
16689 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16690 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16691#endif
d0e6d399
NC
16692 if (!bad)
16693 printf("ok\n");
16694 return 0;
16695}
16696EOCP
16697 set try
16698 if eval $compile; then
5440bc8e 16699 case "`$run ./try`" in
d0e6d399
NC
16700 ok) echo "Your strtouq() seems to be working okay." ;;
16701 *) cat <<EOM >&4
16702Your strtouq() doesn't seem to be working okay.
16703EOM
16704 d_strtouq="$undef"
16705 ;;
16706 esac
16707 fi
16708 ;;
16709esac
16710
b4eb6b3d
JH
16711: see if strxfrm exists
16712set strxfrm d_strxfrm
16713eval $inlibc
16714
16715: see if symlink exists
16716set symlink d_symlink
16717eval $inlibc
16718
16719: see if syscall exists
16720set syscall d_syscall
16721eval $inlibc
16722
2ef53570
JH
16723: see if prototype for syscall is available
16724echo " "
16725set d_syscallproto syscall $i_unistd unistd.h
16726eval $hasproto
16727
b4eb6b3d
JH
16728: see if sysconf exists
16729set sysconf d_sysconf
16730eval $inlibc
16731
16732: see if system exists
16733set system d_system
16734eval $inlibc
16735
16736: see if tcgetpgrp exists
16737set tcgetpgrp d_tcgetpgrp
16738eval $inlibc
16739
16740: see if tcsetpgrp exists
16741set tcsetpgrp d_tcsetpgrp
16742eval $inlibc
16743
16744: see if prototype for telldir is available
16745echo " "
16746set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16747eval $hasproto
16748
ad493445
MB
16749: see if time exists
16750echo " "
16751if test "X$d_time" = X -o X"$timetype" = X; then
16752 if set time val -f d_time; eval $csym; $val; then
16753 echo 'time() found.' >&4
16754 val="$define"
16755 rp="What is the type returned by time() on this system?"
16756 set time_t timetype long stdio.h sys/types.h
16757 eval $typedef_ask
16758 else
16759 echo 'time() not found, hope that will do.' >&4
16760 val="$undef"
16761 timetype='int';
16762 fi
16763 set d_time
16764 eval $setvar
16765fi
16766
b4eb6b3d
JH
16767: see if this is a sys/times.h system
16768set sys/times.h i_systimes
16769eval $inhdr
16770
16771: see if times exists
16772echo " "
16773if set times val -f d_times; eval $csym; $val; then
16774 echo 'times() found.' >&4
16775 d_times="$define"
16776 inc=''
16777 case "$i_systimes" in
16778 "$define") inc='sys/times.h';;
16779 esac
16780 rp="What is the type returned by times() on this system?"
16781 set clock_t clocktype long stdio.h sys/types.h $inc
16782 eval $typedef_ask
16783else
16784 echo 'times() NOT found, hope that will do.' >&4
16785 d_times="$undef"
16786 clocktype='int'
16787fi
16788
10bc17b6
JH
16789: see if tmpnam_r exists
16790set tmpnam_r d_tmpnam_r
16791eval $inlibc
16792case "$d_tmpnam_r" in
16793"$define")
31ee0cb7 16794 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
16795 case "$d_tmpnam_r_proto:$usethreads" in
16796 ":define") d_tmpnam_r_proto=define
a48ec845
JH
16797 set d_tmpnam_r_proto tmpnam_r $hdrs
16798 eval $hasproto ;;
16799 *) ;;
16800 esac
16801 case "$d_tmpnam_r_proto" in
16802 define)
10bc17b6
JH
16803 case "$tmpnam_r_proto" in
16804 ''|0) try='char* tmpnam_r(char*);'
16805 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16806 esac
16807 case "$tmpnam_r_proto" in
90e831dc 16808 ''|0) d_tmpnam_r=undef
10bc17b6 16809 tmpnam_r_proto=0
a48ec845 16810 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16811 * ) case "$tmpnam_r_proto" in
16812 REENTRANT_PROTO*) ;;
16813 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16814 esac
16815 echo "Prototype: $try" ;;
16816 esac
16817 ;;
c18e646a
JH
16818 *) case "$usethreads" in
16819 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16820 esac
90e831dc
SB
16821 d_tmpnam_r=undef
16822 tmpnam_r_proto=0
c18e646a 16823 ;;
a48ec845
JH
16824 esac
16825 ;;
10bc17b6
JH
16826*) tmpnam_r_proto=0
16827 ;;
16828esac
16829
b4eb6b3d
JH
16830: see if truncate exists
16831set truncate d_truncate
16832eval $inlibc
16833
10bc17b6
JH
16834: see if ttyname_r exists
16835set ttyname_r d_ttyname_r
16836eval $inlibc
16837case "$d_ttyname_r" in
16838"$define")
16839 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
16840 case "$d_ttyname_r_proto:$usethreads" in
16841 ":define") d_ttyname_r_proto=define
a48ec845
JH
16842 set d_ttyname_r_proto ttyname_r $hdrs
16843 eval $hasproto ;;
16844 *) ;;
16845 esac
16846 case "$d_ttyname_r_proto" in
16847 define)
10bc17b6
JH
16848 case "$ttyname_r_proto" in
16849 ''|0) try='int ttyname_r(int, char*, size_t);'
16850 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16851 esac
16852 case "$ttyname_r_proto" in
16853 ''|0) try='int ttyname_r(int, char*, int);'
16854 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16855 esac
16856 case "$ttyname_r_proto" in
16857 ''|0) try='char* ttyname_r(int, char*, int);'
16858 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16859 esac
16860 case "$ttyname_r_proto" in
90e831dc 16861 ''|0) d_ttyname_r=undef
10bc17b6 16862 ttyname_r_proto=0
a48ec845 16863 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16864 * ) case "$ttyname_r_proto" in
16865 REENTRANT_PROTO*) ;;
16866 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16867 esac
16868 echo "Prototype: $try" ;;
16869 esac
16870 ;;
c18e646a
JH
16871 *) case "$usethreads" in
16872 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16873 esac
90e831dc
SB
16874 d_ttyname_r=undef
16875 ttyname_r_proto=0
c18e646a 16876 ;;
a48ec845
JH
16877 esac
16878 ;;
10bc17b6
JH
16879*) ttyname_r_proto=0
16880 ;;
16881esac
16882
b4eb6b3d
JH
16883: see if tzname[] exists
16884echo " "
16885if set tzname val -a d_tzname; eval $csym; $val; then
16886 val="$define"
16887 echo 'tzname[] found.' >&4
16888else
16889 val="$undef"
16890 echo 'tzname[] NOT found.' >&4
16891fi
16892set d_tzname
16893eval $setvar
16894
4e0554ec
JH
16895case "$osname" in
16896next|rhapsody|darwin) multiarch="$define" ;;
16897esac
16898case "$multiarch" in
16899''|[nN]*) multiarch="$undef" ;;
16900esac
16901
24412007 16902: check for ordering of bytes in a UV
4e0554ec 16903echo " "
5440bc8e 16904case "$usecrosscompile$multiarch" in
4e0554ec
JH
16905*$define*)
16906 $cat <<EOM
16907You seem to be either cross-compiling or doing a multiarchitecture build,
16908skipping the byteorder check.
16909
16910EOM
5440bc8e 16911 byteorder='ffff'
4e0554ec
JH
16912 ;;
16913*)
16914 case "$byteorder" in
16915 '')
16916 $cat <<'EOM'
16917In the following, larger digits indicate more significance. A big-endian
16918machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16919little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16920machines may have weird orders like 3412. A Cray will report 87654321,
16921an Alpha will report 12345678. If the test program works the default is
16922probably right.
16923I'm now running the test program...
16924EOM
24412007 16925 $cat >try.c <<EOCP
4e0554ec 16926#include <stdio.h>
55954f19
JH
16927#$i_stdlib I_STDLIB
16928#ifdef I_STDLIB
16929#include <stdlib.h>
16930#endif
24412007
JH
16931#include <sys/types.h>
16932typedef $uvtype UV;
4e0554ec
JH
16933int main()
16934{
16935 int i;
16936 union {
24412007
JH
16937 UV l;
16938 char c[$uvsize];
4e0554ec
JH
16939 } u;
16940
24412007 16941 if ($uvsize > 4)
b5ded3e5 16942 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
4e0554ec 16943 else
a4c53327 16944 u.l = (UV)0x04030201;
24412007 16945 for (i = 0; i < $uvsize; i++)
4e0554ec
JH
16946 printf("%c", u.c[i]+'0');
16947 printf("\n");
16948 exit(0);
16949}
16950EOCP
16951 xxx_prompt=y
16952 set try
16953 if eval $compile && ./try > /dev/null; then
5440bc8e 16954 dflt=`$run ./try`
4e0554ec
JH
16955 case "$dflt" in
16956 [1-4][1-4][1-4][1-4]|12345678|87654321)
16957 echo "(The test program ran ok.)"
16958 echo "byteorder=$dflt"
16959 xxx_prompt=n
16960 ;;
16961 ????|????????) echo "(The test program ran ok.)" ;;
16962 *) echo "(The test program didn't run right for some reason.)" ;;
16963 esac
16964 else
16965 dflt='4321'
16966 cat <<'EOM'
16967(I can't seem to compile the test program. Guessing big-endian...)
16968EOM
16969 fi
16970 case "$xxx_prompt" in
16971 y)
24412007 16972 rp="What is the order of bytes in $uvtype?"
4e0554ec
JH
16973 . ./myread
16974 byteorder="$ans"
16975 ;;
16976 *) byteorder=$dflt
16977 ;;
16978 esac
16979 ;;
16980 esac
16981 $rm -f try.c try
16982 ;;
16983esac
16984
16985
16986$cat <<EOM
16987
16988Checking to see whether you can access character data unalignedly...
16989EOM
dc7b0a4f
JH
16990case "$d_u32align" in
16991'') $cat >try.c <<EOCP
4e0554ec 16992#include <stdio.h>
d1daaddf
JH
16993#$i_stdlib I_STDLIB
16994#ifdef I_STDLIB
16995#include <stdlib.h>
16996#endif
4e0554ec 16997#define U32 $u32type
d308175a
JH
16998#define BYTEORDER 0x$byteorder
16999#define U8 $u8type
9958dc3c
JH
17000#include <signal.h>
17001#ifdef SIGBUS
17002$signal_t bletch(s) int s; { exit(4); }
17003#endif
4e0554ec
JH
17004int main() {
17005#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
8906a23e 17006 U8 buf[8];
4e0554ec
JH
17007 U32 *up;
17008 int i;
17009
17010 if (sizeof(U32) != 4) {
17011 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17012 exit(1);
17013 }
17014
17015 fflush(stdout);
17016
9958dc3c
JH
17017#ifdef SIGBUS
17018 signal(SIGBUS, bletch);
17019#endif
17020
8906a23e
JH
17021 buf[0] = 0;
17022 buf[1] = 0;
17023 buf[2] = 0;
17024 buf[3] = 1;
7eac3fd6 17025 buf[4] = 0;
8906a23e
JH
17026 buf[5] = 0;
17027 buf[6] = 0;
7eac3fd6 17028 buf[7] = 1;
8906a23e 17029
4e0554ec
JH
17030 for (i = 0; i < 4; i++) {
17031 up = (U32*)(buf + i);
17032 if (! ((*up == 1 << (8*i)) || /* big-endian */
17033 (*up == 1 << (8*(3-i))) /* little-endian */
17034 )
17035 )
17036 {
17037 printf("read failed (%x)\n", *up);
17038 exit(2);
17039 }
17040 }
17041
17042 /* write test */
17043 for (i = 0; i < 4; i++) {
17044 up = (U32*)(buf + i);
17045 *up = 0xBeef;
17046 if (*up != 0xBeef) {
17047 printf("write failed (%x)\n", *up);
17048 exit(3);
17049 }
17050 }
17051
17052 exit(0);
17053#else
17054 printf("1\n");
17055 exit(1);
17056#endif
17057 return 0;
17058}
17059EOCP
17060set try
17061if eval $compile_ok; then
d308175a 17062 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 17063 $run ./try 2>&1 >/dev/null
4e0554ec
JH
17064 case "$?" in
17065 0) cat >&4 <<EOM
17066You can access character data pretty unalignedly.
17067EOM
17068 d_u32align="$undef"
17069 ;;
17070 *) cat >&4 <<EOM
17071It seems that you must access character data in an aligned manner.
17072EOM
17073 d_u32align="$define"
17074 ;;
17075 esac
4e0554ec
JH
17076else
17077 rp='Can you access character data at unaligned addresses?'
17078 dflt='n'
17079 . ./myread
17080 case "$ans" in
17081 [yY]*) d_u32align="$undef" ;;
17082 *) d_u32align="$define" ;;
17083 esac
17084fi
e36b5403 17085$rm -f core core.try.* try.core
dc7b0a4f
JH
17086;;
17087esac
4e0554ec
JH
17088
17089: see if ualarm exists
17090set ualarm d_ualarm
17091eval $inlibc
17092
b4eb6b3d
JH
17093: see if umask exists
17094set umask d_umask
17095eval $inlibc
17096
758a5d79
JH
17097: see if unordered exists
17098set unordered d_unordered
17099eval $inlibc
17100
4e0554ec
JH
17101: see if usleep exists
17102set usleep d_usleep
17103eval $inlibc
17104
2ef53570
JH
17105: see if prototype for usleep is available
17106echo " "
17107set d_usleepproto usleep $i_unistd unistd.h
17108eval $hasproto
17109
b4eb6b3d
JH
17110: see if ustat exists
17111set ustat d_ustat
17112eval $inlibc
17113
17114: backward compatibility for d_hvfork
17115if test X$d_hvfork != X; then
17116 d_vfork="$d_hvfork"
17117 d_hvfork=''
17118fi
17119: see if there is a vfork
17120val=''
17121set vfork val
17122eval $inlibc
17123
17124: Ok, but do we want to use it. vfork is reportedly unreliable in
17125: perl on Solaris 2.x, and probably elsewhere.
17126case "$val" in
17127$define)
17128 echo " "
17129 case "$usevfork" in
17130 false) dflt='n';;
17131 *) dflt='y';;
17132 esac
17133 cat <<'EOM'
17134
17135Perl can only use a vfork() that doesn't suffer from strict
17136restrictions on calling functions or modifying global data in
17137the child. For example, glibc-2.1 contains such a vfork()
17138that is unsuitable. If your system provides a proper fork()
17139call, chances are that you do NOT want perl to use vfork().
17140
17141EOM
17142 rp="Do you still want to use vfork()?"
17143 . ./myread
17144 case "$ans" in
17145 y|Y) ;;
17146 *)
17147 echo "Ok, we won't use vfork()."
17148 val="$undef"
17149 ;;
17150 esac
17151 ;;
17152esac
17153set d_vfork
17154eval $setvar
17155case "$d_vfork" in
17156$define) usevfork='true';;
17157*) usevfork='false';;
17158esac
17159
b4eb6b3d
JH
17160: see if closedir exists
17161set closedir d_closedir
17162eval $inlibc
17163
17164case "$d_closedir" in
17165"$define")
17166 echo " "
17167 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 17168 cat > try.c <<EOM
b4eb6b3d
JH
17169#$i_dirent I_DIRENT /**/
17170#$i_sysdir I_SYS_DIR /**/
17171#$i_sysndir I_SYS_NDIR /**/
17172#$i_systypes I_SYS_TYPES /**/
17173
17174#if defined(I_SYS_TYPES)
17175#include <sys/types.h>
17176#endif
17177#if defined(I_DIRENT)
17178#include <dirent.h>
17179#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17180#include <sys/dir.h>
17181#endif
17182#else
17183#ifdef I_SYS_NDIR
17184#include <sys/ndir.h>
17185#else
17186#ifdef I_SYS_DIR
17187#ifdef hp9000s500
17188#include <ndir.h> /* may be wrong in the future */
17189#else
17190#include <sys/dir.h>
17191#endif
17192#endif
17193#endif
17194#endif
17195int main() { return closedir(opendir(".")); }
17196EOM
5440bc8e 17197 set try
b4eb6b3d 17198 if eval $compile_ok; then
5440bc8e 17199 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
17200 echo "Yes, it does."
17201 val="$undef"
17202 else
17203 echo "No, it doesn't."
17204 val="$define"
17205 fi
17206 else
17207 echo "(I can't seem to compile the test program--assuming it doesn't)"
17208 val="$define"
17209 fi
17210 ;;
17211*)
17212 val="$undef";
17213 ;;
17214esac
17215set d_void_closedir
17216eval $setvar
5440bc8e 17217$rm -f try try.*
b4eb6b3d
JH
17218: see if there is a wait4
17219set wait4 d_wait4
17220eval $inlibc
17221
17222: see if waitpid exists
17223set waitpid d_waitpid
17224eval $inlibc
17225
17226: see if wcstombs exists
17227set wcstombs d_wcstombs
17228eval $inlibc
17229
17230: see if wctomb exists
17231set wctomb d_wctomb
17232eval $inlibc
17233
4e0554ec
JH
17234: see if writev exists
17235set writev d_writev
17236eval $inlibc
17237
b4eb6b3d
JH
17238: preserve RCS keywords in files with variable substitution, grrr
17239Date='$Date'
17240Id='$Id'
17241Log='$Log'
17242RCSfile='$RCSfile'
17243Revision='$Revision'
17244
b4eb6b3d
JH
17245: check for alignment requirements
17246echo " "
5440bc8e 17247case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
17248*$define*)
17249 $cat <<EOM
17250You seem to be either cross-compiling or doing a multiarchitecture build,
17251skipping the memory alignment check.
17252
17253EOM
17254 case "$alignbytes" in
17255 '') alignbytes=8 ;;
17256 esac
17257 ;;
17258*)
17259 case "$alignbytes" in
17260 '') echo "Checking alignment constraints..." >&4
17261 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17262 $cat >try.c <<'EOCP'
17263typedef long double NV;
17264EOCP
17265 else
17266 $cat >try.c <<'EOCP'
17267typedef double NV;
17268EOCP
17269 fi
17270 $cat >>try.c <<'EOCP'
17271#include <stdio.h>
17272struct foobar {
17273 char foo;
17274 NV bar;
17275} try_algn;
17276int main()
17277{
17278 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17279 return(0);
17280}
17281EOCP
17282 set try
17283 if eval $compile_ok; then
5440bc8e 17284 dflt=`$run ./try`
b4eb6b3d
JH
17285 else
17286 dflt='8'
17287 echo "(I can't seem to compile the test program...)"
17288 fi
17289 ;;
17290 *) dflt="$alignbytes"
17291 ;;
17292 esac
17293 rp="Doubles must be aligned on a how-many-byte boundary?"
17294 . ./myread
17295 alignbytes="$ans"
17296 $rm -f try.c try
17297 ;;
17298esac
17299
17300
17301: set the base revision
17302baserev=5.0
17303
3099fc99 17304: how do we concatenate cpp tokens here?
b4eb6b3d 17305echo " "
3099fc99 17306echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
b4eb6b3d
JH
17307$cat >cpp_stuff.c <<'EOCP'
17308#define RCAT(a,b)a/**/b
17309#define ACAT(a,b)a ## b
17310RCAT(Rei,ser)
17311ACAT(Cir,cus)
17312EOCP
17313$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17314if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17315 echo "Oh! Smells like ANSI's been here." >&4
17316 echo "We can catify or stringify, separately or together!"
17317 cpp_stuff=42
17318elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17319 echo "Ah, yes! The good old days!" >&4
17320 echo "However, in the good old days we don't know how to stringify and"
17321 echo "catify at the same time."
17322 cpp_stuff=1
17323else
17324 $cat >&4 <<EOM
3099fc99
CW
17325Hmm, I don't seem to be able to concatenate tokens with your cpp.
17326You're going to have to edit the values of CAT[2-5] in config.h...
b4eb6b3d
JH
17327EOM
17328 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17329fi
17330$rm -f cpp_stuff.*
17331
17332: see if this is a db.h system
17333set db.h i_db
17334eval $inhdr
17335
17336case "$i_db" in
17337$define)
17338 : Check db version.
17339 echo " "
17340 echo "Checking Berkeley DB version ..." >&4
17341 $cat >try.c <<EOCP
17342#$d_const HASCONST
17343#ifndef HASCONST
17344#define const
17345#endif
17346#include <sys/types.h>
17347#include <stdio.h>
55954f19
JH
17348#$i_stdlib I_STDLIB
17349#ifdef I_STDLIB
17350#include <stdlib.h>
17351#endif
b4eb6b3d 17352#include <db.h>
640374d0 17353int main(int argc, char *argv[])
b4eb6b3d
JH
17354{
17355#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17356 int Major, Minor, Patch ;
17357 unsigned long Version ;
17358 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
17359 if (argc == 2) {
17360 printf("%d %d %d %d %d %d\n",
17361 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17362 Major, Minor, Patch);
17363 exit(0);
17364 }
17365 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
17366
17367 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17368 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17369 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17370 Major, Minor, Patch) ;
17371
17372 /* check that db.h & libdb are compatible */
17373 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 17374 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
17375 exit(3);
17376 }
17377
640374d0 17378 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
17379
17380 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17381 + DB_VERSION_PATCH ;
17382
17383 /* needs to be >= 2.3.4 */
17384 if (Version < 2003004) {
17385 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 17386 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
17387 exit(2);
17388 }
17389
17390 exit(0);
17391#else
17392#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
17393 if (argc == 2) {
17394 printf("1 0 0\n");
17395 exit(0);
17396 }
17397 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
17398 exit(0); /* DB version < 2: the coast is clear. */
17399#else
17400 exit(1); /* <db.h> not Berkeley DB? */
17401#endif
17402#endif
17403}
17404EOCP
17405 set try
5440bc8e 17406 if eval $compile_ok && $run ./try; then
b4eb6b3d 17407 echo 'Looks OK.' >&4
5440bc8e 17408 set `$run ./try 1`
640374d0
JH
17409 db_version_major=$1
17410 db_version_minor=$2
17411 db_version_patch=$3
b4eb6b3d
JH
17412 else
17413 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17414 i_db=$undef
17415 case " $libs " in
17416 *"-ldb "*)
17417 : Remove db from list of libraries to use
17418 echo "Removing unusable -ldb from library list" >&4
17419 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17420 shift
17421 libs="$*"
17422 echo "libs = $libs" >&4
17423 ;;
17424 esac
17425 fi
17426 $rm -f try.*
17427 ;;
17428esac
17429
17430case "$i_db" in
17431define)
17432 : Check the return type needed for hash
17433 echo " "
17434 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17435 $cat >try.c <<EOCP
17436#$d_const HASCONST
17437#ifndef HASCONST
17438#define const
17439#endif
17440#include <sys/types.h>
17441#include <db.h>
17442
17443#ifndef DB_VERSION_MAJOR
17444u_int32_t hash_cb (ptr, size)
17445const void *ptr;
17446size_t size;
17447{
17448}
17449HASHINFO info;
17450int main()
17451{
17452 info.hash = hash_cb;
17453}
17454#endif
17455EOCP
17456 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17457 if $contains warning try.out >>/dev/null 2>&1 ; then
17458 db_hashtype='int'
17459 else
17460 db_hashtype='u_int32_t'
17461 fi
17462 else
17463 : XXX Maybe we should just give up here.
17464 db_hashtype=u_int32_t
17465 $cat try.out >&4
17466 echo "Help: I can't seem to compile the db test program." >&4
17467 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17468 fi
17469 $rm -f try.*
17470 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17471 ;;
17472*) db_hashtype=u_int32_t
17473 ;;
17474esac
17475case "$i_db" in
17476define)
17477 : Check the return type needed for prefix
17478 echo " "
17479 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17480 cat >try.c <<EOCP
17481#$d_const HASCONST
17482#ifndef HASCONST
17483#define const
17484#endif
17485#include <sys/types.h>
17486#include <db.h>
17487
17488#ifndef DB_VERSION_MAJOR
17489size_t prefix_cb (key1, key2)
17490const DBT *key1;
17491const DBT *key2;
17492{
17493}
17494BTREEINFO info;
17495int main()
17496{
17497 info.prefix = prefix_cb;
17498}
17499#endif
17500EOCP
17501 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17502 if $contains warning try.out >>/dev/null 2>&1 ; then
17503 db_prefixtype='int'
17504 else
17505 db_prefixtype='size_t'
17506 fi
17507 else
17508 db_prefixtype='size_t'
17509 : XXX Maybe we should just give up here.
17510 $cat try.out >&4
17511 echo "Help: I can't seem to compile the db test program." >&4
17512 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17513 fi
17514 $rm -f try.*
17515 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17516 ;;
17517*) db_prefixtype='size_t'
17518 ;;
17519esac
17520
b4eb6b3d
JH
17521
17522: How can we generate normalized random numbers ?
17523echo " "
17524echo "Looking for a random number function..." >&4
17525case "$randfunc" in
17526'')
17527 if set drand48 val -f; eval $csym; $val; then
17528 dflt="drand48"
17529 echo "Good, found drand48()." >&4
17530 elif set random val -f; eval $csym; $val; then
17531 dflt="random"
17532 echo "OK, found random()." >&4
17533 else
17534 dflt="rand"
17535 echo "Yick, looks like I have to use rand()." >&4
17536 fi
17537 echo " "
17538 ;;
17539*)
17540 dflt="$randfunc"
17541 ;;
17542esac
17543cont=true
17544
17545case "$ccflags" in
17546*-Dmy_rand=*|*-Dmy_srand=*)
17547 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17548 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17549 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17550 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17551 ;;
17552esac
17553
17554while $test "$cont"; do
17555 rp="Use which function to generate random numbers?"
17556 . ./myread
17557 if $test "$ans" = "$dflt"; then
17558 : null
17559 else
17560 randbits=''
17561 fi
17562 randfunc="$ans"
17563 if set $ans val -f; eval $csym; $val; then
17564 cont=''
17565 else
17566 dflt=y
17567 rp="I cannot find function $ans. Use that name anyway?"
17568 . ./myread
17569 dflt=rand
17570 case "$ans" in
17571 [yY]*) cont='';;
17572 esac
17573 fi
17574 case "$cont" in
17575 '')
17576 case "$randfunc" in
17577 drand48)
17578 drand01="drand48()"
17579 seedfunc="srand48"
17580 randbits=48
17581 randseedtype=long
17582 ;;
17583 rand|random)
17584 case "$randbits" in
17585 '')
17586echo "Checking to see how many bits your $randfunc() function produces..." >&4
17587 $cat >try.c <<EOCP
17588#$i_unistd I_UNISTD
17589#$i_stdlib I_STDLIB
17590#include <stdio.h>
17591#ifdef I_UNISTD
17592# include <unistd.h>
17593#endif
17594#ifdef I_STDLIB
17595# include <stdlib.h>
17596#endif
17597int main()
17598{
17599 register int i;
17600 register unsigned long tmp;
17601 register unsigned long max = 0L;
17602
17603 for (i = 1000; i; i--) {
17604 tmp = (unsigned long) $randfunc();
17605 if (tmp > max) max = tmp;
17606 }
17607 for (i = 0; max; i++)
17608 max /= 2;
17609 printf("%d\n",i);
17610}
17611EOCP
17612 set try
17613 if eval $compile_ok; then
17614 dflt=`try`
17615 else
17616 dflt='?'
17617 echo "(I can't seem to compile the test program...)"
17618 fi
17619 ;;
17620 *)
17621 dflt="$randbits"
17622 ;;
17623 esac
17624 rp="How many bits does your $randfunc() function produce?"
17625 . ./myread
17626 randbits="$ans"
17627 $rm -f try.c try
17628 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17629 seedfunc="s$randfunc"
17630 randseedtype=unsigned
17631 ;;
17632 *)
17633 dflt="31"
17634 rp="How many bits does your $randfunc() function produce?"
17635 . ./myread
17636 randbits="$ans"
17637 seedfunc="s$randfunc"
17638 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17639 if set $seedfunc val -f; eval $csym; $val; then
17640 echo "(Using $seedfunc() to seed random generator)"
17641 else
17642 echo "(Warning: no $seedfunc() to seed random generator)"
17643 seedfunc=rand
17644 fi
17645 randseedtype=unsigned
17646 ;;
17647 esac
17648 ;;
17649 esac
17650done
17651
17652echo " "
17653echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 17654$cat >try.c <<'EOM'
b4eb6b3d
JH
17655int main()
17656{
17657 if ('M'==0xd4) return 0;
17658 return 1;
17659}
17660EOM
17661
17662val=$undef
5440bc8e 17663set try
b4eb6b3d 17664if eval $compile_ok; then
5440bc8e 17665 if $run ./try; then
b4eb6b3d
JH
17666 echo "You seem to speak EBCDIC." >&4
17667 val="$define"
17668 else
5440bc8e 17669 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
17670 fi
17671else
17672 echo "I'm unable to compile the test program." >&4
17673 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17674fi
5440bc8e 17675$rm -f try try.*
b4eb6b3d
JH
17676set ebcdic
17677eval $setvar
17678
17679echo " "
17680$cat >&4 <<EOM
17681Checking how to flush all pending stdio output...
17682EOM
17683# I only know how to find the first 32 possibly open files on SunOS.
17684# See also hints/sunos_4_1.sh and util.c --AD
17685case "$osname" in
17686sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17687esac
17688$cat >>try.c <<EOCP
17689#include <stdio.h>
55954f19
JH
17690#$i_stdlib I_STDLIB
17691#ifdef I_STDLIB
17692#include <stdlib.h>
17693#endif
b4eb6b3d
JH
17694#$i_unistd I_UNISTD
17695#ifdef I_UNISTD
17696# include <unistd.h>
17697#endif
17698#$d_sysconf HAS_SYSCONF
17699#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17700#ifdef HAS_STDIO_STREAM_ARRAY
17701# define STDIO_STREAM_ARRAY $stdio_stream_array
17702#endif
17703int main() {
5440bc8e
JH
17704 FILE* p;
17705 unlink("try.out");
17706 p = fopen("try.out", "w");
b4eb6b3d
JH
17707#ifdef TRY_FPUTC
17708 fputc('x', p);
17709#else
17710# ifdef TRY_FPRINTF
17711 fprintf(p, "x");
17712# endif
17713#endif
17714#ifdef TRY_FFLUSH_NULL
17715 fflush(NULL);
17716#endif
17717#ifdef TRY_FFLUSH_ALL
17718 {
17719 long open_max = -1;
17720# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17721 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17722# else
17723# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17724 open_max = sysconf(_SC_OPEN_MAX);
17725# else
17726# ifdef FOPEN_MAX
17727 open_max = FOPEN_MAX;
17728# else
17729# ifdef OPEN_MAX
17730 open_max = OPEN_MAX;
17731# else
17732# ifdef _NFILE
17733 open_max = _NFILE;
17734# endif
17735# endif
17736# endif
17737# endif
17738# endif
17739# ifdef HAS_STDIO_STREAM_ARRAY
17740 if (open_max > 0) {
17741 long i;
17742 for (i = 0; i < open_max; i++)
17743 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17744 STDIO_STREAM_ARRAY[i]._file < open_max &&
17745 STDIO_STREAM_ARRAY[i]._flag)
17746 fflush(&STDIO_STREAM_ARRAY[i]);
17747 }
17748 }
17749# endif
17750#endif
17751 _exit(42);
17752}
17753EOCP
17754: first we have to find out how _not_ to flush
5440bc8e 17755$to try.c
b4eb6b3d
JH
17756if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17757 output=''
17758 set try -DTRY_FPUTC
17759 if eval $compile; then
fbe73d74 17760 $run ./try 2>/dev/null
28f5ac64 17761 code="$?"
5440bc8e 17762 $from try.out
28f5ac64 17763 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17764 output=-DTRY_FPUTC
17765 fi
17766 fi
17767 case "$output" in
17768 '')
17769 set try -DTRY_FPRINTF
b4eb6b3d 17770 if eval $compile; then
fbe73d74 17771 $run ./try 2>/dev/null
28f5ac64 17772 code="$?"
5440bc8e 17773 $from try.out
28f5ac64 17774 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17775 output=-DTRY_FPRINTF
17776 fi
17777 fi
17778 ;;
17779 esac
17780fi
17781: check for fflush NULL behaviour
17782case "$fflushNULL" in
17783'') set try -DTRY_FFLUSH_NULL $output
17784 if eval $compile; then
5440bc8e 17785 $run ./try 2>/dev/null
b4eb6b3d 17786 code="$?"
5440bc8e 17787 $from try.out
b4eb6b3d
JH
17788 if $test -s try.out -a "X$code" = X42; then
17789 fflushNULL="`$cat try.out`"
17790 else
17791 if $test "X$code" != X42; then
17792 $cat >&4 <<EOM
17793(If this test failed, don't worry, we'll try another method shortly.)
17794EOM
17795 fi
17796 fi
17797 fi
17798 $rm -f core try.core core.try.*
17799 case "$fflushNULL" in
17800 x) $cat >&4 <<EOM
17801Your fflush(NULL) works okay for output streams.
17802Let's see if it clobbers input pipes...
17803EOM
17804# As of mid-March 2000 all versions of Solaris appear to have a stdio
17805# bug that improperly flushes the input end of pipes. So we avoid the
17806# autoflush on fork/system/exec support for now. :-(
17807$cat >tryp.c <<EOCP
17808#include <stdio.h>
17809int
17810main(int argc, char **argv)
17811{
17812 char buf[1024];
17813 int i;
17814 char *bp = buf;
17815 while (1) {
17816 while ((i = getc(stdin)) != -1
17817 && (*bp++ = i) != '\n'
17818 && bp < &buf[1024])
17819 /* DO NOTHING */ ;
17820 *bp = '\0';
17821 fprintf(stdout, "%s", buf);
17822 fflush(NULL);
17823 if (i == -1)
17824 return 0;
17825 bp = buf;
17826 }
17827}
17828EOCP
17829 fflushNULL="$define"
17830 set tryp
17831 if eval $compile; then
17832 $rm -f tryp.out
5440bc8e 17833 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17834 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17835 $cat >&4 <<EOM
17836fflush(NULL) seems to behave okay with input streams.
17837EOM
17838 fflushNULL="$define"
17839 else
17840 $cat >&4 <<EOM
17841Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17842EOM
17843 fflushNULL="$undef"
17844 fi
17845 fi
17846 $rm -f core tryp.c tryp.core core.tryp.*
17847 ;;
17848 '') $cat >&4 <<EOM
17849Your fflush(NULL) isn't working (contrary to ANSI C).
17850EOM
17851 fflushNULL="$undef"
17852 ;;
17853 *) $cat >&4 <<EOM
17854Cannot figure out whether your fflush(NULL) works or not.
17855I'm assuming it doesn't (contrary to ANSI C).
17856EOM
17857 fflushNULL="$undef"
17858 ;;
17859 esac
17860 ;;
17861$define|true|[yY]*)
17862 fflushNULL="$define"
17863 ;;
17864*)
17865 fflushNULL="$undef"
17866 ;;
17867esac
17868: check explicit looping only if NULL did not work, and if the pipe
17869: bug does not show up on an explicit flush too
17870case "$fflushNULL" in
17871"$undef")
17872 $cat >tryp.c <<EOCP
17873#include <stdio.h>
17874int
17875main(int argc, char **argv)
17876{
17877 char buf[1024];
17878 int i;
17879 char *bp = buf;
17880 while (1) {
17881 while ((i = getc(stdin)) != -1
17882 && (*bp++ = i) != '\n'
17883 && bp < &buf[1024])
17884 /* DO NOTHING */ ;
17885 *bp = '\0';
17886 fprintf(stdout, "%s", buf);
17887 fflush(stdin);
17888 if (i == -1)
17889 return 0;
17890 bp = buf;
17891 }
17892}
17893EOCP
17894 set tryp
17895 if eval $compile; then
17896 $rm -f tryp.out
5440bc8e 17897 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17898 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17899 $cat >&4 <<EOM
17900Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17901EOM
17902 : now check for fflushall behaviour
17903 case "$fflushall" in
17904 '') set try -DTRY_FFLUSH_ALL $output
17905 if eval $compile; then
17906 $cat >&4 <<EOM
17907(Now testing the other method--but note that this also may fail.)
17908EOM
5440bc8e 17909 $run ./try 2>/dev/null
28f5ac64 17910 code=$?
fbe73d74 17911 $from try.out
28f5ac64 17912 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17913 fflushall="`$cat try.out`"
17914 fi
17915 fi
17916 $rm -f core try.core core.try.*
17917 case "$fflushall" in
17918 x) $cat >&4 <<EOM
17919Whew. Flushing explicitly all the stdio streams works.
17920EOM
17921 fflushall="$define"
17922 ;;
17923 '') $cat >&4 <<EOM
17924Sigh. Flushing explicitly all the stdio streams doesn't work.
17925EOM
17926 fflushall="$undef"
17927 ;;
17928 *) $cat >&4 <<EOM
17929Cannot figure out whether flushing stdio streams explicitly works or not.
17930I'm assuming it doesn't.
17931EOM
17932 fflushall="$undef"
17933 ;;
17934 esac
17935 ;;
17936 "$define"|true|[yY]*)
17937 fflushall="$define"
17938 ;;
17939 *)
17940 fflushall="$undef"
17941 ;;
17942 esac
17943 else
17944 $cat >&4 <<EOM
17945All is futile. Even fflush(stdin) clobbers input pipes!
17946EOM
17947 fflushall="$undef"
17948 fi
17949 else
17950 fflushall="$undef"
17951 fi
17952 $rm -f core tryp.c tryp.core core.tryp.*
17953 ;;
17954*) fflushall="$undef"
17955 ;;
17956esac
17957
17958case "$fflushNULL$fflushall" in
17959undefundef)
17960 $cat <<EOM
17961OK, I give up. I cannot figure out how to flush pending stdio output.
17962We won't be flushing handles at all before fork/exec/popen.
17963EOM
17964 ;;
17965esac
17966$rm -f try.* try$exe_ext
17967
17968: Store the full pathname to the ar program for use in the C program
17969: Respect a hint or command line value for full_ar.
17970case "$full_ar" in
17971'') full_ar=$ar ;;
17972esac
17973
17974: Store the full pathname to the sed program for use in the C program
17975full_sed=$sed
17976
17977: see what type gids are declared as in the kernel
17978echo " "
17979echo "Looking for the type for group ids returned by getgid()."
17980set gid_t gidtype xxx stdio.h sys/types.h
17981eval $typedef
17982case "$gidtype" in
17983xxx)
17984 xxx=`./findhdr sys/user.h`
17985 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17986 case $1 in
17987 unsigned) dflt="$1 $2" ;;
17988 *) dflt="$1" ;;
17989 esac
17990 ;;
17991*) dflt="$gidtype";;
17992esac
17993case "$gidtype" in
17994gid_t) echo "gid_t found." ;;
17995*) rp="What is the type for group ids returned by getgid()?"
17996 . ./myread
17997 gidtype="$ans"
17998 ;;
17999esac
18000
18001echo " "
18002case "$gidtype" in
18003*_t) zzz="$gidtype" ;;
18004*) zzz="gid" ;;
18005esac
18006echo "Checking the size of $zzz..." >&4
18007cat > try.c <<EOCP
18008#include <sys/types.h>
18009#include <stdio.h>
d1daaddf
JH
18010#$i_stdlib I_STDLIB
18011#ifdef I_STDLIB
18012#include <stdlib.h>
18013#endif
b4eb6b3d
JH
18014int main() {
18015 printf("%d\n", (int)sizeof($gidtype));
18016 exit(0);
18017}
18018EOCP
18019set try
18020if eval $compile_ok; then
5440bc8e 18021 yyy=`$run ./try`
b4eb6b3d
JH
18022 case "$yyy" in
18023 '') gidsize=4
18024 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18025 ;;
18026 *) gidsize=$yyy
18027 echo "Your $zzz is $gidsize bytes long."
18028 ;;
18029 esac
18030else
18031 gidsize=4
18032 echo "(I can't compile the test program--guessing $gidsize.)" >&4
18033fi
18034
18035
18036echo " "
18037case "$gidtype" in
18038*_t) zzz="$gidtype" ;;
18039*) zzz="gid" ;;
18040esac
18041echo "Checking the sign of $zzz..." >&4
18042cat > try.c <<EOCP
18043#include <sys/types.h>
18044#include <stdio.h>
18045int main() {
18046 $gidtype foo = -1;
18047 if (foo < 0)
18048 printf("-1\n");
18049 else
18050 printf("1\n");
18051}
18052EOCP
18053set try
18054if eval $compile; then
5440bc8e 18055 yyy=`$run ./try`
b4eb6b3d
JH
18056 case "$yyy" in
18057 '') gidsign=1
18058 echo "(I can't execute the test program--guessing unsigned.)" >&4
18059 ;;
18060 *) gidsign=$yyy
18061 case "$gidsign" in
18062 1) echo "Your $zzz is unsigned." ;;
18063 -1) echo "Your $zzz is signed." ;;
18064 esac
18065 ;;
18066 esac
18067else
18068 gidsign=1
18069 echo "(I can't compile the test program--guessing unsigned.)" >&4
18070fi
18071
18072
18073echo " "
18074
18075if $test X"$quadtype" != X; then
18076
18077echo "Checking how to print 64-bit integers..." >&4
18078
18079if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18080 $cat >try.c <<'EOCP'
18081#include <sys/types.h>
18082#include <stdio.h>
18083int main() {
18084 int q = 12345678901;
18085 printf("%ld\n", q);
18086}
18087EOCP
18088 set try
18089 if eval $compile; then
5440bc8e 18090 yyy=`$run ./try`
b4eb6b3d
JH
18091 case "$yyy" in
18092 12345678901)
18093 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18094 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18095 echo "We will use %d."
18096 ;;
18097 esac
18098 fi
18099fi
18100
18101if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18102 $cat >try.c <<'EOCP'
18103#include <sys/types.h>
18104#include <stdio.h>
18105int main() {
18106 long q = 12345678901;
18107 printf("%ld\n", q);
18108}
18109EOCP
18110 set try
18111 if eval $compile; then
5440bc8e 18112 yyy=`$run ./try`
b4eb6b3d
JH
18113 case "$yyy" in
18114 12345678901)
18115 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18116 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18117 echo "We will use %ld."
18118 ;;
18119 esac
18120 fi
18121fi
18122
18123if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18124 $cat >try.c <<'EOCP'
18125#include <sys/types.h>
18126#include <inttypes.h>
18127#include <stdio.h>
18128int main() {
18129 int64_t q = 12345678901;
18130 printf("%" PRId64 "\n", q);
18131}
18132EOCP
18133 set try
18134 if eval $compile; then
5440bc8e 18135 yyy=`$run ./try`
b4eb6b3d
JH
18136 case "$yyy" in
18137 12345678901)
18138 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18139 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18140 echo "We will use the C9X style."
18141 ;;
18142 esac
18143 fi
18144fi
18145
2ef53570
JH
18146if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18147 $cat >try.c <<EOCP
b4eb6b3d
JH
18148#include <sys/types.h>
18149#include <stdio.h>
18150int main() {
2ef53570
JH
18151 $quadtype q = 12345678901;
18152 printf("%Ld\n", q);
b4eb6b3d
JH
18153}
18154EOCP
18155 set try
18156 if eval $compile; then
5440bc8e 18157 yyy=`$run ./try`
b4eb6b3d
JH
18158 case "$yyy" in
18159 12345678901)
2ef53570
JH
18160 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18161 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18162 echo "We will use %Ld."
b4eb6b3d
JH
18163 ;;
18164 esac
18165 fi
18166fi
18167
2ef53570
JH
18168if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18169 $cat >try.c <<'EOCP'
b4eb6b3d
JH
18170#include <sys/types.h>
18171#include <stdio.h>
18172int main() {
2ef53570
JH
18173 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18174 printf("%lld\n", q);
b4eb6b3d
JH
18175}
18176EOCP
18177 set try
18178 if eval $compile; then
5440bc8e 18179 yyy=`$run ./try`
b4eb6b3d
JH
18180 case "$yyy" in
18181 12345678901)
2ef53570
JH
18182 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18183 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18184 echo "We will use the %lld style."
b4eb6b3d
JH
18185 ;;
18186 esac
18187 fi
18188fi
18189
18190if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18191 $cat >try.c <<EOCP
18192#include <sys/types.h>
18193#include <stdio.h>
18194int main() {
18195 $quadtype q = 12345678901;
18196 printf("%qd\n", q);
18197}
18198EOCP
18199 set try
18200 if eval $compile; then
5440bc8e 18201 yyy=`$run ./try`
b4eb6b3d
JH
18202 case "$yyy" in
18203 12345678901)
18204 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18205 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18206 echo "We will use %qd."
18207 ;;
18208 esac
18209 fi
18210fi
18211
18212if $test X"$sPRId64" = X; then
18213 echo "Cannot figure out how to print 64-bit integers." >&4
18214fi
18215
18216$rm -f try try.*
18217
18218fi
18219
18220case "$sPRId64" in
18221'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18222 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18223 ;;
18224*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18225 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18226 ;;
18227esac
18228
18229
18230echo " "
18231$echo "Checking the format strings to be used for Perl's internal types..." >&4
18232
18233if $test X"$ivsize" = X8; then
18234 ivdformat="$sPRId64"
18235 uvuformat="$sPRIu64"
18236 uvoformat="$sPRIo64"
18237 uvxformat="$sPRIx64"
18238 uvXUformat="$sPRIXU64"
18239else
18240 if $test X"$ivsize" = X"$longsize"; then
18241 ivdformat='"ld"'
18242 uvuformat='"lu"'
18243 uvoformat='"lo"'
18244 uvxformat='"lx"'
18245 uvXUformat='"lX"'
18246 else
18247 if $test X"$ivsize" = X"$intsize"; then
18248 ivdformat='"d"'
18249 uvuformat='"u"'
18250 uvoformat='"o"'
18251 uvxformat='"x"'
18252 uvXUformat='"X"'
18253 else
18254 : far out
18255 if $test X"$ivsize" = X"$shortsize"; then
18256 ivdformat='"hd"'
18257 uvuformat='"hu"'
18258 uvoformat='"ho"'
18259 uvxformat='"hx"'
18260 uvXUformat='"hX"'
18261 fi
18262 fi
18263 fi
18264fi
18265
18266if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18267 nveformat="$sPRIeldbl"
18268 nvfformat="$sPRIfldbl"
18269 nvgformat="$sPRIgldbl"
18270 nvEUformat="$sPRIEUldbl"
18271 nvFUformat="$sPRIFUldbl"
18272 nvGUformat="$sPRIGUldbl"
18273else
18274 nveformat='"e"'
18275 nvfformat='"f"'
18276 nvgformat='"g"'
18277 nvEUformat='"E"'
18278 nvFUformat='"F"'
18279 nvGUformat='"G"'
18280fi
18281
18282case "$ivdformat" in
3c728e00 18283'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
18284 exit 1
18285 ;;
18286esac
18287
18288
18289echo " "
18290$echo "Checking the format string to be used for gids..." >&4
18291
18292case "$gidsign" in
18293-1) if $test X"$gidsize" = X"$ivsize"; then
18294 gidformat="$ivdformat"
18295 else
18296 if $test X"$gidsize" = X"$longsize"; then
18297 gidformat='"ld"'
18298 else
18299 if $test X"$gidsize" = X"$intsize"; then
18300 gidformat='"d"'
18301 else
18302 if $test X"$gidsize" = X"$shortsize"; then
18303 gidformat='"hd"'
18304 fi
18305 fi
18306 fi
18307 fi
18308 ;;
18309*) if $test X"$gidsize" = X"$uvsize"; then
18310 gidformat="$uvuformat"
18311 else
18312 if $test X"$gidsize" = X"$longsize"; then
18313 gidformat='"lu"'
18314 else
18315 if $test X"$gidsize" = X"$intsize"; then
18316 gidformat='"u"'
18317 else
18318 if $test X"$gidsize" = X"$shortsize"; then
18319 gidformat='"hu"'
18320 fi
18321 fi
18322 fi
18323 fi
18324 ;;
18325esac
18326
18327: see if getgroups exists
18328set getgroups d_getgrps
18329eval $inlibc
18330
18331: see if setgroups exists
18332set setgroups d_setgrps
18333eval $inlibc
18334
18335
18336: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18337echo " "
18338case "$d_getgrps$d_setgrps" in
18339*define*)
18340 case "$groupstype" in
18341 '') dflt="$gidtype" ;;
18342 *) dflt="$groupstype" ;;
18343 esac
18344 $cat <<EOM
18345What type of pointer is the second argument to getgroups() and setgroups()?
18346Usually this is the same as group ids, $gidtype, but not always.
18347
18348EOM
18349 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18350 . ./myread
18351 groupstype="$ans"
18352 ;;
18353*) groupstype="$gidtype";;
18354esac
18355
18356echo " "
18357echo "Checking if your $make program sets \$(MAKE)..." >&4
18358case "$make_set_make" in
18359'')
18360 $sed 's/^X //' > testmake.mak << 'EOF'
18361Xall:
18362X @echo 'maketemp="$(MAKE)"'
18363EOF
18364 case "`$make -f testmake.mak 2>/dev/null`" in
18365 *maketemp=*) make_set_make='#' ;;
18366 *) make_set_make="MAKE=$make" ;;
18367 esac
18368 $rm -f testmake.mak
18369 ;;
18370esac
18371case "$make_set_make" in
18372'#') echo "Yup, it does.";;
18373*) echo "Nope, it doesn't.";;
18374esac
18375
18376: see what type is used for mode_t
18377rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18378set mode_t modetype int stdio.h sys/types.h
18379eval $typedef_ask
18380
2cc61e15
DD
18381: see if stdarg is available
18382echo " "
18383if $test `./findhdr stdarg.h`; then
18384 echo "<stdarg.h> found." >&4
18385 valstd="$define"
18386else
18387 echo "<stdarg.h> NOT found." >&4
18388 valstd="$undef"
18389fi
18390
18391: see if varags is available
18392echo " "
18393if $test `./findhdr varargs.h`; then
18394 echo "<varargs.h> found." >&4
18395else
18396 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18397fi
18398
18399: set up the varargs testing programs
18400$cat > varargs.c <<EOP
18401#ifdef I_STDARG
18402#include <stdarg.h>
18403#endif
18404#ifdef I_VARARGS
18405#include <varargs.h>
18406#endif
18407
18408#ifdef I_STDARG
18409int f(char *p, ...)
18410#else
18411int f(va_alist)
18412va_dcl
18413#endif
18414{
18415 va_list ap;
18416#ifndef I_STDARG
18417 char *p;
18418#endif
18419#ifdef I_STDARG
18420 va_start(ap,p);
18421#else
18422 va_start(ap);
18423 p = va_arg(ap, char *);
18424#endif
18425 va_end(ap);
18426}
18427EOP
18428$cat > varargs <<EOP
18429$startsh
18430if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18431 echo "true"
18432else
18433 echo "false"
18434fi
18435$rm -f varargs$_o
18436EOP
18437chmod +x varargs
18438
18439: now check which varargs header should be included
18440echo " "
18441i_varhdr=''
18442case "$valstd" in
18443"$define")
18444 if `./varargs I_STDARG`; then
18445 val='stdarg.h'
18446 elif `./varargs I_VARARGS`; then
18447 val='varargs.h'
18448 fi
18449 ;;
18450*)
18451 if `./varargs I_VARARGS`; then
18452 val='varargs.h'
18453 fi
18454 ;;
18455esac
18456case "$val" in
18457'')
18458echo "I could not find the definition for va_dcl... You have problems..." >&4
18459 val="$undef"; set i_stdarg; eval $setvar
18460 val="$undef"; set i_varargs; eval $setvar
18461 ;;
18462*)
18463 set i_varhdr
18464 eval $setvar
18465 case "$i_varhdr" in
18466 stdarg.h)
18467 val="$define"; set i_stdarg; eval $setvar
18468 val="$undef"; set i_varargs; eval $setvar
18469 ;;
18470 varargs.h)
18471 val="$undef"; set i_stdarg; eval $setvar
18472 val="$define"; set i_varargs; eval $setvar
18473 ;;
18474 esac
18475 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18476esac
18477$rm -f varargs*
18478
18479: see if we need va_copy
18480echo " "
18481case "$i_stdarg" in
18482"$define")
18483 $cat >try.c <<EOCP
18484#include <stdarg.h>
18485#include <stdio.h>
85c8a686
DD
18486#$i_stdlib I_STDLIB
18487#ifdef I_STDLIB
18488#include <stdlib.h>
18489#endif
18490#include <signal.h>
2cc61e15
DD
18491
18492int
18493ivfprintf(FILE *f, const char *fmt, va_list *valp)
18494{
18495 return vfprintf(f, fmt, *valp);
18496}
18497
18498int
18499myvfprintf(FILE *f, const char *fmt, va_list val)
18500{
18501 return ivfprintf(f, fmt, &val);
18502}
18503
18504int
18505myprintf(char *fmt, ...)
18506{
18507 va_list val;
18508 va_start(val, fmt);
18509 return myvfprintf(stdout, fmt, val);
18510}
18511
18512int
18513main(int ac, char **av)
18514{
85c8a686
DD
18515 signal(SIGSEGV, exit);
18516
2cc61e15
DD
18517 myprintf("%s%cs all right, then\n", "that", '\'');
18518 exit(0);
18519}
18520EOCP
18521 set try
5440bc8e
JH
18522 if eval $compile && $run ./try 2>&1 >/dev/null; then
18523 case "`$run ./try`" in
2cc61e15
DD
18524 "that's all right, then")
18525 okay=yes
18526 ;;
18527 esac
18528 fi
18529 case "$okay" in
18530 yes) echo "It seems that you don't need va_copy()." >&4
18531 need_va_copy="$undef"
18532 ;;
18533 *) echo "It seems that va_copy() or similar will be needed." >&4
18534 need_va_copy="$define"
18535 ;;
18536 esac
18537 $rm -f try.* core core.* *.core *.core.*
18538 ;;
18539*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18540 ;;
18541esac
18542
b4eb6b3d
JH
18543: see what type is used for size_t
18544rp="What is the type used for the length parameter for string functions?"
18545set size_t sizetype 'unsigned int' stdio.h sys/types.h
18546eval $typedef_ask
18547
18548: check for type of arguments to gethostbyaddr.
18549if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18550 case "$d_gethbyaddr" in
18551 $define)
18552 $cat <<EOM
18553
18554Checking to see what type of arguments are accepted by gethostbyaddr().
18555EOM
18556 hdrs="$define sys/types.h
18557 $d_socket sys/socket.h
18558 $i_niin netinet/in.h
18559 $i_netdb netdb.h
18560 $i_unistd unistd.h"
18561 : The first arg can 'char *' or 'void *'
18562 : The second arg is some of integral type
18563 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18564 for yyy in size_t long int; do
18565 case "$netdb_host_type" in
18566 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18567 if ./protochk "$try" $hdrs; then
18568 echo "Your system accepts $xxx for the first arg."
18569 echo "...and $yyy for the second arg."
18570 netdb_host_type="$xxx"
18571 netdb_hlen_type="$yyy"
18572 fi
18573 ;;
18574 esac
18575 done
18576 done
18577 : In case none of those worked, prompt the user.
18578 case "$netdb_host_type" in
18579 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18580 dflt='char *'
18581 . ./myread
18582 netdb_host_type=$ans
18583 rp='What is the type for the 2nd argument to gethostbyaddr?'
18584 dflt="$sizetype"
18585 . ./myread
18586 netdb_hlen_type=$ans
18587 ;;
18588 esac
18589 ;;
18590 *) : no gethostbyaddr, so pick harmless defaults
18591 netdb_host_type='char *'
18592 netdb_hlen_type="$sizetype"
18593 ;;
18594 esac
18595 # Remove the "const" if needed. -- but then we'll have a
18596 # prototype clash!
18597 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18598fi
18599
18600: check for type of argument to gethostbyname.
18601if test "X$netdb_name_type" = X ; then
18602 case "$d_gethbyname" in
18603 $define)
18604 $cat <<EOM
18605
18606Checking to see what type of argument is accepted by gethostbyname().
18607EOM
18608 hdrs="$define sys/types.h
18609 $d_socket sys/socket.h
18610 $i_niin netinet/in.h
18611 $i_netdb netdb.h
18612 $i_unistd unistd.h"
18613 for xxx in "const char *" "char *"; do
18614 case "$netdb_name_type" in
18615 '') try="extern struct hostent *gethostbyname($xxx);"
18616 if ./protochk "$try" $hdrs; then
18617 echo "Your system accepts $xxx."
18618 netdb_name_type="$xxx"
18619 fi
18620 ;;
18621 esac
18622 done
18623 : In case none of those worked, prompt the user.
18624 case "$netdb_name_type" in
18625 '') rp='What is the type for the 1st argument to gethostbyname?'
18626 dflt='char *'
18627 . ./myread
18628 netdb_name_type=$ans
18629 ;;
18630 esac
18631 ;;
18632 *) : no gethostbyname, so pick harmless default
18633 netdb_name_type='char *'
18634 ;;
18635 esac
18636fi
18637
18638: check for type of 1st argument to getnetbyaddr.
18639if test "X$netdb_net_type" = X ; then
18640 case "$d_getnbyaddr" in
18641 $define)
18642 $cat <<EOM
18643
18644Checking to see what type of 1st argument is accepted by getnetbyaddr().
18645EOM
18646 hdrs="$define sys/types.h
18647 $d_socket sys/socket.h
18648 $i_niin netinet/in.h
18649 $i_netdb netdb.h
18650 $i_unistd unistd.h"
18651 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18652 case "$netdb_net_type" in
18653 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18654 if ./protochk "$try" $hdrs; then
18655 echo "Your system accepts $xxx."
18656 netdb_net_type="$xxx"
18657 fi
18658 ;;
18659 esac
18660 done
18661 : In case none of those worked, prompt the user.
18662 case "$netdb_net_type" in
18663 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18664 dflt='long'
18665 . ./myread
18666 netdb_net_type=$ans
18667 ;;
18668 esac
18669 ;;
18670 *) : no getnetbyaddr, so pick harmless default
18671 netdb_net_type='long'
18672 ;;
18673 esac
18674fi
18675: locate the preferred pager for this system
d604bb53 18676fn=f/
b4eb6b3d
JH
18677case "$pager" in
18678'')
18679 dflt=''
18680 case "$pg" in
18681 /*) dflt=$pg;;
18682 [a-zA-Z]:/*) dflt=$pg;;
18683 esac
18684 case "$more" in
18685 /*) dflt=$more;;
18686 [a-zA-Z]:/*) dflt=$more;;
18687 esac
18688 case "$less" in
18689 /*) dflt=$less;;
18690 [a-zA-Z]:/*) dflt=$less;;
18691 esac
18692 case "$dflt" in
18693 '') dflt=/usr/ucb/more;;
18694 esac
18695 ;;
d604bb53
JH
18696*) dflt="$pager"
18697 : Instruct ./getfile to trust the hinted or previous pager value,
18698 : even if it does not begin with a slash. For example, on os2,
18699 : pager might be cmd /c more. See comments in UU/getfile.
18700 fn="f/($pager)"
18701 ;;
b4eb6b3d
JH
18702esac
18703echo " "
b4eb6b3d
JH
18704rp='What pager is used on your system?'
18705. ./getfile
18706pager="$ans"
18707
18708: see what type pids are declared as in the kernel
18709rp="What is the type of process ids on this system?"
18710set pid_t pidtype int stdio.h sys/types.h
18711eval $typedef_ask
18712
b4eb6b3d
JH
18713: see if ar generates random libraries by itself
18714echo " "
18715echo "Checking how to generate random libraries on your machine..." >&4
18716echo 'int bar1() { return bar2(); }' > bar1.c
18717echo 'int bar2() { return 2; }' > bar2.c
55954f19
JH
18718$cat > foo.c <<EOP
18719#$i_stdlib I_STDLIB
18720#ifdef I_STDLIB
18721#include <stdlib.h>
18722#endif
b4eb6b3d
JH
18723int main() { printf("%d\n", bar1()); exit(0); }
18724EOP
18725$cc $ccflags -c bar1.c >/dev/null 2>&1
18726$cc $ccflags -c bar2.c >/dev/null 2>&1
18727$cc $ccflags -c foo.c >/dev/null 2>&1
18728$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 18729if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18730 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18731 echo "$ar appears to generate random libraries itself."
18732 orderlib=false
18733 ranlib=":"
18734elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 18735 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18736 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18737 echo "a table of contents needs to be added with '$ar ts'."
18738 orderlib=false
18739 ranlib="$ar ts"
18740else
18741 case "$ranlib" in
18742 :) ranlib='';;
18743 '')
18744 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18745 $test -f $ranlib || ranlib=''
18746 ;;
18747 esac
18748 if $test -n "$ranlib"; then
18749 echo "your system has '$ranlib'; we'll use that."
18750 orderlib=false
18751 else
18752 echo "your system doesn't seem to support random libraries"
18753 echo "so we'll use lorder and tsort to order the libraries."
18754 orderlib=true
18755 ranlib=":"
18756 fi
18757fi
18758$rm -f foo* bar*
18759
18760: check for type of arguments to select.
18761case "$selecttype" in
18762'') case "$d_select" in
18763 $define)
18764 echo " "
18765 $cat <<EOM
18766Checking to see what type of arguments are accepted by select().
18767EOM
18768 hdrs="$define sys/types.h
18769 $i_systime sys/time.h
18770 $i_sysselct sys/select.h
18771 $d_socket sys/socket.h"
18772 : The first arg can be int, unsigned, or size_t
18773 : The last arg may or may not be 'const'
18774 val=''
18775 : void pointer has been seen but using that
18776 : breaks the selectminbits test
18777 for xxx in 'fd_set *' 'int *'; do
18778 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18779 for tmo in 'struct timeval *' 'const struct timeval *'; do
18780 case "$val" in
18781 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18782 if ./protochk "$try" $hdrs; then
18783 echo "Your system accepts $xxx."
18784 val="$xxx"
18785 fi
18786 ;;
18787 esac
18788 done
18789 done
18790 done
18791 case "$val" in
18792 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18793 case "$d_fd_set" in
18794 $define) dflt="fd_set *" ;;
18795 *) dflt="int *" ;;
18796 esac
18797 . ./myread
18798 val=$ans
18799 ;;
18800 esac
18801 selecttype="$val"
18802 ;;
18803 *) : no select, so pick a harmless default
18804 selecttype='int *'
18805 ;;
18806 esac
18807 ;;
18808esac
18809
18810: check for the select 'width'
18811case "$selectminbits" in
e6e7e605
JH
18812'') safebits=`expr $ptrsize \* 8`
18813 case "$d_select" in
b4eb6b3d
JH
18814 $define)
18815 $cat <<EOM
18816
18817Checking to see on how many bits at a time your select() operates...
18818EOM
18819 $cat >try.c <<EOCP
18820#include <sys/types.h>
18821#$i_time I_TIME
18822#$i_systime I_SYS_TIME
18823#$i_systimek I_SYS_TIME_KERNEL
18824#ifdef I_TIME
18825# include <time.h>
18826#endif
18827#ifdef I_SYS_TIME
18828# ifdef I_SYS_TIME_KERNEL
18829# define KERNEL
18830# endif
18831# include <sys/time.h>
18832# ifdef I_SYS_TIME_KERNEL
18833# undef KERNEL
18834# endif
18835#endif
18836#$i_sysselct I_SYS_SELECT
18837#ifdef I_SYS_SELECT
18838#include <sys/select.h>
18839#endif
18840#$d_socket HAS_SOCKET
18841#ifdef HAS_SOCKET
18842# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18843#endif
18844#include <stdio.h>
d1daaddf
JH
18845#$i_stdlib I_STDLIB
18846#ifdef I_STDLIB
18847#include <stdlib.h>
18848#endif
b4eb6b3d
JH
18849$selecttype b;
18850#define S sizeof(*(b))
18851#define MINBITS 64
18852#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18853#define NBITS (NBYTES * 8)
18854int main() {
e6e7e605 18855 char *s = malloc(NBYTES);
b4eb6b3d
JH
18856 struct timeval t;
18857 int i;
18858 FILE* fp;
18859 int fd;
18860
e6e7e605
JH
18861 if (!s)
18862 exit(1);
b4eb6b3d
JH
18863 fclose(stdin);
18864 fp = fopen("try.c", "r");
18865 if (fp == 0)
e6e7e605 18866 exit(2);
b4eb6b3d
JH
18867 fd = fileno(fp);
18868 if (fd < 0)
e6e7e605 18869 exit(3);
b4eb6b3d
JH
18870 b = ($selecttype)s;
18871 for (i = 0; i < NBITS; i++)
18872 FD_SET(i, b);
18873 t.tv_sec = 0;
18874 t.tv_usec = 0;
18875 select(fd + 1, b, 0, 0, &t);
18876 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
e6e7e605 18877 free(s);
b4eb6b3d
JH
18878 printf("%d\n", i + 1);
18879 return 0;
18880}
18881EOCP
18882 set try
18883 if eval $compile_ok; then
5440bc8e 18884 selectminbits=`$run ./try`
b4eb6b3d
JH
18885 case "$selectminbits" in
18886 '') cat >&4 <<EOM
18887Cannot figure out on how many bits at a time your select() operates.
e6e7e605 18888I'll play safe and guess it is $safebits bits.
b4eb6b3d 18889EOM
e6e7e605
JH
18890 selectminbits=$safebits
18891 bits="$safebits bits"
b4eb6b3d
JH
18892 ;;
18893 1) bits="1 bit" ;;
18894 *) bits="$selectminbits bits" ;;
18895 esac
18896 echo "Your select() operates on $bits at a time." >&4
18897 else
18898 rp='What is the minimum number of bits your select() operates on?'
18899 case "$byteorder" in
e6e7e605
JH
18900 12345678) dflt=64 ;;
18901 1234) dflt=32 ;;
b4eb6b3d
JH
18902 *) dflt=1 ;;
18903 esac
18904 . ./myread
18905 val=$ans
18906 selectminbits="$val"
18907 fi
18908 $rm -f try.* try
18909 ;;
18910 *) : no select, so pick a harmless default
e6e7e605 18911 selectminbits=$safebits
b4eb6b3d
JH
18912 ;;
18913 esac
18914 ;;
18915esac
18916
18917: Trace out the files included by signal.h, then look for SIGxxx names.
18918: Remove SIGARRAYSIZE used by HPUX.
18919: Remove SIGSTKSIZE used by Linux.
18920: Remove SIGSTKSZ used by Posix.
18921: Remove SIGTYP void lines used by OS2.
18922: Some cpps, like os390, dont give the file name anywhere
18923if [ "X$fieldn" = X ]; then
18924 : Just make some guesses. We check them later.
18925 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18926else
18927 xxx=`echo '#include <signal.h>' |
18928 $cppstdin $cppminus $cppflags 2>/dev/null |
18929 $grep '^[ ]*#.*include' |
a938a3bb 18930 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
18931fi
18932: Check this list of files to be sure we have parsed the cpp output ok.
18933: This will also avoid potentially non-existent files, such
18934: as ../foo/bar.h
18935xxxfiles=''
18936for xx in $xxx /dev/null ; do
18937 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18938done
18939: If we have found no files, at least try signal.h
18940case "$xxxfiles" in
18941'') xxxfiles=`./findhdr signal.h` ;;
18942esac
18943xxx=`awk '
18944$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18945 print substr($2, 4, 20)
18946}
18947$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18948 print substr($3, 4, 20)
18949}' $xxxfiles`
18950: Append some common names just in case the awk scan failed.
18951xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18952xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18953xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18954xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18955xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18956
18957: generate a few handy files for later
55954f19 18958$cat > signal.c <<EOCP
b4eb6b3d
JH
18959#include <sys/types.h>
18960#include <signal.h>
55954f19
JH
18961#$i_stdlib I_STDLIB
18962#ifdef I_STDLIB
18963#include <stdlib.h>
18964#endif
b4eb6b3d
JH
18965#include <stdio.h>
18966int main() {
18967
18968/* Strange style to avoid deeply-nested #if/#else/#endif */
18969#ifndef NSIG
18970# ifdef _NSIG
18971# define NSIG (_NSIG)
18972# endif
18973#endif
18974
18975#ifndef NSIG
18976# ifdef SIGMAX
18977# define NSIG (SIGMAX+1)
18978# endif
18979#endif
18980
18981#ifndef NSIG
18982# ifdef SIG_MAX
18983# define NSIG (SIG_MAX+1)
18984# endif
18985#endif
18986
18987#ifndef NSIG
18988# ifdef MAXSIG
18989# define NSIG (MAXSIG+1)
18990# endif
18991#endif
18992
18993#ifndef NSIG
18994# ifdef MAX_SIG
18995# define NSIG (MAX_SIG+1)
18996# endif
18997#endif
18998
18999#ifndef NSIG
19000# ifdef SIGARRAYSIZE
19001# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19002# endif
19003#endif
19004
19005#ifndef NSIG
19006# ifdef _sys_nsig
19007# define NSIG (_sys_nsig) /* Solaris 2.5 */
19008# endif
19009#endif
19010
19011/* Default to some arbitrary number that's big enough to get most
19012 of the common signals.
19013*/
19014#ifndef NSIG
19015# define NSIG 50
19016#endif
19017
19018printf("NSIG %d\n", NSIG);
19019
19020#ifndef JUST_NSIG
19021
19022EOCP
19023
19024echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19025{
19026 printf "#ifdef SIG"; printf $1; printf "\n"
65197d93 19027 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
b4eb6b3d
JH
19028 printf $1; printf ");\n"
19029 printf "#endif\n"
19030}
19031END {
19032 printf "#endif /* JUST_NSIG */\n";
19033 printf "exit(0);\n}\n";
19034}
19035' >>signal.c
19036$cat >signal.awk <<'EOP'
19037BEGIN { ndups = 0 }
65197d93 19038$1 ~ /^NSIG$/ { nsig = $2 }
1ebe1ffb 19039($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
65197d93
JH
19040 if ($2 > maxsig) { maxsig = $2 }
19041 if (sig_name[$2]) {
19042 dup_name[ndups] = $1
19043 dup_num[ndups] = $2
b4eb6b3d
JH
19044 ndups++
19045 }
1ebe1ffb 19046 else {
65197d93
JH
19047 sig_name[$2] = $1
19048 sig_num[$2] = $2
b4eb6b3d
JH
19049 }
19050}
19051END {
19052 if (nsig == 0) {
19053 nsig = maxsig + 1
19054 }
19055 printf("NSIG %d\n", nsig);
19056 for (n = 1; n < nsig; n++) {
19057 if (sig_name[n]) {
19058 printf("%s %d\n", sig_name[n], sig_num[n])
19059 }
19060 else {
19061 printf("NUM%d %d\n", n, n)
19062 }
19063 }
19064 for (n = 0; n < ndups; n++) {
19065 printf("%s %d\n", dup_name[n], dup_num[n])
19066 }
19067}
19068EOP
19069$cat >signal_cmd <<EOS
19070$startsh
19071if $test -s signal.lst; then
19072 echo "Using your existing signal.lst file"
19073 exit 0
19074fi
19075xxx="$xxx"
19076EOS
19077$cat >>signal_cmd <<'EOS'
19078
19079set signal
19080if eval $compile_ok; then
1eb9ad5b 19081 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19082else
19083 echo "(I can't seem be able to compile the whole test program)" >&4
19084 echo "(I'll try it in little pieces.)" >&4
19085 set signal -DJUST_NSIG
19086 if eval $compile_ok; then
5440bc8e 19087 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
19088 $cat signal.nsg
19089 else
19090 echo "I can't seem to figure out how many signals you have." >&4
19091 echo "Guessing 50." >&4
19092 echo 'NSIG 50' > signal.nsg
19093 fi
19094 : Now look at all the signal names, one at a time.
19095 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19096 $cat > signal.c <<EOCP
19097#include <sys/types.h>
19098#include <signal.h>
19099#include <stdio.h>
19100int main() {
19101printf("$xx %d\n", SIG${xx});
19102return 0;
19103}
19104EOCP
19105 set signal
19106 if eval $compile; then
19107 echo "SIG${xx} found."
5440bc8e 19108 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
19109 else
19110 echo "SIG${xx} NOT found."
19111 fi
19112 done
19113 if $test -s signal.ls1; then
19114 $cat signal.nsg signal.ls1 |
65197d93 19115 $sort -n | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19116 fi
19117
19118fi
19119if $test -s signal.lst; then
19120 :
19121else
19122 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19123 echo 'kill -l' >signal
19124 set X `csh -f <signal`
19125 $rm -f signal
19126 shift
19127 case $# in
19128 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19129 esac
19130 echo $@ | $tr ' ' $trnl | \
19131 $awk '{ printf "%s %d\n", $1, ++s; }
19132 END { printf "NSIG %d\n", ++s }' >signal.lst
19133fi
19134$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19135EOS
19136chmod a+x signal_cmd
19137$eunicefix signal_cmd
19138
19139: generate list of signal names
19140echo " "
19141case "$sig_name_init" in
19142'') doinit=yes ;;
19143*) case "$sig_num_init" in
19144 ''|*,*) doinit=yes ;;
19145 esac ;;
19146esac
19147case "$doinit" in
19148yes)
19149 echo "Generating a list of signal names and numbers..." >&4
19150 . ./signal_cmd
19151 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19152 sig_name=`$awk 'BEGIN { printf "ZERO " }
19153 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19154 sig_num=`$awk 'BEGIN { printf "0 " }
19155 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19156 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19157 !/^NSIG/ { printf "\"%s\", ", $1 }
19158 END { printf "0\n" }' signal.lst`
19159 sig_num_init=`$awk 'BEGIN { printf "0, " }
19160 !/^NSIG/ { printf "%d, ", $2}
19161 END { printf "0\n"}' signal.lst`
19162 ;;
19163esac
19164echo "The following $sig_count signals are available:"
19165echo " "
19166echo $sig_name | $awk \
19167'BEGIN { linelen = 0 }
19168{
19169 for (i = 1; i <= NF; i++) {
19170 name = "SIG" $i " "
19171 linelen = linelen + length(name)
19172 if (linelen > 70) {
19173 printf "\n"
19174 linelen = length(name)
19175 }
19176 printf "%s", name
19177 }
19178 printf "\n"
19179}'
76d3c696 19180sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
19181$rm -f signal signal.c signal.awk signal.lst signal_cmd
19182
19183echo " "
19184case "$sizetype" in
19185*_t) zzz="$sizetype" ;;
19186*) zzz="filesize" ;;
19187esac
19188echo "Checking the size of $zzz..." >&4
19189cat > try.c <<EOCP
19190#include <sys/types.h>
19191#include <stdio.h>
d1daaddf
JH
19192#$i_stdlib I_STDLIB
19193#ifdef I_STDLIB
19194#include <stdlib.h>
19195#endif
b4eb6b3d
JH
19196int main() {
19197 printf("%d\n", (int)sizeof($sizetype));
19198 exit(0);
19199}
19200EOCP
19201set try
19202if eval $compile_ok; then
5440bc8e 19203 yyy=`$run ./try`
b4eb6b3d
JH
19204 case "$yyy" in
19205 '') sizesize=4
19206 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19207 ;;
19208 *) sizesize=$yyy
19209 echo "Your $zzz size is $sizesize bytes."
19210 ;;
19211 esac
19212else
19213 sizesize=4
19214 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19215fi
19216
19217
19218: check for socklen_t
19219echo " "
19220echo "Checking to see if you have socklen_t..." >&4
19221$cat >try.c <<EOCP
19222#include <sys/types.h>
19223#$d_socket HAS_SOCKET
19224#ifdef HAS_SOCKET
19225#include <sys/socket.h>
19226#endif
19227int main() { socklen_t x = 16; }
19228EOCP
19229set try
19230if eval $compile; then
19231 val="$define"
19232 echo "You have socklen_t."
19233else
19234 val="$undef"
19235 echo "You do not have socklen_t."
19236 case "$sizetype" in
19237 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19238 esac
19239fi
19240$rm -f try try.*
19241set d_socklen_t
19242eval $setvar
19243
a7710f8d
JH
19244: see if this is a socks.h system
19245set socks.h i_socks
19246eval $inhdr
19247
b4eb6b3d
JH
19248: check for type of the size argument to socket calls
19249case "$d_socket" in
19250"$define")
19251 $cat <<EOM
19252
19253Checking to see what type is the last argument of accept().
19254EOM
b4eb6b3d
JH
19255 yyy=''
19256 case "$d_socklen_t" in
19257 "$define") yyy="$yyy socklen_t"
19258 esac
19259 yyy="$yyy $sizetype int long unsigned"
19260 for xxx in $yyy; do
19261 case "$socksizetype" in
19262 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
19263 case "$usesocks" in
19264 "$define")
19265 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19266 echo "Your system accepts '$xxx *' for the last argument of accept()."
19267 socksizetype="$xxx"
19268 fi
19269 ;;
19270 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19271 echo "Your system accepts '$xxx *' for the last argument of accept()."
19272 socksizetype="$xxx"
19273 fi
19274 ;;
19275 esac
b4eb6b3d
JH
19276 ;;
19277 esac
19278 done
19279: In case none of those worked, prompt the user.
19280 case "$socksizetype" in
19281 '') rp='What is the type for socket address structure sizes?'
19282 dflt='int'
19283 . ./myread
19284 socksizetype=$ans
19285 ;;
19286 esac
19287 ;;
19288*) : no sockets, so pick relatively harmless default
19289 socksizetype='int'
19290 ;;
19291esac
19292
19293: see what type is used for signed size_t
19294set ssize_t ssizetype int stdio.h sys/types.h
19295eval $typedef
19296dflt="$ssizetype"
5440bc8e 19297$cat > try.c <<EOM
b4eb6b3d 19298#include <stdio.h>
d1daaddf
JH
19299#$i_stdlib I_STDLIB
19300#ifdef I_STDLIB
19301#include <stdlib.h>
19302#endif
b4eb6b3d
JH
19303#include <sys/types.h>
19304#define Size_t $sizetype
19305#define SSize_t $dflt
19306int main()
19307{
19308 if (sizeof(Size_t) == sizeof(SSize_t))
19309 printf("$dflt\n");
19310 else if (sizeof(Size_t) == sizeof(int))
19311 printf("int\n");
19312 else
19313 printf("long\n");
19314 exit(0);
19315}
19316EOM
19317echo " "
5440bc8e
JH
19318set try
19319if eval $compile_ok && $run ./try > /dev/null; then
19320 ssizetype=`$run ./try`
b4eb6b3d
JH
19321 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19322else
19323 $cat >&4 <<EOM
19324Help! I can't compile and run the ssize_t test program: please enlighten me!
19325(This is probably a misconfiguration in your system or libraries, and
19326you really ought to fix it. Still, I'll try anyway.)
19327
19328I need a type that is the same size as $sizetype, but is guaranteed to
19329be signed. Common values are ssize_t, int and long.
19330
19331EOM
19332 rp="What signed type is the same size as $sizetype?"
19333 . ./myread
19334 ssizetype="$ans"
19335fi
5440bc8e 19336$rm -f try try.*
b4eb6b3d
JH
19337
19338: see what type of char stdio uses.
19339echo " "
aa517f50
JH
19340echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19341if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
19342 echo "Your stdio uses unsigned chars." >&4
19343 stdchar="unsigned char"
19344else
aa517f50
JH
19345 echo "Your stdio uses signed chars." >&4
19346 stdchar="char"
b4eb6b3d 19347fi
aa517f50
JH
19348$rm -f stdioh
19349
19350
b4eb6b3d 19351
b4eb6b3d
JH
19352: see what type uids are declared as in the kernel
19353echo " "
19354echo "Looking for the type for user ids returned by getuid()."
19355set uid_t uidtype xxx stdio.h sys/types.h
19356eval $typedef
19357case "$uidtype" in
19358xxx)
19359 xxx=`./findhdr sys/user.h`
19360 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19361 case $1 in
19362 unsigned) dflt="$1 $2" ;;
19363 *) dflt="$1" ;;
19364 esac
19365 ;;
19366*) dflt="$uidtype";;
19367esac
19368case "$uidtype" in
19369uid_t) echo "uid_t found." ;;
19370*) rp="What is the type for user ids returned by getuid()?"
19371 . ./myread
19372 uidtype="$ans"
19373 ;;
19374esac
19375
19376echo " "
19377case "$uidtype" in
19378*_t) zzz="$uidtype" ;;
19379*) zzz="uid" ;;
19380esac
19381echo "Checking the size of $zzz..." >&4
19382cat > try.c <<EOCP
19383#include <sys/types.h>
19384#include <stdio.h>
d1daaddf
JH
19385#$i_stdlib I_STDLIB
19386#ifdef I_STDLIB
19387#include <stdlib.h>
19388#endif
b4eb6b3d
JH
19389int main() {
19390 printf("%d\n", (int)sizeof($uidtype));
19391 exit(0);
19392}
19393EOCP
19394set try
19395if eval $compile_ok; then
5440bc8e 19396 yyy=`$run ./try`
b4eb6b3d
JH
19397 case "$yyy" in
19398 '') uidsize=4
19399 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19400 ;;
19401 *) uidsize=$yyy
19402 echo "Your $zzz is $uidsize bytes long."
19403 ;;
19404 esac
19405else
19406 uidsize=4
19407 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19408fi
19409
19410echo " "
19411case "$uidtype" in
19412*_t) zzz="$uidtype" ;;
19413*) zzz="uid" ;;
19414esac
19415echo "Checking the sign of $zzz..." >&4
19416cat > try.c <<EOCP
19417#include <sys/types.h>
19418#include <stdio.h>
19419int main() {
19420 $uidtype foo = -1;
19421 if (foo < 0)
19422 printf("-1\n");
19423 else
19424 printf("1\n");
19425}
19426EOCP
19427set try
19428if eval $compile; then
5440bc8e 19429 yyy=`$run ./try`
b4eb6b3d
JH
19430 case "$yyy" in
19431 '') uidsign=1
19432 echo "(I can't execute the test program--guessing unsigned.)" >&4
19433 ;;
19434 *) uidsign=$yyy
19435 case "$uidsign" in
19436 1) echo "Your $zzz is unsigned." ;;
19437 -1) echo "Your $zzz is signed." ;;
19438 esac
19439 ;;
19440 esac
19441else
19442 uidsign=1
19443 echo "(I can't compile the test program--guessing unsigned.)" >&4
19444fi
19445
19446
19447
19448echo " "
19449$echo "Checking the format string to be used for uids..." >&4
19450
19451case "$uidsign" in
19452-1) if $test X"$uidsize" = X"$ivsize"; then
19453 uidformat="$ivdformat"
19454 else
19455 if $test X"$uidsize" = X"$longsize"; then
19456 uidformat='"ld"'
19457 else
19458 if $test X"$uidsize" = X"$intsize"; then
19459 uidformat='"d"'
19460 else
19461 if $test X"$uidsize" = X"$shortsize"; then
19462 uidformat='"hd"'
19463 fi
19464 fi
19465 fi
19466 fi
19467 ;;
19468*) if $test X"$uidsize" = X"$uvsize"; then
19469 uidformat="$uvuformat"
19470 else
19471 if $test X"$uidsize" = X"$longsize"; then
19472 uidformat='"lu"'
19473 else
19474 if $test X"$uidsize" = X"$intsize"; then
19475 uidformat='"u"'
19476 else
19477 if $test X"$uidsize" = X"$shortsize"; then
19478 uidformat='"hu"'
19479 fi
19480 fi
19481 fi
19482 fi
19483 ;;
19484esac
19485
3659ebf1
JH
19486: determine compiler compiler
19487case "$yacc" in
19488'')
19489 dflt=yacc;;
19490*)
19491 dflt="$yacc";;
19492esac
19493echo " "
19494comp='yacc'
3c728e00 19495if $test -f "$byacc$_exe"; then
3659ebf1
JH
19496 dflt="$byacc"
19497 comp="byacc or $comp"
19498fi
3c728e00 19499if $test -f "$bison$_exe"; then
3659ebf1
JH
19500 comp="$comp or bison -y"
19501fi
19502rp="Which compiler compiler ($comp) shall I use?"
19503. ./myread
19504yacc="$ans"
19505case "$yacc" in
19506*bis*)
19507 case "$yacc" in
19508 *-y*) ;;
19509 *)
19510 yacc="$yacc -y"
19511 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19512 ;;
19513 esac
19514 ;;
19515esac
19516
758a5d79
JH
19517: see if this is a fp.h system
19518set fp.h i_fp
19519eval $inhdr
19520
19521: see if this is a fp_class.h system
19522set fp_class.h i_fp_class
19523eval $inhdr
19524
b4eb6b3d 19525: see if this is a ieeefp.h system
b5b9f165
JH
19526case "$i_ieeefp" in
19527'' ) set ieeefp.h i_ieeefp
19528 eval $inhdr
19529 ;;
19530esac
b4eb6b3d
JH
19531
19532: see if this is a libutil.h system
19533set libutil.h i_libutil
19534eval $inhdr
19535
b4eb6b3d
JH
19536: see if mach cthreads are available
19537if test "X$usethreads" = "X$define"; then
19538 set mach/cthreads.h i_machcthr
19539 eval $inhdr
19540else
19541 i_machcthr="$undef"
19542fi
19543
19544
19545
19546: see if this is a math.h system
19547set math.h i_math
19548eval $inhdr
19549
19550: see if this is a mntent.h system
19551set mntent.h i_mntent
19552eval $inhdr
19553
19554: see if ndbm.h is available
19555set ndbm.h t_ndbm
19556eval $inhdr
1c6861ad
JS
19557
19558case "$t_ndbm" in
19559$undef)
19560 # Some Linux distributions such as RedHat 7.1 put the
19561 # ndbm.h header in /usr/include/gdbm/ndbm.h.
19562 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 19563 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
19564 ccflags="$ccflags -I/usr/include/gdbm"
19565 cppflags="$cppflags -I/usr/include/gdbm"
19566 t_ndbm=$define
19567 fi
19568 ;;
19569esac
19570
b4eb6b3d
JH
19571case "$t_ndbm" in
19572$define)
19573 : see if dbm_open exists
19574 set dbm_open d_dbm_open
19575 eval $inlibc
19576 case "$d_dbm_open" in
19577 $undef)
19578 t_ndbm="$undef"
19579 echo "We won't be including <ndbm.h>"
19580 ;;
19581 esac
19582 ;;
19583esac
19584val="$t_ndbm"
19585set i_ndbm
19586eval $setvar
19587
19588: see if net/errno.h is available
19589val=''
19590set net/errno.h val
19591eval $inhdr
19592
19593: Unfortunately, it causes problems on some systems. Arrgh.
19594case "$val" in
19595$define)
19596 cat > try.c <<'EOM'
19597#include <stdio.h>
19598#include <errno.h>
19599#include <net/errno.h>
19600int func()
19601{
19602 return ENOTSOCK;
19603}
19604EOM
19605 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19606 echo "We'll be including <net/errno.h>." >&4
19607 else
19608 echo "We won't be including <net/errno.h>." >&4
19609 val="$undef"
19610 fi
19611 $rm -f try.* try
19612 ;;
19613esac
19614set i_neterrno
19615eval $setvar
19616
19617: see if netinet/tcp.h is available
19618set netinet/tcp.h i_netinettcp
19619eval $inhdr
19620
19621: see if this is a poll.h system
19622set poll.h i_poll
19623eval $inhdr
19624
19625: see if this is a prot.h system
19626set prot.h i_prot
19627eval $inhdr
19628
19629echo " "
19630$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19631$cat <<'EOSH' > Cppsym.know
19632a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19633AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
19634alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19635ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19636BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
19637BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19638bull c cadmus clipper CMU COFF COMPILER_VERSION
19639concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19640CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
19641Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19642FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19643GLIBC GLIBC_MINOR
19644GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
19645H3050R H3050RX hbullx20 hcx host_mips
19646hp200 hp300 hp700 HP700 hp800 hp9000
19647hp9000s200 hp9000s300 hp9000s400 hp9000s500
19648hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19649i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 19650IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
19651INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19652LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19653LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19654Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19655LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19656M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19657M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19658M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19659MATH_HAS_NO_SIDE_EFFECTS
19660mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19661mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19662mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19663MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19664mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19665NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 19666news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
19667ns32016 ns32332 ns32k nsc32000
19668OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19669pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19670pc532 pdp11 PGC PIC plexus PORTAR posix
19671POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19672POSIX_C_SOURCE POSIX_SOURCE POWER
19673PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 19674riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
19675SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19676sony sony_news sonyrisc sparc sparclite spectrum
19677stardent stdc STDC_EXT stratos sun sun3 sun386
19678Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19679SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19680SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19681sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 19682TM3200 TM5400 TM5600
b4eb6b3d
JH
19683tower tower32 tower32_200 tower32_600 tower32_700
19684tower32_800 tower32_850 tss
19685u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19686ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
19687unix UNIX95 UNIX99 unixpc unos
19688USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19689USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19690USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19691USGr4 USGr4_2
b4eb6b3d
JH
19692Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19693XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19694XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19695z8000
19696EOSH
19697# Maybe put other stuff here too.
19698cat <<EOSH >>Cppsym.know
19699$osname
19700EOSH
19701./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19702./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19703$cat Cppsym.know > Cppsym.c
381aa1ff 19704$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
19705$rm -f Cppsym.a Cppsym.b Cppsym.c
19706cat <<EOSH > Cppsym
19707$startsh
19708if $test \$# -gt 0; then
19709 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19710 if $test -s Cppsym.got; then
19711 $rm -f Cppsym.got
19712 exit 0
19713 fi
19714 $rm -f Cppsym.got
19715 exit 1
19716else
19717 $tr " " "$trnl" | ./Cppsym.try
19718 exit 0
19719fi
19720EOSH
19721chmod +x Cppsym
19722$eunicefix Cppsym
19723cat <<EOSH > Cppsym.try
19724$startsh
19725cat <<'EOCP' > try.c
19726#include <stdio.h>
19727int main() {
19728EOCP
19729$awk \\
19730EOSH
19731cat <<'EOSH' >> Cppsym.try
19732'length($1) > 0 {
2ef53570
JH
19733 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
19734 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
19735 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
19736 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 19737}' >> try.c
2ef53570 19738echo 'return 0;}' >> try.c
b4eb6b3d
JH
19739EOSH
19740cat <<EOSH >> Cppsym.try
19741ccflags="$ccflags"
19742case "$osname-$gccversion" in
19743irix-) ccflags="\$ccflags -woff 1178" ;;
19744os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19745esac
5440bc8e 19746$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
19747EOSH
19748chmod +x Cppsym.try
19749$eunicefix Cppsym.try
19750./Cppsym < Cppsym.know > Cppsym.true
19751: now check the C compiler for additional symbols
19752postprocess_cc_v=''
19753case "$osname" in
19754aix) postprocess_cc_v="|$tr , ' '" ;;
19755esac
19756$cat >ccsym <<EOS
19757$startsh
19758$cat >tmp.c <<EOF
19759extern int foo;
19760EOF
19761for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19762do
19763 case "\$i" in
19764 -D*) echo "\$i" | $sed 's/^-D//';;
b2a76591 19765 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
b4eb6b3d
JH
19766 esac
19767done
19768$rm -f try.c
19769EOS
19770postprocess_cc_v=''
19771chmod +x ccsym
19772$eunicefix ccsym
19773./ccsym > ccsym1.raw
19774if $test -s ccsym1.raw; then
19775 $sort ccsym1.raw | $uniq >ccsym.raw
19776else
19777 mv ccsym1.raw ccsym.raw
19778fi
19779
19780$awk '/\=/ { print $0; next }
19781 { print $0"=1" }' ccsym.raw >ccsym.list
19782$awk '/\=/ { print $0; next }
19783 { print $0"=1" }' Cppsym.true >ccsym.true
19784$comm -13 ccsym.true ccsym.list >ccsym.own
19785$comm -12 ccsym.true ccsym.list >ccsym.com
19786$comm -23 ccsym.true ccsym.list >ccsym.cpp
19787also=''
19788if $test -z ccsym.raw; then
19789 echo "Your C compiler doesn't seem to define any symbols!" >&4
19790 echo " "
19791 echo "However, your C preprocessor defines the following symbols:"
19792 $cat Cppsym.true
19793 ccsymbols=''
19794 cppsymbols=`$cat Cppsym.true`
19795 cppsymbols=`echo $cppsymbols`
19796 cppccsymbols="$cppsymbols"
19797else
19798 if $test -s ccsym.com; then
19799 echo "Your C compiler and pre-processor define these symbols:"
19800 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19801 also='also '
19802 symbols='ones'
19803 cppccsymbols=`$cat ccsym.com`
19804 cppccsymbols=`echo $cppccsymbols`
19805 $test "$silent" || sleep 1
19806 fi
19807 if $test -s ccsym.cpp; then
19808 $test "$also" && echo " "
19809 echo "Your C pre-processor ${also}defines the following symbols:"
19810 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19811 also='further '
19812 cppsymbols=`$cat ccsym.cpp`
19813 cppsymbols=`echo $cppsymbols`
19814 $test "$silent" || sleep 1
19815 fi
19816 if $test -s ccsym.own; then
19817 $test "$also" && echo " "
19818 echo "Your C compiler ${also}defines the following cpp symbols:"
19819 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19820 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19821 ccsymbols=`$cat ccsym.own`
19822 ccsymbols=`echo $ccsymbols`
19823 $test "$silent" || sleep 1
19824 fi
19825fi
b4eb6b3d
JH
19826
19827: see if this is a termio system
19828val="$undef"
19829val2="$undef"
19830val3="$undef"
19831if $test `./findhdr termios.h`; then
19832 set tcsetattr i_termios
19833 eval $inlibc
19834 val3="$i_termios"
19835fi
19836echo " "
19837case "$val3" in
19838"$define") echo "You have POSIX termios.h... good!" >&4;;
19839*) if ./Cppsym pyr; then
19840 case "`/bin/universe`" in
19841 ucb) if $test `./findhdr sgtty.h`; then
19842 val2="$define"
19843 echo "<sgtty.h> found." >&4
19844 else
19845 echo "System is pyramid with BSD universe."
19846 echo "<sgtty.h> not found--you could have problems." >&4
19847 fi;;
19848 *) if $test `./findhdr termio.h`; then
19849 val="$define"
19850 echo "<termio.h> found." >&4
19851 else
19852 echo "System is pyramid with USG universe."
19853 echo "<termio.h> not found--you could have problems." >&4
19854 fi;;
19855 esac
19856 elif ./usg; then
19857 if $test `./findhdr termio.h`; then
19858 echo "<termio.h> found." >&4
19859 val="$define"
19860 elif $test `./findhdr sgtty.h`; then
19861 echo "<sgtty.h> found." >&4
19862 val2="$define"
19863 else
19864echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19865 fi
19866 else
19867 if $test `./findhdr sgtty.h`; then
19868 echo "<sgtty.h> found." >&4
19869 val2="$define"
19870 elif $test `./findhdr termio.h`; then
19871 echo "<termio.h> found." >&4
19872 val="$define"
19873 else
19874echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19875 fi
19876 fi;;
19877esac
19878set i_termio; eval $setvar
19879val=$val2; set i_sgtty; eval $setvar
19880val=$val3; set i_termios; eval $setvar
19881
b4eb6b3d
JH
19882: see if stddef is available
19883set stddef.h i_stddef
19884eval $inhdr
923fc586 19885
b4eb6b3d
JH
19886: see if this is a sunmath.h system
19887set sunmath.h i_sunmath
19888eval $inhdr
5f80c64f 19889
b4eb6b3d
JH
19890: see if sys/access.h is available
19891set sys/access.h i_sysaccess
19892eval $inhdr
19893
19894: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19895set sys/filio.h i_sysfilio
19896eval $inhdr
19897echo " "
19898if $test `./findhdr sys/ioctl.h`; then
19899 val="$define"
19900 echo '<sys/ioctl.h> found.' >&4
19901else
19902 val="$undef"
19903 if $test $i_sysfilio = "$define"; then
19904 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 19905 else
b4eb6b3d
JH
19906 $test $i_sgtty = "$define" && xxx="sgtty.h"
19907 $test $i_termio = "$define" && xxx="termio.h"
19908 $test $i_termios = "$define" && xxx="termios.h"
19909echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19910 fi
19911fi
19912set i_sysioctl
19913eval $setvar
19914
49a78c82
JH
19915: see if socket ioctl defs are in sys/sockio.h
19916echo " "
19917xxx=`./findhdr sys/sockio.h`
19918if $test "$xxx"; then
19919 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19920 val="$define"
19921 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19922 else
19923 val="$undef"
19924 echo "No socket ioctls found in <sys/sockio.h>." >&4
19925 fi
19926else
19927 val="$undef"
19928 $cat <<EOM
19929<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19930EOM
19931fi
19932set i_syssockio
19933eval $setvar
19934
b4eb6b3d
JH
19935
19936: see if this is a syslog.h system
19937set syslog.h i_syslog
19938eval $inhdr
19939
19940
19941: see if this is a sys/mode.h system
19942set sys/mode.h i_sysmode
19943eval $inhdr
19944
19945: see if sys/resource.h has to be included
19946set sys/resource.h i_sysresrc
19947eval $inhdr
19948
19949: see if sys/security.h is available
19950set sys/security.h i_syssecrt
19951eval $inhdr
19952
19953: see if this is a sys/statvfs.h system
19954set sys/statvfs.h i_sysstatvfs
19955eval $inhdr
19956
b4eb6b3d
JH
19957: see if this is a sys/un.h system
19958set sys/un.h i_sysun
19959eval $inhdr
19960
19961
19962: see if this is a sys/utsname.h system
19963set sys/utsname.h i_sysutsname
19964eval $inhdr
19965
19966: see if this is a syswait system
19967set sys/wait.h i_syswait
19968eval $inhdr
19969
19970: see if this is a ustat.h system
19971set ustat.h i_ustat
19972eval $inhdr
19973
19974: see if this is an utime system
19975set utime.h i_utime
19976eval $inhdr
19977
19978: see if this is a values.h system
19979set values.h i_values
19980eval $inhdr
19981
19982: see if this is a vfork system
19983case "$d_vfork" in
19984"$define")
19985 set vfork.h i_vfork
19986 eval $inhdr
19987 ;;
19988*)
19989 i_vfork="$undef"
19990 ;;
19991esac
19992
19993: see if gdbm.h is available
19994set gdbm.h t_gdbm
19995eval $inhdr
19996case "$t_gdbm" in
19997$define)
19998 : see if gdbm_open exists
19999 set gdbm_open d_gdbm_open
20000 eval $inlibc
20001 case "$d_gdbm_open" in
20002 $undef)
20003 t_gdbm="$undef"
20004 echo "We won't be including <gdbm.h>"
5f80c64f 20005 ;;
b4eb6b3d
JH
20006 esac
20007 ;;
20008esac
20009val="$t_gdbm"
20010set i_gdbm
20011eval $setvar
20012
20013echo " "
20014echo "Looking for extensions..." >&4
20015: If we are using the old config.sh, known_extensions may contain
20016: old or inaccurate or duplicate values.
20017known_extensions=''
20018nonxs_extensions=''
20019: We do not use find because it might not be available.
20020: We do not just use MANIFEST because the user may have dropped
20021: some additional extensions into the source tree and expect them
20022: to be built.
20023
20024: Function to recursively find available extensions, ignoring DynaLoader
20025: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20026find_extensions='
20027 for xxx in *; do
20028 case "$xxx" in
20029 DynaLoader|dynaload) ;;
20030 *)
20031 if $test -f $xxx/$xxx.xs; then
20032 known_extensions="$known_extensions $1$xxx";
20033 elif $test -f $xxx/Makefile.PL; then
20034 nonxs_extensions="$nonxs_extensions $1$xxx";
20035 else
20036 if $test -d $xxx -a $# -lt 10; then
20037 set $1$xxx/ $*;
6904989c 20038 cd "$xxx";
b4eb6b3d
JH
20039 eval $find_extensions;
20040 cd ..;
20041 shift;
20042 fi;
20043 fi
20044 ;;
20045 esac;
20046 done'
20047tdir=`pwd`
6904989c 20048cd "$rsrc/ext"
b4eb6b3d
JH
20049set X
20050shift
20051eval $find_extensions
4e1a6d26
AD
20052# Special case: Add in threads/shared since it is not picked up by the
20053# recursive find above (and adding in general recursive finding breaks
20054# SDBM_File/sdbm). A.D. 10/25/2001.
998b396c 20055known_extensions="$known_extensions threads/shared"
b4eb6b3d
JH
20056set X $nonxs_extensions
20057shift
20058nonxs_extensions="$*"
20059set X $known_extensions
20060shift
20061known_extensions="$*"
6904989c 20062cd "$tdir"
b4eb6b3d
JH
20063
20064: Now see which are supported on this system.
20065avail_ext=''
20066for xxx in $known_extensions ; do
20067 case "$xxx" in
20068 DB_File|db_file)
20069 case "$i_db" in
20070 $define) avail_ext="$avail_ext $xxx" ;;
20071 esac
20072 ;;
20073 GDBM_File|gdbm_fil)
20074 case "$i_gdbm" in
20075 $define) avail_ext="$avail_ext $xxx" ;;
20076 esac
20077 ;;
1d59c593 20078 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
20079 case "$i_langinfo$d_nl_langinfo" in
20080 $define$define) avail_ext="$avail_ext $xxx" ;;
20081 esac
20082 ;;
b4eb6b3d
JH
20083 NDBM_File|ndbm_fil)
20084 case "$i_ndbm" in
20085 $define)
20086 case "$osname-$use64bitint" in
0be9fa5d 20087 hpux-define)
b4eb6b3d
JH
20088 case "$libs" in
20089 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20090 esac
20091 ;;
20092 *) avail_ext="$avail_ext $xxx" ;;
20093 esac
20094 ;;
20095 esac
20096 ;;
20097 ODBM_File|odbm_fil)
20098 case "${i_dbm}${i_rpcsvcdbm}" in
20099 *"${define}"*)
20100 case "$osname-$use64bitint" in
0be9fa5d 20101 hpux-define)
b4eb6b3d
JH
20102 case "$libs" in
20103 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20104 esac
20105 ;;
20106 *) avail_ext="$avail_ext $xxx" ;;
20107 esac
20108 ;;
20109 esac
20110 ;;
20111 POSIX|posix)
20112 case "$useposix" in
20113 true|define|y) avail_ext="$avail_ext $xxx" ;;
20114 esac
20115 ;;
20116 Opcode|opcode)
20117 case "$useopcode" in
20118 true|define|y) avail_ext="$avail_ext $xxx" ;;
20119 esac
20120 ;;
20121 Socket|socket)
20122 case "$d_socket" in
4a9f028c
JH
20123 true|$define|y)
20124 case "$osname" in
20125 beos) ;; # not unless BONE
20126 *) avail_ext="$avail_ext $xxx" ;;
20127 esac
20128 ;;
b4eb6b3d
JH
20129 esac
20130 ;;
20131 Sys/Syslog|sys/syslog)
20132 : XXX syslog requires socket
20133 case "$d_socket" in
20134 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20135 esac
20136 ;;
20137 Thread|thread)
b00ec89b
AB
20138 case "$usethreads" in
20139 true|$define|y)
20140 case "$useithreads" in
20141 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20142 esac
b4eb6b3d
JH
20143 esac
20144 ;;
f9b6ed1c
AD
20145 XS/APItest|xs/apitest)
20146 # This is just for testing. Skip it unless we have dynamic loading.
20147
20148 case "$usedl" in
20149 $define) avail_ext="$avail_ext $xxx" ;;
20150 esac
20151 ;;
20152 XS/Typemap|xs/typemap)
20153 # This is just for testing. Skip it unless we have dynamic loading.
20154 case "$usedl" in
20155 $define) avail_ext="$avail_ext $xxx" ;;
20156 esac
20157 ;;
7deadc5f 20158 threads|threads/shared)
73e09c8f
JH
20159 # threads and threads::shared are special cases.
20160 # To stop people from asking "Perl 5.8.0 was supposed
20161 # to have this new fancy threads implementation but my
20162 # perl doesn't have it" and from people trying to
20163 # (re)install the threads module using CPAN.pm and
20164 # CPAN.pm then offering to reinstall Perl 5.8.0,
20165 # the threads.pm and threads/shared.pm will always be
20166 # there, croaking informatively ("you need to rebuild
20167 # all of Perl with threads, sorry") when threads haven't
20168 # been compiled in.
20169 # --jhi
20170 avail_ext="$avail_ext $xxx"
1dca008a 20171 ;;
b4eb6b3d
JH
20172 IPC/SysV|ipc/sysv)
20173 : XXX Do we need a useipcsysv variable here
20174 case "${d_msg}${d_sem}${d_shm}" in
20175 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20176 esac
20177 ;;
20178 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
20179 ;;
20180 esac
b4eb6b3d 20181done
5f80c64f 20182
b4eb6b3d
JH
20183set X $avail_ext
20184shift
20185avail_ext="$*"
5f80c64f 20186
ef0c5be8
JH
20187case "$onlyextensions" in
20188'') ;;
20189*) keepextensions=''
20190 echo "You have requested that only certains extensions be included..." >&4
20191 for i in $onlyextensions; do
20192 case " $avail_ext " in
20193 *" $i "*)
20194 echo "Keeping extension $i."
20195 keepextensions="$keepextensions $i"
20196 ;;
20197 *) echo "Ignoring extension $i." ;;
20198 esac
20199 done
20200 avail_ext="$keepextensions"
20201 ;;
20202esac
20203
20204case "$noextensions" in
20205'') ;;
20206*) keepextensions=''
20207 echo "You have requested that certain extensions be ignored..." >&4
20208 for i in $avail_ext; do
c3dadc13
AD
20209 case " $noextensions " in
20210 *" $i "*) echo "Ignoring extension $i." ;;
ef0c5be8
JH
20211 *) echo "Keeping extension $i.";
20212 keepextensions="$keepextensions $i"
20213 ;;
20214 esac
20215 done
20216 avail_ext="$keepextensions"
20217 ;;
20218esac
20219
b4eb6b3d
JH
20220: Now see which nonxs extensions are supported on this system.
20221: For now assume all are.
20222nonxs_ext=''
20223for xxx in $nonxs_extensions ; do
20224 case "$xxx" in
20225 *) nonxs_ext="$nonxs_ext $xxx"
20226 ;;
20227 esac
20228done
5f80c64f 20229
b4eb6b3d
JH
20230set X $nonxs_ext
20231shift
20232nonxs_ext="$*"
20233
20234case $usedl in
20235$define)
20236 $cat <<EOM
20237A number of extensions are supplied with $package. You may choose to
20238compile these extensions for dynamic loading (the default), compile
20239them into the $package executable (static loading), or not include
20240them at all. Answer "none" to include no extensions.
20241Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
20242
20243EOM
b4eb6b3d 20244 case "$dynamic_ext" in
736accd3
YST
20245 '')
20246 : Exclude those listed in static_ext
20247 dflt=''
20248 for xxx in $avail_ext; do
20249 case " $static_ext " in
20250 *" $xxx "*) ;;
20251 *) dflt="$dflt $xxx" ;;
20252 esac
20253 done
20254 set X $dflt
20255 shift
20256 dflt="$*"
20257 ;;
b4eb6b3d
JH
20258 *) dflt="$dynamic_ext"
20259 # Perhaps we are reusing an old out-of-date config.sh.
20260 case "$hint" in
20261 previous)
20262 if test X"$dynamic_ext" != X"$avail_ext"; then
20263 $cat <<EOM
20264NOTICE: Your previous config.sh list may be incorrect.
20265The extensions now available to you are
20266 ${avail_ext}
20267but the default list from your previous config.sh is
20268 ${dynamic_ext}
9c839522 20269
b4eb6b3d
JH
20270EOM
20271 fi
9c839522
PM
20272 ;;
20273 esac
b4eb6b3d
JH
20274 ;;
20275 esac
5f80c64f 20276 case "$dflt" in
b4eb6b3d
JH
20277 '') dflt=none;;
20278 esac
20279 rp="What extensions do you wish to load dynamically?"
20280 . ./myread
20281 case "$ans" in
20282 none) dynamic_ext=' ' ;;
20283 *) dynamic_ext="$ans" ;;
5f80c64f 20284 esac
5f80c64f 20285
b4eb6b3d
JH
20286 case "$static_ext" in
20287 '')
20288 : Exclude those already listed in dynamic linking
20289 dflt=''
20290 for xxx in $avail_ext; do
20291 case " $dynamic_ext " in
20292 *" $xxx "*) ;;
20293 *) dflt="$dflt $xxx" ;;
20294 esac
20295 done
20296 set X $dflt
20297 shift
20298 dflt="$*"
20299 ;;
20300 *) dflt="$static_ext"
20301 ;;
20302 esac
9c839522 20303
b4eb6b3d
JH
20304 case "$dflt" in
20305 '') dflt=none;;
20306 esac
20307 rp="What extensions do you wish to load statically?"
20308 . ./myread
20309 case "$ans" in
20310 none) static_ext=' ' ;;
20311 *) static_ext="$ans" ;;
20312 esac
20313 ;;
20314*)
20315 $cat <<EOM
20316A number of extensions are supplied with $package. Answer "none"
20317to include no extensions.
20318Note that DynaLoader is always built and need not be mentioned here.
9c839522 20319
b4eb6b3d
JH
20320EOM
20321 case "$static_ext" in
20322 '') dflt="$avail_ext" ;;
20323 *) dflt="$static_ext"
20324 # Perhaps we are reusing an old out-of-date config.sh.
20325 case "$hint" in
20326 previous)
20327 if test X"$static_ext" != X"$avail_ext"; then
20328 $cat <<EOM
20329NOTICE: Your previous config.sh list may be incorrect.
20330The extensions now available to you are
20331 ${avail_ext}
20332but the default list from your previous config.sh is
20333 ${static_ext}
5f80c64f
JH
20334
20335EOM
b4eb6b3d
JH
20336 fi
20337 ;;
20338 esac
20339 ;;
20340 esac
20341 : Exclude those that are not xs extensions
20342 case "$dflt" in
20343 '') dflt=none;;
20344 esac
20345 rp="What extensions do you wish to include?"
20346 . ./myread
20347 case "$ans" in
20348 none) static_ext=' ' ;;
20349 *) static_ext="$ans" ;;
20350 esac
20351 ;;
5f80c64f 20352esac
f1f6834f
AD
20353#
20354# Encode is a special case. If we are building Encode as a static
20355# extension, we need to explicitly list its subextensions as well.
20356# For other nested extensions, this is handled automatically by
20357# the appropriate Makefile.PL.
20358case " $static_ext " in
20359 *" Encode "*) # Add the subextensions of Encode
20360 cd "$rsrc/ext"
20361 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20362 static_ext="$static_ext Encode/$xxx"
20363 done
20364 cd "$tdir"
20365 ;;
20366esac
5f80c64f 20367
b4eb6b3d
JH
20368set X $dynamic_ext $static_ext $nonxs_ext
20369shift
20370extensions="$*"
20371
93a2cd18
AD
20372# Sanity check: We require an extension suitable for use with
20373# AnyDBM_File, as well as Fcntl and IO. (Failure to have these
20374# should show up as failures in the test suite, but it's helpful to
20375# catch them now.) The 'extensions' list is normally sorted
20376# alphabetically, so we need to accept either
20377# DB_File ... Fcntl ... IO ....
20378# or something like
20379# Fcntl ... NDBM_File ... IO ....
42fde7b2
JH
20380case " $extensions" in
20381*"_File "*" Fcntl "*" IO "*) ;; # DB_File
20382*" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20383*" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
7a8675bc
JH
20384*) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20385 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20386 ;;
20387esac
20388
9c839522
PM
20389: Remove libraries needed only for extensions
20390: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
20391: The exception is SunOS 4.x, which needs them.
20392case "${osname}X${osvers}" in
20393sunos*X4*)
20394 perllibs="$libs"
20395 ;;
20396*) case "$usedl" in
20397 $define|true|[yY]*)
20398 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20399 shift
20400 perllibs="$*"
20401 ;;
20402 *) perllibs="$libs"
20403 ;;
20404 esac
20405 ;;
9c839522 20406esac
5f80c64f
JH
20407
20408: Remove build directory name from cppstdin so it can be used from
20409: either the present location or the final installed location.
20410echo " "
20411: Get out of the UU directory to get correct path name.
20412cd ..
20413case "$cppstdin" in
20414`pwd`/cppstdin)
20415 echo "Stripping down cppstdin path name"
20416 cppstdin=cppstdin
20417 ;;
20418esac
20419cd UU
20420
20421: end of configuration questions
20422echo " "
20423echo "End of configuration questions."
20424echo " "
20425
20426: back to where it started
20427if test -d ../UU; then
20428 cd ..
20429fi
20430
48370efc
JH
20431: configuration may be patched via a 'config.arch' file
20432if $test -f config.arch; then
20433 echo "I see a config.arch file, loading it."
20434 . ./config.arch
20435fi
20436
5f80c64f
JH
20437: configuration may be patched via a 'config.over' file
20438if $test -f config.over; then
20439 echo " "
20440 dflt=y
20441 rp='I see a config.over file. Do you wish to load it?'
20442 . UU/myread
20443 case "$ans" in
20444 n*) echo "OK, I'll ignore it.";;
20445 *) . ./config.over
20446 echo "Configuration override changes have been loaded."
20447 ;;
20448 esac
20449fi
20450
20451: in case they want portability, strip down executable paths
20452case "$d_portable" in
20453"$define")
20454 echo " "
20455 echo "Stripping down executable paths..." >&4
20456 for file in $loclist $trylist; do
534ac15a
JH
20457 eval temp=\$$file
20458 eval $file=`basename $temp`
5f80c64f
JH
20459 done
20460 ;;
20461esac
20462
20463: create config.sh file
20464echo " "
20465echo "Creating config.sh..." >&4
20466$spitshell <<EOT >config.sh
20467$startsh
20468#
20469# This file was produced by running the Configure script. It holds all the
20470# definitions figured out by Configure. Should you modify one of these values,
20471# do not forget to propagate your changes by running "Configure -der". You may
20472# instead choose to run each of the .SH files by yourself, or "Configure -S".
20473#
20474
20475# Package name : $package
20476# Source directory : $src
20477# Configuration time: $cf_time
20478# Configured by : $cf_by
20479# Target system : $myuname
20480
20481Author='$Author'
20482Date='$Date'
20483Header='$Header'
20484Id='$Id'
20485Locker='$Locker'
20486Log='$Log'
20487Mcc='$Mcc'
20488RCSfile='$RCSfile'
20489Revision='$Revision'
20490Source='$Source'
20491State='$State'
20492_a='$_a'
20493_exe='$_exe'
20494_o='$_o'
b4eb6b3d 20495afs='$afs'
a6d26a0d 20496afsroot='$afsroot'
b4eb6b3d
JH
20497alignbytes='$alignbytes'
20498ansi2knr='$ansi2knr'
20499aphostname='$aphostname'
20500api_revision='$api_revision'
20501api_subversion='$api_subversion'
20502api_version='$api_version'
20503api_versionstring='$api_versionstring'
5f80c64f 20504ar='$ar'
b4eb6b3d
JH
20505archlib='$archlib'
20506archlibexp='$archlibexp'
20507archname64='$archname64'
20508archname='$archname'
5f80c64f 20509archobjs='$archobjs'
10bc17b6 20510asctime_r_proto='$asctime_r_proto'
5f80c64f 20511awk='$awk'
b4eb6b3d 20512baserev='$baserev'
5f80c64f 20513bash='$bash'
b4eb6b3d 20514bin='$bin'
b4eb6b3d 20515binexp='$binexp'
5f80c64f
JH
20516bison='$bison'
20517byacc='$byacc'
b4eb6b3d 20518byteorder='$byteorder'
5f80c64f 20519c='$c'
b4eb6b3d 20520castflags='$castflags'
5f80c64f
JH
20521cat='$cat'
20522cc='$cc'
20523cccdlflags='$cccdlflags'
20524ccdlflags='$ccdlflags'
20525ccflags='$ccflags'
b4eb6b3d 20526ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 20527ccname='$ccname'
b4eb6b3d 20528ccsymbols='$ccsymbols'
6b356c8e 20529ccversion='$ccversion'
5f80c64f 20530cf_by='$cf_by'
b4eb6b3d 20531cf_email='$cf_email'
5f80c64f 20532cf_time='$cf_time'
b4eb6b3d 20533charsize='$charsize'
5f80c64f
JH
20534chgrp='$chgrp'
20535chmod='$chmod'
20536chown='$chown'
b4eb6b3d 20537clocktype='$clocktype'
5f80c64f
JH
20538comm='$comm'
20539compress='$compress'
20540contains='$contains'
20541cp='$cp'
20542cpio='$cpio'
20543cpp='$cpp'
b4eb6b3d
JH
20544cpp_stuff='$cpp_stuff'
20545cppccsymbols='$cppccsymbols'
5f80c64f
JH
20546cppflags='$cppflags'
20547cpplast='$cpplast'
20548cppminus='$cppminus'
20549cpprun='$cpprun'
20550cppstdin='$cppstdin'
b4eb6b3d 20551cppsymbols='$cppsymbols'
10bc17b6 20552crypt_r_proto='$crypt_r_proto'
b4eb6b3d 20553cryptlib='$cryptlib'
5f80c64f 20554csh='$csh'
10bc17b6
JH
20555ctermid_r_proto='$ctermid_r_proto'
20556ctime_r_proto='$ctime_r_proto'
b4eb6b3d
JH
20557d_Gconvert='$d_Gconvert'
20558d_PRIEUldbl='$d_PRIEUldbl'
20559d_PRIFUldbl='$d_PRIFUldbl'
20560d_PRIGUldbl='$d_PRIGUldbl'
20561d_PRIXU64='$d_PRIXU64'
20562d_PRId64='$d_PRId64'
20563d_PRIeldbl='$d_PRIeldbl'
20564d_PRIfldbl='$d_PRIfldbl'
20565d_PRIgldbl='$d_PRIgldbl'
20566d_PRIi64='$d_PRIi64'
20567d_PRIo64='$d_PRIo64'
20568d_PRIu64='$d_PRIu64'
20569d_PRIx64='$d_PRIx64'
20570d_SCNfldbl='$d_SCNfldbl'
74cac757 20571d__fwalk='$d__fwalk'
b4eb6b3d
JH
20572d_access='$d_access'
20573d_accessx='$d_accessx'
55954f19 20574d_aintl='$d_aintl'
b4eb6b3d
JH
20575d_alarm='$d_alarm'
20576d_archlib='$d_archlib'
10bc17b6 20577d_asctime_r='$d_asctime_r'
b4eb6b3d
JH
20578d_atolf='$d_atolf'
20579d_atoll='$d_atoll'
20580d_attribut='$d_attribut'
20581d_bcmp='$d_bcmp'
20582d_bcopy='$d_bcopy'
5f80c64f 20583d_bsd='$d_bsd'
b4eb6b3d
JH
20584d_bsdgetpgrp='$d_bsdgetpgrp'
20585d_bsdsetpgrp='$d_bsdsetpgrp'
20586d_bzero='$d_bzero'
20587d_casti32='$d_casti32'
20588d_castneg='$d_castneg'
20589d_charvspr='$d_charvspr'
20590d_chown='$d_chown'
20591d_chroot='$d_chroot'
20592d_chsize='$d_chsize'
758a5d79 20593d_class='$d_class'
b4eb6b3d 20594d_closedir='$d_closedir'
4e0554ec 20595d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d 20596d_const='$d_const'
55954f19 20597d_copysignl='$d_copysignl'
b4eb6b3d 20598d_crypt='$d_crypt'
10bc17b6 20599d_crypt_r='$d_crypt_r'
b4eb6b3d 20600d_csh='$d_csh'
10bc17b6
JH
20601d_ctermid_r='$d_ctermid_r'
20602d_ctime_r='$d_ctime_r'
b4eb6b3d
JH
20603d_cuserid='$d_cuserid'
20604d_dbl_dig='$d_dbl_dig'
2ef53570 20605d_dbminitproto='$d_dbminitproto'
b4eb6b3d 20606d_difftime='$d_difftime'
ae0e3d3b 20607d_dirfd='$d_dirfd'
b4eb6b3d
JH
20608d_dirnamlen='$d_dirnamlen'
20609d_dlerror='$d_dlerror'
5f80c64f 20610d_dlopen='$d_dlopen'
b4eb6b3d
JH
20611d_dlsymun='$d_dlsymun'
20612d_dosuid='$d_dosuid'
10bc17b6 20613d_drand48_r='$d_drand48_r'
b4eb6b3d
JH
20614d_drand48proto='$d_drand48proto'
20615d_dup2='$d_dup2'
20616d_eaccess='$d_eaccess'
20617d_endgrent='$d_endgrent'
10bc17b6 20618d_endgrent_r='$d_endgrent_r'
b4eb6b3d 20619d_endhent='$d_endhent'
10bc17b6 20620d_endhostent_r='$d_endhostent_r'
b4eb6b3d 20621d_endnent='$d_endnent'
10bc17b6 20622d_endnetent_r='$d_endnetent_r'
b4eb6b3d 20623d_endpent='$d_endpent'
10bc17b6 20624d_endprotoent_r='$d_endprotoent_r'
b4eb6b3d 20625d_endpwent='$d_endpwent'
10bc17b6 20626d_endpwent_r='$d_endpwent_r'
b4eb6b3d 20627d_endsent='$d_endsent'
10bc17b6 20628d_endservent_r='$d_endservent_r'
b4eb6b3d 20629d_eofnblk='$d_eofnblk'
5f80c64f 20630d_eunice='$d_eunice'
15b61c98 20631d_faststdio='$d_faststdio'
b363b713 20632d_fchdir='$d_fchdir'
b4eb6b3d
JH
20633d_fchmod='$d_fchmod'
20634d_fchown='$d_fchown'
20635d_fcntl='$d_fcntl'
9d9004a9 20636d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
20637d_fd_macros='$d_fd_macros'
20638d_fd_set='$d_fd_set'
20639d_fds_bits='$d_fds_bits'
20640d_fgetpos='$d_fgetpos'
758a5d79
JH
20641d_finite='$d_finite'
20642d_finitel='$d_finitel'
b4eb6b3d
JH
20643d_flexfnam='$d_flexfnam'
20644d_flock='$d_flock'
2ef53570 20645d_flockproto='$d_flockproto'
b4eb6b3d 20646d_fork='$d_fork'
758a5d79 20647d_fp_class='$d_fp_class'
b4eb6b3d 20648d_fpathconf='$d_fpathconf'
758a5d79
JH
20649d_fpclass='$d_fpclass'
20650d_fpclassify='$d_fpclassify'
20651d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
20652d_fpos64_t='$d_fpos64_t'
20653d_frexpl='$d_frexpl'
20654d_fs_data_s='$d_fs_data_s'
20655d_fseeko='$d_fseeko'
20656d_fsetpos='$d_fsetpos'
20657d_fstatfs='$d_fstatfs'
20658d_fstatvfs='$d_fstatvfs'
411ab01c 20659d_fsync='$d_fsync'
b4eb6b3d
JH
20660d_ftello='$d_ftello'
20661d_ftime='$d_ftime'
20662d_getcwd='$d_getcwd'
20663d_getespwnam='$d_getespwnam'
20664d_getfsstat='$d_getfsstat'
20665d_getgrent='$d_getgrent'
10bc17b6
JH
20666d_getgrent_r='$d_getgrent_r'
20667d_getgrgid_r='$d_getgrgid_r'
20668d_getgrnam_r='$d_getgrnam_r'
b4eb6b3d
JH
20669d_getgrps='$d_getgrps'
20670d_gethbyaddr='$d_gethbyaddr'
20671d_gethbyname='$d_gethbyname'
20672d_gethent='$d_gethent'
20673d_gethname='$d_gethname'
10bc17b6
JH
20674d_gethostbyaddr_r='$d_gethostbyaddr_r'
20675d_gethostbyname_r='$d_gethostbyname_r'
20676d_gethostent_r='$d_gethostent_r'
b4eb6b3d 20677d_gethostprotos='$d_gethostprotos'
4e0554ec 20678d_getitimer='$d_getitimer'
b4eb6b3d 20679d_getlogin='$d_getlogin'
10bc17b6 20680d_getlogin_r='$d_getlogin_r'
b4eb6b3d
JH
20681d_getmnt='$d_getmnt'
20682d_getmntent='$d_getmntent'
20683d_getnbyaddr='$d_getnbyaddr'
20684d_getnbyname='$d_getnbyname'
20685d_getnent='$d_getnent'
10bc17b6
JH
20686d_getnetbyaddr_r='$d_getnetbyaddr_r'
20687d_getnetbyname_r='$d_getnetbyname_r'
20688d_getnetent_r='$d_getnetent_r'
b4eb6b3d 20689d_getnetprotos='$d_getnetprotos'
0c0643d0 20690d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
20691d_getpbyname='$d_getpbyname'
20692d_getpbynumber='$d_getpbynumber'
20693d_getpent='$d_getpent'
20694d_getpgid='$d_getpgid'
20695d_getpgrp2='$d_getpgrp2'
20696d_getpgrp='$d_getpgrp'
20697d_getppid='$d_getppid'
20698d_getprior='$d_getprior'
10bc17b6
JH
20699d_getprotobyname_r='$d_getprotobyname_r'
20700d_getprotobynumber_r='$d_getprotobynumber_r'
20701d_getprotoent_r='$d_getprotoent_r'
b4eb6b3d
JH
20702d_getprotoprotos='$d_getprotoprotos'
20703d_getprpwnam='$d_getprpwnam'
20704d_getpwent='$d_getpwent'
10bc17b6
JH
20705d_getpwent_r='$d_getpwent_r'
20706d_getpwnam_r='$d_getpwnam_r'
20707d_getpwuid_r='$d_getpwuid_r'
b4eb6b3d
JH
20708d_getsbyname='$d_getsbyname'
20709d_getsbyport='$d_getsbyport'
20710d_getsent='$d_getsent'
10bc17b6
JH
20711d_getservbyname_r='$d_getservbyname_r'
20712d_getservbyport_r='$d_getservbyport_r'
20713d_getservent_r='$d_getservent_r'
b4eb6b3d
JH
20714d_getservprotos='$d_getservprotos'
20715d_getspnam='$d_getspnam'
10bc17b6 20716d_getspnam_r='$d_getspnam_r'
b4eb6b3d 20717d_gettimeod='$d_gettimeod'
10bc17b6 20718d_gmtime_r='$d_gmtime_r'
5f80c64f 20719d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
20720d_grpasswd='$d_grpasswd'
20721d_hasmntopt='$d_hasmntopt'
20722d_htonl='$d_htonl'
55954f19 20723d_ilogbl='$d_ilogbl'
b4eb6b3d
JH
20724d_index='$d_index'
20725d_inetaton='$d_inetaton'
20726d_int64_t='$d_int64_t'
20727d_isascii='$d_isascii'
758a5d79
JH
20728d_isfinite='$d_isfinite'
20729d_isinf='$d_isinf'
b4eb6b3d
JH
20730d_isnan='$d_isnan'
20731d_isnanl='$d_isnanl'
20732d_killpg='$d_killpg'
20733d_lchown='$d_lchown'
20734d_ldbl_dig='$d_ldbl_dig'
20735d_link='$d_link'
10bc17b6 20736d_localtime_r='$d_localtime_r'
b4eb6b3d
JH
20737d_locconv='$d_locconv'
20738d_lockf='$d_lockf'
20739d_longdbl='$d_longdbl'
20740d_longlong='$d_longlong'
20741d_lseekproto='$d_lseekproto'
20742d_lstat='$d_lstat'
20743d_madvise='$d_madvise'
20744d_mblen='$d_mblen'
20745d_mbstowcs='$d_mbstowcs'
20746d_mbtowc='$d_mbtowc'
20747d_memchr='$d_memchr'
20748d_memcmp='$d_memcmp'
20749d_memcpy='$d_memcpy'
20750d_memmove='$d_memmove'
20751d_memset='$d_memset'
20752d_mkdir='$d_mkdir'
20753d_mkdtemp='$d_mkdtemp'
20754d_mkfifo='$d_mkfifo'
20755d_mkstemp='$d_mkstemp'
20756d_mkstemps='$d_mkstemps'
20757d_mktime='$d_mktime'
20758d_mmap='$d_mmap'
20759d_modfl='$d_modfl'
e67aeab1 20760d_modfl_pow32_bug='$d_modfl_pow32_bug'
bc9a1b2c 20761d_modflproto='$d_modflproto'
b4eb6b3d
JH
20762d_mprotect='$d_mprotect'
20763d_msg='$d_msg'
20764d_msg_ctrunc='$d_msg_ctrunc'
20765d_msg_dontroute='$d_msg_dontroute'
20766d_msg_oob='$d_msg_oob'
20767d_msg_peek='$d_msg_peek'
20768d_msg_proxy='$d_msg_proxy'
20769d_msgctl='$d_msgctl'
20770d_msgget='$d_msgget'
4e0554ec 20771d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
20772d_msgrcv='$d_msgrcv'
20773d_msgsnd='$d_msgsnd'
20774d_msync='$d_msync'
20775d_munmap='$d_munmap'
20776d_mymalloc='$d_mymalloc'
20777d_nice='$d_nice'
2765b840 20778d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d 20779d_nv_preserves_uv='$d_nv_preserves_uv'
b4eb6b3d
JH
20780d_off64_t='$d_off64_t'
20781d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20782d_oldpthreads='$d_oldpthreads'
20783d_oldsock='$d_oldsock'
20784d_open3='$d_open3'
20785d_pathconf='$d_pathconf'
20786d_pause='$d_pause'
20787d_perl_otherlibdirs='$d_perl_otherlibdirs'
20788d_phostname='$d_phostname'
20789d_pipe='$d_pipe'
20790d_poll='$d_poll'
5f80c64f 20791d_portable='$d_portable'
c7aff470 20792d_procselfexe='$d_procselfexe'
d6483fcc 20793d_pthread_atfork='$d_pthread_atfork'
58d975c3 20794d_pthread_attr_setscope='$d_pthread_attr_setscope'
b4eb6b3d
JH
20795d_pthread_yield='$d_pthread_yield'
20796d_pwage='$d_pwage'
20797d_pwchange='$d_pwchange'
20798d_pwclass='$d_pwclass'
20799d_pwcomment='$d_pwcomment'
20800d_pwexpire='$d_pwexpire'
20801d_pwgecos='$d_pwgecos'
20802d_pwpasswd='$d_pwpasswd'
20803d_pwquota='$d_pwquota'
20804d_qgcvt='$d_qgcvt'
20805d_quad='$d_quad'
10bc17b6
JH
20806d_random_r='$d_random_r'
20807d_readdir64_r='$d_readdir64_r'
b4eb6b3d 20808d_readdir='$d_readdir'
10bc17b6 20809d_readdir_r='$d_readdir_r'
b4eb6b3d 20810d_readlink='$d_readlink'
4e0554ec
JH
20811d_readv='$d_readv'
20812d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
20813d_rename='$d_rename'
20814d_rewinddir='$d_rewinddir'
20815d_rmdir='$d_rmdir'
20816d_safebcpy='$d_safebcpy'
20817d_safemcpy='$d_safemcpy'
20818d_sanemcmp='$d_sanemcmp'
ef9f17be 20819d_sbrkproto='$d_sbrkproto'
55954f19 20820d_scalbnl='$d_scalbnl'
b4eb6b3d
JH
20821d_sched_yield='$d_sched_yield'
20822d_scm_rights='$d_scm_rights'
20823d_seekdir='$d_seekdir'
20824d_select='$d_select'
20825d_sem='$d_sem'
20826d_semctl='$d_semctl'
20827d_semctl_semid_ds='$d_semctl_semid_ds'
20828d_semctl_semun='$d_semctl_semun'
20829d_semget='$d_semget'
20830d_semop='$d_semop'
4e0554ec 20831d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
20832d_setegid='$d_setegid'
20833d_seteuid='$d_seteuid'
20834d_setgrent='$d_setgrent'
10bc17b6 20835d_setgrent_r='$d_setgrent_r'
b4eb6b3d
JH
20836d_setgrps='$d_setgrps'
20837d_sethent='$d_sethent'
10bc17b6 20838d_sethostent_r='$d_sethostent_r'
4e0554ec 20839d_setitimer='$d_setitimer'
b4eb6b3d
JH
20840d_setlinebuf='$d_setlinebuf'
20841d_setlocale='$d_setlocale'
10bc17b6 20842d_setlocale_r='$d_setlocale_r'
b4eb6b3d 20843d_setnent='$d_setnent'
10bc17b6 20844d_setnetent_r='$d_setnetent_r'
b4eb6b3d
JH
20845d_setpent='$d_setpent'
20846d_setpgid='$d_setpgid'
20847d_setpgrp2='$d_setpgrp2'
20848d_setpgrp='$d_setpgrp'
20849d_setprior='$d_setprior'
20850d_setproctitle='$d_setproctitle'
10bc17b6 20851d_setprotoent_r='$d_setprotoent_r'
b4eb6b3d 20852d_setpwent='$d_setpwent'
10bc17b6 20853d_setpwent_r='$d_setpwent_r'
b4eb6b3d
JH
20854d_setregid='$d_setregid'
20855d_setresgid='$d_setresgid'
20856d_setresuid='$d_setresuid'
20857d_setreuid='$d_setreuid'
20858d_setrgid='$d_setrgid'
20859d_setruid='$d_setruid'
20860d_setsent='$d_setsent'
10bc17b6 20861d_setservent_r='$d_setservent_r'
b4eb6b3d
JH
20862d_setsid='$d_setsid'
20863d_setvbuf='$d_setvbuf'
20864d_sfio='$d_sfio'
20865d_shm='$d_shm'
20866d_shmat='$d_shmat'
20867d_shmatprototype='$d_shmatprototype'
20868d_shmctl='$d_shmctl'
20869d_shmdt='$d_shmdt'
20870d_shmget='$d_shmget'
20871d_sigaction='$d_sigaction'
983dbef6 20872d_sigprocmask='$d_sigprocmask'
b4eb6b3d 20873d_sigsetjmp='$d_sigsetjmp'
49a78c82 20874d_sockatmark='$d_sockatmark'
2ef53570 20875d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
20876d_socket='$d_socket'
20877d_socklen_t='$d_socklen_t'
20878d_sockpair='$d_sockpair'
20879d_socks5_init='$d_socks5_init'
20880d_sqrtl='$d_sqrtl'
10bc17b6
JH
20881d_srand48_r='$d_srand48_r'
20882d_srandom_r='$d_srandom_r'
eef837ea 20883d_sresgproto='$d_sresgproto'
640374d0 20884d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
20885d_statblks='$d_statblks'
20886d_statfs_f_flags='$d_statfs_f_flags'
20887d_statfs_s='$d_statfs_s'
20888d_statvfs='$d_statvfs'
20889d_stdio_cnt_lval='$d_stdio_cnt_lval'
20890d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
20891d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20892d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
20893d_stdio_stream_array='$d_stdio_stream_array'
20894d_stdiobase='$d_stdiobase'
20895d_stdstdio='$d_stdstdio'
20896d_strchr='$d_strchr'
20897d_strcoll='$d_strcoll'
20898d_strctcpy='$d_strctcpy'
20899d_strerrm='$d_strerrm'
20900d_strerror='$d_strerror'
10bc17b6 20901d_strerror_r='$d_strerror_r'
b3c85772 20902d_strftime='$d_strftime'
08c92000
MB
20903d_strlcat='$d_strlcat'
20904d_strlcpy='$d_strlcpy'
b4eb6b3d
JH
20905d_strtod='$d_strtod'
20906d_strtol='$d_strtol'
20907d_strtold='$d_strtold'
20908d_strtoll='$d_strtoll'
28e5dec8 20909d_strtoq='$d_strtoq'
b4eb6b3d
JH
20910d_strtoul='$d_strtoul'
20911d_strtoull='$d_strtoull'
20912d_strtouq='$d_strtouq'
20913d_strxfrm='$d_strxfrm'
20914d_suidsafe='$d_suidsafe'
20915d_symlink='$d_symlink'
20916d_syscall='$d_syscall'
2ef53570 20917d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
20918d_sysconf='$d_sysconf'
20919d_sysernlst='$d_sysernlst'
20920d_syserrlst='$d_syserrlst'
20921d_system='$d_system'
20922d_tcgetpgrp='$d_tcgetpgrp'
20923d_tcsetpgrp='$d_tcsetpgrp'
20924d_telldir='$d_telldir'
20925d_telldirproto='$d_telldirproto'
20926d_time='$d_time'
20927d_times='$d_times'
14b90194
JH
20928d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20929d_tm_tm_zone='$d_tm_tm_zone'
10bc17b6 20930d_tmpnam_r='$d_tmpnam_r'
b4eb6b3d 20931d_truncate='$d_truncate'
10bc17b6 20932d_ttyname_r='$d_ttyname_r'
b4eb6b3d 20933d_tzname='$d_tzname'
4e0554ec
JH
20934d_u32align='$d_u32align'
20935d_ualarm='$d_ualarm'
b4eb6b3d
JH
20936d_umask='$d_umask'
20937d_uname='$d_uname'
20938d_union_semun='$d_union_semun'
758a5d79 20939d_unordered='$d_unordered'
4e0554ec 20940d_usleep='$d_usleep'
2ef53570 20941d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
20942d_ustat='$d_ustat'
20943d_vendorarch='$d_vendorarch'
20944d_vendorbin='$d_vendorbin'
20945d_vendorlib='$d_vendorlib'
6e1038e0 20946d_vendorscript='$d_vendorscript'
b4eb6b3d
JH
20947d_vfork='$d_vfork'
20948d_void_closedir='$d_void_closedir'
20949d_voidsig='$d_voidsig'
20950d_voidtty='$d_voidtty'
20951d_volatile='$d_volatile'
20952d_vprintf='$d_vprintf'
20953d_wait4='$d_wait4'
20954d_waitpid='$d_waitpid'
20955d_wcstombs='$d_wcstombs'
20956d_wctomb='$d_wctomb'
4e0554ec 20957d_writev='$d_writev'
5f80c64f
JH
20958d_xenix='$d_xenix'
20959date='$date'
b4eb6b3d
JH
20960db_hashtype='$db_hashtype'
20961db_prefixtype='$db_prefixtype'
640374d0
JH
20962db_version_major='$db_version_major'
20963db_version_minor='$db_version_minor'
20964db_version_patch='$db_version_patch'
b4eb6b3d
JH
20965defvoidused='$defvoidused'
20966direntrytype='$direntrytype'
20967dlext='$dlext'
5f80c64f 20968dlsrc='$dlsrc'
b4eb6b3d
JH
20969doublesize='$doublesize'
20970drand01='$drand01'
10bc17b6 20971drand48_r_proto='$drand48_r_proto'
b4eb6b3d
JH
20972dynamic_ext='$dynamic_ext'
20973eagain='$eagain'
20974ebcdic='$ebcdic'
5f80c64f
JH
20975echo='$echo'
20976egrep='$egrep'
20977emacs='$emacs'
10bc17b6
JH
20978endgrent_r_proto='$endgrent_r_proto'
20979endhostent_r_proto='$endhostent_r_proto'
20980endnetent_r_proto='$endnetent_r_proto'
20981endprotoent_r_proto='$endprotoent_r_proto'
20982endpwent_r_proto='$endpwent_r_proto'
20983endservent_r_proto='$endservent_r_proto'
5f80c64f
JH
20984eunicefix='$eunicefix'
20985exe_ext='$exe_ext'
20986expr='$expr'
b4eb6b3d 20987extensions='$extensions'
6fcddf3b 20988extras='$extras'
b4eb6b3d
JH
20989fflushNULL='$fflushNULL'
20990fflushall='$fflushall'
5f80c64f
JH
20991find='$find'
20992firstmakefile='$firstmakefile'
20993flex='$flex'
b4eb6b3d
JH
20994fpossize='$fpossize'
20995fpostype='$fpostype'
20996freetype='$freetype'
5440bc8e 20997from='$from'
b4eb6b3d
JH
20998full_ar='$full_ar'
20999full_csh='$full_csh'
21000full_sed='$full_sed'
2d736872 21001gccansipedantic='$gccansipedantic'
5b463ca7 21002gccosandvers='$gccosandvers'
5f80c64f 21003gccversion='$gccversion'
10bc17b6
JH
21004getgrent_r_proto='$getgrent_r_proto'
21005getgrgid_r_proto='$getgrgid_r_proto'
21006getgrnam_r_proto='$getgrnam_r_proto'
21007gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21008gethostbyname_r_proto='$gethostbyname_r_proto'
21009gethostent_r_proto='$gethostent_r_proto'
21010getlogin_r_proto='$getlogin_r_proto'
21011getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21012getnetbyname_r_proto='$getnetbyname_r_proto'
21013getnetent_r_proto='$getnetent_r_proto'
21014getprotobyname_r_proto='$getprotobyname_r_proto'
21015getprotobynumber_r_proto='$getprotobynumber_r_proto'
21016getprotoent_r_proto='$getprotoent_r_proto'
21017getpwent_r_proto='$getpwent_r_proto'
21018getpwnam_r_proto='$getpwnam_r_proto'
21019getpwuid_r_proto='$getpwuid_r_proto'
21020getservbyname_r_proto='$getservbyname_r_proto'
21021getservbyport_r_proto='$getservbyport_r_proto'
21022getservent_r_proto='$getservent_r_proto'
21023getspnam_r_proto='$getspnam_r_proto'
b4eb6b3d
JH
21024gidformat='$gidformat'
21025gidsign='$gidsign'
21026gidsize='$gidsize'
21027gidtype='$gidtype'
5f80c64f 21028glibpth='$glibpth'
3c728e00 21029gmake='$gmake'
10bc17b6 21030gmtime_r_proto='$gmtime_r_proto'
5f6e0ee4 21031gnulibc_version='$gnulibc_version'
5f80c64f 21032grep='$grep'
b4eb6b3d
JH
21033groupcat='$groupcat'
21034groupstype='$groupstype'
5f80c64f 21035gzip='$gzip'
b4eb6b3d
JH
21036h_fcntl='$h_fcntl'
21037h_sysfile='$h_sysfile'
5f80c64f 21038hint='$hint'
b4eb6b3d 21039hostcat='$hostcat'
6e1038e0
MB
21040html1dir='$html1dir'
21041html1direxp='$html1direxp'
21042html3dir='$html3dir'
21043html3direxp='$html3direxp'
b4eb6b3d
JH
21044i16size='$i16size'
21045i16type='$i16type'
21046i32size='$i32size'
21047i32type='$i32type'
21048i64size='$i64size'
21049i64type='$i64type'
21050i8size='$i8size'
21051i8type='$i8type'
21052i_arpainet='$i_arpainet'
21053i_bsdioctl='$i_bsdioctl'
10bc17b6 21054i_crypt='$i_crypt'
b4eb6b3d
JH
21055i_db='$i_db'
21056i_dbm='$i_dbm'
21057i_dirent='$i_dirent'
5f80c64f 21058i_dld='$i_dld'
b4eb6b3d
JH
21059i_dlfcn='$i_dlfcn'
21060i_fcntl='$i_fcntl'
21061i_float='$i_float'
758a5d79
JH
21062i_fp='$i_fp'
21063i_fp_class='$i_fp_class'
b4eb6b3d
JH
21064i_gdbm='$i_gdbm'
21065i_grp='$i_grp'
b4eb6b3d
JH
21066i_ieeefp='$i_ieeefp'
21067i_inttypes='$i_inttypes'
2765b840 21068i_langinfo='$i_langinfo'
b4eb6b3d
JH
21069i_libutil='$i_libutil'
21070i_limits='$i_limits'
21071i_locale='$i_locale'
21072i_machcthr='$i_machcthr'
21073i_malloc='$i_malloc'
21074i_math='$i_math'
21075i_memory='$i_memory'
21076i_mntent='$i_mntent'
21077i_ndbm='$i_ndbm'
21078i_netdb='$i_netdb'
21079i_neterrno='$i_neterrno'
21080i_netinettcp='$i_netinettcp'
21081i_niin='$i_niin'
21082i_poll='$i_poll'
21083i_prot='$i_prot'
21084i_pthread='$i_pthread'
21085i_pwd='$i_pwd'
21086i_rpcsvcdbm='$i_rpcsvcdbm'
21087i_sfio='$i_sfio'
21088i_sgtty='$i_sgtty'
21089i_shadow='$i_shadow'
21090i_socks='$i_socks'
21091i_stdarg='$i_stdarg'
21092i_stddef='$i_stddef'
21093i_stdlib='$i_stdlib'
21094i_string='$i_string'
21095i_sunmath='$i_sunmath'
21096i_sysaccess='$i_sysaccess'
21097i_sysdir='$i_sysdir'
21098i_sysfile='$i_sysfile'
21099i_sysfilio='$i_sysfilio'
21100i_sysin='$i_sysin'
21101i_sysioctl='$i_sysioctl'
21102i_syslog='$i_syslog'
21103i_sysmman='$i_sysmman'
21104i_sysmode='$i_sysmode'
21105i_sysmount='$i_sysmount'
21106i_sysndir='$i_sysndir'
21107i_sysparam='$i_sysparam'
21108i_sysresrc='$i_sysresrc'
21109i_syssecrt='$i_syssecrt'
21110i_sysselct='$i_sysselct'
21111i_syssockio='$i_syssockio'
21112i_sysstat='$i_sysstat'
21113i_sysstatfs='$i_sysstatfs'
21114i_sysstatvfs='$i_sysstatvfs'
21115i_systime='$i_systime'
21116i_systimek='$i_systimek'
21117i_systimes='$i_systimes'
21118i_systypes='$i_systypes'
21119i_sysuio='$i_sysuio'
21120i_sysun='$i_sysun'
21121i_sysutsname='$i_sysutsname'
21122i_sysvfs='$i_sysvfs'
21123i_syswait='$i_syswait'
21124i_termio='$i_termio'
21125i_termios='$i_termios'
21126i_time='$i_time'
21127i_unistd='$i_unistd'
21128i_ustat='$i_ustat'
21129i_utime='$i_utime'
21130i_values='$i_values'
21131i_varargs='$i_varargs'
21132i_varhdr='$i_varhdr'
21133i_vfork='$i_vfork'
5f80c64f 21134ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
21135inc_version_list='$inc_version_list'
21136inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
21137incpath='$incpath'
21138inews='$inews'
b4eb6b3d
JH
21139installarchlib='$installarchlib'
21140installbin='$installbin'
6e1038e0
MB
21141installhtml1dir='$installhtml1dir'
21142installhtml3dir='$installhtml3dir'
b4eb6b3d
JH
21143installman1dir='$installman1dir'
21144installman3dir='$installman3dir'
21145installprefix='$installprefix'
21146installprefixexp='$installprefixexp'
21147installprivlib='$installprivlib'
21148installscript='$installscript'
21149installsitearch='$installsitearch'
21150installsitebin='$installsitebin'
8d2cbf27
JH
21151installsitehtml1dir='$installsitehtml1dir'
21152installsitehtml3dir='$installsitehtml3dir'
b4eb6b3d 21153installsitelib='$installsitelib'
91e123a8
JH
21154installsiteman1dir='$installsiteman1dir'
21155installsiteman3dir='$installsiteman3dir'
6e1038e0 21156installsitescript='$installsitescript'
b4eb6b3d
JH
21157installstyle='$installstyle'
21158installusrbinperl='$installusrbinperl'
21159installvendorarch='$installvendorarch'
21160installvendorbin='$installvendorbin'
8d2cbf27
JH
21161installvendorhtml1dir='$installvendorhtml1dir'
21162installvendorhtml3dir='$installvendorhtml3dir'
b4eb6b3d 21163installvendorlib='$installvendorlib'
91e123a8
JH
21164installvendorman1dir='$installvendorman1dir'
21165installvendorman3dir='$installvendorman3dir'
6e1038e0 21166installvendorscript='$installvendorscript'
b4eb6b3d 21167intsize='$intsize'
4b661809 21168issymlink='$issymlink'
b4eb6b3d
JH
21169ivdformat='$ivdformat'
21170ivsize='$ivsize'
21171ivtype='$ivtype'
21172known_extensions='$known_extensions'
5f80c64f 21173ksh='$ksh'
5f80c64f
JH
21174ld='$ld'
21175lddlflags='$lddlflags'
21176ldflags='$ldflags'
b4eb6b3d
JH
21177ldflags_uselargefiles='$ldflags_uselargefiles'
21178ldlibpthname='$ldlibpthname'
5f80c64f
JH
21179less='$less'
21180lib_ext='$lib_ext'
21181libc='$libc'
b4eb6b3d 21182libperl='$libperl'
5f80c64f
JH
21183libpth='$libpth'
21184libs='$libs'
43999f95
JH
21185libsdirs='$libsdirs'
21186libsfiles='$libsfiles'
21187libsfound='$libsfound'
13b3f787 21188libspath='$libspath'
5f80c64f 21189libswanted='$libswanted'
b4eb6b3d 21190libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
21191line='$line'
21192lint='$lint'
21193lkflags='$lkflags'
21194ln='$ln'
21195lns='$lns'
10bc17b6 21196localtime_r_proto='$localtime_r_proto'
5f80c64f
JH
21197locincpth='$locincpth'
21198loclibpth='$loclibpth'
b4eb6b3d
JH
21199longdblsize='$longdblsize'
21200longlongsize='$longlongsize'
21201longsize='$longsize'
5f80c64f
JH
21202lp='$lp'
21203lpr='$lpr'
21204ls='$ls'
b4eb6b3d
JH
21205lseeksize='$lseeksize'
21206lseektype='$lseektype'
5f80c64f
JH
21207mail='$mail'
21208mailx='$mailx'
21209make='$make'
21210make_set_make='$make_set_make'
b4eb6b3d
JH
21211mallocobj='$mallocobj'
21212mallocsrc='$mallocsrc'
21213malloctype='$malloctype'
21214man1dir='$man1dir'
21215man1direxp='$man1direxp'
21216man1ext='$man1ext'
21217man3dir='$man3dir'
21218man3direxp='$man3direxp'
21219man3ext='$man3ext'
5f80c64f 21220mips_type='$mips_type'
5129fff4 21221mistrustnm='$mistrustnm'
5f80c64f 21222mkdir='$mkdir'
b4eb6b3d
JH
21223mmaptype='$mmaptype'
21224modetype='$modetype'
5f80c64f 21225more='$more'
b4eb6b3d 21226multiarch='$multiarch'
5f80c64f 21227mv='$mv'
b4eb6b3d
JH
21228myarchname='$myarchname'
21229mydomain='$mydomain'
21230myhostname='$myhostname'
5f80c64f
JH
21231myuname='$myuname'
21232n='$n'
2cc61e15 21233need_va_copy='$need_va_copy'
b4eb6b3d
JH
21234netdb_hlen_type='$netdb_hlen_type'
21235netdb_host_type='$netdb_host_type'
21236netdb_name_type='$netdb_name_type'
21237netdb_net_type='$netdb_net_type'
5f80c64f
JH
21238nm='$nm'
21239nm_opt='$nm_opt'
21240nm_so_opt='$nm_so_opt'
b4eb6b3d 21241nonxs_ext='$nonxs_ext'
5f80c64f 21242nroff='$nroff'
b4eb6b3d
JH
21243nvEUformat='$nvEUformat'
21244nvFUformat='$nvFUformat'
21245nvGUformat='$nvGUformat'
53133ed1 21246nv_preserves_uv_bits='$nv_preserves_uv_bits'
b4eb6b3d
JH
21247nveformat='$nveformat'
21248nvfformat='$nvfformat'
21249nvgformat='$nvgformat'
21250nvsize='$nvsize'
21251nvtype='$nvtype'
21252o_nonblock='$o_nonblock'
5f80c64f 21253obj_ext='$obj_ext'
b4eb6b3d 21254old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 21255optimize='$optimize'
b4eb6b3d 21256orderlib='$orderlib'
5f80c64f
JH
21257osname='$osname'
21258osvers='$osvers'
b4eb6b3d 21259otherlibdirs='$otherlibdirs'
5f80c64f 21260package='$package'
b4eb6b3d
JH
21261pager='$pager'
21262passcat='$passcat'
21263patchlevel='$patchlevel'
5f80c64f 21264path_sep='$path_sep'
b4eb6b3d 21265perl5='$perl5'
5f80c64f 21266perl='$perl'
151e6568 21267perl_patchlevel='$perl_patchlevel'
b4eb6b3d 21268perladmin='$perladmin'
9c839522 21269perllibs='$perllibs'
b4eb6b3d 21270perlpath='$perlpath'
5f80c64f 21271pg='$pg'
b4eb6b3d
JH
21272phostname='$phostname'
21273pidtype='$pidtype'
5f80c64f
JH
21274plibpth='$plibpth'
21275pmake='$pmake'
21276pr='$pr'
b4eb6b3d
JH
21277prefix='$prefix'
21278prefixexp='$prefixexp'
21279privlib='$privlib'
21280privlibexp='$privlibexp'
f24dbf84 21281procselfexe='$procselfexe'
b4eb6b3d
JH
21282prototype='$prototype'
21283ptrsize='$ptrsize'
21284quadkind='$quadkind'
21285quadtype='$quadtype'
21286randbits='$randbits'
21287randfunc='$randfunc'
10bc17b6 21288random_r_proto='$random_r_proto'
b4eb6b3d
JH
21289randseedtype='$randseedtype'
21290ranlib='$ranlib'
21291rd_nodata='$rd_nodata'
10bc17b6
JH
21292readdir64_r_proto='$readdir64_r_proto'
21293readdir_r_proto='$readdir_r_proto'
b4eb6b3d 21294revision='$revision'
5f80c64f
JH
21295rm='$rm'
21296rmail='$rmail'
5440bc8e 21297run='$run'
5f80c64f 21298runnm='$runnm'
b4eb6b3d
JH
21299sPRIEUldbl='$sPRIEUldbl'
21300sPRIFUldbl='$sPRIFUldbl'
21301sPRIGUldbl='$sPRIGUldbl'
21302sPRIXU64='$sPRIXU64'
21303sPRId64='$sPRId64'
21304sPRIeldbl='$sPRIeldbl'
21305sPRIfldbl='$sPRIfldbl'
21306sPRIgldbl='$sPRIgldbl'
21307sPRIi64='$sPRIi64'
21308sPRIo64='$sPRIo64'
21309sPRIu64='$sPRIu64'
21310sPRIx64='$sPRIx64'
21311sSCNfldbl='$sSCNfldbl'
21312sched_yield='$sched_yield'
21313scriptdir='$scriptdir'
21314scriptdirexp='$scriptdirexp'
5f80c64f 21315sed='$sed'
b4eb6b3d
JH
21316seedfunc='$seedfunc'
21317selectminbits='$selectminbits'
21318selecttype='$selecttype'
5f80c64f 21319sendmail='$sendmail'
10bc17b6
JH
21320setgrent_r_proto='$setgrent_r_proto'
21321sethostent_r_proto='$sethostent_r_proto'
21322setlocale_r_proto='$setlocale_r_proto'
21323setnetent_r_proto='$setnetent_r_proto'
21324setprotoent_r_proto='$setprotoent_r_proto'
21325setpwent_r_proto='$setpwent_r_proto'
21326setservent_r_proto='$setservent_r_proto'
5f80c64f
JH
21327sh='$sh'
21328shar='$shar'
21329sharpbang='$sharpbang'
b4eb6b3d
JH
21330shmattype='$shmattype'
21331shortsize='$shortsize'
21332shrpenv='$shrpenv'
5f80c64f 21333shsharp='$shsharp'
b4eb6b3d
JH
21334sig_count='$sig_count'
21335sig_name='$sig_name'
21336sig_name_init='$sig_name_init'
21337sig_num='$sig_num'
21338sig_num_init='$sig_num_init'
76d3c696 21339sig_size='$sig_size'
b4eb6b3d
JH
21340signal_t='$signal_t'
21341sitearch='$sitearch'
21342sitearchexp='$sitearchexp'
21343sitebin='$sitebin'
21344sitebinexp='$sitebinexp'
8d2cbf27
JH
21345sitehtml1dir='$sitehtml1dir'
21346sitehtml1direxp='$sitehtml1direxp'
21347sitehtml3dir='$sitehtml3dir'
21348sitehtml3direxp='$sitehtml3direxp'
b4eb6b3d
JH
21349sitelib='$sitelib'
21350sitelib_stem='$sitelib_stem'
21351sitelibexp='$sitelibexp'
91e123a8
JH
21352siteman1dir='$siteman1dir'
21353siteman1direxp='$siteman1direxp'
21354siteman3dir='$siteman3dir'
21355siteman3direxp='$siteman3direxp'
b4eb6b3d
JH
21356siteprefix='$siteprefix'
21357siteprefixexp='$siteprefixexp'
6e1038e0
MB
21358sitescript='$sitescript'
21359sitescriptexp='$sitescriptexp'
b4eb6b3d
JH
21360sizesize='$sizesize'
21361sizetype='$sizetype'
5f80c64f
JH
21362sleep='$sleep'
21363smail='$smail'
5f80c64f 21364so='$so'
b4eb6b3d
JH
21365sockethdr='$sockethdr'
21366socketlib='$socketlib'
21367socksizetype='$socksizetype'
5f80c64f
JH
21368sort='$sort'
21369spackage='$spackage'
21370spitshell='$spitshell'
10bc17b6
JH
21371srand48_r_proto='$srand48_r_proto'
21372srandom_r_proto='$srandom_r_proto'
5f80c64f 21373src='$src'
b4eb6b3d
JH
21374ssizetype='$ssizetype'
21375startperl='$startperl'
5f80c64f 21376startsh='$startsh'
b4eb6b3d
JH
21377static_ext='$static_ext'
21378stdchar='$stdchar'
21379stdio_base='$stdio_base'
21380stdio_bufsiz='$stdio_bufsiz'
21381stdio_cnt='$stdio_cnt'
21382stdio_filbuf='$stdio_filbuf'
21383stdio_ptr='$stdio_ptr'
21384stdio_stream_array='$stdio_stream_array'
10bc17b6 21385strerror_r_proto='$strerror_r_proto'
b4eb6b3d 21386strings='$strings'
5f80c64f 21387submit='$submit'
b4eb6b3d
JH
21388subversion='$subversion'
21389sysman='$sysman'
5f80c64f
JH
21390tail='$tail'
21391tar='$tar'
5440bc8e 21392targetarch='$targetarch'
5f80c64f
JH
21393tbl='$tbl'
21394tee='$tee'
21395test='$test'
b4eb6b3d
JH
21396timeincl='$timeincl'
21397timetype='$timetype'
10bc17b6 21398tmpnam_r_proto='$tmpnam_r_proto'
5440bc8e 21399to='$to'
5f80c64f
JH
21400touch='$touch'
21401tr='$tr'
21402trnl='$trnl'
21403troff='$troff'
10bc17b6 21404ttyname_r_proto='$ttyname_r_proto'
b4eb6b3d
JH
21405u16size='$u16size'
21406u16type='$u16type'
21407u32size='$u32size'
21408u32type='$u32type'
21409u64size='$u64size'
21410u64type='$u64type'
21411u8size='$u8size'
21412u8type='$u8type'
21413uidformat='$uidformat'
21414uidsign='$uidsign'
21415uidsize='$uidsize'
21416uidtype='$uidtype'
5f80c64f
JH
21417uname='$uname'
21418uniq='$uniq'
b4eb6b3d
JH
21419uquadtype='$uquadtype'
21420use5005threads='$use5005threads'
21421use64bitall='$use64bitall'
21422use64bitint='$use64bitint'
5440bc8e 21423usecrosscompile='$usecrosscompile'
5f80c64f 21424usedl='$usedl'
15b61c98 21425usefaststdio='$usefaststdio'
b4eb6b3d
JH
21426useithreads='$useithreads'
21427uselargefiles='$uselargefiles'
21428uselongdouble='$uselongdouble'
19a100ff 21429usemallocwrap='$usemallocwrap'
b4eb6b3d
JH
21430usemorebits='$usemorebits'
21431usemultiplicity='$usemultiplicity'
21432usemymalloc='$usemymalloc'
5f80c64f 21433usenm='$usenm'
b4eb6b3d
JH
21434useopcode='$useopcode'
21435useperlio='$useperlio'
21436useposix='$useposix'
9514c62b 21437usereentrant='$usereentrant'
d51aaa9d 21438userelocatableinc='$userelocatableinc'
b4eb6b3d
JH
21439usesfio='$usesfio'
21440useshrplib='$useshrplib'
29209bc5 21441usesocks='$usesocks'
b4eb6b3d
JH
21442usethreads='$usethreads'
21443usevendorprefix='$usevendorprefix'
21444usevfork='$usevfork'
5f80c64f
JH
21445usrinc='$usrinc'
21446uuname='$uuname'
b4eb6b3d
JH
21447uvXUformat='$uvXUformat'
21448uvoformat='$uvoformat'
21449uvsize='$uvsize'
21450uvtype='$uvtype'
21451uvuformat='$uvuformat'
21452uvxformat='$uvxformat'
21453vendorarch='$vendorarch'
21454vendorarchexp='$vendorarchexp'
21455vendorbin='$vendorbin'
21456vendorbinexp='$vendorbinexp'
8d2cbf27
JH
21457vendorhtml1dir='$vendorhtml1dir'
21458vendorhtml1direxp='$vendorhtml1direxp'
21459vendorhtml3dir='$vendorhtml3dir'
21460vendorhtml3direxp='$vendorhtml3direxp'
b4eb6b3d
JH
21461vendorlib='$vendorlib'
21462vendorlib_stem='$vendorlib_stem'
21463vendorlibexp='$vendorlibexp'
91e123a8
JH
21464vendorman1dir='$vendorman1dir'
21465vendorman1direxp='$vendorman1direxp'
21466vendorman3dir='$vendorman3dir'
21467vendorman3direxp='$vendorman3direxp'
b4eb6b3d
JH
21468vendorprefix='$vendorprefix'
21469vendorprefixexp='$vendorprefixexp'
6e1038e0
MB
21470vendorscript='$vendorscript'
21471vendorscriptexp='$vendorscriptexp'
b4eb6b3d 21472version='$version'
861eb78d 21473version_patchlevel_string='$version_patchlevel_string'
d56c5707 21474versiononly='$versiononly'
5f80c64f 21475vi='$vi'
b4eb6b3d 21476voidflags='$voidflags'
5f80c64f 21477xlibpth='$xlibpth'
3659ebf1
JH
21478yacc='$yacc'
21479yaccflags='$yaccflags'
5f80c64f
JH
21480zcat='$zcat'
21481zip='$zip'
21482EOT
21483
21484: Add in command line options if available
21485$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21486
21487: add special variables
21488$test -f $src/patchlevel.h && \
d00b958f 21489awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 21490echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 21491echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
21492
21493: propagate old symbols
21494if $test -f UU/config.sh; then
381aa1ff 21495 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 21496 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 21497 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
21498 set X `cat UU/oldsyms`
21499 shift
21500 case $# in
21501 0) ;;
21502 *)
21503 cat <<EOM
21504Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21505EOM
21506 echo "# Variables propagated from previous config.sh file." >>config.sh
21507 for sym in `cat UU/oldsyms`; do
21508 echo " Propagating $hint variable "'$'"$sym..."
21509 eval 'tmp="$'"${sym}"'"'
21510 echo "$tmp" | \
21511 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21512 done
21513 ;;
21514 esac
21515fi
21516
21517: Finish up by extracting the .SH files
21518case "$alldone" in
21519exit)
21520 $rm -rf UU
24ccb310 21521 echo "Extraction done."
5f80c64f
JH
21522 exit 0
21523 ;;
21524cont)
21525 ;;
21526'')
21527 dflt=''
21528 nostick=true
21529 $cat <<EOM
21530
21531If you'd like to make any changes to the config.sh file before I begin
21532to configure things, do it as a shell escape now (e.g. !vi config.sh).
21533
21534EOM
21535 rp="Press return or use a shell escape to edit config.sh:"
21536 . UU/myread
21537 nostick=''
21538 case "$ans" in
21539 '') ;;
21540 *) : in case they cannot read
21541 sh 1>&4 -c "$ans";;
21542 esac
21543 ;;
21544esac
21545
21546: if this fails, just run all the .SH files by hand
21547. ./config.sh
21548
21549echo " "
21550exec 1>&4
a43e8593 21551pwd=`pwd`
5f80c64f 21552. ./UU/extract
6904989c 21553cd "$pwd"
5f80c64f
JH
21554
21555if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21556 dflt=y
21557 case "$silent" in
21558 true) ;;
21559 *)
21560 $cat <<EOM
21561
21562Now you need to generate make dependencies by running "$make depend".
21563You might prefer to run it in background: "$make depend > makedepend.out &"
21564It can take a while, so you might not want to run it right now.
21565
21566EOM
21567 ;;
21568 esac
21569 rp="Run $make depend now?"
21570 . UU/myread
21571 case "$ans" in
21572 y*)
3d5d58b1 21573 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
21574 ;;
21575 *)
21576 echo "You must run '$make depend' then '$make'."
21577 ;;
21578 esac
21579elif test -f [Mm]akefile; then
21580 echo " "
21581 echo "Now you must run a $make."
21582else
24ccb310 21583 echo "Configure done."
5f80c64f
JH
21584fi
21585
21586if $test -f Policy.sh; then
21587 $cat <<EOM
21588
21589If you compile $package on a different machine or from a different object
21590directory, copy the Policy.sh file from this object directory to the
21591new one before you run Configure -- this will help you with most of
21592the policy defaults.
21593
21594EOM
21595fi
21596if $test -f config.msg; then
21597 echo "Hmm. I also noted the following information while running:"
21598 echo " "
21599 $cat config.msg >&4
21600 $rm -f config.msg
21601fi
21602$rm -f kit*isdone ark*isdone
21603$rm -rf UU
21604
21605: End of Configure
21606