This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Test 1.24.
[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#
09b58c7b 23# Generated on Sun Apr 20 11:44:59 EET DST 2003 [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=''
9c839522 191perllibs=''
b4eb6b3d
JH
192dynamic_ext=''
193extensions=''
194known_extensions=''
195nonxs_ext=''
196static_ext=''
197useopcode=''
198useposix=''
6fcddf3b 199extras=''
ecfc5424 200d_bsd=''
40a7a20a 201d_eunice=''
2304df62
AD
202d_xenix=''
203eunicefix=''
204Mcc=''
dfe9444c 205ar=''
2304df62
AD
206awk=''
207bash=''
208bison=''
209byacc=''
210cat=''
211chgrp=''
212chmod=''
213chown=''
ecfc5424 214comm=''
2304df62
AD
215compress=''
216cp=''
217cpio=''
218cpp=''
219csh=''
220date=''
221echo=''
222egrep=''
223emacs=''
224expr=''
225find=''
226flex=''
3c728e00 227gmake=''
2304df62 228grep=''
8ff267be 229gzip=''
2304df62
AD
230inews=''
231ksh=''
232less=''
233line=''
234lint=''
235ln=''
236lp=''
237lpr=''
238ls=''
239mail=''
240mailx=''
dfe9444c 241make=''
2304df62
AD
242mkdir=''
243more=''
244mv=''
693762b4 245nm=''
2304df62
AD
246nroff=''
247perl=''
248pg=''
249pmake=''
250pr=''
251rm=''
252rmail=''
253sed=''
254sendmail=''
2304df62
AD
255shar=''
256sleep=''
257smail=''
258sort=''
259submit=''
260tail=''
261tar=''
262tbl=''
693762b4 263tee=''
2304df62
AD
264test=''
265touch=''
266tr=''
267troff=''
268uname=''
269uniq=''
270uuname=''
271vi=''
272zcat=''
8ff267be 273zip=''
b4eb6b3d
JH
274full_ar=''
275full_sed=''
a0d0e21e 276libswanted=''
2304df62
AD
277hint=''
278myuname=''
85e6fe83
LW
279osname=''
280osvers=''
2304df62
AD
281Author=''
282Date=''
283Header=''
284Id=''
285Locker=''
286Log=''
287RCSfile=''
288Revision=''
289Source=''
290State=''
dfe9444c
AD
291_a=''
292_exe=''
293_o=''
4633a7c4
LW
294archobjs=''
295exe_ext=''
296firstmakefile=''
297lib_ext=''
298obj_ext=''
299path_sep=''
b4eb6b3d 300afs=''
a6d26a0d 301afsroot=''
b4eb6b3d
JH
302alignbytes=''
303ansi2knr=''
304archlib=''
305archlibexp=''
306d_archlib=''
307installarchlib=''
308archname=''
309myarchname=''
310d_atolf=''
311d_atoll=''
312baserev=''
313bin=''
314binexp=''
315installbin=''
b4eb6b3d 316byteorder=''
2304df62 317cc=''
2304df62
AD
318ccflags=''
319cppflags=''
320ldflags=''
321lkflags=''
8e07c86e 322locincpth=''
2304df62 323optimize=''
b4eb6b3d 324cf_email=''
2304df62
AD
325cf_by=''
326cf_time=''
b4eb6b3d 327charsize=''
2304df62 328contains=''
b4eb6b3d 329cpp_stuff=''
2304df62
AD
330cpplast=''
331cppminus=''
332cpprun=''
333cppstdin=''
74cac757 334d__fwalk=''
b4eb6b3d
JH
335d_access=''
336d_accessx=''
55954f19 337d_aintl=''
b4eb6b3d 338d_alarm=''
10bc17b6
JH
339asctime_r_proto=''
340d_asctime_r=''
b4eb6b3d
JH
341d_attribut=''
342d_bcmp=''
343d_bcopy=''
344d_bzero=''
345d_casti32=''
346castflags=''
347d_castneg=''
348d_chown=''
349d_chroot=''
350d_chsize=''
758a5d79 351d_class=''
b4eb6b3d
JH
352d_closedir=''
353d_void_closedir=''
4e0554ec 354d_cmsghdr_s=''
b4eb6b3d 355d_const=''
36adc09b 356d_copysignl=''
b4eb6b3d
JH
357cryptlib=''
358d_crypt=''
10bc17b6
JH
359crypt_r_proto=''
360d_crypt_r=''
b4eb6b3d
JH
361d_csh=''
362full_csh=''
10bc17b6
JH
363ctermid_r_proto=''
364d_ctermid_r=''
365ctime_r_proto=''
366d_ctime_r=''
b4eb6b3d
JH
367d_cuserid=''
368d_dbl_dig=''
2ef53570 369d_dbminitproto=''
b4eb6b3d 370d_difftime=''
ae0e3d3b 371d_dirfd=''
b4eb6b3d 372d_dlerror=''
a0d0e21e 373d_dlopen=''
b4eb6b3d
JH
374d_dlsymun=''
375d_dosuid=''
376d_suidsafe=''
10bc17b6
JH
377d_drand48_r=''
378drand48_r_proto=''
b4eb6b3d
JH
379d_drand48proto=''
380d_dup2=''
381d_eaccess=''
382d_endgrent=''
10bc17b6
JH
383d_endgrent_r=''
384endgrent_r_proto=''
b4eb6b3d 385d_endhent=''
10bc17b6
JH
386d_endhostent_r=''
387endhostent_r_proto=''
b4eb6b3d 388d_endnent=''
10bc17b6
JH
389d_endnetent_r=''
390endnetent_r_proto=''
b4eb6b3d 391d_endpent=''
10bc17b6
JH
392d_endprotoent_r=''
393endprotoent_r_proto=''
b4eb6b3d 394d_endpwent=''
10bc17b6
JH
395d_endpwent_r=''
396endpwent_r_proto=''
b4eb6b3d 397d_endsent=''
10bc17b6
JH
398d_endservent_r=''
399endservent_r_proto=''
b363b713 400d_fchdir=''
b4eb6b3d
JH
401d_fchmod=''
402d_fchown=''
403d_fcntl=''
9d9004a9 404d_fcntl_can_lock=''
b4eb6b3d
JH
405d_fd_macros=''
406d_fd_set=''
407d_fds_bits=''
408d_fgetpos=''
758a5d79
JH
409d_finite=''
410d_finitel=''
b4eb6b3d
JH
411d_flexfnam=''
412d_flock=''
2ef53570 413d_flockproto=''
b4eb6b3d 414d_fork=''
758a5d79
JH
415d_fp_class=''
416d_fpclass=''
417d_fpclassify=''
418d_fpclassl=''
b4eb6b3d
JH
419d_fpos64_t=''
420d_frexpl=''
421d_fs_data_s=''
422d_fseeko=''
423d_fsetpos=''
424d_fstatfs=''
411ab01c 425d_fsync=''
b4eb6b3d
JH
426d_ftello=''
427d_ftime=''
428d_gettimeod=''
429d_Gconvert=''
430d_getcwd=''
431d_getespwnam=''
432d_getfsstat=''
433d_getgrent=''
10bc17b6
JH
434d_getgrent_r=''
435getgrent_r_proto=''
436d_getgrgid_r=''
437getgrgid_r_proto=''
438d_getgrnam_r=''
439getgrnam_r_proto=''
b4eb6b3d
JH
440d_getgrps=''
441d_gethbyaddr=''
442d_gethbyname=''
443d_gethent=''
444aphostname=''
445d_gethname=''
446d_phostname=''
447d_uname=''
10bc17b6
JH
448d_gethostbyaddr_r=''
449gethostbyaddr_r_proto=''
450d_gethostbyname_r=''
451gethostbyname_r_proto=''
452d_gethostent_r=''
453gethostent_r_proto=''
b4eb6b3d 454d_gethostprotos=''
4e0554ec 455d_getitimer=''
b4eb6b3d 456d_getlogin=''
10bc17b6
JH
457d_getlogin_r=''
458getlogin_r_proto=''
b4eb6b3d
JH
459d_getmnt=''
460d_getmntent=''
461d_getnbyaddr=''
462d_getnbyname=''
463d_getnent=''
10bc17b6
JH
464d_getnetbyaddr_r=''
465getnetbyaddr_r_proto=''
466d_getnetbyname_r=''
467getnetbyname_r_proto=''
468d_getnetent_r=''
469getnetent_r_proto=''
b4eb6b3d 470d_getnetprotos=''
0c0643d0 471d_getpagsz=''
b4eb6b3d
JH
472d_getpent=''
473d_getpgid=''
474d_getpgrp2=''
475d_bsdgetpgrp=''
476d_getpgrp=''
477d_getppid=''
478d_getprior=''
479d_getpbyname=''
480d_getpbynumber=''
10bc17b6
JH
481d_getprotobyname_r=''
482getprotobyname_r_proto=''
483d_getprotobynumber_r=''
484getprotobynumber_r_proto=''
485d_getprotoent_r=''
486getprotoent_r_proto=''
b4eb6b3d
JH
487d_getprotoprotos=''
488d_getprpwnam=''
489d_getpwent=''
10bc17b6
JH
490d_getpwent_r=''
491getpwent_r_proto=''
492d_getpwnam_r=''
493getpwnam_r_proto=''
494d_getpwuid_r=''
495getpwuid_r_proto=''
b4eb6b3d 496d_getsent=''
10bc17b6
JH
497d_getservbyname_r=''
498getservbyname_r_proto=''
499d_getservbyport_r=''
500getservbyport_r_proto=''
501d_getservent_r=''
502getservent_r_proto=''
b4eb6b3d
JH
503d_getservprotos=''
504d_getspnam=''
10bc17b6
JH
505d_getspnam_r=''
506getspnam_r_proto=''
b4eb6b3d
JH
507d_getsbyname=''
508d_getsbyport=''
10bc17b6
JH
509d_gmtime_r=''
510gmtime_r_proto=''
a4f3eea9 511d_gnulibc=''
5f6e0ee4 512gnulibc_version=''
b4eb6b3d
JH
513d_hasmntopt=''
514d_htonl=''
55954f19 515d_ilogbl=''
b4eb6b3d
JH
516d_inetaton=''
517d_int64_t=''
518d_isascii=''
758a5d79
JH
519d_isfinite=''
520d_isinf=''
b4eb6b3d
JH
521d_isnan=''
522d_isnanl=''
523d_killpg=''
524d_lchown=''
525d_ldbl_dig=''
526d_link=''
10bc17b6
JH
527d_localtime_r=''
528localtime_r_proto=''
b4eb6b3d
JH
529d_locconv=''
530d_lockf=''
531d_longdbl=''
532longdblsize=''
533d_longlong=''
534longlongsize=''
535d_lseekproto=''
536d_lstat=''
537d_madvise=''
538d_mblen=''
539d_mbstowcs=''
540d_mbtowc=''
541d_memchr=''
542d_memcmp=''
543d_memcpy=''
544d_memmove=''
545d_memset=''
546d_mkdir=''
547d_mkdtemp=''
548d_mkfifo=''
549d_mkstemp=''
550d_mkstemps=''
551d_mktime=''
552d_mmap=''
553mmaptype=''
554d_modfl=''
e67aeab1 555d_modfl_pow32_bug=''
bc9a1b2c 556d_modflproto=''
b4eb6b3d
JH
557d_mprotect=''
558d_msg=''
559d_msgctl=''
560d_msgget=''
4e0554ec 561d_msghdr_s=''
b4eb6b3d
JH
562d_msgrcv=''
563d_msgsnd=''
564d_msync=''
565d_munmap=''
2d736872 566d_nanosleep=''
b4eb6b3d 567d_nice=''
2765b840 568d_nl_langinfo=''
b4eb6b3d
JH
569d_off64_t=''
570d_open3=''
571d_fpathconf=''
572d_pathconf=''
573d_pause=''
574d_pipe=''
575d_poll=''
2304df62 576d_portable=''
a33c94aa 577d_procselfexe=''
f24dbf84 578procselfexe=''
b4eb6b3d
JH
579d_old_pthread_create_joinable=''
580old_pthread_create_joinable=''
d6483fcc 581d_pthread_atfork=''
b4eb6b3d
JH
582d_pthread_yield=''
583d_sched_yield=''
584sched_yield=''
585d_qgcvt=''
10bc17b6
JH
586d_random_r=''
587random_r_proto=''
588d_readdir64_r=''
589readdir64_r_proto=''
b4eb6b3d
JH
590d_readdir=''
591d_rewinddir=''
592d_seekdir=''
593d_telldir=''
10bc17b6
JH
594d_readdir_r=''
595readdir_r_proto=''
b4eb6b3d 596d_readlink=''
4e0554ec
JH
597d_readv=''
598d_recvmsg=''
b4eb6b3d
JH
599d_rename=''
600d_rmdir=''
601d_safebcpy=''
602d_safemcpy=''
603d_sanemcmp=''
ef9f17be 604d_sbrkproto=''
55954f19 605d_scalbnl=''
b4eb6b3d
JH
606d_select=''
607d_sem=''
608d_semctl=''
609d_semget=''
610d_semop=''
4e0554ec 611d_sendmsg=''
b4eb6b3d
JH
612d_setegid=''
613d_seteuid=''
614d_setgrent=''
10bc17b6
JH
615d_setgrent_r=''
616setgrent_r_proto=''
b4eb6b3d
JH
617d_setgrps=''
618d_sethent=''
10bc17b6
JH
619d_sethostent_r=''
620sethostent_r_proto=''
4e0554ec 621d_setitimer=''
b4eb6b3d
JH
622d_setlinebuf=''
623d_setlocale=''
10bc17b6
JH
624d_setlocale_r=''
625setlocale_r_proto=''
b4eb6b3d 626d_setnent=''
10bc17b6
JH
627d_setnetent_r=''
628setnetent_r_proto=''
b4eb6b3d
JH
629d_setpent=''
630d_setpgid=''
631d_setpgrp2=''
632d_bsdsetpgrp=''
633d_setpgrp=''
634d_setprior=''
635d_setproctitle=''
10bc17b6
JH
636d_setprotoent_r=''
637setprotoent_r_proto=''
b4eb6b3d 638d_setpwent=''
10bc17b6
JH
639d_setpwent_r=''
640setpwent_r_proto=''
b4eb6b3d
JH
641d_setregid=''
642d_setresgid=''
643d_setresuid=''
644d_setreuid=''
645d_setrgid=''
646d_setruid=''
647d_setsent=''
10bc17b6
JH
648d_setservent_r=''
649setservent_r_proto=''
b4eb6b3d
JH
650d_setsid=''
651d_setvbuf=''
652d_sfio=''
653usesfio=''
654d_shm=''
655d_shmat=''
656d_shmatprototype=''
657shmattype=''
658d_shmctl=''
659d_shmdt=''
660d_shmget=''
661d_sigaction=''
983dbef6 662d_sigprocmask=''
b4eb6b3d 663d_sigsetjmp=''
49a78c82 664d_sockatmark=''
2ef53570 665d_sockatmarkproto=''
b4eb6b3d
JH
666d_msg_ctrunc=''
667d_msg_dontroute=''
668d_msg_oob=''
669d_msg_peek=''
670d_msg_proxy=''
671d_oldsock=''
672d_scm_rights=''
673d_socket=''
674d_sockpair=''
675sockethdr=''
676socketlib=''
677d_socklen_t=''
678d_socks5_init=''
679d_sqrtl=''
10bc17b6
JH
680d_srand48_r=''
681srand48_r_proto=''
682d_srandom_r=''
683srandom_r_proto=''
eef837ea 684d_sresgproto=''
640374d0 685d_sresuproto=''
b4eb6b3d
JH
686d_statblks=''
687d_statfs_f_flags=''
688d_statfs_s=''
689d_fstatvfs=''
690d_statvfs=''
691d_stdio_cnt_lval=''
692d_stdio_ptr_lval=''
a7ffa9b9
NC
693d_stdio_ptr_lval_nochange_cnt=''
694d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
695d_stdiobase=''
696d_stdstdio=''
697stdio_base=''
698stdio_bufsiz=''
699stdio_cnt=''
700stdio_filbuf=''
701stdio_ptr=''
702d_index=''
703d_strchr=''
704d_strcoll=''
705d_strctcpy=''
706d_strerrm=''
707d_strerror=''
708d_sysernlst=''
709d_syserrlst=''
10bc17b6
JH
710d_strerror_r=''
711strerror_r_proto=''
b3c85772 712d_strftime=''
b4eb6b3d
JH
713d_strtod=''
714d_strtol=''
715d_strtold=''
716d_strtoll=''
28e5dec8 717d_strtoq=''
b4eb6b3d
JH
718d_strtoul=''
719d_strtoull=''
720d_strtouq=''
721d_strxfrm=''
722d_symlink=''
723d_syscall=''
2ef53570 724d_syscallproto=''
b4eb6b3d
JH
725d_sysconf=''
726d_system=''
727d_tcgetpgrp=''
728d_tcsetpgrp=''
729d_telldirproto=''
730d_time=''
731timetype=''
732clocktype=''
733d_times=''
10bc17b6
JH
734d_tmpnam_r=''
735tmpnam_r_proto=''
b4eb6b3d 736d_truncate=''
10bc17b6
JH
737d_ttyname_r=''
738ttyname_r_proto=''
b4eb6b3d 739d_tzname=''
4e0554ec
JH
740d_u32align=''
741d_ualarm=''
b4eb6b3d
JH
742d_umask=''
743d_semctl_semid_ds=''
744d_semctl_semun=''
745d_union_semun=''
758a5d79 746d_unordered=''
4e0554ec 747d_usleep=''
2ef53570 748d_usleepproto=''
b4eb6b3d
JH
749d_ustat=''
750d_vfork=''
751usevfork=''
752d_voidsig=''
753signal_t=''
754d_volatile=''
755d_charvspr=''
756d_vprintf=''
757d_wait4=''
758d_waitpid=''
759d_wcstombs=''
760d_wctomb=''
4e0554ec 761d_writev=''
b4eb6b3d 762dlext=''
85e6fe83
LW
763cccdlflags=''
764ccdlflags=''
2304df62 765dlsrc=''
232e078e 766ld=''
85e6fe83 767lddlflags=''
2304df62 768usedl=''
b4eb6b3d
JH
769doublesize=''
770ebcdic=''
771fflushNULL=''
772fflushall=''
773fpossize=''
774fpostype=''
2d736872 775gccansipedantic=''
5b463ca7 776gccosandvers=''
8a27cf78 777gccversion=''
b4eb6b3d
JH
778gidformat=''
779gidsign=''
780gidsize=''
781gidtype=''
782groupstype=''
783h_fcntl=''
784h_sysfile=''
6e1038e0
MB
785html1dir=''
786html1direxp=''
787installhtml1dir=''
788html3dir=''
789html3direxp=''
790installhtml3dir=''
b4eb6b3d 791i_arpainet=''
10bc17b6 792i_crypt=''
b4eb6b3d
JH
793db_hashtype=''
794db_prefixtype=''
640374d0
JH
795db_version_major=''
796db_version_minor=''
797db_version_patch=''
b4eb6b3d
JH
798i_db=''
799i_dbm=''
800i_rpcsvcdbm=''
801d_dirnamlen=''
802direntrytype=''
803i_dirent=''
a0d0e21e 804i_dld=''
b4eb6b3d
JH
805i_dlfcn=''
806i_fcntl=''
807i_float=''
758a5d79
JH
808i_fp=''
809i_fp_class=''
b4eb6b3d
JH
810i_gdbm=''
811d_grpasswd=''
812i_grp=''
b4eb6b3d
JH
813i_ieeefp=''
814i_inttypes=''
2765b840 815i_langinfo=''
b4eb6b3d
JH
816i_libutil=''
817i_limits=''
818i_locale=''
819i_machcthr=''
820i_malloc=''
821i_math=''
822i_memory=''
823i_mntent=''
824i_ndbm=''
825i_netdb=''
826i_neterrno=''
827i_netinettcp=''
828i_niin=''
829i_sysin=''
830i_poll=''
831i_prot=''
832i_pthread=''
833d_pwage=''
834d_pwchange=''
835d_pwclass=''
836d_pwcomment=''
837d_pwexpire=''
838d_pwgecos=''
839d_pwpasswd=''
840d_pwquota=''
841i_pwd=''
842i_sfio=''
843i_shadow=''
844i_socks=''
845i_stddef=''
846i_stdlib=''
847i_string=''
848strings=''
849i_sunmath=''
850i_sysaccess=''
851i_sysdir=''
852i_sysfile=''
853d_voidtty=''
854i_bsdioctl=''
855i_sysfilio=''
856i_sysioctl=''
857i_syssockio=''
858i_syslog=''
859i_sysmman=''
860i_sysmode=''
861i_sysmount=''
862i_sysndir=''
863i_sysparam=''
864i_sysresrc=''
865i_syssecrt=''
866i_sysselct=''
867i_sysstat=''
868i_sysstatfs=''
869i_sysstatvfs=''
870i_systimes=''
871i_systypes=''
872i_sysuio=''
873i_sysun=''
874i_sysutsname=''
875i_sysvfs=''
876i_syswait=''
877i_sgtty=''
878i_termio=''
879i_termios=''
14b90194
JH
880d_tm_tm_gmtoff=''
881d_tm_tm_zone=''
b4eb6b3d
JH
882i_systime=''
883i_systimek=''
884i_time=''
885timeincl=''
886i_unistd=''
887i_ustat=''
888i_utime=''
889i_values=''
890i_stdarg=''
891i_varargs=''
892i_varhdr=''
893i_vfork=''
894inc_version_list=''
895inc_version_list_init=''
896installprefix=''
897installprefixexp=''
898installstyle=''
899installusrbinperl=''
900intsize=''
901longsize=''
902shortsize=''
4b661809 903issymlink=''
2304df62 904libc=''
b4eb6b3d
JH
905ldlibpthname=''
906libperl=''
907shrpenv=''
908useshrplib=''
a0d0e21e 909glibpth=''
2304df62 910libpth=''
8e07c86e 911loclibpth=''
2304df62
AD
912plibpth=''
913xlibpth=''
1cfa4ec7 914ignore_versioned_solibs=''
2304df62 915libs=''
43999f95
JH
916libsdirs=''
917libsfiles=''
918libsfound=''
13b3f787 919libspath=''
85e6fe83 920lns=''
b4eb6b3d
JH
921d_PRIEUldbl=''
922d_PRIFUldbl=''
923d_PRIGUldbl=''
924d_PRIeldbl=''
925d_PRIfldbl=''
926d_PRIgldbl=''
927d_SCNfldbl=''
928sPRIEUldbl=''
929sPRIFUldbl=''
930sPRIGUldbl=''
931sPRIeldbl=''
932sPRIfldbl=''
933sPRIgldbl=''
934sSCNfldbl=''
935lseeksize=''
936lseektype=''
8ff267be 937make_set_make=''
b4eb6b3d
JH
938d_mymalloc=''
939freetype=''
940mallocobj=''
941mallocsrc=''
942malloctype=''
943usemymalloc=''
944installman1dir=''
945man1dir=''
946man1direxp=''
947man1ext=''
948installman3dir=''
949man3dir=''
950man3direxp=''
951man3ext=''
952modetype=''
953multiarch=''
954mydomain=''
955myhostname=''
956phostname=''
2304df62
AD
957c=''
958n=''
b4eb6b3d
JH
959d_eofnblk=''
960eagain=''
961o_nonblock=''
962rd_nodata=''
2cc61e15 963need_va_copy=''
b4eb6b3d
JH
964netdb_hlen_type=''
965netdb_host_type=''
966netdb_name_type=''
967netdb_net_type=''
968groupcat=''
969hostcat=''
970passcat=''
971orderlib=''
972ranlib=''
973d_perl_otherlibdirs=''
974otherlibdirs=''
2304df62
AD
975package=''
976spackage=''
b4eb6b3d
JH
977pager=''
978api_revision=''
979api_subversion=''
980api_version=''
981api_versionstring=''
982patchlevel=''
151e6568 983perl_patchlevel=''
b4eb6b3d
JH
984revision=''
985subversion=''
986version=''
861eb78d 987version_patchlevel_string=''
b4eb6b3d
JH
988perl5=''
989perladmin=''
990perlpath=''
991d_nv_preserves_uv=''
b4eb6b3d
JH
992i16size=''
993i16type=''
994i32size=''
995i32type=''
996i64size=''
997i64type=''
998i8size=''
999i8type=''
1000ivsize=''
1001ivtype=''
53133ed1 1002nv_preserves_uv_bits=''
b4eb6b3d
JH
1003nvsize=''
1004nvtype=''
1005u16size=''
1006u16type=''
1007u32size=''
1008u32type=''
1009u64size=''
1010u64type=''
1011u8size=''
1012u8type=''
1013uvsize=''
1014uvtype=''
1015ivdformat=''
1016nvEUformat=''
1017nvFUformat=''
1018nvGUformat=''
1019nveformat=''
1020nvfformat=''
1021nvgformat=''
1022uvXUformat=''
1023uvoformat=''
1024uvuformat=''
1025uvxformat=''
1026pidtype=''
1027prefix=''
1028prefixexp=''
1029installprivlib=''
1030privlib=''
1031privlibexp=''
1032prototype=''
1033ptrsize=''
1034d_PRIXU64=''
1035d_PRId64=''
1036d_PRIi64=''
1037d_PRIo64=''
1038d_PRIu64=''
1039d_PRIx64=''
1040sPRIXU64=''
1041sPRId64=''
1042sPRIi64=''
1043sPRIo64=''
1044sPRIu64=''
1045sPRIx64=''
1046d_quad=''
1047quadkind=''
1048quadtype=''
1049uquadtype=''
1050drand01=''
1051randbits=''
1052randfunc=''
1053randseedtype=''
1054seedfunc=''
1055installscript=''
1056scriptdir=''
1057scriptdirexp=''
1058selectminbits=''
1059selecttype=''
8ff267be 1060sh=''
b4eb6b3d
JH
1061sig_count=''
1062sig_name=''
1063sig_name_init=''
1064sig_num=''
1065sig_num_init=''
76d3c696 1066sig_size=''
b4eb6b3d
JH
1067installsitearch=''
1068sitearch=''
1069sitearchexp=''
1070installsitebin=''
1071sitebin=''
1072sitebinexp=''
6e1038e0
MB
1073installsitehtml1=''
1074sitehtml1=''
1075sitehtml1exp=''
1076installsitehtml3=''
1077sitehtml3=''
1078sitehtml3exp=''
b4eb6b3d
JH
1079installsitelib=''
1080sitelib=''
1081sitelib_stem=''
1082sitelibexp=''
6e1038e0
MB
1083installsiteman1=''
1084siteman1=''
1085siteman1exp=''
1086installsiteman3=''
1087siteman3=''
1088siteman3exp=''
b4eb6b3d
JH
1089siteprefix=''
1090siteprefixexp=''
6e1038e0
MB
1091installsitescript=''
1092sitescript=''
1093sitescriptexp=''
b4eb6b3d
JH
1094sizesize=''
1095sizetype=''
a0d0e21e 1096so=''
b4eb6b3d 1097socksizetype=''
2304df62
AD
1098sharpbang=''
1099shsharp=''
1100spitshell=''
dfe9444c 1101src=''
b4eb6b3d
JH
1102ssizetype=''
1103startperl=''
2304df62 1104startsh=''
b4eb6b3d
JH
1105stdchar=''
1106d_stdio_stream_array=''
1107stdio_stream_array=''
1108sysman=''
5ff3f7a4 1109trnl=''
b4eb6b3d
JH
1110uidformat=''
1111uidsign=''
1112uidsize=''
1113uidtype=''
1114archname64=''
1115use64bitall=''
1116use64bitint=''
1117ccflags_uselargefiles=''
1118ldflags_uselargefiles=''
1119libswanted_uselargefiles=''
1120uselargefiles=''
1121uselongdouble=''
1122usemorebits=''
1123usemultiplicity=''
2304df62 1124nm_opt=''
40a7a20a 1125nm_so_opt=''
2304df62
AD
1126runnm=''
1127usenm=''
b4eb6b3d 1128useperlio=''
29209bc5 1129usesocks=''
b4eb6b3d
JH
1130d_oldpthreads=''
1131use5005threads=''
1132useithreads=''
9514c62b 1133usereentrant=''
b4eb6b3d 1134usethreads=''
2304df62 1135incpath=''
2304df62
AD
1136mips_type=''
1137usrinc=''
b4eb6b3d
JH
1138d_vendorarch=''
1139installvendorarch=''
1140vendorarch=''
1141vendorarchexp=''
1142d_vendorbin=''
1143installvendorbin=''
1144vendorbin=''
1145vendorbinexp=''
6e1038e0
MB
1146installvendorhtml1=''
1147vendorhtml1=''
1148vendorhtml1exp=''
1149installvendorhtml3=''
1150vendorhtml3=''
1151vendorhtml3exp=''
b4eb6b3d
JH
1152d_vendorlib=''
1153installvendorlib=''
1154vendorlib=''
1155vendorlib_stem=''
1156vendorlibexp=''
6e1038e0
MB
1157installvendorman1=''
1158vendorman1=''
1159vendorman1exp=''
1160installvendorman3=''
1161vendorman3=''
1162vendorman3exp=''
b4eb6b3d
JH
1163usevendorprefix=''
1164vendorprefix=''
1165vendorprefixexp=''
6e1038e0
MB
1166d_vendorscript=''
1167installvendorscript=''
1168vendorscript=''
1169vendorscriptexp=''
d56c5707 1170versiononly=''
b4eb6b3d
JH
1171defvoidused=''
1172voidflags=''
1173pm_apiversion=''
1174xs_apiversion=''
3659ebf1
JH
1175yacc=''
1176yaccflags=''
2304df62
AD
1177CONFIG=''
1178
ecfc5424
AD
1179define='define'
1180undef='undef'
1181smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1182rmlist=''
1183
1184: We must find out about Eunice early
1185eunicefix=':'
1186if test -f /etc/unixtovms; then
1187 eunicefix=/etc/unixtovms
1188fi
1189if test -f /etc/unixtovms.exe; then
1190 eunicefix=/etc/unixtovms.exe
1191fi
1192
cfb04860 1193: Set executable suffix now -- needed before hints available
6153ba32
PG
1194if test -f "/libs/version.library"; then
1195: Amiga OS
1196 _exe=""
1197elif test -f "/system/gnu_library/bin/ar.pm"; then
1198: Stratus VOS
cfb04860 1199 _exe=".pm"
6153ba32
PG
1200elif test -n "$DJGPP"; then
1201: DOS DJGPP
cfb04860 1202 _exe=".exe"
5c728af0 1203elif test -d c:/. -o -n "$is_os2" ; then
506faf56 1204: OS/2 or cygwin
ba863942
JH
1205 _exe=".exe"
1206fi
868439a2 1207
b4eb6b3d 1208i_whoami=''
ff935051
JH
1209: Possible local include directories to search.
1210: Set locincpth to "" in a hint file to defeat local include searches.
1211locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1212locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1213:
1214: no include file wanted by default
1215inclwanted=''
1216
76f47787
JH
1217siteman1=''
1218siteman3=''
1219sitescript=''
1220: Trailing extension. Override this in a hint file, if needed.
1221: Extra object files, if any, needed on this platform.
1222archobjs=''
b4eb6b3d 1223groupstype=''
64615a5e 1224libnames=''
732c9516
JH
1225: change the next line if compiling for Xenix/286 on Xenix/386
1226xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1227: Possible local library directories to search.
1228loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1229loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1230
1231: general looking path for locating libraries
5869b1f1 1232glibpth="/lib /usr/lib $xlibpth"
732c9516 1233glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1234test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1235test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1236
1237: Private path used by Configure to find libraries. Its value
1238: is prepended to libpth. This variable takes care of special
1239: machines, like the mips. Usually, it should be empty.
1240plibpth=''
1241
1cfa4ec7
GS
1242: default library list
1243libswanted=''
921b2963 1244: some systems want to use only the non-versioned libso:s
1cfa4ec7 1245ignore_versioned_solibs=''
76f47787
JH
1246: full support for void wanted by default
1247defvoidused=15
1248
1249ccname=''
1250ccversion=''
1251perllibs=''
1252: set useposix=false in your hint file to disable the POSIX extension.
1253useposix=true
1254: set useopcode=false in your hint file to disable the Opcode extension.
1255useopcode=true
b4eb6b3d
JH
1256archname64=''
1257ccflags_uselargefiles=''
1258ldflags_uselargefiles=''
1259libswanted_uselargefiles=''
1260: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1261: set usesocks on the Configure command line to enable socks.
76f47787 1262archname=''
b4eb6b3d 1263: set usethreads on the Configure command line to enable threads.
cd040c5e 1264usereentrant='undef'
ecfc5424 1265: List of libraries we want.
693762b4 1266: If anyone needs -lnet, put it in a hint file.
997d70a2 1267libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1268libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1269libswanted="$libswanted ndir dir crypt sec"
53df3d8c 1270libswanted="$libswanted ucb bsd BSD PW x util rt posix4"
1aef975c 1271: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1272: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1273glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274glibpth="/usr/shlib $glibpth"
1275: Do not use vfork unless overridden by a hint file.
1276usevfork=false
1277
8ff267be 1278: Find the basic shell for Bourne shell scripts
1279case "$sh" in
1280'')
8ff267be 1281 case "$SYSTYPE" in
1282 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283 *) xxx='/bin/sh';;
1284 esac
1285 if test -f "$xxx"; then
1286 sh="$xxx"
1287 else
1288 : Build up a list and do a single loop so we can 'break' out.
1289 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290 for xxx in sh bash ksh pdksh ash; do
1291 for p in $pth; do
1292 try="$try ${p}/${xxx}"
1293 done
1294 done
1295 for xxx in $try; do
1296 if test -f "$xxx"; then
1297 sh="$xxx";
8ff267be 1298 break
a5a94ea5
JH
1299 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300 sh="$xxx";
1301 break
8ff267be 1302 elif test -f "$xxx.exe"; then
1303 sh="$xxx";
8ff267be 1304 break
1305 fi
1306 done
1307 fi
1308 ;;
1309esac
1310
1311case "$sh" in
a33c94aa 1312'') cat >&2 <<EOM
8ff267be 1313$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1314
8ff267be 1315Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1316Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1317we'll try to straighten this all out.
8ff267be 1318EOM
1319 exit 1
1320 ;;
1321esac
1322
760ac839 1323: see if sh knows # comments
73614538 1324if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1325 shsharp=true
1326 spitshell=cat
760ac839 1327 xcat=/bin/cat
a931254c
JH
1328 test -f $xcat$_exe || xcat=/usr/bin/cat
1329 if test ! -f $xcat$_exe; then
4bdb8fb5 1330 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1331 if test -f $p/cat$_exe; then
1deb0a86 1332 xcat=$p/cat
3c728e00
JH
1333 break
1334 fi
1335 done
1deb0a86
JH
1336 if test ! -f $xcat$_exe; then
1337 echo "Can't find cat anywhere!"
3c728e00
JH
1338 exit 1
1339 fi
1340 fi
5440bc8e
JH
1341 echo "#!$xcat" >sharp
1342 $eunicefix sharp
1343 chmod +x sharp
1344 ./sharp > today
760ac839 1345 if test -s today; then
760ac839
LW
1346 sharpbang='#!'
1347 else
5440bc8e
JH
1348 echo "#! $xcat" > sharp
1349 $eunicefix sharp
1350 chmod +x sharp
1351 ./sharp > today
760ac839 1352 if test -s today; then
760ac839
LW
1353 sharpbang='#! '
1354 else
760ac839
LW
1355 sharpbang=': use '
1356 fi
1357 fi
1358else
dfe9444c 1359 echo " "
8ff267be 1360 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1361 shsharp=false
1362 cd ..
1363 echo "exec grep -v '^[ ]*#'" >spitshell
1364 chmod +x spitshell
1365 $eunicefix spitshell
1366 spitshell=`pwd`/spitshell
1367 cd UU
1368 echo "I presume that if # doesn't work, #! won't work either!"
1369 sharpbang=': use '
1370fi
5440bc8e 1371rm -f sharp today
760ac839
LW
1372
1373: figure out how to guarantee sh startup
8ff267be 1374case "$startsh" in
1375'') startsh=${sharpbang}${sh} ;;
1376*)
760ac839 1377esac
5440bc8e 1378cat >sharp <<EOSS
760ac839
LW
1379$startsh
1380set abc
1381test "$?abc" != 1
1382EOSS
1383
5440bc8e
JH
1384chmod +x sharp
1385$eunicefix sharp
1386if ./sharp; then
8ff267be 1387 : echo "Yup, it does."
760ac839 1388else
dfe9444c
AD
1389 echo "Hmm... '$startsh' does not guarantee sh startup..."
1390 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1391fi
5440bc8e 1392rm -f sharp
760ac839 1393
aebf16e7
AD
1394
1395: Save command line options in file UU/cmdline.opt for later use in
1396: generating config.sh.
1397cat > cmdline.opt <<EOSH
1398# Configure command line arguments.
1399config_arg0='$0'
1400config_args='$*'
1401config_argc=$#
1402EOSH
1403argn=1
ee45ea83
IZ
1404args_exp=''
1405args_sep=''
aebf16e7
AD
1406for arg in "$@"; do
1407 cat >>cmdline.opt <<EOSH
1408config_arg$argn='$arg'
1409EOSH
ee45ea83
IZ
1410 # Extreme backslashitis: replace each ' by '"'"'
1411 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412$arg
1413EOC
1414 arg_exp=`cat cmdl.opt`
1415 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1416 argn=`expr $argn + 1`
ee45ea83 1417 args_sep=' '
aebf16e7 1418done
ee45ea83
IZ
1419# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420# used by ./hints/os2.sh
1421rm -f cmdl.opt
aebf16e7 1422
2304df62
AD
1423: produce awk script to parse command line options
1424cat >options.awk <<'EOF'
1425BEGIN {
02e93a22 1426 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1427
1428 len = length(optstr);
1429 for (i = 1; i <= len; i++) {
1430 c = substr(optstr, i, 1);
1431 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432 if (a == ":") {
1433 arg[c] = 1;
1434 i++;
1435 }
1436 opt[c] = 1;
1437 }
1438}
1439{
1440 expect = 0;
1441 str = $0;
1442 if (substr(str, 1, 1) != "-") {
1443 printf("'%s'\n", str);
1444 next;
1445 }
1446 len = length($0);
1447 for (i = 2; i <= len; i++) {
1448 c = substr(str, i, 1);
1449 if (!opt[c]) {
1450 printf("-%s\n", substr(str, i));
1451 next;
1452 }
1453 printf("-%s\n", c);
1454 if (arg[c]) {
1455 if (i < len)
1456 printf("'%s'\n", substr(str, i + 1));
1457 else
1458 expect = 1;
1459 next;
1460 }
1461 }
1462}
1463END {
1464 if (expect)
1465 print "?";
1466}
1467EOF
1468
1469: process the command line options
4633a7c4
LW
1470set X `for arg in "$@"; do echo "X$arg"; done |
1471 sed -e s/X// | awk -f options.awk`
2304df62
AD
1472eval "set $*"
1473shift
1474rm -f options.awk
1475
1476: set up default values
1477fastread=''
1478reuseval=false
1479config_sh=''
1480alldone=''
1481error=''
1482silent=''
1483extractsh=''
ecfc5424 1484override=''
16d20bd9 1485knowitall=''
02e93a22 1486rm -f optdef.sh posthint.sh
28757baa 1487cat >optdef.sh <<EOS
1488$startsh
1489EOS
2304df62 1490
dfe9444c 1491
2304df62
AD
1492: option parsing
1493while test $# -gt 0; do
1494 case "$1" in
1495 -d) shift; fastread=yes;;
1496 -e) shift; alldone=cont;;
1497 -f)
1498 shift
1499 cd ..
1500 if test -r "$1"; then
1501 config_sh="$1"
1502 else
a0d0e21e 1503 echo "$me: cannot read config file $1." >&2
2304df62
AD
1504 error=true
1505 fi
1506 cd UU
1507 shift;;
1508 -h) shift; error=true;;
1509 -r) shift; reuseval=true;;
dfe9444c 1510 -s) shift; silent=true; realsilent=true;;
2304df62 1511 -E) shift; alldone=exit;;
16d20bd9 1512 -K) shift; knowitall=true;;
ecfc5424 1513 -O) shift; override=true;;
dfe9444c 1514 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1515 -D)
1516 shift
1517 case "$1" in
1518 *=)
1519 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520 echo "$me: ignoring -D $1" >&2
1521 ;;
ecfc5424 1522 *=*) echo "$1" | \
1aef975c
AD
1523 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1525 esac
1526 shift
1527 ;;
1528 -U)
1529 shift
1530 case "$1" in
1aef975c 1531 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1532 *=*)
1533 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534 echo "$me: ignoring -U $1" >&2
1535 ;;
1aef975c 1536 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1537 esac
1538 shift
1539 ;;
02e93a22
JH
1540 -A)
1541 shift
1542 xxx=''
1543 yyy="$1"
02e93a22 1544 zzz=''
5f83a3e9 1545 uuu=undef
02e93a22 1546 case "$yyy" in
f7c31117 1547 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
5f83a3e9
JH
1548 case "$zzz" in
1549 *:*) zzz='' ;;
1550 *) xxx=append
f7c31117
JH
1551 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1552 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
5f83a3e9
JH
1553 esac
1554 ;;
1555 esac
1556 case "$xxx" in
1557 '') case "$yyy" in
f7c31117
JH
1558 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1563 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
5f83a3e9
JH
1564 esac
1565 ;;
1566 esac
02e93a22
JH
1567 case "$xxx" in
1568 append)
5f83a3e9 1569 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1570 clear)
5f83a3e9 1571 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1572 define)
1573 case "$zzz" in
1574 '') zzz=define ;;
1575 esac
5f83a3e9 1576 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1577 eval)
5f83a3e9 1578 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1579 prepend)
5f83a3e9 1580 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1581 undef)
1582 case "$zzz" in
1583 '') zzz="$uuu" ;;
1584 esac
5f83a3e9
JH
1585 echo "$yyy=$zzz" >> posthint.sh ;;
1586 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1587 esac
bde6b06b 1588 shift
02e93a22 1589 ;;
dfe9444c 1590 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1591 exit 0;;
2304df62 1592 --) break;;
a0d0e21e 1593 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1594 *) break;;
1595 esac
1596done
1597
1598case "$error" in
1599true)
1600 cat >&2 <<EOM
2afac517 1601Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1602 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1603 -d : use defaults for all answers.
1604 -e : go on without questioning past the production of config.sh.
1605 -f : specify an alternate default configuration file.
1606 -h : print this help message and exit (with an error status).
1607 -r : reuse C symbols value if possible (skips costly nm extraction).
1608 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1609 -D : define symbol to have some value:
1610 -D symbol symbol gets the value 'define'
1611 -D symbol=value symbol gets the value 'value'
2304df62 1612 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1613 -K : do not use unless you know what you are doing.
ecfc5424 1614 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1615 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1616 -U : undefine symbol:
1617 -U symbol symbol gets the value 'undef'
1618 -U symbol= symbol gets completely empty
02e93a22 1619 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1620 -A symbol=value append " "value to symbol
02e93a22
JH
1621 -A append:symbol=value append value to symbol
1622 -A define:symbol=value define symbol to have value
02e93a22
JH
1623 -A clear:symbol define symbol to be ''
1624 -A define:symbol define symbol to be 'define'
1625 -A eval:symbol=value define symbol to be eval of value
1626 -A prepend:symbol=value prepend value to symbol
1627 -A undef:symbol define symbol to be 'undef'
1628 -A undef:symbol= define symbol to be ''
2304df62
AD
1629 -V : print version number and exit (with a zero status).
1630EOM
1631 exit 1
1632 ;;
1633esac
1634
dfe9444c
AD
1635: Sanity checks
1636case "$fastread$alldone" in
1637yescont|yesexit) ;;
1638*)
aaeb8e51
GS
1639 case "$extractsh" in
1640 true) ;;
1641 *)
1642 if test ! -t 0; then
1643 echo "Say 'sh Configure', not 'sh <Configure'"
1644 exit 1
1645 fi
1646 ;;
1647 esac
dfe9444c
AD
1648 ;;
1649esac
1650
2304df62
AD
1651exec 4>&1
1652case "$silent" in
1653true) exec 1>/dev/null;;
1654esac
1655
ecfc5424 1656: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1657touch optdef.sh
1658. ./optdef.sh
02e93a22
JH
1659: create the posthint manipulation script and leave the file out there...
1660touch posthint.sh
a0d0e21e 1661
2304df62 1662: set package name
85e6fe83 1663package=perl5
b4eb6b3d
JH
1664first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669esac
2304df62 1670
2304df62
AD
1671: Some greps do not return status, grrr.
1672echo "grimblepritz" >grimble
1673if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674 contains=contains
1675elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676 contains=grep
1677else
1678 contains=contains
1679fi
1680rm -f grimble
1681: the following should work in any shell
1682case "$contains" in
1683contains*)
1684 echo " "
1685 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1686 cat >contains <<'EOSS'
1687grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688EOSS
1689chmod +x contains
1690esac
1691
dfe9444c
AD
1692: Find the path to the source tree
1693case "$src" in
1694'') case "$0" in
b233458b
JH
1695 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696 case "$src" in
1697 /*) ;;
8504afb7 1698 .) ;;
b233458b
JH
1699 *) src=`cd ../$src && pwd` ;;
1700 esac
1701 ;;
dfe9444c
AD
1702 *) src='.';;
1703 esac;;
1704esac
1705case "$src" in
1706'') src=/
1707 rsrc=/
1708 ;;
1709/*) rsrc="$src";;
1710*) rsrc="../$src";;
1711esac
1712if test -f $rsrc/Configure && \
1713 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714then
1715 : found it, so we are ok.
1716else
1717 rsrc=''
1718 for src in . .. ../.. ../../.. ../../../..; do
1719 if test -f ../$src/Configure && \
1720 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721 then
1722 rsrc=../$src
1723 break
1724 fi
1725 done
1726fi
1727case "$rsrc" in
1728'')
1729 cat <<EOM >&4
1730
1731Sorry, I can't seem to locate the source dir for $package. Please start
1732Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734EOM
1735 exit 1
1736 ;;
1737../.) rsrc='..';;
1738*)
1739 echo " "
1740 echo "Sources for $package found in \"$src\"." >&4
1741 ;;
1742esac
1743
1744: script used to extract .SH files with variable substitutions
1745cat >extract <<'EOS'
a02608de 1746PERL_CONFIG_SH=true
dfe9444c 1747echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1748if test -f MANIFEST; then
1749 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1750else
1751 echo "(Looking for .SH files under the source directory.)"
6904989c 1752 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1753fi
1754shift
1755case $# in
6904989c 17560) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1757esac
6904989c 1758if test ! -f "$src/$1"; then
dfe9444c
AD
1759 shift
1760fi
1761mkdir_p='
1762name=$1;
1763create="";
1764while test $name; do
1765 if test ! -d "$name"; then
1766 create="$name $create";
1767 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769 else
1770 name="";
1771 fi;
1772done;
1773for file in $create; do
1774 mkdir $file;
1775done
1776'
1777for file in $*; do
1778 case "$src" in
1779 ".")
1780 case "$file" in
1781 */*)
1782 dir=`expr X$file : 'X\(.*\)/'`
1783 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1784 (cd "$dir" && . ./$file)
dfe9444c
AD
1785 ;;
1786 *)
1787 . ./$file
1788 ;;
1789 esac
1790 ;;
1791 *)
1792 case "$file" in
1793 */*)
1794 dir=`expr X$file : 'X\(.*\)/'`
1795 file=`expr X$file : 'X.*/\(.*\)'`
1796 (set x $dir; shift; eval $mkdir_p)
6904989c 1797 sh <"$src/$dir/$file"
dfe9444c
AD
1798 ;;
1799 *)
6904989c 1800 sh <"$src/$file"
dfe9444c
AD
1801 ;;
1802 esac
1803 ;;
1804 esac
1805done
6904989c 1806if test -f "$src/config_h.SH"; then
dfe9444c
AD
1807 if test ! -f config.h; then
1808 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1809 . "$src/config_h.SH"
dfe9444c
AD
1810 fi
1811fi
1812EOS
1813
1814: extract files and exit if asked to do so
1815case "$extractsh" in
1816true)
1817 case "$realsilent" in
1818 true) ;;
1819 *) exec 1>&4;;
1820 esac
1821 case "$config_sh" in
1822 '') config_sh='config.sh';;
1823 esac
1824 echo " "
1825 echo "Fetching answers from $config_sh..."
1826 cd ..
1827 . $config_sh
1828 test "$override" && . ./optdef.sh
1829 echo " "
1830 . UU/extract
1831 rm -rf UU
24ccb310 1832 echo "Extraction done."
dfe9444c
AD
1833 exit 0
1834 ;;
1835esac
1836
1837: Eunice requires " " instead of "", can you believe it
1838echo " "
1839: Here we go...
1840echo "Beginning of configuration questions for $package."
1841
1842trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
2304df62
AD
1844: first determine how to suppress newline on echo command
1845echo " "
1846echo "Checking echo to see how to suppress newlines..."
1847(echo "hi there\c" ; echo " ") >.echotmp
1848if $contains c .echotmp >/dev/null 2>&1 ; then
1849 echo "...using -n."
1850 n='-n'
1851 c=''
1852else
1853 cat <<'EOM'
1854...using \c
1855EOM
1856 n=''
1857 c='\c'
1858fi
1859echo $n "The star should be here-->$c"
1860echo '*'
1861rm -f .echotmp
1862
1863: Now test for existence of everything in MANIFEST
1864echo " "
6904989c 1865if test -f "$rsrc/MANIFEST"; then
2304df62 1866 echo "First let's make sure your kit is complete. Checking..." >&4
4242830c 1867 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
2304df62 1868 rm -f missing
dfe9444c 1869 tmppwd=`pwd`
2304df62 1870 for filelist in x??; do
6904989c 1871 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1872 done
1873 if test -s missing; then
1874 cat missing >&4
1875 cat >&4 <<'EOM'
1876
1877THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879You have the option of continuing the configuration process, despite the
1880distinct possibility that your kit is damaged, by typing 'y'es. If you
1881do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1882and contact the author (perlbug@perl.org).
2304df62
AD
1883
1884EOM
1885 echo $n "Continue? [n] $c" >&4
1886 read ans
1887 case "$ans" in
1888 y*)
1889 echo "Continuing..." >&4
1890 rm -f missing
1891 ;;
1892 *)
1893 echo "ABORTING..." >&4
1894 kill $$
1895 ;;
1896 esac
1897 else
dfe9444c 1898 echo "Looks good..."
2304df62
AD
1899 fi
1900else
1901 echo "There is no MANIFEST file. I hope your kit is complete !"
1902fi
1903rm -f missing x??
1904
5ff3f7a4
GS
1905echo " "
1906: Find the appropriate value for a newline for tr
1907if test -n "$DJGPP"; then
1908 trnl='\012'
1909fi
1910if test X"$trnl" = X; then
1911 case "`echo foo|tr '\n' x 2>/dev/null`" in
1912 foox) trnl='\n' ;;
1913 esac
1914fi
1915if test X"$trnl" = X; then
1916 case "`echo foo|tr '\012' x 2>/dev/null`" in
1917 foox) trnl='\012' ;;
1918 esac
1919fi
1920if test X"$trnl" = X; then
8be2c24c
JH
1921 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922 fooxy) trnl='\n\r' ;;
1923 esac
1924fi
1925if test X"$trnl" = X; then
5ff3f7a4
GS
1926 cat <<EOM >&2
1927
1928$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930EOM
1931 exit 1
1932fi
1933
2304df62
AD
1934: compute the number of columns on the terminal for proper question formatting
1935case "$COLUMNS" in
1936'') COLUMNS='80';;
1937esac
1938
1939: set up the echo used in my read
1940myecho="case \"\$xxxm\" in
1941'') echo $n \"\$rp $c\" >&4;;
1942*) case \"\$rp\" in
1943 '') echo $n \"[\$xxxm] $c\";;
1944 *)
1945 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1946 echo \"\$rp\" >&4
1947 echo $n \"[\$xxxm] $c\" >&4
1948 else
1949 echo $n \"\$rp [\$xxxm] $c\" >&4
1950 fi
1951 ;;
1952 esac;;
1953esac"
1954
1955: now set up to do reads with possible shell escape and default assignment
1956cat <<EOSC >myread
28757baa 1957$startsh
2304df62
AD
1958xxxm=\$dflt
1959$myecho
1960ans='!'
1961case "\$fastread" in
1962yes) case "\$dflt" in
1963 '') ;;
1964 *) ans='';
1965 case "\$silent-\$rp" in
1966 true-) ;;
1967 *) echo " " >&4;;
1968 esac;;
1969 esac;;
1970*) case "\$silent" in
1971 true) case "\$rp" in
1972 '') ans='';;
1973 esac;;
1974 esac;;
1975esac
1976while expr "X\$ans" : "X!" >/dev/null; do
1977 read answ
1978 set x \$xxxm
1979 shift
dfe9444c 1980 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1981 case "\$answ" in
dfe9444c
AD
1982 "!")
1983 sh 1>&4
1984 echo " "
1985 $myecho
1986 ;;
1987 !*)
1988 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989 shift
1990 sh 1>&4 -c "\$*"
1991 echo " "
1992 $myecho
1993 ;;
2304df62
AD
1994 "\$ans")
1995 case "\$ans" in
ecfc5424
AD
1996 \\&*)
1997 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998 shift
1999 case "\$1" in
2000 -d)
2001 fastread=yes
40a7a20a 2002 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
2003 ;;
2004 -*)
40a7a20a 2005 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
2006 ;;
2007 esac
2008 $myecho
2009 ans=!
2010 ;;
2304df62
AD
2011 esac;;
2012 *)
2013 case "\$aok" in
2014 y)
2015 echo "*** Substitution done -- please confirm."
2016 xxxm="\$ans"
c9795ab7 2017 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
2018 xxxm="\$ans"
2019 ans=!
2020 ;;
2021 *)
2022 echo "*** Error -- try again."
2023 ans=!
2024 ;;
2025 esac
2026 $myecho
2027 ;;
2028 esac
2029 case "\$ans\$xxxm\$nostick" in
2030 '')
2031 ans=!
2032 $myecho
2033 ;;
2034 esac
2035done
2036case "\$ans" in
2037'') ans="\$xxxm";;
2038esac
2039EOSC
2040
2041: create .config dir to save info across Configure sessions
2042test -d ../.config || mkdir ../.config
2043cat >../.config/README <<EOF
2044This directory created by Configure to save information that should
dfe9444c 2045persist across sessions for $package.
2304df62
AD
2046
2047You may safely delete it if you wish.
2048EOF
2049
9507cadf 2050xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 2051case "$usedevel" in
0107c034 2052$define|true|[yY]*) ;;
9507cadf 2053*) case "$xversion" in
0107c034
JH
2054 *[13579])
2055 cat >&4 <<EOH
2056*** WHOA THERE!!! ***
2057
2058 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
2059 The version of this $package distribution is $xversion, that is, odd,
2060 (as opposed to even) and that signifies a development release.
3d5d58b1 2061 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
2062
2063 Do ***NOT*** install this into production use.
2064 Data corruption and crashes are possible.
2065
2066 It is most seriously suggested that you do not continue any further
2067 unless you want to help in developing and debugging Perl.
2068
6adc6a45
JH
2069 If you *still* want to build perl, you can answer 'y' now,
2070 or pass -Dusedevel to Configure.
2071
0107c034
JH
2072EOH
2073 rp='Do you really want to continue?'
2074 dflt='n'
2075 . ./myread
2076 case "$ans" in
8feeef0e
JH
2077 [yY]) echo >&4 "Okay, continuing."
2078 usedevel="$define" ;;
0107c034
JH
2079 *) echo >&4 "Okay, bye."
2080 exit 1
2081 ;;
2082 esac
2083 ;;
2084 esac
2085 ;;
2086esac
8feeef0e
JH
2087case "$usedevel" in
2088$define|true|[yY]*)
2089 case "$versiononly" in
2090 '') versiononly="$define" ;;
2091 esac
2092 case "$installusrbinperl" in
2093 '') installusrbinperl="$undef" ;;
2094 esac
2095 ;;
2096esac
0107c034 2097
2304df62
AD
2098: general instructions
2099needman=true
2100firsttime=true
760ac839 2101user=`(logname) 2>/dev/null`
dfe9444c
AD
2102case "$user" in
2103'') user=`whoami 2>&1`;;
760ac839 2104esac
2304df62
AD
2105if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106 firsttime=false
2107 echo " "
2108 rp='Would you like to see the instructions?'
2109 dflt=n
2110 . ./myread
2111 case "$ans" in
2112 [yY]*) ;;
2113 *) needman=false;;
2114 esac
2115fi
2116if $needman; then
2117 cat <<EOH
4e2a5f63 2118
2304df62 2119This installation shell script will examine your system and ask you questions
a0d0e21e 2120to determine how the perl5 package should be installed. If you get
2304df62
AD
2121stuck on a question, you may use a ! shell escape to start a subshell or
2122execute a command. Many of the questions will have default answers in square
2123brackets; typing carriage return will give you the default.
2124
2125On some of the questions which ask for file or directory names you are allowed
2126to use the ~name construct to specify the login directory belonging to "name",
2127even if you don't have a shell which knows about that. Questions where this is
2128allowed will be marked "(~name ok)".
2129
2130EOH
2131 rp=''
2132 dflt='Type carriage return to continue'
2133 . ./myread
2134 cat <<'EOH'
2135
2136The prompter used in this script allows you to use shell variables and
2137backticks in your answers. You may use $1, $2, etc... to refer to the words
2138in the default answer, as if the default line was a set of arguments given to a
2139script shell. This means you may also use $* to repeat the whole default line,
2140so you do not have to re-type everything to add something to the default.
2141
2142Everytime there is a substitution, you will have to confirm. If there is an
2143error (e.g. an unmatched backtick), the default answer will remain unchanged
2144and you will be prompted again.
2145
2146If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2147the questions and use the computed defaults (or the previous answers if there
2148was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 2149You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 2150on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
2151
2152EOH
2153 . ./myread
2154 cat <<EOH
2155
2156Much effort has been expended to ensure that this shell script will run on any
2157Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
2158Configure and run it again. If you can't run Configure for some reason,
2159you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 2160have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
2161
2162This installation script affects things in two ways:
2163
21641) it may do direct variable substitutions on some of the files included
2165 in this kit.
21662) it builds a config.h file for inclusion in C programs. You may edit
2167 any of these files as the need arises after running this script.
2168
2169If you make a mistake on a question, there is no easy way to back up to it
2170currently. The easiest thing to do is to edit config.sh and rerun all the SH
2171files. Configure will offer to let you do this before it runs the SH files.
2172
2173EOH
2174 dflt='Type carriage return to continue'
2175 . ./myread
2176 case "$firsttime" in
2177 true) echo $user >>../.config/instruct;;
2178 esac
2179fi
2180
2304df62
AD
2181: find out where common programs are
2182echo " "
2183echo "Locating common programs..." >&4
2184cat <<EOSC >loc
2185$startsh
2186case \$# in
21870) exit 1;;
2188esac
2189thing=\$1
2190shift
2191dflt=\$1
2192shift
2193for dir in \$*; do
2194 case "\$thing" in
2195 .)
2196 if test -d \$dir/\$thing; then
2197 echo \$dir
2198 exit 0
2199 fi
2200 ;;
2201 *)
a0d0e21e 2202 for thisthing in \$dir/\$thing; do
ecfc5424 2203 : just loop through to pick last item
a0d0e21e 2204 done
25f94b33 2205 if test -f \$thisthing; then
a0d0e21e 2206 echo \$thisthing
2304df62 2207 exit 0
a5a94ea5
JH
2208 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209 echo \$thisthing
2210 exit 0
2304df62 2211 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2212 if test -n "$DJGPP"; then
2213 echo \$dir/\$thing.exe
b921d661 2214 elif test "$eunicefix" != ":"; then
c4f23d77
AD
2215 : on Eunice apparently
2216 echo \$dir/\$thing
b921d661 2217 exit 0
c4f23d77 2218 fi
2d736872 2219 exit 0
2304df62
AD
2220 fi
2221 ;;
2222 esac
2223done
2224echo \$dflt
2225exit 1
2226EOSC
2227chmod +x loc
2228$eunicefix loc
2229loclist="
2230awk
2231cat
f8006fac 2232chmod
b4eb6b3d
JH
2233comm
2234cp
2304df62
AD
2235echo
2236expr
2237grep
a0d0e21e 2238ls
b4eb6b3d 2239mkdir
2304df62
AD
2240rm
2241sed
b4eb6b3d 2242sort
85e6fe83 2243touch
2304df62 2244tr
b4eb6b3d 2245uniq
2304df62
AD
2246"
2247trylist="
2248Mcc
dfe9444c 2249ar
3659ebf1 2250bison
b4eb6b3d 2251byacc
2304df62 2252cpp
b4eb6b3d 2253csh
2304df62
AD
2254date
2255egrep
1fef16b3 2256gmake
8ff267be 2257gzip
b4eb6b3d 2258less
8ff267be 2259ln
3c728e00 2260make
b4eb6b3d 2261more
693762b4 2262nm
b4eb6b3d
JH
2263nroff
2264pg
2304df62
AD
2265test
2266uname
8ff267be 2267zip
2304df62 2268"
8e07c86e 2269pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2270pth="$pth /lib /usr/lib"
2271for file in $loclist; do
dfe9444c
AD
2272 eval xxx=\$$file
2273 case "$xxx" in
2274 /*|?:[\\/]*)
2275 if test -f "$xxx"; then
2276 : ok
2277 else
2278 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279 xxx=`./loc $file $file $pth`
2280 fi
2281 ;;
2282 '') xxx=`./loc $file $file $pth`;;
2283 *) xxx=`./loc $xxx $xxx $pth`;;
2284 esac
a5a94ea5 2285 eval $file=$xxx$_exe
2304df62
AD
2286 eval _$file=$xxx
2287 case "$xxx" in
2288 /*)
2289 echo $file is in $xxx.
2290 ;;
8e07c86e
AD
2291 ?:[\\/]*)
2292 echo $file is in $xxx.
2293 ;;
2304df62 2294 *)
25f94b33
AD
2295 echo "I don't know where '$file' is, and my life depends on it." >&4
2296 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2297 exit 1
2304df62
AD
2298 ;;
2299 esac
2300done
2301echo " "
2302echo "Don't worry if any of the following aren't found..."
2303say=offhand
2304for file in $trylist; do
dfe9444c
AD
2305 eval xxx=\$$file
2306 case "$xxx" in
2307 /*|?:[\\/]*)
2308 if test -f "$xxx"; then
2309 : ok
2310 else
2311 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312 xxx=`./loc $file $file $pth`
2313 fi
2314 ;;
2315 '') xxx=`./loc $file $file $pth`;;
2316 *) xxx=`./loc $xxx $xxx $pth`;;
2317 esac
306a8474 2318 eval $file=$xxx$_exe
2304df62
AD
2319 eval _$file=$xxx
2320 case "$xxx" in
2321 /*)
2322 echo $file is in $xxx.
2323 ;;
8e07c86e
AD
2324 ?:[\\/]*)
2325 echo $file is in $xxx.
2326 ;;
2304df62
AD
2327 *)
2328 echo "I don't see $file out there, $say."
2329 say=either
2330 ;;
2331 esac
2332done
2333case "$egrep" in
1fef16b3 2334egrep)
2304df62
AD
2335 echo "Substituting grep for egrep."
2336 egrep=$grep
868439a2 2337 _egrep=$grep
2304df62
AD
2338 ;;
2339esac
8ff267be 2340case "$ln" in
1fef16b3 2341ln)
8ff267be 2342 echo "Substituting cp for ln."
2343 ln=$cp
868439a2 2344 _ln=$cp
8ff267be 2345 ;;
2346esac
2e26f1d5
JH
2347case "$make" in
2348make)
2349 case "$gmake" in
2350 gmake)
2351 echo "I can't find make or gmake, and my life depends on it." >&4
2352 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353 exit 1
2354 ;;
2355 esac
2356 ;;
2357esac
2358case "$gmake" in
2359gmake) ;;
2360*) # We can't have osname yet.
1fef16b3
JH
2361 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362 # Assume that gmake, if found, is definitely GNU make
2363 # and prefer it over the system make.
2364 echo "Substituting gmake for make."
2365 make=$gmake
868439a2 2366 _make=$gmake
1fef16b3
JH
2367 fi
2368 ;;
a5a94ea5 2369esac
2304df62
AD
2370case "$test" in
2371test)
2372 echo "Hopefully test is built into your sh."
2373 ;;
2374*)
73614538 2375 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2376 echo "Using the test built into your sh."
2304df62
AD
2377 test=test
2378 _test=test
2379 fi
2380 ;;
2381esac
2382case "$echo" in
2383echo)
2384 echo "Hopefully echo is built into your sh."
2385 ;;
2386'') ;;
2387*)
2388 echo " "
2389echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390 $echo $n "hi there$c" >foo1
2391 echo $n "hi there$c" >foo2
2392 if cmp foo1 foo2 >/dev/null 2>&1; then
2393 echo "They are compatible. In fact, they may be identical."
2394 else
2395 case "$n" in
2396 '-n') n='' c='\c';;
2397 *) n='-n' c='';;
2398 esac
2399 cat <<FOO
2400They are not compatible! You are probably running ksh on a non-USG system.
2401I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402have echo built in and we may have to run some Bourne shell scripts. That
2403means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2404
2405FOO
2406 $echo $n "The star should be here-->$c"
2407 $echo "*"
2408 fi
2409 $rm -f foo1 foo2
2410 ;;
2411esac
2412
6b769f8f 2413cat <<EOS >trygcc
2573c5f9
JH
2414$startsh
2415EOS
6b769f8f 2416cat <<'EOSC' >>trygcc
2573c5f9
JH
2417case "$cc" in
2418'') ;;
2419*) $rm -f try try.*
2420 $cat >try.c <<EOM
2421int main(int argc, char *argv[]) {
2422 return 0;
2423}
2424EOM
e4778687 2425 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2426 :
2427 else
2428 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429 despair=yes
2430 trygcc=yes
2431 case "$cc" in
2432 *gcc*) trygcc=no ;;
2433 esac
2434 case "`$cc -v -c try.c 2>&1`" in
2435 *gcc*) trygcc=no ;;
2436 esac
2437 if $test X"$trygcc" = Xyes; then
2438 if gcc -o try -c try.c; then
2439 echo " "
2440 echo "You seem to have a working gcc, though." >&4
2441 rp="Would you like to use it?"
2442 dflt=y
2443 if $test -f myread; then
2444 . ./myread
2445 else
2446 if $test -f UU/myread; then
2447 . ./UU/myread
2448 else
2449 echo "Cannot find myread, sorry. Aborting." >&2
2450 exit 1
2451 fi
2452 fi
2453 case "$ans" in
6371411c
RB
2454 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455 if $test -f usethreads.cbu; then
2456 $cat >&4 <<EOM
2457
2458*** However, any setting of the C compiler flags (e.g. for thread support)
2459*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2460*** (together with e.g. -Dusethreads).
2461
2462EOM
2463 fi;;
2573c5f9
JH
2464 esac
2465 fi
2466 fi
6b769f8f
RB
2467 fi
2468 $rm -f try try.*
2469 ;;
2470esac
2471EOSC
2472
2473cat <<EOS >checkcc
2474$startsh
2475EOS
2476cat <<'EOSC' >>checkcc
2477case "$cc" in
2478'') ;;
2479*) $rm -f try try.*
2480 $cat >try.c <<EOM
2481int main(int argc, char *argv[]) {
2482 return 0;
2483}
2484EOM
2485 if $cc -o try $ccflags $ldflags try.c; then
2486 :
2487 else
2573c5f9 2488 if $test X"$despair" = Xyes; then
6b769f8f
RB
2489 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490 fi
2491 $cat >&4 <<EOM
5dd4fbdf
MB
2492You need to find a working C compiler.
2493Either (purchase and) install the C compiler supplied by your OS vendor,
2494or for a free C compiler try http://gcc.gnu.org/
2495I cannot continue any further, aborting.
2496EOM
6b769f8f 2497 exit 1
2573c5f9
JH
2498 fi
2499 $rm -f try try.*
2500 ;;
2501esac
2502EOSC
2503
a0d0e21e
LW
2504: determine whether symbolic links are supported
2505echo " "
2506$touch blurfl
2507if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508 echo "Symbolic links are supported." >&4
818f00be 2509 lns="$ln -s"
a0d0e21e
LW
2510else
2511 echo "Symbolic links are NOT supported." >&4
2512 lns="$ln"
2513fi
2514$rm -f blurfl sym
2515
dafca956
JH
2516: determine whether symbolic links are supported
2517echo " "
2518case "$lns" in
18ea2752 2519*"ln"*" -s")
dafca956
JH
2520 echo "Checking how to test for symbolic links..." >&4
2521 $lns blurfl sym
4b661809 2522 if $test "X$issymlink" = X; then
2e2a97a6
JH
2523 case "$newsh" in
2524 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526 esac
5d644a95
MB
2527 if test $? = 0; then
2528 issymlink="test -h"
2e2a97a6
JH
2529 else
2530 echo "Your builtin 'test -h' may be broken." >&4
2531 case "$test" in
2532 /*) ;;
2533 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534 for p in $pth
2535 do
2536 if test -f "$p/$test"; then
2537 test="$p/$test"
2538 break
2539 fi
2540 done
2541 ;;
2542 esac
2543 case "$test" in
2544 /*)
2545 echo "Trying external '$test -h'." >&4
2546 issymlink="$test -h"
2547 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2548 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2549 issymlink=''
2550 fi
2551 ;;
2552 *) issymlink='' ;;
2553 esac
5d644a95
MB
2554 fi
2555 fi
4b661809 2556 if $test "X$issymlink" = X; then
dafca956 2557 if $test -L sym 2>/dev/null; then
5d644a95 2558 issymlink="$test -L"
2e2a97a6 2559 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2560 fi
2561 fi
4b661809 2562 if $test "X$issymlink" != X; then
5d644a95 2563 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2564 else
2565 echo "I do not know how you can test for symbolic links." >&4
2566 fi
2567 $rm -f blurfl sym
2568 ;;
2569*) echo "No symbolic links, so not testing for their testing..." >&4
2570 ;;
2571esac
2572echo " "
2573
2574
2575case "$mksymlinks" in
2576$define|true|[yY]*)
2577 case "$src" in
2578 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579 exit 1
2580 ;;
4b661809 2581 *) case "$lns:$issymlink" in
f314eb9f 2582 *"ln"*" -s:"*"test -"?)
dafca956
JH
2583 echo "Creating the symbolic links..." >&4
2584 echo "(First creating the subdirectories...)" >&4
2585 cd ..
2586 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587 read directory
2588 test -z "$directory" && break
2589 mkdir -p $directory
2590 done
2591 # Sanity check 1.
2592 if test ! -d t/base; then
2593 echo "Failed to create the subdirectories. Aborting." >&4
2594 exit 1
2595 fi
2596 echo "(Then creating the symlinks...)" >&4
2597 awk '{print $1}' $src/MANIFEST | while true; do
2598 read filename
2599 test -z "$filename" && break
2600 if test -f $filename; then
5d644a95 2601 if $issymlink $filename; then
dafca956
JH
2602 rm -f $filename
2603 fi
2604 fi
2605 if test -f $filename; then
2606 echo "$filename already exists, not symlinking."
2607 else
2608 ln -s $src/$filename $filename
2609 fi
2610 done
2611 # Sanity check 2.
a0d24b8a
JH
2612 if test ! -f t/base/lex.t; then
2613 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2614 exit 1
2615 fi
2616 cd UU
2617 ;;
2618 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619 ;;
2620 esac
2621 ;;
2622 esac
2623 ;;
2624esac
2625
5440bc8e
JH
2626
2627case "$usecrosscompile" in
2628$define|true|[yY]*)
93bc48fa 2629 $echo "Cross-compiling..."
5440bc8e
JH
2630 croak=''
2631 case "$cc" in
2632 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2633 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2634 ar=$targetarch-ar
2635 # leave out ld, choosing it is more complex
2636 nm=$targetarch-nm
2637 ranlib=$targetarch-ranlib
93bc48fa 2638 $echo 'extern int foo;' > try.c
f8006fac 2639 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2640 shift
2641 if $test $# -gt 0; then
2642 incpth="$incpth $*"
f8006fac
JH
2643 incpth="`$echo $incpth|$sed 's/^ //'`"
2644 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2645 for i in $*; do
f8006fac 2646 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2647 if $test -d $j; then
2648 libpth="$libpth $j"
2649 fi
2650 done
f8006fac
JH
2651 libpth="`$echo $libpth|$sed 's/^ //'`"
2652 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2653 fi
2654 $rm -f try.c
5440bc8e
JH
2655 ;;
2656 esac
2657 case "$targetarch" in
93bc48fa
JH
2658 '') echo "Targetarch not defined." >&4; croak=y ;;
2659 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2660 esac
2661 case "$incpth" in
93bc48fa 2662 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2663 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2664 esac
2665 case "$libpth" in
93bc48fa 2666 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2667 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2668 esac
93bc48fa
JH
2669 case "$usrinc" in
2670 '') for i in $incpth; do
2671 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672 usrinc=$i
2673 echo "Guessing usrinc $usrinc." >&4
2674 break
2675 fi
2676 done
2677 case "$usrinc" in
2678 '') echo "Usrinc not defined." >&4; croak=y ;;
2679 esac
2680 ;;
2681 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2682 esac
93bc48fa
JH
2683 case "$targethost" in
2684 '') echo "Targethost not defined." >&4; croak=y ;;
2685 *) echo "Using targethost $targethost." >&4
5440bc8e 2686 esac
93bc48fa
JH
2687 locincpth=' '
2688 loclibpth=' '
5440bc8e 2689 case "$croak" in
93bc48fa 2690 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2691 esac
2692 case "$src" in
2693 /*) run=$src/Cross/run
93c0359c 2694 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2695 to=$src/Cross/to
2696 from=$src/Cross/from
2697 ;;
93bc48fa 2698 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2699 run=$pwd/Cross/run
f8006fac 2700 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2701 to=$pwd/Cross/to
2702 from=$pwd/Cross/from
2703 ;;
2704 esac
2705 case "$targetrun" in
2706 '') targetrun=ssh ;;
2707 esac
2708 case "$targetto" in
2709 '') targetto=scp ;;
2710 esac
2711 case "$targetfrom" in
2712 '') targetfrom=scp ;;
2713 esac
2714 run=$run-$targetrun
2715 to=$to-$targetto
2716 from=$from-$targetfrom
93bc48fa
JH
2717 case "$targetdir" in
2718 '') targetdir=/tmp
2719 echo "Guessing targetdir $targetdir." >&4
2720 ;;
2721 esac
5440bc8e 2722 case "$targetuser" in
93bc48fa
JH
2723 '') targetuser=root
2724 echo "Guessing targetuser $targetuser." >&4
2725 ;;
5440bc8e
JH
2726 esac
2727 case "$targetfrom" in
2728 scp) q=-q ;;
2729 *) q='' ;;
2730 esac
2731 case "$targetrun" in
2732 ssh|rsh)
2733 cat >$run <<EOF
2734#!/bin/sh
93c0359c
JH
2735case "\$1" in
2736-cwd)
2737 shift
2738 cwd=\$1
2739 shift
2740 ;;
2741esac
2742case "\$cwd" in
2743'') cwd=$targetdir ;;
2744esac
5440bc8e
JH
2745exe=\$1
2746shift
93c0359c
JH
2747if $test ! -f \$exe.xok; then
2748 $to \$exe
2749 $touch \$exe.xok
2750fi
2751$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2752EOF
2753 ;;
93bc48fa 2754 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2755 exit 1
2756 ;;
2757 esac
93c0359c
JH
2758 case "$targetmkdir" in
2759 */Cross/mkdir)
2760 cat >$targetmkdir <<EOF
2761#!/bin/sh
2762$targetrun -l $targetuser $targethost "mkdir -p \$@"
2763EOF
f8006fac 2764 $chmod a+rx $targetmkdir
93c0359c
JH
2765 ;;
2766 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2767 exit 1
2768 ;;
2769 esac
5440bc8e
JH
2770 case "$targetto" in
2771 scp|rcp)
2772 cat >$to <<EOF
2773#!/bin/sh
2774for f in \$@
2775do
93c0359c
JH
2776 case "\$f" in
2777 /*)
2778 $targetmkdir \`dirname \$f\`
2779 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2780 ;;
2781 *)
2782 $targetmkdir $targetdir/\`dirname \$f\`
2783 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784 ;;
2785 esac
5440bc8e
JH
2786done
2787exit 0
2788EOF
2789 ;;
2790 cp) cat >$to <<EOF
2791#!/bin/sh
93c0359c
JH
2792for f in \$@
2793do
2794 case "\$f" in
2795 /*)
2796 $mkdir -p $targetdir/\`dirname \$f\`
2797 $cp \$f $targetdir/\$f || exit 1
2798 ;;
2799 *)
2800 $targetmkdir $targetdir/\`dirname \$f\`
2801 $cp \$f $targetdir/\$f || exit 1
2802 ;;
2803 esac
2804done
2805exit 0
5440bc8e
JH
2806EOF
2807 ;;
93bc48fa 2808 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2809 exit 1
2810 ;;
2811 esac
2812 case "$targetfrom" in
2813 scp|rcp)
2814 cat >$from <<EOF
2815#!/bin/sh
2816for f in \$@
2817do
93c0359c 2818 $rm -f \$f
5440bc8e
JH
2819 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820done
2821exit 0
2822EOF
2823 ;;
2824 cp) cat >$from <<EOF
2825#!/bin/sh
2826for f in \$@
2827do
93c0359c 2828 $rm -f \$f
5440bc8e
JH
2829 cp $targetdir/\$f . || exit 1
2830done
2831exit 0
2832EOF
2833 ;;
93bc48fa 2834 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2835 exit 1
2836 ;;
2837 esac
93bc48fa
JH
2838 if $test ! -f $run; then
2839 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2840 else
f8006fac 2841 $chmod a+rx $run
5440bc8e 2842 fi
93bc48fa
JH
2843 if $test ! -f $to; then
2844 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2845 else
f8006fac 2846 $chmod a+rx $to
5440bc8e 2847 fi
93bc48fa
JH
2848 if $test ! -f $from; then
2849 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2850 else
f8006fac 2851 $chmod a+rx $from
5440bc8e 2852 fi
93bc48fa 2853 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2854 exit 1
2855 fi
2856 cat >&4 <<EOF
f8006fac
JH
2857Using '$run' for remote execution,
2858and '$from' and '$to'
93bc48fa 2859for remote file transfer.
5440bc8e
JH
2860EOF
2861 ;;
2862*) run=''
2863 to=:
2864 from=:
2865 usecrosscompile='undef'
2866 targetarch=''
2867 ;;
2868esac
2869
ecfc5424
AD
2870: see whether [:lower:] and [:upper:] are supported character classes
2871echo " "
ecfc5424
AD
2872case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873ABYZ)
2874 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875 up='[:upper:]'
2876 low='[:lower:]'
2877 ;;
28e8609d
JH
2878*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2879 # (0xc9 and 0xd1), therefore that is a nice testing point.
2880 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2881 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2882 ij) up='[A-Z]'
2883 low='[a-z]'
2884 ;;
2885 esac
2886 fi
2887 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2888 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2889 ij) up='A-Z'
2890 low='a-z'
2891 ;;
2892 esac
2893 fi
2894 if test "X$up" = X -o "X$low" = X; then
2895 case "`echo IJ | od -x 2>/dev/null`" in
2896 *C9D1*|*c9d1*)
2897 echo "Hey, this might be EBCDIC." >&4
2898 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2899 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2900 ij) up='[A-IJ-RS-Z]'
2901 low='[a-ij-rs-z]'
2902 ;;
2903 esac
2904 fi
2905 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2906 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2907 ij) up='A-IJ-RS-Z'
2908 low='a-ij-rs-z'
2909 ;;
2910 esac
2911 fi
2912 ;;
2913 esac
2914 fi
2915esac
3eaeeeae 2916case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2917ij)
2918 echo "Using $up and $low to convert case." >&4
2919 ;;
ecfc5424 2920*)
28e8609d
JH
2921 echo "I don't know how to translate letters from upper to lower case." >&4
2922 echo "Your tr is not acting any way I know of." >&4
2923 exit 1
2924 ;;
ecfc5424
AD
2925esac
2926: set up the translation script tr, must be called with ./tr of course
2927cat >tr <<EOSC
2928$startsh
2929case "\$1\$2" in
2930'[A-Z][a-z]') exec $tr '$up' '$low';;
2931'[a-z][A-Z]') exec $tr '$low' '$up';;
2932esac
2933exec $tr "\$@"
2934EOSC
2935chmod +x tr
2936$eunicefix tr
2937
2304df62
AD
2938: Try to determine whether config.sh was made on this system
2939case "$config_sh" in
2940'')
43999f95
JH
2941myuname=`$uname -a 2>/dev/null`
2942$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2943# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944# because the A-Z/a-z are not consecutive.
a0d0e21e 2945myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2946 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2947newmyuname="$myuname"
2304df62 2948dflt=n
16d20bd9
AD
2949case "$knowitall" in
2950'')
2951 if test -f ../config.sh; then
2952 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953 eval "`grep myuname= ../config.sh`"
2954 fi
2955 if test "X$myuname" = "X$newmyuname"; then
2956 dflt=y
2957 fi
2304df62 2958 fi
16d20bd9
AD
2959 ;;
2960*) dflt=y;;
2961esac
2304df62
AD
2962
2963: Get old answers from old config file if Configure was run on the
2964: same system, otherwise use the hints.
2965hint=default
2966cd ..
2967if test -f config.sh; then
16d20bd9
AD
2968 echo " "
2969 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2970 . UU/myread
2971 case "$ans" in
f83701cd
AD
2972 n*|N*) echo "OK, I'll ignore it."
2973 mv config.sh config.sh.old
2974 myuname="$newmyuname"
2975 ;;
2304df62 2976 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2977 tmp_n="$n"
2978 tmp_c="$c"
85cad39c 2979 tmp_sh="$sh"
2304df62
AD
2980 . ./config.sh
2981 cp config.sh UU
ecfc5424
AD
2982 n="$tmp_n"
2983 c="$tmp_c"
85cad39c 2984 : Older versions did not always set $sh. Catch re-use of such
2985 : an old config.sh.
2986 case "$sh" in
2987 '') sh="$tmp_sh" ;;
2988 esac
2304df62
AD
2989 hint=previous
2990 ;;
2991 esac
2992fi
2573c5f9 2993. ./UU/checkcc
2304df62
AD
2994if test ! -f config.sh; then
2995 $cat <<EOM
2996
4e2a5f63
AD
2997First time through, eh? I have some defaults handy for some systems
2998that need some extra help getting the Configure answers right:
2304df62
AD
2999
3000EOM
dfe9444c 3001 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
3002 dflt=''
3003 : Half the following guesses are probably wrong... If you have better
7f2de2d2 3004 : tests or hints, please send them to perlbug@perl.org
2304df62 3005 : The metaconfig authors would also appreciate a copy...
a0d0e21e 3006 $test -f /irix && osname=irix
85e6fe83
LW
3007 $test -f /xenix && osname=sco_xenix
3008 $test -f /dynix && osname=dynix
3009 $test -f /dnix && osname=dnix
5f05dabc 3010 $test -f /lynx.os && osname=lynxos
3011 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 3012 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 3013 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 3014 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
3015 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
3017 $test -d /usr/apollo/bin && osname=apollo
3018 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 3019 $test -d /usr/include/minix && osname=minix
d54344fc 3020 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 3021 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 3022 osname=machten
4633a7c4 3023 if $test -x /sbin/version; then
dfe9444c 3024 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
3025 $sed -e 's/[A-Za-z]$//'`
3026 elif $test -x /usr/etc/version; then
dfe9444c 3027 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
3028 $sed -e 's/[A-Za-z]$//'`
3029 else
3030 osvers="$2.$3"
3031 fi
3032 fi
aaacdc8b
GS
3033
3034 $test -f /sys/posix.dll &&
3035 $test -f /usr/bin/what &&
3036 set X `/usr/bin/what /sys/posix.dll` &&
3037 $test "$3" = UWIN &&
3038 osname=uwin &&
3039 osvers="$5"
3040
2304df62
AD
3041 if $test -f $uname; then
3042 set X $myuname
3043 shift
3044
2304df62 3045 case "$5" in
85e6fe83 3046 fps*) osname=fps ;;
2304df62
AD
3047 mips*)
3048 case "$4" in
85e6fe83
LW
3049 umips) osname=umips ;;
3050 *) osname=mips ;;
2304df62 3051 esac;;
85e6fe83
LW
3052 [23]100) osname=mips ;;
3053 next*) osname=next ;;
ecfc5424 3054 i386*)
c6912327
JH
3055 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
3057 osname='sco'
3058 osvers=$tmp
3059 elif $test -f /etc/kconfig; then
ecfc5424 3060 osname=isc
bd628c73 3061 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
3062 osvers=4
3063 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064 osvers=3
2304df62 3065 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 3066 osvers=2
ecfc5424
AD
3067 fi
3068 fi
2000072c 3069 tmp=''
ecfc5424 3070 ;;
c4f23d77
AD
3071 pc*)
3072 if test -n "$DJGPP"; then
3073 osname=dos
3074 osvers=djgpp
3075 fi
3076 ;;
2304df62
AD
3077 esac
3078
3079 case "$1" in
a0d0e21e
LW
3080 aix) osname=aix
3081 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082 case "$tmp" in
1aef975c 3083 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
3084 '<3240'|'<>3240') osvers=3.2.0 ;;
3085 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 3087 *) osvers=$tmp;;
a0d0e21e
LW
3088 esac
3089 ;;
aaacdc8b
GS
3090 bsd386) osname=bsd386
3091 osvers=`$uname -r`
3092 ;;
3093 cygwin*) osname=cygwin
3094 osvers="$3"
3095 ;;
23f87696
SZ
3096 *dc.osx) osname=dcosx
3097 osvers="$3"
3098 ;;
a0d0e21e
LW
3099 dnix) osname=dnix
3100 osvers="$3"
3101 ;;
3102 domainos) osname=apollo
3103 osvers="$3"
3104 ;;
3105 dgux) osname=dgux
3106 osvers="$3"
3107 ;;
760ac839 3108 dynixptx*) osname=dynixptx
e58e581d 3109 osvers=`echo "$4"|sed 's/^v//'`
760ac839 3110 ;;
a0d0e21e
LW
3111 freebsd) osname=freebsd
3112 osvers="$3" ;;
3113 genix) osname=genix ;;
3114 hp*) osname=hpux
bfb7748a 3115 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 3116 ;;
a78b0d02 3117 irix*) osname=irix
a0d0e21e
LW
3118 case "$3" in
3119 4*) osvers=4 ;;
3120 5*) osvers=5 ;;
ecfc5424 3121 *) osvers="$3" ;;
a0d0e21e
LW
3122 esac
3123 ;;
3124 linux) osname=linux
3125 case "$3" in
a0d0e21e
LW
3126 *) osvers="$3" ;;
3127 esac
3128 ;;
28e8609d
JH
3129 MiNT) osname=mint
3130 ;;
3131 netbsd*) osname=netbsd
ecfc5424
AD
3132 osvers="$3"
3133 ;;
4e81affe
MM
3134 news-os) osvers="$3"
3135 case "$3" in
3136 4*) osname=newsos4 ;;
3137 *) osname=newsos ;;
3138 esac
3139 ;;
aaacdc8b 3140 next*) osname=next ;;
28bb1e2c 3141 nonstop-ux) osname=nonstopux ;;
65dc58a1
TM
3142 openbsd) osname=openbsd
3143 osvers="$3"
3144 ;;
5c728af0
IZ
3145 os2) osname=os2
3146 osvers="$4"
3147 ;;
aaacdc8b
GS
3148 POSIX-BC | posix-bc ) osname=posix-bc
3149 osvers="$3"
a0d0e21e 3150 ;;
ae3afa4e
TH
3151 powerux | power_ux | powermax_os | powermaxos | \
3152 powerunix | power_unix) osname=powerux
3153 osvers="$3"
3154 ;;
aaacdc8b
GS
3155 qnx) osname=qnx
3156 osvers="$4"
3157 ;;
a0d0e21e
LW
3158 solaris) osname=solaris
3159 case "$3" in
3160 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 3161 *) osvers="$3" ;;
a0d0e21e
LW
3162 esac
3163 ;;
85e6fe83
LW
3164 sunos) osname=sunos
3165 case "$3" in
85e6fe83
LW
3166 5*) osname=solaris
3167 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 3168 *) osvers="$3" ;;
2304df62
AD
3169 esac
3170 ;;
a0d0e21e 3171 titanos) osname=titanos
85e6fe83 3172 case "$3" in
a0d0e21e
LW
3173 1*) osvers=1 ;;
3174 2*) osvers=2 ;;
3175 3*) osvers=3 ;;
3176 4*) osvers=4 ;;
ecfc5424 3177 *) osvers="$3" ;;
2304df62
AD
3178 esac
3179 ;;
85e6fe83 3180 ultrix) osname=ultrix
ecfc5424 3181 osvers="$3"
2304df62 3182 ;;
28757baa 3183 osf1|mls+) case "$5" in
fed7345c
AD
3184 alpha)
3185 osname=dec_osf
fdd85a03 3186 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2aa76180
JH
3187 case "$osvers" in
3188 [1-9].[0-9]*) ;;
3189 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3190 esac
ecfc5424
AD
3191 ;;
3192 hp*) osname=hp_osf1 ;;
3193 mips) osname=mips_osf1 ;;
85e6fe83
LW
3194 esac
3195 ;;
0337d152
BG
3196 unixware) osname=svr5
3197 osvers="$4"
3198 ;;
3c728e00 3199 uts) osname=uts
a0d0e21e
LW
3200 osvers="$3"
3201 ;;
3c728e00
JH
3202 vos) osvers="$3"
3203 ;;
85e6fe83 3204 $2) case "$osname" in
2304df62 3205 *isc*) ;;
a0d0e21e 3206 *freebsd*) ;;
5f05dabc 3207 svr*)
a0d0e21e
LW
3208 : svr4.x or possibly later
3209 case "svr$3" in
3210 ${osname}*)
3211 osname=svr$3
3212 osvers=$4
3213 ;;
3214 esac
3215 case "$osname" in
3216 svr4.0)
3217 : Check for ESIX
3218 if test -f /stand/boot ; then
3219 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3220 if test -n "$INITPROG" -a -f "$INITPROG"; then
3221 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3222 if test -n "$isesix"; then
a0d0e21e
LW
3223 osname=esix4
3224 fi
3225 fi
3226 fi
3227 ;;
3228 esac
3229 ;;
2304df62 3230 *) if test -f /etc/systemid; then
a0d0e21e
LW
3231 osname=sco
3232 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3233 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3234 osvers=$1.$2.$3
c4f23d77 3235 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3236 osvers=$1.$2
c4f23d77 3237 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3238 osvers=$1
2304df62 3239 fi
a0d0e21e
LW
3240 else
3241 case "$osname" in
3242 '') : Still unknown. Probably a generic Sys V.
3243 osname="sysv"
3244 osvers="$3"
3245 ;;
3246 esac
2304df62
AD
3247 fi
3248 ;;
3249 esac
3250 ;;
a0d0e21e
LW
3251 *) case "$osname" in
3252 '') : Still unknown. Probably a generic BSD.
3253 osname="$1"
3254 osvers="$3"
3255 ;;
3256 esac
3257 ;;
2304df62
AD
3258 esac
3259 else
dfe9444c
AD
3260 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3261 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3262 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3263 osname=news_os
2304df62 3264 fi
dfe9444c 3265 $rm -f UU/kernel.what
5c728af0 3266 elif test -d c:/. -o -n "$is_os2" ; then
8e07c86e
AD
3267 set X $myuname
3268 osname=os2
3269 osvers="$5"
2304df62
AD
3270 fi
3271 fi
85e6fe83 3272
5440bc8e
JH
3273 case "$targetarch" in
3274 '') ;;
3275 *) hostarch=$osname
3276 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3277 osvers=''
3278 ;;
3279 esac
3280
a0d0e21e
LW
3281 : Now look for a hint file osname_osvers, unless one has been
3282 : specified already.
3283 case "$hintfile" in
3284 ''|' ')
1e127011 3285 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3286 : Also try without trailing minor version numbers.
1e127011
DD
3287 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3288 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3289 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3290 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3291 case "$file" in
3292 '') dflt=none ;;
3293 *) case "$osvers" in
3294 '') dflt=$file
3295 ;;
dfe9444c 3296 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3297 dflt=$file
dfe9444c 3298 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3299 dflt=$xfile
dfe9444c 3300 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3301 dflt=$xxfile
dfe9444c 3302 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3303 dflt=$xxxfile
dfe9444c 3304 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3305 dflt=$xxxxfile
dfe9444c 3306 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3307 dflt="${osname}"
3308 else
3309 dflt=none
3310 fi
3311 ;;
3312 esac
85e6fe83
LW
3313 ;;
3314 esac
4e2a5f63
AD
3315 if $test -f Policy.sh ; then
3316 case "$dflt" in
3317 *Policy*) ;;
3318 none) dflt="Policy" ;;
3319 *) dflt="Policy $dflt" ;;
3320 esac
3321 fi
85e6fe83 3322 ;;
a0d0e21e 3323 *)
ecfc5424 3324 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3325 ;;
2304df62 3326 esac
1aef975c 3327
4e2a5f63
AD
3328 if $test -f Policy.sh ; then
3329 $cat <<EOM
3330
3331There's also a Policy hint file available, which should make the
3332site-specific (policy) questions easier to answer.
3333EOM
3334
3335 fi
3336
2304df62
AD
3337 $cat <<EOM
3338
3339You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3340A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3341is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3342
3343EOM
4e2a5f63 3344
2304df62 3345 rp="Which of these apply, if any?"
dfe9444c 3346 . UU/myread
85e6fe83
LW
3347 tans=$ans
3348 for file in $tans; do
4e2a5f63
AD
3349 if $test X$file = XPolicy -a -f Policy.sh; then
3350 . Policy.sh
3351 $cat Policy.sh >> UU/config.sh
3352 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3353 . $src/hints/$file.sh
3354 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3355 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3356 : nothing
3357 else
85e6fe83
LW
3358 : Give one chance to correct a possible typo.
3359 echo "$file.sh does not exist"
3360 dflt=$file
3361 rp="hint to use instead?"
dfe9444c 3362 . UU/myread
85e6fe83 3363 for file in $ans; do
dfe9444c
AD
3364 if $test -f "$src/hints/$file.sh"; then
3365 . $src/hints/$file.sh
3366 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3367 elif $test X$ans = X -o X$ans = Xnone ; then
3368 : nothing
3369 else
3370 echo "$file.sh does not exist -- ignored."
3371 fi
3372 done
2304df62
AD
3373 fi
3374 done
85e6fe83 3375
2304df62 3376 hint=recommended
85e6fe83 3377 : Remember our hint file for later.
dfe9444c 3378 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3379 hintfile="$file"
85e6fe83 3380 else
a0d0e21e 3381 hintfile=''
85e6fe83 3382 fi
2304df62
AD
3383fi
3384cd UU
3385;;
3386*)
3387 echo " "
3388 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3389 tmp_n="$n"
3390 tmp_c="$c"
2304df62
AD
3391 cd ..
3392 cp $config_sh config.sh 2>/dev/null
a78b0d02 3393 chmod +w config.sh
2304df62
AD
3394 . ./config.sh
3395 cd UU
3396 cp ../config.sh .
ecfc5424
AD
3397 n="$tmp_n"
3398 c="$tmp_c"
2304df62
AD
3399 hint=previous
3400 ;;
3401esac
1aef975c 3402test "$override" && . ./optdef.sh
2304df62
AD
3403
3404: Restore computed paths
3405for file in $loclist $trylist; do
3406 eval $file="\$_$file"
3407done
3408
85e6fe83 3409cat << EOM
a0d0e21e 3410
85e6fe83 3411Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3412The default value is probably right if the name rings a bell. Otherwise,
3413since spelling matters for me, either accept the default or answer "none"
3414to leave it blank.
a0d0e21e 3415
85e6fe83 3416EOM
85e6fe83 3417case "$osname" in
a0d0e21e 3418 ''|' ')
85e6fe83 3419 case "$hintfile" in
a0d0e21e 3420 ''|' '|none) dflt=none ;;
ecfc5424 3421 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3422 esac
3423 ;;
3424 *) dflt="$osname" ;;
3425esac
3426rp="Operating system name?"
3427. ./myread
3428case "$ans" in
ecfc5424
AD
3429none) osname='' ;;
3430*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3431esac
8ff267be 3432echo " "
3433case "$osvers" in
3434 ''|' ')
3435 case "$hintfile" in
3436 ''|' '|none) dflt=none ;;
3437 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3438 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3439 case "$dflt" in
3440 ''|' ') dflt=none ;;
3441 esac
3442 ;;
3443 esac
3444 ;;
3445 *) dflt="$osvers" ;;
3446esac
3447rp="Operating system version?"
3448. ./myread
3449case "$ans" in
3450none) osvers='' ;;
3451*) osvers="$ans" ;;
3452esac
3453
02e93a22
JH
3454
3455. ./posthint.sh
3456
2304df62 3457: who configured the system
59b83a6f 3458cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3459cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3460case "$cf_by" in
3461"")
8ff267be 3462 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3463 case "$cf_by" in
3464 "") cf_by=unknown ;;
8ff267be 3465 esac ;;
3466esac
2304df62 3467
b4eb6b3d
JH
3468: set up the script used to warn in case of inconsistency
3469cat <<EOS >whoa
3470$startsh
3471EOS
3472cat <<'EOSC' >>whoa
3473dflt=y
3474echo " "
3475echo "*** WHOA THERE!!! ***" >&4
3476echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3477rp=" Keep the $hint value?"
3478. ./myread
3479case "$ans" in
3480y) td=$was; tu=$was;;
3481esac
3482EOSC
3483
3484: function used to set $1 to $val
3485setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3486case "$val$was" in
3487$define$undef) . ./whoa; eval "$var=\$td";;
3488$undef$define) . ./whoa; eval "$var=\$tu";;
3489*) eval "$var=$val";;
3490esac'
3491
b29b105d
JH
3492case "$usesocks" in
3493$define|true|[yY]*) dflt='y';;
3494*) dflt='n';;
3495esac
3496cat <<EOM
3497
3498Perl can be built to use the SOCKS proxy protocol library. To do so,
3499Configure must be run with -Dusesocks. If you use SOCKS you also need
3500to use the PerlIO abstraction layer, this will be implicitly selected.
3501
3502If this doesn't make any sense to you, just accept the default '$dflt'.
3503EOM
3504rp='Build Perl for SOCKS?'
3505. ./myread
3506case "$ans" in
3507y|Y) val="$define" ;;
3508*) val="$undef" ;;
3509esac
3510set usesocks
3511eval $setvar
3512
3513case "$usesocks" in
3514$define|true|[yY]*) useperlio="$define";;
3515esac
3516
3517case "$useperlio" in
3518$define|true|[yY]*|'') dflt='y';;
3519*) dflt='n';;
3520esac
3521cat <<EOM
3522
3523Previous version of $package used the standard IO mechanisms as
3524defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3525alternate IO mechanisms via the PerlIO abstraction layer, but the
3526stdio mechanism is still available if needed. The abstraction layer
3527can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3528Using PerlIO with sfio may cause problems with some extension modules.
3529
3530If this doesn't make any sense to you, just accept the default '$dflt'.
3531EOM
3532rp='Use the PerlIO abstraction layer?'
3533. ./myread
3534case "$ans" in
3535y|Y)
3536 val="$define"
3537 ;;
3538*)
3539 echo "Ok, doing things the stdio way."
3540 val="$undef"
3541 ;;
3542esac
3543set useperlio
3544eval $setvar
3545
3546case "$usesocks" in
3547$define|true|[yY]*)
3548 case "$useperlio" in
3549 $define|true|[yY]*) ;;
3550 *) cat >&4 <<EOM
3551
3552You are using the SOCKS proxy protocol library which means that you
3553should also use the PerlIO layer. You may be headed for trouble.
3554
3555EOM
3556 ;;
3557 esac
3558 ;;
3559esac
3560
3561
b4eb6b3d
JH
3562case "$usethreads" in
3563$define|true|[yY]*) dflt='y';;
8e285145
AD
3564*) # Catch case where user specified ithreads or 5005threads but
3565 # forgot -Dusethreads (A.D. 4/2002)
3566 case "$useithreads$use5005threads" in
b29b105d
JH
3567 *$define*)
3568 case "$useperlio" in
3569 "$define") dflt='y' ;;
3570 *) dflt='n' ;;
3571 esac
3572 ;;
3573 *) dflt='n';;
8e285145
AD
3574 esac
3575 ;;
b4eb6b3d
JH
3576esac
3577cat <<EOM
3578
3579Perl can be built to take advantage of threads on some systems.
3580To do so, Configure can be run with -Dusethreads.
3581
bfce6503
DM
3582Note that Perl built with threading support runs slightly slower
3583and uses more memory than plain Perl. The current implementation
3584is believed to be stable, but it is fairly new, and so should be
3585treated with caution.
b4eb6b3d
JH
3586
3587If this doesn't make any sense to you, just accept the default '$dflt'.
3588EOM
3589rp='Build a threading Perl?'
3590. ./myread
3591case "$ans" in
3592y|Y) val="$define" ;;
3593*) val="$undef" ;;
3594esac
3595set usethreads
3596eval $setvar
3597
3598case "$usethreads" in
3599$define)
3600 $cat <<EOM
3601
bfce6503
DM
3602Since release 5.6, Perl has had two different threading implementations,
3603the newer interpreter-based version (ithreads) with one interpreter per
3604thread, and the older 5.005 version (5005threads).
3605The 5005threads version is effectively unmaintained and will probably be
3606removed in Perl 5.10, so there should be no need to build a Perl using it
3607unless needed for backwards compatibility with some existing 5.005threads
3608code.
b4eb6b3d 3609
b4eb6b3d
JH
3610EOM
3611 : Default to ithreads unless overridden on command line or with
3612 : old config.sh
3613 dflt='y'
3614 case "$use5005threads" in
3615 $define|true|[yY]*) dflt='n';;
3616 esac
3617 case "$useithreads" in
3618 $undef|false|[nN]*) dflt='n';;
3619 esac
bfce6503 3620 rp='Use the newer interpreter-based ithreads?'
b4eb6b3d
JH
3621 . ./myread
3622 case "$ans" in
3623 y|Y) val="$define" ;;
3624 *) val="$undef" ;;
3625 esac
3626 set useithreads
3627 eval $setvar
3628 : Now set use5005threads to the opposite value.
3629 case "$useithreads" in
3630 $define) val="$undef" ;;
3631 *) val="$define" ;;
3632 esac
3633 set use5005threads
3634 eval $setvar
3635 ;;
3636*)
3637 useithreads="$undef"
3638 use5005threads="$undef"
3639 ;;
3640esac
3641
c915ce7f
JH
3642case "$useithreads$use5005threads" in
3643"$define$define")
3644 $cat >&4 <<EOM
3645
3646You cannot have both the ithreads and the 5.005 threads enabled
3647at the same time. Disabling the 5.005 threads since they are
3648much less stable than the ithreads.
3649
3650EOM
3651 use5005threads="$undef"
3652 ;;
3653esac
3654
b29b105d
JH
3655if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3656 cat >&4 <<EOF
3657***
3658*** To build with ithreads you must also use the PerlIO layer.
3659*** Cannot continue, aborting.
3660***
3661EOF
3662 exit 1
3663fi
3664
b4eb6b3d
JH
3665case "$d_oldpthreads" in
3666'') : Configure tests would be welcome here. For now, assume undef.
3667 val="$undef" ;;
3668*) val="$d_oldpthreads" ;;
3669esac
3670set d_oldpthreads
3671eval $setvar
3672
3673
3674case "$usethreads" in
3675"$define"|true|[yY]*)
3676: Look for a hint-file generated 'call-back-unit'. If the
3677: user has specified that a threading perl is to be built,
3678: we may need to set or change some other defaults.
3679 if $test -f usethreads.cbu; then
3680 echo "Your platform has some specific hints for threaded builds, using them..."
3681 . ./usethreads.cbu
3682 else
3683 $cat <<EOM
3684(Your platform doesn't have any specific hints for threaded builds.
3685 Assuming POSIX threads, then.)
3686EOM
3687 fi
3688 ;;
3689esac
3690
3691cat <<EOM
3692
3693Perl can be built so that multiple Perl interpreters can coexist
3694within the same Perl executable.
3695EOM
3696
3697case "$useithreads" in
3698$define)
3699 cat <<EOM
3700This multiple interpreter support is required for interpreter-based threads.
3701EOM
3702 val="$define"
3703 ;;
3704*) case "$usemultiplicity" in
3705 $define|true|[yY]*) dflt='y';;
3706 *) dflt='n';;
3707 esac
3708 echo " "
3709 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3710 rp='Build Perl for multiplicity?'
3711 . ./myread
3712 case "$ans" in
3713 y|Y) val="$define" ;;
3714 *) val="$undef" ;;
3715 esac
3716 ;;
3717esac
3718set usemultiplicity
3719eval $setvar
3720
96056487
JH
3721
3722case "$usemorebits" in
3723"$define"|true|[yY]*)
3724 use64bitint="$define"
3725 uselongdouble="$define"
3726 usemorebits="$define"
3727 ;;
3728*) usemorebits="$undef"
3729 ;;
3730esac
3731
e5e20432
JH
3732: make some quick guesses about what we are up against
3733echo " "
3734$echo $n "Hmm... $c"
3735echo exit 1 >bsd
3736echo exit 1 >usg
3737echo exit 1 >v7
3738echo exit 1 >osf1
3739echo exit 1 >eunice
3740echo exit 1 >xenix
3741echo exit 1 >venix
3742echo exit 1 >os2
3743d_bsd="$undef"
3744$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3745if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3746then
3747 echo "Looks kind of like an OSF/1 system, but we'll see..."
3748 echo exit 0 >osf1
381aa1ff 3749elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3750 xxx=`./loc addbib blurfl $pth`
3751 if $test -f $xxx; then
3752 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3753 echo exit 0 >bsd
3754 echo exit 0 >usg
3755 else
3756 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3757 echo "Looks kind of like an extended USG system, but we'll see..."
3758 else
3759 echo "Looks kind of like a USG system, but we'll see..."
3760 fi
3761 echo exit 0 >usg
3762 fi
3763elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3764 echo "Looks kind of like a BSD system, but we'll see..."
3765 d_bsd="$define"
3766 echo exit 0 >bsd
3767else
3768 echo "Looks kind of like a Version 7 system, but we'll see..."
3769 echo exit 0 >v7
3770fi
3771case "$eunicefix" in
3772*unixtovms*)
3773 $cat <<'EOI'
3774There is, however, a strange, musty smell in the air that reminds me of
3775something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3776EOI
3777 echo exit 0 >eunice
3778 d_eunice="$define"
3779: it so happens the Eunice I know will not run shell scripts in Unix format
3780 ;;
3781*)
3782 echo " "
3783 echo "Congratulations. You aren't running Eunice."
3784 d_eunice="$undef"
3785 ;;
3786esac
3787: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3788: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3789: semicolon as a patch separator
e5e20432
JH
3790case "$p_" in
3791:) ;;
3792*)
3793 $cat <<'EOI'
3794I have the feeling something is not exactly right, however...don't tell me...
3795lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3796(Or you may be running DOS with DJGPP.)
e5e20432
JH
3797EOI
3798 echo exit 0 >os2
3799 ;;
3800esac
3801if test -f /xenix; then
3802 echo "Actually, this looks more like a XENIX system..."
3803 echo exit 0 >xenix
3804 d_xenix="$define"
3805else
3806 echo " "
3807 echo "It's not Xenix..."
3808 d_xenix="$undef"
3809fi
3810chmod +x xenix
3811$eunicefix xenix
3812if test -f /venix; then
3813 echo "Actually, this looks more like a VENIX system..."
3814 echo exit 0 >venix
3815else
3816 echo " "
3817 if ./xenix; then
3818 : null
3819 else
3820 echo "Nor is it Venix..."
3821 fi
3822fi
3823chmod +x bsd usg v7 osf1 eunice xenix venix os2
3824$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3825$rm -f foo
3826
5869b1f1
JH
3827case "$cc" in
3828'') dflt=cc;;
3829*) dflt="$cc";;
3830esac
3831rp="Use which C compiler?"
3832. ./myread
3833cc="$ans"
6b769f8f
RB
3834
3835: See if they have not cc but they do have gcc
3836. ./trygcc
e5e20432
JH
3837: Look for a hint-file generated 'call-back-unit'. Now that the
3838: user has specified the compiler, we may need to set or change some
3839: other defaults.
3840if $test -f cc.cbu; then
3841 . ./cc.cbu
3842fi
2573c5f9 3843. ./checkcc
8a27cf78 3844
e5e20432
JH
3845echo " "
3846echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3847$cat >try.c <<EOM
e5e20432
JH
3848#include <stdio.h>
3849int main() {
3850#ifdef __GNUC__
3851#ifdef __VERSION__
3852 printf("%s\n", __VERSION__);
3853#else
3854 printf("%s\n", "1");
3855#endif
3856#endif
073b6de5 3857 return(0);
e5e20432
JH
3858}
3859EOM
5440bc8e
JH
3860if $cc -o try $ccflags $ldflags try.c; then
3861 gccversion=`$run ./try`
e5e20432
JH
3862 case "$gccversion" in
3863 '') echo "You are not using GNU cc." ;;
fc68435e 3864 *) echo "You are using GNU cc $gccversion."
48fe685d 3865 ccname=gcc
fc68435e 3866 ;;
e5e20432
JH
3867 esac
3868else
3869 echo " "
3870 echo "*** WHOA THERE!!! ***" >&4
3871 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3872 case "$knowitall" in
3873 '')
3874 echo " You'd better start hunting for one and let me know about it." >&4
3875 exit 1
3876 ;;
3877 esac
3878fi
5440bc8e 3879$rm -f try try.*
e5e20432
JH
3880case "$gccversion" in
38811*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3882esac
5b463ca7
KS
3883case "$gccversion" in
3884'') gccosandvers='' ;;
10b4ebb5
JH
3885*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3886 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3887 gccshortvers=''
5b463ca7 3888 case "$gccosandvers" in
02903077
JH
3889 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3890 $osname$osvers) ;; # looking good
5b463ca7
KS
3891 $osname*) cat <<EOM >&4
3892
3893*** WHOA THERE!!! ***
3894
3895 Your gcc has not been compiled for the exact release of
3896 your operating system ($gccosandvers versus $osname$osvers).
3897
3898 In general it is a good idea to keep gcc synchronized with
3899 the operating system because otherwise serious problems
3900 may ensue when trying to compile software, like Perl.
3901
3902 I'm trying to be optimistic here, though, and will continue.
3903 If later during the configuration and build icky compilation
02903077
JH
3904 problems appear (headerfile conflicts being the most common
3905 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3906 your operating system release.
3907
3908EOM
3909 ;;
81575342 3910 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3911 esac
3912 ;;
3913esac
e723fc21
JH
3914case "$ccname" in
3915'') ccname="$cc" ;;
3916esac
e5e20432 3917
224cb7cb 3918# gcc 3.* complain about adding -Idirectories that they already know about,
76589481
JH
3919# so we will take those off from locincpth.
3920case "$gccversion" in
39213*)
3922 echo "main(){}">try.c
224cb7cb
JH
3923 for incdir in $locincpth; do
3924 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
48fe685d 3925 grep '^c[cp]p*[01]: warning: changing search order '`
224cb7cb 3926 if test "X$warn" != X; then
44b94491 3927 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
224cb7cb 3928 fi
76589481
JH
3929 done
3930 $rm -f try try.*
3931esac
640374d0 3932
bd9b35c9
JH
3933: decide how portable to be. Allow command line overrides.
3934case "$d_portable" in
3935"$undef") ;;
3936*) d_portable="$define" ;;
104d25b7 3937esac
85ab1d1d 3938
bd9b35c9
JH
3939: set up shell script to do ~ expansion
3940cat >filexp <<EOSS
3941$startsh
3942: expand filename
3943case "\$1" in
3944 ~/*|~)
3945 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3946 ;;
3947 ~*)
3948 if $test -f /bin/csh; then
3949 /bin/csh -f -c "glob \$1"
3950 failed=\$?
3951 echo ""
3952 exit \$failed
e5e20432 3953 else
bd9b35c9
JH
3954 name=\`$expr x\$1 : '..\([^/]*\)'\`
3955 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3956 if $test ! -d "\$dir"; then
3957 me=\`basename \$0\`
3958 echo "\$me: can't locate home directory for: \$name" >&2
3959 exit 1
3960 fi
3961 case "\$1" in
3962 */*)
3963 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3964 ;;
3965 *)
3966 echo \$dir
e5e20432
JH
3967 ;;
3968 esac
3969 fi
b691c02f 3970 ;;
4633a7c4 3971*)
bd9b35c9 3972 echo \$1
2304df62
AD
3973 ;;
3974esac
4633a7c4
LW
3975EOSS
3976chmod +x filexp
3977$eunicefix filexp
2304df62
AD
3978
3979: now set up to get a file name
28757baa 3980cat <<EOS >getfile
3981$startsh
3982EOS
3983cat <<'EOSC' >>getfile
2304df62
AD
3984tilde=''
3985fullpath=''
3986already=''
3987skip=''
3988none_ok=''
3989exp_file=''
a0d0e21e 3990nopath_ok=''
2304df62
AD
3991orig_rp="$rp"
3992orig_dflt="$dflt"
b233458b
JH
3993case "$gfpth" in
3994'') gfpth='.' ;;
3995esac
2304df62
AD
3996
3997case "$fn" in
ecfc5424 3998*\(*)
d604bb53
JH
3999 : getfile will accept an answer from the comma-separated list
4000 : enclosed in parentheses even if it does not meet other criteria.
4001 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
4002 fn=`echo $fn | sed 's/(.*)//'`
4003 ;;
4004esac
4005
4006case "$fn" in
a0d0e21e
LW
4007*:*)
4008 loc_file=`expr $fn : '.*:\(.*\)'`
4009 fn=`expr $fn : '\(.*\):.*'`
4010 ;;
4011esac
4012
4013case "$fn" in
2304df62
AD
4014*~*) tilde=true;;
4015esac
4016case "$fn" in
4017*/*) fullpath=true;;
4018esac
4019case "$fn" in
4020*+*) skip=true;;
4021esac
4022case "$fn" in
4023*n*) none_ok=true;;
4024esac
4025case "$fn" in
4026*e*) exp_file=true;;
4027esac
a0d0e21e
LW
4028case "$fn" in
4029*p*) nopath_ok=true;;
4030esac
2304df62
AD
4031
4032case "$fn" in
4033*f*) type='File';;
4034*d*) type='Directory';;
a0d0e21e 4035*l*) type='Locate';;
2304df62
AD
4036esac
4037
4038what="$type"
4039case "$what" in
4040Locate) what='File';;
4041esac
4042
4043case "$exp_file" in
4044'')
4045 case "$d_portable" in
4046 "$define") ;;
4047 *) exp_file=true;;
4048 esac
4049 ;;
4050esac
4051
4052cd ..
4053while test "$type"; do
4054 redo=''
4055 rp="$orig_rp"
4056 dflt="$orig_dflt"
4057 case "$tilde" in
4058 true) rp="$rp (~name ok)";;
4059 esac
4060 . UU/myread
ecfc5424
AD
4061 if test -f UU/getfile.ok && \
4062 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4063 then
4064 value="$ans"
4065 ansexp="$ans"
4066 break
4067 fi
2304df62
AD
4068 case "$ans" in
4069 none)
4070 value=''
4071 ansexp=''
4072 case "$none_ok" in
4073 true) type='';;
4074 esac
4075 ;;
4076 *)
4077 case "$tilde" in
4078 '') value="$ans"
4079 ansexp="$ans";;
4080 *)
4081 value=`UU/filexp $ans`
4082 case $? in
4083 0)
4084 if test "$ans" != "$value"; then
ecfc5424 4085 echo "(That expands to $value on this system.)"
2304df62
AD
4086 fi
4087 ;;
4088 *) value="$ans";;
4089 esac
4090 ansexp="$value"
4091 case "$exp_file" in
4092 '') value="$ans";;
4093 esac
4094 ;;
4095 esac
4096 case "$fullpath" in
4097 true)
4098 case "$ansexp" in
4099 /*) value="$ansexp" ;;
23da6c43 4100 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
4101 *)
4102 redo=true
4103 case "$already" in
4104 true)
4105 echo "I shall only accept a full path name, as in /bin/ls." >&4
4106 echo "Use a ! shell escape if you wish to check pathnames." >&4
4107 ;;
4108 *)
4109 echo "Please give a full path name, starting with slash." >&4
4110 case "$tilde" in
4111 true)
4112 echo "Note that using ~name is ok provided it expands well." >&4
4113 already=true
4114 ;;
4115 esac
4116 esac
4117 ;;
4118 esac
4119 ;;
4120 esac
4121 case "$redo" in
4122 '')
4123 case "$type" in
4124 File)
b233458b
JH
4125 for fp in $gfpth; do
4126 if test "X$fp" = X.; then
4127 pf="$ansexp"
4128 else
4129 pf="$fp/$ansexp"
4130 fi
4131 if test -f "$pf"; then
4132 type=''
4133 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4134 then
4135 echo "($value is not a plain file, but that's ok.)"
4136 type=''
4137 fi
4138 if test X"$type" = X; then
4139 value="$pf"
4140 break
4141 fi
4142 done
2304df62
AD
4143 ;;
4144 Directory)
b233458b
JH
4145 for fp in $gfpth; do
4146 if test "X$fp" = X.; then
f78bfc9c
JH
4147 dir="$ans"
4148 direxp="$ansexp"
b233458b 4149 else
dd858076 4150 dir="$fp/$ansexp"
f78bfc9c 4151 direxp="$fp/$ansexp"
b233458b 4152 fi
f78bfc9c 4153 if test -d "$direxp"; then
b233458b 4154 type=''
f78bfc9c 4155 value="$dir"
b233458b
JH
4156 break
4157 fi
4158 done
2304df62
AD
4159 ;;
4160 Locate)
40000a8c 4161 if test -d "$ansexp"; then
a0d0e21e
LW
4162 echo "(Looking for $loc_file in directory $value.)"
4163 value="$value/$loc_file"
40000a8c 4164 ansexp="$ansexp/$loc_file"
2304df62 4165 fi
40000a8c 4166 if test -f "$ansexp"; then
2304df62
AD
4167 type=''
4168 fi
a0d0e21e
LW
4169 case "$nopath_ok" in
4170 true) case "$value" in
4171 */*) ;;
4172 *) echo "Assuming $value will be in people's path."
4173 type=''
4174 ;;
4175 esac
4176 ;;
4177 esac
2304df62
AD
4178 ;;
4179 esac
4180
4181 case "$skip" in
4182 true) type='';
4183 esac
4184
4185 case "$type" in
4186 '') ;;
4187 *)
4188 if test "$fastread" = yes; then
4189 dflt=y
4190 else
4191 dflt=n
4192 fi
4193 rp="$what $value doesn't exist. Use that name anyway?"
4194 . UU/myread
4195 dflt=''
4196 case "$ans" in
4197 y*) type='';;
4198 *) echo " ";;
4199 esac
4200 ;;
4201 esac
4202 ;;
4203 esac
4204 ;;
4205 esac
4206done
4207cd UU
4208ans="$value"
4209rp="$orig_rp"
4210dflt="$orig_dflt"
ecfc5424 4211rm -f getfile.ok
b233458b 4212test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
4213EOSC
4214
bd9b35c9
JH
4215: What should the include directory be ?
4216echo " "
4217$echo $n "Hmm... $c"
4218dflt='/usr/include'
4219incpath=''
4220mips_type=''
4221if $test -f /bin/mips && /bin/mips; then
4222 echo "Looks like a MIPS system..."
4223 $cat >usr.c <<'EOCP'
4224#ifdef SYSTYPE_BSD43
4225/bsd43
4226#endif
4227EOCP
8a27cf78 4228 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
4229 dflt='/bsd43/usr/include'
4230 incpath='/bsd43'
4231 mips_type='BSD 4.3'
4232 else
4233 mips_type='System V'
4234 fi
4235 $rm -f usr.c usr.out
4236 echo "and you're compiling with the $mips_type compiler and libraries."
4237 xxx_prompt=y
4238 echo "exit 0" >mips
4239else
4240 echo "Doesn't look like a MIPS system."
4241 xxx_prompt=n
4242 echo "exit 1" >mips
4243fi
4244chmod +x mips
4245$eunicefix mips
4246case "$usrinc" in
4247'') ;;
4248*) dflt="$usrinc";;
4249esac
4250case "$xxx_prompt" in
4251y) fn=d/
4252 echo " "
4253 rp='Where are the include files you want to use?'
4254 . ./getfile
4255 usrinc="$ans"
8e07c86e 4256 ;;
bd9b35c9 4257*) usrinc="$dflt"
8e07c86e
AD
4258 ;;
4259esac
2304df62 4260
96056487
JH
4261: see how we invoke the C preprocessor
4262echo " "
4263echo "Now, how can we feed standard input to your C preprocessor..." >&4
4264cat <<'EOT' >testcpp.c
4265#define ABC abc
4266#define XYZ xyz
4267ABC.XYZ
4268EOT
4269cd ..
4270if test ! -f cppstdin; then
4271 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4272 # AIX cc -E doesn't show the absolute headerfile
4273 # locations but we'll cheat by using the -M flag.
4274 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
4275 else
4276 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4277 fi
4278else
4279 echo "Keeping your $hint cppstdin wrapper."
4280fi
4281chmod 755 cppstdin
4282wrapper=`pwd`/cppstdin
4283ok='false'
4284cd UU
4285
4286if $test "X$cppstdin" != "X" && \
4287 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4288 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4289then
4290 echo "You used to use $cppstdin $cppminus so we'll use that again."
4291 case "$cpprun" in
4292 '') echo "But let's see if we can live without a wrapper..." ;;
4293 *)
4294 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4295 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296 then
4297 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4298 ok='true'
4299 else
4300 echo "(However, $cpprun $cpplast does not work, let's see...)"
4301 fi
4302 ;;
4303 esac
4304else
4305 case "$cppstdin" in
4306 '') ;;
4307 *)
4308 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4309 ;;
4310 esac
4311fi
4312
4313if $ok; then
4314 : nothing
4315elif echo 'Maybe "'"$cc"' -E" will work...'; \
4316 $cc -E <testcpp.c >testcpp.out 2>&1; \
4317 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4318 echo "Yup, it does."
4319 x_cpp="$cc -E"
4320 x_minus='';
4321elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4322 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4323 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324 echo "Yup, it does."
4325 x_cpp="$cc -E"
4326 x_minus='-';
4327elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4328 $cc -P <testcpp.c >testcpp.out 2>&1; \
4329 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330 echo "Yipee, that works!"
4331 x_cpp="$cc -P"
4332 x_minus='';
4333elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4334 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4335 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336 echo "At long last!"
4337 x_cpp="$cc -P"
4338 x_minus='-';
4339elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4340 $cpp <testcpp.c >testcpp.out 2>&1; \
4341 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342 echo "It works!"
4343 x_cpp="$cpp"
4344 x_minus='';
4345elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4346 $cpp - <testcpp.c >testcpp.out 2>&1; \
4347 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348 echo "Hooray, it works! I was beginning to wonder."
4349 x_cpp="$cpp"
4350 x_minus='-';
4351elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4352 $wrapper <testcpp.c >testcpp.out 2>&1; \
4353 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354 x_cpp="$wrapper"
4355 x_minus=''
4356 echo "Eureka!"
4357else
4358 dflt=''
4359 rp="No dice. I can't find a C preprocessor. Name one:"
4360 . ./myread
4361 x_cpp="$ans"
4362 x_minus=''
4363 $x_cpp <testcpp.c >testcpp.out 2>&1
4364 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4365 echo "OK, that will do." >&4
4366 else
4367echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4368 exit 1
4369 fi
4370fi
4371
4372case "$ok" in
4373false)
4374 cppstdin="$x_cpp"
4375 cppminus="$x_minus"
4376 cpprun="$x_cpp"
4377 cpplast="$x_minus"
4378 set X $x_cpp
4379 shift
4380 case "$1" in
4381 "$cpp")
4382 echo "Perhaps can we force $cc -E using a wrapper..."
4383 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4384 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4385 then
4386 echo "Yup, we can."
4387 cppstdin="$wrapper"
4388 cppminus='';
4389 else
4390 echo "Nope, we'll have to live without it..."
4391 fi
4392 ;;
4393 esac
4394 case "$cpprun" in
4395 "$wrapper")
4396 cpprun=''
4397 cpplast=''
4398 ;;
4399 esac
4400 ;;
4401esac
4402
4403case "$cppstdin" in
4404"$wrapper"|'cppstdin') ;;
4405*) $rm -f $wrapper;;
4406esac
4407$rm -f testcpp.c testcpp.out
4408
bd9b35c9
JH
4409: Set private lib path
4410case "$plibpth" in
4411'') if ./mips; then
4412 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4413 fi;;
4414esac
4415case "$libpth" in
4416' ') dlist='';;
4417'') dlist="$loclibpth $plibpth $glibpth";;
4418*) dlist="$libpth";;
4419esac
4420
4421: Now check and see which directories actually exist, avoiding duplicates
4422libpth=''
4423for xxx in $dlist
4424do
4425 if $test -d $xxx; then
4426 case " $libpth " in
4427 *" $xxx "*) ;;
4428 *) libpth="$libpth $xxx";;
4429 esac
4430 fi
4431done
4432$cat <<'EOM'
4433
4434Some systems have incompatible or broken versions of libraries. Among
4435the directories listed in the question below, please remove any you
4436know not to be holding relevant libraries, and add any that are needed.
4437Say "none" for none.
8e07c86e
AD
4438
4439EOM
bd9b35c9
JH
4440case "$libpth" in
4441'') dflt='none';;
8e07c86e 4442*)
bd9b35c9
JH
4443 set X $libpth
4444 shift
4445 dflt=${1+"$@"}
8e07c86e 4446 ;;
a0d0e21e 4447esac
bd9b35c9
JH
4448rp="Directories to use for library searches?"
4449. ./myread
4450case "$ans" in
4451none) libpth=' ';;
4452*) libpth="$ans";;
4453esac
a0d0e21e 4454
bd9b35c9
JH
4455: compute shared library extension
4456case "$so" in
4457'')
4458 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4459 dflt='sl'
dd4e71fd 4460 else
bd9b35c9 4461 dflt='so'
dd4e71fd
JH
4462 fi
4463 ;;
bd9b35c9 4464*) dflt="$so";;
dd4e71fd 4465esac
dd4e71fd
JH
4466$cat <<EOM
4467
bd9b35c9 4468On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4469you want to suppress searching of shared libraries for the remainder
bd9b35c9 4470of this configuration.
dd4e71fd
JH
4471
4472EOM
bd9b35c9
JH
4473rp='What is the file extension used for shared libraries?'
4474. ./myread
4475so="$ans"
dd4e71fd 4476
bd9b35c9
JH
4477: Define several unixisms.
4478: Hints files or command line option can be used to override them.
4479: The convoluted testing is in case hints files set either the old
4480: or the new name.
4481case "$_exe" in
4482'') case "$exe_ext" in
1fef16b3 4483 '') ;;
bd9b35c9 4484 *) _exe="$exe_ext" ;;
dd4e71fd 4485 esac
bd9b35c9 4486 ;;
bfb7748a 4487esac
bd9b35c9
JH
4488case "$_a" in
4489'') case "$lib_ext" in
4490 '') _a='.a';;
4491 *) _a="$lib_ext" ;;
dd4e71fd
JH
4492 esac
4493 ;;
dd4e71fd 4494esac
bd9b35c9
JH
4495case "$_o" in
4496'') case "$obj_ext" in
4497 '') _o='.o';;
4498 *) _o="$obj_ext";;
4499 esac
4500 ;;
4501esac
4502case "$p_" in
4503'') case "$path_sep" in
4504 '') p_=':';;
4505 *) p_="$path_sep";;
4506 esac
4507 ;;
4508esac
4509exe_ext=$_exe
4510lib_ext=$_a
4511obj_ext=$_o
4512path_sep=$p_
dd4e71fd 4513
b4eb6b3d
JH
4514: Which makefile gets called first. This is used by make depend.
4515case "$firstmakefile" in
4516'') firstmakefile='makefile';;
4633a7c4 4517esac
4633a7c4 4518
1f603089
JH
4519case "$ccflags" in
4520*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4521esac
4522
4523case "$uselongdouble" in
4524$define|true|[yY]*) dflt='y';;
4525*) dflt='n';;
4526esac
4527cat <<EOM
4528
4529Perl can be built to take advantage of long doubles which
4530(if available) may give more accuracy and range for floating point numbers.
4531
4532If this doesn't make any sense to you, just accept the default '$dflt'.
4533EOM
4534rp='Try to use long doubles if available?'
4535. ./myread
4536case "$ans" in
4537y|Y) val="$define" ;;
4538*) val="$undef" ;;
4539esac
4540set uselongdouble
4541eval $setvar
4542
4543case "$uselongdouble" in
4544true|[yY]*) uselongdouble="$define" ;;
4545esac
4546
4547case "$uselongdouble" in
4548$define)
4549: Look for a hint-file generated 'call-back-unit'. If the
4550: user has specified that long doubles should be used,
4551: we may need to set or change some other defaults.
4552 if $test -f uselongdouble.cbu; then
4553 echo "Your platform has some specific hints for long doubles, using them..."
4554 . ./uselongdouble.cbu
4555 else
4556 $cat <<EOM
4557(Your platform doesn't have any specific hints for long doubles.)
4558EOM
4559 fi
4560 ;;
4561esac
4562
bd9b35c9
JH
4563: Looking for optional libraries
4564echo " "
4565echo "Checking for optional libraries..." >&4
4566case "$libs" in
4567' '|'') dflt='';;
4568*) dflt="$libs";;
4569esac
4570case "$libswanted" in
4571'') libswanted='c_s';;
4572esac
4573case "$usesocks" in
923fc586 4574"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4575esac
68435ea7
JH
4576libsfound=''
4577libsfiles=''
4578libsdirs=''
13b3f787
JH
4579libspath=''
4580for thisdir in $libpth $xlibpth; do
4581 test -d $thisdir && libspath="$libspath $thisdir"
4582done
bd9b35c9 4583for thislib in $libswanted; do
13b3f787 4584 for thisdir in $libspath; do
f7dd4e7f
JH
4585 xxx=''
4586 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
eade9b71 4587 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
f7dd4e7f
JH
4588 $test -f "$xxx" && eval $libscheck
4589 $test -f "$xxx" && libstyle=shared
4590 fi
4591 if test ! -f "$xxx"; then
4592 xxx=$thisdir/lib$thislib.$so
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$_a
4598 $test -f "$xxx" && eval $libscheck
4599 $test -f "$xxx" && libstyle=static
4600 fi
4601 if test ! -f "$xxx"; then
4602 xxx=$thisdir/$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/lib${thislib}_s$_a
4608 $test -f "$xxx" && eval $libscheck
4609 $test -f "$xxx" && libstyle=static
09ea5ba9 4610 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4611 fi
4612 if test ! -f "$xxx"; then
4613 xxx=$thisdir/Slib$thislib$_a
4614 $test -f "$xxx" && eval $libscheck
4615 $test -f "$xxx" && libstyle=static
4616 fi
4617 if $test -f "$xxx"; then
43999f95 4618 case "$libstyle" in
f7dd4e7f
JH
4619 shared) echo "Found -l$thislib (shared)." ;;
4620 static) echo "Found -l$thislib." ;;
4621 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4622 esac
bd9b35c9
JH
4623 case " $dflt " in
4624 *"-l$thislib "*);;
f7dd4e7f 4625 *) dflt="$dflt -l$thislib"
43999f95
JH
4626 libsfound="$libsfound $xxx"
4627 yyy=`basename $xxx`
4628 libsfiles="$libsfiles $yyy"
1e127011 4629 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4630 case " $libsdirs " in
4631 *" $yyy "*) ;;
4632 *) libsdirs="$libsdirs $yyy" ;;
4633 esac
4634 ;;
bd9b35c9 4635 esac
f7dd4e7f
JH
4636 break
4637 fi
4638 done
4639 if $test ! -f "$xxx"; then
4640 echo "No -l$thislib."
bd9b35c9
JH
4641 fi
4642done
4643set X $dflt
4644shift
4645dflt="$*"
4646case "$libs" in
4647'') dflt="$dflt";;
4648*) dflt="$libs";;
4649esac
4650case "$dflt" in
4651' '|'') dflt='none';;
4652esac
4633a7c4 4653
bd9b35c9 4654$cat <<EOM
4633a7c4 4655
bd9b35c9
JH
4656In order to compile $package on your machine, a number of libraries
4657are usually needed. Include any other special libraries here as well.
4658Say "none" for none. The default list is almost always right.
8e07c86e 4659EOM
8e07c86e 4660
bd9b35c9
JH
4661echo " "
4662rp="What libraries to use?"
4663. ./myread
4664case "$ans" in
4665none) libs=' ';;
4666*) libs="$ans";;
4667esac
d71b2b6b 4668
bd9b35c9
JH
4669: determine optimization, if desired, or use for debug flag also
4670case "$optimize" in
4671' '|$undef) dflt='none';;
4672'') dflt='-O';;
4673*) dflt="$optimize";;
4674esac
4675$cat <<EOH
d71b2b6b 4676
bd9b35c9
JH
4677By default, $package compiles with the -O flag to use the optimizer.
4678Alternately, you might want to use the symbolic debugger, which uses
4679the -g flag (on traditional Unix systems). Either flag can be
4680specified here. To use neither flag, specify the word "none".
d71b2b6b 4681
bd9b35c9
JH
4682EOH
4683rp="What optimizer/debugger flag should be used?"
4684. ./myread
4685optimize="$ans"
4686case "$optimize" in
4687'none') optimize=" ";;
4688esac
4689
4690dflt=''
4691: We will not override a previous value, but we might want to
4692: augment a hint file
4693case "$hint" in
4694default|recommended)
4695 case "$gccversion" in
4696 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4697 esac
bd9b35c9
JH
4698 case "$optimize" in
4699 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4700 esac
bd9b35c9
JH
4701 case "$gccversion" in
4702 2*) if test -d /etc/conf/kconfig.d &&
4703 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4704 then
4705 dflt="$dflt -posix"
4706 fi
f0d04425 4707 ;;
bd9b35c9
JH
4708 esac
4709 case "$gccversion" in
4710 1*) ;;
4711 2.[0-8]*) ;;
4712 ?*) echo " "
4713 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4714 echo 'int main(void) { return 0; }' > gcctest.c
4715 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4716 echo "Yes, it does." 2>&1
4717 case "$ccflags" in
4718 *strict-aliasing*)
4719 echo "Leaving current flags $ccflags alone." 2>&1
4720 ;;
4721 *) dflt="$dflt -fno-strict-aliasing" ;;
4722 esac
4723 else
4724 echo "Nope, it doesn't, but that's ok." 2>&1
4725 fi
f0d04425 4726 ;;
e5e20432
JH
4727 esac
4728 ;;
4729esac
4730
bd9b35c9
JH
4731case "$mips_type" in
4732*BSD*|'') inclwanted="$locincpth $usrinc";;
4733*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4734esac
4735for thisincl in $inclwanted; do
4736 if $test -d $thisincl; then
4737 if $test x$thisincl != x$usrinc; then
4738 case "$dflt" in
422af00a
LC
4739 *" -I$thisincl "*);;
4740 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4741 esac
4742 fi
4743 fi
4744done
40a7a20a 4745
bd9b35c9
JH
4746inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4747 xxx=true;
4748elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4749 xxx=true;
4750else
4751 xxx=false;
4752fi;
4753if $xxx; then
4754 case "$dflt" in
4755 *$2*);;
4756 *) dflt="$dflt -D$2";;
4757 esac;
4758fi'
40a7a20a 4759
bd9b35c9 4760set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4761
bd9b35c9
JH
4762case "$usesocks" in
4763$define)
4764 ccflags="$ccflags -DSOCKS"
4765 ;;
4766esac
40a7a20a 4767
bd9b35c9
JH
4768case "$hint" in
4769default|recommended) dflt="$ccflags $dflt" ;;
4770*) dflt="$ccflags";;
4771esac
40a7a20a 4772
bd9b35c9
JH
4773case "$dflt" in
4774''|' ') dflt=none;;
4775esac
422af00a 4776
bd9b35c9 4777$cat <<EOH
40a7a20a 4778
bd9b35c9
JH
4779Your C compiler may want other flags. For this question you should include
4780-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4781but you should NOT include libraries or ld flags like -lwhatever. If you
4782want $package to honor its debug switch, you should include -DDEBUGGING here.
4783Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4784
bd9b35c9 4785To use no flags, specify the word "none".
40a7a20a 4786
bd9b35c9
JH
4787EOH
4788set X $dflt
4789shift
4790dflt=${1+"$@"}
4791rp="Any additional cc flags?"
4792. ./myread
4793case "$ans" in
4794none) ccflags='';;
4795*) ccflags="$ans";;
4796esac
8e07c86e 4797
bd9b35c9 4798: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4799case "$cppflags" in
4800'') cppflags="$ccflags" ;;
4801*) cppflags="$cppflags $ccflags" ;;
4802esac
bd9b35c9
JH
4803case "$gccversion" in
48041*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4805esac
bd9b35c9
JH
4806case "$mips_type" in
4807'');;
4808*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4809esac
4810case "$cppflags" in
4811'');;
4812*)
4813 echo " "
4814 echo "Let me guess what the preprocessor flags are..." >&4
4815 set X $cppflags
4816 shift
4817 cppflags=''
4818 $cat >cpp.c <<'EOM'
4819#define BLURFL foo
8e07c86e 4820
bd9b35c9
JH
4821BLURFL xx LFRULB
4822EOM
4823 previous=''
4824 for flag in $*
4825 do
4826 case "$flag" in
4827 -*) ftry="$flag";;
4828 *) ftry="$previous $flag";;
4829 esac
4830 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4831 >cpp1.out 2>/dev/null && \
4832 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4833 >cpp2.out 2>/dev/null && \
4834 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4835 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4836 then
4837 cppflags="$cppflags $ftry"
4838 previous=''
4839 else
4840 previous="$flag"
4841 fi
4842 done
4843 set X $cppflags
4844 shift
4845 cppflags=${1+"$@"}
4846 case "$cppflags" in
4847 *-*) echo "They appear to be: $cppflags";;
4848 esac
4849 $rm -f cpp.c cpp?.out
2afac517 4850 ;;
4851esac
8e07c86e 4852
bd9b35c9
JH
4853: flags used in final linking phase
4854case "$ldflags" in
4855'') if ./venix; then
4856 dflt='-i -z'
10a23457 4857 else
bd9b35c9 4858 dflt=''
10a23457 4859 fi
bd9b35c9
JH
4860 case "$ccflags" in
4861 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4862 esac
bd9b35c9
JH
4863 ;;
4864*) dflt="$ldflags";;
4865esac
4866
4867: Try to guess additional flags to pick up local libraries.
4868for thislibdir in $libpth; do
4869 case " $loclibpth " in
4870 *" $thislibdir "*)
4871 case "$dflt " in
4872 *"-L$thislibdir "*) ;;
4873 *) dflt="$dflt -L$thislibdir" ;;
4874 esac
c4f23d77
AD
4875 ;;
4876 esac
bd9b35c9 4877done
c4f23d77 4878
bd9b35c9
JH
4879case "$dflt" in
4880'') dflt='none' ;;
4881esac
c4f23d77 4882
bd9b35c9
JH
4883$cat <<EOH
4884
4885Your C linker may need flags. For this question you should
4886include -L/whatever and any other flags used by the C linker, but you
4887should NOT include libraries like -lwhatever.
4888
4889Make sure you include the appropriate -L/path flags if your C linker
4890does not normally search all of the directories you specified above,
4891namely
4892 $libpth
4893To use no flags, specify the word "none".
4894
4895EOH
4896
4897rp="Any additional ld flags (NOT including libraries)?"
4898. ./myread
4899case "$ans" in
4900none) ldflags='';;
4901*) ldflags="$ans";;
4902esac
4903rmlist="$rmlist pdp11"
4904
4905: coherency check
4906echo " "
4907echo "Checking your choice of C compiler and flags for coherency..." >&4
4908$cat > try.c <<'EOF'
4909#include <stdio.h>
55954f19 4910int main() { printf("Ok\n"); return(0); }
bd9b35c9 4911EOF
7a282f6d 4912set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4913shift
4914$cat >try.msg <<'EOM'
4915I've tried to compile and run the following simple program:
4916
4917EOM
4918$cat try.c >> try.msg
4919
4920$cat >> try.msg <<EOM
4921
4922I used the command:
4923
4924 $*
5440bc8e 4925 $run ./try
bd9b35c9
JH
4926
4927and I got the following output:
4928
4929EOM
4930dflt=y
73614538 4931if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4932 if $sh -c "$run ./try" >>try.msg 2>&1; then
4933 xxx=`$run ./try`
bd9b35c9
JH
4934 case "$xxx" in
4935 "Ok") dflt=n ;;
4936 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4937 case " $libs " in
4938 *" -lsfio "*)
4939 cat >> try.msg <<'EOQS'
4940If $libs contains -lsfio, and sfio is mis-configured, then it
4941sometimes (apparently) runs and exits with a 0 status, but with no
4942output! It may have to do with sfio's use of _exit vs. exit.
4943
4944EOQS
4945 rp="You have a big problem. Shall I abort Configure"
4946 dflt=y
4947 ;;
4948 esac
4949 ;;
4950 esac
4951 else
4952 echo "The program compiled OK, but exited with status $?." >>try.msg
4953 rp="You have a problem. Shall I abort Configure"
4954 dflt=y
4955 fi
4956else
4957 echo "I can't compile the test program." >>try.msg
4958 rp="You have a BIG problem. Shall I abort Configure"
4959 dflt=y
4960fi
4961case "$dflt" in
4962y)
4963 $cat try.msg >&4
4964 case "$knowitall" in
4965 '')
4966 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4967 ;;
bd9b35c9 4968 *) dflt=n;;
c4f23d77 4969 esac
bd9b35c9
JH
4970 echo " "
4971 . ./myread
4972 case "$ans" in
4973 n*|N*) ;;
4974 *) echo "Ok. Stopping Configure." >&4
4975 exit 1
c4f23d77
AD
4976 ;;
4977 esac
4978 ;;
bd9b35c9 4979n) echo "OK, that should do.";;
c4f23d77 4980esac
bd9b35c9 4981$rm -f try try.* core
c4f23d77 4982
bd9b35c9
JH
4983: define a shorthand compile call
4984compile='
4985mc_file=$1;
4986shift;
08413ebc 4987$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4988: define a shorthand compile call for compilations that should be ok.
4989compile_ok='
4990mc_file=$1;
4991shift;
7a282f6d 4992$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4993
8dfa8df9
JH
4994: determine filename position in cpp output
4995echo " "
4996echo "Computing filename position in cpp output for #include directives..." >&4
a5a94ea5
JH
4997case "$osname" in
4998vos) testaccess=-e ;;
4999*) testaccess=-r ;;
5000esac
8dfa8df9
JH
5001echo '#include <stdio.h>' > foo.c
5002$cat >fieldn <<EOF
5003$startsh
5004$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5005$grep '^[ ]*#.*stdio\.h' | \
5006while read cline; do
5007 pos=1
5008 set \$cline
5009 while $test \$# -gt 0; do
a5a94ea5 5010 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
8dfa8df9
JH
5011 echo "\$pos"
5012 exit 0
5013 fi
5014 shift
5015 pos=\`expr \$pos + 1\`
5016 done
5017done
5018EOF
5019chmod +x fieldn
5020fieldn=`./fieldn`
5021$rm -f foo.c fieldn
5022case $fieldn in
5023'') pos='???';;
50241) pos=first;;
50252) pos=second;;
50263) pos=third;;
5027*) pos="${fieldn}th";;
5028esac
5029echo "Your cpp writes the filename in the $pos field of the line."
5030
3c728e00
JH
5031case "$osname" in
5032vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5c728af0 5033os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
3c728e00
JH
5034*) cppfilter='' ;;
5035esac
8dfa8df9
JH
5036: locate header file
5037$cat >findhdr <<EOF
5038$startsh
5039wanted=\$1
5040name=''
5041for usrincdir in $usrinc
5042do
5043 if test -f \$usrincdir/\$wanted; then
5044 echo "\$usrincdir/\$wanted"
5045 exit 0
5046 fi
5047done
5048awkprg='{ print \$$fieldn }'
5049echo "#include <\$wanted>" > foo\$\$.c
5050$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3c728e00 5051$cppfilter $grep "^[ ]*#.*\$wanted" | \
8dfa8df9
JH
5052while read cline; do
5053 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5054 case "\$name" in
5055 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5056 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5057 *) exit 2;;
5058 esac;
5059done;
5060#
5061# status = 0: grep returned 0 lines, case statement not executed
5062# status = 1: headerfile found
5063# status = 2: while loop executed, no headerfile found
5064#
5065status=\$?
5066$rm -f foo\$\$.c;
5067if test \$status -eq 1; then
5068 exit 0;
5069fi
5070exit 1
5071EOF
5072chmod +x findhdr
5073
5074: define an alternate in-header-list? function
5075inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5076cont=true; xxf="echo \"<\$1> found.\" >&4";
5077case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5078*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5079esac;
5080case $# in 4) instead=instead;; *) instead="at last";; esac;
5081while $test "$cont"; do
5082 xxx=`./findhdr $1`
5083 var=$2; eval "was=\$$2";
5084 if $test "$xxx" && $test -r "$xxx";
5085 then eval $xxf;
5086 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5087 cont="";
5088 else eval $xxnf;
5089 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5090 set $yyy; shift; shift; yyy=$@;
5091 case $# in 0) cont="";;
5092 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5093 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5094 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5095 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5096 esac;
5097done;
5098while $test "$yyy";
5099do set $yyy; var=$2; eval "was=\$$2";
5100 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5101 set $yyy; shift; shift; yyy=$@;
5102done'
5103
d1daaddf
JH
5104: see if stdlib is available
5105set stdlib.h i_stdlib
5106eval $inhdr
5107
5108: check for lengths of integral types
5109echo " "
5110case "$intsize" in
5111'')
5112 echo "Checking to see how big your integers are..." >&4
c63dfae1 5113 $cat >try.c <<EOCP
d1daaddf
JH
5114#include <stdio.h>
5115#$i_stdlib I_STDLIB
5116#ifdef I_STDLIB
5117#include <stdlib.h>
5118#endif
5119int main()
5120{
5121 printf("intsize=%d;\n", (int)sizeof(int));
5122 printf("longsize=%d;\n", (int)sizeof(long));
5123 printf("shortsize=%d;\n", (int)sizeof(short));
5124 exit(0);
5125}
5126EOCP
5127 set try
5128 if eval $compile_ok && $run ./try > /dev/null; then
5129 eval `$run ./try`
5130 echo "Your integers are $intsize bytes long."
5131 echo "Your long integers are $longsize bytes long."
5132 echo "Your short integers are $shortsize bytes long."
5133 else
5134 $cat >&4 <<EOM
5135!
5136Help! I can't compile and run the intsize test program: please enlighten me!
5137(This is probably a misconfiguration in your system or libraries, and
5138you really ought to fix it. Still, I'll try anyway.)
5139!
5140EOM
5141 dflt=4
5142 rp="What is the size of an integer (in bytes)?"
5143 . ./myread
5144 intsize="$ans"
5145 dflt=$intsize
5146 rp="What is the size of a long integer (in bytes)?"
5147 . ./myread
5148 longsize="$ans"
5149 dflt=2
5150 rp="What is the size of a short integer (in bytes)?"
5151 . ./myread
5152 shortsize="$ans"
5153 fi
5154 ;;
5155esac
5156$rm -f try try.*
5157
5158: check for long long
5159echo " "
5160echo "Checking to see if you have long long..." >&4
5161echo 'int main() { long long x = 7; return 0; }' > try.c
5162set try
5163if eval $compile; then
5164 val="$define"
5165 echo "You have long long."
5166else
5167 val="$undef"
5168 echo "You do not have long long."
5169fi
5170$rm try.*
5171set d_longlong
5172eval $setvar
5173
5174: check for length of long long
5175case "${d_longlong}${longlongsize}" in
5176$define)
5177 echo " "
5178 echo "Checking to see how big your long longs are..." >&4
5179 $cat >try.c <<'EOCP'
5180#include <stdio.h>
5181int main()
5182{
5183 printf("%d\n", (int)sizeof(long long));
5184 return(0);
5185}
5186EOCP
5187 set try
5188 if eval $compile_ok; then
5189 longlongsize=`$run ./try`
5190 echo "Your long longs are $longlongsize bytes long."
5191 else
5192 dflt='8'
5193 echo " "
5194 echo "(I can't seem to compile the test program. Guessing...)"
5195 rp="What is the size of a long long (in bytes)?"
5196 . ./myread
5197 longlongsize="$ans"
5198 fi
5199 if $test "X$longsize" = "X$longlongsize"; then
5200 echo "(That isn't any different from an ordinary long.)"
5201 fi
5202 ;;
5203esac
5204$rm -f try.* try
5205
8dfa8df9
JH
5206: see if inttypes.h is available
5207: we want a real compile instead of Inhdr because some systems
5208: have an inttypes.h which includes non-existent headers
5209echo " "
5210$cat >try.c <<EOCP
5211#include <inttypes.h>
5212int main() {
5213 static int32_t foo32 = 0x12345678;
5214}
5215EOCP
5216set try
5217if eval $compile; then
5218 echo "<inttypes.h> found." >&4
5219 val="$define"
5220else
5221 echo "<inttypes.h> NOT found." >&4
5222 val="$undef"
5223fi
5224$rm -f try.c try
5225set i_inttypes
5226eval $setvar
5227
5228: check for int64_t
5229echo " "
5230echo "Checking to see if you have int64_t..." >&4
5231$cat >try.c <<EOCP
5232#include <sys/types.h>
5233#$i_inttypes I_INTTYPES
5234#ifdef I_INTTYPES
5235#include <inttypes.h>
5236#endif
5237int main() { int64_t x = 7; }
5238EOCP
5239set try
5240if eval $compile; then
5241 val="$define"
5242 echo "You have int64_t."
5243else
5244 val="$undef"
5245 echo "You do not have int64_t."
5246fi
5247$rm -f try try.*
5248set d_int64_t
5249eval $setvar
5250
5251
5252echo " "
5253echo "Checking which 64-bit integer type we could use..." >&4
5254
5255case "$intsize" in
52568) val=int
5257 set quadtype
5258 eval $setvar
5259 val='"unsigned int"'
5260 set uquadtype
5261 eval $setvar
5262 quadkind=1
5263 ;;
5264*) case "$longsize" in
5265 8) val=long
5266 set quadtype
5267 eval $setvar
5268 val='"unsigned long"'
5269 set uquadtype
5270 eval $setvar
5271 quadkind=2
5272 ;;
5273 *) case "$d_longlong:$longlongsize" in
5274 define:8)
5275 val='"long long"'
5276 set quadtype
5277 eval $setvar
5278 val='"unsigned long long"'
5279 set uquadtype
5280 eval $setvar
5281 quadkind=3
5282 ;;
5283 *) case "$d_int64_t" in
5284 define)
5285 val=int64_t
5286 set quadtype
5287 eval $setvar
5288 val=uint64_t
5289 set uquadtype
5290 eval $setvar
5291 quadkind=4
5292 ;;
5293 esac
5294 ;;
5295 esac
5296 ;;
5297 esac
5298 ;;
5299esac
5300
5301case "$quadtype" in
5302'') echo "Alas, no 64-bit integer types in sight." >&4
5303 d_quad="$undef"
5304 ;;
5305*) echo "We could use '$quadtype' for 64-bit integers." >&4
5306 d_quad="$define"
5307 ;;
5308esac
5309
b4eb6b3d
JH
5310
5311case "$uselonglong" in
5312"$define"|true|[yY]*)
5313 cat <<EOM >&4
5314
5315*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5316EOM
5317 use64bitint="$define"
5318 ;;
5319esac
5320case "$use64bits" in
5321"$define"|true|[yY]*)
5322 cat <<EOM >&4
5323
5324*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5325EOM
5326 use64bitint="$define"
5327 ;;
5328esac
5329case "$use64bitints" in
5330"$define"|true|[yY]*)
5331 cat <<EOM >&4
5332
5333*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5334EOM
5335 use64bitint="$define"
5336 ;;
5337esac
5338case "$use64bitsint" in
5339"$define"|true|[yY]*)
5340 cat <<EOM >&4
5341
5342*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5343EOM
5344 use64bitint="$define"
5345 ;;
5346esac
5347case "$uselonglongs" in
5348"$define"|true|[yY]*)
5349 cat <<EOM >&4
5350
5351*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5352EOM
5353 use64bitint="$define"
5354 ;;
5355esac
5356case "$use64bitsall" in
5357"$define"|true|[yY]*)
5358 cat <<EOM >&4
5359
5360*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5361EOM
5362 use64bitall="$define"
5363 ;;
5364esac
5365
5366case "$ccflags" in
5367*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5368esac
5369case "$use64bitall" in
5370"$define"|true|[yY]*) use64bitint="$define" ;;
5371esac
5372
5373case "$longsize" in
53748) cat <<EOM
5375
5376You have natively 64-bit long integers.
5377EOM
5378 val="$define"
5379 ;;
5380*) case "$use64bitint" in
5381 "$define"|true|[yY]*) dflt='y';;
5382 *) dflt='n';;
5383 esac
8dfa8df9
JH
5384 case "$d_quad" in
5385 "$define") ;;
5386 *) dflt='n' ;;
5387 esac
b4eb6b3d
JH
5388 cat <<EOM
5389
5390Perl can be built to take advantage of 64-bit integer types
5391on some systems. To do so, Configure can be run with -Duse64bitint.
5392Choosing this option will most probably introduce binary incompatibilities.
5393
5394If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5395(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5396EOM
5397 rp='Try to use 64-bit integers, if available?'
5398 . ./myread
5399 case "$ans" in
5400 [yY]*) val="$define" ;;
5401 *) val="$undef" ;;
5402 esac
5403 ;;
5404esac
5405set use64bitint
5406eval $setvar
5407
5408case "$use64bitall" in
5409"$define"|true|[yY]*) dflt='y' ;;
5410*) case "$longsize" in
5411 8) dflt='y' ;;
5412 *) dflt='n' ;;
5413 esac
5414 ;;
5415esac
5416cat <<EOM
5417
5418You may also choose to try maximal 64-bitness. It means using as much
541964-bitness as possible on the platform. This in turn means even more
5420binary incompatibilities. On the other hand, your platform may not
5421have any more 64-bitness available than what you already have chosen.
5422
5423If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5424(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5425EOM
5426rp='Try to use maximal 64-bit support, if available?'
5427. ./myread
5428case "$ans" in
5429[yY]*) val="$define" ;;
5430*) val="$undef" ;;
5431esac
5432set use64bitall
5433eval $setvar
5434case "$use64bitall" in
5435"$define")
5436 case "$use64bitint" in
5437 "$undef")
5438 cat <<EOM
5439
5440Since you have chosen a maximally 64-bit build, I'm also turning on
5441the use of 64-bit integers.
5442EOM
5443 use64bitint="$define" ;;
5444 esac
5445 ;;
5446esac
5447
5448case "$use64bitint" in
5449"$define"|true|[yY]*)
5450: Look for a hint-file generated 'call-back-unit'. If the
5451: user has specified that a 64-bit perl is to be built,
5452: we may need to set or change some other defaults.
5453 if $test -f use64bitint.cbu; then
5454 echo "Your platform has some specific hints for 64-bit integers, using them..."
5455 . ./use64bitint.cbu
5456 fi
5457 case "$longsize" in
5458 4) case "$archname64" in
5459 '') archname64=64int ;;
5460 esac
5461 ;;
5462 esac
5463 ;;
5464esac
5465
5466case "$use64bitall" in
5467"$define"|true|[yY]*)
5468: Look for a hint-file generated 'call-back-unit'. If the
5469: user has specified that a maximally 64-bit perl is to be built,
5470: we may need to set or change some other defaults.
5471 if $test -f use64bitall.cbu; then
5472 echo "Your platform has some specific hints for 64-bit builds, using them..."
5473 . ./use64bitall.cbu
5474 fi
5475 case "$longsize" in
5476 4) case "$archname64" in
5477 ''|64int) archname64=64all ;;
5478 esac
5479 ;;
5480 esac
5481 ;;
5482esac
5483
1911a026
JH
5484case "$d_quad:$use64bitint" in
5485$undef:$define)
5486 cat >&4 <<EOF
5487
5488*** You have chosen to use 64-bit integers,
5489*** but none cannot be found.
09b58c7b 5490*** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
1911a026
JH
5491*** Cannot continue, aborting.
5492
5493EOF
5494 exit 1
5495 ;;
5496esac
5497
36adc09b
JH
5498: check for length of double
5499echo " "
5500case "$doublesize" in
5501'')
5502 echo "Checking to see how big your double precision numbers are..." >&4
5503 $cat >try.c <<EOCP
5504#include <stdio.h>
1911a026
JH
5505#$i_stdlib I_STDLIB
5506#ifdef I_STDLIB
5507#include <stdlib.h>
5508#endif
36adc09b
JH
5509int main()
5510{
5511 printf("%d\n", (int)sizeof(double));
1911a026 5512 exit(0);
36adc09b
JH
5513}
5514EOCP
5515 set try
5516 if eval $compile_ok; then
5517 doublesize=`$run ./try`
5518 echo "Your double is $doublesize bytes long."
5519 else
5520 dflt='8'
5521 echo "(I can't seem to compile the test program. Guessing...)"
5522 rp="What is the size of a double precision number (in bytes)?"
5523 . ./myread
5524 doublesize="$ans"
5525 fi
5526 ;;
5527esac
5528$rm -f try.c try
5529
5530: check for long doubles
5531echo " "
5532echo "Checking to see if you have long double..." >&4
5533echo 'int main() { long double x = 7.0; }' > try.c
5534set try
5535if eval $compile; then
5536 val="$define"
5537 echo "You have long double."
5538else
5539 val="$undef"
5540 echo "You do not have long double."
5541fi
5542$rm try.*
5543set d_longdbl
5544eval $setvar
5545
5546: check for length of long double
5547case "${d_longdbl}${longdblsize}" in
5548$define)
5549 echo " "
5550 echo "Checking to see how big your long doubles are..." >&4
5551 $cat >try.c <<'EOCP'
5552#include <stdio.h>
5553int main()
5554{
5555 printf("%d\n", sizeof(long double));
5556}
5557EOCP
5558 set try
5559 set try
5560 if eval $compile; then
5561 longdblsize=`$run ./try`
5562 echo "Your long doubles are $longdblsize bytes long."
5563 else
5564 dflt='8'
5565 echo " "
5566 echo "(I can't seem to compile the test program. Guessing...)" >&4
5567 rp="What is the size of a long double (in bytes)?"
5568 . ./myread
5569 longdblsize="$ans"
5570 fi
5571 if $test "X$doublesize" = "X$longdblsize"; then
5572 echo "(That isn't any different from an ordinary double.)"
5573 fi
5574 ;;
5575esac
5576$rm -f try.* try
5577
89ce900e 5578: determine the architecture name
b4eb6b3d 5579echo " "
89ce900e
JH
5580if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5581 tarch=`arch`"-$osname"
5582elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5583 if uname -m > tmparch 2>&1 ; then
5584 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5585 -e 's/$/'"-$osname/" tmparch`
5586 else
5587 tarch="$osname"
5588 fi
5589 $rm -f tmparch
b4eb6b3d 5590else
89ce900e 5591 tarch="$osname"
b4eb6b3d 5592fi
89ce900e
JH
5593case "$myarchname" in
5594''|"$tarch") ;;
5595*)
5596 echo "(Your architecture name used to be $myarchname.)"
5597 archname=''
5598 ;;
5599esac
5600case "$targetarch" in
5601'') ;;
5602*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5603esac
5604myarchname="$tarch"
5605case "$archname" in
5606'') dflt="$tarch";;
5607*) dflt="$archname";;
5608esac
5609rp='What is your architecture name'
5610. ./myread
5611archname="$ans"
5612case "$usethreads" in
5613$define)
5614 echo "Threads selected." >&4
5615 case "$archname" in
5616 *-thread*) echo "...and architecture name already has -thread." >&4
5617 ;;
5618 *) archname="$archname-thread"
5619 echo "...setting architecture name to $archname." >&4
5620 ;;
5621 esac
5622 ;;
5623esac
5624case "$usemultiplicity" in
5625$define)
5626 echo "Multiplicity selected." >&4
5627 case "$archname" in
5628 *-multi*) echo "...and architecture name already has -multi." >&4
5629 ;;
5630 *) archname="$archname-multi"
5631 echo "...setting architecture name to $archname." >&4
5632 ;;
5633 esac
5634 ;;
5635esac
5636case "$use64bitint$use64bitall" in
5637*"$define"*)
5638 case "$archname64" in
5639 '')
5640 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
bd9b35c9 5641 ;;
89ce900e
JH
5642 *)
5643 case "$use64bitint" in
5644 "$define") echo "64 bit integers selected." >&4 ;;
5645 esac
5646 case "$use64bitall" in
5647 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5648 esac
5649 case "$archname" in
5650 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5651 ;;
5652 *) archname="$archname-$archname64"
5653 echo "...setting architecture name to $archname." >&4
5654 ;;
5655 esac
c1a7f87b
JH
5656 ;;
5657 esac
89ce900e
JH
5658esac
5659case "$uselongdouble" in
5660$define)
5661 echo "Long doubles selected." >&4
5662 case "$longdblsize" in
5663 $doublesize)
5664 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5665 ;;
5666 *)
5667 case "$archname" in
5668 *-ld*) echo "...and architecture name already has -ld." >&4
5669 ;;
5670 *) archname="$archname-ld"
5671 echo "...setting architecture name to $archname." >&4
5672 ;;
5673 esac
bd9b35c9
JH
5674 ;;
5675 esac
bd9b35c9 5676 ;;
89ce900e
JH
5677esac
5678case "$useperlio" in
5679$define)
5680 echo "Perlio selected." >&4
5681 ;;
bd9b35c9 5682*)
89ce900e
JH
5683 echo "Perlio not selected, using stdio." >&4
5684 case "$archname" in
5685 *-stdio*) echo "...and architecture name already has -stdio." >&4
5686 ;;
5687 *) archname="$archname-stdio"
5688 echo "...setting architecture name to $archname." >&4
5689 ;;
5690 esac
bd9b35c9
JH
5691 ;;
5692esac
bd9b35c9 5693
89ce900e
JH
5694: determine root of directory hierarchy where package will be installed.
5695case "$prefix" in
5696'')
5697 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5698 ;;
5699*?/)
5700 dflt=`echo "$prefix" | sed 's/.$//'`
5701 ;;
5702*)
5703 dflt="$prefix"
5704 ;;
5705esac
5706$cat <<EOM
c1a7f87b 5707
89ce900e
JH
5708By default, $package will be installed in $dflt/bin, manual pages
5709under $dflt/man, etc..., i.e. with $dflt as prefix for all
5710installation directories. Typically this is something like /usr/local.
5711If you wish to have binaries under /usr/bin but other parts of the
5712installation under /usr/local, that's ok: you will be prompted
5713separately for each of the installation directories, the prefix being
5714only used to set the defaults.
bd9b35c9
JH
5715
5716EOM
89ce900e
JH
5717fn=d~
5718rp='Installation prefix to use?'
5719. ./getfile
5720oldprefix=''
5721case "$prefix" in
5722'') ;;
5723*)
5724 case "$ans" in
5725 "$prefix") ;;
5726 *) oldprefix="$prefix";;
5727 esac
5728 ;;
bd9b35c9 5729esac
89ce900e
JH
5730prefix="$ans"
5731prefixexp="$ansexp"
bd9b35c9 5732
89ce900e
JH
5733case "$afsroot" in
5734'') afsroot=/afs ;;
5735*) afsroot=$afsroot ;;
8e07c86e 5736esac
29209bc5 5737
89ce900e
JH
5738: is AFS running?
5739echo " "
5740case "$afs" in
5741$define|true) afs=true ;;
5742$undef|false) afs=false ;;
5743*) if test -d $afsroot; then
5744 afs=true
c1a7f87b 5745 else
89ce900e
JH
5746 afs=false
5747 fi
5748 ;;
c1a7f87b 5749esac
89ce900e
JH
5750if $afs; then
5751 echo "AFS may be running... I'll be extra cautious then..." >&4
5752else
5753 echo "AFS does not seem to be running..." >&4
5754fi
b4eb6b3d
JH
5755
5756: determine installation prefix for where package is to be installed.
5757if $afs; then
5758$cat <<EOM
5759
5760Since you are running AFS, I need to distinguish the directory in which
5761files will reside from the directory in which they are installed (and from
5762which they are presumably copied to the former directory by occult means).
5763
5764EOM
5765 case "$installprefix" in
5766 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5767 *) dflt="$installprefix";;
5768 esac
5769else
5770$cat <<EOM
5771
5772In some special cases, particularly when building $package for distribution,
c2bfb7b1
MB
5773it is convenient to distinguish the directory in which files should be
5774installed from the directory ($prefix) in which they will
5775eventually reside. For most users, these two directories are the same.
b4eb6b3d
JH
5776
5777EOM
5778 case "$installprefix" in
5779 '') dflt=$prefix ;;
5780 *) dflt=$installprefix;;
5781 esac
5782fi
5783fn=d~
5784rp='What installation prefix should I use for installing files?'
5785. ./getfile
5786installprefix="$ans"
5787installprefixexp="$ansexp"
5788
5789: set the prefixit variable, to compute a suitable default value
5790prefixit='case "$3" in
5791""|none)
5792 case "$oldprefix" in
5793 "") eval "$1=\"\$$2\"";;
5794 *)
5795 case "$3" in
5796 "") eval "$1=";;
5797 none)
5798 eval "tp=\"\$$2\"";
5799 case "$tp" in
5800 ""|" ") eval "$1=\"\$$2\"";;
5801 *) eval "$1=";;
5802 esac;;
5803 esac;;
5804 esac;;
5805*)
5806 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5807 case "$tp" in
5808 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5809 /*-$oldprefix/*|\~*-$oldprefix/*)
5810 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5811 *) eval "$1=\"\$$2\"";;
5812 esac;;
5813esac'
5814
b4eb6b3d
JH
5815: get the patchlevel
5816echo " "
5817echo "Getting the current patchlevel..." >&4
5818if $test -r $rsrc/patchlevel.h;then
5819 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5820 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5821 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5822 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5823 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5824 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 5825 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
5826else
5827 revision=0
5828 patchlevel=0
5829 subversion=0
5830 api_revision=0
5831 api_version=0
5832 api_subversion=0
151e6568
MB
5833 perl_patchlevel=0
5834 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 5835fi
151e6568
MB
5836if $test -r $rsrc/.patch ; then
5837 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5838 perl_patchlevel=`cat $rsrc/.patch`
5839 fi
5840fi
861eb78d
AD
5841: Define a handy string here to avoid duplication in myconfig.SH and configpm.
5842version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 5843case "$perl_patchlevel" in
861eb78d
AD
58440|'') ;;
5845*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 5846esac
861eb78d
AD
5847
5848$echo "(You have $package $version_patchlevel_string.)"
5849
b4eb6b3d
JH
5850case "$osname" in
5851dos|vms)
5852 : XXX Should be a Configure test for double-dots in filenames.
5853 version=`echo $revision $patchlevel $subversion | \
5854 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5855 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5856 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5857 ;;
5858*)
5859 version=`echo $revision $patchlevel $subversion | \
5860 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5861 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5862 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5863 ;;
5864esac
5865: Special case the 5.005_xx maintenance series, which used 5.005
5866: without any subversion label as a subdirectory in $sitelib
5867if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5868 api_versionstring='5.005'
5869fi
5870
5871: determine installation style
5872: For now, try to deduce it from prefix unless it is already set.
5873: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5874case "$installstyle" in
5875'') case "$prefix" in
5876 *perl*) dflt='lib';;
5877 *) dflt='lib/perl5' ;;
5878 esac
5879 ;;
5880*) dflt="$installstyle" ;;
5881esac
5882: Probably not worth prompting for this since we prompt for all
5883: the directories individually, and the prompt would be too long and
5884: confusing anyway.
5885installstyle=$dflt
5886
5887: determine where private library files go
5888: Usual default is /usr/local/lib/perl5/$version.
5889: Also allow things like /opt/perl/lib/$version, since
5890: /opt/perl/lib/perl5... would be redundant.
5891: The default "style" setting is made in installstyle.U
5892case "$installstyle" in
5893*lib/perl5*) set dflt privlib lib/$package/$version ;;
5894*) set dflt privlib lib/$version ;;
5895esac
5896eval $prefixit
5897$cat <<EOM
5898
5899There are some auxiliary files for $package that need to be put into a
5900private library directory that is accessible by everyone.
5901
5902EOM
5903fn=d~+
5904rp='Pathname where the private library files will reside?'
5905. ./getfile
5906privlib="$ans"
5907privlibexp="$ansexp"
5908: Change installation prefix, if necessary.
5909if $test X"$prefix" != X"$installprefix"; then
5910 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5911else
5912 installprivlib="$privlibexp"
5913fi
5914
5915: set the prefixup variable, to restore leading tilda escape
5916prefixup='case "$prefixexp" in
5917"$prefix") ;;
5918*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5919esac'
5920
5921: determine where public architecture dependent libraries go
5922set archlib archlib
5923eval $prefixit
5924: privlib default is /usr/local/lib/$package/$version
5925: archlib default is /usr/local/lib/$package/$version/$archname
5926: privlib may have an optional trailing /share.
5927tdflt=`echo $privlib | $sed 's,/share$,,'`
5928tdflt=$tdflt/$archname
5929case "$archlib" in
5930'') dflt=$tdflt
5931 ;;
5932*) dflt="$archlib"
5933 ;;
5934esac
5935$cat <<EOM
5936
5937$spackage contains architecture-dependent library files. If you are
5938sharing libraries in a heterogeneous environment, you might store
5939these files in a separate location. Otherwise, you can just include
5940them with the rest of the public library files.
5941
5942EOM
5943fn=d+~
5944rp='Where do you want to put the public architecture-dependent libraries?'
5945. ./getfile
5946archlib="$ans"
5947archlibexp="$ansexp"
5948if $test X"$archlib" = X"$privlib"; then
5949 d_archlib="$undef"
5950else
5951 d_archlib="$define"
5952fi
5953: Change installation prefix, if necessary.
5954if $test X"$prefix" != X"$installprefix"; then
5955 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5956else
5957 installarchlib="$archlibexp"
5958fi
5959
b4eb6b3d
JH
5960: see if setuid scripts can be secure
5961$cat <<EOM
5962
5963Some kernels have a bug that prevents setuid #! scripts from being
5964secure. Some sites have disabled setuid #! scripts because of this.
5965
5966First let's decide if your kernel supports secure setuid #! scripts.
5967(If setuid #! scripts would be secure but have been disabled anyway,
5968don't say that they are secure if asked.)
5969
5970EOM
5971
5972val="$undef"
5973if $test -d /dev/fd; then
5974 echo "#!$ls" >reflect
5975 chmod +x,u+s reflect
5976 ./reflect >flect 2>&1
5977 if $contains "/dev/fd" flect >/dev/null; then
5978 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5979 val="$define"
5980 else
5981 $cat <<EOM
5982If you are not sure if they are secure, I can check but I'll need a
5983username and password different from the one you are using right now.
5984If you don't have such a username or don't want me to test, simply
5985enter 'none'.
5986
5987EOM
5988 rp='Other username to test security of setuid scripts with?'
5989 dflt='none'
5990 . ./myread
5991 case "$ans" in
5992 n|none)
5993 case "$d_suidsafe" in
5994 '') echo "I'll assume setuid scripts are *not* secure." >&4
5995 dflt=n;;
5996 "$undef")
5997 echo "Well, the $hint value is *not* secure." >&4
5998 dflt=n;;
5999 *) echo "Well, the $hint value *is* secure." >&4
6000 dflt=y;;
6001 esac
c1a7f87b 6002 ;;
b4eb6b3d
JH
6003 *)
6004 $rm -f reflect flect
6005 echo "#!$ls" >reflect
6006 chmod +x,u+s reflect
6007 echo >flect
6008 chmod a+w flect
6009 echo '"su" will (probably) prompt you for '"$ans's password."
6010 su $ans -c './reflect >flect'
6011 if $contains "/dev/fd" flect >/dev/null; then
6012 echo "Okay, it looks like setuid scripts are secure." >&4
6013 dflt=y
6014 else
6015 echo "I don't think setuid scripts are secure." >&4
6016 dflt=n
6017 fi
6018 ;;
6019 esac
6020 rp='Does your kernel have *secure* setuid scripts?'
6021 . ./myread
6022 case "$ans" in
6023 [yY]*) val="$define";;
6024 *) val="$undef";;
6025 esac
6026 fi
6027else
6028 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6029 echo "(That's for file descriptors, not floppy disks.)"
6030 val="$undef"
6031fi
6032set d_suidsafe
6033eval $setvar
6034
6035$rm -f reflect flect
6036
6037: now see if they want to do setuid emulation
6038echo " "
6039val="$undef"
6040case "$d_suidsafe" in
6041"$define")
6042 val="$undef"
3c728e00 6043 echo "No need to emulate SUID scripts since they are secure here." >&4
b4eb6b3d
JH
6044 ;;
6045*)
6046 $cat <<EOM
6047Some systems have disabled setuid scripts, especially systems where
6048setuid scripts cannot be secure. On systems where setuid scripts have
6049been disabled, the setuid/setgid bits on scripts are currently
6050useless. It is possible for $package to detect those bits and emulate
6051setuid/setgid in a secure fashion. This emulation will only work if
6052setuid scripts have been disabled in your kernel.
6053
6054EOM
6055 case "$d_dosuid" in
6056 "$define") dflt=y ;;
6057 *) dflt=n ;;
6058 esac
6059 rp="Do you want to do setuid/setgid emulation?"
6060 . ./myread
6061 case "$ans" in
6062 [yY]*) val="$define";;
6063 *) val="$undef";;
6064 esac
6065 ;;
6066esac
6067set d_dosuid
6068eval $setvar
6069
b4eb6b3d 6070: see if this is a malloc.h system
01d07975
YST
6071: we want a real compile instead of Inhdr because some systems have a
6072: malloc.h that just gives a compile error saying to use stdlib.h instead
6073echo " "
6074$cat >try.c <<EOCP
6075#include <stdlib.h>
6076#include <malloc.h>
6077int main () { return 0; }
6078EOCP
6079set try
6080if eval $compile; then
6081 echo "<malloc.h> found." >&4
6082 val="$define"
6083else
6084 echo "<malloc.h> NOT found." >&4
6085 val="$undef"
6086fi
6087$rm -f try.c try
6088set i_malloc
6089eval $setvar
b4eb6b3d 6090
c8b93cf9
JH
6091: check for void type
6092echo " "
6093echo "Checking to see how well your C compiler groks the void type..." >&4
6094case "$voidflags" in
6095'')
c727eafa 6096 $cat >try.c <<EOCP
d1daaddf
JH
6097#$i_stdlib I_STDLIB
6098#ifdef I_STDLIB
6099#include <stdlib.h>
6100#endif
c8b93cf9
JH
6101#if TRY & 1
6102void sub() {
6103#else
6104sub() {
6105#endif
6106 extern void moo(); /* function returning void */
6107 void (*goo)(); /* ptr to func returning void */
6108#if TRY & 8
6109 void *hue; /* generic ptr */
6110#endif
6111#if TRY & 2
6112 void (*foo[10])();
6113#endif
6114
6115#if TRY & 4
6116 if(goo == moo) {
6117 exit(0);
6118 }
6119#endif
6120 exit(0);
6121}
6122int main() { sub(); }
6123EOCP
6124 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6125 voidflags=$defvoidused
6126 echo "Good. It appears to support void to the level $package wants.">&4
6127 if $contains warning .out >/dev/null 2>&1; then
6128 echo "However, you might get some warnings that look like this:"
6129 $cat .out
6130 fi
6131 else
6132echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6133 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6134 echo "It supports 1..."
6135 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6136 echo "It also supports 2..."
6137 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6138 voidflags=7
6139 echo "And it supports 4 but not 8 definitely."
6140 else
6141 echo "It doesn't support 4..."
6142 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6143 voidflags=11
6144 echo "But it supports 8."
6145 else
6146 voidflags=3
6147 echo "Neither does it support 8."
6148 fi
6149 fi
6150 else
6151 echo "It does not support 2..."
6152 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6153 voidflags=13
6154 echo "But it supports 4 and 8."
6155 else
6156 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6157 voidflags=5
6158 echo "And it supports 4 but has not heard about 8."
6159 else
6160 echo "However it supports 8 but not 4."
6161 fi
6162 fi
6163 fi
6164 else
6165 echo "There is no support at all for void."
6166 voidflags=0
6167 fi
6168 fi
6169esac
6170case "$voidflags" in
6171"$defvoidused") ;;
6172*) $cat >&4 <<'EOM'
6173 Support flag bits are:
6174 1: basic void declarations.
6175 2: arrays of pointers to functions returning void.
6176 4: operations between pointers to and addresses of void functions.
6177 8: generic void pointers.
6178EOM
6179 dflt="$voidflags";
6180 rp="Your void support flags add up to what?"
6181 . ./myread
6182 voidflags="$ans"
6183 ;;
6184esac
6185$rm -f try.* .out
6186
6187: check for length of pointer
6188echo " "
6189case "$ptrsize" in
6190'')
6191 echo "Checking to see how big your pointers are..." >&4
6192 if test "$voidflags" -gt 7; then
6193 echo '#define VOID_PTR char *' > try.c
6194 else
6195 echo '#define VOID_PTR void *' > try.c
6196 fi
74d00865 6197 $cat >>try.c <<EOCP
c8b93cf9 6198#include <stdio.h>
d1daaddf
JH
6199#$i_stdlib I_STDLIB
6200#ifdef I_STDLIB
6201#include <stdlib.h>
6202#endif
c8b93cf9
JH
6203int main()
6204{
6205 printf("%d\n", (int)sizeof(VOID_PTR));
6206 exit(0);
6207}
6208EOCP
6209 set try
6210 if eval $compile_ok; then
6211 ptrsize=`$run ./try`
6212 echo "Your pointers are $ptrsize bytes long."
6213 else
6214 dflt='4'
6215 echo "(I can't seem to compile the test program. Guessing...)" >&4
6216 rp="What is the size of a pointer (in bytes)?"
6217 . ./myread
6218 ptrsize="$ans"
6219 fi
6220 ;;
6221esac
6222$rm -f try.c try
6223case "$use64bitall" in
6224"$define"|true|[yY]*)
6225 case "$ptrsize" in
6226 4) cat <<EOM >&4
6227
1911a026
JH
6228*** You have chosen a maximally 64-bit build,
6229*** but your pointers are only 4 bytes wide.
09b58c7b
JH
6230*** Please rerun Configure without -Duse64bitall.
6231EOM
6232 case "$d_quad" in
6233 define)
6234 cat <<EOM >&4
6235*** Since you have quads, you could possibly try with -Duse64bitint.
6236EOM
6237 ;;
6238 esac
6239 cat <<EOM >&4
1911a026 6240*** Cannot continue, aborting.
c8b93cf9
JH
6241
6242EOM
09b58c7b 6243
1911a026 6244 exit 1
c8b93cf9
JH
6245 ;;
6246 esac
6247 ;;
6248esac
6249
6250
b4eb6b3d
JH
6251: determine which malloc to compile in
6252echo " "
6253case "$usemymalloc" in
c4163172
JH
6254[yY]*|true|$define) dflt='y' ;;
6255[nN]*|false|$undef) dflt='n' ;;
6256*) case "$ptrsize" in
6257 4) dflt='y' ;;
6258 *) dflt='n' ;;
6259 esac
6260 ;;
8dfa8df9 6261esac
b4eb6b3d
JH
6262rp="Do you wish to attempt to use the malloc that comes with $package?"
6263. ./myread
6264usemymalloc="$ans"
6265case "$ans" in
6266y*|true)
6267 usemymalloc='y'
6268 mallocsrc='malloc.c'
6269 mallocobj="malloc$_o"
6270 d_mymalloc="$define"
6271 case "$libs" in
6272 *-lmalloc*)
6273 : Remove malloc from list of libraries to use
6274 echo "Removing unneeded -lmalloc from library list" >&4
6275 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6276 shift
6277 libs="$*"
6278 echo "libs = $libs" >&4
6279 ;;
6280 esac
6281 ;;
6282*)
6283 usemymalloc='n'
6284 mallocsrc=''
6285 mallocobj=''
6286 d_mymalloc="$undef"
6287 ;;
6288esac
6289
6290: compute the return types of malloc and free
6291echo " "
6292$cat >malloc.c <<END
6293#$i_malloc I_MALLOC
6294#$i_stdlib I_STDLIB
6295#include <stdio.h>
6296#include <sys/types.h>
6297#ifdef I_MALLOC
6298#include <malloc.h>
6299#endif
6300#ifdef I_STDLIB
6301#include <stdlib.h>
6302#endif
6303#ifdef TRY_MALLOC
6304void *malloc();
6305#endif
6306#ifdef TRY_FREE
6307void free();
6308#endif
6309END
6310case "$malloctype" in
6311'')
6312 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6313 malloctype='void *'
6314 else
6315 malloctype='char *'
6316 fi
6317 ;;
6318esac
6319echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6320
6321case "$freetype" in
6322'')
6323 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6324 freetype='void'
6325 else
6326 freetype='int'
6327 fi
6328 ;;
6329esac
6330echo "Your system uses $freetype free(), it would seem." >&4
6331$rm -f malloc.[co]
6332$cat <<EOM
6333
6334After $package is installed, you may wish to install various
6335add-on modules and utilities. Typically, these add-ons will
6336be installed under $prefix with the rest
6337of this package. However, you may wish to install such add-ons
6338elsewhere under a different prefix.
6339
6340If you do not wish to put everything under a single prefix, that's
6341ok. You will be prompted for the individual locations; this siteprefix
6342is only used to suggest the defaults.
6343
6344The default should be fine for most people.
6345
6346EOM
6347fn=d~+
6348rp='Installation prefix to use for add-on modules and utilities?'
6349: XXX Here might be another good place for an installstyle setting.
6350case "$siteprefix" in
6351'') dflt=$prefix ;;
6352*) dflt=$siteprefix ;;
6353esac
6354. ./getfile
6355: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6356oldsiteprefix=''
6357case "$siteprefix" in
6358'') ;;
6359*) case "$ans" in
6360 "$prefix") ;;
6361 *) oldsiteprefix="$prefix";;
6362 esac
6363 ;;
6364esac
6365siteprefix="$ans"
6366siteprefixexp="$ansexp"
6367
6368: determine where site specific libraries go.
6369: Usual default is /usr/local/lib/perl5/site_perl/$version
6370: The default "style" setting is made in installstyle.U
6371: XXX No longer works with Prefixit stuff.
6372prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6373case "$sitelib" in
6374'') case "$installstyle" in
6375 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6376 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6377 esac
6378 ;;
6379*) dflt="$sitelib"
6380 ;;
6381esac
6382$cat <<EOM
6383
6384The installation process will create a directory for
6385site-specific extensions and modules. Most users find it convenient
6386to place all site-specific files in this directory rather than in the
6387main distribution directory.
6388
6389EOM
6390fn=d~+
6391rp='Pathname for the site-specific library files?'
6392. ./getfile
6393sitelib="$ans"
6394sitelibexp="$ansexp"
6395sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6396: Change installation prefix, if necessary.
6397if $test X"$prefix" != X"$installprefix"; then
6398 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6399else
6400 installsitelib="$sitelibexp"
6401fi
6402
6403: determine where site specific architecture-dependent libraries go.
6404: sitelib default is /usr/local/lib/perl5/site_perl/$version
6405: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6406: sitelib may have an optional trailing /share.
6407case "$sitearch" in
6408'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6409 dflt="$dflt/$archname"
6410 ;;
6411*) dflt="$sitearch"
6412 ;;
6413esac
6414set sitearch sitearch none
6415eval $prefixit
6416$cat <<EOM
6417
6418The installation process will also create a directory for
6419architecture-dependent site-specific extensions and modules.
6420
6421EOM
6422fn=d~+
6423rp='Pathname for the site-specific architecture-dependent library files?'
6424. ./getfile
6425sitearch="$ans"
6426sitearchexp="$ansexp"
6427: Change installation prefix, if necessary.
6428if $test X"$prefix" != X"$installprefix"; then
6429 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6430else
6431 installsitearch="$sitearchexp"
6432fi
6433
6434$cat <<EOM
6435
6436The installation process will also create a directory for
6437vendor-supplied add-ons. Vendors who supply perl with their system
6438may find it convenient to place all vendor-supplied files in this
6439directory rather than in the main distribution directory. This will
6440ease upgrades between binary-compatible maintenance versions of perl.
6441
6442Of course you may also use these directories in whatever way you see
6443fit. For example, you might use them to access modules shared over a
6444company-wide network.
6445
6446The default answer should be fine for most people.
6447This causes further questions about vendor add-ons to be skipped
6448and no vendor-specific directories will be configured for perl.
6449
6450EOM
6451rp='Do you want to configure vendor-specific add-on directories?'
6452case "$usevendorprefix" in
6453define|true|[yY]*) dflt=y ;;
6454*) : User may have set vendorprefix directly on Configure command line.
6455 case "$vendorprefix" in
6456 ''|' ') dflt=n ;;
6457 *) dflt=y ;;
6458 esac
6459 ;;
6460esac
6461. ./myread
6462case "$ans" in
6463[yY]*) fn=d~+
6464 rp='Installation prefix to use for vendor-supplied add-ons?'
6465 case "$vendorprefix" in
6466 '') dflt='' ;;
6467 *) dflt=$vendorprefix ;;
6468 esac
6469 . ./getfile
6470 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6471 oldvendorprefix=''
6472 case "$vendorprefix" in
6473 '') ;;
6474 *) case "$ans" in
6475 "$prefix") ;;
6476 *) oldvendorprefix="$prefix";;
6477 esac
6478 ;;
6479 esac
6480 usevendorprefix="$define"
6481 vendorprefix="$ans"
6482 vendorprefixexp="$ansexp"
6483 ;;
6484*) usevendorprefix="$undef"
6485 vendorprefix=''
6486 vendorprefixexp=''
6487 ;;
6488esac
6489
6490case "$vendorprefix" in
6491'') d_vendorlib="$undef"
6492 vendorlib=''
6493 vendorlibexp=''
6494 ;;
6495*) d_vendorlib="$define"
6496 : determine where vendor-supplied modules go.
6497 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6498 case "$vendorlib" in
6499 '')
6500 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6501 case "$installstyle" in
6502 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6503 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6504 esac
6505 ;;
6506 *) dflt="$vendorlib"
6507 ;;
6508 esac
6509 fn=d~+
6510 rp='Pathname for the vendor-supplied library files?'
6511 . ./getfile
6512 vendorlib="$ans"
6513 vendorlibexp="$ansexp"
6514 ;;
6515esac
6516vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6517: Change installation prefix, if necessary.
6518if $test X"$prefix" != X"$installprefix"; then
6519 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6520else
6521 installvendorlib="$vendorlibexp"
6522fi
6523
6524case "$vendorprefix" in
6525'') d_vendorarch="$undef"
6526 vendorarch=''
6527 vendorarchexp=''
6528 ;;
6529*) d_vendorarch="$define"
6530 : determine where vendor-supplied architecture-dependent libraries go.
6531 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6532 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6533 : vendorlib may have an optional trailing /share.
6534 case "$vendorarch" in
6535 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6536 dflt="$dflt/$archname"
6537 ;;
6538 *) dflt="$vendorarch" ;;
6539 esac
6540 fn=d~+
6541 rp='Pathname for vendor-supplied architecture-dependent files?'
6542 . ./getfile
6543 vendorarch="$ans"
6544 vendorarchexp="$ansexp"
6545 ;;
6546esac
6547: Change installation prefix, if necessary.
6548if $test X"$prefix" != X"$installprefix"; then
6549 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6550else
6551 installvendorarch="$vendorarchexp"
6552fi
6553
6554: Final catch-all directories to search
6555$cat <<EOM
6556
6557Lastly, you can have perl look in other directories for extensions and
6558modules in addition to those already specified.
6559These directories will be searched after
6560 $sitearch
6561 $sitelib
6562EOM
6563test X"$vendorlib" != "X" && echo ' ' $vendorlib
6564test X"$vendorarch" != "X" && echo ' ' $vendorarch
6565echo ' '
6566case "$otherlibdirs" in
6567''|' ') dflt='none' ;;
6568*) dflt="$otherlibdirs" ;;
6569esac
6570$cat <<EOM
6571Enter a colon-separated set of extra paths to include in perl's @INC
6572search path, or enter 'none' for no extra paths.
6573
6574EOM
6575
6576rp='Colon-separated list of additional directories for perl to search?'
6577. ./myread
6578case "$ans" in
6579' '|''|none) otherlibdirs=' ' ;;
6580*) otherlibdirs="$ans" ;;
6581esac
6582case "$otherlibdirs" in
6583' ') val=$undef ;;
6584*) val=$define ;;
6585esac
6586set d_perl_otherlibdirs
6587eval $setvar
6588
6589: Cruising for prototypes
6590echo " "
6591echo "Checking out function prototypes..." >&4
55954f19
JH
6592$cat >prototype.c <<EOCP
6593#$i_stdlib I_STDLIB
6594#ifdef I_STDLIB
6595#include <stdlib.h>
6596#endif
b4eb6b3d
JH
6597int main(int argc, char *argv[]) {
6598 exit(0);}
6599EOCP
6600if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6601 echo "Your C compiler appears to support function prototypes."
6602 val="$define"
6603else
6604 echo "Your C compiler doesn't seem to understand function prototypes."
6605 val="$undef"
6606fi
6607set prototype
6608eval $setvar
6609$rm -f prototype*
6610
6611case "$prototype" in
6612"$define") ;;
6613*) ansi2knr='ansi2knr'
6614 echo " "
6615 cat <<EOM >&4
6616
6617$me: FATAL ERROR:
6618This version of $package can only be compiled by a compiler that
6619understands function prototypes. Unfortunately, your C compiler
6620 $cc $ccflags
6621doesn't seem to understand them. Sorry about that.
6622
6623If GNU cc is available for your system, perhaps you could try that instead.
6624
6625Eventually, we hope to support building Perl with pre-ANSI compilers.
6626If you would like to help in that effort, please contact <perlbug@perl.org>.
6627
6628Aborting Configure now.
6629EOM
6630 exit 2
6631 ;;
6632esac
6633
6634: determine where public executables go
6635echo " "
6636set dflt bin bin
6637eval $prefixit
6638fn=d~
6639rp='Pathname where the public executables will reside?'
6640. ./getfile
6641if $test "X$ansexp" != "X$binexp"; then
6642 installbin=''
6643fi
6644bin="$ans"
6645binexp="$ansexp"
6646: Change installation prefix, if necessary.
6647: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6648if $test X"$prefix" != X"$installprefix"; then
6649 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6650else
6651 installbin="$binexp"
6652fi
6653
6fcddf3b 6654echo " "
6fcddf3b 6655case "$extras" in
bf35c3f6
JH
6656'') dflt='n';;
6657*) dflt='y';;
6fcddf3b
JH
6658esac
6659cat <<EOM
6660Perl can be built with extra modules or bundles of modules which
6661will be fetched from the CPAN and installed alongside Perl.
6662
6663Notice that you will need access to the CPAN; either via the Internet,
6664or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6665be asked later to configure the CPAN.pm module which will in turn do
6666the installation of the rest of the extra modules or bundles.)
6667
6668Notice also that if the modules require any external software such as
dd2de242
JH
6669libraries and headers (the libz library and the zlib.h header for the
6670Compress::Zlib module, for example) you MUST have any such software
6671already installed, this configuration process will NOT install such
6672things for you.
6fcddf3b
JH
6673
6674If this doesn't make any sense to you, just accept the default '$dflt'.
6675EOM
dd2de242 6676rp='Install any extra modules (y or n)?'
6fcddf3b
JH
6677. ./myread
6678case "$ans" in
6679y|Y)
6680 cat <<EOM
6681
6682Please list any extra modules or bundles to be installed from CPAN,
6683with spaces between the names. The names can be in any format the
dd2de242
JH
6684'install' command of CPAN.pm will understand. (Answer 'none',
6685without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
6686EOM
6687 rp='Extras?'
6688 dflt="$extras"
6689 . ./myread
6690 extras="$ans"
6691esac
6692case "$extras" in
6693''|'none')
6694 val=''
6695 $rm -f ../extras.lst
6696 ;;
6697*) echo "(Saving the list of extras for later...)"
dd2de242
JH
6698 echo "$extras" > ../extras.lst
6699 val="'$extras'"
6fcddf3b
JH
6700 ;;
6701esac
6702set extras
6703eval $setvar
6704echo " "
6705
6e1038e0
MB
6706: determine where html pages for programs go
6707set html1dir html1dir none
6708eval $prefixit
6709$cat <<EOM
6710
6711If you wish to install html files for programs in $spackage, indicate
6712the appropriate directory here. To skip installing html files,
6713answer "none".
6714EOM
6715case "$html1dir" in
6716''|none|$undef|' ') dflt=none ;;
6717*) dflt=$html1dir ;;
6718esac
6719fn=dn+~
6720rp="Directory for the main $spackage html pages?"
6721. ./getfile
6722html1dir="$ans"
6723html1direxp="$ansexp"
6724: Use ' ' for none so value is preserved next time through Configure
6725$test X"$html1dir" = "X" && html1dir=' '
6726: Change installation prefix, if necessary.
6727if $test X"$prefix" != X"$installprefix"; then
6728 installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6729else
6730 installhtml1dir="$html1direxp"
6731fi
6732
6733: determine where html pages for libraries and modules go
6734set html3dir html3dir none
6735eval $prefixit
6736$cat <<EOM
6737
6738If you wish to install html files for modules associated with $spackage,
6739indicate the appropriate directory here. To skip installing html files,
6740answer "none".
6741EOM
6742: There is no obvious default. If they have specified html1dir, then
6743: try to key off that, possibly changing .../html1 into .../html3.
6744case "$html3dir" in
6745'') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6746*) dflt=$html3dir ;;
6747esac
6748fn=dn+~
6749rp="Directory for the $spackage module html pages?"
6750. ./getfile
6751html3dir="$ans"
6752html3direxp="$ansexp"
6753: Use ' ' for none so value is preserved next time through Configure
6754$test X"$html3dir" = "X" && html3dir=' '
6755: Change installation prefix, if necessary.
6756if $test X"$prefix" != X"$installprefix"; then
6757 installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6758else
6759 installhtml3dir="$html3direxp"
6760fi
6761
b4eb6b3d
JH
6762: Find perl5.005 or later.
6763echo "Looking for a previously installed perl5.005 or later... "
6764case "$perl5" in
a938a3bb 6765'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6766 : Check if this perl is recent and can load a simple module
a938a3bb 6767 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6768 perl5=$tdir/perl
6769 break;
a938a3bb
IZ
6770 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6771 perl5=$tdir/perl5
b4eb6b3d
JH
6772 break;
6773 fi
89ce900e
JH
6774 done
6775 ;;
6776*) perl5="$perl5"
6777 ;;
6778esac
6779case "$perl5" in
6780'') echo "None found. That's ok.";;
6781*) echo "Using $perl5." ;;
6782esac
6783
6784: Determine list of previous versions to include in @INC
6785$cat > getverlist <<EOPL
6786#!$perl5 -w
6787use File::Basename;
6788\$api_versionstring = "$api_versionstring";
6789\$version = "$version";
6790\$stem = "$sitelib_stem";
6791\$archname = "$archname";
6792EOPL
6793 $cat >> getverlist <<'EOPL'
6794# Can't have leading @ because metaconfig interprets it as a command!
6795;@inc_version_list=();
6796# XXX Redo to do opendir/readdir?
6797if (-d $stem) {
6798 chdir($stem);
6799 ;@candidates = glob("5.*");
6800}
6801else {
6802 ;@candidates = ();
6803}
6804
6805# XXX ToDo: These comparisons must be reworked when two-digit
6806# subversions come along, so that 5.7.10 compares as greater than
6807# 5.7.3! By that time, hope that 5.6.x is sufficiently
6808# widespread that we can use the built-in version vectors rather
6809# than reinventing them here. For 5.6.0, however, we must
6810# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6811foreach $d (@candidates) {
6812 if ($d lt $version) {
6813 if ($d ge $api_versionstring) {
6814 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6815 }
6816 elsif ($d ge "5.005") {
6817 unshift(@inc_version_list, grep { -d } $d);
6818 }
6819 }
6820 else {
6821 # Skip newer version. I.e. don't look in
6822 # 5.7.0 if we're installing 5.6.1.
6823 }
6824}
6825
6826if (@inc_version_list) {
6827 print join(' ', @inc_version_list);
6828}
6829else {
6830 # Blank space to preserve value for next Configure run.
6831 print " ";
6832}
6833EOPL
6834chmod +x getverlist
6835case "$inc_version_list" in
6836'') if test -x "$perl5$exe_ext"; then
6837 dflt=`$perl5 getverlist`
6838 else
6839 dflt='none'
6840 fi
6841 ;;
6842$undef) dflt='none' ;;
6843*) eval dflt=\"$inc_version_list\" ;;
6844esac
6845case "$dflt" in
6846''|' ') dflt=none ;;
6847esac
6848case "$dflt" in
68495.005) dflt=none ;;
6850esac
6851$cat <<EOM
6852
6853In order to ease the process of upgrading, this version of perl
6854can be configured to use modules built and installed with earlier
6855versions of perl that were installed under $prefix. Specify here
6856the list of earlier versions that this version of perl should check.
6857If Configure detected no earlier versions of perl installed under
6858$prefix, then the list will be empty. Answer 'none' to tell perl
6859to not search earlier versions.
6860
6861The default should almost always be sensible, so if you're not sure,
6862just accept the default.
6863EOM
6864
6865rp='List of earlier versions to include in @INC?'
6866. ./myread
6867case "$ans" in
6868[Nn]one|''|' ') inc_version_list=' ' ;;
6869*) inc_version_list="$ans" ;;
6870esac
6871case "$inc_version_list" in
6872''|' ')
6873 inc_version_list_init='0';;
6874*) inc_version_list_init=`echo $inc_version_list |
6875 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6876 ;;
6877esac
6878$rm -f getverlist
6879
6880: determine whether to install perl also as /usr/bin/perl
6881
6882echo " "
6883if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6884 $cat <<EOM
6885Many scripts expect perl to be installed as /usr/bin/perl.
6886
6887If you want to, I can install the perl you are about to compile
6888as /usr/bin/perl (in addition to $bin/perl).
6889EOM
6890 if test -f /usr/bin/perl; then
6891 $cat <<EOM
6892
6893However, please note that because you already have a /usr/bin/perl,
6894overwriting that with a new Perl would very probably cause problems.
6895Therefore I'm assuming you don't want to do that (unless you insist).
6896
6897EOM
6898 case "$installusrbinperl" in
6899 "$define"|[yY]*) dflt='y';;
6900 *) dflt='n';;
6901 esac
6902 else
6903 $cat <<EOM
6904
6905Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6906
6907EOM
6908 case "$installusrbinperl" in
6909 "$undef"|[nN]*) dflt='n';;
6910 *) dflt='y';;
6911 esac
6912 fi
6913 rp="Do you want to install perl as /usr/bin/perl?"
6914 . ./myread
6915 case "$ans" in
6916 [yY]*) val="$define";;
6917 *) val="$undef" ;;
6918 esac
6919else
6920 val="$undef"
6921fi
6922set installusrbinperl
6923eval $setvar
6924
6925echo " "
6926echo "Checking for GNU C Library..." >&4
6927cat >try.c <<'EOCP'
6928/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
6929 alone are insufficient to distinguish different versions, such as
6930 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
6931 libc version 2.1.0. A. Dougherty, June 3, 2002.
6932*/
6933#include <stdio.h>
6934int main(void)
6935{
6936#ifdef __GLIBC__
6937# ifdef __GLIBC_MINOR__
6938# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6939# include <gnu/libc-version.h>
6940 printf("%s\n", gnu_get_libc_version());
6941# else
6942 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
6943# endif
6944# else
6945 printf("%d\n", __GLIBC__);
6946# endif
6947 return 0;
6948#else
6949 return 1;
6950#endif
6951}
6952EOCP
6953set try
6954if eval $compile_ok && $run ./try > glibc.ver; then
6955 val="$define"
6956 gnulibc_version=`$cat glibc.ver`
6957 echo "You are using the GNU C Library version $gnulibc_version"
6958else
6959 val="$undef"
6960 gnulibc_version=''
6961 echo "You are not using the GNU C Library"
6962fi
6963$rm -f try try.* glibc.ver
6964set d_gnulibc
6965eval $setvar
6966
6967: see if nm is to be used to determine whether a symbol is defined or not
6968case "$usenm" in
6969'')
6970 dflt=''
6971 case "$d_gnulibc" in
6972 "$define")
6973 echo " "
6974 echo "nm probably won't work on the GNU C Library." >&4
6975 dflt=n
6976 ;;
6977 esac
6978 case "$dflt" in
6979 '')
6980 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6981 echo " "
6982 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
6983 echo "'nm' won't be sufficient on this sytem." >&4
6984 dflt=n
6985 fi
6986 ;;
6987 esac
6988 case "$dflt" in
6989 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6990 if $test $dflt -gt 20; then
6991 dflt=y
6992 else
6993 dflt=n
6994 fi
6995 ;;
6996 esac
b4eb6b3d 6997 ;;
89ce900e
JH
6998*)
6999 case "$usenm" in
7000 true|$define) dflt=y;;
7001 *) dflt=n;;
7002 esac
b4eb6b3d
JH
7003 ;;
7004esac
89ce900e 7005$cat <<EOM
b4eb6b3d 7006
89ce900e
JH
7007I can use $nm to extract the symbols from your C libraries. This
7008is a time consuming task which may generate huge output on the disk (up
7009to 3 megabytes) but that should make the symbols extraction faster. The
7010alternative is to skip the 'nm' extraction part and to compile a small
7011test program instead to determine whether each symbol is present. If
7012you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7013this may be the best solution.
b4eb6b3d 7014
89ce900e 7015You probably shouldn't let me use 'nm' if you are using the GNU C Library.
b4eb6b3d 7016
89ce900e
JH
7017EOM
7018rp="Shall I use $nm to extract C symbols from the libraries?"
7019. ./myread
7020case "$ans" in
7021[Nn]*) usenm=false;;
7022*) usenm=true;;
b4eb6b3d 7023esac
89ce900e
JH
7024
7025runnm=$usenm
7026case "$reuseval" in
7027true) runnm=false;;
b4eb6b3d 7028esac
b4eb6b3d 7029
89ce900e
JH
7030: nm options which may be necessary
7031case "$nm_opt" in
7032'') if $test -f /mach_boot; then
7033 nm_opt='' # Mach
7034 elif $test -d /usr/ccs/lib; then
7035 nm_opt='-p' # Solaris (and SunOS?)
7036 elif $test -f /dgux; then
7037 nm_opt='-p' # DG-UX
7038 elif $test -f /lib64/rld; then
7039 nm_opt='-p' # 64-bit Irix
7040 else
7041 nm_opt=''
7042 fi;;
7043esac
b4eb6b3d 7044
89ce900e
JH
7045: nm options which may be necessary for shared libraries but illegal
7046: for archive libraries. Thank you, Linux.
7047case "$nm_so_opt" in
7048'') case "$myuname" in
7049 *linux*)
7050 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7051 nm_so_opt='--dynamic'
7052 fi
7053 ;;
7054 esac
7055 ;;
7056esac
b4eb6b3d 7057
89ce900e
JH
7058case "$runnm" in
7059true)
7060: get list of predefined functions in a handy place
7061echo " "
7062case "$libc" in
7063'') libc=unknown
7064 case "$libs" in
7065 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7066 esac
7067 ;;
b4eb6b3d 7068esac
89ce900e
JH
7069case "$libs" in
7070'') ;;
7071*) for thislib in $libs; do
7072 case "$thislib" in
7073 -lc|-lc_s)
7074 : Handle C library specially below.
7075 ;;
7076 -l*)
7077 thislib=`echo $thislib | $sed -e 's/^-l//'`
7078 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7079 :
7080 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7081 :
7082 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7083 :
7084 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7085 :
7086 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7087 :
7088 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7089 :
7090 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7091 :
7092 else
7093 try=''
7094 fi
7095 libnames="$libnames $try"
7096 ;;
7097 *) libnames="$libnames $thislib" ;;
7098 esac
7099 done
b4eb6b3d
JH
7100 ;;
7101esac
89ce900e
JH
7102xxx=normal
7103case "$libc" in
7104unknown)
7105 set /lib/libc.$so
7106 for xxx in $libpth; do
7107 $test -r $1 || set $xxx/libc.$so
7108 : The messy sed command sorts on library version numbers.
7109 $test -r $1 || \
7110 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7111 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7112 h
7113 s/[0-9][0-9]*/0000&/g
7114 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7115 G
7116 s/\n/ /' | \
7117 $sort | $sed -e 's/^.* //'`
7118 eval set \$$#
7119 done
7120 $test -r $1 || set /usr/ccs/lib/libc.$so
7121 $test -r $1 || set /lib/libsys_s$_a
7122 ;;
7123*)
7124 set blurfl
7125 ;;
7126esac
7127if $test -r "$1"; then
7128 echo "Your (shared) C library seems to be in $1."
7129 libc="$1"
7130elif $test -r /lib/libc && $test -r /lib/clib; then
7131 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7132 xxx=apollo
7133 libc='/lib/clib /lib/libc'
7134 if $test -r /lib/syslib; then
7135 echo "(Your math library is in /lib/syslib.)"
7136 libc="$libc /lib/syslib"
7137 fi
7138elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7139 echo "Your C library seems to be in $libc, as you said before."
7140elif $test -r $incpath/usr/lib/libc$_a; then
7141 libc=$incpath/usr/lib/libc$_a;
7142 echo "Your C library seems to be in $libc. That's fine."
7143elif $test -r /lib/libc$_a; then
7144 libc=/lib/libc$_a;
7145 echo "Your C library seems to be in $libc. You're normal."
7146else
7147 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7148 :
7149 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7150 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7151 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7152 :
7153 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7154 :
7155 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7156 :
7157 else
7158 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7159 fi
7160 if $test -r "$tans"; then
7161 echo "Your C library seems to be in $tans, of all places."
7162 libc=$tans
7163 else
7164 libc='blurfl'
7165 fi
7166fi
7167if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7168 dflt="$libc"
7169 cat <<EOM
b4eb6b3d 7170
89ce900e
JH
7171If the guess above is wrong (which it might be if you're using a strange
7172compiler, or your machine supports multiple models), you can override it here.
b4eb6b3d 7173
89ce900e
JH
7174EOM
7175else
7176 dflt=''
7177 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7178 cat >&4 <<EOM
7179I can't seem to find your C library. I've looked in the following places:
5e366f65 7180
b4eb6b3d 7181EOM
89ce900e
JH
7182 $sed 's/^/ /' libpath
7183 cat <<EOM
5e366f65 7184
89ce900e 7185None of these seems to contain your C library. I need to get its name...
5e366f65
JH
7186
7187EOM
89ce900e
JH
7188fi
7189fn=f
7190rp='Where is your C library?'
7191. ./getfile
7192libc="$ans"
5e366f65 7193
89ce900e
JH
7194echo " "
7195echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7196set X `cat libnames`
7197shift
7198xxx=files
7199case $# in 1) xxx=file; esac
7200echo "Extracting names from the following $xxx for later perusal:" >&4
7201echo " "
7202$sed 's/^/ /' libnames >&4
7203echo " "
7204$echo $n "This may take a while...$c" >&4
5e366f65 7205
89ce900e
JH
7206for file in $*; do
7207 case $file in
7208 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7209 *) $nm $nm_opt $file 2>/dev/null;;
b4eb6b3d 7210 esac
89ce900e
JH
7211done >libc.tmp
7212
7213$echo $n ".$c"
7214$grep fprintf libc.tmp > libc.ptf
7215xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7216xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7217xxx='[ADTSIW]'
7218if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
7219 eval $xscan;\
7220 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7221 eval $xrun
7222elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7223 eval $xscan;\
7224 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7225 eval $xrun
7226elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7227 eval $xscan;\
7228 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7229 eval $xrun
7230elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7231 eval $xscan;\
7232 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7233 eval $xrun
7234elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7235 eval $xscan;\
7236 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7237 eval $xrun
7238elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7239 eval $xscan;\
7240 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7241 eval $xrun
7242elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7243 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7244 eval $xscan;\
7245 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7246 eval $xrun
7247elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7248 eval $xscan;\
7249 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7250 eval $xrun
7251elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7252 eval $xscan;\
7253 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7254 eval $xrun
7255elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7256 eval $xscan;\
7257 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7258 eval $xrun
7259elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7260 eval $xscan;\
7261 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7262 eval $xrun
7263elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7264 eval $xscan;\
7265 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7266 eval $xrun
7267elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7268 eval $xscan;\
7269 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7270 eval $xrun
7271elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7272 eval $xscan;\
7273 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7274 eval $xrun
b4eb6b3d 7275else
89ce900e
JH
7276 $nm -p $* 2>/dev/null >libc.tmp
7277 $grep fprintf libc.tmp > libc.ptf
7278 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7279 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7280 then
7281 nm_opt='-p'
7282 eval $xrun
7283 else
7284 echo " "
7285 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7286 com=''
7287 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7288 for thisname in $libnames $libc; do
7289 $ar t $thisname >>libc.tmp
7290 done
7291 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7292 echo "Ok." >&4
7293 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7294 # Repeat libc to extract forwarders to DLL entries too
7295 for thisname in $libnames $libc; do
7296 $ar tv $thisname >>libc.tmp
7297 # Revision 50 of EMX has bug in $ar.
7298 # it will not extract forwarders to DLL entries
7299 # Use emximp which will extract exactly them.
7300 emximp -o tmp.imp $thisname \
7301 2>/dev/null && \
7302 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7303 < tmp.imp >>libc.tmp
7304 $rm tmp.imp
7305 done
7306 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7307 echo "Ok." >&4
7308 else
7309 echo "$ar didn't seem to work right." >&4
7310 echo "Maybe this is a Cray...trying bld instead..." >&4
7311 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7312 then
7313 for thisname in $libnames; do
7314 bld t $libnames | \
7315 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7316 $ar t $thisname >>libc.tmp
7317 done
7318 echo "Ok." >&4
7319 else
7320 echo "That didn't work either. Giving up." >&4
7321 exit 1
7322 fi
7323 fi
7324 fi
b4eb6b3d 7325fi
89ce900e
JH
7326nm_extract="$com"
7327case "$PASE" in
7328define)
7329 echo " "
7330 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7331 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7332 ;;
7333*) if $test -f /lib/syscalls.exp; then
7334 echo " "
7335 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7336 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7337 fi
7338 ;;
7339esac
7340;;
7341esac
7342$rm -f libnames libpath
b4eb6b3d
JH
7343
7344: see if dld is available
7345set dld.h i_dld
7346eval $inhdr
7347
89ce900e
JH
7348: is a C symbol defined?
7349csym='tlook=$1;
7350case "$3" in
7351-v) tf=libc.tmp; tc=""; tdc="";;
7352-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
7353*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
7354esac;
7355tx=yes;
7356case "$reuseval-$4" in
7357true-) ;;
7358true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7359esac;
7360case "$tx" in
7361yes)
7362 case "$runnm" in
7363 true)
7364 if $contains $tlook $tf >/dev/null 2>&1;
7365 then tval=true;
7366 else tval=false;
7367 fi;;
7368 *)
7369 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7370 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
7371 then tval=true;
7372 else tval=false;
7373 fi;
7374 $rm -f t t.c;;
7375 esac;;
7376*)
7377 case "$tval" in
7378 $define) tval=true;;
7379 *) tval=false;;
7380 esac;;
7381esac;
7382eval "$2=$tval"'
7383
7384: define an is-in-libc? function
7385inlibc='echo " "; td=$define; tu=$undef;
7386sym=$1; var=$2; eval "was=\$$2";
7387tx=yes;
7388case "$reuseval$was" in
7389true) ;;
7390true*) tx=no;;
7391esac;
7392case "$tx" in
7393yes)
7394 set $sym tres -f;
7395 eval $csym;
7396 case "$tres" in
7397 true)
7398 echo "$sym() found." >&4;
7399 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7400 *)
7401 echo "$sym() NOT found." >&4;
7402 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7403 esac;;
7404*)
7405 case "$was" in
7406 $define) echo "$sym() found." >&4;;
7407 *) echo "$sym() NOT found." >&4;;
7408 esac;;
7409esac'
7410
b4eb6b3d
JH
7411: see if dlopen exists
7412xxx_runnm="$runnm"
7413runnm=false
7414set dlopen d_dlopen
7415eval $inlibc
7416runnm="$xxx_runnm"
7417
7418: determine which dynamic loading, if any, to compile in
7419echo " "
7420dldir="ext/DynaLoader"
7421case "$usedl" in
7422$define|y|true)
7423 dflt='y'
7424 usedl="$define"
7425 ;;
7426$undef|n|false)
7427 dflt='n'
7428 usedl="$undef"
7429 ;;
7430*)
7431 dflt='n'
7432 case "$d_dlopen" in
7433 $define) dflt='y' ;;
7434 esac
7435 case "$i_dld" in
7436 $define) dflt='y' ;;
7437 esac
7438 : Does a dl_xxx.xs file exist for this operating system
7439 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7440 ;;
7441esac
7442rp="Do you wish to use dynamic loading?"
7443. ./myread
7444usedl="$ans"
7445case "$ans" in
7446y*) usedl="$define"
7447 case "$dlsrc" in
7448 '')
7449 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7450 dflt="$dldir/dl_${osname}.xs"
7451 elif $test "$d_dlopen" = "$define" ; then
7452 dflt="$dldir/dl_dlopen.xs"
7453 elif $test "$i_dld" = "$define" ; then
7454 dflt="$dldir/dl_dld.xs"
7455 else
7456 dflt=''
7457 fi
7458 ;;
7459 *) dflt="$dldir/$dlsrc"
7460 ;;
7461 esac
7462 echo "The following dynamic loading files are available:"
7463 : Can not go over to $dldir because getfile has path hard-coded in.
6904989c 7464 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
b4eb6b3d
JH
7465 rp="Source file to use for dynamic loading"
7466 fn="fne"
7467 gfpth="$src"
7468 . ./getfile
7469 usedl="$define"
7470 : emulate basename
7471 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7472
7473 $cat << EOM
7474
7475Some systems may require passing special flags to $cc -c to
7476compile modules that will be used to create a shared library.
7477To use no flags, say "none".
7478
7479EOM
7480 case "$cccdlflags" in
7481 '') case "$gccversion" in
7482 '') case "$osname" in
7483 hpux) dflt='+z' ;;
7484 next) dflt='none' ;;
7485 irix*) dflt='-KPIC' ;;
48bcfe03 7486 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7487 sunos) dflt='-pic' ;;
7488 *) dflt='none' ;;
7489 esac
7490 ;;
7491 *) case "$osname" in
b6cc0f4c 7492 darwin) dflt='none' ;;
48bcfe03 7493 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7494 *) dflt='-fpic' ;;
7495 esac ;;
7496 esac ;;
7497 ' ') dflt='none' ;;
7498 *) dflt="$cccdlflags" ;;
7499 esac
7500 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7501 . ./myread
7502 case "$ans" in
7503 none) cccdlflags=' ' ;;
7504 *) cccdlflags="$ans" ;;
7505 esac
7506
7507 cat << EOM
7508
7509Some systems use ld to create libraries that can be dynamically loaded,
7510while other systems (such as those using ELF) use $cc.
7511
7512EOM
7513 case "$ld" in
55954f19 7514 '') $cat >try.c <<EOM
b4eb6b3d
JH
7515/* Test for whether ELF binaries are produced */
7516#include <fcntl.h>
55954f19
JH
7517#$i_stdlib I_STDLIB
7518#ifdef I_STDLIB
b4eb6b3d 7519#include <stdlib.h>
55954f19 7520#endif
b4eb6b3d
JH
7521int main() {
7522 char b[4];
7523 int i = open("a.out",O_RDONLY);
7524 if(i == -1)
7525 exit(1); /* fail */
7526 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7527 exit(0); /* succeed (yes, it's ELF) */
7528 else
7529 exit(1); /* fail */
7530}
7531EOM
5440bc8e 7532 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7533 cat <<EOM
7534You appear to have ELF support. I'll use $cc to build dynamic libraries.
7535EOM
7536 dflt="$cc"
7537 else
7538 echo "I'll use ld to build dynamic libraries."
7539 dflt='ld'
7540 fi
7541 rm -f try.c a.out
7542 ;;
7543 *) dflt="$ld"
7544 ;;
7545 esac
7546
7547 rp="What command should be used to create dynamic libraries?"
7548 . ./myread
7549 ld="$ans"
7550
7551 cat << EOM
7552
7553Some systems may require passing special flags to $ld to create a
7554library that can be dynamically loaded. If your ld flags include
7555-L/other/path options to locate libraries outside your loader's normal
7556search path, you may need to specify those -L options here as well. To
7557use no flags, say "none".
7558
7559EOM
7560 case "$lddlflags" in
7561 '') case "$osname" in
7562 beos) dflt='-nostart' ;;
7563 hpux) dflt='-b';
7564 case "$gccversion" in
7565 '') dflt="$dflt +vnocompatwarnings" ;;
7566 esac
7567 ;;
7568 linux|irix*) dflt='-shared' ;;
7569 next) dflt='none' ;;
7570 solaris) dflt='-G' ;;
7571 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7572 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7573 *) dflt='none' ;;
7574 esac
7575 ;;
7576 *) dflt="$lddlflags" ;;
7577 esac
7578
7579 : Try to guess additional flags to pick up local libraries.
7580 : Be careful not to append to a plain 'none'
7581 case "$dflt" in
7582 none) dflt='' ;;
7583 esac
7584 for thisflag in $ldflags; do
7585 case "$thisflag" in
b5b9f165 7586 -L*|-R*|-Wl,-R*)
b4eb6b3d
JH
7587 case " $dflt " in
7588 *" $thisflag "*) ;;
7589 *) dflt="$dflt $thisflag" ;;
7590 esac
7591 ;;
7592 esac
7593 done
7594
7595 case "$dflt" in
7596 ''|' ') dflt='none' ;;
7597 esac
7598
7599 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7600 . ./myread
7601 case "$ans" in
7602 none) lddlflags=' ' ;;
7603 *) lddlflags="$ans" ;;
7604 esac
7605
7606 cat <<EOM
7607
7608Some systems may require passing special flags to $cc to indicate that
7609the resulting executable will use dynamic linking. To use no flags,
7610say "none".
7611
7612EOM
7613 case "$ccdlflags" in
7614 '') case "$osname" in
7615 hpux) dflt='-Wl,-E' ;;
7616 linux) dflt='-rdynamic' ;;
7617 next) dflt='none' ;;
7618 sunos) dflt='none' ;;
7619 *) dflt='none' ;;
7620 esac ;;
7621 ' ') dflt='none' ;;
7622 *) dflt="$ccdlflags" ;;
7623 esac
7624 rp="Any special flags to pass to $cc to use dynamic linking?"
7625 . ./myread
7626 case "$ans" in
7627 none) ccdlflags=' ' ;;
7628 *) ccdlflags="$ans" ;;
7629 esac
7630 ;;
7631*) usedl="$undef"
7632 ld='ld'
7633 dlsrc='dl_none.xs'
7634 lddlflags=''
7635 ccdlflags=''
7636 ;;
7637esac
7638
7639also=''
7640case "$usedl" in
7641$undef)
7642 # No dynamic loading being used, so don't bother even to prompt.
7643 useshrplib='false'
7644 ;;
7645*) case "$useshrplib" in
7646 '') case "$osname" in
48bcfe03 7647 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7648 dflt=y
7649 also='Building a shared libperl is required for dynamic loading to work on your system.'
7650 ;;
7651 next*)
7652 case "$osvers" in
7653 4*) dflt=y
7654 also='Building a shared libperl is needed for MAB support.'
7655 ;;
7656 *) dflt=n
7657 ;;
7658 esac
7659 ;;
7660 *) dflt=n
7661 ;;
7662 esac
7663 ;;
7664 $define|true|[Yy]*)
7665 dflt=y
7666 ;;
7667 *) dflt=n
7668 ;;
7669 esac
7670 $cat << EOM
7671
7672The perl executable is normally obtained by linking perlmain.c with
7673libperl${_a}, any static extensions (usually just DynaLoader), and
7674any other libraries needed on this system (such as -lm, etc.). Since
7675your system supports dynamic loading, it is probably possible to build
7676a shared libperl.$so. If you will have more than one executable linked
7677to libperl.$so, this will significantly reduce the size of each
7678executable, but it may have a noticeable affect on performance. The
7679default is probably sensible for your system.
7680$also
7681
7682EOM
7683 rp="Build a shared libperl.$so (y/n)"
7684 . ./myread
7685 case "$ans" in
7686 true|$define|[Yy]*)
7687 useshrplib='true' ;;
7688 *) useshrplib='false' ;;
7689 esac
7690 ;;
7691esac
7692
7693case "$useshrplib" in
7694true)
7695 case "$libperl" in
7696 '')
7697 # Figure out a good name for libperl.so. Since it gets stored in
7698 # a version-specific architecture-dependent library, the version
7699 # number isn't really that important, except for making cc/ld happy.
7700 #
7701 # A name such as libperl.so.3.1
7702 majmin="libperl.$so.$patchlevel.$subversion"
7703 # A name such as libperl.so.301
7704 majonly=`echo $patchlevel $subversion |
7705 $awk '{printf "%d%02d", $1, $2}'`
7706 majonly=libperl.$so.$majonly
7707 # I'd prefer to keep the os-specific stuff here to a minimum, and
7708 # rely on figuring it out from the naming of libc.
7709 case "${osname}${osvers}" in
7710 next4*)
7711 dflt=libperl.5.$so
7712 # XXX How handle the --version stuff for MAB?
7713 ;;
7714 linux*) # ld won't link with a bare -lperl otherwise.
7715 dflt=libperl.$so
7716 ;;
b53432e4
GH
7717 cygwin*) # ld links against an importlib
7718 dflt=libperl$lib_ext
b4eb6b3d
JH
7719 ;;
7720 *) # Try to guess based on whether libc has major.minor.
7721 case "$libc" in
7722 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7723 *libc.$so.[0-9]*) dflt=$majonly ;;
7724 *) dflt=libperl.$so ;;
7725 esac
7726 ;;
7727 esac
7728 ;;
7729 *) dflt=$libperl
7730 ;;
7731 esac
7732 cat << EOM
7733
7734I need to select a good name for the shared libperl. If your system uses
7735library names with major and minor numbers, then you might want something
7736like $majmin. Alternatively, if your system uses a single version
7737number for shared libraries, then you might want to use $majonly.
7738Or, your system might be quite happy with a simple libperl.$so.
7739
7740Since the shared libperl will get installed into a version-specific
7741architecture-dependent directory, the version number of the shared perl
7742library probably isn't important, so the default should be o.k.
7743
7744EOM
7745 rp='What name do you want to give to the shared libperl?'
7746 . ./myread
7747 libperl=$ans
7748 echo "Ok, I'll use $libperl"
7749 ;;
7750*)
7751 libperl="libperl${_a}"
7752 ;;
7753esac
7754
7755# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7756case "$shrpdir" in
7757'') ;;
7758*) $cat >&4 <<EOM
7759WARNING: Use of the shrpdir variable for the installation location of
7760the shared $libperl is not supported. It was never documented and
7761will not work in this version. Let me (perlbug@perl.org)
7762know of any problems this may cause.
7763
7764EOM
7765 case "$shrpdir" in
7766 "$archlibexp/CORE")
7767 $cat >&4 <<EOM
7768But your current setting of $shrpdir is
7769the default anyway, so it's harmless.
7770EOM
7771 ;;
7772 *)
7773 $cat >&4 <<EOM
7774Further, your current attempted setting of $shrpdir
7775conflicts with the value of $archlibexp/CORE
7776that installperl will use.
7777EOM
7778 ;;
7779 esac
7780 ;;
7781esac
7782
7783# How will the perl executable find the installed shared $libperl?
7784# Add $xxx to ccdlflags.
7785# If we can't figure out a command-line option, use $shrpenv to
7786# set env LD_RUN_PATH. The main perl makefile uses this.
7787shrpdir=$archlibexp/CORE
7788xxx=''
7789tmp_shrpenv=''
7790if "$useshrplib"; then
7791 case "$osname" in
7792 aix)
7793 # We'll set it in Makefile.SH...
7794 ;;
b5b9f165 7795 solaris)
b4eb6b3d
JH
7796 xxx="-R $shrpdir"
7797 ;;
32b2ae02 7798 freebsd|netbsd|openbsd)
b4eb6b3d
JH
7799 xxx="-Wl,-R$shrpdir"
7800 ;;
6b20d41b 7801 bsdos|linux|irix*|dec_osf)
b4eb6b3d
JH
7802 xxx="-Wl,-rpath,$shrpdir"
7803 ;;
7804 next)
7805 # next doesn't like the default...
7806 ;;
7807 beos)
7808 # beos doesn't like the default, either.
7809 ;;
7810 hpux*)
7811 # hpux doesn't like the default, either.
7812 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7813 ;;
7814 *)
7815 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7816 ;;
7817 esac
7818 case "$xxx" in
7819 '') ;;
7820 *)
7821 # Only add $xxx if it isn't already in ccdlflags.
7822 case " $ccdlflags " in
7823 *" $xxx "*) ;;
7824 *) ccdlflags="$ccdlflags $xxx"
7825 cat <<EOM >&4
7826
7827Adding $xxx to the flags
7828passed to $ld so that the perl executable will find the
7829installed shared $libperl.
7830
7831EOM
7832 ;;
7833 esac
7834 ;;
7835 esac
7836fi
7837# Fix ccdlflags in AIX for building external extensions.
7838# (For building Perl itself bare -bE:perl.exp is needed,
7839# Makefile.SH takes care of this.)
7840case "$osname" in
7841aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7842esac
7843# Respect a hint or command-line value.
7844case "$shrpenv" in
7845'') shrpenv="$tmp_shrpenv" ;;
7846esac
7847case "$ldlibpthname" in
7848'') ldlibpthname=LD_LIBRARY_PATH ;;
7849none) ldlibpthname='' ;;
7850esac
7851
7852: determine where manual pages are on this system
7853echo " "
7854case "$sysman" in
7855'')
4a0a3829
SD
7856 syspath='/usr/share/man/man1 /usr/man/man1'
7857 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7858 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7859 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7860 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7861 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7862 sysman=`./loc . /usr/man/man1 $syspath`
7863 ;;
7864esac
7865if $test -d "$sysman"; then
7866 echo "System manual is in $sysman." >&4
7867else
7868 echo "Could not find manual pages in source form." >&4
7869fi
7870
7871: determine where manual pages go
7872set man1dir man1dir none
7873eval $prefixit
7874$cat <<EOM
7875
7876$spackage has manual pages available in source form.
7877EOM
7878case "$nroff" in
7879nroff)
7880 echo "However, you don't have nroff, so they're probably useless to you."
7881 case "$man1dir" in
7882 '') man1dir="none";;
7883 esac;;
7884esac
7885echo "If you don't want the manual sources installed, answer 'none'."
7886case "$man1dir" in
7887' ') dflt=none
7888 ;;
7889'')
4a0a3829
SD
7890 lookpath="$prefixexp/share/man/man1"
7891 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7892 lookpath="$lookpath $prefixexp/man/p_man/man1"
7893 lookpath="$lookpath $prefixexp/man/u_man/man1"
7894 lookpath="$lookpath $prefixexp/man/man.1"
7895 case "$sysman" in
7896 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7897 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7898 esac
7899 set dflt
7900 eval $prefixup
7901 ;;
7902*) dflt="$man1dir"
7903 ;;
7904esac
7905echo " "
7906fn=dn+~
7907rp="Where do the main $spackage manual pages (source) go?"
7908. ./getfile
7909if $test "X$man1direxp" != "X$ansexp"; then
7910 installman1dir=''
7911fi
7912man1dir="$ans"
7913man1direxp="$ansexp"
7914case "$man1dir" in
7915'') man1dir=' '
7916 installman1dir='';;
7917esac
7918
7919: Change installation prefix, if necessary.
7920if $test X"$prefix" != X"$installprefix"; then
7921 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7922else
7923 installman1dir="$man1direxp"
7924fi
7925
7926: What suffix to use on installed man pages
7927
7928case "$man1dir" in
7929' ')
7930 man1ext='0'
7931 ;;
7932*)
7933 rp="What suffix should be used for the main $spackage man pages?"
7934 case "$man1ext" in
7935 '') case "$man1dir" in
7936 *1) dflt=1 ;;
7937 *1p) dflt=1p ;;
7938 *1pm) dflt=1pm ;;
7939 *l) dflt=l;;
7940 *n) dflt=n;;
7941 *o) dflt=o;;
7942 *p) dflt=p;;
7943 *C) dflt=C;;
7944 *L) dflt=L;;
7945 *L1) dflt=L1;;
7946 *) dflt=1;;
7947 esac
7948 ;;
7949 *) dflt="$man1ext";;
7950 esac
7951 . ./myread
7952 man1ext="$ans"
7953 ;;
7954esac
7955
7956: see if we can have long filenames
7957echo " "
7958first=123456789abcdef
7959$rm -f $first
7960if (echo hi >$first) 2>/dev/null; then
7961 if $test -f 123456789abcde; then
7962 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7963 val="$undef"
7964 else
7965 echo 'You can have filenames longer than 14 characters.'>&4
7966 val="$define"
7967 fi
7968else
7969 $cat <<'EOM'
7970You can't have filenames longer than 14 chars.
7971You can't even think about them!
7972EOM
7973 val="$undef"
7974fi
7975set d_flexfnam
7976eval $setvar
7977$rm -rf 123456789abcde*
7978
7979: determine where library module manual pages go
7980set man3dir man3dir none
7981eval $prefixit
7982$cat <<EOM
7983
7984$spackage has manual pages for many of the library modules.
7985EOM
7986
7987case "$nroff" in
7988nroff)
7989 $cat <<'EOM'
7990However, you don't have nroff, so they're probably useless to you.
7991EOM
7992 case "$man3dir" in
7993 '') man3dir="none";;
7994 esac;;
7995esac
7996
7997case "$d_flexfnam" in
7998undef)
7999 $cat <<'EOM'
8000However, your system can't handle the long file names like File::Basename.3.
8001EOM
8002 case "$man3dir" in
8003 '') man3dir="none";;
8004 esac;;
8005esac
8006
8007echo "If you don't want the manual sources installed, answer 'none'."
8008prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8009case "$man3dir" in
8010'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8011 if $test -d "$privlib/man/man3"; then
8012 cat <<EOM >&4
8013
8014WARNING: Previous versions of perl installed man3 pages into
8015$privlib/man/man3. This version will suggest a
8016new default of $dflt.
8017EOM
8018 tdflt=$dflt
8019 dflt='n'
8020 rp='Do you wish to preserve the old behavior?(y/n)'
8021 . ./myread
8022 case "$ans" in
8023 y*) dflt="$privlib/man/man3" ;;
8024 *) dflt=$tdflt ;;
8025 esac
8026 fi
8027 ;;
8028*) dflt="$man3dir" ;;
8029esac
8030case "$dflt" in
8031' ') dflt=none ;;
8032esac
8033echo " "
8034fn=dn+~
8035rp="Where do the $package library man pages (source) go?"
8036. ./getfile
8037man3dir="$ans"
8038man3direxp="$ansexp"
8039case "$man3dir" in
8040'') man3dir=' '
8041 installman3dir='';;
8042esac
8043
8044: Change installation prefix, if necessary.
8045if $test X"$prefix" != X"$installprefix"; then
8046 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8047else
8048 installman3dir="$man3direxp"
8049fi
8050
8051: What suffix to use on installed man pages
8052case "$man3dir" in
8053' ')
8054 man3ext='0'
8055 ;;
8056*)
8057 rp="What suffix should be used for the $package library man pages?"
8058 case "$man3ext" in
8059 '') case "$man3dir" in
8060 *3) dflt=3 ;;
8061 *3p) dflt=3p ;;
8062 *3pm) dflt=3pm ;;
8063 *l) dflt=l;;
8064 *n) dflt=n;;
8065 *o) dflt=o;;
8066 *p) dflt=p;;
8067 *C) dflt=C;;
8068 *L) dflt=L;;
8069 *L3) dflt=L3;;
8070 *) dflt=3;;
8071 esac
8072 ;;
8073 *) dflt="$man3ext";;
8074 esac
8075 . ./myread
8076 man3ext="$ans"
8077 ;;
8078esac
8079
8080: see if we have to deal with yellow pages, now NIS.
0384a54a 8081if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
b4eb6b3d
JH
8082 if $test -f /usr/etc/nibindd; then
8083 echo " "
8084 echo "I'm fairly confident you're on a NeXT."
8085 echo " "
8086 rp='Do you get the hosts file via NetInfo?'
8087 dflt=y
8088 case "$hostcat" in
8089 nidump*) ;;
8090 '') ;;
8091 *) dflt=n;;
8092 esac
8093 . ./myread
8094 case "$ans" in
8095 y*) hostcat='nidump hosts .';;
8096 *) case "$hostcat" in
8097 nidump*) hostcat='';;
8098 esac
8099 ;;
8100 esac
8101 fi
8102 case "$hostcat" in
8103 nidump*) ;;
8104 *)
8105 case "$hostcat" in
8106 *ypcat*) dflt=y;;
8107 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8108 dflt=y
8109 else
8110 dflt=n
8111 fi;;
8112 *) dflt=n;;
8113 esac
8114 echo " "
8115 rp='Are you getting the hosts file via yellow pages?'
8116 . ./myread
8117 case "$ans" in
8118 y*) hostcat='ypcat hosts';;
8119 *) hostcat='cat /etc/hosts';;
8120 esac
8121 ;;
8122 esac
8123fi
8124case "$hostcat" in
8125'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8126esac
8127case "$groupcat" in
8128'') test -f /etc/group && groupcat='cat /etc/group';;
8129esac
8130case "$passcat" in
8131'') test -f /etc/passwd && passcat='cat /etc/passwd';;
8132esac
8133
8134: now get the host name
8135echo " "
8136echo "Figuring out host name..." >&4
8137case "$myhostname" in
8138'') cont=true
8139 echo 'Maybe "hostname" will work...'
73614538 8140 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
8141 myhostname=$tans
8142 phostname=hostname
8143 cont=''
8144 fi
8145 ;;
8146*) cont='';;
8147esac
8148if $test "$cont"; then
8149 if ./xenix; then
8150 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8151 if tans=`cat /etc/systemid 2>&1` ; then
8152 myhostname=$tans
8153 phostname='cat /etc/systemid'
8154 echo "Whadyaknow. Xenix always was a bit strange..."
8155 cont=''
8156 fi
8157 elif $test -r /etc/systemid; then
8158 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8159 fi
8160fi
8161if $test "$cont"; then
8162 echo 'No, maybe "uuname -l" will work...'
73614538 8163 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
8164 myhostname=$tans
8165 phostname='uuname -l'
8166 else
8167 echo 'Strange. Maybe "uname -n" will work...'
73614538 8168 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
8169 myhostname=$tans
8170 phostname='uname -n'
8171 else
8172 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 8173 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
8174 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8175 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8176 else
8177 case "$myhostname" in
8178 '') echo "Does this machine have an identity crisis or something?"
8179 phostname='';;
8180 *)
8181 echo "Well, you said $myhostname before..."
8182 phostname='echo $myhostname';;
8183 esac
8184 fi
8185 fi
8186 fi
8187fi
52a549d0
JH
8188case "$myhostname" in
8189'') myhostname=noname ;;
8190esac
b4eb6b3d
JH
8191: you do not want to know about this
8192set $myhostname
8193myhostname=$1
8194
8195: verify guess
8196if $test "$myhostname" ; then
8197 dflt=y
8198 rp='Your host name appears to be "'$myhostname'".'" Right?"
8199 . ./myread
8200 case "$ans" in
8201 y*) ;;
8202 *) myhostname='';;
8203 esac
8204fi
8205
8206: bad guess or no guess
8207while $test "X$myhostname" = X ; do
8208 dflt=''
8209 rp="Please type the (one word) name of your host:"
8210 . ./myread
8211 myhostname="$ans"
8212done
8213
8214: translate upper to lower if necessary
8215case "$myhostname" in
8216*[A-Z]*)
8217 echo "(Normalizing case in your host name)"
8218 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8219 ;;
8220esac
8221
8222case "$myhostname" in
8223*.*)
8224 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8225 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8226 echo "(Trimming domain name from host name--host name is now $myhostname)"
8227 ;;
8228*) case "$mydomain" in
8229 '')
8230 {
8231 test "X$hostcat" = "Xypcat hosts" &&
8232 ypmatch "$myhostname" hosts 2>/dev/null |\
8233 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8234 $test -s hosts
8235 } || {
8236 test "X$hostcat" != "X" &&
8237 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8238 /[ ]$myhostname[ . ]/p" > hosts
8239 }
8240 tmp_re="[ . ]"
f08cbdd1
PP
8241 if $test -f hosts; then
8242 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 8243 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
8244 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8245 hosts | $sort | $uniq | \
8246 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8247 case `$echo X$dflt` in
8248 X*\ *) echo "(Several hosts in the database matched hostname)"
8249 dflt=.
8250 ;;
8251 X.) echo "(You do not have fully-qualified names in the hosts database)"
8252 ;;
8253 esac
8254 else
8255 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 8256 dflt=.
f08cbdd1 8257 fi
b4eb6b3d
JH
8258 case "$dflt" in
8259 .)
8260 tans=`./loc resolv.conf X /etc /usr/etc`
8261 if $test -f "$tans"; then
8262 echo "(Attempting domain name extraction from $tans)"
8263 dflt=.`$sed -n -e 's/ / /g' \
8264 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8265 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8266 case "$dflt" in
8267 .) dflt=.`$sed -n -e 's/ / /g' \
8268 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8269 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8270 ;;
8271 esac
8272 fi
8273 ;;
8274 esac
8275 case "$dflt" in
8276 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 8277 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
8278 case "$dflt" in
8279 '') dflt='.';;
8280 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8281 esac
8282 ;;
8283 esac
59c9e5d6
PP
8284 case "$dflt$osname" in
8285 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 8286 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
8287 ;;
8288 esac
b4eb6b3d
JH
8289 case "$dflt" in
8290 .) echo "(Lost all hope -- silly guess then)"
52a549d0 8291 dflt='.nonet'
b4eb6b3d
JH
8292 ;;
8293 esac
8294 $rm -f hosts
8295 ;;
8296 *) dflt="$mydomain";;
8297 esac;;
8298esac
8299echo " "
8300rp="What is your domain name?"
8301. ./myread
8302tans="$ans"
8303case "$ans" in
8304'') ;;
8305.*) ;;
8306*) tans=".$tans";;
8307esac
8308mydomain="$tans"
8309
8310: translate upper to lower if necessary
8311case "$mydomain" in
8312*[A-Z]*)
8313 echo "(Normalizing case in your domain name)"
8314 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8315 ;;
8316esac
8317
8318: a little sanity check here
8319case "$phostname" in
8320'') ;;
8321*)
8322 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8323 $myhostname$mydomain|$myhostname) ;;
8324 *)
8325 case "$phostname" in
8326 sed*)
8327 echo "(That doesn't agree with your whoami.h file, by the way.)"
8328 ;;
8329 *)
8330 echo "(That doesn't agree with your $phostname command, by the way.)"
8331 ;;
8332 esac
8333 ;;
8334 esac
8335 ;;
8336esac
8337
8338$cat <<EOM
8339
8340I need to get your e-mail address in Internet format if possible, i.e.
8341something like user@host.domain. Please answer accurately since I have
8342no easy means to double check it. The default value provided below
8343is most probably close to reality but may not be valid from outside
8344your organization...
8345
8346EOM
8347cont=x
8348while test "$cont"; do
8349 case "$cf_email" in
8350 '') dflt="$cf_by@$myhostname$mydomain";;
8351 *) dflt="$cf_email";;
8352 esac
8353 rp='What is your e-mail address?'
8354 . ./myread
8355 cf_email="$ans"
8356 case "$cf_email" in
8357 *@*.*) cont='' ;;
8358 *)
8359 rp='Address does not look like an Internet one. Use it anyway?'
8360 case "$fastread" in
8361 yes) dflt=y ;;
8362 *) dflt=n ;;
8363 esac
8364 . ./myread
8365 case "$ans" in
8366 y*) cont='' ;;
8367 *) echo " " ;;
8368 esac
8369 ;;
8370 esac
8371done
8372
8373$cat <<EOM
8374
8375If you or somebody else will be maintaining perl at your site, please
8376fill in the correct e-mail address here so that they may be contacted
8377if necessary. Currently, the "perlbug" program included with perl
8378will send mail to this address in addition to perlbug@perl.org. You may
8379enter "none" for no administrator.
8380
8381EOM
8382case "$perladmin" in
8383'') dflt="$cf_email";;
8384*) dflt="$perladmin";;
8385esac
8386rp='Perl administrator e-mail address'
8387. ./myread
8388perladmin="$ans"
8389
674912d7
RB
8390: determine whether to only install version-specific parts.
8391echo " "
8392$cat <<EOM
8393Do you want to install only the version-specific parts of the perl
8394distribution? Usually you do *not* want to do this.
8395EOM
8396case "$versiononly" in
8397"$define"|[Yy]*|true) dflt='y' ;;
8398*) dflt='n';
8399esac
8400rp="Do you want to install only the version-specific parts of perl?"
8401. ./myread
8402case "$ans" in
8403[yY]*) val="$define";;
8404*) val="$undef" ;;
8405esac
8406set versiononly
8407eval $setvar
8408
ad493445
MB
8409case "$versiononly" in
8410"$define") inc_version_list=''
8411 inc_version_list_init=0
8412 ;;
8413esac
8414
b4eb6b3d
JH
8415: figure out how to guarantee perl startup
8416case "$startperl" in
8417'')
8418 case "$sharpbang" in
8419 *!)
8420 $cat <<EOH
8421
8422I can use the #! construct to start perl on your system. This will
8423make startup of perl scripts faster, but may cause problems if you
8424want to share those scripts and perl is not in a standard place
8425($binexp/perl) on all your platforms. The alternative is to force
8426a shell by starting the script with a single ':' character.
8427
8428EOH
674912d7
RB
8429 case "$versiononly" in
8430 "$define") dflt="$binexp/perl$version";;
8431 *) dflt="$binexp/perl";;
8432 esac
b4eb6b3d
JH
8433 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8434 . ./myread
8435 case "$ans" in
8436 none) startperl=": # use perl";;
8437 *) startperl="#!$ans"
8438 if $test 30 -lt `echo "$ans" | wc -c`; then
8439 $cat >&4 <<EOM
8440
8441WARNING: Some systems limit the #! command to 32 characters.
8442If you experience difficulty running Perl scripts with #!, try
8443installing Perl in a directory with a shorter pathname.
8444
8445EOM
8446 fi ;;
8447 esac
8448 ;;
8449 *) startperl=": # use perl"
8450 ;;
8451 esac
8452 ;;
8453esac
8454echo "I'll use $startperl to start perl scripts."
8455
8456: figure best path for perl in scripts
8457case "$perlpath" in
8458'')
5e20a8ca
RGS
8459 case "$versiononly" in
8460 "$define") perlpath="$binexp/perl$version";;
8461 *) perlpath="$binexp/perl";;
8462 esac
b4eb6b3d
JH
8463 case "$startperl" in
8464 *!*) ;;
8465 *)
8466 $cat <<EOH
8467
8468I will use the "eval 'exec'" idiom to start Perl on your system.
8469I can use the full path of your Perl binary for this purpose, but
8470doing so may cause problems if you want to share those scripts and
8471Perl is not always in a standard place ($binexp/perl).
8472
8473EOH
8474 dflt="$binexp/perl"
8475 rp="What path shall I use in \"eval 'exec'\"?"
8476 . ./myread
8477 perlpath="$ans"
8478 ;;
8479 esac
8480 ;;
8481esac
8482case "$startperl" in
8483*!*) ;;
8484*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8485esac
8486
8487: determine where public executable scripts go
8488set scriptdir scriptdir
8489eval $prefixit
8490case "$scriptdir" in
8491'')
8492 dflt="$bin"
8493 : guess some guesses
8494 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8495 $test -d /usr/share/bin && dflt=/usr/share/bin
8496 $test -d /usr/local/script && dflt=/usr/local/script
8497 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8498 $test -d $prefixexp/script && dflt=$prefixexp/script
8499 set dflt
8500 eval $prefixup
8501 ;;
8502*) dflt="$scriptdir"
8503 ;;
8504esac
8505$cat <<EOM
8506
8507Some installations have a separate directory just for executable scripts so
8508that they can mount it across multiple architectures but keep the scripts in
8509one spot. You might, for example, have a subdirectory of /usr/share for this.
8510Or you might just lump your scripts in with all your other executables.
8511
8512EOM
8513fn=d~
8514rp='Where do you keep publicly executable scripts?'
8515. ./getfile
8516if $test "X$ansexp" != "X$scriptdirexp"; then
8517 installscript=''
8518fi
8519scriptdir="$ans"
8520scriptdirexp="$ansexp"
8521: Change installation prefix, if necessary.
8522if $test X"$prefix" != X"$installprefix"; then
8523 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8524else
8525 installscript="$scriptdirexp"
8526fi
8527
8528: determine where add-on public executables go
8529case "$sitebin" in
8530'') dflt=$siteprefix/bin ;;
8531*) dflt=$sitebin ;;
8532esac
8533fn=d~
8534rp='Pathname where the add-on public executables should be installed?'
8535. ./getfile
8536sitebin="$ans"
8537sitebinexp="$ansexp"
8538: Change installation prefix, if necessary.
8539if $test X"$prefix" != X"$installprefix"; then
8540 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8541else
8542 installsitebin="$sitebinexp"
8543fi
8544
6e1038e0
MB
8545: determine where add-on html pages go
8546: There is no standard location, so try to copy the previously-selected
8547: directory structure for the core html pages.
8548case "$sitehtml1" in
8549'') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8550*) dflt=$sitehtml1 ;;
8551esac
8552case "$dflt" in
8553''|' ') dflt=none ;;
8554esac
8555fn=dn+~
8556rp='Pathname where the site-specific html pages should be installed?'
8557. ./getfile
8558sitehtml1="$ans"
8559sitehtml1exp="$ansexp"
8560: Use ' ' for none so value is preserved next time through Configure
8561$test X"$sitehtml1" = "X" && sitehtml1=' '
8562: Change installation prefix, if necessary.
8563if $test X"$prefix" != X"$installprefix"; then
8564 installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8565else
8566 installsitehtml1="$sitehtml1exp"
8567fi
8568
8569: determine where add-on library html pages go
8570: There is no standard location, so try to copy the previously-selected
8571: directory structure for the core html pages.
8572case "$sitehtml3" in
8573'') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8574*) dflt=$sitehtml3 ;;
8575esac
8576case "$dflt" in
8577''|' ') dflt=none ;;
8578esac
8579fn=dn+~
8580rp='Pathname where the site-specific library html pages should be installed?'
8581. ./getfile
8582sitehtml3="$ans"
8583sitehtml3exp="$ansexp"
8584: Use ' ' for none so value is preserved next time through Configure
8585$test X"$sitehtml3" = "X" && sitehtml3=' '
8586: Change installation prefix, if necessary.
8587if $test X"$prefix" != X"$installprefix"; then
8588 installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8589else
8590 installsitehtml3="$sitehtml3exp"
8591fi
8592
8593: determine where add-on manual pages go
8594case "$siteman1" in
8595'') dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8596*) dflt=$siteman1 ;;
8597esac
8598case "$dflt" in
8599''|' ') dflt=none ;;
8600esac
8601fn=dn+~
8602rp='Pathname where the site-specific manual pages should be installed?'
8603. ./getfile
8604siteman1="$ans"
8605siteman1exp="$ansexp"
8606: Use ' ' for none so value is preserved next time through Configure
8607$test X"$siteman1" = "X" && siteman1=' '
8608: Change installation prefix, if necessary.
8609if $test X"$prefix" != X"$installprefix"; then
8610 installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8611else
8612 installsiteman1="$siteman1exp"
8613fi
8614
8615: determine where add-on library man pages go
8616case "$siteman3" in
8617'') dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8618*) dflt=$siteman3 ;;
8619esac
8620case "$dflt" in
8621''|' ') dflt=none ;;
8622esac
8623fn=dn+~
8624rp='Pathname where the site-specific library manual pages should be installed?'
8625. ./getfile
8626siteman3="$ans"
8627siteman3exp="$ansexp"
8628: Use ' ' for none so value is preserved next time through Configure
8629$test X"$siteman3" = "X" && siteman3=' '
8630: Change installation prefix, if necessary.
8631if $test X"$prefix" != X"$installprefix"; then
8632 installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8633else
8634 installsiteman3="$siteman3exp"
8635fi
8636
8637: determine where add-on public executable scripts go
8638case "$sitescript" in
8639'') dflt=$siteprefix/script
8640 $test -d $dflt || dflt=$sitebin ;;
8641*) dflt="$sitescript" ;;
8642esac
8643fn=d~+
8644rp='Pathname where add-on public executable scripts should be installed?'
8645. ./getfile
8646sitescript="$ans"
8647sitescriptexp="$ansexp"
8648: Change installation prefix, if necessary.
8649if $test X"$prefix" != X"$installprefix"; then
8650 installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8651else
8652 installsitescript="$sitescriptexp"
8653fi
8654
96056487
JH
8655: define an is-a-typedef? function
8656typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8657case "$inclist" in
8658"") inclist="sys/types.h";;
8659esac;
8660eval "varval=\$$var";
8661case "$varval" in
8662"")
8663 $rm -f temp.c;
8664 for inc in $inclist; do
8665 echo "#include <$inc>" >>temp.c;
8666 done;
8667 echo "#ifdef $type" >> temp.c;
8668 echo "printf(\"We have $type\");" >> temp.c;
8669 echo "#endif" >> temp.c;
8670 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8671 if $contains $type temp.E >/dev/null 2>&1; then
8672 eval "$var=\$type";
8673 else
8674 eval "$var=\$def";
8675 fi;
8676 $rm -f temp.?;;
8677*) eval "$var=\$varval";;
8678esac'
8679
8680: define an is-a-typedef? function that prompts if the type is not available.
8681typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8682case "$inclist" in
8683"") inclist="sys/types.h";;
8684esac;
8685eval "varval=\$$var";
8686case "$varval" in
8687"")
8688 $rm -f temp.c;
8689 for inc in $inclist; do
8690 echo "#include <$inc>" >>temp.c;
8691 done;
8692 echo "#ifdef $type" >> temp.c;
8693 echo "printf(\"We have $type\");" >> temp.c;
8694 echo "#endif" >> temp.c;
8695 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8696 echo " " ;
8697 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8698 if $contains $type temp.E >/dev/null 2>&1; then
8699 echo "$type found." >&4;
8700 eval "$var=\$type";
8701 else
8702 echo "$type NOT found." >&4;
8703 dflt="$def";
8704 . ./myread ;
8705 eval "$var=\$ans";
8706 fi;
8707 $rm -f temp.?;;
8708*) eval "$var=\$varval";;
8709esac'
8710
8711: see what type lseek is declared as in the kernel
8712rp="What is the type used for lseek's offset on this system?"
8713set off_t lseektype long stdio.h sys/types.h
8714eval $typedef_ask
8715
8716echo " "
8717echo "Checking to see how big your file offsets are..." >&4
8718$cat >try.c <<EOCP
8719#include <sys/types.h>
8720#include <stdio.h>
8721int main()
8722{
8723 printf("%d\n", (int)sizeof($lseektype));
8724 return(0);
8725}
8726EOCP
8727set try
8728if eval $compile_ok; then
8729 lseeksize=`$run ./try`
8730 echo "Your file offsets are $lseeksize bytes long."
8731else
8732 dflt=$longsize
8733 echo " "
8734 echo "(I can't seem to compile the test program. Guessing...)"
8735 rp="What is the size of your file offsets (in bytes)?"
8736 . ./myread
8737 lseeksize="$ans"
8738fi
8739$rm -f try.c try
8740
8741: see what type file positions are declared as in the library
8742rp="What is the type for file position used by fsetpos()?"
8743set fpos_t fpostype long stdio.h sys/types.h
8744eval $typedef_ask
8745
8746echo " "
8747case "$fpostype" in
8748*_t) zzz="$fpostype" ;;
8749*) zzz="fpos_t" ;;
8750esac
8751echo "Checking the size of $zzz..." >&4
8752cat > try.c <<EOCP
8753#include <sys/types.h>
8754#include <stdio.h>
d1daaddf
JH
8755#$i_stdlib I_STDLIB
8756#ifdef I_STDLIB
8757#include <stdlib.h>
8758#endif
96056487
JH
8759int main() {
8760 printf("%d\n", (int)sizeof($fpostype));
8761 exit(0);
8762}
8763EOCP
8764set try
8765if eval $compile_ok; then
8766 yyy=`$run ./try`
8767 case "$yyy" in
8768 '') fpossize=4
8769 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8770 ;;
8771 *) fpossize=$yyy
8772 echo "Your $zzz is $fpossize bytes long."
8773 ;;
8774 esac
8775else
8776 dflt="$longsize"
8777 echo " " >&4
8778 echo "(I can't compile the test program. Guessing...)" >&4
8779 rp="What is the size of your file positions (in bytes)?"
8780 . ./myread
8781 fpossize="$ans"
8782fi
8783
96056487
JH
8784# Backward compatibility (uselfs is deprecated).
8785case "$uselfs" in
8786"$define"|true|[yY]*)
8787 cat <<EOM >&4
8788
8789*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8790EOM
8791 uselargefiles="$define"
8792 ;;
8793esac
8794
8795case "$lseeksize:$fpossize" in
87968:8) cat <<EOM
8797
8798You can have files larger than 2 gigabytes.
8799EOM
8800 val="$define" ;;
8801*) case "$uselargefiles" in
8802 "$undef"|false|[nN]*) dflt='n' ;;
8803 *) dflt='y' ;;
8804 esac
8805 cat <<EOM
8806
8807Perl can be built to understand large files (files larger than 2 gigabytes)
8808on some systems. To do so, Configure can be run with -Duselargefiles.
8809
8810If this doesn't make any sense to you, just accept the default '$dflt'.
8811EOM
8812 rp='Try to understand large files, if available?'
8813 . ./myread
8814 case "$ans" in
8815 y|Y) val="$define" ;;
8816 *) val="$undef" ;;
8817 esac
8818 ;;
8819esac
8820set uselargefiles
8821eval $setvar
8822case "$uselargefiles" in
8823"$define")
8824: Look for a hint-file generated 'call-back-unit'. If the
8825: user has specified that a large files perl is to be built,
8826: we may need to set or change some other defaults.
8827 if $test -f uselargefiles.cbu; then
8828 echo "Your platform has some specific hints for large file builds, using them..."
8829 . ./uselargefiles.cbu
8830 echo " "
8831 echo "Rechecking to see how big your file offsets are..." >&4
8832 $cat >try.c <<EOCP
8833#include <sys/types.h>
8834#include <stdio.h>
8835int main()
8836{
8837 printf("%d\n", (int)sizeof($lseektype));
8838 return(0);
8839}
8840EOCP
8841 set try
8842 if eval $compile_ok; then
8843 lseeksize=`$run ./try`
8844 $echo "Your file offsets are now $lseeksize bytes long."
8845 else
8846 dflt="$lseeksize"
8847 echo " "
8848 echo "(I can't seem to compile the test program. Guessing...)"
8849 rp="What is the size of your file offsets (in bytes)?"
8850 . ./myread
8851 lseeksize="$ans"
8852 fi
8853 case "$fpostype" in
8854 *_t) zzz="$fpostype" ;;
8855 *) zzz="fpos_t" ;;
8856 esac
8857 $echo $n "Rechecking the size of $zzz...$c" >&4
8858 $cat > try.c <<EOCP
8859#include <sys/types.h>
8860#include <stdio.h>
55954f19
JH
8861#$i_stdlib I_STDLIB
8862#ifdef I_STDLIB
8863#include <stdlib.h>
8864#endif
96056487
JH
8865int main() {
8866 printf("%d\n", (int)sizeof($fpostype));
073b6de5 8867 return(0);
96056487
JH
8868}
8869EOCP
8870 set try
8871 if eval $compile_ok; then
8872 yyy=`$run ./try`
8873 dflt="$lseeksize"
8874 case "$yyy" in
8875 '') echo " "
8876 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8877 ;;
8878 *) fpossize=$yyy
8879 echo " $fpossize bytes." >&4
8880 ;;
8881 esac
8882 else
8883 dflt="$fpossize"
8884 echo " "
8885 echo "(I can't compile the test program. Guessing...)" >&4
8886 rp="What is the size of your file positions (in bytes)?"
8887 . ./myread
8888 fpossize="$ans"
8889 fi
8890 $rm -f try.c try
8891 fi
8892 ;;
8893esac
8894
b4eb6b3d
JH
8895case "$vendorprefix" in
8896'') d_vendorbin="$undef"
8897 vendorbin=''
8898 vendorbinexp=''
8899 ;;
8900*) d_vendorbin="$define"
8901 : determine where vendor-supplied executables go.
8902 case "$vendorbin" in
8903 '') dflt=$vendorprefix/bin ;;
8904 *) dflt="$vendorbin" ;;
8905 esac
8906 fn=d~+
8907 rp='Pathname for the vendor-supplied executables directory?'
8908 . ./getfile
8909 vendorbin="$ans"
8910 vendorbinexp="$ansexp"
8911 ;;
8912esac
8913: Change installation prefix, if necessary.
8914if $test X"$prefix" != X"$installprefix"; then
8915 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8916else
8917 installvendorbin="$vendorbinexp"
8918fi
8919
6e1038e0
MB
8920case "$vendorprefix" in
8921'') vendorhtml1=''
8922 vendorhtml1exp=''
8923 ;;
8924*) : determine where vendor-supplied html pages go.
8925 : There is no standard location, so try to copy the previously-selected
8926 : directory structure for the core html pages.
8927 : XXX Better default suggestions would be welcome.
8928 case "$vendorhtml1" in
8929 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8930 *) dflt=$vendorhtml1 ;;
8931 esac
8932 case "$dflt" in
8933 ''|' ') dflt=none ;;
8934 esac
8935 fn=dn+~
8936 rp='Pathname for the vendor-supplied html pages?'
8937 . ./getfile
8938 vendorhtml1="$ans"
8939 vendorhtml1exp="$ansexp"
8940 ;;
8941esac
8942: Use ' ' for none so value is preserved next time through Configure
8943$test X"$vendorhtml1" = "X" && vendorhtml1=' '
8944: Change installation prefix, if necessary.
8945if $test X"$prefix" != X"$installprefix"; then
8946 installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
8947else
8948 installvendorhtml1="$vendorhtml1exp"
8949fi
8950
8951case "$vendorprefix" in
8952'') vendorhtml3=''
8953 vendorhtml3exp=''
8954 ;;
8955*) : determine where vendor-supplied module html pages go.
8956 : There is no standard location, so try to copy the previously-selected
8957 : directory structure for the core html pages.
8958 : XXX Better default suggestions would be welcome.
8959 case "$vendorhtml3" in
8960 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8961 *) dflt=$vendorhtml3 ;;
8962 esac
8963 case "$dflt" in
8964 ''|' ') dflt=none ;;
8965 esac
8966 fn=dn+~
8967 rp='Pathname for the vendor-supplied html pages?'
8968 . ./getfile
8969 vendorhtml3="$ans"
8970 vendorhtml3exp="$ansexp"
8971 ;;
8972esac
8973: Use ' ' for none so value is preserved next time through Configure
8974$test X"$vendorhtml3" = "X" && vendorhtml3=' '
8975: Change installation prefix, if necessary.
8976if $test X"$prefix" != X"$installprefix"; then
8977 installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
8978else
8979 installvendorhtml3="$vendorhtml3exp"
8980fi
8981
8982case "$vendorprefix" in
8983'') vendorman1=''
8984 vendorman1exp=''
8985 ;;
8986*) : determine where vendor-supplied manual pages go.
8987 case "$vendorman1" in
8988 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8989 *) dflt=$vendorman1 ;;
8990 esac
8991 case "$dflt" in
8992 ''|' ') dflt=none ;;
8993 esac
8994 fn=nd~+
8995 rp='Pathname for the vendor-supplied manual section 1 pages?'
8996 . ./getfile
8997 vendorman1="$ans"
8998 vendorman1exp="$ansexp"
8999 ;;
9000esac
9001: Use ' ' for none so value is preserved next time through Configure
9002$test X"$vendorman1" = "X" && vendorman1=' '
9003: Change installation prefix, if necessary.
9004if $test X"$prefix" != X"$installprefix"; then
9005 installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
9006else
9007 installvendorman1="$vendorman1exp"
9008fi
9009
9010case "$vendorprefix" in
9011'') vendorman3=''
9012 vendorman3exp=''
9013 ;;
9014*) : determine where vendor-supplied module manual pages go.
9015 case "$vendorman3" in
9016 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9017 *) dflt=$vendorman3 ;;
9018 esac
9019 case "$dflt" in
9020 ''|' ') dflt=none ;;
9021 esac
9022 fn=nd~+
9023 rp='Pathname for the vendor-supplied manual section 3 pages?'
9024 . ./getfile
9025 vendorman3="$ans"
9026 vendorman3exp="$ansexp"
9027 ;;
9028esac
9029: Use ' ' for none so value is preserved next time through Configure
9030$test X"$vendorman3" = "X" && vendorman3=' '
9031: Change installation prefix, if necessary.
9032if $test X"$prefix" != X"$installprefix"; then
9033 installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9034else
9035 installvendorman3="$vendorman3exp"
9036fi
9037
9038case "$vendorprefix" in
9039'') d_vendorscript="$undef"
9040 vendorscript=''
9041 vendorscriptexp=''
9042 ;;
9043*) d_vendorscript="$define"
9044 : determine where vendor-supplied scripts go.
9045 case "$vendorscript" in
9046 '') dflt=$vendorprefix/script
9047 $test -d $dflt || dflt=$vendorbin ;;
9048 *) dflt="$vendorscript" ;;
9049 esac
9050 $cat <<EOM
9051
9052The installation process will create a directory for
9053vendor-supplied scripts.
9054
9055EOM
9056 fn=d~+
9057 rp='Pathname for the vendor-supplied scripts directory?'
9058 . ./getfile
9059 vendorscript="$ans"
9060 vendorscriptexp="$ansexp"
9061 ;;
9062esac
9063: Change installation prefix, if necessary.
9064if $test X"$prefix" != X"$installprefix"; then
9065 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9066else
9067 installvendorscript="$vendorscriptexp"
9068fi
9069
b4eb6b3d
JH
9070: see if qgcvt exists
9071set qgcvt d_qgcvt
9072eval $inlibc
9073
89ce900e
JH
9074echo " "
9075
9076if $test X"$d_longdbl" = X"$define"; then
9077
9078echo "Checking how to print long doubles..." >&4
9079
9080if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9081 $cat >try.c <<'EOCP'
9082#include <sys/types.h>
9083#include <stdio.h>
9084int main() {
9085 double d = 123.456;
9086 printf("%.3f\n", d);
9087}
9088EOCP
9089 set try
9090 if eval $compile; then
9091 yyy=`$run ./try`
9092 case "$yyy" in
9093 123.456)
9094 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9095 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9096 echo "We will use %f."
9097 ;;
9098 esac
9099 fi
9100fi
9101
9102if $test X"$sPRIfldbl" = X; then
9103 $cat >try.c <<'EOCP'
9104#include <sys/types.h>
9105#include <stdio.h>
9106int main() {
9107 long double d = 123.456;
9108 printf("%.3Lf\n", d);
9109}
9110EOCP
9111 set try
9112 if eval $compile; then
9113 yyy=`$run ./try`
9114 case "$yyy" in
9115 123.456)
9116 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9117 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9118 echo "We will use %Lf."
9119 ;;
9120 esac
9121 fi
9122fi
9123
9124if $test X"$sPRIfldbl" = X; then
9125 $cat >try.c <<'EOCP'
9126#include <sys/types.h>
9127#include <stdio.h>
9128int main() {
9129 long double d = 123.456;
9130 printf("%.3llf\n", d);
9131}
9132EOCP
9133 set try
9134 if eval $compile; then
9135 yyy=`$run ./try`
9136 case "$yyy" in
9137 123.456)
9138 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9139 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9140 echo "We will use %llf."
9141 ;;
9142 esac
9143 fi
9144fi
9145
9146if $test X"$sPRIfldbl" = X; then
9147 $cat >try.c <<'EOCP'
9148#include <sys/types.h>
9149#include <stdio.h>
9150int main() {
9151 long double d = 123.456;
9152 printf("%.3lf\n", d);
9153}
9154EOCP
9155 set try
9156 if eval $compile; then
9157 yyy=`$run ./try`
9158 case "$yyy" in
9159 123.456)
9160 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9161 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9162 echo "We will use %lf."
9163 ;;
9164 esac
9165 fi
9166fi
9167
9168if $test X"$sPRIfldbl" = X; then
9169 echo "Cannot figure out how to print long doubles." >&4
9170else
9171 sSCNfldbl=$sPRIfldbl # expect consistency
9172fi
9173
9174$rm -f try try.*
9175
9176fi # d_longdbl
9177
9178case "$sPRIfldbl" in
9179'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9180 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9181 d_SCNfldbl="$undef";
9182 ;;
9183*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9184 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9185 d_SCNfldbl="$define";
9186 ;;
9187esac
9188
b4eb6b3d 9189: Check how to convert floats to strings.
a5b10d80
YST
9190
9191if test "X$d_Gconvert" = X; then
9192
b4eb6b3d
JH
9193echo " "
9194echo "Checking for an efficient way to convert floats to strings."
9195echo " " > try.c
9196case "$uselongdouble" in
9197"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9198esac
9199case "$d_longdbl" in
9200"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9201esac
9202case "$d_PRIgldbl" in
9203"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9204esac
9205$cat >>try.c <<EOP
9206#ifdef TRY_gconvert
9207#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9208char *myname = "gconvert";
9209#endif
9210#ifdef TRY_gcvt
9211#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9212char *myname = "gcvt";
9213#endif
9214#ifdef TRY_qgcvt
9215#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9216char *myname = "qgcvt";
9217#define DOUBLETYPE long double
9218#endif
9219#ifdef TRY_sprintf
a5b10d80
YST
9220#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9221#ifdef HAS_PRIgldbl
b4eb6b3d
JH
9222#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9223#else
a5b10d80
YST
9224#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9225#endif
9226#else
b4eb6b3d
JH
9227#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9228#endif
9229char *myname = "sprintf";
9230#endif
9231
9232#ifndef DOUBLETYPE
9233#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9234#define DOUBLETYPE long double
9235#else
9236#define DOUBLETYPE double
9237#endif
9238#endif
9239
9240#include <stdio.h>
9241
9242#define I_STDLIB $i_stdlib
9243#ifdef I_STDLIB
9244#include <stdlib.h>
9245#endif
9246
9247int
9248checkit(expect, got)
9249char *expect;
9250char *got;
9251{
9252 if (strcmp(expect, got)) {
9253 printf("%s oddity: Expected %s, got %s\n",
9254 myname, expect, got);
9255 exit(1);
9256 }
9257}
9258
9259int main()
9260{
9261 char buf[64];
9262 buf[63] = '\0';
9263
9264 /* This must be 1st test on (which?) platform */
9265 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9266 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9267 checkit("0.1", buf);
9268
a5b10d80
YST
9269 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9270 checkit("0.01", buf);
9271
9272 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9273 checkit("0.001", buf);
9274
9275 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9276 checkit("0.0001", buf);
9277
9278 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9279 if (strlen(buf) > 5)
9280 checkit("9e-005", buf); /* for Microsoft ?? */
9281 else
9282 checkit("9e-05", buf);
9283
b4eb6b3d
JH
9284 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9285 checkit("1", buf);
9286
9287 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9288 checkit("1.1", buf);
9289
9290 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9291 checkit("1.01", buf);
9292
9293 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9294 checkit("1.001", buf);
9295
9296 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9297 checkit("1.0001", buf);
9298
9299 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9300 checkit("1.00001", buf);
9301
9302 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9303 checkit("1.000001", buf);
9304
9305 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9306 checkit("0", buf);
9307
9308 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9309 checkit("-1", buf);
9310
9311 /* Some Linux gcvt's give 1.e+5 here. */
9312 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9313 checkit("100000", buf);
9314
9315 /* Some Linux gcvt's give -1.e+5 here. */
9316 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9317 checkit("-100000", buf);
9318
9319 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9320 checkit("123.456", buf);
9321
ab6ca9f4 9322 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
94b339ad
YST
9323 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9324 /* 34 should be enough to scare even long double
9325 * places into using the e notation. */
ab6ca9f4 9326 if (strlen(buf) > 5)
94b339ad 9327 checkit("1e+034", buf); /* for Microsoft */
ab6ca9f4 9328 else
94b339ad 9329 checkit("1e+34", buf);
8e2a5ede 9330
d1eb8299
YST
9331 /* For Perl, if you add additional tests here, also add them to
9332 * t/base/num.t for benefit of platforms not using Configure or
9333 * overriding d_Gconvert */
9334
b4eb6b3d
JH
9335 exit(0);
9336}
9337EOP
ab6ca9f4 9338: first add preferred functions to our list
a5b10d80 9339xxx_list=""
ab6ca9f4 9340for xxx_convert in $gconvert_preference; do
a5b10d80
YST
9341 case $xxx_convert in
9342 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
ab6ca9f4 9343 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
a5b10d80
YST
9344 esac
9345done
9346: then add any others
9347for xxx_convert in gconvert gcvt sprintf; do
9348 case "$xxx_list" in
9349 *$xxx_convert*) ;;
9350 *) xxx_list="$xxx_list $xxx_convert" ;;
9351 esac
9352done
9353
9354case "$d_longdbl$uselongdouble" in
9355"$define$define")
9356 : again, add prefered functions to our list first
9357 xxx_ld_list=""
ab6ca9f4 9358 for xxx_convert in $gconvert_ld_preference; do
a5b10d80
YST
9359 case $xxx_convert in
9360 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
ab6ca9f4 9361 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
a5b10d80
YST
9362 esac
9363 done
9364 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9365 for xxx_convert in qgcvt sprintf $xxx_list; do
9366 case "$xxx_ld_list" in
9367 $xxx_convert*|*" $xxx_convert"*) ;;
9368 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9369 esac
9370 done
9371 : if sprintf cannot do long doubles, move it to the end
9372 if test "$d_PRIgldbl" != "$define"; then
9373 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9374 fi
9375 : if no qgcvt, remove it
9376 if test "$d_qgcvt" != "$define"; then
9377 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9378 fi
9379 : use the ld_list
9380 xxx_list="$xxx_ld_list"
b4eb6b3d
JH
9381 ;;
9382esac
9383
9384for xxx_convert in $xxx_list; do
9385 echo "Trying $xxx_convert..."
9386 $rm -f try try$_o
9387 set try -DTRY_$xxx_convert
9388 if eval $compile; then
9389 echo "$xxx_convert() found." >&4
5440bc8e 9390 if $run ./try; then
b4eb6b3d
JH
9391 echo "I'll use $xxx_convert to convert floats into a string." >&4
9392 break;
9393 else
9394 echo "...But $xxx_convert didn't work as I expected."
a5b10d80 9395 xxx_convert=''
b4eb6b3d
JH
9396 fi
9397 else
9398 echo "$xxx_convert NOT found." >&4
9399 fi
9400done
ab6ca9f4 9401
a5b10d80
YST
9402if test X$xxx_convert = X; then
9403 echo "*** WHOA THERE!!! ***" >&4
9404 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9405 xxx_convert=sprintf
9406fi
9407
b4eb6b3d
JH
9408case "$xxx_convert" in
9409gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9410gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9411qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9412*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9413 "$define$define$define")
9414 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
a5b10d80
YST
9415 "$define$define$undef")
9416 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
b4eb6b3d
JH
9417 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9418 esac
9419 ;;
9420esac
9421
a5b10d80
YST
9422fi
9423
74cac757
JH
9424: see if _fwalk exists
9425set fwalk d__fwalk
9426eval $inlibc
9427
b4eb6b3d
JH
9428: Initialize h_fcntl
9429h_fcntl=false
9430
9431: Initialize h_sysfile
9432h_sysfile=false
9433
9434: access call always available on UNIX
9435set access d_access
9436eval $inlibc
9437
9438: locate the flags for 'access()'
9439case "$d_access" in
9440"$define")
9441 echo " "
55954f19 9442 $cat >access.c <<EOCP
b4eb6b3d
JH
9443#include <sys/types.h>
9444#ifdef I_FCNTL
9445#include <fcntl.h>
9446#endif
9447#ifdef I_SYS_FILE
9448#include <sys/file.h>
9449#endif
9450#ifdef I_UNISTD
9451#include <unistd.h>
9452#endif
55954f19
JH
9453#$i_stdlib I_STDLIB
9454#ifdef I_STDLIB
9455#include <stdlib.h>
9456#endif
b4eb6b3d
JH
9457int main() {
9458 exit(R_OK);
9459}
9460EOCP
9461 : check sys/file.h first, no particular reason here
9462 if $test `./findhdr sys/file.h` && \
7a282f6d 9463 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9464 h_sysfile=true;
9465 echo "<sys/file.h> defines the *_OK access constants." >&4
9466 elif $test `./findhdr fcntl.h` && \
7a282f6d 9467 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9468 h_fcntl=true;
9469 echo "<fcntl.h> defines the *_OK access constants." >&4
9470 elif $test `./findhdr unistd.h` && \
7a282f6d 9471 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
9472 echo "<unistd.h> defines the *_OK access constants." >&4
9473 else
9474 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9475 fi
9476 ;;
9477esac
9478$rm -f access*
9479
9480: see if accessx exists
9481set accessx d_accessx
9482eval $inlibc
9483
89ce900e
JH
9484: see if aintl exists
9485set aintl d_aintl
9486eval $inlibc
9487
b4eb6b3d
JH
9488: see if alarm exists
9489set alarm d_alarm
9490eval $inlibc
9491
a9dade78
JH
9492: see if POSIX threads are available
9493set pthread.h i_pthread
9494eval $inhdr
9495
10bc17b6
JH
9496: define a fucntion to check prototypes
9497$cat > protochk <<EOSH
9498$startsh
9499cc="$cc"
9500optimize="$optimize"
9501ccflags="$ccflags"
9502prototype="$prototype"
9503define="$define"
9504rm=$rm
a9dade78
JH
9505usethreads=$usethreads
9506i_pthread=$i_pthread
9507pthread_h_first=$pthread_h_first
10bc17b6
JH
9508EOSH
9509
9510$cat >> protochk <<'EOSH'
9511
9512$rm -f try.c
9513foo="$1"
9514shift
9515while test $# -ge 2; do
9516 case "$1" in
9517 $define) echo "#include <$2>" >> try.c ;;
9518 literal) echo "$2" >> try.c ;;
9519 esac
cce6a207
MB
9520 # Extra magic for the benefit of systems that need pthread.h
9521 # to be included early to correctly detect threadsafe functions.
9522 # Such functions must guarantee themselves, though, that the usethreads
9523 # and i_pthread have been defined, before calling protochk.
9524 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9525 echo "#include <pthread.h>" >> try.c
9526 pthread_h_done=yes
9527 fi
10bc17b6
JH
9528 shift 2
9529done
9530test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9531cat >> try.c <<'EOCP'
9532#ifdef CAN_PROTOTYPE
9533#define _(args) args
9534#else
9535#define _(args) ()
9536#endif
9537EOCP
9538echo "$foo" >> try.c
9539echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9540$cc $optimize $ccflags -c try.c > /dev/null 2>&1
9541status=$?
9542$rm -f try.[co]
9543exit $status
9544EOSH
9545chmod +x protochk
9546$eunicefix protochk
9547
89ce900e
JH
9548hasproto='varname=$1; func=$2; shift; shift;
9549while $test $# -ge 2; do
9550 case "$1" in
9551 $define) echo "#include <$2>";;
9552 esac ;
9553 shift 2;
9554done > try.c;
9555$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9556if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9557 echo "$func() prototype found.";
9558 val="$define";
9559else
9560 echo "$func() prototype NOT found.";
9561 val="$undef";
9562fi;
9563set $varname;
9564eval $setvar;
9565$rm -f try.c tryout.c'
9566
10bc17b6
JH
9567: see if sys/types.h has to be included
9568set sys/types.h i_systypes
9569eval $inhdr
9570
9571: see if sys/select.h has to be included
9572set sys/select.h i_sysselct
9573eval $inhdr
9574
9575hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9576while $test $# -ge 2; do
9577 case "$1" in
9578 $define) echo "#include <$2>";;
9579 esac ;
9580 shift 2;
9581done > try.c;
9582echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9583set try;
9584if eval $compile; then
9585 val="$define";
9586else
9587 val="$undef";
9588fi;
9589set $varname;
9590eval $setvar;
9591$rm -f try.c try.o'
9592
9593: see if we should include time.h, sys/time.h, or both
9594echo " "
9595if test "X$timeincl" = X; then
9596 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9597 $echo $n "I'm now running the test program...$c"
55954f19 9598 $cat >try.c <<EOCP
10bc17b6
JH
9599#include <sys/types.h>
9600#ifdef I_TIME
9601#include <time.h>
9602#endif
9603#ifdef I_SYSTIME
9604#ifdef SYSTIMEKERNEL
9605#define KERNEL
9606#endif
9607#include <sys/time.h>
9608#endif
9609#ifdef I_SYSSELECT
9610#include <sys/select.h>
9611#endif
55954f19
JH
9612#$i_stdlib I_STDLIB
9613#ifdef I_STDLIB
9614#include <stdlib.h>
9615#endif
10bc17b6
JH
9616int main()
9617{
9618 struct tm foo;
9619#ifdef S_TIMEVAL
9620 struct timeval bar;
9621#endif
9622#ifdef S_TIMEZONE
9623 struct timezone tzp;
9624#endif
9625 if (foo.tm_sec == foo.tm_sec)
9626 exit(0);
9627#ifdef S_TIMEVAL
9628 if (bar.tv_sec == bar.tv_sec)
9629 exit(0);
9630#endif
9631 exit(1);
9632}
9633EOCP
9634 flags=''
9635 for s_timezone in '-DS_TIMEZONE' ''; do
9636 sysselect=''
9637 for s_timeval in '-DS_TIMEVAL' ''; do
9638 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9639 for i_time in '' '-DI_TIME'; do
9640 for i_systime in '-DI_SYSTIME' ''; do
9641 case "$flags" in
9642 '') $echo $n ".$c"
9643 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9644 if eval $compile; then
9645 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9646 shift
9647 flags="$*"
9648 echo " "
9649 $echo $n "Succeeded with $flags$c"
9650 fi
9651 ;;
9652 esac
9653 done
9654 done
9655 done
9656 done
9657 done
9658 timeincl=''
9659 echo " "
9660 case "$flags" in
9661 *SYSTIMEKERNEL*) i_systimek="$define"
9662 timeincl=`./findhdr sys/time.h`
9663 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9664 *) i_systimek="$undef";;
9665 esac
9666 case "$flags" in
9667 *I_TIME*) i_time="$define"
9668 timeincl=`./findhdr time.h`" $timeincl"
9669 echo "We'll include <time.h>." >&4;;
9670 *) i_time="$undef";;
9671 esac
9672 case "$flags" in
9673 *I_SYSTIME*) i_systime="$define"
9674 timeincl=`./findhdr sys/time.h`" $timeincl"
9675 echo "We'll include <sys/time.h>." >&4;;
9676 *) i_systime="$undef";;
9677 esac
9678 $rm -f try.c try
9679fi
9680: see if struct tm knows about tm_zone
9681case "$i_systime$i_time" in
9682*$define*)
9683 echo " "
9684 echo "Checking to see if your struct tm has tm_zone field..." >&4
9685 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9686 eval $hasfield
9687 ;;
9688*) val="$undef"
9689 set d_tm_tm_zone
9690 eval $setvar
9691 ;;
9692esac
9693case "$d_tm_tm_zone" in
9694"$define") echo "Yes, it does." ;;
9695*) echo "No, it doesn't." ;;
9696esac
9697: see if struct tm knows about tm_gmtoff
9698case "$i_systime$i_time" in
9699*$define*)
9700 echo " "
9701 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9702 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9703 eval $hasfield
9704 ;;
9705*) val="$undef"
9706 set d_tm_tm_gmtoff
9707 eval $setvar
9708 ;;
9709esac
9710case "$d_tm_tm_gmtoff" in
9711"$define") echo "Yes, it does." ;;
9712*) echo "No, it doesn't." ;;
9713esac
9714
9715: see if asctime_r exists
9716set asctime_r d_asctime_r
9717eval $inlibc
9718case "$d_asctime_r" in
9719"$define")
d63eadf0 9720 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
9721 case "$d_asctime_r_proto:$usethreads" in
9722 ":define") d_asctime_r_proto=define
a48ec845
JH
9723 set d_asctime_r_proto asctime_r $hdrs
9724 eval $hasproto ;;
9725 *) ;;
9726 esac
9727 case "$d_asctime_r_proto" in
9728 define)
10bc17b6
JH
9729 case "$asctime_r_proto" in
9730 ''|0) try='char* asctime_r(const struct tm*, char*);'
9731 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9732 esac
9733 case "$asctime_r_proto" in
9734 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9735 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9736 esac
9737 case "$asctime_r_proto" in
9738 ''|0) try='int asctime_r(const struct tm*, char*);'
9739 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9740 esac
9741 case "$asctime_r_proto" in
9742 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9743 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9744 esac
9745 case "$asctime_r_proto" in
90e831dc 9746 ''|0) d_asctime_r=undef
10bc17b6 9747 asctime_r_proto=0
a48ec845 9748 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
9749 * ) case "$asctime_r_proto" in
9750 REENTRANT_PROTO*) ;;
9751 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9752 esac
9753 echo "Prototype: $try" ;;
9754 esac
9755 ;;
c18e646a
JH
9756 *) case "$usethreads" in
9757 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9758 esac
90e831dc
SB
9759 d_asctime_r=undef
9760 asctime_r_proto=0
c18e646a 9761 ;;
a48ec845
JH
9762 esac
9763 ;;
10bc17b6
JH
9764*) asctime_r_proto=0
9765 ;;
9766esac
9767
b4eb6b3d
JH
9768: see if atolf exists
9769set atolf d_atolf
9770eval $inlibc
9771
9772: see if atoll exists
9773set atoll d_atoll
9774eval $inlibc
9775
9776: Look for GNU-cc style attribute checking
9777echo " "
9778echo "Checking whether your compiler can handle __attribute__ ..." >&4
9779$cat >attrib.c <<'EOCP'
9780#include <stdio.h>
9781void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9782EOCP
9783if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9784 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9785 echo "Your C compiler doesn't fully support __attribute__."
9786 val="$undef"
9787 else
9788 echo "Your C compiler supports __attribute__."
9789 val="$define"
9790 fi
9791else
9792 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9793 val="$undef"
9794fi
9795set d_attribut
9796eval $setvar
9797$rm -f attrib*
9798
9799: see if bcmp exists
9800set bcmp d_bcmp
9801eval $inlibc
9802
9803: see if bcopy exists
9804set bcopy d_bcopy
9805eval $inlibc
9806
9807: see if this is a unistd.h system
9808set unistd.h i_unistd
9809eval $inhdr
9810
9811: see if getpgrp exists
9812set getpgrp d_getpgrp
9813eval $inlibc
9814
9815case "$d_getpgrp" in
9816"$define")
9817 echo " "
9818 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 9819 $cat >try.c <<EOP
b4eb6b3d
JH
9820#$i_unistd I_UNISTD
9821#include <sys/types.h>
9822#ifdef I_UNISTD
9823# include <unistd.h>
9824#endif
55954f19
JH
9825#$i_stdlib I_STDLIB
9826#ifdef I_STDLIB
9827#include <stdlib.h>
9828#endif
b4eb6b3d
JH
9829int main()
9830{
9831 if (getuid() == 0) {
9832 printf("(I see you are running Configure as super-user...)\n");
9833 setuid(1);
9834 }
9835#ifdef TRY_BSD_PGRP
9836 if (getpgrp(1) == 0)
9837 exit(0);
9838#else
9839 if (getpgrp() > 0)
9840 exit(0);
9841#endif
9842 exit(1);
9843}
9844EOP
5440bc8e 9845 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9846 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9847 val="$define"
5440bc8e 9848 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9849 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9850 val="$undef"
9851 else
9852 echo "I can't seem to compile and run the test program."
9853 if ./usg; then
9854 xxx="a USG one, i.e. you use getpgrp()."
9855 else
9856 # SVR4 systems can appear rather BSD-ish.
9857 case "$i_unistd" in
9858 $undef)
9859 xxx="a BSD one, i.e. you use getpgrp(pid)."
9860 val="$define"
9861 ;;
9862 $define)
9863 xxx="probably a USG one, i.e. you use getpgrp()."
9864 val="$undef"
9865 ;;
9866 esac
9867 fi
9868 echo "Assuming your getpgrp is $xxx" >&4
9869 fi
9870 ;;
9871*) val="$undef";;
9872esac
9873set d_bsdgetpgrp
9874eval $setvar
5440bc8e 9875$rm -f try try.*
b4eb6b3d
JH
9876
9877: see if setpgrp exists
9878set setpgrp d_setpgrp
9879eval $inlibc
9880
9881case "$d_setpgrp" in
9882"$define")
9883 echo " "
9884 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 9885 $cat >try.c <<EOP
b4eb6b3d
JH
9886#$i_unistd I_UNISTD
9887#include <sys/types.h>
9888#ifdef I_UNISTD
9889# include <unistd.h>
9890#endif
55954f19
JH
9891#$i_stdlib I_STDLIB
9892#ifdef I_STDLIB
9893#include <stdlib.h>
9894#endif
b4eb6b3d
JH
9895int main()
9896{
9897 if (getuid() == 0) {
9898 printf("(I see you are running Configure as super-user...)\n");
9899 setuid(1);
9900 }
9901#ifdef TRY_BSD_PGRP
9902 if (-1 == setpgrp(1, 1))
9903 exit(0);
9904#else
9905 if (setpgrp() != -1)
9906 exit(0);
9907#endif
9908 exit(1);
9909}
9910EOP
5440bc8e 9911 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9912 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9913 val="$define"
5440bc8e 9914 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
9915 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9916 val="$undef"
9917 else
9918 echo "(I can't seem to compile and run the test program.)"
9919 if ./usg; then
9920 xxx="a USG one, i.e. you use setpgrp()."
9921 else
9922 # SVR4 systems can appear rather BSD-ish.
9923 case "$i_unistd" in
9924 $undef)
9925 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9926 val="$define"
9927 ;;
9928 $define)
9929 xxx="probably a USG one, i.e. you use setpgrp()."
9930 val="$undef"
9931 ;;
9932 esac
9933 fi
9934 echo "Assuming your setpgrp is $xxx" >&4
9935 fi
9936 ;;
9937*) val="$undef";;
9938esac
9939set d_bsdsetpgrp
9940eval $setvar
5440bc8e 9941$rm -f try try.*
b4eb6b3d
JH
9942: see if bzero exists
9943set bzero d_bzero
9944eval $inlibc
9945
9946: see if signal is declared as pointer to function returning int or void
9947echo " "
9948xxx=`./findhdr signal.h`
9949$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9950if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9951 echo "You have int (*signal())() instead of void." >&4
9952 val="$undef"
9953elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9954 echo "You have void (*signal())()." >&4
9955 val="$define"
9956elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9957 echo "You have int (*signal())() instead of void." >&4
9958 val="$undef"
9959elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9960 echo "You have void (*signal())()." >&4
9961 val="$define"
9962else
9963 case "$d_voidsig" in
9964 '')
9965 echo "I can't determine whether signal handler returns void or int..." >&4
9966 dflt=void
9967 rp="What type does your signal handler return?"
9968 . ./myread
9969 case "$ans" in
9970 v*) val="$define";;
9971 *) val="$undef";;
9972 esac;;
9973 "$define")
9974 echo "As you already told me, signal handler returns void." >&4
9975 val="$define"
9976 ;;
9977 *) echo "As you already told me, signal handler returns int." >&4
9978 val="$undef"
9979 ;;
9980 esac
9981fi
9982set d_voidsig
9983eval $setvar
9984case "$d_voidsig" in
9985"$define") signal_t="void";;
9986*) signal_t="int";;
9987esac
9988$rm -f $$.tmp
9989
9990: check for ability to cast large floats to 32-bit ints.
9991echo " "
9992echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9993if $test "$intsize" -ge 4; then
9994 xxx=int
9995else
9996 xxx=long
9997fi
9998$cat >try.c <<EOCP
9999#include <stdio.h>
d1daaddf
JH
10000#$i_stdlib I_STDLIB
10001#ifdef I_STDLIB
10002#include <stdlib.h>
10003#endif
b4eb6b3d
JH
10004#include <sys/types.h>
10005#include <signal.h>
10006$signal_t blech(s) int s; { exit(3); }
10007int main()
10008{
10009 $xxx i32;
10010 double f, g;
10011 int result = 0;
10012 char str[16];
10013 signal(SIGFPE, blech);
10014
10015 /* Don't let compiler optimize the test away. Store the number
10016 in a writable string for gcc to pass to sscanf under HP/UX.
10017 */
10018 sprintf(str, "2147483647");
10019 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10020 g = 10 * f;
10021 i32 = ($xxx) g;
10022
10023 /* x86 processors will probably give 0x8000 0000, which is a
10024 sign change. We don't want that. We want to mimic SPARC
10025 behavior here, which is to preserve the sign and give
10026 back 0x7fff ffff.
10027 */
10028 if (i32 != ($xxx) f)
10029 result |= 1;
10030 exit(result);
10031}
10032EOCP
10033set try
10034if eval $compile_ok; then
5440bc8e 10035 $run ./try
b4eb6b3d
JH
10036 yyy=$?
10037else
10038 echo "(I can't seem to compile the test program--assuming it can't)"
10039 yyy=1
10040fi
10041case "$yyy" in
100420) val="$define"
10043 echo "Yup, it can."
10044 ;;
10045*) val="$undef"
10046 echo "Nope, it can't."
10047 ;;
10048esac
10049set d_casti32
10050eval $setvar
10051$rm -f try try.*
10052
10053: check for ability to cast negative floats to unsigned
10054echo " "
10055echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10056$cat >try.c <<EOCP
10057#include <stdio.h>
d1daaddf
JH
10058#$i_stdlib I_STDLIB
10059#ifdef I_STDLIB
10060#include <stdlib.h>
10061#endif
b4eb6b3d
JH
10062#include <sys/types.h>
10063#include <signal.h>
10064$signal_t blech(s) int s; { exit(7); }
10065$signal_t blech_in_list(s) int s; { exit(4); }
10066unsigned long dummy_long(p) unsigned long p; { return p; }
10067unsigned int dummy_int(p) unsigned int p; { return p; }
10068unsigned short dummy_short(p) unsigned short p; { return p; }
10069int main()
10070{
10071 double f;
10072 unsigned long along;
10073 unsigned int aint;
10074 unsigned short ashort;
10075 int result = 0;
10076 char str[16];
10077
10078 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10079 a direct f = -123. assignment. gcc-2.8.0 reportedly
10080 optimized the whole file away
10081 */
10082 /* Store the number in a writable string for gcc to pass to
10083 sscanf under HP/UX.
10084 */
10085 sprintf(str, "-123");
10086 sscanf(str, "%lf", &f); /* f = -123.; */
10087
10088 signal(SIGFPE, blech);
10089 along = (unsigned long)f;
10090 aint = (unsigned int)f;
10091 ashort = (unsigned short)f;
10092 if (along != (unsigned long)-123)
10093 result |= 1;
10094 if (aint != (unsigned int)-123)
10095 result |= 1;
10096 if (ashort != (unsigned short)-123)
10097 result |= 1;
10098 sprintf(str, "1073741824.");
10099 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10100 f = f + f;
10101 along = 0;
10102 along = (unsigned long)f;
10103 if (along != 0x80000000)
10104 result |= 2;
10105 f -= 1.;
10106 along = 0;
10107 along = (unsigned long)f;
10108 if (along != 0x7fffffff)
10109 result |= 1;
10110 f += 2.;
10111 along = 0;
10112 along = (unsigned long)f;
10113 if (along != 0x80000001)
10114 result |= 2;
10115 if (result)
10116 exit(result);
10117 signal(SIGFPE, blech_in_list);
10118 sprintf(str, "123.");
10119 sscanf(str, "%lf", &f); /* f = 123.; */
10120 along = dummy_long((unsigned long)f);
10121 aint = dummy_int((unsigned int)f);
10122 ashort = dummy_short((unsigned short)f);
10123 if (along != (unsigned long)123)
10124 result |= 4;
10125 if (aint != (unsigned int)123)
10126 result |= 4;
10127 if (ashort != (unsigned short)123)
10128 result |= 4;
10129 exit(result);
10130
10131}
10132EOCP
10133set try
10134if eval $compile_ok; then
5440bc8e 10135 $run ./try
b4eb6b3d
JH
10136 castflags=$?
10137else
10138 echo "(I can't seem to compile the test program--assuming it can't)"
10139 castflags=7
10140fi
10141case "$castflags" in
101420) val="$define"
10143 echo "Yup, it can."
10144 ;;
10145*) val="$undef"
10146 echo "Nope, it can't."
10147 ;;
10148esac
10149set d_castneg
10150eval $setvar
10151$rm -f try.*
10152
10153: see if vprintf exists
10154echo " "
10155if set vprintf val -f d_vprintf; eval $csym; $val; then
10156 echo 'vprintf() found.' >&4
10157 val="$define"
55954f19 10158 $cat >try.c <<EOF
b4eb6b3d 10159#include <varargs.h>
55954f19
JH
10160#$i_stdlib I_STDLIB
10161#ifdef I_STDLIB
10162#include <stdlib.h>
10163#endif
b4eb6b3d
JH
10164
10165int main() { xxx("foo"); }
10166
10167xxx(va_alist)
10168va_dcl
10169{
10170 va_list args;
10171 char buf[10];
10172
10173 va_start(args);
10174 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10175}
10176EOF
5440bc8e
JH
10177 set try
10178 if eval $compile && $run ./try; then
b4eb6b3d
JH
10179 echo "Your vsprintf() returns (int)." >&4
10180 val2="$undef"
10181 else
10182 echo "Your vsprintf() returns (char*)." >&4
10183 val2="$define"
10184 fi
10185else
10186 echo 'vprintf() NOT found.' >&4
10187 val="$undef"
10188 val2="$undef"
10189fi
5440bc8e 10190$rm -f try try.*
b4eb6b3d
JH
10191set d_vprintf
10192eval $setvar
10193val=$val2
10194set d_charvspr
10195eval $setvar
10196
10197: see if chown exists
10198set chown d_chown
10199eval $inlibc
10200
10201: see if chroot exists
10202set chroot d_chroot
10203eval $inlibc
10204
10205: see if chsize exists
10206set chsize d_chsize
10207eval $inlibc
10208
758a5d79
JH
10209: see if class exists
10210set class d_class
10211eval $inlibc
10212
4e0554ec
JH
10213hasstruct='varname=$1; struct=$2; shift; shift;
10214while $test $# -ge 2; do
10215 case "$1" in
10216 $define) echo "#include <$2>";;
10217 esac ;
10218 shift 2;
10219done > try.c;
10220echo "int main () { struct $struct foo; }" >> try.c;
10221set try;
10222if eval $compile; then
10223 val="$define";
10224else
10225 val="$undef";
10226fi;
10227set $varname;
10228eval $setvar;
10229$rm -f try.c try.o'
10230
4e0554ec
JH
10231socketlib=''
10232sockethdr=''
10233: see whether socket exists
10234echo " "
10235$echo $n "Hmm... $c" >&4
10236if set socket val -f d_socket; eval $csym; $val; then
10237 echo "Looks like you have Berkeley networking support." >&4
10238 d_socket="$define"
10239 if set setsockopt val -f; eval $csym; $val; then
10240 d_oldsock="$undef"
10241 else
10242 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10243 d_oldsock="$define"
10244 fi
10245else
10246 if $contains socklib libc.list >/dev/null 2>&1; then
10247 echo "Looks like you have Berkeley networking support." >&4
10248 d_socket="$define"
10249 : we will have to assume that it supports the 4.2 BSD interface
10250 d_oldsock="$undef"
10251 else
10252 echo "You don't have Berkeley networking in libc$_a..." >&4
10253 if test "X$d_socket" = "X$define"; then
10254 echo "...but you seem to believe that you have sockets." >&4
10255 else
10256 for net in net socket
10257 do
10258 if test -f /usr/lib/lib$net$_a; then
10259 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10260 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10261 if $contains socket libc.list >/dev/null 2>&1; then
10262 d_socket="$define"
10263 socketlib="-l$net"
10264 case "$net" in
10265 net)
10266 echo "...but the Wollongong group seems to have hacked it in." >&4
10267 sockethdr="-I/usr/netinclude"
10268 ;;
10269 esac
3c728e00 10270 echo "Found Berkeley sockets interface in lib$net." >&4
4e0554ec
JH
10271 if $contains setsockopt libc.list >/dev/null 2>&1; then
10272 d_oldsock="$undef"
10273 else
10274 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10275 d_oldsock="$define"
10276 fi
10277 break
10278 fi
10279 fi
10280 done
10281 if test "X$d_socket" != "X$define"; then
10282 echo "or anywhere else I see." >&4
10283 d_socket="$undef"
10284 d_oldsock="$undef"
10285 fi
10286 fi
10287 fi
10288fi
10289
10290: see if socketpair exists
10291set socketpair d_sockpair
10292eval $inlibc
10293
10294
10295echo " "
3c728e00 10296echo "Checking the availability of certain socket constants..." >&4
4e0554ec
JH
10297for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10298 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10299 $cat >try.c <<EOF
10300#include <sys/types.h>
10301#include <sys/socket.h>
10302int main() {
10303 int i = $ENUM;
10304}
10305EOF
10306 val="$undef"
10307 set try; if eval $compile; then
10308 val="$define"
10309 fi
10310 set d_${enum}; eval $setvar
10311 $rm -f try.c try
10312done
10313
10314: see if this is a sys/uio.h system
10315set sys/uio.h i_sysuio
10316eval $inhdr
10317
10318
10319echo " "
10320echo "Checking to see if your system supports struct cmsghdr..." >&4
10321set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10322eval $hasstruct
10323case "$d_cmsghdr_s" in
10324"$define") echo "Yes, it does." ;;
10325*) echo "No, it doesn't." ;;
10326esac
10327
10328
b4eb6b3d
JH
10329: check for const keyword
10330echo " "
10331echo 'Checking to see if your C compiler knows about "const"...' >&4
10332$cat >const.c <<'EOCP'
10333typedef struct spug { int drokk; } spug;
76f47787 10334int main()
b4eb6b3d
JH
10335{
10336 const char *foo;
10337 const spug y;
10338}
10339EOCP
10340if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10341 val="$define"
10342 echo "Yup, it does."
10343else
10344 val="$undef"
10345 echo "Nope, it doesn't."
10346fi
10347set d_const
10348eval $setvar
10349
89ce900e
JH
10350: see if copysignl exists
10351set copysignl d_copysignl
10352eval $inlibc
10353
b4eb6b3d
JH
10354: see if crypt exists
10355echo " "
a5a94ea5
JH
10356set crypt d_crypt
10357eval $inlibc
10358case "$d_crypt" in
10359$define) cryptlib='' ;;
10360*) if set crypt val -f d_crypt; eval $csym; $val; then
10361 echo 'crypt() found.' >&4
b4eb6b3d 10362 val="$define"
a5a94ea5
JH
10363 cryptlib=''
10364 else
10365 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10366 if $test -z "$cryptlib"; then
10367 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10368 else
10369 cryptlib=-lcrypt
10370 fi
10371 if $test -z "$cryptlib"; then
10372 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10373 else
10374 cryptlib=-lcrypt
10375 fi
10376 if $test -z "$cryptlib"; then
10377 cryptlib=`./loc libcrypt$_a "" $libpth`
10378 else
10379 cryptlib=-lcrypt
10380 fi
10381 if $test -z "$cryptlib"; then
10382 echo 'crypt() NOT found.' >&4
10383 val="$undef"
10384 else
10385 val="$define"
10386 fi
b4eb6b3d 10387 fi
a5a94ea5
JH
10388 set d_crypt
10389 eval $setvar
10390 ;;
10391esac
b4eb6b3d 10392
10bc17b6
JH
10393: see if this is a crypt.h system
10394set crypt.h i_crypt
10395eval $inhdr
10396
10397: see if crypt_r exists
10398set crypt_r d_crypt_r
10399eval $inlibc
10400case "$d_crypt_r" in
10401"$define")
10402 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
c18e646a
JH
10403 case "$d_crypt_r_proto:$usethreads" in
10404 ":define") d_crypt_r_proto=define
a48ec845
JH
10405 set d_crypt_r_proto crypt_r $hdrs
10406 eval $hasproto ;;
10407 *) ;;
10408 esac
10409 case "$d_crypt_r_proto" in
10410 define)
10bc17b6
JH
10411 case "$crypt_r_proto" in
10412 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10413 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10414 esac
10415 case "$crypt_r_proto" in
b430fd04
JH
10416 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10417 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10418 esac
10419 case "$crypt_r_proto" in
90e831dc 10420 ''|0) d_crypt_r=undef
10bc17b6 10421 crypt_r_proto=0
a48ec845 10422 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10423 * ) case "$crypt_r_proto" in
10424 REENTRANT_PROTO*) ;;
10425 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10426 esac
10427 echo "Prototype: $try" ;;
10428 esac
10429 ;;
c18e646a
JH
10430 *) case "$usethreads" in
10431 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10432 esac
90e831dc
SB
10433 d_crypt_r=undef
10434 crypt_r_proto=0
c18e646a 10435 ;;
a48ec845
JH
10436 esac
10437 ;;
10bc17b6
JH
10438*) crypt_r_proto=0
10439 ;;
10440esac
10441
b4eb6b3d
JH
10442: get csh whereabouts
10443case "$csh" in
10444'csh') val="$undef" ;;
10445*) val="$define" ;;
10446esac
10447set d_csh
10448eval $setvar
10449: Respect a hint or command line value for full_csh.
10450case "$full_csh" in
10451'') full_csh=$csh ;;
10452esac
10453
10bc17b6
JH
10454: see if ctermid_r exists
10455set ctermid_r d_ctermid_r
10456eval $inlibc
10457case "$d_ctermid_r" in
10458"$define")
31ee0cb7 10459 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
10460 case "$d_ctermid_r_proto:$usethreads" in
10461 ":define") d_ctermid_r_proto=define
a48ec845
JH
10462 set d_ctermid_r_proto ctermid_r $hdrs
10463 eval $hasproto ;;
10464 *) ;;
10465 esac
10466 case "$d_ctermid_r_proto" in
10467 define)
10bc17b6
JH
10468 case "$ctermid_r_proto" in
10469 ''|0) try='char* ctermid_r(char*);'
10470 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10471 esac
10472 case "$ctermid_r_proto" in
90e831dc 10473 ''|0) d_ctermid_r=undef
10bc17b6 10474 ctermid_r_proto=0
a48ec845 10475 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10476 * ) case "$ctermid_r_proto" in
10477 REENTRANT_PROTO*) ;;
10478 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10479 esac
10480 echo "Prototype: $try" ;;
10481 esac
10482 ;;
c18e646a
JH
10483 *) case "$usethreads" in
10484 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10485 esac
90e831dc
SB
10486 d_ctermid_r=undef
10487 ctermid_r_proto=0
c18e646a 10488 ;;
a48ec845
JH
10489 esac
10490 ;;
10bc17b6
JH
10491*) ctermid_r_proto=0
10492 ;;
10493esac
10494
10495: see if ctime_r exists
10496set ctime_r d_ctime_r
10497eval $inlibc
10498case "$d_ctime_r" in
10499"$define")
d63eadf0 10500 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
10501 case "$d_ctime_r_proto:$usethreads" in
10502 ":define") d_ctime_r_proto=define
a48ec845
JH
10503 set d_ctime_r_proto ctime_r $hdrs
10504 eval $hasproto ;;
10505 *) ;;
10506 esac
10507 case "$d_ctime_r_proto" in
10508 define)
10bc17b6
JH
10509 case "$ctime_r_proto" in
10510 ''|0) try='char* ctime_r(const time_t*, char*);'
10511 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10512 esac
10513 case "$ctime_r_proto" in
10514 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10515 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10516 esac
10517 case "$ctime_r_proto" in
10518 ''|0) try='int ctime_r(const time_t*, char*);'
10519 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10520 esac
10521 case "$ctime_r_proto" in
10522 ''|0) try='int ctime_r(const time_t*, char*, int);'
10523 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10524 esac
10525 case "$ctime_r_proto" in
90e831dc 10526 ''|0) d_ctime_r=undef
10bc17b6 10527 ctime_r_proto=0
a48ec845 10528 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10529 * ) case "$ctime_r_proto" in
10530 REENTRANT_PROTO*) ;;
10531 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10532 esac
10533 echo "Prototype: $try" ;;
10534 esac
10535 ;;
c18e646a
JH
10536 *) case "$usethreads" in
10537 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10538 esac
90e831dc
SB
10539 d_ctime_r=undef
10540 ctime_r_proto=0
c18e646a 10541 ;;
a48ec845
JH
10542 esac
10543 ;;
10bc17b6
JH
10544*) ctime_r_proto=0
10545 ;;
10546esac
10547
b4eb6b3d
JH
10548: see if cuserid exists
10549set cuserid d_cuserid
10550eval $inlibc
10551
10552: see if this is a limits.h system
10553set limits.h i_limits
10554eval $inhdr
10555
10556: see if this is a float.h system
10557set float.h i_float
10558eval $inhdr
10559
10560: See if number of significant digits in a double precision number is known
10561echo " "
10562$cat >dbl_dig.c <<EOM
10563#$i_limits I_LIMITS
10564#$i_float I_FLOAT
10565#ifdef I_LIMITS
10566#include <limits.h>
10567#endif
10568#ifdef I_FLOAT
10569#include <float.h>
10570#endif
10571#ifdef DBL_DIG
10572printf("Contains DBL_DIG");
10573#endif
10574EOM
10575$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10576if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10577 echo "DBL_DIG found." >&4
10578 val="$define"
10579else
10580 echo "DBL_DIG NOT found." >&4
10581 val="$undef"
10582fi
10583$rm -f dbl_dig.?
10584set d_dbl_dig
10585eval $setvar
10586
2ef53570
JH
10587: see if dbm.h is available
10588: see if dbmclose exists
10589set dbmclose d_dbmclose
10590eval $inlibc
10591
10592case "$d_dbmclose" in
10593$define)
10594 set dbm.h i_dbm
10595 eval $inhdr
10596 case "$i_dbm" in
10597 $define)
10598 val="$undef"
10599 set i_rpcsvcdbm
10600 eval $setvar
10601 ;;
10602 *) set rpcsvc/dbm.h i_rpcsvcdbm
10603 eval $inhdr
10604 ;;
10605 esac
10606 ;;
10607*) echo "We won't be including <dbm.h>"
10608 val="$undef"
10609 set i_dbm
10610 eval $setvar
10611 val="$undef"
10612 set i_rpcsvcdbm
10613 eval $setvar
10614 ;;
10615esac
10616
10617: see if prototype for dbminit is available
10618echo " "
10619set d_dbminitproto dbminit $i_dbm dbm.h
10620eval $hasproto
10621
b4eb6b3d
JH
10622: see if difftime exists
10623set difftime d_difftime
10624eval $inlibc
10625
10626: see if this is a dirent system
10627echo " "
10628if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10629 val="$define"
10630 echo "<dirent.h> found." >&4
10631else
10632 val="$undef"
10633 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10634 echo "<sys/dir.h> found." >&4
10635 echo " "
10636 else
10637 xinc=`./findhdr sys/ndir.h`
10638 fi
10639 echo "<dirent.h> NOT found." >&4
10640fi
10641set i_dirent
10642eval $setvar
10643
10644: Look for type of directory structure.
10645echo " "
10646$cppstdin $cppflags $cppminus < "$xinc" > try.c
10647
10648case "$direntrytype" in
10649''|' ')
10650 case "$i_dirent" in
10651 $define) guess1='struct dirent' ;;
10652 *) guess1='struct direct' ;;
10653 esac
10654 ;;
10655*) guess1="$direntrytype"
10656 ;;
10657esac
10658
10659case "$guess1" in
10660'struct dirent') guess2='struct direct' ;;
10661*) guess2='struct dirent' ;;
10662esac
10663
10664if $contains "$guess1" try.c >/dev/null 2>&1; then
10665 direntrytype="$guess1"
10666 echo "Your directory entries are $direntrytype." >&4
10667elif $contains "$guess2" try.c >/dev/null 2>&1; then
10668 direntrytype="$guess2"
10669 echo "Your directory entries seem to be $direntrytype." >&4
10670else
10671 echo "I don't recognize your system's directory entries." >&4
10672 rp="What type is used for directory entries on this system?"
10673 dflt="$guess1"
10674 . ./myread
10675 direntrytype="$ans"
10676fi
10677$rm -f try.c
10678
10679
10680: see if the directory entry stores field length
10681echo " "
10682$cppstdin $cppflags $cppminus < "$xinc" > try.c
10683if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10684 echo "Good, your directory entry keeps length information in d_namlen." >&4
10685 val="$define"
10686else
10687 echo "Your directory entry does not know about the d_namlen field." >&4
10688 val="$undef"
10689fi
10690set d_dirnamlen
10691eval $setvar
10692$rm -f try.c
10693
ae0e3d3b
JH
10694: see if this is an sysdir system
10695set sys/dir.h i_sysdir
10696eval $inhdr
10697
10698: see if this is an sysndir system
10699set sys/ndir.h i_sysndir
10700eval $inhdr
10701
10702: Look for dirfd
10703echo " "
10704$cat >dirfd.c <<EOM
10705#include <stdio.h>
55954f19
JH
10706#$i_stdlib I_STDLIB
10707#ifdef I_STDLIB
10708#include <stdlib.h>
10709#endif
ae0e3d3b
JH
10710#$i_dirent I_DIRENT /**/
10711#$i_sysdir I_SYS_DIR /**/
10712#$i_sysndir I_SYS_NDIR /**/
10713#$i_systypes I_SYS_TYPES /**/
10714#if defined(I_SYS_TYPES)
10715#include <sys/types.h>
10716#endif
10717#if defined(I_DIRENT)
10718#include <dirent.h>
10719#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10720#include <sys/dir.h>
10721#endif
10722#else
10723#ifdef I_SYS_NDIR
10724#include <sys/ndir.h>
10725#else
10726#ifdef I_SYS_DIR
10727#ifdef hp9000s500
10728#include <ndir.h> /* may be wrong in the future */
10729#else
10730#include <sys/dir.h>
10731#endif
10732#endif
10733#endif
10734#endif
10735int main() {
10736 DIR *dirp = opendir(".");
10737 if (dirfd(dirp) >= 0)
10738 exit(0);
10739 else
10740 exit(1);
10741}
10742EOM
10743set dirfd
10744if eval $compile; then
10745 val="$define"
10746fi
10747case "$val" in
10748$define) echo "dirfd() found." >&4 ;;
10749*) echo "dirfd() NOT found." >&4 ;;
10750esac
10751set d_dirfd
10752eval $setvar
10753$rm -f dirfd*
10754
b4eb6b3d
JH
10755: see if dlerror exists
10756xxx_runnm="$runnm"
10757runnm=false
10758set dlerror d_dlerror
10759eval $inlibc
10760runnm="$xxx_runnm"
10761
10762: see if dlfcn is available
10763set dlfcn.h i_dlfcn
10764eval $inhdr
10765
10766case "$usedl" in
10767$define|y|true)
10768 $cat << EOM
10769
10770On a few systems, the dynamically loaded modules that perl generates and uses
10771will need a different extension than shared libs. The default will probably
10772be appropriate.
10773
10774EOM
10775 case "$dlext" in
10776 '') dflt="$so" ;;
10777 *) dflt="$dlext" ;;
10778 esac
10779 rp='What is the extension of dynamically loaded modules'
10780 . ./myread
10781 dlext="$ans"
10782 ;;
10783*)
10784 dlext="none"
10785 ;;
10786esac
10787
10788: Check if dlsym need a leading underscore
10789echo " "
10790val="$undef"
10791
10792case "$dlsrc" in
10793dl_dlopen.xs)
10794 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10795 $cat >dyna.c <<'EOM'
10796fred () { }
10797EOM
10798
10799$cat >fred.c<<EOM
10800
10801#include <stdio.h>
55954f19
JH
10802#$i_stdlib I_STDLIB
10803#ifdef I_STDLIB
10804#include <stdlib.h>
10805#endif
b4eb6b3d
JH
10806#$i_dlfcn I_DLFCN
10807#ifdef I_DLFCN
5440bc8e 10808#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
10809#else
10810#include <sys/types.h>
10811#include <nlist.h>
10812#include <link.h>
10813#endif
10814
10815extern int fred() ;
10816
10817int main()
10818{
10819 void * handle ;
10820 void * symbol ;
10821#ifndef RTLD_LAZY
10822 int mode = 1 ;
10823#else
10824 int mode = RTLD_LAZY ;
10825#endif
10826 handle = dlopen("./dyna.$dlext", mode) ;
10827 if (handle == NULL) {
10828 printf ("1\n") ;
10829 fflush (stdout) ;
10830 exit(0);
10831 }
10832 symbol = dlsym(handle, "fred") ;
10833 if (symbol == NULL) {
10834 /* try putting a leading underscore */
10835 symbol = dlsym(handle, "_fred") ;
10836 if (symbol == NULL) {
10837 printf ("2\n") ;
10838 fflush (stdout) ;
10839 exit(0);
10840 }
10841 printf ("3\n") ;
10842 }
10843 else
10844 printf ("4\n") ;
10845 fflush (stdout) ;
10846 exit(0);
10847}
10848EOM
10849 : Call the object file tmp-dyna.o in case dlext=o.
10850 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10851 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 10852 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
10853 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10854 xxx=`$run ./fred`
b4eb6b3d
JH
10855 case $xxx in
10856 1) echo "Test program failed using dlopen." >&4
10857 echo "Perhaps you should not use dynamic loading." >&4;;
10858 2) echo "Test program failed using dlsym." >&4
10859 echo "Perhaps you should not use dynamic loading." >&4;;
10860 3) echo "dlsym needs a leading underscore" >&4
10861 val="$define" ;;
10862 4) echo "dlsym doesn't need a leading underscore." >&4;;
10863 esac
10864 else
10865 echo "I can't compile and run the test program." >&4
10866 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10867 fi
10868 ;;
10869esac
10870
3c728e00 10871$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
b4eb6b3d
JH
10872
10873set d_dlsymun
10874eval $setvar
10875
10bc17b6
JH
10876: see if drand48_r exists
10877set drand48_r d_drand48_r
10878eval $inlibc
10879case "$d_drand48_r" in
10880"$define")
10881 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
10882 case "$d_drand48_r_proto:$usethreads" in
10883 ":define") d_drand48_r_proto=define
a48ec845
JH
10884 set d_drand48_r_proto drand48_r $hdrs
10885 eval $hasproto ;;
10886 *) ;;
10887 esac
10888 case "$d_drand48_r_proto" in
10889 define)
10bc17b6
JH
10890 case "$drand48_r_proto" in
10891 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10892 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10893 esac
10894 case "$drand48_r_proto" in
90e831dc 10895 ''|0) d_drand48_r=undef
10bc17b6 10896 drand48_r_proto=0
a48ec845 10897 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10898 * ) case "$drand48_r_proto" in
10899 REENTRANT_PROTO*) ;;
10900 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10901 esac
10902 echo "Prototype: $try" ;;
10903 esac
10904 ;;
c18e646a
JH
10905 *) case "$usethreads" in
10906 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10907 esac
90e831dc
SB
10908 d_drand48_r=undef
10909 drand48_r_proto=0
c18e646a 10910 ;;
a48ec845
JH
10911 esac
10912 ;;
10bc17b6
JH
10913*) drand48_r_proto=0
10914 ;;
10915esac
10916
10917: see if prototype for drand48 is available
10918echo " "
10919set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10920eval $hasproto
10921
b4eb6b3d
JH
10922: see if dup2 exists
10923set dup2 d_dup2
10924eval $inlibc
10925
10926: see if eaccess exists
10927set eaccess d_eaccess
10928eval $inlibc
10929
10930: see if endgrent exists
10931set endgrent d_endgrent
10932eval $inlibc
10933
10bc17b6
JH
10934: see if this is an grp system
10935set grp.h i_grp
10936eval $inhdr
10937
10938case "$i_grp" in
10939$define)
10940 xxx=`./findhdr grp.h`
10941 $cppstdin $cppflags $cppminus < $xxx >$$.h
10942
10943 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10944 val="$define"
10945 else
10946 val="$undef"
10947 fi
10948 set d_grpasswd
10949 eval $setvar
10950
10951 $rm -f $$.h
10952 ;;
10953*)
10954 val="$undef";
10955 set d_grpasswd; eval $setvar
10956 ;;
10957esac
10958
10959: see if endgrent_r exists
10960set endgrent_r d_endgrent_r
10961eval $inlibc
10962case "$d_endgrent_r" in
10963"$define")
10964 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
10965 case "$d_endgrent_r_proto:$usethreads" in
10966 ":define") d_endgrent_r_proto=define
a48ec845
JH
10967 set d_endgrent_r_proto endgrent_r $hdrs
10968 eval $hasproto ;;
10969 *) ;;
10970 esac
10971 case "$d_endgrent_r_proto" in
10972 define)
10bc17b6
JH
10973 case "$endgrent_r_proto" in
10974 ''|0) try='int endgrent_r(FILE**);'
10975 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10976 esac
10977 case "$endgrent_r_proto" in
10978 ''|0) try='void endgrent_r(FILE**);'
10979 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10980 esac
10981 case "$endgrent_r_proto" in
90e831dc 10982 ''|0) d_endgrent_r=undef
10bc17b6 10983 endgrent_r_proto=0
a48ec845 10984 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
10985 * ) case "$endgrent_r_proto" in
10986 REENTRANT_PROTO*) ;;
10987 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10988 esac
10989 echo "Prototype: $try" ;;
10990 esac
10991 ;;
c18e646a
JH
10992 *) case "$usethreads" in
10993 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10994 esac
90e831dc
SB
10995 d_endgrent_r=undef
10996 endgrent_r_proto=0
c18e646a 10997 ;;
a48ec845
JH
10998 esac
10999 ;;
10bc17b6
JH
11000*) endgrent_r_proto=0
11001 ;;
11002esac
11003
b4eb6b3d
JH
11004: see if endhostent exists
11005set endhostent d_endhent
11006eval $inlibc
11007
10bc17b6
JH
11008: see if this is a netdb.h system
11009set netdb.h i_netdb
11010eval $inhdr
11011
11012: see if endhostent_r exists
11013set endhostent_r d_endhostent_r
11014eval $inlibc
11015case "$d_endhostent_r" in
11016"$define")
11017 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11018 case "$d_endhostent_r_proto:$usethreads" in
11019 ":define") d_endhostent_r_proto=define
a48ec845
JH
11020 set d_endhostent_r_proto endhostent_r $hdrs
11021 eval $hasproto ;;
11022 *) ;;
11023 esac
11024 case "$d_endhostent_r_proto" in
11025 define)
10bc17b6
JH
11026 case "$endhostent_r_proto" in
11027 ''|0) try='int endhostent_r(struct hostent_data*);'
31ee0cb7 11028 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10bc17b6
JH
11029 esac
11030 case "$endhostent_r_proto" in
11031 ''|0) try='void endhostent_r(struct hostent_data*);'
31ee0cb7 11032 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10bc17b6
JH
11033 esac
11034 case "$endhostent_r_proto" in
90e831dc 11035 ''|0) d_endhostent_r=undef
10bc17b6 11036 endhostent_r_proto=0
a48ec845 11037 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11038 * ) case "$endhostent_r_proto" in
11039 REENTRANT_PROTO*) ;;
11040 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11041 esac
11042 echo "Prototype: $try" ;;
11043 esac
11044 ;;
c18e646a
JH
11045 *) case "$usethreads" in
11046 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11047 esac
90e831dc
SB
11048 d_endhostent_r=undef
11049 endhostent_r_proto=0
c18e646a 11050 ;;
a48ec845
JH
11051 esac
11052 ;;
10bc17b6
JH
11053*) endhostent_r_proto=0
11054 ;;
11055esac
11056
b4eb6b3d
JH
11057: see if endnetent exists
11058set endnetent d_endnent
11059eval $inlibc
11060
10bc17b6
JH
11061: see if endnetent_r exists
11062set endnetent_r d_endnetent_r
11063eval $inlibc
11064case "$d_endnetent_r" in
11065"$define")
11066 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11067 case "$d_endnetent_r_proto:$usethreads" in
11068 ":define") d_endnetent_r_proto=define
a48ec845
JH
11069 set d_endnetent_r_proto endnetent_r $hdrs
11070 eval $hasproto ;;
11071 *) ;;
11072 esac
11073 case "$d_endnetent_r_proto" in
11074 define)
10bc17b6
JH
11075 case "$endnetent_r_proto" in
11076 ''|0) try='int endnetent_r(struct netent_data*);'
31ee0cb7 11077 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10bc17b6
JH
11078 esac
11079 case "$endnetent_r_proto" in
11080 ''|0) try='void endnetent_r(struct netent_data*);'
31ee0cb7 11081 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10bc17b6
JH
11082 esac
11083 case "$endnetent_r_proto" in
90e831dc 11084 ''|0) d_endnetent_r=undef
10bc17b6 11085 endnetent_r_proto=0
a48ec845 11086 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11087 * ) case "$endnetent_r_proto" in
11088 REENTRANT_PROTO*) ;;
11089 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11090 esac
11091 echo "Prototype: $try" ;;
11092 esac
11093 ;;
c18e646a
JH
11094 *) case "$usethreads" in
11095 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11096 esac
90e831dc
SB
11097 d_endnetent_r=undef
11098 endnetent_r_proto=0
c18e646a 11099 ;;
a48ec845
JH
11100 esac
11101 ;;
10bc17b6
JH
11102*) endnetent_r_proto=0
11103 ;;
11104esac
11105
b4eb6b3d
JH
11106: see if endprotoent exists
11107set endprotoent d_endpent
11108eval $inlibc
11109
10bc17b6
JH
11110: see if endprotoent_r exists
11111set endprotoent_r d_endprotoent_r
11112eval $inlibc
11113case "$d_endprotoent_r" in
11114"$define")
11115 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11116 case "$d_endprotoent_r_proto:$usethreads" in
11117 ":define") d_endprotoent_r_proto=define
a48ec845
JH
11118 set d_endprotoent_r_proto endprotoent_r $hdrs
11119 eval $hasproto ;;
11120 *) ;;
11121 esac
11122 case "$d_endprotoent_r_proto" in
11123 define)
10bc17b6
JH
11124 case "$endprotoent_r_proto" in
11125 ''|0) try='int endprotoent_r(struct protoent_data*);'
31ee0cb7 11126 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10bc17b6
JH
11127 esac
11128 case "$endprotoent_r_proto" in
11129 ''|0) try='void endprotoent_r(struct protoent_data*);'
31ee0cb7 11130 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10bc17b6
JH
11131 esac
11132 case "$endprotoent_r_proto" in
90e831dc 11133 ''|0) d_endprotoent_r=undef
10bc17b6 11134 endprotoent_r_proto=0
a48ec845 11135 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11136 * ) case "$endprotoent_r_proto" in
11137 REENTRANT_PROTO*) ;;
11138 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11139 esac
11140 echo "Prototype: $try" ;;
11141 esac
11142 ;;
c18e646a
JH
11143 *) case "$usethreads" in
11144 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11145 esac
90e831dc
SB
11146 d_endprotoent_r=undef
11147 endprotoent_r_proto=0
c18e646a 11148 ;;
a48ec845
JH
11149 esac
11150 ;;
10bc17b6
JH
11151*) endprotoent_r_proto=0
11152 ;;
11153esac
11154
b4eb6b3d
JH
11155: see if endpwent exists
11156set endpwent d_endpwent
11157eval $inlibc
11158
10bc17b6
JH
11159: see if this is a pwd.h system
11160set pwd.h i_pwd
11161eval $inhdr
11162
11163case "$i_pwd" in
11164$define)
11165 xxx=`./findhdr pwd.h`
11166 $cppstdin $cppflags $cppminus < $xxx >$$.h
11167
11168 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11169 val="$define"
11170 else
11171 val="$undef"
11172 fi
11173 set d_pwquota
11174 eval $setvar
11175
11176 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11177 val="$define"
11178 else
11179 val="$undef"
11180 fi
11181 set d_pwage
11182 eval $setvar
11183
11184 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11185 val="$define"
11186 else
11187 val="$undef"
11188 fi
11189 set d_pwchange
11190 eval $setvar
11191
11192 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11193 val="$define"
11194 else
11195 val="$undef"
11196 fi
11197 set d_pwclass
11198 eval $setvar
11199
11200 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11201 val="$define"
11202 else
11203 val="$undef"
11204 fi
11205 set d_pwexpire
11206 eval $setvar
11207
11208 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11209 val="$define"
11210 else
11211 val="$undef"
11212 fi
11213 set d_pwcomment
11214 eval $setvar
11215
11216 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11217 val="$define"
11218 else
11219 val="$undef"
11220 fi
11221 set d_pwgecos
11222 eval $setvar
11223
11224 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11225 val="$define"
11226 else
11227 val="$undef"
11228 fi
11229 set d_pwpasswd
11230 eval $setvar
11231
11232 $rm -f $$.h
11233 ;;
11234*)
11235 val="$undef";
11236 set d_pwquota; eval $setvar
11237 set d_pwage; eval $setvar
11238 set d_pwchange; eval $setvar
11239 set d_pwclass; eval $setvar
11240 set d_pwexpire; eval $setvar
11241 set d_pwcomment; eval $setvar
11242 set d_pwgecos; eval $setvar
11243 set d_pwpasswd; eval $setvar
11244 ;;
11245esac
11246
11247: see if endpwent_r exists
11248set endpwent_r d_endpwent_r
11249eval $inlibc
11250case "$d_endpwent_r" in
11251"$define")
11252 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
11253 case "$d_endpwent_r_proto:$usethreads" in
11254 ":define") d_endpwent_r_proto=define
a48ec845
JH
11255 set d_endpwent_r_proto endpwent_r $hdrs
11256 eval $hasproto ;;
11257 *) ;;
11258 esac
11259 case "$d_endpwent_r_proto" in
11260 define)
10bc17b6
JH
11261 case "$endpwent_r_proto" in
11262 ''|0) try='int endpwent_r(FILE**);'
11263 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11264 esac
11265 case "$endpwent_r_proto" in
11266 ''|0) try='void endpwent_r(FILE**);'
11267 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11268 esac
11269 case "$endpwent_r_proto" in
90e831dc 11270 ''|0) d_endpwent_r=undef
10bc17b6 11271 endpwent_r_proto=0
a48ec845 11272 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11273 * ) case "$endpwent_r_proto" in
11274 REENTRANT_PROTO*) ;;
11275 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11276 esac
11277 echo "Prototype: $try" ;;
11278 esac
11279 ;;
c18e646a
JH
11280 *) case "$usethreads" in
11281 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11282 esac
90e831dc
SB
11283 d_endpwent_r=undef
11284 endpwent_r_proto=0
c18e646a 11285 ;;
a48ec845
JH
11286 esac
11287 ;;
10bc17b6
JH
11288*) endpwent_r_proto=0
11289 ;;
11290esac
11291
b4eb6b3d
JH
11292: see if endservent exists
11293set endservent d_endsent
11294eval $inlibc
11295
10bc17b6
JH
11296: see if endservent_r exists
11297set endservent_r d_endservent_r
11298eval $inlibc
11299case "$d_endservent_r" in
11300"$define")
11301 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
11302 case "$d_endservent_r_proto:$usethreads" in
11303 ":define") d_endservent_r_proto=define
a48ec845
JH
11304 set d_endservent_r_proto endservent_r $hdrs
11305 eval $hasproto ;;
11306 *) ;;
11307 esac
11308 case "$d_endservent_r_proto" in
11309 define)
10bc17b6
JH
11310 case "$endservent_r_proto" in
11311 ''|0) try='int endservent_r(struct servent_data*);'
31ee0cb7 11312 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10bc17b6
JH
11313 esac
11314 case "$endservent_r_proto" in
11315 ''|0) try='void endservent_r(struct servent_data*);'
31ee0cb7 11316 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10bc17b6
JH
11317 esac
11318 case "$endservent_r_proto" in
90e831dc 11319 ''|0) d_endservent_r=undef
10bc17b6 11320 endservent_r_proto=0
a48ec845 11321 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
11322 * ) case "$endservent_r_proto" in
11323 REENTRANT_PROTO*) ;;
11324 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11325 esac
11326 echo "Prototype: $try" ;;
11327 esac
11328 ;;
c18e646a
JH
11329 *) case "$usethreads" in
11330 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11331 esac
90e831dc
SB
11332 d_endservent_r=undef
11333 endservent_r_proto=0
c18e646a 11334 ;;
a48ec845
JH
11335 esac
11336 ;;
10bc17b6
JH
11337*) endservent_r_proto=0
11338 ;;
11339esac
11340
b4eb6b3d
JH
11341: Locate the flags for 'open()'
11342echo " "
55954f19 11343$cat >try.c <<EOCP
b4eb6b3d
JH
11344#include <sys/types.h>
11345#ifdef I_FCNTL
11346#include <fcntl.h>
11347#endif
11348#ifdef I_SYS_FILE
11349#include <sys/file.h>
11350#endif
55954f19
JH
11351#$i_stdlib I_STDLIB
11352#ifdef I_STDLIB
11353#include <stdlib.h>
11354#endif
b4eb6b3d
JH
11355int main() {
11356 if(O_RDONLY);
11357#ifdef O_TRUNC
11358 exit(0);
11359#else
11360 exit(1);
11361#endif
11362}
11363EOCP
11364: check sys/file.h first to get FREAD on Sun
11365if $test `./findhdr sys/file.h` && \
5440bc8e 11366 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
11367 h_sysfile=true;
11368 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 11369 if $run ./try; then
b4eb6b3d
JH
11370 echo "and you have the 3 argument form of open()." >&4
11371 val="$define"
11372 else
11373 echo "but not the 3 argument form of open(). Oh, well." >&4
11374 val="$undef"
11375 fi
11376elif $test `./findhdr fcntl.h` && \
5440bc8e 11377 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
11378 h_fcntl=true;
11379 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 11380 if $run ./try; then
b4eb6b3d
JH
11381 echo "and you have the 3 argument form of open()." >&4
11382 val="$define"
11383 else
11384 echo "but not the 3 argument form of open(). Oh, well." >&4
11385 val="$undef"
11386 fi
11387else
11388 val="$undef"
11389 echo "I can't find the O_* constant definitions! You got problems." >&4
11390fi
11391set d_open3
11392eval $setvar
5440bc8e 11393$rm -f try try.*
b4eb6b3d
JH
11394
11395: see which of string.h or strings.h is needed
11396echo " "
11397strings=`./findhdr string.h`
11398if $test "$strings" && $test -r "$strings"; then
11399 echo "Using <string.h> instead of <strings.h>." >&4
11400 val="$define"
11401else
11402 val="$undef"
11403 strings=`./findhdr strings.h`
11404 if $test "$strings" && $test -r "$strings"; then
11405 echo "Using <strings.h> instead of <string.h>." >&4
11406 else
11407 echo "No string header found -- You'll surely have problems." >&4
11408 fi
11409fi
11410set i_string
11411eval $setvar
11412case "$i_string" in
11413"$undef") strings=`./findhdr strings.h`;;
11414*) strings=`./findhdr string.h`;;
11415esac
11416
3c728e00
JH
11417: see if this is a sys/file.h system
11418val=''
11419set sys/file.h val
11420eval $inhdr
11421
11422: do we need to include sys/file.h ?
11423case "$val" in
11424"$define")
11425 echo " "
11426 if $h_sysfile; then
11427 val="$define"
11428 echo "We'll be including <sys/file.h>." >&4
11429 else
11430 val="$undef"
11431 echo "We won't be including <sys/file.h>." >&4
11432 fi
11433 ;;
11434*)
11435 h_sysfile=false
11436 ;;
11437esac
11438set i_sysfile
11439eval $setvar
11440
11441: see if fcntl.h is there
11442val=''
11443set fcntl.h val
11444eval $inhdr
11445
11446: see if we can include fcntl.h
11447case "$val" in
11448"$define")
11449 echo " "
11450 if $h_fcntl; then
11451 val="$define"
11452 echo "We'll be including <fcntl.h>." >&4
11453 else
11454 val="$undef"
11455 if $h_sysfile; then
11456 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11457 else
11458 echo "We won't be including <fcntl.h>." >&4
11459 fi
11460 fi
11461 ;;
11462*)
11463 h_fcntl=false
11464 val="$undef"
11465 ;;
11466esac
11467set i_fcntl
11468eval $setvar
11469
b4eb6b3d
JH
11470: check for non-blocking I/O stuff
11471case "$h_sysfile" in
a0acbdc3
JH
11472true) echo "#include <sys/file.h>" > head.c;;
11473*)
11474 case "$h_fcntl" in
11475 true) echo "#include <fcntl.h>" > head.c;;
11476 *) echo "#include <sys/fcntl.h>" > head.c;;
11477 esac
11478 ;;
b4eb6b3d
JH
11479esac
11480echo " "
11481echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11482case "$o_nonblock" in
11483'')
11484 $cat head.c > try.c
3c728e00 11485 $cat >>try.c <<EOCP
b4eb6b3d 11486#include <stdio.h>
55954f19
JH
11487#$i_stdlib I_STDLIB
11488#ifdef I_STDLIB
80b3ef99 11489#include <stdlib.h>
55954f19 11490#endif
3c728e00
JH
11491#$i_fcntl I_FCNTL
11492#ifdef I_FCNTL
11493#include <fcntl.h>
11494#endif
b4eb6b3d
JH
11495int main() {
11496#ifdef O_NONBLOCK
11497 printf("O_NONBLOCK\n");
11498 exit(0);
11499#endif
11500#ifdef O_NDELAY
11501 printf("O_NDELAY\n");
11502 exit(0);
11503#endif
11504#ifdef FNDELAY
11505 printf("FNDELAY\n");
11506 exit(0);
11507#endif
11508 exit(0);
11509}
11510EOCP
11511 set try
11512 if eval $compile_ok; then
5440bc8e 11513 o_nonblock=`$run ./try`
b4eb6b3d
JH
11514 case "$o_nonblock" in
11515 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11516 *) echo "Seems like we can use $o_nonblock.";;
11517 esac
11518 else
11519 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11520 fi
11521 ;;
11522*) echo "Using $hint value $o_nonblock.";;
11523esac
11524$rm -f try try.* .out core
11525
11526echo " "
11527echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11528case "$eagain" in
11529'')
11530 $cat head.c > try.c
11531 $cat >>try.c <<EOCP
11532#include <errno.h>
11533#include <sys/types.h>
11534#include <signal.h>
11535#include <stdio.h>
55954f19
JH
11536#$i_stdlib I_STDLIB
11537#ifdef I_STDLIB
11538#include <stdlib.h>
11539#endif
1deb0a86
JH
11540#$i_fcntl I_FCNTL
11541#ifdef I_FCNTL
11542#include <fcntl.h>
11543#endif
b4eb6b3d
JH
11544#define MY_O_NONBLOCK $o_nonblock
11545#ifndef errno /* XXX need better Configure test */
11546extern int errno;
11547#endif
11548#$i_unistd I_UNISTD
11549#ifdef I_UNISTD
11550#include <unistd.h>
11551#endif
11552#$i_string I_STRING
11553#ifdef I_STRING
11554#include <string.h>
11555#else
11556#include <strings.h>
11557#endif
11558$signal_t blech(x) int x; { exit(3); }
11559EOCP
11560 $cat >> try.c <<'EOCP'
11561int main()
11562{
11563 int pd[2];
11564 int pu[2];
11565 char buf[1];
11566 char string[100];
11567
11568 pipe(pd); /* Down: child -> parent */
11569 pipe(pu); /* Up: parent -> child */
11570 if (0 != fork()) {
11571 int ret;
11572 close(pd[1]); /* Parent reads from pd[0] */
11573 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 11574#ifdef F_SETFL
b4eb6b3d
JH
11575 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11576 exit(1);
a0acbdc3
JH
11577#else
11578 exit(4);
11579#endif
b4eb6b3d
JH
11580 signal(SIGALRM, blech);
11581 alarm(5);
11582 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11583 exit(2);
11584 sprintf(string, "%d\n", ret);
11585 write(2, string, strlen(string));
11586 alarm(0);
11587#ifdef EAGAIN
11588 if (errno == EAGAIN) {
11589 printf("EAGAIN\n");
11590 goto ok;
11591 }
11592#endif
11593#ifdef EWOULDBLOCK
11594 if (errno == EWOULDBLOCK)
11595 printf("EWOULDBLOCK\n");
11596#endif
11597 ok:
11598 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11599 sleep(2); /* Give it time to close our pipe */
11600 alarm(5);
11601 ret = read(pd[0], buf, 1); /* Should read EOF */
11602 alarm(0);
11603 sprintf(string, "%d\n", ret);
868439a2 11604 write(4, string, strlen(string));
b4eb6b3d
JH
11605 exit(0);
11606 }
11607
11608 close(pd[0]); /* We write to pd[1] */
11609 close(pu[1]); /* We read from pu[0] */
11610 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11611 close(pd[1]); /* Pipe pd is now fully closed! */
11612 exit(0); /* Bye bye, thank you for playing! */
11613}
11614EOCP
11615 set try
11616 if eval $compile_ok; then
11617 echo "$startsh" >mtry
868439a2 11618 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
b4eb6b3d
JH
11619 chmod +x mtry
11620 ./mtry >/dev/null 2>&1
11621 case $? in
11622 0) eagain=`$cat try.out`;;
11623 1) echo "Could not perform non-blocking setting!";;
11624 2) echo "I did a successful read() for something that was not there!";;
11625 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 11626 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
11627 *) echo "Something terribly wrong happened during testing.";;
11628 esac
11629 rd_nodata=`$cat try.ret`
11630 echo "A read() system call with no data present returns $rd_nodata."
11631 case "$rd_nodata" in
11632 0|-1) ;;
11633 *)
11634 echo "(That's peculiar, fixing that to be -1.)"
11635 rd_nodata=-1
11636 ;;
11637 esac
11638 case "$eagain" in
11639 '')
11640 echo "Forcing errno EAGAIN on read() with no data available."
11641 eagain=EAGAIN
11642 ;;
11643 *)
11644 echo "Your read() sets errno to $eagain when no data is available."
11645 ;;
11646 esac
11647 status=`$cat try.err`
11648 case "$status" in
11649 0) echo "And it correctly returns 0 to signal EOF.";;
11650 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11651 *) echo "However, your read() returns '$status' on EOF??";;
11652 esac
11653 val="$define"
11654 if test "$status" = "$rd_nodata"; then
11655 echo "WARNING: you can't distinguish between EOF and no data!"
11656 val="$undef"
11657 fi
11658 else
11659 echo "I can't compile the test program--assuming errno EAGAIN will do."
11660 eagain=EAGAIN
11661 fi
11662 set d_eofnblk
11663 eval $setvar
11664 ;;
11665*)
11666 echo "Using $hint value $eagain."
11667 echo "Your read() returns $rd_nodata when no data is present."
11668 case "$d_eofnblk" in
11669 "$define") echo "And you can see EOF because read() returns 0.";;
11670 "$undef") echo "But you can't see EOF status from read() returned value.";;
11671 *)
11672 echo "(Assuming you can't see EOF status from read anyway.)"
11673 d_eofnblk=$undef
11674 ;;
11675 esac
11676 ;;
11677esac
11678$rm -f try try.* .out core head.c mtry
11679
b363b713
JH
11680: see if fchdir exists
11681set fchdir d_fchdir
11682eval $inlibc
11683
b4eb6b3d
JH
11684: see if fchmod exists
11685set fchmod d_fchmod
11686eval $inlibc
11687
11688: see if fchown exists
11689set fchown d_fchown
11690eval $inlibc
11691
11692: see if this is an fcntl system
11693set fcntl d_fcntl
11694eval $inlibc
11695
9d9004a9
AD
11696echo " "
11697: See if fcntl-based locking works.
832492ee 11698$cat >try.c <<EOCP
55954f19
JH
11699#$i_stdlib I_STDLIB
11700#ifdef I_STDLIB
9d9004a9 11701#include <stdlib.h>
55954f19 11702#endif
9d9004a9
AD
11703#include <unistd.h>
11704#include <fcntl.h>
832492ee 11705#include <signal.h>
832492ee 11706$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
11707int main() {
11708#if defined(F_SETLK) && defined(F_SETLKW)
11709 struct flock flock;
11710 int retval, fd;
11711 fd = open("try.c", O_RDONLY);
11712 flock.l_type = F_RDLCK;
11713 flock.l_whence = SEEK_SET;
11714 flock.l_start = flock.l_len = 0;
832492ee
JH
11715 signal(SIGALRM, blech);
11716 alarm(10);
9d9004a9
AD
11717 retval = fcntl(fd, F_SETLK, &flock);
11718 close(fd);
11719 (retval < 0 ? exit(2) : exit(0));
11720#else
11721 exit(2);
11722#endif
11723}
11724EOCP
11725echo "Checking if fcntl-based file locking works... "
11726case "$d_fcntl" in
11727"$define")
11728 set try
11729 if eval $compile_ok; then
5440bc8e 11730 if $run ./try; then
9d9004a9
AD
11731 echo "Yes, it seems to work."
11732 val="$define"
11733 else
11734 echo "Nope, it didn't work."
11735 val="$undef"
832492ee
JH
11736 case "$?" in
11737 3) $cat >&4 <<EOM
11738***
11739*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11740*** This is (almost) impossible.
11741*** If your NFS lock daemons are not feeling well, something like
11742*** this may happen, please investigate. Cannot continue, aborting.
11743***
11744EOM
11745 exit 1
11746 ;;
11747 esac
9d9004a9
AD
11748 fi
11749 else
11750 echo "I'm unable to compile the test program, so I'll assume not."
11751 val="$undef"
11752 fi
11753 ;;
11754*) val="$undef";
11755 echo "Nope, since you don't even have fcntl()."
11756 ;;
11757esac
11758set d_fcntl_can_lock
11759eval $setvar
11760$rm -f try*
11761
11762
b4eb6b3d
JH
11763: check for fd_set items
11764$cat <<EOM
11765
11766Checking to see how well your C compiler handles fd_set and friends ...
11767EOM
5440bc8e 11768$cat >try.c <<EOCP
55954f19
JH
11769#$i_stdlib I_STDLIB
11770#ifdef I_STDLIB
11771#include <stdlib.h>
11772#endif
b4eb6b3d
JH
11773#$i_systime I_SYS_TIME
11774#$i_sysselct I_SYS_SELECT
11775#$d_socket HAS_SOCKET
11776#include <sys/types.h>
11777#ifdef HAS_SOCKET
11778#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11779#endif
11780#ifdef I_SYS_TIME
11781#include <sys/time.h>
11782#endif
11783#ifdef I_SYS_SELECT
11784#include <sys/select.h>
11785#endif
11786int main() {
11787 fd_set fds;
11788
11789#ifdef TRYBITS
11790 if(fds.fds_bits);
11791#endif
11792
11793#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11794 exit(0);
11795#else
11796 exit(1);
11797#endif
11798}
11799EOCP
5440bc8e 11800set try -DTRYBITS
b4eb6b3d
JH
11801if eval $compile; then
11802 d_fds_bits="$define"
11803 d_fd_set="$define"
11804 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 11805 if $run ./try; then
b4eb6b3d
JH
11806 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11807 d_fd_macros="$define"
11808 else
11809 $cat >&4 <<'EOM'
11810but not the normal fd_set macros! Gaaack! I'll have to cover for you.
11811EOM
11812 d_fd_macros="$undef"
11813 fi
11814else
11815 $cat <<'EOM'
11816Hmm, your compiler has some difficulty with fd_set. Checking further...
11817EOM
5440bc8e 11818 set try
b4eb6b3d
JH
11819 if eval $compile; then
11820 d_fds_bits="$undef"
11821 d_fd_set="$define"
11822 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 11823 if $run ./try; then
b4eb6b3d
JH
11824 echo "and you have the normal fd_set macros." >&4
11825 d_fd_macros="$define"
11826 else
11827 $cat <<'EOM'
11828but not the normal fd_set macros! Gross! More work for me...
11829EOM
11830 d_fd_macros="$undef"
11831 fi
11832 else
11833 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
11834 d_fd_set="$undef"
11835 d_fds_bits="$undef"
11836 d_fd_macros="$undef"
11837 fi
11838fi
5440bc8e 11839$rm -f try try.*
b4eb6b3d
JH
11840
11841: see if fgetpos exists
11842set fgetpos d_fgetpos
11843eval $inlibc
11844
758a5d79
JH
11845: see if finite exists
11846set finite d_finite
11847eval $inlibc
11848
11849: see if finitel exists
11850set finitel d_finitel
11851eval $inlibc
11852
b4eb6b3d
JH
11853: see if flock exists
11854set flock d_flock
11855eval $inlibc
11856
2ef53570
JH
11857: see if prototype for flock is available
11858echo " "
11859set d_flockproto flock $i_sysfile sys/file.h
11860eval $hasproto
11861
b4eb6b3d
JH
11862: see if fork exists
11863set fork d_fork
11864eval $inlibc
11865
758a5d79
JH
11866: see if fp_class exists
11867set fp_class d_fp_class
11868eval $inlibc
11869
b4eb6b3d
JH
11870: see if pathconf exists
11871set pathconf d_pathconf
11872eval $inlibc
11873
11874: see if fpathconf exists
11875set fpathconf d_fpathconf
11876eval $inlibc
11877
758a5d79
JH
11878: see if fpclass exists
11879set fpclass d_fpclass
11880eval $inlibc
11881
11882: see if fpclassify exists
11883set fpclassify d_fpclassify
11884eval $inlibc
11885
11886: see if fpclassl exists
11887set fpclassl d_fpclassl
11888eval $inlibc
11889
b4eb6b3d
JH
11890
11891: check for fpos64_t
11892echo " "
11893echo "Checking to see if you have fpos64_t..." >&4
11894$cat >try.c <<EOCP
11895#include <stdio.h>
11896int main() { fpos64_t x = 7; }
11897EOCP
11898set try
11899if eval $compile; then
11900 val="$define"
11901 echo "You have fpos64_t."
11902else
11903 val="$undef"
11904 echo "You do not have fpos64_t."
11905 case "$fpossize" in
11906 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11907 esac
11908fi
11909$rm -f try.* try
11910set d_fpos64_t
11911eval $setvar
11912
11913: see if frexpl exists
11914set frexpl d_frexpl
11915eval $inlibc
11916
b4eb6b3d
JH
11917: see if this is a sys/param system
11918set sys/param.h i_sysparam
11919eval $inhdr
11920
11921: see if this is a sys/mount.h system
11922set sys/mount.h i_sysmount
11923eval $inhdr
11924
b4eb6b3d
JH
11925
11926echo " "
11927echo "Checking to see if your system supports struct fs_data..." >&4
11928set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11929eval $hasstruct
11930case "$d_fs_data_s" in
11931"$define") echo "Yes, it does." ;;
11932*) echo "No, it doesn't." ;;
11933esac
11934
11935: see if fseeko exists
11936set fseeko d_fseeko
11937eval $inlibc
11938case "$longsize" in
119398) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11940esac
11941
11942: see if fsetpos exists
11943set fsetpos d_fsetpos
11944eval $inlibc
11945
11946
11947: see if fstatfs exists
11948set fstatfs d_fstatfs
11949eval $inlibc
11950
11951
11952: see if statvfs exists
11953set statvfs d_statvfs
11954eval $inlibc
11955
11956: see if fstatvfs exists
11957set fstatvfs d_fstatvfs
11958eval $inlibc
11959
11960
411ab01c
JH
11961: see if fsync exists
11962set fsync d_fsync
11963eval $inlibc
11964
b4eb6b3d
JH
11965: see if ftello exists
11966set ftello d_ftello
11967eval $inlibc
11968case "$longsize" in
119698) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11970esac
11971
11972: see if getcwd exists
11973set getcwd d_getcwd
11974eval $inlibc
11975
11976: see if getespwnam exists
11977set getespwnam d_getespwnam
11978eval $inlibc
11979
11980
11981: see if getfsstat exists
11982set getfsstat d_getfsstat
11983eval $inlibc
11984
11985: see if getgrent exists
11986set getgrent d_getgrent
11987eval $inlibc
11988
10bc17b6
JH
11989: see if getgrent_r exists
11990set getgrent_r d_getgrent_r
11991eval $inlibc
11992case "$d_getgrent_r" in
11993"$define")
11994 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
11995 case "$d_getgrent_r_proto:$usethreads" in
11996 ":define") d_getgrent_r_proto=define
a48ec845
JH
11997 set d_getgrent_r_proto getgrent_r $hdrs
11998 eval $hasproto ;;
11999 *) ;;
12000 esac
12001 case "$d_getgrent_r_proto" in
12002 define)
10bc17b6
JH
12003 case "$getgrent_r_proto" in
12004 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12005 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12006 esac
12007 case "$getgrent_r_proto" in
12008 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12009 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12010 esac
12011 case "$getgrent_r_proto" in
12012 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12013 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12014 esac
12015 case "$getgrent_r_proto" in
12016 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12017 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12018 esac
12019 case "$getgrent_r_proto" in
12020 ''|0) try='int getgrent_r(struct group*, char*, int);'
12021 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12022 esac
12023 case "$getgrent_r_proto" in
12024 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12025 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12026 esac
12027 case "$getgrent_r_proto" in
90e831dc 12028 ''|0) d_getgrent_r=undef
10bc17b6 12029 getgrent_r_proto=0
a48ec845 12030 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12031 * ) case "$getgrent_r_proto" in
12032 REENTRANT_PROTO*) ;;
12033 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12034 esac
12035 echo "Prototype: $try" ;;
12036 esac
12037 ;;
c18e646a
JH
12038 *) case "$usethreads" in
12039 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12040 esac
90e831dc
SB
12041 d_getgrent_r=undef
12042 getgrent_r_proto=0
c18e646a 12043 ;;
a48ec845
JH
12044 esac
12045 ;;
10bc17b6
JH
12046*) getgrent_r_proto=0
12047 ;;
12048esac
12049
12050: see if getgrgid_r exists
12051set getgrgid_r d_getgrgid_r
12052eval $inlibc
12053case "$d_getgrgid_r" in
12054"$define")
12055 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12056 case "$d_getgrgid_r_proto:$usethreads" in
12057 ":define") d_getgrgid_r_proto=define
a48ec845
JH
12058 set d_getgrgid_r_proto getgrgid_r $hdrs
12059 eval $hasproto ;;
12060 *) ;;
12061 esac
12062 case "$d_getgrgid_r_proto" in
12063 define)
10bc17b6
JH
12064 case "$getgrgid_r_proto" in
12065 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12066 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12067 esac
12068 case "$getgrgid_r_proto" in
12069 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12070 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12071 esac
12072 case "$getgrgid_r_proto" in
12073 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12074 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12075 esac
12076 case "$getgrgid_r_proto" in
12077 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12078 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12079 esac
12080 case "$getgrgid_r_proto" in
90e831dc 12081 ''|0) d_getgrgid_r=undef
10bc17b6 12082 getgrgid_r_proto=0
a48ec845 12083 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12084 * ) case "$getgrgid_r_proto" in
12085 REENTRANT_PROTO*) ;;
12086 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12087 esac
12088 echo "Prototype: $try" ;;
12089 esac
12090 ;;
c18e646a
JH
12091 *) case "$usethreads" in
12092 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12093 esac
90e831dc
SB
12094 d_getgrgid_r=undef
12095 getgrgid_r_proto=0
c18e646a 12096 ;;
a48ec845
JH
12097 esac
12098 ;;
10bc17b6
JH
12099*) getgrgid_r_proto=0
12100 ;;
12101esac
12102
12103: see if getgrnam_r exists
12104set getgrnam_r d_getgrnam_r
12105eval $inlibc
12106case "$d_getgrnam_r" in
12107"$define")
12108 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
12109 case "$d_getgrnam_r_proto:$usethreads" in
12110 ":define") d_getgrnam_r_proto=define
a48ec845
JH
12111 set d_getgrnam_r_proto getgrnam_r $hdrs
12112 eval $hasproto ;;
12113 *) ;;
12114 esac
12115 case "$d_getgrnam_r_proto" in
12116 define)
10bc17b6
JH
12117 case "$getgrnam_r_proto" in
12118 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12119 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12120 esac
12121 case "$getgrnam_r_proto" in
12122 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12123 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12124 esac
12125 case "$getgrnam_r_proto" in
12126 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12127 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12128 esac
12129 case "$getgrnam_r_proto" in
12130 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12131 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12132 esac
12133 case "$getgrnam_r_proto" in
12134 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12135 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12136 esac
12137 case "$getgrnam_r_proto" in
90e831dc 12138 ''|0) d_getgrnam_r=undef
10bc17b6 12139 getgrnam_r_proto=0
a48ec845 12140 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12141 * ) case "$getgrnam_r_proto" in
12142 REENTRANT_PROTO*) ;;
12143 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12144 esac
12145 echo "Prototype: $try" ;;
12146 esac
12147 ;;
c18e646a
JH
12148 *) case "$usethreads" in
12149 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12150 esac
90e831dc
SB
12151 d_getgrnam_r=undef
12152 getgrnam_r_proto=0
c18e646a 12153 ;;
a48ec845
JH
12154 esac
12155 ;;
10bc17b6
JH
12156*) getgrnam_r_proto=0
12157 ;;
12158esac
12159
b4eb6b3d
JH
12160: see if gethostbyaddr exists
12161set gethostbyaddr d_gethbyaddr
12162eval $inlibc
12163
12164: see if gethostbyname exists
12165set gethostbyname d_gethbyname
12166eval $inlibc
12167
12168: see if gethostent exists
12169set gethostent d_gethent
12170eval $inlibc
12171
12172: see how we will look up host name
12173echo " "
12174call=''
12175if set gethostname val -f d_gethname; eval $csym; $val; then
12176 echo 'gethostname() found.' >&4
12177 d_gethname="$define"
12178 call=gethostname
12179fi
12180if set uname val -f d_uname; eval $csym; $val; then
12181 if ./xenix; then
12182 $cat <<'EOM'
12183uname() was found, but you're running xenix, and older versions of xenix
12184have a broken uname(). If you don't really know whether your xenix is old
12185enough to have a broken system call, use the default answer.
12186
12187EOM
12188 dflt=y
12189 case "$d_uname" in
12190 "$define") dflt=n;;
12191 esac
12192 rp='Is your uname() broken?'
12193 . ./myread
12194 case "$ans" in
12195 n*) d_uname="$define"; call=uname;;
12196 esac
12197 else
12198 echo 'uname() found.' >&4
12199 d_uname="$define"
12200 case "$call" in
12201 '') call=uname ;;
12202 esac
12203 fi
12204fi
12205case "$d_gethname" in
12206'') d_gethname="$undef";;
12207esac
12208case "$d_uname" in
12209'') d_uname="$undef";;
12210esac
12211case "$d_uname$d_gethname" in
12212*define*)
12213 dflt=n
12214 cat <<EOM
12215
12216Every now and then someone has a $call() that lies about the hostname
12217but can't be fixed for political or economic reasons. If you wish, I can
12218pretend $call() isn't there and maybe compute hostname at run-time
12219thanks to the '$phostname' command.
12220
12221EOM
12222 rp="Shall I ignore $call() from now on?"
12223 . ./myread
12224 case "$ans" in
12225 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12226 esac;;
12227esac
12228case "$phostname" in
12229'') aphostname='';;
12230*) case "$aphostname" in
12231 /*) ;;
12232 *) set X $phostname
12233 shift
12234 file=$1
12235 shift
12236 file=`./loc $file $file $pth`
12237 aphostname=`echo $file $*`
12238 ;;
12239 esac
12240 ;;
12241esac
12242case "$d_uname$d_gethname" in
12243*define*) ;;
12244*)
12245 case "$phostname" in
12246 '')
12247 echo "There will be no way for $package to get your hostname." >&4;;
12248 *)
12249 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12250 ;;
12251 esac;;
12252esac
12253case "$d_phostname" in
12254'') d_phostname="$undef";;
12255esac
12256
10bc17b6
JH
12257: see if gethostbyaddr_r exists
12258set gethostbyaddr_r d_gethostbyaddr_r
12259eval $inlibc
12260case "$d_gethostbyaddr_r" in
12261"$define")
12262 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12263 case "$d_gethostbyaddr_r_proto:$usethreads" in
12264 ":define") d_gethostbyaddr_r_proto=define
a48ec845
JH
12265 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12266 eval $hasproto ;;
12267 *) ;;
12268 esac
12269 case "$d_gethostbyaddr_r_proto" in
12270 define)
10bc17b6
JH
12271 case "$gethostbyaddr_r_proto" in
12272 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12273 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12274 esac
12275 case "$gethostbyaddr_r_proto" in
12276 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12277 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12278 esac
12279 case "$gethostbyaddr_r_proto" in
12280 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12281 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12282 esac
12283 case "$gethostbyaddr_r_proto" in
12284 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12285 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12286 esac
12287 case "$gethostbyaddr_r_proto" in
12288 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12289 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12290 esac
12291 case "$gethostbyaddr_r_proto" in
12292 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12293 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12294 esac
12295 case "$gethostbyaddr_r_proto" in
12296 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12297 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12298 esac
12299 case "$gethostbyaddr_r_proto" in
12300 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12301 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12302 esac
12303 case "$gethostbyaddr_r_proto" in
12304 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12305 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12306 esac
12307 case "$gethostbyaddr_r_proto" in
12308 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12309 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12310 esac
12311 case "$gethostbyaddr_r_proto" in
a845a0d4
JH
12312 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12313 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12314 esac
12315 case "$gethostbyaddr_r_proto" in
90e831dc 12316 ''|0) d_gethostbyaddr_r=undef
10bc17b6 12317 gethostbyaddr_r_proto=0
a48ec845 12318 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12319 * ) case "$gethostbyaddr_r_proto" in
12320 REENTRANT_PROTO*) ;;
12321 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12322 esac
12323 echo "Prototype: $try" ;;
12324 esac
12325 ;;
c18e646a
JH
12326 *) case "$usethreads" in
12327 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12328 esac
90e831dc
SB
12329 d_gethostbyaddr_r=undef
12330 gethostbyaddr_r_proto=0
c18e646a 12331 ;;
a48ec845
JH
12332 esac
12333 ;;
10bc17b6
JH
12334*) gethostbyaddr_r_proto=0
12335 ;;
12336esac
12337
12338: see if gethostbyname_r exists
12339set gethostbyname_r d_gethostbyname_r
12340eval $inlibc
12341case "$d_gethostbyname_r" in
12342"$define")
12343 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12344 case "$d_gethostbyname_r_proto:$usethreads" in
12345 ":define") d_gethostbyname_r_proto=define
a48ec845
JH
12346 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12347 eval $hasproto ;;
12348 *) ;;
12349 esac
12350 case "$d_gethostbyname_r_proto" in
12351 define)
10bc17b6
JH
12352 case "$gethostbyname_r_proto" in
12353 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12354 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12355 esac
12356 case "$gethostbyname_r_proto" in
12357 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12358 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12359 esac
12360 case "$gethostbyname_r_proto" in
12361 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12362 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12363 esac
12364 case "$gethostbyname_r_proto" in
90e831dc 12365 ''|0) d_gethostbyname_r=undef
10bc17b6 12366 gethostbyname_r_proto=0
a48ec845 12367 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12368 * ) case "$gethostbyname_r_proto" in
12369 REENTRANT_PROTO*) ;;
12370 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12371 esac
12372 echo "Prototype: $try" ;;
12373 esac
12374 ;;
c18e646a
JH
12375 *) case "$usethreads" in
12376 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12377 esac
90e831dc
SB
12378 d_gethostbyname_r=undef
12379 gethostbyname_r_proto=0
c18e646a 12380 ;;
a48ec845
JH
12381 esac
12382 ;;
10bc17b6
JH
12383*) gethostbyname_r_proto=0
12384 ;;
12385esac
12386
12387: see if gethostent_r exists
12388set gethostent_r d_gethostent_r
12389eval $inlibc
12390case "$d_gethostent_r" in
12391"$define")
12392 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12393 case "$d_gethostent_r_proto:$usethreads" in
12394 ":define") d_gethostent_r_proto=define
a48ec845
JH
12395 set d_gethostent_r_proto gethostent_r $hdrs
12396 eval $hasproto ;;
12397 *) ;;
12398 esac
12399 case "$d_gethostent_r_proto" in
12400 define)
10bc17b6
JH
12401 case "$gethostent_r_proto" in
12402 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12403 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12404 esac
12405 case "$gethostent_r_proto" in
12406 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12407 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12408 esac
12409 case "$gethostent_r_proto" in
12410 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12411 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12412 esac
12413 case "$gethostent_r_proto" in
12414 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12415 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12416 esac
12417 case "$gethostent_r_proto" in
12418 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12419 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12420 esac
12421 case "$gethostent_r_proto" in
12422 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12423 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12424 esac
12425 case "$gethostent_r_proto" in
90e831dc 12426 ''|0) d_gethostent_r=undef
10bc17b6 12427 gethostent_r_proto=0
a48ec845 12428 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12429 * ) case "$gethostent_r_proto" in
12430 REENTRANT_PROTO*) ;;
12431 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12432 esac
12433 echo "Prototype: $try" ;;
12434 esac
12435 ;;
c18e646a
JH
12436 *) case "$usethreads" in
12437 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12438 esac
90e831dc
SB
12439 d_gethostent_r=undef
12440 gethostent_r_proto=0
c18e646a 12441 ;;
a48ec845
JH
12442 esac
12443 ;;
10bc17b6
JH
12444*) gethostent_r_proto=0
12445 ;;
12446esac
b4eb6b3d
JH
12447
12448: see if prototypes for various gethostxxx netdb.h functions are available
12449echo " "
12450set d_gethostprotos gethostent $i_netdb netdb.h
12451eval $hasproto
12452
4e0554ec
JH
12453: see if getitimer exists
12454set getitimer d_getitimer
12455eval $inlibc
12456
b4eb6b3d
JH
12457: see if getlogin exists
12458set getlogin d_getlogin
12459eval $inlibc
12460
10bc17b6
JH
12461: see if getlogin_r exists
12462set getlogin_r d_getlogin_r
12463eval $inlibc
12464case "$d_getlogin_r" in
12465"$define")
12466 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
12467 case "$d_getlogin_r_proto:$usethreads" in
12468 ":define") d_getlogin_r_proto=define
a48ec845
JH
12469 set d_getlogin_r_proto getlogin_r $hdrs
12470 eval $hasproto ;;
12471 *) ;;
12472 esac
12473 case "$d_getlogin_r_proto" in
12474 define)
10bc17b6
JH
12475 case "$getlogin_r_proto" in
12476 ''|0) try='int getlogin_r(char*, size_t);'
12477 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12478 esac
12479 case "$getlogin_r_proto" in
12480 ''|0) try='int getlogin_r(char*, int);'
12481 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12482 esac
12483 case "$getlogin_r_proto" in
12484 ''|0) try='char* getlogin_r(char*, size_t);'
12485 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12486 esac
12487 case "$getlogin_r_proto" in
12488 ''|0) try='char* getlogin_r(char*, int);'
12489 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12490 esac
12491 case "$getlogin_r_proto" in
90e831dc 12492 ''|0) d_getlogin_r=undef
10bc17b6 12493 getlogin_r_proto=0
a48ec845 12494 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12495 * ) case "$getlogin_r_proto" in
12496 REENTRANT_PROTO*) ;;
12497 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12498 esac
12499 echo "Prototype: $try" ;;
12500 esac
12501 ;;
c18e646a
JH
12502 *) case "$usethreads" in
12503 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12504 esac
90e831dc
SB
12505 d_getlogin_r=undef
12506 getlogin_r_proto=0
c18e646a 12507 ;;
a48ec845
JH
12508 esac
12509 ;;
10bc17b6
JH
12510*) getlogin_r_proto=0
12511 ;;
12512esac
12513
b4eb6b3d
JH
12514: see if getmnt exists
12515set getmnt d_getmnt
12516eval $inlibc
12517
12518: see if getmntent exists
12519set getmntent d_getmntent
12520eval $inlibc
12521
12522: see if getnetbyaddr exists
12523set getnetbyaddr d_getnbyaddr
12524eval $inlibc
12525
12526: see if getnetbyname exists
12527set getnetbyname d_getnbyname
12528eval $inlibc
12529
12530: see if getnetent exists
12531set getnetent d_getnent
12532eval $inlibc
12533
10bc17b6
JH
12534: see if getnetbyaddr_r exists
12535set getnetbyaddr_r d_getnetbyaddr_r
12536eval $inlibc
12537case "$d_getnetbyaddr_r" in
12538"$define")
12539 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12540 case "$d_getnetbyaddr_r_proto:$usethreads" in
12541 ":define") d_getnetbyaddr_r_proto=define
a48ec845
JH
12542 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12543 eval $hasproto ;;
12544 *) ;;
12545 esac
12546 case "$d_getnetbyaddr_r_proto" in
12547 define)
10bc17b6
JH
12548 case "$getnetbyaddr_r_proto" in
12549 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12550 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12551 esac
12552 case "$getnetbyaddr_r_proto" in
12553 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12554 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12555 esac
12556 case "$getnetbyaddr_r_proto" in
12557 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12558 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12559 esac
12560 case "$getnetbyaddr_r_proto" in
12561 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12562 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12563 esac
12564 case "$getnetbyaddr_r_proto" in
12565 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12566 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12567 esac
12568 case "$getnetbyaddr_r_proto" in
12569 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12570 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12571 esac
12572 case "$getnetbyaddr_r_proto" in
12573 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12574 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12575 esac
12576 case "$getnetbyaddr_r_proto" in
a845a0d4
JH
12577 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12578 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12579 esac
12580 case "$getnetbyaddr_r_proto" in
90e831dc 12581 ''|0) d_getnetbyaddr_r=undef
10bc17b6 12582 getnetbyaddr_r_proto=0
a48ec845 12583 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12584 * ) case "$getnetbyaddr_r_proto" in
12585 REENTRANT_PROTO*) ;;
12586 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12587 esac
12588 echo "Prototype: $try" ;;
12589 esac
12590 ;;
c18e646a
JH
12591 *) case "$usethreads" in
12592 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12593 esac
90e831dc
SB
12594 d_getnetbyaddr_r=undef
12595 getnetbyaddr_r_proto=0
c18e646a 12596 ;;
a48ec845
JH
12597 esac
12598 ;;
10bc17b6
JH
12599*) getnetbyaddr_r_proto=0
12600 ;;
12601esac
12602
12603: see if getnetbyname_r exists
12604set getnetbyname_r d_getnetbyname_r
12605eval $inlibc
12606case "$d_getnetbyname_r" in
12607"$define")
12608 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12609 case "$d_getnetbyname_r_proto:$usethreads" in
12610 ":define") d_getnetbyname_r_proto=define
a48ec845
JH
12611 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12612 eval $hasproto ;;
12613 *) ;;
12614 esac
12615 case "$d_getnetbyname_r_proto" in
12616 define)
10bc17b6
JH
12617 case "$getnetbyname_r_proto" in
12618 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12619 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12620 esac
12621 case "$getnetbyname_r_proto" in
12622 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12623 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12624 esac
12625 case "$getnetbyname_r_proto" in
12626 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12627 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12628 esac
12629 case "$getnetbyname_r_proto" in
12630 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12631 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12632 esac
12633 case "$getnetbyname_r_proto" in
90e831dc 12634 ''|0) d_getnetbyname_r=undef
10bc17b6 12635 getnetbyname_r_proto=0
a48ec845 12636 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12637 * ) case "$getnetbyname_r_proto" in
12638 REENTRANT_PROTO*) ;;
12639 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12640 esac
12641 echo "Prototype: $try" ;;
12642 esac
12643 ;;
c18e646a
JH
12644 *) case "$usethreads" in
12645 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12646 esac
90e831dc
SB
12647 d_getnetbyname_r=undef
12648 getnetbyname_r_proto=0
c18e646a 12649 ;;
a48ec845
JH
12650 esac
12651 ;;
10bc17b6
JH
12652*) getnetbyname_r_proto=0
12653 ;;
12654esac
12655
12656: see if getnetent_r exists
12657set getnetent_r d_getnetent_r
12658eval $inlibc
12659case "$d_getnetent_r" in
12660"$define")
12661 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12662 case "$d_getnetent_r_proto:$usethreads" in
12663 ":define") d_getnetent_r_proto=define
a48ec845
JH
12664 set d_getnetent_r_proto getnetent_r $hdrs
12665 eval $hasproto ;;
12666 *) ;;
12667 esac
12668 case "$d_getnetent_r_proto" in
12669 define)
10bc17b6
JH
12670 case "$getnetent_r_proto" in
12671 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12672 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12673 esac
12674 case "$getnetent_r_proto" in
12675 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12676 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12677 esac
12678 case "$getnetent_r_proto" in
12679 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12680 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12681 esac
12682 case "$getnetent_r_proto" in
12683 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12684 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12685 esac
12686 case "$getnetent_r_proto" in
12687 ''|0) try='int getnetent_r(struct netent*, char*, int);'
12688 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12689 esac
12690 case "$getnetent_r_proto" in
12691 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12692 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12693 esac
12694 case "$getnetent_r_proto" in
90e831dc 12695 ''|0) d_getnetent_r=undef
10bc17b6 12696 getnetent_r_proto=0
a48ec845 12697 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12698 * ) case "$getnetent_r_proto" in
12699 REENTRANT_PROTO*) ;;
12700 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12701 esac
12702 echo "Prototype: $try" ;;
12703 esac
12704 ;;
c18e646a
JH
12705 *) case "$usethreads" in
12706 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12707 esac
90e831dc
SB
12708 d_getnetent_r=undef
12709 getnetent_r_proto=0
c18e646a 12710 ;;
a48ec845
JH
12711 esac
12712 ;;
10bc17b6
JH
12713*) getnetent_r_proto=0
12714 ;;
12715esac
12716
b4eb6b3d
JH
12717: see if prototypes for various getnetxxx netdb.h functions are available
12718echo " "
12719set d_getnetprotos getnetent $i_netdb netdb.h
12720eval $hasproto
12721
0c0643d0
JH
12722: see if getpagesize exists
12723set getpagesize d_getpagsz
12724eval $inlibc
12725
b4eb6b3d
JH
12726
12727: see if getprotobyname exists
12728set getprotobyname d_getpbyname
12729eval $inlibc
12730
12731: see if getprotobynumber exists
12732set getprotobynumber d_getpbynumber
12733eval $inlibc
12734
12735: see if getprotoent exists
12736set getprotoent d_getpent
12737eval $inlibc
12738
12739: see if getpgid exists
12740set getpgid d_getpgid
12741eval $inlibc
12742
12743: see if getpgrp2 exists
12744set getpgrp2 d_getpgrp2
12745eval $inlibc
12746
12747: see if getppid exists
12748set getppid d_getppid
12749eval $inlibc
12750
12751: see if getpriority exists
12752set getpriority d_getprior
12753eval $inlibc
12754
10bc17b6
JH
12755: see if getprotobyname_r exists
12756set getprotobyname_r d_getprotobyname_r
12757eval $inlibc
12758case "$d_getprotobyname_r" in
12759"$define")
12760 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12761 case "$d_getprotobyname_r_proto:$usethreads" in
12762 ":define") d_getprotobyname_r_proto=define
a48ec845
JH
12763 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12764 eval $hasproto ;;
12765 *) ;;
12766 esac
12767 case "$d_getprotobyname_r_proto" in
12768 define)
10bc17b6
JH
12769 case "$getprotobyname_r_proto" in
12770 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12771 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12772 esac
12773 case "$getprotobyname_r_proto" in
12774 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12775 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12776 esac
12777 case "$getprotobyname_r_proto" in
12778 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12779 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12780 esac
12781 case "$getprotobyname_r_proto" in
90e831dc 12782 ''|0) d_getprotobyname_r=undef
10bc17b6 12783 getprotobyname_r_proto=0
a48ec845 12784 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12785 * ) case "$getprotobyname_r_proto" in
12786 REENTRANT_PROTO*) ;;
12787 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12788 esac
12789 echo "Prototype: $try" ;;
12790 esac
12791 ;;
c18e646a
JH
12792 *) case "$usethreads" in
12793 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12794 esac
90e831dc
SB
12795 d_getprotobyname_r=undef
12796 getprotobyname_r_proto=0
c18e646a 12797 ;;
a48ec845
JH
12798 esac
12799 ;;
10bc17b6
JH
12800*) getprotobyname_r_proto=0
12801 ;;
12802esac
12803
12804: see if getprotobynumber_r exists
12805set getprotobynumber_r d_getprotobynumber_r
12806eval $inlibc
12807case "$d_getprotobynumber_r" in
12808"$define")
12809 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12810 case "$d_getprotobynumber_r_proto:$usethreads" in
12811 ":define") d_getprotobynumber_r_proto=define
a48ec845
JH
12812 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12813 eval $hasproto ;;
12814 *) ;;
12815 esac
12816 case "$d_getprotobynumber_r_proto" in
12817 define)
10bc17b6
JH
12818 case "$getprotobynumber_r_proto" in
12819 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12820 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12821 esac
12822 case "$getprotobynumber_r_proto" in
12823 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12824 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12825 esac
12826 case "$getprotobynumber_r_proto" in
12827 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12828 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12829 esac
12830 case "$getprotobynumber_r_proto" in
90e831dc 12831 ''|0) d_getprotobynumber_r=undef
10bc17b6 12832 getprotobynumber_r_proto=0
a48ec845 12833 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12834 * ) case "$getprotobynumber_r_proto" in
12835 REENTRANT_PROTO*) ;;
12836 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12837 esac
12838 echo "Prototype: $try" ;;
12839 esac
12840 ;;
c18e646a
JH
12841 *) case "$usethreads" in
12842 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12843 esac
90e831dc
SB
12844 d_getprotobynumber_r=undef
12845 getprotobynumber_r_proto=0
c18e646a 12846 ;;
a48ec845
JH
12847 esac
12848 ;;
10bc17b6
JH
12849*) getprotobynumber_r_proto=0
12850 ;;
12851esac
12852
12853: see if getprotoent_r exists
12854set getprotoent_r d_getprotoent_r
12855eval $inlibc
12856case "$d_getprotoent_r" in
12857"$define")
12858 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
12859 case "$d_getprotoent_r_proto:$usethreads" in
12860 ":define") d_getprotoent_r_proto=define
a48ec845
JH
12861 set d_getprotoent_r_proto getprotoent_r $hdrs
12862 eval $hasproto ;;
12863 *) ;;
12864 esac
12865 case "$d_getprotoent_r_proto" in
12866 define)
10bc17b6
JH
12867 case "$getprotoent_r_proto" in
12868 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12869 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12870 esac
12871 case "$getprotoent_r_proto" in
12872 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12873 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12874 esac
12875 case "$getprotoent_r_proto" in
12876 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12877 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12878 esac
12879 case "$getprotoent_r_proto" in
12880 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12881 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12882 esac
12883 case "$getprotoent_r_proto" in
90e831dc 12884 ''|0) d_getprotoent_r=undef
10bc17b6 12885 getprotoent_r_proto=0
a48ec845 12886 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12887 * ) case "$getprotoent_r_proto" in
12888 REENTRANT_PROTO*) ;;
12889 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12890 esac
12891 echo "Prototype: $try" ;;
12892 esac
12893 ;;
c18e646a
JH
12894 *) case "$usethreads" in
12895 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12896 esac
90e831dc
SB
12897 d_getprotoent_r=undef
12898 getprotoent_r_proto=0
c18e646a 12899 ;;
a48ec845
JH
12900 esac
12901 ;;
10bc17b6
JH
12902*) getprotoent_r_proto=0
12903 ;;
12904esac
12905
b4eb6b3d
JH
12906: see if prototypes for various getprotoxxx netdb.h functions are available
12907echo " "
12908set d_getprotoprotos getprotoent $i_netdb netdb.h
12909eval $hasproto
12910
12911: see if getprpwnam exists
12912set getprpwnam d_getprpwnam
12913eval $inlibc
12914
12915: see if getpwent exists
12916set getpwent d_getpwent
12917eval $inlibc
12918
10bc17b6
JH
12919: see if getpwent_r exists
12920set getpwent_r d_getpwent_r
12921eval $inlibc
12922case "$d_getpwent_r" in
12923"$define")
12924 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
12925 case "$d_getpwent_r_proto:$usethreads" in
12926 ":define") d_getpwent_r_proto=define
a48ec845
JH
12927 set d_getpwent_r_proto getpwent_r $hdrs
12928 eval $hasproto ;;
12929 *) ;;
12930 esac
12931 case "$d_getpwent_r_proto" in
12932 define)
10bc17b6
JH
12933 case "$getpwent_r_proto" in
12934 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12935 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12936 esac
12937 case "$getpwent_r_proto" in
12938 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12939 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12940 esac
12941 case "$getpwent_r_proto" in
12942 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12943 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12944 esac
12945 case "$getpwent_r_proto" in
12946 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12947 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12948 esac
12949 case "$getpwent_r_proto" in
12950 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12951 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12952 esac
12953 case "$getpwent_r_proto" in
12954 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12955 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12956 esac
12957 case "$getpwent_r_proto" in
90e831dc 12958 ''|0) d_getpwent_r=undef
10bc17b6 12959 getpwent_r_proto=0
a48ec845 12960 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
12961 * ) case "$getpwent_r_proto" in
12962 REENTRANT_PROTO*) ;;
12963 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12964 esac
12965 echo "Prototype: $try" ;;
12966 esac
12967 ;;
c18e646a
JH
12968 *) case "$usethreads" in
12969 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12970 esac
90e831dc
SB
12971 d_getpwent_r=undef
12972 getpwent_r_proto=0
c18e646a 12973 ;;
a48ec845
JH
12974 esac
12975 ;;
10bc17b6
JH
12976*) getpwent_r_proto=0
12977 ;;
12978esac
12979
12980: see if getpwnam_r exists
12981set getpwnam_r d_getpwnam_r
12982eval $inlibc
12983case "$d_getpwnam_r" in
12984"$define")
12985 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
12986 case "$d_getpwnam_r_proto:$usethreads" in
12987 ":define") d_getpwnam_r_proto=define
a48ec845
JH
12988 set d_getpwnam_r_proto getpwnam_r $hdrs
12989 eval $hasproto ;;
12990 *) ;;
12991 esac
12992 case "$d_getpwnam_r_proto" in
12993 define)
10bc17b6
JH
12994 case "$getpwnam_r_proto" in
12995 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12996 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12997 esac
12998 case "$getpwnam_r_proto" in
12999 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13000 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13001 esac
13002 case "$getpwnam_r_proto" in
13003 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13004 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13005 esac
13006 case "$getpwnam_r_proto" in
13007 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13008 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13009 esac
13010 case "$getpwnam_r_proto" in
90e831dc 13011 ''|0) d_getpwnam_r=undef
10bc17b6 13012 getpwnam_r_proto=0
a48ec845 13013 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13014 * ) case "$getpwnam_r_proto" in
13015 REENTRANT_PROTO*) ;;
13016 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13017 esac
13018 echo "Prototype: $try" ;;
13019 esac
13020 ;;
c18e646a
JH
13021 *) case "$usethreads" in
13022 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13023 esac
90e831dc
SB
13024 d_getpwnam_r=undef
13025 getpwnam_r_proto=0
c18e646a 13026 ;;
a48ec845
JH
13027 esac
13028 ;;
10bc17b6
JH
13029*) getpwnam_r_proto=0
13030 ;;
13031esac
13032
13033: see if getpwuid_r exists
13034set getpwuid_r d_getpwuid_r
13035eval $inlibc
13036case "$d_getpwuid_r" in
13037"$define")
13038 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
13039 case "$d_getpwuid_r_proto:$usethreads" in
13040 ":define") d_getpwuid_r_proto=define
a48ec845
JH
13041 set d_getpwuid_r_proto getpwuid_r $hdrs
13042 eval $hasproto ;;
13043 *) ;;
13044 esac
13045 case "$d_getpwuid_r_proto" in
13046 define)
10bc17b6
JH
13047 case "$getpwuid_r_proto" in
13048 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13049 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13050 esac
13051 case "$getpwuid_r_proto" in
13052 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13053 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13054 esac
13055 case "$getpwuid_r_proto" in
13056 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13057 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13058 esac
13059 case "$getpwuid_r_proto" in
13060 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13061 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13062 esac
13063 case "$getpwuid_r_proto" in
90e831dc 13064 ''|0) d_getpwuid_r=undef
10bc17b6 13065 getpwuid_r_proto=0
a48ec845 13066 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13067 * ) case "$getpwuid_r_proto" in
13068 REENTRANT_PROTO*) ;;
13069 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13070 esac
13071 echo "Prototype: $try" ;;
13072 esac
13073 ;;
c18e646a
JH
13074 *) case "$usethreads" in
13075 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13076 esac
90e831dc
SB
13077 d_getpwuid_r=undef
13078 getpwuid_r_proto=0
c18e646a 13079 ;;
a48ec845
JH
13080 esac
13081 ;;
10bc17b6
JH
13082*) getpwuid_r_proto=0
13083 ;;
13084esac
13085
b4eb6b3d
JH
13086
13087: see if getservbyname exists
13088set getservbyname d_getsbyname
13089eval $inlibc
13090
13091: see if getservbyport exists
13092set getservbyport d_getsbyport
13093eval $inlibc
13094
13095: see if getservent exists
13096set getservent d_getsent
13097eval $inlibc
13098
10bc17b6
JH
13099: see if getservbyname_r exists
13100set getservbyname_r d_getservbyname_r
13101eval $inlibc
13102case "$d_getservbyname_r" in
13103"$define")
13104 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13105 case "$d_getservbyname_r_proto:$usethreads" in
13106 ":define") d_getservbyname_r_proto=define
a48ec845
JH
13107 set d_getservbyname_r_proto getservbyname_r $hdrs
13108 eval $hasproto ;;
13109 *) ;;
13110 esac
13111 case "$d_getservbyname_r_proto" in
13112 define)
10bc17b6
JH
13113 case "$getservbyname_r_proto" in
13114 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13115 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13116 esac
13117 case "$getservbyname_r_proto" in
13118 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13119 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13120 esac
13121 case "$getservbyname_r_proto" in
13122 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13123 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13124 esac
13125 case "$getservbyname_r_proto" in
90e831dc 13126 ''|0) d_getservbyname_r=undef
10bc17b6 13127 getservbyname_r_proto=0
a48ec845 13128 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13129 * ) case "$getservbyname_r_proto" in
13130 REENTRANT_PROTO*) ;;
13131 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13132 esac
13133 echo "Prototype: $try" ;;
13134 esac
13135 ;;
c18e646a
JH
13136 *) case "$usethreads" in
13137 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13138 esac
90e831dc
SB
13139 d_getservbyname_r=undef
13140 getservbyname_r_proto=0
c18e646a 13141 ;;
a48ec845
JH
13142 esac
13143 ;;
10bc17b6
JH
13144*) getservbyname_r_proto=0
13145 ;;
13146esac
13147
13148: see if getservbyport_r exists
13149set getservbyport_r d_getservbyport_r
13150eval $inlibc
13151case "$d_getservbyport_r" in
13152"$define")
13153 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13154 case "$d_getservbyport_r_proto:$usethreads" in
13155 ":define") d_getservbyport_r_proto=define
a48ec845
JH
13156 set d_getservbyport_r_proto getservbyport_r $hdrs
13157 eval $hasproto ;;
13158 *) ;;
13159 esac
13160 case "$d_getservbyport_r_proto" in
13161 define)
10bc17b6
JH
13162 case "$getservbyport_r_proto" in
13163 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13164 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13165 esac
13166 case "$getservbyport_r_proto" in
13167 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13168 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13169 esac
13170 case "$getservbyport_r_proto" in
13171 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13172 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13173 esac
13174 case "$getservbyport_r_proto" in
90e831dc 13175 ''|0) d_getservbyport_r=undef
10bc17b6 13176 getservbyport_r_proto=0
a48ec845 13177 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13178 * ) case "$getservbyport_r_proto" in
13179 REENTRANT_PROTO*) ;;
13180 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13181 esac
13182 echo "Prototype: $try" ;;
13183 esac
13184 ;;
c18e646a
JH
13185 *) case "$usethreads" in
13186 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13187 esac
90e831dc
SB
13188 d_getservbyport_r=undef
13189 getservbyport_r_proto=0
c18e646a 13190 ;;
a48ec845
JH
13191 esac
13192 ;;
10bc17b6
JH
13193*) getservbyport_r_proto=0
13194 ;;
13195esac
13196
13197: see if getservent_r exists
13198set getservent_r d_getservent_r
13199eval $inlibc
13200case "$d_getservent_r" in
13201"$define")
13202 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
13203 case "$d_getservent_r_proto:$usethreads" in
13204 ":define") d_getservent_r_proto=define
a48ec845
JH
13205 set d_getservent_r_proto getservent_r $hdrs
13206 eval $hasproto ;;
13207 *) ;;
13208 esac
13209 case "$d_getservent_r_proto" in
13210 define)
10bc17b6
JH
13211 case "$getservent_r_proto" in
13212 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13213 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13214 esac
13215 case "$getservent_r_proto" in
13216 ''|0) try='int getservent_r(struct servent*, char*, int);'
13217 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13218 esac
13219 case "$getservent_r_proto" in
13220 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13221 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13222 esac
13223 case "$getservent_r_proto" in
13224 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13225 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13226 esac
13227 case "$getservent_r_proto" in
90e831dc 13228 ''|0) d_getservent_r=undef
10bc17b6 13229 getservent_r_proto=0
a48ec845 13230 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13231 * ) case "$getservent_r_proto" in
13232 REENTRANT_PROTO*) ;;
13233 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13234 esac
13235 echo "Prototype: $try" ;;
13236 esac
13237 ;;
c18e646a
JH
13238 *) case "$usethreads" in
13239 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13240 esac
90e831dc
SB
13241 d_getservent_r=undef
13242 getservent_r_proto=0
c18e646a 13243 ;;
a48ec845
JH
13244 esac
13245 ;;
10bc17b6
JH
13246*) getservent_r_proto=0
13247 ;;
13248esac
13249
b4eb6b3d
JH
13250: see if prototypes for various getservxxx netdb.h functions are available
13251echo " "
13252set d_getservprotos getservent $i_netdb netdb.h
13253eval $hasproto
13254
13255: see if getspnam exists
13256set getspnam d_getspnam
13257eval $inlibc
13258
10bc17b6
JH
13259: see if this is a shadow.h system
13260set shadow.h i_shadow
13261eval $inhdr
13262
13263: see if getspnam_r exists
13264set getspnam_r d_getspnam_r
13265eval $inlibc
13266case "$d_getspnam_r" in
13267"$define")
13268 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
c18e646a
JH
13269 case "$d_getspnam_r_proto:$usethreads" in
13270 ":define") d_getspnam_r_proto=define
a48ec845
JH
13271 set d_getspnam_r_proto getspnam_r $hdrs
13272 eval $hasproto ;;
13273 *) ;;
13274 esac
13275 case "$d_getspnam_r_proto" in
13276 define)
10bc17b6
JH
13277 case "$getspnam_r_proto" in
13278 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13279 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13280 esac
13281 case "$getspnam_r_proto" in
13282 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13283 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13284 esac
13285 case "$getspnam_r_proto" in
90e831dc 13286 ''|0) d_getspnam_r=undef
10bc17b6 13287 getspnam_r_proto=0
a48ec845 13288 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13289 * ) case "$getspnam_r_proto" in
13290 REENTRANT_PROTO*) ;;
13291 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13292 esac
13293 echo "Prototype: $try" ;;
13294 esac
13295 ;;
c18e646a
JH
13296 *) case "$usethreads" in
13297 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13298 esac
90e831dc
SB
13299 d_getspnam_r=undef
13300 getspnam_r_proto=0
c18e646a 13301 ;;
a48ec845
JH
13302 esac
13303 ;;
10bc17b6
JH
13304*) getspnam_r_proto=0
13305 ;;
13306esac
13307
b4eb6b3d
JH
13308: see if gettimeofday or ftime exists
13309set gettimeofday d_gettimeod
13310eval $inlibc
13311case "$d_gettimeod" in
13312"$undef")
13313 set ftime d_ftime
13314 eval $inlibc
13315 ;;
13316*)
13317 val="$undef"; set d_ftime; eval $setvar
13318 ;;
13319esac
13320case "$d_gettimeod$d_ftime" in
13321"$undef$undef")
13322 echo " "
13323 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13324 ;;
13325esac
13326
10bc17b6
JH
13327: see if gmtime_r exists
13328set gmtime_r d_gmtime_r
13329eval $inlibc
13330case "$d_gmtime_r" in
13331"$define")
d63eadf0 13332 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13333 case "$d_gmtime_r_proto:$usethreads" in
13334 ":define") d_gmtime_r_proto=define
a48ec845
JH
13335 set d_gmtime_r_proto gmtime_r $hdrs
13336 eval $hasproto ;;
13337 *) ;;
13338 esac
13339 case "$d_gmtime_r_proto" in
13340 define)
10bc17b6
JH
13341 case "$gmtime_r_proto" in
13342 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13343 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13344 esac
13345 case "$gmtime_r_proto" in
13346 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13347 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13348 esac
13349 case "$gmtime_r_proto" in
90e831dc 13350 ''|0) d_gmtime_r=undef
10bc17b6 13351 gmtime_r_proto=0
a48ec845 13352 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13353 * ) case "$gmtime_r_proto" in
13354 REENTRANT_PROTO*) ;;
13355 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13356 esac
13357 echo "Prototype: $try" ;;
13358 esac
b4eb6b3d 13359 ;;
c18e646a
JH
13360 *) case "$usethreads" in
13361 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13362 esac
90e831dc
SB
13363 d_gmtime_r=undef
13364 gmtime_r_proto=0
c18e646a 13365 ;;
a48ec845
JH
13366 esac
13367 ;;
10bc17b6 13368*) gmtime_r_proto=0
b4eb6b3d
JH
13369 ;;
13370esac
13371
13372: see if hasmntopt exists
13373set hasmntopt d_hasmntopt
13374eval $inlibc
13375
13376: see if this is a netinet/in.h or sys/in.h system
13377set netinet/in.h i_niin sys/in.h i_sysin
13378eval $inhdr
13379
13380: see if arpa/inet.h has to be included
13381set arpa/inet.h i_arpainet
13382eval $inhdr
13383
13384: see if htonl --and friends-- exists
13385val=''
13386set htonl val
13387eval $inlibc
13388
13389: Maybe they are macros.
13390case "$val" in
13391$undef)
13392 $cat >htonl.c <<EOM
13393#include <stdio.h>
13394#include <sys/types.h>
13395#$i_niin I_NETINET_IN
13396#$i_sysin I_SYS_IN
13397#$i_arpainet I_ARPA_INET
13398#ifdef I_NETINET_IN
13399#include <netinet/in.h>
13400#endif
13401#ifdef I_SYS_IN
13402#include <sys/in.h>
13403#endif
13404#ifdef I_ARPA_INET
13405#include <arpa/inet.h>
13406#endif
13407#ifdef htonl
13408printf("Defined as a macro.");
13409#endif
13410EOM
13411 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13412 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13413 val="$define"
13414 echo "But it seems to be defined as a macro." >&4
13415 fi
13416 $rm -f htonl.?
13417 ;;
13418esac
13419set d_htonl
13420eval $setvar
13421
36adc09b
JH
13422: see if ilogbl exists
13423set ilogbl d_ilogbl
13424eval $inlibc
13425
b4eb6b3d
JH
13426: index or strchr
13427echo " "
13428if set index val -f; eval $csym; $val; then
13429 if set strchr val -f d_strchr; eval $csym; $val; then
13430 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13431 val="$define"
13432 vali="$undef"
13433 echo "strchr() found." >&4
13434 else
13435 val="$undef"
13436 vali="$define"
13437 echo "index() found." >&4
13438 fi
13439 else
13440 val="$undef"
13441 vali="$define"
8dfa8df9
JH
13442 echo "index() found." >&4
13443 fi
b4eb6b3d 13444else
8dfa8df9
JH
13445 if set strchr val -f d_strchr; eval $csym; $val; then
13446 val="$define"
13447 vali="$undef"
13448 echo "strchr() found." >&4
13449 else
13450 echo "No index() or strchr() found!" >&4
13451 val="$undef"
13452 vali="$undef"
13453 fi
b4eb6b3d 13454fi
8dfa8df9
JH
13455set d_strchr; eval $setvar
13456val="$vali"
13457set d_index; eval $setvar
13458
13459: check whether inet_aton exists
13460set inet_aton d_inetaton
13461eval $inlibc
b4eb6b3d
JH
13462
13463: Look for isascii
13464echo " "
36adc09b 13465$cat >isascii.c <<EOCP
b4eb6b3d
JH
13466#include <stdio.h>
13467#include <ctype.h>
55954f19
JH
13468#$i_stdlib I_STDLIB
13469#ifdef I_STDLIB
13470#include <stdlib.h>
13471#endif
b4eb6b3d
JH
13472int main() {
13473 int c = 'A';
13474 if (isascii(c))
13475 exit(0);
13476 else
13477 exit(1);
13478}
13479EOCP
13480set isascii
13481if eval $compile; then
13482 echo "isascii() found." >&4
13483 val="$define"
13484else
13485 echo "isascii() NOT found." >&4
13486 val="$undef"
13487fi
13488set d_isascii
13489eval $setvar
13490$rm -f isascii*
13491
758a5d79
JH
13492: see if isfinite exists
13493set isfinite d_isfinite
13494eval $inlibc
13495
13496: see if isinf exists
13497set isinf d_isinf
13498eval $inlibc
13499
b4eb6b3d
JH
13500: see if isnan exists
13501set isnan d_isnan
13502eval $inlibc
13503
13504: see if isnanl exists
13505set isnanl d_isnanl
13506eval $inlibc
13507
13508: see if killpg exists
13509set killpg d_killpg
13510eval $inlibc
13511
13512: see if lchown exists
13513echo " "
13514$cat > try.c <<'EOCP'
13515/* System header to define __stub macros and hopefully few prototypes,
13516 which can conflict with char lchown(); below. */
13517#include <assert.h>
13518/* Override any gcc2 internal prototype to avoid an error. */
13519/* We use char because int might match the return type of a gcc2
13520 builtin and then its argument prototype would still apply. */
13521char lchown();
13522int main() {
13523 /* The GNU C library defines this for functions which it implements
13524 to always fail with ENOSYS. Some functions are actually named
13525 something starting with __ and the normal name is an alias. */
13526#if defined (__stub_lchown) || defined (__stub___lchown)
13527choke me
13528#else
13529lchown();
13530#endif
13531; return 0; }
13532EOCP
13533set try
13534if eval $compile; then
13535 $echo "lchown() found." >&4
13536 val="$define"
13537else
13538 $echo "lchown() NOT found." >&4
13539 val="$undef"
13540fi
13541set d_lchown
13542eval $setvar
13543
13544: See if number of significant digits in a double precision number is known
13545echo " "
13546$cat >ldbl_dig.c <<EOM
13547#$i_limits I_LIMITS
13548#$i_float I_FLOAT
13549#ifdef I_LIMITS
13550#include <limits.h>
13551#endif
13552#ifdef I_FLOAT
13553#include <float.h>
13554#endif
13555#ifdef LDBL_DIG
13556printf("Contains LDBL_DIG");
13557#endif
13558EOM
13559$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13560if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13561 echo "LDBL_DIG found." >&4
13562 val="$define"
13563else
13564 echo "LDBL_DIG NOT found." >&4
13565 val="$undef"
13566fi
13567$rm -f ldbl_dig.?
13568set d_ldbl_dig
13569eval $setvar
13570
13571: see if link exists
13572set link d_link
13573eval $inlibc
13574
10bc17b6
JH
13575: see if localtime_r exists
13576set localtime_r d_localtime_r
13577eval $inlibc
13578case "$d_localtime_r" in
13579"$define")
d63eadf0 13580 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
c18e646a
JH
13581 case "$d_localtime_r_proto:$usethreads" in
13582 ":define") d_localtime_r_proto=define
a48ec845
JH
13583 set d_localtime_r_proto localtime_r $hdrs
13584 eval $hasproto ;;
13585 *) ;;
13586 esac
13587 case "$d_localtime_r_proto" in
13588 define)
10bc17b6
JH
13589 case "$localtime_r_proto" in
13590 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13591 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13592 esac
13593 case "$localtime_r_proto" in
13594 ''|0) try='int localtime_r(const time_t*, struct tm*);'
13595 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13596 esac
13597 case "$localtime_r_proto" in
90e831dc 13598 ''|0) d_localtime_r=undef
10bc17b6 13599 localtime_r_proto=0
a48ec845 13600 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
13601 * ) case "$localtime_r_proto" in
13602 REENTRANT_PROTO*) ;;
13603 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13604 esac
13605 echo "Prototype: $try" ;;
13606 esac
13607 ;;
c18e646a
JH
13608 *) case "$usethreads" in
13609 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13610 esac
90e831dc
SB
13611 d_localtime_r=undef
13612 localtime_r_proto=0
c18e646a 13613 ;;
a48ec845
JH
13614 esac
13615 ;;
10bc17b6
JH
13616*) localtime_r_proto=0
13617 ;;
13618esac
13619
b4eb6b3d
JH
13620: see if localeconv exists
13621set localeconv d_locconv
13622eval $inlibc
13623
13624: see if lockf exists
13625set lockf d_lockf
13626eval $inlibc
13627
b4eb6b3d
JH
13628: see if prototype for lseek is available
13629echo " "
4786929f 13630set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
13631eval $hasproto
13632
13633: see if lstat exists
13634set lstat d_lstat
13635eval $inlibc
13636
13637: see if madvise exists
13638set madvise d_madvise
13639eval $inlibc
13640
13641: see if mblen exists
13642set mblen d_mblen
13643eval $inlibc
13644
13645: see if mbstowcs exists
13646set mbstowcs d_mbstowcs
13647eval $inlibc
13648
13649: see if mbtowc exists
13650set mbtowc d_mbtowc
13651eval $inlibc
13652
13653: see if memchr exists
13654set memchr d_memchr
13655eval $inlibc
13656
13657: see if memcmp exists
13658set memcmp d_memcmp
13659eval $inlibc
13660
13661: see if memcpy exists
13662set memcpy d_memcpy
13663eval $inlibc
13664
13665: see if memmove exists
13666set memmove d_memmove
13667eval $inlibc
13668
13669: see if memset exists
13670set memset d_memset
13671eval $inlibc
13672
13673: see if mkdir exists
13674set mkdir d_mkdir
13675eval $inlibc
13676
13677: see if mkdtemp exists
13678set mkdtemp d_mkdtemp
13679eval $inlibc
13680
13681: see if mkfifo exists
13682set mkfifo d_mkfifo
13683eval $inlibc
13684
13685: see if mkstemp exists
13686set mkstemp d_mkstemp
13687eval $inlibc
13688
13689: see if mkstemps exists
13690set mkstemps d_mkstemps
13691eval $inlibc
13692
13693: see if mktime exists
13694set mktime d_mktime
13695eval $inlibc
13696
13697: see if this is a sys/mman.h system
13698set sys/mman.h i_sysmman
13699eval $inhdr
13700
13701: see if mmap exists
13702set mmap d_mmap
13703eval $inlibc
13704: see what shmat returns
13705: default to something harmless
13706mmaptype='void *'
13707case "$i_sysmman$d_mmap" in
13708"$define$define")
13709 $cat >mmap.c <<'END'
13710#include <sys/mman.h>
13711void *mmap();
13712END
13713 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13714 mmaptype='void *'
13715 else
13716 mmaptype='caddr_t'
13717 fi
13718 echo "and it returns ($mmaptype)." >&4
13719 ;;
13720esac
13721
13722
13723
89ce900e
JH
13724: see if sqrtl exists
13725set sqrtl d_sqrtl
13726eval $inlibc
13727
13728: see if modfl exists
13729set modfl d_modfl
13730eval $inlibc
13731
13732: see if prototype for modfl is available
13733echo " "
13734set d_modflproto modfl math.h
13735eval $hasproto
13736
13737d_modfl_pow32_bug="$undef"
13738
13739case "$d_longdbl$d_modfl" in
13740$define$define)
13741 $cat <<EOM
13742Checking to see whether your modfl() is okay for large values...
13743EOM
13744$cat >try.c <<EOCP
13745#include <math.h>
13746#include <stdio.h>
13747EOCP
13748if $test "X$d_modflproto" != "X$define"; then
13749 $cat >>try.c <<EOCP
13750/* Sigh. many current glibcs provide the function, but do not prototype it. */
13751long double modfl (long double, long double *);
13752EOCP
13753fi
13754$cat >>try.c <<EOCP
13755int main() {
13756 long double nv = 4294967303.15;
13757 long double v, w;
13758 v = modfl(nv, &w);
13759#ifdef __GLIBC__
13760 printf("glibc");
13761#endif
13762 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
13763 return 0;
13764}
13765EOCP
13766 case "$osname:$gccversion" in
13767 aix:) saveccflags="$ccflags"
13768 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
13769 esac
13770 set try
13771 if eval $compile; then
13772 foo=`$run ./try`
13773 case "$foo" in
13774 *" 4294967303.150000 1.150000 4294967302.000000")
13775 echo >&4 "Your modfl() is broken for large values."
13776 d_modfl_pow32_bug="$define"
13777 case "$foo" in
13778 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
13779 ;;
13780 esac
13781 ;;
13782 *" 4294967303.150000 0.150000 4294967303.000000")
13783 echo >&4 "Your modfl() seems okay for large values."
13784 ;;
13785 *) echo >&4 "I don't understand your modfl() at all."
13786 d_modfl="$undef"
13787 ;;
13788 esac
13789 $rm -f try.* try core core.try.*
13790 else
13791 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
13792 d_modfl="$undef"
13793 fi
13794 case "$osname:$gccversion" in
13795 aix:) ccflags="$saveccflags" ;; # restore
13796 esac
13797 ;;
13798esac
13799
13800if $test "$uselongdouble" = "$define"; then
77bbdecc 13801 message=none
89ce900e
JH
13802 case "$d_sqrtl:$d_modfl" in
13803 $define:$define)
13804 : You have both
13805 ;;
13806 $define:$undef)
13807 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
13808 echo "You have both aintl and copysignl, so I can emulate modfl."
13809 else
13810 message="I could not find modfl."
13811 fi
13812 ;;
13813 $undef:$define)
13814 message="I could not find sqrtl."
13815 ;;
13816 $undef:$undef)
13817 message="I found neither sqrtl nor modfl."
13818 ;;
13819 esac
13820
77bbdecc 13821 if $test "$message" != none; then
89ce900e
JH
13822 $cat <<EOM >&4
13823
13824*** You requested the use of long doubles but you do not seem to have
13825*** the mathematic functions for long doubles.
13826*** ($message)
fe63a0b4
JH
13827*** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
13828*** Cannot continue, aborting.
89ce900e
JH
13829
13830EOM
13831
fe63a0b4 13832 exit 1
89ce900e
JH
13833 fi
13834fi
13835
b4eb6b3d
JH
13836: see if mprotect exists
13837set mprotect d_mprotect
13838eval $inlibc
13839
13840: see if msgctl exists
13841set msgctl d_msgctl
13842eval $inlibc
13843
13844: see if msgget exists
13845set msgget d_msgget
13846eval $inlibc
13847
13848: see if msgsnd exists
13849set msgsnd d_msgsnd
13850eval $inlibc
13851
13852: see if msgrcv exists
13853set msgrcv d_msgrcv
13854eval $inlibc
13855
13856: see how much of the 'msg*(2)' library is present.
13857h_msg=true
13858echo " "
13859case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13860*"$undef"*) h_msg=false;;
13861esac
13862case "$osname" in
13863freebsd)
13864 case "`ipcs 2>&1`" in
13865 "SVID messages"*"not configured"*)
13866 echo "Your $osname does not have the msg*(2) configured." >&4
13867 h_msg=false
13868 val="$undef"
13869 set msgctl d_msgctl
13870 eval $setvar
13871 set msgget d_msgget
13872 eval $setvar
13873 set msgsnd d_msgsnd
13874 eval $setvar
13875 set msgrcv d_msgrcv
13876 eval $setvar
13877 ;;
13878 esac
13879 ;;
13880esac
13881: we could also check for sys/ipc.h ...
13882if $h_msg && $test `./findhdr sys/msg.h`; then
13883 echo "You have the full msg*(2) library." >&4
13884 val="$define"
13885else
13886 echo "You don't have the full msg*(2) library." >&4
13887 val="$undef"
13888fi
13889set d_msg
13890eval $setvar
13891
4e0554ec
JH
13892
13893echo " "
13894echo "Checking to see if your system supports struct msghdr..." >&4
13895set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13896eval $hasstruct
13897case "$d_msghdr_s" in
13898"$define") echo "Yes, it does." ;;
13899*) echo "No, it doesn't." ;;
13900esac
13901
13902
b4eb6b3d
JH
13903: see if msync exists
13904set msync d_msync
13905eval $inlibc
13906
13907: see if munmap exists
13908set munmap d_munmap
13909eval $inlibc
13910
2d736872
MB
13911: see if nanosleep exists
13912set nanosleep d_nanosleep
13913eval $inlibc
13914
b4eb6b3d
JH
13915: see if nice exists
13916set nice d_nice
13917eval $inlibc
13918
2765b840
JH
13919: see if this is a langinfo.h system
13920set langinfo.h i_langinfo
13921eval $inhdr
13922
13923: see if nl_langinfo exists
13924set nl_langinfo d_nl_langinfo
13925eval $inlibc
13926
b4eb6b3d
JH
13927: check for length of character
13928echo " "
13929case "$charsize" in
13930'')
13931 echo "Checking to see how big your characters are (hey, you never know)..." >&4
74d00865 13932 $cat >try.c <<EOCP
b4eb6b3d 13933#include <stdio.h>
d1daaddf
JH
13934#$i_stdlib I_STDLIB
13935#ifdef I_STDLIB
13936#include <stdlib.h>
13937#endif
b4eb6b3d
JH
13938int main()
13939{
13940 printf("%d\n", (int)sizeof(char));
13941 exit(0);
13942}
13943EOCP
13944 set try
13945 if eval $compile_ok; then
5440bc8e 13946 dflt=`$run ./try`
b4eb6b3d
JH
13947 else
13948 dflt='1'
13949 echo "(I can't seem to compile the test program. Guessing...)"
13950 fi
13951 ;;
13952*)
13953 dflt="$charsize"
13954 ;;
13955esac
13956rp="What is the size of a character (in bytes)?"
13957. ./myread
13958charsize="$ans"
13959$rm -f try.c try
13960
1d1be0dc
NC
13961: check for volatile keyword
13962echo " "
13963echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13964$cat >try.c <<'EOCP'
76f47787 13965int main()
1d1be0dc
NC
13966{
13967 typedef struct _goo_struct goo_struct;
13968 goo_struct * volatile goo = ((goo_struct *)0);
13969 struct _goo_struct {
13970 long long_int;
13971 int reg_int;
13972 char char_var;
13973 };
13974 typedef unsigned short foo_t;
13975 char *volatile foo;
13976 volatile int bar;
13977 volatile foo_t blech;
13978 foo = foo;
13979}
13980EOCP
13981if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13982 val="$define"
13983 echo "Yup, it does."
13984else
13985 val="$undef"
13986 echo "Nope, it doesn't."
13987fi
13988set d_volatile
13989eval $setvar
13990$rm -f try.*
13991
b4eb6b3d
JH
13992
13993echo " "
13994$echo "Choosing the C types to be used for Perl's internal types..." >&4
13995
13996case "$use64bitint:$d_quad:$quadtype" in
13997define:define:?*)
13998 ivtype="$quadtype"
13999 uvtype="$uquadtype"
14000 ivsize=8
14001 uvsize=8
14002 ;;
14003*) ivtype="long"
14004 uvtype="unsigned long"
14005 ivsize=$longsize
14006 uvsize=$longsize
14007 ;;
14008esac
14009
14010case "$uselongdouble:$d_longdbl" in
14011define:define)
14012 nvtype="long double"
14013 nvsize=$longdblsize
14014 ;;
14015*) nvtype=double
14016 nvsize=$doublesize
14017 ;;
14018esac
14019
14020$echo "(IV will be "$ivtype", $ivsize bytes)"
14021$echo "(UV will be "$uvtype", $uvsize bytes)"
14022$echo "(NV will be "$nvtype", $nvsize bytes)"
14023
14024$cat >try.c <<EOCP
14025#$i_inttypes I_INTTYPES
14026#ifdef I_INTTYPES
14027#include <inttypes.h>
14028#endif
14029#include <stdio.h>
14030int main() {
14031#ifdef INT8
14032 int8_t i = INT8_MAX;
14033 uint8_t u = UINT8_MAX;
14034 printf("int8_t\n");
14035#endif
14036#ifdef INT16
14037 int16_t i = INT16_MAX;
14038 uint16_t i = UINT16_MAX;
14039 printf("int16_t\n");
14040#endif
14041#ifdef INT32
14042 int32_t i = INT32_MAX;
14043 uint32_t u = UINT32_MAX;
14044 printf("int32_t\n");
14045#endif
14046}
14047EOCP
14048
14049case "$i8type" in
14050'') case "$charsize" in
14051 1) i8type=char
14052 u8type="unsigned char"
14053 i8size=$charsize
14054 u8size=$charsize
14055 ;;
14056 esac
14057 ;;
14058esac
14059case "$i8type" in
14060'') set try -DINT8
14061 if eval $compile; then
5440bc8e 14062 case "`$run ./try`" in
b4eb6b3d
JH
14063 int8_t) i8type=int8_t
14064 u8type=uint8_t
14065 i8size=1
14066 u8size=1
14067 ;;
14068 esac
14069 fi
14070 ;;
14071esac
14072case "$i8type" in
14073'') if $test $charsize -ge 1; then
14074 i8type=char
14075 u8type="unsigned char"
14076 i8size=$charsize
14077 u8size=$charsize
14078 fi
14079 ;;
14080esac
14081
14082case "$i16type" in
14083'') case "$shortsize" in
14084 2) i16type=short
14085 u16type="unsigned short"
14086 i16size=$shortsize
14087 u16size=$shortsize
14088 ;;
14089 esac
14090 ;;
14091esac
14092case "$i16type" in
14093'') set try -DINT16
14094 if eval $compile; then
5440bc8e 14095 case "`$run ./try`" in
b4eb6b3d
JH
14096 int16_t)
14097 i16type=int16_t
14098 u16type=uint16_t
14099 i16size=2
14100 u16size=2
14101 ;;
14102 esac
14103 fi
14104 ;;
14105esac
14106case "$i16type" in
14107'') if $test $shortsize -ge 2; then
14108 i16type=short
14109 u16type="unsigned short"
14110 i16size=$shortsize
14111 u16size=$shortsize
14112 fi
14113 ;;
14114esac
14115
14116case "$i32type" in
14117'') case "$longsize" in
14118 4) i32type=long
14119 u32type="unsigned long"
14120 i32size=$longsize
14121 u32size=$longsize
14122 ;;
14123 *) case "$intsize" in
14124 4) i32type=int
14125 u32type="unsigned int"
14126 i32size=$intsize
14127 u32size=$intsize
14128 ;;
14129 esac
14130 ;;
14131 esac
14132 ;;
14133esac
14134case "$i32type" in
14135'') set try -DINT32
14136 if eval $compile; then
5440bc8e 14137 case "`$run ./try`" in
b4eb6b3d
JH
14138 int32_t)
14139 i32type=int32_t
14140 u32type=uint32_t
14141 i32size=4
14142 u32size=4
14143 ;;
14144 esac
14145 fi
14146 ;;
14147esac
14148case "$i32type" in
14149'') if $test $intsize -ge 4; then
14150 i32type=int
14151 u32type="unsigned int"
14152 i32size=$intsize
14153 u32size=$intsize
14154 fi
14155 ;;
14156esac
14157
14158case "$i64type" in
14159'') case "$d_quad:$quadtype" in
14160 define:?*)
14161 i64type="$quadtype"
14162 u64type="$uquadtype"
14163 i64size=8
14164 u64size=8
14165 ;;
14166 esac
14167 ;;
14168esac
14169
1d1be0dc
NC
14170$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14171: volatile so that the compiler has to store it out to memory.
14172if test X"$d_volatile" = X"$define"; then
14173 volatile=volatile
14174fi
b4eb6b3d
JH
14175$cat <<EOP >try.c
14176#include <stdio.h>
55954f19
JH
14177#$i_stdlib I_STDLIB
14178#ifdef I_STDLIB
14179#include <stdlib.h>
14180#endif
1d1be0dc
NC
14181#include <sys/types.h>
14182#include <signal.h>
14183#ifdef SIGFPE
14184$volatile int bletched = 0;
14185$signal_t blech(s) int s; { bletched = 1; }
14186#endif
b4eb6b3d
JH
14187int main() {
14188 $uvtype u = 0;
1d1be0dc 14189 $nvtype d;
b4eb6b3d
JH
14190 int n = 8 * $uvsize;
14191 int i;
1d1be0dc
NC
14192#ifdef SIGFPE
14193 signal(SIGFPE, blech);
14194#endif
14195
b4eb6b3d
JH
14196 for (i = 0; i < n; i++) {
14197 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
14198 d = ($nvtype)u;
14199 if (($uvtype)d != u)
b4eb6b3d 14200 break;
1d1be0dc
NC
14201 if (d <= 0)
14202 break;
14203 d = ($nvtype)(u - 1);
14204 if (($uvtype)d != (u - 1))
14205 break;
14206#ifdef SIGFPE
14207 if (bletched) {
14208 break;
14209#endif
14210 }
b4eb6b3d 14211 }
efd1522b 14212 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
14213 exit(0);
14214}
14215EOP
1d1be0dc
NC
14216set try
14217
14218d_nv_preserves_uv="$undef"
14219if eval $compile; then
53133ed1 14220 nv_preserves_uv_bits="`$run ./try`"
1d1be0dc 14221fi
53133ed1 14222case "$nv_preserves_uv_bits" in
1d1be0dc 14223\-[1-9]*)
53133ed1
NC
14224 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14225 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc 14226 d_nv_preserves_uv="$define"
b4eb6b3d 14227 ;;
53133ed1 14228[1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
1d1be0dc
NC
14229 d_nv_preserves_uv="$undef" ;;
14230*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
53133ed1 14231 nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
14232esac
14233
1d1be0dc
NC
14234$rm -f try.* try
14235
b4eb6b3d
JH
14236
14237: check for off64_t
14238echo " "
14239echo "Checking to see if you have off64_t..." >&4
14240$cat >try.c <<EOCP
14241#include <sys/types.h>
14242#include <unistd.h>
14243int main() { off64_t x = 7; }
14244EOCP
14245set try
14246if eval $compile; then
14247 val="$define"
14248 echo "You have off64_t."
14249else
14250 val="$undef"
14251 echo "You do not have off64_t."
14252 case "$lseeksize" in
14253 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14254 esac
14255fi
14256$rm -f try.* try
14257set d_off64_t
14258eval $setvar
14259
b4eb6b3d
JH
14260: how to create joinable pthreads
14261if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14262 echo " "
14263 echo "Checking what constant to use for creating joinable pthreads..." >&4
14264 $cat >try.c <<'EOCP'
14265#include <pthread.h>
14266int main() {
14267 int detachstate = JOINABLE;
14268}
14269EOCP
14270 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14271 if eval $compile; then
14272 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14273 val="$undef" # Yes, undef.
14274 set d_old_pthread_create_joinable
14275 eval $setvar
14276 val=""
14277 set old_pthread_create_joinable
14278 eval $setvar
14279 else
14280 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14281 if eval $compile; then
14282 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14283 val="$define"
14284 set d_old_pthread_create_joinable
14285 eval $setvar
14286 val=PTHREAD_CREATE_UNDETACHED
14287 set old_pthread_create_joinable
14288 eval $setvar
14289 else
14290 set try -DJOINABLE=__UNDETACHED
14291 if eval $compile; then
14292 echo "You seem to use __UNDETACHED." >&4
14293 val="$define"
14294 set d_old_pthread_create_joinable
14295 eval $setvar
14296 val=__UNDETACHED
14297 set old_pthread_create_joinable
14298 eval $setvar
14299 else
14300 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
14301 val="$define"
14302 set d_old_pthread_create_joinable
14303 eval $setvar
14304 val=0
14305 set old_pthread_create_joinable
14306 eval $setvar
14307 fi
14308 fi
14309 fi
14310 $rm -f try try.*
14311else
14312 d_old_pthread_create_joinable="$undef"
14313 old_pthread_create_joinable=""
14314fi
14315
14316: see if pause exists
14317set pause d_pause
14318eval $inlibc
14319
14320: see if pipe exists
14321set pipe d_pipe
14322eval $inlibc
14323
14324: see if poll exists
14325set poll d_poll
14326eval $inlibc
14327
c7aff470
NIS
14328: see if readlink exists
14329set readlink d_readlink
14330eval $inlibc
14331
14332echo " "
f24dbf84 14333procselfexe=''
c7aff470 14334val="$undef"
a33c94aa
JH
14335case "$d_readlink" in
14336"$define")
c7aff470
NIS
14337 if $issymlink /proc/self/exe ; then
14338 $ls -l /proc/self/exe > reflect
51660ed5 14339 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
a33c94aa 14340 echo "You have Linux-like /proc/self/exe."
92236451 14341 procselfexe='"/proc/self/exe"'
f24dbf84 14342 val="$define"
f24dbf84
JH
14343 fi
14344 fi
14345 if $issymlink /proc/curproc/file ; then
14346 $ls -l /proc/curproc/file > reflect
14347 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14348 echo "You have BSD-like /proc/curproc/file."
92236451 14349 procselfexe='"/proc/curproc/file"'
f24dbf84 14350 val="$define"
c7aff470 14351 fi
c7aff470 14352 fi
a33c94aa
JH
14353 ;;
14354esac
428dc699 14355$rm -f reflect
c7aff470
NIS
14356set d_procselfexe
14357eval $setvar
14358
263fee3f
JH
14359: see whether the pthread_atfork exists
14360$cat >try.c <<EOP
14361#include <pthread.h>
14362#include <stdio.h>
14363int main() {
14364#ifdef PTHREAD_ATFORK
14365 pthread_atfork(NULL,NULL,NULL);
14366#endif
14367}
14368EOP
14369
d6483fcc 14370: see if pthread_atfork exists
263fee3f
JH
14371set try -DPTHREAD_ATFORK
14372if eval $compile; then
14373 val="$define"
14374else
14375 val="$undef"
14376fi
14377case "$usethreads" in
14378$define)
14379 case "$val" in
14380 $define) echo 'pthread_atfork found.' >&4 ;;
14381 *) echo 'pthread_atfork NOT found.' >&4 ;;
14382 esac
14383esac
14384set d_pthread_atfork
14385eval $setvar
d6483fcc 14386
b4eb6b3d
JH
14387
14388: see whether the various POSIXish _yields exist
14389$cat >try.c <<EOP
14390#include <pthread.h>
14391#include <stdio.h>
14392int main() {
14393#ifdef SCHED_YIELD
14394 sched_yield();
14395#else
14396#ifdef PTHREAD_YIELD
14397 pthread_yield();
14398#else
14399#ifdef PTHREAD_YIELD_NULL
14400 pthread_yield(NULL);
14401#endif
14402#endif
14403#endif
14404}
14405EOP
14406: see if sched_yield exists
14407set try -DSCHED_YIELD
14408if eval $compile; then
14409 val="$define"
14410 sched_yield='sched_yield()'
14411else
14412 val="$undef"
14413fi
14414case "$usethreads" in
14415$define)
14416 case "$val" in
14417 $define) echo 'sched_yield() found.' >&4 ;;
14418 *) echo 'sched_yield() NOT found.' >&4 ;;
14419 esac
14420esac
10bc17b6
JH
14421set d_sched_yield
14422eval $setvar
b4eb6b3d 14423
10bc17b6
JH
14424: see if pthread_yield exists
14425set try -DPTHREAD_YIELD
14426if eval $compile; then
14427 val="$define"
14428 case "$sched_yield" in
14429 '') sched_yield='pthread_yield()' ;;
14430 esac
14431else
14432 set try -DPTHREAD_YIELD_NULL
14433 if eval $compile; then
14434 val="$define"
14435 case "$sched_yield" in
14436 '') sched_yield='pthread_yield(NULL)' ;;
14437 esac
14438 else
14439 val="$undef"
14440 fi
14441fi
14442case "$usethreads" in
14443$define)
14444 case "$val" in
14445 $define) echo 'pthread_yield() found.' >&4 ;;
14446 *) echo 'pthread_yield() NOT found.' >&4 ;;
14447 esac
14448 ;;
14449esac
14450set d_pthread_yield
14451eval $setvar
b4eb6b3d 14452
10bc17b6
JH
14453case "$sched_yield" in
14454'') sched_yield=undef ;;
14455esac
b4eb6b3d 14456
10bc17b6
JH
14457$rm -f try try.*
14458
14459: see if random_r exists
14460set random_r d_random_r
14461eval $inlibc
14462case "$d_random_r" in
14463"$define")
14464 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
14465 case "$d_random_r_proto:$usethreads" in
14466 ":define") d_random_r_proto=define
a48ec845
JH
14467 set d_random_r_proto random_r $hdrs
14468 eval $hasproto ;;
14469 *) ;;
14470 esac
14471 case "$d_random_r_proto" in
14472 define)
10bc17b6
JH
14473 case "$random_r_proto" in
14474 ''|0) try='int random_r(int*, struct random_data*);'
a845a0d4
JH
14475 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14476 esac
14477 case "$random_r_proto" in
14478 ''|0) try='int random_r(long*, struct random_data*);'
14479 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14480 esac
14481 case "$random_r_proto" in
14482 ''|0) try='int random_r(struct random_data*, int32_t*);'
14483 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
10bc17b6
JH
14484 esac
14485 case "$random_r_proto" in
90e831dc 14486 ''|0) d_random_r=undef
10bc17b6 14487 random_r_proto=0
a48ec845 14488 echo "Disabling random_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14489 * ) case "$random_r_proto" in
14490 REENTRANT_PROTO*) ;;
14491 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14492 esac
14493 echo "Prototype: $try" ;;
14494 esac
b4eb6b3d 14495 ;;
c18e646a
JH
14496 *) case "$usethreads" in
14497 define) echo "random_r has no prototype, not using it." >&4 ;;
14498 esac
90e831dc
SB
14499 d_random_r=undef
14500 random_r_proto=0
c18e646a 14501 ;;
a48ec845
JH
14502 esac
14503 ;;
10bc17b6 14504*) random_r_proto=0
b4eb6b3d
JH
14505 ;;
14506esac
14507
14508: see if readdir and friends exist
14509set readdir d_readdir
14510eval $inlibc
14511set seekdir d_seekdir
14512eval $inlibc
14513set telldir d_telldir
14514eval $inlibc
14515set rewinddir d_rewinddir
14516eval $inlibc
14517
10bc17b6
JH
14518: see if readdir64_r exists
14519set readdir64_r d_readdir64_r
14520eval $inlibc
14521case "$d_readdir64_r" in
14522"$define")
14523 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14524 case "$d_readdir64_r_proto:$usethreads" in
14525 ":define") d_readdir64_r_proto=define
a48ec845
JH
14526 set d_readdir64_r_proto readdir64_r $hdrs
14527 eval $hasproto ;;
14528 *) ;;
14529 esac
14530 case "$d_readdir64_r_proto" in
14531 define)
10bc17b6
JH
14532 case "$readdir64_r_proto" in
14533 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14534 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14535 esac
14536 case "$readdir64_r_proto" in
14537 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14538 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14539 esac
14540 case "$readdir64_r_proto" in
90e831dc 14541 ''|0) d_readdir64_r=undef
10bc17b6 14542 readdir64_r_proto=0
a48ec845 14543 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14544 * ) case "$readdir64_r_proto" in
14545 REENTRANT_PROTO*) ;;
14546 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14547 esac
14548 echo "Prototype: $try" ;;
14549 esac
14550 ;;
c18e646a
JH
14551 *) case "$usethreads" in
14552 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14553 esac
90e831dc
SB
14554 d_readdir64_r=undef
14555 readdir64_r_proto=0
c18e646a 14556 ;;
a48ec845
JH
14557 esac
14558 ;;
10bc17b6
JH
14559*) readdir64_r_proto=0
14560 ;;
14561esac
14562
14563: see if readdir_r exists
14564set readdir_r d_readdir_r
14565eval $inlibc
14566case "$d_readdir_r" in
14567"$define")
14568 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
c18e646a
JH
14569 case "$d_readdir_r_proto:$usethreads" in
14570 ":define") d_readdir_r_proto=define
a48ec845
JH
14571 set d_readdir_r_proto readdir_r $hdrs
14572 eval $hasproto ;;
14573 *) ;;
14574 esac
14575 case "$d_readdir_r_proto" in
14576 define)
10bc17b6
JH
14577 case "$readdir_r_proto" in
14578 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14579 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14580 esac
14581 case "$readdir_r_proto" in
14582 ''|0) try='int readdir_r(DIR*, struct dirent*);'
14583 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14584 esac
14585 case "$readdir_r_proto" in
90e831dc 14586 ''|0) d_readdir_r=undef
10bc17b6 14587 readdir_r_proto=0
a48ec845 14588 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
14589 * ) case "$readdir_r_proto" in
14590 REENTRANT_PROTO*) ;;
14591 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14592 esac
14593 echo "Prototype: $try" ;;
14594 esac
14595 ;;
c18e646a
JH
14596 *) case "$usethreads" in
14597 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14598 esac
90e831dc
SB
14599 d_readdir_r=undef
14600 readdir_r_proto=0
c18e646a 14601 ;;
a48ec845
JH
14602 esac
14603 ;;
10bc17b6
JH
14604*) readdir_r_proto=0
14605 ;;
14606esac
14607
4e0554ec
JH
14608: see if readv exists
14609set readv d_readv
14610eval $inlibc
14611
14612: see if recvmsg exists
14613set recvmsg d_recvmsg
14614eval $inlibc
14615
b4eb6b3d
JH
14616: see if rename exists
14617set rename d_rename
14618eval $inlibc
14619
14620: see if rmdir exists
14621set rmdir d_rmdir
14622eval $inlibc
14623
14624: see if memory.h is available.
14625val=''
14626set memory.h val
14627eval $inhdr
14628
14629: See if it conflicts with string.h
14630case "$val" in
14631$define)
14632 case "$strings" in
14633 '') ;;
14634 *)
14635 $cppstdin $cppflags $cppminus < $strings > mem.h
14636 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14637 echo " "
14638 echo "We won't be including <memory.h>."
14639 val="$undef"
14640 fi
14641 $rm -f mem.h
14642 ;;
14643 esac
14644esac
14645set i_memory
14646eval $setvar
14647
14648: can bcopy handle overlapping blocks?
b6cc3bc4 14649echo " "
b4eb6b3d 14650val="$undef"
b6cc3bc4
AD
14651case "$d_memmove" in
14652"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14653*) case "$d_bcopy" in
14654 "$define")
14655 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14656 $cat >try.c <<EOCP
b4eb6b3d
JH
14657#$i_memory I_MEMORY
14658#$i_stdlib I_STDLIB
14659#$i_string I_STRING
14660#$i_unistd I_UNISTD
14661EOCP
14662 $cat >>try.c <<'EOCP'
14663#include <stdio.h>
14664#ifdef I_MEMORY
14665# include <memory.h>
14666#endif
14667#ifdef I_STDLIB
14668# include <stdlib.h>
14669#endif
14670#ifdef I_STRING
14671# include <string.h>
14672#else
14673# include <strings.h>
14674#endif
14675#ifdef I_UNISTD
14676# include <unistd.h> /* Needed for NetBSD */
14677#endif
14678int main()
14679{
14680char buf[128], abc[128];
14681char *b;
14682int len;
14683int off;
14684int align;
14685
b6cc3bc4
AD
14686/* Copy "abcde..." string to char abc[] so that gcc doesn't
14687 try to store the string in read-only memory. */
b4eb6b3d
JH
14688bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14689
14690for (align = 7; align >= 0; align--) {
14691 for (len = 36; len; len--) {
14692 b = buf+align;
14693 bcopy(abc, b, len);
14694 for (off = 1; off <= len; off++) {
14695 bcopy(b, b+off, len);
14696 bcopy(b+off, b, len);
14697 if (bcmp(b, abc, len))
14698 exit(1);
14699 }
14700 }
14701}
14702exit(0);
14703}
14704EOCP
b6cc3bc4
AD
14705 set try
14706 if eval $compile_ok; then
14707 if ./try 2>/dev/null; then
14708 echo "Yes, it can."
14709 val="$define"
14710 else
14711 echo "It can't, sorry."
14712 fi
b4eb6b3d 14713 else
b6cc3bc4 14714 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 14715 fi
b6cc3bc4
AD
14716 ;;
14717 esac
14718 $rm -f try.* try core
b4eb6b3d
JH
14719 ;;
14720esac
b4eb6b3d
JH
14721set d_safebcpy
14722eval $setvar
14723
14724: can memcpy handle overlapping blocks?
b6cc3bc4 14725echo " "
b4eb6b3d 14726val="$undef"
b6cc3bc4
AD
14727case "$d_memmove" in
14728"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14729*) case "$d_memcpy" in
14730 "$define")
14731 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14732 $cat >try.c <<EOCP
b4eb6b3d
JH
14733#$i_memory I_MEMORY
14734#$i_stdlib I_STDLIB
14735#$i_string I_STRING
14736#$i_unistd I_UNISTD
14737EOCP
14738 $cat >>try.c <<'EOCP'
14739#include <stdio.h>
14740#ifdef I_MEMORY
14741# include <memory.h>
14742#endif
14743#ifdef I_STDLIB
14744# include <stdlib.h>
14745#endif
14746#ifdef I_STRING
14747# include <string.h>
14748#else
14749# include <strings.h>
14750#endif
14751#ifdef I_UNISTD
14752# include <unistd.h> /* Needed for NetBSD */
14753#endif
14754int main()
14755{
14756char buf[128], abc[128];
14757char *b;
14758int len;
14759int off;
14760int align;
14761
14762/* Copy "abcde..." string to char abc[] so that gcc doesn't
14763 try to store the string in read-only memory. */
14764memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14765
14766for (align = 7; align >= 0; align--) {
14767 for (len = 36; len; len--) {
14768 b = buf+align;
14769 memcpy(b, abc, len);
14770 for (off = 1; off <= len; off++) {
14771 memcpy(b+off, b, len);
14772 memcpy(b, b+off, len);
14773 if (memcmp(b, abc, len))
14774 exit(1);
14775 }
14776 }
14777}
14778exit(0);
14779}
14780EOCP
b6cc3bc4
AD
14781 set try
14782 if eval $compile_ok; then
14783 if ./try 2>/dev/null; then
14784 echo "Yes, it can."
14785 val="$define"
14786 else
14787 echo "It can't, sorry."
14788 fi
b4eb6b3d 14789 else
b6cc3bc4 14790 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 14791 fi
b6cc3bc4
AD
14792 ;;
14793 esac
14794 $rm -f try.* try core
b4eb6b3d
JH
14795 ;;
14796esac
b4eb6b3d
JH
14797set d_safemcpy
14798eval $setvar
14799
14800: can memcmp be trusted to compare relative magnitude?
14801val="$undef"
14802case "$d_memcmp" in
14803"$define")
14804 echo " "
14805 echo "Checking if your memcmp() can compare relative magnitude..." >&4
14806 $cat >try.c <<EOCP
14807#$i_memory I_MEMORY
14808#$i_stdlib I_STDLIB
14809#$i_string I_STRING
14810#$i_unistd I_UNISTD
14811EOCP
14812 $cat >>try.c <<'EOCP'
14813#include <stdio.h>
14814#ifdef I_MEMORY
14815# include <memory.h>
14816#endif
14817#ifdef I_STDLIB
36adc09b 14818# include <stdlib.h>
b4eb6b3d
JH
14819#endif
14820#ifdef I_STRING
14821# include <string.h>
14822#else
14823# include <strings.h>
14824#endif
14825#ifdef I_UNISTD
14826# include <unistd.h> /* Needed for NetBSD */
14827#endif
14828int main()
14829{
14830char a = -1;
14831char b = 0;
14832if ((a < b) && memcmp(&a, &b, 1) < 0)
14833 exit(1);
14834exit(0);
14835}
14836EOCP
14837 set try
14838 if eval $compile_ok; then
5440bc8e 14839 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
14840 echo "Yes, it can."
14841 val="$define"
14842 else
14843 echo "No, it can't (it uses signed chars)."
14844 fi
14845 else
14846 echo "(I can't compile the test program, so we'll assume not...)"
14847 fi
14848 ;;
14849esac
14850$rm -f try.* try core
14851set d_sanemcmp
14852eval $setvar
14853
ef9f17be
JH
14854: see if prototype for sbrk is available
14855echo " "
14856set d_sbrkproto sbrk $i_unistd unistd.h
14857eval $hasproto
14858
36adc09b
JH
14859: see if scalbnl exists
14860set scalbnl d_scalbnl
14861eval $inlibc
14862
b4eb6b3d
JH
14863: see if select exists
14864set select d_select
14865eval $inlibc
14866
14867: see if semctl exists
14868set semctl d_semctl
14869eval $inlibc
14870
14871: see if semget exists
14872set semget d_semget
14873eval $inlibc
14874
14875: see if semop exists
14876set semop d_semop
14877eval $inlibc
14878
14879: see how much of the 'sem*(2)' library is present.
14880h_sem=true
14881echo " "
14882case "$d_semctl$d_semget$d_semop" in
14883*"$undef"*) h_sem=false;;
14884esac
14885case "$osname" in
14886freebsd)
14887 case "`ipcs 2>&1`" in
14888 "SVID messages"*"not configured"*)
14889 echo "Your $osname does not have the sem*(2) configured." >&4
14890 h_sem=false
14891 val="$undef"
14892 set semctl d_semctl
14893 eval $setvar
14894 set semget d_semget
14895 eval $setvar
14896 set semop d_semop
14897 eval $setvar
14898 ;;
14899 esac
14900 ;;
14901esac
14902: we could also check for sys/ipc.h ...
14903if $h_sem && $test `./findhdr sys/sem.h`; then
14904 echo "You have the full sem*(2) library." >&4
14905 val="$define"
14906else
14907 echo "You don't have the full sem*(2) library." >&4
14908 val="$undef"
14909fi
14910set d_sem
14911eval $setvar
14912
14913: see whether sys/sem.h defines union semun
14914echo " "
14915$cat > try.c <<'END'
14916#include <sys/types.h>
14917#include <sys/ipc.h>
14918#include <sys/sem.h>
14919int main () { union semun semun; semun.buf = 0; }
14920END
14921set try
14922if eval $compile; then
14923 echo "You have union semun in <sys/sem.h>." >&4
14924 val="$define"
14925else
14926 echo "You do not have union semun in <sys/sem.h>." >&4
14927 val="$undef"
14928fi
14929$rm -f try try.c try.h
14930set d_union_semun
14931eval $setvar
14932
14933: see how to do semctl IPC_STAT
14934case "$d_sem" in
14935$define)
14936 : see whether semctl IPC_STAT can use union semun
14937 echo " "
14938 $cat > try.h <<END
14939#ifndef S_IRUSR
14940# ifdef S_IREAD
14941# define S_IRUSR S_IREAD
14942# define S_IWUSR S_IWRITE
14943# define S_IXUSR S_IEXEC
14944# else
14945# define S_IRUSR 0400
14946# define S_IWUSR 0200
14947# define S_IXUSR 0100
14948# endif
14949# define S_IRGRP (S_IRUSR>>3)
14950# define S_IWGRP (S_IWUSR>>3)
14951# define S_IXGRP (S_IXUSR>>3)
14952# define S_IROTH (S_IRUSR>>6)
14953# define S_IWOTH (S_IWUSR>>6)
14954# define S_IXOTH (S_IXUSR>>6)
14955#endif
14956#ifndef S_IRWXU
14957# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14958# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14959# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14960#endif
14961END
14962
14963 $cat > try.c <<END
14964#include <sys/types.h>
14965#include <sys/ipc.h>
14966#include <sys/sem.h>
14967#include <sys/stat.h>
14968#include <stdio.h>
14969#include <errno.h>
14970#include "try.h"
14971#ifndef errno
14972extern int errno;
14973#endif
14974#$d_union_semun HAS_UNION_SEMUN
14975int main() {
14976 union semun
14977#ifndef HAS_UNION_SEMUN
14978 {
14979 int val;
14980 struct semid_ds *buf;
14981 unsigned short *array;
14982 }
14983#endif
14984 arg;
14985 int sem, st;
14986
14987#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14988 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14989 if (sem > -1) {
14990 struct semid_ds argbuf;
14991 arg.buf = &argbuf;
14992# ifdef IPC_STAT
14993 st = semctl(sem, 0, IPC_STAT, arg);
14994 if (st == 0)
14995 printf("semun\n");
14996 else
14997# endif /* IPC_STAT */
14998 printf("semctl IPC_STAT failed: errno = %d\n", errno);
14999# ifdef IPC_RMID
15000 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15001# endif /* IPC_RMID */
15002 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15003 } else
15004#endif /* IPC_PRIVATE && ... */
15005 printf("semget failed: errno = %d\n", errno);
15006 return 0;
15007}
15008END
15009 val="$undef"
15010 set try
15011 if eval $compile; then
5440bc8e 15012 xxx=`$run ./try`
b4eb6b3d
JH
15013 case "$xxx" in
15014 semun) val="$define" ;;
15015 esac
15016 fi
15017 $rm -f try try.c
15018 set d_semctl_semun
15019 eval $setvar
15020 case "$d_semctl_semun" in
15021 $define)
15022 echo "You can use union semun for semctl IPC_STAT." >&4
15023 also='also'
15024 ;;
15025 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15026 also=''
15027 ;;
15028 esac
15029
15030 : see whether semctl IPC_STAT can use struct semid_ds pointer
15031 $cat > try.c <<'END'
15032#include <sys/types.h>
15033#include <sys/ipc.h>
15034#include <sys/sem.h>
15035#include <sys/stat.h>
15036#include "try.h"
15037#include <stdio.h>
15038#include <errno.h>
15039#ifndef errno
15040extern int errno;
15041#endif
15042int main() {
15043 struct semid_ds arg;
15044 int sem, st;
15045
15046#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15047 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15048 if (sem > -1) {
15049# ifdef IPC_STAT
15050 st = semctl(sem, 0, IPC_STAT, &arg);
15051 if (st == 0)
15052 printf("semid_ds\n");
15053 else
15054# endif /* IPC_STAT */
15055 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15056# ifdef IPC_RMID
15057 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15058# endif /* IPC_RMID */
15059 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15060 } else
15061#endif /* IPC_PRIVATE && ... */
15062 printf("semget failed: errno = %d\n", errno);
15063
15064 return 0;
15065}
15066END
15067 val="$undef"
15068 set try
15069 if eval $compile; then
5440bc8e 15070 xxx=`$run ./try`
b4eb6b3d
JH
15071 case "$xxx" in
15072 semid_ds) val="$define" ;;
15073 esac
15074 fi
15075 $rm -f try try.c
15076 set d_semctl_semid_ds
15077 eval $setvar
15078 case "$d_semctl_semid_ds" in
15079 $define)
15080 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15081 ;;
15082 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15083 ;;
15084 esac
15085 $rm -f try.h
15086 ;;
15087*) val="$undef"
15088
15089 # We do not have the full sem*(2) library, so assume we can not
15090 # use either.
15091
15092 set d_semctl_semun
15093 eval $setvar
15094
15095 set d_semctl_semid_ds
15096 eval $setvar
15097 ;;
15098esac
15099
4e0554ec
JH
15100: see if sendmsg exists
15101set sendmsg d_sendmsg
15102eval $inlibc
15103
b4eb6b3d
JH
15104: see if setegid exists
15105set setegid d_setegid
15106eval $inlibc
15107
15108: see if seteuid exists
15109set seteuid d_seteuid
15110eval $inlibc
15111
15112: see if setgrent exists
15113set setgrent d_setgrent
15114eval $inlibc
15115
10bc17b6
JH
15116: see if setgrent_r exists
15117set setgrent_r d_setgrent_r
15118eval $inlibc
15119case "$d_setgrent_r" in
15120"$define")
15121 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
c18e646a
JH
15122 case "$d_setgrent_r_proto:$usethreads" in
15123 ":define") d_setgrent_r_proto=define
a48ec845
JH
15124 set d_setgrent_r_proto setgrent_r $hdrs
15125 eval $hasproto ;;
15126 *) ;;
15127 esac
15128 case "$d_setgrent_r_proto" in
15129 define)
10bc17b6
JH
15130 case "$setgrent_r_proto" in
15131 ''|0) try='int setgrent_r(FILE**);'
15132 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15133 esac
15134 case "$setgrent_r_proto" in
15135 ''|0) try='void setgrent_r(FILE**);'
15136 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15137 esac
15138 case "$setgrent_r_proto" in
90e831dc 15139 ''|0) d_setgrent_r=undef
10bc17b6 15140 setgrent_r_proto=0
a48ec845 15141 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15142 * ) case "$setgrent_r_proto" in
15143 REENTRANT_PROTO*) ;;
15144 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15145 esac
15146 echo "Prototype: $try" ;;
15147 esac
15148 ;;
c18e646a
JH
15149 *) case "$usethreads" in
15150 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15151 esac
90e831dc
SB
15152 d_setgrent_r=undef
15153 setgrent_r_proto=0
c18e646a 15154 ;;
a48ec845
JH
15155 esac
15156 ;;
10bc17b6
JH
15157*) setgrent_r_proto=0
15158 ;;
15159esac
15160
b4eb6b3d
JH
15161: see if sethostent exists
15162set sethostent d_sethent
15163eval $inlibc
15164
10bc17b6
JH
15165: see if sethostent_r exists
15166set sethostent_r d_sethostent_r
15167eval $inlibc
15168case "$d_sethostent_r" in
15169"$define")
15170 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15171 case "$d_sethostent_r_proto:$usethreads" in
15172 ":define") d_sethostent_r_proto=define
a48ec845
JH
15173 set d_sethostent_r_proto sethostent_r $hdrs
15174 eval $hasproto ;;
15175 *) ;;
15176 esac
15177 case "$d_sethostent_r_proto" in
15178 define)
10bc17b6
JH
15179 case "$sethostent_r_proto" in
15180 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15181 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15182 esac
15183 case "$sethostent_r_proto" in
15184 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15185 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15186 esac
15187 case "$sethostent_r_proto" in
90e831dc 15188 ''|0) d_sethostent_r=undef
10bc17b6 15189 sethostent_r_proto=0
a48ec845 15190 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15191 * ) case "$sethostent_r_proto" in
15192 REENTRANT_PROTO*) ;;
15193 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15194 esac
15195 echo "Prototype: $try" ;;
15196 esac
15197 ;;
c18e646a
JH
15198 *) case "$usethreads" in
15199 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15200 esac
90e831dc
SB
15201 d_sethostent_r=undef
15202 sethostent_r_proto=0
c18e646a 15203 ;;
a48ec845
JH
15204 esac
15205 ;;
10bc17b6
JH
15206*) sethostent_r_proto=0
15207 ;;
15208esac
15209
4e0554ec
JH
15210: see if setitimer exists
15211set setitimer d_setitimer
15212eval $inlibc
15213
b4eb6b3d
JH
15214: see if setlinebuf exists
15215set setlinebuf d_setlinebuf
15216eval $inlibc
15217
15218: see if setlocale exists
15219set setlocale d_setlocale
15220eval $inlibc
15221
10bc17b6
JH
15222: see if locale.h is available
15223set locale.h i_locale
15224eval $inhdr
15225
15226: see if setlocale_r exists
15227set setlocale_r d_setlocale_r
15228eval $inlibc
15229case "$d_setlocale_r" in
15230"$define")
15231 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
c18e646a
JH
15232 case "$d_setlocale_r_proto:$usethreads" in
15233 ":define") d_setlocale_r_proto=define
a48ec845
JH
15234 set d_setlocale_r_proto setlocale_r $hdrs
15235 eval $hasproto ;;
15236 *) ;;
15237 esac
15238 case "$d_setlocale_r_proto" in
15239 define)
10bc17b6
JH
15240 case "$setlocale_r_proto" in
15241 ''|0) try='int setlocale_r(int, const char*, char*, int);'
15242 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15243 esac
15244 case "$setlocale_r_proto" in
90e831dc 15245 ''|0) d_setlocale_r=undef
10bc17b6 15246 setlocale_r_proto=0
a48ec845 15247 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15248 * ) case "$setlocale_r_proto" in
15249 REENTRANT_PROTO*) ;;
15250 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15251 esac
15252 echo "Prototype: $try" ;;
15253 esac
15254 ;;
c18e646a
JH
15255 *) case "$usethreads" in
15256 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15257 esac
90e831dc
SB
15258 d_setlocale_r=undef
15259 setlocale_r_proto=0
c18e646a 15260 ;;
a48ec845
JH
15261 esac
15262 ;;
10bc17b6
JH
15263*) setlocale_r_proto=0
15264 ;;
15265esac
15266
b4eb6b3d
JH
15267: see if setnetent exists
15268set setnetent d_setnent
15269eval $inlibc
15270
10bc17b6
JH
15271: see if setnetent_r exists
15272set setnetent_r d_setnetent_r
15273eval $inlibc
15274case "$d_setnetent_r" in
15275"$define")
15276 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15277 case "$d_setnetent_r_proto:$usethreads" in
15278 ":define") d_setnetent_r_proto=define
a48ec845
JH
15279 set d_setnetent_r_proto setnetent_r $hdrs
15280 eval $hasproto ;;
15281 *) ;;
15282 esac
15283 case "$d_setnetent_r_proto" in
15284 define)
10bc17b6
JH
15285 case "$setnetent_r_proto" in
15286 ''|0) try='int setnetent_r(int, struct netent_data*);'
15287 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15288 esac
15289 case "$setnetent_r_proto" in
15290 ''|0) try='void setnetent_r(int, struct netent_data*);'
15291 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15292 esac
15293 case "$setnetent_r_proto" in
90e831dc 15294 ''|0) d_setnetent_r=undef
10bc17b6 15295 setnetent_r_proto=0
a48ec845 15296 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15297 * ) case "$setnetent_r_proto" in
15298 REENTRANT_PROTO*) ;;
15299 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15300 esac
15301 echo "Prototype: $try" ;;
15302 esac
15303 ;;
c18e646a
JH
15304 *) case "$usethreads" in
15305 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15306 esac
90e831dc
SB
15307 d_setnetent_r=undef
15308 setnetent_r_proto=0
c18e646a 15309 ;;
a48ec845
JH
15310 esac
15311 ;;
10bc17b6
JH
15312*) setnetent_r_proto=0
15313 ;;
15314esac
15315
b4eb6b3d
JH
15316: see if setprotoent exists
15317set setprotoent d_setpent
15318eval $inlibc
15319
15320: see if setpgid exists
15321set setpgid d_setpgid
15322eval $inlibc
15323
15324: see if setpgrp2 exists
15325set setpgrp2 d_setpgrp2
15326eval $inlibc
15327
15328: see if setpriority exists
15329set setpriority d_setprior
15330eval $inlibc
15331
15332: see if setproctitle exists
15333set setproctitle d_setproctitle
15334eval $inlibc
15335
10bc17b6
JH
15336: see if setprotoent_r exists
15337set setprotoent_r d_setprotoent_r
15338eval $inlibc
15339case "$d_setprotoent_r" in
15340"$define")
15341 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15342 case "$d_setprotoent_r_proto:$usethreads" in
15343 ":define") d_setprotoent_r_proto=define
a48ec845
JH
15344 set d_setprotoent_r_proto setprotoent_r $hdrs
15345 eval $hasproto ;;
15346 *) ;;
15347 esac
15348 case "$d_setprotoent_r_proto" in
15349 define)
10bc17b6
JH
15350 case "$setprotoent_r_proto" in
15351 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15352 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15353 esac
15354 case "$setprotoent_r_proto" in
15355 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15356 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15357 esac
15358 case "$setprotoent_r_proto" in
90e831dc 15359 ''|0) d_setprotoent_r=undef
10bc17b6 15360 setprotoent_r_proto=0
a48ec845 15361 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15362 * ) case "$setprotoent_r_proto" in
15363 REENTRANT_PROTO*) ;;
15364 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15365 esac
15366 echo "Prototype: $try" ;;
15367 esac
15368 ;;
c18e646a
JH
15369 *) case "$usethreads" in
15370 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15371 esac
90e831dc
SB
15372 d_setprotoent_r=undef
15373 setprotoent_r_proto=0
c18e646a 15374 ;;
a48ec845
JH
15375 esac
15376 ;;
10bc17b6
JH
15377*) setprotoent_r_proto=0
15378 ;;
15379esac
15380
b4eb6b3d
JH
15381: see if setpwent exists
15382set setpwent d_setpwent
15383eval $inlibc
15384
10bc17b6
JH
15385: see if setpwent_r exists
15386set setpwent_r d_setpwent_r
15387eval $inlibc
15388case "$d_setpwent_r" in
15389"$define")
15390 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
c18e646a
JH
15391 case "$d_setpwent_r_proto:$usethreads" in
15392 ":define") d_setpwent_r_proto=define
a48ec845
JH
15393 set d_setpwent_r_proto setpwent_r $hdrs
15394 eval $hasproto ;;
15395 *) ;;
15396 esac
15397 case "$d_setpwent_r_proto" in
15398 define)
10bc17b6
JH
15399 case "$setpwent_r_proto" in
15400 ''|0) try='int setpwent_r(FILE**);'
15401 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15402 esac
15403 case "$setpwent_r_proto" in
15404 ''|0) try='void setpwent_r(FILE**);'
15405 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15406 esac
15407 case "$setpwent_r_proto" in
90e831dc 15408 ''|0) d_setpwent_r=undef
10bc17b6 15409 setpwent_r_proto=0
a48ec845 15410 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15411 * ) case "$setpwent_r_proto" in
15412 REENTRANT_PROTO*) ;;
15413 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15414 esac
15415 echo "Prototype: $try" ;;
15416 esac
15417 ;;
c18e646a
JH
15418 *) case "$usethreads" in
15419 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15420 esac
90e831dc
SB
15421 d_setpwent_r=undef
15422 setpwent_r_proto=0
c18e646a 15423 ;;
a48ec845
JH
15424 esac
15425 ;;
10bc17b6
JH
15426*) setpwent_r_proto=0
15427 ;;
15428esac
15429
b4eb6b3d
JH
15430: see if setregid exists
15431set setregid d_setregid
15432eval $inlibc
15433set setresgid d_setresgid
15434eval $inlibc
15435
15436: see if setreuid exists
15437set setreuid d_setreuid
15438eval $inlibc
15439set setresuid d_setresuid
15440eval $inlibc
15441
15442: see if setrgid exists
15443set setrgid d_setrgid
15444eval $inlibc
15445
15446: see if setruid exists
15447set setruid d_setruid
15448eval $inlibc
15449
15450: see if setservent exists
15451set setservent d_setsent
15452eval $inlibc
15453
10bc17b6
JH
15454: see if setservent_r exists
15455set setservent_r d_setservent_r
15456eval $inlibc
15457case "$d_setservent_r" in
15458"$define")
15459 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
c18e646a
JH
15460 case "$d_setservent_r_proto:$usethreads" in
15461 ":define") d_setservent_r_proto=define
a48ec845
JH
15462 set d_setservent_r_proto setservent_r $hdrs
15463 eval $hasproto ;;
15464 *) ;;
15465 esac
15466 case "$d_setservent_r_proto" in
15467 define)
10bc17b6
JH
15468 case "$setservent_r_proto" in
15469 ''|0) try='int setservent_r(int, struct servent_data*);'
15470 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15471 esac
15472 case "$setservent_r_proto" in
15473 ''|0) try='void setservent_r(int, struct servent_data*);'
15474 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15475 esac
15476 case "$setservent_r_proto" in
90e831dc 15477 ''|0) d_setservent_r=undef
10bc17b6 15478 setservent_r_proto=0
a48ec845 15479 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15480 * ) case "$setservent_r_proto" in
15481 REENTRANT_PROTO*) ;;
15482 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15483 esac
15484 echo "Prototype: $try" ;;
15485 esac
15486 ;;
c18e646a
JH
15487 *) case "$usethreads" in
15488 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15489 esac
90e831dc
SB
15490 d_setservent_r=undef
15491 setservent_r_proto=0
c18e646a 15492 ;;
a48ec845
JH
15493 esac
15494 ;;
10bc17b6
JH
15495*) setservent_r_proto=0
15496 ;;
15497esac
15498
b4eb6b3d
JH
15499: see if setsid exists
15500set setsid d_setsid
15501eval $inlibc
15502
15503: see if setvbuf exists
15504set setvbuf d_setvbuf
15505eval $inlibc
15506
15507: see if sfio.h is available
15508set sfio.h i_sfio
15509eval $inhdr
15510
15511
15512: see if sfio library is available
15513case "$i_sfio" in
15514$define)
15515 val=''
15516 set sfreserve val
15517 eval $inlibc
15518 ;;
15519*)
15520 val="$undef"
15521 ;;
15522esac
15523: Ok, but do we want to use it.
15524case "$val" in
15525$define)
15526 case "$usesfio" in
15527 true|$define|[yY]*) dflt='y';;
15528 *) dflt='n';;
15529 esac
15530 echo "$package can use the sfio library, but it is experimental."
15531 case "$useperlio" in
15532 "$undef")
15533 echo "For sfio also the PerlIO abstraction layer is needed."
15534 echo "Earlier you said you wouldn't want that."
15535 ;;
15536 esac
15537 rp="You seem to have sfio available, do you want to try using it?"
15538 . ./myread
15539 case "$ans" in
15540 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15541 useperlio="$define"
15542 val="$define"
15543 ;;
15544 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15545 val="$undef"
b4eb6b3d
JH
15546 ;;
15547 esac
15548 ;;
15549*) case "$usesfio" in
15550 true|$define|[yY]*)
15551 echo "Sorry, cannot find sfio on this machine." >&4
15552 echo "Ignoring your setting of usesfio=$usesfio." >&4
15553 val="$undef"
15554 ;;
15555 esac
15556 ;;
15557esac
15558set d_sfio
15559eval $setvar
15560case "$d_sfio" in
15561$define) usesfio='true';;
15562*) usesfio='false';;
15563esac
3659ebf1
JH
15564case "$d_sfio" in
15565$define) ;;
15566*) : Remove sfio from list of libraries to use
7483f793
JH
15567 case "$libs" in
15568 *-lsfio*)
15569 echo "Removing unneeded -lsfio from library list" >&4
15570 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15571 shift
15572 libs="$*"
15573 echo "libs = $libs" >&4
15574 ;;
15575 esac
3659ebf1
JH
15576;;
15577esac
15578
b4eb6b3d
JH
15579
15580: see if shmctl exists
15581set shmctl d_shmctl
15582eval $inlibc
15583
15584: see if shmget exists
15585set shmget d_shmget
15586eval $inlibc
15587
15588: see if shmat exists
15589set shmat d_shmat
15590eval $inlibc
15591: see what shmat returns
15592case "$d_shmat" in
15593"$define")
15594 $cat >shmat.c <<'END'
15595#include <sys/shm.h>
15596void *shmat();
15597END
15598 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15599 shmattype='void *'
15600 else
15601 shmattype='char *'
15602 fi
15603 echo "and it returns ($shmattype)." >&4
15604 : see if a prototype for shmat is available
15605 xxx=`./findhdr sys/shm.h`
15606 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15607 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15608 val="$define"
15609 else
15610 val="$undef"
15611 fi
15612 $rm -f shmat.[co]
15613 ;;
15614*)
15615 val="$undef"
15616 ;;
15617esac
15618set d_shmatprototype
15619eval $setvar
15620
15621: see if shmdt exists
15622set shmdt d_shmdt
15623eval $inlibc
15624
15625: see how much of the 'shm*(2)' library is present.
15626h_shm=true
15627echo " "
15628case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15629*"$undef"*) h_shm=false;;
15630esac
15631case "$osname" in
15632freebsd)
15633 case "`ipcs 2>&1`" in
15634 "SVID shared memory"*"not configured"*)
15635 echo "Your $osname does not have the shm*(2) configured." >&4
15636 h_shm=false
15637 val="$undef"
15638 set shmctl d_shmctl
15639 evat $setvar
15640 set shmget d_shmget
15641 evat $setvar
15642 set shmat d_shmat
15643 evat $setvar
15644 set shmdt d_shmdt
15645 evat $setvar
15646 ;;
15647 esac
15648 ;;
15649esac
15650: we could also check for sys/ipc.h ...
15651if $h_shm && $test `./findhdr sys/shm.h`; then
15652 echo "You have the full shm*(2) library." >&4
15653 val="$define"
15654else
15655 echo "You don't have the full shm*(2) library." >&4
15656 val="$undef"
15657fi
15658set d_shm
15659eval $setvar
15660
15661echo " "
15662: see if we have sigaction
15663if set sigaction val -f d_sigaction; eval $csym; $val; then
15664 echo 'sigaction() found.' >&4
073b6de5 15665 $cat > try.c <<EOP
b4eb6b3d
JH
15666#include <stdio.h>
15667#include <sys/types.h>
15668#include <signal.h>
073b6de5
JH
15669#$i_stdlib I_STDLIB
15670#ifdef I_STDLIB
15671#include <stdlib.h>
15672#endif
b4eb6b3d
JH
15673int main()
15674{
15675 struct sigaction act, oact;
15676 act.sa_flags = 0;
15677 oact.sa_handler = 0;
15678 /* so that act and oact are used */
15679 exit(act.sa_flags == 0 && oact.sa_handler == 0);
15680}
15681EOP
15682 set try
15683 if eval $compile_ok; then
15684 val="$define"
15685 else
15686 echo "But you don't seem to have a useable struct sigaction." >&4
15687 val="$undef"
15688 fi
15689else
15690 echo 'sigaction NOT found.' >&4
15691 val="$undef"
15692fi
15693set d_sigaction; eval $setvar
15694$rm -f try try$_o try.c
15695
983dbef6
JH
15696: see if sigprocmask exists
15697set sigprocmask d_sigprocmask
15698eval $inlibc
15699
b4eb6b3d
JH
15700: see if sigsetjmp exists
15701echo " "
15702case "$d_sigsetjmp" in
15703'')
c727eafa 15704 $cat >try.c <<EOP
b4eb6b3d 15705#include <setjmp.h>
d1daaddf
JH
15706#$i_stdlib I_STDLIB
15707#ifdef I_STDLIB
15708#include <stdlib.h>
15709#endif
b4eb6b3d
JH
15710sigjmp_buf env;
15711int set = 1;
15712int main()
15713{
15714 if (sigsetjmp(env,1))
15715 exit(set);
15716 set = 0;
15717 siglongjmp(env, 1);
15718 exit(1);
15719}
15720EOP
15721 set try
15722 if eval $compile; then
5440bc8e 15723 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
15724 echo "POSIX sigsetjmp found." >&4
15725 val="$define"
15726 else
15727 $cat >&4 <<EOM
15728Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15729I'll ignore them.
15730EOM
15731 val="$undef"
15732 fi
15733 else
15734 echo "sigsetjmp not found." >&4
15735 val="$undef"
15736 fi
15737 ;;
15738*) val="$d_sigsetjmp"
15739 case "$d_sigsetjmp" in
15740 $define) echo "POSIX sigsetjmp found." >&4;;
15741 $undef) echo "sigsetjmp not found." >&4;;
15742 esac
15743 ;;
15744esac
15745set d_sigsetjmp
15746eval $setvar
15747$rm -f try.c try
15748
49a78c82
JH
15749: see if sockatmark exists
15750set sockatmark d_sockatmark
15751eval $inlibc
15752
2ef53570
JH
15753: see if prototype for sockatmark is available
15754echo " "
15755set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15756eval $hasproto
15757
b4eb6b3d
JH
15758: see if socks5_init exists
15759set socks5_init d_socks5_init
15760eval $inlibc
15761
10bc17b6
JH
15762: see if srand48_r exists
15763set srand48_r d_srand48_r
15764eval $inlibc
15765case "$d_srand48_r" in
15766"$define")
15767 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
15768 case "$d_srand48_r_proto:$usethreads" in
15769 ":define") d_srand48_r_proto=define
a48ec845
JH
15770 set d_srand48_r_proto srand48_r $hdrs
15771 eval $hasproto ;;
15772 *) ;;
15773 esac
15774 case "$d_srand48_r_proto" in
15775 define)
10bc17b6
JH
15776 case "$srand48_r_proto" in
15777 ''|0) try='int srand48_r(long, struct drand48_data*);'
15778 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15779 esac
15780 case "$srand48_r_proto" in
90e831dc 15781 ''|0) d_srand48_r=undef
10bc17b6 15782 srand48_r_proto=0
a48ec845 15783 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15784 * ) case "$srand48_r_proto" in
15785 REENTRANT_PROTO*) ;;
15786 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15787 esac
15788 echo "Prototype: $try" ;;
15789 esac
15790 ;;
c18e646a
JH
15791 *) case "$usethreads" in
15792 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15793 esac
90e831dc
SB
15794 d_srand48_r=undef
15795 srand48_r_proto=0
c18e646a 15796 ;;
a48ec845
JH
15797 esac
15798 ;;
10bc17b6
JH
15799*) srand48_r_proto=0
15800 ;;
15801esac
15802
15803: see if srandom_r exists
15804set srandom_r d_srandom_r
15805eval $inlibc
15806case "$d_srandom_r" in
15807"$define")
15808 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
c18e646a
JH
15809 case "$d_srandom_r_proto:$usethreads" in
15810 ":define") d_srandom_r_proto=define
a48ec845
JH
15811 set d_srandom_r_proto srandom_r $hdrs
15812 eval $hasproto ;;
15813 *) ;;
15814 esac
15815 case "$d_srandom_r_proto" in
15816 define)
10bc17b6
JH
15817 case "$srandom_r_proto" in
15818 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15819 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15820 esac
15821 case "$srandom_r_proto" in
90e831dc 15822 ''|0) d_srandom_r=undef
10bc17b6 15823 srandom_r_proto=0
a48ec845 15824 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
15825 * ) case "$srandom_r_proto" in
15826 REENTRANT_PROTO*) ;;
15827 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15828 esac
15829 echo "Prototype: $try" ;;
15830 esac
15831 ;;
c18e646a
JH
15832 *) case "$usethreads" in
15833 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15834 esac
90e831dc
SB
15835 d_srandom_r=undef
15836 srandom_r_proto=0
c18e646a 15837 ;;
a48ec845
JH
15838 esac
15839 ;;
10bc17b6
JH
15840*) srandom_r_proto=0
15841 ;;
15842esac
15843
eef837ea
JH
15844: see if prototype for setresgid is available
15845echo " "
15846set d_sresgproto setresgid $i_unistd unistd.h
15847eval $hasproto
15848
640374d0
JH
15849: see if prototype for setresuid is available
15850echo " "
15851set d_sresuproto setresuid $i_unistd unistd.h
15852eval $hasproto
15853
b4eb6b3d
JH
15854: see if sys/stat.h is available
15855set sys/stat.h i_sysstat
15856eval $inhdr
15857
15858
15859: see if stat knows about block sizes
15860echo " "
15861echo "Checking to see if your struct stat has st_blocks field..." >&4
15862set d_statblks stat st_blocks $i_sysstat sys/stat.h
15863eval $hasfield
15864
15865
15866: see if this is a sys/vfs.h system
15867set sys/vfs.h i_sysvfs
15868eval $inhdr
15869
15870
15871: see if this is a sys/statfs.h system
15872set sys/statfs.h i_sysstatfs
15873eval $inhdr
15874
15875
15876echo " "
15877echo "Checking to see if your system supports struct statfs..." >&4
15878set 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
15879eval $hasstruct
15880case "$d_statfs_s" in
15881"$define") echo "Yes, it does." ;;
15882*) echo "No, it doesn't." ;;
15883esac
15884
15885
15886
15887: see if struct statfs knows about f_flags
15888case "$d_statfs_s" in
15889define)
15890 echo " "
15891 echo "Checking to see if your struct statfs has f_flags field..." >&4
15892 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
15893 eval $hasfield
15894 ;;
15895*) val="$undef"
15896 set d_statfs_f_flags
15897 eval $setvar
15898 ;;
15899esac
15900case "$d_statfs_f_flags" in
15901"$define") echo "Yes, it does." ;;
15902*) echo "No, it doesn't." ;;
15903esac
15904
15905: see if _ptr and _cnt from stdio act std
15906echo " "
80f36755
NC
15907
15908if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15909 echo "(Looks like you have stdio.h from BSD.)"
15910 case "$stdio_ptr" in
15911 '') stdio_ptr='((fp)->_p)'
15912 ptr_lval=$define
15913 ;;
15914 *) ptr_lval=$d_stdio_ptr_lval;;
15915 esac
15916 case "$stdio_cnt" in
15917 '') stdio_cnt='((fp)->_r)'
15918 cnt_lval=$define
15919 ;;
15920 *) cnt_lval=$d_stdio_cnt_lval;;
15921 esac
15922 case "$stdio_base" in
15923 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15924 esac
15925 case "$stdio_bufsiz" in
15926 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15927 esac
15928elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
15929 echo "(Looks like you have stdio.h from Linux.)"
15930 case "$stdio_ptr" in
15931 '') stdio_ptr='((fp)->_IO_read_ptr)'
15932 ptr_lval=$define
15933 ;;
15934 *) ptr_lval=$d_stdio_ptr_lval;;
15935 esac
15936 case "$stdio_cnt" in
15937 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15938 cnt_lval=$undef
15939 ;;
15940 *) cnt_lval=$d_stdio_cnt_lval;;
15941 esac
15942 case "$stdio_base" in
15943 '') stdio_base='((fp)->_IO_read_base)';;
15944 esac
15945 case "$stdio_bufsiz" in
15946 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15947 esac
15948else
15949 case "$stdio_ptr" in
15950 '') stdio_ptr='((fp)->_ptr)'
15951 ptr_lval=$define
15952 ;;
15953 *) ptr_lval=$d_stdio_ptr_lval;;
15954 esac
15955 case "$stdio_cnt" in
15956 '') stdio_cnt='((fp)->_cnt)'
15957 cnt_lval=$define
15958 ;;
15959 *) cnt_lval=$d_stdio_cnt_lval;;
15960 esac
15961 case "$stdio_base" in
15962 '') stdio_base='((fp)->_base)';;
15963 esac
15964 case "$stdio_bufsiz" in
15965 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15966 esac
15967fi
80f36755 15968
b4eb6b3d
JH
15969: test whether _ptr and _cnt really work
15970echo "Checking how std your stdio is..." >&4
15971$cat >try.c <<EOP
15972#include <stdio.h>
55954f19
JH
15973#$i_stdlib I_STDLIB
15974#ifdef I_STDLIB
15975#include <stdlib.h>
15976#endif
b4eb6b3d
JH
15977#define FILE_ptr(fp) $stdio_ptr
15978#define FILE_cnt(fp) $stdio_cnt
15979int main() {
15980 FILE *fp = fopen("try.c", "r");
15981 char c = getc(fp);
15982 if (
15983 18 <= FILE_cnt(fp) &&
15984 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15985 )
15986 exit(0);
15987 exit(1);
15988}
15989EOP
15990val="$undef"
15991set try
5440bc8e
JH
15992if eval $compile && $to try.c; then
15993 if $run ./try; then
b4eb6b3d
JH
15994 echo "Your stdio acts pretty std."
15995 val="$define"
15996 else
15997 echo "Your stdio isn't very std."
15998 fi
15999else
16000 echo "Your stdio doesn't appear very std."
16001fi
16002$rm -f try.c try
5f6e0ee4
AD
16003
16004# glibc 2.2.90 and above apparently change stdio streams so Perl's
16005# direct buffer manipulation no longer works. The Configure tests
16006# should be changed to correctly detect this, but until then,
16007# the following check should at least let perl compile and run.
16008# (This quick fix should be updated before 5.8.1.)
16009# To be defensive, reject all unknown versions, and all versions > 2.2.9.
16010# A. Dougherty, June 3, 2002.
16011case "$d_gnulibc" in
16012$define)
16013 case "$gnulibc_version" in
16014 2.[01]*) ;;
16015 2.2) ;;
16016 2.2.[0-9]) ;;
16017 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
16018 val="$undef"
16019 ;;
16020 esac
16021 ;;
16022esac
b4eb6b3d
JH
16023set d_stdstdio
16024eval $setvar
16025
16026: Can _ptr be used as an lvalue?
16027case "$d_stdstdio$ptr_lval" in
16028$define$define) val=$define ;;
16029*) val=$undef ;;
16030esac
16031set d_stdio_ptr_lval
16032eval $setvar
16033
16034: Can _cnt be used as an lvalue?
16035case "$d_stdstdio$cnt_lval" in
16036$define$define) val=$define ;;
16037*) val=$undef ;;
16038esac
16039set d_stdio_cnt_lval
16040eval $setvar
16041
a7ffa9b9
NC
16042
16043: test whether setting _ptr sets _cnt as a side effect
16044d_stdio_ptr_lval_sets_cnt="$undef"
16045d_stdio_ptr_lval_nochange_cnt="$undef"
16046case "$d_stdio_ptr_lval$d_stdstdio" in
16047$define$define)
16048 echo "Checking to see what happens if we set the stdio ptr..." >&4
16049$cat >try.c <<EOP
16050#include <stdio.h>
16051/* Can we scream? */
16052/* Eat dust sed :-) */
c1d9e6fa 16053/* In the buffer space, no one can hear you scream. */
55954f19
JH
16054#$i_stdlib I_STDLIB
16055#ifdef I_STDLIB
16056#include <stdlib.h>
16057#endif
0bbfc344
JH
16058#define FILE_ptr(fp) $stdio_ptr
16059#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 16060#include <sys/types.h>
a7ffa9b9
NC
16061int main() {
16062 FILE *fp = fopen("try.c", "r");
c1d9e6fa 16063 int c;
a7ffa9b9
NC
16064 char *ptr;
16065 size_t cnt;
c1d9e6fa
JH
16066 if (!fp) {
16067 puts("Fail even to read");
16068 exit(1);
16069 }
16070 c = getc(fp); /* Read away the first # */
16071 if (c == EOF) {
16072 puts("Fail even to read");
16073 exit(1);
16074 }
a7ffa9b9
NC
16075 if (!(
16076 18 <= FILE_cnt(fp) &&
16077 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16078 )) {
16079 puts("Fail even to read");
16080 exit (1);
16081 }
c1d9e6fa
JH
16082 ptr = (char*) FILE_ptr(fp);
16083 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 16084
c1d9e6fa 16085 FILE_ptr(fp) += 42;
a7ffa9b9 16086
c1d9e6fa 16087 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
16088 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16089 exit (1);
16090 }
16091 if (FILE_cnt(fp) <= 20) {
16092 printf ("Fail (<20 chars to test)");
16093 exit (1);
16094 }
16095 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16096 puts("Fail compare");
16097 exit (1);
16098 }
16099 if (cnt == FILE_cnt(fp)) {
16100 puts("Pass_unchanged");
16101 exit (0);
16102 }
16103 if (FILE_cnt(fp) == (cnt - 42)) {
16104 puts("Pass_changed");
16105 exit (0);
16106 }
16107 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16108 return 1;
16109
16110}
16111EOP
16112 set try
5440bc8e
JH
16113 if eval $compile && $to try.c; then
16114 case `$run ./try` in
a7ffa9b9 16115 Pass_changed)
2e32dcfe 16116 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
16117 d_stdio_ptr_lval_sets_cnt="$define" ;;
16118 Pass_unchanged)
16119 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
16120 d_stdio_ptr_lval_nochange_cnt="$define" ;;
16121 Fail*)
16122 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
16123 *)
16124 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16125 esac
16126 else
16127 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
16128 fi
16129 $rm -f try.c try
16130 ;;
16131esac
16132
b4eb6b3d
JH
16133: see if _base is also standard
16134val="$undef"
16135case "$d_stdstdio" in
16136$define)
16137 $cat >try.c <<EOP
16138#include <stdio.h>
55954f19
JH
16139#$i_stdlib I_STDLIB
16140#ifdef I_STDLIB
16141#include <stdlib.h>
16142#endif
b4eb6b3d
JH
16143#define FILE_base(fp) $stdio_base
16144#define FILE_bufsiz(fp) $stdio_bufsiz
16145int main() {
16146 FILE *fp = fopen("try.c", "r");
16147 char c = getc(fp);
16148 if (
16149 19 <= FILE_bufsiz(fp) &&
16150 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16151 )
16152 exit(0);
16153 exit(1);
16154}
16155EOP
16156 set try
5440bc8e
JH
16157 if eval $compile && $to try.c; then
16158 if $run ./try; then
b4eb6b3d
JH
16159 echo "And its _base field acts std."
16160 val="$define"
16161 else
16162 echo "But its _base field isn't std."
16163 fi
16164 else
16165 echo "However, it seems to be lacking the _base field."
16166 fi
16167 $rm -f try.c try
16168 ;;
16169esac
16170set d_stdiobase
16171eval $setvar
16172
16173$cat >&4 <<EOM
16174Checking how to access stdio streams by file descriptor number...
16175EOM
16176case "$stdio_stream_array" in
16177'') $cat >try.c <<EOCP
16178#include <stdio.h>
16179int main() {
16180 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16181 printf("yes\n");
16182}
16183EOCP
16184 for s in _iob __iob __sF
16185 do
16186 set try -DSTDIO_STREAM_ARRAY=$s
16187 if eval $compile; then
5440bc8e 16188 case "`$run ./try`" in
b4eb6b3d
JH
16189 yes) stdio_stream_array=$s; break ;;
16190 esac
16191 fi
16192 done
16193 $rm -f try.* try$exe_ext
16194esac
16195case "$stdio_stream_array" in
16196'') $cat >&4 <<EOM
16197I can't figure out how to access stdio streams by file descriptor number.
16198EOM
16199 d_stdio_stream_array="$undef"
16200 ;;
16201*) $cat >&4 <<EOM
16202You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16203EOM
16204 d_stdio_stream_array="$define"
16205 ;;
16206esac
16207
16208: see if strcoll exists
16209set strcoll d_strcoll
16210eval $inlibc
16211
16212: check for structure copying
16213echo " "
16214echo "Checking to see if your C compiler can copy structs..." >&4
16215$cat >try.c <<'EOCP'
76f47787 16216int main()
b4eb6b3d
JH
16217{
16218 struct blurfl {
16219 int dyick;
16220 } foo, bar;
16221
16222 foo = bar;
16223}
16224EOCP
16225if $cc -c try.c >/dev/null 2>&1 ; then
16226 val="$define"
16227 echo "Yup, it can."
16228else
16229 val="$undef"
16230 echo "Nope, it can't."
16231fi
16232set d_strctcpy
16233eval $setvar
16234$rm -f try.*
16235
16236: see if strerror and/or sys_errlist[] exist
16237echo " "
16238if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16239 if set strerror val -f d_strerror; eval $csym; $val; then
16240 echo 'strerror() found.' >&4
16241 d_strerror="$define"
16242 d_strerrm='strerror(e)'
16243 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16244 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16245 d_syserrlst="$define"
16246 else
16247 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16248 d_syserrlst="$undef"
16249 fi
16250 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16251 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16252 echo 'strerror() found in string header.' >&4
16253 d_strerror="$define"
16254 d_strerrm='strerror(e)'
16255 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16256 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16257 d_syserrlst="$define"
16258 else
16259 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16260 d_syserrlst="$undef"
16261 fi
16262 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16263 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16264 d_strerror="$undef"
16265 d_syserrlst="$define"
16266 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16267 else
16268 echo 'strerror() and sys_errlist[] NOT found.' >&4
16269 d_strerror="$undef"
16270 d_syserrlst="$undef"
16271 d_strerrm='"unknown"'
16272 fi
16273fi
16274
10bc17b6
JH
16275: see if strerror_r exists
16276set strerror_r d_strerror_r
16277eval $inlibc
16278case "$d_strerror_r" in
16279"$define")
16280 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
c18e646a
JH
16281 case "$d_strerror_r_proto:$usethreads" in
16282 ":define") d_strerror_r_proto=define
a48ec845
JH
16283 set d_strerror_r_proto strerror_r $hdrs
16284 eval $hasproto ;;
16285 *) ;;
16286 esac
16287 case "$d_strerror_r_proto" in
16288 define)
10bc17b6
JH
16289 case "$strerror_r_proto" in
16290 ''|0) try='int strerror_r(int, char*, size_t);'
16291 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16292 esac
16293 case "$strerror_r_proto" in
16294 ''|0) try='int strerror_r(int, char*, int);'
16295 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16296 esac
16297 case "$strerror_r_proto" in
16298 ''|0) try='char* strerror_r(int, char*, size_t);'
16299 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16300 esac
16301 case "$strerror_r_proto" in
90e831dc 16302 ''|0) d_strerror_r=undef
10bc17b6 16303 strerror_r_proto=0
a48ec845 16304 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16305 * ) case "$strerror_r_proto" in
16306 REENTRANT_PROTO*) ;;
16307 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16308 esac
16309 echo "Prototype: $try" ;;
16310 esac
16311 ;;
c18e646a
JH
16312 *) case "$usethreads" in
16313 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16314 esac
90e831dc
SB
16315 d_strerror_r=undef
16316 strerror_r_proto=0
c18e646a 16317 ;;
a48ec845
JH
16318 esac
16319 ;;
10bc17b6
JH
16320*) strerror_r_proto=0
16321 ;;
16322esac
16323
b3c85772
JH
16324: see if strftime exists
16325set strftime d_strftime
16326eval $inlibc
16327
b4eb6b3d
JH
16328: see if strtod exists
16329set strtod d_strtod
16330eval $inlibc
16331
16332: see if strtol exists
16333set strtol d_strtol
16334eval $inlibc
16335
16336: see if strtold exists
16337set strtold d_strtold
16338eval $inlibc
16339
16340: see if strtoll exists
16341set strtoll d_strtoll
16342eval $inlibc
16343
16344case "$d_longlong-$d_strtoll" in
16345"$define-$define")
16346 $cat <<EOM
16347Checking whether your strtoll() works okay...
16348EOM
16349 $cat >try.c <<'EOCP'
16350#include <errno.h>
16351#ifdef __hpux
16352#define strtoll __strtoll
16353#endif
e75931a7
YST
16354#ifdef __EMX__
16355#define strtoll _strtoll
16356#endif
b4eb6b3d
JH
16357#include <stdio.h>
16358extern long long int strtoll(char *s, char **, int);
16359static int bad = 0;
16360int check(char *s, long long ell, int een) {
16361 long long gll;
16362 errno = 0;
16363 gll = strtoll(s, 0, 10);
16364 if (!((gll == ell) && (errno == een)))
16365 bad++;
16366}
16367int main() {
16368 check(" 1", 1LL, 0);
16369 check(" 0", 0LL, 0);
16370 check("-1", -1LL, 0);
16371 check("-9223372036854775808", -9223372036854775808LL, 0);
16372 check("-9223372036854775808", -9223372036854775808LL, 0);
16373 check(" 9223372036854775807", 9223372036854775807LL, 0);
16374 check("-9223372036854775808", -9223372036854775808LL, 0);
16375 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
16376 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16377 if (!bad)
16378 printf("ok\n");
16379}
16380EOCP
16381 set try
16382 if eval $compile; then
5440bc8e 16383 yyy=`$run ./try`
e75931a7 16384 case "$yyy" in
b4eb6b3d
JH
16385 ok) echo "Your strtoll() seems to be working okay." ;;
16386 *) cat <<EOM >&4
16387Your strtoll() doesn't seem to be working okay.
16388EOM
16389 d_strtoll="$undef"
16390 ;;
69eadf66 16391 esac
e75931a7
YST
16392 else
16393 echo "(I can't seem to compile the test program--assuming it doesn't)"
16394 d_strtoll="$undef"
b4eb6b3d
JH
16395 fi
16396 ;;
16397esac
16398
28e5dec8
JH
16399: see if strtoq exists
16400set strtoq d_strtoq
16401eval $inlibc
16402
b4eb6b3d
JH
16403: see if strtoul exists
16404set strtoul d_strtoul
16405eval $inlibc
16406
d0e6d399
NC
16407case "$d_strtoul" in
16408"$define")
16409 $cat <<EOM
16410Checking whether your strtoul() works okay...
16411EOM
16412 $cat >try.c <<'EOCP'
16413#include <errno.h>
16414#include <stdio.h>
16415extern unsigned long int strtoul(char *s, char **, int);
16416static int bad = 0;
16417void check(char *s, unsigned long eul, int een) {
16418 unsigned long gul;
16419 errno = 0;
16420 gul = strtoul(s, 0, 10);
16421 if (!((gul == eul) && (errno == een)))
16422 bad++;
16423}
16424int main() {
16425 check(" 1", 1L, 0);
16426 check(" 0", 0L, 0);
16427EOCP
16428 case "$longsize" in
16429 8)
16430 $cat >>try.c <<'EOCP'
09c0d2c4
JH
16431 check("18446744073709551615", 18446744073709551615UL, 0);
16432 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 16433#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 16434 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
16435 check("-18446744073709551614", 2, 0);
16436 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
16437 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16438 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 16439#endif
d0e6d399
NC
16440EOCP
16441 ;;
16442 4)
16443 $cat >>try.c <<'EOCP'
16444 check("4294967295", 4294967295UL, 0);
16445 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 16446#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
16447 check("-1", 4294967295UL, 0);
16448 check("-4294967294", 2, 0);
16449 check("-4294967295", 1, 0);
16450 check("-4294967296", 4294967295UL, ERANGE);
16451 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 16452#endif
d0e6d399
NC
16453EOCP
16454 ;;
16455 *)
16456: Should we write these tests to be more portable by sprintf-ing
16457: ~0 and then manipulating that char string as input for strtol?
16458 ;;
16459 esac
16460 $cat >>try.c <<'EOCP'
16461 if (!bad)
16462 printf("ok\n");
16463 return 0;
16464}
16465EOCP
16466 set try
16467 if eval $compile; then
5440bc8e 16468 case "`$run ./try`" in
d0e6d399
NC
16469 ok) echo "Your strtoul() seems to be working okay." ;;
16470 *) cat <<EOM >&4
16471Your strtoul() doesn't seem to be working okay.
16472EOM
16473 d_strtoul="$undef"
16474 ;;
16475 esac
16476 fi
16477 ;;
16478esac
16479
b4eb6b3d
JH
16480: see if strtoull exists
16481set strtoull d_strtoull
16482eval $inlibc
16483
16484case "$d_longlong-$d_strtoull" in
16485"$define-$define")
16486 $cat <<EOM
16487Checking whether your strtoull() works okay...
16488EOM
16489 $cat >try.c <<'EOCP'
16490#include <errno.h>
16491#ifdef __hpux
16492#define strtoull __strtoull
16493#endif
16494#include <stdio.h>
16495extern unsigned long long int strtoull(char *s, char **, int);
16496static int bad = 0;
16497int check(char *s, long long eull, int een) {
16498 long long gull;
16499 errno = 0;
16500 gull = strtoull(s, 0, 10);
16501 if (!((gull == eull) && (errno == een)))
16502 bad++;
16503}
16504int main() {
d0e6d399
NC
16505 check(" 1", 1LL, 0);
16506 check(" 0", 0LL, 0);
16507 check("18446744073709551615", 18446744073709551615ULL, 0);
16508 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16509#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
16510 check("-1", 18446744073709551615ULL, 0);
16511 check("-18446744073709551614", 2LL, 0);
16512 check("-18446744073709551615", 1LL, 0);
16513 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16514 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16515#endif
b4eb6b3d
JH
16516 if (!bad)
16517 printf("ok\n");
16518}
16519EOCP
16520 set try
16521 if eval $compile; then
5440bc8e 16522 case "`$run ./try`" in
b4eb6b3d
JH
16523 ok) echo "Your strtoull() seems to be working okay." ;;
16524 *) cat <<EOM >&4
16525Your strtoull() doesn't seem to be working okay.
16526EOM
16527 d_strtoull="$undef"
16528 ;;
16529 esac
16530 fi
16531 ;;
16532esac
16533
16534: see if strtouq exists
16535set strtouq d_strtouq
16536eval $inlibc
16537
d0e6d399
NC
16538case "$d_strtouq" in
16539"$define")
16540 $cat <<EOM
16541Checking whether your strtouq() works okay...
16542EOM
16543 $cat >try.c <<'EOCP'
16544#include <errno.h>
16545#include <stdio.h>
16546extern unsigned long long int strtouq(char *s, char **, int);
16547static int bad = 0;
16548void check(char *s, unsigned long long eull, int een) {
16549 unsigned long long gull;
16550 errno = 0;
16551 gull = strtouq(s, 0, 10);
16552 if (!((gull == eull) && (errno == een)))
16553 bad++;
16554}
16555int main() {
16556 check(" 1", 1LL, 0);
16557 check(" 0", 0LL, 0);
16558 check("18446744073709551615", 18446744073709551615ULL, 0);
16559 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 16560#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
16561 check("-1", 18446744073709551615ULL, 0);
16562 check("-18446744073709551614", 2LL, 0);
16563 check("-18446744073709551615", 1LL, 0);
16564 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16565 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 16566#endif
d0e6d399
NC
16567 if (!bad)
16568 printf("ok\n");
16569 return 0;
16570}
16571EOCP
16572 set try
16573 if eval $compile; then
5440bc8e 16574 case "`$run ./try`" in
d0e6d399
NC
16575 ok) echo "Your strtouq() seems to be working okay." ;;
16576 *) cat <<EOM >&4
16577Your strtouq() doesn't seem to be working okay.
16578EOM
16579 d_strtouq="$undef"
16580 ;;
16581 esac
16582 fi
16583 ;;
16584esac
16585
b4eb6b3d
JH
16586: see if strxfrm exists
16587set strxfrm d_strxfrm
16588eval $inlibc
16589
16590: see if symlink exists
16591set symlink d_symlink
16592eval $inlibc
16593
16594: see if syscall exists
16595set syscall d_syscall
16596eval $inlibc
16597
2ef53570
JH
16598: see if prototype for syscall is available
16599echo " "
16600set d_syscallproto syscall $i_unistd unistd.h
16601eval $hasproto
16602
b4eb6b3d
JH
16603: see if sysconf exists
16604set sysconf d_sysconf
16605eval $inlibc
16606
16607: see if system exists
16608set system d_system
16609eval $inlibc
16610
16611: see if tcgetpgrp exists
16612set tcgetpgrp d_tcgetpgrp
16613eval $inlibc
16614
16615: see if tcsetpgrp exists
16616set tcsetpgrp d_tcsetpgrp
16617eval $inlibc
16618
16619: see if prototype for telldir is available
16620echo " "
16621set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16622eval $hasproto
16623
ad493445
MB
16624: see if time exists
16625echo " "
16626if test "X$d_time" = X -o X"$timetype" = X; then
16627 if set time val -f d_time; eval $csym; $val; then
16628 echo 'time() found.' >&4
16629 val="$define"
16630 rp="What is the type returned by time() on this system?"
16631 set time_t timetype long stdio.h sys/types.h
16632 eval $typedef_ask
16633 else
16634 echo 'time() not found, hope that will do.' >&4
16635 val="$undef"
16636 timetype='int';
16637 fi
16638 set d_time
16639 eval $setvar
16640fi
16641
b4eb6b3d
JH
16642: see if this is a sys/times.h system
16643set sys/times.h i_systimes
16644eval $inhdr
16645
16646: see if times exists
16647echo " "
16648if set times val -f d_times; eval $csym; $val; then
16649 echo 'times() found.' >&4
16650 d_times="$define"
16651 inc=''
16652 case "$i_systimes" in
16653 "$define") inc='sys/times.h';;
16654 esac
16655 rp="What is the type returned by times() on this system?"
16656 set clock_t clocktype long stdio.h sys/types.h $inc
16657 eval $typedef_ask
16658else
16659 echo 'times() NOT found, hope that will do.' >&4
16660 d_times="$undef"
16661 clocktype='int'
16662fi
16663
10bc17b6
JH
16664: see if tmpnam_r exists
16665set tmpnam_r d_tmpnam_r
16666eval $inlibc
16667case "$d_tmpnam_r" in
16668"$define")
31ee0cb7 16669 hdrs="$i_systypes sys/types.h define stdio.h "
c18e646a
JH
16670 case "$d_tmpnam_r_proto:$usethreads" in
16671 ":define") d_tmpnam_r_proto=define
a48ec845
JH
16672 set d_tmpnam_r_proto tmpnam_r $hdrs
16673 eval $hasproto ;;
16674 *) ;;
16675 esac
16676 case "$d_tmpnam_r_proto" in
16677 define)
10bc17b6
JH
16678 case "$tmpnam_r_proto" in
16679 ''|0) try='char* tmpnam_r(char*);'
16680 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16681 esac
16682 case "$tmpnam_r_proto" in
90e831dc 16683 ''|0) d_tmpnam_r=undef
10bc17b6 16684 tmpnam_r_proto=0
a48ec845 16685 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16686 * ) case "$tmpnam_r_proto" in
16687 REENTRANT_PROTO*) ;;
16688 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16689 esac
16690 echo "Prototype: $try" ;;
16691 esac
16692 ;;
c18e646a
JH
16693 *) case "$usethreads" in
16694 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16695 esac
90e831dc
SB
16696 d_tmpnam_r=undef
16697 tmpnam_r_proto=0
c18e646a 16698 ;;
a48ec845
JH
16699 esac
16700 ;;
10bc17b6
JH
16701*) tmpnam_r_proto=0
16702 ;;
16703esac
16704
b4eb6b3d
JH
16705: see if truncate exists
16706set truncate d_truncate
16707eval $inlibc
16708
10bc17b6
JH
16709: see if ttyname_r exists
16710set ttyname_r d_ttyname_r
16711eval $inlibc
16712case "$d_ttyname_r" in
16713"$define")
16714 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
c18e646a
JH
16715 case "$d_ttyname_r_proto:$usethreads" in
16716 ":define") d_ttyname_r_proto=define
a48ec845
JH
16717 set d_ttyname_r_proto ttyname_r $hdrs
16718 eval $hasproto ;;
16719 *) ;;
16720 esac
16721 case "$d_ttyname_r_proto" in
16722 define)
10bc17b6
JH
16723 case "$ttyname_r_proto" in
16724 ''|0) try='int ttyname_r(int, char*, size_t);'
16725 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16726 esac
16727 case "$ttyname_r_proto" in
16728 ''|0) try='int ttyname_r(int, char*, int);'
16729 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16730 esac
16731 case "$ttyname_r_proto" in
16732 ''|0) try='char* ttyname_r(int, char*, int);'
16733 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16734 esac
16735 case "$ttyname_r_proto" in
90e831dc 16736 ''|0) d_ttyname_r=undef
10bc17b6 16737 ttyname_r_proto=0
a48ec845 16738 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
10bc17b6
JH
16739 * ) case "$ttyname_r_proto" in
16740 REENTRANT_PROTO*) ;;
16741 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16742 esac
16743 echo "Prototype: $try" ;;
16744 esac
16745 ;;
c18e646a
JH
16746 *) case "$usethreads" in
16747 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16748 esac
90e831dc
SB
16749 d_ttyname_r=undef
16750 ttyname_r_proto=0
c18e646a 16751 ;;
a48ec845
JH
16752 esac
16753 ;;
10bc17b6
JH
16754*) ttyname_r_proto=0
16755 ;;
16756esac
16757
b4eb6b3d
JH
16758: see if tzname[] exists
16759echo " "
16760if set tzname val -a d_tzname; eval $csym; $val; then
16761 val="$define"
16762 echo 'tzname[] found.' >&4
16763else
16764 val="$undef"
16765 echo 'tzname[] NOT found.' >&4
16766fi
16767set d_tzname
16768eval $setvar
16769
4e0554ec
JH
16770case "$osname" in
16771next|rhapsody|darwin) multiarch="$define" ;;
16772esac
16773case "$multiarch" in
16774''|[nN]*) multiarch="$undef" ;;
16775esac
16776
24412007 16777: check for ordering of bytes in a UV
4e0554ec 16778echo " "
5440bc8e 16779case "$usecrosscompile$multiarch" in
4e0554ec
JH
16780*$define*)
16781 $cat <<EOM
16782You seem to be either cross-compiling or doing a multiarchitecture build,
16783skipping the byteorder check.
16784
16785EOM
5440bc8e 16786 byteorder='ffff'
4e0554ec
JH
16787 ;;
16788*)
16789 case "$byteorder" in
16790 '')
16791 $cat <<'EOM'
16792In the following, larger digits indicate more significance. A big-endian
16793machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16794little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16795machines may have weird orders like 3412. A Cray will report 87654321,
16796an Alpha will report 12345678. If the test program works the default is
16797probably right.
16798I'm now running the test program...
16799EOM
24412007 16800 $cat >try.c <<EOCP
4e0554ec 16801#include <stdio.h>
55954f19
JH
16802#$i_stdlib I_STDLIB
16803#ifdef I_STDLIB
16804#include <stdlib.h>
16805#endif
24412007
JH
16806#include <sys/types.h>
16807typedef $uvtype UV;
4e0554ec
JH
16808int main()
16809{
16810 int i;
16811 union {
24412007
JH
16812 UV l;
16813 char c[$uvsize];
4e0554ec
JH
16814 } u;
16815
24412007 16816 if ($uvsize > 4)
b5ded3e5 16817 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
4e0554ec 16818 else
a4c53327 16819 u.l = (UV)0x04030201;
24412007 16820 for (i = 0; i < $uvsize; i++)
4e0554ec
JH
16821 printf("%c", u.c[i]+'0');
16822 printf("\n");
16823 exit(0);
16824}
16825EOCP
16826 xxx_prompt=y
16827 set try
16828 if eval $compile && ./try > /dev/null; then
5440bc8e 16829 dflt=`$run ./try`
4e0554ec
JH
16830 case "$dflt" in
16831 [1-4][1-4][1-4][1-4]|12345678|87654321)
16832 echo "(The test program ran ok.)"
16833 echo "byteorder=$dflt"
16834 xxx_prompt=n
16835 ;;
16836 ????|????????) echo "(The test program ran ok.)" ;;
16837 *) echo "(The test program didn't run right for some reason.)" ;;
16838 esac
16839 else
16840 dflt='4321'
16841 cat <<'EOM'
16842(I can't seem to compile the test program. Guessing big-endian...)
16843EOM
16844 fi
16845 case "$xxx_prompt" in
16846 y)
24412007 16847 rp="What is the order of bytes in $uvtype?"
4e0554ec
JH
16848 . ./myread
16849 byteorder="$ans"
16850 ;;
16851 *) byteorder=$dflt
16852 ;;
16853 esac
16854 ;;
16855 esac
16856 $rm -f try.c try
16857 ;;
16858esac
16859
16860
16861$cat <<EOM
16862
16863Checking to see whether you can access character data unalignedly...
16864EOM
dc7b0a4f
JH
16865case "$d_u32align" in
16866'') $cat >try.c <<EOCP
4e0554ec 16867#include <stdio.h>
d1daaddf
JH
16868#$i_stdlib I_STDLIB
16869#ifdef I_STDLIB
16870#include <stdlib.h>
16871#endif
4e0554ec 16872#define U32 $u32type
d308175a
JH
16873#define BYTEORDER 0x$byteorder
16874#define U8 $u8type
9958dc3c
JH
16875#include <signal.h>
16876#ifdef SIGBUS
16877$signal_t bletch(s) int s; { exit(4); }
16878#endif
4e0554ec
JH
16879int main() {
16880#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
8906a23e 16881 U8 buf[8];
4e0554ec
JH
16882 U32 *up;
16883 int i;
16884
16885 if (sizeof(U32) != 4) {
16886 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16887 exit(1);
16888 }
16889
16890 fflush(stdout);
16891
9958dc3c
JH
16892#ifdef SIGBUS
16893 signal(SIGBUS, bletch);
16894#endif
16895
8906a23e
JH
16896 buf[0] = 0;
16897 buf[1] = 0;
16898 buf[2] = 0;
16899 buf[3] = 1;
16900 buf[5] = 0;
16901 buf[6] = 0;
16902 buf[7] = 0;
16903 buf[8] = 1;
16904
4e0554ec
JH
16905 for (i = 0; i < 4; i++) {
16906 up = (U32*)(buf + i);
16907 if (! ((*up == 1 << (8*i)) || /* big-endian */
16908 (*up == 1 << (8*(3-i))) /* little-endian */
16909 )
16910 )
16911 {
16912 printf("read failed (%x)\n", *up);
16913 exit(2);
16914 }
16915 }
16916
16917 /* write test */
16918 for (i = 0; i < 4; i++) {
16919 up = (U32*)(buf + i);
16920 *up = 0xBeef;
16921 if (*up != 0xBeef) {
16922 printf("write failed (%x)\n", *up);
16923 exit(3);
16924 }
16925 }
16926
16927 exit(0);
16928#else
16929 printf("1\n");
16930 exit(1);
16931#endif
16932 return 0;
16933}
16934EOCP
16935set try
16936if eval $compile_ok; then
d308175a 16937 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
5440bc8e 16938 $run ./try 2>&1 >/dev/null
4e0554ec
JH
16939 case "$?" in
16940 0) cat >&4 <<EOM
16941You can access character data pretty unalignedly.
16942EOM
16943 d_u32align="$undef"
16944 ;;
16945 *) cat >&4 <<EOM
16946It seems that you must access character data in an aligned manner.
16947EOM
16948 d_u32align="$define"
16949 ;;
16950 esac
4e0554ec
JH
16951else
16952 rp='Can you access character data at unaligned addresses?'
16953 dflt='n'
16954 . ./myread
16955 case "$ans" in
16956 [yY]*) d_u32align="$undef" ;;
16957 *) d_u32align="$define" ;;
16958 esac
16959fi
e36b5403 16960$rm -f core core.try.* try.core
dc7b0a4f
JH
16961;;
16962esac
4e0554ec
JH
16963
16964: see if ualarm exists
16965set ualarm d_ualarm
16966eval $inlibc
16967
b4eb6b3d
JH
16968: see if umask exists
16969set umask d_umask
16970eval $inlibc
16971
758a5d79
JH
16972: see if unordered exists
16973set unordered d_unordered
16974eval $inlibc
16975
4e0554ec
JH
16976: see if usleep exists
16977set usleep d_usleep
16978eval $inlibc
16979
2ef53570
JH
16980: see if prototype for usleep is available
16981echo " "
16982set d_usleepproto usleep $i_unistd unistd.h
16983eval $hasproto
16984
b4eb6b3d
JH
16985: see if ustat exists
16986set ustat d_ustat
16987eval $inlibc
16988
16989: backward compatibility for d_hvfork
16990if test X$d_hvfork != X; then
16991 d_vfork="$d_hvfork"
16992 d_hvfork=''
16993fi
16994: see if there is a vfork
16995val=''
16996set vfork val
16997eval $inlibc
16998
16999: Ok, but do we want to use it. vfork is reportedly unreliable in
17000: perl on Solaris 2.x, and probably elsewhere.
17001case "$val" in
17002$define)
17003 echo " "
17004 case "$usevfork" in
17005 false) dflt='n';;
17006 *) dflt='y';;
17007 esac
17008 cat <<'EOM'
17009
17010Perl can only use a vfork() that doesn't suffer from strict
17011restrictions on calling functions or modifying global data in
17012the child. For example, glibc-2.1 contains such a vfork()
17013that is unsuitable. If your system provides a proper fork()
17014call, chances are that you do NOT want perl to use vfork().
17015
17016EOM
17017 rp="Do you still want to use vfork()?"
17018 . ./myread
17019 case "$ans" in
17020 y|Y) ;;
17021 *)
17022 echo "Ok, we won't use vfork()."
17023 val="$undef"
17024 ;;
17025 esac
17026 ;;
17027esac
17028set d_vfork
17029eval $setvar
17030case "$d_vfork" in
17031$define) usevfork='true';;
17032*) usevfork='false';;
17033esac
17034
b4eb6b3d
JH
17035: see if closedir exists
17036set closedir d_closedir
17037eval $inlibc
17038
17039case "$d_closedir" in
17040"$define")
17041 echo " "
17042 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 17043 cat > try.c <<EOM
b4eb6b3d
JH
17044#$i_dirent I_DIRENT /**/
17045#$i_sysdir I_SYS_DIR /**/
17046#$i_sysndir I_SYS_NDIR /**/
17047#$i_systypes I_SYS_TYPES /**/
17048
17049#if defined(I_SYS_TYPES)
17050#include <sys/types.h>
17051#endif
17052#if defined(I_DIRENT)
17053#include <dirent.h>
17054#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17055#include <sys/dir.h>
17056#endif
17057#else
17058#ifdef I_SYS_NDIR
17059#include <sys/ndir.h>
17060#else
17061#ifdef I_SYS_DIR
17062#ifdef hp9000s500
17063#include <ndir.h> /* may be wrong in the future */
17064#else
17065#include <sys/dir.h>
17066#endif
17067#endif
17068#endif
17069#endif
17070int main() { return closedir(opendir(".")); }
17071EOM
5440bc8e 17072 set try
b4eb6b3d 17073 if eval $compile_ok; then
5440bc8e 17074 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
17075 echo "Yes, it does."
17076 val="$undef"
17077 else
17078 echo "No, it doesn't."
17079 val="$define"
17080 fi
17081 else
17082 echo "(I can't seem to compile the test program--assuming it doesn't)"
17083 val="$define"
17084 fi
17085 ;;
17086*)
17087 val="$undef";
17088 ;;
17089esac
17090set d_void_closedir
17091eval $setvar
5440bc8e 17092$rm -f try try.*
b4eb6b3d
JH
17093: see if there is a wait4
17094set wait4 d_wait4
17095eval $inlibc
17096
17097: see if waitpid exists
17098set waitpid d_waitpid
17099eval $inlibc
17100
17101: see if wcstombs exists
17102set wcstombs d_wcstombs
17103eval $inlibc
17104
17105: see if wctomb exists
17106set wctomb d_wctomb
17107eval $inlibc
17108
4e0554ec
JH
17109: see if writev exists
17110set writev d_writev
17111eval $inlibc
17112
b4eb6b3d
JH
17113: preserve RCS keywords in files with variable substitution, grrr
17114Date='$Date'
17115Id='$Id'
17116Log='$Log'
17117RCSfile='$RCSfile'
17118Revision='$Revision'
17119
b4eb6b3d
JH
17120: check for alignment requirements
17121echo " "
5440bc8e 17122case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
17123*$define*)
17124 $cat <<EOM
17125You seem to be either cross-compiling or doing a multiarchitecture build,
17126skipping the memory alignment check.
17127
17128EOM
17129 case "$alignbytes" in
17130 '') alignbytes=8 ;;
17131 esac
17132 ;;
17133*)
17134 case "$alignbytes" in
17135 '') echo "Checking alignment constraints..." >&4
17136 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17137 $cat >try.c <<'EOCP'
17138typedef long double NV;
17139EOCP
17140 else
17141 $cat >try.c <<'EOCP'
17142typedef double NV;
17143EOCP
17144 fi
17145 $cat >>try.c <<'EOCP'
17146#include <stdio.h>
17147struct foobar {
17148 char foo;
17149 NV bar;
17150} try_algn;
17151int main()
17152{
17153 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17154 return(0);
17155}
17156EOCP
17157 set try
17158 if eval $compile_ok; then
5440bc8e 17159 dflt=`$run ./try`
b4eb6b3d
JH
17160 else
17161 dflt='8'
17162 echo "(I can't seem to compile the test program...)"
17163 fi
17164 ;;
17165 *) dflt="$alignbytes"
17166 ;;
17167 esac
17168 rp="Doubles must be aligned on a how-many-byte boundary?"
17169 . ./myread
17170 alignbytes="$ans"
17171 $rm -f try.c try
17172 ;;
17173esac
17174
17175
17176: set the base revision
17177baserev=5.0
17178
b4eb6b3d
JH
17179: how do we catenate cpp tokens here?
17180echo " "
17181echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17182$cat >cpp_stuff.c <<'EOCP'
17183#define RCAT(a,b)a/**/b
17184#define ACAT(a,b)a ## b
17185RCAT(Rei,ser)
17186ACAT(Cir,cus)
17187EOCP
17188$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17189if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17190 echo "Oh! Smells like ANSI's been here." >&4
17191 echo "We can catify or stringify, separately or together!"
17192 cpp_stuff=42
17193elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17194 echo "Ah, yes! The good old days!" >&4
17195 echo "However, in the good old days we don't know how to stringify and"
17196 echo "catify at the same time."
17197 cpp_stuff=1
17198else
17199 $cat >&4 <<EOM
17200Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
17201to have to edit the values of CAT[2-5] in config.h...
17202EOM
17203 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17204fi
17205$rm -f cpp_stuff.*
17206
17207: see if this is a db.h system
17208set db.h i_db
17209eval $inhdr
17210
17211case "$i_db" in
17212$define)
17213 : Check db version.
17214 echo " "
17215 echo "Checking Berkeley DB version ..." >&4
17216 $cat >try.c <<EOCP
17217#$d_const HASCONST
17218#ifndef HASCONST
17219#define const
17220#endif
17221#include <sys/types.h>
17222#include <stdio.h>
55954f19
JH
17223#$i_stdlib I_STDLIB
17224#ifdef I_STDLIB
17225#include <stdlib.h>
17226#endif
b4eb6b3d 17227#include <db.h>
640374d0 17228int main(int argc, char *argv[])
b4eb6b3d
JH
17229{
17230#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17231 int Major, Minor, Patch ;
17232 unsigned long Version ;
17233 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
17234 if (argc == 2) {
17235 printf("%d %d %d %d %d %d\n",
17236 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17237 Major, Minor, Patch);
17238 exit(0);
17239 }
17240 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
17241
17242 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17243 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17244 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17245 Major, Minor, Patch) ;
17246
17247 /* check that db.h & libdb are compatible */
17248 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 17249 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
17250 exit(3);
17251 }
17252
640374d0 17253 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
17254
17255 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17256 + DB_VERSION_PATCH ;
17257
17258 /* needs to be >= 2.3.4 */
17259 if (Version < 2003004) {
17260 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 17261 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
17262 exit(2);
17263 }
17264
17265 exit(0);
17266#else
17267#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
17268 if (argc == 2) {
17269 printf("1 0 0\n");
17270 exit(0);
17271 }
17272 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
17273 exit(0); /* DB version < 2: the coast is clear. */
17274#else
17275 exit(1); /* <db.h> not Berkeley DB? */
17276#endif
17277#endif
17278}
17279EOCP
17280 set try
5440bc8e 17281 if eval $compile_ok && $run ./try; then
b4eb6b3d 17282 echo 'Looks OK.' >&4
5440bc8e 17283 set `$run ./try 1`
640374d0
JH
17284 db_version_major=$1
17285 db_version_minor=$2
17286 db_version_patch=$3
b4eb6b3d
JH
17287 else
17288 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17289 i_db=$undef
17290 case " $libs " in
17291 *"-ldb "*)
17292 : Remove db from list of libraries to use
17293 echo "Removing unusable -ldb from library list" >&4
17294 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17295 shift
17296 libs="$*"
17297 echo "libs = $libs" >&4
17298 ;;
17299 esac
17300 fi
17301 $rm -f try.*
17302 ;;
17303esac
17304
17305case "$i_db" in
17306define)
17307 : Check the return type needed for hash
17308 echo " "
17309 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17310 $cat >try.c <<EOCP
17311#$d_const HASCONST
17312#ifndef HASCONST
17313#define const
17314#endif
17315#include <sys/types.h>
17316#include <db.h>
17317
17318#ifndef DB_VERSION_MAJOR
17319u_int32_t hash_cb (ptr, size)
17320const void *ptr;
17321size_t size;
17322{
17323}
17324HASHINFO info;
17325int main()
17326{
17327 info.hash = hash_cb;
17328}
17329#endif
17330EOCP
17331 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17332 if $contains warning try.out >>/dev/null 2>&1 ; then
17333 db_hashtype='int'
17334 else
17335 db_hashtype='u_int32_t'
17336 fi
17337 else
17338 : XXX Maybe we should just give up here.
17339 db_hashtype=u_int32_t
17340 $cat try.out >&4
17341 echo "Help: I can't seem to compile the db test program." >&4
17342 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17343 fi
17344 $rm -f try.*
17345 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17346 ;;
17347*) db_hashtype=u_int32_t
17348 ;;
17349esac
17350case "$i_db" in
17351define)
17352 : Check the return type needed for prefix
17353 echo " "
17354 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17355 cat >try.c <<EOCP
17356#$d_const HASCONST
17357#ifndef HASCONST
17358#define const
17359#endif
17360#include <sys/types.h>
17361#include <db.h>
17362
17363#ifndef DB_VERSION_MAJOR
17364size_t prefix_cb (key1, key2)
17365const DBT *key1;
17366const DBT *key2;
17367{
17368}
17369BTREEINFO info;
17370int main()
17371{
17372 info.prefix = prefix_cb;
17373}
17374#endif
17375EOCP
17376 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17377 if $contains warning try.out >>/dev/null 2>&1 ; then
17378 db_prefixtype='int'
17379 else
17380 db_prefixtype='size_t'
17381 fi
17382 else
17383 db_prefixtype='size_t'
17384 : XXX Maybe we should just give up here.
17385 $cat try.out >&4
17386 echo "Help: I can't seem to compile the db test program." >&4
17387 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17388 fi
17389 $rm -f try.*
17390 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17391 ;;
17392*) db_prefixtype='size_t'
17393 ;;
17394esac
17395
b4eb6b3d
JH
17396
17397: How can we generate normalized random numbers ?
17398echo " "
17399echo "Looking for a random number function..." >&4
17400case "$randfunc" in
17401'')
17402 if set drand48 val -f; eval $csym; $val; then
17403 dflt="drand48"
17404 echo "Good, found drand48()." >&4
17405 elif set random val -f; eval $csym; $val; then
17406 dflt="random"
17407 echo "OK, found random()." >&4
17408 else
17409 dflt="rand"
17410 echo "Yick, looks like I have to use rand()." >&4
17411 fi
17412 echo " "
17413 ;;
17414*)
17415 dflt="$randfunc"
17416 ;;
17417esac
17418cont=true
17419
17420case "$ccflags" in
17421*-Dmy_rand=*|*-Dmy_srand=*)
17422 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17423 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17424 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17425 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17426 ;;
17427esac
17428
17429while $test "$cont"; do
17430 rp="Use which function to generate random numbers?"
17431 . ./myread
17432 if $test "$ans" = "$dflt"; then
17433 : null
17434 else
17435 randbits=''
17436 fi
17437 randfunc="$ans"
17438 if set $ans val -f; eval $csym; $val; then
17439 cont=''
17440 else
17441 dflt=y
17442 rp="I cannot find function $ans. Use that name anyway?"
17443 . ./myread
17444 dflt=rand
17445 case "$ans" in
17446 [yY]*) cont='';;
17447 esac
17448 fi
17449 case "$cont" in
17450 '')
17451 case "$randfunc" in
17452 drand48)
17453 drand01="drand48()"
17454 seedfunc="srand48"
17455 randbits=48
17456 randseedtype=long
17457 ;;
17458 rand|random)
17459 case "$randbits" in
17460 '')
17461echo "Checking to see how many bits your $randfunc() function produces..." >&4
17462 $cat >try.c <<EOCP
17463#$i_unistd I_UNISTD
17464#$i_stdlib I_STDLIB
17465#include <stdio.h>
17466#ifdef I_UNISTD
17467# include <unistd.h>
17468#endif
17469#ifdef I_STDLIB
17470# include <stdlib.h>
17471#endif
17472int main()
17473{
17474 register int i;
17475 register unsigned long tmp;
17476 register unsigned long max = 0L;
17477
17478 for (i = 1000; i; i--) {
17479 tmp = (unsigned long) $randfunc();
17480 if (tmp > max) max = tmp;
17481 }
17482 for (i = 0; max; i++)
17483 max /= 2;
17484 printf("%d\n",i);
17485}
17486EOCP
17487 set try
17488 if eval $compile_ok; then
17489 dflt=`try`
17490 else
17491 dflt='?'
17492 echo "(I can't seem to compile the test program...)"
17493 fi
17494 ;;
17495 *)
17496 dflt="$randbits"
17497 ;;
17498 esac
17499 rp="How many bits does your $randfunc() function produce?"
17500 . ./myread
17501 randbits="$ans"
17502 $rm -f try.c try
17503 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17504 seedfunc="s$randfunc"
17505 randseedtype=unsigned
17506 ;;
17507 *)
17508 dflt="31"
17509 rp="How many bits does your $randfunc() function produce?"
17510 . ./myread
17511 randbits="$ans"
17512 seedfunc="s$randfunc"
17513 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17514 if set $seedfunc val -f; eval $csym; $val; then
17515 echo "(Using $seedfunc() to seed random generator)"
17516 else
17517 echo "(Warning: no $seedfunc() to seed random generator)"
17518 seedfunc=rand
17519 fi
17520 randseedtype=unsigned
17521 ;;
17522 esac
17523 ;;
17524 esac
17525done
17526
17527echo " "
17528echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 17529$cat >try.c <<'EOM'
b4eb6b3d
JH
17530int main()
17531{
17532 if ('M'==0xd4) return 0;
17533 return 1;
17534}
17535EOM
17536
17537val=$undef
5440bc8e 17538set try
b4eb6b3d 17539if eval $compile_ok; then
5440bc8e 17540 if $run ./try; then
b4eb6b3d
JH
17541 echo "You seem to speak EBCDIC." >&4
17542 val="$define"
17543 else
5440bc8e 17544 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
17545 fi
17546else
17547 echo "I'm unable to compile the test program." >&4
17548 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17549fi
5440bc8e 17550$rm -f try try.*
b4eb6b3d
JH
17551set ebcdic
17552eval $setvar
17553
17554echo " "
17555$cat >&4 <<EOM
17556Checking how to flush all pending stdio output...
17557EOM
17558# I only know how to find the first 32 possibly open files on SunOS.
17559# See also hints/sunos_4_1.sh and util.c --AD
17560case "$osname" in
17561sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17562esac
17563$cat >>try.c <<EOCP
17564#include <stdio.h>
55954f19
JH
17565#$i_stdlib I_STDLIB
17566#ifdef I_STDLIB
17567#include <stdlib.h>
17568#endif
b4eb6b3d
JH
17569#$i_unistd I_UNISTD
17570#ifdef I_UNISTD
17571# include <unistd.h>
17572#endif
17573#$d_sysconf HAS_SYSCONF
17574#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17575#ifdef HAS_STDIO_STREAM_ARRAY
17576# define STDIO_STREAM_ARRAY $stdio_stream_array
17577#endif
17578int main() {
5440bc8e
JH
17579 FILE* p;
17580 unlink("try.out");
17581 p = fopen("try.out", "w");
b4eb6b3d
JH
17582#ifdef TRY_FPUTC
17583 fputc('x', p);
17584#else
17585# ifdef TRY_FPRINTF
17586 fprintf(p, "x");
17587# endif
17588#endif
17589#ifdef TRY_FFLUSH_NULL
17590 fflush(NULL);
17591#endif
17592#ifdef TRY_FFLUSH_ALL
17593 {
17594 long open_max = -1;
17595# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17596 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17597# else
17598# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17599 open_max = sysconf(_SC_OPEN_MAX);
17600# else
17601# ifdef FOPEN_MAX
17602 open_max = FOPEN_MAX;
17603# else
17604# ifdef OPEN_MAX
17605 open_max = OPEN_MAX;
17606# else
17607# ifdef _NFILE
17608 open_max = _NFILE;
17609# endif
17610# endif
17611# endif
17612# endif
17613# endif
17614# ifdef HAS_STDIO_STREAM_ARRAY
17615 if (open_max > 0) {
17616 long i;
17617 for (i = 0; i < open_max; i++)
17618 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17619 STDIO_STREAM_ARRAY[i]._file < open_max &&
17620 STDIO_STREAM_ARRAY[i]._flag)
17621 fflush(&STDIO_STREAM_ARRAY[i]);
17622 }
17623 }
17624# endif
17625#endif
17626 _exit(42);
17627}
17628EOCP
17629: first we have to find out how _not_ to flush
5440bc8e 17630$to try.c
b4eb6b3d
JH
17631if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17632 output=''
17633 set try -DTRY_FPUTC
17634 if eval $compile; then
fbe73d74 17635 $run ./try 2>/dev/null
28f5ac64 17636 code="$?"
5440bc8e 17637 $from try.out
28f5ac64 17638 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17639 output=-DTRY_FPUTC
17640 fi
17641 fi
17642 case "$output" in
17643 '')
17644 set try -DTRY_FPRINTF
b4eb6b3d 17645 if eval $compile; then
fbe73d74 17646 $run ./try 2>/dev/null
28f5ac64 17647 code="$?"
5440bc8e 17648 $from try.out
28f5ac64 17649 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17650 output=-DTRY_FPRINTF
17651 fi
17652 fi
17653 ;;
17654 esac
17655fi
17656: check for fflush NULL behaviour
17657case "$fflushNULL" in
17658'') set try -DTRY_FFLUSH_NULL $output
17659 if eval $compile; then
5440bc8e 17660 $run ./try 2>/dev/null
b4eb6b3d 17661 code="$?"
5440bc8e 17662 $from try.out
b4eb6b3d
JH
17663 if $test -s try.out -a "X$code" = X42; then
17664 fflushNULL="`$cat try.out`"
17665 else
17666 if $test "X$code" != X42; then
17667 $cat >&4 <<EOM
17668(If this test failed, don't worry, we'll try another method shortly.)
17669EOM
17670 fi
17671 fi
17672 fi
17673 $rm -f core try.core core.try.*
17674 case "$fflushNULL" in
17675 x) $cat >&4 <<EOM
17676Your fflush(NULL) works okay for output streams.
17677Let's see if it clobbers input pipes...
17678EOM
17679# As of mid-March 2000 all versions of Solaris appear to have a stdio
17680# bug that improperly flushes the input end of pipes. So we avoid the
17681# autoflush on fork/system/exec support for now. :-(
17682$cat >tryp.c <<EOCP
17683#include <stdio.h>
17684int
17685main(int argc, char **argv)
17686{
17687 char buf[1024];
17688 int i;
17689 char *bp = buf;
17690 while (1) {
17691 while ((i = getc(stdin)) != -1
17692 && (*bp++ = i) != '\n'
17693 && bp < &buf[1024])
17694 /* DO NOTHING */ ;
17695 *bp = '\0';
17696 fprintf(stdout, "%s", buf);
17697 fflush(NULL);
17698 if (i == -1)
17699 return 0;
17700 bp = buf;
17701 }
17702}
17703EOCP
17704 fflushNULL="$define"
17705 set tryp
17706 if eval $compile; then
17707 $rm -f tryp.out
5440bc8e 17708 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17709 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17710 $cat >&4 <<EOM
17711fflush(NULL) seems to behave okay with input streams.
17712EOM
17713 fflushNULL="$define"
17714 else
17715 $cat >&4 <<EOM
17716Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17717EOM
17718 fflushNULL="$undef"
17719 fi
17720 fi
17721 $rm -f core tryp.c tryp.core core.tryp.*
17722 ;;
17723 '') $cat >&4 <<EOM
17724Your fflush(NULL) isn't working (contrary to ANSI C).
17725EOM
17726 fflushNULL="$undef"
17727 ;;
17728 *) $cat >&4 <<EOM
17729Cannot figure out whether your fflush(NULL) works or not.
17730I'm assuming it doesn't (contrary to ANSI C).
17731EOM
17732 fflushNULL="$undef"
17733 ;;
17734 esac
17735 ;;
17736$define|true|[yY]*)
17737 fflushNULL="$define"
17738 ;;
17739*)
17740 fflushNULL="$undef"
17741 ;;
17742esac
17743: check explicit looping only if NULL did not work, and if the pipe
17744: bug does not show up on an explicit flush too
17745case "$fflushNULL" in
17746"$undef")
17747 $cat >tryp.c <<EOCP
17748#include <stdio.h>
17749int
17750main(int argc, char **argv)
17751{
17752 char buf[1024];
17753 int i;
17754 char *bp = buf;
17755 while (1) {
17756 while ((i = getc(stdin)) != -1
17757 && (*bp++ = i) != '\n'
17758 && bp < &buf[1024])
17759 /* DO NOTHING */ ;
17760 *bp = '\0';
17761 fprintf(stdout, "%s", buf);
17762 fflush(stdin);
17763 if (i == -1)
17764 return 0;
17765 bp = buf;
17766 }
17767}
17768EOCP
17769 set tryp
17770 if eval $compile; then
17771 $rm -f tryp.out
5440bc8e 17772 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
17773 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17774 $cat >&4 <<EOM
17775Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17776EOM
17777 : now check for fflushall behaviour
17778 case "$fflushall" in
17779 '') set try -DTRY_FFLUSH_ALL $output
17780 if eval $compile; then
17781 $cat >&4 <<EOM
17782(Now testing the other method--but note that this also may fail.)
17783EOM
5440bc8e 17784 $run ./try 2>/dev/null
28f5ac64 17785 code=$?
fbe73d74 17786 $from try.out
28f5ac64 17787 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
17788 fflushall="`$cat try.out`"
17789 fi
17790 fi
17791 $rm -f core try.core core.try.*
17792 case "$fflushall" in
17793 x) $cat >&4 <<EOM
17794Whew. Flushing explicitly all the stdio streams works.
17795EOM
17796 fflushall="$define"
17797 ;;
17798 '') $cat >&4 <<EOM
17799Sigh. Flushing explicitly all the stdio streams doesn't work.
17800EOM
17801 fflushall="$undef"
17802 ;;
17803 *) $cat >&4 <<EOM
17804Cannot figure out whether flushing stdio streams explicitly works or not.
17805I'm assuming it doesn't.
17806EOM
17807 fflushall="$undef"
17808 ;;
17809 esac
17810 ;;
17811 "$define"|true|[yY]*)
17812 fflushall="$define"
17813 ;;
17814 *)
17815 fflushall="$undef"
17816 ;;
17817 esac
17818 else
17819 $cat >&4 <<EOM
17820All is futile. Even fflush(stdin) clobbers input pipes!
17821EOM
17822 fflushall="$undef"
17823 fi
17824 else
17825 fflushall="$undef"
17826 fi
17827 $rm -f core tryp.c tryp.core core.tryp.*
17828 ;;
17829*) fflushall="$undef"
17830 ;;
17831esac
17832
17833case "$fflushNULL$fflushall" in
17834undefundef)
17835 $cat <<EOM
17836OK, I give up. I cannot figure out how to flush pending stdio output.
17837We won't be flushing handles at all before fork/exec/popen.
17838EOM
17839 ;;
17840esac
17841$rm -f try.* try$exe_ext
17842
17843: Store the full pathname to the ar program for use in the C program
17844: Respect a hint or command line value for full_ar.
17845case "$full_ar" in
17846'') full_ar=$ar ;;
17847esac
17848
17849: Store the full pathname to the sed program for use in the C program
17850full_sed=$sed
17851
17852: see what type gids are declared as in the kernel
17853echo " "
17854echo "Looking for the type for group ids returned by getgid()."
17855set gid_t gidtype xxx stdio.h sys/types.h
17856eval $typedef
17857case "$gidtype" in
17858xxx)
17859 xxx=`./findhdr sys/user.h`
17860 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17861 case $1 in
17862 unsigned) dflt="$1 $2" ;;
17863 *) dflt="$1" ;;
17864 esac
17865 ;;
17866*) dflt="$gidtype";;
17867esac
17868case "$gidtype" in
17869gid_t) echo "gid_t found." ;;
17870*) rp="What is the type for group ids returned by getgid()?"
17871 . ./myread
17872 gidtype="$ans"
17873 ;;
17874esac
17875
17876echo " "
17877case "$gidtype" in
17878*_t) zzz="$gidtype" ;;
17879*) zzz="gid" ;;
17880esac
17881echo "Checking the size of $zzz..." >&4
17882cat > try.c <<EOCP
17883#include <sys/types.h>
17884#include <stdio.h>
d1daaddf
JH
17885#$i_stdlib I_STDLIB
17886#ifdef I_STDLIB
17887#include <stdlib.h>
17888#endif
b4eb6b3d
JH
17889int main() {
17890 printf("%d\n", (int)sizeof($gidtype));
17891 exit(0);
17892}
17893EOCP
17894set try
17895if eval $compile_ok; then
5440bc8e 17896 yyy=`$run ./try`
b4eb6b3d
JH
17897 case "$yyy" in
17898 '') gidsize=4
17899 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17900 ;;
17901 *) gidsize=$yyy
17902 echo "Your $zzz is $gidsize bytes long."
17903 ;;
17904 esac
17905else
17906 gidsize=4
17907 echo "(I can't compile the test program--guessing $gidsize.)" >&4
17908fi
17909
17910
17911echo " "
17912case "$gidtype" in
17913*_t) zzz="$gidtype" ;;
17914*) zzz="gid" ;;
17915esac
17916echo "Checking the sign of $zzz..." >&4
17917cat > try.c <<EOCP
17918#include <sys/types.h>
17919#include <stdio.h>
17920int main() {
17921 $gidtype foo = -1;
17922 if (foo < 0)
17923 printf("-1\n");
17924 else
17925 printf("1\n");
17926}
17927EOCP
17928set try
17929if eval $compile; then
5440bc8e 17930 yyy=`$run ./try`
b4eb6b3d
JH
17931 case "$yyy" in
17932 '') gidsign=1
17933 echo "(I can't execute the test program--guessing unsigned.)" >&4
17934 ;;
17935 *) gidsign=$yyy
17936 case "$gidsign" in
17937 1) echo "Your $zzz is unsigned." ;;
17938 -1) echo "Your $zzz is signed." ;;
17939 esac
17940 ;;
17941 esac
17942else
17943 gidsign=1
17944 echo "(I can't compile the test program--guessing unsigned.)" >&4
17945fi
17946
17947
17948echo " "
17949
17950if $test X"$quadtype" != X; then
17951
17952echo "Checking how to print 64-bit integers..." >&4
17953
17954if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17955 $cat >try.c <<'EOCP'
17956#include <sys/types.h>
17957#include <stdio.h>
17958int main() {
17959 int q = 12345678901;
17960 printf("%ld\n", q);
17961}
17962EOCP
17963 set try
17964 if eval $compile; then
5440bc8e 17965 yyy=`$run ./try`
b4eb6b3d
JH
17966 case "$yyy" in
17967 12345678901)
17968 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17969 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17970 echo "We will use %d."
17971 ;;
17972 esac
17973 fi
17974fi
17975
17976if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17977 $cat >try.c <<'EOCP'
17978#include <sys/types.h>
17979#include <stdio.h>
17980int main() {
17981 long q = 12345678901;
17982 printf("%ld\n", q);
17983}
17984EOCP
17985 set try
17986 if eval $compile; then
5440bc8e 17987 yyy=`$run ./try`
b4eb6b3d
JH
17988 case "$yyy" in
17989 12345678901)
17990 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17991 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17992 echo "We will use %ld."
17993 ;;
17994 esac
17995 fi
17996fi
17997
17998if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17999 $cat >try.c <<'EOCP'
18000#include <sys/types.h>
18001#include <inttypes.h>
18002#include <stdio.h>
18003int main() {
18004 int64_t q = 12345678901;
18005 printf("%" PRId64 "\n", q);
18006}
18007EOCP
18008 set try
18009 if eval $compile; then
5440bc8e 18010 yyy=`$run ./try`
b4eb6b3d
JH
18011 case "$yyy" in
18012 12345678901)
18013 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18014 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18015 echo "We will use the C9X style."
18016 ;;
18017 esac
18018 fi
18019fi
18020
2ef53570
JH
18021if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18022 $cat >try.c <<EOCP
b4eb6b3d
JH
18023#include <sys/types.h>
18024#include <stdio.h>
18025int main() {
2ef53570
JH
18026 $quadtype q = 12345678901;
18027 printf("%Ld\n", q);
b4eb6b3d
JH
18028}
18029EOCP
18030 set try
18031 if eval $compile; then
5440bc8e 18032 yyy=`$run ./try`
b4eb6b3d
JH
18033 case "$yyy" in
18034 12345678901)
2ef53570
JH
18035 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18036 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18037 echo "We will use %Ld."
b4eb6b3d
JH
18038 ;;
18039 esac
18040 fi
18041fi
18042
2ef53570
JH
18043if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18044 $cat >try.c <<'EOCP'
b4eb6b3d
JH
18045#include <sys/types.h>
18046#include <stdio.h>
18047int main() {
2ef53570
JH
18048 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18049 printf("%lld\n", q);
b4eb6b3d
JH
18050}
18051EOCP
18052 set try
18053 if eval $compile; then
5440bc8e 18054 yyy=`$run ./try`
b4eb6b3d
JH
18055 case "$yyy" in
18056 12345678901)
2ef53570
JH
18057 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18058 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18059 echo "We will use the %lld style."
b4eb6b3d
JH
18060 ;;
18061 esac
18062 fi
18063fi
18064
18065if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18066 $cat >try.c <<EOCP
18067#include <sys/types.h>
18068#include <stdio.h>
18069int main() {
18070 $quadtype q = 12345678901;
18071 printf("%qd\n", q);
18072}
18073EOCP
18074 set try
18075 if eval $compile; then
5440bc8e 18076 yyy=`$run ./try`
b4eb6b3d
JH
18077 case "$yyy" in
18078 12345678901)
18079 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18080 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18081 echo "We will use %qd."
18082 ;;
18083 esac
18084 fi
18085fi
18086
18087if $test X"$sPRId64" = X; then
18088 echo "Cannot figure out how to print 64-bit integers." >&4
18089fi
18090
18091$rm -f try try.*
18092
18093fi
18094
18095case "$sPRId64" in
18096'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18097 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18098 ;;
18099*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18100 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18101 ;;
18102esac
18103
18104
18105echo " "
18106$echo "Checking the format strings to be used for Perl's internal types..." >&4
18107
18108if $test X"$ivsize" = X8; then
18109 ivdformat="$sPRId64"
18110 uvuformat="$sPRIu64"
18111 uvoformat="$sPRIo64"
18112 uvxformat="$sPRIx64"
18113 uvXUformat="$sPRIXU64"
18114else
18115 if $test X"$ivsize" = X"$longsize"; then
18116 ivdformat='"ld"'
18117 uvuformat='"lu"'
18118 uvoformat='"lo"'
18119 uvxformat='"lx"'
18120 uvXUformat='"lX"'
18121 else
18122 if $test X"$ivsize" = X"$intsize"; then
18123 ivdformat='"d"'
18124 uvuformat='"u"'
18125 uvoformat='"o"'
18126 uvxformat='"x"'
18127 uvXUformat='"X"'
18128 else
18129 : far out
18130 if $test X"$ivsize" = X"$shortsize"; then
18131 ivdformat='"hd"'
18132 uvuformat='"hu"'
18133 uvoformat='"ho"'
18134 uvxformat='"hx"'
18135 uvXUformat='"hX"'
18136 fi
18137 fi
18138 fi
18139fi
18140
18141if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18142 nveformat="$sPRIeldbl"
18143 nvfformat="$sPRIfldbl"
18144 nvgformat="$sPRIgldbl"
18145 nvEUformat="$sPRIEUldbl"
18146 nvFUformat="$sPRIFUldbl"
18147 nvGUformat="$sPRIGUldbl"
18148else
18149 nveformat='"e"'
18150 nvfformat='"f"'
18151 nvgformat='"g"'
18152 nvEUformat='"E"'
18153 nvFUformat='"F"'
18154 nvGUformat='"G"'
18155fi
18156
18157case "$ivdformat" in
3c728e00 18158'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
b4eb6b3d
JH
18159 exit 1
18160 ;;
18161esac
18162
18163
18164echo " "
18165$echo "Checking the format string to be used for gids..." >&4
18166
18167case "$gidsign" in
18168-1) if $test X"$gidsize" = X"$ivsize"; then
18169 gidformat="$ivdformat"
18170 else
18171 if $test X"$gidsize" = X"$longsize"; then
18172 gidformat='"ld"'
18173 else
18174 if $test X"$gidsize" = X"$intsize"; then
18175 gidformat='"d"'
18176 else
18177 if $test X"$gidsize" = X"$shortsize"; then
18178 gidformat='"hd"'
18179 fi
18180 fi
18181 fi
18182 fi
18183 ;;
18184*) if $test X"$gidsize" = X"$uvsize"; then
18185 gidformat="$uvuformat"
18186 else
18187 if $test X"$gidsize" = X"$longsize"; then
18188 gidformat='"lu"'
18189 else
18190 if $test X"$gidsize" = X"$intsize"; then
18191 gidformat='"u"'
18192 else
18193 if $test X"$gidsize" = X"$shortsize"; then
18194 gidformat='"hu"'
18195 fi
18196 fi
18197 fi
18198 fi
18199 ;;
18200esac
18201
18202: see if getgroups exists
18203set getgroups d_getgrps
18204eval $inlibc
18205
18206: see if setgroups exists
18207set setgroups d_setgrps
18208eval $inlibc
18209
18210
18211: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18212echo " "
18213case "$d_getgrps$d_setgrps" in
18214*define*)
18215 case "$groupstype" in
18216 '') dflt="$gidtype" ;;
18217 *) dflt="$groupstype" ;;
18218 esac
18219 $cat <<EOM
18220What type of pointer is the second argument to getgroups() and setgroups()?
18221Usually this is the same as group ids, $gidtype, but not always.
18222
18223EOM
18224 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18225 . ./myread
18226 groupstype="$ans"
18227 ;;
18228*) groupstype="$gidtype";;
18229esac
18230
18231echo " "
18232echo "Checking if your $make program sets \$(MAKE)..." >&4
18233case "$make_set_make" in
18234'')
18235 $sed 's/^X //' > testmake.mak << 'EOF'
18236Xall:
18237X @echo 'maketemp="$(MAKE)"'
18238EOF
18239 case "`$make -f testmake.mak 2>/dev/null`" in
18240 *maketemp=*) make_set_make='#' ;;
18241 *) make_set_make="MAKE=$make" ;;
18242 esac
18243 $rm -f testmake.mak
18244 ;;
18245esac
18246case "$make_set_make" in
18247'#') echo "Yup, it does.";;
18248*) echo "Nope, it doesn't.";;
18249esac
18250
18251: see what type is used for mode_t
18252rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18253set mode_t modetype int stdio.h sys/types.h
18254eval $typedef_ask
18255
2cc61e15
DD
18256: see if stdarg is available
18257echo " "
18258if $test `./findhdr stdarg.h`; then
18259 echo "<stdarg.h> found." >&4
18260 valstd="$define"
18261else
18262 echo "<stdarg.h> NOT found." >&4
18263 valstd="$undef"
18264fi
18265
18266: see if varags is available
18267echo " "
18268if $test `./findhdr varargs.h`; then
18269 echo "<varargs.h> found." >&4
18270else
18271 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18272fi
18273
18274: set up the varargs testing programs
18275$cat > varargs.c <<EOP
18276#ifdef I_STDARG
18277#include <stdarg.h>
18278#endif
18279#ifdef I_VARARGS
18280#include <varargs.h>
18281#endif
18282
18283#ifdef I_STDARG
18284int f(char *p, ...)
18285#else
18286int f(va_alist)
18287va_dcl
18288#endif
18289{
18290 va_list ap;
18291#ifndef I_STDARG
18292 char *p;
18293#endif
18294#ifdef I_STDARG
18295 va_start(ap,p);
18296#else
18297 va_start(ap);
18298 p = va_arg(ap, char *);
18299#endif
18300 va_end(ap);
18301}
18302EOP
18303$cat > varargs <<EOP
18304$startsh
18305if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18306 echo "true"
18307else
18308 echo "false"
18309fi
18310$rm -f varargs$_o
18311EOP
18312chmod +x varargs
18313
18314: now check which varargs header should be included
18315echo " "
18316i_varhdr=''
18317case "$valstd" in
18318"$define")
18319 if `./varargs I_STDARG`; then
18320 val='stdarg.h'
18321 elif `./varargs I_VARARGS`; then
18322 val='varargs.h'
18323 fi
18324 ;;
18325*)
18326 if `./varargs I_VARARGS`; then
18327 val='varargs.h'
18328 fi
18329 ;;
18330esac
18331case "$val" in
18332'')
18333echo "I could not find the definition for va_dcl... You have problems..." >&4
18334 val="$undef"; set i_stdarg; eval $setvar
18335 val="$undef"; set i_varargs; eval $setvar
18336 ;;
18337*)
18338 set i_varhdr
18339 eval $setvar
18340 case "$i_varhdr" in
18341 stdarg.h)
18342 val="$define"; set i_stdarg; eval $setvar
18343 val="$undef"; set i_varargs; eval $setvar
18344 ;;
18345 varargs.h)
18346 val="$undef"; set i_stdarg; eval $setvar
18347 val="$define"; set i_varargs; eval $setvar
18348 ;;
18349 esac
18350 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18351esac
18352$rm -f varargs*
18353
18354: see if we need va_copy
18355echo " "
18356case "$i_stdarg" in
18357"$define")
18358 $cat >try.c <<EOCP
18359#include <stdarg.h>
18360#include <stdio.h>
85c8a686
DD
18361#$i_stdlib I_STDLIB
18362#ifdef I_STDLIB
18363#include <stdlib.h>
18364#endif
18365#include <signal.h>
2cc61e15
DD
18366
18367int
18368ivfprintf(FILE *f, const char *fmt, va_list *valp)
18369{
18370 return vfprintf(f, fmt, *valp);
18371}
18372
18373int
18374myvfprintf(FILE *f, const char *fmt, va_list val)
18375{
18376 return ivfprintf(f, fmt, &val);
18377}
18378
18379int
18380myprintf(char *fmt, ...)
18381{
18382 va_list val;
18383 va_start(val, fmt);
18384 return myvfprintf(stdout, fmt, val);
18385}
18386
18387int
18388main(int ac, char **av)
18389{
85c8a686
DD
18390 signal(SIGSEGV, exit);
18391
2cc61e15
DD
18392 myprintf("%s%cs all right, then\n", "that", '\'');
18393 exit(0);
18394}
18395EOCP
18396 set try
5440bc8e
JH
18397 if eval $compile && $run ./try 2>&1 >/dev/null; then
18398 case "`$run ./try`" in
2cc61e15
DD
18399 "that's all right, then")
18400 okay=yes
18401 ;;
18402 esac
18403 fi
18404 case "$okay" in
18405 yes) echo "It seems that you don't need va_copy()." >&4
18406 need_va_copy="$undef"
18407 ;;
18408 *) echo "It seems that va_copy() or similar will be needed." >&4
18409 need_va_copy="$define"
18410 ;;
18411 esac
18412 $rm -f try.* core core.* *.core *.core.*
18413 ;;
18414*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18415 ;;
18416esac
18417
b4eb6b3d
JH
18418: see what type is used for size_t
18419rp="What is the type used for the length parameter for string functions?"
18420set size_t sizetype 'unsigned int' stdio.h sys/types.h
18421eval $typedef_ask
18422
18423: check for type of arguments to gethostbyaddr.
18424if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18425 case "$d_gethbyaddr" in
18426 $define)
18427 $cat <<EOM
18428
18429Checking to see what type of arguments are accepted by gethostbyaddr().
18430EOM
18431 hdrs="$define sys/types.h
18432 $d_socket sys/socket.h
18433 $i_niin netinet/in.h
18434 $i_netdb netdb.h
18435 $i_unistd unistd.h"
18436 : The first arg can 'char *' or 'void *'
18437 : The second arg is some of integral type
18438 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18439 for yyy in size_t long int; do
18440 case "$netdb_host_type" in
18441 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18442 if ./protochk "$try" $hdrs; then
18443 echo "Your system accepts $xxx for the first arg."
18444 echo "...and $yyy for the second arg."
18445 netdb_host_type="$xxx"
18446 netdb_hlen_type="$yyy"
18447 fi
18448 ;;
18449 esac
18450 done
18451 done
18452 : In case none of those worked, prompt the user.
18453 case "$netdb_host_type" in
18454 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18455 dflt='char *'
18456 . ./myread
18457 netdb_host_type=$ans
18458 rp='What is the type for the 2nd argument to gethostbyaddr?'
18459 dflt="$sizetype"
18460 . ./myread
18461 netdb_hlen_type=$ans
18462 ;;
18463 esac
18464 ;;
18465 *) : no gethostbyaddr, so pick harmless defaults
18466 netdb_host_type='char *'
18467 netdb_hlen_type="$sizetype"
18468 ;;
18469 esac
18470 # Remove the "const" if needed. -- but then we'll have a
18471 # prototype clash!
18472 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18473fi
18474
18475: check for type of argument to gethostbyname.
18476if test "X$netdb_name_type" = X ; then
18477 case "$d_gethbyname" in
18478 $define)
18479 $cat <<EOM
18480
18481Checking to see what type of argument is accepted by gethostbyname().
18482EOM
18483 hdrs="$define sys/types.h
18484 $d_socket sys/socket.h
18485 $i_niin netinet/in.h
18486 $i_netdb netdb.h
18487 $i_unistd unistd.h"
18488 for xxx in "const char *" "char *"; do
18489 case "$netdb_name_type" in
18490 '') try="extern struct hostent *gethostbyname($xxx);"
18491 if ./protochk "$try" $hdrs; then
18492 echo "Your system accepts $xxx."
18493 netdb_name_type="$xxx"
18494 fi
18495 ;;
18496 esac
18497 done
18498 : In case none of those worked, prompt the user.
18499 case "$netdb_name_type" in
18500 '') rp='What is the type for the 1st argument to gethostbyname?'
18501 dflt='char *'
18502 . ./myread
18503 netdb_name_type=$ans
18504 ;;
18505 esac
18506 ;;
18507 *) : no gethostbyname, so pick harmless default
18508 netdb_name_type='char *'
18509 ;;
18510 esac
18511fi
18512
18513: check for type of 1st argument to getnetbyaddr.
18514if test "X$netdb_net_type" = X ; then
18515 case "$d_getnbyaddr" in
18516 $define)
18517 $cat <<EOM
18518
18519Checking to see what type of 1st argument is accepted by getnetbyaddr().
18520EOM
18521 hdrs="$define sys/types.h
18522 $d_socket sys/socket.h
18523 $i_niin netinet/in.h
18524 $i_netdb netdb.h
18525 $i_unistd unistd.h"
18526 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18527 case "$netdb_net_type" in
18528 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18529 if ./protochk "$try" $hdrs; then
18530 echo "Your system accepts $xxx."
18531 netdb_net_type="$xxx"
18532 fi
18533 ;;
18534 esac
18535 done
18536 : In case none of those worked, prompt the user.
18537 case "$netdb_net_type" in
18538 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18539 dflt='long'
18540 . ./myread
18541 netdb_net_type=$ans
18542 ;;
18543 esac
18544 ;;
18545 *) : no getnetbyaddr, so pick harmless default
18546 netdb_net_type='long'
18547 ;;
18548 esac
18549fi
18550: locate the preferred pager for this system
d604bb53 18551fn=f/
b4eb6b3d
JH
18552case "$pager" in
18553'')
18554 dflt=''
18555 case "$pg" in
18556 /*) dflt=$pg;;
18557 [a-zA-Z]:/*) dflt=$pg;;
18558 esac
18559 case "$more" in
18560 /*) dflt=$more;;
18561 [a-zA-Z]:/*) dflt=$more;;
18562 esac
18563 case "$less" in
18564 /*) dflt=$less;;
18565 [a-zA-Z]:/*) dflt=$less;;
18566 esac
18567 case "$dflt" in
18568 '') dflt=/usr/ucb/more;;
18569 esac
18570 ;;
d604bb53
JH
18571*) dflt="$pager"
18572 : Instruct ./getfile to trust the hinted or previous pager value,
18573 : even if it does not begin with a slash. For example, on os2,
18574 : pager might be cmd /c more. See comments in UU/getfile.
18575 fn="f/($pager)"
18576 ;;
b4eb6b3d
JH
18577esac
18578echo " "
b4eb6b3d
JH
18579rp='What pager is used on your system?'
18580. ./getfile
18581pager="$ans"
18582
18583: see what type pids are declared as in the kernel
18584rp="What is the type of process ids on this system?"
18585set pid_t pidtype int stdio.h sys/types.h
18586eval $typedef_ask
18587
18588: Find earliest binary compatible site_perl subdirectory perl can use.
d953f698 18589xs_apiversion=$version # The current site_perl version.
b4eb6b3d
JH
18590: Find earliest pure perl site_perl subdirectory perl can use.
18591: The versioned directories started at 5.005.
18592pm_apiversion='5.005'
18593
b4eb6b3d
JH
18594: see if ar generates random libraries by itself
18595echo " "
18596echo "Checking how to generate random libraries on your machine..." >&4
18597echo 'int bar1() { return bar2(); }' > bar1.c
18598echo 'int bar2() { return 2; }' > bar2.c
55954f19
JH
18599$cat > foo.c <<EOP
18600#$i_stdlib I_STDLIB
18601#ifdef I_STDLIB
18602#include <stdlib.h>
18603#endif
b4eb6b3d
JH
18604int main() { printf("%d\n", bar1()); exit(0); }
18605EOP
18606$cc $ccflags -c bar1.c >/dev/null 2>&1
18607$cc $ccflags -c bar2.c >/dev/null 2>&1
18608$cc $ccflags -c foo.c >/dev/null 2>&1
18609$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 18610if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18611 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18612 echo "$ar appears to generate random libraries itself."
18613 orderlib=false
18614 ranlib=":"
18615elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 18616 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 18617 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
18618 echo "a table of contents needs to be added with '$ar ts'."
18619 orderlib=false
18620 ranlib="$ar ts"
18621else
18622 case "$ranlib" in
18623 :) ranlib='';;
18624 '')
18625 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18626 $test -f $ranlib || ranlib=''
18627 ;;
18628 esac
18629 if $test -n "$ranlib"; then
18630 echo "your system has '$ranlib'; we'll use that."
18631 orderlib=false
18632 else
18633 echo "your system doesn't seem to support random libraries"
18634 echo "so we'll use lorder and tsort to order the libraries."
18635 orderlib=true
18636 ranlib=":"
18637 fi
18638fi
18639$rm -f foo* bar*
18640
18641: check for type of arguments to select.
18642case "$selecttype" in
18643'') case "$d_select" in
18644 $define)
18645 echo " "
18646 $cat <<EOM
18647Checking to see what type of arguments are accepted by select().
18648EOM
18649 hdrs="$define sys/types.h
18650 $i_systime sys/time.h
18651 $i_sysselct sys/select.h
18652 $d_socket sys/socket.h"
18653 : The first arg can be int, unsigned, or size_t
18654 : The last arg may or may not be 'const'
18655 val=''
18656 : void pointer has been seen but using that
18657 : breaks the selectminbits test
18658 for xxx in 'fd_set *' 'int *'; do
18659 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18660 for tmo in 'struct timeval *' 'const struct timeval *'; do
18661 case "$val" in
18662 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18663 if ./protochk "$try" $hdrs; then
18664 echo "Your system accepts $xxx."
18665 val="$xxx"
18666 fi
18667 ;;
18668 esac
18669 done
18670 done
18671 done
18672 case "$val" in
18673 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18674 case "$d_fd_set" in
18675 $define) dflt="fd_set *" ;;
18676 *) dflt="int *" ;;
18677 esac
18678 . ./myread
18679 val=$ans
18680 ;;
18681 esac
18682 selecttype="$val"
18683 ;;
18684 *) : no select, so pick a harmless default
18685 selecttype='int *'
18686 ;;
18687 esac
18688 ;;
18689esac
18690
18691: check for the select 'width'
18692case "$selectminbits" in
e6e7e605
JH
18693'') safebits=`expr $ptrsize \* 8`
18694 case "$d_select" in
b4eb6b3d
JH
18695 $define)
18696 $cat <<EOM
18697
18698Checking to see on how many bits at a time your select() operates...
18699EOM
18700 $cat >try.c <<EOCP
18701#include <sys/types.h>
18702#$i_time I_TIME
18703#$i_systime I_SYS_TIME
18704#$i_systimek I_SYS_TIME_KERNEL
18705#ifdef I_TIME
18706# include <time.h>
18707#endif
18708#ifdef I_SYS_TIME
18709# ifdef I_SYS_TIME_KERNEL
18710# define KERNEL
18711# endif
18712# include <sys/time.h>
18713# ifdef I_SYS_TIME_KERNEL
18714# undef KERNEL
18715# endif
18716#endif
18717#$i_sysselct I_SYS_SELECT
18718#ifdef I_SYS_SELECT
18719#include <sys/select.h>
18720#endif
18721#$d_socket HAS_SOCKET
18722#ifdef HAS_SOCKET
18723# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18724#endif
18725#include <stdio.h>
d1daaddf
JH
18726#$i_stdlib I_STDLIB
18727#ifdef I_STDLIB
18728#include <stdlib.h>
18729#endif
b4eb6b3d
JH
18730$selecttype b;
18731#define S sizeof(*(b))
18732#define MINBITS 64
18733#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18734#define NBITS (NBYTES * 8)
18735int main() {
e6e7e605 18736 char *s = malloc(NBYTES);
b4eb6b3d
JH
18737 struct timeval t;
18738 int i;
18739 FILE* fp;
18740 int fd;
18741
e6e7e605
JH
18742 if (!s)
18743 exit(1);
b4eb6b3d
JH
18744 fclose(stdin);
18745 fp = fopen("try.c", "r");
18746 if (fp == 0)
e6e7e605 18747 exit(2);
b4eb6b3d
JH
18748 fd = fileno(fp);
18749 if (fd < 0)
e6e7e605 18750 exit(3);
b4eb6b3d
JH
18751 b = ($selecttype)s;
18752 for (i = 0; i < NBITS; i++)
18753 FD_SET(i, b);
18754 t.tv_sec = 0;
18755 t.tv_usec = 0;
18756 select(fd + 1, b, 0, 0, &t);
18757 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
e6e7e605 18758 free(s);
b4eb6b3d
JH
18759 printf("%d\n", i + 1);
18760 return 0;
18761}
18762EOCP
18763 set try
18764 if eval $compile_ok; then
5440bc8e 18765 selectminbits=`$run ./try`
b4eb6b3d
JH
18766 case "$selectminbits" in
18767 '') cat >&4 <<EOM
18768Cannot figure out on how many bits at a time your select() operates.
e6e7e605 18769I'll play safe and guess it is $safebits bits.
b4eb6b3d 18770EOM
e6e7e605
JH
18771 selectminbits=$safebits
18772 bits="$safebits bits"
b4eb6b3d
JH
18773 ;;
18774 1) bits="1 bit" ;;
18775 *) bits="$selectminbits bits" ;;
18776 esac
18777 echo "Your select() operates on $bits at a time." >&4
18778 else
18779 rp='What is the minimum number of bits your select() operates on?'
18780 case "$byteorder" in
e6e7e605
JH
18781 12345678) dflt=64 ;;
18782 1234) dflt=32 ;;
b4eb6b3d
JH
18783 *) dflt=1 ;;
18784 esac
18785 . ./myread
18786 val=$ans
18787 selectminbits="$val"
18788 fi
18789 $rm -f try.* try
18790 ;;
18791 *) : no select, so pick a harmless default
e6e7e605 18792 selectminbits=$safebits
b4eb6b3d
JH
18793 ;;
18794 esac
18795 ;;
18796esac
18797
18798: Trace out the files included by signal.h, then look for SIGxxx names.
18799: Remove SIGARRAYSIZE used by HPUX.
18800: Remove SIGSTKSIZE used by Linux.
18801: Remove SIGSTKSZ used by Posix.
18802: Remove SIGTYP void lines used by OS2.
18803: Some cpps, like os390, dont give the file name anywhere
18804if [ "X$fieldn" = X ]; then
18805 : Just make some guesses. We check them later.
18806 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18807else
18808 xxx=`echo '#include <signal.h>' |
18809 $cppstdin $cppminus $cppflags 2>/dev/null |
18810 $grep '^[ ]*#.*include' |
a938a3bb 18811 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
18812fi
18813: Check this list of files to be sure we have parsed the cpp output ok.
18814: This will also avoid potentially non-existent files, such
18815: as ../foo/bar.h
18816xxxfiles=''
18817for xx in $xxx /dev/null ; do
18818 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18819done
18820: If we have found no files, at least try signal.h
18821case "$xxxfiles" in
18822'') xxxfiles=`./findhdr signal.h` ;;
18823esac
18824xxx=`awk '
18825$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18826 print substr($2, 4, 20)
18827}
18828$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18829 print substr($3, 4, 20)
18830}' $xxxfiles`
18831: Append some common names just in case the awk scan failed.
18832xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18833xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18834xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18835xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18836xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18837
18838: generate a few handy files for later
55954f19 18839$cat > signal.c <<EOCP
b4eb6b3d
JH
18840#include <sys/types.h>
18841#include <signal.h>
55954f19
JH
18842#$i_stdlib I_STDLIB
18843#ifdef I_STDLIB
18844#include <stdlib.h>
18845#endif
b4eb6b3d
JH
18846#include <stdio.h>
18847int main() {
18848
18849/* Strange style to avoid deeply-nested #if/#else/#endif */
18850#ifndef NSIG
18851# ifdef _NSIG
18852# define NSIG (_NSIG)
18853# endif
18854#endif
18855
18856#ifndef NSIG
18857# ifdef SIGMAX
18858# define NSIG (SIGMAX+1)
18859# endif
18860#endif
18861
18862#ifndef NSIG
18863# ifdef SIG_MAX
18864# define NSIG (SIG_MAX+1)
18865# endif
18866#endif
18867
18868#ifndef NSIG
18869# ifdef MAXSIG
18870# define NSIG (MAXSIG+1)
18871# endif
18872#endif
18873
18874#ifndef NSIG
18875# ifdef MAX_SIG
18876# define NSIG (MAX_SIG+1)
18877# endif
18878#endif
18879
18880#ifndef NSIG
18881# ifdef SIGARRAYSIZE
18882# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18883# endif
18884#endif
18885
18886#ifndef NSIG
18887# ifdef _sys_nsig
18888# define NSIG (_sys_nsig) /* Solaris 2.5 */
18889# endif
18890#endif
18891
18892/* Default to some arbitrary number that's big enough to get most
18893 of the common signals.
18894*/
18895#ifndef NSIG
18896# define NSIG 50
18897#endif
18898
18899printf("NSIG %d\n", NSIG);
18900
18901#ifndef JUST_NSIG
18902
18903EOCP
18904
18905echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18906{
18907 printf "#ifdef SIG"; printf $1; printf "\n"
65197d93 18908 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
b4eb6b3d
JH
18909 printf $1; printf ");\n"
18910 printf "#endif\n"
18911}
18912END {
18913 printf "#endif /* JUST_NSIG */\n";
18914 printf "exit(0);\n}\n";
18915}
18916' >>signal.c
18917$cat >signal.awk <<'EOP'
18918BEGIN { ndups = 0 }
65197d93 18919$1 ~ /^NSIG$/ { nsig = $2 }
1ebe1ffb 18920($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
65197d93
JH
18921 if ($2 > maxsig) { maxsig = $2 }
18922 if (sig_name[$2]) {
18923 dup_name[ndups] = $1
18924 dup_num[ndups] = $2
b4eb6b3d
JH
18925 ndups++
18926 }
1ebe1ffb 18927 else {
65197d93
JH
18928 sig_name[$2] = $1
18929 sig_num[$2] = $2
b4eb6b3d
JH
18930 }
18931}
18932END {
18933 if (nsig == 0) {
18934 nsig = maxsig + 1
18935 }
18936 printf("NSIG %d\n", nsig);
18937 for (n = 1; n < nsig; n++) {
18938 if (sig_name[n]) {
18939 printf("%s %d\n", sig_name[n], sig_num[n])
18940 }
18941 else {
18942 printf("NUM%d %d\n", n, n)
18943 }
18944 }
18945 for (n = 0; n < ndups; n++) {
18946 printf("%s %d\n", dup_name[n], dup_num[n])
18947 }
18948}
18949EOP
18950$cat >signal_cmd <<EOS
18951$startsh
18952if $test -s signal.lst; then
18953 echo "Using your existing signal.lst file"
18954 exit 0
18955fi
18956xxx="$xxx"
18957EOS
18958$cat >>signal_cmd <<'EOS'
18959
18960set signal
18961if eval $compile_ok; then
1eb9ad5b 18962 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
18963else
18964 echo "(I can't seem be able to compile the whole test program)" >&4
18965 echo "(I'll try it in little pieces.)" >&4
18966 set signal -DJUST_NSIG
18967 if eval $compile_ok; then
5440bc8e 18968 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
18969 $cat signal.nsg
18970 else
18971 echo "I can't seem to figure out how many signals you have." >&4
18972 echo "Guessing 50." >&4
18973 echo 'NSIG 50' > signal.nsg
18974 fi
18975 : Now look at all the signal names, one at a time.
18976 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18977 $cat > signal.c <<EOCP
18978#include <sys/types.h>
18979#include <signal.h>
18980#include <stdio.h>
18981int main() {
18982printf("$xx %d\n", SIG${xx});
18983return 0;
18984}
18985EOCP
18986 set signal
18987 if eval $compile; then
18988 echo "SIG${xx} found."
5440bc8e 18989 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
18990 else
18991 echo "SIG${xx} NOT found."
18992 fi
18993 done
18994 if $test -s signal.ls1; then
18995 $cat signal.nsg signal.ls1 |
65197d93 18996 $sort -n | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
18997 fi
18998
18999fi
19000if $test -s signal.lst; then
19001 :
19002else
19003 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19004 echo 'kill -l' >signal
19005 set X `csh -f <signal`
19006 $rm -f signal
19007 shift
19008 case $# in
19009 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19010 esac
19011 echo $@ | $tr ' ' $trnl | \
19012 $awk '{ printf "%s %d\n", $1, ++s; }
19013 END { printf "NSIG %d\n", ++s }' >signal.lst
19014fi
19015$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19016EOS
19017chmod a+x signal_cmd
19018$eunicefix signal_cmd
19019
19020: generate list of signal names
19021echo " "
19022case "$sig_name_init" in
19023'') doinit=yes ;;
19024*) case "$sig_num_init" in
19025 ''|*,*) doinit=yes ;;
19026 esac ;;
19027esac
19028case "$doinit" in
19029yes)
19030 echo "Generating a list of signal names and numbers..." >&4
19031 . ./signal_cmd
19032 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19033 sig_name=`$awk 'BEGIN { printf "ZERO " }
19034 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19035 sig_num=`$awk 'BEGIN { printf "0 " }
19036 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19037 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19038 !/^NSIG/ { printf "\"%s\", ", $1 }
19039 END { printf "0\n" }' signal.lst`
19040 sig_num_init=`$awk 'BEGIN { printf "0, " }
19041 !/^NSIG/ { printf "%d, ", $2}
19042 END { printf "0\n"}' signal.lst`
19043 ;;
19044esac
19045echo "The following $sig_count signals are available:"
19046echo " "
19047echo $sig_name | $awk \
19048'BEGIN { linelen = 0 }
19049{
19050 for (i = 1; i <= NF; i++) {
19051 name = "SIG" $i " "
19052 linelen = linelen + length(name)
19053 if (linelen > 70) {
19054 printf "\n"
19055 linelen = length(name)
19056 }
19057 printf "%s", name
19058 }
19059 printf "\n"
19060}'
76d3c696 19061sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
19062$rm -f signal signal.c signal.awk signal.lst signal_cmd
19063
19064echo " "
19065case "$sizetype" in
19066*_t) zzz="$sizetype" ;;
19067*) zzz="filesize" ;;
19068esac
19069echo "Checking the size of $zzz..." >&4
19070cat > try.c <<EOCP
19071#include <sys/types.h>
19072#include <stdio.h>
d1daaddf
JH
19073#$i_stdlib I_STDLIB
19074#ifdef I_STDLIB
19075#include <stdlib.h>
19076#endif
b4eb6b3d
JH
19077int main() {
19078 printf("%d\n", (int)sizeof($sizetype));
19079 exit(0);
19080}
19081EOCP
19082set try
19083if eval $compile_ok; then
5440bc8e 19084 yyy=`$run ./try`
b4eb6b3d
JH
19085 case "$yyy" in
19086 '') sizesize=4
19087 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19088 ;;
19089 *) sizesize=$yyy
19090 echo "Your $zzz size is $sizesize bytes."
19091 ;;
19092 esac
19093else
19094 sizesize=4
19095 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19096fi
19097
19098
19099: check for socklen_t
19100echo " "
19101echo "Checking to see if you have socklen_t..." >&4
19102$cat >try.c <<EOCP
19103#include <sys/types.h>
19104#$d_socket HAS_SOCKET
19105#ifdef HAS_SOCKET
19106#include <sys/socket.h>
19107#endif
19108int main() { socklen_t x = 16; }
19109EOCP
19110set try
19111if eval $compile; then
19112 val="$define"
19113 echo "You have socklen_t."
19114else
19115 val="$undef"
19116 echo "You do not have socklen_t."
19117 case "$sizetype" in
19118 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19119 esac
19120fi
19121$rm -f try try.*
19122set d_socklen_t
19123eval $setvar
19124
a7710f8d
JH
19125: see if this is a socks.h system
19126set socks.h i_socks
19127eval $inhdr
19128
b4eb6b3d
JH
19129: check for type of the size argument to socket calls
19130case "$d_socket" in
19131"$define")
19132 $cat <<EOM
19133
19134Checking to see what type is the last argument of accept().
19135EOM
b4eb6b3d
JH
19136 yyy=''
19137 case "$d_socklen_t" in
19138 "$define") yyy="$yyy socklen_t"
19139 esac
19140 yyy="$yyy $sizetype int long unsigned"
19141 for xxx in $yyy; do
19142 case "$socksizetype" in
19143 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
19144 case "$usesocks" in
19145 "$define")
19146 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19147 echo "Your system accepts '$xxx *' for the last argument of accept()."
19148 socksizetype="$xxx"
19149 fi
19150 ;;
19151 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19152 echo "Your system accepts '$xxx *' for the last argument of accept()."
19153 socksizetype="$xxx"
19154 fi
19155 ;;
19156 esac
b4eb6b3d
JH
19157 ;;
19158 esac
19159 done
19160: In case none of those worked, prompt the user.
19161 case "$socksizetype" in
19162 '') rp='What is the type for socket address structure sizes?'
19163 dflt='int'
19164 . ./myread
19165 socksizetype=$ans
19166 ;;
19167 esac
19168 ;;
19169*) : no sockets, so pick relatively harmless default
19170 socksizetype='int'
19171 ;;
19172esac
19173
19174: see what type is used for signed size_t
19175set ssize_t ssizetype int stdio.h sys/types.h
19176eval $typedef
19177dflt="$ssizetype"
5440bc8e 19178$cat > try.c <<EOM
b4eb6b3d 19179#include <stdio.h>
d1daaddf
JH
19180#$i_stdlib I_STDLIB
19181#ifdef I_STDLIB
19182#include <stdlib.h>
19183#endif
b4eb6b3d
JH
19184#include <sys/types.h>
19185#define Size_t $sizetype
19186#define SSize_t $dflt
19187int main()
19188{
19189 if (sizeof(Size_t) == sizeof(SSize_t))
19190 printf("$dflt\n");
19191 else if (sizeof(Size_t) == sizeof(int))
19192 printf("int\n");
19193 else
19194 printf("long\n");
19195 exit(0);
19196}
19197EOM
19198echo " "
5440bc8e
JH
19199set try
19200if eval $compile_ok && $run ./try > /dev/null; then
19201 ssizetype=`$run ./try`
b4eb6b3d
JH
19202 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19203else
19204 $cat >&4 <<EOM
19205Help! I can't compile and run the ssize_t test program: please enlighten me!
19206(This is probably a misconfiguration in your system or libraries, and
19207you really ought to fix it. Still, I'll try anyway.)
19208
19209I need a type that is the same size as $sizetype, but is guaranteed to
19210be signed. Common values are ssize_t, int and long.
19211
19212EOM
19213 rp="What signed type is the same size as $sizetype?"
19214 . ./myread
19215 ssizetype="$ans"
19216fi
5440bc8e 19217$rm -f try try.*
b4eb6b3d
JH
19218
19219: see what type of char stdio uses.
19220echo " "
aa517f50
JH
19221echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19222if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
19223 echo "Your stdio uses unsigned chars." >&4
19224 stdchar="unsigned char"
19225else
aa517f50
JH
19226 echo "Your stdio uses signed chars." >&4
19227 stdchar="char"
b4eb6b3d 19228fi
aa517f50
JH
19229$rm -f stdioh
19230
19231
b4eb6b3d 19232
b4eb6b3d
JH
19233: see what type uids are declared as in the kernel
19234echo " "
19235echo "Looking for the type for user ids returned by getuid()."
19236set uid_t uidtype xxx stdio.h sys/types.h
19237eval $typedef
19238case "$uidtype" in
19239xxx)
19240 xxx=`./findhdr sys/user.h`
19241 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19242 case $1 in
19243 unsigned) dflt="$1 $2" ;;
19244 *) dflt="$1" ;;
19245 esac
19246 ;;
19247*) dflt="$uidtype";;
19248esac
19249case "$uidtype" in
19250uid_t) echo "uid_t found." ;;
19251*) rp="What is the type for user ids returned by getuid()?"
19252 . ./myread
19253 uidtype="$ans"
19254 ;;
19255esac
19256
19257echo " "
19258case "$uidtype" in
19259*_t) zzz="$uidtype" ;;
19260*) zzz="uid" ;;
19261esac
19262echo "Checking the size of $zzz..." >&4
19263cat > try.c <<EOCP
19264#include <sys/types.h>
19265#include <stdio.h>
d1daaddf
JH
19266#$i_stdlib I_STDLIB
19267#ifdef I_STDLIB
19268#include <stdlib.h>
19269#endif
b4eb6b3d
JH
19270int main() {
19271 printf("%d\n", (int)sizeof($uidtype));
19272 exit(0);
19273}
19274EOCP
19275set try
19276if eval $compile_ok; then
5440bc8e 19277 yyy=`$run ./try`
b4eb6b3d
JH
19278 case "$yyy" in
19279 '') uidsize=4
19280 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19281 ;;
19282 *) uidsize=$yyy
19283 echo "Your $zzz is $uidsize bytes long."
19284 ;;
19285 esac
19286else
19287 uidsize=4
19288 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19289fi
19290
19291echo " "
19292case "$uidtype" in
19293*_t) zzz="$uidtype" ;;
19294*) zzz="uid" ;;
19295esac
19296echo "Checking the sign of $zzz..." >&4
19297cat > try.c <<EOCP
19298#include <sys/types.h>
19299#include <stdio.h>
19300int main() {
19301 $uidtype foo = -1;
19302 if (foo < 0)
19303 printf("-1\n");
19304 else
19305 printf("1\n");
19306}
19307EOCP
19308set try
19309if eval $compile; then
5440bc8e 19310 yyy=`$run ./try`
b4eb6b3d
JH
19311 case "$yyy" in
19312 '') uidsign=1
19313 echo "(I can't execute the test program--guessing unsigned.)" >&4
19314 ;;
19315 *) uidsign=$yyy
19316 case "$uidsign" in
19317 1) echo "Your $zzz is unsigned." ;;
19318 -1) echo "Your $zzz is signed." ;;
19319 esac
19320 ;;
19321 esac
19322else
19323 uidsign=1
19324 echo "(I can't compile the test program--guessing unsigned.)" >&4
19325fi
19326
19327
19328
19329echo " "
19330$echo "Checking the format string to be used for uids..." >&4
19331
19332case "$uidsign" in
19333-1) if $test X"$uidsize" = X"$ivsize"; then
19334 uidformat="$ivdformat"
19335 else
19336 if $test X"$uidsize" = X"$longsize"; then
19337 uidformat='"ld"'
19338 else
19339 if $test X"$uidsize" = X"$intsize"; then
19340 uidformat='"d"'
19341 else
19342 if $test X"$uidsize" = X"$shortsize"; then
19343 uidformat='"hd"'
19344 fi
19345 fi
19346 fi
19347 fi
19348 ;;
19349*) if $test X"$uidsize" = X"$uvsize"; then
19350 uidformat="$uvuformat"
19351 else
19352 if $test X"$uidsize" = X"$longsize"; then
19353 uidformat='"lu"'
19354 else
19355 if $test X"$uidsize" = X"$intsize"; then
19356 uidformat='"u"'
19357 else
19358 if $test X"$uidsize" = X"$shortsize"; then
19359 uidformat='"hu"'
19360 fi
19361 fi
19362 fi
19363 fi
19364 ;;
19365esac
19366
3659ebf1
JH
19367: determine compiler compiler
19368case "$yacc" in
19369'')
19370 dflt=yacc;;
19371*)
19372 dflt="$yacc";;
19373esac
19374echo " "
19375comp='yacc'
3c728e00 19376if $test -f "$byacc$_exe"; then
3659ebf1
JH
19377 dflt="$byacc"
19378 comp="byacc or $comp"
19379fi
3c728e00 19380if $test -f "$bison$_exe"; then
3659ebf1
JH
19381 comp="$comp or bison -y"
19382fi
19383rp="Which compiler compiler ($comp) shall I use?"
19384. ./myread
19385yacc="$ans"
19386case "$yacc" in
19387*bis*)
19388 case "$yacc" in
19389 *-y*) ;;
19390 *)
19391 yacc="$yacc -y"
19392 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19393 ;;
19394 esac
19395 ;;
19396esac
19397
758a5d79
JH
19398: see if this is a fp.h system
19399set fp.h i_fp
19400eval $inhdr
19401
19402: see if this is a fp_class.h system
19403set fp_class.h i_fp_class
19404eval $inhdr
19405
b4eb6b3d 19406: see if this is a ieeefp.h system
b5b9f165
JH
19407case "$i_ieeefp" in
19408'' ) set ieeefp.h i_ieeefp
19409 eval $inhdr
19410 ;;
19411esac
b4eb6b3d
JH
19412
19413: see if this is a libutil.h system
19414set libutil.h i_libutil
19415eval $inhdr
19416
b4eb6b3d
JH
19417: see if mach cthreads are available
19418if test "X$usethreads" = "X$define"; then
19419 set mach/cthreads.h i_machcthr
19420 eval $inhdr
19421else
19422 i_machcthr="$undef"
19423fi
19424
19425
19426
19427: see if this is a math.h system
19428set math.h i_math
19429eval $inhdr
19430
19431: see if this is a mntent.h system
19432set mntent.h i_mntent
19433eval $inhdr
19434
19435: see if ndbm.h is available
19436set ndbm.h t_ndbm
19437eval $inhdr
1c6861ad
JS
19438
19439case "$t_ndbm" in
19440$undef)
19441 # Some Linux distributions such as RedHat 7.1 put the
19442 # ndbm.h header in /usr/include/gdbm/ndbm.h.
19443 if $test -f /usr/include/gdbm/ndbm.h; then
d11b91bf 19444 echo '<gdbm/ndbm.h> found.'
1c6861ad
JS
19445 ccflags="$ccflags -I/usr/include/gdbm"
19446 cppflags="$cppflags -I/usr/include/gdbm"
19447 t_ndbm=$define
19448 fi
19449 ;;
19450esac
19451
b4eb6b3d
JH
19452case "$t_ndbm" in
19453$define)
19454 : see if dbm_open exists
19455 set dbm_open d_dbm_open
19456 eval $inlibc
19457 case "$d_dbm_open" in
19458 $undef)
19459 t_ndbm="$undef"
19460 echo "We won't be including <ndbm.h>"
19461 ;;
19462 esac
19463 ;;
19464esac
19465val="$t_ndbm"
19466set i_ndbm
19467eval $setvar
19468
19469: see if net/errno.h is available
19470val=''
19471set net/errno.h val
19472eval $inhdr
19473
19474: Unfortunately, it causes problems on some systems. Arrgh.
19475case "$val" in
19476$define)
19477 cat > try.c <<'EOM'
19478#include <stdio.h>
19479#include <errno.h>
19480#include <net/errno.h>
19481int func()
19482{
19483 return ENOTSOCK;
19484}
19485EOM
19486 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19487 echo "We'll be including <net/errno.h>." >&4
19488 else
19489 echo "We won't be including <net/errno.h>." >&4
19490 val="$undef"
19491 fi
19492 $rm -f try.* try
19493 ;;
19494esac
19495set i_neterrno
19496eval $setvar
19497
19498: see if netinet/tcp.h is available
19499set netinet/tcp.h i_netinettcp
19500eval $inhdr
19501
19502: see if this is a poll.h system
19503set poll.h i_poll
19504eval $inhdr
19505
19506: see if this is a prot.h system
19507set prot.h i_prot
19508eval $inhdr
19509
19510echo " "
19511$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19512$cat <<'EOSH' > Cppsym.know
19513a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19514AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
19515alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19516ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19517BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
19518BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19519bull c cadmus clipper CMU COFF COMPILER_VERSION
19520concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19521CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
19522Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19523FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19524GLIBC GLIBC_MINOR
19525GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
19526H3050R H3050RX hbullx20 hcx host_mips
19527hp200 hp300 hp700 HP700 hp800 hp9000
19528hp9000s200 hp9000s300 hp9000s400 hp9000s500
19529hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19530i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 19531IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
19532INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19533LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19534LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19535Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19536LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19537M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19538M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19539M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19540MATH_HAS_NO_SIDE_EFFECTS
19541mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19542mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19543mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19544MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19545mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19546NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 19547news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
19548ns32016 ns32332 ns32k nsc32000
19549OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19550pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19551pc532 pdp11 PGC PIC plexus PORTAR posix
19552POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19553POSIX_C_SOURCE POSIX_SOURCE POWER
19554PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 19555riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
19556SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19557sony sony_news sonyrisc sparc sparclite spectrum
19558stardent stdc STDC_EXT stratos sun sun3 sun386
19559Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19560SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19561SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19562sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 19563TM3200 TM5400 TM5600
b4eb6b3d
JH
19564tower tower32 tower32_200 tower32_600 tower32_700
19565tower32_800 tower32_850 tss
19566u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19567ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
19568unix UNIX95 UNIX99 unixpc unos
19569USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19570USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19571USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19572USGr4 USGr4_2
b4eb6b3d
JH
19573Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19574XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19575XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19576z8000
19577EOSH
19578# Maybe put other stuff here too.
19579cat <<EOSH >>Cppsym.know
19580$osname
19581EOSH
19582./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19583./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19584$cat Cppsym.know > Cppsym.c
381aa1ff 19585$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
19586$rm -f Cppsym.a Cppsym.b Cppsym.c
19587cat <<EOSH > Cppsym
19588$startsh
19589if $test \$# -gt 0; then
19590 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19591 if $test -s Cppsym.got; then
19592 $rm -f Cppsym.got
19593 exit 0
19594 fi
19595 $rm -f Cppsym.got
19596 exit 1
19597else
19598 $tr " " "$trnl" | ./Cppsym.try
19599 exit 0
19600fi
19601EOSH
19602chmod +x Cppsym
19603$eunicefix Cppsym
19604cat <<EOSH > Cppsym.try
19605$startsh
19606cat <<'EOCP' > try.c
19607#include <stdio.h>
19608int main() {
19609EOCP
19610$awk \\
19611EOSH
19612cat <<'EOSH' >> Cppsym.try
19613'length($1) > 0 {
2ef53570
JH
19614 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
19615 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
19616 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
19617 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 19618}' >> try.c
2ef53570 19619echo 'return 0;}' >> try.c
b4eb6b3d
JH
19620EOSH
19621cat <<EOSH >> Cppsym.try
19622ccflags="$ccflags"
19623case "$osname-$gccversion" in
19624irix-) ccflags="\$ccflags -woff 1178" ;;
19625os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19626esac
5440bc8e 19627$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
19628EOSH
19629chmod +x Cppsym.try
19630$eunicefix Cppsym.try
19631./Cppsym < Cppsym.know > Cppsym.true
19632: now check the C compiler for additional symbols
19633postprocess_cc_v=''
19634case "$osname" in
19635aix) postprocess_cc_v="|$tr , ' '" ;;
19636esac
19637$cat >ccsym <<EOS
19638$startsh
19639$cat >tmp.c <<EOF
19640extern int foo;
19641EOF
19642for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19643do
19644 case "\$i" in
19645 -D*) echo "\$i" | $sed 's/^-D//';;
b2a76591 19646 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
b4eb6b3d
JH
19647 esac
19648done
19649$rm -f try.c
19650EOS
19651postprocess_cc_v=''
19652chmod +x ccsym
19653$eunicefix ccsym
19654./ccsym > ccsym1.raw
19655if $test -s ccsym1.raw; then
19656 $sort ccsym1.raw | $uniq >ccsym.raw
19657else
19658 mv ccsym1.raw ccsym.raw
19659fi
19660
19661$awk '/\=/ { print $0; next }
19662 { print $0"=1" }' ccsym.raw >ccsym.list
19663$awk '/\=/ { print $0; next }
19664 { print $0"=1" }' Cppsym.true >ccsym.true
19665$comm -13 ccsym.true ccsym.list >ccsym.own
19666$comm -12 ccsym.true ccsym.list >ccsym.com
19667$comm -23 ccsym.true ccsym.list >ccsym.cpp
19668also=''
19669if $test -z ccsym.raw; then
19670 echo "Your C compiler doesn't seem to define any symbols!" >&4
19671 echo " "
19672 echo "However, your C preprocessor defines the following symbols:"
19673 $cat Cppsym.true
19674 ccsymbols=''
19675 cppsymbols=`$cat Cppsym.true`
19676 cppsymbols=`echo $cppsymbols`
19677 cppccsymbols="$cppsymbols"
19678else
19679 if $test -s ccsym.com; then
19680 echo "Your C compiler and pre-processor define these symbols:"
19681 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19682 also='also '
19683 symbols='ones'
19684 cppccsymbols=`$cat ccsym.com`
19685 cppccsymbols=`echo $cppccsymbols`
19686 $test "$silent" || sleep 1
19687 fi
19688 if $test -s ccsym.cpp; then
19689 $test "$also" && echo " "
19690 echo "Your C pre-processor ${also}defines the following symbols:"
19691 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19692 also='further '
19693 cppsymbols=`$cat ccsym.cpp`
19694 cppsymbols=`echo $cppsymbols`
19695 $test "$silent" || sleep 1
19696 fi
19697 if $test -s ccsym.own; then
19698 $test "$also" && echo " "
19699 echo "Your C compiler ${also}defines the following cpp symbols:"
19700 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19701 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19702 ccsymbols=`$cat ccsym.own`
19703 ccsymbols=`echo $ccsymbols`
19704 $test "$silent" || sleep 1
19705 fi
19706fi
b4eb6b3d
JH
19707
19708: see if this is a termio system
19709val="$undef"
19710val2="$undef"
19711val3="$undef"
19712if $test `./findhdr termios.h`; then
19713 set tcsetattr i_termios
19714 eval $inlibc
19715 val3="$i_termios"
19716fi
19717echo " "
19718case "$val3" in
19719"$define") echo "You have POSIX termios.h... good!" >&4;;
19720*) if ./Cppsym pyr; then
19721 case "`/bin/universe`" in
19722 ucb) if $test `./findhdr sgtty.h`; then
19723 val2="$define"
19724 echo "<sgtty.h> found." >&4
19725 else
19726 echo "System is pyramid with BSD universe."
19727 echo "<sgtty.h> not found--you could have problems." >&4
19728 fi;;
19729 *) if $test `./findhdr termio.h`; then
19730 val="$define"
19731 echo "<termio.h> found." >&4
19732 else
19733 echo "System is pyramid with USG universe."
19734 echo "<termio.h> not found--you could have problems." >&4
19735 fi;;
19736 esac
19737 elif ./usg; then
19738 if $test `./findhdr termio.h`; then
19739 echo "<termio.h> found." >&4
19740 val="$define"
19741 elif $test `./findhdr sgtty.h`; then
19742 echo "<sgtty.h> found." >&4
19743 val2="$define"
19744 else
19745echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19746 fi
19747 else
19748 if $test `./findhdr sgtty.h`; then
19749 echo "<sgtty.h> found." >&4
19750 val2="$define"
19751 elif $test `./findhdr termio.h`; then
19752 echo "<termio.h> found." >&4
19753 val="$define"
19754 else
19755echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19756 fi
19757 fi;;
19758esac
19759set i_termio; eval $setvar
19760val=$val2; set i_sgtty; eval $setvar
19761val=$val3; set i_termios; eval $setvar
19762
b4eb6b3d
JH
19763: see if stddef is available
19764set stddef.h i_stddef
19765eval $inhdr
923fc586 19766
b4eb6b3d
JH
19767: see if this is a sunmath.h system
19768set sunmath.h i_sunmath
19769eval $inhdr
5f80c64f 19770
b4eb6b3d
JH
19771: see if sys/access.h is available
19772set sys/access.h i_sysaccess
19773eval $inhdr
19774
19775: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19776set sys/filio.h i_sysfilio
19777eval $inhdr
19778echo " "
19779if $test `./findhdr sys/ioctl.h`; then
19780 val="$define"
19781 echo '<sys/ioctl.h> found.' >&4
19782else
19783 val="$undef"
19784 if $test $i_sysfilio = "$define"; then
19785 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 19786 else
b4eb6b3d
JH
19787 $test $i_sgtty = "$define" && xxx="sgtty.h"
19788 $test $i_termio = "$define" && xxx="termio.h"
19789 $test $i_termios = "$define" && xxx="termios.h"
19790echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19791 fi
19792fi
19793set i_sysioctl
19794eval $setvar
19795
49a78c82
JH
19796: see if socket ioctl defs are in sys/sockio.h
19797echo " "
19798xxx=`./findhdr sys/sockio.h`
19799if $test "$xxx"; then
19800 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19801 val="$define"
19802 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19803 else
19804 val="$undef"
19805 echo "No socket ioctls found in <sys/sockio.h>." >&4
19806 fi
19807else
19808 val="$undef"
19809 $cat <<EOM
19810<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19811EOM
19812fi
19813set i_syssockio
19814eval $setvar
19815
b4eb6b3d
JH
19816
19817: see if this is a syslog.h system
19818set syslog.h i_syslog
19819eval $inhdr
19820
19821
19822: see if this is a sys/mode.h system
19823set sys/mode.h i_sysmode
19824eval $inhdr
19825
19826: see if sys/resource.h has to be included
19827set sys/resource.h i_sysresrc
19828eval $inhdr
19829
19830: see if sys/security.h is available
19831set sys/security.h i_syssecrt
19832eval $inhdr
19833
19834: see if this is a sys/statvfs.h system
19835set sys/statvfs.h i_sysstatvfs
19836eval $inhdr
19837
b4eb6b3d
JH
19838: see if this is a sys/un.h system
19839set sys/un.h i_sysun
19840eval $inhdr
19841
19842
19843: see if this is a sys/utsname.h system
19844set sys/utsname.h i_sysutsname
19845eval $inhdr
19846
19847: see if this is a syswait system
19848set sys/wait.h i_syswait
19849eval $inhdr
19850
19851: see if this is a ustat.h system
19852set ustat.h i_ustat
19853eval $inhdr
19854
19855: see if this is an utime system
19856set utime.h i_utime
19857eval $inhdr
19858
19859: see if this is a values.h system
19860set values.h i_values
19861eval $inhdr
19862
19863: see if this is a vfork system
19864case "$d_vfork" in
19865"$define")
19866 set vfork.h i_vfork
19867 eval $inhdr
19868 ;;
19869*)
19870 i_vfork="$undef"
19871 ;;
19872esac
19873
19874: see if gdbm.h is available
19875set gdbm.h t_gdbm
19876eval $inhdr
19877case "$t_gdbm" in
19878$define)
19879 : see if gdbm_open exists
19880 set gdbm_open d_gdbm_open
19881 eval $inlibc
19882 case "$d_gdbm_open" in
19883 $undef)
19884 t_gdbm="$undef"
19885 echo "We won't be including <gdbm.h>"
5f80c64f 19886 ;;
b4eb6b3d
JH
19887 esac
19888 ;;
19889esac
19890val="$t_gdbm"
19891set i_gdbm
19892eval $setvar
19893
19894echo " "
19895echo "Looking for extensions..." >&4
19896: If we are using the old config.sh, known_extensions may contain
19897: old or inaccurate or duplicate values.
19898known_extensions=''
19899nonxs_extensions=''
19900: We do not use find because it might not be available.
19901: We do not just use MANIFEST because the user may have dropped
19902: some additional extensions into the source tree and expect them
19903: to be built.
19904
19905: Function to recursively find available extensions, ignoring DynaLoader
19906: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19907find_extensions='
19908 for xxx in *; do
19909 case "$xxx" in
19910 DynaLoader|dynaload) ;;
19911 *)
19912 if $test -f $xxx/$xxx.xs; then
19913 known_extensions="$known_extensions $1$xxx";
19914 elif $test -f $xxx/Makefile.PL; then
19915 nonxs_extensions="$nonxs_extensions $1$xxx";
19916 else
19917 if $test -d $xxx -a $# -lt 10; then
19918 set $1$xxx/ $*;
6904989c 19919 cd "$xxx";
b4eb6b3d
JH
19920 eval $find_extensions;
19921 cd ..;
19922 shift;
19923 fi;
19924 fi
19925 ;;
19926 esac;
19927 done'
19928tdir=`pwd`
6904989c 19929cd "$rsrc/ext"
b4eb6b3d
JH
19930set X
19931shift
19932eval $find_extensions
4e1a6d26
AD
19933# Special case: Add in threads/shared since it is not picked up by the
19934# recursive find above (and adding in general recursive finding breaks
19935# SDBM_File/sdbm). A.D. 10/25/2001.
998b396c 19936known_extensions="$known_extensions threads/shared"
b4eb6b3d
JH
19937set X $nonxs_extensions
19938shift
19939nonxs_extensions="$*"
19940set X $known_extensions
19941shift
19942known_extensions="$*"
6904989c 19943cd "$tdir"
b4eb6b3d
JH
19944
19945: Now see which are supported on this system.
19946avail_ext=''
19947for xxx in $known_extensions ; do
19948 case "$xxx" in
19949 DB_File|db_file)
19950 case "$i_db" in
19951 $define) avail_ext="$avail_ext $xxx" ;;
19952 esac
19953 ;;
19954 GDBM_File|gdbm_fil)
19955 case "$i_gdbm" in
19956 $define) avail_ext="$avail_ext $xxx" ;;
19957 esac
19958 ;;
1d59c593 19959 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
19960 case "$i_langinfo$d_nl_langinfo" in
19961 $define$define) avail_ext="$avail_ext $xxx" ;;
19962 esac
19963 ;;
b4eb6b3d
JH
19964 NDBM_File|ndbm_fil)
19965 case "$i_ndbm" in
19966 $define)
19967 case "$osname-$use64bitint" in
0be9fa5d 19968 hpux-define)
b4eb6b3d
JH
19969 case "$libs" in
19970 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19971 esac
19972 ;;
19973 *) avail_ext="$avail_ext $xxx" ;;
19974 esac
19975 ;;
19976 esac
19977 ;;
19978 ODBM_File|odbm_fil)
19979 case "${i_dbm}${i_rpcsvcdbm}" in
19980 *"${define}"*)
19981 case "$osname-$use64bitint" in
0be9fa5d 19982 hpux-define)
b4eb6b3d
JH
19983 case "$libs" in
19984 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19985 esac
19986 ;;
19987 *) avail_ext="$avail_ext $xxx" ;;
19988 esac
19989 ;;
19990 esac
19991 ;;
19992 POSIX|posix)
19993 case "$useposix" in
19994 true|define|y) avail_ext="$avail_ext $xxx" ;;
19995 esac
19996 ;;
19997 Opcode|opcode)
19998 case "$useopcode" in
19999 true|define|y) avail_ext="$avail_ext $xxx" ;;
20000 esac
20001 ;;
20002 Socket|socket)
20003 case "$d_socket" in
4a9f028c
JH
20004 true|$define|y)
20005 case "$osname" in
20006 beos) ;; # not unless BONE
20007 *) avail_ext="$avail_ext $xxx" ;;
20008 esac
20009 ;;
b4eb6b3d
JH
20010 esac
20011 ;;
20012 Sys/Syslog|sys/syslog)
20013 : XXX syslog requires socket
20014 case "$d_socket" in
20015 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20016 esac
20017 ;;
20018 Thread|thread)
b00ec89b
AB
20019 case "$usethreads" in
20020 true|$define|y)
20021 case "$useithreads" in
20022 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20023 esac
b4eb6b3d
JH
20024 esac
20025 ;;
f9b6ed1c
AD
20026 XS/APItest|xs/apitest)
20027 # This is just for testing. Skip it unless we have dynamic loading.
20028
20029 case "$usedl" in
20030 $define) avail_ext="$avail_ext $xxx" ;;
20031 esac
20032 ;;
20033 XS/Typemap|xs/typemap)
20034 # This is just for testing. Skip it unless we have dynamic loading.
20035 case "$usedl" in
20036 $define) avail_ext="$avail_ext $xxx" ;;
20037 esac
20038 ;;
7deadc5f 20039 threads|threads/shared)
73e09c8f
JH
20040 # threads and threads::shared are special cases.
20041 # To stop people from asking "Perl 5.8.0 was supposed
20042 # to have this new fancy threads implementation but my
20043 # perl doesn't have it" and from people trying to
20044 # (re)install the threads module using CPAN.pm and
20045 # CPAN.pm then offering to reinstall Perl 5.8.0,
20046 # the threads.pm and threads/shared.pm will always be
20047 # there, croaking informatively ("you need to rebuild
20048 # all of Perl with threads, sorry") when threads haven't
20049 # been compiled in.
20050 # --jhi
20051 avail_ext="$avail_ext $xxx"
1dca008a 20052 ;;
b4eb6b3d
JH
20053 IPC/SysV|ipc/sysv)
20054 : XXX Do we need a useipcsysv variable here
20055 case "${d_msg}${d_sem}${d_shm}" in
20056 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20057 esac
20058 ;;
20059 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
20060 ;;
20061 esac
b4eb6b3d 20062done
5f80c64f 20063
b4eb6b3d
JH
20064set X $avail_ext
20065shift
20066avail_ext="$*"
5f80c64f 20067
b4eb6b3d
JH
20068: Now see which nonxs extensions are supported on this system.
20069: For now assume all are.
20070nonxs_ext=''
20071for xxx in $nonxs_extensions ; do
20072 case "$xxx" in
20073 *) nonxs_ext="$nonxs_ext $xxx"
20074 ;;
20075 esac
20076done
5f80c64f 20077
b4eb6b3d
JH
20078set X $nonxs_ext
20079shift
20080nonxs_ext="$*"
20081
20082case $usedl in
20083$define)
20084 $cat <<EOM
20085A number of extensions are supplied with $package. You may choose to
20086compile these extensions for dynamic loading (the default), compile
20087them into the $package executable (static loading), or not include
20088them at all. Answer "none" to include no extensions.
20089Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
20090
20091EOM
b4eb6b3d 20092 case "$dynamic_ext" in
736accd3
YST
20093 '')
20094 : Exclude those listed in static_ext
20095 dflt=''
20096 for xxx in $avail_ext; do
20097 case " $static_ext " in
20098 *" $xxx "*) ;;
20099 *) dflt="$dflt $xxx" ;;
20100 esac
20101 done
20102 set X $dflt
20103 shift
20104 dflt="$*"
20105 ;;
b4eb6b3d
JH
20106 *) dflt="$dynamic_ext"
20107 # Perhaps we are reusing an old out-of-date config.sh.
20108 case "$hint" in
20109 previous)
20110 if test X"$dynamic_ext" != X"$avail_ext"; then
20111 $cat <<EOM
20112NOTICE: Your previous config.sh list may be incorrect.
20113The extensions now available to you are
20114 ${avail_ext}
20115but the default list from your previous config.sh is
20116 ${dynamic_ext}
9c839522 20117
b4eb6b3d
JH
20118EOM
20119 fi
9c839522
PM
20120 ;;
20121 esac
b4eb6b3d
JH
20122 ;;
20123 esac
5f80c64f 20124 case "$dflt" in
b4eb6b3d
JH
20125 '') dflt=none;;
20126 esac
20127 rp="What extensions do you wish to load dynamically?"
20128 . ./myread
20129 case "$ans" in
20130 none) dynamic_ext=' ' ;;
20131 *) dynamic_ext="$ans" ;;
5f80c64f 20132 esac
5f80c64f 20133
b4eb6b3d
JH
20134 case "$static_ext" in
20135 '')
20136 : Exclude those already listed in dynamic linking
20137 dflt=''
20138 for xxx in $avail_ext; do
20139 case " $dynamic_ext " in
20140 *" $xxx "*) ;;
20141 *) dflt="$dflt $xxx" ;;
20142 esac
20143 done
20144 set X $dflt
20145 shift
20146 dflt="$*"
20147 ;;
20148 *) dflt="$static_ext"
20149 ;;
20150 esac
9c839522 20151
b4eb6b3d
JH
20152 case "$dflt" in
20153 '') dflt=none;;
20154 esac
20155 rp="What extensions do you wish to load statically?"
20156 . ./myread
20157 case "$ans" in
20158 none) static_ext=' ' ;;
20159 *) static_ext="$ans" ;;
20160 esac
20161 ;;
20162*)
20163 $cat <<EOM
20164A number of extensions are supplied with $package. Answer "none"
20165to include no extensions.
20166Note that DynaLoader is always built and need not be mentioned here.
9c839522 20167
b4eb6b3d
JH
20168EOM
20169 case "$static_ext" in
20170 '') dflt="$avail_ext" ;;
20171 *) dflt="$static_ext"
20172 # Perhaps we are reusing an old out-of-date config.sh.
20173 case "$hint" in
20174 previous)
20175 if test X"$static_ext" != X"$avail_ext"; then
20176 $cat <<EOM
20177NOTICE: Your previous config.sh list may be incorrect.
20178The extensions now available to you are
20179 ${avail_ext}
20180but the default list from your previous config.sh is
20181 ${static_ext}
5f80c64f
JH
20182
20183EOM
b4eb6b3d
JH
20184 fi
20185 ;;
20186 esac
20187 ;;
20188 esac
20189 : Exclude those that are not xs extensions
20190 case "$dflt" in
20191 '') dflt=none;;
20192 esac
20193 rp="What extensions do you wish to include?"
20194 . ./myread
20195 case "$ans" in
20196 none) static_ext=' ' ;;
20197 *) static_ext="$ans" ;;
20198 esac
20199 ;;
5f80c64f 20200esac
f1f6834f
AD
20201#
20202# Encode is a special case. If we are building Encode as a static
20203# extension, we need to explicitly list its subextensions as well.
20204# For other nested extensions, this is handled automatically by
20205# the appropriate Makefile.PL.
20206case " $static_ext " in
20207 *" Encode "*) # Add the subextensions of Encode
20208 cd "$rsrc/ext"
20209 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20210 static_ext="$static_ext Encode/$xxx"
20211 done
20212 cd "$tdir"
20213 ;;
20214esac
5f80c64f 20215
b4eb6b3d
JH
20216set X $dynamic_ext $static_ext $nonxs_ext
20217shift
20218extensions="$*"
20219
7a8675bc
JH
20220case "$onlyextensions" in
20221'') ;;
20222*) keepextensions=''
20223 echo "You have requested that only certains extensions be included..." >&4
20224 for i in $onlyextensions; do
20225 case " $extensions " in
20226 *" $i "*)
20227 echo "Keeping extension $i."
20228 keepextensions="$keepextensions $i"
20229 ;;
20230 *) echo "Ignoring extension $i." ;;
20231 esac
20232 done
20233 extensions="$keepextensions"
20234 ;;
20235esac
20236
20237case "$noextensions" in
20238'') ;;
20239*) keepextensions=''
20240 echo "You have requested that certain extensions be ignored..." >&4
20241 for i in $extensions; do
20242 case " $i " in
20243 " $noextensions ") echo "Ignoring extension $i." ;;
20244 *) echo "Keeping extension $i.";
20245 keepextensions="$keepextensions $i"
20246 ;;
20247 esac
20248 done
20249 extensions="$keepextensions"
20250 ;;
20251esac
20252
20253case "$extensions" in
20254*"_File "*" Fcntl "*" IO "*) ;;
20255*) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20256 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20257 ;;
20258esac
20259
9c839522
PM
20260: Remove libraries needed only for extensions
20261: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
20262: The exception is SunOS 4.x, which needs them.
20263case "${osname}X${osvers}" in
20264sunos*X4*)
20265 perllibs="$libs"
20266 ;;
20267*) case "$usedl" in
20268 $define|true|[yY]*)
20269 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20270 shift
20271 perllibs="$*"
20272 ;;
20273 *) perllibs="$libs"
20274 ;;
20275 esac
20276 ;;
9c839522 20277esac
5f80c64f
JH
20278
20279: Remove build directory name from cppstdin so it can be used from
20280: either the present location or the final installed location.
20281echo " "
20282: Get out of the UU directory to get correct path name.
20283cd ..
20284case "$cppstdin" in
20285`pwd`/cppstdin)
20286 echo "Stripping down cppstdin path name"
20287 cppstdin=cppstdin
20288 ;;
20289esac
20290cd UU
20291
20292: end of configuration questions
20293echo " "
20294echo "End of configuration questions."
20295echo " "
20296
20297: back to where it started
20298if test -d ../UU; then
20299 cd ..
20300fi
20301
48370efc
JH
20302: configuration may be patched via a 'config.arch' file
20303if $test -f config.arch; then
20304 echo "I see a config.arch file, loading it."
20305 . ./config.arch
20306fi
20307
5f80c64f
JH
20308: configuration may be patched via a 'config.over' file
20309if $test -f config.over; then
20310 echo " "
20311 dflt=y
20312 rp='I see a config.over file. Do you wish to load it?'
20313 . UU/myread
20314 case "$ans" in
20315 n*) echo "OK, I'll ignore it.";;
20316 *) . ./config.over
20317 echo "Configuration override changes have been loaded."
20318 ;;
20319 esac
20320fi
20321
20322: in case they want portability, strip down executable paths
20323case "$d_portable" in
20324"$define")
20325 echo " "
20326 echo "Stripping down executable paths..." >&4
20327 for file in $loclist $trylist; do
534ac15a
JH
20328 eval temp=\$$file
20329 eval $file=`basename $temp`
5f80c64f
JH
20330 done
20331 ;;
20332esac
20333
20334: create config.sh file
20335echo " "
20336echo "Creating config.sh..." >&4
20337$spitshell <<EOT >config.sh
20338$startsh
20339#
20340# This file was produced by running the Configure script. It holds all the
20341# definitions figured out by Configure. Should you modify one of these values,
20342# do not forget to propagate your changes by running "Configure -der". You may
20343# instead choose to run each of the .SH files by yourself, or "Configure -S".
20344#
20345
20346# Package name : $package
20347# Source directory : $src
20348# Configuration time: $cf_time
20349# Configured by : $cf_by
20350# Target system : $myuname
20351
20352Author='$Author'
20353Date='$Date'
20354Header='$Header'
20355Id='$Id'
20356Locker='$Locker'
20357Log='$Log'
20358Mcc='$Mcc'
20359RCSfile='$RCSfile'
20360Revision='$Revision'
20361Source='$Source'
20362State='$State'
20363_a='$_a'
20364_exe='$_exe'
20365_o='$_o'
b4eb6b3d 20366afs='$afs'
a6d26a0d 20367afsroot='$afsroot'
b4eb6b3d
JH
20368alignbytes='$alignbytes'
20369ansi2knr='$ansi2knr'
20370aphostname='$aphostname'
20371api_revision='$api_revision'
20372api_subversion='$api_subversion'
20373api_version='$api_version'
20374api_versionstring='$api_versionstring'
5f80c64f 20375ar='$ar'
b4eb6b3d
JH
20376archlib='$archlib'
20377archlibexp='$archlibexp'
20378archname64='$archname64'
20379archname='$archname'
5f80c64f 20380archobjs='$archobjs'
10bc17b6 20381asctime_r_proto='$asctime_r_proto'
5f80c64f 20382awk='$awk'
b4eb6b3d 20383baserev='$baserev'
5f80c64f 20384bash='$bash'
b4eb6b3d 20385bin='$bin'
b4eb6b3d 20386binexp='$binexp'
5f80c64f
JH
20387bison='$bison'
20388byacc='$byacc'
b4eb6b3d 20389byteorder='$byteorder'
5f80c64f 20390c='$c'
b4eb6b3d 20391castflags='$castflags'
5f80c64f
JH
20392cat='$cat'
20393cc='$cc'
20394cccdlflags='$cccdlflags'
20395ccdlflags='$ccdlflags'
20396ccflags='$ccflags'
b4eb6b3d 20397ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 20398ccname='$ccname'
b4eb6b3d 20399ccsymbols='$ccsymbols'
6b356c8e 20400ccversion='$ccversion'
5f80c64f 20401cf_by='$cf_by'
b4eb6b3d 20402cf_email='$cf_email'
5f80c64f 20403cf_time='$cf_time'
b4eb6b3d 20404charsize='$charsize'
5f80c64f
JH
20405chgrp='$chgrp'
20406chmod='$chmod'
20407chown='$chown'
b4eb6b3d 20408clocktype='$clocktype'
5f80c64f
JH
20409comm='$comm'
20410compress='$compress'
20411contains='$contains'
20412cp='$cp'
20413cpio='$cpio'
20414cpp='$cpp'
b4eb6b3d
JH
20415cpp_stuff='$cpp_stuff'
20416cppccsymbols='$cppccsymbols'
5f80c64f
JH
20417cppflags='$cppflags'
20418cpplast='$cpplast'
20419cppminus='$cppminus'
20420cpprun='$cpprun'
20421cppstdin='$cppstdin'
b4eb6b3d 20422cppsymbols='$cppsymbols'
10bc17b6 20423crypt_r_proto='$crypt_r_proto'
b4eb6b3d 20424cryptlib='$cryptlib'
5f80c64f 20425csh='$csh'
10bc17b6
JH
20426ctermid_r_proto='$ctermid_r_proto'
20427ctime_r_proto='$ctime_r_proto'
b4eb6b3d
JH
20428d_Gconvert='$d_Gconvert'
20429d_PRIEUldbl='$d_PRIEUldbl'
20430d_PRIFUldbl='$d_PRIFUldbl'
20431d_PRIGUldbl='$d_PRIGUldbl'
20432d_PRIXU64='$d_PRIXU64'
20433d_PRId64='$d_PRId64'
20434d_PRIeldbl='$d_PRIeldbl'
20435d_PRIfldbl='$d_PRIfldbl'
20436d_PRIgldbl='$d_PRIgldbl'
20437d_PRIi64='$d_PRIi64'
20438d_PRIo64='$d_PRIo64'
20439d_PRIu64='$d_PRIu64'
20440d_PRIx64='$d_PRIx64'
20441d_SCNfldbl='$d_SCNfldbl'
74cac757 20442d__fwalk='$d__fwalk'
b4eb6b3d
JH
20443d_access='$d_access'
20444d_accessx='$d_accessx'
55954f19 20445d_aintl='$d_aintl'
b4eb6b3d
JH
20446d_alarm='$d_alarm'
20447d_archlib='$d_archlib'
10bc17b6 20448d_asctime_r='$d_asctime_r'
b4eb6b3d
JH
20449d_atolf='$d_atolf'
20450d_atoll='$d_atoll'
20451d_attribut='$d_attribut'
20452d_bcmp='$d_bcmp'
20453d_bcopy='$d_bcopy'
5f80c64f 20454d_bsd='$d_bsd'
b4eb6b3d
JH
20455d_bsdgetpgrp='$d_bsdgetpgrp'
20456d_bsdsetpgrp='$d_bsdsetpgrp'
20457d_bzero='$d_bzero'
20458d_casti32='$d_casti32'
20459d_castneg='$d_castneg'
20460d_charvspr='$d_charvspr'
20461d_chown='$d_chown'
20462d_chroot='$d_chroot'
20463d_chsize='$d_chsize'
758a5d79 20464d_class='$d_class'
b4eb6b3d 20465d_closedir='$d_closedir'
4e0554ec 20466d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d 20467d_const='$d_const'
55954f19 20468d_copysignl='$d_copysignl'
b4eb6b3d 20469d_crypt='$d_crypt'
10bc17b6 20470d_crypt_r='$d_crypt_r'
b4eb6b3d 20471d_csh='$d_csh'
10bc17b6
JH
20472d_ctermid_r='$d_ctermid_r'
20473d_ctime_r='$d_ctime_r'
b4eb6b3d
JH
20474d_cuserid='$d_cuserid'
20475d_dbl_dig='$d_dbl_dig'
2ef53570 20476d_dbminitproto='$d_dbminitproto'
b4eb6b3d 20477d_difftime='$d_difftime'
ae0e3d3b 20478d_dirfd='$d_dirfd'
b4eb6b3d
JH
20479d_dirnamlen='$d_dirnamlen'
20480d_dlerror='$d_dlerror'
5f80c64f 20481d_dlopen='$d_dlopen'
b4eb6b3d
JH
20482d_dlsymun='$d_dlsymun'
20483d_dosuid='$d_dosuid'
10bc17b6 20484d_drand48_r='$d_drand48_r'
b4eb6b3d
JH
20485d_drand48proto='$d_drand48proto'
20486d_dup2='$d_dup2'
20487d_eaccess='$d_eaccess'
20488d_endgrent='$d_endgrent'
10bc17b6 20489d_endgrent_r='$d_endgrent_r'
b4eb6b3d 20490d_endhent='$d_endhent'
10bc17b6 20491d_endhostent_r='$d_endhostent_r'
b4eb6b3d 20492d_endnent='$d_endnent'
10bc17b6 20493d_endnetent_r='$d_endnetent_r'
b4eb6b3d 20494d_endpent='$d_endpent'
10bc17b6 20495d_endprotoent_r='$d_endprotoent_r'
b4eb6b3d 20496d_endpwent='$d_endpwent'
10bc17b6 20497d_endpwent_r='$d_endpwent_r'
b4eb6b3d 20498d_endsent='$d_endsent'
10bc17b6 20499d_endservent_r='$d_endservent_r'
b4eb6b3d 20500d_eofnblk='$d_eofnblk'
5f80c64f 20501d_eunice='$d_eunice'
b363b713 20502d_fchdir='$d_fchdir'
b4eb6b3d
JH
20503d_fchmod='$d_fchmod'
20504d_fchown='$d_fchown'
20505d_fcntl='$d_fcntl'
9d9004a9 20506d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
20507d_fd_macros='$d_fd_macros'
20508d_fd_set='$d_fd_set'
20509d_fds_bits='$d_fds_bits'
20510d_fgetpos='$d_fgetpos'
758a5d79
JH
20511d_finite='$d_finite'
20512d_finitel='$d_finitel'
b4eb6b3d
JH
20513d_flexfnam='$d_flexfnam'
20514d_flock='$d_flock'
2ef53570 20515d_flockproto='$d_flockproto'
b4eb6b3d 20516d_fork='$d_fork'
758a5d79 20517d_fp_class='$d_fp_class'
b4eb6b3d 20518d_fpathconf='$d_fpathconf'
758a5d79
JH
20519d_fpclass='$d_fpclass'
20520d_fpclassify='$d_fpclassify'
20521d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
20522d_fpos64_t='$d_fpos64_t'
20523d_frexpl='$d_frexpl'
20524d_fs_data_s='$d_fs_data_s'
20525d_fseeko='$d_fseeko'
20526d_fsetpos='$d_fsetpos'
20527d_fstatfs='$d_fstatfs'
20528d_fstatvfs='$d_fstatvfs'
411ab01c 20529d_fsync='$d_fsync'
b4eb6b3d
JH
20530d_ftello='$d_ftello'
20531d_ftime='$d_ftime'
20532d_getcwd='$d_getcwd'
20533d_getespwnam='$d_getespwnam'
20534d_getfsstat='$d_getfsstat'
20535d_getgrent='$d_getgrent'
10bc17b6
JH
20536d_getgrent_r='$d_getgrent_r'
20537d_getgrgid_r='$d_getgrgid_r'
20538d_getgrnam_r='$d_getgrnam_r'
b4eb6b3d
JH
20539d_getgrps='$d_getgrps'
20540d_gethbyaddr='$d_gethbyaddr'
20541d_gethbyname='$d_gethbyname'
20542d_gethent='$d_gethent'
20543d_gethname='$d_gethname'
10bc17b6
JH
20544d_gethostbyaddr_r='$d_gethostbyaddr_r'
20545d_gethostbyname_r='$d_gethostbyname_r'
20546d_gethostent_r='$d_gethostent_r'
b4eb6b3d 20547d_gethostprotos='$d_gethostprotos'
4e0554ec 20548d_getitimer='$d_getitimer'
b4eb6b3d 20549d_getlogin='$d_getlogin'
10bc17b6 20550d_getlogin_r='$d_getlogin_r'
b4eb6b3d
JH
20551d_getmnt='$d_getmnt'
20552d_getmntent='$d_getmntent'
20553d_getnbyaddr='$d_getnbyaddr'
20554d_getnbyname='$d_getnbyname'
20555d_getnent='$d_getnent'
10bc17b6
JH
20556d_getnetbyaddr_r='$d_getnetbyaddr_r'
20557d_getnetbyname_r='$d_getnetbyname_r'
20558d_getnetent_r='$d_getnetent_r'
b4eb6b3d 20559d_getnetprotos='$d_getnetprotos'
0c0643d0 20560d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
20561d_getpbyname='$d_getpbyname'
20562d_getpbynumber='$d_getpbynumber'
20563d_getpent='$d_getpent'
20564d_getpgid='$d_getpgid'
20565d_getpgrp2='$d_getpgrp2'
20566d_getpgrp='$d_getpgrp'
20567d_getppid='$d_getppid'
20568d_getprior='$d_getprior'
10bc17b6
JH
20569d_getprotobyname_r='$d_getprotobyname_r'
20570d_getprotobynumber_r='$d_getprotobynumber_r'
20571d_getprotoent_r='$d_getprotoent_r'
b4eb6b3d
JH
20572d_getprotoprotos='$d_getprotoprotos'
20573d_getprpwnam='$d_getprpwnam'
20574d_getpwent='$d_getpwent'
10bc17b6
JH
20575d_getpwent_r='$d_getpwent_r'
20576d_getpwnam_r='$d_getpwnam_r'
20577d_getpwuid_r='$d_getpwuid_r'
b4eb6b3d
JH
20578d_getsbyname='$d_getsbyname'
20579d_getsbyport='$d_getsbyport'
20580d_getsent='$d_getsent'
10bc17b6
JH
20581d_getservbyname_r='$d_getservbyname_r'
20582d_getservbyport_r='$d_getservbyport_r'
20583d_getservent_r='$d_getservent_r'
b4eb6b3d
JH
20584d_getservprotos='$d_getservprotos'
20585d_getspnam='$d_getspnam'
10bc17b6 20586d_getspnam_r='$d_getspnam_r'
b4eb6b3d 20587d_gettimeod='$d_gettimeod'
10bc17b6 20588d_gmtime_r='$d_gmtime_r'
5f80c64f 20589d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
20590d_grpasswd='$d_grpasswd'
20591d_hasmntopt='$d_hasmntopt'
20592d_htonl='$d_htonl'
55954f19 20593d_ilogbl='$d_ilogbl'
b4eb6b3d
JH
20594d_index='$d_index'
20595d_inetaton='$d_inetaton'
20596d_int64_t='$d_int64_t'
20597d_isascii='$d_isascii'
758a5d79
JH
20598d_isfinite='$d_isfinite'
20599d_isinf='$d_isinf'
b4eb6b3d
JH
20600d_isnan='$d_isnan'
20601d_isnanl='$d_isnanl'
20602d_killpg='$d_killpg'
20603d_lchown='$d_lchown'
20604d_ldbl_dig='$d_ldbl_dig'
20605d_link='$d_link'
10bc17b6 20606d_localtime_r='$d_localtime_r'
b4eb6b3d
JH
20607d_locconv='$d_locconv'
20608d_lockf='$d_lockf'
20609d_longdbl='$d_longdbl'
20610d_longlong='$d_longlong'
20611d_lseekproto='$d_lseekproto'
20612d_lstat='$d_lstat'
20613d_madvise='$d_madvise'
20614d_mblen='$d_mblen'
20615d_mbstowcs='$d_mbstowcs'
20616d_mbtowc='$d_mbtowc'
20617d_memchr='$d_memchr'
20618d_memcmp='$d_memcmp'
20619d_memcpy='$d_memcpy'
20620d_memmove='$d_memmove'
20621d_memset='$d_memset'
20622d_mkdir='$d_mkdir'
20623d_mkdtemp='$d_mkdtemp'
20624d_mkfifo='$d_mkfifo'
20625d_mkstemp='$d_mkstemp'
20626d_mkstemps='$d_mkstemps'
20627d_mktime='$d_mktime'
20628d_mmap='$d_mmap'
20629d_modfl='$d_modfl'
e67aeab1 20630d_modfl_pow32_bug='$d_modfl_pow32_bug'
bc9a1b2c 20631d_modflproto='$d_modflproto'
b4eb6b3d
JH
20632d_mprotect='$d_mprotect'
20633d_msg='$d_msg'
20634d_msg_ctrunc='$d_msg_ctrunc'
20635d_msg_dontroute='$d_msg_dontroute'
20636d_msg_oob='$d_msg_oob'
20637d_msg_peek='$d_msg_peek'
20638d_msg_proxy='$d_msg_proxy'
20639d_msgctl='$d_msgctl'
20640d_msgget='$d_msgget'
4e0554ec 20641d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
20642d_msgrcv='$d_msgrcv'
20643d_msgsnd='$d_msgsnd'
20644d_msync='$d_msync'
20645d_munmap='$d_munmap'
20646d_mymalloc='$d_mymalloc'
2d736872 20647d_nanosleep='$d_nanosleep'
b4eb6b3d 20648d_nice='$d_nice'
2765b840 20649d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d 20650d_nv_preserves_uv='$d_nv_preserves_uv'
b4eb6b3d
JH
20651d_off64_t='$d_off64_t'
20652d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20653d_oldpthreads='$d_oldpthreads'
20654d_oldsock='$d_oldsock'
20655d_open3='$d_open3'
20656d_pathconf='$d_pathconf'
20657d_pause='$d_pause'
20658d_perl_otherlibdirs='$d_perl_otherlibdirs'
20659d_phostname='$d_phostname'
20660d_pipe='$d_pipe'
20661d_poll='$d_poll'
5f80c64f 20662d_portable='$d_portable'
c7aff470 20663d_procselfexe='$d_procselfexe'
d6483fcc 20664d_pthread_atfork='$d_pthread_atfork'
b4eb6b3d
JH
20665d_pthread_yield='$d_pthread_yield'
20666d_pwage='$d_pwage'
20667d_pwchange='$d_pwchange'
20668d_pwclass='$d_pwclass'
20669d_pwcomment='$d_pwcomment'
20670d_pwexpire='$d_pwexpire'
20671d_pwgecos='$d_pwgecos'
20672d_pwpasswd='$d_pwpasswd'
20673d_pwquota='$d_pwquota'
20674d_qgcvt='$d_qgcvt'
20675d_quad='$d_quad'
10bc17b6
JH
20676d_random_r='$d_random_r'
20677d_readdir64_r='$d_readdir64_r'
b4eb6b3d 20678d_readdir='$d_readdir'
10bc17b6 20679d_readdir_r='$d_readdir_r'
b4eb6b3d 20680d_readlink='$d_readlink'
4e0554ec
JH
20681d_readv='$d_readv'
20682d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
20683d_rename='$d_rename'
20684d_rewinddir='$d_rewinddir'
20685d_rmdir='$d_rmdir'
20686d_safebcpy='$d_safebcpy'
20687d_safemcpy='$d_safemcpy'
20688d_sanemcmp='$d_sanemcmp'
ef9f17be 20689d_sbrkproto='$d_sbrkproto'
55954f19 20690d_scalbnl='$d_scalbnl'
b4eb6b3d
JH
20691d_sched_yield='$d_sched_yield'
20692d_scm_rights='$d_scm_rights'
20693d_seekdir='$d_seekdir'
20694d_select='$d_select'
20695d_sem='$d_sem'
20696d_semctl='$d_semctl'
20697d_semctl_semid_ds='$d_semctl_semid_ds'
20698d_semctl_semun='$d_semctl_semun'
20699d_semget='$d_semget'
20700d_semop='$d_semop'
4e0554ec 20701d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
20702d_setegid='$d_setegid'
20703d_seteuid='$d_seteuid'
20704d_setgrent='$d_setgrent'
10bc17b6 20705d_setgrent_r='$d_setgrent_r'
b4eb6b3d
JH
20706d_setgrps='$d_setgrps'
20707d_sethent='$d_sethent'
10bc17b6 20708d_sethostent_r='$d_sethostent_r'
4e0554ec 20709d_setitimer='$d_setitimer'
b4eb6b3d
JH
20710d_setlinebuf='$d_setlinebuf'
20711d_setlocale='$d_setlocale'
10bc17b6 20712d_setlocale_r='$d_setlocale_r'
b4eb6b3d 20713d_setnent='$d_setnent'
10bc17b6 20714d_setnetent_r='$d_setnetent_r'
b4eb6b3d
JH
20715d_setpent='$d_setpent'
20716d_setpgid='$d_setpgid'
20717d_setpgrp2='$d_setpgrp2'
20718d_setpgrp='$d_setpgrp'
20719d_setprior='$d_setprior'
20720d_setproctitle='$d_setproctitle'
10bc17b6 20721d_setprotoent_r='$d_setprotoent_r'
b4eb6b3d 20722d_setpwent='$d_setpwent'
10bc17b6 20723d_setpwent_r='$d_setpwent_r'
b4eb6b3d
JH
20724d_setregid='$d_setregid'
20725d_setresgid='$d_setresgid'
20726d_setresuid='$d_setresuid'
20727d_setreuid='$d_setreuid'
20728d_setrgid='$d_setrgid'
20729d_setruid='$d_setruid'
20730d_setsent='$d_setsent'
10bc17b6 20731d_setservent_r='$d_setservent_r'
b4eb6b3d
JH
20732d_setsid='$d_setsid'
20733d_setvbuf='$d_setvbuf'
20734d_sfio='$d_sfio'
20735d_shm='$d_shm'
20736d_shmat='$d_shmat'
20737d_shmatprototype='$d_shmatprototype'
20738d_shmctl='$d_shmctl'
20739d_shmdt='$d_shmdt'
20740d_shmget='$d_shmget'
20741d_sigaction='$d_sigaction'
983dbef6 20742d_sigprocmask='$d_sigprocmask'
b4eb6b3d 20743d_sigsetjmp='$d_sigsetjmp'
49a78c82 20744d_sockatmark='$d_sockatmark'
2ef53570 20745d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
20746d_socket='$d_socket'
20747d_socklen_t='$d_socklen_t'
20748d_sockpair='$d_sockpair'
20749d_socks5_init='$d_socks5_init'
20750d_sqrtl='$d_sqrtl'
10bc17b6
JH
20751d_srand48_r='$d_srand48_r'
20752d_srandom_r='$d_srandom_r'
eef837ea 20753d_sresgproto='$d_sresgproto'
640374d0 20754d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
20755d_statblks='$d_statblks'
20756d_statfs_f_flags='$d_statfs_f_flags'
20757d_statfs_s='$d_statfs_s'
20758d_statvfs='$d_statvfs'
20759d_stdio_cnt_lval='$d_stdio_cnt_lval'
20760d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
20761d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20762d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
20763d_stdio_stream_array='$d_stdio_stream_array'
20764d_stdiobase='$d_stdiobase'
20765d_stdstdio='$d_stdstdio'
20766d_strchr='$d_strchr'
20767d_strcoll='$d_strcoll'
20768d_strctcpy='$d_strctcpy'
20769d_strerrm='$d_strerrm'
20770d_strerror='$d_strerror'
10bc17b6 20771d_strerror_r='$d_strerror_r'
b3c85772 20772d_strftime='$d_strftime'
b4eb6b3d
JH
20773d_strtod='$d_strtod'
20774d_strtol='$d_strtol'
20775d_strtold='$d_strtold'
20776d_strtoll='$d_strtoll'
28e5dec8 20777d_strtoq='$d_strtoq'
b4eb6b3d
JH
20778d_strtoul='$d_strtoul'
20779d_strtoull='$d_strtoull'
20780d_strtouq='$d_strtouq'
20781d_strxfrm='$d_strxfrm'
20782d_suidsafe='$d_suidsafe'
20783d_symlink='$d_symlink'
20784d_syscall='$d_syscall'
2ef53570 20785d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
20786d_sysconf='$d_sysconf'
20787d_sysernlst='$d_sysernlst'
20788d_syserrlst='$d_syserrlst'
20789d_system='$d_system'
20790d_tcgetpgrp='$d_tcgetpgrp'
20791d_tcsetpgrp='$d_tcsetpgrp'
20792d_telldir='$d_telldir'
20793d_telldirproto='$d_telldirproto'
20794d_time='$d_time'
20795d_times='$d_times'
14b90194
JH
20796d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20797d_tm_tm_zone='$d_tm_tm_zone'
10bc17b6 20798d_tmpnam_r='$d_tmpnam_r'
b4eb6b3d 20799d_truncate='$d_truncate'
10bc17b6 20800d_ttyname_r='$d_ttyname_r'
b4eb6b3d 20801d_tzname='$d_tzname'
4e0554ec
JH
20802d_u32align='$d_u32align'
20803d_ualarm='$d_ualarm'
b4eb6b3d
JH
20804d_umask='$d_umask'
20805d_uname='$d_uname'
20806d_union_semun='$d_union_semun'
758a5d79 20807d_unordered='$d_unordered'
4e0554ec 20808d_usleep='$d_usleep'
2ef53570 20809d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
20810d_ustat='$d_ustat'
20811d_vendorarch='$d_vendorarch'
20812d_vendorbin='$d_vendorbin'
20813d_vendorlib='$d_vendorlib'
6e1038e0 20814d_vendorscript='$d_vendorscript'
b4eb6b3d
JH
20815d_vfork='$d_vfork'
20816d_void_closedir='$d_void_closedir'
20817d_voidsig='$d_voidsig'
20818d_voidtty='$d_voidtty'
20819d_volatile='$d_volatile'
20820d_vprintf='$d_vprintf'
20821d_wait4='$d_wait4'
20822d_waitpid='$d_waitpid'
20823d_wcstombs='$d_wcstombs'
20824d_wctomb='$d_wctomb'
4e0554ec 20825d_writev='$d_writev'
5f80c64f
JH
20826d_xenix='$d_xenix'
20827date='$date'
b4eb6b3d
JH
20828db_hashtype='$db_hashtype'
20829db_prefixtype='$db_prefixtype'
640374d0
JH
20830db_version_major='$db_version_major'
20831db_version_minor='$db_version_minor'
20832db_version_patch='$db_version_patch'
b4eb6b3d
JH
20833defvoidused='$defvoidused'
20834direntrytype='$direntrytype'
20835dlext='$dlext'
5f80c64f 20836dlsrc='$dlsrc'
b4eb6b3d
JH
20837doublesize='$doublesize'
20838drand01='$drand01'
10bc17b6 20839drand48_r_proto='$drand48_r_proto'
b4eb6b3d
JH
20840dynamic_ext='$dynamic_ext'
20841eagain='$eagain'
20842ebcdic='$ebcdic'
5f80c64f
JH
20843echo='$echo'
20844egrep='$egrep'
20845emacs='$emacs'
10bc17b6
JH
20846endgrent_r_proto='$endgrent_r_proto'
20847endhostent_r_proto='$endhostent_r_proto'
20848endnetent_r_proto='$endnetent_r_proto'
20849endprotoent_r_proto='$endprotoent_r_proto'
20850endpwent_r_proto='$endpwent_r_proto'
20851endservent_r_proto='$endservent_r_proto'
5f80c64f
JH
20852eunicefix='$eunicefix'
20853exe_ext='$exe_ext'
20854expr='$expr'
b4eb6b3d 20855extensions='$extensions'
6fcddf3b 20856extras='$extras'
b4eb6b3d
JH
20857fflushNULL='$fflushNULL'
20858fflushall='$fflushall'
5f80c64f
JH
20859find='$find'
20860firstmakefile='$firstmakefile'
20861flex='$flex'
b4eb6b3d
JH
20862fpossize='$fpossize'
20863fpostype='$fpostype'
20864freetype='$freetype'
5440bc8e 20865from='$from'
b4eb6b3d
JH
20866full_ar='$full_ar'
20867full_csh='$full_csh'
20868full_sed='$full_sed'
2d736872 20869gccansipedantic='$gccansipedantic'
5b463ca7 20870gccosandvers='$gccosandvers'
5f80c64f 20871gccversion='$gccversion'
10bc17b6
JH
20872getgrent_r_proto='$getgrent_r_proto'
20873getgrgid_r_proto='$getgrgid_r_proto'
20874getgrnam_r_proto='$getgrnam_r_proto'
20875gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20876gethostbyname_r_proto='$gethostbyname_r_proto'
20877gethostent_r_proto='$gethostent_r_proto'
20878getlogin_r_proto='$getlogin_r_proto'
20879getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20880getnetbyname_r_proto='$getnetbyname_r_proto'
20881getnetent_r_proto='$getnetent_r_proto'
20882getprotobyname_r_proto='$getprotobyname_r_proto'
20883getprotobynumber_r_proto='$getprotobynumber_r_proto'
20884getprotoent_r_proto='$getprotoent_r_proto'
20885getpwent_r_proto='$getpwent_r_proto'
20886getpwnam_r_proto='$getpwnam_r_proto'
20887getpwuid_r_proto='$getpwuid_r_proto'
20888getservbyname_r_proto='$getservbyname_r_proto'
20889getservbyport_r_proto='$getservbyport_r_proto'
20890getservent_r_proto='$getservent_r_proto'
20891getspnam_r_proto='$getspnam_r_proto'
b4eb6b3d
JH
20892gidformat='$gidformat'
20893gidsign='$gidsign'
20894gidsize='$gidsize'
20895gidtype='$gidtype'
5f80c64f 20896glibpth='$glibpth'
3c728e00 20897gmake='$gmake'
10bc17b6 20898gmtime_r_proto='$gmtime_r_proto'
5f6e0ee4 20899gnulibc_version='$gnulibc_version'
5f80c64f 20900grep='$grep'
b4eb6b3d
JH
20901groupcat='$groupcat'
20902groupstype='$groupstype'
5f80c64f 20903gzip='$gzip'
b4eb6b3d
JH
20904h_fcntl='$h_fcntl'
20905h_sysfile='$h_sysfile'
5f80c64f 20906hint='$hint'
b4eb6b3d 20907hostcat='$hostcat'
6e1038e0
MB
20908html1dir='$html1dir'
20909html1direxp='$html1direxp'
20910html3dir='$html3dir'
20911html3direxp='$html3direxp'
b4eb6b3d
JH
20912i16size='$i16size'
20913i16type='$i16type'
20914i32size='$i32size'
20915i32type='$i32type'
20916i64size='$i64size'
20917i64type='$i64type'
20918i8size='$i8size'
20919i8type='$i8type'
20920i_arpainet='$i_arpainet'
20921i_bsdioctl='$i_bsdioctl'
10bc17b6 20922i_crypt='$i_crypt'
b4eb6b3d
JH
20923i_db='$i_db'
20924i_dbm='$i_dbm'
20925i_dirent='$i_dirent'
5f80c64f 20926i_dld='$i_dld'
b4eb6b3d
JH
20927i_dlfcn='$i_dlfcn'
20928i_fcntl='$i_fcntl'
20929i_float='$i_float'
758a5d79
JH
20930i_fp='$i_fp'
20931i_fp_class='$i_fp_class'
b4eb6b3d
JH
20932i_gdbm='$i_gdbm'
20933i_grp='$i_grp'
b4eb6b3d
JH
20934i_ieeefp='$i_ieeefp'
20935i_inttypes='$i_inttypes'
2765b840 20936i_langinfo='$i_langinfo'
b4eb6b3d
JH
20937i_libutil='$i_libutil'
20938i_limits='$i_limits'
20939i_locale='$i_locale'
20940i_machcthr='$i_machcthr'
20941i_malloc='$i_malloc'
20942i_math='$i_math'
20943i_memory='$i_memory'
20944i_mntent='$i_mntent'
20945i_ndbm='$i_ndbm'
20946i_netdb='$i_netdb'
20947i_neterrno='$i_neterrno'
20948i_netinettcp='$i_netinettcp'
20949i_niin='$i_niin'
20950i_poll='$i_poll'
20951i_prot='$i_prot'
20952i_pthread='$i_pthread'
20953i_pwd='$i_pwd'
20954i_rpcsvcdbm='$i_rpcsvcdbm'
20955i_sfio='$i_sfio'
20956i_sgtty='$i_sgtty'
20957i_shadow='$i_shadow'
20958i_socks='$i_socks'
20959i_stdarg='$i_stdarg'
20960i_stddef='$i_stddef'
20961i_stdlib='$i_stdlib'
20962i_string='$i_string'
20963i_sunmath='$i_sunmath'
20964i_sysaccess='$i_sysaccess'
20965i_sysdir='$i_sysdir'
20966i_sysfile='$i_sysfile'
20967i_sysfilio='$i_sysfilio'
20968i_sysin='$i_sysin'
20969i_sysioctl='$i_sysioctl'
20970i_syslog='$i_syslog'
20971i_sysmman='$i_sysmman'
20972i_sysmode='$i_sysmode'
20973i_sysmount='$i_sysmount'
20974i_sysndir='$i_sysndir'
20975i_sysparam='$i_sysparam'
20976i_sysresrc='$i_sysresrc'
20977i_syssecrt='$i_syssecrt'
20978i_sysselct='$i_sysselct'
20979i_syssockio='$i_syssockio'
20980i_sysstat='$i_sysstat'
20981i_sysstatfs='$i_sysstatfs'
20982i_sysstatvfs='$i_sysstatvfs'
20983i_systime='$i_systime'
20984i_systimek='$i_systimek'
20985i_systimes='$i_systimes'
20986i_systypes='$i_systypes'
20987i_sysuio='$i_sysuio'
20988i_sysun='$i_sysun'
20989i_sysutsname='$i_sysutsname'
20990i_sysvfs='$i_sysvfs'
20991i_syswait='$i_syswait'
20992i_termio='$i_termio'
20993i_termios='$i_termios'
20994i_time='$i_time'
20995i_unistd='$i_unistd'
20996i_ustat='$i_ustat'
20997i_utime='$i_utime'
20998i_values='$i_values'
20999i_varargs='$i_varargs'
21000i_varhdr='$i_varhdr'
21001i_vfork='$i_vfork'
5f80c64f 21002ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
21003inc_version_list='$inc_version_list'
21004inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
21005incpath='$incpath'
21006inews='$inews'
b4eb6b3d
JH
21007installarchlib='$installarchlib'
21008installbin='$installbin'
6e1038e0
MB
21009installhtml1dir='$installhtml1dir'
21010installhtml3dir='$installhtml3dir'
b4eb6b3d
JH
21011installman1dir='$installman1dir'
21012installman3dir='$installman3dir'
21013installprefix='$installprefix'
21014installprefixexp='$installprefixexp'
21015installprivlib='$installprivlib'
21016installscript='$installscript'
21017installsitearch='$installsitearch'
21018installsitebin='$installsitebin'
6e1038e0
MB
21019installsitehtml1='$installsitehtml1'
21020installsitehtml3='$installsitehtml3'
b4eb6b3d 21021installsitelib='$installsitelib'
6e1038e0
MB
21022installsiteman1='$installsiteman1'
21023installsiteman3='$installsiteman3'
21024installsitescript='$installsitescript'
b4eb6b3d
JH
21025installstyle='$installstyle'
21026installusrbinperl='$installusrbinperl'
21027installvendorarch='$installvendorarch'
21028installvendorbin='$installvendorbin'
6e1038e0
MB
21029installvendorhtml1='$installvendorhtml1'
21030installvendorhtml3='$installvendorhtml3'
b4eb6b3d 21031installvendorlib='$installvendorlib'
6e1038e0
MB
21032installvendorman1='$installvendorman1'
21033installvendorman3='$installvendorman3'
21034installvendorscript='$installvendorscript'
b4eb6b3d 21035intsize='$intsize'
4b661809 21036issymlink='$issymlink'
b4eb6b3d
JH
21037ivdformat='$ivdformat'
21038ivsize='$ivsize'
21039ivtype='$ivtype'
21040known_extensions='$known_extensions'
5f80c64f 21041ksh='$ksh'
5f80c64f
JH
21042ld='$ld'
21043lddlflags='$lddlflags'
21044ldflags='$ldflags'
b4eb6b3d
JH
21045ldflags_uselargefiles='$ldflags_uselargefiles'
21046ldlibpthname='$ldlibpthname'
5f80c64f
JH
21047less='$less'
21048lib_ext='$lib_ext'
21049libc='$libc'
b4eb6b3d 21050libperl='$libperl'
5f80c64f
JH
21051libpth='$libpth'
21052libs='$libs'
43999f95
JH
21053libsdirs='$libsdirs'
21054libsfiles='$libsfiles'
21055libsfound='$libsfound'
13b3f787 21056libspath='$libspath'
5f80c64f 21057libswanted='$libswanted'
b4eb6b3d 21058libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
21059line='$line'
21060lint='$lint'
21061lkflags='$lkflags'
21062ln='$ln'
21063lns='$lns'
10bc17b6 21064localtime_r_proto='$localtime_r_proto'
5f80c64f
JH
21065locincpth='$locincpth'
21066loclibpth='$loclibpth'
b4eb6b3d
JH
21067longdblsize='$longdblsize'
21068longlongsize='$longlongsize'
21069longsize='$longsize'
5f80c64f
JH
21070lp='$lp'
21071lpr='$lpr'
21072ls='$ls'
b4eb6b3d
JH
21073lseeksize='$lseeksize'
21074lseektype='$lseektype'
5f80c64f
JH
21075mail='$mail'
21076mailx='$mailx'
21077make='$make'
21078make_set_make='$make_set_make'
b4eb6b3d
JH
21079mallocobj='$mallocobj'
21080mallocsrc='$mallocsrc'
21081malloctype='$malloctype'
21082man1dir='$man1dir'
21083man1direxp='$man1direxp'
21084man1ext='$man1ext'
21085man3dir='$man3dir'
21086man3direxp='$man3direxp'
21087man3ext='$man3ext'
5f80c64f
JH
21088mips_type='$mips_type'
21089mkdir='$mkdir'
b4eb6b3d
JH
21090mmaptype='$mmaptype'
21091modetype='$modetype'
5f80c64f 21092more='$more'
b4eb6b3d 21093multiarch='$multiarch'
5f80c64f 21094mv='$mv'
b4eb6b3d
JH
21095myarchname='$myarchname'
21096mydomain='$mydomain'
21097myhostname='$myhostname'
5f80c64f
JH
21098myuname='$myuname'
21099n='$n'
2cc61e15 21100need_va_copy='$need_va_copy'
b4eb6b3d
JH
21101netdb_hlen_type='$netdb_hlen_type'
21102netdb_host_type='$netdb_host_type'
21103netdb_name_type='$netdb_name_type'
21104netdb_net_type='$netdb_net_type'
5f80c64f
JH
21105nm='$nm'
21106nm_opt='$nm_opt'
21107nm_so_opt='$nm_so_opt'
b4eb6b3d 21108nonxs_ext='$nonxs_ext'
5f80c64f 21109nroff='$nroff'
b4eb6b3d
JH
21110nvEUformat='$nvEUformat'
21111nvFUformat='$nvFUformat'
21112nvGUformat='$nvGUformat'
53133ed1 21113nv_preserves_uv_bits='$nv_preserves_uv_bits'
b4eb6b3d
JH
21114nveformat='$nveformat'
21115nvfformat='$nvfformat'
21116nvgformat='$nvgformat'
21117nvsize='$nvsize'
21118nvtype='$nvtype'
21119o_nonblock='$o_nonblock'
5f80c64f 21120obj_ext='$obj_ext'
b4eb6b3d 21121old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 21122optimize='$optimize'
b4eb6b3d 21123orderlib='$orderlib'
5f80c64f
JH
21124osname='$osname'
21125osvers='$osvers'
b4eb6b3d 21126otherlibdirs='$otherlibdirs'
5f80c64f 21127package='$package'
b4eb6b3d
JH
21128pager='$pager'
21129passcat='$passcat'
21130patchlevel='$patchlevel'
5f80c64f 21131path_sep='$path_sep'
b4eb6b3d 21132perl5='$perl5'
5f80c64f 21133perl='$perl'
151e6568 21134perl_patchlevel='$perl_patchlevel'
b4eb6b3d 21135perladmin='$perladmin'
9c839522 21136perllibs='$perllibs'
b4eb6b3d 21137perlpath='$perlpath'
5f80c64f 21138pg='$pg'
b4eb6b3d
JH
21139phostname='$phostname'
21140pidtype='$pidtype'
5f80c64f 21141plibpth='$plibpth'
b4eb6b3d 21142pm_apiversion='$pm_apiversion'
5f80c64f
JH
21143pmake='$pmake'
21144pr='$pr'
b4eb6b3d
JH
21145prefix='$prefix'
21146prefixexp='$prefixexp'
21147privlib='$privlib'
21148privlibexp='$privlibexp'
f24dbf84 21149procselfexe='$procselfexe'
b4eb6b3d
JH
21150prototype='$prototype'
21151ptrsize='$ptrsize'
21152quadkind='$quadkind'
21153quadtype='$quadtype'
21154randbits='$randbits'
21155randfunc='$randfunc'
10bc17b6 21156random_r_proto='$random_r_proto'
b4eb6b3d
JH
21157randseedtype='$randseedtype'
21158ranlib='$ranlib'
21159rd_nodata='$rd_nodata'
10bc17b6
JH
21160readdir64_r_proto='$readdir64_r_proto'
21161readdir_r_proto='$readdir_r_proto'
b4eb6b3d 21162revision='$revision'
5f80c64f
JH
21163rm='$rm'
21164rmail='$rmail'
5440bc8e 21165run='$run'
5f80c64f 21166runnm='$runnm'
b4eb6b3d
JH
21167sPRIEUldbl='$sPRIEUldbl'
21168sPRIFUldbl='$sPRIFUldbl'
21169sPRIGUldbl='$sPRIGUldbl'
21170sPRIXU64='$sPRIXU64'
21171sPRId64='$sPRId64'
21172sPRIeldbl='$sPRIeldbl'
21173sPRIfldbl='$sPRIfldbl'
21174sPRIgldbl='$sPRIgldbl'
21175sPRIi64='$sPRIi64'
21176sPRIo64='$sPRIo64'
21177sPRIu64='$sPRIu64'
21178sPRIx64='$sPRIx64'
21179sSCNfldbl='$sSCNfldbl'
21180sched_yield='$sched_yield'
21181scriptdir='$scriptdir'
21182scriptdirexp='$scriptdirexp'
5f80c64f 21183sed='$sed'
b4eb6b3d
JH
21184seedfunc='$seedfunc'
21185selectminbits='$selectminbits'
21186selecttype='$selecttype'
5f80c64f 21187sendmail='$sendmail'
10bc17b6
JH
21188setgrent_r_proto='$setgrent_r_proto'
21189sethostent_r_proto='$sethostent_r_proto'
21190setlocale_r_proto='$setlocale_r_proto'
21191setnetent_r_proto='$setnetent_r_proto'
21192setprotoent_r_proto='$setprotoent_r_proto'
21193setpwent_r_proto='$setpwent_r_proto'
21194setservent_r_proto='$setservent_r_proto'
5f80c64f
JH
21195sh='$sh'
21196shar='$shar'
21197sharpbang='$sharpbang'
b4eb6b3d
JH
21198shmattype='$shmattype'
21199shortsize='$shortsize'
21200shrpenv='$shrpenv'
5f80c64f 21201shsharp='$shsharp'
b4eb6b3d
JH
21202sig_count='$sig_count'
21203sig_name='$sig_name'
21204sig_name_init='$sig_name_init'
21205sig_num='$sig_num'
21206sig_num_init='$sig_num_init'
76d3c696 21207sig_size='$sig_size'
b4eb6b3d
JH
21208signal_t='$signal_t'
21209sitearch='$sitearch'
21210sitearchexp='$sitearchexp'
21211sitebin='$sitebin'
21212sitebinexp='$sitebinexp'
6e1038e0
MB
21213sitehtml1='$sitehtml1'
21214sitehtml1exp='$sitehtml1exp'
21215sitehtml3='$sitehtml3'
21216sitehtml3exp='$sitehtml3exp'
b4eb6b3d
JH
21217sitelib='$sitelib'
21218sitelib_stem='$sitelib_stem'
21219sitelibexp='$sitelibexp'
6e1038e0
MB
21220siteman1='$siteman1'
21221siteman1exp='$siteman1exp'
21222siteman3='$siteman3'
21223siteman3exp='$siteman3exp'
b4eb6b3d
JH
21224siteprefix='$siteprefix'
21225siteprefixexp='$siteprefixexp'
6e1038e0
MB
21226sitescript='$sitescript'
21227sitescriptexp='$sitescriptexp'
b4eb6b3d
JH
21228sizesize='$sizesize'
21229sizetype='$sizetype'
5f80c64f
JH
21230sleep='$sleep'
21231smail='$smail'
5f80c64f 21232so='$so'
b4eb6b3d
JH
21233sockethdr='$sockethdr'
21234socketlib='$socketlib'
21235socksizetype='$socksizetype'
5f80c64f
JH
21236sort='$sort'
21237spackage='$spackage'
21238spitshell='$spitshell'
10bc17b6
JH
21239srand48_r_proto='$srand48_r_proto'
21240srandom_r_proto='$srandom_r_proto'
5f80c64f 21241src='$src'
b4eb6b3d
JH
21242ssizetype='$ssizetype'
21243startperl='$startperl'
5f80c64f 21244startsh='$startsh'
b4eb6b3d
JH
21245static_ext='$static_ext'
21246stdchar='$stdchar'
21247stdio_base='$stdio_base'
21248stdio_bufsiz='$stdio_bufsiz'
21249stdio_cnt='$stdio_cnt'
21250stdio_filbuf='$stdio_filbuf'
21251stdio_ptr='$stdio_ptr'
21252stdio_stream_array='$stdio_stream_array'
10bc17b6 21253strerror_r_proto='$strerror_r_proto'
b4eb6b3d 21254strings='$strings'
5f80c64f 21255submit='$submit'
b4eb6b3d
JH
21256subversion='$subversion'
21257sysman='$sysman'
5f80c64f
JH
21258tail='$tail'
21259tar='$tar'
5440bc8e 21260targetarch='$targetarch'
5f80c64f
JH
21261tbl='$tbl'
21262tee='$tee'
21263test='$test'
b4eb6b3d
JH
21264timeincl='$timeincl'
21265timetype='$timetype'
10bc17b6 21266tmpnam_r_proto='$tmpnam_r_proto'
5440bc8e 21267to='$to'
5f80c64f
JH
21268touch='$touch'
21269tr='$tr'
21270trnl='$trnl'
21271troff='$troff'
10bc17b6 21272ttyname_r_proto='$ttyname_r_proto'
b4eb6b3d
JH
21273u16size='$u16size'
21274u16type='$u16type'
21275u32size='$u32size'
21276u32type='$u32type'
21277u64size='$u64size'
21278u64type='$u64type'
21279u8size='$u8size'
21280u8type='$u8type'
21281uidformat='$uidformat'
21282uidsign='$uidsign'
21283uidsize='$uidsize'
21284uidtype='$uidtype'
5f80c64f
JH
21285uname='$uname'
21286uniq='$uniq'
b4eb6b3d
JH
21287uquadtype='$uquadtype'
21288use5005threads='$use5005threads'
21289use64bitall='$use64bitall'
21290use64bitint='$use64bitint'
5440bc8e 21291usecrosscompile='$usecrosscompile'
5f80c64f 21292usedl='$usedl'
b4eb6b3d
JH
21293useithreads='$useithreads'
21294uselargefiles='$uselargefiles'
21295uselongdouble='$uselongdouble'
21296usemorebits='$usemorebits'
21297usemultiplicity='$usemultiplicity'
21298usemymalloc='$usemymalloc'
5f80c64f 21299usenm='$usenm'
b4eb6b3d
JH
21300useopcode='$useopcode'
21301useperlio='$useperlio'
21302useposix='$useposix'
9514c62b 21303usereentrant='$usereentrant'
b4eb6b3d
JH
21304usesfio='$usesfio'
21305useshrplib='$useshrplib'
29209bc5 21306usesocks='$usesocks'
b4eb6b3d
JH
21307usethreads='$usethreads'
21308usevendorprefix='$usevendorprefix'
21309usevfork='$usevfork'
5f80c64f
JH
21310usrinc='$usrinc'
21311uuname='$uuname'
b4eb6b3d
JH
21312uvXUformat='$uvXUformat'
21313uvoformat='$uvoformat'
21314uvsize='$uvsize'
21315uvtype='$uvtype'
21316uvuformat='$uvuformat'
21317uvxformat='$uvxformat'
21318vendorarch='$vendorarch'
21319vendorarchexp='$vendorarchexp'
21320vendorbin='$vendorbin'
21321vendorbinexp='$vendorbinexp'
6e1038e0
MB
21322vendorhtml1='$vendorhtml1'
21323vendorhtml1exp='$vendorhtml1exp'
21324vendorhtml3='$vendorhtml3'
21325vendorhtml3exp='$vendorhtml3exp'
b4eb6b3d
JH
21326vendorlib='$vendorlib'
21327vendorlib_stem='$vendorlib_stem'
21328vendorlibexp='$vendorlibexp'
6e1038e0
MB
21329vendorman1='$vendorman1'
21330vendorman1exp='$vendorman1exp'
21331vendorman3='$vendorman3'
21332vendorman3exp='$vendorman3exp'
b4eb6b3d
JH
21333vendorprefix='$vendorprefix'
21334vendorprefixexp='$vendorprefixexp'
6e1038e0
MB
21335vendorscript='$vendorscript'
21336vendorscriptexp='$vendorscriptexp'
b4eb6b3d 21337version='$version'
861eb78d 21338version_patchlevel_string='$version_patchlevel_string'
d56c5707 21339versiononly='$versiononly'
5f80c64f 21340vi='$vi'
b4eb6b3d 21341voidflags='$voidflags'
5f80c64f 21342xlibpth='$xlibpth'
b4eb6b3d 21343xs_apiversion='$xs_apiversion'
3659ebf1
JH
21344yacc='$yacc'
21345yaccflags='$yaccflags'
5f80c64f
JH
21346zcat='$zcat'
21347zip='$zip'
21348EOT
21349
21350: Add in command line options if available
21351$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21352
21353: add special variables
21354$test -f $src/patchlevel.h && \
d00b958f 21355awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 21356echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 21357echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
21358
21359: propagate old symbols
21360if $test -f UU/config.sh; then
381aa1ff 21361 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 21362 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 21363 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
21364 set X `cat UU/oldsyms`
21365 shift
21366 case $# in
21367 0) ;;
21368 *)
21369 cat <<EOM
21370Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21371EOM
21372 echo "# Variables propagated from previous config.sh file." >>config.sh
21373 for sym in `cat UU/oldsyms`; do
21374 echo " Propagating $hint variable "'$'"$sym..."
21375 eval 'tmp="$'"${sym}"'"'
21376 echo "$tmp" | \
21377 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21378 done
21379 ;;
21380 esac
21381fi
21382
21383: Finish up by extracting the .SH files
21384case "$alldone" in
21385exit)
21386 $rm -rf UU
24ccb310 21387 echo "Extraction done."
5f80c64f
JH
21388 exit 0
21389 ;;
21390cont)
21391 ;;
21392'')
21393 dflt=''
21394 nostick=true
21395 $cat <<EOM
21396
21397If you'd like to make any changes to the config.sh file before I begin
21398to configure things, do it as a shell escape now (e.g. !vi config.sh).
21399
21400EOM
21401 rp="Press return or use a shell escape to edit config.sh:"
21402 . UU/myread
21403 nostick=''
21404 case "$ans" in
21405 '') ;;
21406 *) : in case they cannot read
21407 sh 1>&4 -c "$ans";;
21408 esac
21409 ;;
21410esac
21411
21412: if this fails, just run all the .SH files by hand
21413. ./config.sh
21414
21415echo " "
21416exec 1>&4
a43e8593 21417pwd=`pwd`
5f80c64f 21418. ./UU/extract
6904989c 21419cd "$pwd"
5f80c64f
JH
21420
21421if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21422 dflt=y
21423 case "$silent" in
21424 true) ;;
21425 *)
21426 $cat <<EOM
21427
21428Now you need to generate make dependencies by running "$make depend".
21429You might prefer to run it in background: "$make depend > makedepend.out &"
21430It can take a while, so you might not want to run it right now.
21431
21432EOM
21433 ;;
21434 esac
21435 rp="Run $make depend now?"
21436 . UU/myread
21437 case "$ans" in
21438 y*)
3d5d58b1 21439 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
21440 ;;
21441 *)
21442 echo "You must run '$make depend' then '$make'."
21443 ;;
21444 esac
21445elif test -f [Mm]akefile; then
21446 echo " "
21447 echo "Now you must run a $make."
21448else
24ccb310 21449 echo "Configure done."
5f80c64f
JH
21450fi
21451
21452if $test -f Policy.sh; then
21453 $cat <<EOM
21454
21455If you compile $package on a different machine or from a different object
21456directory, copy the Policy.sh file from this object directory to the
21457new one before you run Configure -- this will help you with most of
21458the policy defaults.
21459
21460EOM
21461fi
21462if $test -f config.msg; then
21463 echo "Hmm. I also noted the following information while running:"
21464 echo " "
21465 $cat config.msg >&4
21466 $rm -f config.msg
21467fi
21468$rm -f kit*isdone ark*isdone
21469$rm -rf UU
21470
21471: End of Configure
21472