This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
More "distclean" tidy ups on Win32
[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#
91fc0aa5 23# Generated on Thu Feb 26 10:02:07 MET 2004 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
f6538904 50if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
cbee2ce6
JH
51 cat >&4 <<EOF
52***
53*** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54*** Configure that well. (Plan 9 is close to UNIX but not close enough.)
55*** Please read the README.plan9 for further instructions.
56*** Cannot continue, aborting.
57***
58EOF
59 exit 1
60fi
61
a0d0e21e
LW
62: compute my invocation name
63me=$0
64case "$0" in
65*/*)
66 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67 test "$me" || me=$0
68 ;;
69esac
70
dfe9444c 71: Proper separator for the PATH environment variable
8e07c86e
AD
72p_=:
73: On OS/2 this directory should exist if this is not floppy only system :-]
5c728af0 74if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
dfe9444c
AD
75 if test -n "$OS2_SHELL"; then
76 p_=\;
77 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
5c728af0 79 is_os2=yes
c4f23d77 80 elif test -n "$DJGPP"; then
495e2cbe
MB
81 case "X${MACHTYPE:-nonesuchmach}" in
82 *cygwin) ;;
83 *) p_=\; ;;
84 esac
dfe9444c 85 fi
39e571d4 86fi
a0d0e21e
LW
87
88: Proper PATH setting
89paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 90paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 91paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 92paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
93paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96paths="$paths /sbin /usr/sbin /usr/libexec"
3c728e00 97paths="$paths /system/gnu_library/bin"
a0d0e21e
LW
98
99for p in $paths
100do
8e07c86e
AD
101 case "$p_$PATH$p_" in
102 *$p_$p$p_*) ;;
103 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
104 esac
105done
106
8e07c86e 107PATH=.$p_$PATH
2304df62
AD
108export PATH
109
dfe9444c
AD
110: shall we be using ksh?
111inksh=''
112needksh=''
113avoidksh=''
114newsh=/bin/ksh
115changesh=''
ff0cee69 116if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
117 inksh=true
118fi
119if test -f /hp-ux -a -f /bin/ksh; then
120 needksh='to avoid sh bug in "here document" expansion'
121fi
122if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123 if test X`/usr/bin/uname -v` = X4; then
124 avoidksh="to avoid AIX 4's /bin/sh"
125 newsh=/usr/bin/bsh
2304df62 126 fi
dfe9444c 127fi
cf04f91f
JH
128if test -f /osf_boot -a -f /usr/sbin/setld; then
129 if test X`/usr/bin/uname -s` = XOSF1; then
130 avoidksh="to avoid Digital UNIX' ksh"
131 newsh=/bin/sh
132 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133 fi
134fi
dfe9444c
AD
135case "$inksh/$needksh" in
136/[a-z]*)
c4f23d77 137 ENV=''
dfe9444c
AD
138 changesh=true
139 reason="$needksh"
140 ;;
141esac
142case "$inksh/$avoidksh" in
143true/[a-z]*)
144 changesh=true
145 reason="$avoidksh"
146 ;;
147esac
148case "$inksh/$needksh-$avoidksh-" in
149true/--)
a0d0e21e
LW
150 cat <<EOM
151(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 152mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 153EOM
dfe9444c
AD
154 ;;
155esac
156case "$changesh" in
157true)
2e2a97a6 158 export newsh
dfe9444c
AD
159 echo "(Feeding myself to $newsh $reason.)"
160 case "$0" in
161 Configure|*/Configure) exec $newsh $0 "$@";;
162 *) exec $newsh Configure "$@";;
163 esac
164 ;;
165esac
2304df62 166
bfb7748a
AD
167: if needed set CDPATH to a harmless value that is not chatty
168: avoid bash 2.02 problems with empty CDPATH.
169case "$CDPATH" in
170'') ;;
171*) case "$SHELL" in
172 *bash*) CDPATH='.' ;;
173 *) CDPATH='' ;;
174 esac
175 ;;
176esac
2304df62
AD
177: Configure runs within the UU subdirectory
178test -d UU || mkdir UU
8e07c86e 179cd UU && rm -f ./*
2304df62 180
6b356c8e
JH
181ccname=''
182ccversion=''
b4eb6b3d
JH
183ccsymbols=''
184cppccsymbols=''
185cppsymbols=''
5440bc8e
JH
186from=''
187run=''
188targetarch=''
189to=''
190usecrosscompile=''
6b34ded5 191mistrustnm=''
9c839522 192perllibs=''
b4eb6b3d
JH
193dynamic_ext=''
194extensions=''
195known_extensions=''
196nonxs_ext=''
197static_ext=''
198useopcode=''
199useposix=''
6fcddf3b 200extras=''
ecfc5424 201d_bsd=''
40a7a20a 202d_eunice=''
2304df62
AD
203d_xenix=''
204eunicefix=''
205Mcc=''
dfe9444c 206ar=''
2304df62
AD
207awk=''
208bash=''
209bison=''
210byacc=''
211cat=''
212chgrp=''
213chmod=''
214chown=''
ecfc5424 215comm=''
2304df62
AD
216compress=''
217cp=''
218cpio=''
219cpp=''
220csh=''
221date=''
222echo=''
223egrep=''
224emacs=''
225expr=''
226find=''
227flex=''
3c728e00 228gmake=''
2304df62 229grep=''
8ff267be 230gzip=''
2304df62
AD
231inews=''
232ksh=''
233less=''
234line=''
235lint=''
236ln=''
237lp=''
238lpr=''
239ls=''
240mail=''
241mailx=''
dfe9444c 242make=''
2304df62
AD
243mkdir=''
244more=''
245mv=''
693762b4 246nm=''
2304df62
AD
247nroff=''
248perl=''
249pg=''
250pmake=''
251pr=''
252rm=''
253rmail=''
254sed=''
255sendmail=''
2304df62
AD
256shar=''
257sleep=''
258smail=''
259sort=''
260submit=''
261tail=''
262tar=''
263tbl=''
693762b4 264tee=''
2304df62
AD
265test=''
266touch=''
267tr=''
268troff=''
269uname=''
270uniq=''
271uuname=''
272vi=''
273zcat=''
8ff267be 274zip=''
b4eb6b3d
JH
275full_ar=''
276full_sed=''
a0d0e21e 277libswanted=''
2304df62
AD
278hint=''
279myuname=''
85e6fe83
LW
280osname=''
281osvers=''
2304df62
AD
282Author=''
283Date=''
284Header=''
285Id=''
286Locker=''
287Log=''
288RCSfile=''
289Revision=''
290Source=''
291State=''
dfe9444c
AD
292_a=''
293_exe=''
294_o=''
4633a7c4
LW
295archobjs=''
296exe_ext=''
297firstmakefile=''
298lib_ext=''
299obj_ext=''
300path_sep=''
b4eb6b3d 301afs=''
a6d26a0d 302afsroot=''
b4eb6b3d
JH
303alignbytes=''
304ansi2knr=''
305archlib=''
306archlibexp=''
307d_archlib=''
308installarchlib=''
309archname=''
310myarchname=''
311d_atolf=''
312d_atoll=''
313baserev=''
314bin=''
315binexp=''
316installbin=''
b4eb6b3d 317byteorder=''
2304df62 318cc=''
2304df62
AD
319ccflags=''
320cppflags=''
321ldflags=''
322lkflags=''
8e07c86e 323locincpth=''
2304df62 324optimize=''
b4eb6b3d 325cf_email=''
2304df62
AD
326cf_by=''
327cf_time=''
b4eb6b3d 328charsize=''
2304df62 329contains=''
b4eb6b3d 330cpp_stuff=''
2304df62
AD
331cpplast=''
332cppminus=''
333cpprun=''
334cppstdin=''
74cac757 335d__fwalk=''
b4eb6b3d
JH
336d_access=''
337d_accessx=''
55954f19 338d_aintl=''
b4eb6b3d 339d_alarm=''
10bc17b6
JH
340asctime_r_proto=''
341d_asctime_r=''
b4eb6b3d
JH
342d_attribut=''
343d_bcmp=''
344d_bcopy=''
345d_bzero=''
346d_casti32=''
347castflags=''
348d_castneg=''
349d_chown=''
350d_chroot=''
351d_chsize=''
758a5d79 352d_class=''
b4eb6b3d
JH
353d_closedir=''
354d_void_closedir=''
4e0554ec 355d_cmsghdr_s=''
b4eb6b3d 356d_const=''
36adc09b 357d_copysignl=''
b4eb6b3d
JH
358cryptlib=''
359d_crypt=''
10bc17b6
JH
360crypt_r_proto=''
361d_crypt_r=''
b4eb6b3d
JH
362d_csh=''
363full_csh=''
10bc17b6
JH
364ctermid_r_proto=''
365d_ctermid_r=''
366ctime_r_proto=''
367d_ctime_r=''
b4eb6b3d
JH
368d_cuserid=''
369d_dbl_dig=''
2ef53570 370d_dbminitproto=''
b4eb6b3d 371d_difftime=''
ae0e3d3b 372d_dirfd=''
b4eb6b3d 373d_dlerror=''
a0d0e21e 374d_dlopen=''
b4eb6b3d
JH
375d_dlsymun=''
376d_dosuid=''
377d_suidsafe=''
10bc17b6
JH
378d_drand48_r=''
379drand48_r_proto=''
b4eb6b3d
JH
380d_drand48proto=''
381d_dup2=''
382d_eaccess=''
383d_endgrent=''
10bc17b6
JH
384d_endgrent_r=''
385endgrent_r_proto=''
b4eb6b3d 386d_endhent=''
10bc17b6
JH
387d_endhostent_r=''
388endhostent_r_proto=''
b4eb6b3d 389d_endnent=''
10bc17b6
JH
390d_endnetent_r=''
391endnetent_r_proto=''
b4eb6b3d 392d_endpent=''
10bc17b6
JH
393d_endprotoent_r=''
394endprotoent_r_proto=''
b4eb6b3d 395d_endpwent=''
10bc17b6
JH
396d_endpwent_r=''
397endpwent_r_proto=''
b4eb6b3d 398d_endsent=''
10bc17b6
JH
399d_endservent_r=''
400endservent_r_proto=''
15b61c98 401d_faststdio=''
b363b713 402d_fchdir=''
b4eb6b3d
JH
403d_fchmod=''
404d_fchown=''
405d_fcntl=''
9d9004a9 406d_fcntl_can_lock=''
b4eb6b3d
JH
407d_fd_macros=''
408d_fd_set=''
409d_fds_bits=''
410d_fgetpos=''
758a5d79
JH
411d_finite=''
412d_finitel=''
b4eb6b3d
JH
413d_flexfnam=''
414d_flock=''
2ef53570 415d_flockproto=''
b4eb6b3d 416d_fork=''
758a5d79
JH
417d_fp_class=''
418d_fpclass=''
419d_fpclassify=''
420d_fpclassl=''
b4eb6b3d
JH
421d_fpos64_t=''
422d_frexpl=''
423d_fs_data_s=''
424d_fseeko=''
425d_fsetpos=''
426d_fstatfs=''
411ab01c 427d_fsync=''
b4eb6b3d
JH
428d_ftello=''
429d_ftime=''
430d_gettimeod=''
431d_Gconvert=''
432d_getcwd=''
433d_getespwnam=''
434d_getfsstat=''
435d_getgrent=''
10bc17b6
JH
436d_getgrent_r=''
437getgrent_r_proto=''
438d_getgrgid_r=''
439getgrgid_r_proto=''
440d_getgrnam_r=''
441getgrnam_r_proto=''
b4eb6b3d
JH
442d_getgrps=''
443d_gethbyaddr=''
444d_gethbyname=''
445d_gethent=''
446aphostname=''
447d_gethname=''
448d_phostname=''
449d_uname=''
10bc17b6
JH
450d_gethostbyaddr_r=''
451gethostbyaddr_r_proto=''
452d_gethostbyname_r=''
453gethostbyname_r_proto=''
454d_gethostent_r=''
455gethostent_r_proto=''
b4eb6b3d 456d_gethostprotos=''
4e0554ec 457d_getitimer=''
b4eb6b3d 458d_getlogin=''
10bc17b6
JH
459d_getlogin_r=''
460getlogin_r_proto=''
b4eb6b3d
JH
461d_getmnt=''
462d_getmntent=''
463d_getnbyaddr=''
464d_getnbyname=''
465d_getnent=''
10bc17b6
JH
466d_getnetbyaddr_r=''
467getnetbyaddr_r_proto=''
468d_getnetbyname_r=''
469getnetbyname_r_proto=''
470d_getnetent_r=''
471getnetent_r_proto=''
b4eb6b3d 472d_getnetprotos=''
0c0643d0 473d_getpagsz=''
b4eb6b3d
JH
474d_getpent=''
475d_getpgid=''
476d_getpgrp2=''
477d_bsdgetpgrp=''
478d_getpgrp=''
479d_getppid=''
480d_getprior=''
481d_getpbyname=''
482d_getpbynumber=''
10bc17b6
JH
483d_getprotobyname_r=''
484getprotobyname_r_proto=''
485d_getprotobynumber_r=''
486getprotobynumber_r_proto=''
487d_getprotoent_r=''
488getprotoent_r_proto=''
b4eb6b3d
JH
489d_getprotoprotos=''
490d_getprpwnam=''
491d_getpwent=''
10bc17b6
JH
492d_getpwent_r=''
493getpwent_r_proto=''
494d_getpwnam_r=''
495getpwnam_r_proto=''
496d_getpwuid_r=''
497getpwuid_r_proto=''
b4eb6b3d 498d_getsent=''
10bc17b6
JH
499d_getservbyname_r=''
500getservbyname_r_proto=''
501d_getservbyport_r=''
502getservbyport_r_proto=''
503d_getservent_r=''
504getservent_r_proto=''
b4eb6b3d
JH
505d_getservprotos=''
506d_getspnam=''
10bc17b6
JH
507d_getspnam_r=''
508getspnam_r_proto=''
b4eb6b3d
JH
509d_getsbyname=''
510d_getsbyport=''
10bc17b6
JH
511d_gmtime_r=''
512gmtime_r_proto=''
a4f3eea9 513d_gnulibc=''
5f6e0ee4 514gnulibc_version=''
b4eb6b3d
JH
515d_hasmntopt=''
516d_htonl=''
55954f19 517d_ilogbl=''
b4eb6b3d
JH
518d_inetaton=''
519d_int64_t=''
520d_isascii=''
758a5d79
JH
521d_isfinite=''
522d_isinf=''
b4eb6b3d
JH
523d_isnan=''
524d_isnanl=''
525d_killpg=''
526d_lchown=''
527d_ldbl_dig=''
528d_link=''
10bc17b6
JH
529d_localtime_r=''
530localtime_r_proto=''
b4eb6b3d
JH
531d_locconv=''
532d_lockf=''
533d_longdbl=''
534longdblsize=''
535d_longlong=''
536longlongsize=''
537d_lseekproto=''
538d_lstat=''
539d_madvise=''
540d_mblen=''
541d_mbstowcs=''
542d_mbtowc=''
543d_memchr=''
544d_memcmp=''
545d_memcpy=''
546d_memmove=''
547d_memset=''
548d_mkdir=''
549d_mkdtemp=''
550d_mkfifo=''
551d_mkstemp=''
552d_mkstemps=''
553d_mktime=''
554d_mmap=''
555mmaptype=''
556d_modfl=''
e67aeab1 557d_modfl_pow32_bug=''
bc9a1b2c 558d_modflproto=''
b4eb6b3d
JH
559d_mprotect=''
560d_msg=''
561d_msgctl=''
562d_msgget=''
4e0554ec 563d_msghdr_s=''
b4eb6b3d
JH
564d_msgrcv=''
565d_msgsnd=''
566d_msync=''
567d_munmap=''
568d_nice=''
2765b840 569d_nl_langinfo=''
b4eb6b3d
JH
570d_off64_t=''
571d_open3=''
572d_fpathconf=''
573d_pathconf=''
574d_pause=''
575d_pipe=''
576d_poll=''
2304df62 577d_portable=''
a33c94aa 578d_procselfexe=''
f24dbf84 579procselfexe=''
b4eb6b3d
JH
580d_old_pthread_create_joinable=''
581old_pthread_create_joinable=''
d6483fcc 582d_pthread_atfork=''
58d975c3 583d_pthread_attr_setscope=''
b4eb6b3d
JH
584d_pthread_yield=''
585d_sched_yield=''
586sched_yield=''
587d_qgcvt=''
10bc17b6
JH
588d_random_r=''
589random_r_proto=''
590d_readdir64_r=''
591readdir64_r_proto=''
b4eb6b3d
JH
592d_readdir=''
593d_rewinddir=''
594d_seekdir=''
595d_telldir=''
10bc17b6
JH
596d_readdir_r=''
597readdir_r_proto=''
b4eb6b3d 598d_readlink=''
4e0554ec
JH
599d_readv=''
600d_recvmsg=''
b4eb6b3d
JH
601d_rename=''
602d_rmdir=''
603d_safebcpy=''
604d_safemcpy=''
605d_sanemcmp=''
ef9f17be 606d_sbrkproto=''
55954f19 607d_scalbnl=''
b4eb6b3d
JH
608d_select=''
609d_sem=''
610d_semctl=''
611d_semget=''
612d_semop=''
4e0554ec 613d_sendmsg=''
b4eb6b3d
JH
614d_setegid=''
615d_seteuid=''
616d_setgrent=''
10bc17b6
JH
617d_setgrent_r=''
618setgrent_r_proto=''
b4eb6b3d
JH
619d_setgrps=''
620d_sethent=''
10bc17b6
JH
621d_sethostent_r=''
622sethostent_r_proto=''
4e0554ec 623d_setitimer=''
b4eb6b3d
JH
624d_setlinebuf=''
625d_setlocale=''
10bc17b6
JH
626d_setlocale_r=''
627setlocale_r_proto=''
b4eb6b3d 628d_setnent=''
10bc17b6
JH
629d_setnetent_r=''
630setnetent_r_proto=''
b4eb6b3d
JH
631d_setpent=''
632d_setpgid=''
633d_setpgrp2=''
634d_bsdsetpgrp=''
635d_setpgrp=''
636d_setprior=''
637d_setproctitle=''
10bc17b6
JH
638d_setprotoent_r=''
639setprotoent_r_proto=''
b4eb6b3d 640d_setpwent=''
10bc17b6
JH
641d_setpwent_r=''
642setpwent_r_proto=''
b4eb6b3d
JH
643d_setregid=''
644d_setresgid=''
645d_setresuid=''
646d_setreuid=''
647d_setrgid=''
648d_setruid=''
649d_setsent=''
10bc17b6
JH
650d_setservent_r=''
651setservent_r_proto=''
b4eb6b3d
JH
652d_setsid=''
653d_setvbuf=''
654d_sfio=''
655usesfio=''
656d_shm=''
657d_shmat=''
658d_shmatprototype=''
659shmattype=''
660d_shmctl=''
661d_shmdt=''
662d_shmget=''
663d_sigaction=''
983dbef6 664d_sigprocmask=''
b4eb6b3d 665d_sigsetjmp=''
49a78c82 666d_sockatmark=''
2ef53570 667d_sockatmarkproto=''
b4eb6b3d
JH
668d_msg_ctrunc=''
669d_msg_dontroute=''
670d_msg_oob=''
671d_msg_peek=''
672d_msg_proxy=''
673d_oldsock=''
674d_scm_rights=''
675d_socket=''
676d_sockpair=''
677sockethdr=''
678socketlib=''
679d_socklen_t=''
680d_socks5_init=''
681d_sqrtl=''
10bc17b6
JH
682d_srand48_r=''
683srand48_r_proto=''
684d_srandom_r=''
685srandom_r_proto=''
eef837ea 686d_sresgproto=''
640374d0 687d_sresuproto=''
b4eb6b3d
JH
688d_statblks=''
689d_statfs_f_flags=''
690d_statfs_s=''
691d_fstatvfs=''
692d_statvfs=''
693d_stdio_cnt_lval=''
694d_stdio_ptr_lval=''
a7ffa9b9
NC
695d_stdio_ptr_lval_nochange_cnt=''
696d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
697d_stdiobase=''
698d_stdstdio=''
699stdio_base=''
700stdio_bufsiz=''
701stdio_cnt=''
702stdio_filbuf=''
703stdio_ptr=''
704d_index=''
705d_strchr=''
706d_strcoll=''
707d_strctcpy=''
708d_strerrm=''
709d_strerror=''
710d_sysernlst=''
711d_syserrlst=''
10bc17b6
JH
712d_strerror_r=''
713strerror_r_proto=''
b3c85772 714d_strftime=''
b4eb6b3d
JH
715d_strtod=''
716d_strtol=''
717d_strtold=''
718d_strtoll=''
28e5dec8 719d_strtoq=''
b4eb6b3d
JH
720d_strtoul=''
721d_strtoull=''
722d_strtouq=''
723d_strxfrm=''
724d_symlink=''
725d_syscall=''
2ef53570 726d_syscallproto=''
b4eb6b3d
JH
727d_sysconf=''
728d_system=''
729d_tcgetpgrp=''
730d_tcsetpgrp=''
731d_telldirproto=''
732d_time=''
733timetype=''
734clocktype=''
735d_times=''
10bc17b6
JH
736d_tmpnam_r=''
737tmpnam_r_proto=''
b4eb6b3d 738d_truncate=''
10bc17b6
JH
739d_ttyname_r=''
740ttyname_r_proto=''
b4eb6b3d 741d_tzname=''
4e0554ec
JH
742d_u32align=''
743d_ualarm=''
b4eb6b3d
JH
744d_umask=''
745d_semctl_semid_ds=''
746d_semctl_semun=''
747d_union_semun=''
758a5d79 748d_unordered=''
4e0554ec 749d_usleep=''
2ef53570 750d_usleepproto=''
b4eb6b3d
JH
751d_ustat=''
752d_vfork=''
753usevfork=''
754d_voidsig=''
755signal_t=''
756d_volatile=''
757d_charvspr=''
758d_vprintf=''
759d_wait4=''
760d_waitpid=''
761d_wcstombs=''
762d_wctomb=''
4e0554ec 763d_writev=''
b4eb6b3d 764dlext=''
85e6fe83
LW
765cccdlflags=''
766ccdlflags=''
2304df62 767dlsrc=''
232e078e 768ld=''
85e6fe83 769lddlflags=''
2304df62 770usedl=''
b4eb6b3d
JH
771doublesize=''
772ebcdic=''
773fflushNULL=''
774fflushall=''
775fpossize=''
776fpostype=''
2d736872 777gccansipedantic=''
5b463ca7 778gccosandvers=''
8a27cf78 779gccversion=''
b4eb6b3d
JH
780gidformat=''
781gidsign=''
782gidsize=''
783gidtype=''
784groupstype=''
785h_fcntl=''
786h_sysfile=''
6e1038e0
MB
787html1dir=''
788html1direxp=''
789installhtml1dir=''
790html3dir=''
791html3direxp=''
792installhtml3dir=''
b4eb6b3d 793i_arpainet=''
10bc17b6 794i_crypt=''
b4eb6b3d
JH
795db_hashtype=''
796db_prefixtype=''
640374d0
JH
797db_version_major=''
798db_version_minor=''
799db_version_patch=''
b4eb6b3d
JH
800i_db=''
801i_dbm=''
802i_rpcsvcdbm=''
803d_dirnamlen=''
804direntrytype=''
805i_dirent=''
a0d0e21e 806i_dld=''
b4eb6b3d
JH
807i_dlfcn=''
808i_fcntl=''
809i_float=''
758a5d79
JH
810i_fp=''
811i_fp_class=''
b4eb6b3d
JH
812i_gdbm=''
813d_grpasswd=''
814i_grp=''
b4eb6b3d
JH
815i_ieeefp=''
816i_inttypes=''
2765b840 817i_langinfo=''
b4eb6b3d
JH
818i_libutil=''
819i_limits=''
820i_locale=''
821i_machcthr=''
822i_malloc=''
823i_math=''
824i_memory=''
825i_mntent=''
826i_ndbm=''
827i_netdb=''
828i_neterrno=''
829i_netinettcp=''
830i_niin=''
831i_sysin=''
832i_poll=''
833i_prot=''
834i_pthread=''
835d_pwage=''
836d_pwchange=''
837d_pwclass=''
838d_pwcomment=''
839d_pwexpire=''
840d_pwgecos=''
841d_pwpasswd=''
842d_pwquota=''
843i_pwd=''
844i_sfio=''
845i_shadow=''
846i_socks=''
847i_stddef=''
848i_stdlib=''
849i_string=''
850strings=''
851i_sunmath=''
852i_sysaccess=''
853i_sysdir=''
854i_sysfile=''
855d_voidtty=''
856i_bsdioctl=''
857i_sysfilio=''
858i_sysioctl=''
859i_syssockio=''
860i_syslog=''
861i_sysmman=''
862i_sysmode=''
863i_sysmount=''
864i_sysndir=''
865i_sysparam=''
866i_sysresrc=''
867i_syssecrt=''
868i_sysselct=''
869i_sysstat=''
870i_sysstatfs=''
871i_sysstatvfs=''
872i_systimes=''
873i_systypes=''
874i_sysuio=''
875i_sysun=''
876i_sysutsname=''
877i_sysvfs=''
878i_syswait=''
879i_sgtty=''
880i_termio=''
881i_termios=''
14b90194
JH
882d_tm_tm_gmtoff=''
883d_tm_tm_zone=''
b4eb6b3d
JH
884i_systime=''
885i_systimek=''
886i_time=''
887timeincl=''
888i_unistd=''
889i_ustat=''
890i_utime=''
891i_values=''
892i_stdarg=''
893i_varargs=''
894i_varhdr=''
895i_vfork=''
896inc_version_list=''
897inc_version_list_init=''
898installprefix=''
899installprefixexp=''
900installstyle=''
901installusrbinperl=''
902intsize=''
903longsize=''
904shortsize=''
4b661809 905issymlink=''
2304df62 906libc=''
b4eb6b3d
JH
907ldlibpthname=''
908libperl=''
909shrpenv=''
910useshrplib=''
a0d0e21e 911glibpth=''
2304df62 912libpth=''
8e07c86e 913loclibpth=''
2304df62
AD
914plibpth=''
915xlibpth=''
1cfa4ec7 916ignore_versioned_solibs=''
2304df62 917libs=''
43999f95
JH
918libsdirs=''
919libsfiles=''
920libsfound=''
13b3f787 921libspath=''
85e6fe83 922lns=''
b4eb6b3d
JH
923d_PRIEUldbl=''
924d_PRIFUldbl=''
925d_PRIGUldbl=''
926d_PRIeldbl=''
927d_PRIfldbl=''
928d_PRIgldbl=''
929d_SCNfldbl=''
930sPRIEUldbl=''
931sPRIFUldbl=''
932sPRIGUldbl=''
933sPRIeldbl=''
934sPRIfldbl=''
935sPRIgldbl=''
936sSCNfldbl=''
937lseeksize=''
938lseektype=''
8ff267be 939make_set_make=''
b4eb6b3d
JH
940d_mymalloc=''
941freetype=''
942mallocobj=''
943mallocsrc=''
944malloctype=''
945usemymalloc=''
946installman1dir=''
947man1dir=''
948man1direxp=''
949man1ext=''
950installman3dir=''
951man3dir=''
952man3direxp=''
953man3ext=''
954modetype=''
955multiarch=''
956mydomain=''
957myhostname=''
958phostname=''
2304df62
AD
959c=''
960n=''
b4eb6b3d
JH
961d_eofnblk=''
962eagain=''
963o_nonblock=''
964rd_nodata=''
2cc61e15 965need_va_copy=''
b4eb6b3d
JH
966netdb_hlen_type=''
967netdb_host_type=''
968netdb_name_type=''
969netdb_net_type=''
970groupcat=''
971hostcat=''
972passcat=''
973orderlib=''
974ranlib=''
975d_perl_otherlibdirs=''
976otherlibdirs=''
2304df62
AD
977package=''
978spackage=''
b4eb6b3d
JH
979pager=''
980api_revision=''
981api_subversion=''
982api_version=''
983api_versionstring=''
984patchlevel=''
151e6568 985perl_patchlevel=''
b4eb6b3d
JH
986revision=''
987subversion=''
988version=''
861eb78d 989version_patchlevel_string=''
b4eb6b3d
JH
990perl5=''
991perladmin=''
992perlpath=''
993d_nv_preserves_uv=''
b4eb6b3d
JH
994i16size=''
995i16type=''
996i32size=''
997i32type=''
998i64size=''
999i64type=''
1000i8size=''
1001i8type=''
1002ivsize=''
1003ivtype=''
53133ed1 1004nv_preserves_uv_bits=''
b4eb6b3d
JH
1005nvsize=''
1006nvtype=''
1007u16size=''
1008u16type=''
1009u32size=''
1010u32type=''
1011u64size=''
1012u64type=''
1013u8size=''
1014u8type=''
1015uvsize=''
1016uvtype=''
1017ivdformat=''
1018nvEUformat=''
1019nvFUformat=''
1020nvGUformat=''
1021nveformat=''
1022nvfformat=''
1023nvgformat=''
1024uvXUformat=''
1025uvoformat=''
1026uvuformat=''
1027uvxformat=''
1028pidtype=''
1029prefix=''
1030prefixexp=''
1031installprivlib=''
1032privlib=''
1033privlibexp=''
1034prototype=''
1035ptrsize=''
1036d_PRIXU64=''
1037d_PRId64=''
1038d_PRIi64=''
1039d_PRIo64=''
1040d_PRIu64=''
1041d_PRIx64=''
1042sPRIXU64=''
1043sPRId64=''
1044sPRIi64=''
1045sPRIo64=''
1046sPRIu64=''
1047sPRIx64=''
1048d_quad=''
1049quadkind=''
1050quadtype=''
1051uquadtype=''
1052drand01=''
1053randbits=''
1054randfunc=''
1055randseedtype=''
1056seedfunc=''
1057installscript=''
1058scriptdir=''
1059scriptdirexp=''
1060selectminbits=''
1061selecttype=''
8ff267be 1062sh=''
b4eb6b3d
JH
1063sig_count=''
1064sig_name=''
1065sig_name_init=''
1066sig_num=''
1067sig_num_init=''
76d3c696 1068sig_size=''
b4eb6b3d
JH
1069installsitearch=''
1070sitearch=''
1071sitearchexp=''
1072installsitebin=''
1073sitebin=''
1074sitebinexp=''
8d2cbf27
JH
1075installsitehtml1dir=''
1076sitehtml1dir=''
1077sitehtml1direxp=''
1078installsitehtml3dir=''
1079sitehtml3dir=''
1080sitehtml3direxp=''
b4eb6b3d
JH
1081installsitelib=''
1082sitelib=''
1083sitelib_stem=''
1084sitelibexp=''
91e123a8
JH
1085installsiteman1dir=''
1086siteman1dir=''
1087siteman1direxp=''
1088installsiteman3dir=''
1089siteman3dir=''
1090siteman3direxp=''
b4eb6b3d
JH
1091siteprefix=''
1092siteprefixexp=''
6e1038e0
MB
1093installsitescript=''
1094sitescript=''
1095sitescriptexp=''
b4eb6b3d
JH
1096sizesize=''
1097sizetype=''
a0d0e21e 1098so=''
b4eb6b3d 1099socksizetype=''
2304df62
AD
1100sharpbang=''
1101shsharp=''
1102spitshell=''
dfe9444c 1103src=''
b4eb6b3d
JH
1104ssizetype=''
1105startperl=''
2304df62 1106startsh=''
b4eb6b3d
JH
1107stdchar=''
1108d_stdio_stream_array=''
1109stdio_stream_array=''
1110sysman=''
5ff3f7a4 1111trnl=''
b4eb6b3d
JH
1112uidformat=''
1113uidsign=''
1114uidsize=''
1115uidtype=''
1116archname64=''
1117use64bitall=''
1118use64bitint=''
15b61c98 1119usefaststdio=''
b4eb6b3d
JH
1120ccflags_uselargefiles=''
1121ldflags_uselargefiles=''
1122libswanted_uselargefiles=''
1123uselargefiles=''
1124uselongdouble=''
1125usemorebits=''
1126usemultiplicity=''
2304df62 1127nm_opt=''
40a7a20a 1128nm_so_opt=''
2304df62
AD
1129runnm=''
1130usenm=''
b4eb6b3d 1131useperlio=''
29209bc5 1132usesocks=''
b4eb6b3d
JH
1133d_oldpthreads=''
1134use5005threads=''
1135useithreads=''
9514c62b 1136usereentrant=''
b4eb6b3d 1137usethreads=''
2304df62 1138incpath=''
2304df62
AD
1139mips_type=''
1140usrinc=''
b4eb6b3d
JH
1141d_vendorarch=''
1142installvendorarch=''
1143vendorarch=''
1144vendorarchexp=''
1145d_vendorbin=''
1146installvendorbin=''
1147vendorbin=''
1148vendorbinexp=''
8d2cbf27
JH
1149installvendorhtml1dir=''
1150vendorhtml1dir=''
1151vendorhtml1direxp=''
1152installvendorhtml3dir=''
1153vendorhtml3dir=''
1154vendorhtml3direxp=''
b4eb6b3d
JH
1155d_vendorlib=''
1156installvendorlib=''
1157vendorlib=''
1158vendorlib_stem=''
1159vendorlibexp=''
91e123a8
JH
1160installvendorman1dir=''
1161vendorman1dir=''
1162vendorman1direxp=''
1163installvendorman3dir=''
1164vendorman3dir=''
1165vendorman3direxp=''
b4eb6b3d
JH
1166usevendorprefix=''
1167vendorprefix=''
1168vendorprefixexp=''
6e1038e0
MB
1169d_vendorscript=''
1170installvendorscript=''
1171vendorscript=''
1172vendorscriptexp=''
d56c5707 1173versiononly=''
b4eb6b3d
JH
1174defvoidused=''
1175voidflags=''
3659ebf1
JH
1176yacc=''
1177yaccflags=''
2304df62
AD
1178CONFIG=''
1179
ecfc5424
AD
1180define='define'
1181undef='undef'
1182smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1183rmlist=''
1184
1185: We must find out about Eunice early
1186eunicefix=':'
1187if test -f /etc/unixtovms; then
1188 eunicefix=/etc/unixtovms
1189fi
1190if test -f /etc/unixtovms.exe; then
1191 eunicefix=/etc/unixtovms.exe
1192fi
1193
cfb04860 1194: Set executable suffix now -- needed before hints available
6153ba32
PG
1195if test -f "/libs/version.library"; then
1196: Amiga OS
1197 _exe=""
1198elif test -f "/system/gnu_library/bin/ar.pm"; then
1199: Stratus VOS
cfb04860 1200 _exe=".pm"
6153ba32
PG
1201elif test -n "$DJGPP"; then
1202: DOS DJGPP
cfb04860 1203 _exe=".exe"
5c728af0 1204elif test -d c:/. -o -n "$is_os2" ; then
506faf56 1205: OS/2 or cygwin
ba863942
JH
1206 _exe=".exe"
1207fi
868439a2 1208
b4eb6b3d 1209i_whoami=''
9da7673b
MB
1210ccname=''
1211ccversion=''
1212perllibs=''
1213: set useposix=false in your hint file to disable the POSIX extension.
1214useposix=true
1215: set useopcode=false in your hint file to disable the Opcode extension.
1216useopcode=true
1217: Trailing extension. Override this in a hint file, if needed.
1218: Extra object files, if any, needed on this platform.
1219archobjs=''
1220archname=''
ff935051
JH
1221: Possible local include directories to search.
1222: Set locincpth to "" in a hint file to defeat local include searches.
1223locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1224locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1225:
1226: no include file wanted by default
1227inclwanted=''
1228
b4eb6b3d 1229groupstype=''
64615a5e 1230libnames=''
732c9516
JH
1231: change the next line if compiling for Xenix/286 on Xenix/386
1232xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1233: Possible local library directories to search.
1234loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1235loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1236
1237: general looking path for locating libraries
5869b1f1 1238glibpth="/lib /usr/lib $xlibpth"
732c9516 1239glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1240test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1241test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1242
1243: Private path used by Configure to find libraries. Its value
1244: is prepended to libpth. This variable takes care of special
1245: machines, like the mips. Usually, it should be empty.
1246plibpth=''
1247
1cfa4ec7
GS
1248: default library list
1249libswanted=''
921b2963 1250: some systems want to use only the non-versioned libso:s
1cfa4ec7 1251ignore_versioned_solibs=''
9da7673b
MB
1252siteman1dir=''
1253siteman3dir=''
1254sitescript=''
b4eb6b3d
JH
1255archname64=''
1256ccflags_uselargefiles=''
1257ldflags_uselargefiles=''
1258libswanted_uselargefiles=''
1259: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1260: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1261: set usethreads on the Configure command line to enable threads.
cd040c5e 1262usereentrant='undef'
9da7673b
MB
1263: full support for void wanted by default
1264defvoidused=15
1265
ecfc5424 1266: List of libraries we want.
15431986 1267: If anyone needs extra -lxxx, put those in a hint file.
6bdd71ef
AB
1268libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1269libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1aef975c 1270: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1271: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1272glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1273glibpth="/usr/shlib $glibpth"
1274: Do not use vfork unless overridden by a hint file.
1275usevfork=false
1276
8ff267be 1277: Find the basic shell for Bourne shell scripts
1278case "$sh" in
1279'')
8ff267be 1280 case "$SYSTYPE" in
1281 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1282 *) xxx='/bin/sh';;
1283 esac
1284 if test -f "$xxx"; then
1285 sh="$xxx"
1286 else
1287 : Build up a list and do a single loop so we can 'break' out.
1288 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1289 for xxx in sh bash ksh pdksh ash; do
1290 for p in $pth; do
1291 try="$try ${p}/${xxx}"
1292 done
1293 done
1294 for xxx in $try; do
1295 if test -f "$xxx"; then
1296 sh="$xxx";
8ff267be 1297 break
a5a94ea5
JH
1298 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1299 sh="$xxx";
1300 break
8ff267be 1301 elif test -f "$xxx.exe"; then
1302 sh="$xxx";
8ff267be 1303 break
1304 fi
1305 done
1306 fi
1307 ;;
1308esac
1309
1310case "$sh" in
a33c94aa 1311'') cat >&2 <<EOM
8ff267be 1312$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1313
8ff267be 1314Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1315Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1316we'll try to straighten this all out.
8ff267be 1317EOM
1318 exit 1
1319 ;;
1320esac
1321
760ac839 1322: see if sh knows # comments
73614538 1323if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1324 shsharp=true
1325 spitshell=cat
760ac839 1326 xcat=/bin/cat
a931254c
JH
1327 test -f $xcat$_exe || xcat=/usr/bin/cat
1328 if test ! -f $xcat$_exe; then
4bdb8fb5 1329 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1330 if test -f $p/cat$_exe; then
1deb0a86 1331 xcat=$p/cat
3c728e00
JH
1332 break
1333 fi
1334 done
1deb0a86
JH
1335 if test ! -f $xcat$_exe; then
1336 echo "Can't find cat anywhere!"
3c728e00
JH
1337 exit 1
1338 fi
1339 fi
5440bc8e
JH
1340 echo "#!$xcat" >sharp
1341 $eunicefix sharp
1342 chmod +x sharp
1343 ./sharp > today
760ac839 1344 if test -s today; then
760ac839
LW
1345 sharpbang='#!'
1346 else
5440bc8e
JH
1347 echo "#! $xcat" > sharp
1348 $eunicefix sharp
1349 chmod +x sharp
1350 ./sharp > today
760ac839 1351 if test -s today; then
760ac839
LW
1352 sharpbang='#! '
1353 else
760ac839
LW
1354 sharpbang=': use '
1355 fi
1356 fi
1357else
dfe9444c 1358 echo " "
8ff267be 1359 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1360 shsharp=false
1361 cd ..
1362 echo "exec grep -v '^[ ]*#'" >spitshell
1363 chmod +x spitshell
1364 $eunicefix spitshell
1365 spitshell=`pwd`/spitshell
1366 cd UU
1367 echo "I presume that if # doesn't work, #! won't work either!"
1368 sharpbang=': use '
1369fi
5440bc8e 1370rm -f sharp today
760ac839
LW
1371
1372: figure out how to guarantee sh startup
8ff267be 1373case "$startsh" in
1374'') startsh=${sharpbang}${sh} ;;
1375*)
760ac839 1376esac
5440bc8e 1377cat >sharp <<EOSS
760ac839
LW
1378$startsh
1379set abc
1380test "$?abc" != 1
1381EOSS
1382
5440bc8e
JH
1383chmod +x sharp
1384$eunicefix sharp
1385if ./sharp; then
8ff267be 1386 : echo "Yup, it does."
760ac839 1387else
dfe9444c
AD
1388 echo "Hmm... '$startsh' does not guarantee sh startup..."
1389 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1390fi
5440bc8e 1391rm -f sharp
760ac839 1392
aebf16e7
AD
1393
1394: Save command line options in file UU/cmdline.opt for later use in
1395: generating config.sh.
1396cat > cmdline.opt <<EOSH
1397# Configure command line arguments.
1398config_arg0='$0'
1399config_args='$*'
1400config_argc=$#
1401EOSH
1402argn=1
ee45ea83
IZ
1403args_exp=''
1404args_sep=''
aebf16e7
AD
1405for arg in "$@"; do
1406 cat >>cmdline.opt <<EOSH
1407config_arg$argn='$arg'
1408EOSH
ee45ea83
IZ
1409 # Extreme backslashitis: replace each ' by '"'"'
1410 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1411$arg
1412EOC
1413 arg_exp=`cat cmdl.opt`
1414 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1415 argn=`expr $argn + 1`
ee45ea83 1416 args_sep=' '
aebf16e7 1417done
ee45ea83
IZ
1418# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1419# used by ./hints/os2.sh
1420rm -f cmdl.opt
aebf16e7 1421
2304df62
AD
1422: produce awk script to parse command line options
1423cat >options.awk <<'EOF'
1424BEGIN {
02e93a22 1425 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1426
1427 len = length(optstr);
1428 for (i = 1; i <= len; i++) {
1429 c = substr(optstr, i, 1);
1430 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1431 if (a == ":") {
1432 arg[c] = 1;
1433 i++;
1434 }
1435 opt[c] = 1;
1436 }
1437}
1438{
1439 expect = 0;
1440 str = $0;
1441 if (substr(str, 1, 1) != "-") {
1442 printf("'%s'\n", str);
1443 next;
1444 }
1445 len = length($0);
1446 for (i = 2; i <= len; i++) {
1447 c = substr(str, i, 1);
1448 if (!opt[c]) {
1449 printf("-%s\n", substr(str, i));
1450 next;
1451 }
1452 printf("-%s\n", c);
1453 if (arg[c]) {
1454 if (i < len)
1455 printf("'%s'\n", substr(str, i + 1));
1456 else
1457 expect = 1;
1458 next;
1459 }
1460 }
1461}
1462END {
1463 if (expect)
1464 print "?";
1465}
1466EOF
1467
1468: process the command line options
4633a7c4
LW
1469set X `for arg in "$@"; do echo "X$arg"; done |
1470 sed -e s/X// | awk -f options.awk`
2304df62
AD
1471eval "set $*"
1472shift
1473rm -f options.awk
1474
1475: set up default values
1476fastread=''
1477reuseval=false
1478config_sh=''
1479alldone=''
1480error=''
1481silent=''
1482extractsh=''
ecfc5424 1483override=''
16d20bd9 1484knowitall=''
02e93a22 1485rm -f optdef.sh posthint.sh
28757baa 1486cat >optdef.sh <<EOS
1487$startsh
1488EOS
2304df62 1489
dfe9444c 1490
2304df62
AD
1491: option parsing
1492while test $# -gt 0; do
1493 case "$1" in
1494 -d) shift; fastread=yes;;
1495 -e) shift; alldone=cont;;
1496 -f)
1497 shift
1498 cd ..
1499 if test -r "$1"; then
1500 config_sh="$1"
1501 else
a0d0e21e 1502 echo "$me: cannot read config file $1." >&2
2304df62
AD
1503 error=true
1504 fi
1505 cd UU
1506 shift;;
1507 -h) shift; error=true;;
1508 -r) shift; reuseval=true;;
dfe9444c 1509 -s) shift; silent=true; realsilent=true;;
2304df62 1510 -E) shift; alldone=exit;;
16d20bd9 1511 -K) shift; knowitall=true;;
ecfc5424 1512 -O) shift; override=true;;
dfe9444c 1513 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1514 -D)
1515 shift
1516 case "$1" in
1517 *=)
1518 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1519 echo "$me: ignoring -D $1" >&2
1520 ;;
ecfc5424 1521 *=*) echo "$1" | \
1aef975c
AD
1522 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1523 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1524 esac
1525 shift
1526 ;;
1527 -U)
1528 shift
1529 case "$1" in
1aef975c 1530 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1531 *=*)
1532 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1533 echo "$me: ignoring -U $1" >&2
1534 ;;
1aef975c 1535 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1536 esac
1537 shift
1538 ;;
02e93a22
JH
1539 -A)
1540 shift
1541 xxx=''
1542 yyy="$1"
02e93a22 1543 zzz=''
5f83a3e9 1544 uuu=undef
02e93a22 1545 case "$yyy" in
f7c31117 1546 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
5f83a3e9
JH
1547 case "$zzz" in
1548 *:*) zzz='' ;;
1549 *) xxx=append
f7c31117
JH
1550 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1551 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
5f83a3e9
JH
1552 esac
1553 ;;
1554 esac
1555 case "$xxx" in
1556 '') case "$yyy" in
f7c31117
JH
1557 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1558 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1559 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1560 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1561 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1562 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
5f83a3e9
JH
1563 esac
1564 ;;
1565 esac
02e93a22
JH
1566 case "$xxx" in
1567 append)
5f83a3e9 1568 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1569 clear)
5f83a3e9 1570 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1571 define)
1572 case "$zzz" in
1573 '') zzz=define ;;
1574 esac
5f83a3e9 1575 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1576 eval)
5f83a3e9 1577 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1578 prepend)
5f83a3e9 1579 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1580 undef)
1581 case "$zzz" in
1582 '') zzz="$uuu" ;;
1583 esac
5f83a3e9
JH
1584 echo "$yyy=$zzz" >> posthint.sh ;;
1585 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1586 esac
bde6b06b 1587 shift
02e93a22 1588 ;;
dfe9444c 1589 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1590 exit 0;;
2304df62 1591 --) break;;
a0d0e21e 1592 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1593 *) break;;
1594 esac
1595done
1596
1597case "$error" in
1598true)
1599 cat >&2 <<EOM
2afac517 1600Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1601 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1602 -d : use defaults for all answers.
1603 -e : go on without questioning past the production of config.sh.
1604 -f : specify an alternate default configuration file.
1605 -h : print this help message and exit (with an error status).
1606 -r : reuse C symbols value if possible (skips costly nm extraction).
1607 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1608 -D : define symbol to have some value:
1609 -D symbol symbol gets the value 'define'
1610 -D symbol=value symbol gets the value 'value'
2304df62 1611 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1612 -K : do not use unless you know what you are doing.
ecfc5424 1613 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1614 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1615 -U : undefine symbol:
1616 -U symbol symbol gets the value 'undef'
1617 -U symbol= symbol gets completely empty
02e93a22 1618 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1619 -A symbol=value append " "value to symbol
02e93a22
JH
1620 -A append:symbol=value append value to symbol
1621 -A define:symbol=value define symbol to have value
02e93a22
JH
1622 -A clear:symbol define symbol to be ''
1623 -A define:symbol define symbol to be 'define'
1624 -A eval:symbol=value define symbol to be eval of value
1625 -A prepend:symbol=value prepend value to symbol
1626 -A undef:symbol define symbol to be 'undef'
1627 -A undef:symbol= define symbol to be ''
2304df62
AD
1628 -V : print version number and exit (with a zero status).
1629EOM
1630 exit 1
1631 ;;
1632esac
1633
dfe9444c
AD
1634: Sanity checks
1635case "$fastread$alldone" in
1636yescont|yesexit) ;;
1637*)
aaeb8e51
GS
1638 case "$extractsh" in
1639 true) ;;
1640 *)
1641 if test ! -t 0; then
1642 echo "Say 'sh Configure', not 'sh <Configure'"
1643 exit 1
1644 fi
1645 ;;
1646 esac
dfe9444c
AD
1647 ;;
1648esac
1649
2304df62
AD
1650exec 4>&1
1651case "$silent" in
1652true) exec 1>/dev/null;;
1653esac
1654
ecfc5424 1655: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1656touch optdef.sh
1657. ./optdef.sh
02e93a22
JH
1658: create the posthint manipulation script and leave the file out there...
1659touch posthint.sh
a0d0e21e 1660
2304df62 1661: set package name
85e6fe83 1662package=perl5
b4eb6b3d
JH
1663first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1664last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1665case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1666ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1667*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1668esac
2304df62 1669
2304df62
AD
1670: Some greps do not return status, grrr.
1671echo "grimblepritz" >grimble
1672if grep blurfldyick grimble >/dev/null 2>&1 ; then
1673 contains=contains
1674elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1675 contains=grep
1676else
1677 contains=contains
1678fi
1679rm -f grimble
1680: the following should work in any shell
1681case "$contains" in
1682contains*)
1683 echo " "
1684 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1685 cat >contains <<'EOSS'
1686grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1687EOSS
1688chmod +x contains
1689esac
1690
dfe9444c
AD
1691: Find the path to the source tree
1692case "$src" in
1693'') case "$0" in
b233458b
JH
1694 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1695 case "$src" in
1696 /*) ;;
8504afb7 1697 .) ;;
b233458b
JH
1698 *) src=`cd ../$src && pwd` ;;
1699 esac
1700 ;;
dfe9444c
AD
1701 *) src='.';;
1702 esac;;
1703esac
1704case "$src" in
1705'') src=/
1706 rsrc=/
1707 ;;
1708/*) rsrc="$src";;
1709*) rsrc="../$src";;
1710esac
1711if test -f $rsrc/Configure && \
1712 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1713then
1714 : found it, so we are ok.
1715else
1716 rsrc=''
1717 for src in . .. ../.. ../../.. ../../../..; do
1718 if test -f ../$src/Configure && \
1719 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1720 then
1721 rsrc=../$src
1722 break
1723 fi
1724 done
1725fi
1726case "$rsrc" in
1727'')
1728 cat <<EOM >&4
1729
1730Sorry, I can't seem to locate the source dir for $package. Please start
1731Configure with an explicit path -- i.e. /some/path/Configure.
1732
1733EOM
1734 exit 1
1735 ;;
1736../.) rsrc='..';;
1737*)
1738 echo " "
1739 echo "Sources for $package found in \"$src\"." >&4
1740 ;;
1741esac
1742
1743: script used to extract .SH files with variable substitutions
1744cat >extract <<'EOS'
a02608de 1745PERL_CONFIG_SH=true
dfe9444c 1746echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1747if test -f MANIFEST; then
1748 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1749else
1750 echo "(Looking for .SH files under the source directory.)"
6904989c 1751 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1752fi
1753shift
1754case $# in
6904989c 17550) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1756esac
6904989c 1757if test ! -f "$src/$1"; then
dfe9444c
AD
1758 shift
1759fi
1760mkdir_p='
1761name=$1;
1762create="";
1763while test $name; do
1764 if test ! -d "$name"; then
1765 create="$name $create";
1766 name=`echo $name | sed -e "s|^[^/]*$||"`;
1767 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1768 else
1769 name="";
1770 fi;
1771done;
1772for file in $create; do
1773 mkdir $file;
1774done
1775'
1776for file in $*; do
1777 case "$src" in
1778 ".")
1779 case "$file" in
1780 */*)
1781 dir=`expr X$file : 'X\(.*\)/'`
1782 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1783 (cd "$dir" && . ./$file)
dfe9444c
AD
1784 ;;
1785 *)
1786 . ./$file
1787 ;;
1788 esac
1789 ;;
1790 *)
1791 case "$file" in
1792 */*)
1793 dir=`expr X$file : 'X\(.*\)/'`
1794 file=`expr X$file : 'X.*/\(.*\)'`
1795 (set x $dir; shift; eval $mkdir_p)
6904989c 1796 sh <"$src/$dir/$file"
dfe9444c
AD
1797 ;;
1798 *)
6904989c 1799 sh <"$src/$file"
dfe9444c
AD
1800 ;;
1801 esac
1802 ;;
1803 esac
1804done
6904989c 1805if test -f "$src/config_h.SH"; then
dfe9444c
AD
1806 if test ! -f config.h; then
1807 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1808 . "$src/config_h.SH"
dfe9444c
AD
1809 fi
1810fi
1811EOS
1812
1813: extract files and exit if asked to do so
1814case "$extractsh" in
1815true)
1816 case "$realsilent" in
1817 true) ;;
1818 *) exec 1>&4;;
1819 esac
1820 case "$config_sh" in
1821 '') config_sh='config.sh';;
1822 esac
1823 echo " "
1824 echo "Fetching answers from $config_sh..."
1825 cd ..
1826 . $config_sh
1827 test "$override" && . ./optdef.sh
1828 echo " "
1829 . UU/extract
1830 rm -rf UU
24ccb310 1831 echo "Extraction done."
dfe9444c
AD
1832 exit 0
1833 ;;
1834esac
1835
1836: Eunice requires " " instead of "", can you believe it
1837echo " "
1838: Here we go...
1839echo "Beginning of configuration questions for $package."
1840
1841trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1842
2304df62
AD
1843: first determine how to suppress newline on echo command
1844echo " "
1845echo "Checking echo to see how to suppress newlines..."
1846(echo "hi there\c" ; echo " ") >.echotmp
1847if $contains c .echotmp >/dev/null 2>&1 ; then
1848 echo "...using -n."
1849 n='-n'
1850 c=''
1851else
1852 cat <<'EOM'
1853...using \c
1854EOM
1855 n=''
1856 c='\c'
1857fi
1858echo $n "The star should be here-->$c"
1859echo '*'
1860rm -f .echotmp
1861
1862: Now test for existence of everything in MANIFEST
1863echo " "
6904989c 1864if test -f "$rsrc/MANIFEST"; then
2304df62 1865 echo "First let's make sure your kit is complete. Checking..." >&4
4242830c 1866 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
2304df62 1867 rm -f missing
dfe9444c 1868 tmppwd=`pwd`
2304df62 1869 for filelist in x??; do
6904989c 1870 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1871 done
1872 if test -s missing; then
1873 cat missing >&4
1874 cat >&4 <<'EOM'
1875
1876THIS PACKAGE SEEMS TO BE INCOMPLETE.
1877
1878You have the option of continuing the configuration process, despite the
1879distinct possibility that your kit is damaged, by typing 'y'es. If you
1880do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1881and contact the author (perlbug@perl.org).
2304df62
AD
1882
1883EOM
1884 echo $n "Continue? [n] $c" >&4
1885 read ans
1886 case "$ans" in
1887 y*)
1888 echo "Continuing..." >&4
1889 rm -f missing
1890 ;;
1891 *)
1892 echo "ABORTING..." >&4
1893 kill $$
1894 ;;
1895 esac
1896 else
dfe9444c 1897 echo "Looks good..."
2304df62
AD
1898 fi
1899else
1900 echo "There is no MANIFEST file. I hope your kit is complete !"
1901fi
1902rm -f missing x??
1903
5ff3f7a4
GS
1904echo " "
1905: Find the appropriate value for a newline for tr
1906if test -n "$DJGPP"; then
1907 trnl='\012'
1908fi
1909if test X"$trnl" = X; then
1910 case "`echo foo|tr '\n' x 2>/dev/null`" in
1911 foox) trnl='\n' ;;
1912 esac
1913fi
1914if test X"$trnl" = X; then
1915 case "`echo foo|tr '\012' x 2>/dev/null`" in
1916 foox) trnl='\012' ;;
1917 esac
1918fi
1919if test X"$trnl" = X; then
8be2c24c
JH
1920 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1921 fooxy) trnl='\n\r' ;;
1922 esac
1923fi
1924if test X"$trnl" = X; then
5ff3f7a4
GS
1925 cat <<EOM >&2
1926
1927$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1928
1929EOM
1930 exit 1
1931fi
1932
2304df62
AD
1933: compute the number of columns on the terminal for proper question formatting
1934case "$COLUMNS" in
1935'') COLUMNS='80';;
1936esac
1937
1938: set up the echo used in my read
1939myecho="case \"\$xxxm\" in
1940'') echo $n \"\$rp $c\" >&4;;
1941*) case \"\$rp\" in
1942 '') echo $n \"[\$xxxm] $c\";;
1943 *)
1944 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1945 echo \"\$rp\" >&4
1946 echo $n \"[\$xxxm] $c\" >&4
1947 else
1948 echo $n \"\$rp [\$xxxm] $c\" >&4
1949 fi
1950 ;;
1951 esac;;
1952esac"
1953
1954: now set up to do reads with possible shell escape and default assignment
1955cat <<EOSC >myread
28757baa 1956$startsh
2304df62
AD
1957xxxm=\$dflt
1958$myecho
1959ans='!'
1960case "\$fastread" in
1961yes) case "\$dflt" in
1962 '') ;;
1963 *) ans='';
1964 case "\$silent-\$rp" in
1965 true-) ;;
1966 *) echo " " >&4;;
1967 esac;;
1968 esac;;
1969*) case "\$silent" in
1970 true) case "\$rp" in
1971 '') ans='';;
1972 esac;;
1973 esac;;
1974esac
1975while expr "X\$ans" : "X!" >/dev/null; do
1976 read answ
1977 set x \$xxxm
1978 shift
dfe9444c 1979 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1980 case "\$answ" in
dfe9444c
AD
1981 "!")
1982 sh 1>&4
1983 echo " "
1984 $myecho
1985 ;;
1986 !*)
1987 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1988 shift
1989 sh 1>&4 -c "\$*"
1990 echo " "
1991 $myecho
1992 ;;
2304df62
AD
1993 "\$ans")
1994 case "\$ans" in
ecfc5424
AD
1995 \\&*)
1996 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1997 shift
1998 case "\$1" in
1999 -d)
2000 fastread=yes
40a7a20a 2001 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
2002 ;;
2003 -*)
40a7a20a 2004 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
2005 ;;
2006 esac
2007 $myecho
2008 ans=!
2009 ;;
2304df62
AD
2010 esac;;
2011 *)
2012 case "\$aok" in
2013 y)
2014 echo "*** Substitution done -- please confirm."
2015 xxxm="\$ans"
c9795ab7 2016 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
2017 xxxm="\$ans"
2018 ans=!
2019 ;;
2020 *)
2021 echo "*** Error -- try again."
2022 ans=!
2023 ;;
2024 esac
2025 $myecho
2026 ;;
2027 esac
2028 case "\$ans\$xxxm\$nostick" in
2029 '')
2030 ans=!
2031 $myecho
2032 ;;
2033 esac
2034done
2035case "\$ans" in
2036'') ans="\$xxxm";;
2037esac
2038EOSC
2039
2040: create .config dir to save info across Configure sessions
2041test -d ../.config || mkdir ../.config
2042cat >../.config/README <<EOF
2043This directory created by Configure to save information that should
dfe9444c 2044persist across sessions for $package.
2304df62
AD
2045
2046You may safely delete it if you wish.
2047EOF
2048
9507cadf 2049xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 2050case "$usedevel" in
0107c034 2051$define|true|[yY]*) ;;
9507cadf 2052*) case "$xversion" in
0107c034
JH
2053 *[13579])
2054 cat >&4 <<EOH
2055*** WHOA THERE!!! ***
2056
2057 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
2058 The version of this $package distribution is $xversion, that is, odd,
2059 (as opposed to even) and that signifies a development release.
3d5d58b1 2060 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
2061
2062 Do ***NOT*** install this into production use.
2063 Data corruption and crashes are possible.
2064
2065 It is most seriously suggested that you do not continue any further
2066 unless you want to help in developing and debugging Perl.
2067
6adc6a45
JH
2068 If you *still* want to build perl, you can answer 'y' now,
2069 or pass -Dusedevel to Configure.
2070
0107c034
JH
2071EOH
2072 rp='Do you really want to continue?'
2073 dflt='n'
2074 . ./myread
2075 case "$ans" in
8feeef0e
JH
2076 [yY]) echo >&4 "Okay, continuing."
2077 usedevel="$define" ;;
0107c034
JH
2078 *) echo >&4 "Okay, bye."
2079 exit 1
2080 ;;
2081 esac
2082 ;;
2083 esac
2084 ;;
2085esac
8feeef0e
JH
2086case "$usedevel" in
2087$define|true|[yY]*)
2088 case "$versiononly" in
2089 '') versiononly="$define" ;;
2090 esac
2091 case "$installusrbinperl" in
2092 '') installusrbinperl="$undef" ;;
2093 esac
2094 ;;
2095esac
0107c034 2096
2304df62
AD
2097: general instructions
2098needman=true
2099firsttime=true
760ac839 2100user=`(logname) 2>/dev/null`
dfe9444c
AD
2101case "$user" in
2102'') user=`whoami 2>&1`;;
760ac839 2103esac
2304df62
AD
2104if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2105 firsttime=false
2106 echo " "
2107 rp='Would you like to see the instructions?'
2108 dflt=n
2109 . ./myread
2110 case "$ans" in
2111 [yY]*) ;;
2112 *) needman=false;;
2113 esac
2114fi
2115if $needman; then
2116 cat <<EOH
4e2a5f63 2117
2304df62 2118This installation shell script will examine your system and ask you questions
a0d0e21e 2119to determine how the perl5 package should be installed. If you get
2304df62
AD
2120stuck on a question, you may use a ! shell escape to start a subshell or
2121execute a command. Many of the questions will have default answers in square
2122brackets; typing carriage return will give you the default.
2123
2124On some of the questions which ask for file or directory names you are allowed
2125to use the ~name construct to specify the login directory belonging to "name",
2126even if you don't have a shell which knows about that. Questions where this is
2127allowed will be marked "(~name ok)".
2128
2129EOH
2130 rp=''
2131 dflt='Type carriage return to continue'
2132 . ./myread
2133 cat <<'EOH'
2134
2135The prompter used in this script allows you to use shell variables and
2136backticks in your answers. You may use $1, $2, etc... to refer to the words
2137in the default answer, as if the default line was a set of arguments given to a
2138script shell. This means you may also use $* to repeat the whole default line,
2139so you do not have to re-type everything to add something to the default.
2140
2141Everytime there is a substitution, you will have to confirm. If there is an
2142error (e.g. an unmatched backtick), the default answer will remain unchanged
2143and you will be prompted again.
2144
2145If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2146the questions and use the computed defaults (or the previous answers if there
2147was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 2148You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 2149on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
2150
2151EOH
2152 . ./myread
2153 cat <<EOH
2154
2155Much effort has been expended to ensure that this shell script will run on any
2156Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
2157Configure and run it again. If you can't run Configure for some reason,
2158you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 2159have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
2160
2161This installation script affects things in two ways:
2162
21631) it may do direct variable substitutions on some of the files included
2164 in this kit.
21652) it builds a config.h file for inclusion in C programs. You may edit
2166 any of these files as the need arises after running this script.
2167
2168If you make a mistake on a question, there is no easy way to back up to it
2169currently. The easiest thing to do is to edit config.sh and rerun all the SH
2170files. Configure will offer to let you do this before it runs the SH files.
2171
2172EOH
2173 dflt='Type carriage return to continue'
2174 . ./myread
2175 case "$firsttime" in
2176 true) echo $user >>../.config/instruct;;
2177 esac
2178fi
2179
2304df62
AD
2180: find out where common programs are
2181echo " "
2182echo "Locating common programs..." >&4
2183cat <<EOSC >loc
2184$startsh
2185case \$# in
21860) exit 1;;
2187esac
2188thing=\$1
2189shift
2190dflt=\$1
2191shift
2192for dir in \$*; do
2193 case "\$thing" in
2194 .)
2195 if test -d \$dir/\$thing; then
2196 echo \$dir
2197 exit 0
2198 fi
2199 ;;
2200 *)
a0d0e21e 2201 for thisthing in \$dir/\$thing; do
ecfc5424 2202 : just loop through to pick last item
a0d0e21e 2203 done
25f94b33 2204 if test -f \$thisthing; then
a0d0e21e 2205 echo \$thisthing
2304df62 2206 exit 0
a5a94ea5
JH
2207 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2208 echo \$thisthing
2209 exit 0
2304df62 2210 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2211 if test -n "$DJGPP"; then
2212 echo \$dir/\$thing.exe
b921d661 2213 elif test "$eunicefix" != ":"; then
c4f23d77
AD
2214 : on Eunice apparently
2215 echo \$dir/\$thing
b921d661 2216 exit 0
c4f23d77 2217 fi
2d736872 2218 exit 0
2304df62
AD
2219 fi
2220 ;;
2221 esac
2222done
2223echo \$dflt
2224exit 1
2225EOSC
2226chmod +x loc
2227$eunicefix loc
2228loclist="
2229awk
2230cat
f8006fac 2231chmod
b4eb6b3d
JH
2232comm
2233cp
2304df62
AD
2234echo
2235expr
2236grep
a0d0e21e 2237ls
b4eb6b3d 2238mkdir
2304df62
AD
2239rm
2240sed
b4eb6b3d 2241sort
85e6fe83 2242touch
2304df62 2243tr
b4eb6b3d 2244uniq
2304df62
AD
2245"
2246trylist="
2247Mcc
dfe9444c 2248ar
3659ebf1 2249bison
b4eb6b3d 2250byacc
2304df62 2251cpp
b4eb6b3d 2252csh
2304df62
AD
2253date
2254egrep
1fef16b3 2255gmake
8ff267be 2256gzip
b4eb6b3d 2257less
8ff267be 2258ln
3c728e00 2259make
b4eb6b3d 2260more
693762b4 2261nm
b4eb6b3d
JH
2262nroff
2263pg
2304df62
AD
2264test
2265uname
8ff267be 2266zip
2304df62 2267"
8e07c86e 2268pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2269pth="$pth /lib /usr/lib"
2270for file in $loclist; do
dfe9444c
AD
2271 eval xxx=\$$file
2272 case "$xxx" in
2273 /*|?:[\\/]*)
2274 if test -f "$xxx"; then
2275 : ok
2276 else
2277 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2278 xxx=`./loc $file $file $pth`
2279 fi
2280 ;;
2281 '') xxx=`./loc $file $file $pth`;;
2282 *) xxx=`./loc $xxx $xxx $pth`;;
2283 esac
a5a94ea5 2284 eval $file=$xxx$_exe
2304df62
AD
2285 eval _$file=$xxx
2286 case "$xxx" in
2287 /*)
2288 echo $file is in $xxx.
2289 ;;
8e07c86e
AD
2290 ?:[\\/]*)
2291 echo $file is in $xxx.
2292 ;;
2304df62 2293 *)
25f94b33
AD
2294 echo "I don't know where '$file' is, and my life depends on it." >&4
2295 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2296 exit 1
2304df62
AD
2297 ;;
2298 esac
2299done
2300echo " "
2301echo "Don't worry if any of the following aren't found..."
2302say=offhand
2303for file in $trylist; do
dfe9444c
AD
2304 eval xxx=\$$file
2305 case "$xxx" in
2306 /*|?:[\\/]*)
2307 if test -f "$xxx"; then
2308 : ok
2309 else
2310 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2311 xxx=`./loc $file $file $pth`
2312 fi
2313 ;;
2314 '') xxx=`./loc $file $file $pth`;;
2315 *) xxx=`./loc $xxx $xxx $pth`;;
2316 esac
306a8474 2317 eval $file=$xxx$_exe
2304df62
AD
2318 eval _$file=$xxx
2319 case "$xxx" in
2320 /*)
2321 echo $file is in $xxx.
2322 ;;
8e07c86e
AD
2323 ?:[\\/]*)
2324 echo $file is in $xxx.
2325 ;;
2304df62
AD
2326 *)
2327 echo "I don't see $file out there, $say."
2328 say=either
2329 ;;
2330 esac
2331done
2332case "$egrep" in
1fef16b3 2333egrep)
2304df62
AD
2334 echo "Substituting grep for egrep."
2335 egrep=$grep
868439a2 2336 _egrep=$grep
2304df62
AD
2337 ;;
2338esac
8ff267be 2339case "$ln" in
1fef16b3 2340ln)
8ff267be 2341 echo "Substituting cp for ln."
2342 ln=$cp
868439a2 2343 _ln=$cp
8ff267be 2344 ;;
2345esac
2e26f1d5
JH
2346case "$make" in
2347make)
2348 case "$gmake" in
2349 gmake)
2350 echo "I can't find make or gmake, and my life depends on it." >&4
2351 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2352 exit 1
2353 ;;
2354 esac
2355 ;;
2356esac
2357case "$gmake" in
2358gmake) ;;
2359*) # We can't have osname yet.
1fef16b3
JH
2360 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2361 # Assume that gmake, if found, is definitely GNU make
2362 # and prefer it over the system make.
2363 echo "Substituting gmake for make."
2364 make=$gmake
868439a2 2365 _make=$gmake
1fef16b3
JH
2366 fi
2367 ;;
a5a94ea5 2368esac
2304df62
AD
2369case "$test" in
2370test)
2371 echo "Hopefully test is built into your sh."
2372 ;;
2373*)
73614538 2374 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2375 echo "Using the test built into your sh."
2304df62
AD
2376 test=test
2377 _test=test
2378 fi
2379 ;;
2380esac
2381case "$echo" in
2382echo)
2383 echo "Hopefully echo is built into your sh."
2384 ;;
2385'') ;;
2386*)
2387 echo " "
2388echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2389 $echo $n "hi there$c" >foo1
2390 echo $n "hi there$c" >foo2
2391 if cmp foo1 foo2 >/dev/null 2>&1; then
2392 echo "They are compatible. In fact, they may be identical."
2393 else
2394 case "$n" in
2395 '-n') n='' c='\c';;
2396 *) n='-n' c='';;
2397 esac
2398 cat <<FOO
2399They are not compatible! You are probably running ksh on a non-USG system.
2400I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2401have echo built in and we may have to run some Bourne shell scripts. That
2402means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2403
2404FOO
2405 $echo $n "The star should be here-->$c"
2406 $echo "*"
2407 fi
2408 $rm -f foo1 foo2
2409 ;;
2410esac
2411
6b769f8f 2412cat <<EOS >trygcc
2573c5f9
JH
2413$startsh
2414EOS
6b769f8f 2415cat <<'EOSC' >>trygcc
2573c5f9
JH
2416case "$cc" in
2417'') ;;
2418*) $rm -f try try.*
2419 $cat >try.c <<EOM
2420int main(int argc, char *argv[]) {
2421 return 0;
2422}
2423EOM
e4778687 2424 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2425 :
2426 else
2427 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2428 despair=yes
2429 trygcc=yes
2430 case "$cc" in
2431 *gcc*) trygcc=no ;;
2432 esac
2433 case "`$cc -v -c try.c 2>&1`" in
2434 *gcc*) trygcc=no ;;
2435 esac
2436 if $test X"$trygcc" = Xyes; then
2437 if gcc -o try -c try.c; then
2438 echo " "
2439 echo "You seem to have a working gcc, though." >&4
2440 rp="Would you like to use it?"
2441 dflt=y
2442 if $test -f myread; then
2443 . ./myread
2444 else
2445 if $test -f UU/myread; then
2446 . ./UU/myread
2447 else
2448 echo "Cannot find myread, sorry. Aborting." >&2
2449 exit 1
2450 fi
2451 fi
2452 case "$ans" in
6371411c
RB
2453 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2454 if $test -f usethreads.cbu; then
2455 $cat >&4 <<EOM
2456
2457*** However, any setting of the C compiler flags (e.g. for thread support)
2458*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2459*** (together with e.g. -Dusethreads).
2460
2461EOM
2462 fi;;
2573c5f9
JH
2463 esac
2464 fi
2465 fi
6b769f8f
RB
2466 fi
2467 $rm -f try try.*
2468 ;;
2469esac
2470EOSC
2471
2472cat <<EOS >checkcc
2473$startsh
2474EOS
2475cat <<'EOSC' >>checkcc
2476case "$cc" in
2477'') ;;
2478*) $rm -f try try.*
2479 $cat >try.c <<EOM
2480int main(int argc, char *argv[]) {
2481 return 0;
2482}
2483EOM
2484 if $cc -o try $ccflags $ldflags try.c; then
2485 :
2486 else
2573c5f9 2487 if $test X"$despair" = Xyes; then
6b769f8f
RB
2488 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2489 fi
2490 $cat >&4 <<EOM
5dd4fbdf
MB
2491You need to find a working C compiler.
2492Either (purchase and) install the C compiler supplied by your OS vendor,
2493or for a free C compiler try http://gcc.gnu.org/
2494I cannot continue any further, aborting.
2495EOM
6b769f8f 2496 exit 1
2573c5f9
JH
2497 fi
2498 $rm -f try try.*
2499 ;;
2500esac
2501EOSC
2502
a0d0e21e
LW
2503: determine whether symbolic links are supported
2504echo " "
2505$touch blurfl
2506if $ln -s blurfl sym > /dev/null 2>&1 ; then
2507 echo "Symbolic links are supported." >&4
818f00be 2508 lns="$ln -s"
a0d0e21e
LW
2509else
2510 echo "Symbolic links are NOT supported." >&4
2511 lns="$ln"
2512fi
2513$rm -f blurfl sym
2514
dafca956
JH
2515: determine whether symbolic links are supported
2516echo " "
2517case "$lns" in
18ea2752 2518*"ln"*" -s")
dafca956
JH
2519 echo "Checking how to test for symbolic links..." >&4
2520 $lns blurfl sym
4b661809 2521 if $test "X$issymlink" = X; then
2e2a97a6
JH
2522 case "$newsh" in
2523 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2524 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525 esac
5d644a95
MB
2526 if test $? = 0; then
2527 issymlink="test -h"
2e2a97a6
JH
2528 else
2529 echo "Your builtin 'test -h' may be broken." >&4
2530 case "$test" in
2531 /*) ;;
2532 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2533 for p in $pth
2534 do
2535 if test -f "$p/$test"; then
2536 test="$p/$test"
2537 break
2538 fi
2539 done
2540 ;;
2541 esac
2542 case "$test" in
2543 /*)
2544 echo "Trying external '$test -h'." >&4
2545 issymlink="$test -h"
2546 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2547 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2548 issymlink=''
2549 fi
2550 ;;
2551 *) issymlink='' ;;
2552 esac
5d644a95
MB
2553 fi
2554 fi
4b661809 2555 if $test "X$issymlink" = X; then
dafca956 2556 if $test -L sym 2>/dev/null; then
5d644a95 2557 issymlink="$test -L"
2e2a97a6 2558 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2559 fi
2560 fi
4b661809 2561 if $test "X$issymlink" != X; then
5d644a95 2562 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2563 else
2564 echo "I do not know how you can test for symbolic links." >&4
2565 fi
2566 $rm -f blurfl sym
2567 ;;
2568*) echo "No symbolic links, so not testing for their testing..." >&4
2569 ;;
2570esac
2571echo " "
2572
2573
2574case "$mksymlinks" in
2575$define|true|[yY]*)
2576 case "$src" in
2577 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2578 exit 1
2579 ;;
4b661809 2580 *) case "$lns:$issymlink" in
f314eb9f 2581 *"ln"*" -s:"*"test -"?)
dafca956
JH
2582 echo "Creating the symbolic links..." >&4
2583 echo "(First creating the subdirectories...)" >&4
2584 cd ..
2585 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2586 read directory
2587 test -z "$directory" && break
2588 mkdir -p $directory
2589 done
2590 # Sanity check 1.
2591 if test ! -d t/base; then
2592 echo "Failed to create the subdirectories. Aborting." >&4
2593 exit 1
2594 fi
2595 echo "(Then creating the symlinks...)" >&4
2596 awk '{print $1}' $src/MANIFEST | while true; do
2597 read filename
2598 test -z "$filename" && break
2599 if test -f $filename; then
5d644a95 2600 if $issymlink $filename; then
dafca956
JH
2601 rm -f $filename
2602 fi
2603 fi
2604 if test -f $filename; then
2605 echo "$filename already exists, not symlinking."
2606 else
2607 ln -s $src/$filename $filename
2608 fi
2609 done
2610 # Sanity check 2.
a0d24b8a
JH
2611 if test ! -f t/base/lex.t; then
2612 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2613 exit 1
2614 fi
2615 cd UU
2616 ;;
2617 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2618 ;;
2619 esac
2620 ;;
2621 esac
2622 ;;
2623esac
2624
5440bc8e
JH
2625
2626case "$usecrosscompile" in
2627$define|true|[yY]*)
93bc48fa 2628 $echo "Cross-compiling..."
5440bc8e
JH
2629 croak=''
2630 case "$cc" in
2631 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2632 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2633 ar=$targetarch-ar
2634 # leave out ld, choosing it is more complex
2635 nm=$targetarch-nm
2636 ranlib=$targetarch-ranlib
93bc48fa 2637 $echo 'extern int foo;' > try.c
f8006fac 2638 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2639 shift
2640 if $test $# -gt 0; then
2641 incpth="$incpth $*"
f8006fac
JH
2642 incpth="`$echo $incpth|$sed 's/^ //'`"
2643 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2644 for i in $*; do
f8006fac 2645 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2646 if $test -d $j; then
2647 libpth="$libpth $j"
2648 fi
2649 done
f8006fac
JH
2650 libpth="`$echo $libpth|$sed 's/^ //'`"
2651 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2652 fi
2653 $rm -f try.c
5440bc8e
JH
2654 ;;
2655 esac
2656 case "$targetarch" in
93bc48fa
JH
2657 '') echo "Targetarch not defined." >&4; croak=y ;;
2658 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2659 esac
2660 case "$incpth" in
93bc48fa 2661 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2662 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2663 esac
2664 case "$libpth" in
93bc48fa 2665 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2666 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2667 esac
93bc48fa
JH
2668 case "$usrinc" in
2669 '') for i in $incpth; do
2670 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2671 usrinc=$i
2672 echo "Guessing usrinc $usrinc." >&4
2673 break
2674 fi
2675 done
2676 case "$usrinc" in
2677 '') echo "Usrinc not defined." >&4; croak=y ;;
2678 esac
2679 ;;
2680 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2681 esac
93bc48fa
JH
2682 case "$targethost" in
2683 '') echo "Targethost not defined." >&4; croak=y ;;
2684 *) echo "Using targethost $targethost." >&4
5440bc8e 2685 esac
93bc48fa
JH
2686 locincpth=' '
2687 loclibpth=' '
5440bc8e 2688 case "$croak" in
93bc48fa 2689 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2690 esac
2691 case "$src" in
2692 /*) run=$src/Cross/run
93c0359c 2693 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2694 to=$src/Cross/to
2695 from=$src/Cross/from
2696 ;;
93bc48fa 2697 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2698 run=$pwd/Cross/run
f8006fac 2699 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2700 to=$pwd/Cross/to
2701 from=$pwd/Cross/from
2702 ;;
2703 esac
2704 case "$targetrun" in
2705 '') targetrun=ssh ;;
2706 esac
2707 case "$targetto" in
2708 '') targetto=scp ;;
2709 esac
2710 case "$targetfrom" in
2711 '') targetfrom=scp ;;
2712 esac
2713 run=$run-$targetrun
2714 to=$to-$targetto
2715 from=$from-$targetfrom
93bc48fa
JH
2716 case "$targetdir" in
2717 '') targetdir=/tmp
2718 echo "Guessing targetdir $targetdir." >&4
2719 ;;
2720 esac
5440bc8e 2721 case "$targetuser" in
93bc48fa
JH
2722 '') targetuser=root
2723 echo "Guessing targetuser $targetuser." >&4
2724 ;;
5440bc8e
JH
2725 esac
2726 case "$targetfrom" in
2727 scp) q=-q ;;
2728 *) q='' ;;
2729 esac
2730 case "$targetrun" in
2731 ssh|rsh)
2732 cat >$run <<EOF
2733#!/bin/sh
93c0359c
JH
2734case "\$1" in
2735-cwd)
2736 shift
2737 cwd=\$1
2738 shift
2739 ;;
2740esac
2741case "\$cwd" in
2742'') cwd=$targetdir ;;
2743esac
5440bc8e
JH
2744exe=\$1
2745shift
93c0359c
JH
2746if $test ! -f \$exe.xok; then
2747 $to \$exe
2748 $touch \$exe.xok
2749fi
2750$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2751EOF
2752 ;;
93bc48fa 2753 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2754 exit 1
2755 ;;
2756 esac
93c0359c
JH
2757 case "$targetmkdir" in
2758 */Cross/mkdir)
2759 cat >$targetmkdir <<EOF
2760#!/bin/sh
2761$targetrun -l $targetuser $targethost "mkdir -p \$@"
2762EOF
f8006fac 2763 $chmod a+rx $targetmkdir
93c0359c
JH
2764 ;;
2765 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2766 exit 1
2767 ;;
2768 esac
5440bc8e
JH
2769 case "$targetto" in
2770 scp|rcp)
2771 cat >$to <<EOF
2772#!/bin/sh
2773for f in \$@
2774do
93c0359c
JH
2775 case "\$f" in
2776 /*)
2777 $targetmkdir \`dirname \$f\`
2778 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2779 ;;
2780 *)
2781 $targetmkdir $targetdir/\`dirname \$f\`
2782 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2783 ;;
2784 esac
5440bc8e
JH
2785done
2786exit 0
2787EOF
2788 ;;
2789 cp) cat >$to <<EOF
2790#!/bin/sh
93c0359c
JH
2791for f in \$@
2792do
2793 case "\$f" in
2794 /*)
2795 $mkdir -p $targetdir/\`dirname \$f\`
2796 $cp \$f $targetdir/\$f || exit 1
2797 ;;
2798 *)
2799 $targetmkdir $targetdir/\`dirname \$f\`
2800 $cp \$f $targetdir/\$f || exit 1
2801 ;;
2802 esac
2803done
2804exit 0
5440bc8e
JH
2805EOF
2806 ;;
93bc48fa 2807 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2808 exit 1
2809 ;;
2810 esac
2811 case "$targetfrom" in
2812 scp|rcp)
2813 cat >$from <<EOF
2814#!/bin/sh
2815for f in \$@
2816do
93c0359c 2817 $rm -f \$f
5440bc8e
JH
2818 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2819done
2820exit 0
2821EOF
2822 ;;
2823 cp) cat >$from <<EOF
2824#!/bin/sh
2825for f in \$@
2826do
93c0359c 2827 $rm -f \$f
5440bc8e
JH
2828 cp $targetdir/\$f . || exit 1
2829done
2830exit 0
2831EOF
2832 ;;
93bc48fa 2833 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2834 exit 1
2835 ;;
2836 esac
93bc48fa
JH
2837 if $test ! -f $run; then
2838 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2839 else
f8006fac 2840 $chmod a+rx $run
5440bc8e 2841 fi
93bc48fa
JH
2842 if $test ! -f $to; then
2843 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2844 else
f8006fac 2845 $chmod a+rx $to
5440bc8e 2846 fi
93bc48fa
JH
2847 if $test ! -f $from; then
2848 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2849 else
f8006fac 2850 $chmod a+rx $from
5440bc8e 2851 fi
93bc48fa 2852 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2853 exit 1
2854 fi
2855 cat >&4 <<EOF
f8006fac
JH
2856Using '$run' for remote execution,
2857and '$from' and '$to'
93bc48fa 2858for remote file transfer.
5440bc8e
JH
2859EOF
2860 ;;
2861*) run=''
2862 to=:
2863 from=:
2864 usecrosscompile='undef'
2865 targetarch=''
2866 ;;
2867esac
2868
ecfc5424
AD
2869: see whether [:lower:] and [:upper:] are supported character classes
2870echo " "
ecfc5424
AD
2871case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2872ABYZ)
2873 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2874 up='[:upper:]'
2875 low='[:lower:]'
2876 ;;
28e8609d
JH
2877*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2878 # (0xc9 and 0xd1), therefore that is a nice testing point.
2879 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2880 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2881 ij) up='[A-Z]'
2882 low='[a-z]'
2883 ;;
2884 esac
2885 fi
2886 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2887 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2888 ij) up='A-Z'
2889 low='a-z'
2890 ;;
2891 esac
2892 fi
2893 if test "X$up" = X -o "X$low" = X; then
2894 case "`echo IJ | od -x 2>/dev/null`" in
2895 *C9D1*|*c9d1*)
2896 echo "Hey, this might be EBCDIC." >&4
2897 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2898 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2899 ij) up='[A-IJ-RS-Z]'
2900 low='[a-ij-rs-z]'
2901 ;;
2902 esac
2903 fi
2904 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2905 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2906 ij) up='A-IJ-RS-Z'
2907 low='a-ij-rs-z'
2908 ;;
2909 esac
2910 fi
2911 ;;
2912 esac
2913 fi
2914esac
3eaeeeae 2915case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2916ij)
2917 echo "Using $up and $low to convert case." >&4
2918 ;;
ecfc5424 2919*)
28e8609d
JH
2920 echo "I don't know how to translate letters from upper to lower case." >&4
2921 echo "Your tr is not acting any way I know of." >&4
2922 exit 1
2923 ;;
ecfc5424
AD
2924esac
2925: set up the translation script tr, must be called with ./tr of course
2926cat >tr <<EOSC
2927$startsh
2928case "\$1\$2" in
2929'[A-Z][a-z]') exec $tr '$up' '$low';;
2930'[a-z][A-Z]') exec $tr '$low' '$up';;
2931esac
2932exec $tr "\$@"
2933EOSC
2934chmod +x tr
2935$eunicefix tr
2936
2304df62
AD
2937: Try to determine whether config.sh was made on this system
2938case "$config_sh" in
2939'')
43999f95
JH
2940myuname=`$uname -a 2>/dev/null`
2941$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2942# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2943# because the A-Z/a-z are not consecutive.
a0d0e21e 2944myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2945 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2946newmyuname="$myuname"
2304df62 2947dflt=n
16d20bd9
AD
2948case "$knowitall" in
2949'')
2950 if test -f ../config.sh; then
2951 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2952 eval "`grep myuname= ../config.sh`"
2953 fi
2954 if test "X$myuname" = "X$newmyuname"; then
2955 dflt=y
2956 fi
2304df62 2957 fi
16d20bd9
AD
2958 ;;
2959*) dflt=y;;
2960esac
2304df62
AD
2961
2962: Get old answers from old config file if Configure was run on the
2963: same system, otherwise use the hints.
2964hint=default
2965cd ..
2966if test -f config.sh; then
16d20bd9
AD
2967 echo " "
2968 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2969 . UU/myread
2970 case "$ans" in
f83701cd
AD
2971 n*|N*) echo "OK, I'll ignore it."
2972 mv config.sh config.sh.old
2973 myuname="$newmyuname"
2974 ;;
2304df62 2975 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2976 tmp_n="$n"
2977 tmp_c="$c"
85cad39c 2978 tmp_sh="$sh"
2304df62
AD
2979 . ./config.sh
2980 cp config.sh UU
ecfc5424
AD
2981 n="$tmp_n"
2982 c="$tmp_c"
85cad39c 2983 : Older versions did not always set $sh. Catch re-use of such
2984 : an old config.sh.
2985 case "$sh" in
2986 '') sh="$tmp_sh" ;;
2987 esac
2304df62
AD
2988 hint=previous
2989 ;;
2990 esac
2991fi
2573c5f9 2992. ./UU/checkcc
2304df62
AD
2993if test ! -f config.sh; then
2994 $cat <<EOM
2995
4e2a5f63
AD
2996First time through, eh? I have some defaults handy for some systems
2997that need some extra help getting the Configure answers right:
2304df62
AD
2998
2999EOM
dfe9444c 3000 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
3001 dflt=''
3002 : Half the following guesses are probably wrong... If you have better
7f2de2d2 3003 : tests or hints, please send them to perlbug@perl.org
2304df62 3004 : The metaconfig authors would also appreciate a copy...
a0d0e21e 3005 $test -f /irix && osname=irix
85e6fe83
LW
3006 $test -f /xenix && osname=sco_xenix
3007 $test -f /dynix && osname=dynix
3008 $test -f /dnix && osname=dnix
5f05dabc 3009 $test -f /lynx.os && osname=lynxos
3010 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 3011 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 3012 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 3013 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
3014 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3015 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
3016 $test -d /usr/apollo/bin && osname=apollo
3017 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 3018 $test -d /usr/include/minix && osname=minix
d54344fc 3019 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 3020 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 3021 osname=machten
4633a7c4 3022 if $test -x /sbin/version; then
dfe9444c 3023 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
3024 $sed -e 's/[A-Za-z]$//'`
3025 elif $test -x /usr/etc/version; then
dfe9444c 3026 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
3027 $sed -e 's/[A-Za-z]$//'`
3028 else
3029 osvers="$2.$3"
3030 fi
3031 fi
aaacdc8b
GS
3032
3033 $test -f /sys/posix.dll &&
3034 $test -f /usr/bin/what &&
3035 set X `/usr/bin/what /sys/posix.dll` &&
3036 $test "$3" = UWIN &&
3037 osname=uwin &&
3038 osvers="$5"
3039
2304df62
AD
3040 if $test -f $uname; then
3041 set X $myuname
3042 shift
3043
2304df62 3044 case "$5" in
85e6fe83 3045 fps*) osname=fps ;;
2304df62
AD
3046 mips*)
3047 case "$4" in
85e6fe83
LW
3048 umips) osname=umips ;;
3049 *) osname=mips ;;
2304df62 3050 esac;;
85e6fe83
LW
3051 [23]100) osname=mips ;;
3052 next*) osname=next ;;
ecfc5424 3053 i386*)
c6912327
JH
3054 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3055 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
3056 osname='sco'
3057 osvers=$tmp
3058 elif $test -f /etc/kconfig; then
ecfc5424 3059 osname=isc
bd628c73 3060 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
3061 osvers=4
3062 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3063 osvers=3
2304df62 3064 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 3065 osvers=2
ecfc5424
AD
3066 fi
3067 fi
2000072c 3068 tmp=''
ecfc5424 3069 ;;
c4f23d77
AD
3070 pc*)
3071 if test -n "$DJGPP"; then
3072 osname=dos
3073 osvers=djgpp
3074 fi
3075 ;;
2304df62
AD
3076 esac
3077
3078 case "$1" in
a0d0e21e
LW
3079 aix) osname=aix
3080 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3081 case "$tmp" in
1aef975c 3082 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
3083 '<3240'|'<>3240') osvers=3.2.0 ;;
3084 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3085 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 3086 *) osvers=$tmp;;
a0d0e21e
LW
3087 esac
3088 ;;
aaacdc8b
GS
3089 bsd386) osname=bsd386
3090 osvers=`$uname -r`
3091 ;;
3092 cygwin*) osname=cygwin
3093 osvers="$3"
3094 ;;
23f87696
SZ
3095 *dc.osx) osname=dcosx
3096 osvers="$3"
3097 ;;
a0d0e21e
LW
3098 dnix) osname=dnix
3099 osvers="$3"
3100 ;;
3101 domainos) osname=apollo
3102 osvers="$3"
3103 ;;
761ee4e8 3104 dgux) osname=dgux
a0d0e21e
LW
3105 osvers="$3"
3106 ;;
760ac839 3107 dynixptx*) osname=dynixptx
e58e581d 3108 osvers=`echo "$4"|sed 's/^v//'`
760ac839 3109 ;;
a0d0e21e
LW
3110 freebsd) osname=freebsd
3111 osvers="$3" ;;
761ee4e8
BD
3112 genix) osname=genix ;;
3113 gnu) osname=gnu
3114 osvers="$3" ;;
3115 hp*) osname=hpux
bfb7748a 3116 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 3117 ;;
761ee4e8 3118 irix*) osname=irix
a0d0e21e
LW
3119 case "$3" in
3120 4*) osvers=4 ;;
3121 5*) osvers=5 ;;
ecfc5424 3122 *) osvers="$3" ;;
a0d0e21e
LW
3123 esac
3124 ;;
761ee4e8 3125 linux) osname=linux
a0d0e21e 3126 case "$3" in
a0d0e21e
LW
3127 *) osvers="$3" ;;
3128 esac
3129 ;;
761ee4e8 3130 MiNT) osname=mint
28e8609d
JH
3131 ;;
3132 netbsd*) osname=netbsd
ecfc5424
AD
3133 osvers="$3"
3134 ;;
4e81affe
MM
3135 news-os) osvers="$3"
3136 case "$3" in
3137 4*) osname=newsos4 ;;
3138 *) osname=newsos ;;
3139 esac
3140 ;;
aaacdc8b 3141 next*) osname=next ;;
28bb1e2c 3142 nonstop-ux) osname=nonstopux ;;
65dc58a1
TM
3143 openbsd) osname=openbsd
3144 osvers="$3"
3145 ;;
5c728af0
IZ
3146 os2) osname=os2
3147 osvers="$4"
3148 ;;
aaacdc8b
GS
3149 POSIX-BC | posix-bc ) osname=posix-bc
3150 osvers="$3"
a0d0e21e 3151 ;;
ae3afa4e
TH
3152 powerux | power_ux | powermax_os | powermaxos | \
3153 powerunix | power_unix) osname=powerux
3154 osvers="$3"
3155 ;;
aaacdc8b
GS
3156 qnx) osname=qnx
3157 osvers="$4"
3158 ;;
a0d0e21e
LW
3159 solaris) osname=solaris
3160 case "$3" in
3161 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 3162 *) osvers="$3" ;;
a0d0e21e
LW
3163 esac
3164 ;;
85e6fe83
LW
3165 sunos) osname=sunos
3166 case "$3" in
85e6fe83
LW
3167 5*) osname=solaris
3168 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 3169 *) osvers="$3" ;;
2304df62
AD
3170 esac
3171 ;;
a0d0e21e 3172 titanos) osname=titanos
85e6fe83 3173 case "$3" in
a0d0e21e
LW
3174 1*) osvers=1 ;;
3175 2*) osvers=2 ;;
3176 3*) osvers=3 ;;
3177 4*) osvers=4 ;;
ecfc5424 3178 *) osvers="$3" ;;
2304df62
AD
3179 esac
3180 ;;
85e6fe83 3181 ultrix) osname=ultrix
ecfc5424 3182 osvers="$3"
2304df62 3183 ;;
28757baa 3184 osf1|mls+) case "$5" in
fed7345c
AD
3185 alpha)
3186 osname=dec_osf
fdd85a03 3187 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2aa76180
JH
3188 case "$osvers" in
3189 [1-9].[0-9]*) ;;
3190 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3191 esac
ecfc5424
AD
3192 ;;
3193 hp*) osname=hp_osf1 ;;
3194 mips) osname=mips_osf1 ;;
85e6fe83
LW
3195 esac
3196 ;;
af1ff193 3197 # UnixWare 7.1.2 is known as Open UNIX 8
381c1bae 3198 openunix|unixware) osname=svr5
0337d152
BG
3199 osvers="$4"
3200 ;;
3c728e00 3201 uts) osname=uts
a0d0e21e
LW
3202 osvers="$3"
3203 ;;
3c728e00
JH
3204 vos) osvers="$3"
3205 ;;
85e6fe83 3206 $2) case "$osname" in
2304df62 3207 *isc*) ;;
a0d0e21e 3208 *freebsd*) ;;
5f05dabc 3209 svr*)
a0d0e21e
LW
3210 : svr4.x or possibly later
3211 case "svr$3" in
3212 ${osname}*)
3213 osname=svr$3
3214 osvers=$4
3215 ;;
3216 esac
3217 case "$osname" in
3218 svr4.0)
3219 : Check for ESIX
3220 if test -f /stand/boot ; then
3221 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3222 if test -n "$INITPROG" -a -f "$INITPROG"; then
3223 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3224 if test -n "$isesix"; then
a0d0e21e
LW
3225 osname=esix4
3226 fi
3227 fi
3228 fi
3229 ;;
3230 esac
3231 ;;
2304df62 3232 *) if test -f /etc/systemid; then
a0d0e21e
LW
3233 osname=sco
3234 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3235 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3236 osvers=$1.$2.$3
c4f23d77 3237 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3238 osvers=$1.$2
c4f23d77 3239 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3240 osvers=$1
2304df62 3241 fi
a0d0e21e
LW
3242 else
3243 case "$osname" in
3244 '') : Still unknown. Probably a generic Sys V.
3245 osname="sysv"
3246 osvers="$3"
3247 ;;
3248 esac
2304df62
AD
3249 fi
3250 ;;
3251 esac
3252 ;;
a0d0e21e
LW
3253 *) case "$osname" in
3254 '') : Still unknown. Probably a generic BSD.
3255 osname="$1"
3256 osvers="$3"
3257 ;;
3258 esac
3259 ;;
2304df62
AD
3260 esac
3261 else
dfe9444c
AD
3262 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3263 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3264 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3265 osname=news_os
2304df62 3266 fi
dfe9444c 3267 $rm -f UU/kernel.what
5c728af0 3268 elif test -d c:/. -o -n "$is_os2" ; then
8e07c86e
AD
3269 set X $myuname
3270 osname=os2
3271 osvers="$5"
2304df62
AD
3272 fi
3273 fi
85e6fe83 3274
5440bc8e
JH
3275 case "$targetarch" in
3276 '') ;;
3277 *) hostarch=$osname
3278 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3279 osvers=''
3280 ;;
3281 esac
3282
a0d0e21e
LW
3283 : Now look for a hint file osname_osvers, unless one has been
3284 : specified already.
3285 case "$hintfile" in
3286 ''|' ')
1e127011 3287 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3288 : Also try without trailing minor version numbers.
1e127011
DD
3289 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3290 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3291 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3292 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3293 case "$file" in
3294 '') dflt=none ;;
3295 *) case "$osvers" in
3296 '') dflt=$file
3297 ;;
dfe9444c 3298 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3299 dflt=$file
dfe9444c 3300 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3301 dflt=$xfile
dfe9444c 3302 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3303 dflt=$xxfile
dfe9444c 3304 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3305 dflt=$xxxfile
dfe9444c 3306 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3307 dflt=$xxxxfile
dfe9444c 3308 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3309 dflt="${osname}"
3310 else
3311 dflt=none
3312 fi
3313 ;;
3314 esac
85e6fe83
LW
3315 ;;
3316 esac
4e2a5f63
AD
3317 if $test -f Policy.sh ; then
3318 case "$dflt" in
3319 *Policy*) ;;
3320 none) dflt="Policy" ;;
3321 *) dflt="Policy $dflt" ;;
3322 esac
3323 fi
85e6fe83 3324 ;;
a0d0e21e 3325 *)
ecfc5424 3326 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3327 ;;
2304df62 3328 esac
1aef975c 3329
4e2a5f63
AD
3330 if $test -f Policy.sh ; then
3331 $cat <<EOM
3332
3333There's also a Policy hint file available, which should make the
3334site-specific (policy) questions easier to answer.
3335EOM
3336
3337 fi
3338
2304df62
AD
3339 $cat <<EOM
3340
3341You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3342A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3343is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3344
3345EOM
4e2a5f63 3346
2304df62 3347 rp="Which of these apply, if any?"
dfe9444c 3348 . UU/myread
85e6fe83
LW
3349 tans=$ans
3350 for file in $tans; do
4e2a5f63
AD
3351 if $test X$file = XPolicy -a -f Policy.sh; then
3352 . Policy.sh
3353 $cat Policy.sh >> UU/config.sh
3354 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3355 . $src/hints/$file.sh
3356 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3357 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3358 : nothing
3359 else
85e6fe83
LW
3360 : Give one chance to correct a possible typo.
3361 echo "$file.sh does not exist"
3362 dflt=$file
3363 rp="hint to use instead?"
dfe9444c 3364 . UU/myread
85e6fe83 3365 for file in $ans; do
dfe9444c
AD
3366 if $test -f "$src/hints/$file.sh"; then
3367 . $src/hints/$file.sh
3368 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3369 elif $test X$ans = X -o X$ans = Xnone ; then
3370 : nothing
3371 else
3372 echo "$file.sh does not exist -- ignored."
3373 fi
3374 done
2304df62
AD
3375 fi
3376 done
85e6fe83 3377
2304df62 3378 hint=recommended
85e6fe83 3379 : Remember our hint file for later.
dfe9444c 3380 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3381 hintfile="$file"
85e6fe83 3382 else
a0d0e21e 3383 hintfile=''
85e6fe83 3384 fi
2304df62
AD
3385fi
3386cd UU
3387;;
3388*)
3389 echo " "
3390 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3391 tmp_n="$n"
3392 tmp_c="$c"
2304df62
AD
3393 cd ..
3394 cp $config_sh config.sh 2>/dev/null
a78b0d02 3395 chmod +w config.sh
2304df62
AD
3396 . ./config.sh
3397 cd UU
3398 cp ../config.sh .
ecfc5424
AD
3399 n="$tmp_n"
3400 c="$tmp_c"
2304df62
AD
3401 hint=previous
3402 ;;
3403esac
1aef975c 3404test "$override" && . ./optdef.sh
2304df62
AD
3405
3406: Restore computed paths
3407for file in $loclist $trylist; do
3408 eval $file="\$_$file"
3409done
3410
85e6fe83 3411cat << EOM
a0d0e21e 3412
85e6fe83 3413Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3414The default value is probably right if the name rings a bell. Otherwise,
3415since spelling matters for me, either accept the default or answer "none"
3416to leave it blank.
a0d0e21e 3417
85e6fe83 3418EOM
85e6fe83 3419case "$osname" in
a0d0e21e 3420 ''|' ')
85e6fe83 3421 case "$hintfile" in
a0d0e21e 3422 ''|' '|none) dflt=none ;;
ecfc5424 3423 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3424 esac
3425 ;;
3426 *) dflt="$osname" ;;
3427esac
3428rp="Operating system name?"
3429. ./myread
3430case "$ans" in
ecfc5424
AD
3431none) osname='' ;;
3432*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3433esac
8ff267be 3434echo " "
3435case "$osvers" in
3436 ''|' ')
3437 case "$hintfile" in
3438 ''|' '|none) dflt=none ;;
3439 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3440 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3441 case "$dflt" in
3442 ''|' ') dflt=none ;;
3443 esac
3444 ;;
3445 esac
3446 ;;
3447 *) dflt="$osvers" ;;
3448esac
3449rp="Operating system version?"
3450. ./myread
3451case "$ans" in
3452none) osvers='' ;;
3453*) osvers="$ans" ;;
3454esac
3455
02e93a22
JH
3456
3457. ./posthint.sh
3458
2304df62 3459: who configured the system
59b83a6f 3460cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
dfe9444c
AD
3461case "$cf_by" in
3462"")
7c04078e 3463 cf_by=`(logname) 2>/dev/null`
dfe9444c 3464 case "$cf_by" in
7c04078e
GA
3465 "")
3466 cf_by=`(whoami) 2>/dev/null`
3467 case "$cf_by" in
3468 "") cf_by=unknown ;;
3469 esac ;;
8ff267be 3470 esac ;;
3471esac
2304df62 3472
b4eb6b3d
JH
3473: set up the script used to warn in case of inconsistency
3474cat <<EOS >whoa
3475$startsh
3476EOS
3477cat <<'EOSC' >>whoa
3478dflt=y
3479echo " "
3480echo "*** WHOA THERE!!! ***" >&4
3481echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3482rp=" Keep the $hint value?"
3483. ./myread
3484case "$ans" in
3485y) td=$was; tu=$was;;
3486esac
3487EOSC
3488
3489: function used to set $1 to $val
3490setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3491case "$val$was" in
3492$define$undef) . ./whoa; eval "$var=\$td";;
3493$undef$define) . ./whoa; eval "$var=\$tu";;
3494*) eval "$var=$val";;
3495esac'
3496
b29b105d
JH
3497case "$usesocks" in
3498$define|true|[yY]*) dflt='y';;
3499*) dflt='n';;
3500esac
3501cat <<EOM
3502
3503Perl can be built to use the SOCKS proxy protocol library. To do so,
3504Configure must be run with -Dusesocks. If you use SOCKS you also need
3505to use the PerlIO abstraction layer, this will be implicitly selected.
3506
3507If this doesn't make any sense to you, just accept the default '$dflt'.
3508EOM
3509rp='Build Perl for SOCKS?'
3510. ./myread
3511case "$ans" in
3512y|Y) val="$define" ;;
3513*) val="$undef" ;;
3514esac
3515set usesocks
3516eval $setvar
3517
3518case "$usesocks" in
3519$define|true|[yY]*) useperlio="$define";;
3520esac
3521
3522case "$useperlio" in
3523$define|true|[yY]*|'') dflt='y';;
3524*) dflt='n';;
3525esac
3526cat <<EOM
3527
3528Previous version of $package used the standard IO mechanisms as
3529defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3530alternate IO mechanisms via the PerlIO abstraction layer, but the
3531stdio mechanism is still available if needed. The abstraction layer
3532can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3533Using PerlIO with sfio may cause problems with some extension modules.
3534
3535If this doesn't make any sense to you, just accept the default '$dflt'.
3536EOM
3537rp='Use the PerlIO abstraction layer?'
3538. ./myread
3539case "$ans" in
3540y|Y)
3541 val="$define"
3542 ;;
3543*)
3544 echo "Ok, doing things the stdio way."
3545 val="$undef"
3546 ;;
3547esac
3548set useperlio
3549eval $setvar
3550
3551case "$usesocks" in
3552$define|true|[yY]*)
3553 case "$useperlio" in
3554 $define|true|[yY]*) ;;
3555 *) cat >&4 <<EOM
3556
3557You are using the SOCKS proxy protocol library which means that you
3558should also use the PerlIO layer. You may be headed for trouble.
3559
3560EOM
3561 ;;
3562 esac
3563 ;;
3564esac
3565
3566
b4eb6b3d
JH
3567case "$usethreads" in
3568$define|true|[yY]*) dflt='y';;
8e285145
AD
3569*) # Catch case where user specified ithreads or 5005threads but
3570 # forgot -Dusethreads (A.D. 4/2002)
3571 case "$useithreads$use5005threads" in
b29b105d
JH
3572 *$define*)
3573 case "$useperlio" in
3574 "$define") dflt='y' ;;
3575 *) dflt='n' ;;
3576 esac
3577 ;;
3578 *) dflt='n';;
8e285145
AD
3579 esac
3580 ;;
b4eb6b3d
JH
3581esac
3582cat <<EOM
3583
3584Perl can be built to take advantage of threads on some systems.
3585To do so, Configure can be run with -Dusethreads.
3586
bfce6503
DM
3587Note that Perl built with threading support runs slightly slower
3588and uses more memory than plain Perl. The current implementation
3589is believed to be stable, but it is fairly new, and so should be
3590treated with caution.
b4eb6b3d
JH
3591
3592If this doesn't make any sense to you, just accept the default '$dflt'.
3593EOM
3594rp='Build a threading Perl?'
3595. ./myread
3596case "$ans" in
3597y|Y) val="$define" ;;
3598*) val="$undef" ;;
3599esac
3600set usethreads
3601eval $setvar
3602
3603case "$usethreads" in
3604$define)
3605 $cat <<EOM
3606
bfce6503
DM
3607Since release 5.6, Perl has had two different threading implementations,
3608the newer interpreter-based version (ithreads) with one interpreter per
3609thread, and the older 5.005 version (5005threads).
3610The 5005threads version is effectively unmaintained and will probably be
3611removed in Perl 5.10, so there should be no need to build a Perl using it
3612unless needed for backwards compatibility with some existing 5.005threads
3613code.
b4eb6b3d 3614
b4eb6b3d
JH
3615EOM
3616 : Default to ithreads unless overridden on command line or with
3617 : old config.sh
3618 dflt='y'
3619 case "$use5005threads" in
3620 $define|true|[yY]*) dflt='n';;
3621 esac
3622 case "$useithreads" in
3623 $undef|false|[nN]*) dflt='n';;
3624 esac
bfce6503 3625 rp='Use the newer interpreter-based ithreads?'
b4eb6b3d
JH
3626 . ./myread
3627 case "$ans" in
3628 y|Y) val="$define" ;;
3629 *) val="$undef" ;;
3630 esac
3631 set useithreads
3632 eval $setvar
3633 : Now set use5005threads to the opposite value.
3634 case "$useithreads" in
3635 $define) val="$undef" ;;
3636 *) val="$define" ;;
3637 esac
3638 set use5005threads
3639 eval $setvar
3640 ;;
3641*)
3642 useithreads="$undef"
3643 use5005threads="$undef"
3644 ;;
3645esac
3646
c915ce7f
JH
3647case "$useithreads$use5005threads" in
3648"$define$define")
3649 $cat >&4 <<EOM
3650
3651You cannot have both the ithreads and the 5.005 threads enabled
3652at the same time. Disabling the 5.005 threads since they are
3653much less stable than the ithreads.
3654
3655EOM
3656 use5005threads="$undef"
3657 ;;
3658esac
3659
b29b105d
JH
3660if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3661 cat >&4 <<EOF
3662***
3663*** To build with ithreads you must also use the PerlIO layer.
3664*** Cannot continue, aborting.
3665***
3666EOF
3667 exit 1
3668fi
3669
b4eb6b3d
JH
3670case "$d_oldpthreads" in
3671'') : Configure tests would be welcome here. For now, assume undef.
3672 val="$undef" ;;
3673*) val="$d_oldpthreads" ;;
3674esac
3675set d_oldpthreads
3676eval $setvar
3677
3678
b4eb6b3d
JH
3679: Look for a hint-file generated 'call-back-unit'. If the
3680: user has specified that a threading perl is to be built,
3681: we may need to set or change some other defaults.
9da7673b
MB
3682if $test -f usethreads.cbu; then
3683 echo "Your platform has some specific hints regarding threaded builds, using them..."
3684 . ./usethreads.cbu
3685else
3686 case "$usethreads" in
3687 "$define"|true|[yY]*)
b4eb6b3d 3688 $cat <<EOM
9da7673b 3689(Your platform does not have any specific hints for threaded builds.
b4eb6b3d
JH
3690 Assuming POSIX threads, then.)
3691EOM
b4eb6b3d 3692 ;;
9da7673b
MB
3693 esac
3694fi
b4eb6b3d
JH
3695
3696cat <<EOM
3697
3698Perl can be built so that multiple Perl interpreters can coexist
3699within the same Perl executable.
3700EOM
3701
3702case "$useithreads" in
3703$define)
3704 cat <<EOM
3705This multiple interpreter support is required for interpreter-based threads.
3706EOM
3707 val="$define"
3708 ;;
3709*) case "$usemultiplicity" in
3710 $define|true|[yY]*) dflt='y';;
3711 *) dflt='n';;
3712 esac
3713 echo " "
3714 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3715 rp='Build Perl for multiplicity?'
3716 . ./myread
3717 case "$ans" in
3718 y|Y) val="$define" ;;
3719 *) val="$undef" ;;
3720 esac
3721 ;;
3722esac
3723set usemultiplicity
3724eval $setvar
3725
96056487
JH
3726
3727case "$usemorebits" in
3728"$define"|true|[yY]*)
3729 use64bitint="$define"
3730 uselongdouble="$define"
3731 usemorebits="$define"
3732 ;;
3733*) usemorebits="$undef"
3734 ;;
3735esac
3736
e5e20432
JH
3737: make some quick guesses about what we are up against
3738echo " "
3739$echo $n "Hmm... $c"
3740echo exit 1 >bsd
3741echo exit 1 >usg
3742echo exit 1 >v7
3743echo exit 1 >osf1
3744echo exit 1 >eunice
3745echo exit 1 >xenix
3746echo exit 1 >venix
3747echo exit 1 >os2
3748d_bsd="$undef"
3749$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3750if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3751then
3752 echo "Looks kind of like an OSF/1 system, but we'll see..."
3753 echo exit 0 >osf1
381aa1ff 3754elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3755 xxx=`./loc addbib blurfl $pth`
3756 if $test -f $xxx; then
3757 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3758 echo exit 0 >bsd
3759 echo exit 0 >usg
3760 else
3761 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3762 echo "Looks kind of like an extended USG system, but we'll see..."
3763 else
3764 echo "Looks kind of like a USG system, but we'll see..."
3765 fi
3766 echo exit 0 >usg
3767 fi
3768elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3769 echo "Looks kind of like a BSD system, but we'll see..."
3770 d_bsd="$define"
3771 echo exit 0 >bsd
3772else
3773 echo "Looks kind of like a Version 7 system, but we'll see..."
3774 echo exit 0 >v7
3775fi
3776case "$eunicefix" in
3777*unixtovms*)
3778 $cat <<'EOI'
3779There is, however, a strange, musty smell in the air that reminds me of
3780something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3781EOI
3782 echo exit 0 >eunice
3783 d_eunice="$define"
3784: it so happens the Eunice I know will not run shell scripts in Unix format
3785 ;;
3786*)
3787 echo " "
3788 echo "Congratulations. You aren't running Eunice."
3789 d_eunice="$undef"
3790 ;;
3791esac
3792: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3793: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3794: semicolon as a patch separator
e5e20432
JH
3795case "$p_" in
3796:) ;;
3797*)
3798 $cat <<'EOI'
3799I have the feeling something is not exactly right, however...don't tell me...
3800lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3801(Or you may be running DOS with DJGPP.)
e5e20432
JH
3802EOI
3803 echo exit 0 >os2
3804 ;;
3805esac
3806if test -f /xenix; then
3807 echo "Actually, this looks more like a XENIX system..."
3808 echo exit 0 >xenix
3809 d_xenix="$define"
3810else
3811 echo " "
3812 echo "It's not Xenix..."
3813 d_xenix="$undef"
3814fi
3815chmod +x xenix
3816$eunicefix xenix
3817if test -f /venix; then
3818 echo "Actually, this looks more like a VENIX system..."
3819 echo exit 0 >venix
3820else
3821 echo " "
3822 if ./xenix; then
3823 : null
3824 else
3825 echo "Nor is it Venix..."
3826 fi
3827fi
3828chmod +x bsd usg v7 osf1 eunice xenix venix os2
3829$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3830$rm -f foo
3831
5869b1f1
JH
3832case "$cc" in
3833'') dflt=cc;;
3834*) dflt="$cc";;
3835esac
3836rp="Use which C compiler?"
3837. ./myread
3838cc="$ans"
6b769f8f
RB
3839
3840: See if they have not cc but they do have gcc
3841. ./trygcc
e5e20432
JH
3842: Look for a hint-file generated 'call-back-unit'. Now that the
3843: user has specified the compiler, we may need to set or change some
3844: other defaults.
3845if $test -f cc.cbu; then
3846 . ./cc.cbu
3847fi
2573c5f9 3848. ./checkcc
8a27cf78 3849
e5e20432
JH
3850echo " "
3851echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3852$cat >try.c <<EOM
e5e20432
JH
3853#include <stdio.h>
3854int main() {
3855#ifdef __GNUC__
3856#ifdef __VERSION__
3857 printf("%s\n", __VERSION__);
3858#else
3859 printf("%s\n", "1");
3860#endif
3861#endif
073b6de5 3862 return(0);
e5e20432
JH
3863}
3864EOM
5440bc8e
JH
3865if $cc -o try $ccflags $ldflags try.c; then
3866 gccversion=`$run ./try`
e5e20432
JH
3867 case "$gccversion" in
3868 '') echo "You are not using GNU cc." ;;
fc68435e 3869 *) echo "You are using GNU cc $gccversion."
48fe685d 3870 ccname=gcc
fc68435e 3871 ;;
e5e20432
JH
3872 esac
3873else
3874 echo " "
3875 echo "*** WHOA THERE!!! ***" >&4
3876 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3877 case "$knowitall" in
3878 '')
3879 echo " You'd better start hunting for one and let me know about it." >&4
3880 exit 1
3881 ;;
3882 esac
3883fi
5440bc8e 3884$rm -f try try.*
e5e20432
JH
3885case "$gccversion" in
38861*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3887esac
5b463ca7
KS
3888case "$gccversion" in
3889'') gccosandvers='' ;;
10b4ebb5
JH
3890*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3891 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3892 gccshortvers=''
5b463ca7 3893 case "$gccosandvers" in
02903077
JH
3894 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3895 $osname$osvers) ;; # looking good
5b463ca7
KS
3896 $osname*) cat <<EOM >&4
3897
3898*** WHOA THERE!!! ***
3899
3900 Your gcc has not been compiled for the exact release of
3901 your operating system ($gccosandvers versus $osname$osvers).
3902
3903 In general it is a good idea to keep gcc synchronized with
3904 the operating system because otherwise serious problems
3905 may ensue when trying to compile software, like Perl.
3906
3907 I'm trying to be optimistic here, though, and will continue.
3908 If later during the configuration and build icky compilation
02903077
JH
3909 problems appear (headerfile conflicts being the most common
3910 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3911 your operating system release.
3912
3913EOM
3914 ;;
81575342 3915 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3916 esac
3917 ;;
3918esac
e723fc21
JH
3919case "$ccname" in
3920'') ccname="$cc" ;;
3921esac
e5e20432 3922
224cb7cb 3923# gcc 3.* complain about adding -Idirectories that they already know about,
76589481
JH
3924# so we will take those off from locincpth.
3925case "$gccversion" in
39263*)
3927 echo "main(){}">try.c
224cb7cb
JH
3928 for incdir in $locincpth; do
3929 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
48fe685d 3930 grep '^c[cp]p*[01]: warning: changing search order '`
224cb7cb 3931 if test "X$warn" != X; then
44b94491 3932 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
224cb7cb 3933 fi
76589481
JH
3934 done
3935 $rm -f try try.*
3936esac
640374d0 3937
bd9b35c9
JH
3938: decide how portable to be. Allow command line overrides.
3939case "$d_portable" in
3940"$undef") ;;
3941*) d_portable="$define" ;;
104d25b7 3942esac
85ab1d1d 3943
bd9b35c9
JH
3944: set up shell script to do ~ expansion
3945cat >filexp <<EOSS
3946$startsh
3947: expand filename
3948case "\$1" in
3949 ~/*|~)
3950 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3951 ;;
3952 ~*)
3953 if $test -f /bin/csh; then
3954 /bin/csh -f -c "glob \$1"
3955 failed=\$?
3956 echo ""
3957 exit \$failed
e5e20432 3958 else
bd9b35c9
JH
3959 name=\`$expr x\$1 : '..\([^/]*\)'\`
3960 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3961 if $test ! -d "\$dir"; then
3962 me=\`basename \$0\`
3963 echo "\$me: can't locate home directory for: \$name" >&2
3964 exit 1
3965 fi
3966 case "\$1" in
3967 */*)
3968 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3969 ;;
3970 *)
3971 echo \$dir
e5e20432
JH
3972 ;;
3973 esac
3974 fi
b691c02f 3975 ;;
4633a7c4 3976*)
bd9b35c9 3977 echo \$1
2304df62
AD
3978 ;;
3979esac
4633a7c4
LW
3980EOSS
3981chmod +x filexp
3982$eunicefix filexp
2304df62
AD
3983
3984: now set up to get a file name
28757baa 3985cat <<EOS >getfile
3986$startsh
3987EOS
3988cat <<'EOSC' >>getfile
2304df62
AD
3989tilde=''
3990fullpath=''
3991already=''
3992skip=''
3993none_ok=''
3994exp_file=''
a0d0e21e 3995nopath_ok=''
2304df62
AD
3996orig_rp="$rp"
3997orig_dflt="$dflt"
b233458b
JH
3998case "$gfpth" in
3999'') gfpth='.' ;;
4000esac
2304df62
AD
4001
4002case "$fn" in
ecfc5424 4003*\(*)
d604bb53
JH
4004 : getfile will accept an answer from the comma-separated list
4005 : enclosed in parentheses even if it does not meet other criteria.
4006 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
4007 fn=`echo $fn | sed 's/(.*)//'`
4008 ;;
4009esac
4010
4011case "$fn" in
a0d0e21e
LW
4012*:*)
4013 loc_file=`expr $fn : '.*:\(.*\)'`
4014 fn=`expr $fn : '\(.*\):.*'`
4015 ;;
4016esac
4017
4018case "$fn" in
2304df62
AD
4019*~*) tilde=true;;
4020esac
4021case "$fn" in
4022*/*) fullpath=true;;
4023esac
4024case "$fn" in
4025*+*) skip=true;;
4026esac
4027case "$fn" in
4028*n*) none_ok=true;;
4029esac
4030case "$fn" in
4031*e*) exp_file=true;;
4032esac
a0d0e21e
LW
4033case "$fn" in
4034*p*) nopath_ok=true;;
4035esac
2304df62
AD
4036
4037case "$fn" in
4038*f*) type='File';;
4039*d*) type='Directory';;
a0d0e21e 4040*l*) type='Locate';;
2304df62
AD
4041esac
4042
4043what="$type"
4044case "$what" in
4045Locate) what='File';;
4046esac
4047
4048case "$exp_file" in
4049'')
4050 case "$d_portable" in
4051 "$define") ;;
4052 *) exp_file=true;;
4053 esac
4054 ;;
4055esac
4056
4057cd ..
4058while test "$type"; do
4059 redo=''
4060 rp="$orig_rp"
4061 dflt="$orig_dflt"
4062 case "$tilde" in
4063 true) rp="$rp (~name ok)";;
4064 esac
4065 . UU/myread
ecfc5424
AD
4066 if test -f UU/getfile.ok && \
4067 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4068 then
4069 value="$ans"
4070 ansexp="$ans"
4071 break
4072 fi
2304df62
AD
4073 case "$ans" in
4074 none)
4075 value=''
4076 ansexp=''
4077 case "$none_ok" in
4078 true) type='';;
4079 esac
4080 ;;
4081 *)
4082 case "$tilde" in
4083 '') value="$ans"
4084 ansexp="$ans";;
4085 *)
4086 value=`UU/filexp $ans`
4087 case $? in
4088 0)
4089 if test "$ans" != "$value"; then
ecfc5424 4090 echo "(That expands to $value on this system.)"
2304df62
AD
4091 fi
4092 ;;
4093 *) value="$ans";;
4094 esac
4095 ansexp="$value"
4096 case "$exp_file" in
4097 '') value="$ans";;
4098 esac
4099 ;;
4100 esac
4101 case "$fullpath" in
4102 true)
4103 case "$ansexp" in
4104 /*) value="$ansexp" ;;
23da6c43 4105 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
4106 *)
4107 redo=true
4108 case "$already" in
4109 true)
4110 echo "I shall only accept a full path name, as in /bin/ls." >&4
4111 echo "Use a ! shell escape if you wish to check pathnames." >&4
4112 ;;
4113 *)
4114 echo "Please give a full path name, starting with slash." >&4
4115 case "$tilde" in
4116 true)
4117 echo "Note that using ~name is ok provided it expands well." >&4
4118 already=true
4119 ;;
4120 esac
4121 esac
4122 ;;
4123 esac
4124 ;;
4125 esac
4126 case "$redo" in
4127 '')
4128 case "$type" in
4129 File)
b233458b
JH
4130 for fp in $gfpth; do
4131 if test "X$fp" = X.; then
4132 pf="$ansexp"
4133 else
4134 pf="$fp/$ansexp"
4135 fi
4136 if test -f "$pf"; then
4137 type=''
4138 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4139 then
4140 echo "($value is not a plain file, but that's ok.)"
4141 type=''
4142 fi
4143 if test X"$type" = X; then
4144 value="$pf"
4145 break
4146 fi
4147 done
2304df62
AD
4148 ;;
4149 Directory)
b233458b
JH
4150 for fp in $gfpth; do
4151 if test "X$fp" = X.; then
f78bfc9c
JH
4152 dir="$ans"
4153 direxp="$ansexp"
b233458b 4154 else
dd858076 4155 dir="$fp/$ansexp"
f78bfc9c 4156 direxp="$fp/$ansexp"
b233458b 4157 fi
f78bfc9c 4158 if test -d "$direxp"; then
b233458b 4159 type=''
f78bfc9c 4160 value="$dir"
b233458b
JH
4161 break
4162 fi
4163 done
2304df62
AD
4164 ;;
4165 Locate)
40000a8c 4166 if test -d "$ansexp"; then
a0d0e21e
LW
4167 echo "(Looking for $loc_file in directory $value.)"
4168 value="$value/$loc_file"
40000a8c 4169 ansexp="$ansexp/$loc_file"
2304df62 4170 fi
40000a8c 4171 if test -f "$ansexp"; then
2304df62
AD
4172 type=''
4173 fi
a0d0e21e
LW
4174 case "$nopath_ok" in
4175 true) case "$value" in
4176 */*) ;;
4177 *) echo "Assuming $value will be in people's path."
4178 type=''
4179 ;;
4180 esac
4181 ;;
4182 esac
2304df62
AD
4183 ;;
4184 esac
4185
4186 case "$skip" in
4187 true) type='';
4188 esac
4189
4190 case "$type" in
4191 '') ;;
4192 *)
4193 if test "$fastread" = yes; then
4194 dflt=y
4195 else
4196 dflt=n
4197 fi
4198 rp="$what $value doesn't exist. Use that name anyway?"
4199 . UU/myread
4200 dflt=''
4201 case "$ans" in
4202 y*) type='';;
4203 *) echo " ";;
4204 esac
4205 ;;
4206 esac
4207 ;;
4208 esac
4209 ;;
4210 esac
4211done
4212cd UU
4213ans="$value"
4214rp="$orig_rp"
4215dflt="$orig_dflt"
ecfc5424 4216rm -f getfile.ok
b233458b 4217test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
4218EOSC
4219
bd9b35c9
JH
4220: What should the include directory be ?
4221echo " "
4222$echo $n "Hmm... $c"
4223dflt='/usr/include'
4224incpath=''
4225mips_type=''
4226if $test -f /bin/mips && /bin/mips; then
4227 echo "Looks like a MIPS system..."
4228 $cat >usr.c <<'EOCP'
4229#ifdef SYSTYPE_BSD43
4230/bsd43
4231#endif
4232EOCP
8a27cf78 4233 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
4234 dflt='/bsd43/usr/include'
4235 incpath='/bsd43'
4236 mips_type='BSD 4.3'
4237 else
4238 mips_type='System V'
4239 fi
4240 $rm -f usr.c usr.out
4241 echo "and you're compiling with the $mips_type compiler and libraries."
4242 xxx_prompt=y
4243 echo "exit 0" >mips
4244else
4245 echo "Doesn't look like a MIPS system."
4246 xxx_prompt=n
4247 echo "exit 1" >mips
4248fi
4249chmod +x mips
4250$eunicefix mips
4251case "$usrinc" in
4252'') ;;
4253*) dflt="$usrinc";;
4254esac
4255case "$xxx_prompt" in
4256y) fn=d/
4257 echo " "
4258 rp='Where are the include files you want to use?'
4259 . ./getfile
4260 usrinc="$ans"
8e07c86e 4261 ;;
bd9b35c9 4262*) usrinc="$dflt"
8e07c86e
AD
4263 ;;
4264esac
2304df62 4265
96056487
JH
4266: see how we invoke the C preprocessor
4267echo " "
4268echo "Now, how can we feed standard input to your C preprocessor..." >&4
4269cat <<'EOT' >testcpp.c
4270#define ABC abc
4271#define XYZ xyz
4272ABC.XYZ
4273EOT
4274cd ..
4275if test ! -f cppstdin; then
4276 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4277 # AIX cc -E doesn't show the absolute headerfile
4278 # locations but we'll cheat by using the -M flag.
4279 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
4280 else
4281 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4282 fi
4283else
4284 echo "Keeping your $hint cppstdin wrapper."
4285fi
4286chmod 755 cppstdin
4287wrapper=`pwd`/cppstdin
4288ok='false'
4289cd UU
4290
4291if $test "X$cppstdin" != "X" && \
4292 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4293 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4294then
4295 echo "You used to use $cppstdin $cppminus so we'll use that again."
4296 case "$cpprun" in
4297 '') echo "But let's see if we can live without a wrapper..." ;;
4298 *)
4299 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4300 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4301 then
4302 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4303 ok='true'
4304 else
4305 echo "(However, $cpprun $cpplast does not work, let's see...)"
4306 fi
4307 ;;
4308 esac
4309else
4310 case "$cppstdin" in
4311 '') ;;
4312 *)
4313 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4314 ;;
4315 esac
4316fi
4317
4318if $ok; then
4319 : nothing
4320elif echo 'Maybe "'"$cc"' -E" will work...'; \
4321 $cc -E <testcpp.c >testcpp.out 2>&1; \
4322 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4323 echo "Yup, it does."
4324 x_cpp="$cc -E"
4325 x_minus='';
4326elif echo 'Nope...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"' -P" will work...'; \
4333 $cc -P <testcpp.c >testcpp.out 2>&1; \
4334 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4335 echo "Yipee, that works!"
4336 x_cpp="$cc -P"
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 "At long last!"
4342 x_cpp="$cc -P"
4343 x_minus='-';
4344elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4345 $cpp <testcpp.c >testcpp.out 2>&1; \
4346 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4347 echo "It works!"
4348 x_cpp="$cpp"
4349 x_minus='';
4350elif echo 'Nixed again...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 "Hooray, it works! I was beginning to wonder."
4354 x_cpp="$cpp"
4355 x_minus='-';
4356elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4357 $wrapper <testcpp.c >testcpp.out 2>&1; \
4358 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4359 x_cpp="$wrapper"
4360 x_minus=''
4361 echo "Eureka!"
4362else
4363 dflt=''
4364 rp="No dice. I can't find a C preprocessor. Name one:"
4365 . ./myread
4366 x_cpp="$ans"
4367 x_minus=''
4368 $x_cpp <testcpp.c >testcpp.out 2>&1
4369 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4370 echo "OK, that will do." >&4
4371 else
4372echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4373 exit 1
4374 fi
4375fi
4376
4377case "$ok" in
4378false)
4379 cppstdin="$x_cpp"
4380 cppminus="$x_minus"
4381 cpprun="$x_cpp"
4382 cpplast="$x_minus"
4383 set X $x_cpp
4384 shift
4385 case "$1" in
4386 "$cpp")
4387 echo "Perhaps can we force $cc -E using a wrapper..."
4388 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4389 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4390 then
4391 echo "Yup, we can."
4392 cppstdin="$wrapper"
4393 cppminus='';
4394 else
4395 echo "Nope, we'll have to live without it..."
4396 fi
4397 ;;
4398 esac
4399 case "$cpprun" in
4400 "$wrapper")
4401 cpprun=''
4402 cpplast=''
4403 ;;
4404 esac
4405 ;;
4406esac
4407
4408case "$cppstdin" in
4409"$wrapper"|'cppstdin') ;;
4410*) $rm -f $wrapper;;
4411esac
4412$rm -f testcpp.c testcpp.out
4413
bd9b35c9
JH
4414: Set private lib path
4415case "$plibpth" in
4416'') if ./mips; then
4417 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4418 fi;;
4419esac
4420case "$libpth" in
4421' ') dlist='';;
4422'') dlist="$loclibpth $plibpth $glibpth";;
4423*) dlist="$libpth";;
4424esac
4425
4426: Now check and see which directories actually exist, avoiding duplicates
4427libpth=''
4428for xxx in $dlist
4429do
4430 if $test -d $xxx; then
4431 case " $libpth " in
4432 *" $xxx "*) ;;
4433 *) libpth="$libpth $xxx";;
4434 esac
4435 fi
4436done
4437$cat <<'EOM'
4438
4439Some systems have incompatible or broken versions of libraries. Among
4440the directories listed in the question below, please remove any you
4441know not to be holding relevant libraries, and add any that are needed.
4442Say "none" for none.
8e07c86e
AD
4443
4444EOM
bd9b35c9
JH
4445case "$libpth" in
4446'') dflt='none';;
8e07c86e 4447*)
bd9b35c9
JH
4448 set X $libpth
4449 shift
4450 dflt=${1+"$@"}
8e07c86e 4451 ;;
a0d0e21e 4452esac
bd9b35c9
JH
4453rp="Directories to use for library searches?"
4454. ./myread
4455case "$ans" in
4456none) libpth=' ';;
4457*) libpth="$ans";;
4458esac
a0d0e21e 4459
bd9b35c9
JH
4460: compute shared library extension
4461case "$so" in
4462'')
4463 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4464 dflt='sl'
dd4e71fd 4465 else
bd9b35c9 4466 dflt='so'
dd4e71fd
JH
4467 fi
4468 ;;
bd9b35c9 4469*) dflt="$so";;
dd4e71fd 4470esac
dd4e71fd
JH
4471$cat <<EOM
4472
bd9b35c9 4473On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4474you want to suppress searching of shared libraries for the remainder
bd9b35c9 4475of this configuration.
dd4e71fd
JH
4476
4477EOM
bd9b35c9
JH
4478rp='What is the file extension used for shared libraries?'
4479. ./myread
4480so="$ans"
dd4e71fd 4481
bd9b35c9
JH
4482: Define several unixisms.
4483: Hints files or command line option can be used to override them.
4484: The convoluted testing is in case hints files set either the old
4485: or the new name.
4486case "$_exe" in
4487'') case "$exe_ext" in
1fef16b3 4488 '') ;;
bd9b35c9 4489 *) _exe="$exe_ext" ;;
dd4e71fd 4490 esac
bd9b35c9 4491 ;;
bfb7748a 4492esac
bd9b35c9
JH
4493case "$_a" in
4494'') case "$lib_ext" in
4495 '') _a='.a';;
4496 *) _a="$lib_ext" ;;
dd4e71fd
JH
4497 esac
4498 ;;
dd4e71fd 4499esac
bd9b35c9
JH
4500case "$_o" in
4501'') case "$obj_ext" in
4502 '') _o='.o';;
4503 *) _o="$obj_ext";;
4504 esac
4505 ;;
4506esac
4507case "$p_" in
4508'') case "$path_sep" in
4509 '') p_=':';;
4510 *) p_="$path_sep";;
4511 esac
4512 ;;
4513esac
4514exe_ext=$_exe
4515lib_ext=$_a
4516obj_ext=$_o
4517path_sep=$p_
dd4e71fd 4518
b4eb6b3d
JH
4519: Which makefile gets called first. This is used by make depend.
4520case "$firstmakefile" in
4521'') firstmakefile='makefile';;
4633a7c4 4522esac
4633a7c4 4523
1f603089
JH
4524case "$ccflags" in
4525*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4526esac
4527
4528case "$uselongdouble" in
4529$define|true|[yY]*) dflt='y';;
4530*) dflt='n';;
4531esac
4532cat <<EOM
4533
4534Perl can be built to take advantage of long doubles which
4535(if available) may give more accuracy and range for floating point numbers.
4536
4537If this doesn't make any sense to you, just accept the default '$dflt'.
4538EOM
4539rp='Try to use long doubles if available?'
4540. ./myread
4541case "$ans" in
4542y|Y) val="$define" ;;
4543*) val="$undef" ;;
4544esac
4545set uselongdouble
4546eval $setvar
4547
4548case "$uselongdouble" in
4549true|[yY]*) uselongdouble="$define" ;;
4550esac
4551
1f603089
JH
4552: Look for a hint-file generated 'call-back-unit'. If the
4553: user has specified that long doubles should be used,
4554: we may need to set or change some other defaults.
9da7673b
MB
4555if $test -f uselongdouble.cbu; then
4556 echo "Your platform has some specific hints regarding long doubles, using them..."
4557 . ./uselongdouble.cbu
4558else
4559 case "$uselongdouble" in
4560 $define)
1f603089 4561 $cat <<EOM
9da7673b 4562(Your platform does not have any specific hints for long doubles.)
1f603089 4563EOM
1f603089 4564 ;;
9da7673b
MB
4565 esac
4566fi
1f603089 4567
bd9b35c9
JH
4568: Looking for optional libraries
4569echo " "
4570echo "Checking for optional libraries..." >&4
4571case "$libs" in
4572' '|'') dflt='';;
4573*) dflt="$libs";;
4574esac
4575case "$libswanted" in
4576'') libswanted='c_s';;
4577esac
4578case "$usesocks" in
923fc586 4579"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4580esac
68435ea7
JH
4581libsfound=''
4582libsfiles=''
4583libsdirs=''
13b3f787
JH
4584libspath=''
4585for thisdir in $libpth $xlibpth; do
4586 test -d $thisdir && libspath="$libspath $thisdir"
4587done
bd9b35c9 4588for thislib in $libswanted; do
13b3f787 4589 for thisdir in $libspath; do
f7dd4e7f
JH
4590 xxx=''
4591 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
eade9b71 4592 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
f7dd4e7f
JH
4593 $test -f "$xxx" && eval $libscheck
4594 $test -f "$xxx" && libstyle=shared
4595 fi
4596 if test ! -f "$xxx"; then
4597 xxx=$thisdir/lib$thislib.$so
4598 $test -f "$xxx" && eval $libscheck
4599 $test -f "$xxx" && libstyle=shared
4600 fi
4601 if test ! -f "$xxx"; then
4602 xxx=$thisdir/lib$thislib$_a
4603 $test -f "$xxx" && eval $libscheck
4604 $test -f "$xxx" && libstyle=static
4605 fi
4606 if test ! -f "$xxx"; then
4607 xxx=$thisdir/$thislib$_a
4608 $test -f "$xxx" && eval $libscheck
4609 $test -f "$xxx" && libstyle=static
4610 fi
4611 if test ! -f "$xxx"; then
4612 xxx=$thisdir/lib${thislib}_s$_a
4613 $test -f "$xxx" && eval $libscheck
4614 $test -f "$xxx" && libstyle=static
09ea5ba9 4615 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4616 fi
4617 if test ! -f "$xxx"; then
4618 xxx=$thisdir/Slib$thislib$_a
4619 $test -f "$xxx" && eval $libscheck
4620 $test -f "$xxx" && libstyle=static
4621 fi
4622 if $test -f "$xxx"; then
43999f95 4623 case "$libstyle" in
f7dd4e7f
JH
4624 shared) echo "Found -l$thislib (shared)." ;;
4625 static) echo "Found -l$thislib." ;;
4626 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4627 esac
bd9b35c9
JH
4628 case " $dflt " in
4629 *"-l$thislib "*);;
f7dd4e7f 4630 *) dflt="$dflt -l$thislib"
43999f95
JH
4631 libsfound="$libsfound $xxx"
4632 yyy=`basename $xxx`
4633 libsfiles="$libsfiles $yyy"
1e127011 4634 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4635 case " $libsdirs " in
4636 *" $yyy "*) ;;
4637 *) libsdirs="$libsdirs $yyy" ;;
4638 esac
4639 ;;
bd9b35c9 4640 esac
f7dd4e7f
JH
4641 break
4642 fi
4643 done
4644 if $test ! -f "$xxx"; then
4645 echo "No -l$thislib."
bd9b35c9
JH
4646 fi
4647done
4648set X $dflt
4649shift
4650dflt="$*"
4651case "$libs" in
4652'') dflt="$dflt";;
4653*) dflt="$libs";;
4654esac
4655case "$dflt" in
4656' '|'') dflt='none';;
4657esac
4633a7c4 4658
bd9b35c9 4659$cat <<EOM
4633a7c4 4660
bd9b35c9
JH
4661In order to compile $package on your machine, a number of libraries
4662are usually needed. Include any other special libraries here as well.
4663Say "none" for none. The default list is almost always right.
8e07c86e 4664EOM
8e07c86e 4665
bd9b35c9
JH
4666echo " "
4667rp="What libraries to use?"
4668. ./myread
4669case "$ans" in
4670none) libs=' ';;
4671*) libs="$ans";;
4672esac
d71b2b6b 4673
bd9b35c9
JH
4674: determine optimization, if desired, or use for debug flag also
4675case "$optimize" in
4676' '|$undef) dflt='none';;
4677'') dflt='-O';;
4678*) dflt="$optimize";;
4679esac
4680$cat <<EOH
d71b2b6b 4681
bd9b35c9
JH
4682By default, $package compiles with the -O flag to use the optimizer.
4683Alternately, you might want to use the symbolic debugger, which uses
4684the -g flag (on traditional Unix systems). Either flag can be
4685specified here. To use neither flag, specify the word "none".
d71b2b6b 4686
bd9b35c9
JH
4687EOH
4688rp="What optimizer/debugger flag should be used?"
4689. ./myread
4690optimize="$ans"
4691case "$optimize" in
4692'none') optimize=" ";;
4693esac
4694
4695dflt=''
4696: We will not override a previous value, but we might want to
4697: augment a hint file
4698case "$hint" in
4699default|recommended)
4700 case "$gccversion" in
4701 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4702 esac
bd9b35c9
JH
4703 case "$optimize" in
4704 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4705 esac
bd9b35c9
JH
4706 case "$gccversion" in
4707 2*) if test -d /etc/conf/kconfig.d &&
4708 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4709 then
4710 dflt="$dflt -posix"
4711 fi
f0d04425 4712 ;;
bd9b35c9
JH
4713 esac
4714 case "$gccversion" in
4715 1*) ;;
4716 2.[0-8]*) ;;
4717 ?*) echo " "
4718 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4719 echo 'int main(void) { return 0; }' > gcctest.c
4720 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4721 echo "Yes, it does." 2>&1
4722 case "$ccflags" in
4723 *strict-aliasing*)
4724 echo "Leaving current flags $ccflags alone." 2>&1
4725 ;;
4726 *) dflt="$dflt -fno-strict-aliasing" ;;
4727 esac
4728 else
4729 echo "Nope, it doesn't, but that's ok." 2>&1
4730 fi
f0d04425 4731 ;;
e5e20432
JH
4732 esac
4733 ;;
4734esac
4735
bd9b35c9
JH
4736case "$mips_type" in
4737*BSD*|'') inclwanted="$locincpth $usrinc";;
4738*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4739esac
4740for thisincl in $inclwanted; do
4741 if $test -d $thisincl; then
4742 if $test x$thisincl != x$usrinc; then
4743 case "$dflt" in
422af00a
LC
4744 *" -I$thisincl "*);;
4745 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4746 esac
4747 fi
4748 fi
4749done
40a7a20a 4750
bd9b35c9
JH
4751inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4752 xxx=true;
4753elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4754 xxx=true;
4755else
4756 xxx=false;
4757fi;
4758if $xxx; then
4759 case "$dflt" in
4760 *$2*);;
4761 *) dflt="$dflt -D$2";;
4762 esac;
4763fi'
40a7a20a 4764
bd9b35c9 4765set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4766
bd9b35c9
JH
4767case "$usesocks" in
4768$define)
4769 ccflags="$ccflags -DSOCKS"
4770 ;;
4771esac
40a7a20a 4772
bd9b35c9
JH
4773case "$hint" in
4774default|recommended) dflt="$ccflags $dflt" ;;
4775*) dflt="$ccflags";;
4776esac
40a7a20a 4777
bd9b35c9
JH
4778case "$dflt" in
4779''|' ') dflt=none;;
4780esac
422af00a 4781
bd9b35c9 4782$cat <<EOH
40a7a20a 4783
bd9b35c9
JH
4784Your C compiler may want other flags. For this question you should include
4785-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4786but you should NOT include libraries or ld flags like -lwhatever. If you
4787want $package to honor its debug switch, you should include -DDEBUGGING here.
4788Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4789
bd9b35c9 4790To use no flags, specify the word "none".
40a7a20a 4791
bd9b35c9
JH
4792EOH
4793set X $dflt
4794shift
4795dflt=${1+"$@"}
4796rp="Any additional cc flags?"
4797. ./myread
4798case "$ans" in
4799none) ccflags='';;
4800*) ccflags="$ans";;
4801esac
8e07c86e 4802
bd9b35c9 4803: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4804case "$cppflags" in
4805'') cppflags="$ccflags" ;;
4806*) cppflags="$cppflags $ccflags" ;;
4807esac
bd9b35c9
JH
4808case "$gccversion" in
48091*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4810esac
bd9b35c9
JH
4811case "$mips_type" in
4812'');;
4813*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4814esac
4815case "$cppflags" in
4816'');;
4817*)
4818 echo " "
4819 echo "Let me guess what the preprocessor flags are..." >&4
4820 set X $cppflags
4821 shift
4822 cppflags=''
4823 $cat >cpp.c <<'EOM'
4824#define BLURFL foo
8e07c86e 4825
bd9b35c9
JH
4826BLURFL xx LFRULB
4827EOM
4828 previous=''
4829 for flag in $*
4830 do
4831 case "$flag" in
4832 -*) ftry="$flag";;
4833 *) ftry="$previous $flag";;
4834 esac
4835 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4836 >cpp1.out 2>/dev/null && \
4837 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4838 >cpp2.out 2>/dev/null && \
4839 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4840 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4841 then
4842 cppflags="$cppflags $ftry"
4843 previous=''
4844 else
4845 previous="$flag"
4846 fi
4847 done
4848 set X $cppflags
4849 shift
4850 cppflags=${1+"$@"}
4851 case "$cppflags" in
4852 *-*) echo "They appear to be: $cppflags";;
4853 esac
4854 $rm -f cpp.c cpp?.out
2afac517 4855 ;;
4856esac
8e07c86e 4857
bd9b35c9
JH
4858: flags used in final linking phase
4859case "$ldflags" in
4860'') if ./venix; then
4861 dflt='-i -z'
10a23457 4862 else
bd9b35c9 4863 dflt=''
10a23457 4864 fi
bd9b35c9
JH
4865 case "$ccflags" in
4866 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4867 esac
bd9b35c9
JH
4868 ;;
4869*) dflt="$ldflags";;
4870esac
4871
4872: Try to guess additional flags to pick up local libraries.
4873for thislibdir in $libpth; do
4874 case " $loclibpth " in
4875 *" $thislibdir "*)
4876 case "$dflt " in
4877 *"-L$thislibdir "*) ;;
4878 *) dflt="$dflt -L$thislibdir" ;;
4879 esac
c4f23d77
AD
4880 ;;
4881 esac
bd9b35c9 4882done
c4f23d77 4883
bd9b35c9
JH
4884case "$dflt" in
4885'') dflt='none' ;;
4886esac
c4f23d77 4887
bd9b35c9
JH
4888$cat <<EOH
4889
4890Your C linker may need flags. For this question you should
4891include -L/whatever and any other flags used by the C linker, but you
4892should NOT include libraries like -lwhatever.
4893
4894Make sure you include the appropriate -L/path flags if your C linker
4895does not normally search all of the directories you specified above,
4896namely
4897 $libpth
4898To use no flags, specify the word "none".
4899
4900EOH
4901
4902rp="Any additional ld flags (NOT including libraries)?"
4903. ./myread
4904case "$ans" in
4905none) ldflags='';;
4906*) ldflags="$ans";;
4907esac
4908rmlist="$rmlist pdp11"
4909
4910: coherency check
4911echo " "
4912echo "Checking your choice of C compiler and flags for coherency..." >&4
4913$cat > try.c <<'EOF'
4914#include <stdio.h>
55954f19 4915int main() { printf("Ok\n"); return(0); }
bd9b35c9 4916EOF
7a282f6d 4917set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4918shift
4919$cat >try.msg <<'EOM'
4920I've tried to compile and run the following simple program:
4921
4922EOM
4923$cat try.c >> try.msg
4924
4925$cat >> try.msg <<EOM
4926
4927I used the command:
4928
4929 $*
5440bc8e 4930 $run ./try
bd9b35c9
JH
4931
4932and I got the following output:
4933
4934EOM
4935dflt=y
73614538 4936if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4937 if $sh -c "$run ./try" >>try.msg 2>&1; then
4938 xxx=`$run ./try`
bd9b35c9
JH
4939 case "$xxx" in
4940 "Ok") dflt=n ;;
4941 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4942 case " $libs " in
4943 *" -lsfio "*)
4944 cat >> try.msg <<'EOQS'
4945If $libs contains -lsfio, and sfio is mis-configured, then it
4946sometimes (apparently) runs and exits with a 0 status, but with no
4947output! It may have to do with sfio's use of _exit vs. exit.
4948
4949EOQS
4950 rp="You have a big problem. Shall I abort Configure"
4951 dflt=y
4952 ;;
4953 esac
4954 ;;
4955 esac
4956 else
4957 echo "The program compiled OK, but exited with status $?." >>try.msg
4958 rp="You have a problem. Shall I abort Configure"
4959 dflt=y
4960 fi
4961else
4962 echo "I can't compile the test program." >>try.msg
4963 rp="You have a BIG problem. Shall I abort Configure"
4964 dflt=y
4965fi
4966case "$dflt" in
4967y)
4968 $cat try.msg >&4
4969 case "$knowitall" in
4970 '')
4971 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4972 ;;
bd9b35c9 4973 *) dflt=n;;
c4f23d77 4974 esac
bd9b35c9
JH
4975 echo " "
4976 . ./myread
4977 case "$ans" in
4978 n*|N*) ;;
4979 *) echo "Ok. Stopping Configure." >&4
4980 exit 1
c4f23d77
AD
4981 ;;
4982 esac
4983 ;;
bd9b35c9 4984n) echo "OK, that should do.";;
c4f23d77 4985esac
bd9b35c9 4986$rm -f try try.* core
c4f23d77 4987
bd9b35c9
JH
4988: define a shorthand compile call
4989compile='
4990mc_file=$1;
4991shift;
08413ebc 4992$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4993: define a shorthand compile call for compilations that should be ok.
4994compile_ok='
4995mc_file=$1;
4996shift;
7a282f6d 4997$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4998
8dfa8df9
JH
4999: determine filename position in cpp output
5000echo " "
5001echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
5002case "$osname" in
5003vos) testaccess=-e ;;
5004*) testaccess=-r ;;
5005esac
8dfa8df9
JH
5006echo '#include <stdio.h>' > foo.c
5007$cat >fieldn <<EOF
5008$startsh
5009$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5010$grep '^[ ]*#.*stdio\.h' | \
5011while read cline; do
5012 pos=1
5013 set \$cline
5014 while $test \$# -gt 0; do
a5a94ea5 5015 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
5016 echo "\$pos"
5017 exit 0
5018 fi
5019 shift
5020 pos=\`expr \$pos + 1\`
5021 done
5022done
5023EOF
5024chmod +x fieldn
5025fieldn=`./fieldn`
5026$rm -f foo.c fieldn
5027case $fieldn in
5028'') pos='???';;
50291) pos=first;;
50302) pos=second;;
50313) pos=third;;
5032*) pos="${fieldn}th";;
5033esac
5034echo "Your cpp writes the filename in the $pos field of the line."
5035
3c728e00
JH
5036case "$osname" in
5037vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5c728af0 5038os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
3c728e00
JH
5039*) cppfilter='' ;;
5040esac
8dfa8df9
JH
5041: locate header file
5042$cat >findhdr <<EOF
5043$startsh
5044wanted=\$1
5045name=''
5046for usrincdir in $usrinc
5047do
5048 if test -f \$usrincdir/\$wanted; then
5049 echo "\$usrincdir/\$wanted"
5050 exit 0
5051 fi
5052done
5053awkprg='{ print \$$fieldn }'
5054echo "#include <\$wanted>" > foo\$\$.c
5055$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 5056$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
5057while read cline; do
5058 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5059 case "\$name" in
5060 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5061 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5062 *) exit 2;;
5063 esac;
5064done;
5065#
5066# status = 0: grep returned 0 lines, case statement not executed
5067# status = 1: headerfile found
5068# status = 2: while loop executed, no headerfile found
5069#
5070status=\$?
5071$rm -f foo\$\$.c;
5072if test \$status -eq 1; then
5073 exit 0;
5074fi
5075exit 1
5076EOF
5077chmod +x findhdr
5078
5079: define an alternate in-header-list? function
5080inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5081cont=true; xxf="echo \"<\$1> found.\" >&4";
5082case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5083*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5084esac;
5085case $# in 4) instead=instead;; *) instead="at last";; esac;
5086while $test "$cont"; do
5087 xxx=`./findhdr $1`
5088 var=$2; eval "was=\$$2";
5089 if $test "$xxx" && $test -r "$xxx";
5090 then eval $xxf;
5091 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5092 cont="";
5093 else eval $xxnf;
5094 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5095 set $yyy; shift; shift; yyy=$@;
5096 case $# in 0) cont="";;
5097 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5098 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5099 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5100 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5101 esac;
5102done;
5103while $test "$yyy";
5104do set $yyy; var=$2; eval "was=\$$2";
5105 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5106 set $yyy; shift; shift; yyy=$@;
5107done'
5108
d1daaddf
JH
5109: see if stdlib is available
5110set stdlib.h i_stdlib
5111eval $inhdr
5112
5113: check for lengths of integral types
5114echo " "
5115case "$intsize" in
5116'')
5117 echo "Checking to see how big your integers are..." >&4
c63dfae1 5118 $cat >try.c <<EOCP
d1daaddf
JH
5119#include <stdio.h>
5120#$i_stdlib I_STDLIB
5121#ifdef I_STDLIB
5122#include <stdlib.h>
5123#endif
5124int main()
5125{
5126 printf("intsize=%d;\n", (int)sizeof(int));
5127 printf("longsize=%d;\n", (int)sizeof(long));
5128 printf("shortsize=%d;\n", (int)sizeof(short));
5129 exit(0);
5130}
5131EOCP
5132 set try
5133 if eval $compile_ok && $run ./try > /dev/null; then
5134 eval `$run ./try`
5135 echo "Your integers are $intsize bytes long."
5136 echo "Your long integers are $longsize bytes long."
5137 echo "Your short integers are $shortsize bytes long."
5138 else
5139 $cat >&4 <<EOM
5140!
5141Help! I can't compile and run the intsize test program: please enlighten me!
5142(This is probably a misconfiguration in your system or libraries, and
5143you really ought to fix it. Still, I'll try anyway.)
5144!
5145EOM
5146 dflt=4
5147 rp="What is the size of an integer (in bytes)?"
5148 . ./myread
5149 intsize="$ans"
5150 dflt=$intsize
5151 rp="What is the size of a long integer (in bytes)?"
5152 . ./myread
5153 longsize="$ans"
5154 dflt=2
5155 rp="What is the size of a short integer (in bytes)?"
5156 . ./myread
5157 shortsize="$ans"
5158 fi
5159 ;;
5160esac
5161$rm -f try try.*
5162
5163: check for long long
5164echo " "
5165echo "Checking to see if you have long long..." >&4
5166echo 'int main() { long long x = 7; return 0; }' > try.c
5167set try
5168if eval $compile; then
5169 val="$define"
5170 echo "You have long long."
5171else
5172 val="$undef"
5173 echo "You do not have long long."
5174fi
5175$rm try.*
5176set d_longlong
5177eval $setvar
5178
5179: check for length of long long
5180case "${d_longlong}${longlongsize}" in
5181$define)
5182 echo " "
5183 echo "Checking to see how big your long longs are..." >&4
5184 $cat >try.c <<'EOCP'
5185#include <stdio.h>
5186int main()
5187{
5188 printf("%d\n", (int)sizeof(long long));
5189 return(0);
5190}
5191EOCP
5192 set try
5193 if eval $compile_ok; then
5194 longlongsize=`$run ./try`
5195 echo "Your long longs are $longlongsize bytes long."
5196 else
5197 dflt='8'
5198 echo " "
5199 echo "(I can't seem to compile the test program. Guessing...)"
5200 rp="What is the size of a long long (in bytes)?"
5201 . ./myread
5202 longlongsize="$ans"
5203 fi
5204 if $test "X$longsize" = "X$longlongsize"; then
5205 echo "(That isn't any different from an ordinary long.)"
5206 fi
5207 ;;
5208esac
5209$rm -f try.* try
5210
8dfa8df9
JH
5211: see if inttypes.h is available
5212: we want a real compile instead of Inhdr because some systems
5213: have an inttypes.h which includes non-existent headers
5214echo " "
5215$cat >try.c <<EOCP
5216#include <inttypes.h>
5217int main() {
5218 static int32_t foo32 = 0x12345678;
5219}
5220EOCP
5221set try
5222if eval $compile; then
5223 echo "<inttypes.h> found." >&4
5224 val="$define"
5225else
5226 echo "<inttypes.h> NOT found." >&4
5227 val="$undef"
5228fi
5229$rm -f try.c try
5230set i_inttypes
5231eval $setvar
5232
5233: check for int64_t
5234echo " "
5235echo "Checking to see if you have int64_t..." >&4
5236$cat >try.c <<EOCP
5237#include <sys/types.h>
5238#$i_inttypes I_INTTYPES
5239#ifdef I_INTTYPES
5240#include <inttypes.h>
5241#endif
5242int main() { int64_t x = 7; }
5243EOCP
5244set try
5245if eval $compile; then
5246 val="$define"
5247 echo "You have int64_t."
5248else
5249 val="$undef"
5250 echo "You do not have int64_t."
5251fi
5252$rm -f try try.*
5253set d_int64_t
5254eval $setvar
5255
5256
5257echo " "
5258echo "Checking which 64-bit integer type we could use..." >&4
5259
5260case "$intsize" in
52618) val=int
5262 set quadtype
5263 eval $setvar
5264 val='"unsigned int"'
5265 set uquadtype
5266 eval $setvar
5267 quadkind=1
5268 ;;
5269*) case "$longsize" in
5270 8) val=long
5271 set quadtype
5272 eval $setvar
5273 val='"unsigned long"'
5274 set uquadtype
5275 eval $setvar
5276 quadkind=2
5277 ;;
5278 *) case "$d_longlong:$longlongsize" in
5279 define:8)
5280 val='"long long"'
5281 set quadtype
5282 eval $setvar
5283 val='"unsigned long long"'
5284 set uquadtype
5285 eval $setvar
5286 quadkind=3
5287 ;;
5288 *) case "$d_int64_t" in
5289 define)
5290 val=int64_t
5291 set quadtype
5292 eval $setvar
5293 val=uint64_t
5294 set uquadtype
5295 eval $setvar
5296 quadkind=4
5297 ;;
5298 esac
5299 ;;
5300 esac
5301 ;;
5302 esac
5303 ;;
5304esac
5305
5306case "$quadtype" in
5307'') echo "Alas, no 64-bit integer types in sight." >&4
5308 d_quad="$undef"
5309 ;;
5310*) echo "We could use '$quadtype' for 64-bit integers." >&4
5311 d_quad="$define"
5312 ;;
5313esac
5314
b4eb6b3d
JH
5315
5316case "$uselonglong" in
5317"$define"|true|[yY]*)
5318 cat <<EOM >&4
5319
5320*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5321EOM
5322 use64bitint="$define"
5323 ;;
5324esac
5325case "$use64bits" in
5326"$define"|true|[yY]*)
5327 cat <<EOM >&4
5328
5329*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5330EOM
5331 use64bitint="$define"
5332 ;;
5333esac
5334case "$use64bitints" in
5335"$define"|true|[yY]*)
5336 cat <<EOM >&4
5337
5338*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5339EOM
5340 use64bitint="$define"
5341 ;;
5342esac
5343case "$use64bitsint" in
5344"$define"|true|[yY]*)
5345 cat <<EOM >&4
5346
5347*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5348EOM
5349 use64bitint="$define"
5350 ;;
5351esac
5352case "$uselonglongs" in
5353"$define"|true|[yY]*)
5354 cat <<EOM >&4
5355
5356*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5357EOM
5358 use64bitint="$define"
5359 ;;
5360esac
5361case "$use64bitsall" in
5362"$define"|true|[yY]*)
5363 cat <<EOM >&4
5364
5365*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5366EOM
5367 use64bitall="$define"
5368 ;;
5369esac
5370
5371case "$ccflags" in
5372*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5373esac
5374case "$use64bitall" in
5375"$define"|true|[yY]*) use64bitint="$define" ;;
5376esac
5377
5378case "$longsize" in
53798) cat <<EOM
5380
5381You have natively 64-bit long integers.
5382EOM
5383 val="$define"
5384 ;;
5385*) case "$use64bitint" in
5386 "$define"|true|[yY]*) dflt='y';;
5387 *) dflt='n';;
5388 esac
8dfa8df9
JH
5389 case "$d_quad" in
5390 "$define") ;;
5391 *) dflt='n' ;;
5392 esac
b4eb6b3d
JH
5393 cat <<EOM
5394
5395Perl can be built to take advantage of 64-bit integer types
5396on some systems. To do so, Configure can be run with -Duse64bitint.
5397Choosing this option will most probably introduce binary incompatibilities.
5398
5399If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5400(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5401EOM
5402 rp='Try to use 64-bit integers, if available?'
5403 . ./myread
5404 case "$ans" in
5405 [yY]*) val="$define" ;;
5406 *) val="$undef" ;;
5407 esac
5408 ;;
5409esac
5410set use64bitint
5411eval $setvar
5412
5413case "$use64bitall" in
5414"$define"|true|[yY]*) dflt='y' ;;
5415*) case "$longsize" in
5416 8) dflt='y' ;;
5417 *) dflt='n' ;;
5418 esac
5419 ;;
5420esac
5421cat <<EOM
5422
5423You may also choose to try maximal 64-bitness. It means using as much
542464-bitness as possible on the platform. This in turn means even more
5425binary incompatibilities. On the other hand, your platform may not
5426have any more 64-bitness available than what you already have chosen.
5427
5428If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5429(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5430EOM
5431rp='Try to use maximal 64-bit support, if available?'
5432. ./myread
5433case "$ans" in
5434[yY]*) val="$define" ;;
5435*) val="$undef" ;;
5436esac
5437set use64bitall
5438eval $setvar
5439case "$use64bitall" in
5440"$define")
5441 case "$use64bitint" in
5442 "$undef")
5443 cat <<EOM
5444
5445Since you have chosen a maximally 64-bit build, I'm also turning on
5446the use of 64-bit integers.
5447EOM
5448 use64bitint="$define" ;;
5449 esac
5450 ;;
5451esac
5452
b4eb6b3d
JH
5453: Look for a hint-file generated 'call-back-unit'. If the
5454: user has specified that a 64-bit perl is to be built,
5455: we may need to set or change some other defaults.
5456 if $test -f use64bitint.cbu; then
9da7673b 5457 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
b4eb6b3d
JH
5458 . ./use64bitint.cbu
5459 fi
9da7673b
MB
5460case "$use64bitint" in
5461"$define"|true|[yY]*)
b4eb6b3d
JH
5462 case "$longsize" in
5463 4) case "$archname64" in
5464 '') archname64=64int ;;
5465 esac
5466 ;;
5467 esac
5468 ;;
5469esac
5470
b4eb6b3d
JH
5471: Look for a hint-file generated 'call-back-unit'. If the
5472: user has specified that a maximally 64-bit perl is to be built,
5473: we may need to set or change some other defaults.
5474 if $test -f use64bitall.cbu; then
9da7673b 5475 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
b4eb6b3d
JH
5476 . ./use64bitall.cbu
5477 fi
9da7673b
MB
5478case "$use64bitall" in
5479"$define"|true|[yY]*)
b4eb6b3d
JH
5480 case "$longsize" in
5481 4) case "$archname64" in
5482 ''|64int) archname64=64all ;;
5483 esac
5484 ;;
5485 esac
5486 ;;
5487esac
5488
1911a026
JH
5489case "$d_quad:$use64bitint" in
5490$undef:$define)
5491 cat >&4 <<EOF
5492
5493*** You have chosen to use 64-bit integers,
5494*** but none cannot be found.
09b58c7b 5495*** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
1911a026
JH
5496*** Cannot continue, aborting.
5497
5498EOF
5499 exit 1
5500 ;;
5501esac
5502
36adc09b
JH
5503: check for length of double
5504echo " "
5505case "$doublesize" in
5506'')
5507 echo "Checking to see how big your double precision numbers are..." >&4
5508 $cat >try.c <<EOCP
5509#include <stdio.h>
1911a026
JH
5510#$i_stdlib I_STDLIB
5511#ifdef I_STDLIB
5512#include <stdlib.h>
5513#endif
36adc09b
JH
5514int main()
5515{
5516 printf("%d\n", (int)sizeof(double));
1911a026 5517 exit(0);
36adc09b
JH
5518}
5519EOCP
5520 set try
5521 if eval $compile_ok; then
5522 doublesize=`$run ./try`
5523 echo "Your double is $doublesize bytes long."
5524 else
5525 dflt='8'
5526 echo "(I can't seem to compile the test program. Guessing...)"
5527 rp="What is the size of a double precision number (in bytes)?"
5528 . ./myread
5529 doublesize="$ans"
5530 fi
5531 ;;
5532esac
5533$rm -f try.c try
5534
5535: check for long doubles
5536echo " "
5537echo "Checking to see if you have long double..." >&4
5538echo 'int main() { long double x = 7.0; }' > try.c
5539set try
5540if eval $compile; then
5541 val="$define"
5542 echo "You have long double."
5543else
5544 val="$undef"
5545 echo "You do not have long double."
5546fi
5547$rm try.*
5548set d_longdbl
5549eval $setvar
5550
5551: check for length of long double
5552case "${d_longdbl}${longdblsize}" in
5553$define)
5554 echo " "
5555 echo "Checking to see how big your long doubles are..." >&4
5556 $cat >try.c <<'EOCP'
5557#include <stdio.h>
5558int main()
5559{
5560 printf("%d\n", sizeof(long double));
5561}
5562EOCP
5563 set try
5564 set try
5565 if eval $compile; then
5566 longdblsize=`$run ./try`
5567 echo "Your long doubles are $longdblsize bytes long."
5568 else
5569 dflt='8'
5570 echo " "
5571 echo "(I can't seem to compile the test program. Guessing...)" >&4
5572 rp="What is the size of a long double (in bytes)?"
5573 . ./myread
5574 longdblsize="$ans"
5575 fi
5576 if $test "X$doublesize" = "X$longdblsize"; then
7ad90562
AD
5577 echo "That isn't any different from an ordinary double."
5578 echo "I'll keep your setting anyway, but you may see some"
5579 echo "harmless compilation warnings."
36adc09b
JH
5580 fi
5581 ;;
5582esac
5583$rm -f try.* try
5584
89ce900e 5585: determine the architecture name
b4eb6b3d 5586echo " "
89ce900e
JH
5587if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5588 tarch=`arch`"-$osname"
5589elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5590 if uname -m > tmparch 2>&1 ; then
5591 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5592 -e 's/$/'"-$osname/" tmparch`
5593 else
5594 tarch="$osname"
5595 fi
5596 $rm -f tmparch
b4eb6b3d 5597else
89ce900e 5598 tarch="$osname"
b4eb6b3d 5599fi
89ce900e
JH
5600case "$myarchname" in
5601''|"$tarch") ;;
5602*)
5603 echo "(Your architecture name used to be $myarchname.)"
5604 archname=''
5605 ;;
5606esac
5607case "$targetarch" in
5608'') ;;
5609*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5610esac
5611myarchname="$tarch"
5612case "$archname" in
5613'') dflt="$tarch";;
5614*) dflt="$archname";;
5615esac
5616rp='What is your architecture name'
5617. ./myread
5618archname="$ans"
5619case "$usethreads" in
5620$define)
5621 echo "Threads selected." >&4
5622 case "$archname" in
5623 *-thread*) echo "...and architecture name already has -thread." >&4
5624 ;;
5625 *) archname="$archname-thread"
5626 echo "...setting architecture name to $archname." >&4
5627 ;;
5628 esac
5629 ;;
5630esac
5631case "$usemultiplicity" in
5632$define)
5633 echo "Multiplicity selected." >&4
5634 case "$archname" in
5635 *-multi*) echo "...and architecture name already has -multi." >&4
5636 ;;
5637 *) archname="$archname-multi"
5638 echo "...setting architecture name to $archname." >&4
5639 ;;
5640 esac
5641 ;;
5642esac
5643case "$use64bitint$use64bitall" in
5644*"$define"*)
5645 case "$archname64" in
5646 '')
5647 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
bd9b35c9 5648 ;;
89ce900e
JH
5649 *)
5650 case "$use64bitint" in
5651 "$define") echo "64 bit integers selected." >&4 ;;
5652 esac
5653 case "$use64bitall" in
5654 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5655 esac
5656 case "$archname" in
5657 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5658 ;;
5659 *) archname="$archname-$archname64"
5660 echo "...setting architecture name to $archname." >&4
5661 ;;
5662 esac
c1a7f87b
JH
5663 ;;
5664 esac
89ce900e
JH
5665esac
5666case "$uselongdouble" in
5667$define)
5668 echo "Long doubles selected." >&4
5669 case "$longdblsize" in
5670 $doublesize)
5671 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5672 ;;
5673 *)
5674 case "$archname" in
5675 *-ld*) echo "...and architecture name already has -ld." >&4
5676 ;;
5677 *) archname="$archname-ld"
5678 echo "...setting architecture name to $archname." >&4
5679 ;;
5680 esac
bd9b35c9
JH
5681 ;;
5682 esac
bd9b35c9 5683 ;;
89ce900e
JH
5684esac
5685case "$useperlio" in
5686$define)
5687 echo "Perlio selected." >&4
5688 ;;
bd9b35c9 5689*)
89ce900e
JH
5690 echo "Perlio not selected, using stdio." >&4
5691 case "$archname" in
5692 *-stdio*) echo "...and architecture name already has -stdio." >&4
5693 ;;
5694 *) archname="$archname-stdio"
5695 echo "...setting architecture name to $archname." >&4
5696 ;;
5697 esac
bd9b35c9
JH
5698 ;;
5699esac
d2e0c6f7
JH
5700if $test -f archname.cbu; then
5701 echo "Your platform has some specific hints for architecture name, using them..."
5702 . ./archname.cbu
5703fi
bd9b35c9 5704
89ce900e
JH
5705: determine root of directory hierarchy where package will be installed.
5706case "$prefix" in
5707'')
5708 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5709 ;;
5710*?/)
5711 dflt=`echo "$prefix" | sed 's/.$//'`
5712 ;;
5713*)
5714 dflt="$prefix"
5715 ;;
5716esac
5717$cat <<EOM
c1a7f87b 5718
89ce900e
JH
5719By default, $package will be installed in $dflt/bin, manual pages
5720under $dflt/man, etc..., i.e. with $dflt as prefix for all
5721installation directories. Typically this is something like /usr/local.
5722If you wish to have binaries under /usr/bin but other parts of the
5723installation under /usr/local, that's ok: you will be prompted
5724separately for each of the installation directories, the prefix being
5725only used to set the defaults.
bd9b35c9
JH
5726
5727EOM
89ce900e
JH
5728fn=d~
5729rp='Installation prefix to use?'
5730. ./getfile
5731oldprefix=''
5732case "$prefix" in
5733'') ;;
5734*)
5735 case "$ans" in
5736 "$prefix") ;;
5737 *) oldprefix="$prefix";;
5738 esac
5739 ;;
bd9b35c9 5740esac
89ce900e
JH
5741prefix="$ans"
5742prefixexp="$ansexp"
bd9b35c9 5743
89ce900e
JH
5744case "$afsroot" in
5745'') afsroot=/afs ;;
5746*) afsroot=$afsroot ;;
8e07c86e 5747esac
29209bc5 5748
89ce900e
JH
5749: is AFS running?
5750echo " "
5751case "$afs" in
5752$define|true) afs=true ;;
5753$undef|false) afs=false ;;
5754*) if test -d $afsroot; then
5755 afs=true
c1a7f87b 5756 else
89ce900e
JH
5757 afs=false
5758 fi
5759 ;;
c1a7f87b 5760esac
89ce900e
JH
5761if $afs; then
5762 echo "AFS may be running... I'll be extra cautious then..." >&4
5763else
5764 echo "AFS does not seem to be running..." >&4
5765fi
b4eb6b3d
JH
5766
5767: determine installation prefix for where package is to be installed.
5768if $afs; then
5769$cat <<EOM
5770
5771Since you are running AFS, I need to distinguish the directory in which
5772files will reside from the directory in which they are installed (and from
5773which they are presumably copied to the former directory by occult means).
5774
5775EOM
5776 case "$installprefix" in
5777 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5778 *) dflt="$installprefix";;
5779 esac
5780else
5781$cat <<EOM
5782
5783In some special cases, particularly when building $package for distribution,
c2bfb7b1
MB
5784it is convenient to distinguish the directory in which files should be
5785installed from the directory ($prefix) in which they will
5786eventually reside. For most users, these two directories are the same.
b4eb6b3d
JH
5787
5788EOM
5789 case "$installprefix" in
5790 '') dflt=$prefix ;;
5791 *) dflt=$installprefix;;
5792 esac
5793fi
5794fn=d~
5795rp='What installation prefix should I use for installing files?'
5796. ./getfile
5797installprefix="$ans"
5798installprefixexp="$ansexp"
5799
5800: set the prefixit variable, to compute a suitable default value
5801prefixit='case "$3" in
5802""|none)
5803 case "$oldprefix" in
5804 "") eval "$1=\"\$$2\"";;
5805 *)
5806 case "$3" in
5807 "") eval "$1=";;
5808 none)
5809 eval "tp=\"\$$2\"";
5810 case "$tp" in
5811 ""|" ") eval "$1=\"\$$2\"";;
5812 *) eval "$1=";;
5813 esac;;
5814 esac;;
5815 esac;;
5816*)
5817 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5818 case "$tp" in
5819 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5820 /*-$oldprefix/*|\~*-$oldprefix/*)
5821 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5822 *) eval "$1=\"\$$2\"";;
5823 esac;;
5824esac'
5825
b4eb6b3d
JH
5826: get the patchlevel
5827echo " "
5828echo "Getting the current patchlevel..." >&4
5829if $test -r $rsrc/patchlevel.h;then
5830 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5831 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5832 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5833 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5834 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5835 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 5836 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
5837else
5838 revision=0
5839 patchlevel=0
5840 subversion=0
5841 api_revision=0
5842 api_version=0
5843 api_subversion=0
151e6568
MB
5844 perl_patchlevel=0
5845 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 5846fi
151e6568
MB
5847if $test -r $rsrc/.patch ; then
5848 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5849 perl_patchlevel=`cat $rsrc/.patch`
5850 fi
5851fi
861eb78d
AD
5852: Define a handy string here to avoid duplication in myconfig.SH and configpm.
5853version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 5854case "$perl_patchlevel" in
861eb78d
AD
58550|'') ;;
5856*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 5857esac
861eb78d
AD
5858
5859$echo "(You have $package $version_patchlevel_string.)"
5860
b4eb6b3d
JH
5861case "$osname" in
5862dos|vms)
5863 : XXX Should be a Configure test for double-dots in filenames.
5864 version=`echo $revision $patchlevel $subversion | \
5865 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5866 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5867 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868 ;;
5869*)
5870 version=`echo $revision $patchlevel $subversion | \
5871 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5872 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5873 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874 ;;
5875esac
5876: Special case the 5.005_xx maintenance series, which used 5.005
5877: without any subversion label as a subdirectory in $sitelib
5878if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5879 api_versionstring='5.005'
5880fi
5881
5882: determine installation style
5883: For now, try to deduce it from prefix unless it is already set.
5884: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5885case "$installstyle" in
5886'') case "$prefix" in
5887 *perl*) dflt='lib';;
5888 *) dflt='lib/perl5' ;;
5889 esac
5890 ;;
5891*) dflt="$installstyle" ;;
5892esac
5893: Probably not worth prompting for this since we prompt for all
5894: the directories individually, and the prompt would be too long and
5895: confusing anyway.
5896installstyle=$dflt
5897
5898: determine where private library files go
5899: Usual default is /usr/local/lib/perl5/$version.
5900: Also allow things like /opt/perl/lib/$version, since
5901: /opt/perl/lib/perl5... would be redundant.
5902: The default "style" setting is made in installstyle.U
5903case "$installstyle" in
5904*lib/perl5*) set dflt privlib lib/$package/$version ;;
5905*) set dflt privlib lib/$version ;;
5906esac
5907eval $prefixit
5908$cat <<EOM
5909
5910There are some auxiliary files for $package that need to be put into a
5911private library directory that is accessible by everyone.
5912
5913EOM
5914fn=d~+
5915rp='Pathname where the private library files will reside?'
5916. ./getfile
5917privlib="$ans"
5918privlibexp="$ansexp"
5919: Change installation prefix, if necessary.
5920if $test X"$prefix" != X"$installprefix"; then
5921 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5922else
5923 installprivlib="$privlibexp"
5924fi
5925
5926: set the prefixup variable, to restore leading tilda escape
5927prefixup='case "$prefixexp" in
5928"$prefix") ;;
5929*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5930esac'
5931
5932: determine where public architecture dependent libraries go
5933set archlib archlib
5934eval $prefixit
5935: privlib default is /usr/local/lib/$package/$version
5936: archlib default is /usr/local/lib/$package/$version/$archname
5937: privlib may have an optional trailing /share.
5938tdflt=`echo $privlib | $sed 's,/share$,,'`
5939tdflt=$tdflt/$archname
5940case "$archlib" in
5941'') dflt=$tdflt
5942 ;;
5943*) dflt="$archlib"
5944 ;;
5945esac
5946$cat <<EOM
5947
5948$spackage contains architecture-dependent library files. If you are
5949sharing libraries in a heterogeneous environment, you might store
5950these files in a separate location. Otherwise, you can just include
5951them with the rest of the public library files.
5952
5953EOM
5954fn=d+~
5955rp='Where do you want to put the public architecture-dependent libraries?'
5956. ./getfile
5957archlib="$ans"
5958archlibexp="$ansexp"
5959if $test X"$archlib" = X"$privlib"; then
5960 d_archlib="$undef"
5961else
5962 d_archlib="$define"
5963fi
5964: Change installation prefix, if necessary.
5965if $test X"$prefix" != X"$installprefix"; then
5966 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5967else
5968 installarchlib="$archlibexp"
5969fi
5970
b4eb6b3d
JH
5971: see if setuid scripts can be secure
5972$cat <<EOM
5973
5974Some kernels have a bug that prevents setuid #! scripts from being
5975secure. Some sites have disabled setuid #! scripts because of this.
5976
5977First let's decide if your kernel supports secure setuid #! scripts.
5978(If setuid #! scripts would be secure but have been disabled anyway,
5979don't say that they are secure if asked.)
5980
5981EOM
5982
5983val="$undef"
5984if $test -d /dev/fd; then
5985 echo "#!$ls" >reflect
5986 chmod +x,u+s reflect
5987 ./reflect >flect 2>&1
5988 if $contains "/dev/fd" flect >/dev/null; then
5989 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5990 val="$define"
5991 else
5992 $cat <<EOM
5993If you are not sure if they are secure, I can check but I'll need a
5994username and password different from the one you are using right now.
5995If you don't have such a username or don't want me to test, simply
5996enter 'none'.
5997
5998EOM
5999 rp='Other username to test security of setuid scripts with?'
6000 dflt='none'
6001 . ./myread
6002 case "$ans" in
6003 n|none)
6004 case "$d_suidsafe" in
6005 '') echo "I'll assume setuid scripts are *not* secure." >&4
6006 dflt=n;;
6007 "$undef")
6008 echo "Well, the $hint value is *not* secure." >&4
6009 dflt=n;;
6010 *) echo "Well, the $hint value *is* secure." >&4
6011 dflt=y;;
6012 esac
c1a7f87b 6013 ;;
b4eb6b3d
JH
6014 *)
6015 $rm -f reflect flect
6016 echo "#!$ls" >reflect
6017 chmod +x,u+s reflect
6018 echo >flect
6019 chmod a+w flect
6020 echo '"su" will (probably) prompt you for '"$ans's password."
6021 su $ans -c './reflect >flect'
6022 if $contains "/dev/fd" flect >/dev/null; then
6023 echo "Okay, it looks like setuid scripts are secure." >&4
6024 dflt=y
6025 else
6026 echo "I don't think setuid scripts are secure." >&4
6027 dflt=n
6028 fi
6029 ;;
6030 esac
6031 rp='Does your kernel have *secure* setuid scripts?'
6032 . ./myread
6033 case "$ans" in
6034 [yY]*) val="$define";;
6035 *) val="$undef";;
6036 esac
6037 fi
6038else
6039 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6040 echo "(That's for file descriptors, not floppy disks.)"
6041 val="$undef"
6042fi
6043set d_suidsafe
6044eval $setvar
6045
6046$rm -f reflect flect
6047
6048: now see if they want to do setuid emulation
6049echo " "
6050val="$undef"
6051case "$d_suidsafe" in
6052"$define")
6053 val="$undef"
3c728e00 6054 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6055 ;;
6056*)
6057 $cat <<EOM
6058Some systems have disabled setuid scripts, especially systems where
6059setuid scripts cannot be secure. On systems where setuid scripts have
6060been disabled, the setuid/setgid bits on scripts are currently
6061useless. It is possible for $package to detect those bits and emulate
6062setuid/setgid in a secure fashion. This emulation will only work if
6063setuid scripts have been disabled in your kernel.
6064
6065EOM
6066 case "$d_dosuid" in
6067 "$define") dflt=y ;;
6068 *) dflt=n ;;
6069 esac
6070 rp="Do you want to do setuid/setgid emulation?"
6071 . ./myread
6072 case "$ans" in
6073 [yY]*) val="$define";;
6074 *) val="$undef";;
6075 esac
6076 ;;
6077esac
6078set d_dosuid
6079eval $setvar
6080
b4eb6b3d 6081: see if this is a malloc.h system
01d07975
YST
6082: we want a real compile instead of Inhdr because some systems have a
6083: malloc.h that just gives a compile error saying to use stdlib.h instead
6084echo " "
6085$cat >try.c <<EOCP
6086#include <stdlib.h>
6087#include <malloc.h>
6088int main () { return 0; }
6089EOCP
6090set try
6091if eval $compile; then
6092 echo "<malloc.h> found." >&4
6093 val="$define"
6094else
6095 echo "<malloc.h> NOT found." >&4
6096 val="$undef"
6097fi
6098$rm -f try.c try
6099set i_malloc
6100eval $setvar
b4eb6b3d 6101
c8b93cf9
JH
6102: check for void type
6103echo " "
6104echo "Checking to see how well your C compiler groks the void type..." >&4
6105case "$voidflags" in
6106'')
c727eafa 6107 $cat >try.c <<EOCP
d1daaddf
JH
6108#$i_stdlib I_STDLIB
6109#ifdef I_STDLIB
6110#include <stdlib.h>
6111#endif
c8b93cf9
JH
6112#if TRY & 1
6113void sub() {
6114#else
6115sub() {
6116#endif
6117 extern void moo(); /* function returning void */
6118 void (*goo)(); /* ptr to func returning void */
6119#if TRY & 8
6120 void *hue; /* generic ptr */
6121#endif
6122#if TRY & 2
6123 void (*foo[10])();
6124#endif
6125
6126#if TRY & 4
6127 if(goo == moo) {
6128 exit(0);
6129 }
6130#endif
6131 exit(0);
6132}
6133int main() { sub(); }
6134EOCP
6135 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6136 voidflags=$defvoidused
6137 echo "Good. It appears to support void to the level $package wants.">&4
6138 if $contains warning .out >/dev/null 2>&1; then
6139 echo "However, you might get some warnings that look like this:"
6140 $cat .out
6141 fi
6142 else
6143echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6144 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6145 echo "It supports 1..."
6146 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6147 echo "It also supports 2..."
6148 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6149 voidflags=7
6150 echo "And it supports 4 but not 8 definitely."
6151 else
6152 echo "It doesn't support 4..."
6153 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6154 voidflags=11
6155 echo "But it supports 8."
6156 else
6157 voidflags=3
6158 echo "Neither does it support 8."
6159 fi
6160 fi
6161 else
6162 echo "It does not support 2..."
6163 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6164 voidflags=13
6165 echo "But it supports 4 and 8."
6166 else
6167 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6168 voidflags=5
6169 echo "And it supports 4 but has not heard about 8."
6170 else
6171 echo "However it supports 8 but not 4."
6172 fi
6173 fi
6174 fi
6175 else
6176 echo "There is no support at all for void."
6177 voidflags=0
6178 fi
6179 fi
6180esac
6181case "$voidflags" in
6182"$defvoidused") ;;
6183*) $cat >&4 <<'EOM'
6184 Support flag bits are:
6185 1: basic void declarations.
6186 2: arrays of pointers to functions returning void.
6187 4: operations between pointers to and addresses of void functions.
6188 8: generic void pointers.
6189EOM
6190 dflt="$voidflags";
6191 rp="Your void support flags add up to what?"
6192 . ./myread
6193 voidflags="$ans"
6194 ;;
6195esac
6196$rm -f try.* .out
6197
6198: check for length of pointer
6199echo " "
6200case "$ptrsize" in
6201'')
6202 echo "Checking to see how big your pointers are..." >&4
6203 if test "$voidflags" -gt 7; then
6204 echo '#define VOID_PTR char *' > try.c
6205 else
6206 echo '#define VOID_PTR void *' > try.c
6207 fi
74d00865 6208 $cat >>try.c <<EOCP
c8b93cf9 6209#include <stdio.h>
d1daaddf
JH
6210#$i_stdlib I_STDLIB
6211#ifdef I_STDLIB
6212#include <stdlib.h>
6213#endif
c8b93cf9
JH
6214int main()
6215{
6216 printf("%d\n", (int)sizeof(VOID_PTR));
6217 exit(0);
6218}
6219EOCP
6220 set try
6221 if eval $compile_ok; then
6222 ptrsize=`$run ./try`
6223 echo "Your pointers are $ptrsize bytes long."
6224 else
6225 dflt='4'
6226 echo "(I can't seem to compile the test program. Guessing...)" >&4
6227 rp="What is the size of a pointer (in bytes)?"
6228 . ./myread
6229 ptrsize="$ans"
6230 fi
6231 ;;
6232esac
6233$rm -f try.c try
6234case "$use64bitall" in
6235"$define"|true|[yY]*)
6236 case "$ptrsize" in
6237 4) cat <<EOM >&4
6238
1911a026
JH
6239*** You have chosen a maximally 64-bit build,
6240*** but your pointers are only 4 bytes wide.
09b58c7b
JH
6241*** Please rerun Configure without -Duse64bitall.
6242EOM
6243 case "$d_quad" in
6244 define)
6245 cat <<EOM >&4
6246*** Since you have quads, you could possibly try with -Duse64bitint.
6247EOM
6248 ;;
6249 esac
6250 cat <<EOM >&4
1911a026 6251*** Cannot continue, aborting.
c8b93cf9
JH
6252
6253EOM
09b58c7b 6254
1911a026 6255 exit 1
c8b93cf9
JH
6256 ;;
6257 esac
6258 ;;
6259esac
6260
6261
b4eb6b3d
JH
6262: determine which malloc to compile in
6263echo " "
6264case "$usemymalloc" in
c4163172
JH
6265[yY]*|true|$define) dflt='y' ;;
6266[nN]*|false|$undef) dflt='n' ;;
6267*) case "$ptrsize" in
6268 4) dflt='y' ;;
6269 *) dflt='n' ;;
6270 esac
6271 ;;
8dfa8df9 6272esac
b4eb6b3d
JH
6273rp="Do you wish to attempt to use the malloc that comes with $package?"
6274. ./myread
6275usemymalloc="$ans"
6276case "$ans" in
6277y*|true)
6278 usemymalloc='y'
6279 mallocsrc='malloc.c'
6280 mallocobj="malloc$_o"
6281 d_mymalloc="$define"
6282 case "$libs" in
6283 *-lmalloc*)
6284 : Remove malloc from list of libraries to use
6285 echo "Removing unneeded -lmalloc from library list" >&4
6286 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6287 shift
6288 libs="$*"
6289 echo "libs = $libs" >&4
6290 ;;
6291 esac
6292 ;;
6293*)
6294 usemymalloc='n'
6295 mallocsrc=''
6296 mallocobj=''
6297 d_mymalloc="$undef"
6298 ;;
6299esac
6300
6301: compute the return types of malloc and free
6302echo " "
6303$cat >malloc.c <<END
6304#$i_malloc I_MALLOC
6305#$i_stdlib I_STDLIB
6306#include <stdio.h>
6307#include <sys/types.h>
6308#ifdef I_MALLOC
6309#include <malloc.h>
6310#endif
6311#ifdef I_STDLIB
6312#include <stdlib.h>
6313#endif
6314#ifdef TRY_MALLOC
6315void *malloc();
6316#endif
6317#ifdef TRY_FREE
6318void free();
6319#endif
6320END
6321case "$malloctype" in
6322'')
6323 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6324 malloctype='void *'
6325 else
6326 malloctype='char *'
6327 fi
6328 ;;
6329esac
6330echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6331
6332case "$freetype" in
6333'')
6334 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6335 freetype='void'
6336 else
6337 freetype='int'
6338 fi
6339 ;;
6340esac
6341echo "Your system uses $freetype free(), it would seem." >&4
6342$rm -f malloc.[co]
6343$cat <<EOM
6344
6345After $package is installed, you may wish to install various
6346add-on modules and utilities. Typically, these add-ons will
6347be installed under $prefix with the rest
6348of this package. However, you may wish to install such add-ons
6349elsewhere under a different prefix.
6350
6351If you do not wish to put everything under a single prefix, that's
6352ok. You will be prompted for the individual locations; this siteprefix
6353is only used to suggest the defaults.
6354
6355The default should be fine for most people.
6356
6357EOM
6358fn=d~+
6359rp='Installation prefix to use for add-on modules and utilities?'
6360: XXX Here might be another good place for an installstyle setting.
6361case "$siteprefix" in
6362'') dflt=$prefix ;;
6363*) dflt=$siteprefix ;;
6364esac
6365. ./getfile
6366: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6367oldsiteprefix=''
6368case "$siteprefix" in
6369'') ;;
6370*) case "$ans" in
6371 "$prefix") ;;
6372 *) oldsiteprefix="$prefix";;
6373 esac
6374 ;;
6375esac
6376siteprefix="$ans"
6377siteprefixexp="$ansexp"
6378
6379: determine where site specific libraries go.
6380: Usual default is /usr/local/lib/perl5/site_perl/$version
6381: The default "style" setting is made in installstyle.U
6382: XXX No longer works with Prefixit stuff.
6383prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6384case "$sitelib" in
6385'') case "$installstyle" in
6386 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6387 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6388 esac
6389 ;;
6390*) dflt="$sitelib"
6391 ;;
6392esac
6393$cat <<EOM
6394
6395The installation process will create a directory for
6396site-specific extensions and modules. Most users find it convenient
6397to place all site-specific files in this directory rather than in the
6398main distribution directory.
6399
6400EOM
6401fn=d~+
6402rp='Pathname for the site-specific library files?'
6403. ./getfile
6404sitelib="$ans"
6405sitelibexp="$ansexp"
6406sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6407: Change installation prefix, if necessary.
6408if $test X"$prefix" != X"$installprefix"; then
6409 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6410else
6411 installsitelib="$sitelibexp"
6412fi
6413
6414: determine where site specific architecture-dependent libraries go.
6415: sitelib default is /usr/local/lib/perl5/site_perl/$version
6416: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6417: sitelib may have an optional trailing /share.
6418case "$sitearch" in
6419'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6420 dflt="$dflt/$archname"
6421 ;;
6422*) dflt="$sitearch"
6423 ;;
6424esac
6425set sitearch sitearch none
6426eval $prefixit
6427$cat <<EOM
6428
6429The installation process will also create a directory for
6430architecture-dependent site-specific extensions and modules.
6431
6432EOM
6433fn=d~+
6434rp='Pathname for the site-specific architecture-dependent library files?'
6435. ./getfile
6436sitearch="$ans"
6437sitearchexp="$ansexp"
6438: Change installation prefix, if necessary.
6439if $test X"$prefix" != X"$installprefix"; then
6440 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6441else
6442 installsitearch="$sitearchexp"
6443fi
6444
6445$cat <<EOM
6446
6447The installation process will also create a directory for
6448vendor-supplied add-ons. Vendors who supply perl with their system
6449may find it convenient to place all vendor-supplied files in this
6450directory rather than in the main distribution directory. This will
6451ease upgrades between binary-compatible maintenance versions of perl.
6452
6453Of course you may also use these directories in whatever way you see
6454fit. For example, you might use them to access modules shared over a
6455company-wide network.
6456
6457The default answer should be fine for most people.
6458This causes further questions about vendor add-ons to be skipped
6459and no vendor-specific directories will be configured for perl.
6460
6461EOM
6462rp='Do you want to configure vendor-specific add-on directories?'
6463case "$usevendorprefix" in
6464define|true|[yY]*) dflt=y ;;
6465*) : User may have set vendorprefix directly on Configure command line.
6466 case "$vendorprefix" in
6467 ''|' ') dflt=n ;;
6468 *) dflt=y ;;
6469 esac
6470 ;;
6471esac
6472. ./myread
6473case "$ans" in
6474[yY]*) fn=d~+
6475 rp='Installation prefix to use for vendor-supplied add-ons?'
6476 case "$vendorprefix" in
6477 '') dflt='' ;;
6478 *) dflt=$vendorprefix ;;
6479 esac
6480 . ./getfile
6481 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6482 oldvendorprefix=''
6483 case "$vendorprefix" in
6484 '') ;;
6485 *) case "$ans" in
6486 "$prefix") ;;
6487 *) oldvendorprefix="$prefix";;
6488 esac
6489 ;;
6490 esac
6491 usevendorprefix="$define"
6492 vendorprefix="$ans"
6493 vendorprefixexp="$ansexp"
6494 ;;
6495*) usevendorprefix="$undef"
6496 vendorprefix=''
6497 vendorprefixexp=''
6498 ;;
6499esac
6500
6501case "$vendorprefix" in
6502'') d_vendorlib="$undef"
6503 vendorlib=''
6504 vendorlibexp=''
6505 ;;
6506*) d_vendorlib="$define"
6507 : determine where vendor-supplied modules go.
6508 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6509 case "$vendorlib" in
6510 '')
6511 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6512 case "$installstyle" in
6513 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6514 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6515 esac
6516 ;;
6517 *) dflt="$vendorlib"
6518 ;;
6519 esac
6520 fn=d~+
6521 rp='Pathname for the vendor-supplied library files?'
6522 . ./getfile
6523 vendorlib="$ans"
6524 vendorlibexp="$ansexp"
6525 ;;
6526esac
6527vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6528: Change installation prefix, if necessary.
6529if $test X"$prefix" != X"$installprefix"; then
6530 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6531else
6532 installvendorlib="$vendorlibexp"
6533fi
6534
6535case "$vendorprefix" in
6536'') d_vendorarch="$undef"
6537 vendorarch=''
6538 vendorarchexp=''
6539 ;;
6540*) d_vendorarch="$define"
6541 : determine where vendor-supplied architecture-dependent libraries go.
6542 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6543 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6544 : vendorlib may have an optional trailing /share.
6545 case "$vendorarch" in
6546 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6547 dflt="$dflt/$archname"
6548 ;;
6549 *) dflt="$vendorarch" ;;
6550 esac
6551 fn=d~+
6552 rp='Pathname for vendor-supplied architecture-dependent files?'
6553 . ./getfile
6554 vendorarch="$ans"
6555 vendorarchexp="$ansexp"
6556 ;;
6557esac
6558: Change installation prefix, if necessary.
6559if $test X"$prefix" != X"$installprefix"; then
6560 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6561else
6562 installvendorarch="$vendorarchexp"
6563fi
6564
6565: Final catch-all directories to search
6566$cat <<EOM
6567
6568Lastly, you can have perl look in other directories for extensions and
6569modules in addition to those already specified.
6570These directories will be searched after
6571 $sitearch
6572 $sitelib
6573EOM
6574test X"$vendorlib" != "X" && echo ' ' $vendorlib
6575test X"$vendorarch" != "X" && echo ' ' $vendorarch
6576echo ' '
6577case "$otherlibdirs" in
6578''|' ') dflt='none' ;;
6579*) dflt="$otherlibdirs" ;;
6580esac
6581$cat <<EOM
6582Enter a colon-separated set of extra paths to include in perl's @INC
6583search path, or enter 'none' for no extra paths.
6584
6585EOM
6586
6587rp='Colon-separated list of additional directories for perl to search?'
6588. ./myread
6589case "$ans" in
6590' '|''|none) otherlibdirs=' ' ;;
6591*) otherlibdirs="$ans" ;;
6592esac
6593case "$otherlibdirs" in
6594' ') val=$undef ;;
6595*) val=$define ;;
6596esac
6597set d_perl_otherlibdirs
6598eval $setvar
6599
6600: Cruising for prototypes
6601echo " "
6602echo "Checking out function prototypes..." >&4
55954f19
JH
6603$cat >prototype.c <<EOCP
6604#$i_stdlib I_STDLIB
6605#ifdef I_STDLIB
6606#include <stdlib.h>
6607#endif
b4eb6b3d
JH
6608int main(int argc, char *argv[]) {
6609 exit(0);}
6610EOCP
6611if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6612 echo "Your C compiler appears to support function prototypes."
6613 val="$define"
6614else
6615 echo "Your C compiler doesn't seem to understand function prototypes."
6616 val="$undef"
6617fi
6618set prototype
6619eval $setvar
6620$rm -f prototype*
6621
6622case "$prototype" in
6623"$define") ;;
6624*) ansi2knr='ansi2knr'
6625 echo " "
6626 cat <<EOM >&4
6627
6628$me: FATAL ERROR:
6629This version of $package can only be compiled by a compiler that
6630understands function prototypes. Unfortunately, your C compiler
6631 $cc $ccflags
6632doesn't seem to understand them. Sorry about that.
6633
6634If GNU cc is available for your system, perhaps you could try that instead.
6635
6636Eventually, we hope to support building Perl with pre-ANSI compilers.
6637If you would like to help in that effort, please contact <perlbug@perl.org>.
6638
6639Aborting Configure now.
6640EOM
6641 exit 2
6642 ;;
6643esac
6644
6645: determine where public executables go
6646echo " "
6647set dflt bin bin
6648eval $prefixit
6649fn=d~
6650rp='Pathname where the public executables will reside?'
6651. ./getfile
6652if $test "X$ansexp" != "X$binexp"; then
6653 installbin=''
6654fi
6655bin="$ans"
6656binexp="$ansexp"
6657: Change installation prefix, if necessary.
6658: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6659if $test X"$prefix" != X"$installprefix"; then
6660 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6661else
6662 installbin="$binexp"
6663fi
6664
6fcddf3b 6665echo " "
6fcddf3b 6666case "$extras" in
bf35c3f6
JH
6667'') dflt='n';;
6668*) dflt='y';;
6fcddf3b
JH
6669esac
6670cat <<EOM
6671Perl can be built with extra modules or bundles of modules which
6672will be fetched from the CPAN and installed alongside Perl.
6673
6674Notice that you will need access to the CPAN; either via the Internet,
6675or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6676be asked later to configure the CPAN.pm module which will in turn do
6677the installation of the rest of the extra modules or bundles.)
6678
6679Notice also that if the modules require any external software such as
dd2de242
JH
6680libraries and headers (the libz library and the zlib.h header for the
6681Compress::Zlib module, for example) you MUST have any such software
6682already installed, this configuration process will NOT install such
6683things for you.
6fcddf3b
JH
6684
6685If this doesn't make any sense to you, just accept the default '$dflt'.
6686EOM
dd2de242 6687rp='Install any extra modules (y or n)?'
6fcddf3b
JH
6688. ./myread
6689case "$ans" in
6690y|Y)
6691 cat <<EOM
6692
6693Please list any extra modules or bundles to be installed from CPAN,
6694with spaces between the names. The names can be in any format the
dd2de242
JH
6695'install' command of CPAN.pm will understand. (Answer 'none',
6696without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
6697EOM
6698 rp='Extras?'
6699 dflt="$extras"
6700 . ./myread
6701 extras="$ans"
6702esac
6703case "$extras" in
6704''|'none')
6705 val=''
6706 $rm -f ../extras.lst
6707 ;;
6708*) echo "(Saving the list of extras for later...)"
dd2de242
JH
6709 echo "$extras" > ../extras.lst
6710 val="'$extras'"
6fcddf3b
JH
6711 ;;
6712esac
6713set extras
6714eval $setvar
6715echo " "
6716
6e1038e0
MB
6717: determine where html pages for programs go
6718set html1dir html1dir none
6719eval $prefixit
6720$cat <<EOM
6721
6722If you wish to install html files for programs in $spackage, indicate
6723the appropriate directory here. To skip installing html files,
6724answer "none".
6725EOM
6726case "$html1dir" in
6727''|none|$undef|' ') dflt=none ;;
6728*) dflt=$html1dir ;;
6729esac
6730fn=dn+~
6731rp="Directory for the main $spackage html pages?"
6732. ./getfile
6733html1dir="$ans"
6734html1direxp="$ansexp"
6735: Use ' ' for none so value is preserved next time through Configure
6736$test X"$html1dir" = "X" && html1dir=' '
6737: Change installation prefix, if necessary.
6738if $test X"$prefix" != X"$installprefix"; then
6739 installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6740else
6741 installhtml1dir="$html1direxp"
6742fi
6743
6744: determine where html pages for libraries and modules go
6745set html3dir html3dir none
6746eval $prefixit
6747$cat <<EOM
6748
6749If you wish to install html files for modules associated with $spackage,
6750indicate the appropriate directory here. To skip installing html files,
6751answer "none".
6752EOM
6753: There is no obvious default. If they have specified html1dir, then
6754: try to key off that, possibly changing .../html1 into .../html3.
6755case "$html3dir" in
6756'') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6757*) dflt=$html3dir ;;
6758esac
6759fn=dn+~
6760rp="Directory for the $spackage module html pages?"
6761. ./getfile
6762html3dir="$ans"
6763html3direxp="$ansexp"
6764: Use ' ' for none so value is preserved next time through Configure
6765$test X"$html3dir" = "X" && html3dir=' '
6766: Change installation prefix, if necessary.
6767if $test X"$prefix" != X"$installprefix"; then
6768 installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6769else
6770 installhtml3dir="$html3direxp"
6771fi
6772
b4eb6b3d
JH
6773: Find perl5.005 or later.
6774echo "Looking for a previously installed perl5.005 or later... "
6775case "$perl5" in
a938a3bb 6776'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6777 : Check if this perl is recent and can load a simple module
a938a3bb 6778 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6779 perl5=$tdir/perl
6780 break;
a938a3bb
IZ
6781 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6782 perl5=$tdir/perl5
b4eb6b3d
JH
6783 break;
6784 fi
89ce900e
JH
6785 done
6786 ;;
6787*) perl5="$perl5"
6788 ;;
6789esac
6790case "$perl5" in
6791'') echo "None found. That's ok.";;
6792*) echo "Using $perl5." ;;
6793esac
6794
6795: Determine list of previous versions to include in @INC
6796$cat > getverlist <<EOPL
6797#!$perl5 -w
6798use File::Basename;
6799\$api_versionstring = "$api_versionstring";
6800\$version = "$version";
6801\$stem = "$sitelib_stem";
6802\$archname = "$archname";
6803EOPL
6804 $cat >> getverlist <<'EOPL'
6805# Can't have leading @ because metaconfig interprets it as a command!
6806;@inc_version_list=();
6807# XXX Redo to do opendir/readdir?
6808if (-d $stem) {
6809 chdir($stem);
6810 ;@candidates = glob("5.*");
6811}
6812else {
6813 ;@candidates = ();
6814}
6815
6816# XXX ToDo: These comparisons must be reworked when two-digit
6817# subversions come along, so that 5.7.10 compares as greater than
6818# 5.7.3! By that time, hope that 5.6.x is sufficiently
6819# widespread that we can use the built-in version vectors rather
6820# than reinventing them here. For 5.6.0, however, we must
6821# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6822foreach $d (@candidates) {
6823 if ($d lt $version) {
6824 if ($d ge $api_versionstring) {
6825 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6826 }
6827 elsif ($d ge "5.005") {
6828 unshift(@inc_version_list, grep { -d } $d);
6829 }
6830 }
6831 else {
6832 # Skip newer version. I.e. don't look in
6833 # 5.7.0 if we're installing 5.6.1.
6834 }
6835}
6836
6837if (@inc_version_list) {
6838 print join(' ', @inc_version_list);
6839}
6840else {
6841 # Blank space to preserve value for next Configure run.
6842 print " ";
6843}
6844EOPL
6845chmod +x getverlist
6846case "$inc_version_list" in
6847'') if test -x "$perl5$exe_ext"; then
6848 dflt=`$perl5 getverlist`
6849 else
6850 dflt='none'
6851 fi
6852 ;;
6853$undef) dflt='none' ;;
6854*) eval dflt=\"$inc_version_list\" ;;
6855esac
6856case "$dflt" in
6857''|' ') dflt=none ;;
6858esac
6859case "$dflt" in
68605.005) dflt=none ;;
6861esac
6862$cat <<EOM
6863
6864In order to ease the process of upgrading, this version of perl
6865can be configured to use modules built and installed with earlier
6866versions of perl that were installed under $prefix. Specify here
6867the list of earlier versions that this version of perl should check.
6868If Configure detected no earlier versions of perl installed under
6869$prefix, then the list will be empty. Answer 'none' to tell perl
6870to not search earlier versions.
6871
6872The default should almost always be sensible, so if you're not sure,
6873just accept the default.
6874EOM
6875
6876rp='List of earlier versions to include in @INC?'
6877. ./myread
6878case "$ans" in
d2556f21 6879[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
89ce900e
JH
6880*) inc_version_list="$ans" ;;
6881esac
6882case "$inc_version_list" in
6883''|' ')
6884 inc_version_list_init='0';;
6885*) inc_version_list_init=`echo $inc_version_list |
6886 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6887 ;;
6888esac
6889$rm -f getverlist
6890
6891: determine whether to install perl also as /usr/bin/perl
6892
6893echo " "
6894if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6895 $cat <<EOM
6896Many scripts expect perl to be installed as /usr/bin/perl.
6897
6898If you want to, I can install the perl you are about to compile
6899as /usr/bin/perl (in addition to $bin/perl).
6900EOM
6901 if test -f /usr/bin/perl; then
6902 $cat <<EOM
6903
6904However, please note that because you already have a /usr/bin/perl,
6905overwriting that with a new Perl would very probably cause problems.
6906Therefore I'm assuming you don't want to do that (unless you insist).
6907
6908EOM
6909 case "$installusrbinperl" in
6910 "$define"|[yY]*) dflt='y';;
6911 *) dflt='n';;
6912 esac
6913 else
6914 $cat <<EOM
6915
6916Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6917
6918EOM
6919 case "$installusrbinperl" in
6920 "$undef"|[nN]*) dflt='n';;
6921 *) dflt='y';;
6922 esac
6923 fi
6924 rp="Do you want to install perl as /usr/bin/perl?"
6925 . ./myread
6926 case "$ans" in
6927 [yY]*) val="$define";;
6928 *) val="$undef" ;;
6929 esac
6930else
6931 val="$undef"
6932fi
6933set installusrbinperl
6934eval $setvar
6935
6936echo " "
6937echo "Checking for GNU C Library..." >&4
6938cat >try.c <<'EOCP'
6939/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
6940 alone are insufficient to distinguish different versions, such as
6941 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
6942 libc version 2.1.0. A. Dougherty, June 3, 2002.
6943*/
6944#include <stdio.h>
6945int main(void)
6946{
6947#ifdef __GLIBC__
6948# ifdef __GLIBC_MINOR__
6949# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6950# include <gnu/libc-version.h>
6951 printf("%s\n", gnu_get_libc_version());
6952# else
6953 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
6954# endif
6955# else
6956 printf("%d\n", __GLIBC__);
6957# endif
6958 return 0;
6959#else
6960 return 1;
6961#endif
6962}
6963EOCP
6964set try
6965if eval $compile_ok && $run ./try > glibc.ver; then
6966 val="$define"
6967 gnulibc_version=`$cat glibc.ver`
6968 echo "You are using the GNU C Library version $gnulibc_version"
6969else
6970 val="$undef"
6971 gnulibc_version=''
6972 echo "You are not using the GNU C Library"
6973fi
6974$rm -f try try.* glibc.ver
6975set d_gnulibc
6976eval $setvar
6977
6978: see if nm is to be used to determine whether a symbol is defined or not
6979case "$usenm" in
6980'')
6981 dflt=''
6982 case "$d_gnulibc" in
6983 "$define")
6984 echo " "
6985 echo "nm probably won't work on the GNU C Library." >&4
6986 dflt=n
6987 ;;
6988 esac
6989 case "$dflt" in
6990 '')
6991 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6992 echo " "
6993 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
6994 echo "'nm' won't be sufficient on this sytem." >&4
6995 dflt=n
6996 fi
6997 ;;
6998 esac
6999 case "$dflt" in
7000 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7001 if $test $dflt -gt 20; then
7002 dflt=y
7003 else
7004 dflt=n
7005 fi
7006 ;;
7007 esac
b4eb6b3d 7008 ;;
89ce900e
JH
7009*)
7010 case "$usenm" in
7011 true|$define) dflt=y;;
7012 *) dflt=n;;
7013 esac
b4eb6b3d
JH
7014 ;;
7015esac
89ce900e 7016$cat <<EOM
b4eb6b3d 7017
89ce900e
JH
7018I can use $nm to extract the symbols from your C libraries. This
7019is a time consuming task which may generate huge output on the disk (up
7020to 3 megabytes) but that should make the symbols extraction faster. The
7021alternative is to skip the 'nm' extraction part and to compile a small
7022test program instead to determine whether each symbol is present. If
7023you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7024this may be the best solution.
b4eb6b3d 7025
89ce900e 7026You probably shouldn't let me use 'nm' if you are using the GNU C Library.
b4eb6b3d 7027
89ce900e
JH
7028EOM
7029rp="Shall I use $nm to extract C symbols from the libraries?"
7030. ./myread
7031case "$ans" in
7032[Nn]*) usenm=false;;
7033*) usenm=true;;
b4eb6b3d 7034esac
89ce900e
JH
7035
7036runnm=$usenm
7037case "$reuseval" in
7038true) runnm=false;;
b4eb6b3d 7039esac
b4eb6b3d 7040
89ce900e
JH
7041: nm options which may be necessary
7042case "$nm_opt" in
7043'') if $test -f /mach_boot; then
7044 nm_opt='' # Mach
7045 elif $test -d /usr/ccs/lib; then
7046 nm_opt='-p' # Solaris (and SunOS?)
7047 elif $test -f /dgux; then
7048 nm_opt='-p' # DG-UX
7049 elif $test -f /lib64/rld; then
7050 nm_opt='-p' # 64-bit Irix
7051 else
7052 nm_opt=''
7053 fi;;
7054esac
b4eb6b3d 7055
89ce900e
JH
7056: nm options which may be necessary for shared libraries but illegal
7057: for archive libraries. Thank you, Linux.
7058case "$nm_so_opt" in
7059'') case "$myuname" in
7060 *linux*)
7061 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7062 nm_so_opt='--dynamic'
7063 fi
7064 ;;
7065 esac
7066 ;;
7067esac
b4eb6b3d 7068
89ce900e
JH
7069case "$runnm" in
7070true)
7071: get list of predefined functions in a handy place
7072echo " "
7073case "$libc" in
7074'') libc=unknown
7075 case "$libs" in
7076 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7077 esac
7078 ;;
b4eb6b3d 7079esac
89ce900e
JH
7080case "$libs" in
7081'') ;;
7082*) for thislib in $libs; do
7083 case "$thislib" in
7084 -lc|-lc_s)
7085 : Handle C library specially below.
7086 ;;
7087 -l*)
7088 thislib=`echo $thislib | $sed -e 's/^-l//'`
7089 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7090 :
7091 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7092 :
7093 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7094 :
7095 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7096 :
7097 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7098 :
7099 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7100 :
7101 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7102 :
7103 else
7104 try=''
7105 fi
7106 libnames="$libnames $try"
7107 ;;
7108 *) libnames="$libnames $thislib" ;;
7109 esac
7110 done
b4eb6b3d
JH
7111 ;;
7112esac
89ce900e
JH
7113xxx=normal
7114case "$libc" in
7115unknown)
7116 set /lib/libc.$so
7117 for xxx in $libpth; do
7118 $test -r $1 || set $xxx/libc.$so
7119 : The messy sed command sorts on library version numbers.
7120 $test -r $1 || \
7121 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7122 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7123 h
7124 s/[0-9][0-9]*/0000&/g
7125 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7126 G
7127 s/\n/ /' | \
7128 $sort | $sed -e 's/^.* //'`
7129 eval set \$$#
7130 done
7131 $test -r $1 || set /usr/ccs/lib/libc.$so
7132 $test -r $1 || set /lib/libsys_s$_a
7133 ;;
7134*)
7135 set blurfl
7136 ;;
7137esac
7138if $test -r "$1"; then
7139 echo "Your (shared) C library seems to be in $1."
7140 libc="$1"
7141elif $test -r /lib/libc && $test -r /lib/clib; then
7142 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7143 xxx=apollo
7144 libc='/lib/clib /lib/libc'
7145 if $test -r /lib/syslib; then
7146 echo "(Your math library is in /lib/syslib.)"
7147 libc="$libc /lib/syslib"
7148 fi
7149elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7150 echo "Your C library seems to be in $libc, as you said before."
7151elif $test -r $incpath/usr/lib/libc$_a; then
7152 libc=$incpath/usr/lib/libc$_a;
7153 echo "Your C library seems to be in $libc. That's fine."
7154elif $test -r /lib/libc$_a; then
7155 libc=/lib/libc$_a;
7156 echo "Your C library seems to be in $libc. You're normal."
7157else
7158 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7159 :
7160 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7161 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7162 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7163 :
7164 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7165 :
7166 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7167 :
7168 else
7169 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7170 fi
7171 if $test -r "$tans"; then
7172 echo "Your C library seems to be in $tans, of all places."
7173 libc=$tans
7174 else
7175 libc='blurfl'
7176 fi
7177fi
7178if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7179 dflt="$libc"
7180 cat <<EOM
b4eb6b3d 7181
89ce900e
JH
7182If the guess above is wrong (which it might be if you're using a strange
7183compiler, or your machine supports multiple models), you can override it here.
b4eb6b3d 7184
89ce900e
JH
7185EOM
7186else
7187 dflt=''
7188 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7189 cat >&4 <<EOM
7190I can't seem to find your C library. I've looked in the following places:
5e366f65 7191
b4eb6b3d 7192EOM
89ce900e
JH
7193 $sed 's/^/ /' libpath
7194 cat <<EOM
5e366f65 7195
89ce900e 7196None of these seems to contain your C library. I need to get its name...
5e366f65
JH
7197
7198EOM
89ce900e
JH
7199fi
7200fn=f
7201rp='Where is your C library?'
7202. ./getfile
7203libc="$ans"
5e366f65 7204
89ce900e
JH
7205echo " "
7206echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7207set X `cat libnames`
7208shift
7209xxx=files
7210case $# in 1) xxx=file; esac
7211echo "Extracting names from the following $xxx for later perusal:" >&4
7212echo " "
7213$sed 's/^/ /' libnames >&4
7214echo " "
7215$echo $n "This may take a while...$c" >&4
5e366f65 7216
89ce900e
JH
7217for file in $*; do
7218 case $file in
7219 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7220 *) $nm $nm_opt $file 2>/dev/null;;
b4eb6b3d 7221 esac
89ce900e
JH
7222done >libc.tmp
7223
7224$echo $n ".$c"
7225$grep fprintf libc.tmp > libc.ptf
7226xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7227xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7228xxx='[ADTSIW]'
ab900c53 7229if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
89ce900e
JH
7230 eval $xscan;\
7231 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7232 eval $xrun
7233elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7234 eval $xscan;\
7235 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7236 eval $xrun
7237elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7238 eval $xscan;\
7239 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7240 eval $xrun
7241elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7242 eval $xscan;\
7243 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7244 eval $xrun
7245elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7246 eval $xscan;\
7247 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7248 eval $xrun
7249elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7250 eval $xscan;\
7251 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252 eval $xrun
7253elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7254 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7255 eval $xscan;\
7256 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7257 eval $xrun
7258elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7259 eval $xscan;\
7260 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7261 eval $xrun
7262elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7263 eval $xscan;\
7264 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7265 eval $xrun
7266elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7267 eval $xscan;\
7268 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7269 eval $xrun
7270elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7271 eval $xscan;\
7272 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7273 eval $xrun
7274elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7275 eval $xscan;\
7276 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7277 eval $xrun
7278elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7279 eval $xscan;\
7280 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7281 eval $xrun
7282elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7283 eval $xscan;\
7284 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7285 eval $xrun
b4eb6b3d 7286else
89ce900e
JH
7287 $nm -p $* 2>/dev/null >libc.tmp
7288 $grep fprintf libc.tmp > libc.ptf
7289 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7290 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7291 then
7292 nm_opt='-p'
7293 eval $xrun
7294 else
7295 echo " "
7296 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7297 com=''
7298 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7299 for thisname in $libnames $libc; do
7300 $ar t $thisname >>libc.tmp
7301 done
7302 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7303 echo "Ok." >&4
7304 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7305 # Repeat libc to extract forwarders to DLL entries too
7306 for thisname in $libnames $libc; do
7307 $ar tv $thisname >>libc.tmp
7308 # Revision 50 of EMX has bug in $ar.
7309 # it will not extract forwarders to DLL entries
7310 # Use emximp which will extract exactly them.
7311 emximp -o tmp.imp $thisname \
7312 2>/dev/null && \
7313 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7314 < tmp.imp >>libc.tmp
7315 $rm tmp.imp
7316 done
7317 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7318 echo "Ok." >&4
7319 else
7320 echo "$ar didn't seem to work right." >&4
7321 echo "Maybe this is a Cray...trying bld instead..." >&4
7322 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7323 then
7324 for thisname in $libnames; do
7325 bld t $libnames | \
7326 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7327 $ar t $thisname >>libc.tmp
7328 done
7329 echo "Ok." >&4
7330 else
7331 echo "That didn't work either. Giving up." >&4
7332 exit 1
7333 fi
7334 fi
7335 fi
b4eb6b3d 7336fi
89ce900e
JH
7337nm_extract="$com"
7338case "$PASE" in
7339define)
7340 echo " "
7341 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7342 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7343 ;;
7344*) if $test -f /lib/syscalls.exp; then
7345 echo " "
7346 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7347 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7348 fi
7349 ;;
7350esac
7351;;
7352esac
7353$rm -f libnames libpath
b4eb6b3d
JH
7354
7355: see if dld is available
7356set dld.h i_dld
7357eval $inhdr
7358
89ce900e
JH
7359: is a C symbol defined?
7360csym='tlook=$1;
7361case "$3" in
373dfab3
JH
7362-v) tf=libc.tmp; tdc="";;
7363-a) tf=libc.tmp; tdc="[]";;
7364*) tlook="^$1\$"; tf=libc.list; tdc="()";;
89ce900e
JH
7365esac;
7366tx=yes;
7367case "$reuseval-$4" in
7368true-) ;;
7369true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7370esac;
7371case "$tx" in
7372yes)
ab900c53 7373 tval=false;
5129fff4
JH
7374 if $test "$runnm" = true; then
7375 if $contains $tlook $tf >/dev/null 2>&1; then
ab900c53 7376 tval=true;
5129fff4 7377 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
373dfab3 7378 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7379 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
373dfab3
JH
7380 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7381 $rm -f try$_exe try.c core core.* try.core;
89ce900e 7382 fi;
5129fff4 7383 else
373dfab3 7384 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
5129fff4 7385 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
373dfab3 7386 $rm -f try$_exe try.c;
ab900c53
AB
7387 fi;
7388 ;;
89ce900e
JH
7389*)
7390 case "$tval" in
7391 $define) tval=true;;
7392 *) tval=false;;
ab900c53
AB
7393 esac;
7394 ;;
89ce900e
JH
7395esac;
7396eval "$2=$tval"'
7397
7398: define an is-in-libc? function
7399inlibc='echo " "; td=$define; tu=$undef;
7400sym=$1; var=$2; eval "was=\$$2";
7401tx=yes;
7402case "$reuseval$was" in
7403true) ;;
7404true*) tx=no;;
7405esac;
7406case "$tx" in
7407yes)
7408 set $sym tres -f;
7409 eval $csym;
7410 case "$tres" in
7411 true)
7412 echo "$sym() found." >&4;
7413 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7414 *)
7415 echo "$sym() NOT found." >&4;
7416 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7417 esac;;
7418*)
7419 case "$was" in
7420 $define) echo "$sym() found." >&4;;
7421 *) echo "$sym() NOT found." >&4;;
7422 esac;;
7423esac'
7424
b4eb6b3d
JH
7425: see if dlopen exists
7426xxx_runnm="$runnm"
7427runnm=false
7428set dlopen d_dlopen
7429eval $inlibc
7430runnm="$xxx_runnm"
7431
7432: determine which dynamic loading, if any, to compile in
7433echo " "
7434dldir="ext/DynaLoader"
7435case "$usedl" in
7436$define|y|true)
7437 dflt='y'
7438 usedl="$define"
7439 ;;
7440$undef|n|false)
7441 dflt='n'
7442 usedl="$undef"
7443 ;;
7444*)
7445 dflt='n'
7446 case "$d_dlopen" in
7447 $define) dflt='y' ;;
7448 esac
7449 case "$i_dld" in
7450 $define) dflt='y' ;;
7451 esac
7452 : Does a dl_xxx.xs file exist for this operating system
7453 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7454 ;;
7455esac
7456rp="Do you wish to use dynamic loading?"
7457. ./myread
7458usedl="$ans"
7459case "$ans" in
7460y*) usedl="$define"
7461 case "$dlsrc" in
7462 '')
7463 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7464 dflt="$dldir/dl_${osname}.xs"
7465 elif $test "$d_dlopen" = "$define" ; then
7466 dflt="$dldir/dl_dlopen.xs"
7467 elif $test "$i_dld" = "$define" ; then
7468 dflt="$dldir/dl_dld.xs"
7469 else
7470 dflt=''
7471 fi
7472 ;;
7473 *) dflt="$dldir/$dlsrc"
7474 ;;
7475 esac
7476 echo "The following dynamic loading files are available:"
7477 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7478 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7479 rp="Source file to use for dynamic loading"
7480 fn="fne"
7481 gfpth="$src"
7482 . ./getfile
7483 usedl="$define"
7484 : emulate basename
7485 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7486
7487 $cat << EOM
7488
7489Some systems may require passing special flags to $cc -c to
7490compile modules that will be used to create a shared library.
7491To use no flags, say "none".
7492
7493EOM
7494 case "$cccdlflags" in
7495 '') case "$gccversion" in
7496 '') case "$osname" in
7497 hpux) dflt='+z' ;;
7498 next) dflt='none' ;;
7499 irix*) dflt='-KPIC' ;;
48bcfe03 7500 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7501 sunos) dflt='-pic' ;;
7502 *) dflt='none' ;;
7503 esac
7504 ;;
7505 *) case "$osname" in
b6cc0f4c 7506 darwin) dflt='none' ;;
48bcfe03 7507 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7508 *) dflt='-fpic' ;;
7509 esac ;;
7510 esac ;;
7511 ' ') dflt='none' ;;
7512 *) dflt="$cccdlflags" ;;
7513 esac
7514 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7515 . ./myread
7516 case "$ans" in
7517 none) cccdlflags=' ' ;;
7518 *) cccdlflags="$ans" ;;
7519 esac
7520
7521 cat << EOM
7522
7523Some systems use ld to create libraries that can be dynamically loaded,
7524while other systems (such as those using ELF) use $cc.
7525
7526EOM
7527 case "$ld" in
55954f19 7528 '') $cat >try.c <<EOM
b4eb6b3d
JH
7529/* Test for whether ELF binaries are produced */
7530#include <fcntl.h>
55954f19
JH
7531#$i_stdlib I_STDLIB
7532#ifdef I_STDLIB
b4eb6b3d 7533#include <stdlib.h>
55954f19 7534#endif
b4eb6b3d
JH
7535int main() {
7536 char b[4];
7537 int i = open("a.out",O_RDONLY);
7538 if(i == -1)
7539 exit(1); /* fail */
7540 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7541 exit(0); /* succeed (yes, it's ELF) */
7542 else
7543 exit(1); /* fail */
7544}
7545EOM
5440bc8e 7546 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7547 cat <<EOM
7548You appear to have ELF support. I'll use $cc to build dynamic libraries.
7549EOM
7550 dflt="$cc"
7551 else
7552 echo "I'll use ld to build dynamic libraries."
7553 dflt='ld'
7554 fi
7555 rm -f try.c a.out
7556 ;;
7557 *) dflt="$ld"
7558 ;;
7559 esac
7560
7561 rp="What command should be used to create dynamic libraries?"
7562 . ./myread
7563 ld="$ans"
7564
7565 cat << EOM
7566
7567Some systems may require passing special flags to $ld to create a
7568library that can be dynamically loaded. If your ld flags include
7569-L/other/path options to locate libraries outside your loader's normal
7570search path, you may need to specify those -L options here as well. To
7571use no flags, say "none".
7572
7573EOM
7574 case "$lddlflags" in
7575 '') case "$osname" in
7576 beos) dflt='-nostart' ;;
7577 hpux) dflt='-b';
7578 case "$gccversion" in
7579 '') dflt="$dflt +vnocompatwarnings" ;;
7580 esac
7581 ;;
7582 linux|irix*) dflt='-shared' ;;
7583 next) dflt='none' ;;
7584 solaris) dflt='-G' ;;
7585 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7586 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7587 *) dflt='none' ;;
7588 esac
7589 ;;
7590 *) dflt="$lddlflags" ;;
7591 esac
7592
7593 : Try to guess additional flags to pick up local libraries.
7594 : Be careful not to append to a plain 'none'
7595 case "$dflt" in
7596 none) dflt='' ;;
7597 esac
7598 for thisflag in $ldflags; do
7599 case "$thisflag" in
b5b9f165 7600 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7601 case " $dflt " in
7602 *" $thisflag "*) ;;
7603 *) dflt="$dflt $thisflag" ;;
7604 esac
7605 ;;
7606 esac
7607 done
7608
7609 case "$dflt" in
7610 ''|' ') dflt='none' ;;
7611 esac
7612
7613 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7614 . ./myread
7615 case "$ans" in
7616 none) lddlflags=' ' ;;
7617 *) lddlflags="$ans" ;;
7618 esac
7619
7620 cat <<EOM
7621
7622Some systems may require passing special flags to $cc to indicate that
7623the resulting executable will use dynamic linking. To use no flags,
7624say "none".
7625
7626EOM
7627 case "$ccdlflags" in
7628 '') case "$osname" in
91fc0aa5
AH
7629 linux|hpux) dflt='-Wl,-E' ;;
7630 next|sunos) dflt='none' ;;
7631 *) dflt='none' ;;
b4eb6b3d
JH
7632 esac ;;
7633 ' ') dflt='none' ;;
7634 *) dflt="$ccdlflags" ;;
7635 esac
7636 rp="Any special flags to pass to $cc to use dynamic linking?"
7637 . ./myread
7638 case "$ans" in
7639 none) ccdlflags=' ' ;;
7640 *) ccdlflags="$ans" ;;
7641 esac
7642 ;;
7643*) usedl="$undef"
7644 ld='ld'
7645 dlsrc='dl_none.xs'
7646 lddlflags=''
7647 ccdlflags=''
7648 ;;
7649esac
7650
7651also=''
7652case "$usedl" in
7653$undef)
7654 # No dynamic loading being used, so don't bother even to prompt.
7655 useshrplib='false'
7656 ;;
7657*) case "$useshrplib" in
7658 '') case "$osname" in
48bcfe03 7659 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7660 dflt=y
7661 also='Building a shared libperl is required for dynamic loading to work on your system.'
7662 ;;
7663 next*)
7664 case "$osvers" in
7665 4*) dflt=y
7666 also='Building a shared libperl is needed for MAB support.'
7667 ;;
7668 *) dflt=n
7669 ;;
7670 esac
7671 ;;
7672 *) dflt=n
7673 ;;
7674 esac
7675 ;;
7676 $define|true|[Yy]*)
7677 dflt=y
7678 ;;
7679 *) dflt=n
7680 ;;
7681 esac
7682 $cat << EOM
7683
7684The perl executable is normally obtained by linking perlmain.c with
7685libperl${_a}, any static extensions (usually just DynaLoader), and
7686any other libraries needed on this system (such as -lm, etc.). Since
7687your system supports dynamic loading, it is probably possible to build
7688a shared libperl.$so. If you will have more than one executable linked
7689to libperl.$so, this will significantly reduce the size of each
7690executable, but it may have a noticeable affect on performance. The
7691default is probably sensible for your system.
7692$also
7693
7694EOM
7695 rp="Build a shared libperl.$so (y/n)"
7696 . ./myread
7697 case "$ans" in
7698 true|$define|[Yy]*)
7699 useshrplib='true' ;;
7700 *) useshrplib='false' ;;
7701 esac
7702 ;;
7703esac
7704
7705case "$useshrplib" in
7706true)
7707 case "$libperl" in
7708 '')
7709 # Figure out a good name for libperl.so. Since it gets stored in
7710 # a version-specific architecture-dependent library, the version
7711 # number isn't really that important, except for making cc/ld happy.
7712 #
7713 # A name such as libperl.so.3.1
7714 majmin="libperl.$so.$patchlevel.$subversion"
7715 # A name such as libperl.so.301
7716 majonly=`echo $patchlevel $subversion |
7717 $awk '{printf "%d%02d", $1, $2}'`
7718 majonly=libperl.$so.$majonly
7719 # I'd prefer to keep the os-specific stuff here to a minimum, and
7720 # rely on figuring it out from the naming of libc.
7721 case "${osname}${osvers}" in
7722 next4*)
7723 dflt=libperl.5.$so
7724 # XXX How handle the --version stuff for MAB?
7725 ;;
7726 linux*) # ld won't link with a bare -lperl otherwise.
7727 dflt=libperl.$so
7728 ;;
b53432e4
GH
7729 cygwin*) # ld links against an importlib
7730 dflt=libperl$lib_ext
b4eb6b3d
JH
7731 ;;
7732 *) # Try to guess based on whether libc has major.minor.
7733 case "$libc" in
7734 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7735 *libc.$so.[0-9]*) dflt=$majonly ;;
7736 *) dflt=libperl.$so ;;
7737 esac
7738 ;;
7739 esac
7740 ;;
7741 *) dflt=$libperl
7742 ;;
7743 esac
7744 cat << EOM
7745
7746I need to select a good name for the shared libperl. If your system uses
7747library names with major and minor numbers, then you might want something
7748like $majmin. Alternatively, if your system uses a single version
7749number for shared libraries, then you might want to use $majonly.
7750Or, your system might be quite happy with a simple libperl.$so.
7751
7752Since the shared libperl will get installed into a version-specific
7753architecture-dependent directory, the version number of the shared perl
7754library probably isn't important, so the default should be o.k.
7755
7756EOM
7757 rp='What name do you want to give to the shared libperl?'
7758 . ./myread
7759 libperl=$ans
7760 echo "Ok, I'll use $libperl"
7761 ;;
7762*)
7763 libperl="libperl${_a}"
7764 ;;
7765esac
7766
7767# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7768case "$shrpdir" in
7769'') ;;
7770*) $cat >&4 <<EOM
7771WARNING: Use of the shrpdir variable for the installation location of
7772the shared $libperl is not supported. It was never documented and
7773will not work in this version. Let me (perlbug@perl.org)
7774know of any problems this may cause.
7775
7776EOM
7777 case "$shrpdir" in
7778 "$archlibexp/CORE")
7779 $cat >&4 <<EOM
7780But your current setting of $shrpdir is
7781the default anyway, so it's harmless.
7782EOM
7783 ;;
7784 *)
7785 $cat >&4 <<EOM
7786Further, your current attempted setting of $shrpdir
7787conflicts with the value of $archlibexp/CORE
7788that installperl will use.
7789EOM
7790 ;;
7791 esac
7792 ;;
7793esac
7794
7795# How will the perl executable find the installed shared $libperl?
7796# Add $xxx to ccdlflags.
7797# If we can't figure out a command-line option, use $shrpenv to
7798# set env LD_RUN_PATH. The main perl makefile uses this.
7799shrpdir=$archlibexp/CORE
7800xxx=''
7801tmp_shrpenv=''
7802if "$useshrplib"; then
7803 case "$osname" in
7804 aix)
7805 # We'll set it in Makefile.SH...
7806 ;;
b5b9f165 7807 solaris)
b4eb6b3d
JH
7808 xxx="-R $shrpdir"
7809 ;;
32b2ae02 7810 freebsd|netbsd|openbsd)
b4eb6b3d
JH
7811 xxx="-Wl,-R$shrpdir"
7812 ;;
6b20d41b 7813 bsdos|linux|irix*|dec_osf)
b4eb6b3d
JH
7814 xxx="-Wl,-rpath,$shrpdir"
7815 ;;
7816 next)
7817 # next doesn't like the default...
7818 ;;
7819 beos)
7820 # beos doesn't like the default, either.
7821 ;;
7822 hpux*)
7823 # hpux doesn't like the default, either.
7824 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7825 ;;
7826 *)
7827 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7828 ;;
7829 esac
7830 case "$xxx" in
7831 '') ;;
7832 *)
7833 # Only add $xxx if it isn't already in ccdlflags.
7834 case " $ccdlflags " in
7835 *" $xxx "*) ;;
7836 *) ccdlflags="$ccdlflags $xxx"
7837 cat <<EOM >&4
7838
7839Adding $xxx to the flags
7840passed to $ld so that the perl executable will find the
7841installed shared $libperl.
7842
7843EOM
7844 ;;
7845 esac
7846 ;;
7847 esac
7848fi
7849# Fix ccdlflags in AIX for building external extensions.
7850# (For building Perl itself bare -bE:perl.exp is needed,
7851# Makefile.SH takes care of this.)
7852case "$osname" in
7853aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7854esac
7855# Respect a hint or command-line value.
7856case "$shrpenv" in
7857'') shrpenv="$tmp_shrpenv" ;;
7858esac
7859case "$ldlibpthname" in
7860'') ldlibpthname=LD_LIBRARY_PATH ;;
7861none) ldlibpthname='' ;;
7862esac
7863
7864: determine where manual pages are on this system
7865echo " "
7866case "$sysman" in
7867'')
4a0a3829
SD
7868 syspath='/usr/share/man/man1 /usr/man/man1'
7869 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7870 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7871 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7872 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7873 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7874 sysman=`./loc . /usr/man/man1 $syspath`
7875 ;;
7876esac
7877if $test -d "$sysman"; then
7878 echo "System manual is in $sysman." >&4
7879else
7880 echo "Could not find manual pages in source form." >&4
7881fi
7882
7883: determine where manual pages go
7884set man1dir man1dir none
7885eval $prefixit
7886$cat <<EOM
7887
7888$spackage has manual pages available in source form.
7889EOM
7890case "$nroff" in
7891nroff)
7892 echo "However, you don't have nroff, so they're probably useless to you."
7893 case "$man1dir" in
7894 '') man1dir="none";;
7895 esac;;
7896esac
7897echo "If you don't want the manual sources installed, answer 'none'."
7898case "$man1dir" in
7899' ') dflt=none
7900 ;;
7901'')
4a0a3829
SD
7902 lookpath="$prefixexp/share/man/man1"
7903 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7904 lookpath="$lookpath $prefixexp/man/p_man/man1"
7905 lookpath="$lookpath $prefixexp/man/u_man/man1"
7906 lookpath="$lookpath $prefixexp/man/man.1"
7907 case "$sysman" in
7908 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7909 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7910 esac
7911 set dflt
7912 eval $prefixup
7913 ;;
7914*) dflt="$man1dir"
7915 ;;
7916esac
7917echo " "
7918fn=dn+~
7919rp="Where do the main $spackage manual pages (source) go?"
7920. ./getfile
7921if $test "X$man1direxp" != "X$ansexp"; then
7922 installman1dir=''
7923fi
7924man1dir="$ans"
7925man1direxp="$ansexp"
7926case "$man1dir" in
7927'') man1dir=' '
7928 installman1dir='';;
7929esac
7930
7931: Change installation prefix, if necessary.
7932if $test X"$prefix" != X"$installprefix"; then
7933 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7934else
7935 installman1dir="$man1direxp"
7936fi
7937
7938: What suffix to use on installed man pages
7939
7940case "$man1dir" in
7941' ')
7942 man1ext='0'
7943 ;;
7944*)
7945 rp="What suffix should be used for the main $spackage man pages?"
7946 case "$man1ext" in
7947 '') case "$man1dir" in
7948 *1) dflt=1 ;;
7949 *1p) dflt=1p ;;
7950 *1pm) dflt=1pm ;;
7951 *l) dflt=l;;
7952 *n) dflt=n;;
7953 *o) dflt=o;;
7954 *p) dflt=p;;
7955 *C) dflt=C;;
7956 *L) dflt=L;;
7957 *L1) dflt=L1;;
7958 *) dflt=1;;
7959 esac
7960 ;;
7961 *) dflt="$man1ext";;
7962 esac
7963 . ./myread
7964 man1ext="$ans"
7965 ;;
7966esac
7967
7968: see if we can have long filenames
7969echo " "
7970first=123456789abcdef
7971$rm -f $first
7972if (echo hi >$first) 2>/dev/null; then
7973 if $test -f 123456789abcde; then
7974 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7975 val="$undef"
7976 else
7977 echo 'You can have filenames longer than 14 characters.'>&4
7978 val="$define"
7979 fi
7980else
7981 $cat <<'EOM'
7982You can't have filenames longer than 14 chars.
7983You can't even think about them!
7984EOM
7985 val="$undef"
7986fi
7987set d_flexfnam
7988eval $setvar
7989$rm -rf 123456789abcde*
7990
7991: determine where library module manual pages go
7992set man3dir man3dir none
7993eval $prefixit
7994$cat <<EOM
7995
7996$spackage has manual pages for many of the library modules.
7997EOM
7998
7999case "$nroff" in
8000nroff)
8001 $cat <<'EOM'
8002However, you don't have nroff, so they're probably useless to you.
8003EOM
8004 case "$man3dir" in
8005 '') man3dir="none";;
8006 esac;;
8007esac
8008
8009case "$d_flexfnam" in
8010undef)
8011 $cat <<'EOM'
8012However, your system can't handle the long file names like File::Basename.3.
8013EOM
8014 case "$man3dir" in
8015 '') man3dir="none";;
8016 esac;;
8017esac
8018
8019echo "If you don't want the manual sources installed, answer 'none'."
8020prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8021case "$man3dir" in
8022'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8023 if $test -d "$privlib/man/man3"; then
8024 cat <<EOM >&4
8025
8026WARNING: Previous versions of perl installed man3 pages into
8027$privlib/man/man3. This version will suggest a
8028new default of $dflt.
8029EOM
8030 tdflt=$dflt
8031 dflt='n'
8032 rp='Do you wish to preserve the old behavior?(y/n)'
8033 . ./myread
8034 case "$ans" in
8035 y*) dflt="$privlib/man/man3" ;;
8036 *) dflt=$tdflt ;;
8037 esac
8038 fi
8039 ;;
8040*) dflt="$man3dir" ;;
8041esac
8042case "$dflt" in
8043' ') dflt=none ;;
8044esac
8045echo " "
8046fn=dn+~
8047rp="Where do the $package library man pages (source) go?"
8048. ./getfile
8049man3dir="$ans"
8050man3direxp="$ansexp"
8051case "$man3dir" in
8052'') man3dir=' '
8053 installman3dir='';;
8054esac
8055
8056: Change installation prefix, if necessary.
8057if $test X"$prefix" != X"$installprefix"; then
8058 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8059else
8060 installman3dir="$man3direxp"
8061fi
8062
8063: What suffix to use on installed man pages
8064case "$man3dir" in
8065' ')
8066 man3ext='0'
8067 ;;
8068*)
8069 rp="What suffix should be used for the $package library man pages?"
8070 case "$man3ext" in
8071 '') case "$man3dir" in
8072 *3) dflt=3 ;;
8073 *3p) dflt=3p ;;
8074 *3pm) dflt=3pm ;;
8075 *l) dflt=l;;
8076 *n) dflt=n;;
8077 *o) dflt=o;;
8078 *p) dflt=p;;
8079 *C) dflt=C;;
8080 *L) dflt=L;;
8081 *L3) dflt=L3;;
8082 *) dflt=3;;
8083 esac
8084 ;;
8085 *) dflt="$man3ext";;
8086 esac
8087 . ./myread
8088 man3ext="$ans"
8089 ;;
8090esac
8091
8092: see if we have to deal with yellow pages, now NIS.
0384a54a 8093if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
8094 if $test -f /usr/etc/nibindd; then
8095 echo " "
8096 echo "I'm fairly confident you're on a NeXT."
8097 echo " "
8098 rp='Do you get the hosts file via NetInfo?'
8099 dflt=y
8100 case "$hostcat" in
8101 nidump*) ;;
8102 '') ;;
8103 *) dflt=n;;
8104 esac
8105 . ./myread
8106 case "$ans" in
8107 y*) hostcat='nidump hosts .';;
8108 *) case "$hostcat" in
8109 nidump*) hostcat='';;
8110 esac
8111 ;;
8112 esac
8113 fi
8114 case "$hostcat" in
8115 nidump*) ;;
8116 *)
8117 case "$hostcat" in
8118 *ypcat*) dflt=y;;
8119 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8120 dflt=y
8121 else
8122 dflt=n
8123 fi;;
8124 *) dflt=n;;
8125 esac
8126 echo " "
8127 rp='Are you getting the hosts file via yellow pages?'
8128 . ./myread
8129 case "$ans" in
8130 y*) hostcat='ypcat hosts';;
8131 *) hostcat='cat /etc/hosts';;
8132 esac
8133 ;;
8134 esac
8135fi
8136case "$hostcat" in
8137'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8138esac
8139case "$groupcat" in
8140'') test -f /etc/group && groupcat='cat /etc/group';;
8141esac
8142case "$passcat" in
8143'') test -f /etc/passwd && passcat='cat /etc/passwd';;
8144esac
8145
8146: now get the host name
8147echo " "
8148echo "Figuring out host name..." >&4
8149case "$myhostname" in
8150'') cont=true
8151 echo 'Maybe "hostname" will work...'
73614538 8152 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
8153 myhostname=$tans
8154 phostname=hostname
8155 cont=''
8156 fi
8157 ;;
8158*) cont='';;
8159esac
8160if $test "$cont"; then
8161 if ./xenix; then
8162 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8163 if tans=`cat /etc/systemid 2>&1` ; then
8164 myhostname=$tans
8165 phostname='cat /etc/systemid'
8166 echo "Whadyaknow. Xenix always was a bit strange..."
8167 cont=''
8168 fi
8169 elif $test -r /etc/systemid; then
8170 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8171 fi
8172fi
8173if $test "$cont"; then
8174 echo 'No, maybe "uuname -l" will work...'
73614538 8175 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8176 myhostname=$tans
8177 phostname='uuname -l'
8178 else
8179 echo 'Strange. Maybe "uname -n" will work...'
73614538 8180 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8181 myhostname=$tans
8182 phostname='uname -n'
8183 else
8184 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8185 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8186 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8187 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8188 else
8189 case "$myhostname" in
8190 '') echo "Does this machine have an identity crisis or something?"
8191 phostname='';;
8192 *)
8193 echo "Well, you said $myhostname before..."
8194 phostname='echo $myhostname';;
8195 esac
8196 fi
8197 fi
8198 fi
8199fi
52a549d0
JH
8200case "$myhostname" in
8201'') myhostname=noname ;;
8202esac
b4eb6b3d
JH
8203: you do not want to know about this
8204set $myhostname
8205myhostname=$1
8206
8207: verify guess
8208if $test "$myhostname" ; then
8209 dflt=y
8210 rp='Your host name appears to be "'$myhostname'".'" Right?"
8211 . ./myread
8212 case "$ans" in
8213 y*) ;;
8214 *) myhostname='';;
8215 esac
8216fi
8217
8218: bad guess or no guess
8219while $test "X$myhostname" = X ; do
8220 dflt=''
8221 rp="Please type the (one word) name of your host:"
8222 . ./myread
8223 myhostname="$ans"
8224done
8225
8226: translate upper to lower if necessary
8227case "$myhostname" in
8228*[A-Z]*)
8229 echo "(Normalizing case in your host name)"
8230 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8231 ;;
8232esac
8233
8234case "$myhostname" in
8235*.*)
8236 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8237 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8238 echo "(Trimming domain name from host name--host name is now $myhostname)"
8239 ;;
8240*) case "$mydomain" in
8241 '')
8242 {
8243 test "X$hostcat" = "Xypcat hosts" &&
8244 ypmatch "$myhostname" hosts 2>/dev/null |\
8245 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8246 $test -s hosts
8247 } || {
8248 test "X$hostcat" != "X" &&
8249 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8250 /[ ]$myhostname[ . ]/p" > hosts
8251 }
8252 tmp_re="[ . ]"
f08cbdd1
PP
8253 if $test -f hosts; then
8254 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8255 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8256 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8257 hosts | $sort | $uniq | \
8258 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8259 case `$echo X$dflt` in
8260 X*\ *) echo "(Several hosts in the database matched hostname)"
8261 dflt=.
8262 ;;
8263 X.) echo "(You do not have fully-qualified names in the hosts database)"
8264 ;;
8265 esac
8266 else
8267 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8268 dflt=.
f08cbdd1 8269 fi
b4eb6b3d
JH
8270 case "$dflt" in
8271 .)
8272 tans=`./loc resolv.conf X /etc /usr/etc`
8273 if $test -f "$tans"; then
8274 echo "(Attempting domain name extraction from $tans)"
8275 dflt=.`$sed -n -e 's/ / /g' \
8276 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8277 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8278 case "$dflt" in
8279 .) dflt=.`$sed -n -e 's/ / /g' \
8280 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8281 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8282 ;;
8283 esac
8284 fi
8285 ;;
8286 esac
8287 case "$dflt" in
8288 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8289 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8290 case "$dflt" in
8291 '') dflt='.';;
8292 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8293 esac
8294 ;;
8295 esac
59c9e5d6
PP
8296 case "$dflt$osname" in
8297 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8298 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8299 ;;
8300 esac
b4eb6b3d
JH
8301 case "$dflt" in
8302 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8303 dflt='.nonet'
b4eb6b3d
JH
8304 ;;
8305 esac
8306 $rm -f hosts
8307 ;;
8308 *) dflt="$mydomain";;
8309 esac;;
8310esac
8311echo " "
8312rp="What is your domain name?"
8313. ./myread
8314tans="$ans"
8315case "$ans" in
8316'') ;;
8317.*) ;;
8318*) tans=".$tans";;
8319esac
8320mydomain="$tans"
8321
8322: translate upper to lower if necessary
8323case "$mydomain" in
8324*[A-Z]*)
8325 echo "(Normalizing case in your domain name)"
8326 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8327 ;;
8328esac
8329
8330: a little sanity check here
8331case "$phostname" in
8332'') ;;
8333*)
8334 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8335 $myhostname$mydomain|$myhostname) ;;
8336 *)
8337 case "$phostname" in
8338 sed*)
8339 echo "(That doesn't agree with your whoami.h file, by the way.)"
8340 ;;
8341 *)
8342 echo "(That doesn't agree with your $phostname command, by the way.)"
8343 ;;
8344 esac
8345 ;;
8346 esac
8347 ;;
8348esac
8349
8350$cat <<EOM
8351
8352I need to get your e-mail address in Internet format if possible, i.e.
8353something like user@host.domain. Please answer accurately since I have
8354no easy means to double check it. The default value provided below
8355is most probably close to reality but may not be valid from outside
8356your organization...
8357
8358EOM
8359cont=x
8360while test "$cont"; do
8361 case "$cf_email" in
8362 '') dflt="$cf_by@$myhostname$mydomain";;
8363 *) dflt="$cf_email";;
8364 esac
8365 rp='What is your e-mail address?'
8366 . ./myread
8367 cf_email="$ans"
8368 case "$cf_email" in
8369 *@*.*) cont='' ;;
8370 *)
8371 rp='Address does not look like an Internet one. Use it anyway?'
8372 case "$fastread" in
8373 yes) dflt=y ;;
8374 *) dflt=n ;;
8375 esac
8376 . ./myread
8377 case "$ans" in
8378 y*) cont='' ;;
8379 *) echo " " ;;
8380 esac
8381 ;;
8382 esac
8383done
8384
8385$cat <<EOM
8386
8387If you or somebody else will be maintaining perl at your site, please
8388fill in the correct e-mail address here so that they may be contacted
8389if necessary. Currently, the "perlbug" program included with perl
8390will send mail to this address in addition to perlbug@perl.org. You may
8391enter "none" for no administrator.
8392
8393EOM
8394case "$perladmin" in
8395'') dflt="$cf_email";;
8396*) dflt="$perladmin";;
8397esac
8398rp='Perl administrator e-mail address'
8399. ./myread
8400perladmin="$ans"
8401
674912d7
RB
8402: determine whether to only install version-specific parts.
8403echo " "
8404$cat <<EOM
8405Do you want to install only the version-specific parts of the perl
8406distribution? Usually you do *not* want to do this.
8407EOM
8408case "$versiononly" in
8409"$define"|[Yy]*|true) dflt='y' ;;
8410*) dflt='n';
8411esac
8412rp="Do you want to install only the version-specific parts of perl?"
8413. ./myread
8414case "$ans" in
8415[yY]*) val="$define";;
8416*) val="$undef" ;;
8417esac
8418set versiononly
8419eval $setvar
8420
ad493445
MB
8421case "$versiononly" in
8422"$define") inc_version_list=''
8423 inc_version_list_init=0
8424 ;;
8425esac
8426
b4eb6b3d
JH
8427: figure out how to guarantee perl startup
8428case "$startperl" in
8429'')
8430 case "$sharpbang" in
8431 *!)
8432 $cat <<EOH
8433
8434I can use the #! construct to start perl on your system. This will
8435make startup of perl scripts faster, but may cause problems if you
8436want to share those scripts and perl is not in a standard place
8437($binexp/perl) on all your platforms. The alternative is to force
8438a shell by starting the script with a single ':' character.
8439
8440EOH
674912d7
RB
8441 case "$versiononly" in
8442 "$define") dflt="$binexp/perl$version";;
8443 *) dflt="$binexp/perl";;
8444 esac
b4eb6b3d
JH
8445 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8446 . ./myread
8447 case "$ans" in
8448 none) startperl=": # use perl";;
8449 *) startperl="#!$ans"
8450 if $test 30 -lt `echo "$ans" | wc -c`; then
8451 $cat >&4 <<EOM
8452
8453WARNING: Some systems limit the #! command to 32 characters.
8454If you experience difficulty running Perl scripts with #!, try
8455installing Perl in a directory with a shorter pathname.
8456
8457EOM
8458 fi ;;
8459 esac
8460 ;;
8461 *) startperl=": # use perl"
8462 ;;
8463 esac
8464 ;;
8465esac
8466echo "I'll use $startperl to start perl scripts."
8467
8468: figure best path for perl in scripts
8469case "$perlpath" in
8470'')
5e20a8ca
RGS
8471 case "$versiononly" in
8472 "$define") perlpath="$binexp/perl$version";;
8473 *) perlpath="$binexp/perl";;
8474 esac
b4eb6b3d
JH
8475 case "$startperl" in
8476 *!*) ;;
8477 *)
8478 $cat <<EOH
8479
8480I will use the "eval 'exec'" idiom to start Perl on your system.
8481I can use the full path of your Perl binary for this purpose, but
8482doing so may cause problems if you want to share those scripts and
8483Perl is not always in a standard place ($binexp/perl).
8484
8485EOH
8486 dflt="$binexp/perl"
8487 rp="What path shall I use in \"eval 'exec'\"?"
8488 . ./myread
8489 perlpath="$ans"
8490 ;;
8491 esac
8492 ;;
8493esac
8494case "$startperl" in
8495*!*) ;;
8496*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8497esac
8498
8499: determine where public executable scripts go
8500set scriptdir scriptdir
8501eval $prefixit
8502case "$scriptdir" in
8503'')
8504 dflt="$bin"
8505 : guess some guesses
8506 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8507 $test -d /usr/share/bin && dflt=/usr/share/bin
8508 $test -d /usr/local/script && dflt=/usr/local/script
8509 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8510 $test -d $prefixexp/script && dflt=$prefixexp/script
8511 set dflt
8512 eval $prefixup
8513 ;;
8514*) dflt="$scriptdir"
8515 ;;
8516esac
8517$cat <<EOM
8518
8519Some installations have a separate directory just for executable scripts so
8520that they can mount it across multiple architectures but keep the scripts in
8521one spot. You might, for example, have a subdirectory of /usr/share for this.
8522Or you might just lump your scripts in with all your other executables.
8523
8524EOM
8525fn=d~
8526rp='Where do you keep publicly executable scripts?'
8527. ./getfile
8528if $test "X$ansexp" != "X$scriptdirexp"; then
8529 installscript=''
8530fi
8531scriptdir="$ans"
8532scriptdirexp="$ansexp"
8533: Change installation prefix, if necessary.
8534if $test X"$prefix" != X"$installprefix"; then
8535 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8536else
8537 installscript="$scriptdirexp"
8538fi
8539
8540: determine where add-on public executables go
8541case "$sitebin" in
8542'') dflt=$siteprefix/bin ;;
8543*) dflt=$sitebin ;;
8544esac
8545fn=d~
8546rp='Pathname where the add-on public executables should be installed?'
8547. ./getfile
8548sitebin="$ans"
8549sitebinexp="$ansexp"
8550: Change installation prefix, if necessary.
8551if $test X"$prefix" != X"$installprefix"; then
8552 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8553else
8554 installsitebin="$sitebinexp"
8555fi
8556
6e1038e0 8557: determine where add-on html pages go
8d2cbf27 8558: There is no standard location, so try to copy the previously-selected
6e1038e0 8559: directory structure for the core html pages.
8d2cbf27
JH
8560case "$sitehtml1dir" in
8561'') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8562*) dflt=$sitehtml1dir ;;
6e1038e0
MB
8563esac
8564case "$dflt" in
8565''|' ') dflt=none ;;
8566esac
8567fn=dn+~
8568rp='Pathname where the site-specific html pages should be installed?'
8569. ./getfile
8d2cbf27
JH
8570sitehtml1dir="$ans"
8571sitehtml1direxp="$ansexp"
6e1038e0
MB
8572: Change installation prefix, if necessary.
8573if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8574 installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8575else
8d2cbf27 8576 installsitehtml1dir="$sitehtml1direxp"
6e1038e0
MB
8577fi
8578
8579: determine where add-on library html pages go
8580: There is no standard location, so try to copy the previously-selected
8581: directory structure for the core html pages.
8d2cbf27
JH
8582case "$sitehtml3dir" in
8583'') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8584*) dflt=$sitehtml3dir ;;
6e1038e0
MB
8585esac
8586case "$dflt" in
8587''|' ') dflt=none ;;
8588esac
8589fn=dn+~
8590rp='Pathname where the site-specific library html pages should be installed?'
8591. ./getfile
8d2cbf27
JH
8592sitehtml3dir="$ans"
8593sitehtml3direxp="$ansexp"
6e1038e0
MB
8594: Change installation prefix, if necessary.
8595if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8596 installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8597else
8d2cbf27 8598 installsitehtml3dir="$sitehtml3direxp"
6e1038e0
MB
8599fi
8600
8601: determine where add-on manual pages go
91e123a8
JH
8602case "$siteman1dir" in
8603'') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8604*) dflt=$siteman1dir ;;
6e1038e0 8605esac
257059b5
JH
8606case "$dflt" in
8607''|' ') dflt=none ;;
8608esac
6e1038e0
MB
8609fn=dn+~
8610rp='Pathname where the site-specific manual pages should be installed?'
8611. ./getfile
91e123a8
JH
8612siteman1dir="$ans"
8613siteman1direxp="$ansexp"
6e1038e0
MB
8614: Change installation prefix, if necessary.
8615if $test X"$prefix" != X"$installprefix"; then
91e123a8 8616 installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8617else
91e123a8 8618 installsiteman1dir="$siteman1direxp"
6e1038e0
MB
8619fi
8620
8621: determine where add-on library man pages go
91e123a8
JH
8622case "$siteman3dir" in
8623'') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8624*) dflt=$siteman3dir ;;
6e1038e0 8625esac
257059b5
JH
8626case "$dflt" in
8627''|' ') dflt=none ;;
8628esac
6e1038e0
MB
8629fn=dn+~
8630rp='Pathname where the site-specific library manual pages should be installed?'
8631. ./getfile
91e123a8
JH
8632siteman3dir="$ans"
8633siteman3direxp="$ansexp"
6e1038e0
MB
8634: Change installation prefix, if necessary.
8635if $test X"$prefix" != X"$installprefix"; then
91e123a8 8636 installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8637else
91e123a8 8638 installsiteman3dir="$siteman3direxp"
6e1038e0
MB
8639fi
8640
8641: determine where add-on public executable scripts go
8642case "$sitescript" in
8643'') dflt=$siteprefix/script
8644 $test -d $dflt || dflt=$sitebin ;;
8645*) dflt="$sitescript" ;;
8646esac
8647fn=d~+
8648rp='Pathname where add-on public executable scripts should be installed?'
8649. ./getfile
8650sitescript="$ans"
8651sitescriptexp="$ansexp"
8652: Change installation prefix, if necessary.
8653if $test X"$prefix" != X"$installprefix"; then
8654 installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8655else
8656 installsitescript="$sitescriptexp"
8657fi
8658
15b61c98
JH
8659case "$usefaststdio" in
8660$define|true|[yY]*|'')
8661 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8662 case "$xversion" in
8663 [68]) dflt='y' ;;
8664 *) dflt='n' ;;
8665 esac
8666 ;;
8667*) dflt='n';;
8668esac
8669cat <<EOM
8670
8671Perl can be built to use 'fast stdio', which means using the stdio
8672library but also directly manipulating the stdio buffers to enable
8673faster I/O. Using stdio is better for backward compatibility (especially
8674for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8675interface has been preferred instead of stdio.
8676
8677If this doesn't make any sense to you, just accept the default '$dflt'.
8678EOM
8679rp='Use the "fast stdio" if available?'
8680. ./myread
8681case "$ans" in
8682y|Y) val="$define" ;;
8683*) val="$undef" ;;
8684esac
8685set usefaststdio
8686eval $setvar
8687
8688
96056487
JH
8689: define an is-a-typedef? function
8690typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8691case "$inclist" in
8692"") inclist="sys/types.h";;
8693esac;
8694eval "varval=\$$var";
8695case "$varval" in
8696"")
8697 $rm -f temp.c;
8698 for inc in $inclist; do
8699 echo "#include <$inc>" >>temp.c;
8700 done;
8701 echo "#ifdef $type" >> temp.c;
8702 echo "printf(\"We have $type\");" >> temp.c;
8703 echo "#endif" >> temp.c;
8704 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8705 if $contains $type temp.E >/dev/null 2>&1; then
8706 eval "$var=\$type";
8707 else
8708 eval "$var=\$def";
8709 fi;
8710 $rm -f temp.?;;
8711*) eval "$var=\$varval";;
8712esac'
8713
8714: define an is-a-typedef? function that prompts if the type is not available.
8715typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8716case "$inclist" in
8717"") inclist="sys/types.h";;
8718esac;
8719eval "varval=\$$var";
8720case "$varval" in
8721"")
8722 $rm -f temp.c;
8723 for inc in $inclist; do
8724 echo "#include <$inc>" >>temp.c;
8725 done;
8726 echo "#ifdef $type" >> temp.c;
8727 echo "printf(\"We have $type\");" >> temp.c;
8728 echo "#endif" >> temp.c;
8729 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8730 echo " " ;
8731 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8732 if $contains $type temp.E >/dev/null 2>&1; then
8733 echo "$type found." >&4;
8734 eval "$var=\$type";
8735 else
8736 echo "$type NOT found." >&4;
8737 dflt="$def";
8738 . ./myread ;
8739 eval "$var=\$ans";
8740 fi;
8741 $rm -f temp.?;;
8742*) eval "$var=\$varval";;
8743esac'
8744
8745: see what type lseek is declared as in the kernel
8746rp="What is the type used for lseek's offset on this system?"
8747set off_t lseektype long stdio.h sys/types.h
8748eval $typedef_ask
8749
8750echo " "
8751echo "Checking to see how big your file offsets are..." >&4
8752$cat >try.c <<EOCP
8753#include <sys/types.h>
8754#include <stdio.h>
8755int main()
8756{
8757 printf("%d\n", (int)sizeof($lseektype));
8758 return(0);
8759}
8760EOCP
8761set try
8762if eval $compile_ok; then
8763 lseeksize=`$run ./try`
8764 echo "Your file offsets are $lseeksize bytes long."
8765else
8766 dflt=$longsize
8767 echo " "
8768 echo "(I can't seem to compile the test program. Guessing...)"
8769 rp="What is the size of your file offsets (in bytes)?"
8770 . ./myread
8771 lseeksize="$ans"
8772fi
8773$rm -f try.c try
8774
8775: see what type file positions are declared as in the library
8776rp="What is the type for file position used by fsetpos()?"
8777set fpos_t fpostype long stdio.h sys/types.h
8778eval $typedef_ask
8779
8780echo " "
8781case "$fpostype" in
8782*_t) zzz="$fpostype" ;;
8783*) zzz="fpos_t" ;;
8784esac
8785echo "Checking the size of $zzz..." >&4
8786cat > try.c <<EOCP
8787#include <sys/types.h>
8788#include <stdio.h>
d1daaddf
JH
8789#$i_stdlib I_STDLIB
8790#ifdef I_STDLIB
8791#include <stdlib.h>
8792#endif
96056487
JH
8793int main() {
8794 printf("%d\n", (int)sizeof($fpostype));
8795 exit(0);
8796}
8797EOCP
8798set try
8799if eval $compile_ok; then
8800 yyy=`$run ./try`
8801 case "$yyy" in
8802 '') fpossize=4
8803 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8804 ;;
8805 *) fpossize=$yyy
8806 echo "Your $zzz is $fpossize bytes long."
8807 ;;
8808 esac
8809else
8810 dflt="$longsize"
8811 echo " " >&4
8812 echo "(I can't compile the test program. Guessing...)" >&4
8813 rp="What is the size of your file positions (in bytes)?"
8814 . ./myread
8815 fpossize="$ans"
8816fi
8817
96056487
JH
8818# Backward compatibility (uselfs is deprecated).
8819case "$uselfs" in
8820"$define"|true|[yY]*)
8821 cat <<EOM >&4
8822
8823*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8824EOM
8825 uselargefiles="$define"
8826 ;;
8827esac
8828
8829case "$lseeksize:$fpossize" in
88308:8) cat <<EOM
8831
8832You can have files larger than 2 gigabytes.
8833EOM
8834 val="$define" ;;
8835*) case "$uselargefiles" in
8836 "$undef"|false|[nN]*) dflt='n' ;;
8837 *) dflt='y' ;;
8838 esac
8839 cat <<EOM
8840
8841Perl can be built to understand large files (files larger than 2 gigabytes)
8842on some systems. To do so, Configure can be run with -Duselargefiles.
8843
8844If this doesn't make any sense to you, just accept the default '$dflt'.
8845EOM
8846 rp='Try to understand large files, if available?'
8847 . ./myread
8848 case "$ans" in
8849 y|Y) val="$define" ;;
8850 *) val="$undef" ;;
8851 esac
8852 ;;
8853esac
8854set uselargefiles
8855eval $setvar
96056487
JH
8856: Look for a hint-file generated 'call-back-unit'. If the
8857: user has specified that a large files perl is to be built,
8858: we may need to set or change some other defaults.
9da7673b
MB
8859if $test -f uselargefiles.cbu; then
8860 echo "Your platform has some specific hints regarding large file builds, using them..."
8861 . ./uselargefiles.cbu
8862fi
8863case "$uselargefiles" in
8864"$define")
96056487 8865 if $test -f uselargefiles.cbu; then
96056487
JH
8866 echo " "
8867 echo "Rechecking to see how big your file offsets are..." >&4
8868 $cat >try.c <<EOCP
8869#include <sys/types.h>
8870#include <stdio.h>
8871int main()
8872{
8873 printf("%d\n", (int)sizeof($lseektype));
8874 return(0);
8875}
8876EOCP
8877 set try
8878 if eval $compile_ok; then
8879 lseeksize=`$run ./try`
8880 $echo "Your file offsets are now $lseeksize bytes long."
8881 else
8882 dflt="$lseeksize"
8883 echo " "
8884 echo "(I can't seem to compile the test program. Guessing...)"
8885 rp="What is the size of your file offsets (in bytes)?"
8886 . ./myread
8887 lseeksize="$ans"
8888 fi
8889 case "$fpostype" in
8890 *_t) zzz="$fpostype" ;;
8891 *) zzz="fpos_t" ;;
8892 esac
8893 $echo $n "Rechecking the size of $zzz...$c" >&4
8894 $cat > try.c <<EOCP
8895#include <sys/types.h>
8896#include <stdio.h>
55954f19
JH
8897#$i_stdlib I_STDLIB
8898#ifdef I_STDLIB
8899#include <stdlib.h>
8900#endif
96056487
JH
8901int main() {
8902 printf("%d\n", (int)sizeof($fpostype));
073b6de5 8903 return(0);
96056487
JH
8904}
8905EOCP
8906 set try
8907 if eval $compile_ok; then
8908 yyy=`$run ./try`
8909 dflt="$lseeksize"
8910 case "$yyy" in
8911 '') echo " "
8912 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8913 ;;
8914 *) fpossize=$yyy
8915 echo " $fpossize bytes." >&4
8916 ;;
8917 esac
8918 else
8919 dflt="$fpossize"
8920 echo " "
8921 echo "(I can't compile the test program. Guessing...)" >&4
8922 rp="What is the size of your file positions (in bytes)?"
8923 . ./myread
8924 fpossize="$ans"
8925 fi
8926 $rm -f try.c try
8927 fi
8928 ;;
8929esac
8930
b4eb6b3d
JH
8931case "$vendorprefix" in
8932'') d_vendorbin="$undef"
8933 vendorbin=''
8934 vendorbinexp=''
8935 ;;
8936*) d_vendorbin="$define"
8937 : determine where vendor-supplied executables go.
8938 case "$vendorbin" in
8939 '') dflt=$vendorprefix/bin ;;
8940 *) dflt="$vendorbin" ;;
8941 esac
8942 fn=d~+
8943 rp='Pathname for the vendor-supplied executables directory?'
8944 . ./getfile
8945 vendorbin="$ans"
8946 vendorbinexp="$ansexp"
8947 ;;
8948esac
8949: Change installation prefix, if necessary.
8950if $test X"$prefix" != X"$installprefix"; then
8951 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8952else
8953 installvendorbin="$vendorbinexp"
8954fi
8955
6e1038e0 8956case "$vendorprefix" in
8d2cbf27
JH
8957'') vendorhtml1dir=''
8958 vendorhtml1direxp=''
6e1038e0
MB
8959 ;;
8960*) : determine where vendor-supplied html pages go.
8961 : There is no standard location, so try to copy the previously-selected
8962 : directory structure for the core html pages.
8963 : XXX Better default suggestions would be welcome.
8d2cbf27 8964 case "$vendorhtml1dir" in
6e1038e0 8965 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 8966 *) dflt=$vendorhtml1dir ;;
6e1038e0
MB
8967 esac
8968 case "$dflt" in
8969 ''|' ') dflt=none ;;
8970 esac
8971 fn=dn+~
8972 rp='Pathname for the vendor-supplied html pages?'
8973 . ./getfile
8d2cbf27
JH
8974 vendorhtml1dir="$ans"
8975 vendorhtml1direxp="$ansexp"
6e1038e0
MB
8976 ;;
8977esac
8978: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 8979$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
6e1038e0
MB
8980: Change installation prefix, if necessary.
8981if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 8982 installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 8983else
8d2cbf27 8984 installvendorhtml1dir="$vendorhtml1direxp"
6e1038e0
MB
8985fi
8986
8987case "$vendorprefix" in
8d2cbf27
JH
8988'') vendorhtml3dir=''
8989 vendorhtml3direxp=''
6e1038e0
MB
8990 ;;
8991*) : determine where vendor-supplied module html pages go.
8992 : There is no standard location, so try to copy the previously-selected
8993 : directory structure for the core html pages.
8994 : XXX Better default suggestions would be welcome.
8d2cbf27 8995 case "$vendorhtml3dir" in
6e1038e0 8996 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8d2cbf27 8997 *) dflt=$vendorhtml3dir ;;
6e1038e0
MB
8998 esac
8999 case "$dflt" in
9000 ''|' ') dflt=none ;;
9001 esac
9002 fn=dn+~
9003 rp='Pathname for the vendor-supplied html pages?'
9004 . ./getfile
8d2cbf27
JH
9005 vendorhtml3dir="$ans"
9006 vendorhtml3direxp="$ansexp"
6e1038e0
MB
9007 ;;
9008esac
9009: Use ' ' for none so value is preserved next time through Configure
8d2cbf27 9010$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
6e1038e0
MB
9011: Change installation prefix, if necessary.
9012if $test X"$prefix" != X"$installprefix"; then
8d2cbf27 9013 installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9014else
8d2cbf27 9015 installvendorhtml3dir="$vendorhtml3direxp"
6e1038e0
MB
9016fi
9017
9018case "$vendorprefix" in
91e123a8
JH
9019'') vendorman1dir=''
9020 vendorman1direxp=''
6e1038e0
MB
9021 ;;
9022*) : determine where vendor-supplied manual pages go.
91e123a8 9023 case "$vendorman1dir" in
6e1038e0 9024 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9025 *) dflt=$vendorman1dir ;;
6e1038e0
MB
9026 esac
9027 case "$dflt" in
9028 ''|' ') dflt=none ;;
9029 esac
9030 fn=nd~+
9031 rp='Pathname for the vendor-supplied manual section 1 pages?'
9032 . ./getfile
91e123a8
JH
9033 vendorman1dir="$ans"
9034 vendorman1direxp="$ansexp"
6e1038e0
MB
9035 ;;
9036esac
9037: Use ' ' for none so value is preserved next time through Configure
91e123a8 9038$test X"$vendorman1dir" = "X" && vendorman1dir=' '
6e1038e0
MB
9039: Change installation prefix, if necessary.
9040if $test X"$prefix" != X"$installprefix"; then
91e123a8 9041 installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9042else
91e123a8 9043 installvendorman1dir="$vendorman1direxp"
6e1038e0
MB
9044fi
9045
9046case "$vendorprefix" in
91e123a8
JH
9047'') vendorman3dir=''
9048 vendorman3direxp=''
6e1038e0
MB
9049 ;;
9050*) : determine where vendor-supplied module manual pages go.
91e123a8 9051 case "$vendorman3dir" in
6e1038e0 9052 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
91e123a8 9053 *) dflt=$vendorman3dir ;;
6e1038e0
MB
9054 esac
9055 case "$dflt" in
9056 ''|' ') dflt=none ;;
9057 esac
9058 fn=nd~+
9059 rp='Pathname for the vendor-supplied manual section 3 pages?'
9060 . ./getfile
91e123a8
JH
9061 vendorman3dir="$ans"
9062 vendorman3direxp="$ansexp"
6e1038e0
MB
9063 ;;
9064esac
9065: Use ' ' for none so value is preserved next time through Configure
91e123a8 9066$test X"$vendorman3dir" = "X" && vendorman3dir=' '
6e1038e0
MB
9067: Change installation prefix, if necessary.
9068if $test X"$prefix" != X"$installprefix"; then
91e123a8 9069 installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
6e1038e0 9070else
91e123a8 9071 installvendorman3dir="$vendorman3direxp"
6e1038e0
MB
9072fi
9073
9074case "$vendorprefix" in
9075'') d_vendorscript="$undef"
9076 vendorscript=''
9077 vendorscriptexp=''
9078 ;;
9079*) d_vendorscript="$define"
9080 : determine where vendor-supplied scripts go.
9081 case "$vendorscript" in
9082 '') dflt=$vendorprefix/script
9083 $test -d $dflt || dflt=$vendorbin ;;
9084 *) dflt="$vendorscript" ;;
9085 esac
9086 $cat <<EOM
9087
9088The installation process will create a directory for
9089vendor-supplied scripts.
9090
9091EOM
9092 fn=d~+
9093 rp='Pathname for the vendor-supplied scripts directory?'
9094 . ./getfile
9095 vendorscript="$ans"
9096 vendorscriptexp="$ansexp"
9097 ;;
9098esac
9099: Change installation prefix, if necessary.
9100if $test X"$prefix" != X"$installprefix"; then
9101 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9102else
9103 installvendorscript="$vendorscriptexp"
9104fi
9105
b4eb6b3d
JH
9106: see if qgcvt exists
9107set qgcvt d_qgcvt
9108eval $inlibc
9109
89ce900e
JH
9110echo " "
9111
9112if $test X"$d_longdbl" = X"$define"; then
9113
9114echo "Checking how to print long doubles..." >&4
9115
9116if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9117 $cat >try.c <<'EOCP'
9118#include <sys/types.h>
9119#include <stdio.h>
9120int main() {
9121 double d = 123.456;
9122 printf("%.3f\n", d);
9123}
9124EOCP
9125 set try
9126 if eval $compile; then
9127 yyy=`$run ./try`
9128 case "$yyy" in
9129 123.456)
9130 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9131 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9132 echo "We will use %f."
9133 ;;
9134 esac
9135 fi
9136fi
9137
9138if $test X"$sPRIfldbl" = X; then
9139 $cat >try.c <<'EOCP'
9140#include <sys/types.h>
9141#include <stdio.h>
9142int main() {
9143 long double d = 123.456;
9144 printf("%.3Lf\n", d);
9145}
9146EOCP
9147 set try
9148 if eval $compile; then
9149 yyy=`$run ./try`
9150 case "$yyy" in
9151 123.456)
9152 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9153 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9154 echo "We will use %Lf."
9155 ;;
9156 esac
9157 fi
9158fi
9159
9160if $test X"$sPRIfldbl" = X; then
9161 $cat >try.c <<'EOCP'
9162#include <sys/types.h>
9163#include <stdio.h>
9164int main() {
9165 long double d = 123.456;
9166 printf("%.3llf\n", d);
9167}
9168EOCP
9169 set try
9170 if eval $compile; then
9171 yyy=`$run ./try`
9172 case "$yyy" in
9173 123.456)
9174 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9175 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9176 echo "We will use %llf."
9177 ;;
9178 esac
9179 fi
9180fi
9181
9182if $test X"$sPRIfldbl" = X; then
9183 $cat >try.c <<'EOCP'
9184#include <sys/types.h>
9185#include <stdio.h>
9186int main() {
9187 long double d = 123.456;
9188 printf("%.3lf\n", d);
9189}
9190EOCP
9191 set try
9192 if eval $compile; then
9193 yyy=`$run ./try`
9194 case "$yyy" in
9195 123.456)
9196 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9197 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9198 echo "We will use %lf."
9199 ;;
9200 esac
9201 fi
9202fi
9203
9204if $test X"$sPRIfldbl" = X; then
9205 echo "Cannot figure out how to print long doubles." >&4
9206else
9207 sSCNfldbl=$sPRIfldbl # expect consistency
9208fi
9209
9210$rm -f try try.*
9211
9212fi # d_longdbl
9213
9214case "$sPRIfldbl" in
9215'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9216 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9217 d_SCNfldbl="$undef";
9218 ;;
9219*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9220 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9221 d_SCNfldbl="$define";
9222 ;;
9223esac
9224
b4eb6b3d 9225: Check how to convert floats to strings.
a5b10d80
YST
9226
9227if test "X$d_Gconvert" = X; then
9228
b4eb6b3d
JH
9229echo " "
9230echo "Checking for an efficient way to convert floats to strings."
9231echo " " > try.c
9232case "$uselongdouble" in
9233"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9234esac
9235case "$d_longdbl" in
9236"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9237esac
9238case "$d_PRIgldbl" in
9239"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9240esac
9241$cat >>try.c <<EOP
9242#ifdef TRY_gconvert
9243#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9244char *myname = "gconvert";
9245#endif
9246#ifdef TRY_gcvt
9247#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9248char *myname = "gcvt";
9249#endif
9250#ifdef TRY_qgcvt
9251#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9252char *myname = "qgcvt";
9253#define DOUBLETYPE long double
9254#endif
9255#ifdef TRY_sprintf
a5b10d80
YST
9256#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9257#ifdef HAS_PRIgldbl
b4eb6b3d
JH
9258#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9259#else
a5b10d80
YST
9260#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9261#endif
9262#else
b4eb6b3d
JH
9263#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9264#endif
9265char *myname = "sprintf";
9266#endif
9267
9268#ifndef DOUBLETYPE
9269#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9270#define DOUBLETYPE long double
9271#else
9272#define DOUBLETYPE double
9273#endif
9274#endif
9275
9276#include <stdio.h>
9277
9278#define I_STDLIB $i_stdlib
9279#ifdef I_STDLIB
9280#include <stdlib.h>
9281#endif
9282
9283int
9284checkit(expect, got)
9285char *expect;
9286char *got;
9287{
9288 if (strcmp(expect, got)) {
9289 printf("%s oddity: Expected %s, got %s\n",
9290 myname, expect, got);
9291 exit(1);
9292 }
9293}
9294
9295int main()
9296{
9297 char buf[64];
9298 buf[63] = '\0';
9299
9300 /* This must be 1st test on (which?) platform */
9301 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9302 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9303 checkit("0.1", buf);
9304
a5b10d80
YST
9305 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9306 checkit("0.01", buf);
9307
9308 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9309 checkit("0.001", buf);
9310
9311 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9312 checkit("0.0001", buf);
9313
9314 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9315 if (strlen(buf) > 5)
9316 checkit("9e-005", buf); /* for Microsoft ?? */
9317 else
9318 checkit("9e-05", buf);
9319
b4eb6b3d
JH
9320 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9321 checkit("1", buf);
9322
9323 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9324 checkit("1.1", buf);
9325
9326 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9327 checkit("1.01", buf);
9328
9329 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9330 checkit("1.001", buf);
9331
9332 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9333 checkit("1.0001", buf);
9334
9335 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9336 checkit("1.00001", buf);
9337
9338 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9339 checkit("1.000001", buf);
9340
9341 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9342 checkit("0", buf);
9343
9344 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9345 checkit("-1", buf);
9346
9347 /* Some Linux gcvt's give 1.e+5 here. */
9348 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9349 checkit("100000", buf);
9350
9351 /* Some Linux gcvt's give -1.e+5 here. */
9352 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9353 checkit("-100000", buf);
9354
9355 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9356 checkit("123.456", buf);
9357
ab6ca9f4 9358 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
94b339ad
YST
9359 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9360 /* 34 should be enough to scare even long double
9361 * places into using the e notation. */
ab6ca9f4 9362 if (strlen(buf) > 5)
94b339ad 9363 checkit("1e+034", buf); /* for Microsoft */
ab6ca9f4 9364 else
94b339ad 9365 checkit("1e+34", buf);
8e2a5ede 9366
d1eb8299
YST
9367 /* For Perl, if you add additional tests here, also add them to
9368 * t/base/num.t for benefit of platforms not using Configure or
9369 * overriding d_Gconvert */
9370
b4eb6b3d
JH
9371 exit(0);
9372}
9373EOP
ab6ca9f4 9374: first add preferred functions to our list
a5b10d80 9375xxx_list=""
ab6ca9f4 9376for xxx_convert in $gconvert_preference; do
a5b10d80
YST
9377 case $xxx_convert in
9378 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
ab6ca9f4 9379 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
a5b10d80
YST
9380 esac
9381done
9382: then add any others
9383for xxx_convert in gconvert gcvt sprintf; do
9384 case "$xxx_list" in
9385 *$xxx_convert*) ;;
9386 *) xxx_list="$xxx_list $xxx_convert" ;;
9387 esac
9388done
9389
9390case "$d_longdbl$uselongdouble" in
9391"$define$define")
9392 : again, add prefered functions to our list first
9393 xxx_ld_list=""
ab6ca9f4 9394 for xxx_convert in $gconvert_ld_preference; do
a5b10d80
YST
9395 case $xxx_convert in
9396 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
ab6ca9f4 9397 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
a5b10d80
YST
9398 esac
9399 done
9400 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9401 for xxx_convert in qgcvt sprintf $xxx_list; do
9402 case "$xxx_ld_list" in
9403 $xxx_convert*|*" $xxx_convert"*) ;;
9404 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9405 esac
9406 done
9407 : if sprintf cannot do long doubles, move it to the end
9408 if test "$d_PRIgldbl" != "$define"; then
9409 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9410 fi
9411 : if no qgcvt, remove it
9412 if test "$d_qgcvt" != "$define"; then
9413 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9414 fi
9415 : use the ld_list
9416 xxx_list="$xxx_ld_list"
b4eb6b3d
JH
9417 ;;
9418esac
9419
9420for xxx_convert in $xxx_list; do
9421 echo "Trying $xxx_convert..."
9422 $rm -f try try$_o
9423 set try -DTRY_$xxx_convert
9424 if eval $compile; then
9425 echo "$xxx_convert() found." >&4
5440bc8e 9426 if $run ./try; then
b4eb6b3d
JH
9427 echo "I'll use $xxx_convert to convert floats into a string." >&4
9428 break;
9429 else
9430 echo "...But $xxx_convert didn't work as I expected."
a5b10d80 9431 xxx_convert=''
b4eb6b3d
JH
9432 fi
9433 else
9434 echo "$xxx_convert NOT found." >&4
9435 fi
9436done
ab6ca9f4 9437
a5b10d80
YST
9438if test X$xxx_convert = X; then
9439 echo "*** WHOA THERE!!! ***" >&4
9440 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9441 xxx_convert=sprintf
9442fi
9443
b4eb6b3d
JH
9444case "$xxx_convert" in
9445gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9446gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9447qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9448*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9449 "$define$define$define")
9450 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
a5b10d80
YST
9451 "$define$define$undef")
9452 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
b4eb6b3d
JH
9453 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9454 esac
9455 ;;
9456esac
9457
a5b10d80
YST
9458fi
9459
74cac757
JH
9460: see if _fwalk exists
9461set fwalk d__fwalk
9462eval $inlibc
9463
b4eb6b3d
JH
9464: Initialize h_fcntl
9465h_fcntl=false
9466
9467: Initialize h_sysfile
9468h_sysfile=false
9469
9470: access call always available on UNIX
9471set access d_access
9472eval $inlibc
9473
9474: locate the flags for 'access()'
9475case "$d_access" in
9476"$define")
9477 echo " "
55954f19 9478 $cat >access.c <<EOCP
b4eb6b3d
JH
9479#include <sys/types.h>
9480#ifdef I_FCNTL
9481#include <fcntl.h>
9482#endif
9483#ifdef I_SYS_FILE
9484#include <sys/file.h>
9485#endif
9486#ifdef I_UNISTD
9487#include <unistd.h>
9488#endif
55954f19
JH
9489#$i_stdlib I_STDLIB
9490#ifdef I_STDLIB
9491#include <stdlib.h>
9492#endif
b4eb6b3d
JH
9493int main() {
9494 exit(R_OK);
9495}
9496EOCP
9497 : check sys/file.h first, no particular reason here
9498 if $test `./findhdr sys/file.h` && \
7a282f6d 9499 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9500 h_sysfile=true;
9501 echo "<sys/file.h> defines the *_OK access constants." >&4
9502 elif $test `./findhdr fcntl.h` && \
7a282f6d 9503 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9504 h_fcntl=true;
9505 echo "<fcntl.h> defines the *_OK access constants." >&4
9506 elif $test `./findhdr unistd.h` && \
7a282f6d 9507 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9508 echo "<unistd.h> defines the *_OK access constants." >&4
9509 else
9510 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9511 fi
9512 ;;
9513esac
9514$rm -f access*
9515
9516: see if accessx exists
9517set accessx d_accessx
9518eval $inlibc
9519
89ce900e
JH
9520: see if aintl exists
9521set aintl d_aintl
9522eval $inlibc
9523
b4eb6b3d
JH
9524: see if alarm exists
9525set alarm d_alarm
9526eval $inlibc
9527
a9dade78
JH
9528: see if POSIX threads are available
9529set pthread.h i_pthread
9530eval $inhdr
9531
10bc17b6
JH
9532: define a fucntion to check prototypes
9533$cat > protochk <<EOSH
9534$startsh
9535cc="$cc"
9536optimize="$optimize"
9537ccflags="$ccflags"
9538prototype="$prototype"
9539define="$define"
9540rm=$rm
a9dade78
JH
9541usethreads=$usethreads
9542i_pthread=$i_pthread
9543pthread_h_first=$pthread_h_first
10bc17b6
JH
9544EOSH
9545
9546$cat >> protochk <<'EOSH'
9547
9548$rm -f try.c
9549foo="$1"
9550shift
9551while test $# -ge 2; do
9552 case "$1" in
9553 $define) echo "#include <$2>" >> try.c ;;
9554 literal) echo "$2" >> try.c ;;
9555 esac
cce6a207
MB
9556 # Extra magic for the benefit of systems that need pthread.h
9557 # to be included early to correctly detect threadsafe functions.
9558 # Such functions must guarantee themselves, though, that the usethreads
9559 # and i_pthread have been defined, before calling protochk.
9560 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9561 echo "#include <pthread.h>" >> try.c
9562 pthread_h_done=yes
9563 fi
10bc17b6
JH
9564 shift 2
9565done
9566test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9567cat >> try.c <<'EOCP'
9568#ifdef CAN_PROTOTYPE
9569#define _(args) args
9570#else
9571#define _(args) ()
9572#endif
9573EOCP
9574echo "$foo" >> try.c
9575echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9576$cc $optimize $ccflags -c try.c > /dev/null 2>&1
9577status=$?
9578$rm -f try.[co]
9579exit $status
9580EOSH
9581chmod +x protochk
9582$eunicefix protochk
9583
89ce900e
JH
9584hasproto='varname=$1; func=$2; shift; shift;
9585while $test $# -ge 2; do
9586 case "$1" in
9587 $define) echo "#include <$2>";;
9588 esac ;
9589 shift 2;
9590done > try.c;
9591$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9592if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9593 echo "$func() prototype found.";
9594 val="$define";
9595else
9596 echo "$func() prototype NOT found.";
9597 val="$undef";
9598fi;
9599set $varname;
9600eval $setvar;
9601$rm -f try.c tryout.c'
9602
10bc17b6
JH
9603: see if sys/types.h has to be included
9604set sys/types.h i_systypes
9605eval $inhdr
9606
9607: see if sys/select.h has to be included
9608set sys/select.h i_sysselct
9609eval $inhdr
9610
9611hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9612while $test $# -ge 2; do
9613 case "$1" in
9614 $define) echo "#include <$2>";;
9615 esac ;
9616 shift 2;
9617done > try.c;
9618echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9619set try;
9620if eval $compile; then
9621 val="$define";
9622else
9623 val="$undef";
9624fi;
9625set $varname;
9626eval $setvar;
9627$rm -f try.c try.o'
9628
9629: see if we should include time.h, sys/time.h, or both
9630echo " "
9631if test "X$timeincl" = X; then
9632 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9633 $echo $n "I'm now running the test program...$c"
55954f19 9634 $cat >try.c <<EOCP
10bc17b6
JH
9635#include <sys/types.h>
9636#ifdef I_TIME
9637#include <time.h>
9638#endif
9639#ifdef I_SYSTIME
9640#ifdef SYSTIMEKERNEL
9641#define KERNEL
9642#endif
9643#include <sys/time.h>
9644#endif
9645#ifdef I_SYSSELECT
9646#include <sys/select.h>
9647#endif
55954f19
JH
9648#$i_stdlib I_STDLIB
9649#ifdef I_STDLIB
9650#include <stdlib.h>
9651#endif
10bc17b6
JH
9652int main()
9653{
9654 struct tm foo;
9655#ifdef S_TIMEVAL
9656 struct timeval bar;
9657#endif
9658#ifdef S_TIMEZONE
9659 struct timezone tzp;
9660#endif
9661 if (foo.tm_sec == foo.tm_sec)
9662 exit(0);
9663#ifdef S_TIMEVAL
9664 if (bar.tv_sec == bar.tv_sec)
9665 exit(0);
9666#endif
9667 exit(1);
9668}
9669EOCP
9670 flags=''
9671 for s_timezone in '-DS_TIMEZONE' ''; do
9672 sysselect=''
9673 for s_timeval in '-DS_TIMEVAL' ''; do
9674 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9675 for i_time in '' '-DI_TIME'; do
9676 for i_systime in '-DI_SYSTIME' ''; do
9677 case "$flags" in
9678 '') $echo $n ".$c"
9679 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9680 if eval $compile; then
9681 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9682 shift
9683 flags="$*"
9684 echo " "
9685 $echo $n "Succeeded with $flags$c"
9686 fi
9687 ;;
9688 esac
9689 done
9690 done
9691 done
9692 done
9693 done
9694 timeincl=''
9695 echo " "
9696 case "$flags" in
9697 *SYSTIMEKERNEL*) i_systimek="$define"
9698 timeincl=`./findhdr sys/time.h`
9699 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9700 *) i_systimek="$undef";;
9701 esac
9702 case "$flags" in
9703 *I_TIME*) i_time="$define"
9704 timeincl=`./findhdr time.h`" $timeincl"
9705 echo "We'll include <time.h>." >&4;;
9706 *) i_time="$undef";;
9707 esac
9708 case "$flags" in
9709 *I_SYSTIME*) i_systime="$define"
9710 timeincl=`./findhdr sys/time.h`" $timeincl"
9711 echo "We'll include <sys/time.h>." >&4;;
9712 *) i_systime="$undef";;
9713 esac
9714 $rm -f try.c try
9715fi
9716: see if struct tm knows about tm_zone
9717case "$i_systime$i_time" in
9718*$define*)
9719 echo " "
9720 echo "Checking to see if your struct tm has tm_zone field..." >&4
9721 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9722 eval $hasfield
9723 ;;
9724*) val="$undef"
9725 set d_tm_tm_zone
9726 eval $setvar
9727 ;;
9728esac
9729case "$d_tm_tm_zone" in
9730"$define") echo "Yes, it does." ;;
9731*) echo "No, it doesn't." ;;
9732esac
9733: see if struct tm knows about tm_gmtoff
9734case "$i_systime$i_time" in
9735*$define*)
9736 echo " "
9737 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9738 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9739 eval $hasfield
9740 ;;
9741*) val="$undef"
9742 set d_tm_tm_gmtoff
9743 eval $setvar
9744 ;;
9745esac
9746case "$d_tm_tm_gmtoff" in
9747"$define") echo "Yes, it does." ;;
9748*) echo "No, it doesn't." ;;
9749esac
9750
9751: see if asctime_r exists
9752set asctime_r d_asctime_r
9753eval $inlibc
9754case "$d_asctime_r" in
9755"$define")
d63eadf0 9756 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
9757 case "$d_asctime_r_proto:$usethreads" in
9758 ":define") d_asctime_r_proto=define
a48ec845
JH
9759 set d_asctime_r_proto asctime_r $hdrs
9760 eval $hasproto ;;
9761 *) ;;
9762 esac
9763 case "$d_asctime_r_proto" in
9764 define)
10bc17b6
JH
9765 case "$asctime_r_proto" in
9766 ''|0) try='char* asctime_r(const struct tm*, char*);'
9767 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9768 esac
9769 case "$asctime_r_proto" in
9770 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9771 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9772 esac
9773 case "$asctime_r_proto" in
9774 ''|0) try='int asctime_r(const struct tm*, char*);'
9775 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9776 esac
9777 case "$asctime_r_proto" in
9778 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9779 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9780 esac
9781 case "$asctime_r_proto" in
90e831dc 9782 ''|0) d_asctime_r=undef
10bc17b6 9783 asctime_r_proto=0
a48ec845 9784 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
9785 * ) case "$asctime_r_proto" in
9786 REENTRANT_PROTO*) ;;
9787 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9788 esac
9789 echo "Prototype: $try" ;;
9790 esac
9791 ;;
c18e646a
JH
9792 *) case "$usethreads" in
9793 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9794 esac
90e831dc
SB
9795 d_asctime_r=undef
9796 asctime_r_proto=0
c18e646a 9797 ;;
a48ec845
JH
9798 esac
9799 ;;
10bc17b6
JH
9800*) asctime_r_proto=0
9801 ;;
9802esac
9803
b4eb6b3d
JH
9804: see if atolf exists
9805set atolf d_atolf
9806eval $inlibc
9807
9808: see if atoll exists
9809set atoll d_atoll
9810eval $inlibc
9811
9812: Look for GNU-cc style attribute checking
9813echo " "
9814echo "Checking whether your compiler can handle __attribute__ ..." >&4
9815$cat >attrib.c <<'EOCP'
9816#include <stdio.h>
04fa0c70 9817void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
b4eb6b3d
JH
9818EOCP
9819if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9820 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9821 echo "Your C compiler doesn't fully support __attribute__."
9822 val="$undef"
9823 else
9824 echo "Your C compiler supports __attribute__."
9825 val="$define"
9826 fi
9827else
9828 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9829 val="$undef"
9830fi
9831set d_attribut
9832eval $setvar
9833$rm -f attrib*
9834
9835: see if bcmp exists
9836set bcmp d_bcmp
9837eval $inlibc
9838
9839: see if bcopy exists
9840set bcopy d_bcopy
9841eval $inlibc
9842
9843: see if this is a unistd.h system
9844set unistd.h i_unistd
9845eval $inhdr
9846
9847: see if getpgrp exists
9848set getpgrp d_getpgrp
9849eval $inlibc
9850
9851case "$d_getpgrp" in
9852"$define")
9853 echo " "
9854 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 9855 $cat >try.c <<EOP
b4eb6b3d
JH
9856#$i_unistd I_UNISTD
9857#include <sys/types.h>
9858#ifdef I_UNISTD
9859# include <unistd.h>
9860#endif
55954f19
JH
9861#$i_stdlib I_STDLIB
9862#ifdef I_STDLIB
9863#include <stdlib.h>
9864#endif
b4eb6b3d
JH
9865int main()
9866{
9867 if (getuid() == 0) {
9868 printf("(I see you are running Configure as super-user...)\n");
9869 setuid(1);
9870 }
9871#ifdef TRY_BSD_PGRP
9872 if (getpgrp(1) == 0)
9873 exit(0);
9874#else
9875 if (getpgrp() > 0)
9876 exit(0);
9877#endif
9878 exit(1);
9879}
9880EOP
5440bc8e 9881 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9882 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9883 val="$define"
5440bc8e 9884 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9885 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9886 val="$undef"
9887 else
9888 echo "I can't seem to compile and run the test program."
9889 if ./usg; then
9890 xxx="a USG one, i.e. you use getpgrp()."
9891 else
9892 # SVR4 systems can appear rather BSD-ish.
9893 case "$i_unistd" in
9894 $undef)
9895 xxx="a BSD one, i.e. you use getpgrp(pid)."
9896 val="$define"
9897 ;;
9898 $define)
9899 xxx="probably a USG one, i.e. you use getpgrp()."
9900 val="$undef"
9901 ;;
9902 esac
9903 fi
9904 echo "Assuming your getpgrp is $xxx" >&4
9905 fi
9906 ;;
9907*) val="$undef";;
9908esac
9909set d_bsdgetpgrp
9910eval $setvar
5440bc8e 9911$rm -f try try.*
b4eb6b3d
JH
9912
9913: see if setpgrp exists
9914set setpgrp d_setpgrp
9915eval $inlibc
9916
9917case "$d_setpgrp" in
9918"$define")
9919 echo " "
9920 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 9921 $cat >try.c <<EOP
b4eb6b3d
JH
9922#$i_unistd I_UNISTD
9923#include <sys/types.h>
9924#ifdef I_UNISTD
9925# include <unistd.h>
9926#endif
55954f19
JH
9927#$i_stdlib I_STDLIB
9928#ifdef I_STDLIB
9929#include <stdlib.h>
9930#endif
b4eb6b3d
JH
9931int main()
9932{
9933 if (getuid() == 0) {
9934 printf("(I see you are running Configure as super-user...)\n");
9935 setuid(1);
9936 }
9937#ifdef TRY_BSD_PGRP
9938 if (-1 == setpgrp(1, 1))
9939 exit(0);
9940#else
9941 if (setpgrp() != -1)
9942 exit(0);
9943#endif
9944 exit(1);
9945}
9946EOP
5440bc8e 9947 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9948 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9949 val="$define"
5440bc8e 9950 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9951 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9952 val="$undef"
9953 else
9954 echo "(I can't seem to compile and run the test program.)"
9955 if ./usg; then
9956 xxx="a USG one, i.e. you use setpgrp()."
9957 else
9958 # SVR4 systems can appear rather BSD-ish.
9959 case "$i_unistd" in
9960 $undef)
9961 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9962 val="$define"
9963 ;;
9964 $define)
9965 xxx="probably a USG one, i.e. you use setpgrp()."
9966 val="$undef"
9967 ;;
9968 esac
9969 fi
9970 echo "Assuming your setpgrp is $xxx" >&4
9971 fi
9972 ;;
9973*) val="$undef";;
9974esac
9975set d_bsdsetpgrp
9976eval $setvar
5440bc8e 9977$rm -f try try.*
b4eb6b3d
JH
9978: see if bzero exists
9979set bzero d_bzero
9980eval $inlibc
9981
9982: see if signal is declared as pointer to function returning int or void
9983echo " "
9984xxx=`./findhdr signal.h`
9985$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9986if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9987 echo "You have int (*signal())() instead of void." >&4
9988 val="$undef"
9989elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9990 echo "You have void (*signal())()." >&4
9991 val="$define"
9992elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9993 echo "You have int (*signal())() instead of void." >&4
9994 val="$undef"
9995elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9996 echo "You have void (*signal())()." >&4
9997 val="$define"
9998else
9999 case "$d_voidsig" in
10000 '')
10001 echo "I can't determine whether signal handler returns void or int..." >&4
10002 dflt=void
10003 rp="What type does your signal handler return?"
10004 . ./myread
10005 case "$ans" in
10006 v*) val="$define";;
10007 *) val="$undef";;
10008 esac;;
10009 "$define")
10010 echo "As you already told me, signal handler returns void." >&4
10011 val="$define"
10012 ;;
10013 *) echo "As you already told me, signal handler returns int." >&4
10014 val="$undef"
10015 ;;
10016 esac
10017fi
10018set d_voidsig
10019eval $setvar
10020case "$d_voidsig" in
10021"$define") signal_t="void";;
10022*) signal_t="int";;
10023esac
10024$rm -f $$.tmp
10025
10026: check for ability to cast large floats to 32-bit ints.
10027echo " "
10028echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10029if $test "$intsize" -ge 4; then
10030 xxx=int
10031else
10032 xxx=long
10033fi
10034$cat >try.c <<EOCP
10035#include <stdio.h>
d1daaddf
JH
10036#$i_stdlib I_STDLIB
10037#ifdef I_STDLIB
10038#include <stdlib.h>
10039#endif
b4eb6b3d
JH
10040#include <sys/types.h>
10041#include <signal.h>
10042$signal_t blech(s) int s; { exit(3); }
10043int main()
10044{
10045 $xxx i32;
10046 double f, g;
10047 int result = 0;
10048 char str[16];
10049 signal(SIGFPE, blech);
10050
10051 /* Don't let compiler optimize the test away. Store the number
10052 in a writable string for gcc to pass to sscanf under HP/UX.
10053 */
10054 sprintf(str, "2147483647");
10055 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10056 g = 10 * f;
10057 i32 = ($xxx) g;
10058
10059 /* x86 processors will probably give 0x8000 0000, which is a
10060 sign change. We don't want that. We want to mimic SPARC
10061 behavior here, which is to preserve the sign and give
10062 back 0x7fff ffff.
10063 */
10064 if (i32 != ($xxx) f)
10065 result |= 1;
10066 exit(result);
10067}
10068EOCP
10069set try
10070if eval $compile_ok; then
5440bc8e 10071 $run ./try
b4eb6b3d
JH
10072 yyy=$?
10073else
10074 echo "(I can't seem to compile the test program--assuming it can't)"
10075 yyy=1
10076fi
10077case "$yyy" in
100780) val="$define"
10079 echo "Yup, it can."
10080 ;;
10081*) val="$undef"
10082 echo "Nope, it can't."
10083 ;;
10084esac
10085set d_casti32
10086eval $setvar
10087$rm -f try try.*
10088
10089: check for ability to cast negative floats to unsigned
10090echo " "
10091echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
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(7); }
10101$signal_t blech_in_list(s) int s; { exit(4); }
10102unsigned long dummy_long(p) unsigned long p; { return p; }
10103unsigned int dummy_int(p) unsigned int p; { return p; }
10104unsigned short dummy_short(p) unsigned short p; { return p; }
10105int main()
10106{
10107 double f;
10108 unsigned long along;
10109 unsigned int aint;
10110 unsigned short ashort;
10111 int result = 0;
10112 char str[16];
10113
10114 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10115 a direct f = -123. assignment. gcc-2.8.0 reportedly
10116 optimized the whole file away
10117 */
10118 /* Store the number in a writable string for gcc to pass to
10119 sscanf under HP/UX.
10120 */
10121 sprintf(str, "-123");
10122 sscanf(str, "%lf", &f); /* f = -123.; */
10123
10124 signal(SIGFPE, blech);
10125 along = (unsigned long)f;
10126 aint = (unsigned int)f;
10127 ashort = (unsigned short)f;
10128 if (along != (unsigned long)-123)
10129 result |= 1;
10130 if (aint != (unsigned int)-123)
10131 result |= 1;
10132 if (ashort != (unsigned short)-123)
10133 result |= 1;
10134 sprintf(str, "1073741824.");
10135 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10136 f = f + f;
10137 along = 0;
10138 along = (unsigned long)f;
10139 if (along != 0x80000000)
10140 result |= 2;
10141 f -= 1.;
10142 along = 0;
10143 along = (unsigned long)f;
10144 if (along != 0x7fffffff)
10145 result |= 1;
10146 f += 2.;
10147 along = 0;
10148 along = (unsigned long)f;
10149 if (along != 0x80000001)
10150 result |= 2;
10151 if (result)
10152 exit(result);
10153 signal(SIGFPE, blech_in_list);
10154 sprintf(str, "123.");
10155 sscanf(str, "%lf", &f); /* f = 123.; */
10156 along = dummy_long((unsigned long)f);
10157 aint = dummy_int((unsigned int)f);
10158 ashort = dummy_short((unsigned short)f);
10159 if (along != (unsigned long)123)
10160 result |= 4;
10161 if (aint != (unsigned int)123)
10162 result |= 4;
10163 if (ashort != (unsigned short)123)
10164 result |= 4;
10165 exit(result);
10166
10167}
10168EOCP
10169set try
10170if eval $compile_ok; then
5440bc8e 10171 $run ./try
b4eb6b3d
JH
10172 castflags=$?
10173else
10174 echo "(I can't seem to compile the test program--assuming it can't)"
10175 castflags=7
10176fi
10177case "$castflags" in
101780) val="$define"
10179 echo "Yup, it can."
10180 ;;
10181*) val="$undef"
10182 echo "Nope, it can't."
10183 ;;
10184esac
10185set d_castneg
10186eval $setvar
10187$rm -f try.*
10188
10189: see if vprintf exists
10190echo " "
10191if set vprintf val -f d_vprintf; eval $csym; $val; then
10192 echo 'vprintf() found.' >&4
10193 val="$define"
55954f19 10194 $cat >try.c <<EOF
b4eb6b3d 10195#include <varargs.h>
55954f19
JH
10196#$i_stdlib I_STDLIB
10197#ifdef I_STDLIB
10198#include <stdlib.h>
10199#endif
b4eb6b3d
JH
10200
10201int main() { xxx("foo"); }
10202
10203xxx(va_alist)
10204va_dcl
10205{
10206 va_list args;
10207 char buf[10];
10208
10209 va_start(args);
10210 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10211}
10212EOF
5440bc8e
JH
10213 set try
10214 if eval $compile && $run ./try; then
b4eb6b3d
JH
10215 echo "Your vsprintf() returns (int)." >&4
10216 val2="$undef"
10217 else
10218 echo "Your vsprintf() returns (char*)." >&4
10219 val2="$define"
10220 fi
10221else
10222 echo 'vprintf() NOT found.' >&4
10223 val="$undef"
10224 val2="$undef"
10225fi
5440bc8e 10226$rm -f try try.*
b4eb6b3d
JH
10227set d_vprintf
10228eval $setvar
10229val=$val2
10230set d_charvspr
10231eval $setvar
10232
10233: see if chown exists
10234set chown d_chown
10235eval $inlibc
10236
10237: see if chroot exists
10238set chroot d_chroot
10239eval $inlibc
10240
10241: see if chsize exists
10242set chsize d_chsize
10243eval $inlibc
10244
758a5d79
JH
10245: see if class exists
10246set class d_class
10247eval $inlibc
10248
4e0554ec
JH
10249hasstruct='varname=$1; struct=$2; shift; shift;
10250while $test $# -ge 2; do
10251 case "$1" in
10252 $define) echo "#include <$2>";;
10253 esac ;
10254 shift 2;
10255done > try.c;
10256echo "int main () { struct $struct foo; }" >> try.c;
10257set try;
10258if eval $compile; then
10259 val="$define";
10260else
10261 val="$undef";
10262fi;
10263set $varname;
10264eval $setvar;
10265$rm -f try.c try.o'
10266
4e0554ec
JH
10267socketlib=''
10268sockethdr=''
10269: see whether socket exists
10270echo " "
10271$echo $n "Hmm... $c" >&4
10272if set socket val -f d_socket; eval $csym; $val; then
10273 echo "Looks like you have Berkeley networking support." >&4
10274 d_socket="$define"
10275 if set setsockopt val -f; eval $csym; $val; then
10276 d_oldsock="$undef"
10277 else
10278 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10279 d_oldsock="$define"
10280 fi
10281else
10282 if $contains socklib libc.list >/dev/null 2>&1; then
10283 echo "Looks like you have Berkeley networking support." >&4
10284 d_socket="$define"
10285 : we will have to assume that it supports the 4.2 BSD interface
10286 d_oldsock="$undef"
10287 else
10288 echo "You don't have Berkeley networking in libc$_a..." >&4
10289 if test "X$d_socket" = "X$define"; then
10290 echo "...but you seem to believe that you have sockets." >&4
10291 else
10292 for net in net socket
10293 do
10294 if test -f /usr/lib/lib$net$_a; then
10295 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10296 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10297 if $contains socket libc.list >/dev/null 2>&1; then
10298 d_socket="$define"
10299 socketlib="-l$net"
10300 case "$net" in
10301 net)
10302 echo "...but the Wollongong group seems to have hacked it in." >&4
10303 sockethdr="-I/usr/netinclude"
10304 ;;
10305 esac
3c728e00 10306 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
10307 if $contains setsockopt libc.list >/dev/null 2>&1; then
10308 d_oldsock="$undef"
10309 else
10310 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10311 d_oldsock="$define"
10312 fi
10313 break
10314 fi
10315 fi
10316 done
10317 if test "X$d_socket" != "X$define"; then
10318 echo "or anywhere else I see." >&4
10319 d_socket="$undef"
10320 d_oldsock="$undef"
10321 fi
10322 fi
10323 fi
10324fi
10325
10326: see if socketpair exists
10327set socketpair d_sockpair
10328eval $inlibc
10329
10330
10331echo " "
3c728e00 10332echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
10333for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10334 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10335 $cat >try.c <<EOF
10336#include <sys/types.h>
10337#include <sys/socket.h>
10338int main() {
10339 int i = $ENUM;
10340}
10341EOF
10342 val="$undef"
10343 set try; if eval $compile; then
10344 val="$define"
10345 fi
10346 set d_${enum}; eval $setvar
10347 $rm -f try.c try
10348done
10349
10350: see if this is a sys/uio.h system
10351set sys/uio.h i_sysuio
10352eval $inhdr
10353
10354
10355echo " "
10356echo "Checking to see if your system supports struct cmsghdr..." >&4
10357set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10358eval $hasstruct
10359case "$d_cmsghdr_s" in
10360"$define") echo "Yes, it does." ;;
10361*) echo "No, it doesn't." ;;
10362esac
10363
10364
b4eb6b3d
JH
10365: check for const keyword
10366echo " "
10367echo 'Checking to see if your C compiler knows about "const"...' >&4
10368$cat >const.c <<'EOCP'
10369typedef struct spug { int drokk; } spug;
76f47787 10370int main()
b4eb6b3d
JH
10371{
10372 const char *foo;
10373 const spug y;
10374}
10375EOCP
10376if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10377 val="$define"
10378 echo "Yup, it does."
10379else
10380 val="$undef"
10381 echo "Nope, it doesn't."
10382fi
10383set d_const
10384eval $setvar
10385
89ce900e
JH
10386: see if copysignl exists
10387set copysignl d_copysignl
10388eval $inlibc
10389
b4eb6b3d
JH
10390: see if crypt exists
10391echo " "
a5a94ea5
JH
10392set crypt d_crypt
10393eval $inlibc
10394case "$d_crypt" in
10395$define) cryptlib='' ;;
10396*) if set crypt val -f d_crypt; eval $csym; $val; then
10397 echo 'crypt() found.' >&4
b4eb6b3d 10398 val="$define"
a5a94ea5
JH
10399 cryptlib=''
10400 else
10401 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10402 if $test -z "$cryptlib"; then
10403 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10404 else
10405 cryptlib=-lcrypt
10406 fi
10407 if $test -z "$cryptlib"; then
10408 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10409 else
10410 cryptlib=-lcrypt
10411 fi
10412 if $test -z "$cryptlib"; then
10413 cryptlib=`./loc libcrypt$_a "" $libpth`
10414 else
10415 cryptlib=-lcrypt
10416 fi
10417 if $test -z "$cryptlib"; then
10418 echo 'crypt() NOT found.' >&4
10419 val="$undef"
10420 else
10421 val="$define"
10422 fi
b4eb6b3d 10423 fi
a5a94ea5
JH
10424 set d_crypt
10425 eval $setvar
10426 ;;
10427esac
b4eb6b3d 10428
10bc17b6
JH
10429: see if this is a crypt.h system
10430set crypt.h i_crypt
10431eval $inhdr
10432
10433: see if crypt_r exists
10434set crypt_r d_crypt_r
10435eval $inlibc
10436case "$d_crypt_r" in
10437"$define")
10438 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
c18e646a
JH
10439 case "$d_crypt_r_proto:$usethreads" in
10440 ":define") d_crypt_r_proto=define
a48ec845
JH
10441 set d_crypt_r_proto crypt_r $hdrs
10442 eval $hasproto ;;
10443 *) ;;
10444 esac
10445 case "$d_crypt_r_proto" in
10446 define)
10bc17b6
JH
10447 case "$crypt_r_proto" in
10448 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10449 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10450 esac
10451 case "$crypt_r_proto" in
b430fd04
JH
10452 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10453 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10454 esac
10455 case "$crypt_r_proto" in
90e831dc 10456 ''|0) d_crypt_r=undef
10bc17b6 10457 crypt_r_proto=0
a48ec845 10458 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10459 * ) case "$crypt_r_proto" in
10460 REENTRANT_PROTO*) ;;
10461 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10462 esac
10463 echo "Prototype: $try" ;;
10464 esac
10465 ;;
c18e646a
JH
10466 *) case "$usethreads" in
10467 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10468 esac
90e831dc
SB
10469 d_crypt_r=undef
10470 crypt_r_proto=0
c18e646a 10471 ;;
a48ec845
JH
10472 esac
10473 ;;
10bc17b6
JH
10474*) crypt_r_proto=0
10475 ;;
10476esac
10477
b4eb6b3d
JH
10478: get csh whereabouts
10479case "$csh" in
10480'csh') val="$undef" ;;
10481*) val="$define" ;;
10482esac
10483set d_csh
10484eval $setvar
10485: Respect a hint or command line value for full_csh.
10486case "$full_csh" in
10487'') full_csh=$csh ;;
10488esac
10489
10bc17b6
JH
10490: see if ctermid_r exists
10491set ctermid_r d_ctermid_r
10492eval $inlibc
10493case "$d_ctermid_r" in
10494"$define")
31ee0cb7 10495 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
10496 case "$d_ctermid_r_proto:$usethreads" in
10497 ":define") d_ctermid_r_proto=define
a48ec845
JH
10498 set d_ctermid_r_proto ctermid_r $hdrs
10499 eval $hasproto ;;
10500 *) ;;
10501 esac
10502 case "$d_ctermid_r_proto" in
10503 define)
10bc17b6
JH
10504 case "$ctermid_r_proto" in
10505 ''|0) try='char* ctermid_r(char*);'
10506 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10507 esac
10508 case "$ctermid_r_proto" in
90e831dc 10509 ''|0) d_ctermid_r=undef
10bc17b6 10510 ctermid_r_proto=0
a48ec845 10511 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10512 * ) case "$ctermid_r_proto" in
10513 REENTRANT_PROTO*) ;;
10514 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10515 esac
10516 echo "Prototype: $try" ;;
10517 esac
10518 ;;
c18e646a
JH
10519 *) case "$usethreads" in
10520 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10521 esac
90e831dc
SB
10522 d_ctermid_r=undef
10523 ctermid_r_proto=0
c18e646a 10524 ;;
a48ec845
JH
10525 esac
10526 ;;
10bc17b6
JH
10527*) ctermid_r_proto=0
10528 ;;
10529esac
10530
10531: see if ctime_r exists
10532set ctime_r d_ctime_r
10533eval $inlibc
10534case "$d_ctime_r" in
10535"$define")
d63eadf0 10536 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
10537 case "$d_ctime_r_proto:$usethreads" in
10538 ":define") d_ctime_r_proto=define
a48ec845
JH
10539 set d_ctime_r_proto ctime_r $hdrs
10540 eval $hasproto ;;
10541 *) ;;
10542 esac
10543 case "$d_ctime_r_proto" in
10544 define)
10bc17b6
JH
10545 case "$ctime_r_proto" in
10546 ''|0) try='char* ctime_r(const time_t*, char*);'
10547 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10548 esac
10549 case "$ctime_r_proto" in
10550 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10551 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10552 esac
10553 case "$ctime_r_proto" in
10554 ''|0) try='int ctime_r(const time_t*, char*);'
10555 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10556 esac
10557 case "$ctime_r_proto" in
10558 ''|0) try='int ctime_r(const time_t*, char*, int);'
10559 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10560 esac
10561 case "$ctime_r_proto" in
90e831dc 10562 ''|0) d_ctime_r=undef
10bc17b6 10563 ctime_r_proto=0
a48ec845 10564 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10565 * ) case "$ctime_r_proto" in
10566 REENTRANT_PROTO*) ;;
10567 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10568 esac
10569 echo "Prototype: $try" ;;
10570 esac
10571 ;;
c18e646a
JH
10572 *) case "$usethreads" in
10573 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10574 esac
90e831dc
SB
10575 d_ctime_r=undef
10576 ctime_r_proto=0
c18e646a 10577 ;;
a48ec845
JH
10578 esac
10579 ;;
10bc17b6
JH
10580*) ctime_r_proto=0
10581 ;;
10582esac
10583
b4eb6b3d
JH
10584: see if cuserid exists
10585set cuserid d_cuserid
10586eval $inlibc
10587
10588: see if this is a limits.h system
10589set limits.h i_limits
10590eval $inhdr
10591
10592: see if this is a float.h system
10593set float.h i_float
10594eval $inhdr
10595
10596: See if number of significant digits in a double precision number is known
10597echo " "
10598$cat >dbl_dig.c <<EOM
10599#$i_limits I_LIMITS
10600#$i_float I_FLOAT
10601#ifdef I_LIMITS
10602#include <limits.h>
10603#endif
10604#ifdef I_FLOAT
10605#include <float.h>
10606#endif
10607#ifdef DBL_DIG
10608printf("Contains DBL_DIG");
10609#endif
10610EOM
10611$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10612if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10613 echo "DBL_DIG found." >&4
10614 val="$define"
10615else
10616 echo "DBL_DIG NOT found." >&4
10617 val="$undef"
10618fi
10619$rm -f dbl_dig.?
10620set d_dbl_dig
10621eval $setvar
10622
2ef53570
JH
10623: see if dbm.h is available
10624: see if dbmclose exists
10625set dbmclose d_dbmclose
10626eval $inlibc
10627
10628case "$d_dbmclose" in
10629$define)
10630 set dbm.h i_dbm
10631 eval $inhdr
10632 case "$i_dbm" in
10633 $define)
10634 val="$undef"
10635 set i_rpcsvcdbm
10636 eval $setvar
10637 ;;
10638 *) set rpcsvc/dbm.h i_rpcsvcdbm
10639 eval $inhdr
10640 ;;
10641 esac
10642 ;;
10643*) echo "We won't be including <dbm.h>"
10644 val="$undef"
10645 set i_dbm
10646 eval $setvar
10647 val="$undef"
10648 set i_rpcsvcdbm
10649 eval $setvar
10650 ;;
10651esac
10652
10653: see if prototype for dbminit is available
10654echo " "
10655set d_dbminitproto dbminit $i_dbm dbm.h
10656eval $hasproto
10657
b4eb6b3d
JH
10658: see if difftime exists
10659set difftime d_difftime
10660eval $inlibc
10661
10662: see if this is a dirent system
10663echo " "
10664if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10665 val="$define"
10666 echo "<dirent.h> found." >&4
10667else
10668 val="$undef"
10669 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10670 echo "<sys/dir.h> found." >&4
10671 echo " "
10672 else
10673 xinc=`./findhdr sys/ndir.h`
10674 fi
10675 echo "<dirent.h> NOT found." >&4
10676fi
10677set i_dirent
10678eval $setvar
10679
10680: Look for type of directory structure.
10681echo " "
10682$cppstdin $cppflags $cppminus < "$xinc" > try.c
10683
10684case "$direntrytype" in
10685''|' ')
10686 case "$i_dirent" in
10687 $define) guess1='struct dirent' ;;
10688 *) guess1='struct direct' ;;
10689 esac
10690 ;;
10691*) guess1="$direntrytype"
10692 ;;
10693esac
10694
10695case "$guess1" in
10696'struct dirent') guess2='struct direct' ;;
10697*) guess2='struct dirent' ;;
10698esac
10699
10700if $contains "$guess1" try.c >/dev/null 2>&1; then
10701 direntrytype="$guess1"
10702 echo "Your directory entries are $direntrytype." >&4
10703elif $contains "$guess2" try.c >/dev/null 2>&1; then
10704 direntrytype="$guess2"
10705 echo "Your directory entries seem to be $direntrytype." >&4
10706else
10707 echo "I don't recognize your system's directory entries." >&4
10708 rp="What type is used for directory entries on this system?"
10709 dflt="$guess1"
10710 . ./myread
10711 direntrytype="$ans"
10712fi
10713$rm -f try.c
10714
10715
10716: see if the directory entry stores field length
10717echo " "
10718$cppstdin $cppflags $cppminus < "$xinc" > try.c
10719if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10720 echo "Good, your directory entry keeps length information in d_namlen." >&4
10721 val="$define"
10722else
10723 echo "Your directory entry does not know about the d_namlen field." >&4
10724 val="$undef"
10725fi
10726set d_dirnamlen
10727eval $setvar
10728$rm -f try.c
10729
ae0e3d3b
JH
10730: see if this is an sysdir system
10731set sys/dir.h i_sysdir
10732eval $inhdr
10733
10734: see if this is an sysndir system
10735set sys/ndir.h i_sysndir
10736eval $inhdr
10737
10738: Look for dirfd
10739echo " "
10740$cat >dirfd.c <<EOM
10741#include <stdio.h>
55954f19
JH
10742#$i_stdlib I_STDLIB
10743#ifdef I_STDLIB
10744#include <stdlib.h>
10745#endif
ae0e3d3b
JH
10746#$i_dirent I_DIRENT /**/
10747#$i_sysdir I_SYS_DIR /**/
10748#$i_sysndir I_SYS_NDIR /**/
10749#$i_systypes I_SYS_TYPES /**/
10750#if defined(I_SYS_TYPES)
10751#include <sys/types.h>
10752#endif
10753#if defined(I_DIRENT)
10754#include <dirent.h>
10755#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10756#include <sys/dir.h>
10757#endif
10758#else
10759#ifdef I_SYS_NDIR
10760#include <sys/ndir.h>
10761#else
10762#ifdef I_SYS_DIR
10763#ifdef hp9000s500
10764#include <ndir.h> /* may be wrong in the future */
10765#else
10766#include <sys/dir.h>
10767#endif
10768#endif
10769#endif
10770#endif
10771int main() {
10772 DIR *dirp = opendir(".");
10773 if (dirfd(dirp) >= 0)
10774 exit(0);
10775 else
10776 exit(1);
10777}
10778EOM
10779set dirfd
10780if eval $compile; then
10781 val="$define"
10782fi
10783case "$val" in
10784$define) echo "dirfd() found." >&4 ;;
10785*) echo "dirfd() NOT found." >&4 ;;
10786esac
10787set d_dirfd
10788eval $setvar
10789$rm -f dirfd*
10790
b4eb6b3d
JH
10791: see if dlerror exists
10792xxx_runnm="$runnm"
10793runnm=false
10794set dlerror d_dlerror
10795eval $inlibc
10796runnm="$xxx_runnm"
10797
10798: see if dlfcn is available
10799set dlfcn.h i_dlfcn
10800eval $inhdr
10801
10802case "$usedl" in
10803$define|y|true)
10804 $cat << EOM
10805
10806On a few systems, the dynamically loaded modules that perl generates and uses
10807will need a different extension than shared libs. The default will probably
10808be appropriate.
10809
10810EOM
10811 case "$dlext" in
10812 '') dflt="$so" ;;
10813 *) dflt="$dlext" ;;
10814 esac
10815 rp='What is the extension of dynamically loaded modules'
10816 . ./myread
10817 dlext="$ans"
10818 ;;
10819*)
10820 dlext="none"
10821 ;;
10822esac
10823
10824: Check if dlsym need a leading underscore
10825echo " "
10826val="$undef"
10827
10828case "$dlsrc" in
10829dl_dlopen.xs)
10830 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10831 $cat >dyna.c <<'EOM'
10832fred () { }
10833EOM
10834
10835$cat >fred.c<<EOM
10836
10837#include <stdio.h>
55954f19
JH
10838#$i_stdlib I_STDLIB
10839#ifdef I_STDLIB
10840#include <stdlib.h>
10841#endif
b4eb6b3d
JH
10842#$i_dlfcn I_DLFCN
10843#ifdef I_DLFCN
5440bc8e 10844#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
10845#else
10846#include <sys/types.h>
10847#include <nlist.h>
10848#include <link.h>
10849#endif
10850
10851extern int fred() ;
10852
10853int main()
10854{
10855 void * handle ;
10856 void * symbol ;
10857#ifndef RTLD_LAZY
10858 int mode = 1 ;
10859#else
10860 int mode = RTLD_LAZY ;
10861#endif
10862 handle = dlopen("./dyna.$dlext", mode) ;
10863 if (handle == NULL) {
10864 printf ("1\n") ;
10865 fflush (stdout) ;
10866 exit(0);
10867 }
10868 symbol = dlsym(handle, "fred") ;
10869 if (symbol == NULL) {
10870 /* try putting a leading underscore */
10871 symbol = dlsym(handle, "_fred") ;
10872 if (symbol == NULL) {
10873 printf ("2\n") ;
10874 fflush (stdout) ;
10875 exit(0);
10876 }
10877 printf ("3\n") ;
10878 }
10879 else
10880 printf ("4\n") ;
10881 fflush (stdout) ;
10882 exit(0);
10883}
10884EOM
10885 : Call the object file tmp-dyna.o in case dlext=o.
10886 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10887 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 10888 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
10889 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10890 xxx=`$run ./fred`
b4eb6b3d
JH
10891 case $xxx in
10892 1) echo "Test program failed using dlopen." >&4
10893 echo "Perhaps you should not use dynamic loading." >&4;;
10894 2) echo "Test program failed using dlsym." >&4
10895 echo "Perhaps you should not use dynamic loading." >&4;;
10896 3) echo "dlsym needs a leading underscore" >&4
10897 val="$define" ;;
10898 4) echo "dlsym doesn't need a leading underscore." >&4;;
10899 esac
10900 else
10901 echo "I can't compile and run the test program." >&4
10902 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10903 fi
10904 ;;
10905esac
10906
3c728e00 10907$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
10908
10909set d_dlsymun
10910eval $setvar
10911
10bc17b6
JH
10912: see if drand48_r exists
10913set drand48_r d_drand48_r
10914eval $inlibc
10915case "$d_drand48_r" in
10916"$define")
10917 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
10918 case "$d_drand48_r_proto:$usethreads" in
10919 ":define") d_drand48_r_proto=define
a48ec845
JH
10920 set d_drand48_r_proto drand48_r $hdrs
10921 eval $hasproto ;;
10922 *) ;;
10923 esac
10924 case "$d_drand48_r_proto" in
10925 define)
10bc17b6
JH
10926 case "$drand48_r_proto" in
10927 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10928 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10929 esac
10930 case "$drand48_r_proto" in
90e831dc 10931 ''|0) d_drand48_r=undef
10bc17b6 10932 drand48_r_proto=0
a48ec845 10933 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10934 * ) case "$drand48_r_proto" in
10935 REENTRANT_PROTO*) ;;
10936 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10937 esac
10938 echo "Prototype: $try" ;;
10939 esac
10940 ;;
c18e646a
JH
10941 *) case "$usethreads" in
10942 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10943 esac
90e831dc
SB
10944 d_drand48_r=undef
10945 drand48_r_proto=0
c18e646a 10946 ;;
a48ec845
JH
10947 esac
10948 ;;
10bc17b6
JH
10949*) drand48_r_proto=0
10950 ;;
10951esac
10952
10953: see if prototype for drand48 is available
10954echo " "
10955set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10956eval $hasproto
10957
b4eb6b3d
JH
10958: see if dup2 exists
10959set dup2 d_dup2
10960eval $inlibc
10961
10962: see if eaccess exists
10963set eaccess d_eaccess
10964eval $inlibc
10965
10966: see if endgrent exists
10967set endgrent d_endgrent
10968eval $inlibc
10969
10bc17b6
JH
10970: see if this is an grp system
10971set grp.h i_grp
10972eval $inhdr
10973
10974case "$i_grp" in
10975$define)
10976 xxx=`./findhdr grp.h`
10977 $cppstdin $cppflags $cppminus < $xxx >$$.h
10978
10979 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10980 val="$define"
10981 else
10982 val="$undef"
10983 fi
10984 set d_grpasswd
10985 eval $setvar
10986
10987 $rm -f $$.h
10988 ;;
10989*)
10990 val="$undef";
10991 set d_grpasswd; eval $setvar
10992 ;;
10993esac
10994
10995: see if endgrent_r exists
10996set endgrent_r d_endgrent_r
10997eval $inlibc
10998case "$d_endgrent_r" in
10999"$define")
11000 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
11001 case "$d_endgrent_r_proto:$usethreads" in
11002 ":define") d_endgrent_r_proto=define
a48ec845
JH
11003 set d_endgrent_r_proto endgrent_r $hdrs
11004 eval $hasproto ;;
11005 *) ;;
11006 esac
11007 case "$d_endgrent_r_proto" in
11008 define)
10bc17b6
JH
11009 case "$endgrent_r_proto" in
11010 ''|0) try='int endgrent_r(FILE**);'
11011 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11012 esac
11013 case "$endgrent_r_proto" in
11014 ''|0) try='void endgrent_r(FILE**);'
11015 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11016 esac
11017 case "$endgrent_r_proto" in
90e831dc 11018 ''|0) d_endgrent_r=undef
10bc17b6 11019 endgrent_r_proto=0
a48ec845 11020 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11021 * ) case "$endgrent_r_proto" in
11022 REENTRANT_PROTO*) ;;
11023 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11024 esac
11025 echo "Prototype: $try" ;;
11026 esac
11027 ;;
c18e646a
JH
11028 *) case "$usethreads" in
11029 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11030 esac
90e831dc
SB
11031 d_endgrent_r=undef
11032 endgrent_r_proto=0
c18e646a 11033 ;;
a48ec845
JH
11034 esac
11035 ;;
10bc17b6
JH
11036*) endgrent_r_proto=0
11037 ;;
11038esac
11039
b4eb6b3d
JH
11040: see if endhostent exists
11041set endhostent d_endhent
11042eval $inlibc
11043
10bc17b6
JH
11044: see if this is a netdb.h system
11045set netdb.h i_netdb
11046eval $inhdr
11047
11048: see if endhostent_r exists
11049set endhostent_r d_endhostent_r
11050eval $inlibc
11051case "$d_endhostent_r" in
11052"$define")
11053 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11054 case "$d_endhostent_r_proto:$usethreads" in
11055 ":define") d_endhostent_r_proto=define
a48ec845
JH
11056 set d_endhostent_r_proto endhostent_r $hdrs
11057 eval $hasproto ;;
11058 *) ;;
11059 esac
11060 case "$d_endhostent_r_proto" in
11061 define)
10bc17b6
JH
11062 case "$endhostent_r_proto" in
11063 ''|0) try='int endhostent_r(struct hostent_data*);'
31ee0cb7 11064 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10bc17b6
JH
11065 esac
11066 case "$endhostent_r_proto" in
11067 ''|0) try='void endhostent_r(struct hostent_data*);'
31ee0cb7 11068 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10bc17b6
JH
11069 esac
11070 case "$endhostent_r_proto" in
90e831dc 11071 ''|0) d_endhostent_r=undef
10bc17b6 11072 endhostent_r_proto=0
a48ec845 11073 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11074 * ) case "$endhostent_r_proto" in
11075 REENTRANT_PROTO*) ;;
11076 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11077 esac
11078 echo "Prototype: $try" ;;
11079 esac
11080 ;;
c18e646a
JH
11081 *) case "$usethreads" in
11082 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11083 esac
90e831dc
SB
11084 d_endhostent_r=undef
11085 endhostent_r_proto=0
c18e646a 11086 ;;
a48ec845
JH
11087 esac
11088 ;;
10bc17b6
JH
11089*) endhostent_r_proto=0
11090 ;;
11091esac
11092
b4eb6b3d
JH
11093: see if endnetent exists
11094set endnetent d_endnent
11095eval $inlibc
11096
10bc17b6
JH
11097: see if endnetent_r exists
11098set endnetent_r d_endnetent_r
11099eval $inlibc
11100case "$d_endnetent_r" in
11101"$define")
11102 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11103 case "$d_endnetent_r_proto:$usethreads" in
11104 ":define") d_endnetent_r_proto=define
a48ec845
JH
11105 set d_endnetent_r_proto endnetent_r $hdrs
11106 eval $hasproto ;;
11107 *) ;;
11108 esac
11109 case "$d_endnetent_r_proto" in
11110 define)
10bc17b6
JH
11111 case "$endnetent_r_proto" in
11112 ''|0) try='int endnetent_r(struct netent_data*);'
31ee0cb7 11113 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10bc17b6
JH
11114 esac
11115 case "$endnetent_r_proto" in
11116 ''|0) try='void endnetent_r(struct netent_data*);'
31ee0cb7 11117 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10bc17b6
JH
11118 esac
11119 case "$endnetent_r_proto" in
90e831dc 11120 ''|0) d_endnetent_r=undef
10bc17b6 11121 endnetent_r_proto=0
a48ec845 11122 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11123 * ) case "$endnetent_r_proto" in
11124 REENTRANT_PROTO*) ;;
11125 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11126 esac
11127 echo "Prototype: $try" ;;
11128 esac
11129 ;;
c18e646a
JH
11130 *) case "$usethreads" in
11131 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11132 esac
90e831dc
SB
11133 d_endnetent_r=undef
11134 endnetent_r_proto=0
c18e646a 11135 ;;
a48ec845
JH
11136 esac
11137 ;;
10bc17b6
JH
11138*) endnetent_r_proto=0
11139 ;;
11140esac
11141
b4eb6b3d
JH
11142: see if endprotoent exists
11143set endprotoent d_endpent
11144eval $inlibc
11145
10bc17b6
JH
11146: see if endprotoent_r exists
11147set endprotoent_r d_endprotoent_r
11148eval $inlibc
11149case "$d_endprotoent_r" in
11150"$define")
11151 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11152 case "$d_endprotoent_r_proto:$usethreads" in
11153 ":define") d_endprotoent_r_proto=define
a48ec845
JH
11154 set d_endprotoent_r_proto endprotoent_r $hdrs
11155 eval $hasproto ;;
11156 *) ;;
11157 esac
11158 case "$d_endprotoent_r_proto" in
11159 define)
10bc17b6
JH
11160 case "$endprotoent_r_proto" in
11161 ''|0) try='int endprotoent_r(struct protoent_data*);'
31ee0cb7 11162 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10bc17b6
JH
11163 esac
11164 case "$endprotoent_r_proto" in
11165 ''|0) try='void endprotoent_r(struct protoent_data*);'
31ee0cb7 11166 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10bc17b6
JH
11167 esac
11168 case "$endprotoent_r_proto" in
90e831dc 11169 ''|0) d_endprotoent_r=undef
10bc17b6 11170 endprotoent_r_proto=0
a48ec845 11171 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11172 * ) case "$endprotoent_r_proto" in
11173 REENTRANT_PROTO*) ;;
11174 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11175 esac
11176 echo "Prototype: $try" ;;
11177 esac
11178 ;;
c18e646a
JH
11179 *) case "$usethreads" in
11180 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11181 esac
90e831dc
SB
11182 d_endprotoent_r=undef
11183 endprotoent_r_proto=0
c18e646a 11184 ;;
a48ec845
JH
11185 esac
11186 ;;
10bc17b6
JH
11187*) endprotoent_r_proto=0
11188 ;;
11189esac
11190
b4eb6b3d
JH
11191: see if endpwent exists
11192set endpwent d_endpwent
11193eval $inlibc
11194
10bc17b6
JH
11195: see if this is a pwd.h system
11196set pwd.h i_pwd
11197eval $inhdr
11198
11199case "$i_pwd" in
11200$define)
11201 xxx=`./findhdr pwd.h`
11202 $cppstdin $cppflags $cppminus < $xxx >$$.h
11203
11204 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11205 val="$define"
11206 else
11207 val="$undef"
11208 fi
11209 set d_pwquota
11210 eval $setvar
11211
11212 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11213 val="$define"
11214 else
11215 val="$undef"
11216 fi
11217 set d_pwage
11218 eval $setvar
11219
11220 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11221 val="$define"
11222 else
11223 val="$undef"
11224 fi
11225 set d_pwchange
11226 eval $setvar
11227
11228 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11229 val="$define"
11230 else
11231 val="$undef"
11232 fi
11233 set d_pwclass
11234 eval $setvar
11235
11236 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11237 val="$define"
11238 else
11239 val="$undef"
11240 fi
11241 set d_pwexpire
11242 eval $setvar
11243
11244 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11245 val="$define"
11246 else
11247 val="$undef"
11248 fi
11249 set d_pwcomment
11250 eval $setvar
11251
11252 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11253 val="$define"
11254 else
11255 val="$undef"
11256 fi
11257 set d_pwgecos
11258 eval $setvar
11259
11260 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11261 val="$define"
11262 else
11263 val="$undef"
11264 fi
11265 set d_pwpasswd
11266 eval $setvar
11267
11268 $rm -f $$.h
11269 ;;
11270*)
11271 val="$undef";
11272 set d_pwquota; eval $setvar
11273 set d_pwage; eval $setvar
11274 set d_pwchange; eval $setvar
11275 set d_pwclass; eval $setvar
11276 set d_pwexpire; eval $setvar
11277 set d_pwcomment; eval $setvar
11278 set d_pwgecos; eval $setvar
11279 set d_pwpasswd; eval $setvar
11280 ;;
11281esac
11282
11283: see if endpwent_r exists
11284set endpwent_r d_endpwent_r
11285eval $inlibc
11286case "$d_endpwent_r" in
11287"$define")
11288 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
11289 case "$d_endpwent_r_proto:$usethreads" in
11290 ":define") d_endpwent_r_proto=define
a48ec845
JH
11291 set d_endpwent_r_proto endpwent_r $hdrs
11292 eval $hasproto ;;
11293 *) ;;
11294 esac
11295 case "$d_endpwent_r_proto" in
11296 define)
10bc17b6
JH
11297 case "$endpwent_r_proto" in
11298 ''|0) try='int endpwent_r(FILE**);'
11299 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11300 esac
11301 case "$endpwent_r_proto" in
11302 ''|0) try='void endpwent_r(FILE**);'
11303 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11304 esac
11305 case "$endpwent_r_proto" in
90e831dc 11306 ''|0) d_endpwent_r=undef
10bc17b6 11307 endpwent_r_proto=0
a48ec845 11308 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11309 * ) case "$endpwent_r_proto" in
11310 REENTRANT_PROTO*) ;;
11311 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11312 esac
11313 echo "Prototype: $try" ;;
11314 esac
11315 ;;
c18e646a
JH
11316 *) case "$usethreads" in
11317 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11318 esac
90e831dc
SB
11319 d_endpwent_r=undef
11320 endpwent_r_proto=0
c18e646a 11321 ;;
a48ec845
JH
11322 esac
11323 ;;
10bc17b6
JH
11324*) endpwent_r_proto=0
11325 ;;
11326esac
11327
b4eb6b3d
JH
11328: see if endservent exists
11329set endservent d_endsent
11330eval $inlibc
11331
10bc17b6
JH
11332: see if endservent_r exists
11333set endservent_r d_endservent_r
11334eval $inlibc
11335case "$d_endservent_r" in
11336"$define")
11337 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11338 case "$d_endservent_r_proto:$usethreads" in
11339 ":define") d_endservent_r_proto=define
a48ec845
JH
11340 set d_endservent_r_proto endservent_r $hdrs
11341 eval $hasproto ;;
11342 *) ;;
11343 esac
11344 case "$d_endservent_r_proto" in
11345 define)
10bc17b6
JH
11346 case "$endservent_r_proto" in
11347 ''|0) try='int endservent_r(struct servent_data*);'
31ee0cb7 11348 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10bc17b6
JH
11349 esac
11350 case "$endservent_r_proto" in
11351 ''|0) try='void endservent_r(struct servent_data*);'
31ee0cb7 11352 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10bc17b6
JH
11353 esac
11354 case "$endservent_r_proto" in
90e831dc 11355 ''|0) d_endservent_r=undef
10bc17b6 11356 endservent_r_proto=0
a48ec845 11357 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11358 * ) case "$endservent_r_proto" in
11359 REENTRANT_PROTO*) ;;
11360 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11361 esac
11362 echo "Prototype: $try" ;;
11363 esac
11364 ;;
c18e646a
JH
11365 *) case "$usethreads" in
11366 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11367 esac
90e831dc
SB
11368 d_endservent_r=undef
11369 endservent_r_proto=0
c18e646a 11370 ;;
a48ec845
JH
11371 esac
11372 ;;
10bc17b6
JH
11373*) endservent_r_proto=0
11374 ;;
11375esac
11376
b4eb6b3d
JH
11377: Locate the flags for 'open()'
11378echo " "
55954f19 11379$cat >try.c <<EOCP
b4eb6b3d
JH
11380#include <sys/types.h>
11381#ifdef I_FCNTL
11382#include <fcntl.h>
11383#endif
11384#ifdef I_SYS_FILE
11385#include <sys/file.h>
11386#endif
55954f19
JH
11387#$i_stdlib I_STDLIB
11388#ifdef I_STDLIB
11389#include <stdlib.h>
11390#endif
b4eb6b3d
JH
11391int main() {
11392 if(O_RDONLY);
11393#ifdef O_TRUNC
11394 exit(0);
11395#else
11396 exit(1);
11397#endif
11398}
11399EOCP
11400: check sys/file.h first to get FREAD on Sun
11401if $test `./findhdr sys/file.h` && \
5440bc8e 11402 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
11403 h_sysfile=true;
11404 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 11405 if $run ./try; then
b4eb6b3d
JH
11406 echo "and you have the 3 argument form of open()." >&4
11407 val="$define"
11408 else
11409 echo "but not the 3 argument form of open(). Oh, well." >&4
11410 val="$undef"
11411 fi
11412elif $test `./findhdr fcntl.h` && \
5440bc8e 11413 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
11414 h_fcntl=true;
11415 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 11416 if $run ./try; then
b4eb6b3d
JH
11417 echo "and you have the 3 argument form of open()." >&4
11418 val="$define"
11419 else
11420 echo "but not the 3 argument form of open(). Oh, well." >&4
11421 val="$undef"
11422 fi
11423else
11424 val="$undef"
11425 echo "I can't find the O_* constant definitions! You got problems." >&4
11426fi
11427set d_open3
11428eval $setvar
5440bc8e 11429$rm -f try try.*
b4eb6b3d
JH
11430
11431: see which of string.h or strings.h is needed
11432echo " "
11433strings=`./findhdr string.h`
11434if $test "$strings" && $test -r "$strings"; then
11435 echo "Using <string.h> instead of <strings.h>." >&4
11436 val="$define"
11437else
11438 val="$undef"
11439 strings=`./findhdr strings.h`
11440 if $test "$strings" && $test -r "$strings"; then
11441 echo "Using <strings.h> instead of <string.h>." >&4
11442 else
11443 echo "No string header found -- You'll surely have problems." >&4
11444 fi
11445fi
11446set i_string
11447eval $setvar
11448case "$i_string" in
11449"$undef") strings=`./findhdr strings.h`;;
11450*) strings=`./findhdr string.h`;;
11451esac
11452
3c728e00
JH
11453: see if this is a sys/file.h system
11454val=''
11455set sys/file.h val
11456eval $inhdr
11457
11458: do we need to include sys/file.h ?
11459case "$val" in
11460"$define")
11461 echo " "
11462 if $h_sysfile; then
11463 val="$define"
11464 echo "We'll be including <sys/file.h>." >&4
11465 else
11466 val="$undef"
11467 echo "We won't be including <sys/file.h>." >&4
11468 fi
11469 ;;
11470*)
11471 h_sysfile=false
11472 ;;
11473esac
11474set i_sysfile
11475eval $setvar
11476
11477: see if fcntl.h is there
11478val=''
11479set fcntl.h val
11480eval $inhdr
11481
11482: see if we can include fcntl.h
11483case "$val" in
11484"$define")
11485 echo " "
11486 if $h_fcntl; then
11487 val="$define"
11488 echo "We'll be including <fcntl.h>." >&4
11489 else
11490 val="$undef"
11491 if $h_sysfile; then
11492 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11493 else
11494 echo "We won't be including <fcntl.h>." >&4
11495 fi
11496 fi
11497 ;;
11498*)
11499 h_fcntl=false
11500 val="$undef"
11501 ;;
11502esac
11503set i_fcntl
11504eval $setvar
11505
b4eb6b3d
JH
11506: check for non-blocking I/O stuff
11507case "$h_sysfile" in
a0acbdc3
JH
11508true) echo "#include <sys/file.h>" > head.c;;
11509*)
11510 case "$h_fcntl" in
11511 true) echo "#include <fcntl.h>" > head.c;;
11512 *) echo "#include <sys/fcntl.h>" > head.c;;
11513 esac
11514 ;;
b4eb6b3d
JH
11515esac
11516echo " "
11517echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11518case "$o_nonblock" in
11519'')
11520 $cat head.c > try.c
3c728e00 11521 $cat >>try.c <<EOCP
b4eb6b3d 11522#include <stdio.h>
55954f19
JH
11523#$i_stdlib I_STDLIB
11524#ifdef I_STDLIB
80b3ef99 11525#include <stdlib.h>
55954f19 11526#endif
3c728e00
JH
11527#$i_fcntl I_FCNTL
11528#ifdef I_FCNTL
11529#include <fcntl.h>
11530#endif
b4eb6b3d
JH
11531int main() {
11532#ifdef O_NONBLOCK
11533 printf("O_NONBLOCK\n");
11534 exit(0);
11535#endif
11536#ifdef O_NDELAY
11537 printf("O_NDELAY\n");
11538 exit(0);
11539#endif
11540#ifdef FNDELAY
11541 printf("FNDELAY\n");
11542 exit(0);
11543#endif
11544 exit(0);
11545}
11546EOCP
11547 set try
11548 if eval $compile_ok; then
5440bc8e 11549 o_nonblock=`$run ./try`
b4eb6b3d
JH
11550 case "$o_nonblock" in
11551 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11552 *) echo "Seems like we can use $o_nonblock.";;
11553 esac
11554 else
11555 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11556 fi
11557 ;;
11558*) echo "Using $hint value $o_nonblock.";;
11559esac
11560$rm -f try try.* .out core
11561
11562echo " "
11563echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11564case "$eagain" in
11565'')
11566 $cat head.c > try.c
11567 $cat >>try.c <<EOCP
11568#include <errno.h>
11569#include <sys/types.h>
11570#include <signal.h>
11571#include <stdio.h>
55954f19
JH
11572#$i_stdlib I_STDLIB
11573#ifdef I_STDLIB
11574#include <stdlib.h>
11575#endif
1deb0a86
JH
11576#$i_fcntl I_FCNTL
11577#ifdef I_FCNTL
11578#include <fcntl.h>
11579#endif
b4eb6b3d
JH
11580#define MY_O_NONBLOCK $o_nonblock
11581#ifndef errno /* XXX need better Configure test */
11582extern int errno;
11583#endif
11584#$i_unistd I_UNISTD
11585#ifdef I_UNISTD
11586#include <unistd.h>
11587#endif
11588#$i_string I_STRING
11589#ifdef I_STRING
11590#include <string.h>
11591#else
11592#include <strings.h>
11593#endif
11594$signal_t blech(x) int x; { exit(3); }
11595EOCP
11596 $cat >> try.c <<'EOCP'
11597int main()
11598{
11599 int pd[2];
11600 int pu[2];
11601 char buf[1];
11602 char string[100];
11603
11604 pipe(pd); /* Down: child -> parent */
11605 pipe(pu); /* Up: parent -> child */
11606 if (0 != fork()) {
11607 int ret;
11608 close(pd[1]); /* Parent reads from pd[0] */
11609 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 11610#ifdef F_SETFL
b4eb6b3d
JH
11611 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11612 exit(1);
a0acbdc3
JH
11613#else
11614 exit(4);
11615#endif
b4eb6b3d
JH
11616 signal(SIGALRM, blech);
11617 alarm(5);
11618 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11619 exit(2);
11620 sprintf(string, "%d\n", ret);
11621 write(2, string, strlen(string));
11622 alarm(0);
11623#ifdef EAGAIN
11624 if (errno == EAGAIN) {
11625 printf("EAGAIN\n");
11626 goto ok;
11627 }
11628#endif
11629#ifdef EWOULDBLOCK
11630 if (errno == EWOULDBLOCK)
11631 printf("EWOULDBLOCK\n");
11632#endif
11633 ok:
11634 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11635 sleep(2); /* Give it time to close our pipe */
11636 alarm(5);
11637 ret = read(pd[0], buf, 1); /* Should read EOF */
11638 alarm(0);
11639 sprintf(string, "%d\n", ret);
868439a2 11640 write(4, string, strlen(string));
b4eb6b3d
JH
11641 exit(0);
11642 }
11643
11644 close(pd[0]); /* We write to pd[1] */
11645 close(pu[1]); /* We read from pu[0] */
11646 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11647 close(pd[1]); /* Pipe pd is now fully closed! */
11648 exit(0); /* Bye bye, thank you for playing! */
11649}
11650EOCP
11651 set try
11652 if eval $compile_ok; then
11653 echo "$startsh" >mtry
868439a2 11654 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
11655 chmod +x mtry
11656 ./mtry >/dev/null 2>&1
11657 case $? in
11658 0) eagain=`$cat try.out`;;
11659 1) echo "Could not perform non-blocking setting!";;
11660 2) echo "I did a successful read() for something that was not there!";;
11661 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 11662 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
11663 *) echo "Something terribly wrong happened during testing.";;
11664 esac
11665 rd_nodata=`$cat try.ret`
11666 echo "A read() system call with no data present returns $rd_nodata."
11667 case "$rd_nodata" in
11668 0|-1) ;;
11669 *)
11670 echo "(That's peculiar, fixing that to be -1.)"
11671 rd_nodata=-1
11672 ;;
11673 esac
11674 case "$eagain" in
11675 '')
11676 echo "Forcing errno EAGAIN on read() with no data available."
11677 eagain=EAGAIN
11678 ;;
11679 *)
11680 echo "Your read() sets errno to $eagain when no data is available."
11681 ;;
11682 esac
11683 status=`$cat try.err`
11684 case "$status" in
11685 0) echo "And it correctly returns 0 to signal EOF.";;
11686 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11687 *) echo "However, your read() returns '$status' on EOF??";;
11688 esac
11689 val="$define"
11690 if test "$status" = "$rd_nodata"; then
11691 echo "WARNING: you can't distinguish between EOF and no data!"
11692 val="$undef"
11693 fi
11694 else
11695 echo "I can't compile the test program--assuming errno EAGAIN will do."
11696 eagain=EAGAIN
11697 fi
11698 set d_eofnblk
11699 eval $setvar
11700 ;;
11701*)
11702 echo "Using $hint value $eagain."
11703 echo "Your read() returns $rd_nodata when no data is present."
11704 case "$d_eofnblk" in
11705 "$define") echo "And you can see EOF because read() returns 0.";;
11706 "$undef") echo "But you can't see EOF status from read() returned value.";;
11707 *)
11708 echo "(Assuming you can't see EOF status from read anyway.)"
11709 d_eofnblk=$undef
11710 ;;
11711 esac
11712 ;;
11713esac
11714$rm -f try try.* .out core head.c mtry
11715
15b61c98
JH
11716: see if _ptr and _cnt from stdio act std
11717echo " "
b4eb6b3d 11718
15b61c98
JH
11719if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11720 echo "(Looks like you have stdio.h from BSD.)"
11721 case "$stdio_ptr" in
11722 '') stdio_ptr='((fp)->_p)'
11723 ptr_lval=$define
11724 ;;
11725 *) ptr_lval=$d_stdio_ptr_lval;;
11726 esac
11727 case "$stdio_cnt" in
11728 '') stdio_cnt='((fp)->_r)'
11729 cnt_lval=$define
11730 ;;
11731 *) cnt_lval=$d_stdio_cnt_lval;;
11732 esac
11733 case "$stdio_base" in
11734 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11735 esac
11736 case "$stdio_bufsiz" in
11737 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11738 esac
11739elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11740 echo "(Looks like you have stdio.h from Linux.)"
11741 case "$stdio_ptr" in
11742 '') stdio_ptr='((fp)->_IO_read_ptr)'
11743 ptr_lval=$define
11744 ;;
11745 *) ptr_lval=$d_stdio_ptr_lval;;
11746 esac
11747 case "$stdio_cnt" in
11748 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11749 cnt_lval=$undef
11750 ;;
11751 *) cnt_lval=$d_stdio_cnt_lval;;
11752 esac
11753 case "$stdio_base" in
11754 '') stdio_base='((fp)->_IO_read_base)';;
11755 esac
11756 case "$stdio_bufsiz" in
11757 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11758 esac
11759else
11760 case "$stdio_ptr" in
11761 '') stdio_ptr='((fp)->_ptr)'
11762 ptr_lval=$define
11763 ;;
11764 *) ptr_lval=$d_stdio_ptr_lval;;
11765 esac
11766 case "$stdio_cnt" in
11767 '') stdio_cnt='((fp)->_cnt)'
11768 cnt_lval=$define
11769 ;;
11770 *) cnt_lval=$d_stdio_cnt_lval;;
11771 esac
11772 case "$stdio_base" in
11773 '') stdio_base='((fp)->_base)';;
11774 esac
11775 case "$stdio_bufsiz" in
11776 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11777 esac
11778fi
b4eb6b3d 11779
15b61c98
JH
11780: test whether _ptr and _cnt really work
11781echo "Checking how std your stdio is..." >&4
11782$cat >try.c <<EOP
11783#include <stdio.h>
55954f19
JH
11784#$i_stdlib I_STDLIB
11785#ifdef I_STDLIB
9d9004a9 11786#include <stdlib.h>
55954f19 11787#endif
15b61c98
JH
11788#define FILE_ptr(fp) $stdio_ptr
11789#define FILE_cnt(fp) $stdio_cnt
9d9004a9 11790int main() {
15b61c98
JH
11791 FILE *fp = fopen("try.c", "r");
11792 char c = getc(fp);
11793 if (
11794 18 <= FILE_cnt(fp) &&
11795 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11796 )
11797 exit(0);
11798 exit(1);
9d9004a9 11799}
15b61c98
JH
11800EOP
11801val="$undef"
11802set try
11803if eval $compile && $to try.c; then
11804 if $run ./try; then
11805 echo "Your stdio acts pretty std."
11806 val="$define"
9d9004a9 11807 else
15b61c98 11808 echo "Your stdio isn't very std."
9d9004a9 11809 fi
15b61c98
JH
11810else
11811 echo "Your stdio doesn't appear very std."
11812fi
11813$rm -f try.c try
11814
11815# glibc 2.2.90 and above apparently change stdio streams so Perl's
11816# direct buffer manipulation no longer works. The Configure tests
11817# should be changed to correctly detect this, but until then,
11818# the following check should at least let perl compile and run.
11819# (This quick fix should be updated before 5.8.1.)
11820# To be defensive, reject all unknown versions, and all versions > 2.2.9.
11821# A. Dougherty, June 3, 2002.
11822case "$d_gnulibc" in
11823$define)
11824 case "$gnulibc_version" in
11825 2.[01]*) ;;
11826 2.2) ;;
11827 2.2.[0-9]) ;;
11828 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11829 val="$undef"
11830 ;;
11831 esac
9d9004a9
AD
11832 ;;
11833esac
15b61c98 11834set d_stdstdio
9d9004a9 11835eval $setvar
9d9004a9 11836
15b61c98
JH
11837: Can _ptr be used as an lvalue?
11838case "$d_stdstdio$ptr_lval" in
11839$define$define) val=$define ;;
11840*) val=$undef ;;
11841esac
11842set d_stdio_ptr_lval
11843eval $setvar
9d9004a9 11844
15b61c98
JH
11845: Can _cnt be used as an lvalue?
11846case "$d_stdstdio$cnt_lval" in
11847$define$define) val=$define ;;
11848*) val=$undef ;;
11849esac
11850set d_stdio_cnt_lval
11851eval $setvar
b4eb6b3d 11852
15b61c98
JH
11853
11854: test whether setting _ptr sets _cnt as a side effect
11855d_stdio_ptr_lval_sets_cnt="$undef"
11856d_stdio_ptr_lval_nochange_cnt="$undef"
11857case "$d_stdio_ptr_lval$d_stdstdio" in
11858$define$define)
11859 echo "Checking to see what happens if we set the stdio ptr..." >&4
11860$cat >try.c <<EOP
11861#include <stdio.h>
11862/* Can we scream? */
11863/* Eat dust sed :-) */
11864/* In the buffer space, no one can hear you scream. */
55954f19
JH
11865#$i_stdlib I_STDLIB
11866#ifdef I_STDLIB
11867#include <stdlib.h>
11868#endif
15b61c98
JH
11869#define FILE_ptr(fp) $stdio_ptr
11870#define FILE_cnt(fp) $stdio_cnt
b4eb6b3d 11871#include <sys/types.h>
b4eb6b3d 11872int main() {
15b61c98
JH
11873 FILE *fp = fopen("try.c", "r");
11874 int c;
11875 char *ptr;
11876 size_t cnt;
11877 if (!fp) {
11878 puts("Fail even to read");
11879 exit(1);
11880 }
11881 c = getc(fp); /* Read away the first # */
11882 if (c == EOF) {
11883 puts("Fail even to read");
11884 exit(1);
11885 }
11886 if (!(
11887 18 <= FILE_cnt(fp) &&
11888 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11889 )) {
11890 puts("Fail even to read");
11891 exit (1);
11892 }
11893 ptr = (char*) FILE_ptr(fp);
11894 cnt = (size_t)FILE_cnt(fp);
11895
11896 FILE_ptr(fp) += 42;
11897
11898 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11899 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11900 exit (1);
11901 }
11902 if (FILE_cnt(fp) <= 20) {
11903 printf ("Fail (<20 chars to test)");
11904 exit (1);
11905 }
11906 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11907 puts("Fail compare");
11908 exit (1);
11909 }
11910 if (cnt == FILE_cnt(fp)) {
11911 puts("Pass_unchanged");
11912 exit (0);
11913 }
11914 if (FILE_cnt(fp) == (cnt - 42)) {
11915 puts("Pass_changed");
11916 exit (0);
11917 }
11918 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11919 return 1;
11920
11921}
11922EOP
11923 set try
11924 if eval $compile && $to try.c; then
11925 case `$run ./try` in
11926 Pass_changed)
11927 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11928 d_stdio_ptr_lval_sets_cnt="$define" ;;
11929 Pass_unchanged)
11930 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11931 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11932 Fail*)
11933 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11934 *)
11935 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11936 esac
11937 else
11938 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11939 fi
11940 $rm -f try.c try
11941 ;;
11942esac
11943
11944: see if _base is also standard
11945val="$undef"
11946case "$d_stdstdio" in
11947$define)
11948 $cat >try.c <<EOP
11949#include <stdio.h>
11950#$i_stdlib I_STDLIB
11951#ifdef I_STDLIB
11952#include <stdlib.h>
11953#endif
11954#define FILE_base(fp) $stdio_base
11955#define FILE_bufsiz(fp) $stdio_bufsiz
11956int main() {
11957 FILE *fp = fopen("try.c", "r");
11958 char c = getc(fp);
11959 if (
11960 19 <= FILE_bufsiz(fp) &&
11961 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11962 )
11963 exit(0);
11964 exit(1);
11965}
11966EOP
11967 set try
11968 if eval $compile && $to try.c; then
11969 if $run ./try; then
11970 echo "And its _base field acts std."
11971 val="$define"
11972 else
11973 echo "But its _base field isn't std."
11974 fi
11975 else
11976 echo "However, it seems to be lacking the _base field."
11977 fi
11978 $rm -f try.c try
11979 ;;
11980esac
11981set d_stdiobase
11982eval $setvar
11983
11984: see if fast_stdio exists
11985val="$undef"
11986case "$d_stdstdio:$d_stdio_ptr_lval" in
11987"$define:$define")
11988 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11989 *$define*)
11990 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11991 val="$define"
11992 ;;
11993 esac
11994 ;;
11995esac
11996set d_faststdio
11997eval $setvar
11998
11999
12000
12001: see if fchdir exists
12002set fchdir d_fchdir
12003eval $inlibc
12004
12005: see if fchmod exists
12006set fchmod d_fchmod
12007eval $inlibc
12008
12009: see if fchown exists
12010set fchown d_fchown
12011eval $inlibc
12012
12013: see if this is an fcntl system
12014set fcntl d_fcntl
12015eval $inlibc
12016
12017echo " "
12018: See if fcntl-based locking works.
12019$cat >try.c <<EOCP
12020#$i_stdlib I_STDLIB
12021#ifdef I_STDLIB
12022#include <stdlib.h>
12023#endif
12024#include <unistd.h>
12025#include <fcntl.h>
12026#include <signal.h>
12027$signal_t blech(x) int x; { exit(3); }
12028int main() {
12029#if defined(F_SETLK) && defined(F_SETLKW)
12030 struct flock flock;
12031 int retval, fd;
12032 fd = open("try.c", O_RDONLY);
12033 flock.l_type = F_RDLCK;
12034 flock.l_whence = SEEK_SET;
12035 flock.l_start = flock.l_len = 0;
12036 signal(SIGALRM, blech);
12037 alarm(10);
12038 retval = fcntl(fd, F_SETLK, &flock);
12039 close(fd);
12040 (retval < 0 ? exit(2) : exit(0));
12041#else
12042 exit(2);
12043#endif
12044}
12045EOCP
12046echo "Checking if fcntl-based file locking works... "
12047case "$d_fcntl" in
12048"$define")
12049 set try
12050 if eval $compile_ok; then
12051 if $run ./try; then
12052 echo "Yes, it seems to work."
12053 val="$define"
12054 else
12055 echo "Nope, it didn't work."
12056 val="$undef"
12057 case "$?" in
12058 3) $cat >&4 <<EOM
12059***
12060*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12061*** This is (almost) impossible.
12062*** If your NFS lock daemons are not feeling well, something like
12063*** this may happen, please investigate. Cannot continue, aborting.
12064***
12065EOM
12066 exit 1
12067 ;;
12068 esac
12069 fi
12070 else
12071 echo "I'm unable to compile the test program, so I'll assume not."
12072 val="$undef"
12073 fi
12074 ;;
12075*) val="$undef";
12076 echo "Nope, since you don't even have fcntl()."
12077 ;;
12078esac
12079set d_fcntl_can_lock
12080eval $setvar
12081$rm -f try*
12082
12083
12084: check for fd_set items
12085$cat <<EOM
12086
12087Checking to see how well your C compiler handles fd_set and friends ...
12088EOM
12089$cat >try.c <<EOCP
12090#$i_stdlib I_STDLIB
12091#ifdef I_STDLIB
12092#include <stdlib.h>
12093#endif
12094#$i_systime I_SYS_TIME
12095#$i_sysselct I_SYS_SELECT
12096#$d_socket HAS_SOCKET
12097#include <sys/types.h>
12098#ifdef HAS_SOCKET
12099#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12100#endif
12101#ifdef I_SYS_TIME
12102#include <sys/time.h>
12103#endif
12104#ifdef I_SYS_SELECT
12105#include <sys/select.h>
12106#endif
12107int main() {
12108 fd_set fds;
12109
12110#ifdef TRYBITS
12111 if(fds.fds_bits);
12112#endif
12113
12114#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12115 exit(0);
12116#else
12117 exit(1);
12118#endif
12119}
12120EOCP
12121set try -DTRYBITS
12122if eval $compile; then
12123 d_fds_bits="$define"
12124 d_fd_set="$define"
12125 echo "Well, your system knows about the normal fd_set typedef..." >&4
12126 if $run ./try; then
b4eb6b3d
JH
12127 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12128 d_fd_macros="$define"
12129 else
12130 $cat >&4 <<'EOM'
12131but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12132EOM
12133 d_fd_macros="$undef"
12134 fi
12135else
12136 $cat <<'EOM'
12137Hmm, your compiler has some difficulty with fd_set. Checking further...
12138EOM
5440bc8e 12139 set try
b4eb6b3d
JH
12140 if eval $compile; then
12141 d_fds_bits="$undef"
12142 d_fd_set="$define"
12143 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 12144 if $run ./try; then
b4eb6b3d
JH
12145 echo "and you have the normal fd_set macros." >&4
12146 d_fd_macros="$define"
12147 else
12148 $cat <<'EOM'
12149but not the normal fd_set macros! Gross! More work for me...
12150EOM
12151 d_fd_macros="$undef"
12152 fi
12153 else
12154 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12155 d_fd_set="$undef"
12156 d_fds_bits="$undef"
12157 d_fd_macros="$undef"
12158 fi
12159fi
5440bc8e 12160$rm -f try try.*
b4eb6b3d
JH
12161
12162: see if fgetpos exists
12163set fgetpos d_fgetpos
12164eval $inlibc
12165
758a5d79
JH
12166: see if finite exists
12167set finite d_finite
12168eval $inlibc
12169
12170: see if finitel exists
12171set finitel d_finitel
12172eval $inlibc
12173
b4eb6b3d
JH
12174: see if flock exists
12175set flock d_flock
12176eval $inlibc
12177
2ef53570
JH
12178: see if prototype for flock is available
12179echo " "
12180set d_flockproto flock $i_sysfile sys/file.h
12181eval $hasproto
12182
b4eb6b3d
JH
12183: see if fork exists
12184set fork d_fork
12185eval $inlibc
12186
758a5d79
JH
12187: see if fp_class exists
12188set fp_class d_fp_class
12189eval $inlibc
12190
b4eb6b3d
JH
12191: see if pathconf exists
12192set pathconf d_pathconf
12193eval $inlibc
12194
12195: see if fpathconf exists
12196set fpathconf d_fpathconf
12197eval $inlibc
12198
758a5d79
JH
12199: see if fpclass exists
12200set fpclass d_fpclass
12201eval $inlibc
12202
12203: see if fpclassify exists
12204set fpclassify d_fpclassify
12205eval $inlibc
12206
12207: see if fpclassl exists
12208set fpclassl d_fpclassl
12209eval $inlibc
12210
b4eb6b3d
JH
12211
12212: check for fpos64_t
12213echo " "
12214echo "Checking to see if you have fpos64_t..." >&4
12215$cat >try.c <<EOCP
12216#include <stdio.h>
12217int main() { fpos64_t x = 7; }
12218EOCP
12219set try
12220if eval $compile; then
12221 val="$define"
12222 echo "You have fpos64_t."
12223else
12224 val="$undef"
12225 echo "You do not have fpos64_t."
12226 case "$fpossize" in
12227 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12228 esac
12229fi
12230$rm -f try.* try
12231set d_fpos64_t
12232eval $setvar
12233
12234: see if frexpl exists
12235set frexpl d_frexpl
12236eval $inlibc
12237
b4eb6b3d
JH
12238: see if this is a sys/param system
12239set sys/param.h i_sysparam
12240eval $inhdr
12241
12242: see if this is a sys/mount.h system
12243set sys/mount.h i_sysmount
12244eval $inhdr
12245
b4eb6b3d
JH
12246
12247echo " "
12248echo "Checking to see if your system supports struct fs_data..." >&4
12249set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12250eval $hasstruct
12251case "$d_fs_data_s" in
12252"$define") echo "Yes, it does." ;;
12253*) echo "No, it doesn't." ;;
12254esac
12255
12256: see if fseeko exists
12257set fseeko d_fseeko
12258eval $inlibc
12259case "$longsize" in
122608) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12261esac
12262
12263: see if fsetpos exists
12264set fsetpos d_fsetpos
12265eval $inlibc
12266
12267
12268: see if fstatfs exists
12269set fstatfs d_fstatfs
12270eval $inlibc
12271
12272
12273: see if statvfs exists
12274set statvfs d_statvfs
12275eval $inlibc
12276
12277: see if fstatvfs exists
12278set fstatvfs d_fstatvfs
12279eval $inlibc
12280
12281
411ab01c
JH
12282: see if fsync exists
12283set fsync d_fsync
12284eval $inlibc
12285
b4eb6b3d
JH
12286: see if ftello exists
12287set ftello d_ftello
12288eval $inlibc
12289case "$longsize" in
122908) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12291esac
12292
12293: see if getcwd exists
12294set getcwd d_getcwd
12295eval $inlibc
12296
12297: see if getespwnam exists
12298set getespwnam d_getespwnam
12299eval $inlibc
12300
12301
12302: see if getfsstat exists
12303set getfsstat d_getfsstat
12304eval $inlibc
12305
12306: see if getgrent exists
12307set getgrent d_getgrent
12308eval $inlibc
12309
10bc17b6
JH
12310: see if getgrent_r exists
12311set getgrent_r d_getgrent_r
12312eval $inlibc
12313case "$d_getgrent_r" in
12314"$define")
12315 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12316 case "$d_getgrent_r_proto:$usethreads" in
12317 ":define") d_getgrent_r_proto=define
a48ec845
JH
12318 set d_getgrent_r_proto getgrent_r $hdrs
12319 eval $hasproto ;;
12320 *) ;;
12321 esac
12322 case "$d_getgrent_r_proto" in
12323 define)
10bc17b6
JH
12324 case "$getgrent_r_proto" in
12325 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12326 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12327 esac
12328 case "$getgrent_r_proto" in
12329 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12330 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12331 esac
12332 case "$getgrent_r_proto" in
12333 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12334 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12335 esac
12336 case "$getgrent_r_proto" in
12337 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12338 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12339 esac
12340 case "$getgrent_r_proto" in
12341 ''|0) try='int getgrent_r(struct group*, char*, int);'
12342 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12343 esac
12344 case "$getgrent_r_proto" in
12345 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12346 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12347 esac
12348 case "$getgrent_r_proto" in
90e831dc 12349 ''|0) d_getgrent_r=undef
10bc17b6 12350 getgrent_r_proto=0
a48ec845 12351 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12352 * ) case "$getgrent_r_proto" in
12353 REENTRANT_PROTO*) ;;
12354 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12355 esac
12356 echo "Prototype: $try" ;;
12357 esac
12358 ;;
c18e646a
JH
12359 *) case "$usethreads" in
12360 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12361 esac
90e831dc
SB
12362 d_getgrent_r=undef
12363 getgrent_r_proto=0
c18e646a 12364 ;;
a48ec845
JH
12365 esac
12366 ;;
10bc17b6
JH
12367*) getgrent_r_proto=0
12368 ;;
12369esac
12370
12371: see if getgrgid_r exists
12372set getgrgid_r d_getgrgid_r
12373eval $inlibc
12374case "$d_getgrgid_r" in
12375"$define")
12376 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12377 case "$d_getgrgid_r_proto:$usethreads" in
12378 ":define") d_getgrgid_r_proto=define
a48ec845
JH
12379 set d_getgrgid_r_proto getgrgid_r $hdrs
12380 eval $hasproto ;;
12381 *) ;;
12382 esac
12383 case "$d_getgrgid_r_proto" in
12384 define)
10bc17b6
JH
12385 case "$getgrgid_r_proto" in
12386 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12387 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12388 esac
12389 case "$getgrgid_r_proto" in
12390 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12391 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12392 esac
12393 case "$getgrgid_r_proto" in
12394 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12395 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12396 esac
12397 case "$getgrgid_r_proto" in
12398 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12399 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12400 esac
12401 case "$getgrgid_r_proto" in
90e831dc 12402 ''|0) d_getgrgid_r=undef
10bc17b6 12403 getgrgid_r_proto=0
a48ec845 12404 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12405 * ) case "$getgrgid_r_proto" in
12406 REENTRANT_PROTO*) ;;
12407 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12408 esac
12409 echo "Prototype: $try" ;;
12410 esac
12411 ;;
c18e646a
JH
12412 *) case "$usethreads" in
12413 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12414 esac
90e831dc
SB
12415 d_getgrgid_r=undef
12416 getgrgid_r_proto=0
c18e646a 12417 ;;
a48ec845
JH
12418 esac
12419 ;;
10bc17b6
JH
12420*) getgrgid_r_proto=0
12421 ;;
12422esac
12423
12424: see if getgrnam_r exists
12425set getgrnam_r d_getgrnam_r
12426eval $inlibc
12427case "$d_getgrnam_r" in
12428"$define")
12429 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12430 case "$d_getgrnam_r_proto:$usethreads" in
12431 ":define") d_getgrnam_r_proto=define
a48ec845
JH
12432 set d_getgrnam_r_proto getgrnam_r $hdrs
12433 eval $hasproto ;;
12434 *) ;;
12435 esac
12436 case "$d_getgrnam_r_proto" in
12437 define)
10bc17b6
JH
12438 case "$getgrnam_r_proto" in
12439 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12440 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12441 esac
12442 case "$getgrnam_r_proto" in
12443 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12444 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12445 esac
12446 case "$getgrnam_r_proto" in
12447 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12448 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12449 esac
12450 case "$getgrnam_r_proto" in
12451 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12452 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12453 esac
12454 case "$getgrnam_r_proto" in
12455 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12456 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12457 esac
12458 case "$getgrnam_r_proto" in
90e831dc 12459 ''|0) d_getgrnam_r=undef
10bc17b6 12460 getgrnam_r_proto=0
a48ec845 12461 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12462 * ) case "$getgrnam_r_proto" in
12463 REENTRANT_PROTO*) ;;
12464 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12465 esac
12466 echo "Prototype: $try" ;;
12467 esac
12468 ;;
c18e646a
JH
12469 *) case "$usethreads" in
12470 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12471 esac
90e831dc
SB
12472 d_getgrnam_r=undef
12473 getgrnam_r_proto=0
c18e646a 12474 ;;
a48ec845
JH
12475 esac
12476 ;;
10bc17b6
JH
12477*) getgrnam_r_proto=0
12478 ;;
12479esac
12480
b4eb6b3d
JH
12481: see if gethostbyaddr exists
12482set gethostbyaddr d_gethbyaddr
12483eval $inlibc
12484
12485: see if gethostbyname exists
12486set gethostbyname d_gethbyname
12487eval $inlibc
12488
12489: see if gethostent exists
12490set gethostent d_gethent
12491eval $inlibc
12492
12493: see how we will look up host name
12494echo " "
12495call=''
12496if set gethostname val -f d_gethname; eval $csym; $val; then
12497 echo 'gethostname() found.' >&4
12498 d_gethname="$define"
12499 call=gethostname
12500fi
12501if set uname val -f d_uname; eval $csym; $val; then
12502 if ./xenix; then
12503 $cat <<'EOM'
12504uname() was found, but you're running xenix, and older versions of xenix
12505have a broken uname(). If you don't really know whether your xenix is old
12506enough to have a broken system call, use the default answer.
12507
12508EOM
12509 dflt=y
12510 case "$d_uname" in
12511 "$define") dflt=n;;
12512 esac
12513 rp='Is your uname() broken?'
12514 . ./myread
12515 case "$ans" in
12516 n*) d_uname="$define"; call=uname;;
12517 esac
12518 else
12519 echo 'uname() found.' >&4
12520 d_uname="$define"
12521 case "$call" in
12522 '') call=uname ;;
12523 esac
12524 fi
12525fi
12526case "$d_gethname" in
12527'') d_gethname="$undef";;
12528esac
12529case "$d_uname" in
12530'') d_uname="$undef";;
12531esac
12532case "$d_uname$d_gethname" in
12533*define*)
12534 dflt=n
12535 cat <<EOM
12536
12537Every now and then someone has a $call() that lies about the hostname
12538but can't be fixed for political or economic reasons. If you wish, I can
12539pretend $call() isn't there and maybe compute hostname at run-time
12540thanks to the '$phostname' command.
12541
12542EOM
12543 rp="Shall I ignore $call() from now on?"
12544 . ./myread
12545 case "$ans" in
12546 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12547 esac;;
12548esac
12549case "$phostname" in
12550'') aphostname='';;
12551*) case "$aphostname" in
12552 /*) ;;
12553 *) set X $phostname
12554 shift
12555 file=$1
12556 shift
12557 file=`./loc $file $file $pth`
12558 aphostname=`echo $file $*`
12559 ;;
12560 esac
12561 ;;
12562esac
12563case "$d_uname$d_gethname" in
12564*define*) ;;
12565*)
12566 case "$phostname" in
12567 '')
12568 echo "There will be no way for $package to get your hostname." >&4;;
12569 *)
12570 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12571 ;;
12572 esac;;
12573esac
12574case "$d_phostname" in
12575'') d_phostname="$undef";;
12576esac
12577
10bc17b6
JH
12578: see if gethostbyaddr_r exists
12579set gethostbyaddr_r d_gethostbyaddr_r
12580eval $inlibc
12581case "$d_gethostbyaddr_r" in
12582"$define")
12583 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12584 case "$d_gethostbyaddr_r_proto:$usethreads" in
12585 ":define") d_gethostbyaddr_r_proto=define
a48ec845
JH
12586 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12587 eval $hasproto ;;
12588 *) ;;
12589 esac
12590 case "$d_gethostbyaddr_r_proto" in
12591 define)
10bc17b6
JH
12592 case "$gethostbyaddr_r_proto" in
12593 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12594 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12595 esac
12596 case "$gethostbyaddr_r_proto" in
12597 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12598 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12599 esac
12600 case "$gethostbyaddr_r_proto" in
12601 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12602 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12603 esac
12604 case "$gethostbyaddr_r_proto" in
12605 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12606 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12607 esac
12608 case "$gethostbyaddr_r_proto" in
12609 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12610 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12611 esac
12612 case "$gethostbyaddr_r_proto" in
12613 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12614 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12615 esac
12616 case "$gethostbyaddr_r_proto" in
12617 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12618 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12619 esac
12620 case "$gethostbyaddr_r_proto" in
12621 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12622 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12623 esac
12624 case "$gethostbyaddr_r_proto" in
12625 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12626 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12627 esac
12628 case "$gethostbyaddr_r_proto" in
12629 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12630 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12631 esac
12632 case "$gethostbyaddr_r_proto" in
a845a0d4
JH
12633 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12634 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12635 esac
12636 case "$gethostbyaddr_r_proto" in
90e831dc 12637 ''|0) d_gethostbyaddr_r=undef
10bc17b6 12638 gethostbyaddr_r_proto=0
a48ec845 12639 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12640 * ) case "$gethostbyaddr_r_proto" in
12641 REENTRANT_PROTO*) ;;
12642 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12643 esac
12644 echo "Prototype: $try" ;;
12645 esac
12646 ;;
c18e646a
JH
12647 *) case "$usethreads" in
12648 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12649 esac
90e831dc
SB
12650 d_gethostbyaddr_r=undef
12651 gethostbyaddr_r_proto=0
c18e646a 12652 ;;
a48ec845
JH
12653 esac
12654 ;;
10bc17b6
JH
12655*) gethostbyaddr_r_proto=0
12656 ;;
12657esac
12658
12659: see if gethostbyname_r exists
12660set gethostbyname_r d_gethostbyname_r
12661eval $inlibc
12662case "$d_gethostbyname_r" in
12663"$define")
12664 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12665 case "$d_gethostbyname_r_proto:$usethreads" in
12666 ":define") d_gethostbyname_r_proto=define
a48ec845
JH
12667 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12668 eval $hasproto ;;
12669 *) ;;
12670 esac
12671 case "$d_gethostbyname_r_proto" in
12672 define)
10bc17b6
JH
12673 case "$gethostbyname_r_proto" in
12674 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12675 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12676 esac
12677 case "$gethostbyname_r_proto" in
12678 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12679 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12680 esac
12681 case "$gethostbyname_r_proto" in
12682 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12683 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12684 esac
12685 case "$gethostbyname_r_proto" in
90e831dc 12686 ''|0) d_gethostbyname_r=undef
10bc17b6 12687 gethostbyname_r_proto=0
a48ec845 12688 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12689 * ) case "$gethostbyname_r_proto" in
12690 REENTRANT_PROTO*) ;;
12691 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12692 esac
12693 echo "Prototype: $try" ;;
12694 esac
12695 ;;
c18e646a
JH
12696 *) case "$usethreads" in
12697 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12698 esac
90e831dc
SB
12699 d_gethostbyname_r=undef
12700 gethostbyname_r_proto=0
c18e646a 12701 ;;
a48ec845
JH
12702 esac
12703 ;;
10bc17b6
JH
12704*) gethostbyname_r_proto=0
12705 ;;
12706esac
12707
12708: see if gethostent_r exists
12709set gethostent_r d_gethostent_r
12710eval $inlibc
12711case "$d_gethostent_r" in
12712"$define")
12713 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12714 case "$d_gethostent_r_proto:$usethreads" in
12715 ":define") d_gethostent_r_proto=define
a48ec845
JH
12716 set d_gethostent_r_proto gethostent_r $hdrs
12717 eval $hasproto ;;
12718 *) ;;
12719 esac
12720 case "$d_gethostent_r_proto" in
12721 define)
10bc17b6
JH
12722 case "$gethostent_r_proto" in
12723 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12724 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12725 esac
12726 case "$gethostent_r_proto" in
12727 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12728 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12729 esac
12730 case "$gethostent_r_proto" in
12731 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12732 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12733 esac
12734 case "$gethostent_r_proto" in
12735 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12736 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12737 esac
12738 case "$gethostent_r_proto" in
12739 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12740 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12741 esac
12742 case "$gethostent_r_proto" in
12743 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12744 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12745 esac
12746 case "$gethostent_r_proto" in
90e831dc 12747 ''|0) d_gethostent_r=undef
10bc17b6 12748 gethostent_r_proto=0
a48ec845 12749 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12750 * ) case "$gethostent_r_proto" in
12751 REENTRANT_PROTO*) ;;
12752 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12753 esac
12754 echo "Prototype: $try" ;;
12755 esac
12756 ;;
c18e646a
JH
12757 *) case "$usethreads" in
12758 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12759 esac
90e831dc
SB
12760 d_gethostent_r=undef
12761 gethostent_r_proto=0
c18e646a 12762 ;;
a48ec845
JH
12763 esac
12764 ;;
10bc17b6
JH
12765*) gethostent_r_proto=0
12766 ;;
12767esac
b4eb6b3d
JH
12768
12769: see if prototypes for various gethostxxx netdb.h functions are available
12770echo " "
12771set d_gethostprotos gethostent $i_netdb netdb.h
12772eval $hasproto
12773
4e0554ec
JH
12774: see if getitimer exists
12775set getitimer d_getitimer
12776eval $inlibc
12777
b4eb6b3d
JH
12778: see if getlogin exists
12779set getlogin d_getlogin
12780eval $inlibc
12781
10bc17b6
JH
12782: see if getlogin_r exists
12783set getlogin_r d_getlogin_r
12784eval $inlibc
12785case "$d_getlogin_r" in
12786"$define")
12787 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
12788 case "$d_getlogin_r_proto:$usethreads" in
12789 ":define") d_getlogin_r_proto=define
a48ec845
JH
12790 set d_getlogin_r_proto getlogin_r $hdrs
12791 eval $hasproto ;;
12792 *) ;;
12793 esac
12794 case "$d_getlogin_r_proto" in
12795 define)
10bc17b6
JH
12796 case "$getlogin_r_proto" in
12797 ''|0) try='int getlogin_r(char*, size_t);'
12798 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12799 esac
12800 case "$getlogin_r_proto" in
12801 ''|0) try='int getlogin_r(char*, int);'
12802 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12803 esac
12804 case "$getlogin_r_proto" in
12805 ''|0) try='char* getlogin_r(char*, size_t);'
12806 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12807 esac
12808 case "$getlogin_r_proto" in
12809 ''|0) try='char* getlogin_r(char*, int);'
12810 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12811 esac
12812 case "$getlogin_r_proto" in
90e831dc 12813 ''|0) d_getlogin_r=undef
10bc17b6 12814 getlogin_r_proto=0
a48ec845 12815 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12816 * ) case "$getlogin_r_proto" in
12817 REENTRANT_PROTO*) ;;
12818 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12819 esac
12820 echo "Prototype: $try" ;;
12821 esac
12822 ;;
c18e646a
JH
12823 *) case "$usethreads" in
12824 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12825 esac
90e831dc
SB
12826 d_getlogin_r=undef
12827 getlogin_r_proto=0
c18e646a 12828 ;;
a48ec845
JH
12829 esac
12830 ;;
10bc17b6
JH
12831*) getlogin_r_proto=0
12832 ;;
12833esac
12834
b4eb6b3d
JH
12835: see if getmnt exists
12836set getmnt d_getmnt
12837eval $inlibc
12838
12839: see if getmntent exists
12840set getmntent d_getmntent
12841eval $inlibc
12842
12843: see if getnetbyaddr exists
12844set getnetbyaddr d_getnbyaddr
12845eval $inlibc
12846
12847: see if getnetbyname exists
12848set getnetbyname d_getnbyname
12849eval $inlibc
12850
12851: see if getnetent exists
12852set getnetent d_getnent
12853eval $inlibc
12854
10bc17b6
JH
12855: see if getnetbyaddr_r exists
12856set getnetbyaddr_r d_getnetbyaddr_r
12857eval $inlibc
12858case "$d_getnetbyaddr_r" in
12859"$define")
12860 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12861 case "$d_getnetbyaddr_r_proto:$usethreads" in
12862 ":define") d_getnetbyaddr_r_proto=define
a48ec845
JH
12863 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12864 eval $hasproto ;;
12865 *) ;;
12866 esac
12867 case "$d_getnetbyaddr_r_proto" in
12868 define)
10bc17b6
JH
12869 case "$getnetbyaddr_r_proto" in
12870 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12871 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12872 esac
12873 case "$getnetbyaddr_r_proto" in
12874 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12875 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12876 esac
12877 case "$getnetbyaddr_r_proto" in
12878 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12879 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12880 esac
12881 case "$getnetbyaddr_r_proto" in
12882 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12883 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12884 esac
12885 case "$getnetbyaddr_r_proto" in
12886 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12887 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12888 esac
12889 case "$getnetbyaddr_r_proto" in
12890 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12891 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12892 esac
12893 case "$getnetbyaddr_r_proto" in
12894 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12895 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12896 esac
12897 case "$getnetbyaddr_r_proto" in
a845a0d4
JH
12898 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12899 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12900 esac
12901 case "$getnetbyaddr_r_proto" in
90e831dc 12902 ''|0) d_getnetbyaddr_r=undef
10bc17b6 12903 getnetbyaddr_r_proto=0
a48ec845 12904 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12905 * ) case "$getnetbyaddr_r_proto" in
12906 REENTRANT_PROTO*) ;;
12907 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12908 esac
12909 echo "Prototype: $try" ;;
12910 esac
12911 ;;
c18e646a
JH
12912 *) case "$usethreads" in
12913 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12914 esac
90e831dc
SB
12915 d_getnetbyaddr_r=undef
12916 getnetbyaddr_r_proto=0
c18e646a 12917 ;;
a48ec845
JH
12918 esac
12919 ;;
10bc17b6
JH
12920*) getnetbyaddr_r_proto=0
12921 ;;
12922esac
12923
12924: see if getnetbyname_r exists
12925set getnetbyname_r d_getnetbyname_r
12926eval $inlibc
12927case "$d_getnetbyname_r" in
12928"$define")
12929 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12930 case "$d_getnetbyname_r_proto:$usethreads" in
12931 ":define") d_getnetbyname_r_proto=define
a48ec845
JH
12932 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12933 eval $hasproto ;;
12934 *) ;;
12935 esac
12936 case "$d_getnetbyname_r_proto" in
12937 define)
10bc17b6
JH
12938 case "$getnetbyname_r_proto" in
12939 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12940 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12941 esac
12942 case "$getnetbyname_r_proto" in
12943 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12944 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12945 esac
12946 case "$getnetbyname_r_proto" in
12947 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12948 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12949 esac
12950 case "$getnetbyname_r_proto" in
12951 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12952 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12953 esac
12954 case "$getnetbyname_r_proto" in
90e831dc 12955 ''|0) d_getnetbyname_r=undef
10bc17b6 12956 getnetbyname_r_proto=0
a48ec845 12957 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12958 * ) case "$getnetbyname_r_proto" in
12959 REENTRANT_PROTO*) ;;
12960 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12961 esac
12962 echo "Prototype: $try" ;;
12963 esac
12964 ;;
c18e646a
JH
12965 *) case "$usethreads" in
12966 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12967 esac
90e831dc
SB
12968 d_getnetbyname_r=undef
12969 getnetbyname_r_proto=0
c18e646a 12970 ;;
a48ec845
JH
12971 esac
12972 ;;
10bc17b6
JH
12973*) getnetbyname_r_proto=0
12974 ;;
12975esac
12976
12977: see if getnetent_r exists
12978set getnetent_r d_getnetent_r
12979eval $inlibc
12980case "$d_getnetent_r" in
12981"$define")
12982 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12983 case "$d_getnetent_r_proto:$usethreads" in
12984 ":define") d_getnetent_r_proto=define
a48ec845
JH
12985 set d_getnetent_r_proto getnetent_r $hdrs
12986 eval $hasproto ;;
12987 *) ;;
12988 esac
12989 case "$d_getnetent_r_proto" in
12990 define)
10bc17b6
JH
12991 case "$getnetent_r_proto" in
12992 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12993 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12994 esac
12995 case "$getnetent_r_proto" in
12996 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12997 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12998 esac
12999 case "$getnetent_r_proto" in
13000 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13001 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13002 esac
13003 case "$getnetent_r_proto" in
13004 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13005 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13006 esac
13007 case "$getnetent_r_proto" in
13008 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13009 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13010 esac
13011 case "$getnetent_r_proto" in
13012 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13013 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13014 esac
13015 case "$getnetent_r_proto" in
90e831dc 13016 ''|0) d_getnetent_r=undef
10bc17b6 13017 getnetent_r_proto=0
a48ec845 13018 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13019 * ) case "$getnetent_r_proto" in
13020 REENTRANT_PROTO*) ;;
13021 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13022 esac
13023 echo "Prototype: $try" ;;
13024 esac
13025 ;;
c18e646a
JH
13026 *) case "$usethreads" in
13027 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13028 esac
90e831dc
SB
13029 d_getnetent_r=undef
13030 getnetent_r_proto=0
c18e646a 13031 ;;
a48ec845
JH
13032 esac
13033 ;;
10bc17b6
JH
13034*) getnetent_r_proto=0
13035 ;;
13036esac
13037
b4eb6b3d
JH
13038: see if prototypes for various getnetxxx netdb.h functions are available
13039echo " "
13040set d_getnetprotos getnetent $i_netdb netdb.h
13041eval $hasproto
13042
0c0643d0
JH
13043: see if getpagesize exists
13044set getpagesize d_getpagsz
13045eval $inlibc
13046
b4eb6b3d
JH
13047
13048: see if getprotobyname exists
13049set getprotobyname d_getpbyname
13050eval $inlibc
13051
13052: see if getprotobynumber exists
13053set getprotobynumber d_getpbynumber
13054eval $inlibc
13055
13056: see if getprotoent exists
13057set getprotoent d_getpent
13058eval $inlibc
13059
13060: see if getpgid exists
13061set getpgid d_getpgid
13062eval $inlibc
13063
13064: see if getpgrp2 exists
13065set getpgrp2 d_getpgrp2
13066eval $inlibc
13067
13068: see if getppid exists
13069set getppid d_getppid
13070eval $inlibc
13071
13072: see if getpriority exists
13073set getpriority d_getprior
13074eval $inlibc
13075
10bc17b6
JH
13076: see if getprotobyname_r exists
13077set getprotobyname_r d_getprotobyname_r
13078eval $inlibc
13079case "$d_getprotobyname_r" in
13080"$define")
13081 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13082 case "$d_getprotobyname_r_proto:$usethreads" in
13083 ":define") d_getprotobyname_r_proto=define
a48ec845
JH
13084 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13085 eval $hasproto ;;
13086 *) ;;
13087 esac
13088 case "$d_getprotobyname_r_proto" in
13089 define)
10bc17b6
JH
13090 case "$getprotobyname_r_proto" in
13091 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13092 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13093 esac
13094 case "$getprotobyname_r_proto" in
13095 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13096 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13097 esac
13098 case "$getprotobyname_r_proto" in
13099 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13100 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13101 esac
13102 case "$getprotobyname_r_proto" in
90e831dc 13103 ''|0) d_getprotobyname_r=undef
10bc17b6 13104 getprotobyname_r_proto=0
a48ec845 13105 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13106 * ) case "$getprotobyname_r_proto" in
13107 REENTRANT_PROTO*) ;;
13108 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13109 esac
13110 echo "Prototype: $try" ;;
13111 esac
13112 ;;
c18e646a
JH
13113 *) case "$usethreads" in
13114 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13115 esac
90e831dc
SB
13116 d_getprotobyname_r=undef
13117 getprotobyname_r_proto=0
c18e646a 13118 ;;
a48ec845
JH
13119 esac
13120 ;;
10bc17b6
JH
13121*) getprotobyname_r_proto=0
13122 ;;
13123esac
13124
13125: see if getprotobynumber_r exists
13126set getprotobynumber_r d_getprotobynumber_r
13127eval $inlibc
13128case "$d_getprotobynumber_r" in
13129"$define")
13130 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13131 case "$d_getprotobynumber_r_proto:$usethreads" in
13132 ":define") d_getprotobynumber_r_proto=define
a48ec845
JH
13133 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13134 eval $hasproto ;;
13135 *) ;;
13136 esac
13137 case "$d_getprotobynumber_r_proto" in
13138 define)
10bc17b6
JH
13139 case "$getprotobynumber_r_proto" in
13140 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13141 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13142 esac
13143 case "$getprotobynumber_r_proto" in
13144 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13145 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13146 esac
13147 case "$getprotobynumber_r_proto" in
13148 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13149 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13150 esac
13151 case "$getprotobynumber_r_proto" in
90e831dc 13152 ''|0) d_getprotobynumber_r=undef
10bc17b6 13153 getprotobynumber_r_proto=0
a48ec845 13154 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13155 * ) case "$getprotobynumber_r_proto" in
13156 REENTRANT_PROTO*) ;;
13157 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13158 esac
13159 echo "Prototype: $try" ;;
13160 esac
13161 ;;
c18e646a
JH
13162 *) case "$usethreads" in
13163 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13164 esac
90e831dc
SB
13165 d_getprotobynumber_r=undef
13166 getprotobynumber_r_proto=0
c18e646a 13167 ;;
a48ec845
JH
13168 esac
13169 ;;
10bc17b6
JH
13170*) getprotobynumber_r_proto=0
13171 ;;
13172esac
13173
13174: see if getprotoent_r exists
13175set getprotoent_r d_getprotoent_r
13176eval $inlibc
13177case "$d_getprotoent_r" in
13178"$define")
13179 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13180 case "$d_getprotoent_r_proto:$usethreads" in
13181 ":define") d_getprotoent_r_proto=define
a48ec845
JH
13182 set d_getprotoent_r_proto getprotoent_r $hdrs
13183 eval $hasproto ;;
13184 *) ;;
13185 esac
13186 case "$d_getprotoent_r_proto" in
13187 define)
10bc17b6
JH
13188 case "$getprotoent_r_proto" in
13189 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13190 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13191 esac
13192 case "$getprotoent_r_proto" in
13193 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13194 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13195 esac
13196 case "$getprotoent_r_proto" in
13197 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13198 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13199 esac
13200 case "$getprotoent_r_proto" in
13201 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13202 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13203 esac
13204 case "$getprotoent_r_proto" in
90e831dc 13205 ''|0) d_getprotoent_r=undef
10bc17b6 13206 getprotoent_r_proto=0
a48ec845 13207 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13208 * ) case "$getprotoent_r_proto" in
13209 REENTRANT_PROTO*) ;;
13210 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13211 esac
13212 echo "Prototype: $try" ;;
13213 esac
13214 ;;
c18e646a
JH
13215 *) case "$usethreads" in
13216 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13217 esac
90e831dc
SB
13218 d_getprotoent_r=undef
13219 getprotoent_r_proto=0
c18e646a 13220 ;;
a48ec845
JH
13221 esac
13222 ;;
10bc17b6
JH
13223*) getprotoent_r_proto=0
13224 ;;
13225esac
13226
b4eb6b3d
JH
13227: see if prototypes for various getprotoxxx netdb.h functions are available
13228echo " "
13229set d_getprotoprotos getprotoent $i_netdb netdb.h
13230eval $hasproto
13231
13232: see if getprpwnam exists
13233set getprpwnam d_getprpwnam
13234eval $inlibc
13235
13236: see if getpwent exists
13237set getpwent d_getpwent
13238eval $inlibc
13239
10bc17b6
JH
13240: see if getpwent_r exists
13241set getpwent_r d_getpwent_r
13242eval $inlibc
13243case "$d_getpwent_r" in
13244"$define")
13245 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13246 case "$d_getpwent_r_proto:$usethreads" in
13247 ":define") d_getpwent_r_proto=define
a48ec845
JH
13248 set d_getpwent_r_proto getpwent_r $hdrs
13249 eval $hasproto ;;
13250 *) ;;
13251 esac
13252 case "$d_getpwent_r_proto" in
13253 define)
10bc17b6
JH
13254 case "$getpwent_r_proto" in
13255 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13256 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13257 esac
13258 case "$getpwent_r_proto" in
13259 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13260 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13261 esac
13262 case "$getpwent_r_proto" in
13263 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13264 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13265 esac
13266 case "$getpwent_r_proto" in
13267 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13268 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13269 esac
13270 case "$getpwent_r_proto" in
13271 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13272 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13273 esac
13274 case "$getpwent_r_proto" in
13275 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13276 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13277 esac
13278 case "$getpwent_r_proto" in
90e831dc 13279 ''|0) d_getpwent_r=undef
10bc17b6 13280 getpwent_r_proto=0
a48ec845 13281 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13282 * ) case "$getpwent_r_proto" in
13283 REENTRANT_PROTO*) ;;
13284 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13285 esac
13286 echo "Prototype: $try" ;;
13287 esac
13288 ;;
c18e646a
JH
13289 *) case "$usethreads" in
13290 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13291 esac
90e831dc
SB
13292 d_getpwent_r=undef
13293 getpwent_r_proto=0
c18e646a 13294 ;;
a48ec845
JH
13295 esac
13296 ;;
10bc17b6
JH
13297*) getpwent_r_proto=0
13298 ;;
13299esac
13300
13301: see if getpwnam_r exists
13302set getpwnam_r d_getpwnam_r
13303eval $inlibc
13304case "$d_getpwnam_r" in
13305"$define")
13306 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13307 case "$d_getpwnam_r_proto:$usethreads" in
13308 ":define") d_getpwnam_r_proto=define
a48ec845
JH
13309 set d_getpwnam_r_proto getpwnam_r $hdrs
13310 eval $hasproto ;;
13311 *) ;;
13312 esac
13313 case "$d_getpwnam_r_proto" in
13314 define)
10bc17b6
JH
13315 case "$getpwnam_r_proto" in
13316 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13317 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13318 esac
13319 case "$getpwnam_r_proto" in
13320 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13321 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13322 esac
13323 case "$getpwnam_r_proto" in
13324 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13325 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13326 esac
13327 case "$getpwnam_r_proto" in
13328 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13329 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13330 esac
13331 case "$getpwnam_r_proto" in
90e831dc 13332 ''|0) d_getpwnam_r=undef
10bc17b6 13333 getpwnam_r_proto=0
a48ec845 13334 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13335 * ) case "$getpwnam_r_proto" in
13336 REENTRANT_PROTO*) ;;
13337 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13338 esac
13339 echo "Prototype: $try" ;;
13340 esac
13341 ;;
c18e646a
JH
13342 *) case "$usethreads" in
13343 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13344 esac
90e831dc
SB
13345 d_getpwnam_r=undef
13346 getpwnam_r_proto=0
c18e646a 13347 ;;
a48ec845
JH
13348 esac
13349 ;;
10bc17b6
JH
13350*) getpwnam_r_proto=0
13351 ;;
13352esac
13353
13354: see if getpwuid_r exists
13355set getpwuid_r d_getpwuid_r
13356eval $inlibc
13357case "$d_getpwuid_r" in
13358"$define")
13359 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13360 case "$d_getpwuid_r_proto:$usethreads" in
13361 ":define") d_getpwuid_r_proto=define
a48ec845
JH
13362 set d_getpwuid_r_proto getpwuid_r $hdrs
13363 eval $hasproto ;;
13364 *) ;;
13365 esac
13366 case "$d_getpwuid_r_proto" in
13367 define)
10bc17b6
JH
13368 case "$getpwuid_r_proto" in
13369 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13370 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13371 esac
13372 case "$getpwuid_r_proto" in
13373 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13374 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13375 esac
13376 case "$getpwuid_r_proto" in
13377 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13378 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13379 esac
13380 case "$getpwuid_r_proto" in
13381 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13382 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13383 esac
13384 case "$getpwuid_r_proto" in
90e831dc 13385 ''|0) d_getpwuid_r=undef
10bc17b6 13386 getpwuid_r_proto=0
a48ec845 13387 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13388 * ) case "$getpwuid_r_proto" in
13389 REENTRANT_PROTO*) ;;
13390 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13391 esac
13392 echo "Prototype: $try" ;;
13393 esac
13394 ;;
c18e646a
JH
13395 *) case "$usethreads" in
13396 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13397 esac
90e831dc
SB
13398 d_getpwuid_r=undef
13399 getpwuid_r_proto=0
c18e646a 13400 ;;
a48ec845
JH
13401 esac
13402 ;;
10bc17b6
JH
13403*) getpwuid_r_proto=0
13404 ;;
13405esac
13406
b4eb6b3d
JH
13407
13408: see if getservbyname exists
13409set getservbyname d_getsbyname
13410eval $inlibc
13411
13412: see if getservbyport exists
13413set getservbyport d_getsbyport
13414eval $inlibc
13415
13416: see if getservent exists
13417set getservent d_getsent
13418eval $inlibc
13419
10bc17b6
JH
13420: see if getservbyname_r exists
13421set getservbyname_r d_getservbyname_r
13422eval $inlibc
13423case "$d_getservbyname_r" in
13424"$define")
13425 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13426 case "$d_getservbyname_r_proto:$usethreads" in
13427 ":define") d_getservbyname_r_proto=define
a48ec845
JH
13428 set d_getservbyname_r_proto getservbyname_r $hdrs
13429 eval $hasproto ;;
13430 *) ;;
13431 esac
13432 case "$d_getservbyname_r_proto" in
13433 define)
10bc17b6
JH
13434 case "$getservbyname_r_proto" in
13435 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13436 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13437 esac
13438 case "$getservbyname_r_proto" in
13439 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13440 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13441 esac
13442 case "$getservbyname_r_proto" in
13443 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13444 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13445 esac
13446 case "$getservbyname_r_proto" in
90e831dc 13447 ''|0) d_getservbyname_r=undef
10bc17b6 13448 getservbyname_r_proto=0
a48ec845 13449 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13450 * ) case "$getservbyname_r_proto" in
13451 REENTRANT_PROTO*) ;;
13452 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13453 esac
13454 echo "Prototype: $try" ;;
13455 esac
13456 ;;
c18e646a
JH
13457 *) case "$usethreads" in
13458 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13459 esac
90e831dc
SB
13460 d_getservbyname_r=undef
13461 getservbyname_r_proto=0
c18e646a 13462 ;;
a48ec845
JH
13463 esac
13464 ;;
10bc17b6
JH
13465*) getservbyname_r_proto=0
13466 ;;
13467esac
13468
13469: see if getservbyport_r exists
13470set getservbyport_r d_getservbyport_r
13471eval $inlibc
13472case "$d_getservbyport_r" in
13473"$define")
13474 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13475 case "$d_getservbyport_r_proto:$usethreads" in
13476 ":define") d_getservbyport_r_proto=define
a48ec845
JH
13477 set d_getservbyport_r_proto getservbyport_r $hdrs
13478 eval $hasproto ;;
13479 *) ;;
13480 esac
13481 case "$d_getservbyport_r_proto" in
13482 define)
10bc17b6
JH
13483 case "$getservbyport_r_proto" in
13484 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13485 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13486 esac
13487 case "$getservbyport_r_proto" in
13488 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13489 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13490 esac
13491 case "$getservbyport_r_proto" in
13492 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13493 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13494 esac
13495 case "$getservbyport_r_proto" in
90e831dc 13496 ''|0) d_getservbyport_r=undef
10bc17b6 13497 getservbyport_r_proto=0
a48ec845 13498 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13499 * ) case "$getservbyport_r_proto" in
13500 REENTRANT_PROTO*) ;;
13501 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13502 esac
13503 echo "Prototype: $try" ;;
13504 esac
13505 ;;
c18e646a
JH
13506 *) case "$usethreads" in
13507 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13508 esac
90e831dc
SB
13509 d_getservbyport_r=undef
13510 getservbyport_r_proto=0
c18e646a 13511 ;;
a48ec845
JH
13512 esac
13513 ;;
10bc17b6
JH
13514*) getservbyport_r_proto=0
13515 ;;
13516esac
13517
13518: see if getservent_r exists
13519set getservent_r d_getservent_r
13520eval $inlibc
13521case "$d_getservent_r" in
13522"$define")
13523 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13524 case "$d_getservent_r_proto:$usethreads" in
13525 ":define") d_getservent_r_proto=define
a48ec845
JH
13526 set d_getservent_r_proto getservent_r $hdrs
13527 eval $hasproto ;;
13528 *) ;;
13529 esac
13530 case "$d_getservent_r_proto" in
13531 define)
10bc17b6
JH
13532 case "$getservent_r_proto" in
13533 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13534 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13535 esac
13536 case "$getservent_r_proto" in
13537 ''|0) try='int getservent_r(struct servent*, char*, int);'
13538 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13539 esac
13540 case "$getservent_r_proto" in
13541 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13542 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13543 esac
13544 case "$getservent_r_proto" in
13545 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13546 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13547 esac
13548 case "$getservent_r_proto" in
90e831dc 13549 ''|0) d_getservent_r=undef
10bc17b6 13550 getservent_r_proto=0
a48ec845 13551 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13552 * ) case "$getservent_r_proto" in
13553 REENTRANT_PROTO*) ;;
13554 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13555 esac
13556 echo "Prototype: $try" ;;
13557 esac
13558 ;;
c18e646a
JH
13559 *) case "$usethreads" in
13560 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13561 esac
90e831dc
SB
13562 d_getservent_r=undef
13563 getservent_r_proto=0
c18e646a 13564 ;;
a48ec845
JH
13565 esac
13566 ;;
10bc17b6
JH
13567*) getservent_r_proto=0
13568 ;;
13569esac
13570
b4eb6b3d
JH
13571: see if prototypes for various getservxxx netdb.h functions are available
13572echo " "
13573set d_getservprotos getservent $i_netdb netdb.h
13574eval $hasproto
13575
13576: see if getspnam exists
13577set getspnam d_getspnam
13578eval $inlibc
13579
10bc17b6
JH
13580: see if this is a shadow.h system
13581set shadow.h i_shadow
13582eval $inhdr
13583
13584: see if getspnam_r exists
13585set getspnam_r d_getspnam_r
13586eval $inlibc
13587case "$d_getspnam_r" in
13588"$define")
13589 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
c18e646a
JH
13590 case "$d_getspnam_r_proto:$usethreads" in
13591 ":define") d_getspnam_r_proto=define
a48ec845
JH
13592 set d_getspnam_r_proto getspnam_r $hdrs
13593 eval $hasproto ;;
13594 *) ;;
13595 esac
13596 case "$d_getspnam_r_proto" in
13597 define)
10bc17b6
JH
13598 case "$getspnam_r_proto" in
13599 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13600 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13601 esac
13602 case "$getspnam_r_proto" in
13603 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13604 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13605 esac
13606 case "$getspnam_r_proto" in
90e831dc 13607 ''|0) d_getspnam_r=undef
10bc17b6 13608 getspnam_r_proto=0
a48ec845 13609 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13610 * ) case "$getspnam_r_proto" in
13611 REENTRANT_PROTO*) ;;
13612 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13613 esac
13614 echo "Prototype: $try" ;;
13615 esac
13616 ;;
c18e646a
JH
13617 *) case "$usethreads" in
13618 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13619 esac
90e831dc
SB
13620 d_getspnam_r=undef
13621 getspnam_r_proto=0
c18e646a 13622 ;;
a48ec845
JH
13623 esac
13624 ;;
10bc17b6
JH
13625*) getspnam_r_proto=0
13626 ;;
13627esac
13628
b4eb6b3d
JH
13629: see if gettimeofday or ftime exists
13630set gettimeofday d_gettimeod
13631eval $inlibc
13632case "$d_gettimeod" in
13633"$undef")
13634 set ftime d_ftime
13635 eval $inlibc
13636 ;;
13637*)
13638 val="$undef"; set d_ftime; eval $setvar
13639 ;;
13640esac
13641case "$d_gettimeod$d_ftime" in
13642"$undef$undef")
13643 echo " "
13644 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13645 ;;
13646esac
13647
10bc17b6
JH
13648: see if gmtime_r exists
13649set gmtime_r d_gmtime_r
13650eval $inlibc
13651case "$d_gmtime_r" in
13652"$define")
d63eadf0 13653 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13654 case "$d_gmtime_r_proto:$usethreads" in
13655 ":define") d_gmtime_r_proto=define
a48ec845
JH
13656 set d_gmtime_r_proto gmtime_r $hdrs
13657 eval $hasproto ;;
13658 *) ;;
13659 esac
13660 case "$d_gmtime_r_proto" in
13661 define)
10bc17b6
JH
13662 case "$gmtime_r_proto" in
13663 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13664 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13665 esac
13666 case "$gmtime_r_proto" in
13667 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13668 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13669 esac
13670 case "$gmtime_r_proto" in
90e831dc 13671 ''|0) d_gmtime_r=undef
10bc17b6 13672 gmtime_r_proto=0
a48ec845 13673 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13674 * ) case "$gmtime_r_proto" in
13675 REENTRANT_PROTO*) ;;
13676 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13677 esac
13678 echo "Prototype: $try" ;;
13679 esac
b4eb6b3d 13680 ;;
c18e646a
JH
13681 *) case "$usethreads" in
13682 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13683 esac
90e831dc
SB
13684 d_gmtime_r=undef
13685 gmtime_r_proto=0
c18e646a 13686 ;;
a48ec845
JH
13687 esac
13688 ;;
10bc17b6 13689*) gmtime_r_proto=0
b4eb6b3d
JH
13690 ;;
13691esac
13692
13693: see if hasmntopt exists
13694set hasmntopt d_hasmntopt
13695eval $inlibc
13696
13697: see if this is a netinet/in.h or sys/in.h system
13698set netinet/in.h i_niin sys/in.h i_sysin
13699eval $inhdr
13700
13701: see if arpa/inet.h has to be included
13702set arpa/inet.h i_arpainet
13703eval $inhdr
13704
13705: see if htonl --and friends-- exists
13706val=''
13707set htonl val
13708eval $inlibc
13709
13710: Maybe they are macros.
13711case "$val" in
13712$undef)
13713 $cat >htonl.c <<EOM
13714#include <stdio.h>
13715#include <sys/types.h>
13716#$i_niin I_NETINET_IN
13717#$i_sysin I_SYS_IN
13718#$i_arpainet I_ARPA_INET
13719#ifdef I_NETINET_IN
13720#include <netinet/in.h>
13721#endif
13722#ifdef I_SYS_IN
13723#include <sys/in.h>
13724#endif
13725#ifdef I_ARPA_INET
13726#include <arpa/inet.h>
13727#endif
13728#ifdef htonl
13729printf("Defined as a macro.");
13730#endif
13731EOM
13732 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13733 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13734 val="$define"
13735 echo "But it seems to be defined as a macro." >&4
13736 fi
13737 $rm -f htonl.?
13738 ;;
13739esac
13740set d_htonl
13741eval $setvar
13742
36adc09b
JH
13743: see if ilogbl exists
13744set ilogbl d_ilogbl
13745eval $inlibc
13746
b4eb6b3d
JH
13747: index or strchr
13748echo " "
13749if set index val -f; eval $csym; $val; then
13750 if set strchr val -f d_strchr; eval $csym; $val; then
13751 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13752 val="$define"
13753 vali="$undef"
13754 echo "strchr() found." >&4
13755 else
13756 val="$undef"
13757 vali="$define"
13758 echo "index() found." >&4
13759 fi
13760 else
13761 val="$undef"
13762 vali="$define"
8dfa8df9
JH
13763 echo "index() found." >&4
13764 fi
b4eb6b3d 13765else
8dfa8df9
JH
13766 if set strchr val -f d_strchr; eval $csym; $val; then
13767 val="$define"
13768 vali="$undef"
13769 echo "strchr() found." >&4
13770 else
13771 echo "No index() or strchr() found!" >&4
13772 val="$undef"
13773 vali="$undef"
13774 fi
b4eb6b3d 13775fi
8dfa8df9
JH
13776set d_strchr; eval $setvar
13777val="$vali"
13778set d_index; eval $setvar
13779
13780: check whether inet_aton exists
13781set inet_aton d_inetaton
13782eval $inlibc
b4eb6b3d
JH
13783
13784: Look for isascii
13785echo " "
36adc09b 13786$cat >isascii.c <<EOCP
b4eb6b3d
JH
13787#include <stdio.h>
13788#include <ctype.h>
55954f19
JH
13789#$i_stdlib I_STDLIB
13790#ifdef I_STDLIB
13791#include <stdlib.h>
13792#endif
b4eb6b3d
JH
13793int main() {
13794 int c = 'A';
13795 if (isascii(c))
13796 exit(0);
13797 else
13798 exit(1);
13799}
13800EOCP
13801set isascii
13802if eval $compile; then
13803 echo "isascii() found." >&4
13804 val="$define"
13805else
13806 echo "isascii() NOT found." >&4
13807 val="$undef"
13808fi
13809set d_isascii
13810eval $setvar
13811$rm -f isascii*
13812
758a5d79
JH
13813: see if isfinite exists
13814set isfinite d_isfinite
13815eval $inlibc
13816
13817: see if isinf exists
13818set isinf d_isinf
13819eval $inlibc
13820
b4eb6b3d
JH
13821: see if isnan exists
13822set isnan d_isnan
13823eval $inlibc
13824
13825: see if isnanl exists
13826set isnanl d_isnanl
13827eval $inlibc
13828
13829: see if killpg exists
13830set killpg d_killpg
13831eval $inlibc
13832
13833: see if lchown exists
13834echo " "
13835$cat > try.c <<'EOCP'
13836/* System header to define __stub macros and hopefully few prototypes,
13837 which can conflict with char lchown(); below. */
13838#include <assert.h>
13839/* Override any gcc2 internal prototype to avoid an error. */
13840/* We use char because int might match the return type of a gcc2
13841 builtin and then its argument prototype would still apply. */
13842char lchown();
13843int main() {
13844 /* The GNU C library defines this for functions which it implements
13845 to always fail with ENOSYS. Some functions are actually named
13846 something starting with __ and the normal name is an alias. */
13847#if defined (__stub_lchown) || defined (__stub___lchown)
13848choke me
13849#else
13850lchown();
13851#endif
13852; return 0; }
13853EOCP
13854set try
13855if eval $compile; then
13856 $echo "lchown() found." >&4
13857 val="$define"
13858else
13859 $echo "lchown() NOT found." >&4
13860 val="$undef"
13861fi
13862set d_lchown
13863eval $setvar
13864
13865: See if number of significant digits in a double precision number is known
13866echo " "
13867$cat >ldbl_dig.c <<EOM
13868#$i_limits I_LIMITS
13869#$i_float I_FLOAT
13870#ifdef I_LIMITS
13871#include <limits.h>
13872#endif
13873#ifdef I_FLOAT
13874#include <float.h>
13875#endif
13876#ifdef LDBL_DIG
13877printf("Contains LDBL_DIG");
13878#endif
13879EOM
13880$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13881if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13882 echo "LDBL_DIG found." >&4
13883 val="$define"
13884else
13885 echo "LDBL_DIG NOT found." >&4
13886 val="$undef"
13887fi
13888$rm -f ldbl_dig.?
13889set d_ldbl_dig
13890eval $setvar
13891
13892: see if link exists
13893set link d_link
13894eval $inlibc
13895
10bc17b6
JH
13896: see if localtime_r exists
13897set localtime_r d_localtime_r
13898eval $inlibc
13899case "$d_localtime_r" in
13900"$define")
d63eadf0 13901 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13902 case "$d_localtime_r_proto:$usethreads" in
13903 ":define") d_localtime_r_proto=define
a48ec845
JH
13904 set d_localtime_r_proto localtime_r $hdrs
13905 eval $hasproto ;;
13906 *) ;;
13907 esac
13908 case "$d_localtime_r_proto" in
13909 define)
10bc17b6
JH
13910 case "$localtime_r_proto" in
13911 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13912 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13913 esac
13914 case "$localtime_r_proto" in
13915 ''|0) try='int localtime_r(const time_t*, struct tm*);'
13916 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13917 esac
13918 case "$localtime_r_proto" in
90e831dc 13919 ''|0) d_localtime_r=undef
10bc17b6 13920 localtime_r_proto=0
a48ec845 13921 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13922 * ) case "$localtime_r_proto" in
13923 REENTRANT_PROTO*) ;;
13924 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13925 esac
13926 echo "Prototype: $try" ;;
13927 esac
13928 ;;
c18e646a
JH
13929 *) case "$usethreads" in
13930 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13931 esac
90e831dc
SB
13932 d_localtime_r=undef
13933 localtime_r_proto=0
c18e646a 13934 ;;
a48ec845
JH
13935 esac
13936 ;;
10bc17b6
JH
13937*) localtime_r_proto=0
13938 ;;
13939esac
13940
b4eb6b3d
JH
13941: see if localeconv exists
13942set localeconv d_locconv
13943eval $inlibc
13944
13945: see if lockf exists
13946set lockf d_lockf
13947eval $inlibc
13948
b4eb6b3d
JH
13949: see if prototype for lseek is available
13950echo " "
4786929f 13951set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
13952eval $hasproto
13953
13954: see if lstat exists
13955set lstat d_lstat
13956eval $inlibc
13957
13958: see if madvise exists
13959set madvise d_madvise
13960eval $inlibc
13961
13962: see if mblen exists
13963set mblen d_mblen
13964eval $inlibc
13965
13966: see if mbstowcs exists
13967set mbstowcs d_mbstowcs
13968eval $inlibc
13969
13970: see if mbtowc exists
13971set mbtowc d_mbtowc
13972eval $inlibc
13973
13974: see if memchr exists
13975set memchr d_memchr
13976eval $inlibc
13977
13978: see if memcmp exists
13979set memcmp d_memcmp
13980eval $inlibc
13981
13982: see if memcpy exists
13983set memcpy d_memcpy
13984eval $inlibc
13985
13986: see if memmove exists
13987set memmove d_memmove
13988eval $inlibc
13989
13990: see if memset exists
13991set memset d_memset
13992eval $inlibc
13993
13994: see if mkdir exists
13995set mkdir d_mkdir
13996eval $inlibc
13997
13998: see if mkdtemp exists
13999set mkdtemp d_mkdtemp
14000eval $inlibc
14001
14002: see if mkfifo exists
14003set mkfifo d_mkfifo
14004eval $inlibc
14005
14006: see if mkstemp exists
14007set mkstemp d_mkstemp
14008eval $inlibc
14009
14010: see if mkstemps exists
14011set mkstemps d_mkstemps
14012eval $inlibc
14013
14014: see if mktime exists
14015set mktime d_mktime
14016eval $inlibc
14017
14018: see if this is a sys/mman.h system
14019set sys/mman.h i_sysmman
14020eval $inhdr
14021
14022: see if mmap exists
14023set mmap d_mmap
14024eval $inlibc
14025: see what shmat returns
14026: default to something harmless
14027mmaptype='void *'
14028case "$i_sysmman$d_mmap" in
14029"$define$define")
14030 $cat >mmap.c <<'END'
14031#include <sys/mman.h>
14032void *mmap();
14033END
14034 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14035 mmaptype='void *'
14036 else
14037 mmaptype='caddr_t'
14038 fi
14039 echo "and it returns ($mmaptype)." >&4
14040 ;;
14041esac
14042
14043
14044
89ce900e
JH
14045: see if sqrtl exists
14046set sqrtl d_sqrtl
14047eval $inlibc
14048
af1ff193
JH
14049: see if scalbnl exists
14050set scalbnl d_scalbnl
14051eval $inlibc
14052
89ce900e
JH
14053: see if modfl exists
14054set modfl d_modfl
14055eval $inlibc
14056
14057: see if prototype for modfl is available
14058echo " "
14059set d_modflproto modfl math.h
14060eval $hasproto
14061
14062d_modfl_pow32_bug="$undef"
14063
14064case "$d_longdbl$d_modfl" in
14065$define$define)
14066 $cat <<EOM
14067Checking to see whether your modfl() is okay for large values...
14068EOM
14069$cat >try.c <<EOCP
14070#include <math.h>
14071#include <stdio.h>
14072EOCP
14073if $test "X$d_modflproto" != "X$define"; then
14074 $cat >>try.c <<EOCP
14075/* Sigh. many current glibcs provide the function, but do not prototype it. */
14076long double modfl (long double, long double *);
14077EOCP
14078fi
14079$cat >>try.c <<EOCP
14080int main() {
14081 long double nv = 4294967303.15;
14082 long double v, w;
14083 v = modfl(nv, &w);
14084#ifdef __GLIBC__
14085 printf("glibc");
14086#endif
14087 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14088 return 0;
14089}
14090EOCP
14091 case "$osname:$gccversion" in
14092 aix:) saveccflags="$ccflags"
14093 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14094 esac
14095 set try
14096 if eval $compile; then
14097 foo=`$run ./try`
14098 case "$foo" in
14099 *" 4294967303.150000 1.150000 4294967302.000000")
14100 echo >&4 "Your modfl() is broken for large values."
14101 d_modfl_pow32_bug="$define"
14102 case "$foo" in
14103 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14104 ;;
14105 esac
14106 ;;
14107 *" 4294967303.150000 0.150000 4294967303.000000")
14108 echo >&4 "Your modfl() seems okay for large values."
14109 ;;
14110 *) echo >&4 "I don't understand your modfl() at all."
14111 d_modfl="$undef"
14112 ;;
14113 esac
14114 $rm -f try.* try core core.try.*
14115 else
14116 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14117 d_modfl="$undef"
14118 fi
14119 case "$osname:$gccversion" in
14120 aix:) ccflags="$saveccflags" ;; # restore
14121 esac
14122 ;;
14123esac
14124
14125if $test "$uselongdouble" = "$define"; then
af1ff193
JH
14126 message=""
14127 if $test "$d_sqrtl" != "$define"; then
14128 message="$message sqrtl"
14129 fi
14130 if $test "$d_modfl" != "$define"; then
89ce900e
JH
14131 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14132 echo "You have both aintl and copysignl, so I can emulate modfl."
14133 else
af1ff193 14134 message="$message modfl"
89ce900e 14135 fi
af1ff193
JH
14136 fi
14137 if $test "$d_frexpl" != "$define"; then
14138 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14139 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14140 else
14141 message="$message frexpl"
14142 fi
14143 fi
89ce900e 14144
af1ff193 14145 if $test "$message" != ""; then
89ce900e
JH
14146 $cat <<EOM >&4
14147
14148*** You requested the use of long doubles but you do not seem to have
af1ff193
JH
14149*** the following mathematical functions needed for long double support:
14150*** $message
fe63a0b4
JH
14151*** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14152*** Cannot continue, aborting.
89ce900e
JH
14153
14154EOM
14155
fe63a0b4 14156 exit 1
89ce900e
JH
14157 fi
14158fi
14159
b4eb6b3d
JH
14160: see if mprotect exists
14161set mprotect d_mprotect
14162eval $inlibc
14163
14164: see if msgctl exists
14165set msgctl d_msgctl
14166eval $inlibc
14167
14168: see if msgget exists
14169set msgget d_msgget
14170eval $inlibc
14171
14172: see if msgsnd exists
14173set msgsnd d_msgsnd
14174eval $inlibc
14175
14176: see if msgrcv exists
14177set msgrcv d_msgrcv
14178eval $inlibc
14179
14180: see how much of the 'msg*(2)' library is present.
14181h_msg=true
14182echo " "
14183case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14184*"$undef"*) h_msg=false;;
14185esac
14186case "$osname" in
14187freebsd)
14188 case "`ipcs 2>&1`" in
14189 "SVID messages"*"not configured"*)
14190 echo "Your $osname does not have the msg*(2) configured." >&4
14191 h_msg=false
14192 val="$undef"
14193 set msgctl d_msgctl
14194 eval $setvar
14195 set msgget d_msgget
14196 eval $setvar
14197 set msgsnd d_msgsnd
14198 eval $setvar
14199 set msgrcv d_msgrcv
14200 eval $setvar
14201 ;;
14202 esac
14203 ;;
14204esac
14205: we could also check for sys/ipc.h ...
14206if $h_msg && $test `./findhdr sys/msg.h`; then
14207 echo "You have the full msg*(2) library." >&4
14208 val="$define"
14209else
14210 echo "You don't have the full msg*(2) library." >&4
14211 val="$undef"
14212fi
14213set d_msg
14214eval $setvar
14215
4e0554ec
JH
14216
14217echo " "
14218echo "Checking to see if your system supports struct msghdr..." >&4
14219set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14220eval $hasstruct
14221case "$d_msghdr_s" in
14222"$define") echo "Yes, it does." ;;
14223*) echo "No, it doesn't." ;;
14224esac
14225
14226
b4eb6b3d
JH
14227: see if msync exists
14228set msync d_msync
14229eval $inlibc
14230
14231: see if munmap exists
14232set munmap d_munmap
14233eval $inlibc
14234
14235: see if nice exists
14236set nice d_nice
14237eval $inlibc
14238
2765b840
JH
14239: see if this is a langinfo.h system
14240set langinfo.h i_langinfo
14241eval $inhdr
14242
14243: see if nl_langinfo exists
14244set nl_langinfo d_nl_langinfo
14245eval $inlibc
14246
b4eb6b3d
JH
14247: check for length of character
14248echo " "
14249case "$charsize" in
14250'')
14251 echo "Checking to see how big your characters are (hey, you never know)..." >&4
74d00865 14252 $cat >try.c <<EOCP
b4eb6b3d 14253#include <stdio.h>
d1daaddf
JH
14254#$i_stdlib I_STDLIB
14255#ifdef I_STDLIB
14256#include <stdlib.h>
14257#endif
b4eb6b3d
JH
14258int main()
14259{
14260 printf("%d\n", (int)sizeof(char));
14261 exit(0);
14262}
14263EOCP
14264 set try
14265 if eval $compile_ok; then
5440bc8e 14266 dflt=`$run ./try`
b4eb6b3d
JH
14267 else
14268 dflt='1'
14269 echo "(I can't seem to compile the test program. Guessing...)"
14270 fi
14271 ;;
14272*)
14273 dflt="$charsize"
14274 ;;
14275esac
14276rp="What is the size of a character (in bytes)?"
14277. ./myread
14278charsize="$ans"
14279$rm -f try.c try
14280
1d1be0dc
NC
14281: check for volatile keyword
14282echo " "
14283echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14284$cat >try.c <<'EOCP'
76f47787 14285int main()
1d1be0dc
NC
14286{
14287 typedef struct _goo_struct goo_struct;
14288 goo_struct * volatile goo = ((goo_struct *)0);
14289 struct _goo_struct {
14290 long long_int;
14291 int reg_int;
14292 char char_var;
14293 };
14294 typedef unsigned short foo_t;
14295 char *volatile foo;
14296 volatile int bar;
14297 volatile foo_t blech;
14298 foo = foo;
14299}
14300EOCP
14301if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14302 val="$define"
14303 echo "Yup, it does."
14304else
14305 val="$undef"
14306 echo "Nope, it doesn't."
14307fi
14308set d_volatile
14309eval $setvar
14310$rm -f try.*
14311
b4eb6b3d
JH
14312
14313echo " "
14314$echo "Choosing the C types to be used for Perl's internal types..." >&4
14315
14316case "$use64bitint:$d_quad:$quadtype" in
14317define:define:?*)
14318 ivtype="$quadtype"
14319 uvtype="$uquadtype"
14320 ivsize=8
14321 uvsize=8
14322 ;;
14323*) ivtype="long"
14324 uvtype="unsigned long"
14325 ivsize=$longsize
14326 uvsize=$longsize
14327 ;;
14328esac
14329
14330case "$uselongdouble:$d_longdbl" in
14331define:define)
14332 nvtype="long double"
14333 nvsize=$longdblsize
14334 ;;
14335*) nvtype=double
14336 nvsize=$doublesize
14337 ;;
14338esac
14339
14340$echo "(IV will be "$ivtype", $ivsize bytes)"
14341$echo "(UV will be "$uvtype", $uvsize bytes)"
14342$echo "(NV will be "$nvtype", $nvsize bytes)"
14343
14344$cat >try.c <<EOCP
14345#$i_inttypes I_INTTYPES
14346#ifdef I_INTTYPES
14347#include <inttypes.h>
14348#endif
14349#include <stdio.h>
14350int main() {
14351#ifdef INT8
14352 int8_t i = INT8_MAX;
14353 uint8_t u = UINT8_MAX;
14354 printf("int8_t\n");
14355#endif
14356#ifdef INT16
14357 int16_t i = INT16_MAX;
14358 uint16_t i = UINT16_MAX;
14359 printf("int16_t\n");
14360#endif
14361#ifdef INT32
14362 int32_t i = INT32_MAX;
14363 uint32_t u = UINT32_MAX;
14364 printf("int32_t\n");
14365#endif
14366}
14367EOCP
14368
14369case "$i8type" in
14370'') case "$charsize" in
14371 1) i8type=char
14372 u8type="unsigned char"
14373 i8size=$charsize
14374 u8size=$charsize
14375 ;;
14376 esac
14377 ;;
14378esac
14379case "$i8type" in
14380'') set try -DINT8
14381 if eval $compile; then
5440bc8e 14382 case "`$run ./try`" in
b4eb6b3d
JH
14383 int8_t) i8type=int8_t
14384 u8type=uint8_t
14385 i8size=1
14386 u8size=1
14387 ;;
14388 esac
14389 fi
14390 ;;
14391esac
14392case "$i8type" in
14393'') if $test $charsize -ge 1; then
14394 i8type=char
14395 u8type="unsigned char"
14396 i8size=$charsize
14397 u8size=$charsize
14398 fi
14399 ;;
14400esac
14401
14402case "$i16type" in
14403'') case "$shortsize" in
14404 2) i16type=short
14405 u16type="unsigned short"
14406 i16size=$shortsize
14407 u16size=$shortsize
14408 ;;
14409 esac
14410 ;;
14411esac
14412case "$i16type" in
14413'') set try -DINT16
14414 if eval $compile; then
5440bc8e 14415 case "`$run ./try`" in
b4eb6b3d
JH
14416 int16_t)
14417 i16type=int16_t
14418 u16type=uint16_t
14419 i16size=2
14420 u16size=2
14421 ;;
14422 esac
14423 fi
14424 ;;
14425esac
14426case "$i16type" in
14427'') if $test $shortsize -ge 2; then
14428 i16type=short
14429 u16type="unsigned short"
14430 i16size=$shortsize
14431 u16size=$shortsize
14432 fi
14433 ;;
14434esac
14435
14436case "$i32type" in
14437'') case "$longsize" in
14438 4) i32type=long
14439 u32type="unsigned long"
14440 i32size=$longsize
14441 u32size=$longsize
14442 ;;
14443 *) case "$intsize" in
14444 4) i32type=int
14445 u32type="unsigned int"
14446 i32size=$intsize
14447 u32size=$intsize
14448 ;;
14449 esac
14450 ;;
14451 esac
14452 ;;
14453esac
14454case "$i32type" in
14455'') set try -DINT32
14456 if eval $compile; then
5440bc8e 14457 case "`$run ./try`" in
b4eb6b3d
JH
14458 int32_t)
14459 i32type=int32_t
14460 u32type=uint32_t
14461 i32size=4
14462 u32size=4
14463 ;;
14464 esac
14465 fi
14466 ;;
14467esac
14468case "$i32type" in
14469'') if $test $intsize -ge 4; then
14470 i32type=int
14471 u32type="unsigned int"
14472 i32size=$intsize
14473 u32size=$intsize
14474 fi
14475 ;;
14476esac
14477
14478case "$i64type" in
14479'') case "$d_quad:$quadtype" in
14480 define:?*)
14481 i64type="$quadtype"
14482 u64type="$uquadtype"
14483 i64size=8
14484 u64size=8
14485 ;;
14486 esac
14487 ;;
14488esac
14489
1d1be0dc
NC
14490$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14491: volatile so that the compiler has to store it out to memory.
14492if test X"$d_volatile" = X"$define"; then
14493 volatile=volatile
14494fi
b4eb6b3d
JH
14495$cat <<EOP >try.c
14496#include <stdio.h>
55954f19
JH
14497#$i_stdlib I_STDLIB
14498#ifdef I_STDLIB
14499#include <stdlib.h>
14500#endif
1d1be0dc
NC
14501#include <sys/types.h>
14502#include <signal.h>
14503#ifdef SIGFPE
14504$volatile int bletched = 0;
14505$signal_t blech(s) int s; { bletched = 1; }
14506#endif
b4eb6b3d
JH
14507int main() {
14508 $uvtype u = 0;
1d1be0dc 14509 $nvtype d;
b4eb6b3d
JH
14510 int n = 8 * $uvsize;
14511 int i;
1d1be0dc
NC
14512#ifdef SIGFPE
14513 signal(SIGFPE, blech);
14514#endif
14515
b4eb6b3d
JH
14516 for (i = 0; i < n; i++) {
14517 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
14518 d = ($nvtype)u;
14519 if (($uvtype)d != u)
b4eb6b3d 14520 break;
1d1be0dc
NC
14521 if (d <= 0)
14522 break;
14523 d = ($nvtype)(u - 1);
14524 if (($uvtype)d != (u - 1))
14525 break;
14526#ifdef SIGFPE
14527 if (bletched) {
14528 break;
14529#endif
14530 }
b4eb6b3d 14531 }
efd1522b 14532 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
14533 exit(0);
14534}
14535EOP
1d1be0dc
NC
14536set try
14537
14538d_nv_preserves_uv="$undef"
14539if eval $compile; then
53133ed1 14540 nv_preserves_uv_bits="`$run ./try`"
1d1be0dc 14541fi
53133ed1 14542case "$nv_preserves_uv_bits" in
1d1be0dc 14543\-[1-9]*)
53133ed1
NC
14544 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14545 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc 14546 d_nv_preserves_uv="$define"
b4eb6b3d 14547 ;;
53133ed1 14548[1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc
NC
14549 d_nv_preserves_uv="$undef" ;;
14550*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
53133ed1 14551 nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
14552esac
14553
1d1be0dc
NC
14554$rm -f try.* try
14555
b4eb6b3d
JH
14556
14557: check for off64_t
14558echo " "
14559echo "Checking to see if you have off64_t..." >&4
14560$cat >try.c <<EOCP
14561#include <sys/types.h>
14562#include <unistd.h>
14563int main() { off64_t x = 7; }
14564EOCP
14565set try
14566if eval $compile; then
14567 val="$define"
14568 echo "You have off64_t."
14569else
14570 val="$undef"
14571 echo "You do not have off64_t."
14572 case "$lseeksize" in
14573 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14574 esac
14575fi
14576$rm -f try.* try
14577set d_off64_t
14578eval $setvar
14579
b4eb6b3d
JH
14580: how to create joinable pthreads
14581if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14582 echo " "
14583 echo "Checking what constant to use for creating joinable pthreads..." >&4
14584 $cat >try.c <<'EOCP'
14585#include <pthread.h>
14586int main() {
14587 int detachstate = JOINABLE;
14588}
14589EOCP
14590 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14591 if eval $compile; then
14592 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14593 val="$undef" # Yes, undef.
14594 set d_old_pthread_create_joinable
14595 eval $setvar
14596 val=""
14597 set old_pthread_create_joinable
14598 eval $setvar
14599 else
14600 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14601 if eval $compile; then
14602 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14603 val="$define"
14604 set d_old_pthread_create_joinable
14605 eval $setvar
14606 val=PTHREAD_CREATE_UNDETACHED
14607 set old_pthread_create_joinable
14608 eval $setvar
14609 else
14610 set try -DJOINABLE=__UNDETACHED
14611 if eval $compile; then
14612 echo "You seem to use __UNDETACHED." >&4
14613 val="$define"
14614 set d_old_pthread_create_joinable
14615 eval $setvar
14616 val=__UNDETACHED
14617 set old_pthread_create_joinable
14618 eval $setvar
14619 else
14620 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
14621 val="$define"
14622 set d_old_pthread_create_joinable
14623 eval $setvar
14624 val=0
14625 set old_pthread_create_joinable
14626 eval $setvar
14627 fi
14628 fi
14629 fi
14630 $rm -f try try.*
14631else
14632 d_old_pthread_create_joinable="$undef"
14633 old_pthread_create_joinable=""
14634fi
14635
14636: see if pause exists
14637set pause d_pause
14638eval $inlibc
14639
14640: see if pipe exists
14641set pipe d_pipe
14642eval $inlibc
14643
14644: see if poll exists
14645set poll d_poll
14646eval $inlibc
14647
c7aff470
NIS
14648: see if readlink exists
14649set readlink d_readlink
14650eval $inlibc
14651
14652echo " "
f24dbf84 14653procselfexe=''
c7aff470 14654val="$undef"
a33c94aa
JH
14655case "$d_readlink" in
14656"$define")
c7aff470
NIS
14657 if $issymlink /proc/self/exe ; then
14658 $ls -l /proc/self/exe > reflect
51660ed5 14659 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 14660 echo "You have Linux-like /proc/self/exe."
92236451 14661 procselfexe='"/proc/self/exe"'
f24dbf84 14662 val="$define"
f24dbf84
JH
14663 fi
14664 fi
14665 if $issymlink /proc/curproc/file ; then
14666 $ls -l /proc/curproc/file > reflect
14667 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14668 echo "You have BSD-like /proc/curproc/file."
92236451 14669 procselfexe='"/proc/curproc/file"'
f24dbf84 14670 val="$define"
c7aff470 14671 fi
c7aff470 14672 fi
a33c94aa
JH
14673 ;;
14674esac
428dc699 14675$rm -f reflect
c7aff470
NIS
14676set d_procselfexe
14677eval $setvar
14678
263fee3f
JH
14679: see whether the pthread_atfork exists
14680$cat >try.c <<EOP
14681#include <pthread.h>
14682#include <stdio.h>
14683int main() {
14684#ifdef PTHREAD_ATFORK
14685 pthread_atfork(NULL,NULL,NULL);
14686#endif
14687}
14688EOP
14689
d6483fcc 14690: see if pthread_atfork exists
263fee3f
JH
14691set try -DPTHREAD_ATFORK
14692if eval $compile; then
14693 val="$define"
14694else
14695 val="$undef"
14696fi
14697case "$usethreads" in
14698$define)
14699 case "$val" in
14700 $define) echo 'pthread_atfork found.' >&4 ;;
14701 *) echo 'pthread_atfork NOT found.' >&4 ;;
14702 esac
14703esac
14704set d_pthread_atfork
14705eval $setvar
d6483fcc 14706
58d975c3
JH
14707: see if pthread_attr_setscope exists
14708set pthread_attr_setscope d_pthread_attr_setscope
14709eval $inlibc
14710
b4eb6b3d
JH
14711
14712: see whether the various POSIXish _yields exist
14713$cat >try.c <<EOP
14714#include <pthread.h>
14715#include <stdio.h>
14716int main() {
14717#ifdef SCHED_YIELD
14718 sched_yield();
14719#else
14720#ifdef PTHREAD_YIELD
14721 pthread_yield();
14722#else
14723#ifdef PTHREAD_YIELD_NULL
14724 pthread_yield(NULL);
14725#endif
14726#endif
14727#endif
14728}
14729EOP
14730: see if sched_yield exists
14731set try -DSCHED_YIELD
14732if eval $compile; then
14733 val="$define"
14734 sched_yield='sched_yield()'
14735else
14736 val="$undef"
14737fi
14738case "$usethreads" in
14739$define)
14740 case "$val" in
14741 $define) echo 'sched_yield() found.' >&4 ;;
14742 *) echo 'sched_yield() NOT found.' >&4 ;;
14743 esac
14744esac
10bc17b6
JH
14745set d_sched_yield
14746eval $setvar
b4eb6b3d 14747
10bc17b6
JH
14748: see if pthread_yield exists
14749set try -DPTHREAD_YIELD
14750if eval $compile; then
14751 val="$define"
14752 case "$sched_yield" in
14753 '') sched_yield='pthread_yield()' ;;
14754 esac
14755else
14756 set try -DPTHREAD_YIELD_NULL
14757 if eval $compile; then
14758 val="$define"
14759 case "$sched_yield" in
14760 '') sched_yield='pthread_yield(NULL)' ;;
14761 esac
14762 else
14763 val="$undef"
14764 fi
14765fi
14766case "$usethreads" in
14767$define)
14768 case "$val" in
14769 $define) echo 'pthread_yield() found.' >&4 ;;
14770 *) echo 'pthread_yield() NOT found.' >&4 ;;
14771 esac
14772 ;;
14773esac
14774set d_pthread_yield
14775eval $setvar
b4eb6b3d 14776
10bc17b6
JH
14777case "$sched_yield" in
14778'') sched_yield=undef ;;
14779esac
b4eb6b3d 14780
10bc17b6
JH
14781$rm -f try try.*
14782
14783: see if random_r exists
14784set random_r d_random_r
14785eval $inlibc
14786case "$d_random_r" in
14787"$define")
14788 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
14789 case "$d_random_r_proto:$usethreads" in
14790 ":define") d_random_r_proto=define
a48ec845
JH
14791 set d_random_r_proto random_r $hdrs
14792 eval $hasproto ;;
14793 *) ;;
14794 esac
14795 case "$d_random_r_proto" in
14796 define)
10bc17b6
JH
14797 case "$random_r_proto" in
14798 ''|0) try='int random_r(int*, struct random_data*);'
a845a0d4
JH
14799 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14800 esac
14801 case "$random_r_proto" in
14802 ''|0) try='int random_r(long*, struct random_data*);'
14803 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14804 esac
14805 case "$random_r_proto" in
14806 ''|0) try='int random_r(struct random_data*, int32_t*);'
14807 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
10bc17b6
JH
14808 esac
14809 case "$random_r_proto" in
90e831dc 14810 ''|0) d_random_r=undef
10bc17b6 14811 random_r_proto=0
a48ec845 14812 echo "Disabling random_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14813 * ) case "$random_r_proto" in
14814 REENTRANT_PROTO*) ;;
14815 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14816 esac
14817 echo "Prototype: $try" ;;
14818 esac
b4eb6b3d 14819 ;;
c18e646a
JH
14820 *) case "$usethreads" in
14821 define) echo "random_r has no prototype, not using it." >&4 ;;
14822 esac
90e831dc
SB
14823 d_random_r=undef
14824 random_r_proto=0
c18e646a 14825 ;;
a48ec845
JH
14826 esac
14827 ;;
10bc17b6 14828*) random_r_proto=0
b4eb6b3d
JH
14829 ;;
14830esac
14831
14832: see if readdir and friends exist
14833set readdir d_readdir
14834eval $inlibc
14835set seekdir d_seekdir
14836eval $inlibc
14837set telldir d_telldir
14838eval $inlibc
14839set rewinddir d_rewinddir
14840eval $inlibc
14841
10bc17b6
JH
14842: see if readdir64_r exists
14843set readdir64_r d_readdir64_r
14844eval $inlibc
14845case "$d_readdir64_r" in
14846"$define")
14847 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14848 case "$d_readdir64_r_proto:$usethreads" in
14849 ":define") d_readdir64_r_proto=define
a48ec845
JH
14850 set d_readdir64_r_proto readdir64_r $hdrs
14851 eval $hasproto ;;
14852 *) ;;
14853 esac
14854 case "$d_readdir64_r_proto" in
14855 define)
10bc17b6
JH
14856 case "$readdir64_r_proto" in
14857 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14858 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14859 esac
14860 case "$readdir64_r_proto" in
14861 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14862 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14863 esac
14864 case "$readdir64_r_proto" in
90e831dc 14865 ''|0) d_readdir64_r=undef
10bc17b6 14866 readdir64_r_proto=0
a48ec845 14867 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14868 * ) case "$readdir64_r_proto" in
14869 REENTRANT_PROTO*) ;;
14870 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14871 esac
14872 echo "Prototype: $try" ;;
14873 esac
14874 ;;
c18e646a
JH
14875 *) case "$usethreads" in
14876 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14877 esac
90e831dc
SB
14878 d_readdir64_r=undef
14879 readdir64_r_proto=0
c18e646a 14880 ;;
a48ec845
JH
14881 esac
14882 ;;
10bc17b6
JH
14883*) readdir64_r_proto=0
14884 ;;
14885esac
14886
14887: see if readdir_r exists
14888set readdir_r d_readdir_r
14889eval $inlibc
14890case "$d_readdir_r" in
14891"$define")
14892 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14893 case "$d_readdir_r_proto:$usethreads" in
14894 ":define") d_readdir_r_proto=define
a48ec845
JH
14895 set d_readdir_r_proto readdir_r $hdrs
14896 eval $hasproto ;;
14897 *) ;;
14898 esac
14899 case "$d_readdir_r_proto" in
14900 define)
10bc17b6
JH
14901 case "$readdir_r_proto" in
14902 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14903 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14904 esac
14905 case "$readdir_r_proto" in
14906 ''|0) try='int readdir_r(DIR*, struct dirent*);'
14907 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14908 esac
14909 case "$readdir_r_proto" in
90e831dc 14910 ''|0) d_readdir_r=undef
10bc17b6 14911 readdir_r_proto=0
a48ec845 14912 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14913 * ) case "$readdir_r_proto" in
14914 REENTRANT_PROTO*) ;;
14915 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14916 esac
14917 echo "Prototype: $try" ;;
14918 esac
14919 ;;
c18e646a
JH
14920 *) case "$usethreads" in
14921 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14922 esac
90e831dc
SB
14923 d_readdir_r=undef
14924 readdir_r_proto=0
c18e646a 14925 ;;
a48ec845
JH
14926 esac
14927 ;;
10bc17b6
JH
14928*) readdir_r_proto=0
14929 ;;
14930esac
14931
4e0554ec
JH
14932: see if readv exists
14933set readv d_readv
14934eval $inlibc
14935
14936: see if recvmsg exists
14937set recvmsg d_recvmsg
14938eval $inlibc
14939
b4eb6b3d
JH
14940: see if rename exists
14941set rename d_rename
14942eval $inlibc
14943
14944: see if rmdir exists
14945set rmdir d_rmdir
14946eval $inlibc
14947
14948: see if memory.h is available.
14949val=''
14950set memory.h val
14951eval $inhdr
14952
14953: See if it conflicts with string.h
14954case "$val" in
14955$define)
14956 case "$strings" in
14957 '') ;;
14958 *)
14959 $cppstdin $cppflags $cppminus < $strings > mem.h
14960 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14961 echo " "
14962 echo "We won't be including <memory.h>."
14963 val="$undef"
14964 fi
14965 $rm -f mem.h
14966 ;;
14967 esac
14968esac
14969set i_memory
14970eval $setvar
14971
14972: can bcopy handle overlapping blocks?
b6cc3bc4 14973echo " "
b4eb6b3d 14974val="$undef"
b6cc3bc4
AD
14975case "$d_memmove" in
14976"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14977*) case "$d_bcopy" in
14978 "$define")
14979 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14980 $cat >try.c <<EOCP
b4eb6b3d
JH
14981#$i_memory I_MEMORY
14982#$i_stdlib I_STDLIB
14983#$i_string I_STRING
14984#$i_unistd I_UNISTD
14985EOCP
14986 $cat >>try.c <<'EOCP'
14987#include <stdio.h>
14988#ifdef I_MEMORY
14989# include <memory.h>
14990#endif
14991#ifdef I_STDLIB
14992# include <stdlib.h>
14993#endif
14994#ifdef I_STRING
14995# include <string.h>
14996#else
14997# include <strings.h>
14998#endif
14999#ifdef I_UNISTD
15000# include <unistd.h> /* Needed for NetBSD */
15001#endif
15002int main()
15003{
15004char buf[128], abc[128];
15005char *b;
15006int len;
15007int off;
15008int align;
15009
b6cc3bc4
AD
15010/* Copy "abcde..." string to char abc[] so that gcc doesn't
15011 try to store the string in read-only memory. */
b4eb6b3d
JH
15012bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15013
15014for (align = 7; align >= 0; align--) {
15015 for (len = 36; len; len--) {
15016 b = buf+align;
15017 bcopy(abc, b, len);
15018 for (off = 1; off <= len; off++) {
15019 bcopy(b, b+off, len);
15020 bcopy(b+off, b, len);
15021 if (bcmp(b, abc, len))
15022 exit(1);
15023 }
15024 }
15025}
15026exit(0);
15027}
15028EOCP
b6cc3bc4
AD
15029 set try
15030 if eval $compile_ok; then
15031 if ./try 2>/dev/null; then
15032 echo "Yes, it can."
15033 val="$define"
15034 else
15035 echo "It can't, sorry."
15036 fi
b4eb6b3d 15037 else
b6cc3bc4 15038 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15039 fi
b6cc3bc4
AD
15040 ;;
15041 esac
15042 $rm -f try.* try core
b4eb6b3d
JH
15043 ;;
15044esac
b4eb6b3d
JH
15045set d_safebcpy
15046eval $setvar
15047
15048: can memcpy handle overlapping blocks?
b6cc3bc4 15049echo " "
b4eb6b3d 15050val="$undef"
b6cc3bc4
AD
15051case "$d_memmove" in
15052"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15053*) case "$d_memcpy" in
15054 "$define")
15055 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15056 $cat >try.c <<EOCP
b4eb6b3d
JH
15057#$i_memory I_MEMORY
15058#$i_stdlib I_STDLIB
15059#$i_string I_STRING
15060#$i_unistd I_UNISTD
15061EOCP
15062 $cat >>try.c <<'EOCP'
15063#include <stdio.h>
15064#ifdef I_MEMORY
15065# include <memory.h>
15066#endif
15067#ifdef I_STDLIB
15068# include <stdlib.h>
15069#endif
15070#ifdef I_STRING
15071# include <string.h>
15072#else
15073# include <strings.h>
15074#endif
15075#ifdef I_UNISTD
15076# include <unistd.h> /* Needed for NetBSD */
15077#endif
15078int main()
15079{
15080char buf[128], abc[128];
15081char *b;
15082int len;
15083int off;
15084int align;
15085
15086/* Copy "abcde..." string to char abc[] so that gcc doesn't
15087 try to store the string in read-only memory. */
15088memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15089
15090for (align = 7; align >= 0; align--) {
15091 for (len = 36; len; len--) {
15092 b = buf+align;
15093 memcpy(b, abc, len);
15094 for (off = 1; off <= len; off++) {
15095 memcpy(b+off, b, len);
15096 memcpy(b, b+off, len);
15097 if (memcmp(b, abc, len))
15098 exit(1);
15099 }
15100 }
15101}
15102exit(0);
15103}
15104EOCP
b6cc3bc4
AD
15105 set try
15106 if eval $compile_ok; then
15107 if ./try 2>/dev/null; then
15108 echo "Yes, it can."
15109 val="$define"
15110 else
15111 echo "It can't, sorry."
15112 fi
b4eb6b3d 15113 else
b6cc3bc4 15114 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 15115 fi
b6cc3bc4
AD
15116 ;;
15117 esac
15118 $rm -f try.* try core
b4eb6b3d
JH
15119 ;;
15120esac
b4eb6b3d
JH
15121set d_safemcpy
15122eval $setvar
15123
15124: can memcmp be trusted to compare relative magnitude?
15125val="$undef"
15126case "$d_memcmp" in
15127"$define")
15128 echo " "
15129 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15130 $cat >try.c <<EOCP
15131#$i_memory I_MEMORY
15132#$i_stdlib I_STDLIB
15133#$i_string I_STRING
15134#$i_unistd I_UNISTD
15135EOCP
15136 $cat >>try.c <<'EOCP'
15137#include <stdio.h>
15138#ifdef I_MEMORY
15139# include <memory.h>
15140#endif
15141#ifdef I_STDLIB
36adc09b 15142# include <stdlib.h>
b4eb6b3d
JH
15143#endif
15144#ifdef I_STRING
15145# include <string.h>
15146#else
15147# include <strings.h>
15148#endif
15149#ifdef I_UNISTD
15150# include <unistd.h> /* Needed for NetBSD */
15151#endif
15152int main()
15153{
15154char a = -1;
15155char b = 0;
15156if ((a < b) && memcmp(&a, &b, 1) < 0)
15157 exit(1);
15158exit(0);
15159}
15160EOCP
15161 set try
15162 if eval $compile_ok; then
5440bc8e 15163 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
15164 echo "Yes, it can."
15165 val="$define"
15166 else
15167 echo "No, it can't (it uses signed chars)."
15168 fi
15169 else
15170 echo "(I can't compile the test program, so we'll assume not...)"
15171 fi
15172 ;;
15173esac
15174$rm -f try.* try core
15175set d_sanemcmp
15176eval $setvar
15177
ef9f17be
JH
15178: see if prototype for sbrk is available
15179echo " "
15180set d_sbrkproto sbrk $i_unistd unistd.h
15181eval $hasproto
15182
b4eb6b3d
JH
15183: see if select exists
15184set select d_select
15185eval $inlibc
15186
15187: see if semctl exists
15188set semctl d_semctl
15189eval $inlibc
15190
15191: see if semget exists
15192set semget d_semget
15193eval $inlibc
15194
15195: see if semop exists
15196set semop d_semop
15197eval $inlibc
15198
15199: see how much of the 'sem*(2)' library is present.
15200h_sem=true
15201echo " "
15202case "$d_semctl$d_semget$d_semop" in
15203*"$undef"*) h_sem=false;;
15204esac
15205case "$osname" in
15206freebsd)
15207 case "`ipcs 2>&1`" in
15208 "SVID messages"*"not configured"*)
15209 echo "Your $osname does not have the sem*(2) configured." >&4
15210 h_sem=false
15211 val="$undef"
15212 set semctl d_semctl
15213 eval $setvar
15214 set semget d_semget
15215 eval $setvar
15216 set semop d_semop
15217 eval $setvar
15218 ;;
15219 esac
15220 ;;
15221esac
15222: we could also check for sys/ipc.h ...
15223if $h_sem && $test `./findhdr sys/sem.h`; then
15224 echo "You have the full sem*(2) library." >&4
15225 val="$define"
15226else
15227 echo "You don't have the full sem*(2) library." >&4
15228 val="$undef"
15229fi
15230set d_sem
15231eval $setvar
15232
15233: see whether sys/sem.h defines union semun
15234echo " "
15235$cat > try.c <<'END'
15236#include <sys/types.h>
15237#include <sys/ipc.h>
15238#include <sys/sem.h>
15239int main () { union semun semun; semun.buf = 0; }
15240END
15241set try
15242if eval $compile; then
15243 echo "You have union semun in <sys/sem.h>." >&4
15244 val="$define"
15245else
15246 echo "You do not have union semun in <sys/sem.h>." >&4
15247 val="$undef"
15248fi
2fad75a1 15249$rm -f try try.c
b4eb6b3d
JH
15250set d_union_semun
15251eval $setvar
15252
15253: see how to do semctl IPC_STAT
15254case "$d_sem" in
15255$define)
b4eb6b3d
JH
15256 echo " "
15257 $cat > try.h <<END
15258#ifndef S_IRUSR
15259# ifdef S_IREAD
15260# define S_IRUSR S_IREAD
15261# define S_IWUSR S_IWRITE
15262# define S_IXUSR S_IEXEC
15263# else
15264# define S_IRUSR 0400
15265# define S_IWUSR 0200
15266# define S_IXUSR 0100
15267# endif
15268# define S_IRGRP (S_IRUSR>>3)
15269# define S_IWGRP (S_IWUSR>>3)
15270# define S_IXGRP (S_IXUSR>>3)
15271# define S_IROTH (S_IRUSR>>6)
15272# define S_IWOTH (S_IWUSR>>6)
15273# define S_IXOTH (S_IXUSR>>6)
15274#endif
15275#ifndef S_IRWXU
15276# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15277# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15278# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15279#endif
15280END
2fad75a1
JH
15281 : see whether semctl IPC_STAT can use union semun
15282 val="$undef"
15283 case "$d_semctl_semun" in
15284 '')
15285 $cat > try.c <<END
b4eb6b3d
JH
15286#include <sys/types.h>
15287#include <sys/ipc.h>
15288#include <sys/sem.h>
15289#include <sys/stat.h>
15290#include <stdio.h>
15291#include <errno.h>
15292#include "try.h"
15293#ifndef errno
15294extern int errno;
15295#endif
15296#$d_union_semun HAS_UNION_SEMUN
15297int main() {
15298 union semun
15299#ifndef HAS_UNION_SEMUN
15300 {
15301 int val;
15302 struct semid_ds *buf;
15303 unsigned short *array;
15304 }
15305#endif
15306 arg;
15307 int sem, st;
15308
15309#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15310 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15311 if (sem > -1) {
15312 struct semid_ds argbuf;
15313 arg.buf = &argbuf;
15314# ifdef IPC_STAT
15315 st = semctl(sem, 0, IPC_STAT, arg);
15316 if (st == 0)
15317 printf("semun\n");
15318 else
15319# endif /* IPC_STAT */
15320 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15321# ifdef IPC_RMID
15322 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15323# endif /* IPC_RMID */
15324 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15325 } else
15326#endif /* IPC_PRIVATE && ... */
15327 printf("semget failed: errno = %d\n", errno);
15328 return 0;
15329}
15330END
2fad75a1
JH
15331 set try
15332 if eval $compile; then
15333 xxx=`$run ./try`
15334 case "$xxx" in
15335 semun) val="$define" ;;
15336 esac
15337 fi
15338 $rm -f try try.c
15339 ;;
15340 esac
b4eb6b3d
JH
15341 set d_semctl_semun
15342 eval $setvar
15343 case "$d_semctl_semun" in
15344 $define)
15345 echo "You can use union semun for semctl IPC_STAT." >&4
15346 also='also'
15347 ;;
15348 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15349 also=''
15350 ;;
15351 esac
15352
15353 : see whether semctl IPC_STAT can use struct semid_ds pointer
2fad75a1
JH
15354 val="$undef"
15355 case "$d_semctl_semid_ds" in
15356 '')
15357 $cat > try.c <<'END'
b4eb6b3d
JH
15358#include <sys/types.h>
15359#include <sys/ipc.h>
15360#include <sys/sem.h>
15361#include <sys/stat.h>
15362#include "try.h"
15363#include <stdio.h>
15364#include <errno.h>
15365#ifndef errno
15366extern int errno;
15367#endif
15368int main() {
15369 struct semid_ds arg;
15370 int sem, st;
15371
15372#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15373 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15374 if (sem > -1) {
15375# ifdef IPC_STAT
15376 st = semctl(sem, 0, IPC_STAT, &arg);
15377 if (st == 0)
15378 printf("semid_ds\n");
15379 else
15380# endif /* IPC_STAT */
15381 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15382# ifdef IPC_RMID
15383 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15384# endif /* IPC_RMID */
15385 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15386 } else
15387#endif /* IPC_PRIVATE && ... */
15388 printf("semget failed: errno = %d\n", errno);
15389
15390 return 0;
15391}
15392END
2fad75a1
JH
15393 set try
15394 if eval $compile; then
15395 xxx=`$run ./try`
15396 case "$xxx" in
15397 semid_ds) val="$define" ;;
15398 esac
15399 fi
15400 $rm -f try try.c
15401 ;;
15402 esac
b4eb6b3d
JH
15403 set d_semctl_semid_ds
15404 eval $setvar
15405 case "$d_semctl_semid_ds" in
15406 $define)
15407 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15408 ;;
15409 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15410 ;;
15411 esac
15412 $rm -f try.h
15413 ;;
15414*) val="$undef"
15415
15416 # We do not have the full sem*(2) library, so assume we can not
15417 # use either.
15418
15419 set d_semctl_semun
15420 eval $setvar
15421
15422 set d_semctl_semid_ds
15423 eval $setvar
15424 ;;
15425esac
15426
4e0554ec
JH
15427: see if sendmsg exists
15428set sendmsg d_sendmsg
15429eval $inlibc
15430
b4eb6b3d
JH
15431: see if setegid exists
15432set setegid d_setegid
15433eval $inlibc
15434
15435: see if seteuid exists
15436set seteuid d_seteuid
15437eval $inlibc
15438
15439: see if setgrent exists
15440set setgrent d_setgrent
15441eval $inlibc
15442
10bc17b6
JH
15443: see if setgrent_r exists
15444set setgrent_r d_setgrent_r
15445eval $inlibc
15446case "$d_setgrent_r" in
15447"$define")
15448 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
15449 case "$d_setgrent_r_proto:$usethreads" in
15450 ":define") d_setgrent_r_proto=define
a48ec845
JH
15451 set d_setgrent_r_proto setgrent_r $hdrs
15452 eval $hasproto ;;
15453 *) ;;
15454 esac
15455 case "$d_setgrent_r_proto" in
15456 define)
10bc17b6
JH
15457 case "$setgrent_r_proto" in
15458 ''|0) try='int setgrent_r(FILE**);'
15459 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15460 esac
15461 case "$setgrent_r_proto" in
15462 ''|0) try='void setgrent_r(FILE**);'
15463 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15464 esac
15465 case "$setgrent_r_proto" in
90e831dc 15466 ''|0) d_setgrent_r=undef
10bc17b6 15467 setgrent_r_proto=0
a48ec845 15468 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15469 * ) case "$setgrent_r_proto" in
15470 REENTRANT_PROTO*) ;;
15471 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15472 esac
15473 echo "Prototype: $try" ;;
15474 esac
15475 ;;
c18e646a
JH
15476 *) case "$usethreads" in
15477 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15478 esac
90e831dc
SB
15479 d_setgrent_r=undef
15480 setgrent_r_proto=0
c18e646a 15481 ;;
a48ec845
JH
15482 esac
15483 ;;
10bc17b6
JH
15484*) setgrent_r_proto=0
15485 ;;
15486esac
15487
b4eb6b3d
JH
15488: see if sethostent exists
15489set sethostent d_sethent
15490eval $inlibc
15491
10bc17b6
JH
15492: see if sethostent_r exists
15493set sethostent_r d_sethostent_r
15494eval $inlibc
15495case "$d_sethostent_r" in
15496"$define")
15497 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15498 case "$d_sethostent_r_proto:$usethreads" in
15499 ":define") d_sethostent_r_proto=define
a48ec845
JH
15500 set d_sethostent_r_proto sethostent_r $hdrs
15501 eval $hasproto ;;
15502 *) ;;
15503 esac
15504 case "$d_sethostent_r_proto" in
15505 define)
10bc17b6
JH
15506 case "$sethostent_r_proto" in
15507 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15508 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15509 esac
15510 case "$sethostent_r_proto" in
15511 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15512 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15513 esac
15514 case "$sethostent_r_proto" in
90e831dc 15515 ''|0) d_sethostent_r=undef
10bc17b6 15516 sethostent_r_proto=0
a48ec845 15517 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15518 * ) case "$sethostent_r_proto" in
15519 REENTRANT_PROTO*) ;;
15520 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15521 esac
15522 echo "Prototype: $try" ;;
15523 esac
15524 ;;
c18e646a
JH
15525 *) case "$usethreads" in
15526 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15527 esac
90e831dc
SB
15528 d_sethostent_r=undef
15529 sethostent_r_proto=0
c18e646a 15530 ;;
a48ec845
JH
15531 esac
15532 ;;
10bc17b6
JH
15533*) sethostent_r_proto=0
15534 ;;
15535esac
15536
4e0554ec
JH
15537: see if setitimer exists
15538set setitimer d_setitimer
15539eval $inlibc
15540
b4eb6b3d
JH
15541: see if setlinebuf exists
15542set setlinebuf d_setlinebuf
15543eval $inlibc
15544
15545: see if setlocale exists
15546set setlocale d_setlocale
15547eval $inlibc
15548
10bc17b6
JH
15549: see if locale.h is available
15550set locale.h i_locale
15551eval $inhdr
15552
15553: see if setlocale_r exists
15554set setlocale_r d_setlocale_r
15555eval $inlibc
15556case "$d_setlocale_r" in
15557"$define")
15558 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
c18e646a
JH
15559 case "$d_setlocale_r_proto:$usethreads" in
15560 ":define") d_setlocale_r_proto=define
a48ec845
JH
15561 set d_setlocale_r_proto setlocale_r $hdrs
15562 eval $hasproto ;;
15563 *) ;;
15564 esac
15565 case "$d_setlocale_r_proto" in
15566 define)
10bc17b6
JH
15567 case "$setlocale_r_proto" in
15568 ''|0) try='int setlocale_r(int, const char*, char*, int);'
15569 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15570 esac
15571 case "$setlocale_r_proto" in
90e831dc 15572 ''|0) d_setlocale_r=undef
10bc17b6 15573 setlocale_r_proto=0
a48ec845 15574 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15575 * ) case "$setlocale_r_proto" in
15576 REENTRANT_PROTO*) ;;
15577 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15578 esac
15579 echo "Prototype: $try" ;;
15580 esac
15581 ;;
c18e646a
JH
15582 *) case "$usethreads" in
15583 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15584 esac
90e831dc
SB
15585 d_setlocale_r=undef
15586 setlocale_r_proto=0
c18e646a 15587 ;;
a48ec845
JH
15588 esac
15589 ;;
10bc17b6
JH
15590*) setlocale_r_proto=0
15591 ;;
15592esac
15593
b4eb6b3d
JH
15594: see if setnetent exists
15595set setnetent d_setnent
15596eval $inlibc
15597
10bc17b6
JH
15598: see if setnetent_r exists
15599set setnetent_r d_setnetent_r
15600eval $inlibc
15601case "$d_setnetent_r" in
15602"$define")
15603 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15604 case "$d_setnetent_r_proto:$usethreads" in
15605 ":define") d_setnetent_r_proto=define
a48ec845
JH
15606 set d_setnetent_r_proto setnetent_r $hdrs
15607 eval $hasproto ;;
15608 *) ;;
15609 esac
15610 case "$d_setnetent_r_proto" in
15611 define)
10bc17b6
JH
15612 case "$setnetent_r_proto" in
15613 ''|0) try='int setnetent_r(int, struct netent_data*);'
15614 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15615 esac
15616 case "$setnetent_r_proto" in
15617 ''|0) try='void setnetent_r(int, struct netent_data*);'
15618 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15619 esac
15620 case "$setnetent_r_proto" in
90e831dc 15621 ''|0) d_setnetent_r=undef
10bc17b6 15622 setnetent_r_proto=0
a48ec845 15623 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15624 * ) case "$setnetent_r_proto" in
15625 REENTRANT_PROTO*) ;;
15626 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15627 esac
15628 echo "Prototype: $try" ;;
15629 esac
15630 ;;
c18e646a
JH
15631 *) case "$usethreads" in
15632 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15633 esac
90e831dc
SB
15634 d_setnetent_r=undef
15635 setnetent_r_proto=0
c18e646a 15636 ;;
a48ec845
JH
15637 esac
15638 ;;
10bc17b6
JH
15639*) setnetent_r_proto=0
15640 ;;
15641esac
15642
b4eb6b3d
JH
15643: see if setprotoent exists
15644set setprotoent d_setpent
15645eval $inlibc
15646
15647: see if setpgid exists
15648set setpgid d_setpgid
15649eval $inlibc
15650
15651: see if setpgrp2 exists
15652set setpgrp2 d_setpgrp2
15653eval $inlibc
15654
15655: see if setpriority exists
15656set setpriority d_setprior
15657eval $inlibc
15658
15659: see if setproctitle exists
15660set setproctitle d_setproctitle
15661eval $inlibc
15662
10bc17b6
JH
15663: see if setprotoent_r exists
15664set setprotoent_r d_setprotoent_r
15665eval $inlibc
15666case "$d_setprotoent_r" in
15667"$define")
15668 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15669 case "$d_setprotoent_r_proto:$usethreads" in
15670 ":define") d_setprotoent_r_proto=define
a48ec845
JH
15671 set d_setprotoent_r_proto setprotoent_r $hdrs
15672 eval $hasproto ;;
15673 *) ;;
15674 esac
15675 case "$d_setprotoent_r_proto" in
15676 define)
10bc17b6
JH
15677 case "$setprotoent_r_proto" in
15678 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15679 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15680 esac
15681 case "$setprotoent_r_proto" in
15682 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15683 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15684 esac
15685 case "$setprotoent_r_proto" in
90e831dc 15686 ''|0) d_setprotoent_r=undef
10bc17b6 15687 setprotoent_r_proto=0
a48ec845 15688 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15689 * ) case "$setprotoent_r_proto" in
15690 REENTRANT_PROTO*) ;;
15691 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15692 esac
15693 echo "Prototype: $try" ;;
15694 esac
15695 ;;
c18e646a
JH
15696 *) case "$usethreads" in
15697 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15698 esac
90e831dc
SB
15699 d_setprotoent_r=undef
15700 setprotoent_r_proto=0
c18e646a 15701 ;;
a48ec845
JH
15702 esac
15703 ;;
10bc17b6
JH
15704*) setprotoent_r_proto=0
15705 ;;
15706esac
15707
b4eb6b3d
JH
15708: see if setpwent exists
15709set setpwent d_setpwent
15710eval $inlibc
15711
10bc17b6
JH
15712: see if setpwent_r exists
15713set setpwent_r d_setpwent_r
15714eval $inlibc
15715case "$d_setpwent_r" in
15716"$define")
15717 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
15718 case "$d_setpwent_r_proto:$usethreads" in
15719 ":define") d_setpwent_r_proto=define
a48ec845
JH
15720 set d_setpwent_r_proto setpwent_r $hdrs
15721 eval $hasproto ;;
15722 *) ;;
15723 esac
15724 case "$d_setpwent_r_proto" in
15725 define)
10bc17b6
JH
15726 case "$setpwent_r_proto" in
15727 ''|0) try='int setpwent_r(FILE**);'
15728 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15729 esac
15730 case "$setpwent_r_proto" in
15731 ''|0) try='void setpwent_r(FILE**);'
15732 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15733 esac
15734 case "$setpwent_r_proto" in
90e831dc 15735 ''|0) d_setpwent_r=undef
10bc17b6 15736 setpwent_r_proto=0
a48ec845 15737 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15738 * ) case "$setpwent_r_proto" in
15739 REENTRANT_PROTO*) ;;
15740 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15741 esac
15742 echo "Prototype: $try" ;;
15743 esac
15744 ;;
c18e646a
JH
15745 *) case "$usethreads" in
15746 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15747 esac
90e831dc
SB
15748 d_setpwent_r=undef
15749 setpwent_r_proto=0
c18e646a 15750 ;;
a48ec845
JH
15751 esac
15752 ;;
10bc17b6
JH
15753*) setpwent_r_proto=0
15754 ;;
15755esac
15756
b4eb6b3d
JH
15757: see if setregid exists
15758set setregid d_setregid
15759eval $inlibc
15760set setresgid d_setresgid
15761eval $inlibc
15762
15763: see if setreuid exists
15764set setreuid d_setreuid
15765eval $inlibc
15766set setresuid d_setresuid
15767eval $inlibc
15768
15769: see if setrgid exists
15770set setrgid d_setrgid
15771eval $inlibc
15772
15773: see if setruid exists
15774set setruid d_setruid
15775eval $inlibc
15776
15777: see if setservent exists
15778set setservent d_setsent
15779eval $inlibc
15780
10bc17b6
JH
15781: see if setservent_r exists
15782set setservent_r d_setservent_r
15783eval $inlibc
15784case "$d_setservent_r" in
15785"$define")
15786 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15787 case "$d_setservent_r_proto:$usethreads" in
15788 ":define") d_setservent_r_proto=define
a48ec845
JH
15789 set d_setservent_r_proto setservent_r $hdrs
15790 eval $hasproto ;;
15791 *) ;;
15792 esac
15793 case "$d_setservent_r_proto" in
15794 define)
10bc17b6
JH
15795 case "$setservent_r_proto" in
15796 ''|0) try='int setservent_r(int, struct servent_data*);'
15797 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15798 esac
15799 case "$setservent_r_proto" in
15800 ''|0) try='void setservent_r(int, struct servent_data*);'
15801 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15802 esac
15803 case "$setservent_r_proto" in
90e831dc 15804 ''|0) d_setservent_r=undef
10bc17b6 15805 setservent_r_proto=0
a48ec845 15806 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15807 * ) case "$setservent_r_proto" in
15808 REENTRANT_PROTO*) ;;
15809 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15810 esac
15811 echo "Prototype: $try" ;;
15812 esac
15813 ;;
c18e646a
JH
15814 *) case "$usethreads" in
15815 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15816 esac
90e831dc
SB
15817 d_setservent_r=undef
15818 setservent_r_proto=0
c18e646a 15819 ;;
a48ec845
JH
15820 esac
15821 ;;
10bc17b6
JH
15822*) setservent_r_proto=0
15823 ;;
15824esac
15825
b4eb6b3d
JH
15826: see if setsid exists
15827set setsid d_setsid
15828eval $inlibc
15829
15830: see if setvbuf exists
15831set setvbuf d_setvbuf
15832eval $inlibc
15833
15834: see if sfio.h is available
15835set sfio.h i_sfio
15836eval $inhdr
15837
15838
15839: see if sfio library is available
15840case "$i_sfio" in
15841$define)
15842 val=''
15843 set sfreserve val
15844 eval $inlibc
15845 ;;
15846*)
15847 val="$undef"
15848 ;;
15849esac
15850: Ok, but do we want to use it.
15851case "$val" in
15852$define)
15853 case "$usesfio" in
15854 true|$define|[yY]*) dflt='y';;
15855 *) dflt='n';;
15856 esac
15857 echo "$package can use the sfio library, but it is experimental."
15858 case "$useperlio" in
15859 "$undef")
15860 echo "For sfio also the PerlIO abstraction layer is needed."
15861 echo "Earlier you said you wouldn't want that."
15862 ;;
15863 esac
15864 rp="You seem to have sfio available, do you want to try using it?"
15865 . ./myread
15866 case "$ans" in
15867 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15868 useperlio="$define"
15869 val="$define"
15870 ;;
15871 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15872 val="$undef"
b4eb6b3d
JH
15873 ;;
15874 esac
15875 ;;
15876*) case "$usesfio" in
15877 true|$define|[yY]*)
15878 echo "Sorry, cannot find sfio on this machine." >&4
15879 echo "Ignoring your setting of usesfio=$usesfio." >&4
15880 val="$undef"
15881 ;;
15882 esac
15883 ;;
15884esac
15885set d_sfio
15886eval $setvar
15887case "$d_sfio" in
15888$define) usesfio='true';;
15889*) usesfio='false';;
15890esac
3659ebf1
JH
15891case "$d_sfio" in
15892$define) ;;
15893*) : Remove sfio from list of libraries to use
7483f793
JH
15894 case "$libs" in
15895 *-lsfio*)
15896 echo "Removing unneeded -lsfio from library list" >&4
15897 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15898 shift
15899 libs="$*"
15900 echo "libs = $libs" >&4
15901 ;;
15902 esac
3659ebf1
JH
15903;;
15904esac
15905
b4eb6b3d
JH
15906
15907: see if shmctl exists
15908set shmctl d_shmctl
15909eval $inlibc
15910
15911: see if shmget exists
15912set shmget d_shmget
15913eval $inlibc
15914
15915: see if shmat exists
15916set shmat d_shmat
15917eval $inlibc
15918: see what shmat returns
15919case "$d_shmat" in
15920"$define")
15921 $cat >shmat.c <<'END'
15922#include <sys/shm.h>
15923void *shmat();
15924END
15925 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15926 shmattype='void *'
15927 else
15928 shmattype='char *'
15929 fi
15930 echo "and it returns ($shmattype)." >&4
15931 : see if a prototype for shmat is available
15932 xxx=`./findhdr sys/shm.h`
15933 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15934 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15935 val="$define"
15936 else
15937 val="$undef"
15938 fi
15939 $rm -f shmat.[co]
15940 ;;
15941*)
15942 val="$undef"
15943 ;;
15944esac
15945set d_shmatprototype
15946eval $setvar
15947
15948: see if shmdt exists
15949set shmdt d_shmdt
15950eval $inlibc
15951
15952: see how much of the 'shm*(2)' library is present.
15953h_shm=true
15954echo " "
15955case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15956*"$undef"*) h_shm=false;;
15957esac
15958case "$osname" in
15959freebsd)
15960 case "`ipcs 2>&1`" in
15961 "SVID shared memory"*"not configured"*)
15962 echo "Your $osname does not have the shm*(2) configured." >&4
15963 h_shm=false
15964 val="$undef"
15965 set shmctl d_shmctl
15966 evat $setvar
15967 set shmget d_shmget
15968 evat $setvar
15969 set shmat d_shmat
15970 evat $setvar
15971 set shmdt d_shmdt
15972 evat $setvar
15973 ;;
15974 esac
15975 ;;
15976esac
15977: we could also check for sys/ipc.h ...
15978if $h_shm && $test `./findhdr sys/shm.h`; then
15979 echo "You have the full shm*(2) library." >&4
15980 val="$define"
15981else
15982 echo "You don't have the full shm*(2) library." >&4
15983 val="$undef"
15984fi
15985set d_shm
15986eval $setvar
15987
15988echo " "
15989: see if we have sigaction
15990if set sigaction val -f d_sigaction; eval $csym; $val; then
15991 echo 'sigaction() found.' >&4
073b6de5 15992 $cat > try.c <<EOP
b4eb6b3d
JH
15993#include <stdio.h>
15994#include <sys/types.h>
15995#include <signal.h>
073b6de5
JH
15996#$i_stdlib I_STDLIB
15997#ifdef I_STDLIB
15998#include <stdlib.h>
15999#endif
b4eb6b3d
JH
16000int main()
16001{
16002 struct sigaction act, oact;
16003 act.sa_flags = 0;
16004 oact.sa_handler = 0;
16005 /* so that act and oact are used */
16006 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16007}
16008EOP
16009 set try
16010 if eval $compile_ok; then
16011 val="$define"
16012 else
16013 echo "But you don't seem to have a useable struct sigaction." >&4
16014 val="$undef"
16015 fi
16016else
16017 echo 'sigaction NOT found.' >&4
16018 val="$undef"
16019fi
16020set d_sigaction; eval $setvar
16021$rm -f try try$_o try.c
16022
983dbef6
JH
16023: see if sigprocmask exists
16024set sigprocmask d_sigprocmask
16025eval $inlibc
16026
b4eb6b3d
JH
16027: see if sigsetjmp exists
16028echo " "
16029case "$d_sigsetjmp" in
16030'')
c727eafa 16031 $cat >try.c <<EOP
b4eb6b3d 16032#include <setjmp.h>
d1daaddf
JH
16033#$i_stdlib I_STDLIB
16034#ifdef I_STDLIB
16035#include <stdlib.h>
16036#endif
b4eb6b3d
JH
16037sigjmp_buf env;
16038int set = 1;
16039int main()
16040{
16041 if (sigsetjmp(env,1))
16042 exit(set);
16043 set = 0;
16044 siglongjmp(env, 1);
16045 exit(1);
16046}
16047EOP
16048 set try
16049 if eval $compile; then
5440bc8e 16050 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
16051 echo "POSIX sigsetjmp found." >&4
16052 val="$define"
16053 else
16054 $cat >&4 <<EOM
16055Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16056I'll ignore them.
16057EOM
16058 val="$undef"
16059 fi
16060 else
16061 echo "sigsetjmp not found." >&4
16062 val="$undef"
16063 fi
16064 ;;
16065*) val="$d_sigsetjmp"
16066 case "$d_sigsetjmp" in
16067 $define) echo "POSIX sigsetjmp found." >&4;;
16068 $undef) echo "sigsetjmp not found." >&4;;
16069 esac
16070 ;;
16071esac
16072set d_sigsetjmp
16073eval $setvar
16074$rm -f try.c try
16075
49a78c82
JH
16076: see if sockatmark exists
16077set sockatmark d_sockatmark
16078eval $inlibc
16079
2ef53570
JH
16080: see if prototype for sockatmark is available
16081echo " "
16082set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16083eval $hasproto
16084
b4eb6b3d
JH
16085: see if socks5_init exists
16086set socks5_init d_socks5_init
16087eval $inlibc
16088
10bc17b6
JH
16089: see if srand48_r exists
16090set srand48_r d_srand48_r
16091eval $inlibc
16092case "$d_srand48_r" in
16093"$define")
16094 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16095 case "$d_srand48_r_proto:$usethreads" in
16096 ":define") d_srand48_r_proto=define
a48ec845
JH
16097 set d_srand48_r_proto srand48_r $hdrs
16098 eval $hasproto ;;
16099 *) ;;
16100 esac
16101 case "$d_srand48_r_proto" in
16102 define)
10bc17b6
JH
16103 case "$srand48_r_proto" in
16104 ''|0) try='int srand48_r(long, struct drand48_data*);'
16105 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16106 esac
16107 case "$srand48_r_proto" in
90e831dc 16108 ''|0) d_srand48_r=undef
10bc17b6 16109 srand48_r_proto=0
a48ec845 16110 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16111 * ) case "$srand48_r_proto" in
16112 REENTRANT_PROTO*) ;;
16113 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16114 esac
16115 echo "Prototype: $try" ;;
16116 esac
16117 ;;
c18e646a
JH
16118 *) case "$usethreads" in
16119 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16120 esac
90e831dc
SB
16121 d_srand48_r=undef
16122 srand48_r_proto=0
c18e646a 16123 ;;
a48ec845
JH
16124 esac
16125 ;;
10bc17b6
JH
16126*) srand48_r_proto=0
16127 ;;
16128esac
16129
16130: see if srandom_r exists
16131set srandom_r d_srandom_r
16132eval $inlibc
16133case "$d_srandom_r" in
16134"$define")
16135 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
16136 case "$d_srandom_r_proto:$usethreads" in
16137 ":define") d_srandom_r_proto=define
a48ec845
JH
16138 set d_srandom_r_proto srandom_r $hdrs
16139 eval $hasproto ;;
16140 *) ;;
16141 esac
16142 case "$d_srandom_r_proto" in
16143 define)
10bc17b6
JH
16144 case "$srandom_r_proto" in
16145 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16146 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16147 esac
16148 case "$srandom_r_proto" in
90e831dc 16149 ''|0) d_srandom_r=undef
10bc17b6 16150 srandom_r_proto=0
a48ec845 16151 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16152 * ) case "$srandom_r_proto" in
16153 REENTRANT_PROTO*) ;;
16154 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16155 esac
16156 echo "Prototype: $try" ;;
16157 esac
16158 ;;
c18e646a
JH
16159 *) case "$usethreads" in
16160 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16161 esac
90e831dc
SB
16162 d_srandom_r=undef
16163 srandom_r_proto=0
c18e646a 16164 ;;
a48ec845
JH
16165 esac
16166 ;;
10bc17b6
JH
16167*) srandom_r_proto=0
16168 ;;
16169esac
16170
eef837ea
JH
16171: see if prototype for setresgid is available
16172echo " "
16173set d_sresgproto setresgid $i_unistd unistd.h
16174eval $hasproto
16175
640374d0
JH
16176: see if prototype for setresuid is available
16177echo " "
16178set d_sresuproto setresuid $i_unistd unistd.h
16179eval $hasproto
16180
b4eb6b3d
JH
16181: see if sys/stat.h is available
16182set sys/stat.h i_sysstat
16183eval $inhdr
16184
16185
16186: see if stat knows about block sizes
16187echo " "
16188echo "Checking to see if your struct stat has st_blocks field..." >&4
16189set d_statblks stat st_blocks $i_sysstat sys/stat.h
16190eval $hasfield
16191
16192
16193: see if this is a sys/vfs.h system
16194set sys/vfs.h i_sysvfs
16195eval $inhdr
16196
16197
16198: see if this is a sys/statfs.h system
16199set sys/statfs.h i_sysstatfs
16200eval $inhdr
16201
16202
16203echo " "
16204echo "Checking to see if your system supports struct statfs..." >&4
16205set 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
16206eval $hasstruct
16207case "$d_statfs_s" in
16208"$define") echo "Yes, it does." ;;
16209*) echo "No, it doesn't." ;;
16210esac
16211
16212
16213
16214: see if struct statfs knows about f_flags
16215case "$d_statfs_s" in
16216define)
16217 echo " "
16218 echo "Checking to see if your struct statfs has f_flags field..." >&4
16219 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
16220 eval $hasfield
16221 ;;
16222*) val="$undef"
16223 set d_statfs_f_flags
16224 eval $setvar
16225 ;;
16226esac
16227case "$d_statfs_f_flags" in
16228"$define") echo "Yes, it does." ;;
16229*) echo "No, it doesn't." ;;
16230esac
16231
b4eb6b3d
JH
16232$cat >&4 <<EOM
16233Checking how to access stdio streams by file descriptor number...
16234EOM
16235case "$stdio_stream_array" in
16236'') $cat >try.c <<EOCP
16237#include <stdio.h>
16238int main() {
16239 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16240 printf("yes\n");
16241}
16242EOCP
16243 for s in _iob __iob __sF
16244 do
16245 set try -DSTDIO_STREAM_ARRAY=$s
16246 if eval $compile; then
5440bc8e 16247 case "`$run ./try`" in
b4eb6b3d
JH
16248 yes) stdio_stream_array=$s; break ;;
16249 esac
16250 fi
16251 done
16252 $rm -f try.* try$exe_ext
16253esac
16254case "$stdio_stream_array" in
16255'') $cat >&4 <<EOM
16256I can't figure out how to access stdio streams by file descriptor number.
16257EOM
16258 d_stdio_stream_array="$undef"
16259 ;;
16260*) $cat >&4 <<EOM
16261You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16262EOM
16263 d_stdio_stream_array="$define"
16264 ;;
16265esac
16266
16267: see if strcoll exists
16268set strcoll d_strcoll
16269eval $inlibc
16270
16271: check for structure copying
16272echo " "
16273echo "Checking to see if your C compiler can copy structs..." >&4
16274$cat >try.c <<'EOCP'
76f47787 16275int main()
b4eb6b3d
JH
16276{
16277 struct blurfl {
16278 int dyick;
16279 } foo, bar;
16280
16281 foo = bar;
16282}
16283EOCP
16284if $cc -c try.c >/dev/null 2>&1 ; then
16285 val="$define"
16286 echo "Yup, it can."
16287else
16288 val="$undef"
16289 echo "Nope, it can't."
16290fi
16291set d_strctcpy
16292eval $setvar
16293$rm -f try.*
16294
16295: see if strerror and/or sys_errlist[] exist
16296echo " "
16297if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16298 if set strerror val -f d_strerror; eval $csym; $val; then
16299 echo 'strerror() found.' >&4
16300 d_strerror="$define"
16301 d_strerrm='strerror(e)'
16302 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16303 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16304 d_syserrlst="$define"
16305 else
16306 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16307 d_syserrlst="$undef"
16308 fi
16309 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16310 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16311 echo 'strerror() found in string header.' >&4
16312 d_strerror="$define"
16313 d_strerrm='strerror(e)'
16314 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16315 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16316 d_syserrlst="$define"
16317 else
16318 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16319 d_syserrlst="$undef"
16320 fi
16321 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16322 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16323 d_strerror="$undef"
16324 d_syserrlst="$define"
16325 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16326 else
16327 echo 'strerror() and sys_errlist[] NOT found.' >&4
16328 d_strerror="$undef"
16329 d_syserrlst="$undef"
16330 d_strerrm='"unknown"'
16331 fi
16332fi
16333
10bc17b6
JH
16334: see if strerror_r exists
16335set strerror_r d_strerror_r
16336eval $inlibc
16337case "$d_strerror_r" in
16338"$define")
16339 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
c18e646a
JH
16340 case "$d_strerror_r_proto:$usethreads" in
16341 ":define") d_strerror_r_proto=define
a48ec845
JH
16342 set d_strerror_r_proto strerror_r $hdrs
16343 eval $hasproto ;;
16344 *) ;;
16345 esac
16346 case "$d_strerror_r_proto" in
16347 define)
10bc17b6
JH
16348 case "$strerror_r_proto" in
16349 ''|0) try='int strerror_r(int, char*, size_t);'
16350 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16351 esac
16352 case "$strerror_r_proto" in
16353 ''|0) try='int strerror_r(int, char*, int);'
16354 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16355 esac
16356 case "$strerror_r_proto" in
16357 ''|0) try='char* strerror_r(int, char*, size_t);'
16358 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16359 esac
16360 case "$strerror_r_proto" in
90e831dc 16361 ''|0) d_strerror_r=undef
10bc17b6 16362 strerror_r_proto=0
a48ec845 16363 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16364 * ) case "$strerror_r_proto" in
16365 REENTRANT_PROTO*) ;;
16366 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16367 esac
16368 echo "Prototype: $try" ;;
16369 esac
16370 ;;
c18e646a
JH
16371 *) case "$usethreads" in
16372 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16373 esac
90e831dc
SB
16374 d_strerror_r=undef
16375 strerror_r_proto=0
c18e646a 16376 ;;
a48ec845
JH
16377 esac
16378 ;;
10bc17b6
JH
16379*) strerror_r_proto=0
16380 ;;
16381esac
16382
b3c85772
JH
16383: see if strftime exists
16384set strftime d_strftime
16385eval $inlibc
16386
b4eb6b3d
JH
16387: see if strtod exists
16388set strtod d_strtod
16389eval $inlibc
16390
16391: see if strtol exists
16392set strtol d_strtol
16393eval $inlibc
16394
16395: see if strtold exists
16396set strtold d_strtold
16397eval $inlibc
16398
16399: see if strtoll exists
16400set strtoll d_strtoll
16401eval $inlibc
16402
16403case "$d_longlong-$d_strtoll" in
16404"$define-$define")
16405 $cat <<EOM
16406Checking whether your strtoll() works okay...
16407EOM
16408 $cat >try.c <<'EOCP'
16409#include <errno.h>
16410#ifdef __hpux
16411#define strtoll __strtoll
16412#endif
e75931a7
YST
16413#ifdef __EMX__
16414#define strtoll _strtoll
16415#endif
b4eb6b3d
JH
16416#include <stdio.h>
16417extern long long int strtoll(char *s, char **, int);
16418static int bad = 0;
16419int check(char *s, long long ell, int een) {
16420 long long gll;
16421 errno = 0;
16422 gll = strtoll(s, 0, 10);
16423 if (!((gll == ell) && (errno == een)))
16424 bad++;
16425}
16426int main() {
16427 check(" 1", 1LL, 0);
16428 check(" 0", 0LL, 0);
16429 check("-1", -1LL, 0);
16430 check("-9223372036854775808", -9223372036854775808LL, 0);
16431 check("-9223372036854775808", -9223372036854775808LL, 0);
16432 check(" 9223372036854775807", 9223372036854775807LL, 0);
16433 check("-9223372036854775808", -9223372036854775808LL, 0);
16434 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
16435 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16436 if (!bad)
16437 printf("ok\n");
16438}
16439EOCP
16440 set try
16441 if eval $compile; then
5440bc8e 16442 yyy=`$run ./try`
e75931a7 16443 case "$yyy" in
b4eb6b3d
JH
16444 ok) echo "Your strtoll() seems to be working okay." ;;
16445 *) cat <<EOM >&4
16446Your strtoll() doesn't seem to be working okay.
16447EOM
16448 d_strtoll="$undef"
16449 ;;
69eadf66 16450 esac
e75931a7
YST
16451 else
16452 echo "(I can't seem to compile the test program--assuming it doesn't)"
16453 d_strtoll="$undef"
b4eb6b3d
JH
16454 fi
16455 ;;
16456esac
16457
28e5dec8
JH
16458: see if strtoq exists
16459set strtoq d_strtoq
16460eval $inlibc
16461
b4eb6b3d
JH
16462: see if strtoul exists
16463set strtoul d_strtoul
16464eval $inlibc
16465
d0e6d399
NC
16466case "$d_strtoul" in
16467"$define")
16468 $cat <<EOM
16469Checking whether your strtoul() works okay...
16470EOM
16471 $cat >try.c <<'EOCP'
16472#include <errno.h>
16473#include <stdio.h>
16474extern unsigned long int strtoul(char *s, char **, int);
16475static int bad = 0;
16476void check(char *s, unsigned long eul, int een) {
16477 unsigned long gul;
16478 errno = 0;
16479 gul = strtoul(s, 0, 10);
16480 if (!((gul == eul) && (errno == een)))
16481 bad++;
16482}
16483int main() {
16484 check(" 1", 1L, 0);
16485 check(" 0", 0L, 0);
16486EOCP
16487 case "$longsize" in
16488 8)
16489 $cat >>try.c <<'EOCP'
09c0d2c4
JH
16490 check("18446744073709551615", 18446744073709551615UL, 0);
16491 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 16492#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 16493 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
16494 check("-18446744073709551614", 2, 0);
16495 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
16496 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16497 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 16498#endif
d0e6d399
NC
16499EOCP
16500 ;;
16501 4)
16502 $cat >>try.c <<'EOCP'
16503 check("4294967295", 4294967295UL, 0);
16504 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 16505#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
16506 check("-1", 4294967295UL, 0);
16507 check("-4294967294", 2, 0);
16508 check("-4294967295", 1, 0);
16509 check("-4294967296", 4294967295UL, ERANGE);
16510 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 16511#endif
d0e6d399
NC
16512EOCP
16513 ;;
16514 *)
16515: Should we write these tests to be more portable by sprintf-ing
16516: ~0 and then manipulating that char string as input for strtol?
16517 ;;
16518 esac
16519 $cat >>try.c <<'EOCP'
16520 if (!bad)
16521 printf("ok\n");
16522 return 0;
16523}
16524EOCP
16525 set try
16526 if eval $compile; then
5440bc8e 16527 case "`$run ./try`" in
d0e6d399
NC
16528 ok) echo "Your strtoul() seems to be working okay." ;;
16529 *) cat <<EOM >&4
16530Your strtoul() doesn't seem to be working okay.
16531EOM
16532 d_strtoul="$undef"
16533 ;;
16534 esac
16535 fi
16536 ;;
16537esac
16538
b4eb6b3d
JH
16539: see if strtoull exists
16540set strtoull d_strtoull
16541eval $inlibc
16542
16543case "$d_longlong-$d_strtoull" in
16544"$define-$define")
16545 $cat <<EOM
16546Checking whether your strtoull() works okay...
16547EOM
16548 $cat >try.c <<'EOCP'
16549#include <errno.h>
16550#ifdef __hpux
16551#define strtoull __strtoull
16552#endif
16553#include <stdio.h>
16554extern unsigned long long int strtoull(char *s, char **, int);
16555static int bad = 0;
16556int check(char *s, long long eull, int een) {
16557 long long gull;
16558 errno = 0;
16559 gull = strtoull(s, 0, 10);
16560 if (!((gull == eull) && (errno == een)))
16561 bad++;
16562}
16563int main() {
d0e6d399
NC
16564 check(" 1", 1LL, 0);
16565 check(" 0", 0LL, 0);
16566 check("18446744073709551615", 18446744073709551615ULL, 0);
16567 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16568#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
16569 check("-1", 18446744073709551615ULL, 0);
16570 check("-18446744073709551614", 2LL, 0);
16571 check("-18446744073709551615", 1LL, 0);
16572 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16573 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16574#endif
b4eb6b3d
JH
16575 if (!bad)
16576 printf("ok\n");
16577}
16578EOCP
16579 set try
16580 if eval $compile; then
5440bc8e 16581 case "`$run ./try`" in
b4eb6b3d
JH
16582 ok) echo "Your strtoull() seems to be working okay." ;;
16583 *) cat <<EOM >&4
16584Your strtoull() doesn't seem to be working okay.
16585EOM
16586 d_strtoull="$undef"
16587 ;;
16588 esac
16589 fi
16590 ;;
16591esac
16592
16593: see if strtouq exists
16594set strtouq d_strtouq
16595eval $inlibc
16596
d0e6d399
NC
16597case "$d_strtouq" in
16598"$define")
16599 $cat <<EOM
16600Checking whether your strtouq() works okay...
16601EOM
16602 $cat >try.c <<'EOCP'
16603#include <errno.h>
16604#include <stdio.h>
16605extern unsigned long long int strtouq(char *s, char **, int);
16606static int bad = 0;
16607void check(char *s, unsigned long long eull, int een) {
16608 unsigned long long gull;
16609 errno = 0;
16610 gull = strtouq(s, 0, 10);
16611 if (!((gull == eull) && (errno == een)))
16612 bad++;
16613}
16614int main() {
16615 check(" 1", 1LL, 0);
16616 check(" 0", 0LL, 0);
16617 check("18446744073709551615", 18446744073709551615ULL, 0);
16618 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16619#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
16620 check("-1", 18446744073709551615ULL, 0);
16621 check("-18446744073709551614", 2LL, 0);
16622 check("-18446744073709551615", 1LL, 0);
16623 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16624 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16625#endif
d0e6d399
NC
16626 if (!bad)
16627 printf("ok\n");
16628 return 0;
16629}
16630EOCP
16631 set try
16632 if eval $compile; then
5440bc8e 16633 case "`$run ./try`" in
d0e6d399
NC
16634 ok) echo "Your strtouq() seems to be working okay." ;;
16635 *) cat <<EOM >&4
16636Your strtouq() doesn't seem to be working okay.
16637EOM
16638 d_strtouq="$undef"
16639 ;;
16640 esac
16641 fi
16642 ;;
16643esac
16644
b4eb6b3d
JH
16645: see if strxfrm exists
16646set strxfrm d_strxfrm
16647eval $inlibc
16648
16649: see if symlink exists
16650set symlink d_symlink
16651eval $inlibc
16652
16653: see if syscall exists
16654set syscall d_syscall
16655eval $inlibc
16656
2ef53570
JH
16657: see if prototype for syscall is available
16658echo " "
16659set d_syscallproto syscall $i_unistd unistd.h
16660eval $hasproto
16661
b4eb6b3d
JH
16662: see if sysconf exists
16663set sysconf d_sysconf
16664eval $inlibc
16665
16666: see if system exists
16667set system d_system
16668eval $inlibc
16669
16670: see if tcgetpgrp exists
16671set tcgetpgrp d_tcgetpgrp
16672eval $inlibc
16673
16674: see if tcsetpgrp exists
16675set tcsetpgrp d_tcsetpgrp
16676eval $inlibc
16677
16678: see if prototype for telldir is available
16679echo " "
16680set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16681eval $hasproto
16682
ad493445
MB
16683: see if time exists
16684echo " "
16685if test "X$d_time" = X -o X"$timetype" = X; then
16686 if set time val -f d_time; eval $csym; $val; then
16687 echo 'time() found.' >&4
16688 val="$define"
16689 rp="What is the type returned by time() on this system?"
16690 set time_t timetype long stdio.h sys/types.h
16691 eval $typedef_ask
16692 else
16693 echo 'time() not found, hope that will do.' >&4
16694 val="$undef"
16695 timetype='int';
16696 fi
16697 set d_time
16698 eval $setvar
16699fi
16700
b4eb6b3d
JH
16701: see if this is a sys/times.h system
16702set sys/times.h i_systimes
16703eval $inhdr
16704
16705: see if times exists
16706echo " "
16707if set times val -f d_times; eval $csym; $val; then
16708 echo 'times() found.' >&4
16709 d_times="$define"
16710 inc=''
16711 case "$i_systimes" in
16712 "$define") inc='sys/times.h';;
16713 esac
16714 rp="What is the type returned by times() on this system?"
16715 set clock_t clocktype long stdio.h sys/types.h $inc
16716 eval $typedef_ask
16717else
16718 echo 'times() NOT found, hope that will do.' >&4
16719 d_times="$undef"
16720 clocktype='int'
16721fi
16722
10bc17b6
JH
16723: see if tmpnam_r exists
16724set tmpnam_r d_tmpnam_r
16725eval $inlibc
16726case "$d_tmpnam_r" in
16727"$define")
31ee0cb7 16728 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
16729 case "$d_tmpnam_r_proto:$usethreads" in
16730 ":define") d_tmpnam_r_proto=define
a48ec845
JH
16731 set d_tmpnam_r_proto tmpnam_r $hdrs
16732 eval $hasproto ;;
16733 *) ;;
16734 esac
16735 case "$d_tmpnam_r_proto" in
16736 define)
10bc17b6
JH
16737 case "$tmpnam_r_proto" in
16738 ''|0) try='char* tmpnam_r(char*);'
16739 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16740 esac
16741 case "$tmpnam_r_proto" in
90e831dc 16742 ''|0) d_tmpnam_r=undef
10bc17b6 16743 tmpnam_r_proto=0
a48ec845 16744 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16745 * ) case "$tmpnam_r_proto" in
16746 REENTRANT_PROTO*) ;;
16747 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16748 esac
16749 echo "Prototype: $try" ;;
16750 esac
16751 ;;
c18e646a
JH
16752 *) case "$usethreads" in
16753 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16754 esac
90e831dc
SB
16755 d_tmpnam_r=undef
16756 tmpnam_r_proto=0
c18e646a 16757 ;;
a48ec845
JH
16758 esac
16759 ;;
10bc17b6
JH
16760*) tmpnam_r_proto=0
16761 ;;
16762esac
16763
b4eb6b3d
JH
16764: see if truncate exists
16765set truncate d_truncate
16766eval $inlibc
16767
10bc17b6
JH
16768: see if ttyname_r exists
16769set ttyname_r d_ttyname_r
16770eval $inlibc
16771case "$d_ttyname_r" in
16772"$define")
16773 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
16774 case "$d_ttyname_r_proto:$usethreads" in
16775 ":define") d_ttyname_r_proto=define
a48ec845
JH
16776 set d_ttyname_r_proto ttyname_r $hdrs
16777 eval $hasproto ;;
16778 *) ;;
16779 esac
16780 case "$d_ttyname_r_proto" in
16781 define)
10bc17b6
JH
16782 case "$ttyname_r_proto" in
16783 ''|0) try='int ttyname_r(int, char*, size_t);'
16784 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16785 esac
16786 case "$ttyname_r_proto" in
16787 ''|0) try='int ttyname_r(int, char*, int);'
16788 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16789 esac
16790 case "$ttyname_r_proto" in
16791 ''|0) try='char* ttyname_r(int, char*, int);'
16792 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16793 esac
16794 case "$ttyname_r_proto" in
90e831dc 16795 ''|0) d_ttyname_r=undef
10bc17b6 16796 ttyname_r_proto=0
a48ec845 16797 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16798 * ) case "$ttyname_r_proto" in
16799 REENTRANT_PROTO*) ;;
16800 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16801 esac
16802 echo "Prototype: $try" ;;
16803 esac
16804 ;;
c18e646a
JH
16805 *) case "$usethreads" in
16806 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16807 esac
90e831dc
SB
16808 d_ttyname_r=undef
16809 ttyname_r_proto=0
c18e646a 16810 ;;
a48ec845
JH
16811 esac
16812 ;;
10bc17b6
JH
16813*) ttyname_r_proto=0
16814 ;;
16815esac
16816
b4eb6b3d
JH
16817: see if tzname[] exists
16818echo " "
16819if set tzname val -a d_tzname; eval $csym; $val; then
16820 val="$define"
16821 echo 'tzname[] found.' >&4
16822else
16823 val="$undef"
16824 echo 'tzname[] NOT found.' >&4
16825fi
16826set d_tzname
16827eval $setvar
16828
4e0554ec
JH
16829case "$osname" in
16830next|rhapsody|darwin) multiarch="$define" ;;
16831esac
16832case "$multiarch" in
16833''|[nN]*) multiarch="$undef" ;;
16834esac
16835
24412007 16836: check for ordering of bytes in a UV
4e0554ec 16837echo " "
5440bc8e 16838case "$usecrosscompile$multiarch" in
4e0554ec
JH
16839*$define*)
16840 $cat <<EOM
16841You seem to be either cross-compiling or doing a multiarchitecture build,
16842skipping the byteorder check.
16843
16844EOM
5440bc8e 16845 byteorder='ffff'
4e0554ec
JH
16846 ;;
16847*)
16848 case "$byteorder" in
16849 '')
16850 $cat <<'EOM'
16851In the following, larger digits indicate more significance. A big-endian
16852machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16853little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16854machines may have weird orders like 3412. A Cray will report 87654321,
16855an Alpha will report 12345678. If the test program works the default is
16856probably right.
16857I'm now running the test program...
16858EOM
24412007 16859 $cat >try.c <<EOCP
4e0554ec 16860#include <stdio.h>
55954f19
JH
16861#$i_stdlib I_STDLIB
16862#ifdef I_STDLIB
16863#include <stdlib.h>
16864#endif
24412007
JH
16865#include <sys/types.h>
16866typedef $uvtype UV;
4e0554ec
JH
16867int main()
16868{
16869 int i;
16870 union {
24412007
JH
16871 UV l;
16872 char c[$uvsize];
4e0554ec
JH
16873 } u;
16874
24412007 16875 if ($uvsize > 4)
b5ded3e5 16876 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
4e0554ec 16877 else
a4c53327 16878 u.l = (UV)0x04030201;
24412007 16879 for (i = 0; i < $uvsize; i++)
4e0554ec
JH
16880 printf("%c", u.c[i]+'0');
16881 printf("\n");
16882 exit(0);
16883}
16884EOCP
16885 xxx_prompt=y
16886 set try
16887 if eval $compile && ./try > /dev/null; then
5440bc8e 16888 dflt=`$run ./try`
4e0554ec
JH
16889 case "$dflt" in
16890 [1-4][1-4][1-4][1-4]|12345678|87654321)
16891 echo "(The test program ran ok.)"
16892 echo "byteorder=$dflt"
16893 xxx_prompt=n
16894 ;;
16895 ????|????????) echo "(The test program ran ok.)" ;;
16896 *) echo "(The test program didn't run right for some reason.)" ;;
16897 esac
16898 else
16899 dflt='4321'
16900 cat <<'EOM'
16901(I can't seem to compile the test program. Guessing big-endian...)
16902EOM
16903 fi
16904 case "$xxx_prompt" in
16905 y)
24412007 16906 rp="What is the order of bytes in $uvtype?"
4e0554ec
JH
16907 . ./myread
16908 byteorder="$ans"
16909 ;;
16910 *) byteorder=$dflt
16911 ;;
16912 esac
16913 ;;
16914 esac
16915 $rm -f try.c try
16916 ;;
16917esac
16918
16919
16920$cat <<EOM
16921
16922Checking to see whether you can access character data unalignedly...
16923EOM
dc7b0a4f
JH
16924case "$d_u32align" in
16925'') $cat >try.c <<EOCP
4e0554ec 16926#include <stdio.h>
d1daaddf
JH
16927#$i_stdlib I_STDLIB
16928#ifdef I_STDLIB
16929#include <stdlib.h>
16930#endif
4e0554ec 16931#define U32 $u32type
d308175a
JH
16932#define BYTEORDER 0x$byteorder
16933#define U8 $u8type
9958dc3c
JH
16934#include <signal.h>
16935#ifdef SIGBUS
16936$signal_t bletch(s) int s; { exit(4); }
16937#endif
4e0554ec
JH
16938int main() {
16939#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
8906a23e 16940 U8 buf[8];
4e0554ec
JH
16941 U32 *up;
16942 int i;
16943
16944 if (sizeof(U32) != 4) {
16945 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16946 exit(1);
16947 }
16948
16949 fflush(stdout);
16950
9958dc3c
JH
16951#ifdef SIGBUS
16952 signal(SIGBUS, bletch);
16953#endif
16954
8906a23e
JH
16955 buf[0] = 0;
16956 buf[1] = 0;
16957 buf[2] = 0;
16958 buf[3] = 1;
7eac3fd6 16959 buf[4] = 0;
8906a23e
JH
16960 buf[5] = 0;
16961 buf[6] = 0;
7eac3fd6 16962 buf[7] = 1;
8906a23e 16963
4e0554ec
JH
16964 for (i = 0; i < 4; i++) {
16965 up = (U32*)(buf + i);
16966 if (! ((*up == 1 << (8*i)) || /* big-endian */
16967 (*up == 1 << (8*(3-i))) /* little-endian */
16968 )
16969 )
16970 {
16971 printf("read failed (%x)\n", *up);
16972 exit(2);
16973 }
16974 }
16975
16976 /* write test */
16977 for (i = 0; i < 4; i++) {
16978 up = (U32*)(buf + i);
16979 *up = 0xBeef;
16980 if (*up != 0xBeef) {
16981 printf("write failed (%x)\n", *up);
16982 exit(3);
16983 }
16984 }
16985
16986 exit(0);
16987#else
16988 printf("1\n");
16989 exit(1);
16990#endif
16991 return 0;
16992}
16993EOCP
16994set try
16995if eval $compile_ok; then
d308175a 16996 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 16997 $run ./try 2>&1 >/dev/null
4e0554ec
JH
16998 case "$?" in
16999 0) cat >&4 <<EOM
17000You can access character data pretty unalignedly.
17001EOM
17002 d_u32align="$undef"
17003 ;;
17004 *) cat >&4 <<EOM
17005It seems that you must access character data in an aligned manner.
17006EOM
17007 d_u32align="$define"
17008 ;;
17009 esac
4e0554ec
JH
17010else
17011 rp='Can you access character data at unaligned addresses?'
17012 dflt='n'
17013 . ./myread
17014 case "$ans" in
17015 [yY]*) d_u32align="$undef" ;;
17016 *) d_u32align="$define" ;;
17017 esac
17018fi
e36b5403 17019$rm -f core core.try.* try.core
dc7b0a4f
JH
17020;;
17021esac
4e0554ec
JH
17022
17023: see if ualarm exists
17024set ualarm d_ualarm
17025eval $inlibc
17026
b4eb6b3d
JH
17027: see if umask exists
17028set umask d_umask
17029eval $inlibc
17030
758a5d79
JH
17031: see if unordered exists
17032set unordered d_unordered
17033eval $inlibc
17034
4e0554ec
JH
17035: see if usleep exists
17036set usleep d_usleep
17037eval $inlibc
17038
2ef53570
JH
17039: see if prototype for usleep is available
17040echo " "
17041set d_usleepproto usleep $i_unistd unistd.h
17042eval $hasproto
17043
b4eb6b3d
JH
17044: see if ustat exists
17045set ustat d_ustat
17046eval $inlibc
17047
17048: backward compatibility for d_hvfork
17049if test X$d_hvfork != X; then
17050 d_vfork="$d_hvfork"
17051 d_hvfork=''
17052fi
17053: see if there is a vfork
17054val=''
17055set vfork val
17056eval $inlibc
17057
17058: Ok, but do we want to use it. vfork is reportedly unreliable in
17059: perl on Solaris 2.x, and probably elsewhere.
17060case "$val" in
17061$define)
17062 echo " "
17063 case "$usevfork" in
17064 false) dflt='n';;
17065 *) dflt='y';;
17066 esac
17067 cat <<'EOM'
17068
17069Perl can only use a vfork() that doesn't suffer from strict
17070restrictions on calling functions or modifying global data in
17071the child. For example, glibc-2.1 contains such a vfork()
17072that is unsuitable. If your system provides a proper fork()
17073call, chances are that you do NOT want perl to use vfork().
17074
17075EOM
17076 rp="Do you still want to use vfork()?"
17077 . ./myread
17078 case "$ans" in
17079 y|Y) ;;
17080 *)
17081 echo "Ok, we won't use vfork()."
17082 val="$undef"
17083 ;;
17084 esac
17085 ;;
17086esac
17087set d_vfork
17088eval $setvar
17089case "$d_vfork" in
17090$define) usevfork='true';;
17091*) usevfork='false';;
17092esac
17093
b4eb6b3d
JH
17094: see if closedir exists
17095set closedir d_closedir
17096eval $inlibc
17097
17098case "$d_closedir" in
17099"$define")
17100 echo " "
17101 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 17102 cat > try.c <<EOM
b4eb6b3d
JH
17103#$i_dirent I_DIRENT /**/
17104#$i_sysdir I_SYS_DIR /**/
17105#$i_sysndir I_SYS_NDIR /**/
17106#$i_systypes I_SYS_TYPES /**/
17107
17108#if defined(I_SYS_TYPES)
17109#include <sys/types.h>
17110#endif
17111#if defined(I_DIRENT)
17112#include <dirent.h>
17113#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17114#include <sys/dir.h>
17115#endif
17116#else
17117#ifdef I_SYS_NDIR
17118#include <sys/ndir.h>
17119#else
17120#ifdef I_SYS_DIR
17121#ifdef hp9000s500
17122#include <ndir.h> /* may be wrong in the future */
17123#else
17124#include <sys/dir.h>
17125#endif
17126#endif
17127#endif
17128#endif
17129int main() { return closedir(opendir(".")); }
17130EOM
5440bc8e 17131 set try
b4eb6b3d 17132 if eval $compile_ok; then
5440bc8e 17133 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
17134 echo "Yes, it does."
17135 val="$undef"
17136 else
17137 echo "No, it doesn't."
17138 val="$define"
17139 fi
17140 else
17141 echo "(I can't seem to compile the test program--assuming it doesn't)"
17142 val="$define"
17143 fi
17144 ;;
17145*)
17146 val="$undef";
17147 ;;
17148esac
17149set d_void_closedir
17150eval $setvar
5440bc8e 17151$rm -f try try.*
b4eb6b3d
JH
17152: see if there is a wait4
17153set wait4 d_wait4
17154eval $inlibc
17155
17156: see if waitpid exists
17157set waitpid d_waitpid
17158eval $inlibc
17159
17160: see if wcstombs exists
17161set wcstombs d_wcstombs
17162eval $inlibc
17163
17164: see if wctomb exists
17165set wctomb d_wctomb
17166eval $inlibc
17167
4e0554ec
JH
17168: see if writev exists
17169set writev d_writev
17170eval $inlibc
17171
b4eb6b3d
JH
17172: preserve RCS keywords in files with variable substitution, grrr
17173Date='$Date'
17174Id='$Id'
17175Log='$Log'
17176RCSfile='$RCSfile'
17177Revision='$Revision'
17178
b4eb6b3d
JH
17179: check for alignment requirements
17180echo " "
5440bc8e 17181case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
17182*$define*)
17183 $cat <<EOM
17184You seem to be either cross-compiling or doing a multiarchitecture build,
17185skipping the memory alignment check.
17186
17187EOM
17188 case "$alignbytes" in
17189 '') alignbytes=8 ;;
17190 esac
17191 ;;
17192*)
17193 case "$alignbytes" in
17194 '') echo "Checking alignment constraints..." >&4
17195 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17196 $cat >try.c <<'EOCP'
17197typedef long double NV;
17198EOCP
17199 else
17200 $cat >try.c <<'EOCP'
17201typedef double NV;
17202EOCP
17203 fi
17204 $cat >>try.c <<'EOCP'
17205#include <stdio.h>
17206struct foobar {
17207 char foo;
17208 NV bar;
17209} try_algn;
17210int main()
17211{
17212 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17213 return(0);
17214}
17215EOCP
17216 set try
17217 if eval $compile_ok; then
5440bc8e 17218 dflt=`$run ./try`
b4eb6b3d
JH
17219 else
17220 dflt='8'
17221 echo "(I can't seem to compile the test program...)"
17222 fi
17223 ;;
17224 *) dflt="$alignbytes"
17225 ;;
17226 esac
17227 rp="Doubles must be aligned on a how-many-byte boundary?"
17228 . ./myread
17229 alignbytes="$ans"
17230 $rm -f try.c try
17231 ;;
17232esac
17233
17234
17235: set the base revision
17236baserev=5.0
17237
3099fc99 17238: how do we concatenate cpp tokens here?
b4eb6b3d 17239echo " "
3099fc99 17240echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
b4eb6b3d
JH
17241$cat >cpp_stuff.c <<'EOCP'
17242#define RCAT(a,b)a/**/b
17243#define ACAT(a,b)a ## b
17244RCAT(Rei,ser)
17245ACAT(Cir,cus)
17246EOCP
17247$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17248if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17249 echo "Oh! Smells like ANSI's been here." >&4
17250 echo "We can catify or stringify, separately or together!"
17251 cpp_stuff=42
17252elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17253 echo "Ah, yes! The good old days!" >&4
17254 echo "However, in the good old days we don't know how to stringify and"
17255 echo "catify at the same time."
17256 cpp_stuff=1
17257else
17258 $cat >&4 <<EOM
3099fc99
CW
17259Hmm, I don't seem to be able to concatenate tokens with your cpp.
17260You're going to have to edit the values of CAT[2-5] in config.h...
b4eb6b3d
JH
17261EOM
17262 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17263fi
17264$rm -f cpp_stuff.*
17265
17266: see if this is a db.h system
17267set db.h i_db
17268eval $inhdr
17269
17270case "$i_db" in
17271$define)
17272 : Check db version.
17273 echo " "
17274 echo "Checking Berkeley DB version ..." >&4
17275 $cat >try.c <<EOCP
17276#$d_const HASCONST
17277#ifndef HASCONST
17278#define const
17279#endif
17280#include <sys/types.h>
17281#include <stdio.h>
55954f19
JH
17282#$i_stdlib I_STDLIB
17283#ifdef I_STDLIB
17284#include <stdlib.h>
17285#endif
b4eb6b3d 17286#include <db.h>
640374d0 17287int main(int argc, char *argv[])
b4eb6b3d
JH
17288{
17289#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17290 int Major, Minor, Patch ;
17291 unsigned long Version ;
17292 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
17293 if (argc == 2) {
17294 printf("%d %d %d %d %d %d\n",
17295 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17296 Major, Minor, Patch);
17297 exit(0);
17298 }
17299 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
17300
17301 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17302 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17303 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17304 Major, Minor, Patch) ;
17305
17306 /* check that db.h & libdb are compatible */
17307 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 17308 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
17309 exit(3);
17310 }
17311
640374d0 17312 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
17313
17314 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17315 + DB_VERSION_PATCH ;
17316
17317 /* needs to be >= 2.3.4 */
17318 if (Version < 2003004) {
17319 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 17320 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
17321 exit(2);
17322 }
17323
17324 exit(0);
17325#else
17326#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
17327 if (argc == 2) {
17328 printf("1 0 0\n");
17329 exit(0);
17330 }
17331 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
17332 exit(0); /* DB version < 2: the coast is clear. */
17333#else
17334 exit(1); /* <db.h> not Berkeley DB? */
17335#endif
17336#endif
17337}
17338EOCP
17339 set try
5440bc8e 17340 if eval $compile_ok && $run ./try; then
b4eb6b3d 17341 echo 'Looks OK.' >&4
5440bc8e 17342 set `$run ./try 1`
640374d0
JH
17343 db_version_major=$1
17344 db_version_minor=$2
17345 db_version_patch=$3
b4eb6b3d
JH
17346 else
17347 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17348 i_db=$undef
17349 case " $libs " in
17350 *"-ldb "*)
17351 : Remove db from list of libraries to use
17352 echo "Removing unusable -ldb from library list" >&4
17353 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17354 shift
17355 libs="$*"
17356 echo "libs = $libs" >&4
17357 ;;
17358 esac
17359 fi
17360 $rm -f try.*
17361 ;;
17362esac
17363
17364case "$i_db" in
17365define)
17366 : Check the return type needed for hash
17367 echo " "
17368 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17369 $cat >try.c <<EOCP
17370#$d_const HASCONST
17371#ifndef HASCONST
17372#define const
17373#endif
17374#include <sys/types.h>
17375#include <db.h>
17376
17377#ifndef DB_VERSION_MAJOR
17378u_int32_t hash_cb (ptr, size)
17379const void *ptr;
17380size_t size;
17381{
17382}
17383HASHINFO info;
17384int main()
17385{
17386 info.hash = hash_cb;
17387}
17388#endif
17389EOCP
17390 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17391 if $contains warning try.out >>/dev/null 2>&1 ; then
17392 db_hashtype='int'
17393 else
17394 db_hashtype='u_int32_t'
17395 fi
17396 else
17397 : XXX Maybe we should just give up here.
17398 db_hashtype=u_int32_t
17399 $cat try.out >&4
17400 echo "Help: I can't seem to compile the db test program." >&4
17401 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17402 fi
17403 $rm -f try.*
17404 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17405 ;;
17406*) db_hashtype=u_int32_t
17407 ;;
17408esac
17409case "$i_db" in
17410define)
17411 : Check the return type needed for prefix
17412 echo " "
17413 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17414 cat >try.c <<EOCP
17415#$d_const HASCONST
17416#ifndef HASCONST
17417#define const
17418#endif
17419#include <sys/types.h>
17420#include <db.h>
17421
17422#ifndef DB_VERSION_MAJOR
17423size_t prefix_cb (key1, key2)
17424const DBT *key1;
17425const DBT *key2;
17426{
17427}
17428BTREEINFO info;
17429int main()
17430{
17431 info.prefix = prefix_cb;
17432}
17433#endif
17434EOCP
17435 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17436 if $contains warning try.out >>/dev/null 2>&1 ; then
17437 db_prefixtype='int'
17438 else
17439 db_prefixtype='size_t'
17440 fi
17441 else
17442 db_prefixtype='size_t'
17443 : XXX Maybe we should just give up here.
17444 $cat try.out >&4
17445 echo "Help: I can't seem to compile the db test program." >&4
17446 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17447 fi
17448 $rm -f try.*
17449 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17450 ;;
17451*) db_prefixtype='size_t'
17452 ;;
17453esac
17454
b4eb6b3d
JH
17455
17456: How can we generate normalized random numbers ?
17457echo " "
17458echo "Looking for a random number function..." >&4
17459case "$randfunc" in
17460'')
17461 if set drand48 val -f; eval $csym; $val; then
17462 dflt="drand48"
17463 echo "Good, found drand48()." >&4
17464 elif set random val -f; eval $csym; $val; then
17465 dflt="random"
17466 echo "OK, found random()." >&4
17467 else
17468 dflt="rand"
17469 echo "Yick, looks like I have to use rand()." >&4
17470 fi
17471 echo " "
17472 ;;
17473*)
17474 dflt="$randfunc"
17475 ;;
17476esac
17477cont=true
17478
17479case "$ccflags" in
17480*-Dmy_rand=*|*-Dmy_srand=*)
17481 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17482 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17483 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17484 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17485 ;;
17486esac
17487
17488while $test "$cont"; do
17489 rp="Use which function to generate random numbers?"
17490 . ./myread
17491 if $test "$ans" = "$dflt"; then
17492 : null
17493 else
17494 randbits=''
17495 fi
17496 randfunc="$ans"
17497 if set $ans val -f; eval $csym; $val; then
17498 cont=''
17499 else
17500 dflt=y
17501 rp="I cannot find function $ans. Use that name anyway?"
17502 . ./myread
17503 dflt=rand
17504 case "$ans" in
17505 [yY]*) cont='';;
17506 esac
17507 fi
17508 case "$cont" in
17509 '')
17510 case "$randfunc" in
17511 drand48)
17512 drand01="drand48()"
17513 seedfunc="srand48"
17514 randbits=48
17515 randseedtype=long
17516 ;;
17517 rand|random)
17518 case "$randbits" in
17519 '')
17520echo "Checking to see how many bits your $randfunc() function produces..." >&4
17521 $cat >try.c <<EOCP
17522#$i_unistd I_UNISTD
17523#$i_stdlib I_STDLIB
17524#include <stdio.h>
17525#ifdef I_UNISTD
17526# include <unistd.h>
17527#endif
17528#ifdef I_STDLIB
17529# include <stdlib.h>
17530#endif
17531int main()
17532{
17533 register int i;
17534 register unsigned long tmp;
17535 register unsigned long max = 0L;
17536
17537 for (i = 1000; i; i--) {
17538 tmp = (unsigned long) $randfunc();
17539 if (tmp > max) max = tmp;
17540 }
17541 for (i = 0; max; i++)
17542 max /= 2;
17543 printf("%d\n",i);
17544}
17545EOCP
17546 set try
17547 if eval $compile_ok; then
17548 dflt=`try`
17549 else
17550 dflt='?'
17551 echo "(I can't seem to compile the test program...)"
17552 fi
17553 ;;
17554 *)
17555 dflt="$randbits"
17556 ;;
17557 esac
17558 rp="How many bits does your $randfunc() function produce?"
17559 . ./myread
17560 randbits="$ans"
17561 $rm -f try.c try
17562 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17563 seedfunc="s$randfunc"
17564 randseedtype=unsigned
17565 ;;
17566 *)
17567 dflt="31"
17568 rp="How many bits does your $randfunc() function produce?"
17569 . ./myread
17570 randbits="$ans"
17571 seedfunc="s$randfunc"
17572 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17573 if set $seedfunc val -f; eval $csym; $val; then
17574 echo "(Using $seedfunc() to seed random generator)"
17575 else
17576 echo "(Warning: no $seedfunc() to seed random generator)"
17577 seedfunc=rand
17578 fi
17579 randseedtype=unsigned
17580 ;;
17581 esac
17582 ;;
17583 esac
17584done
17585
17586echo " "
17587echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 17588$cat >try.c <<'EOM'
b4eb6b3d
JH
17589int main()
17590{
17591 if ('M'==0xd4) return 0;
17592 return 1;
17593}
17594EOM
17595
17596val=$undef
5440bc8e 17597set try
b4eb6b3d 17598if eval $compile_ok; then
5440bc8e 17599 if $run ./try; then
b4eb6b3d
JH
17600 echo "You seem to speak EBCDIC." >&4
17601 val="$define"
17602 else
5440bc8e 17603 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
17604 fi
17605else
17606 echo "I'm unable to compile the test program." >&4
17607 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17608fi
5440bc8e 17609$rm -f try try.*
b4eb6b3d
JH
17610set ebcdic
17611eval $setvar
17612
17613echo " "
17614$cat >&4 <<EOM
17615Checking how to flush all pending stdio output...
17616EOM
17617# I only know how to find the first 32 possibly open files on SunOS.
17618# See also hints/sunos_4_1.sh and util.c --AD
17619case "$osname" in
17620sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17621esac
17622$cat >>try.c <<EOCP
17623#include <stdio.h>
55954f19
JH
17624#$i_stdlib I_STDLIB
17625#ifdef I_STDLIB
17626#include <stdlib.h>
17627#endif
b4eb6b3d
JH
17628#$i_unistd I_UNISTD
17629#ifdef I_UNISTD
17630# include <unistd.h>
17631#endif
17632#$d_sysconf HAS_SYSCONF
17633#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17634#ifdef HAS_STDIO_STREAM_ARRAY
17635# define STDIO_STREAM_ARRAY $stdio_stream_array
17636#endif
17637int main() {
5440bc8e
JH
17638 FILE* p;
17639 unlink("try.out");
17640 p = fopen("try.out", "w");
b4eb6b3d
JH
17641#ifdef TRY_FPUTC
17642 fputc('x', p);
17643#else
17644# ifdef TRY_FPRINTF
17645 fprintf(p, "x");
17646# endif
17647#endif
17648#ifdef TRY_FFLUSH_NULL
17649 fflush(NULL);
17650#endif
17651#ifdef TRY_FFLUSH_ALL
17652 {
17653 long open_max = -1;
17654# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17655 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17656# else
17657# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17658 open_max = sysconf(_SC_OPEN_MAX);
17659# else
17660# ifdef FOPEN_MAX
17661 open_max = FOPEN_MAX;
17662# else
17663# ifdef OPEN_MAX
17664 open_max = OPEN_MAX;
17665# else
17666# ifdef _NFILE
17667 open_max = _NFILE;
17668# endif
17669# endif
17670# endif
17671# endif
17672# endif
17673# ifdef HAS_STDIO_STREAM_ARRAY
17674 if (open_max > 0) {
17675 long i;
17676 for (i = 0; i < open_max; i++)
17677 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17678 STDIO_STREAM_ARRAY[i]._file < open_max &&
17679 STDIO_STREAM_ARRAY[i]._flag)
17680 fflush(&STDIO_STREAM_ARRAY[i]);
17681 }
17682 }
17683# endif
17684#endif
17685 _exit(42);
17686}
17687EOCP
17688: first we have to find out how _not_ to flush
5440bc8e 17689$to try.c
b4eb6b3d
JH
17690if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17691 output=''
17692 set try -DTRY_FPUTC
17693 if eval $compile; then
fbe73d74 17694 $run ./try 2>/dev/null
28f5ac64 17695 code="$?"
5440bc8e 17696 $from try.out
28f5ac64 17697 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17698 output=-DTRY_FPUTC
17699 fi
17700 fi
17701 case "$output" in
17702 '')
17703 set try -DTRY_FPRINTF
b4eb6b3d 17704 if eval $compile; then
fbe73d74 17705 $run ./try 2>/dev/null
28f5ac64 17706 code="$?"
5440bc8e 17707 $from try.out
28f5ac64 17708 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17709 output=-DTRY_FPRINTF
17710 fi
17711 fi
17712 ;;
17713 esac
17714fi
17715: check for fflush NULL behaviour
17716case "$fflushNULL" in
17717'') set try -DTRY_FFLUSH_NULL $output
17718 if eval $compile; then
5440bc8e 17719 $run ./try 2>/dev/null
b4eb6b3d 17720 code="$?"
5440bc8e 17721 $from try.out
b4eb6b3d
JH
17722 if $test -s try.out -a "X$code" = X42; then
17723 fflushNULL="`$cat try.out`"
17724 else
17725 if $test "X$code" != X42; then
17726 $cat >&4 <<EOM
17727(If this test failed, don't worry, we'll try another method shortly.)
17728EOM
17729 fi
17730 fi
17731 fi
17732 $rm -f core try.core core.try.*
17733 case "$fflushNULL" in
17734 x) $cat >&4 <<EOM
17735Your fflush(NULL) works okay for output streams.
17736Let's see if it clobbers input pipes...
17737EOM
17738# As of mid-March 2000 all versions of Solaris appear to have a stdio
17739# bug that improperly flushes the input end of pipes. So we avoid the
17740# autoflush on fork/system/exec support for now. :-(
17741$cat >tryp.c <<EOCP
17742#include <stdio.h>
17743int
17744main(int argc, char **argv)
17745{
17746 char buf[1024];
17747 int i;
17748 char *bp = buf;
17749 while (1) {
17750 while ((i = getc(stdin)) != -1
17751 && (*bp++ = i) != '\n'
17752 && bp < &buf[1024])
17753 /* DO NOTHING */ ;
17754 *bp = '\0';
17755 fprintf(stdout, "%s", buf);
17756 fflush(NULL);
17757 if (i == -1)
17758 return 0;
17759 bp = buf;
17760 }
17761}
17762EOCP
17763 fflushNULL="$define"
17764 set tryp
17765 if eval $compile; then
17766 $rm -f tryp.out
5440bc8e 17767 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17768 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17769 $cat >&4 <<EOM
17770fflush(NULL) seems to behave okay with input streams.
17771EOM
17772 fflushNULL="$define"
17773 else
17774 $cat >&4 <<EOM
17775Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17776EOM
17777 fflushNULL="$undef"
17778 fi
17779 fi
17780 $rm -f core tryp.c tryp.core core.tryp.*
17781 ;;
17782 '') $cat >&4 <<EOM
17783Your fflush(NULL) isn't working (contrary to ANSI C).
17784EOM
17785 fflushNULL="$undef"
17786 ;;
17787 *) $cat >&4 <<EOM
17788Cannot figure out whether your fflush(NULL) works or not.
17789I'm assuming it doesn't (contrary to ANSI C).
17790EOM
17791 fflushNULL="$undef"
17792 ;;
17793 esac
17794 ;;
17795$define|true|[yY]*)
17796 fflushNULL="$define"
17797 ;;
17798*)
17799 fflushNULL="$undef"
17800 ;;
17801esac
17802: check explicit looping only if NULL did not work, and if the pipe
17803: bug does not show up on an explicit flush too
17804case "$fflushNULL" in
17805"$undef")
17806 $cat >tryp.c <<EOCP
17807#include <stdio.h>
17808int
17809main(int argc, char **argv)
17810{
17811 char buf[1024];
17812 int i;
17813 char *bp = buf;
17814 while (1) {
17815 while ((i = getc(stdin)) != -1
17816 && (*bp++ = i) != '\n'
17817 && bp < &buf[1024])
17818 /* DO NOTHING */ ;
17819 *bp = '\0';
17820 fprintf(stdout, "%s", buf);
17821 fflush(stdin);
17822 if (i == -1)
17823 return 0;
17824 bp = buf;
17825 }
17826}
17827EOCP
17828 set tryp
17829 if eval $compile; then
17830 $rm -f tryp.out
5440bc8e 17831 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17832 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17833 $cat >&4 <<EOM
17834Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17835EOM
17836 : now check for fflushall behaviour
17837 case "$fflushall" in
17838 '') set try -DTRY_FFLUSH_ALL $output
17839 if eval $compile; then
17840 $cat >&4 <<EOM
17841(Now testing the other method--but note that this also may fail.)
17842EOM
5440bc8e 17843 $run ./try 2>/dev/null
28f5ac64 17844 code=$?
fbe73d74 17845 $from try.out
28f5ac64 17846 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17847 fflushall="`$cat try.out`"
17848 fi
17849 fi
17850 $rm -f core try.core core.try.*
17851 case "$fflushall" in
17852 x) $cat >&4 <<EOM
17853Whew. Flushing explicitly all the stdio streams works.
17854EOM
17855 fflushall="$define"
17856 ;;
17857 '') $cat >&4 <<EOM
17858Sigh. Flushing explicitly all the stdio streams doesn't work.
17859EOM
17860 fflushall="$undef"
17861 ;;
17862 *) $cat >&4 <<EOM
17863Cannot figure out whether flushing stdio streams explicitly works or not.
17864I'm assuming it doesn't.
17865EOM
17866 fflushall="$undef"
17867 ;;
17868 esac
17869 ;;
17870 "$define"|true|[yY]*)
17871 fflushall="$define"
17872 ;;
17873 *)
17874 fflushall="$undef"
17875 ;;
17876 esac
17877 else
17878 $cat >&4 <<EOM
17879All is futile. Even fflush(stdin) clobbers input pipes!
17880EOM
17881 fflushall="$undef"
17882 fi
17883 else
17884 fflushall="$undef"
17885 fi
17886 $rm -f core tryp.c tryp.core core.tryp.*
17887 ;;
17888*) fflushall="$undef"
17889 ;;
17890esac
17891
17892case "$fflushNULL$fflushall" in
17893undefundef)
17894 $cat <<EOM
17895OK, I give up. I cannot figure out how to flush pending stdio output.
17896We won't be flushing handles at all before fork/exec/popen.
17897EOM
17898 ;;
17899esac
17900$rm -f try.* try$exe_ext
17901
17902: Store the full pathname to the ar program for use in the C program
17903: Respect a hint or command line value for full_ar.
17904case "$full_ar" in
17905'') full_ar=$ar ;;
17906esac
17907
17908: Store the full pathname to the sed program for use in the C program
17909full_sed=$sed
17910
17911: see what type gids are declared as in the kernel
17912echo " "
17913echo "Looking for the type for group ids returned by getgid()."
17914set gid_t gidtype xxx stdio.h sys/types.h
17915eval $typedef
17916case "$gidtype" in
17917xxx)
17918 xxx=`./findhdr sys/user.h`
17919 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17920 case $1 in
17921 unsigned) dflt="$1 $2" ;;
17922 *) dflt="$1" ;;
17923 esac
17924 ;;
17925*) dflt="$gidtype";;
17926esac
17927case "$gidtype" in
17928gid_t) echo "gid_t found." ;;
17929*) rp="What is the type for group ids returned by getgid()?"
17930 . ./myread
17931 gidtype="$ans"
17932 ;;
17933esac
17934
17935echo " "
17936case "$gidtype" in
17937*_t) zzz="$gidtype" ;;
17938*) zzz="gid" ;;
17939esac
17940echo "Checking the size of $zzz..." >&4
17941cat > try.c <<EOCP
17942#include <sys/types.h>
17943#include <stdio.h>
d1daaddf
JH
17944#$i_stdlib I_STDLIB
17945#ifdef I_STDLIB
17946#include <stdlib.h>
17947#endif
b4eb6b3d
JH
17948int main() {
17949 printf("%d\n", (int)sizeof($gidtype));
17950 exit(0);
17951}
17952EOCP
17953set try
17954if eval $compile_ok; then
5440bc8e 17955 yyy=`$run ./try`
b4eb6b3d
JH
17956 case "$yyy" in
17957 '') gidsize=4
17958 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17959 ;;
17960 *) gidsize=$yyy
17961 echo "Your $zzz is $gidsize bytes long."
17962 ;;
17963 esac
17964else
17965 gidsize=4
17966 echo "(I can't compile the test program--guessing $gidsize.)" >&4
17967fi
17968
17969
17970echo " "
17971case "$gidtype" in
17972*_t) zzz="$gidtype" ;;
17973*) zzz="gid" ;;
17974esac
17975echo "Checking the sign of $zzz..." >&4
17976cat > try.c <<EOCP
17977#include <sys/types.h>
17978#include <stdio.h>
17979int main() {
17980 $gidtype foo = -1;
17981 if (foo < 0)
17982 printf("-1\n");
17983 else
17984 printf("1\n");
17985}
17986EOCP
17987set try
17988if eval $compile; then
5440bc8e 17989 yyy=`$run ./try`
b4eb6b3d
JH
17990 case "$yyy" in
17991 '') gidsign=1
17992 echo "(I can't execute the test program--guessing unsigned.)" >&4
17993 ;;
17994 *) gidsign=$yyy
17995 case "$gidsign" in
17996 1) echo "Your $zzz is unsigned." ;;
17997 -1) echo "Your $zzz is signed." ;;
17998 esac
17999 ;;
18000 esac
18001else
18002 gidsign=1
18003 echo "(I can't compile the test program--guessing unsigned.)" >&4
18004fi
18005
18006
18007echo " "
18008
18009if $test X"$quadtype" != X; then
18010
18011echo "Checking how to print 64-bit integers..." >&4
18012
18013if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18014 $cat >try.c <<'EOCP'
18015#include <sys/types.h>
18016#include <stdio.h>
18017int main() {
18018 int q = 12345678901;
18019 printf("%ld\n", q);
18020}
18021EOCP
18022 set try
18023 if eval $compile; then
5440bc8e 18024 yyy=`$run ./try`
b4eb6b3d
JH
18025 case "$yyy" in
18026 12345678901)
18027 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18028 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18029 echo "We will use %d."
18030 ;;
18031 esac
18032 fi
18033fi
18034
18035if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18036 $cat >try.c <<'EOCP'
18037#include <sys/types.h>
18038#include <stdio.h>
18039int main() {
18040 long q = 12345678901;
18041 printf("%ld\n", q);
18042}
18043EOCP
18044 set try
18045 if eval $compile; then
5440bc8e 18046 yyy=`$run ./try`
b4eb6b3d
JH
18047 case "$yyy" in
18048 12345678901)
18049 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18050 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18051 echo "We will use %ld."
18052 ;;
18053 esac
18054 fi
18055fi
18056
18057if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18058 $cat >try.c <<'EOCP'
18059#include <sys/types.h>
18060#include <inttypes.h>
18061#include <stdio.h>
18062int main() {
18063 int64_t q = 12345678901;
18064 printf("%" PRId64 "\n", q);
18065}
18066EOCP
18067 set try
18068 if eval $compile; then
5440bc8e 18069 yyy=`$run ./try`
b4eb6b3d
JH
18070 case "$yyy" in
18071 12345678901)
18072 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18073 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18074 echo "We will use the C9X style."
18075 ;;
18076 esac
18077 fi
18078fi
18079
2ef53570
JH
18080if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18081 $cat >try.c <<EOCP
b4eb6b3d
JH
18082#include <sys/types.h>
18083#include <stdio.h>
18084int main() {
2ef53570
JH
18085 $quadtype q = 12345678901;
18086 printf("%Ld\n", q);
b4eb6b3d
JH
18087}
18088EOCP
18089 set try
18090 if eval $compile; then
5440bc8e 18091 yyy=`$run ./try`
b4eb6b3d
JH
18092 case "$yyy" in
18093 12345678901)
2ef53570
JH
18094 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18095 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18096 echo "We will use %Ld."
b4eb6b3d
JH
18097 ;;
18098 esac
18099 fi
18100fi
18101
2ef53570
JH
18102if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18103 $cat >try.c <<'EOCP'
b4eb6b3d
JH
18104#include <sys/types.h>
18105#include <stdio.h>
18106int main() {
2ef53570
JH
18107 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18108 printf("%lld\n", q);
b4eb6b3d
JH
18109}
18110EOCP
18111 set try
18112 if eval $compile; then
5440bc8e 18113 yyy=`$run ./try`
b4eb6b3d
JH
18114 case "$yyy" in
18115 12345678901)
2ef53570
JH
18116 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18117 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18118 echo "We will use the %lld style."
b4eb6b3d
JH
18119 ;;
18120 esac
18121 fi
18122fi
18123
18124if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18125 $cat >try.c <<EOCP
18126#include <sys/types.h>
18127#include <stdio.h>
18128int main() {
18129 $quadtype q = 12345678901;
18130 printf("%qd\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='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18139 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18140 echo "We will use %qd."
18141 ;;
18142 esac
18143 fi
18144fi
18145
18146if $test X"$sPRId64" = X; then
18147 echo "Cannot figure out how to print 64-bit integers." >&4
18148fi
18149
18150$rm -f try try.*
18151
18152fi
18153
18154case "$sPRId64" in
18155'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18156 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18157 ;;
18158*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18159 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18160 ;;
18161esac
18162
18163
18164echo " "
18165$echo "Checking the format strings to be used for Perl's internal types..." >&4
18166
18167if $test X"$ivsize" = X8; then
18168 ivdformat="$sPRId64"
18169 uvuformat="$sPRIu64"
18170 uvoformat="$sPRIo64"
18171 uvxformat="$sPRIx64"
18172 uvXUformat="$sPRIXU64"
18173else
18174 if $test X"$ivsize" = X"$longsize"; then
18175 ivdformat='"ld"'
18176 uvuformat='"lu"'
18177 uvoformat='"lo"'
18178 uvxformat='"lx"'
18179 uvXUformat='"lX"'
18180 else
18181 if $test X"$ivsize" = X"$intsize"; then
18182 ivdformat='"d"'
18183 uvuformat='"u"'
18184 uvoformat='"o"'
18185 uvxformat='"x"'
18186 uvXUformat='"X"'
18187 else
18188 : far out
18189 if $test X"$ivsize" = X"$shortsize"; then
18190 ivdformat='"hd"'
18191 uvuformat='"hu"'
18192 uvoformat='"ho"'
18193 uvxformat='"hx"'
18194 uvXUformat='"hX"'
18195 fi
18196 fi
18197 fi
18198fi
18199
18200if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18201 nveformat="$sPRIeldbl"
18202 nvfformat="$sPRIfldbl"
18203 nvgformat="$sPRIgldbl"
18204 nvEUformat="$sPRIEUldbl"
18205 nvFUformat="$sPRIFUldbl"
18206 nvGUformat="$sPRIGUldbl"
18207else
18208 nveformat='"e"'
18209 nvfformat='"f"'
18210 nvgformat='"g"'
18211 nvEUformat='"E"'
18212 nvFUformat='"F"'
18213 nvGUformat='"G"'
18214fi
18215
18216case "$ivdformat" in
3c728e00 18217'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
18218 exit 1
18219 ;;
18220esac
18221
18222
18223echo " "
18224$echo "Checking the format string to be used for gids..." >&4
18225
18226case "$gidsign" in
18227-1) if $test X"$gidsize" = X"$ivsize"; then
18228 gidformat="$ivdformat"
18229 else
18230 if $test X"$gidsize" = X"$longsize"; then
18231 gidformat='"ld"'
18232 else
18233 if $test X"$gidsize" = X"$intsize"; then
18234 gidformat='"d"'
18235 else
18236 if $test X"$gidsize" = X"$shortsize"; then
18237 gidformat='"hd"'
18238 fi
18239 fi
18240 fi
18241 fi
18242 ;;
18243*) if $test X"$gidsize" = X"$uvsize"; then
18244 gidformat="$uvuformat"
18245 else
18246 if $test X"$gidsize" = X"$longsize"; then
18247 gidformat='"lu"'
18248 else
18249 if $test X"$gidsize" = X"$intsize"; then
18250 gidformat='"u"'
18251 else
18252 if $test X"$gidsize" = X"$shortsize"; then
18253 gidformat='"hu"'
18254 fi
18255 fi
18256 fi
18257 fi
18258 ;;
18259esac
18260
18261: see if getgroups exists
18262set getgroups d_getgrps
18263eval $inlibc
18264
18265: see if setgroups exists
18266set setgroups d_setgrps
18267eval $inlibc
18268
18269
18270: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18271echo " "
18272case "$d_getgrps$d_setgrps" in
18273*define*)
18274 case "$groupstype" in
18275 '') dflt="$gidtype" ;;
18276 *) dflt="$groupstype" ;;
18277 esac
18278 $cat <<EOM
18279What type of pointer is the second argument to getgroups() and setgroups()?
18280Usually this is the same as group ids, $gidtype, but not always.
18281
18282EOM
18283 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18284 . ./myread
18285 groupstype="$ans"
18286 ;;
18287*) groupstype="$gidtype";;
18288esac
18289
18290echo " "
18291echo "Checking if your $make program sets \$(MAKE)..." >&4
18292case "$make_set_make" in
18293'')
18294 $sed 's/^X //' > testmake.mak << 'EOF'
18295Xall:
18296X @echo 'maketemp="$(MAKE)"'
18297EOF
18298 case "`$make -f testmake.mak 2>/dev/null`" in
18299 *maketemp=*) make_set_make='#' ;;
18300 *) make_set_make="MAKE=$make" ;;
18301 esac
18302 $rm -f testmake.mak
18303 ;;
18304esac
18305case "$make_set_make" in
18306'#') echo "Yup, it does.";;
18307*) echo "Nope, it doesn't.";;
18308esac
18309
18310: see what type is used for mode_t
18311rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18312set mode_t modetype int stdio.h sys/types.h
18313eval $typedef_ask
18314
2cc61e15
DD
18315: see if stdarg is available
18316echo " "
18317if $test `./findhdr stdarg.h`; then
18318 echo "<stdarg.h> found." >&4
18319 valstd="$define"
18320else
18321 echo "<stdarg.h> NOT found." >&4
18322 valstd="$undef"
18323fi
18324
18325: see if varags is available
18326echo " "
18327if $test `./findhdr varargs.h`; then
18328 echo "<varargs.h> found." >&4
18329else
18330 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18331fi
18332
18333: set up the varargs testing programs
18334$cat > varargs.c <<EOP
18335#ifdef I_STDARG
18336#include <stdarg.h>
18337#endif
18338#ifdef I_VARARGS
18339#include <varargs.h>
18340#endif
18341
18342#ifdef I_STDARG
18343int f(char *p, ...)
18344#else
18345int f(va_alist)
18346va_dcl
18347#endif
18348{
18349 va_list ap;
18350#ifndef I_STDARG
18351 char *p;
18352#endif
18353#ifdef I_STDARG
18354 va_start(ap,p);
18355#else
18356 va_start(ap);
18357 p = va_arg(ap, char *);
18358#endif
18359 va_end(ap);
18360}
18361EOP
18362$cat > varargs <<EOP
18363$startsh
18364if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18365 echo "true"
18366else
18367 echo "false"
18368fi
18369$rm -f varargs$_o
18370EOP
18371chmod +x varargs
18372
18373: now check which varargs header should be included
18374echo " "
18375i_varhdr=''
18376case "$valstd" in
18377"$define")
18378 if `./varargs I_STDARG`; then
18379 val='stdarg.h'
18380 elif `./varargs I_VARARGS`; then
18381 val='varargs.h'
18382 fi
18383 ;;
18384*)
18385 if `./varargs I_VARARGS`; then
18386 val='varargs.h'
18387 fi
18388 ;;
18389esac
18390case "$val" in
18391'')
18392echo "I could not find the definition for va_dcl... You have problems..." >&4
18393 val="$undef"; set i_stdarg; eval $setvar
18394 val="$undef"; set i_varargs; eval $setvar
18395 ;;
18396*)
18397 set i_varhdr
18398 eval $setvar
18399 case "$i_varhdr" in
18400 stdarg.h)
18401 val="$define"; set i_stdarg; eval $setvar
18402 val="$undef"; set i_varargs; eval $setvar
18403 ;;
18404 varargs.h)
18405 val="$undef"; set i_stdarg; eval $setvar
18406 val="$define"; set i_varargs; eval $setvar
18407 ;;
18408 esac
18409 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18410esac
18411$rm -f varargs*
18412
18413: see if we need va_copy
18414echo " "
18415case "$i_stdarg" in
18416"$define")
18417 $cat >try.c <<EOCP
18418#include <stdarg.h>
18419#include <stdio.h>
85c8a686
DD
18420#$i_stdlib I_STDLIB
18421#ifdef I_STDLIB
18422#include <stdlib.h>
18423#endif
18424#include <signal.h>
2cc61e15
DD
18425
18426int
18427ivfprintf(FILE *f, const char *fmt, va_list *valp)
18428{
18429 return vfprintf(f, fmt, *valp);
18430}
18431
18432int
18433myvfprintf(FILE *f, const char *fmt, va_list val)
18434{
18435 return ivfprintf(f, fmt, &val);
18436}
18437
18438int
18439myprintf(char *fmt, ...)
18440{
18441 va_list val;
18442 va_start(val, fmt);
18443 return myvfprintf(stdout, fmt, val);
18444}
18445
18446int
18447main(int ac, char **av)
18448{
85c8a686
DD
18449 signal(SIGSEGV, exit);
18450
2cc61e15
DD
18451 myprintf("%s%cs all right, then\n", "that", '\'');
18452 exit(0);
18453}
18454EOCP
18455 set try
5440bc8e
JH
18456 if eval $compile && $run ./try 2>&1 >/dev/null; then
18457 case "`$run ./try`" in
2cc61e15
DD
18458 "that's all right, then")
18459 okay=yes
18460 ;;
18461 esac
18462 fi
18463 case "$okay" in
18464 yes) echo "It seems that you don't need va_copy()." >&4
18465 need_va_copy="$undef"
18466 ;;
18467 *) echo "It seems that va_copy() or similar will be needed." >&4
18468 need_va_copy="$define"
18469 ;;
18470 esac
18471 $rm -f try.* core core.* *.core *.core.*
18472 ;;
18473*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18474 ;;
18475esac
18476
b4eb6b3d
JH
18477: see what type is used for size_t
18478rp="What is the type used for the length parameter for string functions?"
18479set size_t sizetype 'unsigned int' stdio.h sys/types.h
18480eval $typedef_ask
18481
18482: check for type of arguments to gethostbyaddr.
18483if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18484 case "$d_gethbyaddr" in
18485 $define)
18486 $cat <<EOM
18487
18488Checking to see what type of arguments are accepted by gethostbyaddr().
18489EOM
18490 hdrs="$define sys/types.h
18491 $d_socket sys/socket.h
18492 $i_niin netinet/in.h
18493 $i_netdb netdb.h
18494 $i_unistd unistd.h"
18495 : The first arg can 'char *' or 'void *'
18496 : The second arg is some of integral type
18497 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18498 for yyy in size_t long int; do
18499 case "$netdb_host_type" in
18500 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18501 if ./protochk "$try" $hdrs; then
18502 echo "Your system accepts $xxx for the first arg."
18503 echo "...and $yyy for the second arg."
18504 netdb_host_type="$xxx"
18505 netdb_hlen_type="$yyy"
18506 fi
18507 ;;
18508 esac
18509 done
18510 done
18511 : In case none of those worked, prompt the user.
18512 case "$netdb_host_type" in
18513 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18514 dflt='char *'
18515 . ./myread
18516 netdb_host_type=$ans
18517 rp='What is the type for the 2nd argument to gethostbyaddr?'
18518 dflt="$sizetype"
18519 . ./myread
18520 netdb_hlen_type=$ans
18521 ;;
18522 esac
18523 ;;
18524 *) : no gethostbyaddr, so pick harmless defaults
18525 netdb_host_type='char *'
18526 netdb_hlen_type="$sizetype"
18527 ;;
18528 esac
18529 # Remove the "const" if needed. -- but then we'll have a
18530 # prototype clash!
18531 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18532fi
18533
18534: check for type of argument to gethostbyname.
18535if test "X$netdb_name_type" = X ; then
18536 case "$d_gethbyname" in
18537 $define)
18538 $cat <<EOM
18539
18540Checking to see what type of argument is accepted by gethostbyname().
18541EOM
18542 hdrs="$define sys/types.h
18543 $d_socket sys/socket.h
18544 $i_niin netinet/in.h
18545 $i_netdb netdb.h
18546 $i_unistd unistd.h"
18547 for xxx in "const char *" "char *"; do
18548 case "$netdb_name_type" in
18549 '') try="extern struct hostent *gethostbyname($xxx);"
18550 if ./protochk "$try" $hdrs; then
18551 echo "Your system accepts $xxx."
18552 netdb_name_type="$xxx"
18553 fi
18554 ;;
18555 esac
18556 done
18557 : In case none of those worked, prompt the user.
18558 case "$netdb_name_type" in
18559 '') rp='What is the type for the 1st argument to gethostbyname?'
18560 dflt='char *'
18561 . ./myread
18562 netdb_name_type=$ans
18563 ;;
18564 esac
18565 ;;
18566 *) : no gethostbyname, so pick harmless default
18567 netdb_name_type='char *'
18568 ;;
18569 esac
18570fi
18571
18572: check for type of 1st argument to getnetbyaddr.
18573if test "X$netdb_net_type" = X ; then
18574 case "$d_getnbyaddr" in
18575 $define)
18576 $cat <<EOM
18577
18578Checking to see what type of 1st argument is accepted by getnetbyaddr().
18579EOM
18580 hdrs="$define sys/types.h
18581 $d_socket sys/socket.h
18582 $i_niin netinet/in.h
18583 $i_netdb netdb.h
18584 $i_unistd unistd.h"
18585 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18586 case "$netdb_net_type" in
18587 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18588 if ./protochk "$try" $hdrs; then
18589 echo "Your system accepts $xxx."
18590 netdb_net_type="$xxx"
18591 fi
18592 ;;
18593 esac
18594 done
18595 : In case none of those worked, prompt the user.
18596 case "$netdb_net_type" in
18597 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18598 dflt='long'
18599 . ./myread
18600 netdb_net_type=$ans
18601 ;;
18602 esac
18603 ;;
18604 *) : no getnetbyaddr, so pick harmless default
18605 netdb_net_type='long'
18606 ;;
18607 esac
18608fi
18609: locate the preferred pager for this system
d604bb53 18610fn=f/
b4eb6b3d
JH
18611case "$pager" in
18612'')
18613 dflt=''
18614 case "$pg" in
18615 /*) dflt=$pg;;
18616 [a-zA-Z]:/*) dflt=$pg;;
18617 esac
18618 case "$more" in
18619 /*) dflt=$more;;
18620 [a-zA-Z]:/*) dflt=$more;;
18621 esac
18622 case "$less" in
18623 /*) dflt=$less;;
18624 [a-zA-Z]:/*) dflt=$less;;
18625 esac
18626 case "$dflt" in
18627 '') dflt=/usr/ucb/more;;
18628 esac
18629 ;;
d604bb53
JH
18630*) dflt="$pager"
18631 : Instruct ./getfile to trust the hinted or previous pager value,
18632 : even if it does not begin with a slash. For example, on os2,
18633 : pager might be cmd /c more. See comments in UU/getfile.
18634 fn="f/($pager)"
18635 ;;
b4eb6b3d
JH
18636esac
18637echo " "
b4eb6b3d
JH
18638rp='What pager is used on your system?'
18639. ./getfile
18640pager="$ans"
18641
18642: see what type pids are declared as in the kernel
18643rp="What is the type of process ids on this system?"
18644set pid_t pidtype int stdio.h sys/types.h
18645eval $typedef_ask
18646
b4eb6b3d
JH
18647: see if ar generates random libraries by itself
18648echo " "
18649echo "Checking how to generate random libraries on your machine..." >&4
18650echo 'int bar1() { return bar2(); }' > bar1.c
18651echo 'int bar2() { return 2; }' > bar2.c
55954f19
JH
18652$cat > foo.c <<EOP
18653#$i_stdlib I_STDLIB
18654#ifdef I_STDLIB
18655#include <stdlib.h>
18656#endif
b4eb6b3d
JH
18657int main() { printf("%d\n", bar1()); exit(0); }
18658EOP
18659$cc $ccflags -c bar1.c >/dev/null 2>&1
18660$cc $ccflags -c bar2.c >/dev/null 2>&1
18661$cc $ccflags -c foo.c >/dev/null 2>&1
18662$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 18663if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18664 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18665 echo "$ar appears to generate random libraries itself."
18666 orderlib=false
18667 ranlib=":"
18668elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 18669 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18670 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18671 echo "a table of contents needs to be added with '$ar ts'."
18672 orderlib=false
18673 ranlib="$ar ts"
18674else
18675 case "$ranlib" in
18676 :) ranlib='';;
18677 '')
18678 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18679 $test -f $ranlib || ranlib=''
18680 ;;
18681 esac
18682 if $test -n "$ranlib"; then
18683 echo "your system has '$ranlib'; we'll use that."
18684 orderlib=false
18685 else
18686 echo "your system doesn't seem to support random libraries"
18687 echo "so we'll use lorder and tsort to order the libraries."
18688 orderlib=true
18689 ranlib=":"
18690 fi
18691fi
18692$rm -f foo* bar*
18693
18694: check for type of arguments to select.
18695case "$selecttype" in
18696'') case "$d_select" in
18697 $define)
18698 echo " "
18699 $cat <<EOM
18700Checking to see what type of arguments are accepted by select().
18701EOM
18702 hdrs="$define sys/types.h
18703 $i_systime sys/time.h
18704 $i_sysselct sys/select.h
18705 $d_socket sys/socket.h"
18706 : The first arg can be int, unsigned, or size_t
18707 : The last arg may or may not be 'const'
18708 val=''
18709 : void pointer has been seen but using that
18710 : breaks the selectminbits test
18711 for xxx in 'fd_set *' 'int *'; do
18712 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18713 for tmo in 'struct timeval *' 'const struct timeval *'; do
18714 case "$val" in
18715 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18716 if ./protochk "$try" $hdrs; then
18717 echo "Your system accepts $xxx."
18718 val="$xxx"
18719 fi
18720 ;;
18721 esac
18722 done
18723 done
18724 done
18725 case "$val" in
18726 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18727 case "$d_fd_set" in
18728 $define) dflt="fd_set *" ;;
18729 *) dflt="int *" ;;
18730 esac
18731 . ./myread
18732 val=$ans
18733 ;;
18734 esac
18735 selecttype="$val"
18736 ;;
18737 *) : no select, so pick a harmless default
18738 selecttype='int *'
18739 ;;
18740 esac
18741 ;;
18742esac
18743
18744: check for the select 'width'
18745case "$selectminbits" in
e6e7e605
JH
18746'') safebits=`expr $ptrsize \* 8`
18747 case "$d_select" in
b4eb6b3d
JH
18748 $define)
18749 $cat <<EOM
18750
18751Checking to see on how many bits at a time your select() operates...
18752EOM
18753 $cat >try.c <<EOCP
18754#include <sys/types.h>
18755#$i_time I_TIME
18756#$i_systime I_SYS_TIME
18757#$i_systimek I_SYS_TIME_KERNEL
18758#ifdef I_TIME
18759# include <time.h>
18760#endif
18761#ifdef I_SYS_TIME
18762# ifdef I_SYS_TIME_KERNEL
18763# define KERNEL
18764# endif
18765# include <sys/time.h>
18766# ifdef I_SYS_TIME_KERNEL
18767# undef KERNEL
18768# endif
18769#endif
18770#$i_sysselct I_SYS_SELECT
18771#ifdef I_SYS_SELECT
18772#include <sys/select.h>
18773#endif
18774#$d_socket HAS_SOCKET
18775#ifdef HAS_SOCKET
18776# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18777#endif
18778#include <stdio.h>
d1daaddf
JH
18779#$i_stdlib I_STDLIB
18780#ifdef I_STDLIB
18781#include <stdlib.h>
18782#endif
b4eb6b3d
JH
18783$selecttype b;
18784#define S sizeof(*(b))
18785#define MINBITS 64
18786#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18787#define NBITS (NBYTES * 8)
18788int main() {
e6e7e605 18789 char *s = malloc(NBYTES);
b4eb6b3d
JH
18790 struct timeval t;
18791 int i;
18792 FILE* fp;
18793 int fd;
18794
e6e7e605
JH
18795 if (!s)
18796 exit(1);
b4eb6b3d
JH
18797 fclose(stdin);
18798 fp = fopen("try.c", "r");
18799 if (fp == 0)
e6e7e605 18800 exit(2);
b4eb6b3d
JH
18801 fd = fileno(fp);
18802 if (fd < 0)
e6e7e605 18803 exit(3);
b4eb6b3d
JH
18804 b = ($selecttype)s;
18805 for (i = 0; i < NBITS; i++)
18806 FD_SET(i, b);
18807 t.tv_sec = 0;
18808 t.tv_usec = 0;
18809 select(fd + 1, b, 0, 0, &t);
18810 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
e6e7e605 18811 free(s);
b4eb6b3d
JH
18812 printf("%d\n", i + 1);
18813 return 0;
18814}
18815EOCP
18816 set try
18817 if eval $compile_ok; then
5440bc8e 18818 selectminbits=`$run ./try`
b4eb6b3d
JH
18819 case "$selectminbits" in
18820 '') cat >&4 <<EOM
18821Cannot figure out on how many bits at a time your select() operates.
e6e7e605 18822I'll play safe and guess it is $safebits bits.
b4eb6b3d 18823EOM
e6e7e605
JH
18824 selectminbits=$safebits
18825 bits="$safebits bits"
b4eb6b3d
JH
18826 ;;
18827 1) bits="1 bit" ;;
18828 *) bits="$selectminbits bits" ;;
18829 esac
18830 echo "Your select() operates on $bits at a time." >&4
18831 else
18832 rp='What is the minimum number of bits your select() operates on?'
18833 case "$byteorder" in
e6e7e605
JH
18834 12345678) dflt=64 ;;
18835 1234) dflt=32 ;;
b4eb6b3d
JH
18836 *) dflt=1 ;;
18837 esac
18838 . ./myread
18839 val=$ans
18840 selectminbits="$val"
18841 fi
18842 $rm -f try.* try
18843 ;;
18844 *) : no select, so pick a harmless default
e6e7e605 18845 selectminbits=$safebits
b4eb6b3d
JH
18846 ;;
18847 esac
18848 ;;
18849esac
18850
18851: Trace out the files included by signal.h, then look for SIGxxx names.
18852: Remove SIGARRAYSIZE used by HPUX.
18853: Remove SIGSTKSIZE used by Linux.
18854: Remove SIGSTKSZ used by Posix.
18855: Remove SIGTYP void lines used by OS2.
18856: Some cpps, like os390, dont give the file name anywhere
18857if [ "X$fieldn" = X ]; then
18858 : Just make some guesses. We check them later.
18859 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18860else
18861 xxx=`echo '#include <signal.h>' |
18862 $cppstdin $cppminus $cppflags 2>/dev/null |
18863 $grep '^[ ]*#.*include' |
a938a3bb 18864 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
18865fi
18866: Check this list of files to be sure we have parsed the cpp output ok.
18867: This will also avoid potentially non-existent files, such
18868: as ../foo/bar.h
18869xxxfiles=''
18870for xx in $xxx /dev/null ; do
18871 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18872done
18873: If we have found no files, at least try signal.h
18874case "$xxxfiles" in
18875'') xxxfiles=`./findhdr signal.h` ;;
18876esac
18877xxx=`awk '
18878$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18879 print substr($2, 4, 20)
18880}
18881$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18882 print substr($3, 4, 20)
18883}' $xxxfiles`
18884: Append some common names just in case the awk scan failed.
18885xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18886xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18887xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18888xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18889xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18890
18891: generate a few handy files for later
55954f19 18892$cat > signal.c <<EOCP
b4eb6b3d
JH
18893#include <sys/types.h>
18894#include <signal.h>
55954f19
JH
18895#$i_stdlib I_STDLIB
18896#ifdef I_STDLIB
18897#include <stdlib.h>
18898#endif
b4eb6b3d
JH
18899#include <stdio.h>
18900int main() {
18901
18902/* Strange style to avoid deeply-nested #if/#else/#endif */
18903#ifndef NSIG
18904# ifdef _NSIG
18905# define NSIG (_NSIG)
18906# endif
18907#endif
18908
18909#ifndef NSIG
18910# ifdef SIGMAX
18911# define NSIG (SIGMAX+1)
18912# endif
18913#endif
18914
18915#ifndef NSIG
18916# ifdef SIG_MAX
18917# define NSIG (SIG_MAX+1)
18918# endif
18919#endif
18920
18921#ifndef NSIG
18922# ifdef MAXSIG
18923# define NSIG (MAXSIG+1)
18924# endif
18925#endif
18926
18927#ifndef NSIG
18928# ifdef MAX_SIG
18929# define NSIG (MAX_SIG+1)
18930# endif
18931#endif
18932
18933#ifndef NSIG
18934# ifdef SIGARRAYSIZE
18935# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18936# endif
18937#endif
18938
18939#ifndef NSIG
18940# ifdef _sys_nsig
18941# define NSIG (_sys_nsig) /* Solaris 2.5 */
18942# endif
18943#endif
18944
18945/* Default to some arbitrary number that's big enough to get most
18946 of the common signals.
18947*/
18948#ifndef NSIG
18949# define NSIG 50
18950#endif
18951
18952printf("NSIG %d\n", NSIG);
18953
18954#ifndef JUST_NSIG
18955
18956EOCP
18957
18958echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18959{
18960 printf "#ifdef SIG"; printf $1; printf "\n"
65197d93 18961 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
b4eb6b3d
JH
18962 printf $1; printf ");\n"
18963 printf "#endif\n"
18964}
18965END {
18966 printf "#endif /* JUST_NSIG */\n";
18967 printf "exit(0);\n}\n";
18968}
18969' >>signal.c
18970$cat >signal.awk <<'EOP'
18971BEGIN { ndups = 0 }
65197d93 18972$1 ~ /^NSIG$/ { nsig = $2 }
1ebe1ffb 18973($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
65197d93
JH
18974 if ($2 > maxsig) { maxsig = $2 }
18975 if (sig_name[$2]) {
18976 dup_name[ndups] = $1
18977 dup_num[ndups] = $2
b4eb6b3d
JH
18978 ndups++
18979 }
1ebe1ffb 18980 else {
65197d93
JH
18981 sig_name[$2] = $1
18982 sig_num[$2] = $2
b4eb6b3d
JH
18983 }
18984}
18985END {
18986 if (nsig == 0) {
18987 nsig = maxsig + 1
18988 }
18989 printf("NSIG %d\n", nsig);
18990 for (n = 1; n < nsig; n++) {
18991 if (sig_name[n]) {
18992 printf("%s %d\n", sig_name[n], sig_num[n])
18993 }
18994 else {
18995 printf("NUM%d %d\n", n, n)
18996 }
18997 }
18998 for (n = 0; n < ndups; n++) {
18999 printf("%s %d\n", dup_name[n], dup_num[n])
19000 }
19001}
19002EOP
19003$cat >signal_cmd <<EOS
19004$startsh
19005if $test -s signal.lst; then
19006 echo "Using your existing signal.lst file"
19007 exit 0
19008fi
19009xxx="$xxx"
19010EOS
19011$cat >>signal_cmd <<'EOS'
19012
19013set signal
19014if eval $compile_ok; then
1eb9ad5b 19015 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19016else
19017 echo "(I can't seem be able to compile the whole test program)" >&4
19018 echo "(I'll try it in little pieces.)" >&4
19019 set signal -DJUST_NSIG
19020 if eval $compile_ok; then
5440bc8e 19021 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
19022 $cat signal.nsg
19023 else
19024 echo "I can't seem to figure out how many signals you have." >&4
19025 echo "Guessing 50." >&4
19026 echo 'NSIG 50' > signal.nsg
19027 fi
19028 : Now look at all the signal names, one at a time.
19029 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19030 $cat > signal.c <<EOCP
19031#include <sys/types.h>
19032#include <signal.h>
19033#include <stdio.h>
19034int main() {
19035printf("$xx %d\n", SIG${xx});
19036return 0;
19037}
19038EOCP
19039 set signal
19040 if eval $compile; then
19041 echo "SIG${xx} found."
5440bc8e 19042 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
19043 else
19044 echo "SIG${xx} NOT found."
19045 fi
19046 done
19047 if $test -s signal.ls1; then
19048 $cat signal.nsg signal.ls1 |
65197d93 19049 $sort -n | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
19050 fi
19051
19052fi
19053if $test -s signal.lst; then
19054 :
19055else
19056 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19057 echo 'kill -l' >signal
19058 set X `csh -f <signal`
19059 $rm -f signal
19060 shift
19061 case $# in
19062 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19063 esac
19064 echo $@ | $tr ' ' $trnl | \
19065 $awk '{ printf "%s %d\n", $1, ++s; }
19066 END { printf "NSIG %d\n", ++s }' >signal.lst
19067fi
19068$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19069EOS
19070chmod a+x signal_cmd
19071$eunicefix signal_cmd
19072
19073: generate list of signal names
19074echo " "
19075case "$sig_name_init" in
19076'') doinit=yes ;;
19077*) case "$sig_num_init" in
19078 ''|*,*) doinit=yes ;;
19079 esac ;;
19080esac
19081case "$doinit" in
19082yes)
19083 echo "Generating a list of signal names and numbers..." >&4
19084 . ./signal_cmd
19085 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19086 sig_name=`$awk 'BEGIN { printf "ZERO " }
19087 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19088 sig_num=`$awk 'BEGIN { printf "0 " }
19089 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19090 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19091 !/^NSIG/ { printf "\"%s\", ", $1 }
19092 END { printf "0\n" }' signal.lst`
19093 sig_num_init=`$awk 'BEGIN { printf "0, " }
19094 !/^NSIG/ { printf "%d, ", $2}
19095 END { printf "0\n"}' signal.lst`
19096 ;;
19097esac
19098echo "The following $sig_count signals are available:"
19099echo " "
19100echo $sig_name | $awk \
19101'BEGIN { linelen = 0 }
19102{
19103 for (i = 1; i <= NF; i++) {
19104 name = "SIG" $i " "
19105 linelen = linelen + length(name)
19106 if (linelen > 70) {
19107 printf "\n"
19108 linelen = length(name)
19109 }
19110 printf "%s", name
19111 }
19112 printf "\n"
19113}'
76d3c696 19114sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
19115$rm -f signal signal.c signal.awk signal.lst signal_cmd
19116
19117echo " "
19118case "$sizetype" in
19119*_t) zzz="$sizetype" ;;
19120*) zzz="filesize" ;;
19121esac
19122echo "Checking the size of $zzz..." >&4
19123cat > try.c <<EOCP
19124#include <sys/types.h>
19125#include <stdio.h>
d1daaddf
JH
19126#$i_stdlib I_STDLIB
19127#ifdef I_STDLIB
19128#include <stdlib.h>
19129#endif
b4eb6b3d
JH
19130int main() {
19131 printf("%d\n", (int)sizeof($sizetype));
19132 exit(0);
19133}
19134EOCP
19135set try
19136if eval $compile_ok; then
5440bc8e 19137 yyy=`$run ./try`
b4eb6b3d
JH
19138 case "$yyy" in
19139 '') sizesize=4
19140 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19141 ;;
19142 *) sizesize=$yyy
19143 echo "Your $zzz size is $sizesize bytes."
19144 ;;
19145 esac
19146else
19147 sizesize=4
19148 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19149fi
19150
19151
19152: check for socklen_t
19153echo " "
19154echo "Checking to see if you have socklen_t..." >&4
19155$cat >try.c <<EOCP
19156#include <sys/types.h>
19157#$d_socket HAS_SOCKET
19158#ifdef HAS_SOCKET
19159#include <sys/socket.h>
19160#endif
19161int main() { socklen_t x = 16; }
19162EOCP
19163set try
19164if eval $compile; then
19165 val="$define"
19166 echo "You have socklen_t."
19167else
19168 val="$undef"
19169 echo "You do not have socklen_t."
19170 case "$sizetype" in
19171 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19172 esac
19173fi
19174$rm -f try try.*
19175set d_socklen_t
19176eval $setvar
19177
a7710f8d
JH
19178: see if this is a socks.h system
19179set socks.h i_socks
19180eval $inhdr
19181
b4eb6b3d
JH
19182: check for type of the size argument to socket calls
19183case "$d_socket" in
19184"$define")
19185 $cat <<EOM
19186
19187Checking to see what type is the last argument of accept().
19188EOM
b4eb6b3d
JH
19189 yyy=''
19190 case "$d_socklen_t" in
19191 "$define") yyy="$yyy socklen_t"
19192 esac
19193 yyy="$yyy $sizetype int long unsigned"
19194 for xxx in $yyy; do
19195 case "$socksizetype" in
19196 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
19197 case "$usesocks" in
19198 "$define")
19199 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19200 echo "Your system accepts '$xxx *' for the last argument of accept()."
19201 socksizetype="$xxx"
19202 fi
19203 ;;
19204 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19205 echo "Your system accepts '$xxx *' for the last argument of accept()."
19206 socksizetype="$xxx"
19207 fi
19208 ;;
19209 esac
b4eb6b3d
JH
19210 ;;
19211 esac
19212 done
19213: In case none of those worked, prompt the user.
19214 case "$socksizetype" in
19215 '') rp='What is the type for socket address structure sizes?'
19216 dflt='int'
19217 . ./myread
19218 socksizetype=$ans
19219 ;;
19220 esac
19221 ;;
19222*) : no sockets, so pick relatively harmless default
19223 socksizetype='int'
19224 ;;
19225esac
19226
19227: see what type is used for signed size_t
19228set ssize_t ssizetype int stdio.h sys/types.h
19229eval $typedef
19230dflt="$ssizetype"
5440bc8e 19231$cat > try.c <<EOM
b4eb6b3d 19232#include <stdio.h>
d1daaddf
JH
19233#$i_stdlib I_STDLIB
19234#ifdef I_STDLIB
19235#include <stdlib.h>
19236#endif
b4eb6b3d
JH
19237#include <sys/types.h>
19238#define Size_t $sizetype
19239#define SSize_t $dflt
19240int main()
19241{
19242 if (sizeof(Size_t) == sizeof(SSize_t))
19243 printf("$dflt\n");
19244 else if (sizeof(Size_t) == sizeof(int))
19245 printf("int\n");
19246 else
19247 printf("long\n");
19248 exit(0);
19249}
19250EOM
19251echo " "
5440bc8e
JH
19252set try
19253if eval $compile_ok && $run ./try > /dev/null; then
19254 ssizetype=`$run ./try`
b4eb6b3d
JH
19255 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19256else
19257 $cat >&4 <<EOM
19258Help! I can't compile and run the ssize_t test program: please enlighten me!
19259(This is probably a misconfiguration in your system or libraries, and
19260you really ought to fix it. Still, I'll try anyway.)
19261
19262I need a type that is the same size as $sizetype, but is guaranteed to
19263be signed. Common values are ssize_t, int and long.
19264
19265EOM
19266 rp="What signed type is the same size as $sizetype?"
19267 . ./myread
19268 ssizetype="$ans"
19269fi
5440bc8e 19270$rm -f try try.*
b4eb6b3d
JH
19271
19272: see what type of char stdio uses.
19273echo " "
aa517f50
JH
19274echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19275if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
19276 echo "Your stdio uses unsigned chars." >&4
19277 stdchar="unsigned char"
19278else
aa517f50
JH
19279 echo "Your stdio uses signed chars." >&4
19280 stdchar="char"
b4eb6b3d 19281fi
aa517f50
JH
19282$rm -f stdioh
19283
19284
b4eb6b3d 19285
b4eb6b3d
JH
19286: see what type uids are declared as in the kernel
19287echo " "
19288echo "Looking for the type for user ids returned by getuid()."
19289set uid_t uidtype xxx stdio.h sys/types.h
19290eval $typedef
19291case "$uidtype" in
19292xxx)
19293 xxx=`./findhdr sys/user.h`
19294 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19295 case $1 in
19296 unsigned) dflt="$1 $2" ;;
19297 *) dflt="$1" ;;
19298 esac
19299 ;;
19300*) dflt="$uidtype";;
19301esac
19302case "$uidtype" in
19303uid_t) echo "uid_t found." ;;
19304*) rp="What is the type for user ids returned by getuid()?"
19305 . ./myread
19306 uidtype="$ans"
19307 ;;
19308esac
19309
19310echo " "
19311case "$uidtype" in
19312*_t) zzz="$uidtype" ;;
19313*) zzz="uid" ;;
19314esac
19315echo "Checking the size of $zzz..." >&4
19316cat > try.c <<EOCP
19317#include <sys/types.h>
19318#include <stdio.h>
d1daaddf
JH
19319#$i_stdlib I_STDLIB
19320#ifdef I_STDLIB
19321#include <stdlib.h>
19322#endif
b4eb6b3d
JH
19323int main() {
19324 printf("%d\n", (int)sizeof($uidtype));
19325 exit(0);
19326}
19327EOCP
19328set try
19329if eval $compile_ok; then
5440bc8e 19330 yyy=`$run ./try`
b4eb6b3d
JH
19331 case "$yyy" in
19332 '') uidsize=4
19333 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19334 ;;
19335 *) uidsize=$yyy
19336 echo "Your $zzz is $uidsize bytes long."
19337 ;;
19338 esac
19339else
19340 uidsize=4
19341 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19342fi
19343
19344echo " "
19345case "$uidtype" in
19346*_t) zzz="$uidtype" ;;
19347*) zzz="uid" ;;
19348esac
19349echo "Checking the sign of $zzz..." >&4
19350cat > try.c <<EOCP
19351#include <sys/types.h>
19352#include <stdio.h>
19353int main() {
19354 $uidtype foo = -1;
19355 if (foo < 0)
19356 printf("-1\n");
19357 else
19358 printf("1\n");
19359}
19360EOCP
19361set try
19362if eval $compile; then
5440bc8e 19363 yyy=`$run ./try`
b4eb6b3d
JH
19364 case "$yyy" in
19365 '') uidsign=1
19366 echo "(I can't execute the test program--guessing unsigned.)" >&4
19367 ;;
19368 *) uidsign=$yyy
19369 case "$uidsign" in
19370 1) echo "Your $zzz is unsigned." ;;
19371 -1) echo "Your $zzz is signed." ;;
19372 esac
19373 ;;
19374 esac
19375else
19376 uidsign=1
19377 echo "(I can't compile the test program--guessing unsigned.)" >&4
19378fi
19379
19380
19381
19382echo " "
19383$echo "Checking the format string to be used for uids..." >&4
19384
19385case "$uidsign" in
19386-1) if $test X"$uidsize" = X"$ivsize"; then
19387 uidformat="$ivdformat"
19388 else
19389 if $test X"$uidsize" = X"$longsize"; then
19390 uidformat='"ld"'
19391 else
19392 if $test X"$uidsize" = X"$intsize"; then
19393 uidformat='"d"'
19394 else
19395 if $test X"$uidsize" = X"$shortsize"; then
19396 uidformat='"hd"'
19397 fi
19398 fi
19399 fi
19400 fi
19401 ;;
19402*) if $test X"$uidsize" = X"$uvsize"; then
19403 uidformat="$uvuformat"
19404 else
19405 if $test X"$uidsize" = X"$longsize"; then
19406 uidformat='"lu"'
19407 else
19408 if $test X"$uidsize" = X"$intsize"; then
19409 uidformat='"u"'
19410 else
19411 if $test X"$uidsize" = X"$shortsize"; then
19412 uidformat='"hu"'
19413 fi
19414 fi
19415 fi
19416 fi
19417 ;;
19418esac
19419
3659ebf1
JH
19420: determine compiler compiler
19421case "$yacc" in
19422'')
19423 dflt=yacc;;
19424*)
19425 dflt="$yacc";;
19426esac
19427echo " "
19428comp='yacc'
3c728e00 19429if $test -f "$byacc$_exe"; then
3659ebf1
JH
19430 dflt="$byacc"
19431 comp="byacc or $comp"
19432fi
3c728e00 19433if $test -f "$bison$_exe"; then
3659ebf1
JH
19434 comp="$comp or bison -y"
19435fi
19436rp="Which compiler compiler ($comp) shall I use?"
19437. ./myread
19438yacc="$ans"
19439case "$yacc" in
19440*bis*)
19441 case "$yacc" in
19442 *-y*) ;;
19443 *)
19444 yacc="$yacc -y"
19445 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19446 ;;
19447 esac
19448 ;;
19449esac
19450
758a5d79
JH
19451: see if this is a fp.h system
19452set fp.h i_fp
19453eval $inhdr
19454
19455: see if this is a fp_class.h system
19456set fp_class.h i_fp_class
19457eval $inhdr
19458
b4eb6b3d 19459: see if this is a ieeefp.h system
b5b9f165
JH
19460case "$i_ieeefp" in
19461'' ) set ieeefp.h i_ieeefp
19462 eval $inhdr
19463 ;;
19464esac
b4eb6b3d
JH
19465
19466: see if this is a libutil.h system
19467set libutil.h i_libutil
19468eval $inhdr
19469
b4eb6b3d
JH
19470: see if mach cthreads are available
19471if test "X$usethreads" = "X$define"; then
19472 set mach/cthreads.h i_machcthr
19473 eval $inhdr
19474else
19475 i_machcthr="$undef"
19476fi
19477
19478
19479
19480: see if this is a math.h system
19481set math.h i_math
19482eval $inhdr
19483
19484: see if this is a mntent.h system
19485set mntent.h i_mntent
19486eval $inhdr
19487
19488: see if ndbm.h is available
19489set ndbm.h t_ndbm
19490eval $inhdr
1c6861ad
JS
19491
19492case "$t_ndbm" in
19493$undef)
19494 # Some Linux distributions such as RedHat 7.1 put the
19495 # ndbm.h header in /usr/include/gdbm/ndbm.h.
19496 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 19497 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
19498 ccflags="$ccflags -I/usr/include/gdbm"
19499 cppflags="$cppflags -I/usr/include/gdbm"
19500 t_ndbm=$define
19501 fi
19502 ;;
19503esac
19504
b4eb6b3d
JH
19505case "$t_ndbm" in
19506$define)
19507 : see if dbm_open exists
19508 set dbm_open d_dbm_open
19509 eval $inlibc
19510 case "$d_dbm_open" in
19511 $undef)
19512 t_ndbm="$undef"
19513 echo "We won't be including <ndbm.h>"
19514 ;;
19515 esac
19516 ;;
19517esac
19518val="$t_ndbm"
19519set i_ndbm
19520eval $setvar
19521
19522: see if net/errno.h is available
19523val=''
19524set net/errno.h val
19525eval $inhdr
19526
19527: Unfortunately, it causes problems on some systems. Arrgh.
19528case "$val" in
19529$define)
19530 cat > try.c <<'EOM'
19531#include <stdio.h>
19532#include <errno.h>
19533#include <net/errno.h>
19534int func()
19535{
19536 return ENOTSOCK;
19537}
19538EOM
19539 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19540 echo "We'll be including <net/errno.h>." >&4
19541 else
19542 echo "We won't be including <net/errno.h>." >&4
19543 val="$undef"
19544 fi
19545 $rm -f try.* try
19546 ;;
19547esac
19548set i_neterrno
19549eval $setvar
19550
19551: see if netinet/tcp.h is available
19552set netinet/tcp.h i_netinettcp
19553eval $inhdr
19554
19555: see if this is a poll.h system
19556set poll.h i_poll
19557eval $inhdr
19558
19559: see if this is a prot.h system
19560set prot.h i_prot
19561eval $inhdr
19562
19563echo " "
19564$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19565$cat <<'EOSH' > Cppsym.know
19566a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19567AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
19568alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19569ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19570BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
19571BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19572bull c cadmus clipper CMU COFF COMPILER_VERSION
19573concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19574CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
19575Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19576FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19577GLIBC GLIBC_MINOR
19578GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
19579H3050R H3050RX hbullx20 hcx host_mips
19580hp200 hp300 hp700 HP700 hp800 hp9000
19581hp9000s200 hp9000s300 hp9000s400 hp9000s500
19582hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19583i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 19584IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
19585INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19586LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19587LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19588Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19589LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19590M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19591M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19592M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19593MATH_HAS_NO_SIDE_EFFECTS
19594mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19595mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19596mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19597MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19598mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19599NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 19600news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
19601ns32016 ns32332 ns32k nsc32000
19602OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19603pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19604pc532 pdp11 PGC PIC plexus PORTAR posix
19605POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19606POSIX_C_SOURCE POSIX_SOURCE POWER
19607PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 19608riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
19609SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19610sony sony_news sonyrisc sparc sparclite spectrum
19611stardent stdc STDC_EXT stratos sun sun3 sun386
19612Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19613SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19614SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19615sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 19616TM3200 TM5400 TM5600
b4eb6b3d
JH
19617tower tower32 tower32_200 tower32_600 tower32_700
19618tower32_800 tower32_850 tss
19619u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19620ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
19621unix UNIX95 UNIX99 unixpc unos
19622USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19623USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19624USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19625USGr4 USGr4_2
b4eb6b3d
JH
19626Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19627XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19628XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19629z8000
19630EOSH
19631# Maybe put other stuff here too.
19632cat <<EOSH >>Cppsym.know
19633$osname
19634EOSH
19635./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19636./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19637$cat Cppsym.know > Cppsym.c
381aa1ff 19638$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
19639$rm -f Cppsym.a Cppsym.b Cppsym.c
19640cat <<EOSH > Cppsym
19641$startsh
19642if $test \$# -gt 0; then
19643 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19644 if $test -s Cppsym.got; then
19645 $rm -f Cppsym.got
19646 exit 0
19647 fi
19648 $rm -f Cppsym.got
19649 exit 1
19650else
19651 $tr " " "$trnl" | ./Cppsym.try
19652 exit 0
19653fi
19654EOSH
19655chmod +x Cppsym
19656$eunicefix Cppsym
19657cat <<EOSH > Cppsym.try
19658$startsh
19659cat <<'EOCP' > try.c
19660#include <stdio.h>
19661int main() {
19662EOCP
19663$awk \\
19664EOSH
19665cat <<'EOSH' >> Cppsym.try
19666'length($1) > 0 {
2ef53570
JH
19667 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
19668 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
19669 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
19670 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 19671}' >> try.c
2ef53570 19672echo 'return 0;}' >> try.c
b4eb6b3d
JH
19673EOSH
19674cat <<EOSH >> Cppsym.try
19675ccflags="$ccflags"
19676case "$osname-$gccversion" in
19677irix-) ccflags="\$ccflags -woff 1178" ;;
19678os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19679esac
5440bc8e 19680$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
19681EOSH
19682chmod +x Cppsym.try
19683$eunicefix Cppsym.try
19684./Cppsym < Cppsym.know > Cppsym.true
19685: now check the C compiler for additional symbols
19686postprocess_cc_v=''
19687case "$osname" in
19688aix) postprocess_cc_v="|$tr , ' '" ;;
19689esac
19690$cat >ccsym <<EOS
19691$startsh
19692$cat >tmp.c <<EOF
19693extern int foo;
19694EOF
19695for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19696do
19697 case "\$i" in
19698 -D*) echo "\$i" | $sed 's/^-D//';;
b2a76591 19699 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
b4eb6b3d
JH
19700 esac
19701done
19702$rm -f try.c
19703EOS
19704postprocess_cc_v=''
19705chmod +x ccsym
19706$eunicefix ccsym
19707./ccsym > ccsym1.raw
19708if $test -s ccsym1.raw; then
19709 $sort ccsym1.raw | $uniq >ccsym.raw
19710else
19711 mv ccsym1.raw ccsym.raw
19712fi
19713
19714$awk '/\=/ { print $0; next }
19715 { print $0"=1" }' ccsym.raw >ccsym.list
19716$awk '/\=/ { print $0; next }
19717 { print $0"=1" }' Cppsym.true >ccsym.true
19718$comm -13 ccsym.true ccsym.list >ccsym.own
19719$comm -12 ccsym.true ccsym.list >ccsym.com
19720$comm -23 ccsym.true ccsym.list >ccsym.cpp
19721also=''
19722if $test -z ccsym.raw; then
19723 echo "Your C compiler doesn't seem to define any symbols!" >&4
19724 echo " "
19725 echo "However, your C preprocessor defines the following symbols:"
19726 $cat Cppsym.true
19727 ccsymbols=''
19728 cppsymbols=`$cat Cppsym.true`
19729 cppsymbols=`echo $cppsymbols`
19730 cppccsymbols="$cppsymbols"
19731else
19732 if $test -s ccsym.com; then
19733 echo "Your C compiler and pre-processor define these symbols:"
19734 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19735 also='also '
19736 symbols='ones'
19737 cppccsymbols=`$cat ccsym.com`
19738 cppccsymbols=`echo $cppccsymbols`
19739 $test "$silent" || sleep 1
19740 fi
19741 if $test -s ccsym.cpp; then
19742 $test "$also" && echo " "
19743 echo "Your C pre-processor ${also}defines the following symbols:"
19744 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19745 also='further '
19746 cppsymbols=`$cat ccsym.cpp`
19747 cppsymbols=`echo $cppsymbols`
19748 $test "$silent" || sleep 1
19749 fi
19750 if $test -s ccsym.own; then
19751 $test "$also" && echo " "
19752 echo "Your C compiler ${also}defines the following cpp symbols:"
19753 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19754 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19755 ccsymbols=`$cat ccsym.own`
19756 ccsymbols=`echo $ccsymbols`
19757 $test "$silent" || sleep 1
19758 fi
19759fi
b4eb6b3d
JH
19760
19761: see if this is a termio system
19762val="$undef"
19763val2="$undef"
19764val3="$undef"
19765if $test `./findhdr termios.h`; then
19766 set tcsetattr i_termios
19767 eval $inlibc
19768 val3="$i_termios"
19769fi
19770echo " "
19771case "$val3" in
19772"$define") echo "You have POSIX termios.h... good!" >&4;;
19773*) if ./Cppsym pyr; then
19774 case "`/bin/universe`" in
19775 ucb) if $test `./findhdr sgtty.h`; then
19776 val2="$define"
19777 echo "<sgtty.h> found." >&4
19778 else
19779 echo "System is pyramid with BSD universe."
19780 echo "<sgtty.h> not found--you could have problems." >&4
19781 fi;;
19782 *) if $test `./findhdr termio.h`; then
19783 val="$define"
19784 echo "<termio.h> found." >&4
19785 else
19786 echo "System is pyramid with USG universe."
19787 echo "<termio.h> not found--you could have problems." >&4
19788 fi;;
19789 esac
19790 elif ./usg; then
19791 if $test `./findhdr termio.h`; then
19792 echo "<termio.h> found." >&4
19793 val="$define"
19794 elif $test `./findhdr sgtty.h`; then
19795 echo "<sgtty.h> found." >&4
19796 val2="$define"
19797 else
19798echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19799 fi
19800 else
19801 if $test `./findhdr sgtty.h`; then
19802 echo "<sgtty.h> found." >&4
19803 val2="$define"
19804 elif $test `./findhdr termio.h`; then
19805 echo "<termio.h> found." >&4
19806 val="$define"
19807 else
19808echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19809 fi
19810 fi;;
19811esac
19812set i_termio; eval $setvar
19813val=$val2; set i_sgtty; eval $setvar
19814val=$val3; set i_termios; eval $setvar
19815
b4eb6b3d
JH
19816: see if stddef is available
19817set stddef.h i_stddef
19818eval $inhdr
923fc586 19819
b4eb6b3d
JH
19820: see if this is a sunmath.h system
19821set sunmath.h i_sunmath
19822eval $inhdr
5f80c64f 19823
b4eb6b3d
JH
19824: see if sys/access.h is available
19825set sys/access.h i_sysaccess
19826eval $inhdr
19827
19828: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19829set sys/filio.h i_sysfilio
19830eval $inhdr
19831echo " "
19832if $test `./findhdr sys/ioctl.h`; then
19833 val="$define"
19834 echo '<sys/ioctl.h> found.' >&4
19835else
19836 val="$undef"
19837 if $test $i_sysfilio = "$define"; then
19838 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 19839 else
b4eb6b3d
JH
19840 $test $i_sgtty = "$define" && xxx="sgtty.h"
19841 $test $i_termio = "$define" && xxx="termio.h"
19842 $test $i_termios = "$define" && xxx="termios.h"
19843echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19844 fi
19845fi
19846set i_sysioctl
19847eval $setvar
19848
49a78c82
JH
19849: see if socket ioctl defs are in sys/sockio.h
19850echo " "
19851xxx=`./findhdr sys/sockio.h`
19852if $test "$xxx"; then
19853 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19854 val="$define"
19855 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19856 else
19857 val="$undef"
19858 echo "No socket ioctls found in <sys/sockio.h>." >&4
19859 fi
19860else
19861 val="$undef"
19862 $cat <<EOM
19863<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19864EOM
19865fi
19866set i_syssockio
19867eval $setvar
19868
b4eb6b3d
JH
19869
19870: see if this is a syslog.h system
19871set syslog.h i_syslog
19872eval $inhdr
19873
19874
19875: see if this is a sys/mode.h system
19876set sys/mode.h i_sysmode
19877eval $inhdr
19878
19879: see if sys/resource.h has to be included
19880set sys/resource.h i_sysresrc
19881eval $inhdr
19882
19883: see if sys/security.h is available
19884set sys/security.h i_syssecrt
19885eval $inhdr
19886
19887: see if this is a sys/statvfs.h system
19888set sys/statvfs.h i_sysstatvfs
19889eval $inhdr
19890
b4eb6b3d
JH
19891: see if this is a sys/un.h system
19892set sys/un.h i_sysun
19893eval $inhdr
19894
19895
19896: see if this is a sys/utsname.h system
19897set sys/utsname.h i_sysutsname
19898eval $inhdr
19899
19900: see if this is a syswait system
19901set sys/wait.h i_syswait
19902eval $inhdr
19903
19904: see if this is a ustat.h system
19905set ustat.h i_ustat
19906eval $inhdr
19907
19908: see if this is an utime system
19909set utime.h i_utime
19910eval $inhdr
19911
19912: see if this is a values.h system
19913set values.h i_values
19914eval $inhdr
19915
19916: see if this is a vfork system
19917case "$d_vfork" in
19918"$define")
19919 set vfork.h i_vfork
19920 eval $inhdr
19921 ;;
19922*)
19923 i_vfork="$undef"
19924 ;;
19925esac
19926
19927: see if gdbm.h is available
19928set gdbm.h t_gdbm
19929eval $inhdr
19930case "$t_gdbm" in
19931$define)
19932 : see if gdbm_open exists
19933 set gdbm_open d_gdbm_open
19934 eval $inlibc
19935 case "$d_gdbm_open" in
19936 $undef)
19937 t_gdbm="$undef"
19938 echo "We won't be including <gdbm.h>"
5f80c64f 19939 ;;
b4eb6b3d
JH
19940 esac
19941 ;;
19942esac
19943val="$t_gdbm"
19944set i_gdbm
19945eval $setvar
19946
19947echo " "
19948echo "Looking for extensions..." >&4
19949: If we are using the old config.sh, known_extensions may contain
19950: old or inaccurate or duplicate values.
19951known_extensions=''
19952nonxs_extensions=''
19953: We do not use find because it might not be available.
19954: We do not just use MANIFEST because the user may have dropped
19955: some additional extensions into the source tree and expect them
19956: to be built.
19957
19958: Function to recursively find available extensions, ignoring DynaLoader
19959: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19960find_extensions='
19961 for xxx in *; do
19962 case "$xxx" in
19963 DynaLoader|dynaload) ;;
19964 *)
19965 if $test -f $xxx/$xxx.xs; then
19966 known_extensions="$known_extensions $1$xxx";
19967 elif $test -f $xxx/Makefile.PL; then
19968 nonxs_extensions="$nonxs_extensions $1$xxx";
19969 else
19970 if $test -d $xxx -a $# -lt 10; then
19971 set $1$xxx/ $*;
6904989c 19972 cd "$xxx";
b4eb6b3d
JH
19973 eval $find_extensions;
19974 cd ..;
19975 shift;
19976 fi;
19977 fi
19978 ;;
19979 esac;
19980 done'
19981tdir=`pwd`
6904989c 19982cd "$rsrc/ext"
b4eb6b3d
JH
19983set X
19984shift
19985eval $find_extensions
4e1a6d26
AD
19986# Special case: Add in threads/shared since it is not picked up by the
19987# recursive find above (and adding in general recursive finding breaks
19988# SDBM_File/sdbm). A.D. 10/25/2001.
998b396c 19989known_extensions="$known_extensions threads/shared"
b4eb6b3d
JH
19990set X $nonxs_extensions
19991shift
19992nonxs_extensions="$*"
19993set X $known_extensions
19994shift
19995known_extensions="$*"
6904989c 19996cd "$tdir"
b4eb6b3d
JH
19997
19998: Now see which are supported on this system.
19999avail_ext=''
20000for xxx in $known_extensions ; do
20001 case "$xxx" in
20002 DB_File|db_file)
20003 case "$i_db" in
20004 $define) avail_ext="$avail_ext $xxx" ;;
20005 esac
20006 ;;
20007 GDBM_File|gdbm_fil)
20008 case "$i_gdbm" in
20009 $define) avail_ext="$avail_ext $xxx" ;;
20010 esac
20011 ;;
1d59c593 20012 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
20013 case "$i_langinfo$d_nl_langinfo" in
20014 $define$define) avail_ext="$avail_ext $xxx" ;;
20015 esac
20016 ;;
b4eb6b3d
JH
20017 NDBM_File|ndbm_fil)
20018 case "$i_ndbm" in
20019 $define)
20020 case "$osname-$use64bitint" in
0be9fa5d 20021 hpux-define)
b4eb6b3d
JH
20022 case "$libs" in
20023 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20024 esac
20025 ;;
20026 *) avail_ext="$avail_ext $xxx" ;;
20027 esac
20028 ;;
20029 esac
20030 ;;
20031 ODBM_File|odbm_fil)
20032 case "${i_dbm}${i_rpcsvcdbm}" in
20033 *"${define}"*)
20034 case "$osname-$use64bitint" in
0be9fa5d 20035 hpux-define)
b4eb6b3d
JH
20036 case "$libs" in
20037 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20038 esac
20039 ;;
20040 *) avail_ext="$avail_ext $xxx" ;;
20041 esac
20042 ;;
20043 esac
20044 ;;
20045 POSIX|posix)
20046 case "$useposix" in
20047 true|define|y) avail_ext="$avail_ext $xxx" ;;
20048 esac
20049 ;;
20050 Opcode|opcode)
20051 case "$useopcode" in
20052 true|define|y) avail_ext="$avail_ext $xxx" ;;
20053 esac
20054 ;;
20055 Socket|socket)
20056 case "$d_socket" in
4a9f028c
JH
20057 true|$define|y)
20058 case "$osname" in
20059 beos) ;; # not unless BONE
20060 *) avail_ext="$avail_ext $xxx" ;;
20061 esac
20062 ;;
b4eb6b3d
JH
20063 esac
20064 ;;
20065 Sys/Syslog|sys/syslog)
20066 : XXX syslog requires socket
20067 case "$d_socket" in
20068 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20069 esac
20070 ;;
20071 Thread|thread)
b00ec89b
AB
20072 case "$usethreads" in
20073 true|$define|y)
20074 case "$useithreads" in
20075 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20076 esac
b4eb6b3d
JH
20077 esac
20078 ;;
f9b6ed1c
AD
20079 XS/APItest|xs/apitest)
20080 # This is just for testing. Skip it unless we have dynamic loading.
20081
20082 case "$usedl" in
20083 $define) avail_ext="$avail_ext $xxx" ;;
20084 esac
20085 ;;
20086 XS/Typemap|xs/typemap)
20087 # This is just for testing. Skip it unless we have dynamic loading.
20088 case "$usedl" in
20089 $define) avail_ext="$avail_ext $xxx" ;;
20090 esac
20091 ;;
7deadc5f 20092 threads|threads/shared)
73e09c8f
JH
20093 # threads and threads::shared are special cases.
20094 # To stop people from asking "Perl 5.8.0 was supposed
20095 # to have this new fancy threads implementation but my
20096 # perl doesn't have it" and from people trying to
20097 # (re)install the threads module using CPAN.pm and
20098 # CPAN.pm then offering to reinstall Perl 5.8.0,
20099 # the threads.pm and threads/shared.pm will always be
20100 # there, croaking informatively ("you need to rebuild
20101 # all of Perl with threads, sorry") when threads haven't
20102 # been compiled in.
20103 # --jhi
20104 avail_ext="$avail_ext $xxx"
1dca008a 20105 ;;
b4eb6b3d
JH
20106 IPC/SysV|ipc/sysv)
20107 : XXX Do we need a useipcsysv variable here
20108 case "${d_msg}${d_sem}${d_shm}" in
20109 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20110 esac
20111 ;;
20112 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
20113 ;;
20114 esac
b4eb6b3d 20115done
5f80c64f 20116
b4eb6b3d
JH
20117set X $avail_ext
20118shift
20119avail_ext="$*"
5f80c64f 20120
ef0c5be8
JH
20121case "$onlyextensions" in
20122'') ;;
20123*) keepextensions=''
20124 echo "You have requested that only certains extensions be included..." >&4
20125 for i in $onlyextensions; do
20126 case " $avail_ext " in
20127 *" $i "*)
20128 echo "Keeping extension $i."
20129 keepextensions="$keepextensions $i"
20130 ;;
20131 *) echo "Ignoring extension $i." ;;
20132 esac
20133 done
20134 avail_ext="$keepextensions"
20135 ;;
20136esac
20137
20138case "$noextensions" in
20139'') ;;
20140*) keepextensions=''
20141 echo "You have requested that certain extensions be ignored..." >&4
20142 for i in $avail_ext; do
c3dadc13
AD
20143 case " $noextensions " in
20144 *" $i "*) echo "Ignoring extension $i." ;;
ef0c5be8
JH
20145 *) echo "Keeping extension $i.";
20146 keepextensions="$keepextensions $i"
20147 ;;
20148 esac
20149 done
20150 avail_ext="$keepextensions"
20151 ;;
20152esac
20153
b4eb6b3d
JH
20154: Now see which nonxs extensions are supported on this system.
20155: For now assume all are.
20156nonxs_ext=''
20157for xxx in $nonxs_extensions ; do
20158 case "$xxx" in
20159 *) nonxs_ext="$nonxs_ext $xxx"
20160 ;;
20161 esac
20162done
5f80c64f 20163
b4eb6b3d
JH
20164set X $nonxs_ext
20165shift
20166nonxs_ext="$*"
20167
20168case $usedl in
20169$define)
20170 $cat <<EOM
20171A number of extensions are supplied with $package. You may choose to
20172compile these extensions for dynamic loading (the default), compile
20173them into the $package executable (static loading), or not include
20174them at all. Answer "none" to include no extensions.
20175Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
20176
20177EOM
b4eb6b3d 20178 case "$dynamic_ext" in
736accd3
YST
20179 '')
20180 : Exclude those listed in static_ext
20181 dflt=''
20182 for xxx in $avail_ext; do
20183 case " $static_ext " in
20184 *" $xxx "*) ;;
20185 *) dflt="$dflt $xxx" ;;
20186 esac
20187 done
20188 set X $dflt
20189 shift
20190 dflt="$*"
20191 ;;
b4eb6b3d
JH
20192 *) dflt="$dynamic_ext"
20193 # Perhaps we are reusing an old out-of-date config.sh.
20194 case "$hint" in
20195 previous)
20196 if test X"$dynamic_ext" != X"$avail_ext"; then
20197 $cat <<EOM
20198NOTICE: Your previous config.sh list may be incorrect.
20199The extensions now available to you are
20200 ${avail_ext}
20201but the default list from your previous config.sh is
20202 ${dynamic_ext}
9c839522 20203
b4eb6b3d
JH
20204EOM
20205 fi
9c839522
PM
20206 ;;
20207 esac
b4eb6b3d
JH
20208 ;;
20209 esac
5f80c64f 20210 case "$dflt" in
b4eb6b3d
JH
20211 '') dflt=none;;
20212 esac
20213 rp="What extensions do you wish to load dynamically?"
20214 . ./myread
20215 case "$ans" in
20216 none) dynamic_ext=' ' ;;
20217 *) dynamic_ext="$ans" ;;
5f80c64f 20218 esac
5f80c64f 20219
b4eb6b3d
JH
20220 case "$static_ext" in
20221 '')
20222 : Exclude those already listed in dynamic linking
20223 dflt=''
20224 for xxx in $avail_ext; do
20225 case " $dynamic_ext " in
20226 *" $xxx "*) ;;
20227 *) dflt="$dflt $xxx" ;;
20228 esac
20229 done
20230 set X $dflt
20231 shift
20232 dflt="$*"
20233 ;;
20234 *) dflt="$static_ext"
20235 ;;
20236 esac
9c839522 20237
b4eb6b3d
JH
20238 case "$dflt" in
20239 '') dflt=none;;
20240 esac
20241 rp="What extensions do you wish to load statically?"
20242 . ./myread
20243 case "$ans" in
20244 none) static_ext=' ' ;;
20245 *) static_ext="$ans" ;;
20246 esac
20247 ;;
20248*)
20249 $cat <<EOM
20250A number of extensions are supplied with $package. Answer "none"
20251to include no extensions.
20252Note that DynaLoader is always built and need not be mentioned here.
9c839522 20253
b4eb6b3d
JH
20254EOM
20255 case "$static_ext" in
20256 '') dflt="$avail_ext" ;;
20257 *) dflt="$static_ext"
20258 # Perhaps we are reusing an old out-of-date config.sh.
20259 case "$hint" in
20260 previous)
20261 if test X"$static_ext" != X"$avail_ext"; then
20262 $cat <<EOM
20263NOTICE: Your previous config.sh list may be incorrect.
20264The extensions now available to you are
20265 ${avail_ext}
20266but the default list from your previous config.sh is
20267 ${static_ext}
5f80c64f
JH
20268
20269EOM
b4eb6b3d
JH
20270 fi
20271 ;;
20272 esac
20273 ;;
20274 esac
20275 : Exclude those that are not xs extensions
20276 case "$dflt" in
20277 '') dflt=none;;
20278 esac
20279 rp="What extensions do you wish to include?"
20280 . ./myread
20281 case "$ans" in
20282 none) static_ext=' ' ;;
20283 *) static_ext="$ans" ;;
20284 esac
20285 ;;
5f80c64f 20286esac
f1f6834f
AD
20287#
20288# Encode is a special case. If we are building Encode as a static
20289# extension, we need to explicitly list its subextensions as well.
20290# For other nested extensions, this is handled automatically by
20291# the appropriate Makefile.PL.
20292case " $static_ext " in
20293 *" Encode "*) # Add the subextensions of Encode
20294 cd "$rsrc/ext"
20295 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20296 static_ext="$static_ext Encode/$xxx"
20297 done
20298 cd "$tdir"
20299 ;;
20300esac
5f80c64f 20301
b4eb6b3d
JH
20302set X $dynamic_ext $static_ext $nonxs_ext
20303shift
20304extensions="$*"
20305
93a2cd18
AD
20306# Sanity check: We require an extension suitable for use with
20307# AnyDBM_File, as well as Fcntl and IO. (Failure to have these
20308# should show up as failures in the test suite, but it's helpful to
20309# catch them now.) The 'extensions' list is normally sorted
20310# alphabetically, so we need to accept either
20311# DB_File ... Fcntl ... IO ....
20312# or something like
20313# Fcntl ... NDBM_File ... IO ....
42fde7b2
JH
20314case " $extensions" in
20315*"_File "*" Fcntl "*" IO "*) ;; # DB_File
20316*" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20317*" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
7a8675bc
JH
20318*) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20319 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20320 ;;
20321esac
20322
9c839522
PM
20323: Remove libraries needed only for extensions
20324: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
20325: The exception is SunOS 4.x, which needs them.
20326case "${osname}X${osvers}" in
20327sunos*X4*)
20328 perllibs="$libs"
20329 ;;
20330*) case "$usedl" in
20331 $define|true|[yY]*)
20332 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20333 shift
20334 perllibs="$*"
20335 ;;
20336 *) perllibs="$libs"
20337 ;;
20338 esac
20339 ;;
9c839522 20340esac
5f80c64f
JH
20341
20342: Remove build directory name from cppstdin so it can be used from
20343: either the present location or the final installed location.
20344echo " "
20345: Get out of the UU directory to get correct path name.
20346cd ..
20347case "$cppstdin" in
20348`pwd`/cppstdin)
20349 echo "Stripping down cppstdin path name"
20350 cppstdin=cppstdin
20351 ;;
20352esac
20353cd UU
20354
20355: end of configuration questions
20356echo " "
20357echo "End of configuration questions."
20358echo " "
20359
20360: back to where it started
20361if test -d ../UU; then
20362 cd ..
20363fi
20364
48370efc
JH
20365: configuration may be patched via a 'config.arch' file
20366if $test -f config.arch; then
20367 echo "I see a config.arch file, loading it."
20368 . ./config.arch
20369fi
20370
5f80c64f
JH
20371: configuration may be patched via a 'config.over' file
20372if $test -f config.over; then
20373 echo " "
20374 dflt=y
20375 rp='I see a config.over file. Do you wish to load it?'
20376 . UU/myread
20377 case "$ans" in
20378 n*) echo "OK, I'll ignore it.";;
20379 *) . ./config.over
20380 echo "Configuration override changes have been loaded."
20381 ;;
20382 esac
20383fi
20384
20385: in case they want portability, strip down executable paths
20386case "$d_portable" in
20387"$define")
20388 echo " "
20389 echo "Stripping down executable paths..." >&4
20390 for file in $loclist $trylist; do
534ac15a
JH
20391 eval temp=\$$file
20392 eval $file=`basename $temp`
5f80c64f
JH
20393 done
20394 ;;
20395esac
20396
20397: create config.sh file
20398echo " "
20399echo "Creating config.sh..." >&4
20400$spitshell <<EOT >config.sh
20401$startsh
20402#
20403# This file was produced by running the Configure script. It holds all the
20404# definitions figured out by Configure. Should you modify one of these values,
20405# do not forget to propagate your changes by running "Configure -der". You may
20406# instead choose to run each of the .SH files by yourself, or "Configure -S".
20407#
20408
20409# Package name : $package
20410# Source directory : $src
20411# Configuration time: $cf_time
20412# Configured by : $cf_by
20413# Target system : $myuname
20414
20415Author='$Author'
20416Date='$Date'
20417Header='$Header'
20418Id='$Id'
20419Locker='$Locker'
20420Log='$Log'
20421Mcc='$Mcc'
20422RCSfile='$RCSfile'
20423Revision='$Revision'
20424Source='$Source'
20425State='$State'
20426_a='$_a'
20427_exe='$_exe'
20428_o='$_o'
b4eb6b3d 20429afs='$afs'
a6d26a0d 20430afsroot='$afsroot'
b4eb6b3d
JH
20431alignbytes='$alignbytes'
20432ansi2knr='$ansi2knr'
20433aphostname='$aphostname'
20434api_revision='$api_revision'
20435api_subversion='$api_subversion'
20436api_version='$api_version'
20437api_versionstring='$api_versionstring'
5f80c64f 20438ar='$ar'
b4eb6b3d
JH
20439archlib='$archlib'
20440archlibexp='$archlibexp'
20441archname64='$archname64'
20442archname='$archname'
5f80c64f 20443archobjs='$archobjs'
10bc17b6 20444asctime_r_proto='$asctime_r_proto'
5f80c64f 20445awk='$awk'
b4eb6b3d 20446baserev='$baserev'
5f80c64f 20447bash='$bash'
b4eb6b3d 20448bin='$bin'
b4eb6b3d 20449binexp='$binexp'
5f80c64f
JH
20450bison='$bison'
20451byacc='$byacc'
b4eb6b3d 20452byteorder='$byteorder'
5f80c64f 20453c='$c'
b4eb6b3d 20454castflags='$castflags'
5f80c64f
JH
20455cat='$cat'
20456cc='$cc'
20457cccdlflags='$cccdlflags'
20458ccdlflags='$ccdlflags'
20459ccflags='$ccflags'
b4eb6b3d 20460ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 20461ccname='$ccname'
b4eb6b3d 20462ccsymbols='$ccsymbols'
6b356c8e 20463ccversion='$ccversion'
5f80c64f 20464cf_by='$cf_by'
b4eb6b3d 20465cf_email='$cf_email'
5f80c64f 20466cf_time='$cf_time'
b4eb6b3d 20467charsize='$charsize'
5f80c64f
JH
20468chgrp='$chgrp'
20469chmod='$chmod'
20470chown='$chown'
b4eb6b3d 20471clocktype='$clocktype'
5f80c64f
JH
20472comm='$comm'
20473compress='$compress'
20474contains='$contains'
20475cp='$cp'
20476cpio='$cpio'
20477cpp='$cpp'
b4eb6b3d
JH
20478cpp_stuff='$cpp_stuff'
20479cppccsymbols='$cppccsymbols'
5f80c64f
JH
20480cppflags='$cppflags'
20481cpplast='$cpplast'
20482cppminus='$cppminus'
20483cpprun='$cpprun'
20484cppstdin='$cppstdin'
b4eb6b3d 20485cppsymbols='$cppsymbols'
10bc17b6 20486crypt_r_proto='$crypt_r_proto'
b4eb6b3d 20487cryptlib='$cryptlib'
5f80c64f 20488csh='$csh'
10bc17b6
JH
20489ctermid_r_proto='$ctermid_r_proto'
20490ctime_r_proto='$ctime_r_proto'
b4eb6b3d
JH
20491d_Gconvert='$d_Gconvert'
20492d_PRIEUldbl='$d_PRIEUldbl'
20493d_PRIFUldbl='$d_PRIFUldbl'
20494d_PRIGUldbl='$d_PRIGUldbl'
20495d_PRIXU64='$d_PRIXU64'
20496d_PRId64='$d_PRId64'
20497d_PRIeldbl='$d_PRIeldbl'
20498d_PRIfldbl='$d_PRIfldbl'
20499d_PRIgldbl='$d_PRIgldbl'
20500d_PRIi64='$d_PRIi64'
20501d_PRIo64='$d_PRIo64'
20502d_PRIu64='$d_PRIu64'
20503d_PRIx64='$d_PRIx64'
20504d_SCNfldbl='$d_SCNfldbl'
74cac757 20505d__fwalk='$d__fwalk'
b4eb6b3d
JH
20506d_access='$d_access'
20507d_accessx='$d_accessx'
55954f19 20508d_aintl='$d_aintl'
b4eb6b3d
JH
20509d_alarm='$d_alarm'
20510d_archlib='$d_archlib'
10bc17b6 20511d_asctime_r='$d_asctime_r'
b4eb6b3d
JH
20512d_atolf='$d_atolf'
20513d_atoll='$d_atoll'
20514d_attribut='$d_attribut'
20515d_bcmp='$d_bcmp'
20516d_bcopy='$d_bcopy'
5f80c64f 20517d_bsd='$d_bsd'
b4eb6b3d
JH
20518d_bsdgetpgrp='$d_bsdgetpgrp'
20519d_bsdsetpgrp='$d_bsdsetpgrp'
20520d_bzero='$d_bzero'
20521d_casti32='$d_casti32'
20522d_castneg='$d_castneg'
20523d_charvspr='$d_charvspr'
20524d_chown='$d_chown'
20525d_chroot='$d_chroot'
20526d_chsize='$d_chsize'
758a5d79 20527d_class='$d_class'
b4eb6b3d 20528d_closedir='$d_closedir'
4e0554ec 20529d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d 20530d_const='$d_const'
55954f19 20531d_copysignl='$d_copysignl'
b4eb6b3d 20532d_crypt='$d_crypt'
10bc17b6 20533d_crypt_r='$d_crypt_r'
b4eb6b3d 20534d_csh='$d_csh'
10bc17b6
JH
20535d_ctermid_r='$d_ctermid_r'
20536d_ctime_r='$d_ctime_r'
b4eb6b3d
JH
20537d_cuserid='$d_cuserid'
20538d_dbl_dig='$d_dbl_dig'
2ef53570 20539d_dbminitproto='$d_dbminitproto'
b4eb6b3d 20540d_difftime='$d_difftime'
ae0e3d3b 20541d_dirfd='$d_dirfd'
b4eb6b3d
JH
20542d_dirnamlen='$d_dirnamlen'
20543d_dlerror='$d_dlerror'
5f80c64f 20544d_dlopen='$d_dlopen'
b4eb6b3d
JH
20545d_dlsymun='$d_dlsymun'
20546d_dosuid='$d_dosuid'
10bc17b6 20547d_drand48_r='$d_drand48_r'
b4eb6b3d
JH
20548d_drand48proto='$d_drand48proto'
20549d_dup2='$d_dup2'
20550d_eaccess='$d_eaccess'
20551d_endgrent='$d_endgrent'
10bc17b6 20552d_endgrent_r='$d_endgrent_r'
b4eb6b3d 20553d_endhent='$d_endhent'
10bc17b6 20554d_endhostent_r='$d_endhostent_r'
b4eb6b3d 20555d_endnent='$d_endnent'
10bc17b6 20556d_endnetent_r='$d_endnetent_r'
b4eb6b3d 20557d_endpent='$d_endpent'
10bc17b6 20558d_endprotoent_r='$d_endprotoent_r'
b4eb6b3d 20559d_endpwent='$d_endpwent'
10bc17b6 20560d_endpwent_r='$d_endpwent_r'
b4eb6b3d 20561d_endsent='$d_endsent'
10bc17b6 20562d_endservent_r='$d_endservent_r'
b4eb6b3d 20563d_eofnblk='$d_eofnblk'
5f80c64f 20564d_eunice='$d_eunice'
15b61c98 20565d_faststdio='$d_faststdio'
b363b713 20566d_fchdir='$d_fchdir'
b4eb6b3d
JH
20567d_fchmod='$d_fchmod'
20568d_fchown='$d_fchown'
20569d_fcntl='$d_fcntl'
9d9004a9 20570d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
20571d_fd_macros='$d_fd_macros'
20572d_fd_set='$d_fd_set'
20573d_fds_bits='$d_fds_bits'
20574d_fgetpos='$d_fgetpos'
758a5d79
JH
20575d_finite='$d_finite'
20576d_finitel='$d_finitel'
b4eb6b3d
JH
20577d_flexfnam='$d_flexfnam'
20578d_flock='$d_flock'
2ef53570 20579d_flockproto='$d_flockproto'
b4eb6b3d 20580d_fork='$d_fork'
758a5d79 20581d_fp_class='$d_fp_class'
b4eb6b3d 20582d_fpathconf='$d_fpathconf'
758a5d79
JH
20583d_fpclass='$d_fpclass'
20584d_fpclassify='$d_fpclassify'
20585d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
20586d_fpos64_t='$d_fpos64_t'
20587d_frexpl='$d_frexpl'
20588d_fs_data_s='$d_fs_data_s'
20589d_fseeko='$d_fseeko'
20590d_fsetpos='$d_fsetpos'
20591d_fstatfs='$d_fstatfs'
20592d_fstatvfs='$d_fstatvfs'
411ab01c 20593d_fsync='$d_fsync'
b4eb6b3d
JH
20594d_ftello='$d_ftello'
20595d_ftime='$d_ftime'
20596d_getcwd='$d_getcwd'
20597d_getespwnam='$d_getespwnam'
20598d_getfsstat='$d_getfsstat'
20599d_getgrent='$d_getgrent'
10bc17b6
JH
20600d_getgrent_r='$d_getgrent_r'
20601d_getgrgid_r='$d_getgrgid_r'
20602d_getgrnam_r='$d_getgrnam_r'
b4eb6b3d
JH
20603d_getgrps='$d_getgrps'
20604d_gethbyaddr='$d_gethbyaddr'
20605d_gethbyname='$d_gethbyname'
20606d_gethent='$d_gethent'
20607d_gethname='$d_gethname'
10bc17b6
JH
20608d_gethostbyaddr_r='$d_gethostbyaddr_r'
20609d_gethostbyname_r='$d_gethostbyname_r'
20610d_gethostent_r='$d_gethostent_r'
b4eb6b3d 20611d_gethostprotos='$d_gethostprotos'
4e0554ec 20612d_getitimer='$d_getitimer'
b4eb6b3d 20613d_getlogin='$d_getlogin'
10bc17b6 20614d_getlogin_r='$d_getlogin_r'
b4eb6b3d
JH
20615d_getmnt='$d_getmnt'
20616d_getmntent='$d_getmntent'
20617d_getnbyaddr='$d_getnbyaddr'
20618d_getnbyname='$d_getnbyname'
20619d_getnent='$d_getnent'
10bc17b6
JH
20620d_getnetbyaddr_r='$d_getnetbyaddr_r'
20621d_getnetbyname_r='$d_getnetbyname_r'
20622d_getnetent_r='$d_getnetent_r'
b4eb6b3d 20623d_getnetprotos='$d_getnetprotos'
0c0643d0 20624d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
20625d_getpbyname='$d_getpbyname'
20626d_getpbynumber='$d_getpbynumber'
20627d_getpent='$d_getpent'
20628d_getpgid='$d_getpgid'
20629d_getpgrp2='$d_getpgrp2'
20630d_getpgrp='$d_getpgrp'
20631d_getppid='$d_getppid'
20632d_getprior='$d_getprior'
10bc17b6
JH
20633d_getprotobyname_r='$d_getprotobyname_r'
20634d_getprotobynumber_r='$d_getprotobynumber_r'
20635d_getprotoent_r='$d_getprotoent_r'
b4eb6b3d
JH
20636d_getprotoprotos='$d_getprotoprotos'
20637d_getprpwnam='$d_getprpwnam'
20638d_getpwent='$d_getpwent'
10bc17b6
JH
20639d_getpwent_r='$d_getpwent_r'
20640d_getpwnam_r='$d_getpwnam_r'
20641d_getpwuid_r='$d_getpwuid_r'
b4eb6b3d
JH
20642d_getsbyname='$d_getsbyname'
20643d_getsbyport='$d_getsbyport'
20644d_getsent='$d_getsent'
10bc17b6
JH
20645d_getservbyname_r='$d_getservbyname_r'
20646d_getservbyport_r='$d_getservbyport_r'
20647d_getservent_r='$d_getservent_r'
b4eb6b3d
JH
20648d_getservprotos='$d_getservprotos'
20649d_getspnam='$d_getspnam'
10bc17b6 20650d_getspnam_r='$d_getspnam_r'
b4eb6b3d 20651d_gettimeod='$d_gettimeod'
10bc17b6 20652d_gmtime_r='$d_gmtime_r'
5f80c64f 20653d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
20654d_grpasswd='$d_grpasswd'
20655d_hasmntopt='$d_hasmntopt'
20656d_htonl='$d_htonl'
55954f19 20657d_ilogbl='$d_ilogbl'
b4eb6b3d
JH
20658d_index='$d_index'
20659d_inetaton='$d_inetaton'
20660d_int64_t='$d_int64_t'
20661d_isascii='$d_isascii'
758a5d79
JH
20662d_isfinite='$d_isfinite'
20663d_isinf='$d_isinf'
b4eb6b3d
JH
20664d_isnan='$d_isnan'
20665d_isnanl='$d_isnanl'
20666d_killpg='$d_killpg'
20667d_lchown='$d_lchown'
20668d_ldbl_dig='$d_ldbl_dig'
20669d_link='$d_link'
10bc17b6 20670d_localtime_r='$d_localtime_r'
b4eb6b3d
JH
20671d_locconv='$d_locconv'
20672d_lockf='$d_lockf'
20673d_longdbl='$d_longdbl'
20674d_longlong='$d_longlong'
20675d_lseekproto='$d_lseekproto'
20676d_lstat='$d_lstat'
20677d_madvise='$d_madvise'
20678d_mblen='$d_mblen'
20679d_mbstowcs='$d_mbstowcs'
20680d_mbtowc='$d_mbtowc'
20681d_memchr='$d_memchr'
20682d_memcmp='$d_memcmp'
20683d_memcpy='$d_memcpy'
20684d_memmove='$d_memmove'
20685d_memset='$d_memset'
20686d_mkdir='$d_mkdir'
20687d_mkdtemp='$d_mkdtemp'
20688d_mkfifo='$d_mkfifo'
20689d_mkstemp='$d_mkstemp'
20690d_mkstemps='$d_mkstemps'
20691d_mktime='$d_mktime'
20692d_mmap='$d_mmap'
20693d_modfl='$d_modfl'
e67aeab1 20694d_modfl_pow32_bug='$d_modfl_pow32_bug'
bc9a1b2c 20695d_modflproto='$d_modflproto'
b4eb6b3d
JH
20696d_mprotect='$d_mprotect'
20697d_msg='$d_msg'
20698d_msg_ctrunc='$d_msg_ctrunc'
20699d_msg_dontroute='$d_msg_dontroute'
20700d_msg_oob='$d_msg_oob'
20701d_msg_peek='$d_msg_peek'
20702d_msg_proxy='$d_msg_proxy'
20703d_msgctl='$d_msgctl'
20704d_msgget='$d_msgget'
4e0554ec 20705d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
20706d_msgrcv='$d_msgrcv'
20707d_msgsnd='$d_msgsnd'
20708d_msync='$d_msync'
20709d_munmap='$d_munmap'
20710d_mymalloc='$d_mymalloc'
20711d_nice='$d_nice'
2765b840 20712d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d 20713d_nv_preserves_uv='$d_nv_preserves_uv'
b4eb6b3d
JH
20714d_off64_t='$d_off64_t'
20715d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20716d_oldpthreads='$d_oldpthreads'
20717d_oldsock='$d_oldsock'
20718d_open3='$d_open3'
20719d_pathconf='$d_pathconf'
20720d_pause='$d_pause'
20721d_perl_otherlibdirs='$d_perl_otherlibdirs'
20722d_phostname='$d_phostname'
20723d_pipe='$d_pipe'
20724d_poll='$d_poll'
5f80c64f 20725d_portable='$d_portable'
c7aff470 20726d_procselfexe='$d_procselfexe'
d6483fcc 20727d_pthread_atfork='$d_pthread_atfork'
58d975c3 20728d_pthread_attr_setscope='$d_pthread_attr_setscope'
b4eb6b3d
JH
20729d_pthread_yield='$d_pthread_yield'
20730d_pwage='$d_pwage'
20731d_pwchange='$d_pwchange'
20732d_pwclass='$d_pwclass'
20733d_pwcomment='$d_pwcomment'
20734d_pwexpire='$d_pwexpire'
20735d_pwgecos='$d_pwgecos'
20736d_pwpasswd='$d_pwpasswd'
20737d_pwquota='$d_pwquota'
20738d_qgcvt='$d_qgcvt'
20739d_quad='$d_quad'
10bc17b6
JH
20740d_random_r='$d_random_r'
20741d_readdir64_r='$d_readdir64_r'
b4eb6b3d 20742d_readdir='$d_readdir'
10bc17b6 20743d_readdir_r='$d_readdir_r'
b4eb6b3d 20744d_readlink='$d_readlink'
4e0554ec
JH
20745d_readv='$d_readv'
20746d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
20747d_rename='$d_rename'
20748d_rewinddir='$d_rewinddir'
20749d_rmdir='$d_rmdir'
20750d_safebcpy='$d_safebcpy'
20751d_safemcpy='$d_safemcpy'
20752d_sanemcmp='$d_sanemcmp'
ef9f17be 20753d_sbrkproto='$d_sbrkproto'
55954f19 20754d_scalbnl='$d_scalbnl'
b4eb6b3d
JH
20755d_sched_yield='$d_sched_yield'
20756d_scm_rights='$d_scm_rights'
20757d_seekdir='$d_seekdir'
20758d_select='$d_select'
20759d_sem='$d_sem'
20760d_semctl='$d_semctl'
20761d_semctl_semid_ds='$d_semctl_semid_ds'
20762d_semctl_semun='$d_semctl_semun'
20763d_semget='$d_semget'
20764d_semop='$d_semop'
4e0554ec 20765d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
20766d_setegid='$d_setegid'
20767d_seteuid='$d_seteuid'
20768d_setgrent='$d_setgrent'
10bc17b6 20769d_setgrent_r='$d_setgrent_r'
b4eb6b3d
JH
20770d_setgrps='$d_setgrps'
20771d_sethent='$d_sethent'
10bc17b6 20772d_sethostent_r='$d_sethostent_r'
4e0554ec 20773d_setitimer='$d_setitimer'
b4eb6b3d
JH
20774d_setlinebuf='$d_setlinebuf'
20775d_setlocale='$d_setlocale'
10bc17b6 20776d_setlocale_r='$d_setlocale_r'
b4eb6b3d 20777d_setnent='$d_setnent'
10bc17b6 20778d_setnetent_r='$d_setnetent_r'
b4eb6b3d
JH
20779d_setpent='$d_setpent'
20780d_setpgid='$d_setpgid'
20781d_setpgrp2='$d_setpgrp2'
20782d_setpgrp='$d_setpgrp'
20783d_setprior='$d_setprior'
20784d_setproctitle='$d_setproctitle'
10bc17b6 20785d_setprotoent_r='$d_setprotoent_r'
b4eb6b3d 20786d_setpwent='$d_setpwent'
10bc17b6 20787d_setpwent_r='$d_setpwent_r'
b4eb6b3d
JH
20788d_setregid='$d_setregid'
20789d_setresgid='$d_setresgid'
20790d_setresuid='$d_setresuid'
20791d_setreuid='$d_setreuid'
20792d_setrgid='$d_setrgid'
20793d_setruid='$d_setruid'
20794d_setsent='$d_setsent'
10bc17b6 20795d_setservent_r='$d_setservent_r'
b4eb6b3d
JH
20796d_setsid='$d_setsid'
20797d_setvbuf='$d_setvbuf'
20798d_sfio='$d_sfio'
20799d_shm='$d_shm'
20800d_shmat='$d_shmat'
20801d_shmatprototype='$d_shmatprototype'
20802d_shmctl='$d_shmctl'
20803d_shmdt='$d_shmdt'
20804d_shmget='$d_shmget'
20805d_sigaction='$d_sigaction'
983dbef6 20806d_sigprocmask='$d_sigprocmask'
b4eb6b3d 20807d_sigsetjmp='$d_sigsetjmp'
49a78c82 20808d_sockatmark='$d_sockatmark'
2ef53570 20809d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
20810d_socket='$d_socket'
20811d_socklen_t='$d_socklen_t'
20812d_sockpair='$d_sockpair'
20813d_socks5_init='$d_socks5_init'
20814d_sqrtl='$d_sqrtl'
10bc17b6
JH
20815d_srand48_r='$d_srand48_r'
20816d_srandom_r='$d_srandom_r'
eef837ea 20817d_sresgproto='$d_sresgproto'
640374d0 20818d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
20819d_statblks='$d_statblks'
20820d_statfs_f_flags='$d_statfs_f_flags'
20821d_statfs_s='$d_statfs_s'
20822d_statvfs='$d_statvfs'
20823d_stdio_cnt_lval='$d_stdio_cnt_lval'
20824d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
20825d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20826d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
20827d_stdio_stream_array='$d_stdio_stream_array'
20828d_stdiobase='$d_stdiobase'
20829d_stdstdio='$d_stdstdio'
20830d_strchr='$d_strchr'
20831d_strcoll='$d_strcoll'
20832d_strctcpy='$d_strctcpy'
20833d_strerrm='$d_strerrm'
20834d_strerror='$d_strerror'
10bc17b6 20835d_strerror_r='$d_strerror_r'
b3c85772 20836d_strftime='$d_strftime'
b4eb6b3d
JH
20837d_strtod='$d_strtod'
20838d_strtol='$d_strtol'
20839d_strtold='$d_strtold'
20840d_strtoll='$d_strtoll'
28e5dec8 20841d_strtoq='$d_strtoq'
b4eb6b3d
JH
20842d_strtoul='$d_strtoul'
20843d_strtoull='$d_strtoull'
20844d_strtouq='$d_strtouq'
20845d_strxfrm='$d_strxfrm'
20846d_suidsafe='$d_suidsafe'
20847d_symlink='$d_symlink'
20848d_syscall='$d_syscall'
2ef53570 20849d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
20850d_sysconf='$d_sysconf'
20851d_sysernlst='$d_sysernlst'
20852d_syserrlst='$d_syserrlst'
20853d_system='$d_system'
20854d_tcgetpgrp='$d_tcgetpgrp'
20855d_tcsetpgrp='$d_tcsetpgrp'
20856d_telldir='$d_telldir'
20857d_telldirproto='$d_telldirproto'
20858d_time='$d_time'
20859d_times='$d_times'
14b90194
JH
20860d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20861d_tm_tm_zone='$d_tm_tm_zone'
10bc17b6 20862d_tmpnam_r='$d_tmpnam_r'
b4eb6b3d 20863d_truncate='$d_truncate'
10bc17b6 20864d_ttyname_r='$d_ttyname_r'
b4eb6b3d 20865d_tzname='$d_tzname'
4e0554ec
JH
20866d_u32align='$d_u32align'
20867d_ualarm='$d_ualarm'
b4eb6b3d
JH
20868d_umask='$d_umask'
20869d_uname='$d_uname'
20870d_union_semun='$d_union_semun'
758a5d79 20871d_unordered='$d_unordered'
4e0554ec 20872d_usleep='$d_usleep'
2ef53570 20873d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
20874d_ustat='$d_ustat'
20875d_vendorarch='$d_vendorarch'
20876d_vendorbin='$d_vendorbin'
20877d_vendorlib='$d_vendorlib'
6e1038e0 20878d_vendorscript='$d_vendorscript'
b4eb6b3d
JH
20879d_vfork='$d_vfork'
20880d_void_closedir='$d_void_closedir'
20881d_voidsig='$d_voidsig'
20882d_voidtty='$d_voidtty'
20883d_volatile='$d_volatile'
20884d_vprintf='$d_vprintf'
20885d_wait4='$d_wait4'
20886d_waitpid='$d_waitpid'
20887d_wcstombs='$d_wcstombs'
20888d_wctomb='$d_wctomb'
4e0554ec 20889d_writev='$d_writev'
5f80c64f
JH
20890d_xenix='$d_xenix'
20891date='$date'
b4eb6b3d
JH
20892db_hashtype='$db_hashtype'
20893db_prefixtype='$db_prefixtype'
640374d0
JH
20894db_version_major='$db_version_major'
20895db_version_minor='$db_version_minor'
20896db_version_patch='$db_version_patch'
b4eb6b3d
JH
20897defvoidused='$defvoidused'
20898direntrytype='$direntrytype'
20899dlext='$dlext'
5f80c64f 20900dlsrc='$dlsrc'
b4eb6b3d
JH
20901doublesize='$doublesize'
20902drand01='$drand01'
10bc17b6 20903drand48_r_proto='$drand48_r_proto'
b4eb6b3d
JH
20904dynamic_ext='$dynamic_ext'
20905eagain='$eagain'
20906ebcdic='$ebcdic'
5f80c64f
JH
20907echo='$echo'
20908egrep='$egrep'
20909emacs='$emacs'
10bc17b6
JH
20910endgrent_r_proto='$endgrent_r_proto'
20911endhostent_r_proto='$endhostent_r_proto'
20912endnetent_r_proto='$endnetent_r_proto'
20913endprotoent_r_proto='$endprotoent_r_proto'
20914endpwent_r_proto='$endpwent_r_proto'
20915endservent_r_proto='$endservent_r_proto'
5f80c64f
JH
20916eunicefix='$eunicefix'
20917exe_ext='$exe_ext'
20918expr='$expr'
b4eb6b3d 20919extensions='$extensions'
6fcddf3b 20920extras='$extras'
b4eb6b3d
JH
20921fflushNULL='$fflushNULL'
20922fflushall='$fflushall'
5f80c64f
JH
20923find='$find'
20924firstmakefile='$firstmakefile'
20925flex='$flex'
b4eb6b3d
JH
20926fpossize='$fpossize'
20927fpostype='$fpostype'
20928freetype='$freetype'
5440bc8e 20929from='$from'
b4eb6b3d
JH
20930full_ar='$full_ar'
20931full_csh='$full_csh'
20932full_sed='$full_sed'
2d736872 20933gccansipedantic='$gccansipedantic'
5b463ca7 20934gccosandvers='$gccosandvers'
5f80c64f 20935gccversion='$gccversion'
10bc17b6
JH
20936getgrent_r_proto='$getgrent_r_proto'
20937getgrgid_r_proto='$getgrgid_r_proto'
20938getgrnam_r_proto='$getgrnam_r_proto'
20939gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20940gethostbyname_r_proto='$gethostbyname_r_proto'
20941gethostent_r_proto='$gethostent_r_proto'
20942getlogin_r_proto='$getlogin_r_proto'
20943getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20944getnetbyname_r_proto='$getnetbyname_r_proto'
20945getnetent_r_proto='$getnetent_r_proto'
20946getprotobyname_r_proto='$getprotobyname_r_proto'
20947getprotobynumber_r_proto='$getprotobynumber_r_proto'
20948getprotoent_r_proto='$getprotoent_r_proto'
20949getpwent_r_proto='$getpwent_r_proto'
20950getpwnam_r_proto='$getpwnam_r_proto'
20951getpwuid_r_proto='$getpwuid_r_proto'
20952getservbyname_r_proto='$getservbyname_r_proto'
20953getservbyport_r_proto='$getservbyport_r_proto'
20954getservent_r_proto='$getservent_r_proto'
20955getspnam_r_proto='$getspnam_r_proto'
b4eb6b3d
JH
20956gidformat='$gidformat'
20957gidsign='$gidsign'
20958gidsize='$gidsize'
20959gidtype='$gidtype'
5f80c64f 20960glibpth='$glibpth'
3c728e00 20961gmake='$gmake'
10bc17b6 20962gmtime_r_proto='$gmtime_r_proto'
5f6e0ee4 20963gnulibc_version='$gnulibc_version'
5f80c64f 20964grep='$grep'
b4eb6b3d
JH
20965groupcat='$groupcat'
20966groupstype='$groupstype'
5f80c64f 20967gzip='$gzip'
b4eb6b3d
JH
20968h_fcntl='$h_fcntl'
20969h_sysfile='$h_sysfile'
5f80c64f 20970hint='$hint'
b4eb6b3d 20971hostcat='$hostcat'
6e1038e0
MB
20972html1dir='$html1dir'
20973html1direxp='$html1direxp'
20974html3dir='$html3dir'
20975html3direxp='$html3direxp'
b4eb6b3d
JH
20976i16size='$i16size'
20977i16type='$i16type'
20978i32size='$i32size'
20979i32type='$i32type'
20980i64size='$i64size'
20981i64type='$i64type'
20982i8size='$i8size'
20983i8type='$i8type'
20984i_arpainet='$i_arpainet'
20985i_bsdioctl='$i_bsdioctl'
10bc17b6 20986i_crypt='$i_crypt'
b4eb6b3d
JH
20987i_db='$i_db'
20988i_dbm='$i_dbm'
20989i_dirent='$i_dirent'
5f80c64f 20990i_dld='$i_dld'
b4eb6b3d
JH
20991i_dlfcn='$i_dlfcn'
20992i_fcntl='$i_fcntl'
20993i_float='$i_float'
758a5d79
JH
20994i_fp='$i_fp'
20995i_fp_class='$i_fp_class'
b4eb6b3d
JH
20996i_gdbm='$i_gdbm'
20997i_grp='$i_grp'
b4eb6b3d
JH
20998i_ieeefp='$i_ieeefp'
20999i_inttypes='$i_inttypes'
2765b840 21000i_langinfo='$i_langinfo'
b4eb6b3d
JH
21001i_libutil='$i_libutil'
21002i_limits='$i_limits'
21003i_locale='$i_locale'
21004i_machcthr='$i_machcthr'
21005i_malloc='$i_malloc'
21006i_math='$i_math'
21007i_memory='$i_memory'
21008i_mntent='$i_mntent'
21009i_ndbm='$i_ndbm'
21010i_netdb='$i_netdb'
21011i_neterrno='$i_neterrno'
21012i_netinettcp='$i_netinettcp'
21013i_niin='$i_niin'
21014i_poll='$i_poll'
21015i_prot='$i_prot'
21016i_pthread='$i_pthread'
21017i_pwd='$i_pwd'
21018i_rpcsvcdbm='$i_rpcsvcdbm'
21019i_sfio='$i_sfio'
21020i_sgtty='$i_sgtty'
21021i_shadow='$i_shadow'
21022i_socks='$i_socks'
21023i_stdarg='$i_stdarg'
21024i_stddef='$i_stddef'
21025i_stdlib='$i_stdlib'
21026i_string='$i_string'
21027i_sunmath='$i_sunmath'
21028i_sysaccess='$i_sysaccess'
21029i_sysdir='$i_sysdir'
21030i_sysfile='$i_sysfile'
21031i_sysfilio='$i_sysfilio'
21032i_sysin='$i_sysin'
21033i_sysioctl='$i_sysioctl'
21034i_syslog='$i_syslog'
21035i_sysmman='$i_sysmman'
21036i_sysmode='$i_sysmode'
21037i_sysmount='$i_sysmount'
21038i_sysndir='$i_sysndir'
21039i_sysparam='$i_sysparam'
21040i_sysresrc='$i_sysresrc'
21041i_syssecrt='$i_syssecrt'
21042i_sysselct='$i_sysselct'
21043i_syssockio='$i_syssockio'
21044i_sysstat='$i_sysstat'
21045i_sysstatfs='$i_sysstatfs'
21046i_sysstatvfs='$i_sysstatvfs'
21047i_systime='$i_systime'
21048i_systimek='$i_systimek'
21049i_systimes='$i_systimes'
21050i_systypes='$i_systypes'
21051i_sysuio='$i_sysuio'
21052i_sysun='$i_sysun'
21053i_sysutsname='$i_sysutsname'
21054i_sysvfs='$i_sysvfs'
21055i_syswait='$i_syswait'
21056i_termio='$i_termio'
21057i_termios='$i_termios'
21058i_time='$i_time'
21059i_unistd='$i_unistd'
21060i_ustat='$i_ustat'
21061i_utime='$i_utime'
21062i_values='$i_values'
21063i_varargs='$i_varargs'
21064i_varhdr='$i_varhdr'
21065i_vfork='$i_vfork'
5f80c64f 21066ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
21067inc_version_list='$inc_version_list'
21068inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
21069incpath='$incpath'
21070inews='$inews'
b4eb6b3d
JH
21071installarchlib='$installarchlib'
21072installbin='$installbin'
6e1038e0
MB
21073installhtml1dir='$installhtml1dir'
21074installhtml3dir='$installhtml3dir'
b4eb6b3d
JH
21075installman1dir='$installman1dir'
21076installman3dir='$installman3dir'
21077installprefix='$installprefix'
21078installprefixexp='$installprefixexp'
21079installprivlib='$installprivlib'
21080installscript='$installscript'
21081installsitearch='$installsitearch'
21082installsitebin='$installsitebin'
8d2cbf27
JH
21083installsitehtml1dir='$installsitehtml1dir'
21084installsitehtml3dir='$installsitehtml3dir'
b4eb6b3d 21085installsitelib='$installsitelib'
91e123a8
JH
21086installsiteman1dir='$installsiteman1dir'
21087installsiteman3dir='$installsiteman3dir'
6e1038e0 21088installsitescript='$installsitescript'
b4eb6b3d
JH
21089installstyle='$installstyle'
21090installusrbinperl='$installusrbinperl'
21091installvendorarch='$installvendorarch'
21092installvendorbin='$installvendorbin'
8d2cbf27
JH
21093installvendorhtml1dir='$installvendorhtml1dir'
21094installvendorhtml3dir='$installvendorhtml3dir'
b4eb6b3d 21095installvendorlib='$installvendorlib'
91e123a8
JH
21096installvendorman1dir='$installvendorman1dir'
21097installvendorman3dir='$installvendorman3dir'
6e1038e0 21098installvendorscript='$installvendorscript'
b4eb6b3d 21099intsize='$intsize'
4b661809 21100issymlink='$issymlink'
b4eb6b3d
JH
21101ivdformat='$ivdformat'
21102ivsize='$ivsize'
21103ivtype='$ivtype'
21104known_extensions='$known_extensions'
5f80c64f 21105ksh='$ksh'
5f80c64f
JH
21106ld='$ld'
21107lddlflags='$lddlflags'
21108ldflags='$ldflags'
b4eb6b3d
JH
21109ldflags_uselargefiles='$ldflags_uselargefiles'
21110ldlibpthname='$ldlibpthname'
5f80c64f
JH
21111less='$less'
21112lib_ext='$lib_ext'
21113libc='$libc'
b4eb6b3d 21114libperl='$libperl'
5f80c64f
JH
21115libpth='$libpth'
21116libs='$libs'
43999f95
JH
21117libsdirs='$libsdirs'
21118libsfiles='$libsfiles'
21119libsfound='$libsfound'
13b3f787 21120libspath='$libspath'
5f80c64f 21121libswanted='$libswanted'
b4eb6b3d 21122libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
21123line='$line'
21124lint='$lint'
21125lkflags='$lkflags'
21126ln='$ln'
21127lns='$lns'
10bc17b6 21128localtime_r_proto='$localtime_r_proto'
5f80c64f
JH
21129locincpth='$locincpth'
21130loclibpth='$loclibpth'
b4eb6b3d
JH
21131longdblsize='$longdblsize'
21132longlongsize='$longlongsize'
21133longsize='$longsize'
5f80c64f
JH
21134lp='$lp'
21135lpr='$lpr'
21136ls='$ls'
b4eb6b3d
JH
21137lseeksize='$lseeksize'
21138lseektype='$lseektype'
5f80c64f
JH
21139mail='$mail'
21140mailx='$mailx'
21141make='$make'
21142make_set_make='$make_set_make'
b4eb6b3d
JH
21143mallocobj='$mallocobj'
21144mallocsrc='$mallocsrc'
21145malloctype='$malloctype'
21146man1dir='$man1dir'
21147man1direxp='$man1direxp'
21148man1ext='$man1ext'
21149man3dir='$man3dir'
21150man3direxp='$man3direxp'
21151man3ext='$man3ext'
5f80c64f 21152mips_type='$mips_type'
5129fff4 21153mistrustnm='$mistrustnm'
5f80c64f 21154mkdir='$mkdir'
b4eb6b3d
JH
21155mmaptype='$mmaptype'
21156modetype='$modetype'
5f80c64f 21157more='$more'
b4eb6b3d 21158multiarch='$multiarch'
5f80c64f 21159mv='$mv'
b4eb6b3d
JH
21160myarchname='$myarchname'
21161mydomain='$mydomain'
21162myhostname='$myhostname'
5f80c64f
JH
21163myuname='$myuname'
21164n='$n'
2cc61e15 21165need_va_copy='$need_va_copy'
b4eb6b3d
JH
21166netdb_hlen_type='$netdb_hlen_type'
21167netdb_host_type='$netdb_host_type'
21168netdb_name_type='$netdb_name_type'
21169netdb_net_type='$netdb_net_type'
5f80c64f
JH
21170nm='$nm'
21171nm_opt='$nm_opt'
21172nm_so_opt='$nm_so_opt'
b4eb6b3d 21173nonxs_ext='$nonxs_ext'
5f80c64f 21174nroff='$nroff'
b4eb6b3d
JH
21175nvEUformat='$nvEUformat'
21176nvFUformat='$nvFUformat'
21177nvGUformat='$nvGUformat'
53133ed1 21178nv_preserves_uv_bits='$nv_preserves_uv_bits'
b4eb6b3d
JH
21179nveformat='$nveformat'
21180nvfformat='$nvfformat'
21181nvgformat='$nvgformat'
21182nvsize='$nvsize'
21183nvtype='$nvtype'
21184o_nonblock='$o_nonblock'
5f80c64f 21185obj_ext='$obj_ext'
b4eb6b3d 21186old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 21187optimize='$optimize'
b4eb6b3d 21188orderlib='$orderlib'
5f80c64f
JH
21189osname='$osname'
21190osvers='$osvers'
b4eb6b3d 21191otherlibdirs='$otherlibdirs'
5f80c64f 21192package='$package'
b4eb6b3d
JH
21193pager='$pager'
21194passcat='$passcat'
21195patchlevel='$patchlevel'
5f80c64f 21196path_sep='$path_sep'
b4eb6b3d 21197perl5='$perl5'
5f80c64f 21198perl='$perl'
151e6568 21199perl_patchlevel='$perl_patchlevel'
b4eb6b3d 21200perladmin='$perladmin'
9c839522 21201perllibs='$perllibs'
b4eb6b3d 21202perlpath='$perlpath'
5f80c64f 21203pg='$pg'
b4eb6b3d
JH
21204phostname='$phostname'
21205pidtype='$pidtype'
5f80c64f
JH
21206plibpth='$plibpth'
21207pmake='$pmake'
21208pr='$pr'
b4eb6b3d
JH
21209prefix='$prefix'
21210prefixexp='$prefixexp'
21211privlib='$privlib'
21212privlibexp='$privlibexp'
f24dbf84 21213procselfexe='$procselfexe'
b4eb6b3d
JH
21214prototype='$prototype'
21215ptrsize='$ptrsize'
21216quadkind='$quadkind'
21217quadtype='$quadtype'
21218randbits='$randbits'
21219randfunc='$randfunc'
10bc17b6 21220random_r_proto='$random_r_proto'
b4eb6b3d
JH
21221randseedtype='$randseedtype'
21222ranlib='$ranlib'
21223rd_nodata='$rd_nodata'
10bc17b6
JH
21224readdir64_r_proto='$readdir64_r_proto'
21225readdir_r_proto='$readdir_r_proto'
b4eb6b3d 21226revision='$revision'
5f80c64f
JH
21227rm='$rm'
21228rmail='$rmail'
5440bc8e 21229run='$run'
5f80c64f 21230runnm='$runnm'
b4eb6b3d
JH
21231sPRIEUldbl='$sPRIEUldbl'
21232sPRIFUldbl='$sPRIFUldbl'
21233sPRIGUldbl='$sPRIGUldbl'
21234sPRIXU64='$sPRIXU64'
21235sPRId64='$sPRId64'
21236sPRIeldbl='$sPRIeldbl'
21237sPRIfldbl='$sPRIfldbl'
21238sPRIgldbl='$sPRIgldbl'
21239sPRIi64='$sPRIi64'
21240sPRIo64='$sPRIo64'
21241sPRIu64='$sPRIu64'
21242sPRIx64='$sPRIx64'
21243sSCNfldbl='$sSCNfldbl'
21244sched_yield='$sched_yield'
21245scriptdir='$scriptdir'
21246scriptdirexp='$scriptdirexp'
5f80c64f 21247sed='$sed'
b4eb6b3d
JH
21248seedfunc='$seedfunc'
21249selectminbits='$selectminbits'
21250selecttype='$selecttype'
5f80c64f 21251sendmail='$sendmail'
10bc17b6
JH
21252setgrent_r_proto='$setgrent_r_proto'
21253sethostent_r_proto='$sethostent_r_proto'
21254setlocale_r_proto='$setlocale_r_proto'
21255setnetent_r_proto='$setnetent_r_proto'
21256setprotoent_r_proto='$setprotoent_r_proto'
21257setpwent_r_proto='$setpwent_r_proto'
21258setservent_r_proto='$setservent_r_proto'
5f80c64f
JH
21259sh='$sh'
21260shar='$shar'
21261sharpbang='$sharpbang'
b4eb6b3d
JH
21262shmattype='$shmattype'
21263shortsize='$shortsize'
21264shrpenv='$shrpenv'
5f80c64f 21265shsharp='$shsharp'
b4eb6b3d
JH
21266sig_count='$sig_count'
21267sig_name='$sig_name'
21268sig_name_init='$sig_name_init'
21269sig_num='$sig_num'
21270sig_num_init='$sig_num_init'
76d3c696 21271sig_size='$sig_size'
b4eb6b3d
JH
21272signal_t='$signal_t'
21273sitearch='$sitearch'
21274sitearchexp='$sitearchexp'
21275sitebin='$sitebin'
21276sitebinexp='$sitebinexp'
8d2cbf27
JH
21277sitehtml1dir='$sitehtml1dir'
21278sitehtml1direxp='$sitehtml1direxp'
21279sitehtml3dir='$sitehtml3dir'
21280sitehtml3direxp='$sitehtml3direxp'
b4eb6b3d
JH
21281sitelib='$sitelib'
21282sitelib_stem='$sitelib_stem'
21283sitelibexp='$sitelibexp'
91e123a8
JH
21284siteman1dir='$siteman1dir'
21285siteman1direxp='$siteman1direxp'
21286siteman3dir='$siteman3dir'
21287siteman3direxp='$siteman3direxp'
b4eb6b3d
JH
21288siteprefix='$siteprefix'
21289siteprefixexp='$siteprefixexp'
6e1038e0
MB
21290sitescript='$sitescript'
21291sitescriptexp='$sitescriptexp'
b4eb6b3d
JH
21292sizesize='$sizesize'
21293sizetype='$sizetype'
5f80c64f
JH
21294sleep='$sleep'
21295smail='$smail'
5f80c64f 21296so='$so'
b4eb6b3d
JH
21297sockethdr='$sockethdr'
21298socketlib='$socketlib'
21299socksizetype='$socksizetype'
5f80c64f
JH
21300sort='$sort'
21301spackage='$spackage'
21302spitshell='$spitshell'
10bc17b6
JH
21303srand48_r_proto='$srand48_r_proto'
21304srandom_r_proto='$srandom_r_proto'
5f80c64f 21305src='$src'
b4eb6b3d
JH
21306ssizetype='$ssizetype'
21307startperl='$startperl'
5f80c64f 21308startsh='$startsh'
b4eb6b3d
JH
21309static_ext='$static_ext'
21310stdchar='$stdchar'
21311stdio_base='$stdio_base'
21312stdio_bufsiz='$stdio_bufsiz'
21313stdio_cnt='$stdio_cnt'
21314stdio_filbuf='$stdio_filbuf'
21315stdio_ptr='$stdio_ptr'
21316stdio_stream_array='$stdio_stream_array'
10bc17b6 21317strerror_r_proto='$strerror_r_proto'
b4eb6b3d 21318strings='$strings'
5f80c64f 21319submit='$submit'
b4eb6b3d
JH
21320subversion='$subversion'
21321sysman='$sysman'
5f80c64f
JH
21322tail='$tail'
21323tar='$tar'
5440bc8e 21324targetarch='$targetarch'
5f80c64f
JH
21325tbl='$tbl'
21326tee='$tee'
21327test='$test'
b4eb6b3d
JH
21328timeincl='$timeincl'
21329timetype='$timetype'
10bc17b6 21330tmpnam_r_proto='$tmpnam_r_proto'
5440bc8e 21331to='$to'
5f80c64f
JH
21332touch='$touch'
21333tr='$tr'
21334trnl='$trnl'
21335troff='$troff'
10bc17b6 21336ttyname_r_proto='$ttyname_r_proto'
b4eb6b3d
JH
21337u16size='$u16size'
21338u16type='$u16type'
21339u32size='$u32size'
21340u32type='$u32type'
21341u64size='$u64size'
21342u64type='$u64type'
21343u8size='$u8size'
21344u8type='$u8type'
21345uidformat='$uidformat'
21346uidsign='$uidsign'
21347uidsize='$uidsize'
21348uidtype='$uidtype'
5f80c64f
JH
21349uname='$uname'
21350uniq='$uniq'
b4eb6b3d
JH
21351uquadtype='$uquadtype'
21352use5005threads='$use5005threads'
21353use64bitall='$use64bitall'
21354use64bitint='$use64bitint'
5440bc8e 21355usecrosscompile='$usecrosscompile'
5f80c64f 21356usedl='$usedl'
15b61c98 21357usefaststdio='$usefaststdio'
b4eb6b3d
JH
21358useithreads='$useithreads'
21359uselargefiles='$uselargefiles'
21360uselongdouble='$uselongdouble'
21361usemorebits='$usemorebits'
21362usemultiplicity='$usemultiplicity'
21363usemymalloc='$usemymalloc'
5f80c64f 21364usenm='$usenm'
b4eb6b3d
JH
21365useopcode='$useopcode'
21366useperlio='$useperlio'
21367useposix='$useposix'
9514c62b 21368usereentrant='$usereentrant'
b4eb6b3d
JH
21369usesfio='$usesfio'
21370useshrplib='$useshrplib'
29209bc5 21371usesocks='$usesocks'
b4eb6b3d
JH
21372usethreads='$usethreads'
21373usevendorprefix='$usevendorprefix'
21374usevfork='$usevfork'
5f80c64f
JH
21375usrinc='$usrinc'
21376uuname='$uuname'
b4eb6b3d
JH
21377uvXUformat='$uvXUformat'
21378uvoformat='$uvoformat'
21379uvsize='$uvsize'
21380uvtype='$uvtype'
21381uvuformat='$uvuformat'
21382uvxformat='$uvxformat'
21383vendorarch='$vendorarch'
21384vendorarchexp='$vendorarchexp'
21385vendorbin='$vendorbin'
21386vendorbinexp='$vendorbinexp'
8d2cbf27
JH
21387vendorhtml1dir='$vendorhtml1dir'
21388vendorhtml1direxp='$vendorhtml1direxp'
21389vendorhtml3dir='$vendorhtml3dir'
21390vendorhtml3direxp='$vendorhtml3direxp'
b4eb6b3d
JH
21391vendorlib='$vendorlib'
21392vendorlib_stem='$vendorlib_stem'
21393vendorlibexp='$vendorlibexp'
91e123a8
JH
21394vendorman1dir='$vendorman1dir'
21395vendorman1direxp='$vendorman1direxp'
21396vendorman3dir='$vendorman3dir'
21397vendorman3direxp='$vendorman3direxp'
b4eb6b3d
JH
21398vendorprefix='$vendorprefix'
21399vendorprefixexp='$vendorprefixexp'
6e1038e0
MB
21400vendorscript='$vendorscript'
21401vendorscriptexp='$vendorscriptexp'
b4eb6b3d 21402version='$version'
861eb78d 21403version_patchlevel_string='$version_patchlevel_string'
d56c5707 21404versiononly='$versiononly'
5f80c64f 21405vi='$vi'
b4eb6b3d 21406voidflags='$voidflags'
5f80c64f 21407xlibpth='$xlibpth'
3659ebf1
JH
21408yacc='$yacc'
21409yaccflags='$yaccflags'
5f80c64f
JH
21410zcat='$zcat'
21411zip='$zip'
21412EOT
21413
21414: Add in command line options if available
21415$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21416
21417: add special variables
21418$test -f $src/patchlevel.h && \
d00b958f 21419awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 21420echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 21421echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
21422
21423: propagate old symbols
21424if $test -f UU/config.sh; then
381aa1ff 21425 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 21426 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 21427 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
21428 set X `cat UU/oldsyms`
21429 shift
21430 case $# in
21431 0) ;;
21432 *)
21433 cat <<EOM
21434Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21435EOM
21436 echo "# Variables propagated from previous config.sh file." >>config.sh
21437 for sym in `cat UU/oldsyms`; do
21438 echo " Propagating $hint variable "'$'"$sym..."
21439 eval 'tmp="$'"${sym}"'"'
21440 echo "$tmp" | \
21441 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21442 done
21443 ;;
21444 esac
21445fi
21446
21447: Finish up by extracting the .SH files
21448case "$alldone" in
21449exit)
21450 $rm -rf UU
24ccb310 21451 echo "Extraction done."
5f80c64f
JH
21452 exit 0
21453 ;;
21454cont)
21455 ;;
21456'')
21457 dflt=''
21458 nostick=true
21459 $cat <<EOM
21460
21461If you'd like to make any changes to the config.sh file before I begin
21462to configure things, do it as a shell escape now (e.g. !vi config.sh).
21463
21464EOM
21465 rp="Press return or use a shell escape to edit config.sh:"
21466 . UU/myread
21467 nostick=''
21468 case "$ans" in
21469 '') ;;
21470 *) : in case they cannot read
21471 sh 1>&4 -c "$ans";;
21472 esac
21473 ;;
21474esac
21475
21476: if this fails, just run all the .SH files by hand
21477. ./config.sh
21478
21479echo " "
21480exec 1>&4
a43e8593 21481pwd=`pwd`
5f80c64f 21482. ./UU/extract
6904989c 21483cd "$pwd"
5f80c64f
JH
21484
21485if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21486 dflt=y
21487 case "$silent" in
21488 true) ;;
21489 *)
21490 $cat <<EOM
21491
21492Now you need to generate make dependencies by running "$make depend".
21493You might prefer to run it in background: "$make depend > makedepend.out &"
21494It can take a while, so you might not want to run it right now.
21495
21496EOM
21497 ;;
21498 esac
21499 rp="Run $make depend now?"
21500 . UU/myread
21501 case "$ans" in
21502 y*)
3d5d58b1 21503 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
21504 ;;
21505 *)
21506 echo "You must run '$make depend' then '$make'."
21507 ;;
21508 esac
21509elif test -f [Mm]akefile; then
21510 echo " "
21511 echo "Now you must run a $make."
21512else
24ccb310 21513 echo "Configure done."
5f80c64f
JH
21514fi
21515
21516if $test -f Policy.sh; then
21517 $cat <<EOM
21518
21519If you compile $package on a different machine or from a different object
21520directory, copy the Policy.sh file from this object directory to the
21521new one before you run Configure -- this will help you with most of
21522the policy defaults.
21523
21524EOM
21525fi
21526if $test -f config.msg; then
21527 echo "Hmm. I also noted the following information while running:"
21528 echo " "
21529 $cat config.msg >&4
21530 $rm -f config.msg
21531fi
21532$rm -f kit*isdone ark*isdone
21533$rm -rf UU
21534
21535: End of Configure
21536