This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update to Pod::LaTeX 0.53.
[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#
6b4667fc 23# Generated on Fri Aug 18 03:43:53 EET DST 2000 [metaconfig 3.0 PL70]
46193409 24# (with additional metaconfig patches by perlbug@perl.com)
2304df62
AD
25
26cat >/tmp/c1$$ <<EOF
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
37cat >/tmp/c2$$ <<EOF
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
43true || cat /tmp/c1$$ /tmp/c2$$
44true || exec sh $0 $argv:q
45
46(exit $?0) || cat /tmp/c2$$
47(exit $?0) || exec sh $0 $argv:q
48rm -f /tmp/c1$$ /tmp/c2$$
49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
dfe9444c
AD
68 p_=\;
69 fi
39e571d4 70fi
a0d0e21e
LW
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
81
82for p in $paths
83do
8e07c86e
AD
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
87 esac
88done
89
8e07c86e 90PATH=.$p_$PATH
2304df62
AD
91export PATH
92
dfe9444c
AD
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
ff0cee69 99if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
2304df62 109 fi
dfe9444c 110fi
cf04f91f
JH
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
dfe9444c
AD
118case "$inksh/$needksh" in
119/[a-z]*)
c4f23d77 120 ENV=''
dfe9444c
AD
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
a0d0e21e
LW
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 136EOM
dfe9444c
AD
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
2304df62 148
bfb7748a
AD
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
2304df62
AD
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
8e07c86e 161cd UU && rm -f ./*
2304df62 162
ff49bff8
JH
163ccsymbols=''
164cppccsymbols=''
165cppsymbols=''
a0d0e21e 166dynamic_ext=''
2304df62 167extensions=''
a0d0e21e 168known_extensions=''
4318d5a0 169nonxs_ext=''
bfb7748a 170static_ext=''
8ff267be 171useopcode=''
a0d0e21e 172useposix=''
ecfc5424 173d_bsd=''
40a7a20a 174d_eunice=''
2304df62
AD
175d_xenix=''
176eunicefix=''
177Mcc=''
dfe9444c 178ar=''
2304df62
AD
179awk=''
180bash=''
181bison=''
182byacc=''
183cat=''
184chgrp=''
185chmod=''
186chown=''
ecfc5424 187comm=''
2304df62
AD
188compress=''
189cp=''
190cpio=''
191cpp=''
192csh=''
193date=''
194echo=''
195egrep=''
196emacs=''
197expr=''
198find=''
199flex=''
2304df62 200grep=''
8ff267be 201gzip=''
2304df62
AD
202inews=''
203ksh=''
204less=''
205line=''
206lint=''
207ln=''
208lp=''
209lpr=''
210ls=''
211mail=''
212mailx=''
dfe9444c 213make=''
2304df62
AD
214mkdir=''
215more=''
216mv=''
693762b4 217nm=''
2304df62
AD
218nroff=''
219perl=''
220pg=''
221pmake=''
222pr=''
223rm=''
224rmail=''
225sed=''
226sendmail=''
2304df62
AD
227shar=''
228sleep=''
229smail=''
230sort=''
231submit=''
232tail=''
233tar=''
234tbl=''
693762b4 235tee=''
2304df62
AD
236test=''
237touch=''
238tr=''
239troff=''
240uname=''
241uniq=''
242uuname=''
243vi=''
244zcat=''
8ff267be 245zip=''
ccc7f9b3 246full_ar=''
1aef975c 247full_sed=''
a0d0e21e 248libswanted=''
2304df62
AD
249hint=''
250myuname=''
85e6fe83
LW
251osname=''
252osvers=''
2304df62
AD
253Author=''
254Date=''
255Header=''
256Id=''
257Locker=''
258Log=''
259RCSfile=''
260Revision=''
261Source=''
262State=''
dfe9444c
AD
263_a=''
264_exe=''
265_o=''
4633a7c4
LW
266archobjs=''
267exe_ext=''
268firstmakefile=''
269lib_ext=''
270obj_ext=''
271path_sep=''
2304df62 272afs=''
a0d0e21e 273alignbytes=''
c4f23d77 274ansi2knr=''
a0d0e21e
LW
275archlib=''
276archlibexp=''
a0d0e21e
LW
277d_archlib=''
278installarchlib=''
40000a8c
AD
279archname=''
280myarchname=''
cf2093f6
JH
281d_atolf=''
282d_atoll=''
ecfc5424 283baserev=''
2304df62
AD
284bin=''
285binexp=''
286installbin=''
d71b2b6b
JH
287bincompat5005=''
288d_bincompat5005=''
2304df62
AD
289byteorder=''
290cc=''
2304df62
AD
291ccflags=''
292cppflags=''
293ldflags=''
294lkflags=''
8e07c86e 295locincpth=''
2304df62 296optimize=''
8e07c86e 297cf_email=''
2304df62
AD
298cf_by=''
299cf_time=''
8175356b 300charsize=''
2304df62 301contains=''
a0d0e21e 302cpp_stuff=''
2304df62
AD
303cpplast=''
304cppminus=''
305cpprun=''
306cppstdin=''
68c15b6f 307crosscompile=''
2304df62 308d_access=''
5ff3f7a4 309d_accessx=''
a0d0e21e 310d_alarm=''
ecfc5424 311d_attribut=''
2304df62
AD
312d_bcmp=''
313d_bcopy=''
314d_bzero=''
315d_casti32=''
316castflags=''
317d_castneg=''
a0d0e21e
LW
318d_chown=''
319d_chroot=''
2304df62 320d_chsize=''
a0d0e21e
LW
321d_closedir=''
322d_void_closedir=''
2304df62
AD
323d_const=''
324cryptlib=''
325d_crypt=''
326d_csh=''
1aef975c 327full_csh=''
a0d0e21e
LW
328d_cuserid=''
329d_dbl_dig=''
330d_difftime=''
331d_dlerror=''
332d_dlopen=''
333d_dlsymun=''
2304df62 334d_dosuid=''
a0d0e21e 335d_suidsafe=''
85ab1d1d 336d_drand48proto=''
2304df62 337d_dup2=''
5ff3f7a4
GS
338d_eaccess=''
339d_endgrent=''
e5c9fcd0
AD
340d_endhent=''
341d_endnent=''
342d_endpent=''
5ff3f7a4 343d_endpwent=''
e5c9fcd0 344d_endsent=''
2304df62
AD
345d_fchmod=''
346d_fchown=''
347d_fcntl=''
a0d0e21e
LW
348d_fd_macros=''
349d_fd_set=''
350d_fds_bits=''
351d_fgetpos=''
2304df62
AD
352d_flexfnam=''
353d_flock=''
a0d0e21e 354d_fork=''
c5f05a91 355d_fpos64_t=''
a3540c92 356d_frexpl=''
ad27e871 357d_fs_data_s=''
5ff3f7a4 358d_fseeko=''
a0d0e21e 359d_fsetpos=''
0545a864 360d_fstatfs=''
5ff3f7a4 361d_ftello=''
5f05dabc 362d_ftime=''
363d_gettimeod=''
a0d0e21e 364d_Gconvert=''
49dabb45 365d_getcwd=''
3813c136 366d_getespwnam=''
c890dc6c 367d_getfsstat=''
5ff3f7a4 368d_getgrent=''
2304df62 369d_getgrps=''
4599a1de 370d_gethbyaddr=''
4599a1de 371d_gethbyname=''
dfe9444c 372d_gethent=''
2304df62
AD
373aphostname=''
374d_gethname=''
375d_phostname=''
376d_uname=''
dc45a647 377d_gethostprotos=''
a0d0e21e 378d_getlogin=''
ad27e871 379d_getmnt=''
ccc7f9b3 380d_getmntent=''
dfe9444c 381d_getnbyaddr=''
693762b4 382d_getnbyname=''
e5c9fcd0 383d_getnent=''
dc45a647 384d_getnetprotos=''
e5c9fcd0 385d_getpent=''
2afac517 386d_getpgid=''
2304df62 387d_getpgrp2=''
2afac517 388d_bsdgetpgrp=''
2304df62 389d_getpgrp=''
a0d0e21e 390d_getppid=''
2304df62 391d_getprior=''
693762b4
AD
392d_getpbyname=''
393d_getpbynumber=''
dc45a647 394d_getprotoprotos=''
3813c136 395d_getprpwnam=''
5ff3f7a4 396d_getpwent=''
e5c9fcd0 397d_getsent=''
dc45a647 398d_getservprotos=''
f1066039 399d_getspnam=''
693762b4
AD
400d_getsbyname=''
401d_getsbyport=''
a4f3eea9 402d_gnulibc=''
ccc7f9b3 403d_hasmntopt=''
2304df62 404d_htonl=''
43999f95 405d_iconv=''
7e1af8bc 406d_inetaton=''
13b3f787 407d_int64_t=''
2304df62 408d_isascii=''
a3540c92
JH
409d_isnan=''
410d_isnanl=''
2304df62 411d_killpg=''
dd64f1c3 412d_lchown=''
2d4389e4 413d_ldbl_dig=''
2304df62 414d_link=''
a0d0e21e
LW
415d_locconv=''
416d_lockf=''
e5c9fcd0
AD
417d_longdbl=''
418longdblsize=''
dc45a647
MB
419d_longlong=''
420longlongsize=''
49c10eea 421d_lseekproto=''
2304df62 422d_lstat=''
1e8c3fde 423d_madvise=''
a0d0e21e
LW
424d_mblen=''
425d_mbstowcs=''
426d_mbtowc=''
0f27ced1 427d_memchr=''
2304df62
AD
428d_memcmp=''
429d_memcpy=''
430d_memmove=''
431d_memset=''
432d_mkdir=''
fe749a9f 433d_mkdtemp=''
a0d0e21e 434d_mkfifo=''
fe749a9f
JH
435d_mkstemp=''
436d_mkstemps=''
a0d0e21e 437d_mktime=''
fe749a9f
JH
438d_mmap=''
439mmaptype=''
a3540c92 440d_modfl=''
fe749a9f 441d_mprotect=''
2304df62
AD
442d_msg=''
443d_msgctl=''
444d_msgget=''
445d_msgrcv=''
446d_msgsnd=''
fe749a9f
JH
447d_msync=''
448d_munmap=''
a0d0e21e 449d_nice=''
c5f05a91 450d_off64_t=''
2304df62 451d_open3=''
a0d0e21e
LW
452d_fpathconf=''
453d_pathconf=''
454d_pause=''
455d_pipe=''
8e07c86e 456d_poll=''
2304df62 457d_portable=''
ef4af2be
JH
458d_old_pthread_create_joinable=''
459old_pthread_create_joinable=''
dfe9444c
AD
460d_pthread_yield=''
461d_sched_yield=''
1cfa4ec7 462sched_yield=''
bbe6c963 463d_qgcvt=''
2304df62 464d_readdir=''
85e6fe83
LW
465d_rewinddir=''
466d_seekdir=''
467d_telldir=''
a0d0e21e 468d_readlink=''
2304df62
AD
469d_rename=''
470d_rmdir=''
471d_safebcpy=''
472d_safemcpy=''
36477c24 473d_sanemcmp=''
2304df62
AD
474d_select=''
475d_sem=''
476d_semctl=''
477d_semget=''
478d_semop=''
479d_setegid=''
480d_seteuid=''
5ff3f7a4 481d_setgrent=''
dfe9444c 482d_setgrps=''
693762b4 483d_sethent=''
a0d0e21e 484d_setlinebuf=''
2304df62 485d_setlocale=''
e5c9fcd0
AD
486d_setnent=''
487d_setpent=''
2304df62
AD
488d_setpgid=''
489d_setpgrp2=''
2afac517 490d_bsdsetpgrp=''
2304df62
AD
491d_setpgrp=''
492d_setprior=''
0c9177ab 493d_setproctitle=''
5ff3f7a4 494d_setpwent=''
2304df62
AD
495d_setregid=''
496d_setresgid=''
497d_setresuid=''
498d_setreuid=''
499d_setrgid=''
500d_setruid=''
e5c9fcd0 501d_setsent=''
2304df62 502d_setsid=''
e5c9fcd0 503d_setvbuf=''
760ac839 504d_sfio=''
8ff267be 505usesfio=''
2304df62
AD
506d_shm=''
507d_shmat=''
a0d0e21e
LW
508d_shmatprototype=''
509shmattype=''
2304df62
AD
510d_shmctl=''
511d_shmdt=''
512d_shmget=''
2c7991dc 513d_sigaction=''
8ff267be 514d_sigsetjmp=''
de4597cb
JH
515d_msg_ctrunc=''
516d_msg_dontroute=''
517d_msg_oob=''
518d_msg_peek=''
519d_msg_proxy=''
2304df62 520d_oldsock=''
de4597cb 521d_scm_rights=''
2304df62
AD
522d_socket=''
523d_sockpair=''
524sockethdr=''
525socketlib=''
13b3f787 526d_socklen_t=''
68d4903c 527d_sqrtl=''
2304df62 528d_statblks=''
0545a864
JH
529d_statfs_f_flags=''
530d_statfs_s=''
104d25b7
JH
531d_fstatvfs=''
532d_statvfs=''
c2960299
AD
533d_stdio_cnt_lval=''
534d_stdio_ptr_lval=''
16d20bd9 535d_stdiobase=''
2304df62 536d_stdstdio=''
16d20bd9
AD
537stdio_base=''
538stdio_bufsiz=''
539stdio_cnt=''
dfe9444c 540stdio_filbuf=''
16d20bd9 541stdio_ptr=''
2304df62
AD
542d_index=''
543d_strchr=''
a0d0e21e 544d_strcoll=''
2304df62
AD
545d_strctcpy=''
546d_strerrm=''
547d_strerror=''
548d_sysernlst=''
549d_syserrlst=''
a89d8a78
DH
550d_strtod=''
551d_strtol=''
ff935051 552d_strtold=''
76d49b1c 553d_strtoll=''
a89d8a78 554d_strtoul=''
ff935051
JH
555d_strtoull=''
556d_strtouq=''
a0d0e21e 557d_strxfrm=''
2304df62
AD
558d_symlink=''
559d_syscall=''
a0d0e21e 560d_sysconf=''
2304df62 561d_system=''
a0d0e21e
LW
562d_tcgetpgrp=''
563d_tcsetpgrp=''
cb86ce0e 564d_telldirproto=''
85e6fe83
LW
565d_time=''
566timetype=''
2304df62
AD
567clocktype=''
568d_times=''
569d_truncate=''
a0d0e21e
LW
570d_tzname=''
571d_umask=''
bd89102f
AD
572d_semctl_semid_ds=''
573d_semctl_semun=''
574d_union_semun=''
0545a864 575d_ustat=''
2304df62 576d_vfork=''
a0d0e21e 577usevfork=''
2304df62
AD
578d_voidsig=''
579signal_t=''
580d_volatile=''
581d_charvspr=''
582d_vprintf=''
583d_wait4=''
584d_waitpid=''
a0d0e21e
LW
585d_wcstombs=''
586d_wctomb=''
587dlext=''
85e6fe83
LW
588cccdlflags=''
589ccdlflags=''
2304df62 590dlsrc=''
232e078e 591ld=''
85e6fe83 592lddlflags=''
2304df62 593usedl=''
693762b4 594doublesize=''
5ff3f7a4 595ebcdic=''
66fe083f 596fflushNULL=''
767df6a1 597fflushall=''
8175356b 598fpossize=''
a0d0e21e 599fpostype=''
5b463ca7 600gccosandvers=''
8a27cf78 601gccversion=''
a22e52b9 602gidformat=''
785fb66b
JH
603gidsign=''
604gidsize=''
2304df62
AD
605gidtype=''
606groupstype=''
607h_fcntl=''
608h_sysfile=''
5ff3f7a4 609i_arpainet=''
ecfc5424
AD
610db_hashtype=''
611db_prefixtype=''
a0d0e21e 612i_db=''
2304df62 613i_dbm=''
8e07c86e 614i_rpcsvcdbm=''
2304df62 615d_dirnamlen=''
a0d0e21e 616direntrytype=''
2304df62 617i_dirent=''
a0d0e21e 618i_dld=''
2304df62
AD
619i_dlfcn=''
620i_fcntl=''
a0d0e21e 621i_float=''
2304df62 622i_gdbm=''
28e8609d 623d_grpasswd=''
2304df62 624i_grp=''
43999f95 625i_iconv=''
792d8dab 626i_ieeefp=''
5ff3f7a4 627i_inttypes=''
4bc88a62 628i_libutil=''
a0d0e21e 629i_limits=''
4633a7c4 630i_locale=''
7f3d1cf1 631i_machcthr=''
a0d0e21e
LW
632i_malloc=''
633i_math=''
85e6fe83 634i_memory=''
e7fb4fcc 635i_mntent=''
2304df62 636i_ndbm=''
3fd537d4 637i_netdb=''
85e6fe83 638i_neterrno=''
9cc6feab 639i_netinettcp=''
2304df62
AD
640i_niin=''
641i_sysin=''
5b34fd99 642i_poll=''
3813c136 643i_prot=''
c4747d3e 644i_pthread=''
2304df62
AD
645d_pwage=''
646d_pwchange=''
647d_pwclass=''
648d_pwcomment=''
649d_pwexpire=''
c4f23d77 650d_pwgecos=''
28e8609d 651d_pwpasswd=''
2304df62
AD
652d_pwquota=''
653i_pwd=''
760ac839 654i_sfio=''
f1066039 655i_shadow=''
86959918 656i_socks=''
2304df62 657i_stddef=''
a0d0e21e 658i_stdlib=''
2304df62
AD
659i_string=''
660strings=''
923fc586 661i_sunmath=''
5ff3f7a4 662i_sysaccess=''
2304df62
AD
663i_sysdir=''
664i_sysfile=''
665d_voidtty=''
666i_bsdioctl=''
a0d0e21e 667i_sysfilio=''
2304df62
AD
668i_sysioctl=''
669i_syssockio=''
ca52efda 670i_syslog=''
fe749a9f 671i_sysmman=''
bf0c440f 672i_sysmode=''
104d25b7 673i_sysmount=''
2304df62 674i_sysndir=''
a0d0e21e 675i_sysparam=''
8ff267be 676i_sysresrc=''
5ff3f7a4 677i_syssecrt=''
2304df62 678i_sysselct=''
1aef975c 679i_sysstat=''
0545a864 680i_sysstatfs=''
104d25b7 681i_sysstatvfs=''
a0d0e21e 682i_systimes=''
fed7345c 683i_systypes=''
de4597cb 684i_sysuio=''
25f94b33 685i_sysun=''
d4935d7f 686i_sysutsname=''
0545a864 687i_sysvfs=''
8ff267be 688i_syswait=''
2304df62
AD
689i_sgtty=''
690i_termio=''
691i_termios=''
692i_systime=''
693i_systimek=''
694i_time=''
695timeincl=''
85e6fe83 696i_unistd=''
0545a864 697i_ustat=''
2304df62 698i_utime=''
760ac839 699i_values=''
a0d0e21e 700i_stdarg=''
2304df62
AD
701i_varargs=''
702i_varhdr=''
703i_vfork=''
ff935051 704inc_version_list=''
3a096bf3 705inc_version_list_init=''
dd4e71fd
JH
706installprefix=''
707installprefixexp=''
708installstyle=''
104d25b7 709installusrbinperl=''
2304df62 710intsize=''
24fef2a7
AD
711longsize=''
712shortsize=''
2304df62 713libc=''
5cf1d1f1 714ldlibpthname=''
8ff267be 715libperl=''
2afac517 716shrpenv=''
8ff267be 717useshrplib=''
a0d0e21e 718glibpth=''
2304df62 719libpth=''
8e07c86e 720loclibpth=''
2304df62
AD
721plibpth=''
722xlibpth=''
1cfa4ec7 723ignore_versioned_solibs=''
2304df62 724libs=''
43999f95
JH
725libsdirs=''
726libsfiles=''
727libsfound=''
13b3f787 728libspath=''
85e6fe83 729lns=''
cf2093f6
JH
730d_PRIEldbl=''
731d_PRIFldbl=''
732d_PRIGldbl=''
733d_PRIeldbl=''
734d_PRIfldbl=''
735d_PRIgldbl=''
736sPRIEldbl=''
737sPRIFldbl=''
738sPRIGldbl=''
739sPRIeldbl=''
740sPRIfldbl=''
741sPRIgldbl=''
5ff3f7a4 742lseeksize=''
85e6fe83 743lseektype=''
8ff267be 744make_set_make=''
85e6fe83 745d_mymalloc=''
94b6baf5 746freetype=''
2304df62
AD
747mallocobj=''
748mallocsrc=''
749malloctype=''
750usemymalloc=''
16d20bd9
AD
751installman1dir=''
752man1dir=''
753man1direxp=''
754man1ext=''
755installman3dir=''
756man3dir=''
757man3direxp=''
758man3ext=''
2304df62
AD
759huge=''
760large=''
761medium=''
762models=''
763small=''
764split=''
a0d0e21e 765modetype=''
68c15b6f 766multiarch=''
2304df62
AD
767mydomain=''
768myhostname=''
769phostname=''
770c=''
771n=''
8e07c86e
AD
772d_eofnblk=''
773eagain=''
774o_nonblock=''
775rd_nodata=''
dfe9444c
AD
776netdb_hlen_type=''
777netdb_host_type=''
778netdb_name_type=''
779netdb_net_type=''
2304df62
AD
780groupcat=''
781hostcat=''
782passcat=''
85e6fe83
LW
783orderlib=''
784ranlib=''
3b777bb4
GS
785d_perl_otherlibdirs=''
786otherlibdirs=''
2304df62
AD
787package=''
788spackage=''
2c7991dc 789pager=''
ff935051
JH
790api_revision=''
791api_subversion=''
792api_version=''
793api_versionstring=''
ecfc5424 794patchlevel=''
49c10eea 795revision=''
760ac839 796subversion=''
bfb7748a 797version=''
49c10eea 798perl5=''
8e07c86e 799perladmin=''
4633a7c4 800perlpath=''
78691af5 801d_nv_preserves_uv=''
d6c14000 802d_nv_preserves_uv_bits=''
8175356b
JH
803i16size=''
804i16type=''
805i32size=''
806i32type=''
807i64size=''
808i64type=''
809i8size=''
810i8type=''
811ivsize=''
812ivtype=''
813nvsize=''
814nvtype=''
815u16size=''
816u16type=''
817u32size=''
818u32type=''
819u64size=''
820u64type=''
821u8size=''
822u8type=''
823uvsize=''
824uvtype=''
825ivdformat=''
6b4667fc
A
826nvEformat=''
827nvFformat=''
828nvGformat=''
829nveformat=''
830nvfformat=''
831nvgformat=''
832uvXformat=''
8175356b
JH
833uvoformat=''
834uvuformat=''
835uvxformat=''
dfe9444c 836pidtype=''
a0d0e21e 837prefix=''
1aef975c 838prefixexp=''
2304df62
AD
839installprivlib=''
840privlib=''
841privlibexp=''
842prototype=''
693762b4 843ptrsize=''
cf2093f6
JH
844d_PRIX64=''
845d_PRId64=''
846d_PRIi64=''
847d_PRIo64=''
848d_PRIu64=''
849d_PRIx64=''
850sPRIX64=''
851sPRId64=''
852sPRIi64=''
853sPRIo64=''
854sPRIu64=''
855sPRIx64=''
de1c2614 856d_quad=''
6b8eaf93 857quadkind=''
d7d93a81
JH
858quadtype=''
859uquadtype=''
85ab1d1d 860drand01=''
2304df62 861randbits=''
85ab1d1d
JH
862randfunc=''
863randseedtype=''
864seedfunc=''
2304df62
AD
865installscript=''
866scriptdir=''
867scriptdirexp=''
5ff3f7a4 868selectminbits=''
a0d0e21e 869selecttype=''
8ff267be 870sh=''
af4c28eb 871sig_count=''
2304df62 872sig_name=''
dfe9444c 873sig_name_init=''
8e07c86e 874sig_num=''
824a2ba3 875sig_num_init=''
4633a7c4
LW
876installsitearch=''
877sitearch=''
878sitearchexp=''
717c4fcc
JH
879installsitebin=''
880sitebin=''
881sitebinexp=''
25f94b33
AD
882installsitelib=''
883sitelib=''
526fdc24 884sitelib_stem=''
25f94b33 885sitelibexp=''
dd4e71fd
JH
886siteprefix=''
887siteprefixexp=''
8c99d73e 888sizesize=''
a0d0e21e
LW
889sizetype=''
890so=''
c890dc6c 891socksizetype=''
2304df62
AD
892sharpbang=''
893shsharp=''
894spitshell=''
dfe9444c 895src=''
a0d0e21e 896ssizetype=''
4633a7c4 897startperl=''
2304df62
AD
898startsh=''
899stdchar=''
ed39a0f2 900d_stdio_stream_array=''
767df6a1 901stdio_stream_array=''
2304df62 902sysman=''
5ff3f7a4 903trnl=''
a22e52b9 904uidformat=''
57def98f 905uidsign=''
785fb66b 906uidsize=''
2304df62 907uidtype=''
85ab1d1d 908archname64=''
10cc9d2a
JH
909use64bitall=''
910use64bitint=''
437814ad
LC
911ccflags_uselargefiles=''
912ldflags_uselargefiles=''
913libswanted_uselargefiles=''
249b38c6 914uselargefiles=''
b0ce926a 915uselongdouble=''
09458382 916usemorebits=''
85ab1d1d 917usemultiplicity=''
2304df62 918nm_opt=''
40a7a20a 919nm_so_opt=''
2304df62
AD
920runnm=''
921usenm=''
8ff267be 922useperlio=''
29209bc5 923usesocks=''
693762b4 924d_oldpthreads=''
aaacdc8b
GS
925use5005threads=''
926useithreads=''
dfe9444c 927usethreads=''
2304df62 928incpath=''
2304df62
AD
929mips_type=''
930usrinc=''
526fdc24
MS
931d_vendorarch=''
932installvendorarch=''
933vendorarch=''
934vendorarchexp=''
717c4fcc
JH
935d_vendorbin=''
936installvendorbin=''
937vendorbin=''
938vendorbinexp=''
a3635516
JH
939d_vendorlib=''
940installvendorlib=''
941vendorlib=''
526fdc24 942vendorlib_stem=''
a3635516
JH
943vendorlibexp=''
944usevendorprefix=''
945vendorprefix=''
946vendorprefixexp=''
2304df62
AD
947defvoidused=''
948voidflags=''
fe749a9f
JH
949pm_apiversion=''
950xs_apiversion=''
2304df62
AD
951CONFIG=''
952
ecfc5424
AD
953define='define'
954undef='undef'
955smallmach='pdp11 i8086 z8000 i80286 iAPX286'
956rmlist=''
957
958: We must find out about Eunice early
959eunicefix=':'
960if test -f /etc/unixtovms; then
961 eunicefix=/etc/unixtovms
962fi
963if test -f /etc/unixtovms.exe; then
964 eunicefix=/etc/unixtovms.exe
965fi
966
5ff3f7a4 967i_whoami=''
ff935051
JH
968: set useposix=false in your hint file to disable the POSIX extension.
969useposix=true
970: set useopcode=false in your hint file to disable the Opcode extension.
971useopcode=true
dfe9444c 972: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 973_exe=''
dfe9444c
AD
974: Extra object files, if any, needed on this platform.
975archobjs=''
ff935051
JH
976: Possible local include directories to search.
977: Set locincpth to "" in a hint file to defeat local include searches.
978locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
979locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
980:
981: no include file wanted by default
982inclwanted=''
983
dfe9444c 984groupstype=''
732c9516
JH
985: change the next line if compiling for Xenix/286 on Xenix/386
986xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
987: Possible local library directories to search.
988loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
989loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
990
991: general looking path for locating libraries
bf0c440f 992glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
732c9516
JH
993glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
994glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
995test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
996test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
997
998: Private path used by Configure to find libraries. Its value
999: is prepended to libpth. This variable takes care of special
1000: machines, like the mips. Usually, it should be empty.
1001plibpth=''
1002
1cfa4ec7
GS
1003: default library list
1004libswanted=''
921b2963 1005: some systems want to use only the non-versioned libso:s
1cfa4ec7 1006ignore_versioned_solibs=''
437814ad
LC
1007ccflags_uselargefiles=''
1008ldflags_uselargefiles=''
1009libswanted_uselargefiles=''
85ab1d1d 1010: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1011: set usesocks on the Configure command line to enable socks.
dfe9444c 1012: set usethreads on the Configure command line to enable threads.
ff935051
JH
1013: full support for void wanted by default
1014defvoidused=15
1015
ecfc5424 1016: List of libraries we want.
693762b4 1017: If anyone needs -lnet, put it in a hint file.
997d70a2 1018libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1019libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1020libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1021libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1022: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1023: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1024glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1025glibpth="/usr/shlib $glibpth"
1026: Do not use vfork unless overridden by a hint file.
1027usevfork=false
1028
8ff267be 1029: Find the basic shell for Bourne shell scripts
1030case "$sh" in
1031'')
8ff267be 1032 case "$SYSTYPE" in
1033 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1034 *) xxx='/bin/sh';;
1035 esac
1036 if test -f "$xxx"; then
1037 sh="$xxx"
1038 else
1039 : Build up a list and do a single loop so we can 'break' out.
1040 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1041 for xxx in sh bash ksh pdksh ash; do
1042 for p in $pth; do
1043 try="$try ${p}/${xxx}"
1044 done
1045 done
1046 for xxx in $try; do
1047 if test -f "$xxx"; then
1048 sh="$xxx";
8ff267be 1049 break
1050 elif test -f "$xxx.exe"; then
1051 sh="$xxx";
8ff267be 1052 break
1053 fi
1054 done
1055 fi
1056 ;;
1057esac
1058
1059case "$sh" in
1060'') cat <<EOM >&2
1061$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1062
8ff267be 1063Usually it's in /bin/sh. How did you even get this far?
46193409 1064Please contact me (Perl Maintainers) at perlbug@perl.com and
dfe9444c 1065we'll try to straighten this all out.
8ff267be 1066EOM
1067 exit 1
1068 ;;
1069esac
1070
760ac839 1071: see if sh knows # comments
8ff267be 1072if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1073 shsharp=true
1074 spitshell=cat
760ac839
LW
1075 xcat=/bin/cat
1076 test -f $xcat || xcat=/usr/bin/cat
1077 echo "#!$xcat" >try
1078 $eunicefix try
1079 chmod +x try
1080 ./try > today
1081 if test -s today; then
760ac839
LW
1082 sharpbang='#!'
1083 else
1084 echo "#! $xcat" > try
1085 $eunicefix try
1086 chmod +x try
1087 ./try > today
1088 if test -s today; then
760ac839
LW
1089 sharpbang='#! '
1090 else
760ac839
LW
1091 sharpbang=': use '
1092 fi
1093 fi
1094else
dfe9444c 1095 echo " "
8ff267be 1096 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1097 shsharp=false
1098 cd ..
1099 echo "exec grep -v '^[ ]*#'" >spitshell
1100 chmod +x spitshell
1101 $eunicefix spitshell
1102 spitshell=`pwd`/spitshell
1103 cd UU
1104 echo "I presume that if # doesn't work, #! won't work either!"
1105 sharpbang=': use '
1106fi
1107rm -f try today
1108
1109: figure out how to guarantee sh startup
8ff267be 1110case "$startsh" in
1111'') startsh=${sharpbang}${sh} ;;
1112*)
760ac839 1113esac
760ac839
LW
1114cat >try <<EOSS
1115$startsh
1116set abc
1117test "$?abc" != 1
1118EOSS
1119
1120chmod +x try
1121$eunicefix try
1122if ./try; then
8ff267be 1123 : echo "Yup, it does."
760ac839 1124else
dfe9444c
AD
1125 echo "Hmm... '$startsh' does not guarantee sh startup..."
1126 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1127fi
1128rm -f try
1129
aebf16e7
AD
1130
1131: Save command line options in file UU/cmdline.opt for later use in
1132: generating config.sh.
1133cat > cmdline.opt <<EOSH
1134# Configure command line arguments.
1135config_arg0='$0'
1136config_args='$*'
1137config_argc=$#
1138EOSH
1139argn=1
1140for arg in "$@"; do
1141 cat >>cmdline.opt <<EOSH
1142config_arg$argn='$arg'
1143EOSH
1144 argn=`expr $argn + 1`
1145done
1146
2304df62
AD
1147: produce awk script to parse command line options
1148cat >options.awk <<'EOF'
1149BEGIN {
02e93a22 1150 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1151
1152 len = length(optstr);
1153 for (i = 1; i <= len; i++) {
1154 c = substr(optstr, i, 1);
1155 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1156 if (a == ":") {
1157 arg[c] = 1;
1158 i++;
1159 }
1160 opt[c] = 1;
1161 }
1162}
1163{
1164 expect = 0;
1165 str = $0;
1166 if (substr(str, 1, 1) != "-") {
1167 printf("'%s'\n", str);
1168 next;
1169 }
1170 len = length($0);
1171 for (i = 2; i <= len; i++) {
1172 c = substr(str, i, 1);
1173 if (!opt[c]) {
1174 printf("-%s\n", substr(str, i));
1175 next;
1176 }
1177 printf("-%s\n", c);
1178 if (arg[c]) {
1179 if (i < len)
1180 printf("'%s'\n", substr(str, i + 1));
1181 else
1182 expect = 1;
1183 next;
1184 }
1185 }
1186}
1187END {
1188 if (expect)
1189 print "?";
1190}
1191EOF
1192
1193: process the command line options
4633a7c4
LW
1194set X `for arg in "$@"; do echo "X$arg"; done |
1195 sed -e s/X// | awk -f options.awk`
2304df62
AD
1196eval "set $*"
1197shift
1198rm -f options.awk
1199
1200: set up default values
1201fastread=''
1202reuseval=false
1203config_sh=''
1204alldone=''
1205error=''
1206silent=''
1207extractsh=''
ecfc5424 1208override=''
16d20bd9 1209knowitall=''
02e93a22 1210rm -f optdef.sh posthint.sh
28757baa 1211cat >optdef.sh <<EOS
1212$startsh
1213EOS
2304df62 1214
dfe9444c 1215
2304df62
AD
1216: option parsing
1217while test $# -gt 0; do
1218 case "$1" in
1219 -d) shift; fastread=yes;;
1220 -e) shift; alldone=cont;;
1221 -f)
1222 shift
1223 cd ..
1224 if test -r "$1"; then
1225 config_sh="$1"
1226 else
a0d0e21e 1227 echo "$me: cannot read config file $1." >&2
2304df62
AD
1228 error=true
1229 fi
1230 cd UU
1231 shift;;
1232 -h) shift; error=true;;
1233 -r) shift; reuseval=true;;
dfe9444c 1234 -s) shift; silent=true; realsilent=true;;
2304df62 1235 -E) shift; alldone=exit;;
16d20bd9 1236 -K) shift; knowitall=true;;
ecfc5424 1237 -O) shift; override=true;;
dfe9444c 1238 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1239 -D)
1240 shift
1241 case "$1" in
1242 *=)
1243 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1244 echo "$me: ignoring -D $1" >&2
1245 ;;
ecfc5424 1246 *=*) echo "$1" | \
1aef975c
AD
1247 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1248 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1249 esac
1250 shift
1251 ;;
1252 -U)
1253 shift
1254 case "$1" in
1aef975c 1255 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1256 *=*)
1257 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1258 echo "$me: ignoring -U $1" >&2
1259 ;;
1aef975c 1260 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1261 esac
1262 shift
1263 ;;
02e93a22
JH
1264 -A)
1265 shift
1266 xxx=''
1267 yyy="$1"
02e93a22 1268 zzz=''
5f83a3e9 1269 uuu=undef
02e93a22 1270 case "$yyy" in
5f83a3e9
JH
1271 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1272 case "$zzz" in
1273 *:*) zzz='' ;;
1274 *) xxx=append
1275 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1276 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1277 esac
1278 ;;
1279 esac
1280 case "$xxx" in
1281 '') case "$yyy" in
1282 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1283 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1284 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1285 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1286 *) xxx=`echo $yyy|sed 's!:.*!!'`
1287 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1288 esac
1289 ;;
1290 esac
02e93a22
JH
1291 case "$xxx" in
1292 append)
5f83a3e9 1293 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1294 clear)
5f83a3e9 1295 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1296 define)
1297 case "$zzz" in
1298 '') zzz=define ;;
1299 esac
5f83a3e9 1300 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1301 eval)
5f83a3e9 1302 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1303 prepend)
5f83a3e9 1304 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1305 undef)
1306 case "$zzz" in
1307 '') zzz="$uuu" ;;
1308 esac
5f83a3e9
JH
1309 echo "$yyy=$zzz" >> posthint.sh ;;
1310 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1311 esac
bde6b06b 1312 shift
02e93a22 1313 ;;
dfe9444c 1314 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1315 exit 0;;
2304df62 1316 --) break;;
a0d0e21e 1317 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1318 *) break;;
1319 esac
1320done
1321
1322case "$error" in
1323true)
1324 cat >&2 <<EOM
2afac517 1325Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1326 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1327 -d : use defaults for all answers.
1328 -e : go on without questioning past the production of config.sh.
1329 -f : specify an alternate default configuration file.
1330 -h : print this help message and exit (with an error status).
1331 -r : reuse C symbols value if possible (skips costly nm extraction).
1332 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1333 -D : define symbol to have some value:
1334 -D symbol symbol gets the value 'define'
1335 -D symbol=value symbol gets the value 'value'
2304df62 1336 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1337 -K : do not use unless you know what you are doing.
ecfc5424 1338 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1339 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1340 -U : undefine symbol:
1341 -U symbol symbol gets the value 'undef'
1342 -U symbol= symbol gets completely empty
02e93a22 1343 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1344 -A symbol=value append " "value to symbol
02e93a22
JH
1345 -A append:symbol=value append value to symbol
1346 -A define:symbol=value define symbol to have value
02e93a22
JH
1347 -A clear:symbol define symbol to be ''
1348 -A define:symbol define symbol to be 'define'
1349 -A eval:symbol=value define symbol to be eval of value
1350 -A prepend:symbol=value prepend value to symbol
1351 -A undef:symbol define symbol to be 'undef'
1352 -A undef:symbol= define symbol to be ''
2304df62
AD
1353 -V : print version number and exit (with a zero status).
1354EOM
1355 exit 1
1356 ;;
1357esac
1358
dfe9444c
AD
1359: Sanity checks
1360case "$fastread$alldone" in
1361yescont|yesexit) ;;
1362*)
aaeb8e51
GS
1363 case "$extractsh" in
1364 true) ;;
1365 *)
1366 if test ! -t 0; then
1367 echo "Say 'sh Configure', not 'sh <Configure'"
1368 exit 1
1369 fi
1370 ;;
1371 esac
dfe9444c
AD
1372 ;;
1373esac
1374
2304df62
AD
1375exec 4>&1
1376case "$silent" in
1377true) exec 1>/dev/null;;
1378esac
1379
ecfc5424 1380: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1381touch optdef.sh
1382. ./optdef.sh
02e93a22
JH
1383: create the posthint manipulation script and leave the file out there...
1384touch posthint.sh
a0d0e21e 1385
2304df62 1386: set package name
85e6fe83 1387package=perl5
1aef975c
AD
1388first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1389last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1390case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1391ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1392*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1393esac
2304df62 1394
2304df62
AD
1395: Some greps do not return status, grrr.
1396echo "grimblepritz" >grimble
1397if grep blurfldyick grimble >/dev/null 2>&1 ; then
1398 contains=contains
1399elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1400 contains=grep
1401else
1402 contains=contains
1403fi
1404rm -f grimble
1405: the following should work in any shell
1406case "$contains" in
1407contains*)
1408 echo " "
1409 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1410 cat >contains <<'EOSS'
1411grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1412EOSS
1413chmod +x contains
1414esac
1415
dfe9444c
AD
1416: Find the path to the source tree
1417case "$src" in
1418'') case "$0" in
b233458b
JH
1419 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1420 case "$src" in
1421 /*) ;;
1422 *) src=`cd ../$src && pwd` ;;
1423 esac
1424 ;;
dfe9444c
AD
1425 *) src='.';;
1426 esac;;
1427esac
1428case "$src" in
1429'') src=/
1430 rsrc=/
1431 ;;
1432/*) rsrc="$src";;
1433*) rsrc="../$src";;
1434esac
1435if test -f $rsrc/Configure && \
1436 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1437then
1438 : found it, so we are ok.
1439else
1440 rsrc=''
1441 for src in . .. ../.. ../../.. ../../../..; do
1442 if test -f ../$src/Configure && \
1443 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1444 then
1445 rsrc=../$src
1446 break
1447 fi
1448 done
1449fi
1450case "$rsrc" in
1451'')
1452 cat <<EOM >&4
1453
1454Sorry, I can't seem to locate the source dir for $package. Please start
1455Configure with an explicit path -- i.e. /some/path/Configure.
1456
1457EOM
1458 exit 1
1459 ;;
1460../.) rsrc='..';;
1461*)
1462 echo " "
1463 echo "Sources for $package found in \"$src\"." >&4
1464 ;;
1465esac
1466
1467: script used to extract .SH files with variable substitutions
1468cat >extract <<'EOS'
2000072c 1469CONFIGDOTSH=true
dfe9444c
AD
1470echo "Doing variable substitutions on .SH files..."
1471if test -f $src/MANIFEST; then
f7ab18e9 1472 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1473else
1474 echo "(Looking for .SH files under the source directory.)"
1475 set x `(cd $src; find . -name "*.SH" -print)`
1476fi
1477shift
1478case $# in
14790) set x `(cd $src; echo *.SH)`; shift;;
1480esac
1481if test ! -f $src/$1; then
1482 shift
1483fi
1484mkdir_p='
1485name=$1;
1486create="";
1487while test $name; do
1488 if test ! -d "$name"; then
1489 create="$name $create";
1490 name=`echo $name | sed -e "s|^[^/]*$||"`;
1491 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1492 else
1493 name="";
1494 fi;
1495done;
1496for file in $create; do
1497 mkdir $file;
1498done
1499'
1500for file in $*; do
1501 case "$src" in
1502 ".")
1503 case "$file" in
1504 */*)
1505 dir=`expr X$file : 'X\(.*\)/'`
1506 file=`expr X$file : 'X.*/\(.*\)'`
1507 (cd $dir && . ./$file)
1508 ;;
1509 *)
1510 . ./$file
1511 ;;
1512 esac
1513 ;;
1514 *)
1515 case "$file" in
1516 */*)
1517 dir=`expr X$file : 'X\(.*\)/'`
1518 file=`expr X$file : 'X.*/\(.*\)'`
1519 (set x $dir; shift; eval $mkdir_p)
1520 sh <$src/$dir/$file
1521 ;;
1522 *)
1523 sh <$src/$file
1524 ;;
1525 esac
1526 ;;
1527 esac
1528done
1529if test -f $src/config_h.SH; then
1530 if test ! -f config.h; then
1531 : oops, they left it out of MANIFEST, probably, so do it anyway.
1532 . $src/config_h.SH
1533 fi
1534fi
1535EOS
1536
1537: extract files and exit if asked to do so
1538case "$extractsh" in
1539true)
1540 case "$realsilent" in
1541 true) ;;
1542 *) exec 1>&4;;
1543 esac
1544 case "$config_sh" in
1545 '') config_sh='config.sh';;
1546 esac
1547 echo " "
1548 echo "Fetching answers from $config_sh..."
1549 cd ..
1550 . $config_sh
1551 test "$override" && . ./optdef.sh
1552 echo " "
1553 . UU/extract
1554 rm -rf UU
1555 echo "Done."
1556 exit 0
1557 ;;
1558esac
1559
1560: Eunice requires " " instead of "", can you believe it
1561echo " "
1562: Here we go...
1563echo "Beginning of configuration questions for $package."
1564
1565trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1566
2304df62
AD
1567: first determine how to suppress newline on echo command
1568echo " "
1569echo "Checking echo to see how to suppress newlines..."
1570(echo "hi there\c" ; echo " ") >.echotmp
1571if $contains c .echotmp >/dev/null 2>&1 ; then
1572 echo "...using -n."
1573 n='-n'
1574 c=''
1575else
1576 cat <<'EOM'
1577...using \c
1578EOM
1579 n=''
1580 c='\c'
1581fi
1582echo $n "The star should be here-->$c"
1583echo '*'
1584rm -f .echotmp
1585
1586: Now test for existence of everything in MANIFEST
1587echo " "
dfe9444c 1588if test -f $rsrc/MANIFEST; then
2304df62 1589 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1590 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1591 rm -f missing
dfe9444c 1592 tmppwd=`pwd`
2304df62 1593 for filelist in x??; do
dfe9444c 1594 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1595 done
1596 if test -s missing; then
1597 cat missing >&4
1598 cat >&4 <<'EOM'
1599
1600THIS PACKAGE SEEMS TO BE INCOMPLETE.
1601
1602You have the option of continuing the configuration process, despite the
1603distinct possibility that your kit is damaged, by typing 'y'es. If you
1604do, don't blame me if something goes wrong. I advise you to type 'n'o
46193409 1605and contact the author (perlbug@perl.com).
2304df62
AD
1606
1607EOM
1608 echo $n "Continue? [n] $c" >&4
1609 read ans
1610 case "$ans" in
1611 y*)
1612 echo "Continuing..." >&4
1613 rm -f missing
1614 ;;
1615 *)
1616 echo "ABORTING..." >&4
1617 kill $$
1618 ;;
1619 esac
1620 else
dfe9444c 1621 echo "Looks good..."
2304df62
AD
1622 fi
1623else
1624 echo "There is no MANIFEST file. I hope your kit is complete !"
1625fi
1626rm -f missing x??
1627
5ff3f7a4
GS
1628echo " "
1629: Find the appropriate value for a newline for tr
1630if test -n "$DJGPP"; then
1631 trnl='\012'
1632fi
1633if test X"$trnl" = X; then
1634 case "`echo foo|tr '\n' x 2>/dev/null`" in
1635 foox) trnl='\n' ;;
1636 esac
1637fi
1638if test X"$trnl" = X; then
1639 case "`echo foo|tr '\012' x 2>/dev/null`" in
1640 foox) trnl='\012' ;;
1641 esac
1642fi
1643if test X"$trnl" = X; then
1644 cat <<EOM >&2
1645
1646$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1647
1648EOM
1649 exit 1
1650fi
1651
2304df62
AD
1652: compute the number of columns on the terminal for proper question formatting
1653case "$COLUMNS" in
1654'') COLUMNS='80';;
1655esac
1656
1657: set up the echo used in my read
1658myecho="case \"\$xxxm\" in
1659'') echo $n \"\$rp $c\" >&4;;
1660*) case \"\$rp\" in
1661 '') echo $n \"[\$xxxm] $c\";;
1662 *)
1663 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1664 echo \"\$rp\" >&4
1665 echo $n \"[\$xxxm] $c\" >&4
1666 else
1667 echo $n \"\$rp [\$xxxm] $c\" >&4
1668 fi
1669 ;;
1670 esac;;
1671esac"
1672
1673: now set up to do reads with possible shell escape and default assignment
1674cat <<EOSC >myread
28757baa 1675$startsh
2304df62
AD
1676xxxm=\$dflt
1677$myecho
1678ans='!'
1679case "\$fastread" in
1680yes) case "\$dflt" in
1681 '') ;;
1682 *) ans='';
1683 case "\$silent-\$rp" in
1684 true-) ;;
1685 *) echo " " >&4;;
1686 esac;;
1687 esac;;
1688*) case "\$silent" in
1689 true) case "\$rp" in
1690 '') ans='';;
1691 esac;;
1692 esac;;
1693esac
1694while expr "X\$ans" : "X!" >/dev/null; do
1695 read answ
1696 set x \$xxxm
1697 shift
dfe9444c 1698 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1699 case "\$answ" in
dfe9444c
AD
1700 "!")
1701 sh 1>&4
1702 echo " "
1703 $myecho
1704 ;;
1705 !*)
1706 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1707 shift
1708 sh 1>&4 -c "\$*"
1709 echo " "
1710 $myecho
1711 ;;
2304df62
AD
1712 "\$ans")
1713 case "\$ans" in
ecfc5424
AD
1714 \\&*)
1715 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1716 shift
1717 case "\$1" in
1718 -d)
1719 fastread=yes
40a7a20a 1720 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1721 ;;
1722 -*)
40a7a20a 1723 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1724 ;;
1725 esac
1726 $myecho
1727 ans=!
1728 ;;
2304df62
AD
1729 esac;;
1730 *)
1731 case "\$aok" in
1732 y)
1733 echo "*** Substitution done -- please confirm."
1734 xxxm="\$ans"
c9795ab7 1735 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1736 xxxm="\$ans"
1737 ans=!
1738 ;;
1739 *)
1740 echo "*** Error -- try again."
1741 ans=!
1742 ;;
1743 esac
1744 $myecho
1745 ;;
1746 esac
1747 case "\$ans\$xxxm\$nostick" in
1748 '')
1749 ans=!
1750 $myecho
1751 ;;
1752 esac
1753done
1754case "\$ans" in
1755'') ans="\$xxxm";;
1756esac
1757EOSC
1758
1759: create .config dir to save info across Configure sessions
1760test -d ../.config || mkdir ../.config
1761cat >../.config/README <<EOF
1762This directory created by Configure to save information that should
dfe9444c 1763persist across sessions for $package.
2304df62
AD
1764
1765You may safely delete it if you wish.
1766EOF
1767
0107c034 1768xpatchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1769case "$usedevel" in
0107c034
JH
1770$define|true|[yY]*) ;;
1771*) case "$xpatchlevel" in
1772 *[13579])
1773 cat >&4 <<EOH
1774*** WHOA THERE!!! ***
1775
1776 This is an UNSTABLE DEVELOPMENT release.
1777 (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1778 and that signifies a development release. If you want a
1779 maintenance release, you want an even-numbered release.)
1780
1781 Do ***NOT*** install this into production use.
1782 Data corruption and crashes are possible.
1783
1784 It is most seriously suggested that you do not continue any further
1785 unless you want to help in developing and debugging Perl.
1786
1787EOH
1788 rp='Do you really want to continue?'
1789 dflt='n'
1790 . ./myread
1791 case "$ans" in
1792 [yY]) echo >&4 "Okay, continuing." ;;
1793 *) echo >&4 "Okay, bye."
1794 exit 1
1795 ;;
1796 esac
1797 ;;
1798 esac
1799 ;;
1800esac
1801
2304df62
AD
1802: general instructions
1803needman=true
1804firsttime=true
760ac839 1805user=`(logname) 2>/dev/null`
dfe9444c
AD
1806case "$user" in
1807'') user=`whoami 2>&1`;;
760ac839 1808esac
2304df62
AD
1809if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1810 firsttime=false
1811 echo " "
1812 rp='Would you like to see the instructions?'
1813 dflt=n
1814 . ./myread
1815 case "$ans" in
1816 [yY]*) ;;
1817 *) needman=false;;
1818 esac
1819fi
1820if $needman; then
1821 cat <<EOH
4e2a5f63 1822
2304df62 1823This installation shell script will examine your system and ask you questions
a0d0e21e 1824to determine how the perl5 package should be installed. If you get
2304df62
AD
1825stuck on a question, you may use a ! shell escape to start a subshell or
1826execute a command. Many of the questions will have default answers in square
1827brackets; typing carriage return will give you the default.
1828
1829On some of the questions which ask for file or directory names you are allowed
1830to use the ~name construct to specify the login directory belonging to "name",
1831even if you don't have a shell which knows about that. Questions where this is
1832allowed will be marked "(~name ok)".
1833
1834EOH
1835 rp=''
1836 dflt='Type carriage return to continue'
1837 . ./myread
1838 cat <<'EOH'
1839
1840The prompter used in this script allows you to use shell variables and
1841backticks in your answers. You may use $1, $2, etc... to refer to the words
1842in the default answer, as if the default line was a set of arguments given to a
1843script shell. This means you may also use $* to repeat the whole default line,
1844so you do not have to re-type everything to add something to the default.
1845
1846Everytime there is a substitution, you will have to confirm. If there is an
1847error (e.g. an unmatched backtick), the default answer will remain unchanged
1848and you will be prompted again.
1849
1850If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1851the questions and use the computed defaults (or the previous answers if there
1852was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1853You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1854on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1855
1856EOH
1857 . ./myread
1858 cat <<EOH
1859
1860Much effort has been expended to ensure that this shell script will run on any
1861Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1862Configure and run it again. If you can't run Configure for some reason,
1863you'll have to generate a config.sh file by hand. Whatever problems you
46193409 1864have, let me (perlbug@perl.com) know how I blew it.
2304df62
AD
1865
1866This installation script affects things in two ways:
1867
18681) it may do direct variable substitutions on some of the files included
1869 in this kit.
18702) it builds a config.h file for inclusion in C programs. You may edit
1871 any of these files as the need arises after running this script.
1872
1873If you make a mistake on a question, there is no easy way to back up to it
1874currently. The easiest thing to do is to edit config.sh and rerun all the SH
1875files. Configure will offer to let you do this before it runs the SH files.
1876
1877EOH
1878 dflt='Type carriage return to continue'
1879 . ./myread
1880 case "$firsttime" in
1881 true) echo $user >>../.config/instruct;;
1882 esac
1883fi
1884
2304df62
AD
1885: find out where common programs are
1886echo " "
1887echo "Locating common programs..." >&4
1888cat <<EOSC >loc
1889$startsh
1890case \$# in
18910) exit 1;;
1892esac
1893thing=\$1
1894shift
1895dflt=\$1
1896shift
1897for dir in \$*; do
1898 case "\$thing" in
1899 .)
1900 if test -d \$dir/\$thing; then
1901 echo \$dir
1902 exit 0
1903 fi
1904 ;;
1905 *)
a0d0e21e 1906 for thisthing in \$dir/\$thing; do
ecfc5424 1907 : just loop through to pick last item
a0d0e21e 1908 done
25f94b33 1909 if test -f \$thisthing; then
a0d0e21e 1910 echo \$thisthing
2304df62
AD
1911 exit 0
1912 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1913 if test -n "$DJGPP"; then
1914 echo \$dir/\$thing.exe
1915 else
1916 : on Eunice apparently
1917 echo \$dir/\$thing
1918 fi
2304df62
AD
1919 exit 0
1920 fi
1921 ;;
1922 esac
1923done
1924echo \$dflt
1925exit 1
1926EOSC
1927chmod +x loc
1928$eunicefix loc
1929loclist="
1930awk
1931cat
ecfc5424 1932comm
2304df62
AD
1933cp
1934echo
1935expr
1936grep
a0d0e21e 1937ls
dfe9444c 1938make
2304df62 1939mkdir
2304df62
AD
1940rm
1941sed
1942sort
85e6fe83 1943touch
2304df62
AD
1944tr
1945uniq
1946"
1947trylist="
1948Mcc
dfe9444c 1949ar
2304df62
AD
1950byacc
1951cpp
1952csh
1953date
1954egrep
8ff267be 1955gzip
2c7991dc 1956less
8ff267be 1957ln
2c7991dc 1958more
693762b4 1959nm
2304df62 1960nroff
2c7991dc 1961pg
2304df62
AD
1962test
1963uname
8ff267be 1964zip
2304df62 1965"
8e07c86e 1966pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1967pth="$pth /lib /usr/lib"
1968for file in $loclist; do
dfe9444c
AD
1969 eval xxx=\$$file
1970 case "$xxx" in
1971 /*|?:[\\/]*)
1972 if test -f "$xxx"; then
1973 : ok
1974 else
1975 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1976 xxx=`./loc $file $file $pth`
1977 fi
1978 ;;
1979 '') xxx=`./loc $file $file $pth`;;
1980 *) xxx=`./loc $xxx $xxx $pth`;;
1981 esac
2304df62
AD
1982 eval $file=$xxx
1983 eval _$file=$xxx
1984 case "$xxx" in
1985 /*)
1986 echo $file is in $xxx.
1987 ;;
8e07c86e
AD
1988 ?:[\\/]*)
1989 echo $file is in $xxx.
1990 ;;
2304df62 1991 *)
25f94b33
AD
1992 echo "I don't know where '$file' is, and my life depends on it." >&4
1993 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1994 exit 1
2304df62
AD
1995 ;;
1996 esac
1997done
1998echo " "
1999echo "Don't worry if any of the following aren't found..."
2000say=offhand
2001for file in $trylist; do
dfe9444c
AD
2002 eval xxx=\$$file
2003 case "$xxx" in
2004 /*|?:[\\/]*)
2005 if test -f "$xxx"; then
2006 : ok
2007 else
2008 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2009 xxx=`./loc $file $file $pth`
2010 fi
2011 ;;
2012 '') xxx=`./loc $file $file $pth`;;
2013 *) xxx=`./loc $xxx $xxx $pth`;;
2014 esac
2304df62
AD
2015 eval $file=$xxx
2016 eval _$file=$xxx
2017 case "$xxx" in
2018 /*)
2019 echo $file is in $xxx.
2020 ;;
8e07c86e
AD
2021 ?:[\\/]*)
2022 echo $file is in $xxx.
2023 ;;
2304df62
AD
2024 *)
2025 echo "I don't see $file out there, $say."
2026 say=either
2027 ;;
2028 esac
2029done
2030case "$egrep" in
2031egrep)
2032 echo "Substituting grep for egrep."
2033 egrep=$grep
2034 ;;
2035esac
8ff267be 2036case "$ln" in
2037ln)
2038 echo "Substituting cp for ln."
2039 ln=$cp
2040 ;;
2041esac
2304df62
AD
2042case "$test" in
2043test)
2044 echo "Hopefully test is built into your sh."
2045 ;;
2046*)
ecfc5424 2047 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
2048 echo "Using the test built into your sh."
2049 test=test
2050 _test=test
2051 fi
2052 ;;
2053esac
2054case "$echo" in
2055echo)
2056 echo "Hopefully echo is built into your sh."
2057 ;;
2058'') ;;
2059*)
2060 echo " "
2061echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2062 $echo $n "hi there$c" >foo1
2063 echo $n "hi there$c" >foo2
2064 if cmp foo1 foo2 >/dev/null 2>&1; then
2065 echo "They are compatible. In fact, they may be identical."
2066 else
2067 case "$n" in
2068 '-n') n='' c='\c';;
2069 *) n='-n' c='';;
2070 esac
2071 cat <<FOO
2072They are not compatible! You are probably running ksh on a non-USG system.
2073I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2074have echo built in and we may have to run some Bourne shell scripts. That
2075means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2076
2077FOO
2078 $echo $n "The star should be here-->$c"
2079 $echo "*"
2080 fi
2081 $rm -f foo1 foo2
2082 ;;
2083esac
2084
2573c5f9
JH
2085cat <<EOS >checkcc
2086$startsh
2087EOS
2088cat <<'EOSC' >>checkcc
2089case "$cc" in
2090'') ;;
2091*) $rm -f try try.*
2092 $cat >try.c <<EOM
2093int main(int argc, char *argv[]) {
2094 return 0;
2095}
2096EOM
2097 if $cc -o try try.c; then
2098 :
2099 else
2100 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2101 despair=yes
2102 trygcc=yes
2103 case "$cc" in
2104 *gcc*) trygcc=no ;;
2105 esac
2106 case "`$cc -v -c try.c 2>&1`" in
2107 *gcc*) trygcc=no ;;
2108 esac
2109 if $test X"$trygcc" = Xyes; then
2110 if gcc -o try -c try.c; then
2111 echo " "
2112 echo "You seem to have a working gcc, though." >&4
2113 rp="Would you like to use it?"
2114 dflt=y
2115 if $test -f myread; then
2116 . ./myread
2117 else
2118 if $test -f UU/myread; then
2119 . ./UU/myread
2120 else
2121 echo "Cannot find myread, sorry. Aborting." >&2
2122 exit 1
2123 fi
2124 fi
2125 case "$ans" in
2126 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2127 esac
2128 fi
2129 fi
2130 if $test X"$despair" = Xyes; then
2131 echo "You need to find a working C compiler." >&4
2132 echo "I cannot continue any further, aborting." >&4
2133 exit 1
2134 fi
2135 fi
2136 $rm -f try try.*
2137 ;;
2138esac
2139EOSC
2140
a0d0e21e
LW
2141: determine whether symbolic links are supported
2142echo " "
2143$touch blurfl
2144if $ln -s blurfl sym > /dev/null 2>&1 ; then
2145 echo "Symbolic links are supported." >&4
2146 lns="$ln -s"
2147else
2148 echo "Symbolic links are NOT supported." >&4
2149 lns="$ln"
2150fi
2151$rm -f blurfl sym
2152
ecfc5424
AD
2153: see whether [:lower:] and [:upper:] are supported character classes
2154echo " "
ecfc5424
AD
2155case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2156ABYZ)
2157 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2158 up='[:upper:]'
2159 low='[:lower:]'
2160 ;;
28e8609d
JH
2161*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2162 # (0xc9 and 0xd1), therefore that is a nice testing point.
2163 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2164 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2165 ij) up='[A-Z]'
2166 low='[a-z]'
2167 ;;
2168 esac
2169 fi
2170 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2171 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2172 ij) up='A-Z'
2173 low='a-z'
2174 ;;
2175 esac
2176 fi
2177 if test "X$up" = X -o "X$low" = X; then
2178 case "`echo IJ | od -x 2>/dev/null`" in
2179 *C9D1*|*c9d1*)
2180 echo "Hey, this might be EBCDIC." >&4
2181 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2182 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2183 ij) up='[A-IJ-RS-Z]'
2184 low='[a-ij-rs-z]'
2185 ;;
2186 esac
2187 fi
2188 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2189 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2190 ij) up='A-IJ-RS-Z'
2191 low='a-ij-rs-z'
2192 ;;
2193 esac
2194 fi
2195 ;;
2196 esac
2197 fi
2198esac
3eaeeeae 2199case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2200ij)
2201 echo "Using $up and $low to convert case." >&4
2202 ;;
ecfc5424 2203*)
28e8609d
JH
2204 echo "I don't know how to translate letters from upper to lower case." >&4
2205 echo "Your tr is not acting any way I know of." >&4
2206 exit 1
2207 ;;
ecfc5424
AD
2208esac
2209: set up the translation script tr, must be called with ./tr of course
2210cat >tr <<EOSC
2211$startsh
2212case "\$1\$2" in
2213'[A-Z][a-z]') exec $tr '$up' '$low';;
2214'[a-z][A-Z]') exec $tr '$low' '$up';;
2215esac
2216exec $tr "\$@"
2217EOSC
2218chmod +x tr
2219$eunicefix tr
2220
2304df62
AD
2221: Try to determine whether config.sh was made on this system
2222case "$config_sh" in
2223'')
43999f95
JH
2224myuname=`$uname -a 2>/dev/null`
2225$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2226# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2227# because the A-Z/a-z are not consecutive.
a0d0e21e 2228myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2229 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2230newmyuname="$myuname"
2304df62 2231dflt=n
16d20bd9
AD
2232case "$knowitall" in
2233'')
2234 if test -f ../config.sh; then
2235 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2236 eval "`grep myuname= ../config.sh`"
2237 fi
2238 if test "X$myuname" = "X$newmyuname"; then
2239 dflt=y
2240 fi
2304df62 2241 fi
16d20bd9
AD
2242 ;;
2243*) dflt=y;;
2244esac
2304df62
AD
2245
2246: Get old answers from old config file if Configure was run on the
2247: same system, otherwise use the hints.
2248hint=default
2249cd ..
2250if test -f config.sh; then
16d20bd9
AD
2251 echo " "
2252 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2253 . UU/myread
2254 case "$ans" in
2255 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2256 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2257 tmp_n="$n"
2258 tmp_c="$c"
85cad39c 2259 tmp_sh="$sh"
2304df62
AD
2260 . ./config.sh
2261 cp config.sh UU
ecfc5424
AD
2262 n="$tmp_n"
2263 c="$tmp_c"
85cad39c 2264 : Older versions did not always set $sh. Catch re-use of such
2265 : an old config.sh.
2266 case "$sh" in
2267 '') sh="$tmp_sh" ;;
2268 esac
2304df62
AD
2269 hint=previous
2270 ;;
2271 esac
2272fi
2573c5f9 2273. ./UU/checkcc
2304df62
AD
2274if test ! -f config.sh; then
2275 $cat <<EOM
2276
4e2a5f63
AD
2277First time through, eh? I have some defaults handy for some systems
2278that need some extra help getting the Configure answers right:
2304df62
AD
2279
2280EOM
dfe9444c 2281 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2282 dflt=''
2283 : Half the following guesses are probably wrong... If you have better
46193409 2284 : tests or hints, please send them to perlbug@perl.com
2304df62 2285 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2286 $test -f /irix && osname=irix
85e6fe83
LW
2287 $test -f /xenix && osname=sco_xenix
2288 $test -f /dynix && osname=dynix
2289 $test -f /dnix && osname=dnix
5f05dabc 2290 $test -f /lynx.os && osname=lynxos
2291 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2292 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2293 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2294 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2295 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2296 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2297 $test -d /usr/apollo/bin && osname=apollo
2298 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2299 $test -d /usr/include/minix && osname=minix
e060872b 2300 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2301 osname=machten
4633a7c4 2302 if $test -x /sbin/version; then
dfe9444c 2303 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2304 $sed -e 's/[A-Za-z]$//'`
2305 elif $test -x /usr/etc/version; then
dfe9444c 2306 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2307 $sed -e 's/[A-Za-z]$//'`
2308 else
2309 osvers="$2.$3"
2310 fi
2311 fi
aaacdc8b
GS
2312
2313 $test -f /sys/posix.dll &&
2314 $test -f /usr/bin/what &&
2315 set X `/usr/bin/what /sys/posix.dll` &&
2316 $test "$3" = UWIN &&
2317 osname=uwin &&
2318 osvers="$5"
2319
2304df62
AD
2320 if $test -f $uname; then
2321 set X $myuname
2322 shift
2323
2304df62 2324 case "$5" in
85e6fe83 2325 fps*) osname=fps ;;
2304df62
AD
2326 mips*)
2327 case "$4" in
85e6fe83
LW
2328 umips) osname=umips ;;
2329 *) osname=mips ;;
2304df62 2330 esac;;
85e6fe83
LW
2331 [23]100) osname=mips ;;
2332 next*) osname=next ;;
ecfc5424 2333 i386*)
c6912327
JH
2334 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2335 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2336 osname='sco'
2337 osvers=$tmp
2338 elif $test -f /etc/kconfig; then
ecfc5424 2339 osname=isc
bd628c73 2340 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2341 osvers=4
2342 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2343 osvers=3
2304df62 2344 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2345 osvers=2
ecfc5424
AD
2346 fi
2347 fi
2000072c 2348 tmp=''
ecfc5424 2349 ;;
c4f23d77
AD
2350 pc*)
2351 if test -n "$DJGPP"; then
2352 osname=dos
2353 osvers=djgpp
2354 fi
2355 ;;
2304df62
AD
2356 esac
2357
2358 case "$1" in
a0d0e21e
LW
2359 aix) osname=aix
2360 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2361 case "$tmp" in
1aef975c 2362 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2363 '<3240'|'<>3240') osvers=3.2.0 ;;
2364 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2365 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2366 *) osvers=$tmp;;
a0d0e21e
LW
2367 esac
2368 ;;
aaacdc8b
GS
2369 bsd386) osname=bsd386
2370 osvers=`$uname -r`
2371 ;;
2372 cygwin*) osname=cygwin
2373 osvers="$3"
2374 ;;
23f87696
SZ
2375 *dc.osx) osname=dcosx
2376 osvers="$3"
2377 ;;
a0d0e21e
LW
2378 dnix) osname=dnix
2379 osvers="$3"
2380 ;;
2381 domainos) osname=apollo
2382 osvers="$3"
2383 ;;
2384 dgux) osname=dgux
2385 osvers="$3"
2386 ;;
760ac839 2387 dynixptx*) osname=dynixptx
e58e581d 2388 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2389 ;;
a0d0e21e
LW
2390 freebsd) osname=freebsd
2391 osvers="$3" ;;
2392 genix) osname=genix ;;
2393 hp*) osname=hpux
bfb7748a 2394 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2395 ;;
a78b0d02 2396 irix*) osname=irix
a0d0e21e
LW
2397 case "$3" in
2398 4*) osvers=4 ;;
2399 5*) osvers=5 ;;
ecfc5424 2400 *) osvers="$3" ;;
a0d0e21e
LW
2401 esac
2402 ;;
2403 linux) osname=linux
2404 case "$3" in
a0d0e21e
LW
2405 *) osvers="$3" ;;
2406 esac
2407 ;;
28e8609d
JH
2408 MiNT) osname=mint
2409 ;;
2410 netbsd*) osname=netbsd
ecfc5424
AD
2411 osvers="$3"
2412 ;;
4e81affe
MM
2413 news-os) osvers="$3"
2414 case "$3" in
2415 4*) osname=newsos4 ;;
2416 *) osname=newsos ;;
2417 esac
2418 ;;
aaacdc8b
GS
2419 next*) osname=next ;;
2420 POSIX-BC | posix-bc ) osname=posix-bc
2421 osvers="$3"
a0d0e21e 2422 ;;
ae3afa4e
TH
2423 powerux | power_ux | powermax_os | powermaxos | \
2424 powerunix | power_unix) osname=powerux
2425 osvers="$3"
2426 ;;
aaacdc8b
GS
2427 qnx) osname=qnx
2428 osvers="$4"
2429 ;;
a0d0e21e
LW
2430 solaris) osname=solaris
2431 case "$3" in
2432 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2433 *) osvers="$3" ;;
a0d0e21e
LW
2434 esac
2435 ;;
85e6fe83
LW
2436 sunos) osname=sunos
2437 case "$3" in
85e6fe83
LW
2438 5*) osname=solaris
2439 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2440 *) osvers="$3" ;;
2304df62
AD
2441 esac
2442 ;;
a0d0e21e 2443 titanos) osname=titanos
85e6fe83 2444 case "$3" in
a0d0e21e
LW
2445 1*) osvers=1 ;;
2446 2*) osvers=2 ;;
2447 3*) osvers=3 ;;
2448 4*) osvers=4 ;;
ecfc5424 2449 *) osvers="$3" ;;
2304df62
AD
2450 esac
2451 ;;
85e6fe83 2452 ultrix) osname=ultrix
ecfc5424 2453 osvers="$3"
2304df62 2454 ;;
28757baa 2455 osf1|mls+) case "$5" in
fed7345c
AD
2456 alpha)
2457 osname=dec_osf
2aa76180
JH
2458 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2459 case "$osvers" in
2460 [1-9].[0-9]*) ;;
2461 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2462 esac
ecfc5424
AD
2463 ;;
2464 hp*) osname=hp_osf1 ;;
2465 mips) osname=mips_osf1 ;;
85e6fe83
LW
2466 esac
2467 ;;
0337d152
BG
2468 unixware) osname=svr5
2469 osvers="$4"
2470 ;;
2471 uts) osname=uts
a0d0e21e
LW
2472 osvers="$3"
2473 ;;
85e6fe83 2474 $2) case "$osname" in
2304df62 2475 *isc*) ;;
a0d0e21e 2476 *freebsd*) ;;
5f05dabc 2477 svr*)
a0d0e21e
LW
2478 : svr4.x or possibly later
2479 case "svr$3" in
2480 ${osname}*)
2481 osname=svr$3
2482 osvers=$4
2483 ;;
2484 esac
2485 case "$osname" in
2486 svr4.0)
2487 : Check for ESIX
2488 if test -f /stand/boot ; then
2489 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2490 if test -n "$INITPROG" -a -f "$INITPROG"; then
2491 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2492 if test -n "$isesix"; then
a0d0e21e
LW
2493 osname=esix4
2494 fi
2495 fi
2496 fi
2497 ;;
2498 esac
2499 ;;
2304df62 2500 *) if test -f /etc/systemid; then
a0d0e21e
LW
2501 osname=sco
2502 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2503 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2504 osvers=$1.$2.$3
c4f23d77 2505 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2506 osvers=$1.$2
c4f23d77 2507 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2508 osvers=$1
2304df62 2509 fi
a0d0e21e
LW
2510 else
2511 case "$osname" in
2512 '') : Still unknown. Probably a generic Sys V.
2513 osname="sysv"
2514 osvers="$3"
2515 ;;
2516 esac
2304df62
AD
2517 fi
2518 ;;
2519 esac
2520 ;;
a0d0e21e
LW
2521 *) case "$osname" in
2522 '') : Still unknown. Probably a generic BSD.
2523 osname="$1"
2524 osvers="$3"
2525 ;;
2526 esac
2527 ;;
2304df62
AD
2528 esac
2529 else
dfe9444c
AD
2530 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2531 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2532 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2533 osname=news_os
2304df62 2534 fi
dfe9444c 2535 $rm -f UU/kernel.what
8e07c86e
AD
2536 elif test -d c:/.; then
2537 set X $myuname
2538 osname=os2
2539 osvers="$5"
2304df62
AD
2540 fi
2541 fi
85e6fe83 2542
a0d0e21e
LW
2543 : Now look for a hint file osname_osvers, unless one has been
2544 : specified already.
2545 case "$hintfile" in
2546 ''|' ')
1e127011 2547 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2548 : Also try without trailing minor version numbers.
1e127011
DD
2549 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2550 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2551 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2552 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2553 case "$file" in
2554 '') dflt=none ;;
2555 *) case "$osvers" in
2556 '') dflt=$file
2557 ;;
dfe9444c 2558 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2559 dflt=$file
dfe9444c 2560 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2561 dflt=$xfile
dfe9444c 2562 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2563 dflt=$xxfile
dfe9444c 2564 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2565 dflt=$xxxfile
dfe9444c 2566 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2567 dflt=$xxxxfile
dfe9444c 2568 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2569 dflt="${osname}"
2570 else
2571 dflt=none
2572 fi
2573 ;;
2574 esac
85e6fe83
LW
2575 ;;
2576 esac
4e2a5f63
AD
2577 if $test -f Policy.sh ; then
2578 case "$dflt" in
2579 *Policy*) ;;
2580 none) dflt="Policy" ;;
2581 *) dflt="Policy $dflt" ;;
2582 esac
2583 fi
85e6fe83 2584 ;;
a0d0e21e 2585 *)
ecfc5424 2586 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2587 ;;
2304df62 2588 esac
1aef975c 2589
4e2a5f63
AD
2590 if $test -f Policy.sh ; then
2591 $cat <<EOM
2592
2593There's also a Policy hint file available, which should make the
2594site-specific (policy) questions easier to answer.
2595EOM
2596
2597 fi
2598
2304df62
AD
2599 $cat <<EOM
2600
2601You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2602A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2603is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2604
2605EOM
4e2a5f63 2606
2304df62 2607 rp="Which of these apply, if any?"
dfe9444c 2608 . UU/myread
85e6fe83
LW
2609 tans=$ans
2610 for file in $tans; do
4e2a5f63
AD
2611 if $test X$file = XPolicy -a -f Policy.sh; then
2612 . Policy.sh
2613 $cat Policy.sh >> UU/config.sh
2614 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2615 . $src/hints/$file.sh
2616 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2617 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2618 : nothing
2619 else
85e6fe83
LW
2620 : Give one chance to correct a possible typo.
2621 echo "$file.sh does not exist"
2622 dflt=$file
2623 rp="hint to use instead?"
dfe9444c 2624 . UU/myread
85e6fe83 2625 for file in $ans; do
dfe9444c
AD
2626 if $test -f "$src/hints/$file.sh"; then
2627 . $src/hints/$file.sh
2628 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2629 elif $test X$ans = X -o X$ans = Xnone ; then
2630 : nothing
2631 else
2632 echo "$file.sh does not exist -- ignored."
2633 fi
2634 done
2304df62
AD
2635 fi
2636 done
85e6fe83 2637
2304df62 2638 hint=recommended
85e6fe83 2639 : Remember our hint file for later.
dfe9444c 2640 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2641 hintfile="$file"
85e6fe83 2642 else
a0d0e21e 2643 hintfile=''
85e6fe83 2644 fi
2304df62
AD
2645fi
2646cd UU
2647;;
2648*)
2649 echo " "
2650 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2651 tmp_n="$n"
2652 tmp_c="$c"
2304df62
AD
2653 cd ..
2654 cp $config_sh config.sh 2>/dev/null
a78b0d02 2655 chmod +w config.sh
2304df62
AD
2656 . ./config.sh
2657 cd UU
2658 cp ../config.sh .
ecfc5424
AD
2659 n="$tmp_n"
2660 c="$tmp_c"
2304df62
AD
2661 hint=previous
2662 ;;
2663esac
1aef975c
AD
2664test "$override" && . ./optdef.sh
2665myuname="$newmyuname"
2304df62
AD
2666
2667: Restore computed paths
2668for file in $loclist $trylist; do
2669 eval $file="\$_$file"
2670done
2671
85e6fe83 2672cat << EOM
a0d0e21e 2673
85e6fe83 2674Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2675The default value is probably right if the name rings a bell. Otherwise,
2676since spelling matters for me, either accept the default or answer "none"
2677to leave it blank.
a0d0e21e 2678
85e6fe83 2679EOM
85e6fe83 2680case "$osname" in
a0d0e21e 2681 ''|' ')
85e6fe83 2682 case "$hintfile" in
a0d0e21e 2683 ''|' '|none) dflt=none ;;
ecfc5424 2684 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2685 esac
2686 ;;
2687 *) dflt="$osname" ;;
2688esac
2689rp="Operating system name?"
2690. ./myread
2691case "$ans" in
ecfc5424
AD
2692none) osname='' ;;
2693*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2694esac
8ff267be 2695echo " "
2696case "$osvers" in
2697 ''|' ')
2698 case "$hintfile" in
2699 ''|' '|none) dflt=none ;;
2700 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2701 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2702 case "$dflt" in
2703 ''|' ') dflt=none ;;
2704 esac
2705 ;;
2706 esac
2707 ;;
2708 *) dflt="$osvers" ;;
2709esac
2710rp="Operating system version?"
2711. ./myread
2712case "$ans" in
2713none) osvers='' ;;
2714*) osvers="$ans" ;;
2715esac
2716
02e93a22
JH
2717
2718. ./posthint.sh
2719
2304df62 2720: who configured the system
59b83a6f 2721cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2722cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2723case "$cf_by" in
2724"")
8ff267be 2725 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2726 case "$cf_by" in
2727 "") cf_by=unknown ;;
8ff267be 2728 esac ;;
2729esac
2304df62 2730
dfe9444c
AD
2731: set up the script used to warn in case of inconsistency
2732cat <<EOS >whoa
2733$startsh
2734EOS
2735cat <<'EOSC' >>whoa
2736dflt=y
2737echo " "
2738echo "*** WHOA THERE!!! ***" >&4
2739echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2740rp=" Keep the $hint value?"
2741. ./myread
2742case "$ans" in
2743y) td=$was; tu=$was;;
2744esac
2745EOSC
2746
2747: function used to set $1 to $val
2748setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2749case "$val$was" in
2750$define$undef) . ./whoa; eval "$var=\$td";;
2751$undef$define) . ./whoa; eval "$var=\$tu";;
2752*) eval "$var=$val";;
2753esac'
2754
0f0995ae
JH
2755case "$usethreads" in
2756$define|true|[yY]*) dflt='y';;
2757*) dflt='n';;
2758esac
64e689dc
JH
2759cat <<EOM
2760
3645a519 2761Perl can be built to take advantage of threads on some systems.
0f0995ae 2762To do so, Configure can be run with -Dusethreads.
d00b958f
JH
2763
2764Note that threading is a highly experimental feature, and
2765some known race conditions still remain. If you choose to try
2766it, be very sure to not actually deploy it for production
2767purposes. README.threads has more details, and is required
2768reading if you enable threads.
0f0995ae
JH
2769
2770If this doesn't make any sense to you, just accept the default '$dflt'.
64e689dc 2771EOM
64e689dc
JH
2772rp='Build a threading Perl?'
2773. ./myread
2774case "$ans" in
aaacdc8b 2775y|Y) val="$define" ;;
64e689dc 2776*) val="$undef" ;;
dfe9444c 2777esac
64e689dc 2778set usethreads
aaacdc8b
GS
2779eval $setvar
2780
2781case "$usethreads" in
2782$define)
2783 $cat <<EOM
2784
ff42dc34 2785As of 5.5.640, Perl has two different internal threading implementations,
aaacdc8b
GS
2786the 5.005 version (5005threads) and an interpreter-based version
2787(ithreads) that has one interpreter per thread. Both are very
2788experimental. This arrangement exists to help developers work out
2789which one is better.
3645a519
JH
2790
2791If you're a casual user, you probably don't want interpreter-threads
2792at this time. There doesn't yet exist a way to create threads from
2793within Perl in this model, i.e., "use Thread;" will NOT work.
aaacdc8b
GS
2794EOM
2795 : Default to ithreads unless overridden on command line or with
2796 : old config.sh
2797 dflt='y'
2798 case "$use5005threads" in
2799 $define|true|[yY]*) dflt='n';;
2800 esac
2801 case "$useithreads" in
2802 $undef|false|[nN]*) dflt='n';;
2803 esac
2804 rp='Use interpreter-based ithreads?'
2805 . ./myread
2806 case "$ans" in
2807 y|Y) val="$define" ;;
2808 *) val="$undef" ;;
2809 esac
2810 set useithreads
2811 eval $setvar
2812 : Now set use5005threads to the opposite value.
2813 case "$useithreads" in
2814 $define) val="$undef" ;;
2815 *) val="$define" ;;
2816 esac
2817 set use5005threads
2818 eval $setvar
2819 ;;
2820*)
2821 useithreads="$undef"
2822 use5005threads="$undef"
2823 ;;
2824esac
104d25b7 2825
693762b4
AD
2826case "$d_oldpthreads" in
2827'') : Configure tests would be welcome here. For now, assume undef.
2828 val="$undef" ;;
2829*) val="$d_oldpthreads" ;;
2830esac
2831set d_oldpthreads
2832eval $setvar
dfe9444c 2833
b691c02f
JH
2834
2835case "$usethreads" in
104d25b7
JH
2836"$define"|true|[yY]*)
2837: Look for a hint-file generated 'call-back-unit'. If the
2838: user has specified that a threading perl is to be built,
2839: we may need to set or change some other defaults.
2840 if $test -f usethreads.cbu; then
e5e20432 2841 echo "Your platform has some specific hints for threaded builds, using them..."
104d25b7 2842 . ./usethreads.cbu
e5e20432
JH
2843 else
2844 $cat <<EOM
2845(Your platform doesn't have any specific hints for threaded builds.
2846 Assuming POSIX threads, then.)
b691c02f 2847EOM
e5e20432 2848 fi
aaacdc8b 2849 ;;
e5e20432 2850esac
104d25b7 2851
ff935051 2852cat <<EOM
64e689dc 2853
ff935051
JH
2854Perl can be built so that multiple Perl interpreters can coexist
2855within the same Perl executable.
2856EOM
64e689dc 2857
ff935051
JH
2858case "$useithreads" in
2859$define)
2860 cat <<EOM
2861This multiple interpreter support is required for interpreter-based threads.
64e689dc 2862EOM
ff935051
JH
2863 val="$define"
2864 ;;
0f0995ae 2865*) case "$usemultiplicity" in
ff42dc34
GS
2866 $define|true|[yY]*) dflt='y';;
2867 *) dflt='n';;
2868 esac
49c10eea 2869 echo " "
0f0995ae 2870 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
ff42dc34
GS
2871 rp='Build Perl for multiplicity?'
2872 . ./myread
2873 case "$ans" in
ff935051 2874 y|Y) val="$define" ;;
ff42dc34
GS
2875 *) val="$undef" ;;
2876 esac
2877 ;;
64e689dc
JH
2878esac
2879set usemultiplicity
ff935051 2880eval $setvar
64e689dc 2881
e5e20432
JH
2882: determine where manual pages are on this system
2883echo " "
2884case "$sysman" in
2885'')
2886 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2887 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2888 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2889 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2890 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2891 sysman=`./loc . /usr/man/man1 $syspath`
2892 ;;
2893esac
2894if $test -d "$sysman"; then
2895 echo "System manual is in $sysman." >&4
2896else
2897 echo "Could not find manual pages in source form." >&4
2898fi
2899
2900: see what memory models we can support
2901case "$models" in
2902'')
2903 $cat >pdp11.c <<'EOP'
2904int main() {
2905#ifdef pdp11
2906 exit(0);
2907#else
2908 exit(1);
2909#endif
2910}
2911EOP
8a27cf78
JH
2912 case "$cc" in
2913 '') modelcc="$cc" ;;
2914 *) modelcc="cc" ;;
2915 esac
2916 ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
e5e20432
JH
2917 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2918 dflt='unsplit split'
2919 else
2920 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2921 case "$tans" in
2922 X) dflt='none';;
2923 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2924 dflt='small'
2925 else
2926 dflt=''
2927 fi
2928 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2929 dflt="$dflt medium"
2930 fi
2931 if $test -d /lib/large || $test -d /usr/lib/large; then
2932 dflt="$dflt large"
2933 fi
2934 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2935 dflt="$dflt huge"
2936 fi
2937 esac
2938 fi;;
2939*) dflt="$models";;
2940esac
2941$cat <<EOM
2942
2943Some systems have different model sizes. On most systems they are called
2944small, medium, large, and huge. On the PDP11 they are called unsplit and
2945split. If your system doesn't support different memory models, say "none".
2946If you wish to force everything to one memory model, say "none" here and
2947put the appropriate flags later when it asks you for other cc and ld flags.
2948Venix systems may wish to put "none" and let the compiler figure things out.
2949(In the following question multiple model names should be space separated.)
2950
2951The default for most systems is "none".
2952
2953EOM
2954rp="Which memory models are supported?"
2955. ./myread
2956models="$ans"
2957
2958case "$models" in
2959none)
2960 small=''
2961 medium=''
2962 large=''
2963 huge=''
2964 unsplit=''
2965 split=''
2966 ;;
2967*split)
2968 case "$split" in
2969 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2970 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2971 dflt='-i'
2972 else
2973 dflt='none'
2974 fi;;
2975 *) dflt="$split";;
2976 esac
2977 rp="What flag indicates separate I and D space?"
2978 . ./myread
2979 tans="$ans"
2980 case "$tans" in
2981 none) tans='';;
2982 esac
2983 split="$tans"
2984 unsplit='';;
2985*large*|*small*|*medium*|*huge*)
2986 case "$models" in
2987 *large*)
2988 case "$large" in
2989 '') dflt='-Ml';;
2990 *) dflt="$large";;
2991 esac
2992 rp="What flag indicates large model?"
2993 . ./myread
2994 tans="$ans"
2995 case "$tans" in
2996 none) tans='';
2997 esac
2998 large="$tans";;
2999 *) large='';;
3000 esac
3001 case "$models" in
3002 *huge*) case "$huge" in
3003 '') dflt='-Mh';;
3004 *) dflt="$huge";;
3005 esac
3006 rp="What flag indicates huge model?"
3007 . ./myread
3008 tans="$ans"
3009 case "$tans" in
3010 none) tans='';
3011 esac
3012 huge="$tans";;
3013 *) huge="$large";;
3014 esac
3015 case "$models" in
3016 *medium*) case "$medium" in
3017 '') dflt='-Mm';;
3018 *) dflt="$medium";;
3019 esac
3020 rp="What flag indicates medium model?"
3021 . ./myread
3022 tans="$ans"
3023 case "$tans" in
3024 none) tans='';
3025 esac
3026 medium="$tans";;
3027 *) medium="$large";;
3028 esac
3029 case "$models" in
3030 *small*) case "$small" in
3031 '') dflt='none';;
3032 *) dflt="$small";;
3033 esac
3034 rp="What flag indicates small model?"
3035 . ./myread
3036 tans="$ans"
3037 case "$tans" in
3038 none) tans='';
3039 esac
3040 small="$tans";;
3041 *) small='';;
3042 esac
3043 ;;
3044*)
3045 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3046 ;;
3047esac
3048$rm -f pdp11.* pdp11
3049
3050: make some quick guesses about what we are up against
3051echo " "
3052$echo $n "Hmm... $c"
3053echo exit 1 >bsd
3054echo exit 1 >usg
3055echo exit 1 >v7
3056echo exit 1 >osf1
3057echo exit 1 >eunice
3058echo exit 1 >xenix
3059echo exit 1 >venix
3060echo exit 1 >os2
3061d_bsd="$undef"
3062$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3063if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3064then
3065 echo "Looks kind of like an OSF/1 system, but we'll see..."
3066 echo exit 0 >osf1
3067elif test `echo abc | tr a-z A-Z` = Abc ; then
3068 xxx=`./loc addbib blurfl $pth`
3069 if $test -f $xxx; then
3070 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3071 echo exit 0 >bsd
3072 echo exit 0 >usg
3073 else
3074 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3075 echo "Looks kind of like an extended USG system, but we'll see..."
3076 else
3077 echo "Looks kind of like a USG system, but we'll see..."
3078 fi
3079 echo exit 0 >usg
3080 fi
3081elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3082 echo "Looks kind of like a BSD system, but we'll see..."
3083 d_bsd="$define"
3084 echo exit 0 >bsd
3085else
3086 echo "Looks kind of like a Version 7 system, but we'll see..."
3087 echo exit 0 >v7
3088fi
3089case "$eunicefix" in
3090*unixtovms*)
3091 $cat <<'EOI'
3092There is, however, a strange, musty smell in the air that reminds me of
3093something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3094EOI
3095 echo exit 0 >eunice
3096 d_eunice="$define"
3097: it so happens the Eunice I know will not run shell scripts in Unix format
3098 ;;
3099*)
3100 echo " "
3101 echo "Congratulations. You aren't running Eunice."
3102 d_eunice="$undef"
3103 ;;
3104esac
3105: Detect OS2. The p_ variable is set above in the Head.U unit.
3106case "$p_" in
3107:) ;;
3108*)
3109 $cat <<'EOI'
3110I have the feeling something is not exactly right, however...don't tell me...
3111lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3112EOI
3113 echo exit 0 >os2
3114 ;;
3115esac
3116if test -f /xenix; then
3117 echo "Actually, this looks more like a XENIX system..."
3118 echo exit 0 >xenix
3119 d_xenix="$define"
3120else
3121 echo " "
3122 echo "It's not Xenix..."
3123 d_xenix="$undef"
3124fi
3125chmod +x xenix
3126$eunicefix xenix
3127if test -f /venix; then
3128 echo "Actually, this looks more like a VENIX system..."
3129 echo exit 0 >venix
3130else
3131 echo " "
3132 if ./xenix; then
3133 : null
3134 else
3135 echo "Nor is it Venix..."
3136 fi
3137fi
3138chmod +x bsd usg v7 osf1 eunice xenix venix os2
3139$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3140$rm -f foo
3141
3142: see if we need a special compiler
3143echo " "
3144if ./usg; then
3145 case "$cc" in
3146 '') case "$Mcc" in
3147 /*) dflt='Mcc';;
3148 *) case "$large" in
3149 -M*) dflt='cc';;
3150 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3151 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3152 dflt='cc'
3153 else
3154 dflt='cc -M'
3155 fi
3156 else
3157 dflt='cc'
3158 fi;;
3159 esac;;
3160 esac;;
3161 *) dflt="$cc";;
3162 esac
3163 case "$dflt" in
3164 *M*) $cat <<'EOM'
3165On some older systems the default C compiler will not resolve multiple global
3166references that happen to have the same name. On some such systems the "Mcc"
3167command may be used to force these to be resolved. On other systems a "cc -M"
3168command is required. (Note that the -M flag on other systems indicates a
3169memory model to use!) If you have the Gnu C compiler, you might wish to use
3170that instead.
3171
3172EOM
3173 ;;
3174 esac
3175 rp="Use which C compiler?"
3176 . ./myread
3177 cc="$ans"
3178else
3179 case "$cc" in
3180 '') dflt=cc;;
3181 *) dflt="$cc";;
3182 esac
3183 rp="Use which C compiler?"
3184 . ./myread
3185 cc="$ans"
3186fi
3187: Look for a hint-file generated 'call-back-unit'. Now that the
3188: user has specified the compiler, we may need to set or change some
3189: other defaults.
3190if $test -f cc.cbu; then
3191 . ./cc.cbu
3192fi
2573c5f9 3193. ./checkcc
8a27cf78 3194
e5e20432
JH
3195echo " "
3196echo "Checking for GNU cc in disguise and/or its version number..." >&4
3197$cat >gccvers.c <<EOM
3198#include <stdio.h>
3199int main() {
3200#ifdef __GNUC__
3201#ifdef __VERSION__
3202 printf("%s\n", __VERSION__);
3203#else
3204 printf("%s\n", "1");
3205#endif
3206#endif
3207 exit(0);
3208}
3209EOM
bf0c440f 3210if $cc $ldflags -o gccvers gccvers.c; then
e5e20432
JH
3211 gccversion=`./gccvers`
3212 case "$gccversion" in
3213 '') echo "You are not using GNU cc." ;;
fc68435e 3214 *) echo "You are using GNU cc $gccversion."
fc68435e 3215 ;;
e5e20432
JH
3216 esac
3217else
3218 echo " "
3219 echo "*** WHOA THERE!!! ***" >&4
3220 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3221 case "$knowitall" in
3222 '')
3223 echo " You'd better start hunting for one and let me know about it." >&4
3224 exit 1
3225 ;;
3226 esac
3227fi
3228$rm -f gccvers*
3229case "$gccversion" in
32301*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3231esac
5b463ca7
KS
3232case "$gccversion" in
3233'') gccosandvers='' ;;
10b4ebb5
JH
3234*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3235 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3236 gccshortvers=''
5b463ca7 3237 case "$gccosandvers" in
02903077
JH
3238 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3239 $osname$osvers) ;; # looking good
5b463ca7
KS
3240 $osname*) cat <<EOM >&4
3241
3242*** WHOA THERE!!! ***
3243
3244 Your gcc has not been compiled for the exact release of
3245 your operating system ($gccosandvers versus $osname$osvers).
3246
3247 In general it is a good idea to keep gcc synchronized with
3248 the operating system because otherwise serious problems
3249 may ensue when trying to compile software, like Perl.
3250
3251 I'm trying to be optimistic here, though, and will continue.
3252 If later during the configuration and build icky compilation
02903077
JH
3253 problems appear (headerfile conflicts being the most common
3254 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3255 your operating system release.
3256
3257EOM
3258 ;;
81575342 3259 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3260 esac
3261 ;;
3262esac
3263
3264
3265
e5e20432 3266
8a27cf78
JH
3267: see how we invoke the C preprocessor
3268echo " "
3269echo "Now, how can we feed standard input to your C preprocessor..." >&4
3270cat <<'EOT' >testcpp.c
3271#define ABC abc
3272#define XYZ xyz
3273ABC.XYZ
3274EOT
3275cd ..
3276if test ! -f cppstdin; then
3277 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3278 # AIX cc -E doesn't show the absolute headerfile
3279 # locations but we'll cheat by using the -M flag.
3280 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
3281 else
3282 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3283 fi
3284else
3285 echo "Keeping your $hint cppstdin wrapper."
3286fi
3287chmod 755 cppstdin
3288wrapper=`pwd`/cppstdin
3289ok='false'
3290cd UU
3291
3292if $test "X$cppstdin" != "X" && \
3293 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3294 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3295then
3296 echo "You used to use $cppstdin $cppminus so we'll use that again."
3297 case "$cpprun" in
3298 '') echo "But let's see if we can live without a wrapper..." ;;
3299 *)
3300 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3301 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3302 then
3303 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3304 ok='true'
3305 else
3306 echo "(However, $cpprun $cpplast does not work, let's see...)"
3307 fi
3308 ;;
3309 esac
3310else
3311 case "$cppstdin" in
3312 '') ;;
3313 *)
3314 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3315 ;;
3316 esac
3317fi
3318
3319if $ok; then
3320 : nothing
3321elif echo 'Maybe "'"$cc"' -E" will work...'; \
3322 $cc -E <testcpp.c >testcpp.out 2>&1; \
3323 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3324 echo "Yup, it does."
3325 x_cpp="$cc -E"
3326 x_minus='';
3327elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3328 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3329 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3330 echo "Yup, it does."
3331 x_cpp="$cc -E"
3332 x_minus='-';
3333elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3334 $cc -P <testcpp.c >testcpp.out 2>&1; \
3335 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3336 echo "Yipee, that works!"
3337 x_cpp="$cc -P"
3338 x_minus='';
3339elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3340 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3341 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3342 echo "At long last!"
3343 x_cpp="$cc -P"
3344 x_minus='-';
3345elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3346 $cpp <testcpp.c >testcpp.out 2>&1; \
3347 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3348 echo "It works!"
3349 x_cpp="$cpp"
3350 x_minus='';
3351elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3352 $cpp - <testcpp.c >testcpp.out 2>&1; \
3353 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3354 echo "Hooray, it works! I was beginning to wonder."
3355 x_cpp="$cpp"
3356 x_minus='-';
3357elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3358 $wrapper <testcpp.c >testcpp.out 2>&1; \
3359 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3360 x_cpp="$wrapper"
3361 x_minus=''
3362 echo "Eureka!"
3363else
3364 dflt=''
3365 rp="No dice. I can't find a C preprocessor. Name one:"
3366 . ./myread
3367 x_cpp="$ans"
3368 x_minus=''
3369 $x_cpp <testcpp.c >testcpp.out 2>&1
3370 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3371 echo "OK, that will do." >&4
3372 else
3373echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3374 exit 1
3375 fi
3376fi
3377
3378case "$ok" in
3379false)
3380 cppstdin="$x_cpp"
3381 cppminus="$x_minus"
3382 cpprun="$x_cpp"
3383 cpplast="$x_minus"
3384 set X $x_cpp
3385 shift
3386 case "$1" in
3387 "$cpp")
3388 echo "Perhaps can we force $cc -E using a wrapper..."
3389 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3390 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3391 then
3392 echo "Yup, we can."
3393 cppstdin="$wrapper"
3394 cppminus='';
3395 else
3396 echo "Nope, we'll have to live without it..."
3397 fi
3398 ;;
3399 esac
3400 case "$cpprun" in
3401 "$wrapper")
3402 cpprun=''
3403 cpplast=''
3404 ;;
3405 esac
3406 ;;
3407esac
3408
3409case "$cppstdin" in
3410"$wrapper"|'cppstdin') ;;
3411*) $rm -f $wrapper;;
3412esac
3413$rm -f testcpp.c testcpp.out
3414
bd9b35c9
JH
3415: decide how portable to be. Allow command line overrides.
3416case "$d_portable" in
3417"$undef") ;;
3418*) d_portable="$define" ;;
104d25b7 3419esac
85ab1d1d 3420
bd9b35c9
JH
3421: set up shell script to do ~ expansion
3422cat >filexp <<EOSS
3423$startsh
3424: expand filename
3425case "\$1" in
3426 ~/*|~)
3427 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3428 ;;
3429 ~*)
3430 if $test -f /bin/csh; then
3431 /bin/csh -f -c "glob \$1"
3432 failed=\$?
3433 echo ""
3434 exit \$failed
e5e20432 3435 else
bd9b35c9
JH
3436 name=\`$expr x\$1 : '..\([^/]*\)'\`
3437 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3438 if $test ! -d "\$dir"; then
3439 me=\`basename \$0\`
3440 echo "\$me: can't locate home directory for: \$name" >&2
3441 exit 1
3442 fi
3443 case "\$1" in
3444 */*)
3445 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3446 ;;
3447 *)
3448 echo \$dir
e5e20432
JH
3449 ;;
3450 esac
3451 fi
b691c02f 3452 ;;
4633a7c4 3453*)
bd9b35c9 3454 echo \$1
2304df62
AD
3455 ;;
3456esac
4633a7c4
LW
3457EOSS
3458chmod +x filexp
3459$eunicefix filexp
2304df62
AD
3460
3461: now set up to get a file name
28757baa 3462cat <<EOS >getfile
3463$startsh
3464EOS
3465cat <<'EOSC' >>getfile
2304df62
AD
3466tilde=''
3467fullpath=''
3468already=''
3469skip=''
3470none_ok=''
3471exp_file=''
a0d0e21e 3472nopath_ok=''
2304df62
AD
3473orig_rp="$rp"
3474orig_dflt="$dflt"
b233458b
JH
3475case "$gfpth" in
3476'') gfpth='.' ;;
3477esac
2304df62
AD
3478
3479case "$fn" in
ecfc5424 3480*\(*)
28e8609d 3481 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
3482 fn=`echo $fn | sed 's/(.*)//'`
3483 ;;
3484esac
3485
3486case "$fn" in
a0d0e21e
LW
3487*:*)
3488 loc_file=`expr $fn : '.*:\(.*\)'`
3489 fn=`expr $fn : '\(.*\):.*'`
3490 ;;
3491esac
3492
3493case "$fn" in
2304df62
AD
3494*~*) tilde=true;;
3495esac
3496case "$fn" in
3497*/*) fullpath=true;;
3498esac
3499case "$fn" in
3500*+*) skip=true;;
3501esac
3502case "$fn" in
3503*n*) none_ok=true;;
3504esac
3505case "$fn" in
3506*e*) exp_file=true;;
3507esac
a0d0e21e
LW
3508case "$fn" in
3509*p*) nopath_ok=true;;
3510esac
2304df62
AD
3511
3512case "$fn" in
3513*f*) type='File';;
3514*d*) type='Directory';;
a0d0e21e 3515*l*) type='Locate';;
2304df62
AD
3516esac
3517
3518what="$type"
3519case "$what" in
3520Locate) what='File';;
3521esac
3522
3523case "$exp_file" in
3524'')
3525 case "$d_portable" in
3526 "$define") ;;
3527 *) exp_file=true;;
3528 esac
3529 ;;
3530esac
3531
3532cd ..
3533while test "$type"; do
3534 redo=''
3535 rp="$orig_rp"
3536 dflt="$orig_dflt"
3537 case "$tilde" in
3538 true) rp="$rp (~name ok)";;
3539 esac
3540 . UU/myread
ecfc5424
AD
3541 if test -f UU/getfile.ok && \
3542 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3543 then
3544 value="$ans"
3545 ansexp="$ans"
3546 break
3547 fi
2304df62
AD
3548 case "$ans" in
3549 none)
3550 value=''
3551 ansexp=''
3552 case "$none_ok" in
3553 true) type='';;
3554 esac
3555 ;;
3556 *)
3557 case "$tilde" in
3558 '') value="$ans"
3559 ansexp="$ans";;
3560 *)
3561 value=`UU/filexp $ans`
3562 case $? in
3563 0)
3564 if test "$ans" != "$value"; then
ecfc5424 3565 echo "(That expands to $value on this system.)"
2304df62
AD
3566 fi
3567 ;;
3568 *) value="$ans";;
3569 esac
3570 ansexp="$value"
3571 case "$exp_file" in
3572 '') value="$ans";;
3573 esac
3574 ;;
3575 esac
3576 case "$fullpath" in
3577 true)
3578 case "$ansexp" in
3579 /*) value="$ansexp" ;;
23da6c43 3580 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3581 *)
3582 redo=true
3583 case "$already" in
3584 true)
3585 echo "I shall only accept a full path name, as in /bin/ls." >&4
3586 echo "Use a ! shell escape if you wish to check pathnames." >&4
3587 ;;
3588 *)
3589 echo "Please give a full path name, starting with slash." >&4
3590 case "$tilde" in
3591 true)
3592 echo "Note that using ~name is ok provided it expands well." >&4
3593 already=true
3594 ;;
3595 esac
3596 esac
3597 ;;
3598 esac
3599 ;;
3600 esac
3601 case "$redo" in
3602 '')
3603 case "$type" in
3604 File)
b233458b
JH
3605 for fp in $gfpth; do
3606 if test "X$fp" = X.; then
3607 pf="$ansexp"
3608 else
3609 pf="$fp/$ansexp"
3610 fi
3611 if test -f "$pf"; then
3612 type=''
3613 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3614 then
3615 echo "($value is not a plain file, but that's ok.)"
3616 type=''
3617 fi
3618 if test X"$type" = X; then
3619 value="$pf"
3620 break
3621 fi
3622 done
2304df62
AD
3623 ;;
3624 Directory)
b233458b
JH
3625 for fp in $gfpth; do
3626 if test "X$fp" = X.; then
f78bfc9c
JH
3627 dir="$ans"
3628 direxp="$ansexp"
b233458b 3629 else
dd858076 3630 dir="$fp/$ansexp"
f78bfc9c 3631 direxp="$fp/$ansexp"
b233458b 3632 fi
f78bfc9c 3633 if test -d "$direxp"; then
b233458b 3634 type=''
f78bfc9c 3635 value="$dir"
b233458b
JH
3636 break
3637 fi
3638 done
2304df62
AD
3639 ;;
3640 Locate)
40000a8c 3641 if test -d "$ansexp"; then
a0d0e21e
LW
3642 echo "(Looking for $loc_file in directory $value.)"
3643 value="$value/$loc_file"
40000a8c 3644 ansexp="$ansexp/$loc_file"
2304df62 3645 fi
40000a8c 3646 if test -f "$ansexp"; then
2304df62
AD
3647 type=''
3648 fi
a0d0e21e
LW
3649 case "$nopath_ok" in
3650 true) case "$value" in
3651 */*) ;;
3652 *) echo "Assuming $value will be in people's path."
3653 type=''
3654 ;;
3655 esac
3656 ;;
3657 esac
2304df62
AD
3658 ;;
3659 esac
3660
3661 case "$skip" in
3662 true) type='';
3663 esac
3664
3665 case "$type" in
3666 '') ;;
3667 *)
3668 if test "$fastread" = yes; then
3669 dflt=y
3670 else
3671 dflt=n
3672 fi
3673 rp="$what $value doesn't exist. Use that name anyway?"
3674 . UU/myread
3675 dflt=''
3676 case "$ans" in
3677 y*) type='';;
3678 *) echo " ";;
3679 esac
3680 ;;
3681 esac
3682 ;;
3683 esac
3684 ;;
3685 esac
3686done
3687cd UU
3688ans="$value"
3689rp="$orig_rp"
3690dflt="$orig_dflt"
ecfc5424 3691rm -f getfile.ok
b233458b 3692test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3693EOSC
3694
bd9b35c9
JH
3695: What should the include directory be ?
3696echo " "
3697$echo $n "Hmm... $c"
3698dflt='/usr/include'
3699incpath=''
3700mips_type=''
3701if $test -f /bin/mips && /bin/mips; then
3702 echo "Looks like a MIPS system..."
3703 $cat >usr.c <<'EOCP'
3704#ifdef SYSTYPE_BSD43
3705/bsd43
3706#endif
3707EOCP
8a27cf78 3708 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3709 dflt='/bsd43/usr/include'
3710 incpath='/bsd43'
3711 mips_type='BSD 4.3'
3712 else
3713 mips_type='System V'
3714 fi
3715 $rm -f usr.c usr.out
3716 echo "and you're compiling with the $mips_type compiler and libraries."
3717 xxx_prompt=y
3718 echo "exit 0" >mips
3719else
3720 echo "Doesn't look like a MIPS system."
3721 xxx_prompt=n
3722 echo "exit 1" >mips
3723fi
3724chmod +x mips
3725$eunicefix mips
3726case "$usrinc" in
3727'') ;;
3728*) dflt="$usrinc";;
3729esac
3730case "$xxx_prompt" in
3731y) fn=d/
3732 echo " "
3733 rp='Where are the include files you want to use?'
3734 . ./getfile
3735 usrinc="$ans"
8e07c86e 3736 ;;
bd9b35c9 3737*) usrinc="$dflt"
8e07c86e
AD
3738 ;;
3739esac
2304df62 3740
bd9b35c9
JH
3741: Set private lib path
3742case "$plibpth" in
3743'') if ./mips; then
3744 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3745 fi;;
3746esac
3747case "$libpth" in
3748' ') dlist='';;
3749'') dlist="$loclibpth $plibpth $glibpth";;
3750*) dlist="$libpth";;
3751esac
3752
3753: Now check and see which directories actually exist, avoiding duplicates
3754libpth=''
3755for xxx in $dlist
3756do
3757 if $test -d $xxx; then
3758 case " $libpth " in
3759 *" $xxx "*) ;;
3760 *) libpth="$libpth $xxx";;
3761 esac
3762 fi
3763done
3764$cat <<'EOM'
3765
3766Some systems have incompatible or broken versions of libraries. Among
3767the directories listed in the question below, please remove any you
3768know not to be holding relevant libraries, and add any that are needed.
3769Say "none" for none.
8e07c86e
AD
3770
3771EOM
bd9b35c9
JH
3772case "$libpth" in
3773'') dflt='none';;
8e07c86e 3774*)
bd9b35c9
JH
3775 set X $libpth
3776 shift
3777 dflt=${1+"$@"}
8e07c86e 3778 ;;
a0d0e21e 3779esac
bd9b35c9
JH
3780rp="Directories to use for library searches?"
3781. ./myread
3782case "$ans" in
3783none) libpth=' ';;
3784*) libpth="$ans";;
3785esac
a0d0e21e 3786
bd9b35c9
JH
3787: compute shared library extension
3788case "$so" in
3789'')
3790 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3791 dflt='sl'
dd4e71fd 3792 else
bd9b35c9 3793 dflt='so'
dd4e71fd
JH
3794 fi
3795 ;;
bd9b35c9 3796*) dflt="$so";;
dd4e71fd 3797esac
dd4e71fd
JH
3798$cat <<EOM
3799
bd9b35c9 3800On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3801you want to suppress searching of shared libraries for the remainder
bd9b35c9 3802of this configuration.
dd4e71fd
JH
3803
3804EOM
bd9b35c9
JH
3805rp='What is the file extension used for shared libraries?'
3806. ./myread
3807so="$ans"
dd4e71fd 3808
bd9b35c9
JH
3809: Define several unixisms.
3810: Hints files or command line option can be used to override them.
3811: The convoluted testing is in case hints files set either the old
3812: or the new name.
3813case "$_exe" in
3814'') case "$exe_ext" in
3815 '') ;;
3816 *) _exe="$exe_ext" ;;
dd4e71fd 3817 esac
bd9b35c9 3818 ;;
bfb7748a 3819esac
bd9b35c9
JH
3820case "$_a" in
3821'') case "$lib_ext" in
3822 '') _a='.a';;
3823 *) _a="$lib_ext" ;;
dd4e71fd
JH
3824 esac
3825 ;;
dd4e71fd 3826esac
bd9b35c9
JH
3827case "$_o" in
3828'') case "$obj_ext" in
3829 '') _o='.o';;
3830 *) _o="$obj_ext";;
3831 esac
3832 ;;
3833esac
3834case "$p_" in
3835'') case "$path_sep" in
3836 '') p_=':';;
3837 *) p_="$path_sep";;
3838 esac
3839 ;;
3840esac
3841exe_ext=$_exe
3842lib_ext=$_a
3843obj_ext=$_o
3844path_sep=$p_
dd4e71fd 3845
bd9b35c9
JH
3846: Which makefile gets called first. This is used by make depend.
3847case "$firstmakefile" in
3848'') firstmakefile='makefile';;
4633a7c4 3849esac
4633a7c4 3850
0f0995ae
JH
3851case "$usesocks" in
3852$define|true|[yY]*) dflt='y';;
3853*) dflt='n';;
3854esac
bd9b35c9 3855cat <<EOM
4633a7c4 3856
bd9b35c9
JH
3857Perl can be built to use the SOCKS proxy protocol library. To do so,
3858Configure must be run with -Dusesocks.
4633a7c4 3859
0f0995ae 3860If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3861EOM
bd9b35c9
JH
3862rp='Build Perl for SOCKS?'
3863. ./myread
3864case "$ans" in
3865y|Y) val="$define" ;;
3866*) val="$undef" ;;
3867esac
3868set usesocks
3869eval $setvar
3870
3871: Looking for optional libraries
3872echo " "
3873echo "Checking for optional libraries..." >&4
3874case "$libs" in
3875' '|'') dflt='';;
3876*) dflt="$libs";;
3877esac
3878case "$libswanted" in
3879'') libswanted='c_s';;
3880esac
3881case "$usesocks" in
923fc586 3882"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3883esac
68435ea7
JH
3884libsfound=''
3885libsfiles=''
3886libsdirs=''
13b3f787
JH
3887libspath=''
3888for thisdir in $libpth $xlibpth; do
3889 test -d $thisdir && libspath="$libspath $thisdir"
3890done
bd9b35c9 3891for thislib in $libswanted; do
13b3f787 3892 for thisdir in $libspath; do
f7dd4e7f
JH
3893 xxx=''
3894 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3895 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3896 $test -f "$xxx" && eval $libscheck
3897 $test -f "$xxx" && libstyle=shared
3898 fi
3899 if test ! -f "$xxx"; then
3900 xxx=$thisdir/lib$thislib.$so
3901 $test -f "$xxx" && eval $libscheck
3902 $test -f "$xxx" && libstyle=shared
3903 fi
3904 if test ! -f "$xxx"; then
3905 xxx=$thisdir/lib$thislib$_a
3906 $test -f "$xxx" && eval $libscheck
3907 $test -f "$xxx" && libstyle=static
3908 fi
3909 if test ! -f "$xxx"; then
3910 xxx=$thisdir/$thislib$_a
3911 $test -f "$xxx" && eval $libscheck
3912 $test -f "$xxx" && libstyle=static
3913 fi
3914 if test ! -f "$xxx"; then
3915 xxx=$thisdir/lib${thislib}_s$_a
3916 $test -f "$xxx" && eval $libscheck
3917 $test -f "$xxx" && libstyle=static
09ea5ba9 3918 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3919 fi
3920 if test ! -f "$xxx"; then
3921 xxx=$thisdir/Slib$thislib$_a
3922 $test -f "$xxx" && eval $libscheck
3923 $test -f "$xxx" && libstyle=static
3924 fi
3925 if $test -f "$xxx"; then
43999f95 3926 case "$libstyle" in
f7dd4e7f
JH
3927 shared) echo "Found -l$thislib (shared)." ;;
3928 static) echo "Found -l$thislib." ;;
3929 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3930 esac
bd9b35c9
JH
3931 case " $dflt " in
3932 *"-l$thislib "*);;
f7dd4e7f 3933 *) dflt="$dflt -l$thislib"
43999f95
JH
3934 libsfound="$libsfound $xxx"
3935 yyy=`basename $xxx`
3936 libsfiles="$libsfiles $yyy"
1e127011 3937 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3938 case " $libsdirs " in
3939 *" $yyy "*) ;;
3940 *) libsdirs="$libsdirs $yyy" ;;
3941 esac
3942 ;;
bd9b35c9 3943 esac
f7dd4e7f
JH
3944 break
3945 fi
3946 done
3947 if $test ! -f "$xxx"; then
3948 echo "No -l$thislib."
bd9b35c9
JH
3949 fi
3950done
3951set X $dflt
3952shift
3953dflt="$*"
3954case "$libs" in
3955'') dflt="$dflt";;
3956*) dflt="$libs";;
3957esac
3958case "$dflt" in
3959' '|'') dflt='none';;
3960esac
4633a7c4 3961
bd9b35c9 3962$cat <<EOM
4633a7c4 3963
bd9b35c9
JH
3964In order to compile $package on your machine, a number of libraries
3965are usually needed. Include any other special libraries here as well.
3966Say "none" for none. The default list is almost always right.
8e07c86e 3967EOM
8e07c86e 3968
bd9b35c9
JH
3969echo " "
3970rp="What libraries to use?"
3971. ./myread
3972case "$ans" in
3973none) libs=' ';;
3974*) libs="$ans";;
3975esac
d71b2b6b 3976
bd9b35c9
JH
3977: determine optimization, if desired, or use for debug flag also
3978case "$optimize" in
3979' '|$undef) dflt='none';;
3980'') dflt='-O';;
3981*) dflt="$optimize";;
3982esac
3983$cat <<EOH
d71b2b6b 3984
bd9b35c9
JH
3985By default, $package compiles with the -O flag to use the optimizer.
3986Alternately, you might want to use the symbolic debugger, which uses
3987the -g flag (on traditional Unix systems). Either flag can be
3988specified here. To use neither flag, specify the word "none".
d71b2b6b 3989
bd9b35c9
JH
3990EOH
3991rp="What optimizer/debugger flag should be used?"
3992. ./myread
3993optimize="$ans"
3994case "$optimize" in
3995'none') optimize=" ";;
3996esac
3997
3998dflt=''
3999: We will not override a previous value, but we might want to
4000: augment a hint file
4001case "$hint" in
4002default|recommended)
4003 case "$gccversion" in
4004 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4005 esac
bd9b35c9
JH
4006 case "$optimize" in
4007 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4008 esac
bd9b35c9
JH
4009 case "$gccversion" in
4010 2*) if test -d /etc/conf/kconfig.d &&
4011 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4012 then
4013 dflt="$dflt -posix"
4014 fi
f0d04425 4015 ;;
bd9b35c9
JH
4016 esac
4017 case "$gccversion" in
4018 1*) ;;
4019 2.[0-8]*) ;;
4020 ?*) echo " "
4021 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4022 echo 'int main(void) { return 0; }' > gcctest.c
4023 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4024 echo "Yes, it does." 2>&1
4025 case "$ccflags" in
4026 *strict-aliasing*)
4027 echo "Leaving current flags $ccflags alone." 2>&1
4028 ;;
4029 *) dflt="$dflt -fno-strict-aliasing" ;;
4030 esac
4031 else
4032 echo "Nope, it doesn't, but that's ok." 2>&1
4033 fi
f0d04425 4034 ;;
e5e20432
JH
4035 esac
4036 ;;
4037esac
4038
bd9b35c9
JH
4039case "$mips_type" in
4040*BSD*|'') inclwanted="$locincpth $usrinc";;
4041*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4042esac
4043for thisincl in $inclwanted; do
4044 if $test -d $thisincl; then
4045 if $test x$thisincl != x$usrinc; then
4046 case "$dflt" in
4047 *$thisincl*);;
4048 *) dflt="$dflt -I$thisincl";;
4049 esac
4050 fi
4051 fi
4052done
40a7a20a 4053
bd9b35c9
JH
4054inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4055 xxx=true;
4056elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4057 xxx=true;
4058else
4059 xxx=false;
4060fi;
4061if $xxx; then
4062 case "$dflt" in
4063 *$2*);;
4064 *) dflt="$dflt -D$2";;
4065 esac;
4066fi'
40a7a20a 4067
bd9b35c9 4068set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4069
bd9b35c9
JH
4070case "$usesocks" in
4071$define)
4072 ccflags="$ccflags -DSOCKS"
4073 ;;
4074esac
40a7a20a 4075
bd9b35c9
JH
4076case "$hint" in
4077default|recommended) dflt="$ccflags $dflt" ;;
4078*) dflt="$ccflags";;
4079esac
40a7a20a 4080
bd9b35c9
JH
4081case "$dflt" in
4082''|' ') dflt=none;;
4083esac
4084$cat <<EOH
40a7a20a 4085
bd9b35c9
JH
4086Your C compiler may want other flags. For this question you should include
4087-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4088but you should NOT include libraries or ld flags like -lwhatever. If you
4089want $package to honor its debug switch, you should include -DDEBUGGING here.
4090Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4091
bd9b35c9 4092To use no flags, specify the word "none".
40a7a20a 4093
bd9b35c9
JH
4094EOH
4095set X $dflt
4096shift
4097dflt=${1+"$@"}
4098rp="Any additional cc flags?"
4099. ./myread
4100case "$ans" in
4101none) ccflags='';;
4102*) ccflags="$ans";;
4103esac
8e07c86e 4104
bd9b35c9
JH
4105: the following weeds options from ccflags that are of no interest to cpp
4106cppflags="$ccflags"
4107case "$gccversion" in
41081*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4109esac
bd9b35c9
JH
4110case "$mips_type" in
4111'');;
4112*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4113esac
4114case "$cppflags" in
4115'');;
4116*)
4117 echo " "
4118 echo "Let me guess what the preprocessor flags are..." >&4
4119 set X $cppflags
4120 shift
4121 cppflags=''
4122 $cat >cpp.c <<'EOM'
4123#define BLURFL foo
8e07c86e 4124
bd9b35c9
JH
4125BLURFL xx LFRULB
4126EOM
4127 previous=''
4128 for flag in $*
4129 do
4130 case "$flag" in
4131 -*) ftry="$flag";;
4132 *) ftry="$previous $flag";;
4133 esac
4134 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4135 >cpp1.out 2>/dev/null && \
4136 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4137 >cpp2.out 2>/dev/null && \
4138 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4139 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4140 then
4141 cppflags="$cppflags $ftry"
4142 previous=''
4143 else
4144 previous="$flag"
4145 fi
4146 done
4147 set X $cppflags
4148 shift
4149 cppflags=${1+"$@"}
4150 case "$cppflags" in
4151 *-*) echo "They appear to be: $cppflags";;
4152 esac
4153 $rm -f cpp.c cpp?.out
2afac517 4154 ;;
4155esac
8e07c86e 4156
bd9b35c9
JH
4157: flags used in final linking phase
4158case "$ldflags" in
4159'') if ./venix; then
4160 dflt='-i -z'
10a23457 4161 else
bd9b35c9 4162 dflt=''
10a23457 4163 fi
bd9b35c9
JH
4164 case "$ccflags" in
4165 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4166 esac
bd9b35c9
JH
4167 ;;
4168*) dflt="$ldflags";;
4169esac
4170
4171: Try to guess additional flags to pick up local libraries.
4172for thislibdir in $libpth; do
4173 case " $loclibpth " in
4174 *" $thislibdir "*)
4175 case "$dflt " in
4176 *"-L$thislibdir "*) ;;
4177 *) dflt="$dflt -L$thislibdir" ;;
4178 esac
c4f23d77
AD
4179 ;;
4180 esac
bd9b35c9 4181done
c4f23d77 4182
bd9b35c9
JH
4183case "$dflt" in
4184'') dflt='none' ;;
4185esac
c4f23d77 4186
bd9b35c9
JH
4187$cat <<EOH
4188
4189Your C linker may need flags. For this question you should
4190include -L/whatever and any other flags used by the C linker, but you
4191should NOT include libraries like -lwhatever.
4192
4193Make sure you include the appropriate -L/path flags if your C linker
4194does not normally search all of the directories you specified above,
4195namely
4196 $libpth
4197To use no flags, specify the word "none".
4198
4199EOH
4200
4201rp="Any additional ld flags (NOT including libraries)?"
4202. ./myread
4203case "$ans" in
4204none) ldflags='';;
4205*) ldflags="$ans";;
4206esac
4207rmlist="$rmlist pdp11"
4208
4209: coherency check
4210echo " "
4211echo "Checking your choice of C compiler and flags for coherency..." >&4
4212$cat > try.c <<'EOF'
4213#include <stdio.h>
4214int main() { printf("Ok\n"); exit(0); }
4215EOF
4216set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4217shift
4218$cat >try.msg <<'EOM'
4219I've tried to compile and run the following simple program:
4220
4221EOM
4222$cat try.c >> try.msg
4223
4224$cat >> try.msg <<EOM
4225
4226I used the command:
4227
4228 $*
4229 ./try
4230
4231and I got the following output:
4232
4233EOM
4234dflt=y
4235if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4236 if sh -c './try' >>try.msg 2>&1; then
4237 xxx=`./try`
4238 case "$xxx" in
4239 "Ok") dflt=n ;;
4240 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4241 case " $libs " in
4242 *" -lsfio "*)
4243 cat >> try.msg <<'EOQS'
4244If $libs contains -lsfio, and sfio is mis-configured, then it
4245sometimes (apparently) runs and exits with a 0 status, but with no
4246output! It may have to do with sfio's use of _exit vs. exit.
4247
4248EOQS
4249 rp="You have a big problem. Shall I abort Configure"
4250 dflt=y
4251 ;;
4252 esac
4253 ;;
4254 esac
4255 else
4256 echo "The program compiled OK, but exited with status $?." >>try.msg
4257 rp="You have a problem. Shall I abort Configure"
4258 dflt=y
4259 fi
4260else
4261 echo "I can't compile the test program." >>try.msg
4262 rp="You have a BIG problem. Shall I abort Configure"
4263 dflt=y
4264fi
4265case "$dflt" in
4266y)
4267 $cat try.msg >&4
4268 case "$knowitall" in
4269 '')
4270 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4271 ;;
bd9b35c9 4272 *) dflt=n;;
c4f23d77 4273 esac
bd9b35c9
JH
4274 echo " "
4275 . ./myread
4276 case "$ans" in
4277 n*|N*) ;;
4278 *) echo "Ok. Stopping Configure." >&4
4279 exit 1
c4f23d77
AD
4280 ;;
4281 esac
4282 ;;
bd9b35c9 4283n) echo "OK, that should do.";;
c4f23d77 4284esac
bd9b35c9 4285$rm -f try try.* core
c4f23d77 4286
bd9b35c9
JH
4287: define an is-a-typedef? function
4288typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4289case "$inclist" in
4290"") inclist="sys/types.h";;
4291esac;
4292eval "varval=\$$var";
4293case "$varval" in
4294"")
4295 $rm -f temp.c;
4296 for inc in $inclist; do
4297 echo "#include <$inc>" >>temp.c;
4298 done;
4299 echo "#ifdef $type" >> temp.c;
4300 echo "printf(\"We have $type\");" >> temp.c;
4301 echo "#endif" >> temp.c;
4302 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4303 if $contains $type temp.E >/dev/null 2>&1; then
4304 eval "$var=\$type";
4305 else
4306 eval "$var=\$def";
4307 fi;
4308 $rm -f temp.?;;
4309*) eval "$var=\$varval";;
4310esac'
8e07c86e 4311
bd9b35c9
JH
4312: define an is-a-typedef? function that prompts if the type is not available.
4313typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4314case "$inclist" in
4315"") inclist="sys/types.h";;
4316esac;
4317eval "varval=\$$var";
4318case "$varval" in
4319"")
4320 $rm -f temp.c;
4321 for inc in $inclist; do
4322 echo "#include <$inc>" >>temp.c;
4323 done;
4324 echo "#ifdef $type" >> temp.c;
4325 echo "printf(\"We have $type\");" >> temp.c;
4326 echo "#endif" >> temp.c;
4327 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4328 echo " " ;
4329 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4330 if $contains $type temp.E >/dev/null 2>&1; then
4331 echo "$type found." >&4;
4332 eval "$var=\$type";
4333 else
4334 echo "$type NOT found." >&4;
4335 dflt="$def";
4336 . ./myread ;
4337 eval "$var=\$ans";
4338 fi;
4339 $rm -f temp.?;;
4340*) eval "$var=\$varval";;
4341esac'
8e07c86e 4342
bd9b35c9
JH
4343: define a shorthand compile call
4344compile='
4345mc_file=$1;
4346shift;
4347$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4348: define a shorthand compile call for compilations that should be ok.
4349compile_ok='
4350mc_file=$1;
4351shift;
4352$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
8e07c86e 4353
bd9b35c9
JH
4354: check for lengths of integral types
4355echo " "
4356case "$intsize" in
2afac517 4357'')
bd9b35c9
JH
4358 echo "Checking to see how big your integers are..." >&4
4359 $cat >intsize.c <<'EOCP'
4360#include <stdio.h>
4361int main()
4362{
4363 printf("intsize=%d;\n", (int)sizeof(int));
4364 printf("longsize=%d;\n", (int)sizeof(long));
4365 printf("shortsize=%d;\n", (int)sizeof(short));
4366 exit(0);
4367}
4368EOCP
4369 set intsize
4370 if eval $compile_ok && ./intsize > /dev/null; then
4371 eval `./intsize`
4372 echo "Your integers are $intsize bytes long."
4373 echo "Your long integers are $longsize bytes long."
4374 echo "Your short integers are $shortsize bytes long."
2afac517 4375 else
bd9b35c9
JH
4376 $cat >&4 <<EOM
4377!
4378Help! I can't compile and run the intsize test program: please enlighten me!
4379(This is probably a misconfiguration in your system or libraries, and
4380you really ought to fix it. Still, I'll try anyway.)
4381!
4382EOM
4383 dflt=4
4384 rp="What is the size of an integer (in bytes)?"
4385 . ./myread
4386 intsize="$ans"
4387 dflt=$intsize
4388 rp="What is the size of a long integer (in bytes)?"
4389 . ./myread
4390 longsize="$ans"
4391 dflt=2
4392 rp="What is the size of a short integer (in bytes)?"
4393 . ./myread
4394 shortsize="$ans"
2afac517 4395 fi
4396 ;;
8e07c86e 4397esac
bd9b35c9
JH
4398$rm -f intsize intsize.*
4399
4400: see what type lseek is declared as in the kernel
4401rp="What is the type used for lseek's offset on this system?"
4402set off_t lseektype long stdio.h sys/types.h
4403eval $typedef_ask
4404
4405echo " "
49c10eea 4406echo "Checking to see how big your file offsets are..." >&4
bd9b35c9
JH
4407$cat >try.c <<EOCP
4408#include <sys/types.h>
4409#include <stdio.h>
4410int main()
4411{
4412 printf("%d\n", (int)sizeof($lseektype));
4413 return(0);
4414}
4415EOCP
4416set try
4417if eval $compile_ok; then
4418 lseeksize=`./try`
49c10eea 4419 echo "Your file offsets are $lseeksize bytes long."
bd9b35c9
JH
4420else
4421 dflt=$longsize
4422 echo " "
4423 echo "(I can't seem to compile the test program. Guessing...)"
4424 rp="What is the size of your file offsets (in bytes)?"
4425 . ./myread
4426 lseeksize="$ans"
4427fi
4428$rm -f try.c try
4429
4430: see what type file positions are declared as in the library
4431rp="What is the type for file position used by fsetpos()?"
4432set fpos_t fpostype long stdio.h sys/types.h
4433eval $typedef_ask
4434
4435echo " "
4436case "$fpostype" in
4437*_t) zzz="$fpostype" ;;
4438*) zzz="fpos_t" ;;
4439esac
49c10eea 4440echo "Checking the size of $zzz..." >&4
bd9b35c9
JH
4441cat > try.c <<EOCP
4442#include <sys/types.h>
4443#include <stdio.h>
4444int main() {
4445 printf("%d\n", (int)sizeof($fpostype));
4446 exit(0);
4447}
4448EOCP
4449set try
4450if eval $compile_ok; then
4451 yyy=`./try`
4452 case "$yyy" in
4453 '') fpossize=4
bd9b35c9
JH
4454 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4455 ;;
4456 *) fpossize=$yyy
c890dc6c 4457 echo "Your $zzz is $fpossize bytes long."
bd9b35c9
JH
4458 ;;
4459 esac
4460else
4461 dflt="$longsize"
68435ea7 4462 echo " " >&4
bd9b35c9
JH
4463 echo "(I can't compile the test program. Guessing...)" >&4
4464 rp="What is the size of your file positions (in bytes)?"
4465 . ./myread
4466 fpossize="$ans"
4467fi
4468
4469
8e07c86e 4470
10cc9d2a
JH
4471# Backward compatibility (uselfs is deprecated).
4472case "$uselfs" in
4473"$define"|true|[yY]*)
4474 cat <<EOM >&4
4475
4476*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
10cc9d2a
JH
4477EOM
4478 uselargefiles="$define"
4479 ;;
4480esac
4481
bd9b35c9
JH
4482case "$lseeksize:$fpossize" in
44838:8) cat <<EOM
8e07c86e 4484
bd9b35c9 4485You can have files larger than 2 gigabytes.
8e07c86e 4486EOM
bd9b35c9 4487 val="$define" ;;
0f0995ae
JH
4488*) case "$uselargefiles" in
4489 "$undef"|false|[nN]*) dflt='n' ;;
4490 *) dflt='y' ;;
4491 esac
4492 cat <<EOM
8e07c86e 4493
bd9b35c9 4494Perl can be built to understand large files (files larger than 2 gigabytes)
0f0995ae 4495on some systems. To do so, Configure can be run with -Duselargefiles.
bd9b35c9 4496
0f0995ae 4497If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4498EOM
bd9b35c9
JH
4499 rp='Try to understand large files, if available?'
4500 . ./myread
4501 case "$ans" in
4502 y|Y) val="$define" ;;
4503 *) val="$undef" ;;
4504 esac
4505 ;;
dfe9444c 4506esac
bd9b35c9
JH
4507set uselargefiles
4508eval $setvar
4509case "$uselargefiles" in
4510"$define")
4511: Look for a hint-file generated 'call-back-unit'. If the
4512: user has specified that a large files perl is to be built,
4513: we may need to set or change some other defaults.
8a647129 4514 if $test -f uselargefiles.cbu; then
bd9b35c9 4515 echo "Your platform has some specific hints for large file builds, using them..."
8a647129 4516 . ./uselargefiles.cbu
bd9b35c9 4517 echo " "
49c10eea 4518 echo "Rechecking to see how big your file offsets are..." >&4
bd9b35c9
JH
4519 $cat >try.c <<EOCP
4520#include <sys/types.h>
4521#include <stdio.h>
4522int main()
4523{
4524 printf("%d\n", (int)sizeof($lseektype));
4525 return(0);
4526}
4527EOCP
4528 set try
4529 if eval $compile_ok; then
4530 lseeksize=`./try`
49c10eea 4531 $echo "Your file offsets are now $lseeksize bytes long."
bd9b35c9
JH
4532 else
4533 dflt="$lseeksize"
4534 echo " "
4535 echo "(I can't seem to compile the test program. Guessing...)"
4536 rp="What is the size of your file offsets (in bytes)?"
4537 . ./myread
4538 lseeksize="$ans"
4539 fi
4540 case "$fpostype" in
4541 *_t) zzz="$fpostype" ;;
4542 *) zzz="fpos_t" ;;
4543 esac
4544 $echo $n "Rechecking the size of $zzz...$c" >&4
4545 $cat > try.c <<EOCP
4546#include <sys/types.h>
4547#include <stdio.h>
4548int main() {
4549 printf("%d\n", (int)sizeof($fpostype));
4550 exit(0);
4551}
4552EOCP
4553 set try
4554 if eval $compile_ok; then
4555 yyy=`./try`
4556 dflt="$lseeksize"
4557 case "$yyy" in
4558 '') echo " "
4559 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4560 ;;
4561 *) fpossize=$yyy
49c10eea 4562 echo " $fpossize bytes." >&4
bd9b35c9
JH
4563 ;;
4564 esac
4565 else
4566 dflt="$fpossize"
4567 echo " "
4568 echo "(I can't compile the test program. Guessing...)" >&4
4569 rp="What is the size of your file positions (in bytes)?"
4570 . ./myread
4571 fpossize="$ans"
4572 fi
4573 $rm -f try.c try
4574 fi
dfe9444c
AD
4575 ;;
4576esac
bd9b35c9
JH
4577
4578
4579case "$usemorebits" in
4580"$define"|true|[yY]*)
10cc9d2a 4581 use64bitint="$define"
bd9b35c9
JH
4582 uselongdouble="$define"
4583 usemorebits="$define"
dfe9444c 4584 ;;
bd9b35c9 4585*) usemorebits="$undef"
dfe9444c
AD
4586 ;;
4587esac
dfe9444c 4588
dfe9444c 4589
49c10eea
JH
4590case "$uselonglong" in
4591"$define"|true|[yY]*)
4592 cat <<EOM >&4
4593
10cc9d2a 4594*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
10cc9d2a
JH
4595EOM
4596 use64bitint="$define"
4597 ;;
4598esac
10cc9d2a
JH
4599case "$use64bits" in
4600"$define"|true|[yY]*)
4601 cat <<EOM >&4
4602
4603*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
49c10eea 4604EOM
10cc9d2a 4605 use64bitint="$define"
49c10eea
JH
4606 ;;
4607esac
10cc9d2a
JH
4608case "$use64bitints" in
4609"$define"|true|[yY]*)
4610 cat <<EOM >&4
4611
4612*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
10cc9d2a
JH
4613EOM
4614 use64bitint="$define"
4615 ;;
4616esac
3141530c
JH
4617case "$use64bitsint" in
4618"$define"|true|[yY]*)
4619 cat <<EOM >&4
4620
4621*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4622EOM
4623 use64bitint="$define"
4624 ;;
4625esac
4626case "$uselonglongs" in
4627"$define"|true|[yY]*)
4628 cat <<EOM >&4
4629
4630*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4631EOM
4632 use64bitint="$define"
4633 ;;
4634esac
a1b03cdf
JH
4635case "$use64bitsall" in
4636"$define"|true|[yY]*)
4637 cat <<EOM >&4
4638
4639*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4640EOM
4641 use64bitall="$define"
4642 ;;
4643esac
10cc9d2a 4644
49c10eea 4645case "$ccflags" in
10cc9d2a 4646*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
49c10eea 4647esac
10cc9d2a
JH
4648case "$use64bitall" in
4649"$define"|true|[yY]*) use64bitint="$define" ;;
49c10eea
JH
4650esac
4651
4652case "$longsize" in
46538) cat <<EOM
4654
4655You have natively 64-bit long integers.
bd9b35c9 4656EOM
ad551343
JH
4657 val="$define"
4658 ;;
10cc9d2a 4659*) case "$use64bitint" in
49c10eea 4660 "$define"|true|[yY]*) dflt='y';;
ad551343
JH
4661 *) dflt='n';;
4662 esac
49c10eea 4663 cat <<EOM
29209bc5 4664
bd9b35c9 4665Perl can be built to take advantage of 64-bit integer types
10cc9d2a 4666on some systems. To do so, Configure can be run with -Duse64bitint.
49c10eea 4667Choosing this option will most probably introduce binary incompatibilities.
29209bc5 4668
ad551343 4669If this doesn't make any sense to you, just accept the default '$dflt'.
29209bc5 4670EOM
ad551343
JH
4671 rp='Try to use 64-bit integers, if available?'
4672 . ./myread
4673 case "$ans" in
4674 [yY]*) val="$define" ;;
4675 *) val="$undef" ;;
4676 esac
4677 ;;
29209bc5 4678esac
10cc9d2a 4679set use64bitint
29209bc5
JH
4680eval $setvar
4681
1acc7ade
JH
4682case "$use64bitall" in
4683"$define"|true|[yY]*) dflt='y' ;;
4684*) case "$longsize" in
4685 8) dflt='y' ;;
4686 *) dflt='n' ;;
4687 esac
4688 ;;
4689esac
843b3b0e
JH
4690cat <<EOM
4691
4692You may also choose to try maximal 64-bitness. It means using as much
469364-bitness as possible on the platform. This in turn means even more
4694binary incompatibilities. On the other hand, your platform may not
4695have any more 64-bitness available than what you already have chosen.
4696
4697If this doesn't make any sense to you, just accept the default '$dflt'.
4698EOM
4699rp='Try to use maximal 64-bit support, if available?'
4700. ./myread
4701case "$ans" in
4702[yY]*) val="$define" ;;
4703*) val="$undef" ;;
4704esac
10cc9d2a 4705set use64bitall
49c10eea 4706eval $setvar
843b3b0e
JH
4707case "$use64bitall" in
4708"$define")
4709 case "$use64bitint" in
4710 "$undef")
4711 cat <<EOM
4712
4713Since you have chosen a maximally 64-bit build, I'm also turning on
4714the use of 64-bit integers.
4715EOM
4716 use64bitint="$define" ;;
4717 esac
4718 ;;
4719esac
bd9b35c9 4720
10cc9d2a 4721case "$use64bitint" in
bd9b35c9
JH
4722"$define"|true|[yY]*)
4723: Look for a hint-file generated 'call-back-unit'. If the
4724: user has specified that a 64-bit perl is to be built,
4725: we may need to set or change some other defaults.
10cc9d2a 4726 if $test -f use64bitint.cbu; then
e5788f28 4727 echo "Your platform has some specific hints for 64-bit integers, using them..."
10cc9d2a 4728 . ./use64bitint.cbu
bd9b35c9 4729 fi
49c10eea 4730 case "$longsize" in
701a9a05 4731 4) case "$archname64" in
10cc9d2a 4732 '') archname64=64int ;;
49c10eea
JH
4733 esac
4734 ;;
4735 esac
4736 ;;
4737esac
4738
10cc9d2a 4739case "$use64bitall" in
49c10eea
JH
4740"$define"|true|[yY]*)
4741: Look for a hint-file generated 'call-back-unit'. If the
843b3b0e 4742: user has specified that a maximally 64-bit perl is to be built,
49c10eea 4743: we may need to set or change some other defaults.
10cc9d2a 4744 if $test -f use64bitall.cbu; then
843b3b0e 4745 echo "Your platform has some specific hints for 64-bit builds, using them..."
10cc9d2a 4746 . ./use64bitall.cbu
49c10eea
JH
4747 fi
4748 case "$longsize" in
c6861c9d 4749 4) case "$archname64" in
bab3591f 4750 ''|64int) archname64=64all ;;
49c10eea
JH
4751 esac
4752 ;;
4753 esac
bd9b35c9
JH
4754 ;;
4755esac
4756
4757: determine the architecture name
2afac517 4758echo " "
bd9b35c9
JH
4759if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4760 tarch=`arch`"-$osname"
4761elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4762 if uname -m > tmparch 2>&1 ; then
4763 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4764 -e 's/$/'"-$osname/" tmparch`
4765 else
4766 tarch="$osname"
4767 fi
4768 $rm -f tmparch
4769else
4770 tarch="$osname"
4771fi
4772case "$myarchname" in
4773''|"$tarch") ;;
4774*)
4775 echo "(Your architecture name used to be $myarchname.)"
4776 archname=''
4777 ;;
8e07c86e 4778esac
bd9b35c9
JH
4779myarchname="$tarch"
4780case "$archname" in
4781'') dflt="$tarch";;
4782*) dflt="$archname";;
2afac517 4783esac
bd9b35c9
JH
4784rp='What is your architecture name'
4785. ./myread
4786archname="$ans"
4787case "$usethreads" in
29209bc5 4788$define)
bd9b35c9
JH
4789 echo "Threads selected." >&4
4790 case "$archname" in
4791 *-thread*) echo "...and architecture name already has -thread." >&4
4792 ;;
4793 *) archname="$archname-thread"
4794 echo "...setting architecture name to $archname." >&4
4795 ;;
4796 esac
29209bc5
JH
4797 ;;
4798esac
bd9b35c9
JH
4799case "$usemultiplicity" in
4800$define)
4801 echo "Multiplicity selected." >&4
4802 case "$archname" in
4803 *-multi*) echo "...and architecture name already has -multi." >&4
4804 ;;
4805 *) archname="$archname-multi"
4806 echo "...setting architecture name to $archname." >&4
4807 ;;
4808 esac
4809 ;;
4810esac
10cc9d2a 4811case "$use64bitint" in
bd9b35c9
JH
4812$define)
4813 case "$archname64" in
4814 '')
4815 ;;
4816 *)
4817 case "$archname" in
4818 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4819 ;;
4820 *) archname="$archname-$archname64"
4821 echo "...setting architecture name to $archname." >&4
4822 ;;
4823 esac
4824 ;;
4825 esac
4826esac
4827
4828: determine root of directory hierarchy where package will be installed.
4829case "$prefix" in
4830'')
4831 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4832 ;;
4833*)
4834 dflt="$prefix"
4835 ;;
4836esac
4837$cat <<EOM
4838
4839By default, $package will be installed in $dflt/bin, manual pages
4840under $dflt/man, etc..., i.e. with $dflt as prefix for all
4841installation directories. Typically this is something like /usr/local.
4842If you wish to have binaries under /usr/bin but other parts of the
4843installation under /usr/local, that's ok: you will be prompted
4844separately for each of the installation directories, the prefix being
4845only used to set the defaults.
4846
4847EOM
4848fn=d~
4849rp='Installation prefix to use?'
4850. ./getfile
4851oldprefix=''
4852case "$prefix" in
4853'') ;;
4854*)
4855 case "$ans" in
4856 "$prefix") ;;
4857 *) oldprefix="$prefix";;
4858 esac
4859 ;;
4860esac
4861prefix="$ans"
4862prefixexp="$ansexp"
4863
4864: is AFS running?
4865echo " "
4866case "$afs" in
4867$define|true) afs=true ;;
4868$undef|false) afs=false ;;
4869*) if test -d /afs; then
4870 afs=true
2afac517 4871 else
bd9b35c9 4872 afs=false
2afac517 4873 fi
bd9b35c9 4874 ;;
8e07c86e 4875esac
bd9b35c9
JH
4876if $afs; then
4877 echo "AFS may be running... I'll be extra cautious then..." >&4
4878else
4879 echo "AFS does not seem to be running..." >&4
4880fi
2afac517 4881
bd9b35c9
JH
4882: determine installation prefix for where package is to be installed.
4883if $afs; then
4633a7c4 4884$cat <<EOM
29209bc5 4885
bd9b35c9
JH
4886Since you are running AFS, I need to distinguish the directory in which
4887files will reside from the directory in which they are installed (and from
4888which they are presumably copied to the former directory by occult means).
4889
4633a7c4 4890EOM
bd9b35c9
JH
4891 case "$installprefix" in
4892 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4893 *) dflt="$installprefix";;
4894 esac
4895else
4896$cat <<EOM
2afac517 4897
bd9b35c9
JH
4898In some special cases, particularly when building $package for distribution,
4899it is convenient to distinguish between the directory in which files should
4900be installed from the directory ($prefix) in which they
4901will eventually reside. For most users, these two directories are the same.
8e07c86e 4902
bd9b35c9
JH
4903EOM
4904 case "$installprefix" in
4905 '') dflt=$prefix ;;
4906 *) dflt=$installprefix;;
4907 esac
4908fi
4909fn=d~
4910rp='What installation prefix should I use for installing files?'
4911. ./getfile
4912installprefix="$ans"
4913installprefixexp="$ansexp"
4633a7c4 4914
bd9b35c9
JH
4915: set the prefixit variable, to compute a suitable default value
4916prefixit='case "$3" in
4917""|none)
4918 case "$oldprefix" in
4919 "") eval "$1=\"\$$2\"";;
4920 *)
4921 case "$3" in
4922 "") eval "$1=";;
4923 none)
4924 eval "tp=\"\$$2\"";
4925 case "$tp" in
4926 ""|" ") eval "$1=\"\$$2\"";;
4927 *) eval "$1=";;
4928 esac;;
4929 esac;;
4930 esac;;
4931*)
4932 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4933 case "$tp" in
4934 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4935 /*-$oldprefix/*|\~*-$oldprefix/*)
4936 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4937 *) eval "$1=\"\$$2\"";;
4938 esac;;
4939esac'
4633a7c4 4940
ff935051
JH
4941
4942: get the patchlevel
bd9b35c9
JH
4943echo " "
4944echo "Getting the current patchlevel..." >&4
4945if $test -r $rsrc/patchlevel.h;then
49c10eea 4946 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
bd9b35c9
JH
4947 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4948 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
ff935051
JH
4949 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4950 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4951 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
bd9b35c9 4952else
49c10eea 4953 revision=0
bd9b35c9
JH
4954 patchlevel=0
4955 subversion=0
ff935051
JH
4956 api_revision=0
4957 api_version=0
4958 api_subversion=0
bd9b35c9 4959fi
49c10eea 4960$echo $n "(You have $package revision $revision" $c
bd9b35c9
JH
4961$echo $n " patchlevel $patchlevel" $c
4962test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4963echo ".)"
ff935051 4964case "$osname" in
3645a519 4965dos|vms)
ff935051 4966 : XXX Should be a Configure test for double-dots in filenames.
49c10eea 4967 version=`echo $revision $patchlevel $subversion | \
273cf8d1 4968 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
ff935051
JH
4969 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4970 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4971 ;;
4972*)
49c10eea 4973 version=`echo $revision $patchlevel $subversion | \
ff935051
JH
4974 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4975 api_versionstring=`echo $api_revision $api_version $api_subversion | \
273cf8d1 4976 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
ff935051
JH
4977 ;;
4978esac
4979: Special case the 5.005_xx maintenance series, which used 5.005
4980: without any subversion label as a subdirectory in $sitelib
4981if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4982 api_versionstring='5.005'
273cf8d1 4983fi
bd9b35c9
JH
4984
4985: determine installation style
4986: For now, try to deduce it from prefix unless it is already set.
4987: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4988case "$installstyle" in
4989'') case "$prefix" in
4990 *perl*) dflt='lib';;
4991 *) dflt='lib/perl5' ;;
34d1710f 4992 esac
4633a7c4 4993 ;;
d6c8a45d 4994*) dflt="$installstyle" ;;
4633a7c4 4995esac
bd9b35c9
JH
4996: Probably not worth prompting for this since we prompt for all
4997: the directories individually, and the prompt would be too long and
4998: confusing anyway.
4999installstyle=$dflt
4633a7c4 5000
bd9b35c9
JH
5001: determine where private library files go
5002: Usual default is /usr/local/lib/perl5/$version.
5003: Also allow things like /opt/perl/lib/$version, since
5004: /opt/perl/lib/perl5... would be redundant.
5005: The default "style" setting is made in installstyle.U
5006case "$installstyle" in
5007*lib/perl5*) set dflt privlib lib/$package/$version ;;
5008*) set dflt privlib lib/$version ;;
a4f3eea9 5009esac
bd9b35c9
JH
5010eval $prefixit
5011$cat <<EOM
a4f3eea9 5012
bd9b35c9
JH
5013There are some auxiliary files for $package that need to be put into a
5014private library directory that is accessible by everyone.
5015
5016EOM
5017fn=d~+
5018rp='Pathname where the private library files will reside?'
5019. ./getfile
5020privlib="$ans"
5021privlibexp="$ansexp"
5022: Change installation prefix, if necessary.
5023if $test X"$prefix" != X"$installprefix"; then
5024 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
a4f3eea9 5025else
bd9b35c9
JH
5026 installprivlib="$privlibexp"
5027fi
a4f3eea9 5028
bd9b35c9
JH
5029: set the prefixup variable, to restore leading tilda escape
5030prefixup='case "$prefixexp" in
5031"$prefix") ;;
5032*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5033esac'
a4f3eea9 5034
bd9b35c9
JH
5035: determine where public architecture dependent libraries go
5036set archlib archlib
5037eval $prefixit
5038: privlib default is /usr/local/lib/$package/$version
5039: archlib default is /usr/local/lib/$package/$version/$archname
5040: privlib may have an optional trailing /share.
5041tdflt=`echo $privlib | $sed 's,/share$,,'`
5042tdflt=$tdflt/$archname
5043case "$archlib" in
5044'') dflt=$tdflt
29209bc5 5045 ;;
bd9b35c9
JH
5046*) dflt="$archlib"
5047 ;;
29209bc5 5048esac
bd9b35c9 5049$cat <<EOM
29209bc5 5050
bd9b35c9
JH
5051$spackage contains architecture-dependent library files. If you are
5052sharing libraries in a heterogeneous environment, you might store
5053these files in a separate location. Otherwise, you can just include
5054them with the rest of the public library files.
a4f3eea9 5055
bd9b35c9
JH
5056EOM
5057fn=d+~
5058rp='Where do you want to put the public architecture-dependent libraries?'
5059. ./getfile
5060archlib="$ans"
5061archlibexp="$ansexp"
5062if $test X"$archlib" = X"$privlib"; then
5063 d_archlib="$undef"
5064else
5065 d_archlib="$define"
5066fi
5067: Change installation prefix, if necessary.
5068if $test X"$prefix" != X"$installprefix"; then
5069 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5070else
5071 installarchlib="$archlibexp"
5072fi
a4f3eea9 5073
a4f3eea9 5074
bd9b35c9
JH
5075: Binary compatibility with 5.005 is not possible for builds
5076: with advanced features
5077case "$usethreads$usemultiplicity" in
5078*define*)
5079 bincompat5005="$undef"
5080 d_bincompat5005="$undef"
5081 ;;
5082*) $cat <<EOM
a4f3eea9 5083
ee3551f5
GS
5084This version of Perl can be compiled for binary compatibility with 5.005.
5085If you decide to do so, you will be able to continue using most of the
5086extensions that were compiled for Perl 5.005.
a4f3eea9 5087
a4f3eea9 5088EOM
bd9b35c9
JH
5089 case "$bincompat5005$d_bincompat5005" in
5090 *"$undef"*) dflt=n ;;
5091 *) dflt=y ;;
a4f3eea9 5092 esac
bd9b35c9
JH
5093 rp='Binary compatibility with Perl 5.005?'
5094 . ./myread
5095 case "$ans" in
5096 y*) val="$define" ;;
5097 *) val="$undef" ;;
a4f3eea9 5098 esac
bd9b35c9
JH
5099 set d_bincompat5005
5100 eval $setvar
5101 case "$d_bincompat5005" in
5102 "$define")
5103 bincompat5005="$define"
5104 ;;
5105 *) bincompat5005="$undef"
5106 d_bincompat5005="$undef"
a4f3eea9 5107 ;;
5108 esac
bd9b35c9 5109 ;;
a4f3eea9 5110esac
5111
a4f3eea9 5112
bd9b35c9
JH
5113: see if setuid scripts can be secure
5114$cat <<EOM
a4f3eea9 5115
bd9b35c9
JH
5116Some kernels have a bug that prevents setuid #! scripts from being
5117secure. Some sites have disabled setuid #! scripts because of this.
a4f3eea9 5118
bd9b35c9
JH
5119First let's decide if your kernel supports secure setuid #! scripts.
5120(If setuid #! scripts would be secure but have been disabled anyway,
5121don't say that they are secure if asked.)
5ff3f7a4
GS
5122
5123EOM
a4f3eea9 5124
bd9b35c9
JH
5125val="$undef"
5126if $test -d /dev/fd; then
5127 echo "#!$ls" >reflect
5128 chmod +x,u+s reflect
5129 ./reflect >flect 2>&1
5130 if $contains "/dev/fd" flect >/dev/null; then
5131 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5132 val="$define"
5133 else
5134 $cat <<EOM
5135If you are not sure if they are secure, I can check but I'll need a
5136username and password different from the one you are using right now.
5137If you don't have such a username or don't want me to test, simply
5138enter 'none'.
a4f3eea9 5139
5140EOM
bd9b35c9
JH
5141 rp='Other username to test security of setuid scripts with?'
5142 dflt='none'
5143 . ./myread
5144 case "$ans" in
5145 n|none)
5146 case "$d_suidsafe" in
5147 '') echo "I'll assume setuid scripts are *not* secure." >&4
5148 dflt=n;;
5149 "$undef")
5150 echo "Well, the $hint value is *not* secure." >&4
5151 dflt=n;;
5152 *) echo "Well, the $hint value *is* secure." >&4
5153 dflt=y;;
dfe9444c
AD
5154 esac
5155 ;;
bd9b35c9
JH
5156 *)
5157 $rm -f reflect flect
5158 echo "#!$ls" >reflect
5159 chmod +x,u+s reflect
5160 echo >flect
5161 chmod a+w flect
5162 echo '"su" will (probably) prompt you for '"$ans's password."
5163 su $ans -c './reflect >flect'
5164 if $contains "/dev/fd" flect >/dev/null; then
5165 echo "Okay, it looks like setuid scripts are secure." >&4
5166 dflt=y
5167 else
5168 echo "I don't think setuid scripts are secure." >&4
5169 dflt=n
5170 fi
5171 ;;
5172 esac
5173 rp='Does your kernel have *secure* setuid scripts?'
5174 . ./myread
5175 case "$ans" in
5176 [yY]*) val="$define";;
5177 *) val="$undef";;
dfe9444c 5178 esac
a4f3eea9 5179 fi
5180else
bd9b35c9
JH
5181 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5182 echo "(That's for file descriptors, not floppy disks.)"
5183 val="$undef"
a4f3eea9 5184fi
bd9b35c9
JH
5185set d_suidsafe
5186eval $setvar
5187
5188$rm -f reflect flect
5189
5190: now see if they want to do setuid emulation
5191echo " "
5192val="$undef"
5193case "$d_suidsafe" in
5194"$define")
5195 val="$undef"
5196 echo "No need to emulate SUID scripts since they are secure here." >& 4
5197 ;;
5198*)
5199 $cat <<EOM
5200Some systems have disabled setuid scripts, especially systems where
5201setuid scripts cannot be secure. On systems where setuid scripts have
5202been disabled, the setuid/setgid bits on scripts are currently
5203useless. It is possible for $package to detect those bits and emulate
5204setuid/setgid in a secure fashion. This emulation will only work if
5205setuid scripts have been disabled in your kernel.
5206
5207EOM
5208 case "$d_dosuid" in
5209 "$define") dflt=y ;;
5210 *) dflt=n ;;
a4f3eea9 5211 esac
bd9b35c9 5212 rp="Do you want to do setuid/setgid emulation?"
a4f3eea9 5213 . ./myread
5214 case "$ans" in
bd9b35c9
JH
5215 [yY]*) val="$define";;
5216 *) val="$undef";;
a4f3eea9 5217 esac
5218 ;;
a4f3eea9 5219esac
bd9b35c9
JH
5220set d_dosuid
5221eval $setvar
a4f3eea9 5222
bfb7748a
AD
5223: determine filename position in cpp output
5224echo " "
5225echo "Computing filename position in cpp output for #include directives..." >&4
5226echo '#include <stdio.h>' > foo.c
5227$cat >fieldn <<EOF
5228$startsh
5229$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5230$grep '^[ ]*#.*stdio\.h' | \
5231while read cline; do
5232 pos=1
5233 set \$cline
5234 while $test \$# -gt 0; do
5235 if $test -r \`echo \$1 | $tr -d '"'\`; then
5236 echo "\$pos"
5237 exit 0
5238 fi
5239 shift
5240 pos=\`expr \$pos + 1\`
5241 done
5242done
5243EOF
5244chmod +x fieldn
5245fieldn=`./fieldn`
5246$rm -f foo.c fieldn
5247case $fieldn in
5248'') pos='???';;
52491) pos=first;;
52502) pos=second;;
52513) pos=third;;
5252*) pos="${fieldn}th";;
5253esac
5254echo "Your cpp writes the filename in the $pos field of the line."
5255
5256: locate header file
5257$cat >findhdr <<EOF
5258$startsh
5259wanted=\$1
9cc6feab 5260name=''
3656fc86
JH
5261for usrincdir in $usrinc
5262do
5263 if test -f \$usrincdir/\$wanted; then
5264 echo "\$usrincdir/\$wanted"
5265 exit 0
5266 fi
5267done
bfb7748a
AD
5268awkprg='{ print \$$fieldn }'
5269echo "#include <\$wanted>" > foo\$\$.c
5270$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5271$grep "^[ ]*#.*\$wanted" | \
5272while read cline; do
5273 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5274 case "\$name" in
4e400192
JH
5275 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5276 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5277 *) exit 2;;
bfb7748a
AD
5278 esac;
5279done;
4e400192
JH
5280#
5281# status = 0: grep returned 0 lines, case statement not executed
5282# status = 1: headerfile found
5283# status = 2: while loop executed, no headerfile found
5284#
5285status=\$?
bfb7748a 5286$rm -f foo\$\$.c;
4e400192
JH
5287if test \$status -eq 1; then
5288 exit 0;
5289fi
5290exit 1
bfb7748a
AD
5291EOF
5292chmod +x findhdr
5293
5294: define an alternate in-header-list? function
5295inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5296cont=true; xxf="echo \"<\$1> found.\" >&4";
5297case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5298*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5299esac;
5300case $# in 4) instead=instead;; *) instead="at last";; esac;
5301while $test "$cont"; do
5302 xxx=`./findhdr $1`
5303 var=$2; eval "was=\$$2";
5304 if $test "$xxx" && $test -r "$xxx";
5305 then eval $xxf;
5306 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5307 cont="";
5308 else eval $xxnf;
5309 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5310 set $yyy; shift; shift; yyy=$@;
5311 case $# in 0) cont="";;
5312 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5313 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5314 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5315 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5316 esac;
5317done;
5318while $test "$yyy";
5319do set $yyy; var=$2; eval "was=\$$2";
5320 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5321 set $yyy; shift; shift; yyy=$@;
5322done'
5323
5324: see if this is a malloc.h system
5325set malloc.h i_malloc
5326eval $inhdr
5327
5328: see if stdlib is available
5329set stdlib.h i_stdlib
5330eval $inhdr
5331
5332: determine which malloc to compile in
5333echo " "
5334case "$usemymalloc" in
5ff3f7a4
GS
5335''|[yY]*|true|$define) dflt='y' ;;
5336*) dflt='n' ;;
bfb7748a
AD
5337esac
5338rp="Do you wish to attempt to use the malloc that comes with $package?"
5339. ./myread
5340usemymalloc="$ans"
5341case "$ans" in
5342y*|true)
5343 usemymalloc='y'
5344 mallocsrc='malloc.c'
5345 mallocobj="malloc$_o"
5346 d_mymalloc="$define"
5347 case "$libs" in
5348 *-lmalloc*)
5349 : Remove malloc from list of libraries to use
5350 echo "Removing unneeded -lmalloc from library list" >&4
5351 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5352 shift
5353 libs="$*"
5354 echo "libs = $libs" >&4
5355 ;;
5356 esac
5357 ;;
5358*)
5359 usemymalloc='n'
5360 mallocsrc=''
5361 mallocobj=''
5362 d_mymalloc="$undef"
5363 ;;
5364esac
5365
5366: compute the return types of malloc and free
5367echo " "
5368$cat >malloc.c <<END
5369#$i_malloc I_MALLOC
5370#$i_stdlib I_STDLIB
5371#include <stdio.h>
5372#include <sys/types.h>
5373#ifdef I_MALLOC
5374#include <malloc.h>
5375#endif
5376#ifdef I_STDLIB
5377#include <stdlib.h>
5378#endif
5379#ifdef TRY_MALLOC
5380void *malloc();
5381#endif
5382#ifdef TRY_FREE
5383void free();
5384#endif
5385END
5386case "$malloctype" in
5387'')
5388 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5389 malloctype='void *'
5390 else
5391 malloctype='char *'
5392 fi
5393 ;;
5394esac
5395echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5396
5397case "$freetype" in
5398'')
5399 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5400 freetype='void'
5401 else
5402 freetype='int'
5403 fi
5404 ;;
5405esac
5406echo "Your system uses $freetype free(), it would seem." >&4
5407$rm -f malloc.[co]
a3635516
JH
5408$cat <<EOM
5409
7cedd6f8
JH
5410After $package is installed, you may wish to install various
5411add-on modules and utilities. Typically, these add-ons will
5412be installed under $prefix with the rest
5413of this package. However, you may wish to install such add-ons
5414elsewhere under a different prefix.
5415
5416If you do not wish to put everything under a single prefix, that's
5417ok. You will be prompted for the individual locations; this siteprefix
5418is only used to suggest the defaults.
5419
5420The default should be fine for most people.
5421
5422EOM
5423fn=d~+
5424rp='Installation prefix to use for add-on modules and utilities?'
5425: XXX Here might be another good place for an installstyle setting.
5426case "$siteprefix" in
5427'') dflt=$prefix ;;
5428*) dflt=$siteprefix ;;
5429esac
5430. ./getfile
5431: XXX Prefixit unit does not yet support siteprefix and vendorprefix
5432oldsiteprefix=''
5433case "$siteprefix" in
5434'') ;;
5435*) case "$ans" in
5436 "$prefix") ;;
5437 *) oldsiteprefix="$prefix";;
5438 esac
5439 ;;
5440esac
5441siteprefix="$ans"
5442siteprefixexp="$ansexp"
5443
5444: determine where site specific libraries go.
5445: Usual default is /usr/local/lib/perl5/site_perl/$version
5446: The default "style" setting is made in installstyle.U
5447: XXX No longer works with Prefixit stuff.
5448prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5449case "$sitelib" in
5450'') case "$installstyle" in
5451 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5452 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5453 esac
5454 ;;
5455*) dflt="$sitelib"
5456 ;;
5457esac
5458$cat <<EOM
5459
5460The installation process will create a directory for
5461site-specific extensions and modules. Most users find it convenient
5462to place all site-specific files in this directory rather than in the
5463main distribution directory.
5464
5465EOM
5466fn=d~+
5467rp='Pathname for the site-specific library files?'
5468. ./getfile
5469sitelib="$ans"
5470sitelibexp="$ansexp"
5471sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5472: Change installation prefix, if necessary.
5473if $test X"$prefix" != X"$installprefix"; then
5474 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5475else
5476 installsitelib="$sitelibexp"
5477fi
5478
5479: determine where site specific architecture-dependent libraries go.
5480: sitelib default is /usr/local/lib/perl5/site_perl/$version
5481: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5482: sitelib may have an optional trailing /share.
5483case "$sitearch" in
5484'') dflt=`echo $sitelib | $sed 's,/share$,,'`
5485 dflt="$dflt/$archname"
5486 ;;
5487*) dflt="$sitearch"
5488 ;;
5489esac
5490set sitearch sitearch none
5491eval $prefixit
5492$cat <<EOM
5493
5494The installation process will also create a directory for
5495architecture-dependent site-specific extensions and modules.
5496
5497EOM
5498fn=d~+
5499rp='Pathname for the site-specific architecture-dependent library files?'
5500. ./getfile
5501sitearch="$ans"
5502sitearchexp="$ansexp"
5503: Change installation prefix, if necessary.
5504if $test X"$prefix" != X"$installprefix"; then
5505 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5506else
5507 installsitearch="$sitearchexp"
5508fi
5509
5510$cat <<EOM
5511
a3635516
JH
5512The installation process will also create a directory for
5513vendor-supplied add-ons. Vendors who supply perl with their system
5514may find it convenient to place all vendor-supplied files in this
5515directory rather than in the main distribution directory. This will
5516ease upgrades between binary-compatible maintenance versions of perl.
5517
5518Of course you may also use these directories in whatever way you see
5519fit. For example, you might use them to access modules shared over a
5520company-wide network.
5521
5522The default answer should be fine for most people.
5523This causes further questions about vendor add-ons to be skipped
5524and no vendor-specific directories will be configured for perl.
5525
5526EOM
5527rp='Do you want to configure vendor-specific add-on directories?'
5528case "$usevendorprefix" in
5529define|true|[yY]*) dflt=y ;;
49c10eea
JH
5530*) : User may have set vendorprefix directly on Configure command line.
5531 case "$vendorprefix" in
5532 ''|' ') dflt=n ;;
5533 *) dflt=y ;;
5534 esac
5535 ;;
a3635516
JH
5536esac
5537. ./myread
5538case "$ans" in
5539[yY]*) fn=d~+
5540 rp='Installation prefix to use for vendor-supplied add-ons?'
5541 case "$vendorprefix" in
5542 '') dflt='' ;;
5543 *) dflt=$vendorprefix ;;
5544 esac
5545 . ./getfile
49c10eea 5546 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
a3635516
JH
5547 oldvendorprefix=''
5548 case "$vendorprefix" in
5549 '') ;;
5550 *) case "$ans" in
5551 "$prefix") ;;
5552 *) oldvendorprefix="$prefix";;
5553 esac
5554 ;;
5555 esac
5556 usevendorprefix="$define"
5557 vendorprefix="$ans"
5558 vendorprefixexp="$ansexp"
5559 ;;
5560*) usevendorprefix="$undef"
5561 vendorprefix=''
5562 vendorprefixexp=''
5563 ;;
5564esac
5565
5566case "$vendorprefix" in
5567'') d_vendorlib="$undef"
5568 vendorlib=''
5569 vendorlibexp=''
5570 ;;
5571*) d_vendorlib="$define"
5572 : determine where vendor-supplied modules go.
629ae163 5573 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
49c10eea
JH
5574 case "$vendorlib" in
5575 '')
5576 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5577 case "$installstyle" in
5578 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5579 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5580 esac
5581 ;;
5582 *) dflt="$vendorlib"
5583 ;;
a3635516
JH
5584 esac
5585 fn=d~+
5586 rp='Pathname for the vendor-supplied library files?'
5587 . ./getfile
5588 vendorlib="$ans"
5589 vendorlibexp="$ansexp"
a3635516
JH
5590 ;;
5591esac
526fdc24 5592vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
49c10eea
JH
5593: Change installation prefix, if necessary.
5594if $test X"$prefix" != X"$installprefix"; then
5595 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5596else
5597 installvendorlib="$vendorlibexp"
5598fi
a3635516 5599
526fdc24
MS
5600case "$vendorprefix" in
5601'') d_vendorarch="$undef"
5602 vendorarch=''
5603 vendorarchexp=''
5604 ;;
5605*) d_vendorarch="$define"
5606 : determine where vendor-supplied architecture-dependent libraries go.
5607 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
5608 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5609 : vendorlib may have an optional trailing /share.
5610 case "$vendorarch" in
5611 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
5612 dflt="$dflt/$archname"
5613 ;;
5614 *) dflt="$vendorarch" ;;
5615 esac
5616 fn=d~+
5617 rp='Pathname for vendor-supplied architecture-dependent files?'
5618 . ./getfile
5619 vendorarch="$ans"
5620 vendorarchexp="$ansexp"
5621 ;;
5622esac
5623: Change installation prefix, if necessary.
5624if $test X"$prefix" != X"$installprefix"; then
5625 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5626else
5627 installvendorarch="$vendorarchexp"
5628fi
5629
3b777bb4
GS
5630: Final catch-all directories to search
5631$cat <<EOM
5632
5633Lastly, you can have perl look in other directories for extensions and
5634modules in addition to those already specified.
5635These directories will be searched after
5636 $sitearch
5637 $sitelib
5638EOM
5639test X"$vendorlib" != "X" && echo ' ' $vendorlib
5640test X"$vendorarch" != "X" && echo ' ' $vendorarch
5641echo ' '
5642case "$otherlibdirs" in
5643''|' ') dflt='none' ;;
5644*) dflt="$otherlibdirs" ;;
5645esac
5646$cat <<EOM
5647Enter a colon-separated set of extra paths to include in perl's @INC
5648search path, or enter 'none' for no extra paths.
5649
5650EOM
5651
5652rp='Colon-separated list of additional directories for perl to search?'
5653. ./myread
5654case "$ans" in
5655' '|''|none) otherlibdirs=' ' ;;
5656*) otherlibdirs="$ans" ;;
5657esac
5658case "$otherlibdirs" in
5659' ') val=$undef ;;
5660*) val=$define ;;
5661esac
5662set d_perl_otherlibdirs
5663eval $setvar
5664
c4f23d77
AD
5665: Cruising for prototypes
5666echo " "
5667echo "Checking out function prototypes..." >&4
5668$cat >prototype.c <<'EOCP'
5a411a32 5669int main(int argc, char *argv[]) {
c4f23d77
AD
5670 exit(0);}
5671EOCP
5672if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5673 echo "Your C compiler appears to support function prototypes."
5674 val="$define"
5675else
5676 echo "Your C compiler doesn't seem to understand function prototypes."
5677 val="$undef"
5678fi
5679set prototype
5680eval $setvar
5681$rm -f prototype*
5682
5683case "$prototype" in
5684"$define") ;;
5685*) ansi2knr='ansi2knr'
5686 echo " "
5687 cat <<EOM >&4
5688
5689$me: FATAL ERROR:
5690This version of $package can only be compiled by a compiler that
5691understands function prototypes. Unfortunately, your C compiler
5692 $cc $ccflags
5693doesn't seem to understand them. Sorry about that.
5694
5ff3f7a4 5695If GNU cc is available for your system, perhaps you could try that instead.
c4f23d77
AD
5696
5697Eventually, we hope to support building Perl with pre-ANSI compilers.
5698If you would like to help in that effort, please contact <perlbug@perl.org>.
5699
5700Aborting Configure now.
5701EOM
5702 exit 2
5703 ;;
5704esac
5705
5706: determine where public executables go
5707echo " "
5708set dflt bin bin
5709eval $prefixit
5710fn=d~
5711rp='Pathname where the public executables will reside?'
5712. ./getfile
5713if $test "X$ansexp" != "X$binexp"; then
5714 installbin=''
5715fi
5716bin="$ans"
5717binexp="$ansexp"
dd4e71fd
JH
5718: Change installation prefix, if necessary.
5719: XXX Bug? -- ignores Configure -Dinstallprefix setting.
5720if $test X"$prefix" != X"$installprefix"; then
ec897fb9 5721 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
5722else
5723 installbin="$binexp"
c4f23d77
AD
5724fi
5725
49c10eea
JH
5726: Find perl5.005 or later.
5727echo "Looking for a previously installed perl5.005 or later... "
5728case "$perl5" in
5729'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5730 : Check if this perl is recent and can load a simple module
5731 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5732 perl5=$tdir/perl
5733 break;
5734 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5735 perl5=$tdir/perl
5736 break;
5737 fi
5738 done
5739 ;;
5740*) perl5="$perl5"
5741 ;;
5742esac
5743case "$perl5" in
5744'') echo "None found. That's ok.";;
5745*) echo "Using $perl5." ;;
5746esac
5747
ff935051
JH
5748: Determine list of previous versions to include in @INC
5749$cat > getverlist <<EOPL
49c10eea 5750#!$perl5 -w
ff935051
JH
5751use File::Basename;
5752\$api_versionstring = "$api_versionstring";
5753\$version = "$version";
92d29cee 5754\$stem = "$sitelib_stem";
ff935051
JH
5755\$archname = "$archname";
5756EOPL
5757 $cat >> getverlist <<'EOPL'
5758# Can't have leading @ because metaconfig interprets it as a command!
5759;@inc_version_list=();
49c10eea 5760# XXX Redo to do opendir/readdir?
ff935051
JH
5761if (-d $stem) {
5762 chdir($stem);
5763 ;@candidates = glob("5.*");
5764}
5765else {
5766 ;@candidates = ();
5767}
5768
937ac629
JH
5769# XXX ToDo: These comparisons must be reworked when two-digit
5770# subversions come along, so that 5.7.10 compares as greater than
5771# 5.7.3! By that time, hope that 5.6.x is sufficiently
5772# widespread that we can use the built-in version vectors rather
5773# than reinventing them here. For 5.6.0, however, we must
5774# assume this script will likely be run by 5.005_0x. --AD 1/2000.
ff935051
JH
5775foreach $d (@candidates) {
5776 if ($d lt $version) {
5777 if ($d ge $api_versionstring) {
9a170fb4 5778 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
ff935051
JH
5779 }
5780 elsif ($d ge "5.005") {
9a170fb4 5781 unshift(@inc_version_list, grep { -d } $d);
ff935051
JH
5782 }
5783 }
5784 else {
5785 # Skip newer version. I.e. don't look in
5786 # 5.7.0 if we're installing 5.6.1.
5787 }
5788}
5789
5790if (@inc_version_list) {
3a096bf3 5791 print join(' ', @inc_version_list);
ff935051
JH
5792}
5793else {
5794 # Blank space to preserve value for next Configure run.
5795 print " ";
5796}
5797EOPL
5798chmod +x getverlist
5799case "$inc_version_list" in
49c10eea
JH
5800'') if test -x "$perl5"; then
5801 dflt=`$perl5 getverlist`
ff935051 5802 else
3a096bf3 5803 dflt='none'
ff935051
JH
5804 fi
5805 ;;
3a096bf3 5806$undef) dflt='none' ;;
ff935051
JH
5807*) dflt="$inc_version_list" ;;
5808esac
49c10eea
JH
5809case "$dflt" in
5810''|' ') dflt=none ;;
5811esac
c434e225
JO
5812case "$dflt" in
58135.005) case "$bincompat5005" in
5814 $define|true|[yY]*) ;;
5815 *) dflt=none ;;
5816 esac
5817 ;;
5818esac
ff935051
JH
5819$cat <<'EOM'
5820
5821In order to ease the process of upgrading, this version of perl
5822can be configured to use modules built and installed with earlier
5823versions of perl that were installed under $prefix. Specify here
5824the list of earlier versions that this version of perl should check.
5825If Configure detected no earlier versions of perl installed under
3a096bf3
JH
5826$prefix, then the list will be empty. Answer 'none' to tell perl
5827to not search earlier versions.
ff935051
JH
5828
5829The default should almost always be sensible, so if you're not sure,
5830just accept the default.
5831EOM
5832
3a096bf3 5833rp='List of earlier versions to include in @INC?'
ff935051 5834. ./myread
3a096bf3 5835case "$ans" in
49c10eea 5836[Nn]one|''|' ') inc_version_list=' ' ;;
3a096bf3
JH
5837*) inc_version_list="$ans" ;;
5838esac
5839case "$inc_version_list" in
5840''|' ')
82aaaa3c 5841 inc_version_list_init='0';;
3a096bf3 5842*) inc_version_list_init=`echo $inc_version_list |
82aaaa3c 5843 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
3a096bf3
JH
5844 ;;
5845esac
ff935051
JH
5846$rm -f getverlist
5847
104d25b7
JH
5848: determine whether to install perl also as /usr/bin/perl
5849
5850echo " "
dd4e71fd 5851if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
104d25b7 5852 $cat <<EOM
526fdc24 5853Many scripts expect perl to be installed as /usr/bin/perl.
104d25b7
JH
5854I can install the perl you are about to compile also as /usr/bin/perl
5855(in addition to $installbin/perl).
5856EOM
472a4973
JH
5857 case "$installusrbinperl" in
5858 "$undef"|[nN]*) dflt='n';;
5859 *) dflt='y';;
5860 esac
104d25b7
JH
5861 rp="Do you want to install perl as /usr/bin/perl?"
5862 . ./myread
5863 case "$ans" in
5864 [yY]*) val="$define";;
472a4973 5865 *) val="$undef" ;;
104d25b7 5866 esac
472a4973
JH
5867else
5868 val="$undef"
5869fi
104d25b7
JH
5870set installusrbinperl
5871eval $setvar
5872
a4f3eea9 5873echo " "
5874echo "Checking for GNU C Library..." >&4
5875cat >gnulibc.c <<EOM
aebf16e7 5876#include <stdio.h>
5a411a32 5877int main()
a4f3eea9 5878{
aebf16e7
AD
5879#ifdef __GLIBC__
5880 exit(0);
5881#else
5882 exit(1);
5883#endif
a4f3eea9 5884}
5885EOM
dfe9444c 5886set gnulibc
aebf16e7 5887if eval $compile_ok && ./gnulibc; then
a4f3eea9 5888 val="$define"
5889 echo "You are using the GNU C Library"
4633a7c4 5890else
a4f3eea9 5891 val="$undef"
5892 echo "You are not using the GNU C Library"
4633a7c4 5893fi
a4f3eea9 5894$rm -f gnulibc*
5895set d_gnulibc
5896eval $setvar
25f94b33 5897
a4f3eea9 5898: see if nm is to be used to determine whether a symbol is defined or not
5899case "$usenm" in
5900'')
dc45a647 5901 dflt=''
a4f3eea9 5902 case "$d_gnulibc" in
dc45a647
MB
5903 "$define")
5904 echo " "
5905 echo "nm probably won't work on the GNU C Library." >&4
a4f3eea9 5906 dflt=n
5907 ;;
dc45a647
MB
5908 esac
5909 case "$dflt" in
5910 '')
5911 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5912 echo " "
5913 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5914 echo "'nm' won't be sufficient on this sytem." >&4
5915 dflt=n
5916 fi
5917 ;;
5918 esac
5919 case "$dflt" in
c4f23d77 5920 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
a4f3eea9 5921 if $test $dflt -gt 20; then
5922 dflt=y
5923 else
5924 dflt=n
5925 fi
5926 ;;
5927 esac
5928 ;;
5929*)
5930 case "$usenm" in
dc45a647 5931 true|$define) dflt=y;;
a4f3eea9 5932 *) dflt=n;;
5933 esac
5934 ;;
25f94b33 5935esac
a4f3eea9 5936$cat <<EOM
4633a7c4 5937
dc45a647
MB
5938I can use $nm to extract the symbols from your C libraries. This
5939is a time consuming task which may generate huge output on the disk (up
5940to 3 megabytes) but that should make the symbols extraction faster. The
5941alternative is to skip the 'nm' extraction part and to compile a small
5942test program instead to determine whether each symbol is present. If
5943you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5944this may be the best solution.
5945
5946You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633a7c4 5947
a4f3eea9 5948EOM
693762b4 5949rp="Shall I use $nm to extract C symbols from the libraries?"
4633a7c4
LW
5950. ./myread
5951case "$ans" in
dc45a647 5952[Nn]*) usenm=false;;
a4f3eea9 5953*) usenm=true;;
4633a7c4
LW
5954esac
5955
a4f3eea9 5956runnm=$usenm
5957case "$reuseval" in
5958true) runnm=false;;
4633a7c4 5959esac
a4f3eea9 5960
5961: nm options which may be necessary
5962case "$nm_opt" in
5963'') if $test -f /mach_boot; then
1e422769 5964 nm_opt='' # Mach
a4f3eea9 5965 elif $test -d /usr/ccs/lib; then
1e422769 5966 nm_opt='-p' # Solaris (and SunOS?)
a4f3eea9 5967 elif $test -f /dgux; then
1e422769 5968 nm_opt='-p' # DG-UX
2ae324a7 5969 elif $test -f /lib64/rld; then
1e422769 5970 nm_opt='-p' # 64-bit Irix
a4f3eea9 5971 else
5972 nm_opt=''
5973 fi;;
4633a7c4 5974esac
4633a7c4 5975
a4f3eea9 5976: nm options which may be necessary for shared libraries but illegal
5977: for archive libraries. Thank you, Linux.
5978case "$nm_so_opt" in
5979'') case "$myuname" in
5980 *linux*)
693762b4 5981 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
a4f3eea9 5982 nm_so_opt='--dynamic'
4633a7c4 5983 fi
a4f3eea9 5984 ;;
4633a7c4 5985 esac
4633a7c4
LW
5986 ;;
5987esac
5988
a4f3eea9 5989case "$runnm" in
5990true)
5991: get list of predefined functions in a handy place
5992echo " "
5993case "$libc" in
5994'') libc=unknown
5995 case "$libs" in
dfe9444c 5996 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
a4f3eea9 5997 esac
5998 ;;
5999esac
6000libnames='';
6001case "$libs" in
6002'') ;;
6003*) for thislib in $libs; do
6004 case "$thislib" in
6005 -lc|-lc_s)
6006 : Handle C library specially below.
6007 ;;
6008 -l*)
6009 thislib=`echo $thislib | $sed -e 's/^-l//'`
6010 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
6011 :
6012 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
6013 :
dfe9444c 6014 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
a4f3eea9 6015 :
dfe9444c 6016 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
d97d40b5 6017 :
a4f3eea9 6018 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6019 :
6020 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6021 :
dfe9444c 6022 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
a4f3eea9 6023 :
6024 else
6025 try=''
6026 fi
6027 libnames="$libnames $try"
6028 ;;
6029 *) libnames="$libnames $thislib" ;;
6030 esac
6031 done
6032 ;;
6033esac
6034xxx=normal
6035case "$libc" in
6036unknown)
6037 set /lib/libc.$so
6038 for xxx in $libpth; do
6039 $test -r $1 || set $xxx/libc.$so
6040 : The messy sed command sorts on library version numbers.
6041 $test -r $1 || \
6042 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
28e8609d 6043 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
a4f3eea9 6044 h
6045 s/[0-9][0-9]*/0000&/g
6046 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6047 G
6048 s/\n/ /' | \
dfe9444c 6049 sort | $sed -e 's/^.* //'`
a4f3eea9 6050 eval set \$$#
6051 done
6052 $test -r $1 || set /usr/ccs/lib/libc.$so
dfe9444c
AD
6053 $test -r $1 || set /lib/libsys_s$_a
6054 ;;
a4f3eea9 6055*)
6056 set blurfl
6057 ;;
6058esac
6059if $test -r "$1"; then
6060 echo "Your (shared) C library seems to be in $1."
6061 libc="$1"
6062elif $test -r /lib/libc && $test -r /lib/clib; then
6063 echo "Your C library seems to be in both /lib/clib and /lib/libc."
6064 xxx=apollo
6065 libc='/lib/clib /lib/libc'
6066 if $test -r /lib/syslib; then
6067 echo "(Your math library is in /lib/syslib.)"
6068 libc="$libc /lib/syslib"
6069 fi
6070elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6071 echo "Your C library seems to be in $libc, as you said before."
dfe9444c
AD
6072elif $test -r $incpath/usr/lib/libc$_a; then
6073 libc=$incpath/usr/lib/libc$_a;
a4f3eea9 6074 echo "Your C library seems to be in $libc. That's fine."
dfe9444c
AD
6075elif $test -r /lib/libc$_a; then
6076 libc=/lib/libc$_a;
a4f3eea9 6077 echo "Your C library seems to be in $libc. You're normal."
6078else
dfe9444c 6079 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
a4f3eea9 6080 :
6081 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6082 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6083 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6084 :
dfe9444c 6085 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 6086 :
dfe9444c 6087 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 6088 :
4633a7c4 6089 else
dfe9444c 6090 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4633a7c4 6091 fi
a4f3eea9 6092 if $test -r "$tans"; then
6093 echo "Your C library seems to be in $tans, of all places."
6094 libc=$tans
6095 else
6096 libc='blurfl'
6097 fi
6098fi
6099if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6100 dflt="$libc"
6101 cat <<EOM
4633a7c4 6102
a4f3eea9 6103If the guess above is wrong (which it might be if you're using a strange
6104compiler, or your machine supports multiple models), you can override it here.
4633a7c4 6105
a4f3eea9 6106EOM
6107else
6108 dflt=''
28e8609d 6109 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
a4f3eea9 6110 cat >&4 <<EOM
6111I can't seem to find your C library. I've looked in the following places:
4633a7c4 6112
a4f3eea9 6113EOM
6114 $sed 's/^/ /' libpath
6115 cat <<EOM
4633a7c4 6116
a4f3eea9 6117None of these seems to contain your C library. I need to get its name...
4633a7c4 6118
a4f3eea9 6119EOM
6120fi
6121fn=f
6122rp='Where is your C library?'
6123. ./getfile
6124libc="$ans"
4633a7c4 6125
4633a7c4 6126echo " "
28e8609d 6127echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
a4f3eea9 6128set X `cat libnames`
4633a7c4 6129shift
a4f3eea9 6130xxx=files
6131case $# in 1) xxx=file; esac
6132echo "Extracting names from the following $xxx for later perusal:" >&4
6133echo " "
6134$sed 's/^/ /' libnames >&4
6135echo " "
6136$echo $n "This may take a while...$c" >&4
4633a7c4 6137
dfe9444c
AD
6138for file in $*; do
6139 case $file in
693762b4
AD
6140 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6141 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 6142 esac
dfe9444c 6143done >libc.tmp
4633a7c4 6144
a4f3eea9 6145$echo $n ".$c"
6146$grep fprintf libc.tmp > libc.ptf
6147xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6148xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6149xxx='[ADTSIW]'
6150if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
6151 eval $xscan;\
6152 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6153 eval $xrun
6154elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6155 eval $xscan;\
6156 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6157 eval $xrun
6158elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6159 eval $xscan;\
6160 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6161 eval $xrun
6162elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6163 eval $xscan;\
6164 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6165 eval $xrun
6166elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6167 eval $xscan;\
6168 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6169 eval $xrun
6170elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6171 eval $xscan;\
6172 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6173 eval $xrun
6174elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6175 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
6176 eval $xscan;\
6177 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6178 eval $xrun
6179elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6180 eval $xscan;\
6181 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6182 eval $xrun
6183elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6184 eval $xscan;\
6185 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6186 eval $xrun
1e422769 6187elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6188 eval $xscan;\
6189 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6190 eval $xrun
a4f3eea9 6191elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6192 eval $xscan;\
6193 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6194 eval $xrun
6195elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6196 eval $xscan;\
6197 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6198 eval $xrun
44a8e56a 6199elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6200 eval $xscan;\
6201 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6202 eval $xrun
0f502cca
BL
6203elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
6204 eval $xscan;\
6205 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6206 eval $xrun
a4f3eea9 6207else
693762b4 6208 $nm -p $* 2>/dev/null >libc.tmp
a4f3eea9 6209 $grep fprintf libc.tmp > libc.ptf
6210 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6211 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6212 then
6213 nm_opt='-p'
6214 eval $xrun
4633a7c4 6215 else
a4f3eea9 6216 echo " "
e5c9fcd0 6217 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
a4f3eea9 6218 com=''
dc45a647
MB
6219 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6220 for thisname in $libnames $libc; do
e5c9fcd0 6221 $ar t $thisname >>libc.tmp
a4f3eea9 6222 done
dfe9444c 6223 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
a4f3eea9 6224 echo "Ok." >&4
dc45a647
MB
6225 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6226 # Repeat libc to extract forwarders to DLL entries too
6227 for thisname in $libnames $libc; do
6228 $ar tv $thisname >>libc.tmp
6229 # Revision 50 of EMX has bug in $ar.
6230 # it will not extract forwarders to DLL entries
6231 # Use emximp which will extract exactly them.
6232 emximp -o tmp.imp $thisname \
6233 2>/dev/null && \
6234 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6235 < tmp.imp >>libc.tmp
6236 $rm tmp.imp
6237 done
6238 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6239 echo "Ok." >&4
a4f3eea9 6240 else
e5c9fcd0 6241 echo "$ar didn't seem to work right." >&4
a4f3eea9 6242 echo "Maybe this is a Cray...trying bld instead..." >&4
dfe9444c 6243 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
a4f3eea9 6244 then
6245 for thisname in $libnames; do
6246 bld t $libnames | \
dfe9444c 6247 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
e5c9fcd0 6248 $ar t $thisname >>libc.tmp
a4f3eea9 6249 done
6250 echo "Ok." >&4
6251 else
6252 echo "That didn't work either. Giving up." >&4
6253 exit 1
6254 fi
6255 fi
4633a7c4 6256 fi
4633a7c4 6257fi
a4f3eea9 6258nm_extract="$com"
6259if $test -f /lib/syscalls.exp; then
4633a7c4 6260 echo " "
a4f3eea9 6261 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
c6912327 6262 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
a4f3eea9 6263fi
6264;;
6265esac
6266$rm -f libnames libpath
6267
2afac517 6268: see if dld is available
6269set dld.h i_dld
6270eval $inhdr
4633a7c4 6271
2afac517 6272: is a C symbol defined?
6273csym='tlook=$1;
6274case "$3" in
6275-v) tf=libc.tmp; tc=""; tdc="";;
6276-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6277*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6278esac;
6279tx=yes;
6280case "$reuseval-$4" in
6281true-) ;;
6282true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6283esac;
6284case "$tx" in
6285yes)
6286 case "$runnm" in
6287 true)
6288 if $contains $tlook $tf >/dev/null 2>&1;
6289 then tval=true;
6290 else tval=false;
6291 fi;;
6292 *)
d674cd6d 6293 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
dfe9444c 6294 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
2afac517 6295 then tval=true;
6296 else tval=false;
6297 fi;
6298 $rm -f t t.c;;
6299 esac;;
6300*)
6301 case "$tval" in
6302 $define) tval=true;;
6303 *) tval=false;;
6304 esac;;
6305esac;
6306eval "$2=$tval"'
4633a7c4 6307
2afac517 6308: define an is-in-libc? function
6309inlibc='echo " "; td=$define; tu=$undef;
6310sym=$1; var=$2; eval "was=\$$2";
6311tx=yes;
6312case "$reuseval$was" in
6313true) ;;
6314true*) tx=no;;
6315esac;
6316case "$tx" in
6317yes)
6318 set $sym tres -f;
6319 eval $csym;
6320 case "$tres" in
6321 true)
6322 echo "$sym() found." >&4;
6323 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6324 *)
6325 echo "$sym() NOT found." >&4;
6326 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6327 esac;;
6328*)
6329 case "$was" in
6330 $define) echo "$sym() found." >&4;;
6331 *) echo "$sym() NOT found." >&4;;
6332 esac;;
6333esac'
4633a7c4 6334
2afac517 6335: see if dlopen exists
6336xxx_runnm="$runnm"
6337runnm=false
6338set dlopen d_dlopen
6339eval $inlibc
6340runnm="$xxx_runnm"
40a7a20a 6341
2afac517 6342: determine which dynamic loading, if any, to compile in
4633a7c4 6343echo " "
2afac517 6344dldir="ext/DynaLoader"
6345case "$usedl" in
6346$define|y|true)
6347 dflt='y'
6348 usedl="$define"
6349 ;;
6350$undef|n|false)
6351 dflt='n'
6352 usedl="$undef"
6353 ;;
6354*)
6355 dflt='n'
6356 case "$d_dlopen" in
6357 $define) dflt='y' ;;
6358 esac
6359 case "$i_dld" in
6360 $define) dflt='y' ;;
4633a7c4 6361 esac
2afac517 6362 : Does a dl_xxx.xs file exist for this operating system
dc45a647 6363 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4633a7c4
LW
6364 ;;
6365esac
2afac517 6366rp="Do you wish to use dynamic loading?"
6367. ./myread
6368usedl="$ans"
6369case "$ans" in
6370y*) usedl="$define"
6371 case "$dlsrc" in
6372 '')
dc45a647 6373 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
2afac517 6374 dflt="$dldir/dl_${osname}.xs"
6375 elif $test "$d_dlopen" = "$define" ; then
6376 dflt="$dldir/dl_dlopen.xs"
6377 elif $test "$i_dld" = "$define" ; then
6378 dflt="$dldir/dl_dld.xs"
4633a7c4 6379 else
2afac517 6380 dflt=''
4633a7c4 6381 fi
4633a7c4 6382 ;;
2afac517 6383 *) dflt="$dldir/$dlsrc"
6384 ;;
4633a7c4 6385 esac
2afac517 6386 echo "The following dynamic loading files are available:"
6387 : Can not go over to $dldir because getfile has path hard-coded in.
dc45a647
MB
6388 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6389 rp="Source file to use for dynamic loading"
6390 fn="fne"
b233458b 6391 gfpth="$src"
dc45a647 6392 . ./getfile
2afac517 6393 usedl="$define"
6394 : emulate basename
1e127011 6395 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
2304df62 6396
dc45a647 6397 $cat << EOM
2304df62 6398
2afac517 6399Some systems may require passing special flags to $cc -c to
6400compile modules that will be used to create a shared library.
6401To use no flags, say "none".
2304df62
AD
6402
6403EOM
2afac517 6404 case "$cccdlflags" in
6405 '') case "$gccversion" in
6406 '') case "$osname" in
6407 hpux) dflt='+z' ;;
6408 next) dflt='none' ;;
8cc95fdb 6409 irix*) dflt='-KPIC' ;;
3a6175e1 6410 svr4*|esix*|solaris) dflt='-KPIC' ;;
2afac517 6411 sunos) dflt='-pic' ;;
6412 *) dflt='none' ;;
dfe9444c
AD
6413 esac
6414 ;;
6415 *) case "$osname" in
3a6175e1 6416 svr4*|esix*|solaris) dflt='-fPIC' ;;
dfe9444c 6417 *) dflt='-fpic' ;;
81d89818 6418 esac ;;
2afac517 6419 esac ;;
bfb7748a 6420 ' ') dflt='none' ;;
2afac517 6421 *) dflt="$cccdlflags" ;;
6422 esac
6423 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6424 . ./myread
6425 case "$ans" in
6426 none) cccdlflags=' ' ;;
6427 *) cccdlflags="$ans" ;;
6428 esac
2304df62 6429
2afac517 6430 cat << EOM
ecfc5424 6431
2afac517 6432Some systems use ld to create libraries that can be dynamically loaded,
6433while other systems (such as those using ELF) use $cc.
a0f45b59 6434
2afac517 6435EOM
6436 case "$ld" in
6437 '') $cat >try.c <<'EOM'
6438/* Test for whether ELF binaries are produced */
6439#include <fcntl.h>
6440#include <stdlib.h>
5a411a32 6441int main() {
2afac517 6442 char b[4];
6443 int i = open("a.out",O_RDONLY);
6444 if(i == -1)
6445 exit(1); /* fail */
6446 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6447 exit(0); /* succeed (yes, it's ELF) */
2304df62 6448 else
2afac517 6449 exit(1); /* fail */
6450}
6451EOM
6452 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6453 cat <<EOM
6454You appear to have ELF support. I'll use $cc to build dynamic libraries.
6455EOM
6456 dflt="$cc"
2304df62 6457 else
2afac517 6458 echo "I'll use ld to build dynamic libraries."
6459 dflt='ld'
2304df62 6460 fi
2afac517 6461 rm -f try.c a.out
6462 ;;
6463 *) dflt="$ld"
6464 ;;
6465 esac
6466
6467 rp="What command should be used to create dynamic libraries?"
6468 . ./myread
6469 ld="$ans"
6470
6471 cat << EOM
6472
6473Some systems may require passing special flags to $ld to create a
6474library that can be dynamically loaded. If your ld flags include
6475-L/other/path options to locate libraries outside your loader's normal
6476search path, you may need to specify those -L options here as well. To
6477use no flags, say "none".
6478
6479EOM
6480 case "$lddlflags" in
6481 '') case "$osname" in
46193409 6482 beos) dflt='-nostart' ;;
a5f83cbf
JH
6483 hpux) dflt='-b';
6484 case "$gccversion" in
6485 '') dflt="$dflt +vnocompatwarnings" ;;
b36fec95
JH
6486 esac
6487 ;;
2afac517 6488 linux|irix*) dflt='-shared' ;;
6489 next) dflt='none' ;;
6490 solaris) dflt='-G' ;;
6491 sunos) dflt='-assert nodefinitions' ;;
6492 svr4*|esix*) dflt="-G $ldflags" ;;
6493 *) dflt='none' ;;
6494 esac
6495 ;;
6496 *) dflt="$lddlflags" ;;
6497 esac
6498
bfb7748a 6499 : Try to guess additional flags to pick up local libraries.
a0915cb7
AD
6500 : Be careful not to append to a plain 'none'
6501 case "$dflt" in
6502 none) dflt='' ;;
6503 esac
bfb7748a
AD
6504 for thisflag in $ldflags; do
6505 case "$thisflag" in
6506 -L*)
6507 case " $dflt " in
6508 *" $thisflag "*) ;;
6509 *) dflt="$dflt $thisflag" ;;
6510 esac
6511 ;;
2afac517 6512 esac
bfb7748a 6513 done
2afac517 6514
bfb7748a
AD
6515 case "$dflt" in
6516 ''|' ') dflt='none' ;;
6517 esac
2afac517 6518
6519 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6520 . ./myread
6521 case "$ans" in
6522 none) lddlflags=' ' ;;
6523 *) lddlflags="$ans" ;;
6524 esac
6525
6526 cat <<EOM
6527
6528Some systems may require passing special flags to $cc to indicate that
6529the resulting executable will use dynamic linking. To use no flags,
6530say "none".
6531
6532EOM
6533 case "$ccdlflags" in
6534 '') case "$osname" in
6535 hpux) dflt='-Wl,-E' ;;
6536 linux) dflt='-rdynamic' ;;
6537 next) dflt='none' ;;
6538 sunos) dflt='none' ;;
6539 *) dflt='none' ;;
6540 esac ;;
bfb7748a 6541 ' ') dflt='none' ;;
2afac517 6542 *) dflt="$ccdlflags" ;;
6543 esac
7f95ee77 6544 rp="Any special flags to pass to $cc to use dynamic linking?"
2afac517 6545 . ./myread
6546 case "$ans" in
6547 none) ccdlflags=' ' ;;
6548 *) ccdlflags="$ans" ;;
6549 esac
6550 ;;
6551*) usedl="$undef"
6552 ld='ld'
6553 dlsrc='dl_none.xs'
6554 lddlflags=''
6555 ccdlflags=''
6556 ;;
6557esac
6558
6559also=''
6560case "$usedl" in
6561$undef)
6562 # No dynamic loading being used, so don't bother even to prompt.
6563 useshrplib='false'
6564 ;;
6565*) case "$useshrplib" in
6566 '') case "$osname" in
4fabb596 6567 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
3e3baf6d 6568 dflt=y
2afac517 6569 also='Building a shared libperl is required for dynamic loading to work on your system.'
6570 ;;
6571 next*)
6572 case "$osvers" in
3e3baf6d 6573 4*) dflt=y
2afac517 6574 also='Building a shared libperl is needed for MAB support.'
6575 ;;
3e3baf6d 6576 *) dflt=n
2afac517 6577 ;;
6578 esac
6579 ;;
3e3baf6d 6580 *) dflt=n
2afac517 6581 ;;
6582 esac
6583 ;;
6584 $define|true|[Yy]*)
3e3baf6d 6585 dflt=y
2afac517 6586 ;;
3e3baf6d 6587 *) dflt=n
2afac517 6588 ;;
6589 esac
6590 $cat << EOM
6591
6592The perl executable is normally obtained by linking perlmain.c with
dfe9444c 6593libperl${_a}, any static extensions (usually just DynaLoader), and
2afac517 6594any other libraries needed on this system (such as -lm, etc.). Since
6595your system supports dynamic loading, it is probably possible to build
6596a shared libperl.$so. If you will have more than one executable linked
6597to libperl.$so, this will significantly reduce the size of each
6598executable, but it may have a noticeable affect on performance. The
6599default is probably sensible for your system.
6600$also
6601
6602EOM
6603 rp="Build a shared libperl.$so (y/n)"
6604 . ./myread
6605 case "$ans" in
6606 true|$define|[Yy]*)
5cf1d1f1 6607 useshrplib='true' ;;
2afac517 6608 *) useshrplib='false' ;;
6609 esac
6610 ;;
6611esac
6612
6613case "$useshrplib" in
6614true)
6615 case "$libperl" in
6616 '')
6617 # Figure out a good name for libperl.so. Since it gets stored in
6618 # a version-specific architecture-dependent library, the version
6619 # number isn't really that important, except for making cc/ld happy.
6620 #
6621 # A name such as libperl.so.3.1
6622 majmin="libperl.$so.$patchlevel.$subversion"
6623 # A name such as libperl.so.301
6624 majonly=`echo $patchlevel $subversion |
6625 $awk '{printf "%d%02d", $1, $2}'`
6626 majonly=libperl.$so.$majonly
6627 # I'd prefer to keep the os-specific stuff here to a minimum, and
6628 # rely on figuring it out from the naming of libc.
6629 case "${osname}${osvers}" in
6630 next4*)
6631 dflt=libperl.5.$so
6632 # XXX How handle the --version stuff for MAB?
6633 ;;
6634 linux*) # ld won't link with a bare -lperl otherwise.
6635 dflt=libperl.$so
6636 ;;
4fabb596
GS
6637 cygwin*) # include version
6638 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6639 ;;
2afac517 6640 *) # Try to guess based on whether libc has major.minor.
6641 case "$libc" in
6642 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6643 *libc.$so.[0-9]*) dflt=$majonly ;;
6644 *) dflt=libperl.$so ;;
6645 esac
6646 ;;
6647 esac
6648 ;;
6649 *) dflt=$libperl
6650 ;;
6651 esac
6652 cat << EOM
6653
6654I need to select a good name for the shared libperl. If your system uses
6655library names with major and minor numbers, then you might want something
6656like $majmin. Alternatively, if your system uses a single version
6657number for shared libraries, then you might want to use $majonly.
6658Or, your system might be quite happy with a simple libperl.$so.
6659
6660Since the shared libperl will get installed into a version-specific
6661architecture-dependent directory, the version number of the shared perl
6662library probably isn't important, so the default should be o.k.
6663
6664EOM
6665 rp='What name do you want to give to the shared libperl?'
6666 . ./myread
6667 libperl=$ans
6668 echo "Ok, I'll use $libperl"
6669 ;;
6670*)
dfe9444c 6671 libperl="libperl${_a}"
2afac517 6672 ;;
6673esac
6674
6675# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6676case "$shrpdir" in
6677'') ;;
6678*) $cat >&4 <<EOM
6679WARNING: Use of the shrpdir variable for the installation location of
6680the shared $libperl is not supported. It was never documented and
46193409 6681will not work in this version. Let me (perlbug@perl.com)
dfe9444c 6682know of any problems this may cause.
2afac517 6683
6684EOM
6685 case "$shrpdir" in
6686 "$archlibexp/CORE")
6687 $cat >&4 <<EOM
6688But your current setting of $shrpdir is
6689the default anyway, so it's harmless.
6690EOM
6691 ;;
6692 *)
4e2a5f63
AD
6693 $cat >&4 <<EOM
6694Further, your current attempted setting of $shrpdir
6695conflicts with the value of $archlibexp/CORE
6696that installperl will use.
6697EOM
dc45a647
MB
6698 ;;
6699 esac
6700 ;;
6701esac
6702
6703# How will the perl executable find the installed shared $libperl?
6704# Add $xxx to ccdlflags.
6705# If we can't figure out a command-line option, use $shrpenv to
6706# set env LD_RUN_PATH. The main perl makefile uses this.
6707shrpdir=$archlibexp/CORE
6708xxx=''
6709tmp_shrpenv=''
6710if "$useshrplib"; then
6711 case "$osname" in
6712 aix)
6713 # We'll set it in Makefile.SH...
6714 ;;
6715 solaris|netbsd)
6716 xxx="-R $shrpdir"
6717 ;;
6718 freebsd)
6719 xxx="-Wl,-R$shrpdir"
6720 ;;
6721 linux|irix*|dec_osf)
6722 xxx="-Wl,-rpath,$shrpdir"
6723 ;;
6724 next)
6725 # next doesn't like the default...
6726 ;;
46193409
JH
6727 beos)
6728 # beos doesn't like the default, either.
6729 ;;
3656fc86
JH
6730 hpux*)
6731 # hpux doesn't like the default, either.
6732 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6733 ;;
dc45a647
MB
6734 *)
6735 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6736 ;;
6737 esac
6738 case "$xxx" in
6739 '') ;;
6740 *)
6741 # Only add $xxx if it isn't already in ccdlflags.
6742 case " $ccdlflags " in
6743 *" $xxx "*) ;;
6744 *) ccdlflags="$ccdlflags $xxx"
6745 cat <<EOM >&4
6746
6747Adding $xxx to the flags
6748passed to $ld so that the perl executable will find the
6749installed shared $libperl.
6750
6751EOM
6752 ;;
6753 esac
6754 ;;
6755 esac
6756fi
5cf1d1f1
JH
6757# Fix ccdlflags in AIX for building external extensions.
6758# (For building Perl itself bare -bE:perl.exp is needed,
6759# Makefile.SH takes care of this.)
5f9d9a17 6760case "$osname" in
5cf1d1f1 6761aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5f9d9a17 6762esac
dc45a647
MB
6763# Respect a hint or command-line value.
6764case "$shrpenv" in
6765'') shrpenv="$tmp_shrpenv" ;;
6766esac
5cf1d1f1
JH
6767case "$ldlibpthname" in
6768'') ldlibpthname=LD_LIBRARY_PATH ;;
6769none) ldlibpthname='' ;;
6770esac
dc45a647
MB
6771
6772: determine where manual pages go
6773set man1dir man1dir none
6774eval $prefixit
6775$cat <<EOM
6776
6777$spackage has manual pages available in source form.
6778EOM
6779case "$nroff" in
6780nroff)
6781 echo "However, you don't have nroff, so they're probably useless to you."
6782 case "$man1dir" in
6783 '') man1dir="none";;
6784 esac;;
6785esac
6786echo "If you don't want the manual sources installed, answer 'none'."
6787case "$man1dir" in
6788' ') dflt=none
6789 ;;
6790'')
6791 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6792 lookpath="$lookpath $prefixexp/man/p_man/man1"
6793 lookpath="$lookpath $prefixexp/man/u_man/man1"
6794 lookpath="$lookpath $prefixexp/man/man.1"
6795 case "$sysman" in
6796 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6797 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6798 esac
6799 set dflt
6800 eval $prefixup
6801 ;;
6802*) dflt="$man1dir"
6803 ;;
6804esac
6805echo " "
6806fn=dn+~
6807rp="Where do the main $spackage manual pages (source) go?"
6808. ./getfile
6809if $test "X$man1direxp" != "X$ansexp"; then
6810 installman1dir=''
6811fi
6812man1dir="$ans"
6813man1direxp="$ansexp"
6814case "$man1dir" in
dd4e71fd 6815'') man1dir=' '
dc45a647
MB
6816 installman1dir='';;
6817esac
dc45a647 6818
dd4e71fd
JH
6819: Change installation prefix, if necessary.
6820if $test X"$prefix" != X"$installprefix"; then
ec897fb9 6821 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
6822else
6823 installman1dir="$man1direxp"
dc45a647
MB
6824fi
6825
6826: What suffix to use on installed man pages
6827
6828case "$man1dir" in
6829' ')
6830 man1ext='0'
6831 ;;
6832*)
6833 rp="What suffix should be used for the main $spackage man pages?"
6834 case "$man1ext" in
6835 '') case "$man1dir" in
6836 *1) dflt=1 ;;
6837 *1p) dflt=1p ;;
6838 *1pm) dflt=1pm ;;
6839 *l) dflt=l;;
6840 *n) dflt=n;;
6841 *o) dflt=o;;
6842 *p) dflt=p;;
6843 *C) dflt=C;;
6844 *L) dflt=L;;
6845 *L1) dflt=L1;;
6846 *) dflt=1;;
6847 esac
6848 ;;
6849 *) dflt="$man1ext";;
6850 esac
6851 . ./myread
6852 man1ext="$ans"
6853 ;;
6854esac
6855
6856: see if we can have long filenames
6857echo " "
dc45a647 6858first=123456789abcdef
8c99d73e 6859$rm -f $first
dc45a647
MB
6860if (echo hi >$first) 2>/dev/null; then
6861 if $test -f 123456789abcde; then
6862 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6863 val="$undef"
6864 else
8c99d73e
GS
6865 echo 'You can have filenames longer than 14 characters.'>&4
6866 val="$define"
dc45a647
MB
6867 fi
6868else
6869 $cat <<'EOM'
8c99d73e
GS
6870You can't have filenames longer than 14 chars.
6871You can't even think about them!
dc45a647
MB
6872EOM
6873 val="$undef"
6874fi
6875set d_flexfnam
6876eval $setvar
8c99d73e 6877$rm -rf 123456789abcde*
dc45a647
MB
6878
6879: determine where library module manual pages go
6880set man3dir man3dir none
6881eval $prefixit
6882$cat <<EOM
6883
6884$spackage has manual pages for many of the library modules.
6885EOM
6886
6887case "$nroff" in
6888nroff)
6889 $cat <<'EOM'
6890However, you don't have nroff, so they're probably useless to you.
6891EOM
6892 case "$man3dir" in
6893 '') man3dir="none";;
6894 esac;;
6895esac
6896
6897case "$d_flexfnam" in
6898undef)
6899 $cat <<'EOM'
6900However, your system can't handle the long file names like File::Basename.3.
6901EOM
6902 case "$man3dir" in
6903 '') man3dir="none";;
6904 esac;;
6905esac
6906
6907echo "If you don't want the manual sources installed, answer 'none'."
6908prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6909case "$man3dir" in
8c99d73e 6910'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
dd4e71fd
JH
6911 if $test -d "$privlib/man/man3"; then
6912 cat <<EOM >&4
6913
6914WARNING: Previous versions of perl installed man3 pages into
6915$privlib/man/man3. This version will suggest a
6916new default of $dflt.
6917EOM
6918 tdflt=$dflt
6919 dflt='n'
6920 rp='Do you wish to preserve the old behavior?(y/n)'
6921 . ./myread
6922 case "$ans" in
6923 y*) dflt="$privlib/man/man3" ;;
6924 *) dflt=$tdflt ;;
6925 esac
6926 fi
2afac517 6927 ;;
dc45a647 6928*) dflt="$man3dir" ;;
2afac517 6929esac
8c99d73e
GS
6930case "$dflt" in
6931' ') dflt=none ;;
6932esac
dc45a647 6933echo " "
dc45a647
MB
6934fn=dn+~
6935rp="Where do the $package library man pages (source) go?"
6936. ./getfile
dc45a647
MB
6937man3dir="$ans"
6938man3direxp="$ansexp"
8c99d73e 6939case "$man3dir" in
dd4e71fd 6940'') man3dir=' '
dc45a647
MB
6941 installman3dir='';;
6942esac
dc45a647 6943
dd4e71fd
JH
6944: Change installation prefix, if necessary.
6945if $test X"$prefix" != X"$installprefix"; then
ec897fb9 6946 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
6947else
6948 installman3dir="$man3direxp"
dc45a647
MB
6949fi
6950
6951: What suffix to use on installed man pages
dc45a647
MB
6952case "$man3dir" in
6953' ')
6954 man3ext='0'
6955 ;;
6956*)
6957 rp="What suffix should be used for the $package library man pages?"
6958 case "$man3ext" in
6959 '') case "$man3dir" in
6960 *3) dflt=3 ;;
6961 *3p) dflt=3p ;;
6962 *3pm) dflt=3pm ;;
6963 *l) dflt=l;;
6964 *n) dflt=n;;
6965 *o) dflt=o;;
6966 *p) dflt=p;;
6967 *C) dflt=C;;
6968 *L) dflt=L;;
6969 *L3) dflt=L3;;
6970 *) dflt=3;;
2afac517 6971 esac
6972 ;;
dc45a647 6973 *) dflt="$man3ext";;
2afac517 6974 esac
dc45a647
MB
6975 . ./myread
6976 man3ext="$ans"
6977 ;;
2afac517 6978esac
6979
6980: see if we have to deal with yellow pages, now NIS.
6981if $test -d /usr/etc/yp || $test -d /etc/yp; then
6982 if $test -f /usr/etc/nibindd; then
6983 echo " "
6984 echo "I'm fairly confident you're on a NeXT."
6985 echo " "
6986 rp='Do you get the hosts file via NetInfo?'
6987 dflt=y
6988 case "$hostcat" in
6989 nidump*) ;;
6990 '') ;;
6991 *) dflt=n;;
6992 esac
6993 . ./myread
6994 case "$ans" in
6995 y*) hostcat='nidump hosts .';;
6996 *) case "$hostcat" in
6997 nidump*) hostcat='';;
6998 esac
6999 ;;
7000 esac
7001 fi
7002 case "$hostcat" in
7003 nidump*) ;;
7004 *)
7005 case "$hostcat" in
7006 *ypcat*) dflt=y;;
7007 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7008 dflt=y
7009 else
7010 dflt=n
7011 fi;;
7012 *) dflt=n;;
7013 esac
7014 echo " "
7015 rp='Are you getting the hosts file via yellow pages?'
7016 . ./myread
7017 case "$ans" in
7018 y*) hostcat='ypcat hosts';;
7019 *) hostcat='cat /etc/hosts';;
7020 esac
7021 ;;
7022 esac
7023fi
dfe9444c 7024case "$hostcat" in
7599c0b3 7025'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
dfe9444c
AD
7026esac
7027case "$groupcat" in
7599c0b3 7028'') test -f /etc/group && groupcat='cat /etc/group';;
dfe9444c
AD
7029esac
7030case "$passcat" in
7599c0b3 7031'') test -f /etc/passwd && passcat='cat /etc/passwd';;
dfe9444c 7032esac
2afac517 7033
7034: now get the host name
7035echo " "
7036echo "Figuring out host name..." >&4
7037case "$myhostname" in
7038'') cont=true
7039 echo 'Maybe "hostname" will work...'
7040 if tans=`sh -c hostname 2>&1` ; then
7041 myhostname=$tans
7042 phostname=hostname
7043 cont=''
7044 fi
7045 ;;
7046*) cont='';;
7047esac
7048if $test "$cont"; then
7049 if ./xenix; then
7050 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7051 if tans=`cat /etc/systemid 2>&1` ; then
7052 myhostname=$tans
7053 phostname='cat /etc/systemid'
7054 echo "Whadyaknow. Xenix always was a bit strange..."
7055 cont=''
7056 fi
7057 elif $test -r /etc/systemid; then
7058 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7059 fi
7060fi
7061if $test "$cont"; then
7062 echo 'No, maybe "uuname -l" will work...'
7063 if tans=`sh -c 'uuname -l' 2>&1` ; then
7064 myhostname=$tans
7065 phostname='uuname -l'
7066 else
7067 echo 'Strange. Maybe "uname -n" will work...'
7068 if tans=`sh -c 'uname -n' 2>&1` ; then
7069 myhostname=$tans
7070 phostname='uname -n'
7071 else
7072 echo 'Oh well, maybe I can mine it out of whoami.h...'
7073 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7074 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7075 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7076 else
7077 case "$myhostname" in
7078 '') echo "Does this machine have an identity crisis or something?"
7079 phostname='';;
7080 *)
7081 echo "Well, you said $myhostname before..."
7082 phostname='echo $myhostname';;
7083 esac
7084 fi
7085 fi
7086 fi
7087fi
7088: you do not want to know about this
7089set $myhostname
7090myhostname=$1
7091
7092: verify guess
7093if $test "$myhostname" ; then
7094 dflt=y
7095 rp='Your host name appears to be "'$myhostname'".'" Right?"
7096 . ./myread
7097 case "$ans" in
7098 y*) ;;
7099 *) myhostname='';;
7100 esac
7101fi
7102
7103: bad guess or no guess
7104while $test "X$myhostname" = X ; do
7105 dflt=''
7106 rp="Please type the (one word) name of your host:"
7107 . ./myread
7108 myhostname="$ans"
7109done
7110
7111: translate upper to lower if necessary
7112case "$myhostname" in
7113*[A-Z]*)
7114 echo "(Normalizing case in your host name)"
7115 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7116 ;;
7117esac
7118
7119case "$myhostname" in
7120*.*)
7121 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7122 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7123 echo "(Trimming domain name from host name--host name is now $myhostname)"
7124 ;;
7125*) case "$mydomain" in
7126 '')
7127 {
2afac517 7128 test "X$hostcat" = "Xypcat hosts" &&
7129 ypmatch "$myhostname" hosts 2>/dev/null |\
7130 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7131 $test -s hosts
7132 } || {
7599c0b3 7133 test "X$hostcat" != "X" &&
2afac517 7134 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7135 /[ ]$myhostname[ . ]/p" > hosts
7136 }
7137 tmp_re="[ . ]"
7138 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7139 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7140 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7141 hosts | $sort | $uniq | \
7142 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7143 case `$echo X$dflt` in
7144 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
7145 dflt=.
7146 ;;
7147 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7148 ;;
7149 esac
7150 case "$dflt" in
7151 .)
7152 tans=`./loc resolv.conf X /etc /usr/etc`
7153 if $test -f "$tans"; then
7154 echo "(Attempting domain name extraction from $tans)"
a6006777 7155 dflt=.`$sed -n -e 's/ / /g' \
28757baa 7156 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
a6006777 7157 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
2afac517 7158 case "$dflt" in
a6006777 7159 .) dflt=.`$sed -n -e 's/ / /g' \
28757baa 7160 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
a6006777 7161 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
774d564b 7162 ;;
2afac517 7163 esac
7164 fi
7165 ;;
7166 esac
7167 case "$dflt" in
7168 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7169 dflt=.`sh -c domainname 2>/dev/null`
7170 case "$dflt" in
7171 '') dflt='.';;
7172 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7173 esac
7174 ;;
7175 esac
7176 case "$dflt" in
7177 .) echo "(Lost all hope -- silly guess then)"
7178 dflt='.uucp'
7179 ;;
7180 esac
7181 $rm -f hosts
7182 ;;
7183 *) dflt="$mydomain";;
7184 esac;;
7185esac
7186echo " "
7187rp="What is your domain name?"
7188. ./myread
7189tans="$ans"
7190case "$ans" in
7191'') ;;
7192.*) ;;
7193*) tans=".$tans";;
7194esac
7195mydomain="$tans"
7196
7197: translate upper to lower if necessary
7198case "$mydomain" in
7199*[A-Z]*)
7200 echo "(Normalizing case in your domain name)"
7201 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7202 ;;
7203esac
7204
7205: a little sanity check here
7206case "$phostname" in
7207'') ;;
7208*)
7209 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7210 $myhostname$mydomain|$myhostname) ;;
7211 *)
7212 case "$phostname" in
7213 sed*)
7214 echo "(That doesn't agree with your whoami.h file, by the way.)"
7215 ;;
7216 *)
7217 echo "(That doesn't agree with your $phostname command, by the way.)"
7218 ;;
7219 esac
7220 ;;
7221 esac
7222 ;;
7223esac
7224
7225$cat <<EOM
7226
7227I need to get your e-mail address in Internet format if possible, i.e.
7228something like user@host.domain. Please answer accurately since I have
7229no easy means to double check it. The default value provided below
7f95ee77 7230is most probably close to reality but may not be valid from outside
2afac517 7231your organization...
7232
7233EOM
7234cont=x
7235while test "$cont"; do
7236 case "$cf_email" in
7237 '') dflt="$cf_by@$myhostname$mydomain";;
7238 *) dflt="$cf_email";;
7239 esac
7240 rp='What is your e-mail address?'
7241 . ./myread
7242 cf_email="$ans"
7243 case "$cf_email" in
7244 *@*.*) cont='' ;;
7245 *)
7246 rp='Address does not look like an Internet one. Use it anyway?'
7247 case "$fastread" in
7248 yes) dflt=y ;;
7249 *) dflt=n ;;
7250 esac
7251 . ./myread
7252 case "$ans" in
7253 y*) cont='' ;;
7254 *) echo " " ;;
7255 esac
7256 ;;
7257 esac
7258done
7259
7260$cat <<EOM
7261
7262If you or somebody else will be maintaining perl at your site, please
7263fill in the correct e-mail address here so that they may be contacted
7264if necessary. Currently, the "perlbug" program included with perl
7265will send mail to this address in addition to perlbug@perl.com. You may
7266enter "none" for no administrator.
7267
7268EOM
7269case "$perladmin" in
7270'') dflt="$cf_email";;
7271*) dflt="$perladmin";;
7272esac
7273rp='Perl administrator e-mail address'
7274. ./myread
7275perladmin="$ans"
7276
5f05dabc 7277: figure out how to guarantee perl startup
7278case "$startperl" in
7279'')
7280 case "$sharpbang" in
7281 *!)
7282 $cat <<EOH
7283
7284I can use the #! construct to start perl on your system. This will
7285make startup of perl scripts faster, but may cause problems if you
7286want to share those scripts and perl is not in a standard place
7287($binexp/perl) on all your platforms. The alternative is to force
7288a shell by starting the script with a single ':' character.
7289
7290EOH
7291 dflt="$binexp/perl"
7292 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7293 . ./myread
7294 case "$ans" in
68dc0745 7295 none) startperl=": # use perl";;
7296 *) startperl="#!$ans"
3e3baf6d 7297 if $test 30 -lt `echo "$ans" | wc -c`; then
68dc0745 7298 $cat >&4 <<EOM
7299
7300WARNING: Some systems limit the #! command to 32 characters.
7301If you experience difficulty running Perl scripts with #!, try
7302installing Perl in a directory with a shorter pathname.
7303
7304EOM
7305 fi ;;
5f05dabc 7306 esac
7307 ;;
7308 *) startperl=": # use perl"
7309 ;;
7310 esac
7311 ;;
7312esac
7313echo "I'll use $startperl to start perl scripts."
7314
7315: figure best path for perl in scripts
7316case "$perlpath" in
7317'')
7318 perlpath="$binexp/perl"
7319 case "$startperl" in
7320 *!*) ;;
7321 *)
7322 $cat <<EOH
7323
7324I will use the "eval 'exec'" idiom to start Perl on your system.
7325I can use the full path of your Perl binary for this purpose, but
7326doing so may cause problems if you want to share those scripts and
7327Perl is not always in a standard place ($binexp/perl).
7328
7329EOH
7330 dflt="$binexp/perl"
7331 rp="What path shall I use in \"eval 'exec'\"?"
7332 . ./myread
7333 perlpath="$ans"
7334 ;;
7335 esac
7336 ;;
7337esac
7338case "$startperl" in
7339*!*) ;;
7340*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7341esac
7342
dc45a647
MB
7343: determine where public executable scripts go
7344set scriptdir scriptdir
7345eval $prefixit
7346case "$scriptdir" in
7347'')
7348 dflt="$bin"
7349 : guess some guesses
7350 $test -d /usr/share/scripts && dflt=/usr/share/scripts
dd4e71fd
JH
7351 $test -d /usr/share/bin && dflt=/usr/share/bin
7352 $test -d /usr/local/script && dflt=/usr/local/script
7353 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7354 $test -d $prefixexp/script && dflt=$prefixexp/script
dc45a647
MB
7355 set dflt
7356 eval $prefixup
7357 ;;
7358*) dflt="$scriptdir"
7359 ;;
7360esac
7361$cat <<EOM
7362
7363Some installations have a separate directory just for executable scripts so
7364that they can mount it across multiple architectures but keep the scripts in
7365one spot. You might, for example, have a subdirectory of /usr/share for this.
7366Or you might just lump your scripts in with all your other executables.
7367
7368EOM
7369fn=d~
7370rp='Where do you keep publicly executable scripts?'
7371. ./getfile
7372if $test "X$ansexp" != "X$scriptdirexp"; then
7373 installscript=''
7374fi
7375scriptdir="$ans"
7376scriptdirexp="$ansexp"
dd4e71fd
JH
7377: Change installation prefix, if necessary.
7378if $test X"$prefix" != X"$installprefix"; then
ec897fb9 7379 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
dd4e71fd
JH
7380else
7381 installscript="$scriptdirexp"
7382fi
dc45a647 7383
717c4fcc
JH
7384: determine where add-on public executables go
7385case "$sitebin" in
7386'') dflt=$siteprefix/bin ;;
49c10eea 7387*) dflt=$sitebin ;;
717c4fcc
JH
7388esac
7389fn=d~
7390rp='Pathname where the add-on public executables should be installed?'
7391. ./getfile
7392sitebin="$ans"
7393sitebinexp="$ansexp"
7394: Change installation prefix, if necessary.
7395if $test X"$prefix" != X"$installprefix"; then
7396 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7397else
7398 installsitebin="$sitebinexp"
7399fi
7400
43999f95
JH
7401: see if sqrtl exists
7402set sqrtl d_sqrtl
7403eval $inlibc
7404
d7d93a81
JH
7405case "$ccflags" in
7406*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7407esac
7408
b0ce926a
JH
7409case "$uselongdouble" in
7410$define|true|[yY]*) dflt='y';;
7411*) dflt='n';;
7412esac
0f0995ae
JH
7413cat <<EOM
7414
7415Perl can be built to take advantage of long doubles which
7416(if available) may give more accuracy and range for floating point numbers.
7417
7418If this doesn't make any sense to you, just accept the default '$dflt'.
7419EOM
b0ce926a
JH
7420rp='Try to use long doubles if available?'
7421. ./myread
7422case "$ans" in
309d43cf
JH
7423y|Y) val="$define" ;;
7424*) val="$undef" ;;
b0ce926a
JH
7425esac
7426set uselongdouble
7427eval $setvar
7428
d9b3e12d 7429case "$uselongdouble" in
d7d93a81
JH
7430true|[yY]*) uselongdouble="$define" ;;
7431esac
7432
7433case "$uselongdouble" in
7434$define)
d9b3e12d
JH
7435: Look for a hint-file generated 'call-back-unit'. If the
7436: user has specified that long doubles should be used,
7437: we may need to set or change some other defaults.
7438 if $test -f uselongdouble.cbu; then
7439 echo "Your platform has some specific hints for long doubles, using them..."
7440 . ./uselongdouble.cbu
7441 else
7442 $cat <<EOM
7443(Your platform doesn't have any specific hints for long doubles.)
7444EOM
7445 fi
7446 ;;
7447esac
b0ce926a 7448
43999f95
JH
7449case "$uselongdouble:$d_sqrtl" in
7450$define:$undef)
7451 $cat <<EOM >&4
7452
3d68f8d4
JH
7453*** You requested the use of long doubles but you do not seem to have
7454*** the mathematic functions for long doubles. I'm disabling the use
7455*** of long doubles.
7456
43999f95
JH
7457EOM
7458 uselongdouble=$undef
7459 ;;
7460esac
7461
0f0995ae
JH
7462case "$useperlio" in
7463$define|true|[yY]*) dflt='y';;
7464*) dflt='n';;
7465esac
d7d93a81
JH
7466cat <<EOM
7467
85aff577
CS
7468Previous version of $package used the standard IO mechanisms as defined
7469in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
2afac517 7470mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
85aff577
CS
7471the default. This abstraction layer can use AT&T's sfio (if you already
7472have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7473problems with some extension modules. Using PerlIO with stdio is safe,
7474but it is slower than plain stdio and therefore is not the default.
2afac517 7475
0f0995ae 7476If this doesn't make any sense to you, just accept the default '$dflt'.
2afac517 7477EOM
2afac517 7478rp='Use the experimental PerlIO abstraction layer?'
7479. ./myread
7480case "$ans" in
7481y|Y)
7482 val="$define"
7483 ;;
7484*)
7485 echo "Ok, doing things the stdio way"
7486 val="$undef"
7487 ;;
7488esac
7489set useperlio
7490eval $setvar
2304df62 7491
717c4fcc
JH
7492case "$vendorprefix" in
7493'') d_vendorbin="$undef"
7494 vendorbin=''
7495 vendorbinexp=''
7496 ;;
7497*) d_vendorbin="$define"
7498 : determine where vendor-supplied executables go.
49c10eea
JH
7499 case "$vendorbin" in
7500 '') dflt=$vendorprefix/bin ;;
7501 *) dflt="$vendorbin" ;;
7502 esac
717c4fcc
JH
7503 fn=d~+
7504 rp='Pathname for the vendor-supplied executables directory?'
7505 . ./getfile
7506 vendorbin="$ans"
7507 vendorbinexp="$ansexp"
717c4fcc
JH
7508 ;;
7509esac
49c10eea
JH
7510: Change installation prefix, if necessary.
7511if $test X"$prefix" != X"$installprefix"; then
7512 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7513else
7514 installvendorbin="$vendorbinexp"
7515fi
717c4fcc 7516
bbe6c963
JH
7517: see if qgcvt exists
7518set qgcvt d_qgcvt
7519eval $inlibc
7520
628e1a40
JH
7521: check for length of double
7522echo " "
7523case "$doublesize" in
7524'')
49c10eea 7525 echo "Checking to see how big your double precision numbers are..." >&4
628e1a40
JH
7526 $cat >try.c <<'EOCP'
7527#include <stdio.h>
7528int main()
7529{
7530 printf("%d\n", (int)sizeof(double));
7531 exit(0);
7532}
7533EOCP
7534 set try
7535 if eval $compile_ok; then
7536 doublesize=`./try`
49c10eea 7537 echo "Your double is $doublesize bytes long."
628e1a40
JH
7538 else
7539 dflt='8'
7540 echo "(I can't seem to compile the test program. Guessing...)"
7541 rp="What is the size of a double precision number (in bytes)?"
7542 . ./myread
7543 doublesize="$ans"
7544 fi
7545 ;;
7546esac
7547$rm -f try.c try
7548
7549: check for long doubles
7550echo " "
c5f05a91 7551echo "Checking to see if you have long double..." >&4
628e1a40
JH
7552echo 'int main() { long double x = 7.0; }' > try.c
7553set try
7554if eval $compile; then
7555 val="$define"
ce65dbcf 7556 echo "You have long double."
628e1a40
JH
7557else
7558 val="$undef"
ce65dbcf 7559 echo "You do not have long double."
628e1a40
JH
7560fi
7561$rm try.*
7562set d_longdbl
7563eval $setvar
7564
7565: check for length of long double
7566case "${d_longdbl}${longdblsize}" in
7567$define)
7568 echo " "
49c10eea 7569 echo "Checking to see how big your long doubles are..." >&4
628e1a40
JH
7570 $cat >try.c <<'EOCP'
7571#include <stdio.h>
7572int main()
7573{
7574 printf("%d\n", sizeof(long double));
7575}
7576EOCP
7577 set try
7578 set try
7579 if eval $compile; then
7580 longdblsize=`./try$exe_ext`
49c10eea 7581 echo "Your long doubles are $longdblsize bytes long."
628e1a40
JH
7582 else
7583 dflt='8'
7584 echo " "
7585 echo "(I can't seem to compile the test program. Guessing...)" >&4
7586 rp="What is the size of a long double (in bytes)?"
7587 . ./myread
7588 longdblsize="$ans"
7589 fi
7590 if $test "X$doublesize" = "X$longdblsize"; then
7591 echo "(That isn't any different from an ordinary double.)"
7592 fi
7593 ;;
7594esac
7595$rm -f try.* try
ff935051 7596
cf2093f6
JH
7597echo " "
7598
ea1c3b15 7599if $test X"$d_longdbl" = X"$define"; then
cf2093f6
JH
7600
7601echo "Checking how to print long doubles..." >&4
7602
7603if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7604 $cat >try.c <<'EOCP'
7605#include <sys/types.h>
7606#include <stdio.h>
7607int main() {
7608 double d = 123.456;
7609 printf("%.3f\n", d);
7610}
7611EOCP
7612 set try
7613 if eval $compile; then
7614 yyy=`./try$exe_ext`
7615 case "$yyy" in
7616 123.456)
7617 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7618 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7619 echo "We will use %f."
7620 ;;
7621 esac
7622 fi
7623fi
7624
7625if $test X"$sPRIfldbl" = X; then
7626 $cat >try.c <<'EOCP'
7627#include <sys/types.h>
7628#include <stdio.h>
7629int main() {
7630 long double d = 123.456;
ea1c3b15 7631 printf("%.3llf\n", d);
cf2093f6
JH
7632}
7633EOCP
7634 set try
7635 if eval $compile; then
7636 yyy=`./try$exe_ext`
7637 case "$yyy" in
7638 123.456)
ea1c3b15
JH
7639 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7640 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7641 echo "We will use %llf."
cf2093f6
JH
7642 ;;
7643 esac
7644 fi
7645fi
7646
7647if $test X"$sPRIfldbl" = X; then
7648 $cat >try.c <<'EOCP'
7649#include <sys/types.h>
7650#include <stdio.h>
7651int main() {
7652 long double d = 123.456;
ea1c3b15 7653 printf("%.3Lf\n", d);
cf2093f6
JH
7654}
7655EOCP
7656 set try
7657 if eval $compile; then
7658 yyy=`./try$exe_ext`
7659 case "$yyy" in
7660 123.456)
ea1c3b15
JH
7661 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7662 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7663 echo "We will use %Lf."
cf2093f6
JH
7664 ;;
7665 esac
7666 fi
7667fi
7668
11dc3f68 7669if $test X"$sPRIfldbl" = X; then
cf2093f6
JH
7670 $cat >try.c <<'EOCP'
7671#include <sys/types.h>
7672#include <stdio.h>
7673int main() {
7674 long double d = 123.456;
ea1c3b15 7675 printf("%.3lf\n", d);
cf2093f6
JH
7676}
7677EOCP
7678 set try
7679 if eval $compile; then
7680 yyy=`./try$exe_ext`
7681 case "$yyy" in
7682 123.456)
ea1c3b15
JH
7683 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7684 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7685 echo "We will use %lf."
cf2093f6
JH
7686 ;;
7687 esac
7688 fi
7689fi
7690
09e3ef00
JH
7691if $test X"$sPRIfldbl" = X; then
7692 echo "Cannot figure out how to print long doubles." >&4
7693fi
7694
ea1c3b15 7695$rm -f try try.*
cf2093f6 7696
ea1c3b15 7697fi # d_longdbl
cf2093f6
JH
7698
7699case "$sPRIfldbl" in
7700'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7701 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7702 ;;
7703*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7704 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7705 ;;
7706esac
7707
bbe6c963
JH
7708: Check how to convert floats to strings.
7709if test "X$d_Gconvert" = X; then
7710 echo " "
7711 echo "Checking for an efficient way to convert floats to strings."
7712 echo " " > try.c
7713 case "$uselongdouble" in
7714 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7715 esac
7716 case "$d_longdbl" in
7717 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7718 esac
7719 case "$d_PRIgldbl" in
7720 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7721 esac
7722 $cat >>try.c <<EOP
7723#ifdef TRY_gconvert
7724#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7725char *myname = "gconvert";
7726#endif
7727#ifdef TRY_gcvt
7728#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7729char *myname = "gcvt";
7730#endif
7731#ifdef TRY_qgcvt
7732#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7733char *myname = "qgcvt";
7734#define DOUBLETYPE long double
7735#endif
7736#ifdef TRY_sprintf
7737#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7738#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7739#else
7740#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7741#endif
7742char *myname = "sprintf";
7743#endif
7744
7745#ifndef DOUBLETYPE
7746#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7747#define DOUBLETYPE long double
7748#else
7749#define DOUBLETYPE double
7750#endif
7751#endif
7752
7753#include <stdio.h>
7754
7755#define I_STDLIB $i_stdlib
7756#ifdef I_STDLIB
7757#include <stdlib.h>
7758#endif
7759
7760int
7761checkit(expect, got)
7762char *expect;
7763char *got;
7764{
7765 if (strcmp(expect, got)) {
7766 printf("%s oddity: Expected %s, got %s\n",
7767 myname, expect, got);
7768 exit(1);
7769 }
7770}
7771
7772int main()
7773{
7774 char buf[64];
7775 buf[63] = '\0';
7776
7777 /* This must be 1st test on (which?) platform */
7778 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7779 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7780 checkit("0.1", buf);
7781
7782 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7783 checkit("1", buf);
7784
7785 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7786 checkit("1.1", buf);
7787
7788 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7789 checkit("1.01", buf);
7790
7791 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7792 checkit("1.001", buf);
7793
7794 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7795 checkit("1.0001", buf);
7796
7797 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7798 checkit("1.00001", buf);
7799
7800 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7801 checkit("1.000001", buf);
7802
7803 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7804 checkit("0", buf);
7805
7806 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7807 checkit("-1", buf);
7808
7809 /* Some Linux gcvt's give 1.e+5 here. */
7810 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7811 checkit("100000", buf);
7812
7813 /* Some Linux gcvt's give -1.e+5 here. */
7814 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7815 checkit("-100000", buf);
7816
7817 exit(0);
7818}
7819EOP
7820 case "$d_Gconvert" in
7821 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7822 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7823 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7824 *) xxx_list='gconvert gcvt sprintf' ;;
7825 esac
7826
7827 case "$d_longdbl$uselongdouble$d_qgcvt" in
7828 "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7829 esac
7830
7831 for xxx_convert in $xxx_list; do
7832 echo "Trying $xxx_convert..."
7833 $rm -f try try$_o
7834 set try -DTRY_$xxx_convert
7835 if eval $compile; then
7836 echo "$xxx_convert() found." >&4
7837 if ./try; then
7838 echo "I'll use $xxx_convert to convert floats into a string." >&4
7839 break;
7840 else
7841 echo "...But $xxx_convert didn't work as I expected."
7842 fi
7843 else
7844 echo "$xxx_convert NOT found." >&4
7845 fi
7846 done
7847
7848 case "$xxx_convert" in
7849 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7850 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7851 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7852 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7853 "$define$define$define")
7854 d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7855 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7856 esac
7857 ;;
7858 esac
7859fi
7860
a0d0e21e
LW
7861: Initialize h_fcntl
7862h_fcntl=false
7863
7864: Initialize h_sysfile
7865h_sysfile=false
2304df62 7866
2304df62
AD
7867: access call always available on UNIX
7868set access d_access
7869eval $inlibc
7870
7871: locate the flags for 'access()'
7872case "$d_access" in
7873"$define")
7874 echo " "
7875 $cat >access.c <<'EOCP'
7876#include <sys/types.h>
7877#ifdef I_FCNTL
7878#include <fcntl.h>
7879#endif
7880#ifdef I_SYS_FILE
7881#include <sys/file.h>
7882#endif
7883#ifdef I_UNISTD
7884#include <unistd.h>
7885#endif
d674cd6d 7886int main() {
2304df62
AD
7887 exit(R_OK);
7888}
8e07c86e
AD
7889EOCP
7890 : check sys/file.h first, no particular reason here
7891 if $test `./findhdr sys/file.h` && \
dfe9444c 7892 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7893 h_sysfile=true;
7894 echo "<sys/file.h> defines the *_OK access constants." >&4
7895 elif $test `./findhdr fcntl.h` && \
dfe9444c 7896 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7897 h_fcntl=true;
7898 echo "<fcntl.h> defines the *_OK access constants." >&4
7899 elif $test `./findhdr unistd.h` && \
dfe9444c 7900 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7901 echo "<unistd.h> defines the *_OK access constants." >&4
7902 else
7903 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7904 fi
7905 ;;
7906esac
7907$rm -f access*
a0d0e21e 7908
5ff3f7a4
GS
7909: see if accessx exists
7910set accessx d_accessx
7911eval $inlibc
7912
8e07c86e
AD
7913: see if alarm exists
7914set alarm d_alarm
7915eval $inlibc
2304df62 7916
cf2093f6
JH
7917: see if atolf exists
7918set atolf d_atolf
7919eval $inlibc
7920
7921: see if atoll exists
7922set atoll d_atoll
7923eval $inlibc
7924
ecfc5424 7925: Look for GNU-cc style attribute checking
2304df62 7926echo " "
a0d0e21e
LW
7927echo "Checking whether your compiler can handle __attribute__ ..." >&4
7928$cat >attrib.c <<'EOCP'
1aef975c 7929#include <stdio.h>
ecfc5424 7930void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
a0d0e21e
LW
7931EOCP
7932if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7933 if $contains 'warning' attrib.out >/dev/null 2>&1; then
ecfc5424 7934 echo "Your C compiler doesn't fully support __attribute__."
a0d0e21e
LW
7935 val="$undef"
7936 else
ecfc5424 7937 echo "Your C compiler supports __attribute__."
a0d0e21e
LW
7938 val="$define"
7939 fi
7940else
ecfc5424 7941 echo "Your C compiler doesn't seem to understand __attribute__ at all."
a0d0e21e
LW
7942 val="$undef"
7943fi
ecfc5424 7944set d_attribut
a0d0e21e
LW
7945eval $setvar
7946$rm -f attrib*
7947
7948: see if bcmp exists
7949set bcmp d_bcmp
7950eval $inlibc
7951
7952: see if bcopy exists
7953set bcopy d_bcopy
7954eval $inlibc
7955
2afac517 7956: see if this is a unistd.h system
7957set unistd.h i_unistd
7958eval $inhdr
7959
7960: see if getpgrp exists
7961set getpgrp d_getpgrp
7962eval $inlibc
7963
2afac517 7964case "$d_getpgrp" in
7965"$define")
7966 echo " "
dfe9444c 7967 echo "Checking to see which flavor of getpgrp is in use..."
2afac517 7968 $cat >set.c <<EOP
7969#$i_unistd I_UNISTD
7970#include <sys/types.h>
7971#ifdef I_UNISTD
7972# include <unistd.h>
7973#endif
5a411a32 7974int main()
2afac517 7975{
7976 if (getuid() == 0) {
7977 printf("(I see you are running Configure as super-user...)\n");
7978 setuid(1);
7979 }
7980#ifdef TRY_BSD_PGRP
7981 if (getpgrp(1) == 0)
7982 exit(0);
7983#else
7984 if (getpgrp() > 0)
7985 exit(0);
7986#endif
7987 exit(1);
7988}
7989EOP
7990 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7991 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7992 val="$define"
7993 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7994 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7995 val="$undef"
7996 else
7997 echo "I can't seem to compile and run the test program."
7998 if ./usg; then
7999 xxx="a USG one, i.e. you use getpgrp()."
8000 else
8001 # SVR4 systems can appear rather BSD-ish.
8002 case "$i_unistd" in
8003 $undef)
8004 xxx="a BSD one, i.e. you use getpgrp(pid)."
8005 val="$define"
8006 ;;
8007 $define)
8008 xxx="probably a USG one, i.e. you use getpgrp()."
8009 val="$undef"
8010 ;;
8011 esac
8012 fi
8013 echo "Assuming your getpgrp is $xxx" >&4
8014 fi
8015 ;;
8016*) val="$undef";;
8017esac
8018set d_bsdgetpgrp
8019eval $setvar
8020$rm -f set set.c
8021
a0d0e21e
LW
8022: see if setpgrp exists
8023set setpgrp d_setpgrp
8024eval $inlibc
8025
a0d0e21e
LW
8026case "$d_setpgrp" in
8027"$define")
8028 echo " "
dfe9444c 8029 echo "Checking to see which flavor of setpgrp is in use..."
a0d0e21e 8030 $cat >set.c <<EOP
2afac517 8031#$i_unistd I_UNISTD
8032#include <sys/types.h>
8033#ifdef I_UNISTD
8034# include <unistd.h>
8035#endif
5a411a32 8036int main()
a0d0e21e
LW
8037{
8038 if (getuid() == 0) {
8039 printf("(I see you are running Configure as super-user...)\n");
8040 setuid(1);
8041 }
2afac517 8042#ifdef TRY_BSD_PGRP
a0d0e21e 8043 if (-1 == setpgrp(1, 1))
2afac517 8044 exit(0);
8045#else
8046 if (setpgrp() != -1)
8047 exit(0);
8048#endif
8049 exit(1);
a0d0e21e
LW
8050}
8051EOP
2afac517 8052 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8053 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8054 val="$define"
8055 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8056 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8057 val="$undef"
a0d0e21e 8058 else
dfe9444c 8059 echo "(I can't seem to compile and run the test program.)"
ecfc5424 8060 if ./usg; then
2afac517 8061 xxx="a USG one, i.e. you use setpgrp()."
a0d0e21e 8062 else
2afac517 8063 # SVR4 systems can appear rather BSD-ish.
8064 case "$i_unistd" in
8065 $undef)
8066 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8067 val="$define"
8068 ;;
8069 $define)
8070 xxx="probably a USG one, i.e. you use setpgrp()."
8071 val="$undef"
8072 ;;
8073 esac
a0d0e21e 8074 fi
2afac517 8075 echo "Assuming your setpgrp is $xxx" >&4
a0d0e21e
LW
8076 fi
8077 ;;
8078*) val="$undef";;
8079esac
2afac517 8080set d_bsdsetpgrp
a0d0e21e
LW
8081eval $setvar
8082$rm -f set set.c
a0d0e21e
LW
8083: see if bzero exists
8084set bzero d_bzero
8085eval $inlibc
8086
ecfc5424 8087: see if signal is declared as pointer to function returning int or void
a0d0e21e 8088echo " "
ecfc5424
AD
8089xxx=`./findhdr signal.h`
8090$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8091if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8092 echo "You have int (*signal())() instead of void." >&4
8093 val="$undef"
8094elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
dfe9444c 8095 echo "You have void (*signal())()." >&4
ecfc5424
AD
8096 val="$define"
8097elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8098 echo "You have int (*signal())() instead of void." >&4
8099 val="$undef"
dfe9444c
AD
8100elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8101 echo "You have void (*signal())()." >&4
8102 val="$define"
a0d0e21e 8103else
ecfc5424
AD
8104 case "$d_voidsig" in
8105 '')
8106 echo "I can't determine whether signal handler returns void or int..." >&4
8107 dflt=void
8108 rp="What type does your signal handler return?"
8109 . ./myread
8110 case "$ans" in
8111 v*) val="$define";;
8112 *) val="$undef";;
8113 esac;;
8114 "$define")
dfe9444c
AD
8115 echo "As you already told me, signal handler returns void." >&4
8116 val="$define"
8117 ;;
8118 *) echo "As you already told me, signal handler returns int." >&4
8119 val="$undef"
8120 ;;
ecfc5424
AD
8121 esac
8122fi
8123set d_voidsig
8124eval $setvar
8125case "$d_voidsig" in
8126"$define") signal_t="void";;
8127*) signal_t="int";;
8128esac
8129$rm -f $$.tmp
8130
8131: check for ability to cast large floats to 32-bit ints.
8132echo " "
8133echo 'Checking whether your C compiler can cast large floats to int32.' >&4
e5c9fcd0 8134if $test "$intsize" -ge 4; then
ecfc5424
AD
8135 xxx=int
8136else
8137 xxx=long
8138fi
8139$cat >try.c <<EOCP
e5c9fcd0 8140#include <stdio.h>
ecfc5424
AD
8141#include <sys/types.h>
8142#include <signal.h>
a1896f58 8143$signal_t blech(s) int s; { exit(3); }
d674cd6d 8144int main()
2304df62 8145{
a0d0e21e 8146 $xxx i32;
e5c9fcd0 8147 double f, g;
2304df62 8148 int result = 0;
89434db5 8149 char str[16];
2304df62
AD
8150 signal(SIGFPE, blech);
8151
89434db5
AD
8152 /* Don't let compiler optimize the test away. Store the number
8153 in a writable string for gcc to pass to sscanf under HP/UX.
8154 */
8155 sprintf(str, "2147483647");
8156 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
e5c9fcd0
AD
8157 g = 10 * f;
8158 i32 = ($xxx) g;
2304df62 8159
e5c9fcd0
AD
8160 /* x86 processors will probably give 0x8000 0000, which is a
8161 sign change. We don't want that. We want to mimic SPARC
8162 behavior here, which is to preserve the sign and give
8163 back 0x7fff ffff.
8164 */
a0d0e21e 8165 if (i32 != ($xxx) f)
2304df62
AD
8166 result |= 1;
8167 exit(result);
8168}
8169EOCP
dfe9444c 8170set try
dc45a647 8171if eval $compile_ok; then
2304df62
AD
8172 ./try
8173 yyy=$?
8174else
a0d0e21e 8175 echo "(I can't seem to compile the test program--assuming it can't)"
2304df62
AD
8176 yyy=1
8177fi
8178case "$yyy" in
81790) val="$define"
8180 echo "Yup, it can."
8181 ;;
8182*) val="$undef"
8183 echo "Nope, it can't."
8184 ;;
8185esac
8186set d_casti32
8187eval $setvar
85e6fe83 8188$rm -f try try.*
a0d0e21e 8189
2304df62
AD
8190: check for ability to cast negative floats to unsigned
8191echo " "
8192echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
ecfc5424 8193$cat >try.c <<EOCP
e5c9fcd0 8194#include <stdio.h>
ecfc5424 8195#include <sys/types.h>
2304df62 8196#include <signal.h>
a1896f58
AD
8197$signal_t blech(s) int s; { exit(7); }
8198$signal_t blech_in_list(s) int s; { exit(4); }
232e078e
AD
8199unsigned long dummy_long(p) unsigned long p; { return p; }
8200unsigned int dummy_int(p) unsigned int p; { return p; }
8201unsigned short dummy_short(p) unsigned short p; { return p; }
d674cd6d 8202int main()
2304df62 8203{
e5c9fcd0 8204 double f;
2304df62
AD
8205 unsigned long along;
8206 unsigned int aint;
8207 unsigned short ashort;
8208 int result = 0;
89434db5
AD
8209 char str[16];
8210
e5c9fcd0
AD
8211 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8212 a direct f = -123. assignment. gcc-2.8.0 reportedly
8213 optimized the whole file away
8214 */
89434db5
AD
8215 /* Store the number in a writable string for gcc to pass to
8216 sscanf under HP/UX.
8217 */
8218 sprintf(str, "-123");
8219 sscanf(str, "%lf", &f); /* f = -123.; */
2304df62
AD
8220
8221 signal(SIGFPE, blech);
8222 along = (unsigned long)f;
8223 aint = (unsigned int)f;
8224 ashort = (unsigned short)f;
8225 if (along != (unsigned long)-123)
8226 result |= 1;
8227 if (aint != (unsigned int)-123)
8228 result |= 1;
8229 if (ashort != (unsigned short)-123)
8230 result |= 1;
89434db5
AD
8231 sprintf(str, "1073741824.");
8232 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
2304df62
AD
8233 f = f + f;
8234 along = 0;
8235 along = (unsigned long)f;
8236 if (along != 0x80000000)
8237 result |= 2;
8238 f -= 1.;
8239 along = 0;
8240 along = (unsigned long)f;
8241 if (along != 0x7fffffff)
8242 result |= 1;
8243 f += 2.;
8244 along = 0;
8245 along = (unsigned long)f;
8246 if (along != 0x80000001)
8247 result |= 2;
232e078e
AD
8248 if (result)
8249 exit(result);
8250 signal(SIGFPE, blech_in_list);
89434db5
AD
8251 sprintf(str, "123.");
8252 sscanf(str, "%lf", &f); /* f = 123.; */
232e078e
AD
8253 along = dummy_long((unsigned long)f);
8254 aint = dummy_int((unsigned int)f);
8255 ashort = dummy_short((unsigned short)f);
8256 if (along != (unsigned long)123)
8257 result |= 4;
8258 if (aint != (unsigned int)123)
8259 result |= 4;
8260 if (ashort != (unsigned short)123)
8261 result |= 4;
2304df62
AD
8262 exit(result);
8263
8264}
8265EOCP
dfe9444c 8266set try
dc45a647 8267if eval $compile_ok; then
2304df62
AD
8268 ./try
8269 castflags=$?
8270else
ecfc5424 8271 echo "(I can't seem to compile the test program--assuming it can't)"
232e078e 8272 castflags=7
2304df62
AD
8273fi
8274case "$castflags" in
82750) val="$define"
8276 echo "Yup, it can."
8277 ;;
8278*) val="$undef"
8279 echo "Nope, it can't."
8280 ;;
8281esac
8282set d_castneg
8283eval $setvar
8284$rm -f try.*
8285
2304df62
AD
8286: see if vprintf exists
8287echo " "
8288if set vprintf val -f d_vprintf; eval $csym; $val; then
8289 echo 'vprintf() found.' >&4
8290 val="$define"
8291 $cat >vprintf.c <<'EOF'
8292#include <varargs.h>
8293
d674cd6d 8294int main() { xxx("foo"); }
2304df62
AD
8295
8296xxx(va_alist)
8297va_dcl
8298{
8299 va_list args;
8300 char buf[10];
8301
8302 va_start(args);
8303 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8304}
8305EOF
dfe9444c
AD
8306 set vprintf
8307 if eval $compile && ./vprintf; then
2304df62
AD
8308 echo "Your vsprintf() returns (int)." >&4
8309 val2="$undef"
8310 else
8311 echo "Your vsprintf() returns (char*)." >&4
8312 val2="$define"
8313 fi
8314else
8315 echo 'vprintf() NOT found.' >&4
8316 val="$undef"
8317 val2="$undef"
8318fi
8319set d_vprintf
8320eval $setvar
8321val=$val2
8322set d_charvspr
8323eval $setvar
8324
a0d0e21e
LW
8325: see if chown exists
8326set chown d_chown
8327eval $inlibc
8328
8329: see if chroot exists
8330set chroot d_chroot
8331eval $inlibc
8332
2304df62
AD
8333: see if chsize exists
8334set chsize d_chsize
8335eval $inlibc
8336
8337: check for const keyword
8338echo " "
8339echo 'Checking to see if your C compiler knows about "const"...' >&4
8340$cat >const.c <<'EOCP'
8341typedef struct spug { int drokk; } spug;
5a411a32 8342int main()
2304df62
AD
8343{
8344 const char *foo;
8345 const spug y;
8346}
8347EOCP
8348if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8349 val="$define"
8350 echo "Yup, it does."
8351else
8352 val="$undef"
8353 echo "Nope, it doesn't."
8354fi
8355set d_const
8356eval $setvar
8357
8358: see if crypt exists
8359echo " "
8360if set crypt val -f d_crypt; eval $csym; $val; then
8361 echo 'crypt() found.' >&4
8362 val="$define"
8363 cryptlib=''
8364else
dfe9444c 8365 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
2304df62 8366 if $test -z "$cryptlib"; then
dfe9444c 8367 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
2304df62
AD
8368 else
8369 cryptlib=-lcrypt
8370 fi
8371 if $test -z "$cryptlib"; then
dfe9444c 8372 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
2304df62
AD
8373 else
8374 cryptlib=-lcrypt
8375 fi
8376 if $test -z "$cryptlib"; then
dfe9444c 8377 cryptlib=`./loc libcrypt$_a "" $libpth`
2304df62
AD
8378 else
8379 cryptlib=-lcrypt
8380 fi
8381 if $test -z "$cryptlib"; then
8382 echo 'crypt() NOT found.' >&4
8383 val="$undef"
8384 else
8385 val="$define"
8386 fi
8387fi
8388set d_crypt
8389eval $setvar
8390
921b2963
JH
8391: get csh whereabouts
8392case "$csh" in
8393'csh') val="$undef" ;;
8394*) val="$define" ;;
8395esac
8396set d_csh
8397eval $setvar
8398: Respect a hint or command line value for full_csh.
8399case "$full_csh" in
8400'') full_csh=$csh ;;
8401esac
8402
a0d0e21e
LW
8403: see if cuserid exists
8404set cuserid d_cuserid
2304df62
AD
8405eval $inlibc
8406
a0d0e21e
LW
8407: see if this is a limits.h system
8408set limits.h i_limits
85e6fe83
LW
8409eval $inhdr
8410
a0d0e21e
LW
8411: see if this is a float.h system
8412set float.h i_float
8413eval $inhdr
8414
8415: See if number of significant digits in a double precision number is known
8416echo " "
8417$cat >dbl_dig.c <<EOM
8418#$i_limits I_LIMITS
8419#$i_float I_FLOAT
8420#ifdef I_LIMITS
8421#include <limits.h>
85e6fe83 8422#endif
a0d0e21e
LW
8423#ifdef I_FLOAT
8424#include <float.h>
8425#endif
8426#ifdef DBL_DIG
8427printf("Contains DBL_DIG");
85e6fe83 8428#endif
85e6fe83 8429EOM
a0d0e21e
LW
8430$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8431if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8432 echo "DBL_DIG found." >&4
8433 val="$define"
2304df62 8434else
a0d0e21e
LW
8435 echo "DBL_DIG NOT found." >&4
8436 val="$undef"
2304df62 8437fi
a0d0e21e
LW
8438$rm -f dbl_dig.?
8439set d_dbl_dig
2304df62 8440eval $setvar
2304df62 8441
a0d0e21e
LW
8442: see if difftime exists
8443set difftime d_difftime
2304df62
AD
8444eval $inlibc
8445
a0d0e21e
LW
8446: see if this is a dirent system
8447echo " "
8448if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8449 val="$define"
8450 echo "<dirent.h> found." >&4
8451else
8452 val="$undef"
8453 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8454 echo "<sys/dir.h> found." >&4
8455 echo " "
8456 else
8457 xinc=`./findhdr sys/ndir.h`
8458 fi
8459 echo "<dirent.h> NOT found." >&4
8460fi
8461set i_dirent
8462eval $setvar
8463
8464: Look for type of directory structure.
8465echo " "
8466$cppstdin $cppflags $cppminus < "$xinc" > try.c
8467
8468case "$direntrytype" in
8469''|' ')
8470 case "$i_dirent" in
8471 $define) guess1='struct dirent' ;;
8472 *) guess1='struct direct' ;;
2afac517 8473 esac
8474 ;;
8475*) guess1="$direntrytype"
8476 ;;
8e07c86e
AD
8477esac
8478
2afac517 8479case "$guess1" in
8480'struct dirent') guess2='struct direct' ;;
8481*) guess2='struct dirent' ;;
8482esac
8483
8484if $contains "$guess1" try.c >/dev/null 2>&1; then
8485 direntrytype="$guess1"
8486 echo "Your directory entries are $direntrytype." >&4
8487elif $contains "$guess2" try.c >/dev/null 2>&1; then
8488 direntrytype="$guess2"
8489 echo "Your directory entries seem to be $direntrytype." >&4
8490else
8491 echo "I don't recognize your system's directory entries." >&4
8492 rp="What type is used for directory entries on this system?"
8493 dflt="$guess1"
8494 . ./myread
8495 direntrytype="$ans"
8496fi
8497$rm -f try.c
a0d0e21e 8498
a0d0e21e 8499
2afac517 8500: see if the directory entry stores field length
8501echo " "
8502$cppstdin $cppflags $cppminus < "$xinc" > try.c
8503if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8504 echo "Good, your directory entry keeps length information in d_namlen." >&4
8505 val="$define"
8506else
8507 echo "Your directory entry does not know about the d_namlen field." >&4
8508 val="$undef"
8509fi
8510set d_dirnamlen
8511eval $setvar
8512$rm -f try.c
a0d0e21e 8513
5ff3f7a4
GS
8514: see if dlerror exists
8515xxx_runnm="$runnm"
8516runnm=false
8517set dlerror d_dlerror
8518eval $inlibc
8519runnm="$xxx_runnm"
8520
8521: see if dlfcn is available
8522set dlfcn.h i_dlfcn
8523eval $inhdr
8524
8525case "$usedl" in
8526$define|y|true)
8527 $cat << EOM
8528
8529On a few systems, the dynamically loaded modules that perl generates and uses
8530will need a different extension than shared libs. The default will probably
8531be appropriate.
8532
8533EOM
8534 case "$dlext" in
8535 '') dflt="$so" ;;
8536 *) dflt="$dlext" ;;
8537 esac
8538 rp='What is the extension of dynamically loaded modules'
8539 . ./myread
8540 dlext="$ans"
8541 ;;
8542*)
8543 dlext="none"
8544 ;;
8545esac
8546
8547: Check if dlsym need a leading underscore
a0d0e21e
LW
8548echo " "
8549val="$undef"
8550
8551case "$dlsrc" in
8552dl_dlopen.xs)
8553 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8554 $cat >dyna.c <<'EOM'
8555fred () { }
8556EOM
8557
8558$cat >fred.c<<EOM
8559
8560#include <stdio.h>
8561#$i_dlfcn I_DLFCN
8562#ifdef I_DLFCN
8563#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8564#else
8565#include <sys/types.h>
8566#include <nlist.h>
8567#include <link.h>
8568#endif
8569
8570extern int fred() ;
8571
5a411a32 8572int main()
a0d0e21e
LW
8573{
8574 void * handle ;
8575 void * symbol ;
8576#ifndef RTLD_LAZY
8577 int mode = 1 ;
8578#else
8579 int mode = RTLD_LAZY ;
8580#endif
8581 handle = dlopen("./dyna.$dlext", mode) ;
8582 if (handle == NULL) {
5f05dabc 8583 printf ("1\n") ;
8584 fflush (stdout) ;
8585 exit(0);
a0d0e21e
LW
8586 }
8587 symbol = dlsym(handle, "fred") ;
8588 if (symbol == NULL) {
5f05dabc 8589 /* try putting a leading underscore */
8590 symbol = dlsym(handle, "_fred") ;
8591 if (symbol == NULL) {
8592 printf ("2\n") ;
8593 fflush (stdout) ;
8594 exit(0);
8595 }
8596 printf ("3\n") ;
a0d0e21e
LW
8597 }
8598 else
5f05dabc 8599 printf ("4\n") ;
36477c24 8600 fflush (stdout) ;
8601 exit(0);
a0d0e21e
LW
8602}
8603EOM
760ac839 8604 : Call the object file tmp-dyna.o in case dlext=o.
a0d0e21e 8605 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
dfe9444c
AD
8606 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8607 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
87563a30 8608 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
a0d0e21e
LW
8609 xxx=`./fred`
8610 case $xxx in
8611 1) echo "Test program failed using dlopen." >&4
8612 echo "Perhaps you should not use dynamic loading." >&4;;
8613 2) echo "Test program failed using dlsym." >&4
8614 echo "Perhaps you should not use dynamic loading." >&4;;
8615 3) echo "dlsym needs a leading underscore" >&4
8616 val="$define" ;;
8617 4) echo "dlsym doesn't need a leading underscore." >&4;;
8618 esac
8619 else
8620 echo "I can't compile and run the test program." >&4
88d5303d 8621 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
a0d0e21e
LW
8622 fi
8623 ;;
8624esac
8625
a78b0d02 8626$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
a0d0e21e
LW
8627
8628set d_dlsymun
8629eval $setvar
8630
85ab1d1d
JH
8631hasproto='varname=$1; func=$2; shift; shift;
8632while $test $# -ge 2; do
8633 case "$1" in
8634 $define) echo "#include <$2>";;
8635 esac ;
8636 shift 2;
8637done > try.c;
8638$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8639if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8640 echo "$func() prototype found.";
8641 val="$define";
8642else
8643 echo "$func() prototype NOT found.";
8644 val="$undef";
8645fi;
8646set $varname;
8647eval $setvar;
8648$rm -f try.c tryout.c'
8649
8650: see if prototype for drand48 is available
8651echo " "
8652set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8653eval $hasproto
8654
a0d0e21e
LW
8655: see if dup2 exists
8656set dup2 d_dup2
8657eval $inlibc
8658
5ff3f7a4
GS
8659: see if eaccess exists
8660set eaccess d_eaccess
8661eval $inlibc
8662
8663: see if endgrent exists
8664set endgrent d_endgrent
8665eval $inlibc
8666
e5c9fcd0
AD
8667: see if endhostent exists
8668set endhostent d_endhent
8669eval $inlibc
8670
8671: see if endnetent exists
8672set endnetent d_endnent
8673eval $inlibc
8674
8675: see if endprotoent exists
8676set endprotoent d_endpent
8677eval $inlibc
8678
5ff3f7a4
GS
8679: see if endpwent exists
8680set endpwent d_endpwent
8681eval $inlibc
8682
e5c9fcd0
AD
8683: see if endservent exists
8684set endservent d_endsent
8685eval $inlibc
8686
8e07c86e
AD
8687: Locate the flags for 'open()'
8688echo " "
8689$cat >open3.c <<'EOCP'
8690#include <sys/types.h>
8691#ifdef I_FCNTL
8692#include <fcntl.h>
8693#endif
8694#ifdef I_SYS_FILE
8695#include <sys/file.h>
8696#endif
d674cd6d 8697int main() {
8e07c86e
AD
8698 if(O_RDONLY);
8699#ifdef O_TRUNC
8700 exit(0);
8701#else
8702 exit(1);
8703#endif
8704}
8705EOCP
8706: check sys/file.h first to get FREAD on Sun
8707if $test `./findhdr sys/file.h` && \
dfe9444c 8708 set open3 -DI_SYS_FILE && eval $compile; then
8e07c86e
AD
8709 h_sysfile=true;
8710 echo "<sys/file.h> defines the O_* constants..." >&4
8711 if ./open3; then
8712 echo "and you have the 3 argument form of open()." >&4
8713 val="$define"
8714 else
8715 echo "but not the 3 argument form of open(). Oh, well." >&4
8716 val="$undef"
8717 fi
8718elif $test `./findhdr fcntl.h` && \
dfe9444c 8719 set open3 -DI_FCNTL && eval $compile; then
8e07c86e
AD
8720 h_fcntl=true;
8721 echo "<fcntl.h> defines the O_* constants..." >&4
8722 if ./open3; then
8723 echo "and you have the 3 argument form of open()." >&4
8724 val="$define"
8725 else
8726 echo "but not the 3 argument form of open(). Oh, well." >&4
8727 val="$undef"
8728 fi
8729else
8730 val="$undef"
8731 echo "I can't find the O_* constant definitions! You got problems." >&4
8732fi
8733set d_open3
8734eval $setvar
8735$rm -f open3*
8736
213c275f
JH
8737: see which of string.h or strings.h is needed
8738echo " "
8739strings=`./findhdr string.h`
8740if $test "$strings" && $test -r "$strings"; then
8741 echo "Using <string.h> instead of <strings.h>." >&4
8742 val="$define"
8743else
8744 val="$undef"
8745 strings=`./findhdr strings.h`
8746 if $test "$strings" && $test -r "$strings"; then
8747 echo "Using <strings.h> instead of <string.h>." >&4
8748 else
8749 echo "No string header found -- You'll surely have problems." >&4
8750 fi
8751fi
8752set i_string
8753eval $setvar
8754case "$i_string" in
8755"$undef") strings=`./findhdr strings.h`;;
8756*) strings=`./findhdr string.h`;;
8757esac
8758
8e07c86e
AD
8759: check for non-blocking I/O stuff
8760case "$h_sysfile" in
8761true) echo "#include <sys/file.h>" > head.c;;
8762*)
8763 case "$h_fcntl" in
8764 true) echo "#include <fcntl.h>" > head.c;;
8765 *) echo "#include <sys/fcntl.h>" > head.c;;
8766 esac
8767 ;;
8768esac
8769echo " "
8770echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8771case "$o_nonblock" in
8772'')
8773 $cat head.c > try.c
8774 $cat >>try.c <<'EOCP'
213c275f 8775#include <stdio.h>
d674cd6d 8776int main() {
8e07c86e
AD
8777#ifdef O_NONBLOCK
8778 printf("O_NONBLOCK\n");
8779 exit(0);
8780#endif
8781#ifdef O_NDELAY
8782 printf("O_NDELAY\n");
8783 exit(0);
8784#endif
8785#ifdef FNDELAY
8786 printf("FNDELAY\n");
8787 exit(0);
8788#endif
8789 exit(0);
8790}
8791EOCP
dfe9444c 8792 set try
dc45a647 8793 if eval $compile_ok; then
8e07c86e
AD
8794 o_nonblock=`./try`
8795 case "$o_nonblock" in
8796 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8797 *) echo "Seems like we can use $o_nonblock.";;
8798 esac
8799 else
8800 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8801 fi
8802 ;;
8803*) echo "Using $hint value $o_nonblock.";;
8804esac
8805$rm -f try try.* .out core
8806
8807echo " "
8808echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8809case "$eagain" in
8810'')
8811 $cat head.c > try.c
8812 $cat >>try.c <<EOCP
8813#include <errno.h>
8814#include <sys/types.h>
8815#include <signal.h>
213c275f 8816#include <stdio.h>
4633a7c4 8817#define MY_O_NONBLOCK $o_nonblock
dc45a647 8818#ifndef errno /* XXX need better Configure test */
8e07c86e 8819extern int errno;
dc45a647 8820#endif
14e4fe40
JH
8821#$i_unistd I_UNISTD
8822#ifdef I_UNISTD
213c275f
JH
8823#include <unistd.h>
8824#endif
1acc7ade
JH
8825#$i_string I_STRING
8826#ifdef I_STRING
213c275f
JH
8827#include <string.h>
8828#else
8829#include <strings.h>
8830#endif
8e07c86e 8831$signal_t blech(x) int x; { exit(3); }
4633a7c4
LW
8832EOCP
8833 $cat >> try.c <<'EOCP'
d674cd6d 8834int main()
8e07c86e
AD
8835{
8836 int pd[2];
8837 int pu[2];
8838 char buf[1];
8839 char string[100];
8840
8841 pipe(pd); /* Down: child -> parent */
8842 pipe(pu); /* Up: parent -> child */
8843 if (0 != fork()) {
8844 int ret;
8845 close(pd[1]); /* Parent reads from pd[0] */
8846 close(pu[0]); /* Parent writes (blocking) to pu[1] */
4633a7c4 8847 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8e07c86e
AD
8848 exit(1);
8849 signal(SIGALRM, blech);
8850 alarm(5);
8851 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8852 exit(2);
8853 sprintf(string, "%d\n", ret);
8854 write(2, string, strlen(string));
8855 alarm(0);
8856#ifdef EAGAIN
8857 if (errno == EAGAIN) {
8858 printf("EAGAIN\n");
8859 goto ok;
8860 }
8861#endif
8862#ifdef EWOULDBLOCK
8863 if (errno == EWOULDBLOCK)
8864 printf("EWOULDBLOCK\n");
8865#endif
8866 ok:
8867 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8868 sleep(2); /* Give it time to close our pipe */
8869 alarm(5);
8870 ret = read(pd[0], buf, 1); /* Should read EOF */
8871 alarm(0);
8872 sprintf(string, "%d\n", ret);
8873 write(3, string, strlen(string));
8874 exit(0);
8875 }
8876
8877 close(pd[0]); /* We write to pd[1] */
8878 close(pu[1]); /* We read from pu[0] */
8879 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8880 close(pd[1]); /* Pipe pd is now fully closed! */
8881 exit(0); /* Bye bye, thank you for playing! */
8882}
8883EOCP
dfe9444c 8884 set try
dc45a647 8885 if eval $compile_ok; then
774d564b 8886 echo "$startsh" >mtry
40a7a20a 8887 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8e07c86e
AD
8888 chmod +x mtry
8889 ./mtry >/dev/null 2>&1
8890 case $? in
8891 0) eagain=`$cat try.out`;;
8892 1) echo "Could not perform non-blocking setting!";;
8893 2) echo "I did a successful read() for something that was not there!";;
8894 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8895 *) echo "Something terribly wrong happened during testing.";;
8896 esac
8897 rd_nodata=`$cat try.ret`
8898 echo "A read() system call with no data present returns $rd_nodata."
8899 case "$rd_nodata" in
8900 0|-1) ;;
8901 *)
8902 echo "(That's peculiar, fixing that to be -1.)"
8903 rd_nodata=-1
8904 ;;
8905 esac
8906 case "$eagain" in
8907 '')
8908 echo "Forcing errno EAGAIN on read() with no data available."
8909 eagain=EAGAIN
8910 ;;
8911 *)
8912 echo "Your read() sets errno to $eagain when no data is available."
8913 ;;
8914 esac
8915 status=`$cat try.err`
8916 case "$status" in
8917 0) echo "And it correctly returns 0 to signal EOF.";;
8918 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8919 *) echo "However, your read() returns '$status' on EOF??";;
8920 esac
8921 val="$define"
28757baa 8922 if test "$status" = "$rd_nodata"; then
8e07c86e
AD
8923 echo "WARNING: you can't distinguish between EOF and no data!"
8924 val="$undef"
8925 fi
8926 else
8927 echo "I can't compile the test program--assuming errno EAGAIN will do."
8928 eagain=EAGAIN
8929 fi
8930 set d_eofnblk
8931 eval $setvar
8932 ;;
8933*)
8934 echo "Using $hint value $eagain."
8935 echo "Your read() returns $rd_nodata when no data is present."
8936 case "$d_eofnblk" in
8937 "$define") echo "And you can see EOF because read() returns 0.";;
8938 "$undef") echo "But you can't see EOF status from read() returned value.";;
8939 *)
8940 echo "(Assuming you can't see EOF status from read anyway.)"
8941 d_eofnblk=$undef
8942 ;;
8943 esac
8944 ;;
8945esac
8946$rm -f try try.* .out core head.c mtry
8947
a0d0e21e
LW
8948: see if fchmod exists
8949set fchmod d_fchmod
8950eval $inlibc
8951
8952: see if fchown exists
8953set fchown d_fchown
8954eval $inlibc
8955
8956: see if this is an fcntl system
8957set fcntl d_fcntl
8958eval $inlibc
8959
b7b35fc2
JH
8960hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8961while $test $# -ge 2; do
8962 case "$1" in
8963 $define) echo "#include <$2>";;
8964 esac ;
8965 shift 2;
8966done > try.c;
8967echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8968set try;
8969if eval $compile; then
8970 val="$define";
8971else
8972 val="$undef";
8973fi;
8974set $varname;
8975eval $setvar;
8976$rm -f try.c try.o'
8977
8978socketlib=''
8979sockethdr=''
8980: see whether socket exists
8981echo " "
8982$echo $n "Hmm... $c" >&4
8983if set socket val -f d_socket; eval $csym; $val; then
8984 echo "Looks like you have Berkeley networking support." >&4
8985 d_socket="$define"
8986 if set setsockopt val -f; eval $csym; $val; then
8987 d_oldsock="$undef"
8988 else
8989 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8990 d_oldsock="$define"
8991 fi
8992else
8993 if $contains socklib libc.list >/dev/null 2>&1; then
8994 echo "Looks like you have Berkeley networking support." >&4
8995 d_socket="$define"
8996 : we will have to assume that it supports the 4.2 BSD interface
8997 d_oldsock="$undef"
8998 else
8999 echo "You don't have Berkeley networking in libc$_a..." >&4
9000 if test "X$d_socket" = "X$define"; then
9001 echo "...but you seem to believe that you have sockets." >&4
9002 else
9003 for net in net socket
9004 do
9005 if test -f /usr/lib/lib$net$_a; then
9006 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9007 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9008 if $contains socket libc.list >/dev/null 2>&1; then
9009 d_socket="$define"
9010 socketlib="-l$net"
9011 case "$net" in
9012 net)
9013 echo "...but the Wollongong group seems to have hacked it in." >&4
9014 sockethdr="-I/usr/netinclude"
9015 ;;
9016 esac
9017 echo "Found Berkeley sockets interface in lib$net." >& 4
9018 if $contains setsockopt libc.list >/dev/null 2>&1; then
9019 d_oldsock="$undef"
9020 else
9021 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9022 d_oldsock="$define"
9023 fi
9024 break
9025 fi
9026 fi
9027 done
9028 if test "X$d_socket" != "X$define"; then
9029 echo "or anywhere else I see." >&4
9030 d_socket="$undef"
9031 d_oldsock="$undef"
9032 fi
9033 fi
9034 fi
9035fi
9036
9037: see if socketpair exists
9038set socketpair d_sockpair
9039eval $inlibc
9040
9041
9042echo " "
9043echo "Checking the availability of certain socket constants..." >& 4
9044for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9045 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9046 $cat >try.c <<EOF
9047#include <sys/types.h>
9048#include <sys/socket.h>
9049int main() {
9050 int i = $ENUM;
9051}
9052EOF
9053 val="$undef"
9054 set try; if eval $compile; then
9055 val="$define"
9056 fi
9057 set d_${enum}; eval $setvar
9058 $rm -f try.c try
9059done
9060
921b2963
JH
9061: see if sys/select.h has to be included
9062set sys/select.h i_sysselct
9063eval $inhdr
9064
9065: see if we should include time.h, sys/time.h, or both
9066echo " "
9067if test "X$timeincl" = X; then
9068 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9069 $echo $n "I'm now running the test program...$c"
9070 $cat >try.c <<'EOCP'
9071#include <sys/types.h>
9072#ifdef I_TIME
9073#include <time.h>
9074#endif
9075#ifdef I_SYSTIME
9076#ifdef SYSTIMEKERNEL
9077#define KERNEL
9078#endif
9079#include <sys/time.h>
9080#endif
9081#ifdef I_SYSSELECT
9082#include <sys/select.h>
9083#endif
d674cd6d 9084int main()
921b2963
JH
9085{
9086 struct tm foo;
9087#ifdef S_TIMEVAL
9088 struct timeval bar;
9089#endif
9090#ifdef S_TIMEZONE
9091 struct timezone tzp;
9092#endif
9093 if (foo.tm_sec == foo.tm_sec)
9094 exit(0);
9095#ifdef S_TIMEVAL
9096 if (bar.tv_sec == bar.tv_sec)
9097 exit(0);
9098#endif
9099 exit(1);
9100}
9101EOCP
9102 flags=''
9103 for s_timezone in '-DS_TIMEZONE' ''; do
9104 sysselect=''
9105 for s_timeval in '-DS_TIMEVAL' ''; do
9106 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9107 for i_time in '' '-DI_TIME'; do
9108 for i_systime in '-DI_SYSTIME' ''; do
9109 case "$flags" in
9110 '') $echo $n ".$c"
9111 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9112 if eval $compile; then
9113 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9114 shift
9115 flags="$*"
9116 echo " "
9117 $echo $n "Succeeded with $flags$c"
9118 fi
9119 ;;
9120 esac
9121 done
9122 done
9123 done
9124 done
9125 done
9126 timeincl=''
9127 echo " "
9128 case "$flags" in
9129 *SYSTIMEKERNEL*) i_systimek="$define"
9130 timeincl=`./findhdr sys/time.h`
9131 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9132 *) i_systimek="$undef";;
9133 esac
9134 case "$flags" in
9135 *I_TIME*) i_time="$define"
9136 timeincl=`./findhdr time.h`" $timeincl"
9137 echo "We'll include <time.h>." >&4;;
9138 *) i_time="$undef";;
9139 esac
9140 case "$flags" in
9141 *I_SYSTIME*) i_systime="$define"
9142 timeincl=`./findhdr sys/time.h`" $timeincl"
9143 echo "We'll include <sys/time.h>." >&4;;
9144 *) i_systime="$undef";;
9145 esac
9146 $rm -f try.c try
9147fi
9148
9149: check for fd_set items
9150$cat <<EOM
9151
9152Checking to see how well your C compiler handles fd_set and friends ...
9153EOM
9154$cat >fd_set.c <<EOCP
9155#$i_systime I_SYS_TIME
9156#$i_sysselct I_SYS_SELECT
9157#$d_socket HAS_SOCKET
9158#include <sys/types.h>
9159#ifdef HAS_SOCKET
9160#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9161#endif
9162#ifdef I_SYS_TIME
9163#include <sys/time.h>
9164#endif
9165#ifdef I_SYS_SELECT
9166#include <sys/select.h>
9167#endif
d674cd6d 9168int main() {
921b2963
JH
9169 fd_set fds;
9170
9171#ifdef TRYBITS
9172 if(fds.fds_bits);
9173#endif
9174
9175#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9176 exit(0);
9177#else
9178 exit(1);
9179#endif
9180}
9181EOCP
9182set fd_set -DTRYBITS
9183if eval $compile; then
9184 d_fds_bits="$define"
9185 d_fd_set="$define"
9186 echo "Well, your system knows about the normal fd_set typedef..." >&4
9187 if ./fd_set; then
9188 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9189 d_fd_macros="$define"
9190 else
9191 $cat >&4 <<'EOM'
9192but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9193EOM
9194 d_fd_macros="$undef"
9195 fi
9196else
9197 $cat <<'EOM'
9198Hmm, your compiler has some difficulty with fd_set. Checking further...
9199EOM
9200 set fd_set
9201 if eval $compile; then
9202 d_fds_bits="$undef"
9203 d_fd_set="$define"
9204 echo "Well, your system has some sort of fd_set available..." >&4
9205 if ./fd_set; then
9206 echo "and you have the normal fd_set macros." >&4
9207 d_fd_macros="$define"
9208 else
9209 $cat <<'EOM'
9210but not the normal fd_set macros! Gross! More work for me...
9211EOM
9212 d_fd_macros="$undef"
9213 fi
9214 else
9215 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9216 d_fd_set="$undef"
9217 d_fds_bits="$undef"
9218 d_fd_macros="$undef"
9219 fi
9220fi
9221$rm -f fd_set*
9222
a0d0e21e
LW
9223: see if fgetpos exists
9224set fgetpos d_fgetpos
9225eval $inlibc
9226
8175356b
JH
9227: see if flock exists
9228set flock d_flock
9229eval $inlibc
9230
9231: see if fork exists
9232set fork d_fork
9233eval $inlibc
9234
9235: see if pathconf exists
9236set pathconf d_pathconf
9237eval $inlibc
9238
9239: see if fpathconf exists
9240set fpathconf d_fpathconf
9241eval $inlibc
9242
d9b3e12d 9243
d9b3e12d
JH
9244: check for fpos64_t
9245echo " "
c5f05a91 9246echo "Checking to see if you have fpos64_t..." >&4
d9b3e12d 9247$cat >try.c <<EOCP
ce65dbcf 9248#include <stdio.h>
3c96ce7f 9249int main() { fpos64_t x = 7; }
d9b3e12d 9250EOCP
8175356b
JH
9251set try
9252if eval $compile; then
d9b3e12d 9253 val="$define"
c5f05a91 9254 echo "You have fpos64_t."
d9b3e12d
JH
9255else
9256 val="$undef"
c5f05a91 9257 echo "You do not have fpos64_t."
8175356b 9258 case "$fpossize" in
1eeb0f31 9259 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8175356b 9260 esac
d9b3e12d 9261fi
8175356b 9262$rm -f try.* try
d9b3e12d
JH
9263set d_fpos64_t
9264eval $setvar
9265
a3540c92
JH
9266: see if frexpl exists
9267set frexpl d_frexpl
9268eval $inlibc
9269
0545a864
JH
9270hasstruct='varname=$1; struct=$2; shift; shift;
9271while $test $# -ge 2; do
9272 case "$1" in
9273 $define) echo "#include <$2>";;
9274 esac ;
9275 shift 2;
9276done > try.c;
9277echo "int main () { struct $struct foo; }" >> try.c;
9278set try;
9279if eval $compile; then
9280 val="$define";
9281else
9282 val="$undef";
9283fi;
9284set $varname;
9285eval $setvar;
9286$rm -f try.c try.o'
d9b3e12d 9287
9b9c89a3
JH
9288: see if this is a sys/param system
9289set sys/param.h i_sysparam
9290eval $inhdr
9291
104d25b7
JH
9292: see if this is a sys/mount.h system
9293set sys/mount.h i_sysmount
9294eval $inhdr
9295
0545a864
JH
9296: see if sys/types.h has to be included
9297set sys/types.h i_systypes
9298eval $inhdr
9299
0545a864 9300
ad27e871 9301echo " "
8175356b 9302echo "Checking to see if your system supports struct fs_data..." >&4
0545a864
JH
9303set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9304eval $hasstruct
9305case "$d_fs_data_s" in
a22e52b9
JH
9306"$define") echo "Yes, it does." ;;
9307*) echo "No, it doesn't." ;;
0545a864
JH
9308esac
9309
9310: see if fseeko exists
9311set fseeko d_fseeko
9312eval $inlibc
1eeb0f31 9313case "$longsize" in
43999f95 93148) echo "(Your long is 64 bits, so you could use fseek.)" ;;
1eeb0f31 9315esac
0545a864
JH
9316
9317: see if fsetpos exists
9318set fsetpos d_fsetpos
9319eval $inlibc
9320
9321
9322: see if fstatfs exists
9323set fstatfs d_fstatfs
9324eval $inlibc
104d25b7
JH
9325
9326
9327: see if statvfs exists
9328set statvfs d_statvfs
9329eval $inlibc
9330
9331: see if fstatvfs exists
9332set fstatvfs d_fstatvfs
9333eval $inlibc
9334
9335
5ff3f7a4
GS
9336: see if ftello exists
9337set ftello d_ftello
9338eval $inlibc
1eeb0f31 9339case "$longsize" in
43999f95 93408) echo "(Your long is 64 bits, so you could use ftell.)" ;;
1eeb0f31 9341esac
5ff3f7a4 9342
49dabb45
JH
9343: see if getcwd exists
9344set getcwd d_getcwd
9345eval $inlibc
9346
3813c136
JH
9347: see if getespwnam exists
9348set getespwnam d_getespwnam
9349eval $inlibc
9350
c890dc6c
JH
9351
9352: see if getfsstat exists
9353set getfsstat d_getfsstat
9354eval $inlibc
9355
5ff3f7a4
GS
9356: see if getgrent exists
9357set getgrent d_getgrent
9358eval $inlibc
9359
693762b4
AD
9360: see if gethostbyaddr exists
9361set gethostbyaddr d_gethbyaddr
9362eval $inlibc
9363
9364: see if gethostbyname exists
9365set gethostbyname d_gethbyname
9366eval $inlibc
9367
a0d0e21e
LW
9368: see if gethostent exists
9369set gethostent d_gethent
9370eval $inlibc
9371
921b2963
JH
9372: see how we will look up host name
9373echo " "
a63faeb8
JH
9374call=''
9375if set gethostname val -f d_gethname; eval $csym; $val; then
921b2963
JH
9376 echo 'gethostname() found.' >&4
9377 d_gethname="$define"
9378 call=gethostname
a63faeb8
JH
9379fi
9380if set uname val -f d_uname; eval $csym; $val; then
921b2963
JH
9381 if ./xenix; then
9382 $cat <<'EOM'
9383uname() was found, but you're running xenix, and older versions of xenix
9384have a broken uname(). If you don't really know whether your xenix is old
9385enough to have a broken system call, use the default answer.
9386
9387EOM
9388 dflt=y
9389 case "$d_uname" in
9390 "$define") dflt=n;;
9391 esac
9392 rp='Is your uname() broken?'
9393 . ./myread
9394 case "$ans" in
9395 n*) d_uname="$define"; call=uname;;
9396 esac
9397 else
9398 echo 'uname() found.' >&4
9399 d_uname="$define"
a63faeb8
JH
9400 case "$call" in
9401 '') call=uname ;;
9402 esac
921b2963
JH
9403 fi
9404fi
9405case "$d_gethname" in
9406'') d_gethname="$undef";;
9407esac
9408case "$d_uname" in
9409'') d_uname="$undef";;
9410esac
9411case "$d_uname$d_gethname" in
9412*define*)
9413 dflt=n
9414 cat <<EOM
9415
9416Every now and then someone has a $call() that lies about the hostname
9417but can't be fixed for political or economic reasons. If you wish, I can
9418pretend $call() isn't there and maybe compute hostname at run-time
9419thanks to the '$phostname' command.
9420
9421EOM
9422 rp="Shall I ignore $call() from now on?"
9423 . ./myread
9424 case "$ans" in
9425 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9426 esac;;
9427esac
9428case "$phostname" in
9429'') aphostname='';;
9430*) case "$aphostname" in
9431 /*) ;;
9432 *) set X $phostname
9433 shift
9434 file=$1
9435 shift
9436 file=`./loc $file $file $pth`
9437 aphostname=`echo $file $*`
9438 ;;
9439 esac
9440 ;;
9441esac
9442case "$d_uname$d_gethname" in
9443*define*) ;;
9444*)
9445 case "$phostname" in
9446 '')
9447 echo "There will be no way for $package to get your hostname." >&4;;
9448 *)
9449 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9450 ;;
9451 esac;;
9452esac
9453case "$d_phostname" in
9454'') d_phostname="$undef";;
9455esac
9456
dc45a647
MB
9457: see if this is a netdb.h system
9458set netdb.h i_netdb
9459eval $inhdr
9460
9461: see if prototypes for various gethostxxx netdb.h functions are available
9462echo " "
9463set d_gethostprotos gethostent $i_netdb netdb.h
9464eval $hasproto
9465
a0d0e21e
LW
9466: see if getlogin exists
9467set getlogin d_getlogin
9468eval $inlibc
9469
ad27e871
JH
9470: see if getmnt exists
9471set getmnt d_getmnt
9472eval $inlibc
9473
ccc7f9b3
KS
9474: see if getmntent exists
9475set getmntent d_getmntent
9476eval $inlibc
9477
693762b4
AD
9478: see if getnetbyaddr exists
9479set getnetbyaddr d_getnbyaddr
9480eval $inlibc
9481
9482: see if getnetbyname exists
9483set getnetbyname d_getnbyname
9484eval $inlibc
9485
e5c9fcd0
AD
9486: see if getnetent exists
9487set getnetent d_getnent
9488eval $inlibc
9489
dc45a647
MB
9490: see if prototypes for various getnetxxx netdb.h functions are available
9491echo " "
9492set d_getnetprotos getnetent $i_netdb netdb.h
9493eval $hasproto
9494
693762b4
AD
9495
9496: see if getprotobyname exists
9497set getprotobyname d_getpbyname
9498eval $inlibc
9499
9500: see if getprotobynumber exists
9501set getprotobynumber d_getpbynumber
9502eval $inlibc
e5c9fcd0
AD
9503
9504: see if getprotoent exists
9505set getprotoent d_getpent
9506eval $inlibc
9507
2afac517 9508: see if getpgid exists
9509set getpgid d_getpgid
a0d0e21e
LW
9510eval $inlibc
9511
9512: see if getpgrp2 exists
9513set getpgrp2 d_getpgrp2
9514eval $inlibc
9515
9516: see if getppid exists
9517set getppid d_getppid
9518eval $inlibc
9519
9520: see if getpriority exists
9521set getpriority d_getprior
9522eval $inlibc
9523
dc45a647
MB
9524: see if prototypes for various getprotoxxx netdb.h functions are available
9525echo " "
9526set d_getprotoprotos getprotoent $i_netdb netdb.h
9527eval $hasproto
9528
3813c136
JH
9529: see if getprpwnam exists
9530set getprpwnam d_getprpwnam
9531eval $inlibc
9532
5ff3f7a4
GS
9533: see if getpwent exists
9534set getpwent d_getpwent
9535eval $inlibc
9536
9537
693762b4
AD
9538: see if getservbyname exists
9539set getservbyname d_getsbyname
9540eval $inlibc
9541
9542: see if getservbyport exists
9543set getservbyport d_getsbyport
9544eval $inlibc
e5c9fcd0
AD
9545
9546: see if getservent exists
9547set getservent d_getsent
9548eval $inlibc
9549
dc45a647
MB
9550: see if prototypes for various getservxxx netdb.h functions are available
9551echo " "
9552set d_getservprotos getservent $i_netdb netdb.h
9553eval $hasproto
9554
f1066039
JH
9555: see if getspnam exists
9556set getspnam d_getspnam
9557eval $inlibc
9558
5f05dabc 9559: see if gettimeofday or ftime exists
9560set gettimeofday d_gettimeod
9561eval $inlibc
9562case "$d_gettimeod" in
9563"$undef")
9564 set ftime d_ftime
9565 eval $inlibc
9566 ;;
9567*)
9568 val="$undef"; set d_ftime; eval $setvar
9569 ;;
9570esac
9571case "$d_gettimeod$d_ftime" in
9572"$undef$undef")
9573 echo " "
9574 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9575 ;;
9576esac
9577
5ff3f7a4
GS
9578: see if this is an grp system
9579set grp.h i_grp
9580eval $inhdr
9581
9582case "$i_grp" in
9583$define)
9584 xxx=`./findhdr grp.h`
9585 $cppstdin $cppflags $cppminus < $xxx >$$.h
9586
9587 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9588 val="$define"
9589 else
9590 val="$undef"
9591 fi
9592 set d_grpasswd
9593 eval $setvar
9594
9595 $rm -f $$.h
9596 ;;
9597*)
9598 val="$undef";
9599 set d_grpasswd; eval $setvar
9600 ;;
9601esac
9602
ccc7f9b3
KS
9603: see if hasmntopt exists
9604set hasmntopt d_hasmntopt
9605eval $inlibc
9606
a0d0e21e
LW
9607: see if this is a netinet/in.h or sys/in.h system
9608set netinet/in.h i_niin sys/in.h i_sysin
9609eval $inhdr
9610
5ff3f7a4 9611: see if arpa/inet.h has to be included
93341792 9612set arpa/inet.h i_arpainet
28e8609d
JH
9613eval $inhdr
9614
a0d0e21e
LW
9615: see if htonl --and friends-- exists
9616val=''
9617set htonl val
9618eval $inlibc
9619
9620: Maybe they are macros.
9621case "$val" in
9622$undef)
9623 $cat >htonl.c <<EOM
9624#include <stdio.h>
9625#include <sys/types.h>
9626#$i_niin I_NETINET_IN
9627#$i_sysin I_SYS_IN
93341792 9628#$i_arpainet I_ARPA_INET
a0d0e21e
LW
9629#ifdef I_NETINET_IN
9630#include <netinet/in.h>
9631#endif
9632#ifdef I_SYS_IN
9633#include <sys/in.h>
9634#endif
28e8609d
JH
9635#ifdef I_ARPA_INET
9636#include <arpa/inet.h>
9637#endif
a0d0e21e
LW
9638#ifdef htonl
9639printf("Defined as a macro.");
9640#endif
9641EOM
9642 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9643 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9644 val="$define"
9645 echo "But it seems to be defined as a macro." >&4
9646 fi
9647 $rm -f htonl.?
9648 ;;
9649esac
9650set d_htonl
9651eval $setvar
9652
43999f95
JH
9653: see if iconv exists
9654set iconv d_iconv
9655eval $inlibc
9656
a0d0e21e
LW
9657: index or strchr
9658echo " "
9659if set index val -f; eval $csym; $val; then
9660 if set strchr val -f d_strchr; eval $csym; $val; then
9661 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9662 val="$define"
9663 vali="$undef"
9664 echo "strchr() found." >&4
9665 else
9666 val="$undef"
9667 vali="$define"
9668 echo "index() found." >&4
9669 fi
9670 else
9671 val="$undef"
9672 vali="$define"
9673 echo "index() found." >&4
9674 fi
9675else
9676 if set strchr val -f d_strchr; eval $csym; $val; then
9677 val="$define"
9678 vali="$undef"
9679 echo "strchr() found." >&4
9680 else
9681 echo "No index() or strchr() found!" >&4
9682 val="$undef"
9683 vali="$undef"
9684 fi
9685fi
9686set d_strchr; eval $setvar
9687val="$vali"
9688set d_index; eval $setvar
9689
7e1af8bc 9690: check whether inet_aton exists
9691set inet_aton d_inetaton
9692eval $inlibc
9693
fe749a9f
JH
9694: see if inttypes.h is available
9695: we want a real compile instead of Inhdr because some systems
9696: have an inttypes.h which includes non-existent headers
9697echo " "
9698$cat >try.c <<EOCP
9699#include <inttypes.h>
9700int main() {
9701 static int32_t foo32 = 0x12345678;
9702}
9703EOCP
9704set try
9705if eval $compile; then
9706 echo "<inttypes.h> found." >&4
9707 val="$define"
9708else
9709 echo "<inttypes.h> NOT found." >&4
9710 val="$undef"
9711fi
9712$rm -f try.c try
9713set i_inttypes
9714eval $setvar
9715
9716: check for int64_t
9717echo " "
c5f05a91 9718echo "Checking to see if you have int64_t..." >&4
fe749a9f
JH
9719$cat >try.c <<EOCP
9720#include <sys/types.h>
9721#$i_inttypes I_INTTYPES
9722#ifdef I_INTTYPES
9723#include <inttypes.h>
9724#endif
9725int main() { int64_t x = 7; }
9726EOCP
9727set try
9728if eval $compile; then
9729 val="$define"
ce65dbcf 9730 echo "You have int64_t."
fe749a9f
JH
9731else
9732 val="$undef"
ce65dbcf 9733 echo "You do not have int64_t."
fe749a9f
JH
9734fi
9735$rm -f try try.*
13b3f787 9736set d_int64_t
fe749a9f
JH
9737eval $setvar
9738
a0d0e21e
LW
9739: Look for isascii
9740echo " "
9741$cat >isascii.c <<'EOCP'
9742#include <stdio.h>
9743#include <ctype.h>
d674cd6d 9744int main() {
a0d0e21e
LW
9745 int c = 'A';
9746 if (isascii(c))
9747 exit(0);
9748 else
9749 exit(1);
9750}
9751EOCP
dfe9444c
AD
9752set isascii
9753if eval $compile; then
a0d0e21e
LW
9754 echo "isascii() found." >&4
9755 val="$define"
9756else
9757 echo "isascii() NOT found." >&4
9758 val="$undef"
9759fi
9760set d_isascii
9761eval $setvar
9762$rm -f isascii*
9763
a3540c92
JH
9764: see if isnan exists
9765set isnan d_isnan
9766eval $inlibc
9767
9768: see if isnanl exists
9769set isnanl d_isnanl
9770eval $inlibc
9771
a0d0e21e
LW
9772: see if killpg exists
9773set killpg d_killpg
9774eval $inlibc
9775
dd64f1c3
AD
9776: see if lchown exists
9777echo " "
9778$cat > try.c <<'EOCP'
9779/* System header to define __stub macros and hopefully few prototypes,
9780 which can conflict with char lchown(); below. */
9781#include <assert.h>
9782/* Override any gcc2 internal prototype to avoid an error. */
9783/* We use char because int might match the return type of a gcc2
9784 builtin and then its argument prototype would still apply. */
9785char lchown();
9786int main() {
9787 /* The GNU C library defines this for functions which it implements
9788 to always fail with ENOSYS. Some functions are actually named
9789 something starting with __ and the normal name is an alias. */
9790#if defined (__stub_lchown) || defined (__stub___lchown)
9791choke me
9792#else
9793lchown();
9794#endif
9795; return 0; }
9796EOCP
9797set try
9798if eval $compile; then
9799 $echo "lchown() found." >&4
9800 val="$define"
9801else
9802 $echo "lchown() NOT found." >&4
9803 val="$undef"
9804fi
9805set d_lchown
9806eval $setvar
9807
2d4389e4
JH
9808: See if number of significant digits in a double precision number is known
9809echo " "
9810$cat >ldbl_dig.c <<EOM
9811#$i_limits I_LIMITS
9812#$i_float I_FLOAT
9813#ifdef I_LIMITS
9814#include <limits.h>
9815#endif
9816#ifdef I_FLOAT
9817#include <float.h>
9818#endif
9819#ifdef LDBL_DIG
9820printf("Contains LDBL_DIG");
9821#endif
9822EOM
9823$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9824if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9825 echo "LDBL_DIG found." >&4
9826 val="$define"
9827else
9828 echo "LDBL_DIG NOT found." >&4
9829 val="$undef"
9830fi
9831$rm -f ldbl_dig.?
9832set d_ldbl_dig
9833eval $setvar
9834
a0d0e21e
LW
9835: see if link exists
9836set link d_link
9837eval $inlibc
9838
a0d0e21e
LW
9839: see if localeconv exists
9840set localeconv d_locconv
9841eval $inlibc
9842
9843: see if lockf exists
9844set lockf d_lockf
9845eval $inlibc
9846
8175356b
JH
9847: check for long long
9848echo " "
c5f05a91 9849echo "Checking to see if you have long long..." >&4
213c275f 9850echo 'int main() { long long x = 7; return 0; }' > try.c
8175356b
JH
9851set try
9852if eval $compile; then
9853 val="$define"
7f6a09a7 9854 echo "You have long long."
8175356b
JH
9855else
9856 val="$undef"
ce65dbcf 9857 echo "You do not have long long."
8175356b
JH
9858fi
9859$rm try.*
9860set d_longlong
9861eval $setvar
9862
9863: check for length of long long
9864case "${d_longlong}${longlongsize}" in
9865$define)
9866 echo " "
49c10eea 9867 echo "Checking to see how big your long longs are..." >&4
8175356b
JH
9868 $cat >try.c <<'EOCP'
9869#include <stdio.h>
9870int main()
9871{
213c275f
JH
9872 printf("%d\n", (int)sizeof(long long));
9873 return(0);
8175356b
JH
9874}
9875EOCP
9876 set try
9877 if eval $compile_ok; then
9878 longlongsize=`./try$exe_ext`
49c10eea 9879 echo "Your long longs are $longlongsize bytes long."
8175356b
JH
9880 else
9881 dflt='8'
9882 echo " "
9883 echo "(I can't seem to compile the test program. Guessing...)"
9884 rp="What is the size of a long long (in bytes)?"
9885 . ./myread
9886 longlongsize="$ans"
9887 fi
9888 if $test "X$longsize" = "X$longlongsize"; then
9889 echo "(That isn't any different from an ordinary long.)"
9890 fi
9891 ;;
9892esac
9893$rm -f try.* try
9894
49c10eea
JH
9895: see if prototype for lseek is available
9896echo " "
9897set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9898eval $hasproto
9899
a0d0e21e
LW
9900: see if lstat exists
9901set lstat d_lstat
9902eval $inlibc
9903
1e8c3fde
JH
9904: see if madvise exists
9905set madvise d_madvise
9906eval $inlibc
9907
a0d0e21e
LW
9908: see if mblen exists
9909set mblen d_mblen
9910eval $inlibc
9911
9912: see if mbstowcs exists
9913set mbstowcs d_mbstowcs
9914eval $inlibc
9915
9916: see if mbtowc exists
9917set mbtowc d_mbtowc
9918eval $inlibc
9919
0f27ced1
JH
9920: see if memchr exists
9921set memchr d_memchr
9922eval $inlibc
9923
a0d0e21e
LW
9924: see if memcmp exists
9925set memcmp d_memcmp
9926eval $inlibc
9927
9928: see if memcpy exists
9929set memcpy d_memcpy
9930eval $inlibc
9931
9932: see if memmove exists
9933set memmove d_memmove
2304df62
AD
9934eval $inlibc
9935
9936: see if memset exists
9937set memset d_memset
9938eval $inlibc
9939
9940: see if mkdir exists
9941set mkdir d_mkdir
9942eval $inlibc
9943
fe749a9f
JH
9944: see if mkdtemp exists
9945set mkdtemp d_mkdtemp
9946eval $inlibc
9947
a0d0e21e
LW
9948: see if mkfifo exists
9949set mkfifo d_mkfifo
9950eval $inlibc
9951
fe749a9f
JH
9952: see if mkstemp exists
9953set mkstemp d_mkstemp
9954eval $inlibc
9955
9956: see if mkstemps exists
9957set mkstemps d_mkstemps
9958eval $inlibc
9959
a0d0e21e
LW
9960: see if mktime exists
9961set mktime d_mktime
9962eval $inlibc
9963
87b71857
JH
9964: see if this is a sys/mman.h system
9965set sys/mman.h i_sysmman
9966eval $inhdr
9967
9968: see if mmap exists
9969set mmap d_mmap
9970eval $inlibc
9971: see what shmat returns
9972: default to something harmless
9973mmaptype='void *'
9974case "$i_sysmman$d_mmap" in
9975"$define$define")
9976 $cat >mmap.c <<'END'
9977#include <sys/mman.h>
9978void *mmap();
9979END
9980 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9981 mmaptype='void *'
9982 else
9983 mmaptype='caddr_t'
9984 fi
9985 echo "and it returns ($mmaptype)." >&4
9986 ;;
9987esac
9988
9989
9990
a3540c92
JH
9991: see if modfl exists
9992set modfl d_modfl
9993eval $inlibc
9994
fe749a9f
JH
9995: see if mprotect exists
9996set mprotect d_mprotect
9997eval $inlibc
9998
2304df62
AD
9999: see if msgctl exists
10000set msgctl d_msgctl
10001eval $inlibc
10002
10003: see if msgget exists
10004set msgget d_msgget
10005eval $inlibc
10006
10007: see if msgsnd exists
10008set msgsnd d_msgsnd
10009eval $inlibc
10010
10011: see if msgrcv exists
10012set msgrcv d_msgrcv
10013eval $inlibc
10014
10015: see how much of the 'msg*(2)' library is present.
10016h_msg=true
10017echo " "
10018case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10019*"$undef"*) h_msg=false;;
10020esac
6087ac44
JH
10021case "$osname" in
10022freebsd)
10023 case "`ipcs 2>&1`" in
10024 "SVID messages"*"not configured"*)
5ff3f7a4 10025 echo "Your $osname does not have the msg*(2) configured." >&4
6087ac44
JH
10026 h_msg=false
10027 val="$undef"
10028 set msgctl d_msgctl
10029 eval $setvar
10030 set msgget d_msgget
10031 eval $setvar
10032 set msgsnd d_msgsnd
10033 eval $setvar
10034 set msgrcv d_msgrcv
10035 eval $setvar
10036 ;;
10037 esac
10038 ;;
10039esac
2304df62
AD
10040: we could also check for sys/ipc.h ...
10041if $h_msg && $test `./findhdr sys/msg.h`; then
10042 echo "You have the full msg*(2) library." >&4
10043 val="$define"
10044else
10045 echo "You don't have the full msg*(2) library." >&4
10046 val="$undef"
10047fi
10048set d_msg
10049eval $setvar
10050
fe749a9f
JH
10051: see if msync exists
10052set msync d_msync
dfe9444c
AD
10053eval $inlibc
10054
fe749a9f
JH
10055: see if munmap exists
10056set munmap d_munmap
10057eval $inlibc
ff935051 10058
fe749a9f
JH
10059: see if nice exists
10060set nice d_nice
10061eval $inlibc
ff935051 10062
de1c2614
JH
10063
10064echo " "
6b8eaf93 10065echo "Checking which 64-bit integer type we could use..." >&4
de1c2614
JH
10066
10067case "$intsize" in
100688) val=int
10069 set quadtype
10070 eval $setvar
10071 val='"unsigned int"'
10072 set uquadtype
10073 eval $setvar
6b8eaf93 10074 quadkind=1
de1c2614
JH
10075 ;;
10076*) case "$longsize" in
10077 8) val=long
10078 set quadtype
10079 eval $setvar
10080 val='"unsigned long"'
10081 set uquadtype
10082 eval $setvar
6b8eaf93 10083 quadkind=2
de1c2614 10084 ;;
43999f95
JH
10085 *) case "$d_longlong:$longlongsize" in
10086 define:8)
de1c2614
JH
10087 val='"long long"'
10088 set quadtype
10089 eval $setvar
10090 val='"unsigned long long"'
10091 set uquadtype
10092 eval $setvar
6b8eaf93 10093 quadkind=3
de1c2614 10094 ;;
13b3f787 10095 *) case "$d_int64_t" in
de1c2614
JH
10096 define)
10097 val=int64_t
10098 set quadtype
10099 eval $setvar
10100 val=uint64_t
10101 set uquadtype
10102 eval $setvar
6b8eaf93 10103 quadkind=4
de1c2614
JH
10104 ;;
10105 esac
10106 ;;
10107 esac
10108 ;;
10109 esac
10110 ;;
10111esac
10112
10113case "$quadtype" in
ad551343 10114'') echo "Alas, no 64-bit integer types in sight." >&4
de1c2614
JH
10115 d_quad="$undef"
10116 ;;
10cc9d2a 10117*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
1eeb0f31
JH
10118 verb="will"
10119 else
10120 verb="could"
10121 fi
10122 echo "We $verb use '$quadtype' for 64-bit integers." >&4
de1c2614
JH
10123 d_quad="$define"
10124 ;;
10125esac
10126
cce08f5b
JH
10127: check for length of character
10128echo " "
10129case "$charsize" in
10130'')
10131 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10132 $cat >try.c <<'EOCP'
10133#include <stdio.h>
10134int main()
10135{
10136 printf("%d\n", (int)sizeof(char));
10137 exit(0);
10138}
10139EOCP
10140 set try
10141 if eval $compile_ok; then
10142 dflt=`./try`
10143 else
10144 dflt='1'
10145 echo "(I can't seem to compile the test program. Guessing...)"
10146 fi
10147 ;;
10148*)
10149 dflt="$charsize"
10150 ;;
10151esac
10152rp="What is the size of a character (in bytes)?"
10153. ./myread
10154charsize="$ans"
10155$rm -f try.c try
10156
10157
10158echo " "
10159$echo "Choosing the C types to be used for Perl's internal types..." >&4
10160
10cc9d2a 10161case "$use64bitint:$d_quad:$quadtype" in
cce08f5b
JH
10162define:define:?*)
10163 ivtype="$quadtype"
10164 uvtype="$uquadtype"
10165 ivsize=8
10166 uvsize=8
10167 ;;
10168*) ivtype="long"
10169 uvtype="unsigned long"
10170 ivsize=$longsize
10171 uvsize=$longsize
10172 ;;
10173esac
10174
10175case "$uselongdouble:$d_longdbl" in
10176define:define)
10177 nvtype="long double"
10178 nvsize=$longdblsize
10179 ;;
10180*) nvtype=double
10181 nvsize=$doublesize
10182 ;;
10183esac
10184
10185$echo "(IV will be "$ivtype", $ivsize bytes)"
10186$echo "(UV will be "$uvtype", $uvsize bytes)"
10187$echo "(NV will be "$nvtype", $nvsize bytes)"
10188
10189$cat >try.c <<EOCP
10190#$i_inttypes I_INTTYPES
10191#ifdef I_INTTYPES
10192#include <inttypes.h>
10193#endif
10194#include <stdio.h>
10195int main() {
10196#ifdef INT8
10197 int8_t i = INT8_MAX;
10198 uint8_t u = UINT8_MAX;
10199 printf("int8_t\n");
10200#endif
10201#ifdef INT16
10202 int16_t i = INT16_MAX;
10203 uint16_t i = UINT16_MAX;
10204 printf("int16_t\n");
10205#endif
10206#ifdef INT32
10207 int32_t i = INT32_MAX;
10208 uint32_t u = UINT32_MAX;
10209 printf("int32_t\n");
10210#endif
10211}
10212EOCP
10213
10214case "$i8type" in
10215'') case "$charsize" in
10216 1) i8type=char
10217 u8type="unsigned char"
10218 i8size=$charsize
10219 u8size=$charsize
10220 ;;
10221 esac
10222 ;;
10223esac
10224case "$i8type" in
10225'') set try -DINT8
10226 if eval $compile; then
10227 case "`./try$exe_ext`" in
10228 int8_t) i8type=int8_t
10229 u8type=uint8_t
10230 i8size=1
10231 u8size=1
10232 ;;
10233 esac
10234 fi
10235 ;;
10236esac
10237case "$i8type" in
10238'') if $test $charsize -ge 1; then
10239 i8type=char
10240 u8type="unsigned char"
10241 i8size=$charsize
10242 u8size=$charsize
10243 fi
10244 ;;
10245esac
10246
10247case "$i16type" in
10248'') case "$shortsize" in
10249 2) i16type=short
10250 u16type="unsigned short"
10251 i16size=$shortsize
10252 u16size=$shortsize
10253 ;;
10254 esac
10255 ;;
10256esac
10257case "$i16type" in
10258'') set try -DINT16
10259 if eval $compile; then
10260 case "`./try$exe_ext`" in
10261 int16_t)
10262 i16type=int16_t
10263 u16type=uint16_t
10264 i16size=2
10265 u16size=2
10266 ;;
10267 esac
10268 fi
10269 ;;
10270esac
10271case "$i16type" in
10272'') if $test $shortsize -ge 2; then
10273 i16type=short
10274 u16type="unsigned short"
10275 i16size=$shortsize
10276 u16size=$shortsize
10277 fi
10278 ;;
10279esac
10280
10281case "$i32type" in
10282'') case "$longsize" in
10283 4) i32type=long
10284 u32type="unsigned long"
10285 i32size=$longsize
10286 u32size=$longsize
10287 ;;
10288 *) case "$intsize" in
10289 4) i32type=int
10290 u32type="unsigned int"
10291 i32size=$intsize
10292 u32size=$intsize
10293 ;;
10294 esac
10295 ;;
10296 esac
10297 ;;
10298esac
10299case "$i32type" in
10300'') set try -DINT32
10301 if eval $compile; then
10302 case "`./try$exe_ext`" in
10303 int32_t)
10304 i32type=int32_t
10305 u32type=uint32_t
10306 i32size=4
10307 u32size=4
10308 ;;
10309 esac
10310 fi
10311 ;;
10312esac
10313case "$i32type" in
10314'') if $test $intsize -ge 4; then
10315 i32type=int
10316 u32type="unsigned int"
10317 i32size=$intsize
10318 u32size=$intsize
10319 fi
10320 ;;
10321esac
10322
10323case "$i64type" in
10324'') case "$d_quad:$quadtype" in
10325 define:?*)
10326 i64type="$quadtype"
10327 u64type="$uquadtype"
10328 i64size=8
10329 u64size=8
10330 ;;
10331 esac
10332 ;;
10333esac
10334
10335$echo "Checking whether your NVs can preserve your UVs..." >&4
10336$cat <<EOP >try.c
10337#include <stdio.h>
10338int main() {
10339 $uvtype k = ($uvtype)~0, l;
10340 $nvtype d;
10341 l = k;
10342 d = ($nvtype)l;
10343 l = ($uvtype)d;
10344 if (l == k)
10345 printf("preserve\n");
10346 exit(0);
10347}
10348EOP
10349set try
10350if eval $compile; then
10351 case "`./try$exe_ext`" in
78691af5 10352 preserve) d_nv_preserves_uv="$define" ;;
cce08f5b
JH
10353 esac
10354fi
78691af5 10355case "$d_nv_preserves_uv" in
cce08f5b
JH
10356$define) $echo "Yes, they can." 2>&1 ;;
10357*) $echo "No, they can't." 2>&1
78691af5 10358 d_nv_preserves_uv="$undef"
cce08f5b
JH
10359 ;;
10360esac
10361
10362$rm -f try.* try
10363
bd026c32 10364case "$d_nv_preserves_uv" in
d6c14000 10365"$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
bd026c32
JH
10366*) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10367 $cat <<EOP >try.c
10368#include <stdio.h>
10369int main() {
10370 $uvtype u = 0;
10371 int n = 8 * $uvsize;
10372 int i;
10373 for (i = 0; i < n; i++) {
10374 u = u << 1 | ($uvtype)1;
10375 if (($uvtype)($nvtype)u != u)
10376 break;
10377 }
10378 printf("%d\n", i);
10379 exit(0);
10380}
10381EOP
10382 set try
10383 if eval $compile; then
d6c14000 10384 d_nv_preserves_uv_bits="`./try$exe_ext`"
bd026c32 10385 fi
d6c14000
JH
10386 case "$d_nv_preserves_uv_bits" in
10387 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
bd026c32 10388 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
d6c14000 10389 d_nv_preserves_uv_bits="$undef"
bd026c32
JH
10390 ;;
10391 esac
10392 $rm -f try.* try
10393 ;;
10394esac
10395
10396
c5f05a91
JH
10397
10398: check for off64_t
10399echo " "
10400echo "Checking to see if you have off64_t..." >&4
10401$cat >try.c <<EOCP
10402#include <sys/types.h>
10403#include <unistd.h>
10404int main() { off64_t x = 7; }
10405EOCP
10406set try
10407if eval $compile; then
10408 val="$define"
10409 echo "You have off64_t."
10410else
10411 val="$undef"
10412 echo "You do not have off64_t."
10413 case "$lseeksize" in
10414 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10415 esac
10416fi
10417$rm -f try.* try
10418set d_off64_t
10419eval $setvar
10420
c4747d3e 10421: see if POSIX threads are available
1f5ae88c
JH
10422set pthread.h i_pthread
10423eval $inhdr
10424
c4747d3e
JH
10425
10426
10427
10428: how to create joinable pthreads
10429if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13666627
JH
10430 echo " "
10431 echo "Checking what constant to use for creating joinable pthreads..." >&4
10432 $cat >try.c <<'EOCP'
10433#include <pthread.h>
10434int main() {
10435 int detachstate = JOINABLE;
10436}
10437EOCP
10438 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10439 if eval $compile; then
c6912327 10440 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
ef4af2be
JH
10441 val="$undef" # Yes, undef.
10442 set d_old_pthread_create_joinable
13666627 10443 eval $setvar
ef4af2be
JH
10444 val=""
10445 set old_pthread_create_joinable
13666627
JH
10446 eval $setvar
10447 else
10448 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10449 if eval $compile; then
c6912327 10450 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13666627 10451 val="$define"
ef4af2be 10452 set d_old_pthread_create_joinable
13666627
JH
10453 eval $setvar
10454 val=PTHREAD_CREATE_UNDETACHED
ef4af2be 10455 set old_pthread_create_joinable
13666627
JH
10456 eval $setvar
10457 else
10458 set try -DJOINABLE=__UNDETACHED
10459 if eval $compile; then
c6912327 10460 echo "You seem to use __UNDETACHED." >&4
13666627 10461 val="$define"
ef4af2be 10462 set d_old_pthread_create_joinable
13666627
JH
10463 eval $setvar
10464 val=__UNDETACHED
ef4af2be 10465 set old_pthread_create_joinable
13666627
JH
10466 eval $setvar
10467 else
c6912327 10468 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13666627 10469 val="$define"
ef4af2be 10470 set d_old_pthread_create_joinable
13666627
JH
10471 eval $setvar
10472 val=0
ef4af2be 10473 set old_pthread_create_joinable
13666627
JH
10474 eval $setvar
10475 fi
10476 fi
10477 fi
10478 $rm -f try try.*
10479else
ef4af2be
JH
10480 d_old_pthread_create_joinable="$undef"
10481 old_pthread_create_joinable=""
13666627
JH
10482fi
10483
ef4af2be
JH
10484: see if pause exists
10485set pause d_pause
10486eval $inlibc
10487
10488: see if pipe exists
10489set pipe d_pipe
10490eval $inlibc
10491
10492: see if poll exists
10493set poll d_poll
10494eval $inlibc
10495
31dfa2f6
JH
10496
10497: see whether the various POSIXish _yields exist
10498$cat >try.c <<EOP
10499#include <pthread.h>
10500#include <stdio.h>
5a411a32 10501int main() {
31dfa2f6
JH
10502#ifdef SCHED_YIELD
10503 sched_yield();
10504#else
10505#ifdef PTHREAD_YIELD
10506 pthread_yield();
10507#else
10508#ifdef PTHREAD_YIELD_NULL
10509 pthread_yield(NULL);
10510#endif
10511#endif
10512#endif
10513}
10514EOP
10515: see if sched_yield exists
10516set try -DSCHED_YIELD
10517if eval $compile; then
10518 val="$define"
10519 sched_yield='sched_yield()'
10520else
10521 val="$undef"
10522fi
10523case "$usethreads" in
10524$define)
10525 case "$val" in
10526 $define) echo 'sched_yield() found.' >&4 ;;
10527 *) echo 'sched_yield() NOT found.' >&4 ;;
10528 esac
10529esac
10530set d_sched_yield
10531eval $setvar
10532
10533: see if pthread_yield exists
10534set try -DPTHREAD_YIELD
10535if eval $compile; then
10536 val="$define"
10537 case "$sched_yield" in
10538 '') sched_yield='pthread_yield()' ;;
10539 esac
10540else
10541 set try -DPTHREAD_YIELD_NULL
10542 if eval $compile; then
10543 val="$define"
10544 case "$sched_yield" in
10545 '') sched_yield='pthread_yield(NULL)' ;;
10546 esac
10547 else
10548 val="$undef"
10549 fi
10550fi
10551case "$usethreads" in
10552$define)
10553 case "$val" in
10554 $define) echo 'pthread_yield() found.' >&4 ;;
10555 *) echo 'pthread_yield() NOT found.' >&4 ;;
10556 esac
10557 ;;
10558esac
10559set d_pthread_yield
10560eval $setvar
10561
10562case "$sched_yield" in
10563'') sched_yield=undef ;;
10564esac
10565
10566$rm -f try try.*
10567
4aa0a1f7
AD
10568: see if this is a pwd.h system
10569set pwd.h i_pwd
10570eval $inhdr
10571
10572case "$i_pwd" in
10573$define)
10574 xxx=`./findhdr pwd.h`
85e6fe83 10575 $cppstdin $cppflags $cppminus < $xxx >$$.h
4aa0a1f7 10576
2304df62 10577 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
4aa0a1f7 10578 val="$define"
2304df62 10579 else
4aa0a1f7 10580 val="$undef"
2304df62 10581 fi
4aa0a1f7
AD
10582 set d_pwquota
10583 eval $setvar
10584
2304df62 10585 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
4aa0a1f7 10586 val="$define"
2304df62 10587 else
4aa0a1f7 10588 val="$undef"
2304df62 10589 fi
4aa0a1f7
AD
10590 set d_pwage
10591 eval $setvar
10592
2304df62 10593 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
4aa0a1f7 10594 val="$define"
2304df62 10595 else
4aa0a1f7 10596 val="$undef"
2304df62 10597 fi
4aa0a1f7
AD
10598 set d_pwchange
10599 eval $setvar
10600
2304df62 10601 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
4aa0a1f7 10602 val="$define"
2304df62 10603 else
4aa0a1f7 10604 val="$undef"
2304df62 10605 fi
4aa0a1f7
AD
10606 set d_pwclass
10607 eval $setvar
10608
2304df62 10609 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
4aa0a1f7 10610 val="$define"
2304df62 10611 else
4aa0a1f7 10612 val="$undef"
2304df62 10613 fi
4aa0a1f7 10614 set d_pwexpire
cce08f5b 10615 eval $setvar
de1c2614 10616
cce08f5b
JH
10617 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10618 val="$define"
1eeb0f31 10619 else
cce08f5b 10620 val="$undef"
1eeb0f31 10621 fi
cce08f5b
JH
10622 set d_pwcomment
10623 eval $setvar
10624
10625 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10626 val="$define"
10627 else
10628 val="$undef"
10629 fi
10630 set d_pwgecos
10631 eval $setvar
10632
10633 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10634 val="$define"
10635 else
10636 val="$undef"
10637 fi
10638 set d_pwpasswd
10639 eval $setvar
10640
10641 $rm -f $$.h
10642 ;;
10643*)
10644 val="$undef";
10645 set d_pwquota; eval $setvar
10646 set d_pwage; eval $setvar
10647 set d_pwchange; eval $setvar
10648 set d_pwclass; eval $setvar
10649 set d_pwexpire; eval $setvar
10650 set d_pwcomment; eval $setvar
10651 set d_pwgecos; eval $setvar
10652 set d_pwpasswd; eval $setvar
de1c2614
JH
10653 ;;
10654esac
10655
85e6fe83 10656: see if readdir and friends exist
2304df62
AD
10657set readdir d_readdir
10658eval $inlibc
85e6fe83
LW
10659set seekdir d_seekdir
10660eval $inlibc
10661set telldir d_telldir
10662eval $inlibc
10663set rewinddir d_rewinddir
10664eval $inlibc
2304df62 10665
a0d0e21e
LW
10666: see if readlink exists
10667set readlink d_readlink
10668eval $inlibc
10669
2304df62
AD
10670: see if rename exists
10671set rename d_rename
10672eval $inlibc
10673
10674: see if rmdir exists
10675set rmdir d_rmdir
10676eval $inlibc
10677
8ff267be 10678: see if memory.h is available.
10679val=''
10680set memory.h val
10681eval $inhdr
10682
10683: See if it conflicts with string.h
10684case "$val" in
10685$define)
10686 case "$strings" in
10687 '') ;;
10688 *)
10689 $cppstdin $cppflags $cppminus < $strings > mem.h
10690 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10691 echo " "
10692 echo "We won't be including <memory.h>."
10693 val="$undef"
10694 fi
10695 $rm -f mem.h
10696 ;;
10697 esac
10698esac
10699set i_memory
10700eval $setvar
10701
2304df62
AD
10702: can bcopy handle overlapping blocks?
10703val="$undef"
10704case "$d_bcopy" in
10705"$define")
10706 echo " "
10707 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
dfe9444c 10708 $cat >try.c <<EOCP
8ff267be 10709#$i_memory I_MEMORY
10710#$i_stdlib I_STDLIB
10711#$i_string I_STRING
10712#$i_unistd I_UNISTD
10713EOCP
dfe9444c 10714 $cat >>try.c <<'EOCP'
8ff267be 10715#include <stdio.h>
8ff267be 10716#ifdef I_MEMORY
10717# include <memory.h>
10718#endif
10719#ifdef I_STDLIB
10720# include <stdlib.h>
10721#endif
10722#ifdef I_STRING
10723# include <string.h>
10724#else
10725# include <strings.h>
10726#endif
10727#ifdef I_UNISTD
10728# include <unistd.h> /* Needed for NetBSD */
10729#endif
d674cd6d 10730int main()
2304df62 10731{
85e6fe83
LW
10732char buf[128], abc[128];
10733char *b;
10734int len;
10735int off;
10736int align;
a0d0e21e 10737
85e6fe83 10738bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
2304df62
AD
10739
10740for (align = 7; align >= 0; align--) {
10741 for (len = 36; len; len--) {
10742 b = buf+align;
85e6fe83 10743 bcopy(abc, b, len);
2304df62
AD
10744 for (off = 1; off <= len; off++) {
10745 bcopy(b, b+off, len);
10746 bcopy(b+off, b, len);
85e6fe83 10747 if (bcmp(b, abc, len))
2304df62
AD
10748 exit(1);
10749 }
10750 }
10751}
10752exit(0);
10753}
10754EOCP
dfe9444c 10755 set try
dc45a647 10756 if eval $compile_ok; then
dfe9444c 10757 if ./try 2>/dev/null; then
2304df62
AD
10758 echo "Yes, it can."
10759 val="$define"
10760 else
10761 echo "It can't, sorry."
8ff267be 10762 case "$d_memmove" in
10763 "$define") echo "But that's Ok since you have memmove()." ;;
10764 esac
2304df62
AD
10765 fi
10766 else
10767 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 10768 case "$d_memmove" in
10769 "$define") echo "But that's Ok since you have memmove()." ;;
10770 esac
2304df62
AD
10771 fi
10772 ;;
10773esac
dfe9444c 10774$rm -f try.* try core
2304df62
AD
10775set d_safebcpy
10776eval $setvar
10777
10778: can memcpy handle overlapping blocks?
10779val="$undef"
10780case "$d_memcpy" in
10781"$define")
10782 echo " "
10783 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
dfe9444c 10784 $cat >try.c <<EOCP
8ff267be 10785#$i_memory I_MEMORY
10786#$i_stdlib I_STDLIB
10787#$i_string I_STRING
10788#$i_unistd I_UNISTD
10789EOCP
dfe9444c 10790 $cat >>try.c <<'EOCP'
8ff267be 10791#include <stdio.h>
8ff267be 10792#ifdef I_MEMORY
10793# include <memory.h>
10794#endif
10795#ifdef I_STDLIB
10796# include <stdlib.h>
10797#endif
10798#ifdef I_STRING
10799# include <string.h>
10800#else
10801# include <strings.h>
10802#endif
10803#ifdef I_UNISTD
10804# include <unistd.h> /* Needed for NetBSD */
10805#endif
d674cd6d 10806int main()
2304df62 10807{
85e6fe83
LW
10808char buf[128], abc[128];
10809char *b;
10810int len;
10811int off;
10812int align;
10813
8ff267be 10814/* Copy "abcde..." string to char abc[] so that gcc doesn't
10815 try to store the string in read-only memory. */
85e6fe83 10816memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
2304df62
AD
10817
10818for (align = 7; align >= 0; align--) {
10819 for (len = 36; len; len--) {
10820 b = buf+align;
232e078e 10821 memcpy(b, abc, len);
2304df62 10822 for (off = 1; off <= len; off++) {
2304df62 10823 memcpy(b+off, b, len);
232e078e 10824 memcpy(b, b+off, len);
85e6fe83 10825 if (memcmp(b, abc, len))
2304df62
AD
10826 exit(1);
10827 }
10828 }
10829}
10830exit(0);
10831}
10832EOCP
dfe9444c 10833 set try
dc45a647 10834 if eval $compile_ok; then
dfe9444c 10835 if ./try 2>/dev/null; then
2304df62
AD
10836 echo "Yes, it can."
10837 val="$define"
10838 else
10839 echo "It can't, sorry."
8ff267be 10840 case "$d_memmove" in
10841 "$define") echo "But that's Ok since you have memmove()." ;;
10842 esac
2304df62
AD
10843 fi
10844 else
10845 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 10846 case "$d_memmove" in
10847 "$define") echo "But that's Ok since you have memmove()." ;;
10848 esac
2304df62
AD
10849 fi
10850 ;;
10851esac
dfe9444c 10852$rm -f try.* try core
2304df62
AD
10853set d_safemcpy
10854eval $setvar
10855
36477c24 10856: can memcmp be trusted to compare relative magnitude?
10857val="$undef"
10858case "$d_memcmp" in
10859"$define")
10860 echo " "
dfe9444c
AD
10861 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10862 $cat >try.c <<EOCP
36477c24 10863#$i_memory I_MEMORY
10864#$i_stdlib I_STDLIB
10865#$i_string I_STRING
10866#$i_unistd I_UNISTD
10867EOCP
dfe9444c 10868 $cat >>try.c <<'EOCP'
36477c24 10869#include <stdio.h>
36477c24 10870#ifdef I_MEMORY
10871# include <memory.h>
10872#endif
10873#ifdef I_STDLIB
10874# include <stdlib.h>
10875#endif
10876#ifdef I_STRING
10877# include <string.h>
10878#else
10879# include <strings.h>
10880#endif
10881#ifdef I_UNISTD
10882# include <unistd.h> /* Needed for NetBSD */
10883#endif
d674cd6d 10884int main()
36477c24 10885{
10886char a = -1;
10887char b = 0;
10888if ((a < b) && memcmp(&a, &b, 1) < 0)
10889 exit(1);
10890exit(0);
10891}
10892EOCP
dfe9444c 10893 set try
dc45a647 10894 if eval $compile_ok; then
dfe9444c 10895 if ./try 2>/dev/null; then
36477c24 10896 echo "Yes, it can."
10897 val="$define"
10898 else
10899 echo "No, it can't (it uses signed chars)."
10900 fi
10901 else
10902 echo "(I can't compile the test program, so we'll assume not...)"
10903 fi
10904 ;;
10905esac
dfe9444c 10906$rm -f try.* try core
36477c24 10907set d_sanemcmp
10908eval $setvar
10909
2304df62
AD
10910: see if select exists
10911set select d_select
10912eval $inlibc
10913
10914: see if semctl exists
10915set semctl d_semctl
10916eval $inlibc
10917
10918: see if semget exists
10919set semget d_semget
10920eval $inlibc
10921
10922: see if semop exists
10923set semop d_semop
10924eval $inlibc
10925
10926: see how much of the 'sem*(2)' library is present.
10927h_sem=true
10928echo " "
10929case "$d_semctl$d_semget$d_semop" in
10930*"$undef"*) h_sem=false;;
10931esac
6087ac44
JH
10932case "$osname" in
10933freebsd)
10934 case "`ipcs 2>&1`" in
10935 "SVID messages"*"not configured"*)
5ff3f7a4 10936 echo "Your $osname does not have the sem*(2) configured." >&4
6087ac44
JH
10937 h_sem=false
10938 val="$undef"
10939 set semctl d_semctl
10940 eval $setvar
10941 set semget d_semget
10942 eval $setvar
10943 set semop d_semop
10944 eval $setvar
10945 ;;
10946 esac
10947 ;;
10948esac
2304df62
AD
10949: we could also check for sys/ipc.h ...
10950if $h_sem && $test `./findhdr sys/sem.h`; then
10951 echo "You have the full sem*(2) library." >&4
10952 val="$define"
10953else
10954 echo "You don't have the full sem*(2) library." >&4
10955 val="$undef"
10956fi
10957set d_sem
10958eval $setvar
10959
bd89102f
AD
10960: see whether sys/sem.h defines union semun
10961echo " "
10962$cat > try.c <<'END'
10963#include <sys/types.h>
10964#include <sys/ipc.h>
10965#include <sys/sem.h>
10966int main () { union semun semun; semun.buf = 0; }
10967END
10968set try
10969if eval $compile; then
10970 echo "You have union semun in <sys/sem.h>." >&4
10971 val="$define"
10972else
10973 echo "You do not have union semun in <sys/sem.h>." >&4
10974 val="$undef"
10975fi
85ab1d1d 10976$rm -f try try.c try.h
bd89102f
AD
10977set d_union_semun
10978eval $setvar
10979
10980: see how to do semctl IPC_STAT
10981case "$d_sem" in
10982$define)
10983 : see whether semctl IPC_STAT can use union semun
10984 echo " "
85ab1d1d
JH
10985 $cat > try.h <<END
10986#ifndef S_IRUSR
10987# ifdef S_IREAD
10988# define S_IRUSR S_IREAD
10989# define S_IWUSR S_IWRITE
10990# define S_IXUSR S_IEXEC
10991# else
10992# define S_IRUSR 0400
10993# define S_IWUSR 0200
10994# define S_IXUSR 0100
10995# endif
10996# define S_IRGRP (S_IRUSR>>3)
10997# define S_IWGRP (S_IWUSR>>3)
10998# define S_IXGRP (S_IXUSR>>3)
10999# define S_IROTH (S_IRUSR>>6)
11000# define S_IWOTH (S_IWUSR>>6)
11001# define S_IXOTH (S_IXUSR>>6)
11002#endif
11003#ifndef S_IRWXU
11004# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11005# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11006# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11007#endif
11008END
11009
bd89102f
AD
11010 $cat > try.c <<END
11011#include <sys/types.h>
11012#include <sys/ipc.h>
11013#include <sys/sem.h>
11014#include <sys/stat.h>
11015#include <stdio.h>
11016#include <errno.h>
85ab1d1d 11017#include "try.h"
bd89102f
AD
11018#ifndef errno
11019extern int errno;
11020#endif
11021#$d_union_semun HAS_UNION_SEMUN
11022int main() {
11023 union semun
11024#ifndef HAS_UNION_SEMUN
11025 {
11026 int val;
11027 struct semid_ds *buf;
11028 unsigned short *array;
11029 }
11030#endif
11031 arg;
11032 int sem, st;
11033
11034#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11035 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11036 if (sem > -1) {
11037 struct semid_ds argbuf;
11038 arg.buf = &argbuf;
11039# ifdef IPC_STAT
11040 st = semctl(sem, 0, IPC_STAT, arg);
11041 if (st == 0)
11042 printf("semun\n");
11043 else
11044# endif /* IPC_STAT */
11045 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11046# ifdef IPC_RMID
11047 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11048# endif /* IPC_RMID */
11049 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11050 } else
11051#endif /* IPC_PRIVATE && ... */
11052 printf("semget failed: errno = %d\n", errno);
11053 return 0;
11054}
11055END
11056 val="$undef"
11057 set try
11058 if eval $compile; then
11059 xxx=`./try`
11060 case "$xxx" in
11061 semun) val="$define" ;;
11062 esac
11063 fi
11064 $rm -f try try.c
11065 set d_semctl_semun
11066 eval $setvar
11067 case "$d_semctl_semun" in
11068 $define)
11069 echo "You can use union semun for semctl IPC_STAT." >&4
11070 also='also'
11071 ;;
11072 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11073 also=''
11074 ;;
11075 esac
11076
11077 : see whether semctl IPC_STAT can use struct semid_ds pointer
11078 $cat > try.c <<'END'
11079#include <sys/types.h>
11080#include <sys/ipc.h>
11081#include <sys/sem.h>
11082#include <sys/stat.h>
85ab1d1d 11083#include "try.h"
bd89102f
AD
11084#include <stdio.h>
11085#include <errno.h>
11086#ifndef errno
11087extern int errno;
11088#endif
11089int main() {
11090 struct semid_ds arg;
11091 int sem, st;
11092
11093#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11094 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11095 if (sem > -1) {
11096# ifdef IPC_STAT
11097 st = semctl(sem, 0, IPC_STAT, &arg);
11098 if (st == 0)
11099 printf("semid_ds\n");
11100 else
11101# endif /* IPC_STAT */
11102 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11103# ifdef IPC_RMID
11104 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11105# endif /* IPC_RMID */
11106 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11107 } else
11108#endif /* IPC_PRIVATE && ... */
11109 printf("semget failed: errno = %d\n", errno);
11110
11111 return 0;
11112}
11113END
11114 val="$undef"
11115 set try
11116 if eval $compile; then
11117 xxx=`./try`
11118 case "$xxx" in
11119 semid_ds) val="$define" ;;
11120 esac
11121 fi
11122 $rm -f try try.c
11123 set d_semctl_semid_ds
11124 eval $setvar
11125 case "$d_semctl_semid_ds" in
11126 $define)
7f3d1cf1 11127 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f 11128 ;;
7f3d1cf1 11129 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f
AD
11130 ;;
11131 esac
85ab1d1d 11132 $rm -f try.h
bd89102f
AD
11133 ;;
11134*) val="$undef"
11135
11136 # We do not have the full sem*(2) library, so assume we can not
11137 # use either.
11138
11139 set d_semctl_semun
11140 eval $setvar
11141
11142 set d_semctl_semid_ds
11143 eval $setvar
11144 ;;
11145esac
11146
2304df62
AD
11147: see if setegid exists
11148set setegid d_setegid
11149eval $inlibc
11150
11151: see if seteuid exists
11152set seteuid d_seteuid
11153eval $inlibc
11154
5ff3f7a4
GS
11155: see if setgrent exists
11156set setgrent d_setgrent
11157eval $inlibc
11158
693762b4
AD
11159: see if sethostent exists
11160set sethostent d_sethent
11161eval $inlibc
11162
a0d0e21e
LW
11163: see if setlinebuf exists
11164set setlinebuf d_setlinebuf
11165eval $inlibc
11166
2304df62
AD
11167: see if setlocale exists
11168set setlocale d_setlocale
11169eval $inlibc
a0d0e21e 11170
e5c9fcd0
AD
11171: see if setnetent exists
11172set setnetent d_setnent
11173eval $inlibc
11174
11175: see if setprotoent exists
11176set setprotoent d_setpent
11177eval $inlibc
11178
2304df62
AD
11179: see if setpgid exists
11180set setpgid d_setpgid
11181eval $inlibc
11182
2304df62
AD
11183: see if setpgrp2 exists
11184set setpgrp2 d_setpgrp2
11185eval $inlibc
11186
11187: see if setpriority exists
11188set setpriority d_setprior
11189eval $inlibc
11190
0c9177ab
JF
11191: see if setproctitle exists
11192set setproctitle d_setproctitle
11193eval $inlibc
11194
5ff3f7a4
GS
11195: see if setpwent exists
11196set setpwent d_setpwent
11197eval $inlibc
11198
2304df62
AD
11199: see if setregid exists
11200set setregid d_setregid
11201eval $inlibc
11202set setresgid d_setresgid
11203eval $inlibc
11204
11205: see if setreuid exists
11206set setreuid d_setreuid
11207eval $inlibc
11208set setresuid d_setresuid
11209eval $inlibc
11210
11211: see if setrgid exists
11212set setrgid d_setrgid
11213eval $inlibc
11214
11215: see if setruid exists
11216set setruid d_setruid
11217eval $inlibc
11218
e5c9fcd0
AD
11219: see if setservent exists
11220set setservent d_setsent
11221eval $inlibc
11222
2304df62
AD
11223: see if setsid exists
11224set setsid d_setsid
11225eval $inlibc
11226
e5c9fcd0
AD
11227: see if setvbuf exists
11228set setvbuf d_setvbuf
11229eval $inlibc
11230
760ac839
LW
11231: see if sfio.h is available
11232set sfio.h i_sfio
11233eval $inhdr
11234
11235
8ff267be 11236: see if sfio library is available
760ac839
LW
11237case "$i_sfio" in
11238$define)
11239 val=''
11240 set sfreserve val
11241 eval $inlibc
11242 ;;
11243*)
11244 val="$undef"
11245 ;;
11246esac
8ff267be 11247: Ok, but do we want to use it.
760ac839
LW
11248case "$val" in
11249$define)
11250 case "$usesfio" in
8ff267be 11251 true|$define|[yY]*) dflt='y';;
760ac839
LW
11252 *) dflt='n';;
11253 esac
8ff267be 11254 echo "$package can use the sfio library, but it is experimental."
760ac839
LW
11255 rp="You seem to have sfio available, do you want to try using it?"
11256 . ./myread
11257 case "$ans" in
8ff267be 11258 y|Y) ;;
11259 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
760ac839 11260 val="$undef"
ff0cee69 11261 : Remove sfio from list of libraries to use
11262 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11263 shift
11264 libs="$*"
11265 echo "libs = $libs" >&4
760ac839
LW
11266 ;;
11267 esac
11268 ;;
8ff267be 11269*) case "$usesfio" in
11270 true|$define|[yY]*)
11271 echo "Sorry, cannot find sfio on this machine" >&4
11272 echo "Ignoring your setting of usesfio=$usesfio" >&4
760ac839
LW
11273 ;;
11274 esac
11275 ;;
11276esac
8ff267be 11277set d_sfio
11278eval $setvar
760ac839
LW
11279case "$d_sfio" in
11280$define) usesfio='true';;
11281*) usesfio='false';;
11282esac
11283
2304df62
AD
11284: see if shmctl exists
11285set shmctl d_shmctl
11286eval $inlibc
11287
11288: see if shmget exists
11289set shmget d_shmget
11290eval $inlibc
11291
a0d0e21e
LW
11292: see if shmat exists
11293set shmat d_shmat
11294eval $inlibc
11295: see what shmat returns
11296case "$d_shmat" in
11297"$define")
11298 $cat >shmat.c <<'END'
11299#include <sys/shm.h>
11300void *shmat();
11301END
11302 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11303 shmattype='void *'
11304 else
11305 shmattype='char *'
11306 fi
11307 echo "and it returns ($shmattype)." >&4
11308 : see if a prototype for shmat is available
e50aee73
AD
11309 xxx=`./findhdr sys/shm.h`
11310 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
a0d0e21e
LW
11311 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11312 val="$define"
11313 else
11314 val="$undef"
11315 fi
11316 $rm -f shmat.[co]
11317 ;;
11318*)
11319 val="$undef"
11320 ;;
11321esac
11322set d_shmatprototype
11323eval $setvar
11324
11325: see if shmdt exists
11326set shmdt d_shmdt
11327eval $inlibc
11328
11329: see how much of the 'shm*(2)' library is present.
11330h_shm=true
11331echo " "
11332case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11333*"$undef"*) h_shm=false;;
11334esac
6087ac44
JH
11335case "$osname" in
11336freebsd)
11337 case "`ipcs 2>&1`" in
11338 "SVID shared memory"*"not configured"*)
5ff3f7a4 11339 echo "Your $osname does not have the shm*(2) configured." >&4
6087ac44
JH
11340 h_shm=false
11341 val="$undef"
11342 set shmctl d_shmctl
11343 evat $setvar
11344 set shmget d_shmget
11345 evat $setvar
11346 set shmat d_shmat
11347 evat $setvar
11348 set shmdt d_shmdt
11349 evat $setvar
11350 ;;
11351 esac
11352 ;;
11353esac
a0d0e21e
LW
11354: we could also check for sys/ipc.h ...
11355if $h_shm && $test `./findhdr sys/shm.h`; then
11356 echo "You have the full shm*(2) library." >&4
11357 val="$define"
11358else
11359 echo "You don't have the full shm*(2) library." >&4
11360 val="$undef"
11361fi
11362set d_shm
11363eval $setvar
11364
2c7991dc 11365echo " "
8ff267be 11366: see if we have sigaction
11367if set sigaction val -f d_sigaction; eval $csym; $val; then
11368 echo 'sigaction() found.' >&4
dc45a647 11369 $cat > try.c <<'EOP'
8ff267be 11370#include <stdio.h>
11371#include <sys/types.h>
11372#include <signal.h>
d674cd6d 11373int main()
8ff267be 11374{
11375 struct sigaction act, oact;
190b66db 11376 act.sa_flags = 0;
48159a0c 11377 oact.sa_handler = 0;
14e4fe40
JH
11378 /* so that act and oact are used */
11379 exit(act.sa_flags == 0 && oact.sa_handler == 0);
8ff267be 11380}
11381EOP
dc45a647
MB
11382 set try
11383 if eval $compile_ok; then
11384 val="$define"
11385 else
11386 echo "But you don't seem to have a useable struct sigaction." >&4
11387 val="$undef"
11388 fi
8ff267be 11389else
dc45a647 11390 echo 'sigaction NOT found.' >&4
8ff267be 11391 val="$undef"
11392fi
11393set d_sigaction; eval $setvar
dfe9444c 11394$rm -f try try$_o try.c
2c7991dc 11395
a5f75d66
AD
11396: see if sigsetjmp exists
11397echo " "
921b2963
JH
11398case "$d_sigsetjmp" in
11399'')
11400 $cat >try.c <<'EOP'
11401#include <setjmp.h>
11402sigjmp_buf env;
11403int set = 1;
d674cd6d 11404int main()
921b2963
JH
11405{
11406 if (sigsetjmp(env,1))
11407 exit(set);
11408 set = 0;
11409 siglongjmp(env, 1);
11410 exit(1);
11411}
11412EOP
11413 set try
11414 if eval $compile; then
11415 if ./try >/dev/null 2>&1; then
11416 echo "POSIX sigsetjmp found." >&4
11417 val="$define"
11418 else
11419 $cat >&4 <<EOM
11420Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11421I'll ignore them.
11422EOM
11423 val="$undef"
a0d0e21e 11424 fi
921b2963
JH
11425 else
11426 echo "sigsetjmp not found." >&4
11427 val="$undef"
a0d0e21e 11428 fi
921b2963
JH
11429 ;;
11430*) val="$d_sigsetjmp"
11431 case "$d_sigsetjmp" in
11432 $define) echo "POSIX sigsetjmp found." >&4;;
11433 $undef) echo "sigsetjmp not found." >&4;;
11434 esac
11435 ;;
11436esac
11437set d_sigsetjmp
11438eval $setvar
11439$rm -f try.c try
2304df62 11440
d9b3e12d
JH
11441: see if sys/stat.h is available
11442set sys/stat.h i_sysstat
11443eval $inhdr
11444
b7b35fc2 11445
2304df62
AD
11446: see if stat knows about block sizes
11447echo " "
b7b35fc2 11448echo "Checking to see if your struct stat has st_blocks field..." >&4
5ff3f7a4
GS
11449set d_statblks stat st_blocks $i_sysstat sys/stat.h
11450eval $hasfield
2304df62 11451
b7b35fc2 11452
ad27e871
JH
11453: see if this is a sys/vfs.h system
11454set sys/vfs.h i_sysvfs
11455eval $inhdr
11456
b7b35fc2 11457
ad27e871
JH
11458: see if this is a sys/statfs.h system
11459set sys/statfs.h i_sysstatfs
11460eval $inhdr
11461
11462
11463echo " "
8175356b 11464echo "Checking to see if your system supports struct statfs..." >&4
ad27e871
JH
11465set 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
11466eval $hasstruct
11467case "$d_statfs_s" in
a22e52b9
JH
11468"$define") echo "Yes, it does." ;;
11469*) echo "No, it doesn't." ;;
ad27e871
JH
11470esac
11471
11472
11473
11474: see if struct statfs knows about f_flags
11475case "$d_statfs_s" in
11476define)
11477 echo " "
8175356b 11478 echo "Checking to see if your struct statfs has f_flags field..." >&4
ad27e871
JH
11479 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
11480 eval $hasfield
11481 ;;
11482*) val="$undef"
11483 set d_statfs_f_flags
11484 eval $setvar
11485 ;;
11486esac
11487case "$d_statfs_f_flags" in
a22e52b9
JH
11488"$define") echo "Yes, it does." ;;
11489*) echo "No, it doesn't." ;;
ad27e871
JH
11490esac
11491
16d20bd9
AD
11492: see if _ptr and _cnt from stdio act std
11493echo " "
dca663ed 11494if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
16d20bd9
AD
11495 echo "(Looks like you have stdio.h from Linux.)"
11496 case "$stdio_ptr" in
c2960299
AD
11497 '') stdio_ptr='((fp)->_IO_read_ptr)'
11498 ptr_lval=$define
11499 ;;
8e07c86e 11500 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
11501 esac
11502 case "$stdio_cnt" in
c2960299
AD
11503 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11504 cnt_lval=$undef
11505 ;;
8e07c86e 11506 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
11507 esac
11508 case "$stdio_base" in
11509 '') stdio_base='((fp)->_IO_read_base)';;
11510 esac
11511 case "$stdio_bufsiz" in
c2960299 11512 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
16d20bd9
AD
11513 esac
11514else
11515 case "$stdio_ptr" in
c2960299
AD
11516 '') stdio_ptr='((fp)->_ptr)'
11517 ptr_lval=$define
11518 ;;
8e07c86e 11519 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
11520 esac
11521 case "$stdio_cnt" in
c2960299
AD
11522 '') stdio_cnt='((fp)->_cnt)'
11523 cnt_lval=$define
11524 ;;
8e07c86e 11525 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
11526 esac
11527 case "$stdio_base" in
11528 '') stdio_base='((fp)->_base)';;
11529 esac
11530 case "$stdio_bufsiz" in
11531 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11532 esac
11533fi
11534: test whether _ptr and _cnt really work
11535echo "Checking how std your stdio is..." >&4
11536$cat >try.c <<EOP
11537#include <stdio.h>
11538#define FILE_ptr(fp) $stdio_ptr
11539#define FILE_cnt(fp) $stdio_cnt
d674cd6d 11540int main() {
16d20bd9
AD
11541 FILE *fp = fopen("try.c", "r");
11542 char c = getc(fp);
11543 if (
11544 18 <= FILE_cnt(fp) &&
11545 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11546 )
11547 exit(0);
11548 exit(1);
11549}
11550EOP
11551val="$undef"
dfe9444c
AD
11552set try
11553if eval $compile; then
16d20bd9
AD
11554 if ./try; then
11555 echo "Your stdio acts pretty std."
11556 val="$define"
11557 else
11558 echo "Your stdio isn't very std."
11559 fi
11560else
11561 echo "Your stdio doesn't appear very std."
11562fi
11563$rm -f try.c try
11564set d_stdstdio
11565eval $setvar
11566
8e07c86e 11567: Can _ptr be used as an lvalue?
e50aee73
AD
11568case "$d_stdstdio$ptr_lval" in
11569$define$define) val=$define ;;
c2960299
AD
11570*) val=$undef ;;
11571esac
11572set d_stdio_ptr_lval
11573eval $setvar
11574
8e07c86e 11575: Can _cnt be used as an lvalue?
e50aee73
AD
11576case "$d_stdstdio$cnt_lval" in
11577$define$define) val=$define ;;
c2960299
AD
11578*) val=$undef ;;
11579esac
11580set d_stdio_cnt_lval
11581eval $setvar
11582
16d20bd9
AD
11583: see if _base is also standard
11584val="$undef"
11585case "$d_stdstdio" in
11586$define)
11587 $cat >try.c <<EOP
11588#include <stdio.h>
11589#define FILE_base(fp) $stdio_base
11590#define FILE_bufsiz(fp) $stdio_bufsiz
d674cd6d 11591int main() {
16d20bd9
AD
11592 FILE *fp = fopen("try.c", "r");
11593 char c = getc(fp);
11594 if (
11595 19 <= FILE_bufsiz(fp) &&
11596 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11597 )
11598 exit(0);
11599 exit(1);
11600}
11601EOP
dfe9444c
AD
11602 set try
11603 if eval $compile; then
16d20bd9 11604 if ./try; then
8ff267be 11605 echo "And its _base field acts std."
16d20bd9
AD
11606 val="$define"
11607 else
11608 echo "But its _base field isn't std."
11609 fi
11610 else
11611 echo "However, it seems to be lacking the _base field."
11612 fi
11613 $rm -f try.c try
11614 ;;
11615esac
11616set d_stdiobase
11617eval $setvar
11618
ed39a0f2
JH
11619$cat >&4 <<EOM
11620Checking how to access stdio streams by file descriptor number...
11621EOM
11622case "$stdio_stream_array" in
11623'') $cat >try.c <<EOCP
11624#include <stdio.h>
11625int main() {
11626 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11627 printf("yes\n");
11628}
11629EOCP
11630 for s in _iob __iob __sF
11631 do
11632 set try -DSTDIO_STREAM_ARRAY=$s
11633 if eval $compile; then
11634 case "`./try$exe_ext`" in
11635 yes) stdio_stream_array=$s; break ;;
11636 esac
11637 fi
11638 done
11639 $rm -f try.* try$exe_ext
11640esac
11641case "$stdio_stream_array" in
11642'') $cat >&4 <<EOM
11643I can't figure out how to access stdio streams by file descriptor number.
11644EOM
11645 d_stdio_stream_array="$undef"
11646 ;;
11647*) $cat >&4 <<EOM
11648You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11649EOM
11650 d_stdio_stream_array="$define"
11651 ;;
11652esac
11653
a0d0e21e
LW
11654: see if strcoll exists
11655set strcoll d_strcoll
11656eval $inlibc
2304df62
AD
11657
11658: check for structure copying
11659echo " "
11660echo "Checking to see if your C compiler can copy structs..." >&4
11661$cat >try.c <<'EOCP'
5a411a32 11662int main()
2304df62
AD
11663{
11664 struct blurfl {
11665 int dyick;
11666 } foo, bar;
11667
11668 foo = bar;
11669}
11670EOCP
11671if $cc -c try.c >/dev/null 2>&1 ; then
11672 val="$define"
11673 echo "Yup, it can."
11674else
11675 val="$undef"
11676 echo "Nope, it can't."
11677fi
11678set d_strctcpy
11679eval $setvar
11680$rm -f try.*
11681
11682: see if strerror and/or sys_errlist[] exist
11683echo " "
28e8609d
JH
11684if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11685 if set strerror val -f d_strerror; eval $csym; $val; then
5ff3f7a4
GS
11686 echo 'strerror() found.' >&4
11687 d_strerror="$define"
11688 d_strerrm='strerror(e)'
11689 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11690 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11691 d_syserrlst="$define"
11692 else
11693 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11694 d_syserrlst="$undef"
11695 fi
28e8609d 11696 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5ff3f7a4
GS
11697 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11698 echo 'strerror() found in string header.' >&4
11699 d_strerror="$define"
11700 d_strerrm='strerror(e)'
11701 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11702 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11703 d_syserrlst="$define"
11704 else
11705 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11706 d_syserrlst="$undef"
11707 fi
28e8609d 11708 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5ff3f7a4
GS
11709 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11710 d_strerror="$undef"
11711 d_syserrlst="$define"
11712 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
28e8609d 11713 else
5ff3f7a4
GS
11714 echo 'strerror() and sys_errlist[] NOT found.' >&4
11715 d_strerror="$undef"
11716 d_syserrlst="$undef"
11717 d_strerrm='"unknown"'
28e8609d 11718 fi
2304df62
AD
11719fi
11720
a89d8a78
DH
11721: see if strtod exists
11722set strtod d_strtod
11723eval $inlibc
11724
11725: see if strtol exists
11726set strtol d_strtol
11727eval $inlibc
11728
ff935051
JH
11729: see if strtold exists
11730set strtold d_strtold
11731eval $inlibc
11732
76d49b1c
JH
11733: see if strtoll exists
11734set strtoll d_strtoll
11735eval $inlibc
11736
358a0a84
JH
11737case "$d_longlong-$d_strtoll" in
11738"$define-$define")
11739 $cat <<EOM
11740Checking whether your strtoll() works okay...
11741EOM
11742 $cat >try.c <<'EOCP'
11743#include <errno.h>
11744#ifdef __hpux
11745#define strtoll __strtoll
11746#endif
11747#include <stdio.h>
11748extern long long int strtoll(char *s, char **, int);
11749static int bad = 0;
11750int check(char *s, long long ell, int een) {
11751 long long gll;
11752 errno = 0;
11753 gll = strtoll(s, 0, 10);
11754 if (!((gll == ell) && (errno == een)))
11755 bad++;
11756}
11757int main() {
11758 check(" 1", 1LL, 0);
11759 check(" 0", 0LL, 0);
11760 check("-1", -1LL, 0);
11761 check("-9223372036854775808", -9223372036854775808LL, 0);
11762 check("-9223372036854775808", -9223372036854775808LL, 0);
11763 check(" 9223372036854775807", 9223372036854775807LL, 0);
11764 check("-9223372036854775808", -9223372036854775808LL, 0);
11765 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11766 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11767 if (!bad)
11768 printf("ok\n");
11769}
11770EOCP
11771 set try
11772 if eval $compile; then
11773 case "`./try`" in
11774 ok) echo "Your strtoll() seems to be working okay." ;;
11775 *) cat <<EOM >&4
11776Your strtoll() doesn't seem to be working okay.
11777EOM
11778 d_strtoll="$undef"
11779 ;;
11780 esac
11781 fi
11782 ;;
11783esac
11784
a89d8a78
DH
11785: see if strtoul exists
11786set strtoul d_strtoul
11787eval $inlibc
11788
cf2093f6
JH
11789: see if strtoull exists
11790set strtoull d_strtoull
11791eval $inlibc
11792
358a0a84
JH
11793case "$d_longlong-$d_strtoull" in
11794"$define-$define")
11795 $cat <<EOM
11796Checking whether your strtoull() works okay...
11797EOM
11798 $cat >try.c <<'EOCP'
11799#include <errno.h>
11800#ifdef __hpux
11801#define strtoull __strtoull
11802#endif
11803#include <stdio.h>
11804extern unsigned long long int strtoull(char *s, char **, int);
11805static int bad = 0;
11806int check(char *s, long long eull, int een) {
11807 long long gull;
11808 errno = 0;
11809 gull = strtoull(s, 0, 10);
11810 if (!((gull == eull) && (errno == een)))
11811 bad++;
11812}
11813int main() {
11814 check(" 1", 1LL, 0);
11815 check(" 0", 0LL, 0);
11816 check("18446744073709551615", 18446744073709551615ULL, 0);
11817 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11818 if (!bad)
11819 printf("ok\n");
11820}
11821EOCP
11822 set try
11823 if eval $compile; then
11824 case "`./try`" in
11825 ok) echo "Your strtoull() seems to be working okay." ;;
11826 *) cat <<EOM >&4
11827Your strtoull() doesn't seem to be working okay.
11828EOM
11829 d_strtoull="$undef"
11830 ;;
11831 esac
11832 fi
11833 ;;
11834esac
11835
ff935051
JH
11836: see if strtouq exists
11837set strtouq d_strtouq
11838eval $inlibc
11839
a0d0e21e
LW
11840: see if strxfrm exists
11841set strxfrm d_strxfrm
11842eval $inlibc
11843
8175356b
JH
11844: see if symlink exists
11845set symlink d_symlink
11846eval $inlibc
11847
11848: see if syscall exists
11849set syscall d_syscall
11850eval $inlibc
11851
11852: see if sysconf exists
11853set sysconf d_sysconf
11854eval $inlibc
11855
11856: see if system exists
11857set system d_system
11858eval $inlibc
11859
11860: see if tcgetpgrp exists
11861set tcgetpgrp d_tcgetpgrp
11862eval $inlibc
11863
11864: see if tcsetpgrp exists
11865set tcsetpgrp d_tcsetpgrp
11866eval $inlibc
11867
11868: see if prototype for telldir is available
11869echo " "
11870set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11871eval $hasproto
dc45a647 11872
2c7991dc 11873: see if this is a sys/times.h system
11874set sys/times.h i_systimes
11875eval $inhdr
4633a7c4 11876
2c7991dc 11877: see if times exists
4633a7c4 11878echo " "
2c7991dc 11879if set times val -f d_times; eval $csym; $val; then
11880 echo 'times() found.' >&4
11881 d_times="$define"
11882 inc=''
11883 case "$i_systimes" in
11884 "$define") inc='sys/times.h';;
11885 esac
dc45a647 11886 rp="What is the type returned by times() on this system?"
2c7991dc 11887 set clock_t clocktype long stdio.h sys/types.h $inc
dc45a647 11888 eval $typedef_ask
2c7991dc 11889else
11890 echo 'times() NOT found, hope that will do.' >&4
11891 d_times="$undef"
11892 clocktype='int'
11893fi
2304df62 11894
2c7991dc 11895: see if truncate exists
11896set truncate d_truncate
11897eval $inlibc
2304df62 11898
2c7991dc 11899: see if tzname[] exists
11900echo " "
11901if set tzname val -a d_tzname; eval $csym; $val; then
11902 val="$define"
11903 echo 'tzname[] found.' >&4
11904else
11905 val="$undef"
11906 echo 'tzname[] NOT found.' >&4
11907fi
11908set d_tzname
11909eval $setvar
11910
11911: see if umask exists
11912set umask d_umask
11913eval $inlibc
85e6fe83 11914
0545a864
JH
11915: see if ustat exists
11916set ustat d_ustat
11917eval $inlibc
11918
4633a7c4
LW
11919: backward compatibility for d_hvfork
11920if test X$d_hvfork != X; then
11921 d_vfork="$d_hvfork"
11922 d_hvfork=''
11923fi
11924: see if there is a vfork
11925val=''
11926set vfork val
11927eval $inlibc
ecfc5424 11928
4633a7c4
LW
11929: Ok, but do we want to use it. vfork is reportedly unreliable in
11930: perl on Solaris 2.x, and probably elsewhere.
11931case "$val" in
11932$define)
16d20bd9 11933 echo " "
4633a7c4
LW
11934 case "$usevfork" in
11935 false) dflt='n';;
11936 *) dflt='y';;
11937 esac
f10488a3
JH
11938 cat <<'EOM'
11939
11940Perl can only use a vfork() that doesn't suffer from strict
11941restrictions on calling functions or modifying global data in
11942the child. For example, glibc-2.1 contains such a vfork()
11943that is unsuitable. If your system provides a proper fork()
11944call, chances are that you do NOT want perl to use vfork().
11945
11946EOM
11947 rp="Do you still want to use vfork()?"
4633a7c4
LW
11948 . ./myread
11949 case "$ans" in
11950 y|Y) ;;
11951 *)
11952 echo "Ok, we won't use vfork()."
11953 val="$undef"
11954 ;;
11955 esac
ecfc5424
AD
11956 ;;
11957esac
4633a7c4
LW
11958set d_vfork
11959eval $setvar
11960case "$d_vfork" in
11961$define) usevfork='true';;
11962*) usevfork='false';;
11963esac
ecfc5424 11964
4633a7c4
LW
11965: see if this is an sysdir system
11966set sys/dir.h i_sysdir
11967eval $inhdr
11968
11969: see if this is an sysndir system
11970set sys/ndir.h i_sysndir
11971eval $inhdr
11972
11973: see if closedir exists
11974set closedir d_closedir
11975eval $inlibc
11976
11977case "$d_closedir" in
11978"$define")
16d20bd9 11979 echo " "
4633a7c4
LW
11980 echo "Checking whether closedir() returns a status..." >&4
11981 cat > closedir.c <<EOM
11982#$i_dirent I_DIRENT /**/
11983#$i_sysdir I_SYS_DIR /**/
11984#$i_sysndir I_SYS_NDIR /**/
bfb7748a 11985#$i_systypes I_SYS_TYPES /**/
4633a7c4 11986
bfb7748a
AD
11987#if defined(I_SYS_TYPES)
11988#include <sys/types.h>
11989#endif
4633a7c4
LW
11990#if defined(I_DIRENT)
11991#include <dirent.h>
11992#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11993#include <sys/dir.h>
4aa0a1f7 11994#endif
4633a7c4
LW
11995#else
11996#ifdef I_SYS_NDIR
11997#include <sys/ndir.h>
11998#else
11999#ifdef I_SYS_DIR
12000#ifdef hp9000s500
12001#include <ndir.h> /* may be wrong in the future */
12002#else
12003#include <sys/dir.h>
12004#endif
12005#endif
12006#endif
12007#endif
12008int main() { return closedir(opendir(".")); }
12009EOM
dfe9444c 12010 set closedir
dc45a647 12011 if eval $compile_ok; then
4633a7c4
LW
12012 if ./closedir > /dev/null 2>&1 ; then
12013 echo "Yes, it does."
12014 val="$undef"
ecfc5424 12015 else
4633a7c4
LW
12016 echo "No, it doesn't."
12017 val="$define"
ecfc5424
AD
12018 fi
12019 else
4633a7c4
LW
12020 echo "(I can't seem to compile the test program--assuming it doesn't)"
12021 val="$define"
ecfc5424 12022 fi
ecfc5424 12023 ;;
4633a7c4
LW
12024*)
12025 val="$undef";
ecfc5424
AD
12026 ;;
12027esac
4633a7c4
LW
12028set d_void_closedir
12029eval $setvar
12030$rm -f closedir*
12031: check for volatile keyword
ecfc5424 12032echo " "
4633a7c4
LW
12033echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12034$cat >try.c <<'EOCP'
5a411a32 12035int main()
4633a7c4
LW
12036{
12037 typedef struct _goo_struct goo_struct;
12038 goo_struct * volatile goo = ((goo_struct *)0);
12039 struct _goo_struct {
12040 long long_int;
12041 int reg_int;
12042 char char_var;
12043 };
12044 typedef unsigned short foo_t;
12045 char *volatile foo;
12046 volatile int bar;
12047 volatile foo_t blech;
12048 foo = foo;
a0d0e21e
LW
12049}
12050EOCP
4633a7c4
LW
12051if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12052 val="$define"
12053 echo "Yup, it does."
12054else
12055 val="$undef"
12056 echo "Nope, it doesn't."
12057fi
12058set d_volatile
12059eval $setvar
12060$rm -f try.*
a0d0e21e 12061
4633a7c4
LW
12062: see if there is a wait4
12063set wait4 d_wait4
8e07c86e
AD
12064eval $inlibc
12065
4633a7c4
LW
12066: see if waitpid exists
12067set waitpid d_waitpid
12068eval $inlibc
12069
12070: see if wcstombs exists
12071set wcstombs d_wcstombs
12072eval $inlibc
12073
12074: see if wctomb exists
12075set wctomb d_wctomb
12076eval $inlibc
12077
12078: preserve RCS keywords in files with variable substitution, grrr
12079Date='$Date'
12080Id='$Id'
12081Log='$Log'
12082RCSfile='$RCSfile'
12083Revision='$Revision'
12084
ca8cfa54
JH
12085case "$crosscompile" in
12086''|[nN]*) crosscompile="$undef" ;;
12087esac
12088
12089case "$osname" in
f556e5b9 12090next|rhapsody|darwin) multiarch="$define" ;;
ca8cfa54
JH
12091esac
12092case "$multiarch" in
12093''|[nN]*) multiarch="$undef" ;;
12094esac
12095
4633a7c4
LW
12096: check for alignment requirements
12097echo " "
68c15b6f
HM
12098case "$crosscompile$multiarch" in
12099*$define*)
ca8cfa54
JH
12100 $cat <<EOM
12101You seem to be either cross-compiling or doing a multiarchitecture build,
12102skipping the memory alignment check.
68c15b6f
HM
12103
12104EOM
12105 case "$alignbytes" in
12106 '') alignbytes=8 ;;
12107 esac
12108 ;;
12109*)
12110 case "$alignbytes" in
12111 '') echo "Checking alignment constraints..." >&4
87b71857
JH
12112 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12113 $cat >try.c <<'EOCP'
12114typedef long double NV;
12115EOCP
12116 else
12117 $cat >try.c <<'EOCP'
12118typedef double NV;
12119EOCP
12120 fi
12121 $cat >>try.c <<'EOCP'
14e4fe40 12122#include <stdio.h>
4633a7c4
LW
12123struct foobar {
12124 char foo;
87b71857 12125 NV bar;
732c9516 12126} try_algn;
d674cd6d 12127int main()
4633a7c4 12128{
213c275f
JH
12129 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12130 return(0);
4633a7c4
LW
12131}
12132EOCP
68c15b6f
HM
12133 set try
12134 if eval $compile_ok; then
12135 dflt=`./try`
12136 else
12137 dflt='8'
12138 echo "(I can't seem to compile the test program...)"
12139 fi
12140 ;;
12141 *) dflt="$alignbytes"
12142 ;;
12143 esac
12144 rp="Doubles must be aligned on a how-many-byte boundary?"
12145 . ./myread
12146 alignbytes="$ans"
12147 $rm -f try.c try
8e07c86e 12148 ;;
ecfc5424 12149esac
68c15b6f 12150
85e6fe83 12151
49c10eea
JH
12152: set the base revision
12153baserev=5.0
12154
4633a7c4 12155: check for ordering of bytes in a long
68c15b6f
HM
12156echo " "
12157case "$crosscompile$multiarch" in
12158*$define*)
12159 $cat <<EOM
ca8cfa54
JH
12160You seem to be either cross-compiling or doing a multiarchitecture build,
12161skipping the byteorder check.
68c15b6f
HM
12162
12163EOM
d9b3e12d 12164 byteorder='0xffff'
68c15b6f
HM
12165 ;;
12166*)
12167 case "$byteorder" in
12168 '')
12169 $cat <<'EOM'
4633a7c4
LW
12170In the following, larger digits indicate more significance. A big-endian
12171machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12172little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
d9b3e12d
JH
12173machines may have weird orders like 3412. A Cray will report 87654321,
12174an Alpha will report 12345678. If the test program works the default is
12175probably right.
4633a7c4
LW
12176I'm now running the test program...
12177EOM
68c15b6f 12178 $cat >try.c <<'EOCP'
4633a7c4 12179#include <stdio.h>
d674cd6d 12180int main()
4633a7c4
LW
12181{
12182 int i;
12183 union {
12184 unsigned long l;
12185 char c[sizeof(long)];
12186 } u;
12187
12188 if (sizeof(long) > 4)
12189 u.l = (0x08070605L << 32) | 0x04030201L;
12190 else
12191 u.l = 0x04030201L;
12192 for (i = 0; i < sizeof(long); i++)
12193 printf("%c", u.c[i]+'0');
12194 printf("\n");
12195 exit(0);
12196}
12197EOCP
68c15b6f
HM
12198 xxx_prompt=y
12199 set try
12200 if eval $compile && ./try > /dev/null; then
12201 dflt=`./try`
12202 case "$dflt" in
12203 [1-4][1-4][1-4][1-4]|12345678|87654321)
12204 echo "(The test program ran ok.)"
12205 echo "byteorder=$dflt"
12206 xxx_prompt=n
4633a7c4 12207 ;;
68c15b6f
HM
12208 ????|????????) echo "(The test program ran ok.)" ;;
12209 *) echo "(The test program didn't run right for some reason.)" ;;
12210 esac
12211 else
12212 dflt='4321'
12213 cat <<'EOM'
4633a7c4
LW
12214(I can't seem to compile the test program. Guessing big-endian...)
12215EOM
68c15b6f
HM
12216 fi
12217 case "$xxx_prompt" in
12218 y)
12219 rp="What is the order of bytes in a long?"
12220 . ./myread
12221 byteorder="$ans"
12222 ;;
12223 *) byteorder=$dflt
12224 ;;
12225 esac
ecfc5424
AD
12226 ;;
12227 esac
68c15b6f 12228 $rm -f try.c try
ecfc5424
AD
12229 ;;
12230esac
68c15b6f 12231
85e6fe83 12232
4633a7c4 12233: how do we catenate cpp tokens here?
2304df62 12234echo " "
4633a7c4
LW
12235echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12236$cat >cpp_stuff.c <<'EOCP'
12237#define RCAT(a,b)a/**/b
12238#define ACAT(a,b)a ## b
12239RCAT(Rei,ser)
12240ACAT(Cir,cus)
12241EOCP
12242$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12243if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 12244 echo "Oh! Smells like ANSI's been here." >&4
4633a7c4
LW
12245 echo "We can catify or stringify, separately or together!"
12246 cpp_stuff=42
12247elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 12248 echo "Ah, yes! The good old days!" >&4
4633a7c4
LW
12249 echo "However, in the good old days we don't know how to stringify and"
12250 echo "catify at the same time."
12251 cpp_stuff=1
12252else
12253 $cat >&4 <<EOM
12254Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12255to have to edit the values of CAT[2-5] in config.h...
a0d0e21e 12256EOM
4633a7c4
LW
12257 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12258fi
12259$rm -f cpp_stuff.*
a0d0e21e 12260
4633a7c4
LW
12261: see if this is a db.h system
12262set db.h i_db
12263eval $inhdr
12264
12265case "$i_db" in
68dc0745 12266$define)
1f70e1ea 12267 : Check db version.
68dc0745 12268 echo " "
12269 echo "Checking Berkeley DB version ..." >&4
12270 $cat >try.c <<EOCP
12271#$d_const HASCONST
12272#ifndef HASCONST
12273#define const
12274#endif
12275#include <sys/types.h>
12276#include <stdio.h>
12277#include <db.h>
d674cd6d 12278int main()
68dc0745 12279{
1f70e1ea
PM
12280#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12281 int Major, Minor, Patch ;
ee02776e 12282 unsigned long Version ;
1f70e1ea
PM
12283 (void)db_version(&Major, &Minor, &Patch) ;
12284 printf("You have Berkeley DB Version 2 or greater\n");
12285
12286 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12287 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12288 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12289 Major, Minor, Patch) ;
12290
12291 /* check that db.h & libdb are compatible */
12292 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12293 printf("db.h and libdb are incompatible\n") ;
12294 exit(3);
12295 }
12296
12297 printf("db.h and libdb are compatible\n") ;
ee02776e
PM
12298
12299 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
693762b4 12300 + DB_VERSION_PATCH ;
ee02776e
PM
12301
12302 /* needs to be >= 2.3.4 */
12303 if (Version < 2003004) {
693762b4 12304 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
ee02776e 12305 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
1f70e1ea
PM
12306 exit(2);
12307 }
12308
12309 exit(0);
68dc0745 12310#else
6a1b87e5 12311#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
1f70e1ea 12312 printf("You have Berkeley DB Version 1\n");
6a1b87e5
JH
12313 exit(0); /* DB version < 2: the coast is clear. */
12314#else
12315 exit(1); /* <db.h> not Berkeley DB? */
12316#endif
68dc0745 12317#endif
12318}
12319EOCP
dfe9444c 12320 set try
cf21f3c6 12321 if eval $compile_ok && ./try; then
1f70e1ea 12322 echo 'Looks OK.' >&4
68dc0745 12323 else
c90c0ff4 12324 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
68dc0745 12325 i_db=$undef
12326 case " $libs " in
12327 *"-ldb "*)
12328 : Remove db from list of libraries to use
12329 echo "Removing unusable -ldb from library list" >&4
12330 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12331 shift
12332 libs="$*"
12333 echo "libs = $libs" >&4
12334 ;;
12335 esac
12336 fi
12337 $rm -f try.*
12338 ;;
12339esac
12340
12341case "$i_db" in
4633a7c4 12342define)
dc45a647
MB
12343 : Check the return type needed for hash
12344 echo " "
12345 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12346 $cat >try.c <<EOCP
12347#$d_const HASCONST
12348#ifndef HASCONST
12349#define const
12350#endif
12351#include <sys/types.h>
12352#include <db.h>
12353
12354#ifndef DB_VERSION_MAJOR
12355u_int32_t hash_cb (ptr, size)
12356const void *ptr;
12357size_t size;
12358{
12359}
12360HASHINFO info;
d674cd6d 12361int main()
dc45a647
MB
12362{
12363 info.hash = hash_cb;
12364}
12365#endif
12366EOCP
12367 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12368 if $contains warning try.out >>/dev/null 2>&1 ; then
12369 db_hashtype='int'
12370 else
12371 db_hashtype='u_int32_t'
12372 fi
12373 else
12374 : XXX Maybe we should just give up here.
12375 db_hashtype=u_int32_t
12376 $cat try.out >&4
12377 echo "Help: I can't seem to compile the db test program." >&4
12378 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12379 fi
12380 $rm -f try.*
12381 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12382 ;;
12383*) db_hashtype=u_int32_t
12384 ;;
12385esac
12386case "$i_db" in
12387define)
4633a7c4
LW
12388 : Check the return type needed for prefix
12389 echo " "
12390 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12391 cat >try.c <<EOCP
12392#$d_const HASCONST
12393#ifndef HASCONST
12394#define const
12395#endif
12396#include <sys/types.h>
12397#include <db.h>
1f70e1ea
PM
12398
12399#ifndef DB_VERSION_MAJOR
4633a7c4
LW
12400size_t prefix_cb (key1, key2)
12401const DBT *key1;
12402const DBT *key2;
12403{
12404}
12405BTREEINFO info;
d674cd6d 12406int main()
4633a7c4
LW
12407{
12408 info.prefix = prefix_cb;
12409}
1f70e1ea 12410#endif
4633a7c4
LW
12411EOCP
12412 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12413 if $contains warning try.out >>/dev/null 2>&1 ; then
12414 db_prefixtype='int'
12415 else
12416 db_prefixtype='size_t'
12417 fi
12418 else
68dc0745 12419 db_prefixtype='size_t'
12420 : XXX Maybe we should just give up here.
dc45a647 12421 $cat try.out >&4
68dc0745 12422 echo "Help: I can't seem to compile the db test program." >&4
12423 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
4633a7c4
LW
12424 fi
12425 $rm -f try.*
12426 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
a0d0e21e 12427 ;;
68dc0745 12428*) db_prefixtype='size_t'
4633a7c4
LW
12429 ;;
12430esac
a0d0e21e 12431
4633a7c4
LW
12432: check for void type
12433echo " "
12434echo "Checking to see how well your C compiler groks the void type..." >&4
4633a7c4
LW
12435case "$voidflags" in
12436'')
12437 $cat >try.c <<'EOCP'
12438#if TRY & 1
760ac839 12439void sub() {
4633a7c4 12440#else
760ac839 12441sub() {
4633a7c4
LW
12442#endif
12443 extern void moo(); /* function returning void */
12444 void (*goo)(); /* ptr to func returning void */
12445#if TRY & 8
12446 void *hue; /* generic ptr */
12447#endif
12448#if TRY & 2
12449 void (*foo[10])();
12450#endif
a0d0e21e 12451
4633a7c4
LW
12452#if TRY & 4
12453 if(goo == moo) {
12454 exit(0);
12455 }
12456#endif
12457 exit(0);
12458}
d674cd6d 12459int main() { sub(); }
4633a7c4 12460EOCP
760ac839 12461 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4633a7c4 12462 voidflags=$defvoidused
bfb7748a 12463 echo "Good. It appears to support void to the level $package wants.">&4
4633a7c4
LW
12464 if $contains warning .out >/dev/null 2>&1; then
12465 echo "However, you might get some warnings that look like this:"
12466 $cat .out
12467 fi
12468 else
12469echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
760ac839 12470 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4633a7c4 12471 echo "It supports 1..."
760ac839 12472 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4633a7c4 12473 echo "It also supports 2..."
760ac839 12474 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4633a7c4
LW
12475 voidflags=7
12476 echo "And it supports 4 but not 8 definitely."
12477 else
12478 echo "It doesn't support 4..."
760ac839 12479 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4633a7c4
LW
12480 voidflags=11
12481 echo "But it supports 8."
12482 else
12483 voidflags=3
12484 echo "Neither does it support 8."
12485 fi
12486 fi
12487 else
12488 echo "It does not support 2..."
760ac839 12489 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4633a7c4
LW
12490 voidflags=13
12491 echo "But it supports 4 and 8."
12492 else
760ac839 12493 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4633a7c4
LW
12494 voidflags=5
12495 echo "And it supports 4 but has not heard about 8."
12496 else
12497 echo "However it supports 8 but not 4."
12498 fi
12499 fi
12500 fi
12501 else
12502 echo "There is no support at all for void."
12503 voidflags=0
12504 fi
12505 fi
12506esac
4633a7c4 12507case "$voidflags" in
2c7991dc 12508"$defvoidused") ;;
bfb7748a
AD
12509*) $cat >&4 <<'EOM'
12510 Support flag bits are:
12511 1: basic void declarations.
12512 2: arrays of pointers to functions returning void.
12513 4: operations between pointers to and addresses of void functions.
12514 8: generic void pointers.
12515EOM
2c7991dc 12516 dflt="$voidflags";
4633a7c4 12517 rp="Your void support flags add up to what?"
a0d0e21e 12518 . ./myread
4633a7c4 12519 voidflags="$ans"
a0d0e21e
LW
12520 ;;
12521esac
4633a7c4 12522$rm -f try.* .out
a0d0e21e 12523
85ab1d1d
JH
12524
12525: How can we generate normalized random numbers ?
693762b4 12526echo " "
de4597cb 12527echo "Looking for a random number function..." >&4
85ab1d1d 12528case "$randfunc" in
693762b4 12529'')
85ab1d1d
JH
12530 if set drand48 val -f; eval $csym; $val; then
12531 dflt="drand48"
12532 echo "Good, found drand48()." >&4
12533 elif set random val -f; eval $csym; $val; then
12534 dflt="random"
12535 echo "OK, found random()." >&4
12536 else
12537 dflt="rand"
12538 echo "Yick, looks like I have to use rand()." >&4
12539 fi
12540 echo " "
12541 ;;
12542*)
12543 dflt="$randfunc"
12544 ;;
12545esac
12546cont=true
12547
12548case "$ccflags" in
12549*-Dmy_rand=*|*-Dmy_srand=*)
12550 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12551 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12552 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12553 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12554 ;;
12555esac
12556
12557while $test "$cont"; do
12558 rp="Use which function to generate random numbers?"
12559 . ./myread
12560 if $test "$ans" = "$dflt"; then
12561 : null
12562 else
12563 randbits=''
12564 fi
12565 randfunc="$ans"
12566 if set $ans val -f; eval $csym; $val; then
12567 cont=''
12568 else
ef4af2be
JH
12569 dflt=y
12570 rp="I cannot find function $ans. Use that name anyway?"
85ab1d1d
JH
12571 . ./myread
12572 dflt=rand
12573 case "$ans" in
12574 [yY]*) cont='';;
12575 esac
12576 fi
12577 case "$cont" in
12578 '')
12579 case "$randfunc" in
12580 drand48)
12581 drand01="drand48()"
12582 seedfunc="srand48"
12583 randbits=48
12584 randseedtype=long
12585 ;;
12586 rand|random)
12587 case "$randbits" in
12588 '')
12589echo "Checking to see how many bits your $randfunc() function produces..." >&4
12590 $cat >try.c <<EOCP
12591#$i_unistd I_UNISTD
12592#$i_stdlib I_STDLIB
693762b4 12593#include <stdio.h>
85ab1d1d
JH
12594#ifdef I_UNISTD
12595# include <unistd.h>
12596#endif
12597#ifdef I_STDLIB
12598# include <stdlib.h>
12599#endif
d674cd6d 12600int main()
693762b4 12601{
85ab1d1d
JH
12602 register int i;
12603 register unsigned long tmp;
12604 register unsigned long max = 0L;
12605
12606 for (i = 1000; i; i--) {
12607 tmp = (unsigned long) $randfunc();
12608 if (tmp > max) max = tmp;
12609 }
12610 for (i = 0; max; i++)
12611 max /= 2;
12612 printf("%d\n",i);
693762b4
AD
12613}
12614EOCP
85ab1d1d
JH
12615 set try
12616 if eval $compile_ok; then
12617 dflt=`try`
12618 else
12619 dflt='?'
12620 echo "(I can't seem to compile the test program...)"
12621 fi
12622 ;;
12623 *)
12624 dflt="$randbits"
12625 ;;
12626 esac
12627 rp="How many bits does your $randfunc() function produce?"
12628 . ./myread
12629 randbits="$ans"
12630 $rm -f try.c try
12631 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12632 seedfunc="s$randfunc"
12633 randseedtype=unsigned
12634 ;;
12635 *)
12636 dflt="31"
12637 rp="How many bits does your $randfunc() function produce?"
12638 . ./myread
12639 randbits="$ans"
12640 seedfunc="s$randfunc"
12641 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12642 if set $seedfunc val -f; eval $csym; $val; then
12643 echo "(Using $seedfunc() to seed random generator)"
12644 else
12645 echo "(Warning: no $seedfunc() to seed random generator)"
12646 seedfunc=rand
12647 fi
12648 randseedtype=unsigned
12649 ;;
12650 esac
12651 ;;
12652 esac
12653done
693762b4 12654
5ff3f7a4
GS
12655echo " "
12656echo "Determining whether or not we are on an EBCDIC system..." >&4
12657$cat >tebcdic.c <<'EOM'
12658int main()
12659{
12660 if ('M'==0xd4) return 0;
12661 return 1;
12662}
12663EOM
12664
12665val=$undef
12666set tebcdic
12667if eval $compile_ok; then
12668 if ./tebcdic; then
12669 echo "You have EBCDIC." >&4
12670 val="$define"
12671 else
57def98f 12672 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
5ff3f7a4
GS
12673 fi
12674else
5cc3184f 12675 echo "I'm unable to compile the test program." >&4
5ff3f7a4
GS
12676 echo "I'll assume ASCII or some ISO Latin." >&4
12677fi
12678$rm -f tebcdic.c tebcdic
12679set ebcdic
12680eval $setvar
12681
29209bc5 12682echo " "
767df6a1
JH
12683$cat >&4 <<EOM
12684Checking how to flush all pending stdio output...
66fe083f 12685EOM
d2201af2
AD
12686# I only know how to find the first 32 possibly open files on SunOS.
12687# See also hints/sunos_4_1.sh and util.c --AD
12688case "$osname" in
12689sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12690esac
12691$cat >>try.c <<EOCP
66fe083f 12692#include <stdio.h>
d2201af2 12693#$i_unistd I_UNISTD
767df6a1 12694#ifdef I_UNISTD
a32a45b6 12695# include <unistd.h>
767df6a1
JH
12696#endif
12697#$d_sysconf HAS_SYSCONF
a71cd7cd
JH
12698#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12699#ifdef HAS_STDIO_STREAM_ARRAY
12700# define STDIO_STREAM_ARRAY $stdio_stream_array
12701#endif
66fe083f
JH
12702int main() {
12703 FILE* p = fopen("try.out", "w");
0f27ced1 12704#ifdef TRY_FPUTC
66fe083f 12705 fputc('x', p);
0f27ced1
JH
12706#else
12707# ifdef TRY_FPRINTF
12708 fprintf(p, "x");
12709# endif
12710#endif
767df6a1 12711#ifdef TRY_FFLUSH_NULL
66fe083f 12712 fflush(NULL);
767df6a1
JH
12713#endif
12714#ifdef TRY_FFLUSH_ALL
12715 {
12716 long open_max = -1;
d2201af2
AD
12717# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12718 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
767df6a1 12719# else
d2201af2
AD
12720# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12721 open_max = sysconf(_SC_OPEN_MAX);
767df6a1 12722# else
4b257aef 12723# ifdef FOPEN_MAX
d2201af2 12724 open_max = FOPEN_MAX;
767df6a1 12725# else
d2201af2
AD
12726# ifdef OPEN_MAX
12727 open_max = OPEN_MAX;
12728# else
12729# ifdef _NFILE
12730 open_max = _NFILE;
12731# endif
767df6a1
JH
12732# endif
12733# endif
12734# endif
4b257aef 12735# endif
ed39a0f2 12736# ifdef HAS_STDIO_STREAM_ARRAY
767df6a1
JH
12737 if (open_max > 0) {
12738 long i;
12739 for (i = 0; i < open_max; i++)
d2201af2
AD
12740 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12741 STDIO_STREAM_ARRAY[i]._file < open_max &&
12742 STDIO_STREAM_ARRAY[i]._flag)
12743 fflush(&STDIO_STREAM_ARRAY[i]);
767df6a1
JH
12744 }
12745 }
ed39a0f2 12746# endif
767df6a1
JH
12747#endif
12748 _exit(42);
66fe083f
JH
12749}
12750EOCP
0f27ced1
JH
12751: first we have to find out how _not_ to flush
12752if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12753 output=''
12754 set try -DTRY_FPUTC
6626660c 12755 if eval $compile; then
4b257aef 12756 $rm -f try.out
0f27ced1
JH
12757 ./try$exe_ext 2>/dev/null
12758 if $test ! -s try.out -a "X$?" = X42; then
12759 output=-DTRY_FPUTC
12760 fi
12761 fi
12762 case "$output" in
12763 '')
12764 set try -DTRY_FPRINTF
12765 $rm -f try.out
6626660c 12766 if eval $compile; then
4b257aef 12767 $rm -f try.out
0f27ced1
JH
12768 ./try$exe_ext 2>/dev/null
12769 if $test ! -s try.out -a "X$?" = X42; then
12770 output=-DTRY_FPRINTF
12771 fi
12772 fi
12773 ;;
12774 esac
12775fi
767df6a1
JH
12776: check for fflush NULL behaviour
12777case "$fflushNULL" in
0f27ced1 12778'') set try -DTRY_FFLUSH_NULL $output
6626660c 12779 if eval $compile; then
4b257aef 12780 $rm -f try.out
196fa3d2 12781 ./try$exe_ext 2>/dev/null
a32a45b6
JH
12782 code="$?"
12783 if $test -s try.out -a "X$code" = X42; then
c2fddd50 12784 fflushNULL="`$cat try.out`"
a32a45b6
JH
12785 else
12786 if $test "X$code" != X42; then
12787 $cat >&4 <<EOM
12788(If this test failed, don't worry, we'll try another method shortly.)
12789EOM
12790 fi
c2fddd50
JH
12791 fi
12792 fi
0f27ced1 12793 $rm -f core try.core core.try.*
c2fddd50 12794 case "$fflushNULL" in
6626660c 12795 x) $cat >&4 <<EOM
2b8ee124
JH
12796Your fflush(NULL) works okay for output streams.
12797Let's see if it clobbers input pipes...
66fe083f 12798EOM
2b8ee124
JH
12799# As of mid-March 2000 all versions of Solaris appear to have a stdio
12800# bug that improperly flushes the input end of pipes. So we avoid the
12801# autoflush on fork/system/exec support for now. :-(
12802$cat >tryp.c <<EOCP
12803#include <stdio.h>
12804int
12805main(int argc, char **argv)
12806{
12807 char buf[1024];
12808 int i;
12809 char *bp = buf;
12810 while (1) {
12811 while ((i = getc(stdin)) != -1
12812 && (*bp++ = i) != '\n'
12813 && bp < &buf[1024])
12814 /* DO NOTHING */ ;
12815 *bp = '\0';
12816 fprintf(stdout, "%s", buf);
12817 fflush(NULL);
12818 if (i == -1)
b354742d 12819 return 0;
2b8ee124
JH
12820 bp = buf;
12821 }
12822}
12823EOCP
12824 fflushNULL="$define"
12825 set tryp
12826 if eval $compile; then
12827 $rm -f tryp.out
12828 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12829 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12830 $cat >&4 <<EOM
12831fflush(NULL) seems to behave okay with input streams.
12832EOM
12833 fflushNULL="$define"
12834 else
12835 $cat >&4 <<EOM
12836Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12837EOM
12838 fflushNULL="$undef"
12839 fi
12840 fi
b354742d 12841 $rm -f core tryp.c tryp.core core.tryp.*
c2fddd50 12842 ;;
6626660c 12843 '') $cat >&4 <<EOM
66fe083f
JH
12844Your fflush(NULL) isn't working (contrary to ANSI C).
12845EOM
ed39a0f2 12846 fflushNULL="$undef"
c2fddd50 12847 ;;
6626660c 12848 *) $cat >&4 <<EOM
66fe083f
JH
12849Cannot figure out whether your fflush(NULL) works or not.
12850I'm assuming it doesn't (contrary to ANSI C).
12851EOM
ed39a0f2 12852 fflushNULL="$undef"
c2fddd50
JH
12853 ;;
12854 esac
66fe083f
JH
12855 ;;
12856$define|true|[yY]*)
ed39a0f2 12857 fflushNULL="$define"
66fe083f
JH
12858 ;;
12859*)
ed39a0f2 12860 fflushNULL="$undef"
66fe083f
JH
12861 ;;
12862esac
b354742d
GS
12863: check explicit looping only if NULL did not work, and if the pipe
12864: bug does not show up on an explicit flush too
a32a45b6
JH
12865case "$fflushNULL" in
12866"$undef")
b354742d
GS
12867 $cat >tryp.c <<EOCP
12868#include <stdio.h>
12869int
12870main(int argc, char **argv)
12871{
12872 char buf[1024];
12873 int i;
12874 char *bp = buf;
12875 while (1) {
12876 while ((i = getc(stdin)) != -1
12877 && (*bp++ = i) != '\n'
12878 && bp < &buf[1024])
12879 /* DO NOTHING */ ;
12880 *bp = '\0';
12881 fprintf(stdout, "%s", buf);
12882 fflush(stdin);
12883 if (i == -1)
12884 return 0;
12885 bp = buf;
12886 }
12887}
12888EOCP
12889 set tryp
12890 if eval $compile; then
12891 $rm -f tryp.out
12892 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12893 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12894 $cat >&4 <<EOM
12895Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
a71cd7cd 12896EOM
b354742d 12897 : now check for fflushall behaviour
a32a45b6 12898 case "$fflushall" in
b354742d
GS
12899 '') set try -DTRY_FFLUSH_ALL $output
12900 if eval $compile; then
12901 $cat >&4 <<EOM
12902(Now testing the other method--but note that this also may fail.)
12903EOM
12904 $rm -f try.out
12905 ./try$exe_ext 2>/dev/null
12906 if $test -s try.out -a "X$?" = X42; then
12907 fflushall="`$cat try.out`"
12908 fi
12909 fi
12910 $rm -f core try.core core.try.*
12911 case "$fflushall" in
12912 x) $cat >&4 <<EOM
a32a45b6 12913Whew. Flushing explicitly all the stdio streams works.
767df6a1 12914EOM
b354742d
GS
12915 fflushall="$define"
12916 ;;
12917 '') $cat >&4 <<EOM
a32a45b6 12918Sigh. Flushing explicitly all the stdio streams doesn't work.
767df6a1 12919EOM
b354742d
GS
12920 fflushall="$undef"
12921 ;;
12922 *) $cat >&4 <<EOM
6626660c 12923Cannot figure out whether flushing stdio streams explicitly works or not.
767df6a1
JH
12924I'm assuming it doesn't.
12925EOM
b354742d
GS
12926 fflushall="$undef"
12927 ;;
12928 esac
12929 ;;
12930 "$define"|true|[yY]*)
12931 fflushall="$define"
12932 ;;
12933 *)
a32a45b6
JH
12934 fflushall="$undef"
12935 ;;
12936 esac
b354742d
GS
12937 else
12938 $cat >&4 <<EOM
12939All is futile. Even fflush(stdin) clobbers input pipes!
12940EOM
a32a45b6 12941 fflushall="$undef"
b354742d
GS
12942 fi
12943 else
12944 fflushall="$undef"
12945 fi
12946 $rm -f core tryp.c tryp.core core.tryp.*
767df6a1 12947 ;;
b354742d 12948*) fflushall="$undef"
767df6a1
JH
12949 ;;
12950esac
b354742d 12951
767df6a1
JH
12952case "$fflushNULL$fflushall" in
12953undefundef)
6626660c 12954 $cat <<EOM
b354742d
GS
12955OK, I give up. I cannot figure out how to flush pending stdio output.
12956We won't be flushing handles at all before fork/exec/popen.
767df6a1
JH
12957EOM
12958 ;;
12959esac
12960$rm -f try.* try$exe_ext
66fe083f 12961
ccc7f9b3
KS
12962: Store the full pathname to the ar program for use in the C program
12963: Respect a hint or command line value for full_ar.
12964case "$full_ar" in
12965'') full_ar=$ar ;;
12966esac
12967
1aef975c
AD
12968: Store the full pathname to the sed program for use in the C program
12969full_sed=$sed
12970
2304df62 12971: see what type gids are declared as in the kernel
dc45a647
MB
12972echo " "
12973echo "Looking for the type for group ids returned by getgid()."
a0d0e21e
LW
12974set gid_t gidtype xxx stdio.h sys/types.h
12975eval $typedef
2304df62 12976case "$gidtype" in
a0d0e21e
LW
12977xxx)
12978 xxx=`./findhdr sys/user.h`
12979 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12980 case $1 in
12981 unsigned) dflt="$1 $2" ;;
12982 *) dflt="$1" ;;
12983 esac
2304df62 12984 ;;
8175356b
JH
12985*) dflt="$gidtype";;
12986esac
12987case "$gidtype" in
12988gid_t) echo "gid_t found." ;;
12989*) rp="What is the type for group ids returned by getgid()?"
12990 . ./myread
12991 gidtype="$ans"
12992 ;;
12993esac
12994
12995echo " "
12996case "$gidtype" in
12997*_t) zzz="$gidtype" ;;
12998*) zzz="gid" ;;
12999esac
a22e52b9 13000echo "Checking the size of $zzz..." >&4
8175356b
JH
13001cat > try.c <<EOCP
13002#include <sys/types.h>
13003#include <stdio.h>
13004int main() {
213c275f 13005 printf("%d\n", (int)sizeof($gidtype));
14e4fe40 13006 exit(0);
8175356b
JH
13007}
13008EOCP
13009set try
a22e52b9 13010if eval $compile_ok; then
8175356b
JH
13011 yyy=`./try`
13012 case "$yyy" in
a22e52b9
JH
13013 '') gidsize=4
13014 echo "(I can't execute the test program--guessing $gidsize.)" >&4
8175356b 13015 ;;
a22e52b9 13016 *) gidsize=$yyy
49c10eea 13017 echo "Your $zzz is $gidsize bytes long."
8175356b
JH
13018 ;;
13019 esac
13020else
a22e52b9
JH
13021 gidsize=4
13022 echo "(I can't compile the test program--guessing $gidsize.)" >&4
8175356b
JH
13023fi
13024
13025
13026echo " "
13027case "$gidtype" in
13028*_t) zzz="$gidtype" ;;
13029*) zzz="gid" ;;
13030esac
a22e52b9 13031echo "Checking the sign of $zzz..." >&4
8175356b
JH
13032cat > try.c <<EOCP
13033#include <sys/types.h>
13034#include <stdio.h>
13035int main() {
a22e52b9
JH
13036 $gidtype foo = -1;
13037 if (foo < 0)
13038 printf("-1\n");
13039 else
13040 printf("1\n");
8175356b
JH
13041}
13042EOCP
13043set try
a22e52b9 13044if eval $compile; then
8175356b
JH
13045 yyy=`./try`
13046 case "$yyy" in
a22e52b9
JH
13047 '') gidsign=1
13048 echo "(I can't execute the test program--guessing unsigned.)" >&4
8175356b 13049 ;;
a22e52b9
JH
13050 *) gidsign=$yyy
13051 case "$gidsign" in
13052 1) echo "Your $zzz is unsigned." ;;
13053 -1) echo "Your $zzz is signed." ;;
13054 esac
8175356b
JH
13055 ;;
13056 esac
13057else
a22e52b9
JH
13058 gidsign=1
13059 echo "(I can't compile the test program--guessing unsigned.)" >&4
8175356b
JH
13060fi
13061
13062
785fb66b 13063echo " "
8175356b
JH
13064
13065if $test X"$quadtype" != X; then
13066
13067echo "Checking how to print 64-bit integers..." >&4
13068
13069if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13070 $cat >try.c <<'EOCP'
785fb66b
JH
13071#include <sys/types.h>
13072#include <stdio.h>
13073int main() {
8175356b
JH
13074 int q = 12345678901;
13075 printf("%ld\n", q);
785fb66b
JH
13076}
13077EOCP
8175356b
JH
13078 set try
13079 if eval $compile; then
13080 yyy=`./try$exe_ext`
13081 case "$yyy" in
13082 12345678901)
13083 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13084 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13085 echo "We will use %d."
13086 ;;
785fb66b 13087 esac
8175356b 13088 fi
785fb66b
JH
13089fi
13090
8175356b
JH
13091if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13092 $cat >try.c <<'EOCP'
13093#include <sys/types.h>
13094#include <stdio.h>
13095int main() {
13096 long q = 12345678901;
13097 printf("%ld\n", q);
13098}
13099EOCP
13100 set try
13101 if eval $compile; then
13102 yyy=`./try$exe_ext`
13103 case "$yyy" in
13104 12345678901)
13105 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13106 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13107 echo "We will use %ld."
13108 ;;
13109 esac
13110 fi
13111fi
785fb66b 13112
8afc5b8d 13113if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
8175356b 13114 $cat >try.c <<'EOCP'
785fb66b 13115#include <sys/types.h>
8175356b 13116#include <inttypes.h>
785fb66b
JH
13117#include <stdio.h>
13118int main() {
8175356b
JH
13119 int64_t q = 12345678901;
13120 printf("%" PRId64 "\n", q);
785fb66b
JH
13121}
13122EOCP
8175356b
JH
13123 set try
13124 if eval $compile; then
13125 yyy=`./try$exe_ext`
13126 case "$yyy" in
13127 12345678901)
13128 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13129 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13130 echo "We will use the C9X style."
13131 ;;
13132 esac
13133 fi
13134fi
13135
13136if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13137 $cat >try.c <<'EOCP'
13138#include <sys/types.h>
13139#include <stdio.h>
13140int main() {
13141 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13142 printf("%lld\n", q);
13143}
13144EOCP
13145 set try
13146 if eval $compile; then
13147 yyy=`./try$exe_ext`
13148 case "$yyy" in
13149 12345678901)
13150 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13151 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13152 echo "We will use the %lld style."
13153 ;;
13154 esac
13155 fi
785fb66b
JH
13156fi
13157
8175356b
JH
13158if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13159 $cat >try.c <<EOCP
13160#include <sys/types.h>
13161#include <stdio.h>
13162int main() {
13163 $quadtype q = 12345678901;
13164 printf("%Ld\n", q);
13165}
13166EOCP
13167 set try
13168 if eval $compile; then
13169 yyy=`./try$exe_ext`
13170 case "$yyy" in
13171 12345678901)
13172 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13173 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13174 echo "We will use %Ld."
13175 ;;
13176 esac
13177 fi
13178fi
785fb66b 13179
8175356b
JH
13180if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13181 $cat >try.c <<EOCP
13182#include <sys/types.h>
13183#include <stdio.h>
13184int main() {
13185 $quadtype q = 12345678901;
13186 printf("%qd\n", q);
13187}
13188EOCP
13189 set try
13190 if eval $compile; then
13191 yyy=`./try$exe_ext`
13192 case "$yyy" in
13193 12345678901)
13194 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13195 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13196 echo "We will use %qd."
13197 ;;
13198 esac
13199 fi
13200fi
2304df62 13201
8175356b
JH
13202if $test X"$sPRId64" = X; then
13203 echo "Cannot figure out how to print 64-bit integers." >&4
13204fi
5cd24f17 13205
8175356b 13206$rm -f try try.*
dfe9444c 13207
8175356b 13208fi
2304df62 13209
8175356b
JH
13210case "$sPRId64" in
13211'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13212 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
13213 ;;
13214*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13215 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
a0d0e21e 13216 ;;
2304df62 13217esac
2304df62 13218
2304df62 13219
8ff267be 13220echo " "
8175356b
JH
13221$echo "Checking the format strings to be used for Perl's internal types..." >&4
13222
13223if $test X"$ivsize" = X8; then
13224 ivdformat="$sPRId64"
13225 uvuformat="$sPRIu64"
13226 uvoformat="$sPRIo64"
13227 uvxformat="$sPRIx64"
6b4667fc 13228 uvXformat="$sPRIX64"
5ff3f7a4 13229else
8175356b
JH
13230 if $test X"$ivsize" = X"$longsize"; then
13231 ivdformat='"ld"'
13232 uvuformat='"lu"'
13233 uvoformat='"lo"'
13234 uvxformat='"lx"'
6b4667fc 13235 uvXformat='"lX"'
8175356b
JH
13236 else
13237 if $test X"$ivsize" = X"$intsize"; then
13238 ivdformat='"d"'
13239 uvuformat='"u"'
13240 uvoformat='"o"'
13241 uvxformat='"x"'
6b4667fc 13242 uvXformat='"X"'
8175356b
JH
13243 else
13244 : far out
13245 if $test X"$ivsize" = X"$shortsize"; then
13246 ivdformat='"hd"'
13247 uvuformat='"hu"'
13248 uvoformat='"ho"'
13249 uvxformat='"hx"'
6b4667fc 13250 uvXformat='"hX"'
8175356b
JH
13251 fi
13252 fi
13253 fi
5ff3f7a4 13254fi
8175356b 13255
6b4667fc
A
13256if $test X"$nvsize" = X"$longdblsize" -a "$longdblsize" -gt "$doublesize"; then
13257 nveformat="$sPRIeldbl"
13258 nvfformat="$sPRIfldbl"
13259 nvgformat="$sPRIgldbl"
13260 nvEformat="$sPRIEldbl"
13261 nvFformat="$sPRIFldbl"
13262 nvGformat="$sPRIGldbl"
13263else
13264 nveformat='"e"'
13265 nvfformat='"f"'
13266 nvgformat='"g"'
13267 nvEformat='"E"'
13268 nvFformat='"F"'
13269 nvGformat='"G"'
13270fi
13271
8175356b
JH
13272case "$ivdformat" in
13273'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13274 exit 1
13275 ;;
13276esac
5ff3f7a4 13277
a22e52b9
JH
13278
13279echo " "
13280$echo "Checking the format string to be used for gids..." >&4
13281
13282case "$gidsign" in
13283-1) if $test X"$gidsize" = X"$ivsize"; then
13284 gidformat="$ivdformat"
13285 else
13286 if $test X"$gidsize" = X"$longsize"; then
13287 gidformat='"ld"'
13288 else
13289 if $test X"$gidsize" = X"$intsize"; then
13290 gidformat='"d"'
13291 else
13292 if $test X"$gidsize" = X"$shortsize"; then
13293 gidformat='"hd"'
13294 fi
13295 fi
13296 fi
13297 fi
13298 ;;
13299*) if $test X"$gidsize" = X"$uvsize"; then
13300 gidformat="$uvuformat"
13301 else
13302 if $test X"$gidsize" = X"$longsize"; then
13303 gidformat='"lu"'
13304 else
13305 if $test X"$gidsize" = X"$intsize"; then
13306 gidformat='"u"'
13307 else
13308 if $test X"$gidsize" = X"$shortsize"; then
13309 gidformat='"hu"'
13310 fi
13311 fi
13312 fi
13313 fi
13314 ;;
13315esac
13316
13317: see if getgroups exists
13318set getgroups d_getgrps
13319eval $inlibc
13320
13321: see if setgroups exists
13322set setgroups d_setgrps
13323eval $inlibc
13324
13325
13326: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13327echo " "
13328case "$d_getgrps$d_setgrps" in
13329*define*)
13330 case "$groupstype" in
13331 '') dflt="$gidtype" ;;
13332 *) dflt="$groupstype" ;;
13333 esac
13334 $cat <<EOM
13335What type of pointer is the second argument to getgroups() and setgroups()?
13336Usually this is the same as group ids, $gidtype, but not always.
13337
13338EOM
13339 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13340 . ./myread
13341 groupstype="$ans"
13342 ;;
13343*) groupstype="$gidtype";;
13344esac
13345
5ff3f7a4 13346echo " "
dfe9444c 13347echo "Checking if your $make program sets \$(MAKE)..." >&4
8ff267be 13348case "$make_set_make" in
13349'')
13350 $sed 's/^X //' > testmake.mak << 'EOF'
13351Xall:
dfe9444c 13352X @echo 'maketemp="$(MAKE)"'
8ff267be 13353EOF
8ff267be 13354 case "`$make -f testmake.mak 2>/dev/null`" in
dfe9444c 13355 *maketemp=*) make_set_make='#' ;;
8ff267be 13356 *) make_set_make="MAKE=$make" ;;
13357 esac
dfe9444c
AD
13358 $rm -f testmake.mak
13359 ;;
13360esac
13361case "$make_set_make" in
13362'#') echo "Yup, it does.";;
13363*) echo "Nope, it doesn't.";;
13364esac
13365
13366: see what type is used for mode_t
dc45a647 13367rp="What is the type used for file modes for system calls (e.g. fchmod())?"
dfe9444c 13368set mode_t modetype int stdio.h sys/types.h
dc45a647 13369eval $typedef_ask
dfe9444c 13370
dfe9444c
AD
13371: define a fucntion to check prototypes
13372$cat > protochk <<EOSH
13373$startsh
13374cc="$cc"
13375optimize="$optimize"
13376ccflags="$ccflags"
13377prototype="$prototype"
13378define="$define"
13379rm=$rm
13380EOSH
13381
13382$cat >> protochk <<'EOSH'
13383
13384$rm -f try.c
13385foo="$1"
13386shift
13387while test $# -ge 2; do
13388 case "$1" in
13389 $define) echo "#include <$2>" >> try.c ;;
13390 literal) echo "$2" >> try.c ;;
13391 esac
13392 shift 2
13393done
13394test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13395cat >> try.c <<'EOCP'
13396#ifdef CAN_PROTOTYPE
13397#define _(args) args
13398#else
13399#define _(args) ()
13400#endif
13401EOCP
13402echo "$foo" >> try.c
13403echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13404$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13405status=$?
13406$rm -f try.[co]
13407exit $status
13408EOSH
13409chmod +x protochk
13410$eunicefix protochk
13411
c890dc6c
JH
13412: see what type is used for size_t
13413rp="What is the type used for the length parameter for string functions?"
13414set size_t sizetype 'unsigned int' stdio.h sys/types.h
13415eval $typedef_ask
13416
dfe9444c
AD
13417: check for type of arguments to gethostbyaddr.
13418if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13419 case "$d_gethbyaddr" in
13420 $define)
13421 $cat <<EOM
13422
13423Checking to see what type of arguments are accepted by gethostbyaddr().
13424EOM
13425 hdrs="$define sys/types.h
13426 $d_socket sys/socket.h
13427 $i_niin netinet/in.h
13428 $i_netdb netdb.h
13429 $i_unistd unistd.h"
13430 : The first arg can 'char *' or 'void *'
13431 : The second arg is some of integral type
13432 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13433 for yyy in size_t long int; do
13434 case "$netdb_host_type" in
13435 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13436 if ./protochk "$try" $hdrs; then
13437 echo "Your system accepts $xxx for the first arg."
13438 echo "...and $yyy for the second arg."
13439 netdb_host_type="$xxx"
13440 netdb_hlen_type="$yyy"
13441 fi
13442 ;;
13443 esac
13444 done
13445 done
13446 : In case none of those worked, prompt the user.
13447 case "$netdb_host_type" in
13448 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13449 dflt='char *'
13450 . ./myread
13451 netdb_host_type=$ans
13452 rp='What is the type for the 2nd argument to gethostbyaddr?'
13453 dflt="$sizetype"
13454 . ./myread
13455 netdb_hlen_type=$ans
13456 ;;
13457 esac
13458 ;;
13459 *) : no gethostbyaddr, so pick harmless defaults
13460 netdb_host_type='char *'
13461 netdb_hlen_type="$sizetype"
13462 ;;
13463 esac
13464 # Remove the "const" if needed. -- but then we'll have a
13465 # prototype clash!
13466 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13467fi
13468
13469: check for type of argument to gethostbyname.
13470if test "X$netdb_name_type" = X ; then
13471 case "$d_gethbyname" in
13472 $define)
13473 $cat <<EOM
13474
13475Checking to see what type of argument is accepted by gethostbyname().
13476EOM
13477 hdrs="$define sys/types.h
13478 $d_socket sys/socket.h
13479 $i_niin netinet/in.h
13480 $i_netdb netdb.h
13481 $i_unistd unistd.h"
13482 for xxx in "const char *" "char *"; do
13483 case "$netdb_name_type" in
13484 '') try="extern struct hostent *gethostbyname($xxx);"
13485 if ./protochk "$try" $hdrs; then
13486 echo "Your system accepts $xxx."
13487 netdb_name_type="$xxx"
13488 fi
13489 ;;
13490 esac
13491 done
13492 : In case none of those worked, prompt the user.
13493 case "$netdb_name_type" in
13494 '') rp='What is the type for the 1st argument to gethostbyname?'
13495 dflt='char *'
13496 . ./myread
13497 netdb_name_type=$ans
13498 ;;
13499 esac
13500 ;;
13501 *) : no gethostbyname, so pick harmless default
13502 netdb_name_type='char *'
13503 ;;
13504 esac
13505fi
8ff267be 13506
dfe9444c
AD
13507: check for type of 1st argument to getnetbyaddr.
13508if test "X$netdb_net_type" = X ; then
13509 case "$d_getnbyaddr" in
13510 $define)
13511 $cat <<EOM
85e6fe83 13512
dfe9444c
AD
13513Checking to see what type of 1st argument is accepted by getnetbyaddr().
13514EOM
13515 hdrs="$define sys/types.h
13516 $d_socket sys/socket.h
13517 $i_niin netinet/in.h
13518 $i_netdb netdb.h
13519 $i_unistd unistd.h"
13520 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13521 case "$netdb_net_type" in
13522 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13523 if ./protochk "$try" $hdrs; then
13524 echo "Your system accepts $xxx."
13525 netdb_net_type="$xxx"
13526 fi
13527 ;;
13528 esac
13529 done
13530 : In case none of those worked, prompt the user.
13531 case "$netdb_net_type" in
13532 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13533 dflt='long'
13534 . ./myread
13535 netdb_net_type=$ans
13536 ;;
13537 esac
13538 ;;
13539 *) : no getnetbyaddr, so pick harmless default
e5c9fcd0 13540 netdb_net_type='long'
dfe9444c
AD
13541 ;;
13542 esac
13543fi
2c7991dc 13544: locate the preferred pager for this system
13545case "$pager" in
13546'')
13547 dflt=''
13548 case "$pg" in
13549 /*) dflt=$pg;;
13550 esac
13551 case "$more" in
13552 /*) dflt=$more;;
13553 esac
13554 case "$less" in
13555 /*) dflt=$less;;
13556 esac
13557 case "$dflt" in
13558 '') dflt=/usr/ucb/more;;
13559 esac
13560 ;;
13561*) dflt="$pager";;
13562esac
13563echo " "
13564fn=f/
13565rp='What pager is used on your system?'
13566. ./getfile
13567pager="$ans"
13568
dfe9444c 13569: see what type pids are declared as in the kernel
dc45a647 13570rp="What is the type of process ids on this system?"
dfe9444c 13571set pid_t pidtype int stdio.h sys/types.h
dc45a647 13572eval $typedef_ask
2304df62 13573
fe749a9f
JH
13574: Find earliest binary compatible site_perl subdirectory perl can use.
13575case "$bincompat5005" in
13576"$define") xs_apiversion='5.005' ;;
13577*) xs_apiversion=$version ;; # The current site_perl version.
13578esac
13579: Find earliest pure perl site_perl subdirectory perl can use.
13580: The versioned directories started at 5.005.
13581pm_apiversion='5.005'
13582
693762b4
AD
13583: check for length of pointer
13584echo " "
13585case "$ptrsize" in
13586'')
49c10eea 13587 echo "Checking to see how big your pointers are..." >&4
693762b4
AD
13588 if test "$voidflags" -gt 7; then
13589 echo '#define VOID_PTR char *' > try.c
13590 else
13591 echo '#define VOID_PTR void *' > try.c
13592 fi
13593 $cat >>try.c <<'EOCP'
13594#include <stdio.h>
d674cd6d 13595int main()
693762b4 13596{
213c275f 13597 printf("%d\n", (int)sizeof(VOID_PTR));
14e4fe40 13598 exit(0);
693762b4
AD
13599}
13600EOCP
13601 set try
dc45a647 13602 if eval $compile_ok; then
693762b4 13603 ptrsize=`./try`
49c10eea 13604 echo "Your pointers are $ptrsize bytes long."
693762b4
AD
13605 else
13606 dflt='4'
13607 echo "(I can't seem to compile the test program. Guessing...)" >&4
13608 rp="What is the size of a pointer (in bytes)?"
13609 . ./myread
13610 ptrsize="$ans"
13611 fi
13612 ;;
13613esac
13614$rm -f try.c try
13615
a0d0e21e
LW
13616: see if ar generates random libraries by itself
13617echo " "
13618echo "Checking how to generate random libraries on your machine..." >&4
13619echo 'int bar1() { return bar2(); }' > bar1.c
13620echo 'int bar2() { return 2; }' > bar2.c
13621$cat > foo.c <<'EOP'
d674cd6d 13622int main() { printf("%d\n", bar1()); exit(0); }
a0d0e21e
LW
13623EOP
13624$cc $ccflags -c bar1.c >/dev/null 2>&1
13625$cc $ccflags -c bar2.c >/dev/null 2>&1
13626$cc $ccflags -c foo.c >/dev/null 2>&1
dfe9444c
AD
13627$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13628if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 13629 ./foobar >/dev/null 2>&1; then
4e2a5f63 13630 echo "$ar appears to generate random libraries itself."
a0d0e21e
LW
13631 orderlib=false
13632 ranlib=":"
dfe9444c
AD
13633elif $ar ts bar$_a >/dev/null 2>&1 &&
13634 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 13635 ./foobar >/dev/null 2>&1; then
4e2a5f63 13636 echo "a table of contents needs to be added with '$ar ts'."
a0d0e21e 13637 orderlib=false
dfe9444c 13638 ranlib="$ar ts"
a0d0e21e 13639else
ecfc5424
AD
13640 case "$ranlib" in
13641 :) ranlib='';;
13642 '')
13643 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13644 $test -f $ranlib || ranlib=''
13645 ;;
13646 esac
a0d0e21e 13647 if $test -n "$ranlib"; then
ecfc5424 13648 echo "your system has '$ranlib'; we'll use that."
a0d0e21e
LW
13649 orderlib=false
13650 else
13651 echo "your system doesn't seem to support random libraries"
13652 echo "so we'll use lorder and tsort to order the libraries."
13653 orderlib=true
13654 ranlib=":"
13655 fi
13656fi
13657$rm -f foo* bar*
13658
dfe9444c
AD
13659: check for type of arguments to select.
13660case "$selecttype" in
13661'') case "$d_select" in
13662 $define)
cce08f5b 13663 echo " "
dfe9444c
AD
13664 $cat <<EOM
13665Checking to see what type of arguments are accepted by select().
13666EOM
13667 hdrs="$define sys/types.h
13668 $i_systime sys/time.h
13669 $i_sysselct sys/select.h
13670 $d_socket sys/socket.h"
13671 : The first arg can be int, unsigned, or size_t
13672 : The last arg may or may not be 'const'
13673 val=''
7f3d1cf1
BH
13674 : void pointer has been seen but using that
13675 : breaks the selectminbits test
13676 for xxx in 'fd_set *' 'int *'; do
1cfa4ec7 13677 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
dfe9444c
AD
13678 for tmo in 'struct timeval *' 'const struct timeval *'; do
13679 case "$val" in
13680 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13681 if ./protochk "$try" $hdrs; then
13682 echo "Your system accepts $xxx."
13683 val="$xxx"
13684 fi
13685 ;;
13686 esac
13687 done
13688 done
13689 done
13690 case "$val" in
13691 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13692 case "$d_fd_set" in
13693 $define) dflt="fd_set *" ;;
13694 *) dflt="int *" ;;
13695 esac
13696 . ./myread
13697 val=$ans
13698 ;;
a0d0e21e 13699 esac
dfe9444c 13700 selecttype="$val"
a0d0e21e 13701 ;;
dfe9444c
AD
13702 *) : no select, so pick a harmless default
13703 selecttype='int *'
a0d0e21e
LW
13704 ;;
13705 esac
a0d0e21e
LW
13706 ;;
13707esac
2304df62 13708
5ff3f7a4
GS
13709: check for the select 'width'
13710case "$selectminbits" in
13711'') case "$d_select" in
13712 $define)
13713 $cat <<EOM
13714
85ab1d1d 13715Checking to see on how many bits at a time your select() operates...
5ff3f7a4
GS
13716EOM
13717 $cat >try.c <<EOCP
13718#include <sys/types.h>
13719#$i_time I_TIME
13720#$i_systime I_SYS_TIME
13721#$i_systimek I_SYS_TIME_KERNEL
13722#ifdef I_TIME
13723# include <time.h>
13724#endif
13725#ifdef I_SYS_TIME
13726# ifdef I_SYS_TIME_KERNEL
13727# define KERNEL
13728# endif
13729# include <sys/time.h>
13730# ifdef I_SYS_TIME_KERNEL
13731# undef KERNEL
13732# endif
13733#endif
13734#$i_sysselct I_SYS_SELECT
13735#ifdef I_SYS_SELECT
13736#include <sys/select.h>
13737#endif
bd628c73
AD
13738#$d_socket HAS_SOCKET
13739#ifdef HAS_SOCKET
13740# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13741#endif
5ff3f7a4 13742#include <stdio.h>
fb164848
JH
13743$selecttype b;
13744#define S sizeof(*(b))
5ff3f7a4
GS
13745#define MINBITS 64
13746#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13747#define NBITS (NBYTES * 8)
13748int main() {
13749 char s[NBYTES];
5ff3f7a4
GS
13750 struct timeval t;
13751 int i;
13752 FILE* fp;
13753 int fd;
13754
13755 fclose(stdin);
13756 fp = fopen("try.c", "r");
13757 if (fp == 0)
13758 exit(1);
13759 fd = fileno(fp);
13760 if (fd < 0)
13761 exit(2);
13762 b = ($selecttype)s;
13763 for (i = 0; i < NBITS; i++)
13764 FD_SET(i, b);
13765 t.tv_sec = 0;
13766 t.tv_usec = 0;
13767 select(fd + 1, b, 0, 0, &t);
13768 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13769 printf("%d\n", i + 1);
13770 return 0;
13771}
13772EOCP
13773 set try
13774 if eval $compile_ok; then
13775 selectminbits=`./try`
85ab1d1d 13776 case "$selectminbits" in
fb164848
JH
13777 '') cat >&4 <<EOM
13778Cannot figure out on how many bits at a time your select() operates.
13779I'll play safe and guess it is 32 bits.
13780EOM
13781 selectminbits=32
13782 bits="32 bits"
13783 ;;
85ab1d1d
JH
13784 1) bits="1 bit" ;;
13785 *) bits="$selectminbits bits" ;;
13786 esac
13787 echo "Your select() operates on $bits at a time." >&4
5ff3f7a4
GS
13788 else
13789 rp='What is the minimum number of bits your select() operates on?'
13790 case "$byteorder" in
13791 1234|12345678) dflt=32 ;;
13792 *) dflt=1 ;;
13793 esac
13794 . ./myread
13795 val=$ans
13796 selectminbits="$val"
13797 fi
13798 $rm -f try.* try
13799 ;;
13800 *) : no select, so pick a harmless default
13801 selectminbits='32'
13802 ;;
13803 esac
13804 ;;
13805esac
13806
8e07c86e
AD
13807: Trace out the files included by signal.h, then look for SIGxxx names.
13808: Remove SIGARRAYSIZE used by HPUX.
af4c28eb
CS
13809: Remove SIGSTKSIZE used by Linux.
13810: Remove SIGSTKSZ used by Posix.
4633a7c4 13811: Remove SIGTYP void lines used by OS2.
6764938d 13812: Some cpps, like os390, dont give the file name anywhere
53d4e464 13813if [ "X$fieldn" = X ]; then
6764938d
GS
13814 : Just make some guesses. We check them later.
13815 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
53d4e464 13816else
6764938d 13817 xxx=`echo '#include <signal.h>' |
8e07c86e
AD
13818 $cppstdin $cppminus $cppflags 2>/dev/null |
13819 $grep '^[ ]*#.*include' |
13820 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
53d4e464 13821fi
8e07c86e
AD
13822: Check this list of files to be sure we have parsed the cpp output ok.
13823: This will also avoid potentially non-existent files, such
13824: as ../foo/bar.h
13825xxxfiles=''
13826for xx in $xxx /dev/null ; do
13827 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13828done
13829: If we have found no files, at least try signal.h
13830case "$xxxfiles" in
13831'') xxxfiles=`./findhdr signal.h` ;;
13832esac
13833xxx=`awk '
af4c28eb 13834$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
8e07c86e
AD
13835 print substr($2, 4, 20)
13836}
4633a7c4 13837$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8e07c86e
AD
13838 print substr($3, 4, 20)
13839}' $xxxfiles`
13840: Append some common names just in case the awk scan failed.
6764938d
GS
13841xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13842xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13843xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13844xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13845xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13846
8e07c86e 13847: generate a few handy files for later
dc45a647 13848$cat > signal.c <<'EOCP'
4633a7c4
LW
13849#include <sys/types.h>
13850#include <signal.h>
dc45a647 13851#include <stdio.h>
4633a7c4 13852int main() {
760ac839
LW
13853
13854/* Strange style to avoid deeply-nested #if/#else/#endif */
13855#ifndef NSIG
13856# ifdef _NSIG
13857# define NSIG (_NSIG)
13858# endif
13859#endif
13860
13861#ifndef NSIG
13862# ifdef SIGMAX
13863# define NSIG (SIGMAX+1)
13864# endif
13865#endif
13866
13867#ifndef NSIG
13868# ifdef SIG_MAX
13869# define NSIG (SIG_MAX+1)
13870# endif
13871#endif
13872
13873#ifndef NSIG
13874# ifdef MAXSIG
13875# define NSIG (MAXSIG+1)
13876# endif
4633a7c4 13877#endif
760ac839
LW
13878
13879#ifndef NSIG
13880# ifdef MAX_SIG
13881# define NSIG (MAX_SIG+1)
13882# endif
13883#endif
13884
13885#ifndef NSIG
13886# ifdef SIGARRAYSIZE
13887# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13888# endif
13889#endif
13890
13891#ifndef NSIG
13892# ifdef _sys_nsig
13893# define NSIG (_sys_nsig) /* Solaris 2.5 */
13894# endif
13895#endif
13896
13897/* Default to some arbitrary number that's big enough to get most
13898 of the common signals.
13899*/
13900#ifndef NSIG
13901# define NSIG 50
4633a7c4 13902#endif
760ac839
LW
13903
13904printf("NSIG %d\n", NSIG);
13905
dc45a647
MB
13906#ifndef JUST_NSIG
13907
13908EOCP
13909
28e8609d 13910echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
8e07c86e
AD
13911{
13912 printf "#ifdef SIG"; printf $1; printf "\n"
13913 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13914 printf $1; printf ");\n"
13915 printf "#endif\n"
2304df62 13916}
2304df62 13917END {
dc45a647 13918 printf "#endif /* JUST_NSIG */\n";
14e4fe40 13919 printf "exit(0);\n}\n";
2304df62 13920}
4633a7c4
LW
13921' >>signal.c
13922$cat >signal.awk <<'EOP'
13923BEGIN { ndups = 0 }
13924$1 ~ /^NSIG$/ { nsig = $2 }
13925($1 !~ /^NSIG$/) && (NF == 2) {
13926 if ($2 > maxsig) { maxsig = $2 }
13927 if (sig_name[$2]) {
13928 dup_name[ndups] = $1
13929 dup_num[ndups] = $2
13930 ndups++
13931 }
13932 else {
13933 sig_name[$2] = $1
13934 sig_num[$2] = $2
13935 }
4633a7c4
LW
13936}
13937END {
af4c28eb
CS
13938 if (nsig == 0) {
13939 nsig = maxsig + 1
13940 }
13941 printf("NSIG %d\n", nsig);
13942 for (n = 1; n < nsig; n++) {
13943 if (sig_name[n]) {
13944 printf("%s %d\n", sig_name[n], sig_num[n])
4633a7c4 13945 }
af4c28eb
CS
13946 else {
13947 printf("NUM%d %d\n", n, n)
13948 }
13949 }
4633a7c4 13950 for (n = 0; n < ndups; n++) {
af4c28eb 13951 printf("%s %d\n", dup_name[n], dup_num[n])
4633a7c4
LW
13952 }
13953}
13954EOP
13955$cat >signal_cmd <<EOS
8e07c86e 13956$startsh
dc45a647
MB
13957if $test -s signal.lst; then
13958 echo "Using your existing signal.lst file"
13959 exit 0
13960fi
13961xxx="$xxx"
13962EOS
13963$cat >>signal_cmd <<'EOS'
13964
13965set signal
13966if eval $compile_ok; then
dfe9444c 13967 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8e07c86e 13968else
dc45a647
MB
13969 echo "(I can't seem be able to compile the whole test program)" >&4
13970 echo "(I'll try it in little pieces.)" >&4
13971 set signal -DJUST_NSIG
13972 if eval $compile_ok; then
13973 ./signal$_exe > signal.nsg
13974 $cat signal.nsg
13975 else
13976 echo "I can't seem to figure out how many signals you have." >&4
13977 echo "Guessing 50." >&4
13978 echo 'NSIG 50' > signal.nsg
13979 fi
13980 : Now look at all the signal names, one at a time.
28e8609d 13981 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
dc45a647
MB
13982 $cat > signal.c <<EOCP
13983#include <sys/types.h>
13984#include <signal.h>
13985#include <stdio.h>
13986int main() {
13987printf("$xx %d\n", SIG${xx});
13988return 0;
13989}
13990EOCP
13991 set signal
13992 if eval $compile; then
13993 echo "SIG${xx} found."
13994 ./signal$_exe >> signal.ls1
13995 else
13996 echo "SIG${xx} NOT found."
13997 fi
13998 done
13999 if $test -s signal.ls1; then
14000 $cat signal.nsg signal.ls1 |
14001 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14002 fi
14003
14004fi
14005if $test -s signal.lst; then
14006 :
14007else
14008 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
8e07c86e 14009 echo 'kill -l' >signal
dc45a647 14010 set X `csh -f <signal`
8e07c86e 14011 $rm -f signal
2304df62 14012 shift
dc45a647 14013 case $# in
8e07c86e 14014 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
2304df62 14015 esac
28e8609d 14016 echo $@ | $tr ' ' $trnl | \
af4c28eb
CS
14017 $awk '{ printf "%s %d\n", $1, ++s; }
14018 END { printf "NSIG %d\n", ++s }' >signal.lst
8e07c86e 14019fi
dc45a647 14020$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
8e07c86e 14021EOS
4633a7c4
LW
14022chmod a+x signal_cmd
14023$eunicefix signal_cmd
8e07c86e
AD
14024
14025: generate list of signal names
14026echo " "
dfe9444c 14027case "$sig_name_init" in
6626bf4c
JH
14028'') doinit=yes ;;
14029*) case "$sig_num_init" in
14030 ''|*,*) doinit=yes ;;
14031 esac ;;
14032esac
14033case "$doinit" in
14034yes)
4633a7c4 14035 echo "Generating a list of signal names and numbers..." >&4
dc45a647 14036 . ./signal_cmd
af4c28eb
CS
14037 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14038 sig_name=`$awk 'BEGIN { printf "ZERO " }
14039 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14040 sig_num=`$awk 'BEGIN { printf "0 " }
14041 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14042 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14043 !/^NSIG/ { printf "\"%s\", ", $1 }
14044 END { printf "0\n" }' signal.lst`
14045 sig_num_init=`$awk 'BEGIN { printf "0, " }
14046 !/^NSIG/ { printf "%d, ", $2}
14047 END { printf "0\n"}' signal.lst`
14048 ;;
14049esac
14050echo "The following $sig_count signals are available:"
a0d0e21e
LW
14051echo " "
14052echo $sig_name | $awk \
14053'BEGIN { linelen = 0 }
14054{
8e07c86e 14055 for (i = 1; i <= NF; i++) {
a0d0e21e
LW
14056 name = "SIG" $i " "
14057 linelen = linelen + length(name)
14058 if (linelen > 70) {
14059 printf "\n"
14060 linelen = length(name)
14061 }
14062 printf "%s", name
14063 }
8e07c86e 14064 printf "\n"
a0d0e21e 14065}'
4633a7c4 14066$rm -f signal signal.c signal.awk signal.lst signal_cmd
a0d0e21e 14067
8c99d73e
GS
14068echo " "
14069case "$sizetype" in
14070*_t) zzz="$sizetype" ;;
14071*) zzz="filesize" ;;
14072esac
14073echo "Checking the size of $zzz..." >&4
14074cat > try.c <<EOCP
14075#include <sys/types.h>
14076#include <stdio.h>
14077int main() {
14078 printf("%d\n", (int)sizeof($sizetype));
14079 exit(0);
14080}
14081EOCP
14082set try
14083if eval $compile_ok; then
14084 yyy=`./try`
14085 case "$yyy" in
14086 '') sizesize=4
14087 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14088 ;;
14089 *) sizesize=$yyy
14090 echo "Your $zzz size is $sizesize bytes."
14091 ;;
14092 esac
14093else
14094 sizesize=4
14095 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14096fi
14097
14098
c890dc6c
JH
14099: check for socklen_t
14100echo " "
14101echo "Checking to see if you have socklen_t..." >&4
14102$cat >try.c <<EOCP
14103#include <sys/types.h>
14104#$d_socket HAS_SOCKET
14105#ifdef HAS_SOCKET
14106#include <sys/socket.h>
14107#endif
14108int main() { socklen_t x = 16; }
14109EOCP
14110set try
14111if eval $compile; then
14112 val="$define"
14113 echo "You have socklen_t."
14114else
14115 val="$undef"
14116 echo "You do not have socklen_t."
14117 case "$sizetype" in
8c99d73e 14118 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
c890dc6c
JH
14119 esac
14120fi
14121$rm -f try try.*
14122set d_socklen_t
14123eval $setvar
14124
14125: check for type of the size argument to socket calls
14126case "$d_socket" in
14127"$define")
14128 $cat <<EOM
14129
14130Checking to see what type is the last argument of accept().
14131EOM
14132 hdrs="$define sys/types.h $d_socket sys/socket.h"
14133 yyy=''
14134 case "$d_socklen_t" in
14135 "$define") yyy="$yyy socklen_t"
14136 esac
6c85e8b0 14137 yyy="$yyy $sizetype int long unsigned"
c890dc6c
JH
14138 for xxx in $yyy; do
14139 case "$socksizetype" in
14140 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14141 if ./protochk "$try" $hdrs; then
14142 echo "Your system accepts '$xxx *' for the last argument of accept()."
10cc9d2a 14143 socksizetype="$xxx"
c890dc6c
JH
14144 fi
14145 ;;
14146 esac
14147 done
14148: In case none of those worked, prompt the user.
14149 case "$socksizetype" in
4f309e22 14150 '') rp='What is the type for socket address structure sizes?'
10cc9d2a 14151 dflt='int'
c890dc6c
JH
14152 . ./myread
14153 socksizetype=$ans
14154 ;;
14155 esac
14156 ;;
6c85e8b0
JH
14157*) : no sockets, so pick relatively harmless default
14158 socksizetype='int'
c890dc6c
JH
14159 ;;
14160esac
14161
a0d0e21e
LW
14162: see what type is used for signed size_t
14163set ssize_t ssizetype int stdio.h sys/types.h
14164eval $typedef
14165dflt="$ssizetype"
14166$cat > ssize.c <<EOM
14167#include <stdio.h>
14168#include <sys/types.h>
14169#define Size_t $sizetype
14170#define SSize_t $dflt
d674cd6d 14171int main()
a0d0e21e
LW
14172{
14173 if (sizeof(Size_t) == sizeof(SSize_t))
14174 printf("$dflt\n");
14175 else if (sizeof(Size_t) == sizeof(int))
14176 printf("int\n");
14177 else
14178 printf("long\n");
760ac839 14179 exit(0);
a0d0e21e
LW
14180}
14181EOM
14182echo " "
dfe9444c 14183set ssize
dc45a647 14184if eval $compile_ok && ./ssize > /dev/null; then
dfe9444c 14185 ssizetype=`./ssize`
a0d0e21e
LW
14186 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14187else
24fef2a7 14188 $cat >&4 <<EOM
24fef2a7
AD
14189Help! I can't compile and run the ssize_t test program: please enlighten me!
14190(This is probably a misconfiguration in your system or libraries, and
14191you really ought to fix it. Still, I'll try anyway.)
a0d0e21e
LW
14192
14193I need a type that is the same size as $sizetype, but is guaranteed to
24fef2a7 14194be signed. Common values are ssize_t, int and long.
a0d0e21e
LW
14195
14196EOM
14197 rp="What signed type is the same size as $sizetype?"
14198 . ./myread
14199 ssizetype="$ans"
14200fi
dfe9444c 14201$rm -f ssize ssize.*
3fd537d4 14202
a0d0e21e
LW
14203: see what type of char stdio uses.
14204echo " "
14205if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14206 echo "Your stdio uses unsigned chars." >&4
14207 stdchar="unsigned char"
14208else
14209 echo "Your stdio uses signed chars." >&4
14210 stdchar="char"
14211fi
14212
14213: see if time exists
14214echo " "
28e8609d
JH
14215if test "X$d_time" = X -o X"$timetype" = X; then
14216 if set time val -f d_time; eval $csym; $val; then
5ff3f7a4
GS
14217 echo 'time() found.' >&4
14218 val="$define"
14219 rp="What is the type returned by time() on this system?"
14220 set time_t timetype long stdio.h sys/types.h
14221 eval $typedef_ask
28e8609d 14222 else
5ff3f7a4
GS
14223 echo 'time() not found, hope that will do.' >&4
14224 val="$undef"
14225 timetype='int';
28e8609d
JH
14226 fi
14227 set d_time
14228 eval $setvar
a0d0e21e 14229fi
a0d0e21e
LW
14230
14231: see what type uids are declared as in the kernel
dc45a647
MB
14232echo " "
14233echo "Looking for the type for user ids returned by getuid()."
a0d0e21e
LW
14234set uid_t uidtype xxx stdio.h sys/types.h
14235eval $typedef
14236case "$uidtype" in
14237xxx)
14238 xxx=`./findhdr sys/user.h`
14239 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14240 case $1 in
14241 unsigned) dflt="$1 $2" ;;
14242 *) dflt="$1" ;;
14243 esac
14244 ;;
4633a7c4
LW
14245*) dflt="$uidtype";;
14246esac
dc45a647
MB
14247case "$uidtype" in
14248uid_t) echo "uid_t found." ;;
14249*) rp="What is the type for user ids returned by getuid()?"
14250 . ./myread
14251 uidtype="$ans"
14252 ;;
14253esac
4633a7c4 14254
57def98f
JH
14255echo " "
14256case "$uidtype" in
14257*_t) zzz="$uidtype" ;;
14258*) zzz="uid" ;;
14259esac
a22e52b9 14260echo "Checking the size of $zzz..." >&4
57def98f
JH
14261cat > try.c <<EOCP
14262#include <sys/types.h>
14263#include <stdio.h>
14264int main() {
213c275f 14265 printf("%d\n", (int)sizeof($uidtype));
14e4fe40 14266 exit(0);
57def98f
JH
14267}
14268EOCP
d4265146 14269set try
a22e52b9 14270if eval $compile_ok; then
57def98f
JH
14271 yyy=`./try`
14272 case "$yyy" in
a22e52b9
JH
14273 '') uidsize=4
14274 echo "(I can't execute the test program--guessing $uidsize.)" >&4
57def98f 14275 ;;
a22e52b9 14276 *) uidsize=$yyy
49c10eea 14277 echo "Your $zzz is $uidsize bytes long."
57def98f
JH
14278 ;;
14279 esac
14280else
a22e52b9
JH
14281 uidsize=4
14282 echo "(I can't compile the test program--guessing $uidsize.)" >&4
57def98f
JH
14283fi
14284
785fb66b
JH
14285echo " "
14286case "$uidtype" in
14287*_t) zzz="$uidtype" ;;
14288*) zzz="uid" ;;
14289esac
a22e52b9 14290echo "Checking the sign of $zzz..." >&4
785fb66b
JH
14291cat > try.c <<EOCP
14292#include <sys/types.h>
14293#include <stdio.h>
14294int main() {
a22e52b9
JH
14295 $uidtype foo = -1;
14296 if (foo < 0)
14297 printf("-1\n");
14298 else
14299 printf("1\n");
785fb66b
JH
14300}
14301EOCP
14302set try
a22e52b9 14303if eval $compile; then
785fb66b
JH
14304 yyy=`./try`
14305 case "$yyy" in
a22e52b9
JH
14306 '') uidsign=1
14307 echo "(I can't execute the test program--guessing unsigned.)" >&4
785fb66b 14308 ;;
a22e52b9
JH
14309 *) uidsign=$yyy
14310 case "$uidsign" in
14311 1) echo "Your $zzz is unsigned." ;;
14312 -1) echo "Your $zzz is signed." ;;
14313 esac
785fb66b
JH
14314 ;;
14315 esac
14316else
a22e52b9
JH
14317 uidsign=1
14318 echo "(I can't compile the test program--guessing unsigned.)" >&4
785fb66b
JH
14319fi
14320
a22e52b9
JH
14321
14322
14323echo " "
14324$echo "Checking the format string to be used for uids..." >&4
14325
14326case "$uidsign" in
14327-1) if $test X"$uidsize" = X"$ivsize"; then
14328 uidformat="$ivdformat"
14329 else
14330 if $test X"$uidsize" = X"$longsize"; then
14331 uidformat='"ld"'
14332 else
14333 if $test X"$uidsize" = X"$intsize"; then
14334 uidformat='"d"'
14335 else
14336 if $test X"$uidsize" = X"$shortsize"; then
14337 uidformat='"hd"'
14338 fi
14339 fi
14340 fi
14341 fi
14342 ;;
14343*) if $test X"$uidsize" = X"$uvsize"; then
14344 uidformat="$uvuformat"
14345 else
14346 if $test X"$uidsize" = X"$longsize"; then
14347 uidformat='"lu"'
14348 else
14349 if $test X"$uidsize" = X"$intsize"; then
14350 uidformat='"u"'
14351 else
14352 if $test X"$uidsize" = X"$shortsize"; then
14353 uidformat='"hu"'
14354 fi
14355 fi
14356 fi
14357 fi
14358 ;;
14359esac
14360
4633a7c4
LW
14361: see if dbm.h is available
14362: see if dbmclose exists
14363set dbmclose d_dbmclose
14364eval $inlibc
14365
14366case "$d_dbmclose" in
14367$define)
14368 set dbm.h i_dbm
14369 eval $inhdr
5f80c64f
JH
14370 case "$i_dbm" in
14371 $define)
14372 val="$undef"
14373 set i_rpcsvcdbm
14374 eval $setvar
14375 ;;
14376 *) set rpcsvc/dbm.h i_rpcsvcdbm
14377 eval $inhdr
14378 ;;
14379 esac
14380 ;;
14381*) echo "We won't be including <dbm.h>"
14382 val="$undef"
14383 set i_dbm
14384 eval $setvar
14385 val="$undef"
14386 set i_rpcsvcdbm
14387 eval $setvar
14388 ;;
14389esac
14390
14391: see if this is a sys/file.h system
14392val=''
14393set sys/file.h val
14394eval $inhdr
14395
14396: do we need to include sys/file.h ?
14397case "$val" in
14398"$define")
14399 echo " "
14400 if $h_sysfile; then
14401 val="$define"
14402 echo "We'll be including <sys/file.h>." >&4
14403 else
14404 val="$undef"
14405 echo "We won't be including <sys/file.h>." >&4
14406 fi
14407 ;;
14408*)
14409 h_sysfile=false
14410 ;;
14411esac
14412set i_sysfile
14413eval $setvar
14414
14415: see if fcntl.h is there
14416val=''
14417set fcntl.h val
14418eval $inhdr
14419
14420: see if we can include fcntl.h
14421case "$val" in
14422"$define")
14423 echo " "
14424 if $h_fcntl; then
14425 val="$define"
14426 echo "We'll be including <fcntl.h>." >&4
14427 else
14428 val="$undef"
14429 if $h_sysfile; then
14430 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14431 else
14432 echo "We won't be including <fcntl.h>." >&4
14433 fi
14434 fi
14435 ;;
14436*)
14437 h_fcntl=false
14438 val="$undef"
14439 ;;
14440esac
14441set i_fcntl
14442eval $setvar
14443
43999f95
JH
14444: see if this is a iconv.h system
14445set iconv.h i_iconv
14446eval $inhdr
14447
792d8dab
JH
14448: see if this is a ieeefp.h system
14449set ieeefp.h i_ieeefp
14450eval $inhdr
14451
4bc88a62
PS
14452: see if this is a libutil.h system
14453set libutil.h i_libutil
14454eval $inhdr
14455
5f80c64f
JH
14456: see if locale.h is available
14457set locale.h i_locale
14458eval $inhdr
14459
7f3d1cf1 14460: see if mach cthreads are available
13666627
JH
14461if test "X$usethreads" = "X$define"; then
14462 set mach/cthreads.h i_machcthr
14463 eval $inhdr
14464else
14465 i_machcthr="$undef"
14466fi
14467
14468
7f3d1cf1 14469
5f80c64f
JH
14470: see if this is a math.h system
14471set math.h i_math
14472eval $inhdr
14473
e7fb4fcc
JH
14474: see if this is a mntent.h system
14475set mntent.h i_mntent
14476eval $inhdr
14477
5f80c64f
JH
14478: see if ndbm.h is available
14479set ndbm.h t_ndbm
14480eval $inhdr
14481case "$t_ndbm" in
14482$define)
14483 : see if dbm_open exists
14484 set dbm_open d_dbm_open
14485 eval $inlibc
14486 case "$d_dbm_open" in
14487 $undef)
14488 t_ndbm="$undef"
14489 echo "We won't be including <ndbm.h>"
14490 ;;
14491 esac
14492 ;;
14493esac
14494val="$t_ndbm"
14495set i_ndbm
14496eval $setvar
14497
14498: see if net/errno.h is available
14499val=''
14500set net/errno.h val
14501eval $inhdr
14502
14503: Unfortunately, it causes problems on some systems. Arrgh.
14504case "$val" in
14505$define)
14506 cat > try.c <<'EOM'
14507#include <stdio.h>
14508#include <errno.h>
14509#include <net/errno.h>
14510int func()
14511{
14512 return ENOTSOCK;
14513}
14514EOM
14515 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14516 echo "We'll be including <net/errno.h>." >&4
14517 else
14518 echo "We won't be including <net/errno.h>." >&4
14519 val="$undef"
14520 fi
14521 $rm -f try.* try
14522 ;;
14523esac
14524set i_neterrno
14525eval $setvar
14526
9cc6feab
JH
14527: see if netinet/tcp.h is available
14528set netinet/tcp.h i_netinettcp
14529eval $inhdr
14530
5b34fd99
JH
14531: see if this is a poll.h system
14532set poll.h i_poll
14533eval $inhdr
14534
3813c136
JH
14535: see if this is a prot.h system
14536set prot.h i_prot
14537eval $inhdr
14538
5f80c64f 14539echo " "
78691af5 14540$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
43999f95
JH
14541$cat <<'EOSH' > Cppsym.know
14542a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14543AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14544alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14545ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14546BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14547BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14548bull c cadmus clipper CMU COFF COMPILER_VERSION
14549concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14550CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14551Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14552FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14553GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14554H3050R H3050RX hbullx20 hcx host_mips
14555hp200 hp300 hp700 HP700 hp800 hp9000
14556hp9000s200 hp9000s300 hp9000s400 hp9000s500
14557hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14558i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14559iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14560INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14561LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14562LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14563Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14564LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14565M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14566M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14567M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14568MATH_HAS_NO_SIDE_EFFECTS
14569mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14570mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14571mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14572MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14573mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14574NetBSD news1500 news1700 news1800 news1900 news3700
14575news700 news800 news900 NeXT NLS ns16000 ns32000
14576ns32016 ns32332 ns32k nsc32000
14577OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14578pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14579pc532 pdp11 PGC PIC plexus PORTAR posix
14580POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14581POSIX_C_SOURCE POSIX_SOURCE POWER
14582PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14583riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14584SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14585sony sony_news sonyrisc sparc sparclite spectrum
14586stardent stdc STDC_EXT stratos sun sun3 sun386
14587Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14588SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14589SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14590sysV68 sysV88 Tek4132 Tek4300 titan
14591tower tower32 tower32_200 tower32_600 tower32_700
14592tower32_800 tower32_850 tss
14593u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14594ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14595unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14596Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14597XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14598XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14599z8000
14600EOSH
14601# Maybe put other stuff here too.
14602cat <<EOSH >>Cppsym.know
14603$osname
14604EOSH
9b97abf7
JH
14605./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14606./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
bdf79dc8
YST
14607$cat Cppsym.know > Cppsym.c
14608$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14609$rm -f Cppsym.a Cppsym.b Cppsym.c
43999f95 14610cat <<EOSH > Cppsym
5f80c64f 14611$startsh
43999f95
JH
14612if $test \$# -gt 0; then
14613 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14614 if $test -s Cppsym.got; then
14615 $rm -f Cppsym.got
14616 exit 0
14617 fi
14618 $rm -f Cppsym.got
14619 exit 1
14620else
14621 $tr " " "$trnl" | ./Cppsym.try
14622 exit 0
14623fi
14624EOSH
5f80c64f
JH
14625chmod +x Cppsym
14626$eunicefix Cppsym
43999f95
JH
14627cat <<EOSH > Cppsym.try
14628$startsh
14629cat <<'EOCP' > try.c
14630#include <stdio.h>
14631int main() {
14632EOCP
14633$awk \\
14634EOSH
14635cat <<'EOSH' >> Cppsym.try
14636'length($1) > 0 {
14637 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14638 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14639 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14640 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14641}' >> try.c
14642echo '}' >> try.c
14643EOSH
14644cat <<EOSH >> Cppsym.try
43999f95 14645ccflags="$ccflags"
a3489f11
JH
14646case "$osname-$gccversion" in
14647irix-) ccflags="\$ccflags -woff 1178" ;;
bdf79dc8 14648os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
a3489f11
JH
14649esac
14650$cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
43999f95
JH
14651EOSH
14652chmod +x Cppsym.try
14653$eunicefix Cppsym.try
14654./Cppsym < Cppsym.know > Cppsym.true
5f80c64f 14655: now check the C compiler for additional symbols
c4747d3e
JH
14656postprocess_cc_v=''
14657case "$osname" in
14658aix) postprocess_cc_v="|$tr , ' '" ;;
14659esac
5f80c64f
JH
14660$cat >ccsym <<EOS
14661$startsh
14662$cat >tmp.c <<EOF
14663extern int foo;
14664EOF
c4747d3e 14665for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
5f80c64f
JH
14666do
14667 case "\$i" in
14668 -D*) echo "\$i" | $sed 's/^-D//';;
14669 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14670 esac
14671done
14672$rm -f try.c
14673EOS
2000072c 14674postprocess_cc_v=''
5f80c64f
JH
14675chmod +x ccsym
14676$eunicefix ccsym
14677./ccsym > ccsym1.raw
14678if $test -s ccsym1.raw; then
14679 $sort ccsym1.raw | $uniq >ccsym.raw
14680else
14681 mv ccsym1.raw ccsym.raw
14682fi
14683
14684$awk '/\=/ { print $0; next }
14685 { print $0"=1" }' ccsym.raw >ccsym.list
43999f95
JH
14686$awk '/\=/ { print $0; next }
14687 { print $0"=1" }' Cppsym.true >ccsym.true
5f80c64f
JH
14688$comm -13 ccsym.true ccsym.list >ccsym.own
14689$comm -12 ccsym.true ccsym.list >ccsym.com
14690$comm -23 ccsym.true ccsym.list >ccsym.cpp
14691also=''
5f80c64f 14692if $test -z ccsym.raw; then
ff49bff8 14693 echo "Your C compiler doesn't seem to define any symbols!" >&4
5f80c64f 14694 echo " "
ff49bff8 14695 echo "However, your C preprocessor defines the following symbols:"
5f80c64f 14696 $cat Cppsym.true
ff49bff8
JH
14697 ccsymbols=''
14698 cppsymbols=`$cat Cppsym.true`
918c3d21 14699 cppsymbols=`echo $cppsymbols`
ff49bff8 14700 cppccsymbols="$cppsymbols"
5f80c64f
JH
14701else
14702 if $test -s ccsym.com; then
14703 echo "Your C compiler and pre-processor define these symbols:"
bdf79dc8 14704 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
5f80c64f
JH
14705 also='also '
14706 symbols='ones'
ff49bff8 14707 cppccsymbols=`$cat ccsym.com`
918c3d21 14708 cppccsymbols=`echo $cppccsymbols`
5f80c64f
JH
14709 $test "$silent" || sleep 1
14710 fi
14711 if $test -s ccsym.cpp; then
14712 $test "$also" && echo " "
ff49bff8 14713 echo "Your C pre-processor ${also}defines the following symbols:"
bdf79dc8 14714 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
5f80c64f 14715 also='further '
ff49bff8 14716 cppsymbols=`$cat ccsym.cpp`
918c3d21 14717 cppsymbols=`echo $cppsymbols`
5f80c64f
JH
14718 $test "$silent" || sleep 1
14719 fi
14720 if $test -s ccsym.own; then
14721 $test "$also" && echo " "
ff49bff8 14722 echo "Your C compiler ${also}defines the following cpp symbols:"
bdf79dc8
YST
14723 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14724 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
ff49bff8 14725 ccsymbols=`$cat ccsym.own`
918c3d21 14726 ccsymbols=`echo $ccsymbols`
5f80c64f
JH
14727 $test "$silent" || sleep 1
14728 fi
14729fi
bdf79dc8 14730$rm -f ccsym* Cppsym.*
5f80c64f
JH
14731
14732: see if this is a termio system
14733val="$undef"
14734val2="$undef"
14735val3="$undef"
14736if $test `./findhdr termios.h`; then
14737 set tcsetattr i_termios
14738 eval $inlibc
14739 val3="$i_termios"
14740fi
14741echo " "
14742case "$val3" in
14743"$define") echo "You have POSIX termios.h... good!" >&4;;
14744*) if ./Cppsym pyr; then
14745 case "`/bin/universe`" in
14746 ucb) if $test `./findhdr sgtty.h`; then
14747 val2="$define"
14748 echo "<sgtty.h> found." >&4
14749 else
14750 echo "System is pyramid with BSD universe."
14751 echo "<sgtty.h> not found--you could have problems." >&4
14752 fi;;
14753 *) if $test `./findhdr termio.h`; then
14754 val="$define"
14755 echo "<termio.h> found." >&4
14756 else
14757 echo "System is pyramid with USG universe."
14758 echo "<termio.h> not found--you could have problems." >&4
14759 fi;;
14760 esac
14761 elif ./usg; then
14762 if $test `./findhdr termio.h`; then
14763 echo "<termio.h> found." >&4
14764 val="$define"
14765 elif $test `./findhdr sgtty.h`; then
14766 echo "<sgtty.h> found." >&4
14767 val2="$define"
14768 else
14769echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14770 fi
14771 else
14772 if $test `./findhdr sgtty.h`; then
14773 echo "<sgtty.h> found." >&4
14774 val2="$define"
14775 elif $test `./findhdr termio.h`; then
14776 echo "<termio.h> found." >&4
14777 val="$define"
14778 else
14779echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14780 fi
14781 fi;;
14782esac
14783set i_termio; eval $setvar
14784val=$val2; set i_sgtty; eval $setvar
14785val=$val3; set i_termios; eval $setvar
14786
f1066039
JH
14787: see if this is a shadow.h system
14788set shadow.h i_shadow
14789eval $inhdr
14790
86959918
JH
14791: see if this is a socks.h system
14792set socks.h i_socks
14793eval $inhdr
14794
5f80c64f
JH
14795: see if stdarg is available
14796echo " "
14797if $test `./findhdr stdarg.h`; then
14798 echo "<stdarg.h> found." >&4
14799 valstd="$define"
14800else
14801 echo "<stdarg.h> NOT found." >&4
14802 valstd="$undef"
14803fi
14804
14805: see if varags is available
14806echo " "
14807if $test `./findhdr varargs.h`; then
14808 echo "<varargs.h> found." >&4
14809else
14810 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14811fi
14812
14813: set up the varargs testing programs
14814$cat > varargs.c <<EOP
14815#ifdef I_STDARG
14816#include <stdarg.h>
14817#endif
14818#ifdef I_VARARGS
14819#include <varargs.h>
14820#endif
14821
14822#ifdef I_STDARG
14823int f(char *p, ...)
14824#else
14825int f(va_alist)
14826va_dcl
14827#endif
14828{
14829 va_list ap;
14830#ifndef I_STDARG
14831 char *p;
14832#endif
14833#ifdef I_STDARG
14834 va_start(ap,p);
14835#else
14836 va_start(ap);
14837 p = va_arg(ap, char *);
14838#endif
14839 va_end(ap);
14840}
14841EOP
14842$cat > varargs <<EOP
14843$startsh
14844if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14845 echo "true"
14846else
14847 echo "false"
14848fi
14849$rm -f varargs$_o
14850EOP
14851chmod +x varargs
14852
14853: now check which varargs header should be included
14854echo " "
14855i_varhdr=''
14856case "$valstd" in
14857"$define")
14858 if `./varargs I_STDARG`; then
14859 val='stdarg.h'
14860 elif `./varargs I_VARARGS`; then
14861 val='varargs.h'
14862 fi
14863 ;;
14864*)
14865 if `./varargs I_VARARGS`; then
14866 val='varargs.h'
14867 fi
14868 ;;
14869esac
14870case "$val" in
14871'')
14872echo "I could not find the definition for va_dcl... You have problems..." >&4
14873 val="$undef"; set i_stdarg; eval $setvar
14874 val="$undef"; set i_varargs; eval $setvar
14875 ;;
14876*)
14877 set i_varhdr
14878 eval $setvar
14879 case "$i_varhdr" in
14880 stdarg.h)
14881 val="$define"; set i_stdarg; eval $setvar
14882 val="$undef"; set i_varargs; eval $setvar
14883 ;;
14884 varargs.h)
14885 val="$undef"; set i_stdarg; eval $setvar
14886 val="$define"; set i_varargs; eval $setvar
14887 ;;
14888 esac
14889 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14890esac
14891$rm -f varargs*
14892
14893: see if stddef is available
14894set stddef.h i_stddef
14895eval $inhdr
14896
923fc586
JH
14897: see if this is a sunmath.h system
14898set sunmath.h i_sunmath
14899eval $inhdr
14900
5f80c64f
JH
14901: see if sys/access.h is available
14902set sys/access.h i_sysaccess
14903eval $inhdr
14904
14905: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14906set sys/filio.h i_sysfilio
14907eval $inhdr
14908echo " "
14909if $test `./findhdr sys/ioctl.h`; then
14910 val="$define"
14911 echo '<sys/ioctl.h> found.' >&4
14912else
14913 val="$undef"
14914 if $test $i_sysfilio = "$define"; then
14915 echo '<sys/ioctl.h> NOT found.' >&4
14916 else
14917 $test $i_sgtty = "$define" && xxx="sgtty.h"
14918 $test $i_termio = "$define" && xxx="termio.h"
14919 $test $i_termios = "$define" && xxx="termios.h"
14920echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14921 fi
14922fi
14923set i_sysioctl
14924eval $setvar
14925
ca52efda
JH
14926
14927: see if this is a syslog.h system
14928set syslog.h i_syslog
14929eval $inhdr
14930
bf0c440f
JH
14931
14932: see if this is a sys/mode.h system
14933set sys/mode.h i_sysmode
14934eval $inhdr
14935
5f80c64f
JH
14936: see if sys/resource.h has to be included
14937set sys/resource.h i_sysresrc
14938eval $inhdr
14939
14940: see if sys/security.h is available
14941set sys/security.h i_syssecrt
14942eval $inhdr
14943
104d25b7
JH
14944: see if this is a sys/statvfs.h system
14945set sys/statvfs.h i_sysstatvfs
14946eval $inhdr
14947
b7b35fc2
JH
14948: see if this is a sys/uio.h system
14949set sys/uio.h i_sysuio
14950eval $inhdr
14951
5f80c64f
JH
14952: see if this is a sys/un.h system
14953set sys/un.h i_sysun
14954eval $inhdr
14955
d4935d7f
JH
14956
14957: see if this is a sys/utsname.h system
14958set sys/utsname.h i_sysutsname
14959eval $inhdr
14960
5f80c64f
JH
14961: see if this is a syswait system
14962set sys/wait.h i_syswait
14963eval $inhdr
14964
0545a864
JH
14965: see if this is a ustat.h system
14966set ustat.h i_ustat
14967eval $inhdr
14968
5f80c64f
JH
14969: see if this is an utime system
14970set utime.h i_utime
14971eval $inhdr
14972
14973: see if this is a values.h system
14974set values.h i_values
14975eval $inhdr
14976
14977: see if this is a vfork system
14978case "$d_vfork" in
14979"$define")
14980 set vfork.h i_vfork
14981 eval $inhdr
14982 ;;
14983*)
14984 i_vfork="$undef"
14985 ;;
14986esac
14987
14988: see if gdbm.h is available
14989set gdbm.h t_gdbm
14990eval $inhdr
14991case "$t_gdbm" in
14992$define)
14993 : see if gdbm_open exists
14994 set gdbm_open d_gdbm_open
14995 eval $inlibc
14996 case "$d_gdbm_open" in
14997 $undef)
14998 t_gdbm="$undef"
14999 echo "We won't be including <gdbm.h>"
15000 ;;
15001 esac
15002 ;;
15003esac
15004val="$t_gdbm"
15005set i_gdbm
15006eval $setvar
15007
15008echo " "
15009echo "Looking for extensions..." >&4
5f80c64f
JH
15010: If we are using the old config.sh, known_extensions may contain
15011: old or inaccurate or duplicate values.
15012known_extensions=''
15013nonxs_extensions=''
15014: We do not use find because it might not be available.
15015: We do not just use MANIFEST because the user may have dropped
15016: some additional extensions into the source tree and expect them
15017: to be built.
7e791ca9
NK
15018
15019: Function to recursively find available extensions, ignoring DynaLoader
15020: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15021find_extensions='
15022 for xxx in *; do
15023 case "$xxx" in
15024 DynaLoader|dynaload) ;;
15025 *)
15026 if $test -f $xxx/$xxx.xs; then
15027 known_extensions="$known_extensions $1$xxx";
15028 elif $test -f $xxx/Makefile.PL; then
15029 nonxs_extensions="$nonxs_extensions $1$xxx";
15030 else
15031 if $test -d $xxx -a $# -lt 10; then
15032 set $1$xxx/ $*;
15033 cd $xxx;
15034 eval $find_extensions;
15035 cd ..;
15036 shift;
9f50e519 15037 fi;
7e791ca9
NK
15038 fi
15039 ;;
9f50e519 15040 esac;
7e791ca9
NK
15041 done'
15042tdir=`pwd`
15043cd $rsrc/ext
a3635516 15044set X
efdb23e1 15045shift
7e791ca9 15046eval $find_extensions
5f80c64f
JH
15047set X $nonxs_extensions
15048shift
15049nonxs_extensions="$*"
15050set X $known_extensions
15051shift
15052known_extensions="$*"
15053cd $tdir
15054
15055: Now see which are supported on this system.
15056avail_ext=''
15057for xxx in $known_extensions ; do
15058 case "$xxx" in
15059 DB_File|db_file)
15060 case "$i_db" in
15061 $define) avail_ext="$avail_ext $xxx" ;;
15062 esac
15063 ;;
15064 GDBM_File|gdbm_fil)
15065 case "$i_gdbm" in
15066 $define) avail_ext="$avail_ext $xxx" ;;
15067 esac
15068 ;;
15069 NDBM_File|ndbm_fil)
15070 case "$i_ndbm" in
f7dd4e7f 15071 $define)
10cc9d2a 15072 case "$osname-$use64bitint" in
f7dd4e7f
JH
15073 hpux-define)
15074 case "$libs" in
15075 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15076 esac
15077 ;;
15078 *) avail_ext="$avail_ext $xxx" ;;
15079 esac
15080 ;;
5f80c64f
JH
15081 esac
15082 ;;
15083 ODBM_File|odbm_fil)
15084 case "${i_dbm}${i_rpcsvcdbm}" in
f7dd4e7f 15085 *"${define}"*)
10cc9d2a 15086 case "$osname-$use64bitint" in
f7dd4e7f
JH
15087 hpux-define)
15088 case "$libs" in
15089 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15090 esac
15091 ;;
15092 *) avail_ext="$avail_ext $xxx" ;;
15093 esac
15094 ;;
5f80c64f
JH
15095 esac
15096 ;;
15097 POSIX|posix)
15098 case "$useposix" in
15099 true|define|y) avail_ext="$avail_ext $xxx" ;;
15100 esac
15101 ;;
15102 Opcode|opcode)
15103 case "$useopcode" in
15104 true|define|y) avail_ext="$avail_ext $xxx" ;;
15105 esac
15106 ;;
15107 Socket|socket)
15108 case "$d_socket" in
15109 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15110 esac
15111 ;;
9065c66b
YST
15112 Sys/Syslog|sys/syslog)
15113 : XXX syslog requires socket
15114 case "$d_socket" in
15115 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15116 esac
15117 ;;
5f80c64f
JH
15118 Thread|thread)
15119 case "$usethreads" in
15120 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15121 esac
15122 ;;
15123 IPC/SysV|ipc/sysv)
15124 : XXX Do we need a useipcsysv variable here
15125 case "${d_msg}${d_sem}${d_shm}" in
15126 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15127 esac
15128 ;;
15129 *) avail_ext="$avail_ext $xxx"
15130 ;;
15131 esac
15132done
15133
15134set X $avail_ext
15135shift
15136avail_ext="$*"
15137
15138: Now see which nonxs extensions are supported on this system.
15139: For now assume all are.
15140nonxs_ext=''
15141for xxx in $nonxs_extensions ; do
15142 case "$xxx" in
15143 *) nonxs_ext="$nonxs_ext $xxx"
15144 ;;
15145 esac
15146done
15147
15148set X $nonxs_ext
15149shift
15150nonxs_ext="$*"
15151
15152case $usedl in
15153$define)
15154 $cat <<EOM
15155A number of extensions are supplied with $package. You may choose to
15156compile these extensions for dynamic loading (the default), compile
15157them into the $package executable (static loading), or not include
15158them at all. Answer "none" to include no extensions.
15159Note that DynaLoader is always built and need not be mentioned here.
15160
15161EOM
15162 case "$dynamic_ext" in
15163 '') dflt="$avail_ext" ;;
15164 *) dflt="$dynamic_ext"
15165 # Perhaps we are reusing an old out-of-date config.sh.
15166 case "$hint" in
15167 previous)
15168 if test X"$dynamic_ext" != X"$avail_ext"; then
15169 $cat <<EOM
15170NOTICE: Your previous config.sh list may be incorrect.
15171The extensions now available to you are
15172 ${avail_ext}
15173but the default list from your previous config.sh is
15174 ${dynamic_ext}
15175
15176EOM
15177 fi
15178 ;;
15179 esac
15180 ;;
15181 esac
15182 case "$dflt" in
15183 '') dflt=none;;
15184 esac
15185 rp="What extensions do you wish to load dynamically?"
15186 . ./myread
15187 case "$ans" in
15188 none) dynamic_ext=' ' ;;
15189 *) dynamic_ext="$ans" ;;
15190 esac
15191
15192 case "$static_ext" in
15193 '')
15194 : Exclude those already listed in dynamic linking
15195 dflt=''
15196 for xxx in $avail_ext; do
15197 case " $dynamic_ext " in
15198 *" $xxx "*) ;;
15199 *) dflt="$dflt $xxx" ;;
15200 esac
15201 done
15202 set X $dflt
15203 shift
15204 dflt="$*"
15205 ;;
15206 *) dflt="$static_ext"
15207 ;;
15208 esac
15209
15210 case "$dflt" in
15211 '') dflt=none;;
15212 esac
15213 rp="What extensions do you wish to load statically?"
15214 . ./myread
15215 case "$ans" in
15216 none) static_ext=' ' ;;
15217 *) static_ext="$ans" ;;
15218 esac
15219 ;;
15220*)
15221 $cat <<EOM
15222A number of extensions are supplied with $package. Answer "none"
15223to include no extensions.
15224Note that DynaLoader is always built and need not be mentioned here.
15225
15226EOM
15227 case "$static_ext" in
15228 '') dflt="$avail_ext" ;;
15229 *) dflt="$static_ext"
15230 # Perhaps we are reusing an old out-of-date config.sh.
15231 case "$hint" in
15232 previous)
15233 if test X"$static_ext" != X"$avail_ext"; then
15234 $cat <<EOM
15235NOTICE: Your previous config.sh list may be incorrect.
15236The extensions now available to you are
15237 ${avail_ext}
15238but the default list from your previous config.sh is
15239 ${static_ext}
15240
15241EOM
15242 fi
15243 ;;
15244 esac
15245 ;;
15246 esac
15247 : Exclude those that are not xs extensions
15248 case "$dflt" in
15249 '') dflt=none;;
15250 esac
15251 rp="What extensions do you wish to include?"
15252 . ./myread
15253 case "$ans" in
15254 none) static_ext=' ' ;;
15255 *) static_ext="$ans" ;;
15256 esac
15257 ;;
15258esac
15259
15260set X $dynamic_ext $static_ext $nonxs_ext
15261shift
15262extensions="$*"
15263
15264: Remove build directory name from cppstdin so it can be used from
15265: either the present location or the final installed location.
15266echo " "
15267: Get out of the UU directory to get correct path name.
15268cd ..
15269case "$cppstdin" in
15270`pwd`/cppstdin)
15271 echo "Stripping down cppstdin path name"
15272 cppstdin=cppstdin
15273 ;;
15274esac
15275cd UU
15276
15277: end of configuration questions
15278echo " "
15279echo "End of configuration questions."
15280echo " "
15281
15282: back to where it started
15283if test -d ../UU; then
15284 cd ..
15285fi
15286
15287: configuration may be patched via a 'config.over' file
15288if $test -f config.over; then
15289 echo " "
15290 dflt=y
15291 rp='I see a config.over file. Do you wish to load it?'
15292 . UU/myread
15293 case "$ans" in
15294 n*) echo "OK, I'll ignore it.";;
15295 *) . ./config.over
15296 echo "Configuration override changes have been loaded."
15297 ;;
15298 esac
15299fi
15300
15301: in case they want portability, strip down executable paths
15302case "$d_portable" in
15303"$define")
15304 echo " "
15305 echo "Stripping down executable paths..." >&4
15306 for file in $loclist $trylist; do
534ac15a
JH
15307 eval temp=\$$file
15308 eval $file=`basename $temp`
5f80c64f
JH
15309 done
15310 ;;
15311esac
15312
15313: create config.sh file
15314echo " "
15315echo "Creating config.sh..." >&4
15316$spitshell <<EOT >config.sh
15317$startsh
15318#
15319# This file was produced by running the Configure script. It holds all the
15320# definitions figured out by Configure. Should you modify one of these values,
15321# do not forget to propagate your changes by running "Configure -der". You may
15322# instead choose to run each of the .SH files by yourself, or "Configure -S".
15323#
15324
15325# Package name : $package
15326# Source directory : $src
15327# Configuration time: $cf_time
15328# Configured by : $cf_by
15329# Target system : $myuname
15330
15331Author='$Author'
15332Date='$Date'
15333Header='$Header'
15334Id='$Id'
15335Locker='$Locker'
15336Log='$Log'
15337Mcc='$Mcc'
15338RCSfile='$RCSfile'
15339Revision='$Revision'
15340Source='$Source'
15341State='$State'
15342_a='$_a'
15343_exe='$_exe'
15344_o='$_o'
15345afs='$afs'
15346alignbytes='$alignbytes'
15347ansi2knr='$ansi2knr'
15348aphostname='$aphostname'
ff935051
JH
15349api_revision='$api_revision'
15350api_subversion='$api_subversion'
15351api_version='$api_version'
15352api_versionstring='$api_versionstring'
5f80c64f
JH
15353ar='$ar'
15354archlib='$archlib'
15355archlibexp='$archlibexp'
15356archname64='$archname64'
15357archname='$archname'
15358archobjs='$archobjs'
15359awk='$awk'
15360baserev='$baserev'
15361bash='$bash'
15362bin='$bin'
d71b2b6b 15363bincompat5005='$bincompat5005'
5f80c64f
JH
15364binexp='$binexp'
15365bison='$bison'
15366byacc='$byacc'
15367byteorder='$byteorder'
15368c='$c'
15369castflags='$castflags'
15370cat='$cat'
15371cc='$cc'
15372cccdlflags='$cccdlflags'
15373ccdlflags='$ccdlflags'
15374ccflags='$ccflags'
437814ad 15375ccflags_uselargefiles='$ccflags_uselargefiles'
ff49bff8 15376ccsymbols='$ccsymbols'
5f80c64f
JH
15377cf_by='$cf_by'
15378cf_email='$cf_email'
15379cf_time='$cf_time'
8175356b 15380charsize='$charsize'
5f80c64f
JH
15381chgrp='$chgrp'
15382chmod='$chmod'
15383chown='$chown'
15384clocktype='$clocktype'
15385comm='$comm'
15386compress='$compress'
15387contains='$contains'
15388cp='$cp'
15389cpio='$cpio'
15390cpp='$cpp'
15391cpp_stuff='$cpp_stuff'
ff49bff8 15392cppccsymbols='$cppccsymbols'
5f80c64f
JH
15393cppflags='$cppflags'
15394cpplast='$cpplast'
15395cppminus='$cppminus'
15396cpprun='$cpprun'
15397cppstdin='$cppstdin'
ff49bff8 15398cppsymbols='$cppsymbols'
68c15b6f 15399crosscompile='$crosscompile'
5f80c64f
JH
15400cryptlib='$cryptlib'
15401csh='$csh'
15402d_Gconvert='$d_Gconvert'
cf2093f6
JH
15403d_PRIEldbl='$d_PRIEldbl'
15404d_PRIFldbl='$d_PRIFldbl'
15405d_PRIGldbl='$d_PRIGldbl'
15406d_PRIX64='$d_PRIX64'
15407d_PRId64='$d_PRId64'
15408d_PRIeldbl='$d_PRIeldbl'
15409d_PRIfldbl='$d_PRIfldbl'
15410d_PRIgldbl='$d_PRIgldbl'
15411d_PRIi64='$d_PRIi64'
15412d_PRIo64='$d_PRIo64'
15413d_PRIu64='$d_PRIu64'
15414d_PRIx64='$d_PRIx64'
5f80c64f
JH
15415d_access='$d_access'
15416d_accessx='$d_accessx'
15417d_alarm='$d_alarm'
15418d_archlib='$d_archlib'
cf2093f6
JH
15419d_atolf='$d_atolf'
15420d_atoll='$d_atoll'
5f80c64f
JH
15421d_attribut='$d_attribut'
15422d_bcmp='$d_bcmp'
15423d_bcopy='$d_bcopy'
d71b2b6b 15424d_bincompat5005='$d_bincompat5005'
5f80c64f
JH
15425d_bsd='$d_bsd'
15426d_bsdgetpgrp='$d_bsdgetpgrp'
15427d_bsdsetpgrp='$d_bsdsetpgrp'
15428d_bzero='$d_bzero'
15429d_casti32='$d_casti32'
15430d_castneg='$d_castneg'
15431d_charvspr='$d_charvspr'
15432d_chown='$d_chown'
15433d_chroot='$d_chroot'
15434d_chsize='$d_chsize'
15435d_closedir='$d_closedir'
15436d_const='$d_const'
15437d_crypt='$d_crypt'
15438d_csh='$d_csh'
15439d_cuserid='$d_cuserid'
15440d_dbl_dig='$d_dbl_dig'
5f80c64f 15441d_difftime='$d_difftime'
5f80c64f
JH
15442d_dirnamlen='$d_dirnamlen'
15443d_dlerror='$d_dlerror'
15444d_dlopen='$d_dlopen'
15445d_dlsymun='$d_dlsymun'
15446d_dosuid='$d_dosuid'
15447d_drand48proto='$d_drand48proto'
15448d_dup2='$d_dup2'
15449d_eaccess='$d_eaccess'
15450d_endgrent='$d_endgrent'
15451d_endhent='$d_endhent'
15452d_endnent='$d_endnent'
15453d_endpent='$d_endpent'
15454d_endpwent='$d_endpwent'
15455d_endsent='$d_endsent'
15456d_eofnblk='$d_eofnblk'
15457d_eunice='$d_eunice'
15458d_fchmod='$d_fchmod'
15459d_fchown='$d_fchown'
15460d_fcntl='$d_fcntl'
15461d_fd_macros='$d_fd_macros'
15462d_fd_set='$d_fd_set'
15463d_fds_bits='$d_fds_bits'
5f80c64f 15464d_fgetpos='$d_fgetpos'
5f80c64f 15465d_flexfnam='$d_flexfnam'
5f80c64f 15466d_flock='$d_flock'
5f80c64f
JH
15467d_fork='$d_fork'
15468d_fpathconf='$d_fpathconf'
d9b3e12d 15469d_fpos64_t='$d_fpos64_t'
a3540c92 15470d_frexpl='$d_frexpl'
0545a864 15471d_fs_data_s='$d_fs_data_s'
5f80c64f 15472d_fseeko='$d_fseeko'
5f80c64f 15473d_fsetpos='$d_fsetpos'
104d25b7
JH
15474d_fstatfs='$d_fstatfs'
15475d_fstatvfs='$d_fstatvfs'
5f80c64f
JH
15476d_ftello='$d_ftello'
15477d_ftime='$d_ftime'
49dabb45 15478d_getcwd='$d_getcwd'
3813c136 15479d_getespwnam='$d_getespwnam'
c890dc6c 15480d_getfsstat='$d_getfsstat'
5f80c64f
JH
15481d_getgrent='$d_getgrent'
15482d_getgrps='$d_getgrps'
15483d_gethbyaddr='$d_gethbyaddr'
15484d_gethbyname='$d_gethbyname'
15485d_gethent='$d_gethent'
15486d_gethname='$d_gethname'
15487d_gethostprotos='$d_gethostprotos'
15488d_getlogin='$d_getlogin'
ad27e871 15489d_getmnt='$d_getmnt'
ccc7f9b3 15490d_getmntent='$d_getmntent'
5f80c64f
JH
15491d_getnbyaddr='$d_getnbyaddr'
15492d_getnbyname='$d_getnbyname'
15493d_getnent='$d_getnent'
15494d_getnetprotos='$d_getnetprotos'
15495d_getpbyname='$d_getpbyname'
15496d_getpbynumber='$d_getpbynumber'
15497d_getpent='$d_getpent'
15498d_getpgid='$d_getpgid'
15499d_getpgrp2='$d_getpgrp2'
15500d_getpgrp='$d_getpgrp'
15501d_getppid='$d_getppid'
15502d_getprior='$d_getprior'
15503d_getprotoprotos='$d_getprotoprotos'
3813c136 15504d_getprpwnam='$d_getprpwnam'
5f80c64f
JH
15505d_getpwent='$d_getpwent'
15506d_getsbyname='$d_getsbyname'
15507d_getsbyport='$d_getsbyport'
15508d_getsent='$d_getsent'
15509d_getservprotos='$d_getservprotos'
f1066039 15510d_getspnam='$d_getspnam'
5f80c64f
JH
15511d_gettimeod='$d_gettimeod'
15512d_gnulibc='$d_gnulibc'
15513d_grpasswd='$d_grpasswd'
ccc7f9b3 15514d_hasmntopt='$d_hasmntopt'
5f80c64f 15515d_htonl='$d_htonl'
43999f95 15516d_iconv='$d_iconv'
5f80c64f
JH
15517d_index='$d_index'
15518d_inetaton='$d_inetaton'
13b3f787 15519d_int64_t='$d_int64_t'
5f80c64f 15520d_isascii='$d_isascii'
a3540c92
JH
15521d_isnan='$d_isnan'
15522d_isnanl='$d_isnanl'
5f80c64f
JH
15523d_killpg='$d_killpg'
15524d_lchown='$d_lchown'
2d4389e4 15525d_ldbl_dig='$d_ldbl_dig'
5f80c64f
JH
15526d_link='$d_link'
15527d_locconv='$d_locconv'
5f80c64f
JH
15528d_lockf='$d_lockf'
15529d_longdbl='$d_longdbl'
15530d_longlong='$d_longlong'
49c10eea 15531d_lseekproto='$d_lseekproto'
5f80c64f 15532d_lstat='$d_lstat'
1e8c3fde 15533d_madvise='$d_madvise'
5f80c64f
JH
15534d_mblen='$d_mblen'
15535d_mbstowcs='$d_mbstowcs'
15536d_mbtowc='$d_mbtowc'
0f27ced1 15537d_memchr='$d_memchr'
5f80c64f
JH
15538d_memcmp='$d_memcmp'
15539d_memcpy='$d_memcpy'
15540d_memmove='$d_memmove'
15541d_memset='$d_memset'
15542d_mkdir='$d_mkdir'
fe749a9f 15543d_mkdtemp='$d_mkdtemp'
5f80c64f 15544d_mkfifo='$d_mkfifo'
fe749a9f
JH
15545d_mkstemp='$d_mkstemp'
15546d_mkstemps='$d_mkstemps'
5f80c64f 15547d_mktime='$d_mktime'
fe749a9f 15548d_mmap='$d_mmap'
a3540c92 15549d_modfl='$d_modfl'
fe749a9f 15550d_mprotect='$d_mprotect'
5f80c64f 15551d_msg='$d_msg'
de4597cb
JH
15552d_msg_ctrunc='$d_msg_ctrunc'
15553d_msg_dontroute='$d_msg_dontroute'
15554d_msg_oob='$d_msg_oob'
15555d_msg_peek='$d_msg_peek'
15556d_msg_proxy='$d_msg_proxy'
5f80c64f
JH
15557d_msgctl='$d_msgctl'
15558d_msgget='$d_msgget'
15559d_msgrcv='$d_msgrcv'
15560d_msgsnd='$d_msgsnd'
fe749a9f
JH
15561d_msync='$d_msync'
15562d_munmap='$d_munmap'
5f80c64f 15563d_mymalloc='$d_mymalloc'
5f80c64f 15564d_nice='$d_nice'
78691af5 15565d_nv_preserves_uv='$d_nv_preserves_uv'
d6c14000 15566d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
2000072c 15567d_off64_t='$d_off64_t'
ef4af2be 15568d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
5f80c64f
JH
15569d_oldpthreads='$d_oldpthreads'
15570d_oldsock='$d_oldsock'
15571d_open3='$d_open3'
5f80c64f
JH
15572d_pathconf='$d_pathconf'
15573d_pause='$d_pause'
3b777bb4 15574d_perl_otherlibdirs='$d_perl_otherlibdirs'
5f80c64f
JH
15575d_phostname='$d_phostname'
15576d_pipe='$d_pipe'
15577d_poll='$d_poll'
15578d_portable='$d_portable'
15579d_pthread_yield='$d_pthread_yield'
5f80c64f
JH
15580d_pwage='$d_pwage'
15581d_pwchange='$d_pwchange'
15582d_pwclass='$d_pwclass'
15583d_pwcomment='$d_pwcomment'
15584d_pwexpire='$d_pwexpire'
15585d_pwgecos='$d_pwgecos'
15586d_pwpasswd='$d_pwpasswd'
15587d_pwquota='$d_pwquota'
bbe6c963 15588d_qgcvt='$d_qgcvt'
de1c2614 15589d_quad='$d_quad'
5f80c64f
JH
15590d_readdir='$d_readdir'
15591d_readlink='$d_readlink'
15592d_rename='$d_rename'
15593d_rewinddir='$d_rewinddir'
15594d_rmdir='$d_rmdir'
15595d_safebcpy='$d_safebcpy'
15596d_safemcpy='$d_safemcpy'
15597d_sanemcmp='$d_sanemcmp'
15598d_sched_yield='$d_sched_yield'
de4597cb 15599d_scm_rights='$d_scm_rights'
5f80c64f
JH
15600d_seekdir='$d_seekdir'
15601d_select='$d_select'
15602d_sem='$d_sem'
15603d_semctl='$d_semctl'
15604d_semctl_semid_ds='$d_semctl_semid_ds'
15605d_semctl_semun='$d_semctl_semun'
15606d_semget='$d_semget'
15607d_semop='$d_semop'
15608d_setegid='$d_setegid'
15609d_seteuid='$d_seteuid'
15610d_setgrent='$d_setgrent'
15611d_setgrps='$d_setgrps'
15612d_sethent='$d_sethent'
15613d_setlinebuf='$d_setlinebuf'
15614d_setlocale='$d_setlocale'
15615d_setnent='$d_setnent'
15616d_setpent='$d_setpent'
15617d_setpgid='$d_setpgid'
15618d_setpgrp2='$d_setpgrp2'
15619d_setpgrp='$d_setpgrp'
15620d_setprior='$d_setprior'
0c9177ab 15621d_setproctitle='$d_setproctitle'
5f80c64f
JH
15622d_setpwent='$d_setpwent'
15623d_setregid='$d_setregid'
15624d_setresgid='$d_setresgid'
15625d_setresuid='$d_setresuid'
15626d_setreuid='$d_setreuid'
15627d_setrgid='$d_setrgid'
15628d_setruid='$d_setruid'
15629d_setsent='$d_setsent'
15630d_setsid='$d_setsid'
15631d_setvbuf='$d_setvbuf'
15632d_sfio='$d_sfio'
15633d_shm='$d_shm'
15634d_shmat='$d_shmat'
15635d_shmatprototype='$d_shmatprototype'
15636d_shmctl='$d_shmctl'
15637d_shmdt='$d_shmdt'
15638d_shmget='$d_shmget'
15639d_sigaction='$d_sigaction'
15640d_sigsetjmp='$d_sigsetjmp'
15641d_socket='$d_socket'
13b3f787 15642d_socklen_t='$d_socklen_t'
5f80c64f 15643d_sockpair='$d_sockpair'
68d4903c 15644d_sqrtl='$d_sqrtl'
5f80c64f 15645d_statblks='$d_statblks'
0545a864
JH
15646d_statfs_f_flags='$d_statfs_f_flags'
15647d_statfs_s='$d_statfs_s'
104d25b7 15648d_statvfs='$d_statvfs'
5f80c64f
JH
15649d_stdio_cnt_lval='$d_stdio_cnt_lval'
15650d_stdio_ptr_lval='$d_stdio_ptr_lval'
ed39a0f2 15651d_stdio_stream_array='$d_stdio_stream_array'
5f80c64f
JH
15652d_stdiobase='$d_stdiobase'
15653d_stdstdio='$d_stdstdio'
5f80c64f
JH
15654d_strchr='$d_strchr'
15655d_strcoll='$d_strcoll'
15656d_strctcpy='$d_strctcpy'
15657d_strerrm='$d_strerrm'
15658d_strerror='$d_strerror'
15659d_strtod='$d_strtod'
15660d_strtol='$d_strtol'
ff935051 15661d_strtold='$d_strtold'
76d49b1c 15662d_strtoll='$d_strtoll'
5f80c64f 15663d_strtoul='$d_strtoul'
cf2093f6 15664d_strtoull='$d_strtoull'
ff935051 15665d_strtouq='$d_strtouq'
5f80c64f
JH
15666d_strxfrm='$d_strxfrm'
15667d_suidsafe='$d_suidsafe'
15668d_symlink='$d_symlink'
15669d_syscall='$d_syscall'
15670d_sysconf='$d_sysconf'
15671d_sysernlst='$d_sysernlst'
15672d_syserrlst='$d_syserrlst'
15673d_system='$d_system'
15674d_tcgetpgrp='$d_tcgetpgrp'
15675d_tcsetpgrp='$d_tcsetpgrp'
5f80c64f 15676d_telldir='$d_telldir'
cb86ce0e 15677d_telldirproto='$d_telldirproto'
5f80c64f
JH
15678d_time='$d_time'
15679d_times='$d_times'
5f80c64f
JH
15680d_truncate='$d_truncate'
15681d_tzname='$d_tzname'
15682d_umask='$d_umask'
15683d_uname='$d_uname'
15684d_union_semun='$d_union_semun'
0545a864 15685d_ustat='$d_ustat'
526fdc24 15686d_vendorarch='$d_vendorarch'
717c4fcc 15687d_vendorbin='$d_vendorbin'
a3635516 15688d_vendorlib='$d_vendorlib'
5f80c64f
JH
15689d_vfork='$d_vfork'
15690d_void_closedir='$d_void_closedir'
15691d_voidsig='$d_voidsig'
15692d_voidtty='$d_voidtty'
15693d_volatile='$d_volatile'
15694d_vprintf='$d_vprintf'
15695d_wait4='$d_wait4'
15696d_waitpid='$d_waitpid'
15697d_wcstombs='$d_wcstombs'
15698d_wctomb='$d_wctomb'
15699d_xenix='$d_xenix'
15700date='$date'
15701db_hashtype='$db_hashtype'
15702db_prefixtype='$db_prefixtype'
15703defvoidused='$defvoidused'
15704direntrytype='$direntrytype'
15705dlext='$dlext'
15706dlsrc='$dlsrc'
15707doublesize='$doublesize'
15708drand01='$drand01'
15709dynamic_ext='$dynamic_ext'
15710eagain='$eagain'
15711ebcdic='$ebcdic'
15712echo='$echo'
15713egrep='$egrep'
15714emacs='$emacs'
15715eunicefix='$eunicefix'
15716exe_ext='$exe_ext'
15717expr='$expr'
15718extensions='$extensions'
66fe083f 15719fflushNULL='$fflushNULL'
767df6a1 15720fflushall='$fflushall'
5f80c64f
JH
15721find='$find'
15722firstmakefile='$firstmakefile'
15723flex='$flex'
8175356b 15724fpossize='$fpossize'
5f80c64f
JH
15725fpostype='$fpostype'
15726freetype='$freetype'
ccc7f9b3 15727full_ar='$full_ar'
5f80c64f
JH
15728full_csh='$full_csh'
15729full_sed='$full_sed'
5b463ca7 15730gccosandvers='$gccosandvers'
5f80c64f 15731gccversion='$gccversion'
a22e52b9 15732gidformat='$gidformat'
785fb66b
JH
15733gidsign='$gidsign'
15734gidsize='$gidsize'
5f80c64f
JH
15735gidtype='$gidtype'
15736glibpth='$glibpth'
15737grep='$grep'
15738groupcat='$groupcat'
15739groupstype='$groupstype'
15740gzip='$gzip'
15741h_fcntl='$h_fcntl'
15742h_sysfile='$h_sysfile'
15743hint='$hint'
15744hostcat='$hostcat'
15745huge='$huge'
8175356b
JH
15746i16size='$i16size'
15747i16type='$i16type'
15748i32size='$i32size'
15749i32type='$i32type'
15750i64size='$i64size'
15751i64type='$i64type'
15752i8size='$i8size'
15753i8type='$i8type'
5f80c64f
JH
15754i_arpainet='$i_arpainet'
15755i_bsdioctl='$i_bsdioctl'
15756i_db='$i_db'
15757i_dbm='$i_dbm'
15758i_dirent='$i_dirent'
15759i_dld='$i_dld'
15760i_dlfcn='$i_dlfcn'
15761i_fcntl='$i_fcntl'
15762i_float='$i_float'
15763i_gdbm='$i_gdbm'
15764i_grp='$i_grp'
43999f95 15765i_iconv='$i_iconv'
792d8dab 15766i_ieeefp='$i_ieeefp'
5f80c64f 15767i_inttypes='$i_inttypes'
4bc88a62 15768i_libutil='$i_libutil'
5f80c64f
JH
15769i_limits='$i_limits'
15770i_locale='$i_locale'
7f3d1cf1 15771i_machcthr='$i_machcthr'
5f80c64f
JH
15772i_malloc='$i_malloc'
15773i_math='$i_math'
15774i_memory='$i_memory'
e7fb4fcc 15775i_mntent='$i_mntent'
5f80c64f
JH
15776i_ndbm='$i_ndbm'
15777i_netdb='$i_netdb'
15778i_neterrno='$i_neterrno'
9cc6feab 15779i_netinettcp='$i_netinettcp'
5f80c64f 15780i_niin='$i_niin'
5b34fd99 15781i_poll='$i_poll'
3813c136 15782i_prot='$i_prot'
c4747d3e 15783i_pthread='$i_pthread'
5f80c64f
JH
15784i_pwd='$i_pwd'
15785i_rpcsvcdbm='$i_rpcsvcdbm'
15786i_sfio='$i_sfio'
15787i_sgtty='$i_sgtty'
f1066039 15788i_shadow='$i_shadow'
86959918 15789i_socks='$i_socks'
5f80c64f
JH
15790i_stdarg='$i_stdarg'
15791i_stddef='$i_stddef'
15792i_stdlib='$i_stdlib'
15793i_string='$i_string'
923fc586 15794i_sunmath='$i_sunmath'
5f80c64f
JH
15795i_sysaccess='$i_sysaccess'
15796i_sysdir='$i_sysdir'
15797i_sysfile='$i_sysfile'
15798i_sysfilio='$i_sysfilio'
15799i_sysin='$i_sysin'
15800i_sysioctl='$i_sysioctl'
ca52efda 15801i_syslog='$i_syslog'
fe749a9f 15802i_sysmman='$i_sysmman'
bf0c440f 15803i_sysmode='$i_sysmode'
104d25b7 15804i_sysmount='$i_sysmount'
5f80c64f
JH
15805i_sysndir='$i_sysndir'
15806i_sysparam='$i_sysparam'
15807i_sysresrc='$i_sysresrc'
15808i_syssecrt='$i_syssecrt'
15809i_sysselct='$i_sysselct'
15810i_syssockio='$i_syssockio'
15811i_sysstat='$i_sysstat'
0545a864 15812i_sysstatfs='$i_sysstatfs'
104d25b7 15813i_sysstatvfs='$i_sysstatvfs'
5f80c64f
JH
15814i_systime='$i_systime'
15815i_systimek='$i_systimek'
15816i_systimes='$i_systimes'
15817i_systypes='$i_systypes'
de4597cb 15818i_sysuio='$i_sysuio'
5f80c64f 15819i_sysun='$i_sysun'
d4935d7f 15820i_sysutsname='$i_sysutsname'
0545a864 15821i_sysvfs='$i_sysvfs'
5f80c64f
JH
15822i_syswait='$i_syswait'
15823i_termio='$i_termio'
15824i_termios='$i_termios'
15825i_time='$i_time'
15826i_unistd='$i_unistd'
0545a864 15827i_ustat='$i_ustat'
5f80c64f
JH
15828i_utime='$i_utime'
15829i_values='$i_values'
15830i_varargs='$i_varargs'
15831i_varhdr='$i_varhdr'
15832i_vfork='$i_vfork'
15833ignore_versioned_solibs='$ignore_versioned_solibs'
ff935051 15834inc_version_list='$inc_version_list'
3a096bf3 15835inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
15836incpath='$incpath'
15837inews='$inews'
15838installarchlib='$installarchlib'
15839installbin='$installbin'
15840installman1dir='$installman1dir'
15841installman3dir='$installman3dir'
dd4e71fd
JH
15842installprefix='$installprefix'
15843installprefixexp='$installprefixexp'
5f80c64f
JH
15844installprivlib='$installprivlib'
15845installscript='$installscript'
15846installsitearch='$installsitearch'
717c4fcc 15847installsitebin='$installsitebin'
5f80c64f 15848installsitelib='$installsitelib'
dd4e71fd 15849installstyle='$installstyle'
104d25b7 15850installusrbinperl='$installusrbinperl'
526fdc24 15851installvendorarch='$installvendorarch'
717c4fcc 15852installvendorbin='$installvendorbin'
a3635516 15853installvendorlib='$installvendorlib'
5f80c64f 15854intsize='$intsize'
8175356b
JH
15855ivdformat='$ivdformat'
15856ivsize='$ivsize'
15857ivtype='$ivtype'
5f80c64f
JH
15858known_extensions='$known_extensions'
15859ksh='$ksh'
15860large='$large'
15861ld='$ld'
15862lddlflags='$lddlflags'
15863ldflags='$ldflags'
437814ad 15864ldflags_uselargefiles='$ldflags_uselargefiles'
5cf1d1f1 15865ldlibpthname='$ldlibpthname'
5f80c64f
JH
15866less='$less'
15867lib_ext='$lib_ext'
15868libc='$libc'
15869libperl='$libperl'
15870libpth='$libpth'
15871libs='$libs'
43999f95
JH
15872libsdirs='$libsdirs'
15873libsfiles='$libsfiles'
15874libsfound='$libsfound'
13b3f787 15875libspath='$libspath'
5f80c64f 15876libswanted='$libswanted'
437814ad 15877libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
15878line='$line'
15879lint='$lint'
15880lkflags='$lkflags'
15881ln='$ln'
15882lns='$lns'
15883locincpth='$locincpth'
15884loclibpth='$loclibpth'
15885longdblsize='$longdblsize'
15886longlongsize='$longlongsize'
15887longsize='$longsize'
15888lp='$lp'
15889lpr='$lpr'
15890ls='$ls'
15891lseeksize='$lseeksize'
15892lseektype='$lseektype'
15893mail='$mail'
15894mailx='$mailx'
15895make='$make'
15896make_set_make='$make_set_make'
15897mallocobj='$mallocobj'
15898mallocsrc='$mallocsrc'
15899malloctype='$malloctype'
15900man1dir='$man1dir'
15901man1direxp='$man1direxp'
15902man1ext='$man1ext'
15903man3dir='$man3dir'
15904man3direxp='$man3direxp'
15905man3ext='$man3ext'
15906medium='$medium'
5f80c64f
JH
15907mips_type='$mips_type'
15908mkdir='$mkdir'
fe749a9f 15909mmaptype='$mmaptype'
5f80c64f
JH
15910models='$models'
15911modetype='$modetype'
15912more='$more'
68c15b6f 15913multiarch='$multiarch'
5f80c64f
JH
15914mv='$mv'
15915myarchname='$myarchname'
15916mydomain='$mydomain'
15917myhostname='$myhostname'
15918myuname='$myuname'
15919n='$n'
15920netdb_hlen_type='$netdb_hlen_type'
15921netdb_host_type='$netdb_host_type'
15922netdb_name_type='$netdb_name_type'
15923netdb_net_type='$netdb_net_type'
15924nm='$nm'
15925nm_opt='$nm_opt'
15926nm_so_opt='$nm_so_opt'
15927nonxs_ext='$nonxs_ext'
15928nroff='$nroff'
6b4667fc
A
15929nvEformat='$nvEformat'
15930nvFformat='$nvFformat'
15931nvGformat='$nvGformat'
15932nveformat='$nveformat'
15933nvfformat='$nvfformat'
15934nvgformat='$nvgformat'
8175356b
JH
15935nvsize='$nvsize'
15936nvtype='$nvtype'
5f80c64f
JH
15937o_nonblock='$o_nonblock'
15938obj_ext='$obj_ext'
ef4af2be 15939old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f
JH
15940optimize='$optimize'
15941orderlib='$orderlib'
15942osname='$osname'
15943osvers='$osvers'
3b777bb4 15944otherlibdirs='$otherlibdirs'
5f80c64f
JH
15945package='$package'
15946pager='$pager'
15947passcat='$passcat'
15948patchlevel='$patchlevel'
15949path_sep='$path_sep'
49c10eea 15950perl5='$perl5'
5f80c64f
JH
15951perl='$perl'
15952perladmin='$perladmin'
15953perlpath='$perlpath'
15954pg='$pg'
15955phostname='$phostname'
15956pidtype='$pidtype'
15957plibpth='$plibpth'
fe749a9f 15958pm_apiversion='$pm_apiversion'
5f80c64f
JH
15959pmake='$pmake'
15960pr='$pr'
15961prefix='$prefix'
15962prefixexp='$prefixexp'
15963privlib='$privlib'
15964privlibexp='$privlibexp'
15965prototype='$prototype'
15966ptrsize='$ptrsize'
6b8eaf93 15967quadkind='$quadkind'
d7d93a81 15968quadtype='$quadtype'
5f80c64f
JH
15969randbits='$randbits'
15970randfunc='$randfunc'
15971randseedtype='$randseedtype'
15972ranlib='$ranlib'
15973rd_nodata='$rd_nodata'
49c10eea 15974revision='$revision'
5f80c64f
JH
15975rm='$rm'
15976rmail='$rmail'
15977runnm='$runnm'
cf2093f6
JH
15978sPRIEldbl='$sPRIEldbl'
15979sPRIFldbl='$sPRIFldbl'
15980sPRIGldbl='$sPRIGldbl'
15981sPRIX64='$sPRIX64'
15982sPRId64='$sPRId64'
15983sPRIeldbl='$sPRIeldbl'
15984sPRIfldbl='$sPRIfldbl'
15985sPRIgldbl='$sPRIgldbl'
15986sPRIi64='$sPRIi64'
15987sPRIo64='$sPRIo64'
15988sPRIu64='$sPRIu64'
15989sPRIx64='$sPRIx64'
5f80c64f
JH
15990sched_yield='$sched_yield'
15991scriptdir='$scriptdir'
15992scriptdirexp='$scriptdirexp'
15993sed='$sed'
15994seedfunc='$seedfunc'
15995selectminbits='$selectminbits'
15996selecttype='$selecttype'
15997sendmail='$sendmail'
15998sh='$sh'
15999shar='$shar'
16000sharpbang='$sharpbang'
16001shmattype='$shmattype'
16002shortsize='$shortsize'
16003shrpenv='$shrpenv'
16004shsharp='$shsharp'
af4c28eb 16005sig_count='$sig_count'
5f80c64f
JH
16006sig_name='$sig_name'
16007sig_name_init='$sig_name_init'
16008sig_num='$sig_num'
824a2ba3 16009sig_num_init='$sig_num_init'
5f80c64f
JH
16010signal_t='$signal_t'
16011sitearch='$sitearch'
16012sitearchexp='$sitearchexp'
717c4fcc
JH
16013sitebin='$sitebin'
16014sitebinexp='$sitebinexp'
5f80c64f 16015sitelib='$sitelib'
526fdc24 16016sitelib_stem='$sitelib_stem'
5f80c64f 16017sitelibexp='$sitelibexp'
dd4e71fd
JH
16018siteprefix='$siteprefix'
16019siteprefixexp='$siteprefixexp'
8c99d73e 16020sizesize='$sizesize'
5f80c64f
JH
16021sizetype='$sizetype'
16022sleep='$sleep'
16023smail='$smail'
16024small='$small'
16025so='$so'
16026sockethdr='$sockethdr'
16027socketlib='$socketlib'
c890dc6c 16028socksizetype='$socksizetype'
5f80c64f
JH
16029sort='$sort'
16030spackage='$spackage'
16031spitshell='$spitshell'
16032split='$split'
16033src='$src'
16034ssizetype='$ssizetype'
16035startperl='$startperl'
16036startsh='$startsh'
16037static_ext='$static_ext'
16038stdchar='$stdchar'
16039stdio_base='$stdio_base'
16040stdio_bufsiz='$stdio_bufsiz'
16041stdio_cnt='$stdio_cnt'
16042stdio_filbuf='$stdio_filbuf'
16043stdio_ptr='$stdio_ptr'
767df6a1 16044stdio_stream_array='$stdio_stream_array'
5f80c64f
JH
16045strings='$strings'
16046submit='$submit'
16047subversion='$subversion'
16048sysman='$sysman'
16049tail='$tail'
16050tar='$tar'
16051tbl='$tbl'
16052tee='$tee'
16053test='$test'
16054timeincl='$timeincl'
16055timetype='$timetype'
16056touch='$touch'
16057tr='$tr'
16058trnl='$trnl'
16059troff='$troff'
8175356b
JH
16060u16size='$u16size'
16061u16type='$u16type'
16062u32size='$u32size'
16063u32type='$u32type'
16064u64size='$u64size'
16065u64type='$u64type'
16066u8size='$u8size'
16067u8type='$u8type'
a22e52b9 16068uidformat='$uidformat'
57def98f 16069uidsign='$uidsign'
785fb66b 16070uidsize='$uidsize'
5f80c64f
JH
16071uidtype='$uidtype'
16072uname='$uname'
16073uniq='$uniq'
d7d93a81 16074uquadtype='$uquadtype'
aaacdc8b 16075use5005threads='$use5005threads'
10cc9d2a
JH
16076use64bitall='$use64bitall'
16077use64bitint='$use64bitint'
5f80c64f 16078usedl='$usedl'
aaacdc8b 16079useithreads='$useithreads'
249b38c6 16080uselargefiles='$uselargefiles'
b0ce926a 16081uselongdouble='$uselongdouble'
09458382 16082usemorebits='$usemorebits'
5f80c64f
JH
16083usemultiplicity='$usemultiplicity'
16084usemymalloc='$usemymalloc'
16085usenm='$usenm'
16086useopcode='$useopcode'
16087useperlio='$useperlio'
16088useposix='$useposix'
16089usesfio='$usesfio'
16090useshrplib='$useshrplib'
29209bc5 16091usesocks='$usesocks'
5f80c64f 16092usethreads='$usethreads'
a3635516 16093usevendorprefix='$usevendorprefix'
5f80c64f
JH
16094usevfork='$usevfork'
16095usrinc='$usrinc'
16096uuname='$uuname'
6b4667fc 16097uvXformat='$uvXformat'
8175356b
JH
16098uvoformat='$uvoformat'
16099uvsize='$uvsize'
16100uvtype='$uvtype'
16101uvuformat='$uvuformat'
16102uvxformat='$uvxformat'
526fdc24
MS
16103vendorarch='$vendorarch'
16104vendorarchexp='$vendorarchexp'
717c4fcc
JH
16105vendorbin='$vendorbin'
16106vendorbinexp='$vendorbinexp'
a3635516 16107vendorlib='$vendorlib'
526fdc24 16108vendorlib_stem='$vendorlib_stem'
a3635516
JH
16109vendorlibexp='$vendorlibexp'
16110vendorprefix='$vendorprefix'
16111vendorprefixexp='$vendorprefixexp'
5f80c64f
JH
16112version='$version'
16113vi='$vi'
16114voidflags='$voidflags'
16115xlibpth='$xlibpth'
fe749a9f 16116xs_apiversion='$xs_apiversion'
5f80c64f
JH
16117zcat='$zcat'
16118zip='$zip'
16119EOT
16120
16121: Add in command line options if available
16122$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16123
16124: add special variables
16125$test -f $src/patchlevel.h && \
d00b958f 16126awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 16127echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
16128
16129: propagate old symbols
16130if $test -f UU/config.sh; then
16131 <UU/config.sh sort | uniq >UU/oldconfig.sh
16132 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16133 sort | uniq -u >UU/oldsyms
16134 set X `cat UU/oldsyms`
16135 shift
16136 case $# in
16137 0) ;;
16138 *)
16139 cat <<EOM
16140Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16141EOM
16142 echo "# Variables propagated from previous config.sh file." >>config.sh
16143 for sym in `cat UU/oldsyms`; do
16144 echo " Propagating $hint variable "'$'"$sym..."
16145 eval 'tmp="$'"${sym}"'"'
16146 echo "$tmp" | \
16147 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16148 done
16149 ;;
16150 esac
16151fi
16152
16153: Finish up by extracting the .SH files
16154case "$alldone" in
16155exit)
16156 $rm -rf UU
16157 echo "Done."
16158 exit 0
16159 ;;
16160cont)
16161 ;;
16162'')
16163 dflt=''
16164 nostick=true
16165 $cat <<EOM
16166
16167If you'd like to make any changes to the config.sh file before I begin
16168to configure things, do it as a shell escape now (e.g. !vi config.sh).
16169
16170EOM
16171 rp="Press return or use a shell escape to edit config.sh:"
16172 . UU/myread
16173 nostick=''
16174 case "$ans" in
16175 '') ;;
16176 *) : in case they cannot read
16177 sh 1>&4 -c "$ans";;
16178 esac
16179 ;;
16180esac
16181
16182: if this fails, just run all the .SH files by hand
16183. ./config.sh
16184
16185echo " "
16186exec 1>&4
16187. ./UU/extract
16188
16189if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16190 dflt=y
16191 case "$silent" in
16192 true) ;;
16193 *)
16194 $cat <<EOM
16195
16196Now you need to generate make dependencies by running "$make depend".
16197You might prefer to run it in background: "$make depend > makedepend.out &"
16198It can take a while, so you might not want to run it right now.
16199
16200EOM
16201 ;;
16202 esac
16203 rp="Run $make depend now?"
16204 . UU/myread
16205 case "$ans" in
16206 y*)
16207 $make depend && echo "Now you must run a $make."
16208 ;;
16209 *)
16210 echo "You must run '$make depend' then '$make'."
16211 ;;
16212 esac
16213elif test -f [Mm]akefile; then
16214 echo " "
16215 echo "Now you must run a $make."
16216else
16217 echo "Done."
16218fi
16219
16220if $test -f Policy.sh; then
16221 $cat <<EOM
16222
16223If you compile $package on a different machine or from a different object
16224directory, copy the Policy.sh file from this object directory to the
16225new one before you run Configure -- this will help you with most of
16226the policy defaults.
16227
16228EOM
16229fi
16230if $test -f config.msg; then
16231 echo "Hmm. I also noted the following information while running:"
16232 echo " "
16233 $cat config.msg >&4
16234 $rm -f config.msg
16235fi
16236$rm -f kit*isdone ark*isdone
16237$rm -rf UU
16238
16239: End of Configure
16240