This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rewording.
[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#
1acc7ade 23# Generated on Fri Mar 10 03:07:09 EET 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=''
291gccversion=''
292ccflags=''
293cppflags=''
294ldflags=''
295lkflags=''
8e07c86e 296locincpth=''
2304df62 297optimize=''
8e07c86e 298cf_email=''
2304df62
AD
299cf_by=''
300cf_time=''
8175356b 301charsize=''
2304df62 302contains=''
a0d0e21e 303cpp_stuff=''
2304df62
AD
304cpplast=''
305cppminus=''
306cpprun=''
307cppstdin=''
68c15b6f 308crosscompile=''
2304df62 309d_access=''
5ff3f7a4 310d_accessx=''
a0d0e21e 311d_alarm=''
ecfc5424 312d_attribut=''
2304df62
AD
313d_bcmp=''
314d_bcopy=''
315d_bzero=''
316d_casti32=''
317castflags=''
318d_castneg=''
a0d0e21e
LW
319d_chown=''
320d_chroot=''
2304df62 321d_chsize=''
a0d0e21e
LW
322d_closedir=''
323d_void_closedir=''
2304df62
AD
324d_const=''
325cryptlib=''
326d_crypt=''
327d_csh=''
1aef975c 328full_csh=''
a0d0e21e
LW
329d_cuserid=''
330d_dbl_dig=''
331d_difftime=''
332d_dlerror=''
333d_dlopen=''
334d_dlsymun=''
2304df62 335d_dosuid=''
a0d0e21e 336d_suidsafe=''
85ab1d1d 337d_drand48proto=''
2304df62 338d_dup2=''
5ff3f7a4
GS
339d_eaccess=''
340d_endgrent=''
e5c9fcd0
AD
341d_endhent=''
342d_endnent=''
343d_endpent=''
5ff3f7a4 344d_endpwent=''
e5c9fcd0 345d_endsent=''
f1066039 346d_endspent=''
2304df62
AD
347d_fchmod=''
348d_fchown=''
349d_fcntl=''
a0d0e21e
LW
350d_fd_macros=''
351d_fd_set=''
352d_fds_bits=''
353d_fgetpos=''
2304df62
AD
354d_flexfnam=''
355d_flock=''
a0d0e21e 356d_fork=''
c5f05a91 357d_fpos64_t=''
ad27e871 358d_fs_data_s=''
5ff3f7a4 359d_fseeko=''
a0d0e21e 360d_fsetpos=''
0545a864 361d_fstatfs=''
5ff3f7a4 362d_ftello=''
5f05dabc 363d_ftime=''
364d_gettimeod=''
a0d0e21e 365d_Gconvert=''
49dabb45 366d_getcwd=''
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=''
5ff3f7a4 395d_getpwent=''
e5c9fcd0 396d_getsent=''
dc45a647 397d_getservprotos=''
f1066039
JH
398d_getspent=''
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
AD
408d_isascii=''
409d_killpg=''
dd64f1c3 410d_lchown=''
2d4389e4 411d_ldbl_dig=''
2304df62 412d_link=''
a0d0e21e
LW
413d_locconv=''
414d_lockf=''
e5c9fcd0
AD
415d_longdbl=''
416longdblsize=''
dc45a647
MB
417d_longlong=''
418longlongsize=''
49c10eea 419d_lseekproto=''
2304df62 420d_lstat=''
1e8c3fde 421d_madvise=''
a0d0e21e
LW
422d_mblen=''
423d_mbstowcs=''
424d_mbtowc=''
0f27ced1 425d_memchr=''
2304df62
AD
426d_memcmp=''
427d_memcpy=''
428d_memmove=''
429d_memset=''
430d_mkdir=''
fe749a9f 431d_mkdtemp=''
a0d0e21e 432d_mkfifo=''
fe749a9f
JH
433d_mkstemp=''
434d_mkstemps=''
a0d0e21e 435d_mktime=''
fe749a9f
JH
436d_mmap=''
437mmaptype=''
438d_mprotect=''
2304df62
AD
439d_msg=''
440d_msgctl=''
441d_msgget=''
442d_msgrcv=''
443d_msgsnd=''
fe749a9f
JH
444d_msync=''
445d_munmap=''
a0d0e21e 446d_nice=''
c5f05a91 447d_off64_t=''
2304df62 448d_open3=''
a0d0e21e
LW
449d_fpathconf=''
450d_pathconf=''
451d_pause=''
452d_pipe=''
8e07c86e 453d_poll=''
2304df62 454d_portable=''
ef4af2be
JH
455d_old_pthread_create_joinable=''
456old_pthread_create_joinable=''
dfe9444c
AD
457d_pthread_yield=''
458d_sched_yield=''
1cfa4ec7 459sched_yield=''
bbe6c963 460d_qgcvt=''
2304df62 461d_readdir=''
85e6fe83
LW
462d_rewinddir=''
463d_seekdir=''
464d_telldir=''
a0d0e21e 465d_readlink=''
2304df62
AD
466d_rename=''
467d_rmdir=''
468d_safebcpy=''
469d_safemcpy=''
36477c24 470d_sanemcmp=''
2304df62
AD
471d_select=''
472d_sem=''
473d_semctl=''
474d_semget=''
475d_semop=''
476d_setegid=''
477d_seteuid=''
5ff3f7a4 478d_setgrent=''
dfe9444c 479d_setgrps=''
693762b4 480d_sethent=''
a0d0e21e 481d_setlinebuf=''
2304df62 482d_setlocale=''
e5c9fcd0
AD
483d_setnent=''
484d_setpent=''
2304df62
AD
485d_setpgid=''
486d_setpgrp2=''
2afac517 487d_bsdsetpgrp=''
2304df62
AD
488d_setpgrp=''
489d_setprior=''
5ff3f7a4 490d_setpwent=''
2304df62
AD
491d_setregid=''
492d_setresgid=''
493d_setresuid=''
494d_setreuid=''
495d_setrgid=''
496d_setruid=''
e5c9fcd0 497d_setsent=''
2304df62 498d_setsid=''
f1066039 499d_setspent=''
e5c9fcd0 500d_setvbuf=''
760ac839 501d_sfio=''
8ff267be 502usesfio=''
2304df62
AD
503d_shm=''
504d_shmat=''
a0d0e21e
LW
505d_shmatprototype=''
506shmattype=''
2304df62
AD
507d_shmctl=''
508d_shmdt=''
509d_shmget=''
2c7991dc 510d_sigaction=''
8ff267be 511d_sigsetjmp=''
de4597cb
JH
512d_msg_ctrunc=''
513d_msg_dontroute=''
514d_msg_oob=''
515d_msg_peek=''
516d_msg_proxy=''
2304df62 517d_oldsock=''
de4597cb 518d_scm_rights=''
2304df62
AD
519d_socket=''
520d_sockpair=''
521sockethdr=''
522socketlib=''
13b3f787 523d_socklen_t=''
68d4903c 524d_sqrtl=''
2304df62 525d_statblks=''
0545a864
JH
526d_statfs_f_flags=''
527d_statfs_s=''
104d25b7
JH
528d_fstatvfs=''
529d_statvfs=''
c2960299
AD
530d_stdio_cnt_lval=''
531d_stdio_ptr_lval=''
16d20bd9 532d_stdiobase=''
2304df62 533d_stdstdio=''
16d20bd9
AD
534stdio_base=''
535stdio_bufsiz=''
536stdio_cnt=''
dfe9444c 537stdio_filbuf=''
16d20bd9 538stdio_ptr=''
2304df62
AD
539d_index=''
540d_strchr=''
a0d0e21e 541d_strcoll=''
2304df62
AD
542d_strctcpy=''
543d_strerrm=''
544d_strerror=''
545d_sysernlst=''
546d_syserrlst=''
a89d8a78
DH
547d_strtod=''
548d_strtol=''
ff935051 549d_strtold=''
76d49b1c 550d_strtoll=''
a89d8a78 551d_strtoul=''
ff935051
JH
552d_strtoull=''
553d_strtouq=''
a0d0e21e 554d_strxfrm=''
2304df62
AD
555d_symlink=''
556d_syscall=''
a0d0e21e 557d_sysconf=''
2304df62 558d_system=''
a0d0e21e
LW
559d_tcgetpgrp=''
560d_tcsetpgrp=''
cb86ce0e 561d_telldirproto=''
85e6fe83
LW
562d_time=''
563timetype=''
2304df62
AD
564clocktype=''
565d_times=''
566d_truncate=''
a0d0e21e
LW
567d_tzname=''
568d_umask=''
bd89102f
AD
569d_semctl_semid_ds=''
570d_semctl_semun=''
571d_union_semun=''
0545a864 572d_ustat=''
2304df62 573d_vfork=''
a0d0e21e 574usevfork=''
2304df62
AD
575d_voidsig=''
576signal_t=''
577d_volatile=''
578d_charvspr=''
579d_vprintf=''
580d_wait4=''
581d_waitpid=''
a0d0e21e
LW
582d_wcstombs=''
583d_wctomb=''
584dlext=''
85e6fe83
LW
585cccdlflags=''
586ccdlflags=''
2304df62 587dlsrc=''
232e078e 588ld=''
85e6fe83 589lddlflags=''
2304df62 590usedl=''
693762b4 591doublesize=''
5ff3f7a4 592ebcdic=''
66fe083f 593fflushNULL=''
767df6a1 594fflushall=''
8175356b 595fpossize=''
a0d0e21e 596fpostype=''
a22e52b9 597gidformat=''
785fb66b
JH
598gidsign=''
599gidsize=''
2304df62
AD
600gidtype=''
601groupstype=''
602h_fcntl=''
603h_sysfile=''
5ff3f7a4 604i_arpainet=''
ecfc5424
AD
605db_hashtype=''
606db_prefixtype=''
a0d0e21e 607i_db=''
2304df62 608i_dbm=''
8e07c86e 609i_rpcsvcdbm=''
2304df62 610d_dirnamlen=''
a0d0e21e 611direntrytype=''
2304df62 612i_dirent=''
a0d0e21e 613i_dld=''
2304df62
AD
614i_dlfcn=''
615i_fcntl=''
a0d0e21e 616i_float=''
2304df62 617i_gdbm=''
28e8609d 618d_grpasswd=''
2304df62 619i_grp=''
43999f95 620i_iconv=''
792d8dab 621i_ieeefp=''
5ff3f7a4 622i_inttypes=''
a0d0e21e 623i_limits=''
4633a7c4 624i_locale=''
7f3d1cf1 625i_machcthr=''
a0d0e21e
LW
626i_malloc=''
627i_math=''
85e6fe83 628i_memory=''
e7fb4fcc 629i_mntent=''
2304df62 630i_ndbm=''
3fd537d4 631i_netdb=''
85e6fe83 632i_neterrno=''
9cc6feab 633i_netinettcp=''
2304df62
AD
634i_niin=''
635i_sysin=''
5b34fd99 636i_poll=''
c4747d3e 637i_pthread=''
2304df62
AD
638d_pwage=''
639d_pwchange=''
640d_pwclass=''
641d_pwcomment=''
642d_pwexpire=''
c4f23d77 643d_pwgecos=''
28e8609d 644d_pwpasswd=''
2304df62
AD
645d_pwquota=''
646i_pwd=''
760ac839 647i_sfio=''
f1066039 648i_shadow=''
86959918 649i_socks=''
2304df62 650i_stddef=''
a0d0e21e 651i_stdlib=''
2304df62
AD
652i_string=''
653strings=''
923fc586 654i_sunmath=''
5ff3f7a4 655i_sysaccess=''
2304df62
AD
656i_sysdir=''
657i_sysfile=''
658d_voidtty=''
659i_bsdioctl=''
a0d0e21e 660i_sysfilio=''
2304df62
AD
661i_sysioctl=''
662i_syssockio=''
ca52efda 663i_syslog=''
fe749a9f 664i_sysmman=''
bf0c440f 665i_sysmode=''
104d25b7 666i_sysmount=''
2304df62 667i_sysndir=''
a0d0e21e 668i_sysparam=''
8ff267be 669i_sysresrc=''
5ff3f7a4 670i_syssecrt=''
2304df62 671i_sysselct=''
1aef975c 672i_sysstat=''
0545a864 673i_sysstatfs=''
104d25b7 674i_sysstatvfs=''
a0d0e21e 675i_systimes=''
fed7345c 676i_systypes=''
de4597cb 677i_sysuio=''
25f94b33 678i_sysun=''
d4935d7f 679i_sysutsname=''
0545a864 680i_sysvfs=''
8ff267be 681i_syswait=''
2304df62
AD
682i_sgtty=''
683i_termio=''
684i_termios=''
685i_systime=''
686i_systimek=''
687i_time=''
688timeincl=''
85e6fe83 689i_unistd=''
0545a864 690i_ustat=''
2304df62 691i_utime=''
760ac839 692i_values=''
a0d0e21e 693i_stdarg=''
2304df62
AD
694i_varargs=''
695i_varhdr=''
696i_vfork=''
ff935051 697inc_version_list=''
3a096bf3 698inc_version_list_init=''
dd4e71fd
JH
699installprefix=''
700installprefixexp=''
701installstyle=''
104d25b7 702installusrbinperl=''
2304df62 703intsize=''
24fef2a7
AD
704longsize=''
705shortsize=''
2304df62 706libc=''
5cf1d1f1 707ldlibpthname=''
8ff267be 708libperl=''
2afac517 709shrpenv=''
8ff267be 710useshrplib=''
a0d0e21e 711glibpth=''
2304df62 712libpth=''
8e07c86e 713loclibpth=''
2304df62
AD
714plibpth=''
715xlibpth=''
1cfa4ec7 716ignore_versioned_solibs=''
2304df62 717libs=''
43999f95
JH
718libsdirs=''
719libsfiles=''
720libsfound=''
13b3f787 721libspath=''
85e6fe83 722lns=''
cf2093f6
JH
723d_PRIEldbl=''
724d_PRIFldbl=''
725d_PRIGldbl=''
726d_PRIeldbl=''
727d_PRIfldbl=''
728d_PRIgldbl=''
729sPRIEldbl=''
730sPRIFldbl=''
731sPRIGldbl=''
732sPRIeldbl=''
733sPRIfldbl=''
734sPRIgldbl=''
5ff3f7a4 735lseeksize=''
85e6fe83 736lseektype=''
8ff267be 737make_set_make=''
85e6fe83 738d_mymalloc=''
94b6baf5 739freetype=''
2304df62
AD
740mallocobj=''
741mallocsrc=''
742malloctype=''
743usemymalloc=''
16d20bd9
AD
744installman1dir=''
745man1dir=''
746man1direxp=''
747man1ext=''
748installman3dir=''
749man3dir=''
750man3direxp=''
751man3ext=''
2304df62
AD
752huge=''
753large=''
754medium=''
755models=''
756small=''
757split=''
a0d0e21e 758modetype=''
68c15b6f 759multiarch=''
2304df62
AD
760mydomain=''
761myhostname=''
762phostname=''
763c=''
764n=''
8e07c86e
AD
765d_eofnblk=''
766eagain=''
767o_nonblock=''
768rd_nodata=''
dfe9444c
AD
769netdb_hlen_type=''
770netdb_host_type=''
771netdb_name_type=''
772netdb_net_type=''
2304df62
AD
773groupcat=''
774hostcat=''
775passcat=''
85e6fe83
LW
776orderlib=''
777ranlib=''
2304df62
AD
778package=''
779spackage=''
2c7991dc 780pager=''
ff935051
JH
781api_revision=''
782api_subversion=''
783api_version=''
784api_versionstring=''
ecfc5424 785patchlevel=''
49c10eea 786revision=''
760ac839 787subversion=''
bfb7748a 788version=''
49c10eea 789perl5=''
8e07c86e 790perladmin=''
4633a7c4 791perlpath=''
78691af5 792d_nv_preserves_uv=''
8175356b
JH
793i16size=''
794i16type=''
795i32size=''
796i32type=''
797i64size=''
798i64type=''
799i8size=''
800i8type=''
801ivsize=''
802ivtype=''
803nvsize=''
804nvtype=''
805u16size=''
806u16type=''
807u32size=''
808u32type=''
809u64size=''
810u64type=''
811u8size=''
812u8type=''
813uvsize=''
814uvtype=''
815ivdformat=''
816uvoformat=''
817uvuformat=''
818uvxformat=''
dfe9444c 819pidtype=''
a0d0e21e 820prefix=''
1aef975c 821prefixexp=''
2304df62
AD
822installprivlib=''
823privlib=''
824privlibexp=''
825prototype=''
693762b4 826ptrsize=''
cf2093f6
JH
827d_PRIX64=''
828d_PRId64=''
829d_PRIi64=''
830d_PRIo64=''
831d_PRIu64=''
832d_PRIx64=''
833sPRIX64=''
834sPRId64=''
835sPRIi64=''
836sPRIo64=''
837sPRIu64=''
838sPRIx64=''
de1c2614 839d_quad=''
6b8eaf93 840quadkind=''
d7d93a81
JH
841quadtype=''
842uquadtype=''
85ab1d1d 843drand01=''
2304df62 844randbits=''
85ab1d1d
JH
845randfunc=''
846randseedtype=''
847seedfunc=''
2304df62
AD
848installscript=''
849scriptdir=''
850scriptdirexp=''
5ff3f7a4 851selectminbits=''
a0d0e21e 852selecttype=''
8ff267be 853sh=''
af4c28eb 854sig_count=''
2304df62 855sig_name=''
dfe9444c 856sig_name_init=''
8e07c86e 857sig_num=''
824a2ba3 858sig_num_init=''
4633a7c4
LW
859installsitearch=''
860sitearch=''
861sitearchexp=''
717c4fcc
JH
862installsitebin=''
863sitebin=''
864sitebinexp=''
25f94b33
AD
865installsitelib=''
866sitelib=''
526fdc24 867sitelib_stem=''
25f94b33 868sitelibexp=''
dd4e71fd
JH
869siteprefix=''
870siteprefixexp=''
a0d0e21e
LW
871sizetype=''
872so=''
c890dc6c 873socksizetype=''
2304df62
AD
874sharpbang=''
875shsharp=''
876spitshell=''
dfe9444c 877src=''
a0d0e21e 878ssizetype=''
4633a7c4 879startperl=''
2304df62
AD
880startsh=''
881stdchar=''
ed39a0f2 882d_stdio_stream_array=''
767df6a1 883stdio_stream_array=''
2304df62 884sysman=''
5ff3f7a4 885trnl=''
a22e52b9 886uidformat=''
57def98f 887uidsign=''
785fb66b 888uidsize=''
2304df62 889uidtype=''
85ab1d1d 890archname64=''
10cc9d2a
JH
891use64bitall=''
892use64bitint=''
249b38c6 893uselargefiles=''
b0ce926a 894uselongdouble=''
09458382 895usemorebits=''
85ab1d1d 896usemultiplicity=''
2304df62 897nm_opt=''
40a7a20a 898nm_so_opt=''
2304df62
AD
899runnm=''
900usenm=''
8ff267be 901useperlio=''
29209bc5 902usesocks=''
693762b4 903d_oldpthreads=''
aaacdc8b
GS
904use5005threads=''
905useithreads=''
dfe9444c 906usethreads=''
2304df62 907incpath=''
2304df62
AD
908mips_type=''
909usrinc=''
526fdc24
MS
910d_vendorarch=''
911installvendorarch=''
912vendorarch=''
913vendorarchexp=''
717c4fcc
JH
914d_vendorbin=''
915installvendorbin=''
916vendorbin=''
917vendorbinexp=''
a3635516
JH
918d_vendorlib=''
919installvendorlib=''
920vendorlib=''
526fdc24 921vendorlib_stem=''
a3635516
JH
922vendorlibexp=''
923usevendorprefix=''
924vendorprefix=''
925vendorprefixexp=''
2304df62
AD
926defvoidused=''
927voidflags=''
fe749a9f
JH
928pm_apiversion=''
929xs_apiversion=''
2304df62
AD
930CONFIG=''
931
ecfc5424
AD
932define='define'
933undef='undef'
934smallmach='pdp11 i8086 z8000 i80286 iAPX286'
935rmlist=''
936
937: We must find out about Eunice early
938eunicefix=':'
939if test -f /etc/unixtovms; then
940 eunicefix=/etc/unixtovms
941fi
942if test -f /etc/unixtovms.exe; then
943 eunicefix=/etc/unixtovms.exe
944fi
945
5ff3f7a4 946i_whoami=''
ff935051
JH
947: set useposix=false in your hint file to disable the POSIX extension.
948useposix=true
949: set useopcode=false in your hint file to disable the Opcode extension.
950useopcode=true
dfe9444c 951: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 952_exe=''
dfe9444c
AD
953: Extra object files, if any, needed on this platform.
954archobjs=''
ff935051
JH
955: Possible local include directories to search.
956: Set locincpth to "" in a hint file to defeat local include searches.
957locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
958locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
959:
960: no include file wanted by default
961inclwanted=''
962
dfe9444c 963groupstype=''
732c9516
JH
964: change the next line if compiling for Xenix/286 on Xenix/386
965xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
966: Possible local library directories to search.
967loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
968loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
969
970: general looking path for locating libraries
bf0c440f 971glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
732c9516
JH
972glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
973glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
974test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
975test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
976
977: Private path used by Configure to find libraries. Its value
978: is prepended to libpth. This variable takes care of special
979: machines, like the mips. Usually, it should be empty.
980plibpth=''
981
1cfa4ec7
GS
982: default library list
983libswanted=''
921b2963 984: some systems want to use only the non-versioned libso:s
1cfa4ec7 985ignore_versioned_solibs=''
85ab1d1d 986: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 987: set usesocks on the Configure command line to enable socks.
dfe9444c 988: set usethreads on the Configure command line to enable threads.
ff935051
JH
989: full support for void wanted by default
990defvoidused=15
991
ecfc5424 992: List of libraries we want.
693762b4 993: If anyone needs -lnet, put it in a hint file.
997d70a2 994libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 995libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 996libswanted="$libswanted ndir dir crypt sec"
997d70a2 997libswanted="$libswanted ucb bsd BSD PW x iconv"
1aef975c 998: We probably want to search /usr/shlib before most other libraries.
94b6baf5 999: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1000glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1001glibpth="/usr/shlib $glibpth"
1002: Do not use vfork unless overridden by a hint file.
1003usevfork=false
1004
8ff267be 1005: Find the basic shell for Bourne shell scripts
1006case "$sh" in
1007'')
8ff267be 1008 case "$SYSTYPE" in
1009 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1010 *) xxx='/bin/sh';;
1011 esac
1012 if test -f "$xxx"; then
1013 sh="$xxx"
1014 else
1015 : Build up a list and do a single loop so we can 'break' out.
1016 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1017 for xxx in sh bash ksh pdksh ash; do
1018 for p in $pth; do
1019 try="$try ${p}/${xxx}"
1020 done
1021 done
1022 for xxx in $try; do
1023 if test -f "$xxx"; then
1024 sh="$xxx";
8ff267be 1025 break
1026 elif test -f "$xxx.exe"; then
1027 sh="$xxx";
8ff267be 1028 break
1029 fi
1030 done
1031 fi
1032 ;;
1033esac
1034
1035case "$sh" in
1036'') cat <<EOM >&2
1037$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1038
8ff267be 1039Usually it's in /bin/sh. How did you even get this far?
46193409 1040Please contact me (Perl Maintainers) at perlbug@perl.com and
dfe9444c 1041we'll try to straighten this all out.
8ff267be 1042EOM
1043 exit 1
1044 ;;
1045esac
1046
760ac839 1047: see if sh knows # comments
8ff267be 1048if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1049 shsharp=true
1050 spitshell=cat
760ac839
LW
1051 xcat=/bin/cat
1052 test -f $xcat || xcat=/usr/bin/cat
1053 echo "#!$xcat" >try
1054 $eunicefix try
1055 chmod +x try
1056 ./try > today
1057 if test -s today; then
760ac839
LW
1058 sharpbang='#!'
1059 else
1060 echo "#! $xcat" > try
1061 $eunicefix try
1062 chmod +x try
1063 ./try > today
1064 if test -s today; then
760ac839
LW
1065 sharpbang='#! '
1066 else
760ac839
LW
1067 sharpbang=': use '
1068 fi
1069 fi
1070else
dfe9444c 1071 echo " "
8ff267be 1072 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1073 shsharp=false
1074 cd ..
1075 echo "exec grep -v '^[ ]*#'" >spitshell
1076 chmod +x spitshell
1077 $eunicefix spitshell
1078 spitshell=`pwd`/spitshell
1079 cd UU
1080 echo "I presume that if # doesn't work, #! won't work either!"
1081 sharpbang=': use '
1082fi
1083rm -f try today
1084
1085: figure out how to guarantee sh startup
8ff267be 1086case "$startsh" in
1087'') startsh=${sharpbang}${sh} ;;
1088*)
760ac839 1089esac
760ac839
LW
1090cat >try <<EOSS
1091$startsh
1092set abc
1093test "$?abc" != 1
1094EOSS
1095
1096chmod +x try
1097$eunicefix try
1098if ./try; then
8ff267be 1099 : echo "Yup, it does."
760ac839 1100else
dfe9444c
AD
1101 echo "Hmm... '$startsh' does not guarantee sh startup..."
1102 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1103fi
1104rm -f try
1105
aebf16e7
AD
1106
1107: Save command line options in file UU/cmdline.opt for later use in
1108: generating config.sh.
1109cat > cmdline.opt <<EOSH
1110# Configure command line arguments.
1111config_arg0='$0'
1112config_args='$*'
1113config_argc=$#
1114EOSH
1115argn=1
1116for arg in "$@"; do
1117 cat >>cmdline.opt <<EOSH
1118config_arg$argn='$arg'
1119EOSH
1120 argn=`expr $argn + 1`
1121done
1122
2304df62
AD
1123: produce awk script to parse command line options
1124cat >options.awk <<'EOF'
1125BEGIN {
02e93a22 1126 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1127
1128 len = length(optstr);
1129 for (i = 1; i <= len; i++) {
1130 c = substr(optstr, i, 1);
1131 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1132 if (a == ":") {
1133 arg[c] = 1;
1134 i++;
1135 }
1136 opt[c] = 1;
1137 }
1138}
1139{
1140 expect = 0;
1141 str = $0;
1142 if (substr(str, 1, 1) != "-") {
1143 printf("'%s'\n", str);
1144 next;
1145 }
1146 len = length($0);
1147 for (i = 2; i <= len; i++) {
1148 c = substr(str, i, 1);
1149 if (!opt[c]) {
1150 printf("-%s\n", substr(str, i));
1151 next;
1152 }
1153 printf("-%s\n", c);
1154 if (arg[c]) {
1155 if (i < len)
1156 printf("'%s'\n", substr(str, i + 1));
1157 else
1158 expect = 1;
1159 next;
1160 }
1161 }
1162}
1163END {
1164 if (expect)
1165 print "?";
1166}
1167EOF
1168
1169: process the command line options
4633a7c4
LW
1170set X `for arg in "$@"; do echo "X$arg"; done |
1171 sed -e s/X// | awk -f options.awk`
2304df62
AD
1172eval "set $*"
1173shift
1174rm -f options.awk
1175
1176: set up default values
1177fastread=''
1178reuseval=false
1179config_sh=''
1180alldone=''
1181error=''
1182silent=''
1183extractsh=''
ecfc5424 1184override=''
16d20bd9 1185knowitall=''
02e93a22 1186rm -f optdef.sh posthint.sh
28757baa 1187cat >optdef.sh <<EOS
1188$startsh
1189EOS
2304df62 1190
dfe9444c 1191
2304df62
AD
1192: option parsing
1193while test $# -gt 0; do
1194 case "$1" in
1195 -d) shift; fastread=yes;;
1196 -e) shift; alldone=cont;;
1197 -f)
1198 shift
1199 cd ..
1200 if test -r "$1"; then
1201 config_sh="$1"
1202 else
a0d0e21e 1203 echo "$me: cannot read config file $1." >&2
2304df62
AD
1204 error=true
1205 fi
1206 cd UU
1207 shift;;
1208 -h) shift; error=true;;
1209 -r) shift; reuseval=true;;
dfe9444c 1210 -s) shift; silent=true; realsilent=true;;
2304df62 1211 -E) shift; alldone=exit;;
16d20bd9 1212 -K) shift; knowitall=true;;
ecfc5424 1213 -O) shift; override=true;;
dfe9444c 1214 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1215 -D)
1216 shift
1217 case "$1" in
1218 *=)
1219 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1220 echo "$me: ignoring -D $1" >&2
1221 ;;
ecfc5424 1222 *=*) echo "$1" | \
1aef975c
AD
1223 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1224 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1225 esac
1226 shift
1227 ;;
1228 -U)
1229 shift
1230 case "$1" in
1aef975c 1231 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1232 *=*)
1233 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1234 echo "$me: ignoring -U $1" >&2
1235 ;;
1aef975c 1236 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1237 esac
1238 shift
1239 ;;
02e93a22
JH
1240 -A)
1241 shift
1242 xxx=''
1243 yyy="$1"
02e93a22 1244 zzz=''
5f83a3e9 1245 uuu=undef
02e93a22 1246 case "$yyy" in
5f83a3e9
JH
1247 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1248 case "$zzz" in
1249 *:*) zzz='' ;;
1250 *) xxx=append
1251 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1252 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253 esac
1254 ;;
1255 esac
1256 case "$xxx" in
1257 '') case "$yyy" in
1258 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1259 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1260 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1261 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1262 *) xxx=`echo $yyy|sed 's!:.*!!'`
1263 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1264 esac
1265 ;;
1266 esac
02e93a22
JH
1267 case "$xxx" in
1268 append)
5f83a3e9 1269 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1270 clear)
5f83a3e9 1271 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1272 define)
1273 case "$zzz" in
1274 '') zzz=define ;;
1275 esac
5f83a3e9 1276 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1277 eval)
5f83a3e9 1278 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1279 prepend)
5f83a3e9 1280 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1281 undef)
1282 case "$zzz" in
1283 '') zzz="$uuu" ;;
1284 esac
5f83a3e9
JH
1285 echo "$yyy=$zzz" >> posthint.sh ;;
1286 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1287 esac
bde6b06b 1288 shift
02e93a22 1289 ;;
dfe9444c 1290 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1291 exit 0;;
2304df62 1292 --) break;;
a0d0e21e 1293 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1294 *) break;;
1295 esac
1296done
1297
1298case "$error" in
1299true)
1300 cat >&2 <<EOM
2afac517 1301Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1302 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1303 -d : use defaults for all answers.
1304 -e : go on without questioning past the production of config.sh.
1305 -f : specify an alternate default configuration file.
1306 -h : print this help message and exit (with an error status).
1307 -r : reuse C symbols value if possible (skips costly nm extraction).
1308 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1309 -D : define symbol to have some value:
1310 -D symbol symbol gets the value 'define'
1311 -D symbol=value symbol gets the value 'value'
2304df62 1312 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1313 -K : do not use unless you know what you are doing.
ecfc5424 1314 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1315 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1316 -U : undefine symbol:
1317 -U symbol symbol gets the value 'undef'
1318 -U symbol= symbol gets completely empty
02e93a22 1319 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1320 -A symbol=value append " "value to symbol
02e93a22
JH
1321 -A append:symbol=value append value to symbol
1322 -A define:symbol=value define symbol to have value
02e93a22
JH
1323 -A clear:symbol define symbol to be ''
1324 -A define:symbol define symbol to be 'define'
1325 -A eval:symbol=value define symbol to be eval of value
1326 -A prepend:symbol=value prepend value to symbol
1327 -A undef:symbol define symbol to be 'undef'
1328 -A undef:symbol= define symbol to be ''
2304df62
AD
1329 -V : print version number and exit (with a zero status).
1330EOM
1331 exit 1
1332 ;;
1333esac
1334
dfe9444c
AD
1335: Sanity checks
1336case "$fastread$alldone" in
1337yescont|yesexit) ;;
1338*)
1339 if test ! -t 0; then
1340 echo "Say 'sh Configure', not 'sh <Configure'"
1341 exit 1
1342 fi
1343 ;;
1344esac
1345
2304df62
AD
1346exec 4>&1
1347case "$silent" in
1348true) exec 1>/dev/null;;
1349esac
1350
ecfc5424 1351: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1352touch optdef.sh
1353. ./optdef.sh
02e93a22
JH
1354: create the posthint manipulation script and leave the file out there...
1355touch posthint.sh
a0d0e21e 1356
2304df62 1357: set package name
85e6fe83 1358package=perl5
1aef975c
AD
1359first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1360last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1361case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1362ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1363*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1364esac
2304df62 1365
2304df62
AD
1366: Some greps do not return status, grrr.
1367echo "grimblepritz" >grimble
1368if grep blurfldyick grimble >/dev/null 2>&1 ; then
1369 contains=contains
1370elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1371 contains=grep
1372else
1373 contains=contains
1374fi
1375rm -f grimble
1376: the following should work in any shell
1377case "$contains" in
1378contains*)
1379 echo " "
1380 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1381 cat >contains <<'EOSS'
1382grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1383EOSS
1384chmod +x contains
1385esac
1386
dfe9444c
AD
1387: Find the path to the source tree
1388case "$src" in
1389'') case "$0" in
b233458b
JH
1390 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1391 case "$src" in
1392 /*) ;;
1393 *) src=`cd ../$src && pwd` ;;
1394 esac
1395 ;;
dfe9444c
AD
1396 *) src='.';;
1397 esac;;
1398esac
1399case "$src" in
1400'') src=/
1401 rsrc=/
1402 ;;
1403/*) rsrc="$src";;
1404*) rsrc="../$src";;
1405esac
1406if test -f $rsrc/Configure && \
1407 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1408then
1409 : found it, so we are ok.
1410else
1411 rsrc=''
1412 for src in . .. ../.. ../../.. ../../../..; do
1413 if test -f ../$src/Configure && \
1414 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1415 then
1416 rsrc=../$src
1417 break
1418 fi
1419 done
1420fi
1421case "$rsrc" in
1422'')
1423 cat <<EOM >&4
1424
1425Sorry, I can't seem to locate the source dir for $package. Please start
1426Configure with an explicit path -- i.e. /some/path/Configure.
1427
1428EOM
1429 exit 1
1430 ;;
1431../.) rsrc='..';;
1432*)
1433 echo " "
1434 echo "Sources for $package found in \"$src\"." >&4
1435 ;;
1436esac
1437
1438: script used to extract .SH files with variable substitutions
1439cat >extract <<'EOS'
2000072c 1440CONFIGDOTSH=true
dfe9444c
AD
1441echo "Doing variable substitutions on .SH files..."
1442if test -f $src/MANIFEST; then
f7ab18e9 1443 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1444else
1445 echo "(Looking for .SH files under the source directory.)"
1446 set x `(cd $src; find . -name "*.SH" -print)`
1447fi
1448shift
1449case $# in
14500) set x `(cd $src; echo *.SH)`; shift;;
1451esac
1452if test ! -f $src/$1; then
1453 shift
1454fi
1455mkdir_p='
1456name=$1;
1457create="";
1458while test $name; do
1459 if test ! -d "$name"; then
1460 create="$name $create";
1461 name=`echo $name | sed -e "s|^[^/]*$||"`;
1462 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1463 else
1464 name="";
1465 fi;
1466done;
1467for file in $create; do
1468 mkdir $file;
1469done
1470'
1471for file in $*; do
1472 case "$src" in
1473 ".")
1474 case "$file" in
1475 */*)
1476 dir=`expr X$file : 'X\(.*\)/'`
1477 file=`expr X$file : 'X.*/\(.*\)'`
1478 (cd $dir && . ./$file)
1479 ;;
1480 *)
1481 . ./$file
1482 ;;
1483 esac
1484 ;;
1485 *)
1486 case "$file" in
1487 */*)
1488 dir=`expr X$file : 'X\(.*\)/'`
1489 file=`expr X$file : 'X.*/\(.*\)'`
1490 (set x $dir; shift; eval $mkdir_p)
1491 sh <$src/$dir/$file
1492 ;;
1493 *)
1494 sh <$src/$file
1495 ;;
1496 esac
1497 ;;
1498 esac
1499done
1500if test -f $src/config_h.SH; then
1501 if test ! -f config.h; then
1502 : oops, they left it out of MANIFEST, probably, so do it anyway.
1503 . $src/config_h.SH
1504 fi
1505fi
1506EOS
1507
1508: extract files and exit if asked to do so
1509case "$extractsh" in
1510true)
1511 case "$realsilent" in
1512 true) ;;
1513 *) exec 1>&4;;
1514 esac
1515 case "$config_sh" in
1516 '') config_sh='config.sh';;
1517 esac
1518 echo " "
1519 echo "Fetching answers from $config_sh..."
1520 cd ..
1521 . $config_sh
1522 test "$override" && . ./optdef.sh
1523 echo " "
1524 . UU/extract
1525 rm -rf UU
1526 echo "Done."
1527 exit 0
1528 ;;
1529esac
1530
1531: Eunice requires " " instead of "", can you believe it
1532echo " "
1533: Here we go...
1534echo "Beginning of configuration questions for $package."
1535
1536trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1537
2304df62
AD
1538: first determine how to suppress newline on echo command
1539echo " "
1540echo "Checking echo to see how to suppress newlines..."
1541(echo "hi there\c" ; echo " ") >.echotmp
1542if $contains c .echotmp >/dev/null 2>&1 ; then
1543 echo "...using -n."
1544 n='-n'
1545 c=''
1546else
1547 cat <<'EOM'
1548...using \c
1549EOM
1550 n=''
1551 c='\c'
1552fi
1553echo $n "The star should be here-->$c"
1554echo '*'
1555rm -f .echotmp
1556
1557: Now test for existence of everything in MANIFEST
1558echo " "
dfe9444c 1559if test -f $rsrc/MANIFEST; then
2304df62 1560 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1561 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1562 rm -f missing
dfe9444c 1563 tmppwd=`pwd`
2304df62 1564 for filelist in x??; do
dfe9444c 1565 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1566 done
1567 if test -s missing; then
1568 cat missing >&4
1569 cat >&4 <<'EOM'
1570
1571THIS PACKAGE SEEMS TO BE INCOMPLETE.
1572
1573You have the option of continuing the configuration process, despite the
1574distinct possibility that your kit is damaged, by typing 'y'es. If you
1575do, don't blame me if something goes wrong. I advise you to type 'n'o
46193409 1576and contact the author (perlbug@perl.com).
2304df62
AD
1577
1578EOM
1579 echo $n "Continue? [n] $c" >&4
1580 read ans
1581 case "$ans" in
1582 y*)
1583 echo "Continuing..." >&4
1584 rm -f missing
1585 ;;
1586 *)
1587 echo "ABORTING..." >&4
1588 kill $$
1589 ;;
1590 esac
1591 else
dfe9444c 1592 echo "Looks good..."
2304df62
AD
1593 fi
1594else
1595 echo "There is no MANIFEST file. I hope your kit is complete !"
1596fi
1597rm -f missing x??
1598
5ff3f7a4
GS
1599echo " "
1600: Find the appropriate value for a newline for tr
1601if test -n "$DJGPP"; then
1602 trnl='\012'
1603fi
1604if test X"$trnl" = X; then
1605 case "`echo foo|tr '\n' x 2>/dev/null`" in
1606 foox) trnl='\n' ;;
1607 esac
1608fi
1609if test X"$trnl" = X; then
1610 case "`echo foo|tr '\012' x 2>/dev/null`" in
1611 foox) trnl='\012' ;;
1612 esac
1613fi
1614if test X"$trnl" = X; then
1615 cat <<EOM >&2
1616
1617$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1618
1619EOM
1620 exit 1
1621fi
1622
2304df62
AD
1623: compute the number of columns on the terminal for proper question formatting
1624case "$COLUMNS" in
1625'') COLUMNS='80';;
1626esac
1627
1628: set up the echo used in my read
1629myecho="case \"\$xxxm\" in
1630'') echo $n \"\$rp $c\" >&4;;
1631*) case \"\$rp\" in
1632 '') echo $n \"[\$xxxm] $c\";;
1633 *)
1634 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1635 echo \"\$rp\" >&4
1636 echo $n \"[\$xxxm] $c\" >&4
1637 else
1638 echo $n \"\$rp [\$xxxm] $c\" >&4
1639 fi
1640 ;;
1641 esac;;
1642esac"
1643
1644: now set up to do reads with possible shell escape and default assignment
1645cat <<EOSC >myread
28757baa 1646$startsh
2304df62
AD
1647xxxm=\$dflt
1648$myecho
1649ans='!'
1650case "\$fastread" in
1651yes) case "\$dflt" in
1652 '') ;;
1653 *) ans='';
1654 case "\$silent-\$rp" in
1655 true-) ;;
1656 *) echo " " >&4;;
1657 esac;;
1658 esac;;
1659*) case "\$silent" in
1660 true) case "\$rp" in
1661 '') ans='';;
1662 esac;;
1663 esac;;
1664esac
1665while expr "X\$ans" : "X!" >/dev/null; do
1666 read answ
1667 set x \$xxxm
1668 shift
dfe9444c 1669 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1670 case "\$answ" in
dfe9444c
AD
1671 "!")
1672 sh 1>&4
1673 echo " "
1674 $myecho
1675 ;;
1676 !*)
1677 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1678 shift
1679 sh 1>&4 -c "\$*"
1680 echo " "
1681 $myecho
1682 ;;
2304df62
AD
1683 "\$ans")
1684 case "\$ans" in
ecfc5424
AD
1685 \\&*)
1686 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1687 shift
1688 case "\$1" in
1689 -d)
1690 fastread=yes
40a7a20a 1691 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1692 ;;
1693 -*)
40a7a20a 1694 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1695 ;;
1696 esac
1697 $myecho
1698 ans=!
1699 ;;
2304df62
AD
1700 esac;;
1701 *)
1702 case "\$aok" in
1703 y)
1704 echo "*** Substitution done -- please confirm."
1705 xxxm="\$ans"
c9795ab7 1706 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1707 xxxm="\$ans"
1708 ans=!
1709 ;;
1710 *)
1711 echo "*** Error -- try again."
1712 ans=!
1713 ;;
1714 esac
1715 $myecho
1716 ;;
1717 esac
1718 case "\$ans\$xxxm\$nostick" in
1719 '')
1720 ans=!
1721 $myecho
1722 ;;
1723 esac
1724done
1725case "\$ans" in
1726'') ans="\$xxxm";;
1727esac
1728EOSC
1729
1730: create .config dir to save info across Configure sessions
1731test -d ../.config || mkdir ../.config
1732cat >../.config/README <<EOF
1733This directory created by Configure to save information that should
dfe9444c 1734persist across sessions for $package.
2304df62
AD
1735
1736You may safely delete it if you wish.
1737EOF
1738
1739: general instructions
1740needman=true
1741firsttime=true
760ac839 1742user=`(logname) 2>/dev/null`
dfe9444c
AD
1743case "$user" in
1744'') user=`whoami 2>&1`;;
760ac839 1745esac
2304df62
AD
1746if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1747 firsttime=false
1748 echo " "
1749 rp='Would you like to see the instructions?'
1750 dflt=n
1751 . ./myread
1752 case "$ans" in
1753 [yY]*) ;;
1754 *) needman=false;;
1755 esac
1756fi
1757if $needman; then
1758 cat <<EOH
4e2a5f63 1759
2304df62 1760This installation shell script will examine your system and ask you questions
a0d0e21e 1761to determine how the perl5 package should be installed. If you get
2304df62
AD
1762stuck on a question, you may use a ! shell escape to start a subshell or
1763execute a command. Many of the questions will have default answers in square
1764brackets; typing carriage return will give you the default.
1765
1766On some of the questions which ask for file or directory names you are allowed
1767to use the ~name construct to specify the login directory belonging to "name",
1768even if you don't have a shell which knows about that. Questions where this is
1769allowed will be marked "(~name ok)".
1770
1771EOH
1772 rp=''
1773 dflt='Type carriage return to continue'
1774 . ./myread
1775 cat <<'EOH'
1776
1777The prompter used in this script allows you to use shell variables and
1778backticks in your answers. You may use $1, $2, etc... to refer to the words
1779in the default answer, as if the default line was a set of arguments given to a
1780script shell. This means you may also use $* to repeat the whole default line,
1781so you do not have to re-type everything to add something to the default.
1782
1783Everytime there is a substitution, you will have to confirm. If there is an
1784error (e.g. an unmatched backtick), the default answer will remain unchanged
1785and you will be prompted again.
1786
1787If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1788the questions and use the computed defaults (or the previous answers if there
1789was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1790You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1791on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1792
1793EOH
1794 . ./myread
1795 cat <<EOH
1796
1797Much effort has been expended to ensure that this shell script will run on any
1798Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1799Configure and run it again. If you can't run Configure for some reason,
1800you'll have to generate a config.sh file by hand. Whatever problems you
46193409 1801have, let me (perlbug@perl.com) know how I blew it.
2304df62
AD
1802
1803This installation script affects things in two ways:
1804
18051) it may do direct variable substitutions on some of the files included
1806 in this kit.
18072) it builds a config.h file for inclusion in C programs. You may edit
1808 any of these files as the need arises after running this script.
1809
1810If you make a mistake on a question, there is no easy way to back up to it
1811currently. The easiest thing to do is to edit config.sh and rerun all the SH
1812files. Configure will offer to let you do this before it runs the SH files.
1813
1814EOH
1815 dflt='Type carriage return to continue'
1816 . ./myread
1817 case "$firsttime" in
1818 true) echo $user >>../.config/instruct;;
1819 esac
1820fi
1821
2304df62
AD
1822: find out where common programs are
1823echo " "
1824echo "Locating common programs..." >&4
1825cat <<EOSC >loc
1826$startsh
1827case \$# in
18280) exit 1;;
1829esac
1830thing=\$1
1831shift
1832dflt=\$1
1833shift
1834for dir in \$*; do
1835 case "\$thing" in
1836 .)
1837 if test -d \$dir/\$thing; then
1838 echo \$dir
1839 exit 0
1840 fi
1841 ;;
1842 *)
a0d0e21e 1843 for thisthing in \$dir/\$thing; do
ecfc5424 1844 : just loop through to pick last item
a0d0e21e 1845 done
25f94b33 1846 if test -f \$thisthing; then
a0d0e21e 1847 echo \$thisthing
2304df62
AD
1848 exit 0
1849 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1850 if test -n "$DJGPP"; then
1851 echo \$dir/\$thing.exe
1852 else
1853 : on Eunice apparently
1854 echo \$dir/\$thing
1855 fi
2304df62
AD
1856 exit 0
1857 fi
1858 ;;
1859 esac
1860done
1861echo \$dflt
1862exit 1
1863EOSC
1864chmod +x loc
1865$eunicefix loc
1866loclist="
1867awk
1868cat
ecfc5424 1869comm
2304df62
AD
1870cp
1871echo
1872expr
1873grep
a0d0e21e 1874ls
dfe9444c 1875make
2304df62 1876mkdir
2304df62
AD
1877rm
1878sed
1879sort
85e6fe83 1880touch
2304df62
AD
1881tr
1882uniq
1883"
1884trylist="
1885Mcc
dfe9444c 1886ar
2304df62
AD
1887byacc
1888cpp
1889csh
1890date
1891egrep
8ff267be 1892gzip
2c7991dc 1893less
8ff267be 1894ln
2c7991dc 1895more
693762b4 1896nm
2304df62 1897nroff
2c7991dc 1898pg
2304df62
AD
1899test
1900uname
8ff267be 1901zip
2304df62 1902"
8e07c86e 1903pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1904pth="$pth /lib /usr/lib"
1905for file in $loclist; do
dfe9444c
AD
1906 eval xxx=\$$file
1907 case "$xxx" in
1908 /*|?:[\\/]*)
1909 if test -f "$xxx"; then
1910 : ok
1911 else
1912 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1913 xxx=`./loc $file $file $pth`
1914 fi
1915 ;;
1916 '') xxx=`./loc $file $file $pth`;;
1917 *) xxx=`./loc $xxx $xxx $pth`;;
1918 esac
2304df62
AD
1919 eval $file=$xxx
1920 eval _$file=$xxx
1921 case "$xxx" in
1922 /*)
1923 echo $file is in $xxx.
1924 ;;
8e07c86e
AD
1925 ?:[\\/]*)
1926 echo $file is in $xxx.
1927 ;;
2304df62 1928 *)
25f94b33
AD
1929 echo "I don't know where '$file' is, and my life depends on it." >&4
1930 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1931 exit 1
2304df62
AD
1932 ;;
1933 esac
1934done
1935echo " "
1936echo "Don't worry if any of the following aren't found..."
1937say=offhand
1938for file in $trylist; do
dfe9444c
AD
1939 eval xxx=\$$file
1940 case "$xxx" in
1941 /*|?:[\\/]*)
1942 if test -f "$xxx"; then
1943 : ok
1944 else
1945 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1946 xxx=`./loc $file $file $pth`
1947 fi
1948 ;;
1949 '') xxx=`./loc $file $file $pth`;;
1950 *) xxx=`./loc $xxx $xxx $pth`;;
1951 esac
2304df62
AD
1952 eval $file=$xxx
1953 eval _$file=$xxx
1954 case "$xxx" in
1955 /*)
1956 echo $file is in $xxx.
1957 ;;
8e07c86e
AD
1958 ?:[\\/]*)
1959 echo $file is in $xxx.
1960 ;;
2304df62
AD
1961 *)
1962 echo "I don't see $file out there, $say."
1963 say=either
1964 ;;
1965 esac
1966done
1967case "$egrep" in
1968egrep)
1969 echo "Substituting grep for egrep."
1970 egrep=$grep
1971 ;;
1972esac
8ff267be 1973case "$ln" in
1974ln)
1975 echo "Substituting cp for ln."
1976 ln=$cp
1977 ;;
1978esac
2304df62
AD
1979case "$test" in
1980test)
1981 echo "Hopefully test is built into your sh."
1982 ;;
1983*)
ecfc5424 1984 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
1985 echo "Using the test built into your sh."
1986 test=test
1987 _test=test
1988 fi
1989 ;;
1990esac
1991case "$echo" in
1992echo)
1993 echo "Hopefully echo is built into your sh."
1994 ;;
1995'') ;;
1996*)
1997 echo " "
1998echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1999 $echo $n "hi there$c" >foo1
2000 echo $n "hi there$c" >foo2
2001 if cmp foo1 foo2 >/dev/null 2>&1; then
2002 echo "They are compatible. In fact, they may be identical."
2003 else
2004 case "$n" in
2005 '-n') n='' c='\c';;
2006 *) n='-n' c='';;
2007 esac
2008 cat <<FOO
2009They are not compatible! You are probably running ksh on a non-USG system.
2010I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2011have echo built in and we may have to run some Bourne shell scripts. That
2012means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2013
2014FOO
2015 $echo $n "The star should be here-->$c"
2016 $echo "*"
2017 fi
2018 $rm -f foo1 foo2
2019 ;;
2020esac
2021
a0d0e21e
LW
2022: determine whether symbolic links are supported
2023echo " "
2024$touch blurfl
2025if $ln -s blurfl sym > /dev/null 2>&1 ; then
2026 echo "Symbolic links are supported." >&4
2027 lns="$ln -s"
2028else
2029 echo "Symbolic links are NOT supported." >&4
2030 lns="$ln"
2031fi
2032$rm -f blurfl sym
2033
ecfc5424
AD
2034: see whether [:lower:] and [:upper:] are supported character classes
2035echo " "
ecfc5424
AD
2036case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2037ABYZ)
2038 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2039 up='[:upper:]'
2040 low='[:lower:]'
2041 ;;
28e8609d
JH
2042*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2043 # (0xc9 and 0xd1), therefore that is a nice testing point.
2044 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2045 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2046 ij) up='[A-Z]'
2047 low='[a-z]'
2048 ;;
2049 esac
2050 fi
2051 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2052 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2053 ij) up='A-Z'
2054 low='a-z'
2055 ;;
2056 esac
2057 fi
2058 if test "X$up" = X -o "X$low" = X; then
2059 case "`echo IJ | od -x 2>/dev/null`" in
2060 *C9D1*|*c9d1*)
2061 echo "Hey, this might be EBCDIC." >&4
2062 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2063 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2064 ij) up='[A-IJ-RS-Z]'
2065 low='[a-ij-rs-z]'
2066 ;;
2067 esac
2068 fi
2069 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2070 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2071 ij) up='A-IJ-RS-Z'
2072 low='a-ij-rs-z'
2073 ;;
2074 esac
2075 fi
2076 ;;
2077 esac
2078 fi
2079esac
3eaeeeae 2080case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2081ij)
2082 echo "Using $up and $low to convert case." >&4
2083 ;;
ecfc5424 2084*)
28e8609d
JH
2085 echo "I don't know how to translate letters from upper to lower case." >&4
2086 echo "Your tr is not acting any way I know of." >&4
2087 exit 1
2088 ;;
ecfc5424
AD
2089esac
2090: set up the translation script tr, must be called with ./tr of course
2091cat >tr <<EOSC
2092$startsh
2093case "\$1\$2" in
2094'[A-Z][a-z]') exec $tr '$up' '$low';;
2095'[a-z][A-Z]') exec $tr '$low' '$up';;
2096esac
2097exec $tr "\$@"
2098EOSC
2099chmod +x tr
2100$eunicefix tr
2101
2304df62
AD
2102: Try to determine whether config.sh was made on this system
2103case "$config_sh" in
2104'')
43999f95
JH
2105myuname=`$uname -a 2>/dev/null`
2106$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2107# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2108# because the A-Z/a-z are not consecutive.
a0d0e21e 2109myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2110 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2111newmyuname="$myuname"
2304df62 2112dflt=n
16d20bd9
AD
2113case "$knowitall" in
2114'')
2115 if test -f ../config.sh; then
2116 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2117 eval "`grep myuname= ../config.sh`"
2118 fi
2119 if test "X$myuname" = "X$newmyuname"; then
2120 dflt=y
2121 fi
2304df62 2122 fi
16d20bd9
AD
2123 ;;
2124*) dflt=y;;
2125esac
2304df62
AD
2126
2127: Get old answers from old config file if Configure was run on the
2128: same system, otherwise use the hints.
2129hint=default
2130cd ..
2131if test -f config.sh; then
16d20bd9
AD
2132 echo " "
2133 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2134 . UU/myread
2135 case "$ans" in
2136 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2137 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2138 tmp_n="$n"
2139 tmp_c="$c"
85cad39c 2140 tmp_sh="$sh"
2304df62
AD
2141 . ./config.sh
2142 cp config.sh UU
ecfc5424
AD
2143 n="$tmp_n"
2144 c="$tmp_c"
85cad39c 2145 : Older versions did not always set $sh. Catch re-use of such
2146 : an old config.sh.
2147 case "$sh" in
2148 '') sh="$tmp_sh" ;;
2149 esac
2304df62
AD
2150 hint=previous
2151 ;;
2152 esac
2153fi
2154if test ! -f config.sh; then
2155 $cat <<EOM
2156
4e2a5f63
AD
2157First time through, eh? I have some defaults handy for some systems
2158that need some extra help getting the Configure answers right:
2304df62
AD
2159
2160EOM
dfe9444c 2161 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2162 dflt=''
2163 : Half the following guesses are probably wrong... If you have better
46193409 2164 : tests or hints, please send them to perlbug@perl.com
2304df62 2165 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2166 $test -f /irix && osname=irix
85e6fe83
LW
2167 $test -f /xenix && osname=sco_xenix
2168 $test -f /dynix && osname=dynix
2169 $test -f /dnix && osname=dnix
5f05dabc 2170 $test -f /lynx.os && osname=lynxos
2171 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2172 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2173 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2174 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2175 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2176 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2177 $test -d /usr/apollo/bin && osname=apollo
2178 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2179 $test -d /usr/include/minix && osname=minix
e060872b 2180 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2181 osname=machten
4633a7c4 2182 if $test -x /sbin/version; then
dfe9444c 2183 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2184 $sed -e 's/[A-Za-z]$//'`
2185 elif $test -x /usr/etc/version; then
dfe9444c 2186 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2187 $sed -e 's/[A-Za-z]$//'`
2188 else
2189 osvers="$2.$3"
2190 fi
2191 fi
aaacdc8b
GS
2192
2193 $test -f /sys/posix.dll &&
2194 $test -f /usr/bin/what &&
2195 set X `/usr/bin/what /sys/posix.dll` &&
2196 $test "$3" = UWIN &&
2197 osname=uwin &&
2198 osvers="$5"
2199
2304df62
AD
2200 if $test -f $uname; then
2201 set X $myuname
2202 shift
2203
2304df62 2204 case "$5" in
85e6fe83 2205 fps*) osname=fps ;;
2304df62
AD
2206 mips*)
2207 case "$4" in
85e6fe83
LW
2208 umips) osname=umips ;;
2209 *) osname=mips ;;
2304df62 2210 esac;;
85e6fe83
LW
2211 [23]100) osname=mips ;;
2212 next*) osname=next ;;
ecfc5424 2213 i386*)
c6912327
JH
2214 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2215 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2216 osname='sco'
2217 osvers=$tmp
2218 elif $test -f /etc/kconfig; then
ecfc5424 2219 osname=isc
bd628c73 2220 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2221 osvers=4
2222 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2223 osvers=3
2304df62 2224 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2225 osvers=2
ecfc5424
AD
2226 fi
2227 fi
2000072c 2228 tmp=''
ecfc5424 2229 ;;
c4f23d77
AD
2230 pc*)
2231 if test -n "$DJGPP"; then
2232 osname=dos
2233 osvers=djgpp
2234 fi
2235 ;;
2304df62
AD
2236 esac
2237
2238 case "$1" in
a0d0e21e
LW
2239 aix) osname=aix
2240 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2241 case "$tmp" in
1aef975c 2242 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2243 '<3240'|'<>3240') osvers=3.2.0 ;;
2244 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2245 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2246 *) osvers=$tmp;;
a0d0e21e
LW
2247 esac
2248 ;;
aaacdc8b
GS
2249 bsd386) osname=bsd386
2250 osvers=`$uname -r`
2251 ;;
2252 cygwin*) osname=cygwin
2253 osvers="$3"
2254 ;;
23f87696
SZ
2255 *dc.osx) osname=dcosx
2256 osvers="$3"
2257 ;;
a0d0e21e
LW
2258 dnix) osname=dnix
2259 osvers="$3"
2260 ;;
2261 domainos) osname=apollo
2262 osvers="$3"
2263 ;;
2264 dgux) osname=dgux
2265 osvers="$3"
2266 ;;
760ac839 2267 dynixptx*) osname=dynixptx
e58e581d 2268 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2269 ;;
a0d0e21e
LW
2270 freebsd) osname=freebsd
2271 osvers="$3" ;;
2272 genix) osname=genix ;;
2273 hp*) osname=hpux
bfb7748a 2274 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2275 ;;
a78b0d02 2276 irix*) osname=irix
a0d0e21e
LW
2277 case "$3" in
2278 4*) osvers=4 ;;
2279 5*) osvers=5 ;;
ecfc5424 2280 *) osvers="$3" ;;
a0d0e21e
LW
2281 esac
2282 ;;
2283 linux) osname=linux
2284 case "$3" in
a0d0e21e
LW
2285 *) osvers="$3" ;;
2286 esac
2287 ;;
28e8609d
JH
2288 MiNT) osname=mint
2289 ;;
2290 netbsd*) osname=netbsd
ecfc5424
AD
2291 osvers="$3"
2292 ;;
4e81affe
MM
2293 news-os) osvers="$3"
2294 case "$3" in
2295 4*) osname=newsos4 ;;
2296 *) osname=newsos ;;
2297 esac
2298 ;;
aaacdc8b
GS
2299 next*) osname=next ;;
2300 POSIX-BC | posix-bc ) osname=posix-bc
2301 osvers="$3"
a0d0e21e 2302 ;;
ae3afa4e
TH
2303 powerux | power_ux | powermax_os | powermaxos | \
2304 powerunix | power_unix) osname=powerux
2305 osvers="$3"
2306 ;;
aaacdc8b
GS
2307 qnx) osname=qnx
2308 osvers="$4"
2309 ;;
a0d0e21e
LW
2310 solaris) osname=solaris
2311 case "$3" in
2312 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2313 *) osvers="$3" ;;
a0d0e21e
LW
2314 esac
2315 ;;
85e6fe83
LW
2316 sunos) osname=sunos
2317 case "$3" in
85e6fe83
LW
2318 5*) osname=solaris
2319 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2320 *) osvers="$3" ;;
2304df62
AD
2321 esac
2322 ;;
a0d0e21e 2323 titanos) osname=titanos
85e6fe83 2324 case "$3" in
a0d0e21e
LW
2325 1*) osvers=1 ;;
2326 2*) osvers=2 ;;
2327 3*) osvers=3 ;;
2328 4*) osvers=4 ;;
ecfc5424 2329 *) osvers="$3" ;;
2304df62
AD
2330 esac
2331 ;;
85e6fe83 2332 ultrix) osname=ultrix
ecfc5424 2333 osvers="$3"
2304df62 2334 ;;
28757baa 2335 osf1|mls+) case "$5" in
fed7345c
AD
2336 alpha)
2337 osname=dec_osf
313489a2 2338 osvers=`echo "$3" | sed 's/^[xvt]//'`
ecfc5424
AD
2339 ;;
2340 hp*) osname=hp_osf1 ;;
2341 mips) osname=mips_osf1 ;;
85e6fe83
LW
2342 esac
2343 ;;
0337d152
BG
2344 unixware) osname=svr5
2345 osvers="$4"
2346 ;;
2347 uts) osname=uts
a0d0e21e
LW
2348 osvers="$3"
2349 ;;
85e6fe83 2350 $2) case "$osname" in
2304df62 2351 *isc*) ;;
a0d0e21e 2352 *freebsd*) ;;
5f05dabc 2353 svr*)
a0d0e21e
LW
2354 : svr4.x or possibly later
2355 case "svr$3" in
2356 ${osname}*)
2357 osname=svr$3
2358 osvers=$4
2359 ;;
2360 esac
2361 case "$osname" in
2362 svr4.0)
2363 : Check for ESIX
2364 if test -f /stand/boot ; then
2365 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2366 if test -n "$INITPROG" -a -f "$INITPROG"; then
2367 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2368 if test -n "$isesix"; then
a0d0e21e
LW
2369 osname=esix4
2370 fi
2371 fi
2372 fi
2373 ;;
2374 esac
2375 ;;
2304df62 2376 *) if test -f /etc/systemid; then
a0d0e21e
LW
2377 osname=sco
2378 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2379 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2380 osvers=$1.$2.$3
c4f23d77 2381 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2382 osvers=$1.$2
c4f23d77 2383 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2384 osvers=$1
2304df62 2385 fi
a0d0e21e
LW
2386 else
2387 case "$osname" in
2388 '') : Still unknown. Probably a generic Sys V.
2389 osname="sysv"
2390 osvers="$3"
2391 ;;
2392 esac
2304df62
AD
2393 fi
2394 ;;
2395 esac
2396 ;;
a0d0e21e
LW
2397 *) case "$osname" in
2398 '') : Still unknown. Probably a generic BSD.
2399 osname="$1"
2400 osvers="$3"
2401 ;;
2402 esac
2403 ;;
2304df62
AD
2404 esac
2405 else
dfe9444c
AD
2406 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2407 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2408 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2409 osname=news_os
2304df62 2410 fi
dfe9444c 2411 $rm -f UU/kernel.what
8e07c86e
AD
2412 elif test -d c:/.; then
2413 set X $myuname
2414 osname=os2
2415 osvers="$5"
2304df62
AD
2416 fi
2417 fi
85e6fe83 2418
a0d0e21e
LW
2419 : Now look for a hint file osname_osvers, unless one has been
2420 : specified already.
2421 case "$hintfile" in
2422 ''|' ')
1e127011 2423 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2424 : Also try without trailing minor version numbers.
1e127011
DD
2425 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2426 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2427 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2428 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2429 case "$file" in
2430 '') dflt=none ;;
2431 *) case "$osvers" in
2432 '') dflt=$file
2433 ;;
dfe9444c 2434 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2435 dflt=$file
dfe9444c 2436 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2437 dflt=$xfile
dfe9444c 2438 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2439 dflt=$xxfile
dfe9444c 2440 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2441 dflt=$xxxfile
dfe9444c 2442 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2443 dflt=$xxxxfile
dfe9444c 2444 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2445 dflt="${osname}"
2446 else
2447 dflt=none
2448 fi
2449 ;;
2450 esac
85e6fe83
LW
2451 ;;
2452 esac
4e2a5f63
AD
2453 if $test -f Policy.sh ; then
2454 case "$dflt" in
2455 *Policy*) ;;
2456 none) dflt="Policy" ;;
2457 *) dflt="Policy $dflt" ;;
2458 esac
2459 fi
85e6fe83 2460 ;;
a0d0e21e 2461 *)
ecfc5424 2462 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2463 ;;
2304df62 2464 esac
1aef975c 2465
4e2a5f63
AD
2466 if $test -f Policy.sh ; then
2467 $cat <<EOM
2468
2469There's also a Policy hint file available, which should make the
2470site-specific (policy) questions easier to answer.
2471EOM
2472
2473 fi
2474
2304df62
AD
2475 $cat <<EOM
2476
2477You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2478A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2479is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2480
2481EOM
4e2a5f63 2482
2304df62 2483 rp="Which of these apply, if any?"
dfe9444c 2484 . UU/myread
85e6fe83
LW
2485 tans=$ans
2486 for file in $tans; do
4e2a5f63
AD
2487 if $test X$file = XPolicy -a -f Policy.sh; then
2488 . Policy.sh
2489 $cat Policy.sh >> UU/config.sh
2490 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2491 . $src/hints/$file.sh
2492 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2493 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2494 : nothing
2495 else
85e6fe83
LW
2496 : Give one chance to correct a possible typo.
2497 echo "$file.sh does not exist"
2498 dflt=$file
2499 rp="hint to use instead?"
dfe9444c 2500 . UU/myread
85e6fe83 2501 for file in $ans; do
dfe9444c
AD
2502 if $test -f "$src/hints/$file.sh"; then
2503 . $src/hints/$file.sh
2504 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2505 elif $test X$ans = X -o X$ans = Xnone ; then
2506 : nothing
2507 else
2508 echo "$file.sh does not exist -- ignored."
2509 fi
2510 done
2304df62
AD
2511 fi
2512 done
85e6fe83 2513
2304df62 2514 hint=recommended
85e6fe83 2515 : Remember our hint file for later.
dfe9444c 2516 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2517 hintfile="$file"
85e6fe83 2518 else
a0d0e21e 2519 hintfile=''
85e6fe83 2520 fi
2304df62
AD
2521fi
2522cd UU
2523;;
2524*)
2525 echo " "
2526 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2527 tmp_n="$n"
2528 tmp_c="$c"
2304df62
AD
2529 cd ..
2530 cp $config_sh config.sh 2>/dev/null
a78b0d02 2531 chmod +w config.sh
2304df62
AD
2532 . ./config.sh
2533 cd UU
2534 cp ../config.sh .
ecfc5424
AD
2535 n="$tmp_n"
2536 c="$tmp_c"
2304df62
AD
2537 hint=previous
2538 ;;
2539esac
1aef975c
AD
2540test "$override" && . ./optdef.sh
2541myuname="$newmyuname"
2304df62
AD
2542
2543: Restore computed paths
2544for file in $loclist $trylist; do
2545 eval $file="\$_$file"
2546done
2547
85e6fe83 2548cat << EOM
a0d0e21e 2549
85e6fe83 2550Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2551The default value is probably right if the name rings a bell. Otherwise,
2552since spelling matters for me, either accept the default or answer "none"
2553to leave it blank.
a0d0e21e 2554
85e6fe83 2555EOM
85e6fe83 2556case "$osname" in
a0d0e21e 2557 ''|' ')
85e6fe83 2558 case "$hintfile" in
a0d0e21e 2559 ''|' '|none) dflt=none ;;
ecfc5424 2560 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2561 esac
2562 ;;
2563 *) dflt="$osname" ;;
2564esac
2565rp="Operating system name?"
2566. ./myread
2567case "$ans" in
ecfc5424
AD
2568none) osname='' ;;
2569*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2570esac
8ff267be 2571echo " "
2572case "$osvers" in
2573 ''|' ')
2574 case "$hintfile" in
2575 ''|' '|none) dflt=none ;;
2576 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2577 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2578 case "$dflt" in
2579 ''|' ') dflt=none ;;
2580 esac
2581 ;;
2582 esac
2583 ;;
2584 *) dflt="$osvers" ;;
2585esac
2586rp="Operating system version?"
2587. ./myread
2588case "$ans" in
2589none) osvers='' ;;
2590*) osvers="$ans" ;;
2591esac
2592
02e93a22
JH
2593
2594. ./posthint.sh
2595
2304df62 2596: who configured the system
59b83a6f 2597cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2598cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2599case "$cf_by" in
2600"")
8ff267be 2601 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2602 case "$cf_by" in
2603 "") cf_by=unknown ;;
8ff267be 2604 esac ;;
2605esac
2304df62 2606
dfe9444c
AD
2607: set up the script used to warn in case of inconsistency
2608cat <<EOS >whoa
2609$startsh
2610EOS
2611cat <<'EOSC' >>whoa
2612dflt=y
2613echo " "
2614echo "*** WHOA THERE!!! ***" >&4
2615echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2616rp=" Keep the $hint value?"
2617. ./myread
2618case "$ans" in
2619y) td=$was; tu=$was;;
2620esac
2621EOSC
2622
2623: function used to set $1 to $val
2624setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2625case "$val$was" in
2626$define$undef) . ./whoa; eval "$var=\$td";;
2627$undef$define) . ./whoa; eval "$var=\$tu";;
2628*) eval "$var=$val";;
2629esac'
2630
0f0995ae
JH
2631case "$usethreads" in
2632$define|true|[yY]*) dflt='y';;
2633*) dflt='n';;
2634esac
64e689dc
JH
2635cat <<EOM
2636
3645a519 2637Perl can be built to take advantage of threads on some systems.
0f0995ae 2638To do so, Configure can be run with -Dusethreads.
d00b958f
JH
2639
2640Note that threading is a highly experimental feature, and
2641some known race conditions still remain. If you choose to try
2642it, be very sure to not actually deploy it for production
2643purposes. README.threads has more details, and is required
2644reading if you enable threads.
0f0995ae
JH
2645
2646If this doesn't make any sense to you, just accept the default '$dflt'.
64e689dc 2647EOM
64e689dc
JH
2648rp='Build a threading Perl?'
2649. ./myread
2650case "$ans" in
aaacdc8b 2651y|Y) val="$define" ;;
64e689dc 2652*) val="$undef" ;;
dfe9444c 2653esac
64e689dc 2654set usethreads
aaacdc8b
GS
2655eval $setvar
2656
2657case "$usethreads" in
2658$define)
2659 $cat <<EOM
2660
ff42dc34 2661As of 5.5.640, Perl has two different internal threading implementations,
aaacdc8b
GS
2662the 5.005 version (5005threads) and an interpreter-based version
2663(ithreads) that has one interpreter per thread. Both are very
2664experimental. This arrangement exists to help developers work out
2665which one is better.
3645a519
JH
2666
2667If you're a casual user, you probably don't want interpreter-threads
2668at this time. There doesn't yet exist a way to create threads from
2669within Perl in this model, i.e., "use Thread;" will NOT work.
aaacdc8b
GS
2670EOM
2671 : Default to ithreads unless overridden on command line or with
2672 : old config.sh
2673 dflt='y'
2674 case "$use5005threads" in
2675 $define|true|[yY]*) dflt='n';;
2676 esac
2677 case "$useithreads" in
2678 $undef|false|[nN]*) dflt='n';;
2679 esac
2680 rp='Use interpreter-based ithreads?'
2681 . ./myread
2682 case "$ans" in
2683 y|Y) val="$define" ;;
2684 *) val="$undef" ;;
2685 esac
2686 set useithreads
2687 eval $setvar
2688 : Now set use5005threads to the opposite value.
2689 case "$useithreads" in
2690 $define) val="$undef" ;;
2691 *) val="$define" ;;
2692 esac
2693 set use5005threads
2694 eval $setvar
2695 ;;
2696*)
2697 useithreads="$undef"
2698 use5005threads="$undef"
2699 ;;
2700esac
104d25b7 2701
693762b4
AD
2702case "$d_oldpthreads" in
2703'') : Configure tests would be welcome here. For now, assume undef.
2704 val="$undef" ;;
2705*) val="$d_oldpthreads" ;;
2706esac
2707set d_oldpthreads
2708eval $setvar
dfe9444c 2709
b691c02f
JH
2710
2711case "$usethreads" in
104d25b7
JH
2712"$define"|true|[yY]*)
2713: Look for a hint-file generated 'call-back-unit'. If the
2714: user has specified that a threading perl is to be built,
2715: we may need to set or change some other defaults.
2716 if $test -f usethreads.cbu; then
e5e20432 2717 echo "Your platform has some specific hints for threaded builds, using them..."
104d25b7 2718 . ./usethreads.cbu
e5e20432
JH
2719 else
2720 $cat <<EOM
2721(Your platform doesn't have any specific hints for threaded builds.
2722 Assuming POSIX threads, then.)
b691c02f 2723EOM
e5e20432 2724 fi
aaacdc8b 2725 ;;
e5e20432 2726esac
104d25b7 2727
ff935051 2728cat <<EOM
64e689dc 2729
ff935051
JH
2730Perl can be built so that multiple Perl interpreters can coexist
2731within the same Perl executable.
2732EOM
64e689dc 2733
ff935051
JH
2734case "$useithreads" in
2735$define)
2736 cat <<EOM
2737This multiple interpreter support is required for interpreter-based threads.
64e689dc 2738EOM
ff935051
JH
2739 val="$define"
2740 ;;
0f0995ae 2741*) case "$usemultiplicity" in
ff42dc34
GS
2742 $define|true|[yY]*) dflt='y';;
2743 *) dflt='n';;
2744 esac
49c10eea 2745 echo " "
0f0995ae 2746 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
ff42dc34
GS
2747 rp='Build Perl for multiplicity?'
2748 . ./myread
2749 case "$ans" in
ff935051 2750 y|Y) val="$define" ;;
ff42dc34
GS
2751 *) val="$undef" ;;
2752 esac
2753 ;;
64e689dc
JH
2754esac
2755set usemultiplicity
ff935051 2756eval $setvar
64e689dc 2757
e5e20432
JH
2758: determine where manual pages are on this system
2759echo " "
2760case "$sysman" in
2761'')
2762 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2763 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2764 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2765 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2766 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2767 sysman=`./loc . /usr/man/man1 $syspath`
2768 ;;
2769esac
2770if $test -d "$sysman"; then
2771 echo "System manual is in $sysman." >&4
2772else
2773 echo "Could not find manual pages in source form." >&4
2774fi
2775
2776: see what memory models we can support
2777case "$models" in
2778'')
2779 $cat >pdp11.c <<'EOP'
2780int main() {
2781#ifdef pdp11
2782 exit(0);
2783#else
2784 exit(1);
2785#endif
2786}
2787EOP
2788 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2789 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2790 dflt='unsplit split'
2791 else
2792 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2793 case "$tans" in
2794 X) dflt='none';;
2795 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2796 dflt='small'
2797 else
2798 dflt=''
2799 fi
2800 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2801 dflt="$dflt medium"
2802 fi
2803 if $test -d /lib/large || $test -d /usr/lib/large; then
2804 dflt="$dflt large"
2805 fi
2806 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2807 dflt="$dflt huge"
2808 fi
2809 esac
2810 fi;;
2811*) dflt="$models";;
2812esac
2813$cat <<EOM
2814
2815Some systems have different model sizes. On most systems they are called
2816small, medium, large, and huge. On the PDP11 they are called unsplit and
2817split. If your system doesn't support different memory models, say "none".
2818If you wish to force everything to one memory model, say "none" here and
2819put the appropriate flags later when it asks you for other cc and ld flags.
2820Venix systems may wish to put "none" and let the compiler figure things out.
2821(In the following question multiple model names should be space separated.)
2822
2823The default for most systems is "none".
2824
2825EOM
2826rp="Which memory models are supported?"
2827. ./myread
2828models="$ans"
2829
2830case "$models" in
2831none)
2832 small=''
2833 medium=''
2834 large=''
2835 huge=''
2836 unsplit=''
2837 split=''
2838 ;;
2839*split)
2840 case "$split" in
2841 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2842 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2843 dflt='-i'
2844 else
2845 dflt='none'
2846 fi;;
2847 *) dflt="$split";;
2848 esac
2849 rp="What flag indicates separate I and D space?"
2850 . ./myread
2851 tans="$ans"
2852 case "$tans" in
2853 none) tans='';;
2854 esac
2855 split="$tans"
2856 unsplit='';;
2857*large*|*small*|*medium*|*huge*)
2858 case "$models" in
2859 *large*)
2860 case "$large" in
2861 '') dflt='-Ml';;
2862 *) dflt="$large";;
2863 esac
2864 rp="What flag indicates large model?"
2865 . ./myread
2866 tans="$ans"
2867 case "$tans" in
2868 none) tans='';
2869 esac
2870 large="$tans";;
2871 *) large='';;
2872 esac
2873 case "$models" in
2874 *huge*) case "$huge" in
2875 '') dflt='-Mh';;
2876 *) dflt="$huge";;
2877 esac
2878 rp="What flag indicates huge model?"
2879 . ./myread
2880 tans="$ans"
2881 case "$tans" in
2882 none) tans='';
2883 esac
2884 huge="$tans";;
2885 *) huge="$large";;
2886 esac
2887 case "$models" in
2888 *medium*) case "$medium" in
2889 '') dflt='-Mm';;
2890 *) dflt="$medium";;
2891 esac
2892 rp="What flag indicates medium model?"
2893 . ./myread
2894 tans="$ans"
2895 case "$tans" in
2896 none) tans='';
2897 esac
2898 medium="$tans";;
2899 *) medium="$large";;
2900 esac
2901 case "$models" in
2902 *small*) case "$small" in
2903 '') dflt='none';;
2904 *) dflt="$small";;
2905 esac
2906 rp="What flag indicates small model?"
2907 . ./myread
2908 tans="$ans"
2909 case "$tans" in
2910 none) tans='';
2911 esac
2912 small="$tans";;
2913 *) small='';;
2914 esac
2915 ;;
2916*)
2917 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2918 ;;
2919esac
2920$rm -f pdp11.* pdp11
2921
2922: make some quick guesses about what we are up against
2923echo " "
2924$echo $n "Hmm... $c"
2925echo exit 1 >bsd
2926echo exit 1 >usg
2927echo exit 1 >v7
2928echo exit 1 >osf1
2929echo exit 1 >eunice
2930echo exit 1 >xenix
2931echo exit 1 >venix
2932echo exit 1 >os2
2933d_bsd="$undef"
2934$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2935if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2936then
2937 echo "Looks kind of like an OSF/1 system, but we'll see..."
2938 echo exit 0 >osf1
2939elif test `echo abc | tr a-z A-Z` = Abc ; then
2940 xxx=`./loc addbib blurfl $pth`
2941 if $test -f $xxx; then
2942 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2943 echo exit 0 >bsd
2944 echo exit 0 >usg
2945 else
2946 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2947 echo "Looks kind of like an extended USG system, but we'll see..."
2948 else
2949 echo "Looks kind of like a USG system, but we'll see..."
2950 fi
2951 echo exit 0 >usg
2952 fi
2953elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2954 echo "Looks kind of like a BSD system, but we'll see..."
2955 d_bsd="$define"
2956 echo exit 0 >bsd
2957else
2958 echo "Looks kind of like a Version 7 system, but we'll see..."
2959 echo exit 0 >v7
2960fi
2961case "$eunicefix" in
2962*unixtovms*)
2963 $cat <<'EOI'
2964There is, however, a strange, musty smell in the air that reminds me of
2965something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2966EOI
2967 echo exit 0 >eunice
2968 d_eunice="$define"
2969: it so happens the Eunice I know will not run shell scripts in Unix format
2970 ;;
2971*)
2972 echo " "
2973 echo "Congratulations. You aren't running Eunice."
2974 d_eunice="$undef"
2975 ;;
2976esac
2977: Detect OS2. The p_ variable is set above in the Head.U unit.
2978case "$p_" in
2979:) ;;
2980*)
2981 $cat <<'EOI'
2982I have the feeling something is not exactly right, however...don't tell me...
2983lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2984EOI
2985 echo exit 0 >os2
2986 ;;
2987esac
2988if test -f /xenix; then
2989 echo "Actually, this looks more like a XENIX system..."
2990 echo exit 0 >xenix
2991 d_xenix="$define"
2992else
2993 echo " "
2994 echo "It's not Xenix..."
2995 d_xenix="$undef"
2996fi
2997chmod +x xenix
2998$eunicefix xenix
2999if test -f /venix; then
3000 echo "Actually, this looks more like a VENIX system..."
3001 echo exit 0 >venix
3002else
3003 echo " "
3004 if ./xenix; then
3005 : null
3006 else
3007 echo "Nor is it Venix..."
3008 fi
3009fi
3010chmod +x bsd usg v7 osf1 eunice xenix venix os2
3011$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3012$rm -f foo
3013
3014: see if we need a special compiler
3015echo " "
3016if ./usg; then
3017 case "$cc" in
3018 '') case "$Mcc" in
3019 /*) dflt='Mcc';;
3020 *) case "$large" in
3021 -M*) dflt='cc';;
3022 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3023 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3024 dflt='cc'
3025 else
3026 dflt='cc -M'
3027 fi
3028 else
3029 dflt='cc'
3030 fi;;
3031 esac;;
3032 esac;;
3033 *) dflt="$cc";;
3034 esac
3035 case "$dflt" in
3036 *M*) $cat <<'EOM'
3037On some older systems the default C compiler will not resolve multiple global
3038references that happen to have the same name. On some such systems the "Mcc"
3039command may be used to force these to be resolved. On other systems a "cc -M"
3040command is required. (Note that the -M flag on other systems indicates a
3041memory model to use!) If you have the Gnu C compiler, you might wish to use
3042that instead.
3043
3044EOM
3045 ;;
3046 esac
3047 rp="Use which C compiler?"
3048 . ./myread
3049 cc="$ans"
3050else
3051 case "$cc" in
3052 '') dflt=cc;;
3053 *) dflt="$cc";;
3054 esac
3055 rp="Use which C compiler?"
3056 . ./myread
3057 cc="$ans"
3058fi
3059: Look for a hint-file generated 'call-back-unit'. Now that the
3060: user has specified the compiler, we may need to set or change some
3061: other defaults.
3062if $test -f cc.cbu; then
3063 . ./cc.cbu
3064fi
3065echo " "
3066echo "Checking for GNU cc in disguise and/or its version number..." >&4
3067$cat >gccvers.c <<EOM
3068#include <stdio.h>
3069int main() {
3070#ifdef __GNUC__
3071#ifdef __VERSION__
3072 printf("%s\n", __VERSION__);
3073#else
3074 printf("%s\n", "1");
3075#endif
3076#endif
3077 exit(0);
3078}
3079EOM
bf0c440f 3080if $cc $ldflags -o gccvers gccvers.c; then
e5e20432
JH
3081 gccversion=`./gccvers`
3082 case "$gccversion" in
3083 '') echo "You are not using GNU cc." ;;
fc68435e 3084 *) echo "You are using GNU cc $gccversion."
fc68435e 3085 ;;
e5e20432
JH
3086 esac
3087else
3088 echo " "
3089 echo "*** WHOA THERE!!! ***" >&4
3090 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3091 case "$knowitall" in
3092 '')
3093 echo " You'd better start hunting for one and let me know about it." >&4
3094 exit 1
3095 ;;
3096 esac
3097fi
3098$rm -f gccvers*
3099case "$gccversion" in
31001*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3101esac
3102
bd9b35c9
JH
3103: decide how portable to be. Allow command line overrides.
3104case "$d_portable" in
3105"$undef") ;;
3106*) d_portable="$define" ;;
104d25b7 3107esac
85ab1d1d 3108
bd9b35c9
JH
3109: set up shell script to do ~ expansion
3110cat >filexp <<EOSS
3111$startsh
3112: expand filename
3113case "\$1" in
3114 ~/*|~)
3115 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3116 ;;
3117 ~*)
3118 if $test -f /bin/csh; then
3119 /bin/csh -f -c "glob \$1"
3120 failed=\$?
3121 echo ""
3122 exit \$failed
e5e20432 3123 else
bd9b35c9
JH
3124 name=\`$expr x\$1 : '..\([^/]*\)'\`
3125 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3126 if $test ! -d "\$dir"; then
3127 me=\`basename \$0\`
3128 echo "\$me: can't locate home directory for: \$name" >&2
3129 exit 1
3130 fi
3131 case "\$1" in
3132 */*)
3133 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3134 ;;
3135 *)
3136 echo \$dir
e5e20432
JH
3137 ;;
3138 esac
3139 fi
b691c02f 3140 ;;
4633a7c4 3141*)
bd9b35c9 3142 echo \$1
2304df62
AD
3143 ;;
3144esac
4633a7c4
LW
3145EOSS
3146chmod +x filexp
3147$eunicefix filexp
2304df62
AD
3148
3149: now set up to get a file name
28757baa 3150cat <<EOS >getfile
3151$startsh
3152EOS
3153cat <<'EOSC' >>getfile
2304df62
AD
3154tilde=''
3155fullpath=''
3156already=''
3157skip=''
3158none_ok=''
3159exp_file=''
a0d0e21e 3160nopath_ok=''
2304df62
AD
3161orig_rp="$rp"
3162orig_dflt="$dflt"
b233458b
JH
3163case "$gfpth" in
3164'') gfpth='.' ;;
3165esac
2304df62
AD
3166
3167case "$fn" in
ecfc5424 3168*\(*)
28e8609d 3169 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
3170 fn=`echo $fn | sed 's/(.*)//'`
3171 ;;
3172esac
3173
3174case "$fn" in
a0d0e21e
LW
3175*:*)
3176 loc_file=`expr $fn : '.*:\(.*\)'`
3177 fn=`expr $fn : '\(.*\):.*'`
3178 ;;
3179esac
3180
3181case "$fn" in
2304df62
AD
3182*~*) tilde=true;;
3183esac
3184case "$fn" in
3185*/*) fullpath=true;;
3186esac
3187case "$fn" in
3188*+*) skip=true;;
3189esac
3190case "$fn" in
3191*n*) none_ok=true;;
3192esac
3193case "$fn" in
3194*e*) exp_file=true;;
3195esac
a0d0e21e
LW
3196case "$fn" in
3197*p*) nopath_ok=true;;
3198esac
2304df62
AD
3199
3200case "$fn" in
3201*f*) type='File';;
3202*d*) type='Directory';;
a0d0e21e 3203*l*) type='Locate';;
2304df62
AD
3204esac
3205
3206what="$type"
3207case "$what" in
3208Locate) what='File';;
3209esac
3210
3211case "$exp_file" in
3212'')
3213 case "$d_portable" in
3214 "$define") ;;
3215 *) exp_file=true;;
3216 esac
3217 ;;
3218esac
3219
3220cd ..
3221while test "$type"; do
3222 redo=''
3223 rp="$orig_rp"
3224 dflt="$orig_dflt"
3225 case "$tilde" in
3226 true) rp="$rp (~name ok)";;
3227 esac
3228 . UU/myread
ecfc5424
AD
3229 if test -f UU/getfile.ok && \
3230 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3231 then
3232 value="$ans"
3233 ansexp="$ans"
3234 break
3235 fi
2304df62
AD
3236 case "$ans" in
3237 none)
3238 value=''
3239 ansexp=''
3240 case "$none_ok" in
3241 true) type='';;
3242 esac
3243 ;;
3244 *)
3245 case "$tilde" in
3246 '') value="$ans"
3247 ansexp="$ans";;
3248 *)
3249 value=`UU/filexp $ans`
3250 case $? in
3251 0)
3252 if test "$ans" != "$value"; then
ecfc5424 3253 echo "(That expands to $value on this system.)"
2304df62
AD
3254 fi
3255 ;;
3256 *) value="$ans";;
3257 esac
3258 ansexp="$value"
3259 case "$exp_file" in
3260 '') value="$ans";;
3261 esac
3262 ;;
3263 esac
3264 case "$fullpath" in
3265 true)
3266 case "$ansexp" in
3267 /*) value="$ansexp" ;;
3268 *)
3269 redo=true
3270 case "$already" in
3271 true)
3272 echo "I shall only accept a full path name, as in /bin/ls." >&4
3273 echo "Use a ! shell escape if you wish to check pathnames." >&4
3274 ;;
3275 *)
3276 echo "Please give a full path name, starting with slash." >&4
3277 case "$tilde" in
3278 true)
3279 echo "Note that using ~name is ok provided it expands well." >&4
3280 already=true
3281 ;;
3282 esac
3283 esac
3284 ;;
3285 esac
3286 ;;
3287 esac
3288 case "$redo" in
3289 '')
3290 case "$type" in
3291 File)
b233458b
JH
3292 for fp in $gfpth; do
3293 if test "X$fp" = X.; then
3294 pf="$ansexp"
3295 else
3296 pf="$fp/$ansexp"
3297 fi
3298 if test -f "$pf"; then
3299 type=''
3300 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3301 then
3302 echo "($value is not a plain file, but that's ok.)"
3303 type=''
3304 fi
3305 if test X"$type" = X; then
3306 value="$pf"
3307 break
3308 fi
3309 done
2304df62
AD
3310 ;;
3311 Directory)
b233458b
JH
3312 for fp in $gfpth; do
3313 if test "X$fp" = X.; then
3314 pf="$ansexp"
3315 else
3316 pf="$fp/$ansexp"
3317 fi
3318 if test -d "$pf"; then
3319 type=''
3320 value="$pf"
3321 break
3322 fi
3323 done
2304df62
AD
3324 ;;
3325 Locate)
40000a8c 3326 if test -d "$ansexp"; then
a0d0e21e
LW
3327 echo "(Looking for $loc_file in directory $value.)"
3328 value="$value/$loc_file"
40000a8c 3329 ansexp="$ansexp/$loc_file"
2304df62 3330 fi
40000a8c 3331 if test -f "$ansexp"; then
2304df62
AD
3332 type=''
3333 fi
a0d0e21e
LW
3334 case "$nopath_ok" in
3335 true) case "$value" in
3336 */*) ;;
3337 *) echo "Assuming $value will be in people's path."
3338 type=''
3339 ;;
3340 esac
3341 ;;
3342 esac
2304df62
AD
3343 ;;
3344 esac
3345
3346 case "$skip" in
3347 true) type='';
3348 esac
3349
3350 case "$type" in
3351 '') ;;
3352 *)
3353 if test "$fastread" = yes; then
3354 dflt=y
3355 else
3356 dflt=n
3357 fi
3358 rp="$what $value doesn't exist. Use that name anyway?"
3359 . UU/myread
3360 dflt=''
3361 case "$ans" in
3362 y*) type='';;
3363 *) echo " ";;
3364 esac
3365 ;;
3366 esac
3367 ;;
3368 esac
3369 ;;
3370 esac
3371done
3372cd UU
3373ans="$value"
3374rp="$orig_rp"
3375dflt="$orig_dflt"
ecfc5424 3376rm -f getfile.ok
b233458b 3377test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3378EOSC
3379
bd9b35c9
JH
3380: What should the include directory be ?
3381echo " "
3382$echo $n "Hmm... $c"
3383dflt='/usr/include'
3384incpath=''
3385mips_type=''
3386if $test -f /bin/mips && /bin/mips; then
3387 echo "Looks like a MIPS system..."
3388 $cat >usr.c <<'EOCP'
3389#ifdef SYSTYPE_BSD43
3390/bsd43
3391#endif
3392EOCP
3393 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3394 dflt='/bsd43/usr/include'
3395 incpath='/bsd43'
3396 mips_type='BSD 4.3'
3397 else
3398 mips_type='System V'
3399 fi
3400 $rm -f usr.c usr.out
3401 echo "and you're compiling with the $mips_type compiler and libraries."
3402 xxx_prompt=y
3403 echo "exit 0" >mips
3404else
3405 echo "Doesn't look like a MIPS system."
3406 xxx_prompt=n
3407 echo "exit 1" >mips
3408fi
3409chmod +x mips
3410$eunicefix mips
3411case "$usrinc" in
3412'') ;;
3413*) dflt="$usrinc";;
3414esac
3415case "$xxx_prompt" in
3416y) fn=d/
3417 echo " "
3418 rp='Where are the include files you want to use?'
3419 . ./getfile
3420 usrinc="$ans"
8e07c86e 3421 ;;
bd9b35c9 3422*) usrinc="$dflt"
8e07c86e
AD
3423 ;;
3424esac
2304df62 3425
fc68435e
JH
3426: see how we invoke the C preprocessor
3427echo " "
3428echo "Now, how can we feed standard input to your C preprocessor..." >&4
3429cat <<'EOT' >testcpp.c
3430#define ABC abc
3431#define XYZ xyz
3432ABC.XYZ
3433EOT
3434cd ..
3435if test ! -f cppstdin; then
3436 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3437 # AIX cc -E doesn't show the absolute headerfile
3438 # locations but we'll cheat by using the -M flag.
3439 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
3440 else
3441 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3442 fi
3443else
3444 echo "Keeping your $hint cppstdin wrapper."
3445fi
3446chmod 755 cppstdin
3447wrapper=`pwd`/cppstdin
3448ok='false'
3449cd UU
3450
3451if $test "X$cppstdin" != "X" && \
3452 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3453 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3454then
3455 echo "You used to use $cppstdin $cppminus so we'll use that again."
3456 case "$cpprun" in
3457 '') echo "But let's see if we can live without a wrapper..." ;;
3458 *)
3459 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3460 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3461 then
3462 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3463 ok='true'
3464 else
3465 echo "(However, $cpprun $cpplast does not work, let's see...)"
3466 fi
3467 ;;
3468 esac
3469else
3470 case "$cppstdin" in
3471 '') ;;
3472 *)
3473 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3474 ;;
3475 esac
3476fi
3477
3478if $ok; then
3479 : nothing
3480elif echo 'Maybe "'"$cc"' -E" will work...'; \
3481 $cc -E <testcpp.c >testcpp.out 2>&1; \
3482 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483 echo "Yup, it does."
3484 x_cpp="$cc -E"
3485 x_minus='';
3486elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3487 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3488 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489 echo "Yup, it does."
3490 x_cpp="$cc -E"
3491 x_minus='-';
3492elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3493 $cc -P <testcpp.c >testcpp.out 2>&1; \
3494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495 echo "Yipee, that works!"
3496 x_cpp="$cc -P"
3497 x_minus='';
3498elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3499 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3500 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 echo "At long last!"
3502 x_cpp="$cc -P"
3503 x_minus='-';
3504elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3505 $cpp <testcpp.c >testcpp.out 2>&1; \
3506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507 echo "It works!"
3508 x_cpp="$cpp"
3509 x_minus='';
3510elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3511 $cpp - <testcpp.c >testcpp.out 2>&1; \
3512 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513 echo "Hooray, it works! I was beginning to wonder."
3514 x_cpp="$cpp"
3515 x_minus='-';
3516elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3517 $wrapper <testcpp.c >testcpp.out 2>&1; \
3518 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519 x_cpp="$wrapper"
3520 x_minus=''
3521 echo "Eureka!"
3522else
3523 dflt=''
3524 rp="No dice. I can't find a C preprocessor. Name one:"
3525 . ./myread
3526 x_cpp="$ans"
3527 x_minus=''
3528 $x_cpp <testcpp.c >testcpp.out 2>&1
3529 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530 echo "OK, that will do." >&4
3531 else
3532echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3533 exit 1
3534 fi
3535fi
3536
3537case "$ok" in
3538false)
3539 cppstdin="$x_cpp"
3540 cppminus="$x_minus"
3541 cpprun="$x_cpp"
3542 cpplast="$x_minus"
3543 set X $x_cpp
3544 shift
3545 case "$1" in
3546 "$cpp")
3547 echo "Perhaps can we force $cc -E using a wrapper..."
3548 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3549 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3550 then
3551 echo "Yup, we can."
3552 cppstdin="$wrapper"
3553 cppminus='';
3554 else
3555 echo "Nope, we'll have to live without it..."
3556 fi
3557 ;;
3558 esac
3559 case "$cpprun" in
3560 "$wrapper")
3561 cpprun=''
3562 cpplast=''
3563 ;;
3564 esac
3565 ;;
3566esac
3567
3568case "$cppstdin" in
3569"$wrapper"|'cppstdin') ;;
3570*) $rm -f $wrapper;;
3571esac
3572$rm -f testcpp.c testcpp.out
3573
bd9b35c9
JH
3574: Set private lib path
3575case "$plibpth" in
3576'') if ./mips; then
3577 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3578 fi;;
3579esac
3580case "$libpth" in
3581' ') dlist='';;
3582'') dlist="$loclibpth $plibpth $glibpth";;
3583*) dlist="$libpth";;
3584esac
3585
3586: Now check and see which directories actually exist, avoiding duplicates
3587libpth=''
3588for xxx in $dlist
3589do
3590 if $test -d $xxx; then
3591 case " $libpth " in
3592 *" $xxx "*) ;;
3593 *) libpth="$libpth $xxx";;
3594 esac
3595 fi
3596done
3597$cat <<'EOM'
3598
3599Some systems have incompatible or broken versions of libraries. Among
3600the directories listed in the question below, please remove any you
3601know not to be holding relevant libraries, and add any that are needed.
3602Say "none" for none.
8e07c86e
AD
3603
3604EOM
bd9b35c9
JH
3605case "$libpth" in
3606'') dflt='none';;
8e07c86e 3607*)
bd9b35c9
JH
3608 set X $libpth
3609 shift
3610 dflt=${1+"$@"}
8e07c86e 3611 ;;
a0d0e21e 3612esac
bd9b35c9
JH
3613rp="Directories to use for library searches?"
3614. ./myread
3615case "$ans" in
3616none) libpth=' ';;
3617*) libpth="$ans";;
3618esac
a0d0e21e 3619
bd9b35c9
JH
3620: compute shared library extension
3621case "$so" in
3622'')
3623 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3624 dflt='sl'
dd4e71fd 3625 else
bd9b35c9 3626 dflt='so'
dd4e71fd
JH
3627 fi
3628 ;;
bd9b35c9 3629*) dflt="$so";;
dd4e71fd 3630esac
dd4e71fd
JH
3631$cat <<EOM
3632
bd9b35c9 3633On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3634you want to suppress searching of shared libraries for the remainder
bd9b35c9 3635of this configuration.
dd4e71fd
JH
3636
3637EOM
bd9b35c9
JH
3638rp='What is the file extension used for shared libraries?'
3639. ./myread
3640so="$ans"
dd4e71fd 3641
bd9b35c9
JH
3642: Define several unixisms.
3643: Hints files or command line option can be used to override them.
3644: The convoluted testing is in case hints files set either the old
3645: or the new name.
3646case "$_exe" in
3647'') case "$exe_ext" in
3648 '') ;;
3649 *) _exe="$exe_ext" ;;
dd4e71fd 3650 esac
bd9b35c9 3651 ;;
bfb7748a 3652esac
bd9b35c9
JH
3653case "$_a" in
3654'') case "$lib_ext" in
3655 '') _a='.a';;
3656 *) _a="$lib_ext" ;;
dd4e71fd
JH
3657 esac
3658 ;;
dd4e71fd 3659esac
bd9b35c9
JH
3660case "$_o" in
3661'') case "$obj_ext" in
3662 '') _o='.o';;
3663 *) _o="$obj_ext";;
3664 esac
3665 ;;
3666esac
3667case "$p_" in
3668'') case "$path_sep" in
3669 '') p_=':';;
3670 *) p_="$path_sep";;
3671 esac
3672 ;;
3673esac
3674exe_ext=$_exe
3675lib_ext=$_a
3676obj_ext=$_o
3677path_sep=$p_
dd4e71fd 3678
bd9b35c9
JH
3679: Which makefile gets called first. This is used by make depend.
3680case "$firstmakefile" in
3681'') firstmakefile='makefile';;
4633a7c4 3682esac
4633a7c4 3683
0f0995ae
JH
3684case "$usesocks" in
3685$define|true|[yY]*) dflt='y';;
3686*) dflt='n';;
3687esac
bd9b35c9 3688cat <<EOM
4633a7c4 3689
bd9b35c9
JH
3690Perl can be built to use the SOCKS proxy protocol library. To do so,
3691Configure must be run with -Dusesocks.
4633a7c4 3692
0f0995ae 3693If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3694EOM
bd9b35c9
JH
3695rp='Build Perl for SOCKS?'
3696. ./myread
3697case "$ans" in
3698y|Y) val="$define" ;;
3699*) val="$undef" ;;
3700esac
3701set usesocks
3702eval $setvar
3703
3704: Looking for optional libraries
3705echo " "
3706echo "Checking for optional libraries..." >&4
3707case "$libs" in
3708' '|'') dflt='';;
3709*) dflt="$libs";;
3710esac
3711case "$libswanted" in
3712'') libswanted='c_s';;
3713esac
3714case "$usesocks" in
923fc586 3715"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3716esac
68435ea7
JH
3717libsfound=''
3718libsfiles=''
3719libsdirs=''
13b3f787
JH
3720libspath=''
3721for thisdir in $libpth $xlibpth; do
3722 test -d $thisdir && libspath="$libspath $thisdir"
3723done
bd9b35c9 3724for thislib in $libswanted; do
13b3f787 3725 for thisdir in $libspath; do
f7dd4e7f
JH
3726 xxx=''
3727 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3728 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3729 $test -f "$xxx" && eval $libscheck
3730 $test -f "$xxx" && libstyle=shared
3731 fi
3732 if test ! -f "$xxx"; then
3733 xxx=$thisdir/lib$thislib.$so
3734 $test -f "$xxx" && eval $libscheck
3735 $test -f "$xxx" && libstyle=shared
3736 fi
3737 if test ! -f "$xxx"; then
3738 xxx=$thisdir/lib$thislib$_a
3739 $test -f "$xxx" && eval $libscheck
3740 $test -f "$xxx" && libstyle=static
3741 fi
3742 if test ! -f "$xxx"; then
3743 xxx=$thisdir/$thislib$_a
3744 $test -f "$xxx" && eval $libscheck
3745 $test -f "$xxx" && libstyle=static
3746 fi
3747 if test ! -f "$xxx"; then
3748 xxx=$thisdir/lib${thislib}_s$_a
3749 $test -f "$xxx" && eval $libscheck
3750 $test -f "$xxx" && libstyle=static
09ea5ba9 3751 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3752 fi
3753 if test ! -f "$xxx"; then
3754 xxx=$thisdir/Slib$thislib$_a
3755 $test -f "$xxx" && eval $libscheck
3756 $test -f "$xxx" && libstyle=static
3757 fi
3758 if $test -f "$xxx"; then
43999f95 3759 case "$libstyle" in
f7dd4e7f
JH
3760 shared) echo "Found -l$thislib (shared)." ;;
3761 static) echo "Found -l$thislib." ;;
3762 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3763 esac
bd9b35c9
JH
3764 case " $dflt " in
3765 *"-l$thislib "*);;
f7dd4e7f 3766 *) dflt="$dflt -l$thislib"
43999f95
JH
3767 libsfound="$libsfound $xxx"
3768 yyy=`basename $xxx`
3769 libsfiles="$libsfiles $yyy"
1e127011 3770 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3771 case " $libsdirs " in
3772 *" $yyy "*) ;;
3773 *) libsdirs="$libsdirs $yyy" ;;
3774 esac
3775 ;;
bd9b35c9 3776 esac
f7dd4e7f
JH
3777 break
3778 fi
3779 done
3780 if $test ! -f "$xxx"; then
3781 echo "No -l$thislib."
bd9b35c9
JH
3782 fi
3783done
3784set X $dflt
3785shift
3786dflt="$*"
3787case "$libs" in
3788'') dflt="$dflt";;
3789*) dflt="$libs";;
3790esac
3791case "$dflt" in
3792' '|'') dflt='none';;
3793esac
4633a7c4 3794
bd9b35c9 3795$cat <<EOM
4633a7c4 3796
bd9b35c9
JH
3797In order to compile $package on your machine, a number of libraries
3798are usually needed. Include any other special libraries here as well.
3799Say "none" for none. The default list is almost always right.
8e07c86e 3800EOM
8e07c86e 3801
bd9b35c9
JH
3802echo " "
3803rp="What libraries to use?"
3804. ./myread
3805case "$ans" in
3806none) libs=' ';;
3807*) libs="$ans";;
3808esac
d71b2b6b 3809
bd9b35c9
JH
3810: determine optimization, if desired, or use for debug flag also
3811case "$optimize" in
3812' '|$undef) dflt='none';;
3813'') dflt='-O';;
3814*) dflt="$optimize";;
3815esac
3816$cat <<EOH
d71b2b6b 3817
bd9b35c9
JH
3818By default, $package compiles with the -O flag to use the optimizer.
3819Alternately, you might want to use the symbolic debugger, which uses
3820the -g flag (on traditional Unix systems). Either flag can be
3821specified here. To use neither flag, specify the word "none".
d71b2b6b 3822
bd9b35c9
JH
3823EOH
3824rp="What optimizer/debugger flag should be used?"
3825. ./myread
3826optimize="$ans"
3827case "$optimize" in
3828'none') optimize=" ";;
3829esac
3830
3831dflt=''
3832: We will not override a previous value, but we might want to
3833: augment a hint file
3834case "$hint" in
3835default|recommended)
3836 case "$gccversion" in
3837 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 3838 esac
bd9b35c9
JH
3839 case "$optimize" in
3840 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 3841 esac
bd9b35c9
JH
3842 case "$gccversion" in
3843 2*) if test -d /etc/conf/kconfig.d &&
3844 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3845 then
3846 dflt="$dflt -posix"
3847 fi
f0d04425 3848 ;;
bd9b35c9
JH
3849 esac
3850 case "$gccversion" in
3851 1*) ;;
3852 2.[0-8]*) ;;
3853 ?*) echo " "
3854 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3855 echo 'int main(void) { return 0; }' > gcctest.c
3856 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3857 echo "Yes, it does." 2>&1
3858 case "$ccflags" in
3859 *strict-aliasing*)
3860 echo "Leaving current flags $ccflags alone." 2>&1
3861 ;;
3862 *) dflt="$dflt -fno-strict-aliasing" ;;
3863 esac
3864 else
3865 echo "Nope, it doesn't, but that's ok." 2>&1
3866 fi
f0d04425 3867 ;;
e5e20432
JH
3868 esac
3869 ;;
3870esac
3871
bd9b35c9
JH
3872case "$mips_type" in
3873*BSD*|'') inclwanted="$locincpth $usrinc";;
3874*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3875esac
3876for thisincl in $inclwanted; do
3877 if $test -d $thisincl; then
3878 if $test x$thisincl != x$usrinc; then
3879 case "$dflt" in
3880 *$thisincl*);;
3881 *) dflt="$dflt -I$thisincl";;
3882 esac
3883 fi
3884 fi
3885done
40a7a20a 3886
bd9b35c9
JH
3887inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3888 xxx=true;
3889elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3890 xxx=true;
3891else
3892 xxx=false;
3893fi;
3894if $xxx; then
3895 case "$dflt" in
3896 *$2*);;
3897 *) dflt="$dflt -D$2";;
3898 esac;
3899fi'
40a7a20a 3900
bd9b35c9 3901set signal.h LANGUAGE_C; eval $inctest
40a7a20a 3902
bd9b35c9
JH
3903case "$usesocks" in
3904$define)
3905 ccflags="$ccflags -DSOCKS"
3906 ;;
3907esac
40a7a20a 3908
bd9b35c9
JH
3909case "$hint" in
3910default|recommended) dflt="$ccflags $dflt" ;;
3911*) dflt="$ccflags";;
3912esac
40a7a20a 3913
bd9b35c9
JH
3914case "$dflt" in
3915''|' ') dflt=none;;
3916esac
3917$cat <<EOH
40a7a20a 3918
bd9b35c9
JH
3919Your C compiler may want other flags. For this question you should include
3920-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3921but you should NOT include libraries or ld flags like -lwhatever. If you
3922want $package to honor its debug switch, you should include -DDEBUGGING here.
3923Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 3924
bd9b35c9 3925To use no flags, specify the word "none".
40a7a20a 3926
bd9b35c9
JH
3927EOH
3928set X $dflt
3929shift
3930dflt=${1+"$@"}
3931rp="Any additional cc flags?"
3932. ./myread
3933case "$ans" in
3934none) ccflags='';;
3935*) ccflags="$ans";;
3936esac
8e07c86e 3937
bd9b35c9
JH
3938: the following weeds options from ccflags that are of no interest to cpp
3939cppflags="$ccflags"
3940case "$gccversion" in
39411*) cppflags="$cppflags -D__GNUC__"
4633a7c4 3942esac
bd9b35c9
JH
3943case "$mips_type" in
3944'');;
3945*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3946esac
3947case "$cppflags" in
3948'');;
3949*)
3950 echo " "
3951 echo "Let me guess what the preprocessor flags are..." >&4
3952 set X $cppflags
3953 shift
3954 cppflags=''
3955 $cat >cpp.c <<'EOM'
3956#define BLURFL foo
8e07c86e 3957
bd9b35c9
JH
3958BLURFL xx LFRULB
3959EOM
3960 previous=''
3961 for flag in $*
3962 do
3963 case "$flag" in
3964 -*) ftry="$flag";;
3965 *) ftry="$previous $flag";;
3966 esac
3967 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3968 >cpp1.out 2>/dev/null && \
3969 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3970 >cpp2.out 2>/dev/null && \
3971 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3972 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3973 then
3974 cppflags="$cppflags $ftry"
3975 previous=''
3976 else
3977 previous="$flag"
3978 fi
3979 done
3980 set X $cppflags
3981 shift
3982 cppflags=${1+"$@"}
3983 case "$cppflags" in
3984 *-*) echo "They appear to be: $cppflags";;
3985 esac
3986 $rm -f cpp.c cpp?.out
2afac517 3987 ;;
3988esac
8e07c86e 3989
bd9b35c9
JH
3990: flags used in final linking phase
3991case "$ldflags" in
3992'') if ./venix; then
3993 dflt='-i -z'
10a23457 3994 else
bd9b35c9 3995 dflt=''
10a23457 3996 fi
bd9b35c9
JH
3997 case "$ccflags" in
3998 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 3999 esac
bd9b35c9
JH
4000 ;;
4001*) dflt="$ldflags";;
4002esac
4003
4004: Try to guess additional flags to pick up local libraries.
4005for thislibdir in $libpth; do
4006 case " $loclibpth " in
4007 *" $thislibdir "*)
4008 case "$dflt " in
4009 *"-L$thislibdir "*) ;;
4010 *) dflt="$dflt -L$thislibdir" ;;
4011 esac
c4f23d77
AD
4012 ;;
4013 esac
bd9b35c9 4014done
c4f23d77 4015
bd9b35c9
JH
4016case "$dflt" in
4017'') dflt='none' ;;
4018esac
c4f23d77 4019
bd9b35c9
JH
4020$cat <<EOH
4021
4022Your C linker may need flags. For this question you should
4023include -L/whatever and any other flags used by the C linker, but you
4024should NOT include libraries like -lwhatever.
4025
4026Make sure you include the appropriate -L/path flags if your C linker
4027does not normally search all of the directories you specified above,
4028namely
4029 $libpth
4030To use no flags, specify the word "none".
4031
4032EOH
4033
4034rp="Any additional ld flags (NOT including libraries)?"
4035. ./myread
4036case "$ans" in
4037none) ldflags='';;
4038*) ldflags="$ans";;
4039esac
4040rmlist="$rmlist pdp11"
4041
4042: coherency check
4043echo " "
4044echo "Checking your choice of C compiler and flags for coherency..." >&4
4045$cat > try.c <<'EOF'
4046#include <stdio.h>
4047int main() { printf("Ok\n"); exit(0); }
4048EOF
4049set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4050shift
4051$cat >try.msg <<'EOM'
4052I've tried to compile and run the following simple program:
4053
4054EOM
4055$cat try.c >> try.msg
4056
4057$cat >> try.msg <<EOM
4058
4059I used the command:
4060
4061 $*
4062 ./try
4063
4064and I got the following output:
4065
4066EOM
4067dflt=y
4068if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4069 if sh -c './try' >>try.msg 2>&1; then
4070 xxx=`./try`
4071 case "$xxx" in
4072 "Ok") dflt=n ;;
4073 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4074 case " $libs " in
4075 *" -lsfio "*)
4076 cat >> try.msg <<'EOQS'
4077If $libs contains -lsfio, and sfio is mis-configured, then it
4078sometimes (apparently) runs and exits with a 0 status, but with no
4079output! It may have to do with sfio's use of _exit vs. exit.
4080
4081EOQS
4082 rp="You have a big problem. Shall I abort Configure"
4083 dflt=y
4084 ;;
4085 esac
4086 ;;
4087 esac
4088 else
4089 echo "The program compiled OK, but exited with status $?." >>try.msg
4090 rp="You have a problem. Shall I abort Configure"
4091 dflt=y
4092 fi
4093else
4094 echo "I can't compile the test program." >>try.msg
4095 rp="You have a BIG problem. Shall I abort Configure"
4096 dflt=y
4097fi
4098case "$dflt" in
4099y)
4100 $cat try.msg >&4
4101 case "$knowitall" in
4102 '')
4103 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4104 ;;
bd9b35c9 4105 *) dflt=n;;
c4f23d77 4106 esac
bd9b35c9
JH
4107 echo " "
4108 . ./myread
4109 case "$ans" in
4110 n*|N*) ;;
4111 *) echo "Ok. Stopping Configure." >&4
4112 exit 1
c4f23d77
AD
4113 ;;
4114 esac
4115 ;;
bd9b35c9 4116n) echo "OK, that should do.";;
c4f23d77 4117esac
bd9b35c9 4118$rm -f try try.* core
c4f23d77 4119
bd9b35c9
JH
4120: define an is-a-typedef? function
4121typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4122case "$inclist" in
4123"") inclist="sys/types.h";;
4124esac;
4125eval "varval=\$$var";
4126case "$varval" in
4127"")
4128 $rm -f temp.c;
4129 for inc in $inclist; do
4130 echo "#include <$inc>" >>temp.c;
4131 done;
4132 echo "#ifdef $type" >> temp.c;
4133 echo "printf(\"We have $type\");" >> temp.c;
4134 echo "#endif" >> temp.c;
4135 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4136 if $contains $type temp.E >/dev/null 2>&1; then
4137 eval "$var=\$type";
4138 else
4139 eval "$var=\$def";
4140 fi;
4141 $rm -f temp.?;;
4142*) eval "$var=\$varval";;
4143esac'
8e07c86e 4144
bd9b35c9
JH
4145: define an is-a-typedef? function that prompts if the type is not available.
4146typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4147case "$inclist" in
4148"") inclist="sys/types.h";;
4149esac;
4150eval "varval=\$$var";
4151case "$varval" in
4152"")
4153 $rm -f temp.c;
4154 for inc in $inclist; do
4155 echo "#include <$inc>" >>temp.c;
4156 done;
4157 echo "#ifdef $type" >> temp.c;
4158 echo "printf(\"We have $type\");" >> temp.c;
4159 echo "#endif" >> temp.c;
4160 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4161 echo " " ;
4162 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4163 if $contains $type temp.E >/dev/null 2>&1; then
4164 echo "$type found." >&4;
4165 eval "$var=\$type";
4166 else
4167 echo "$type NOT found." >&4;
4168 dflt="$def";
4169 . ./myread ;
4170 eval "$var=\$ans";
4171 fi;
4172 $rm -f temp.?;;
4173*) eval "$var=\$varval";;
4174esac'
8e07c86e 4175
bd9b35c9
JH
4176: define a shorthand compile call
4177compile='
4178mc_file=$1;
4179shift;
4180$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4181: define a shorthand compile call for compilations that should be ok.
4182compile_ok='
4183mc_file=$1;
4184shift;
4185$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
8e07c86e 4186
bd9b35c9
JH
4187: check for lengths of integral types
4188echo " "
4189case "$intsize" in
2afac517 4190'')
bd9b35c9
JH
4191 echo "Checking to see how big your integers are..." >&4
4192 $cat >intsize.c <<'EOCP'
4193#include <stdio.h>
4194int main()
4195{
4196 printf("intsize=%d;\n", (int)sizeof(int));
4197 printf("longsize=%d;\n", (int)sizeof(long));
4198 printf("shortsize=%d;\n", (int)sizeof(short));
4199 exit(0);
4200}
4201EOCP
4202 set intsize
4203 if eval $compile_ok && ./intsize > /dev/null; then
4204 eval `./intsize`
4205 echo "Your integers are $intsize bytes long."
4206 echo "Your long integers are $longsize bytes long."
4207 echo "Your short integers are $shortsize bytes long."
2afac517 4208 else
bd9b35c9
JH
4209 $cat >&4 <<EOM
4210!
4211Help! I can't compile and run the intsize test program: please enlighten me!
4212(This is probably a misconfiguration in your system or libraries, and
4213you really ought to fix it. Still, I'll try anyway.)
4214!
4215EOM
4216 dflt=4
4217 rp="What is the size of an integer (in bytes)?"
4218 . ./myread
4219 intsize="$ans"
4220 dflt=$intsize
4221 rp="What is the size of a long integer (in bytes)?"
4222 . ./myread
4223 longsize="$ans"
4224 dflt=2
4225 rp="What is the size of a short integer (in bytes)?"
4226 . ./myread
4227 shortsize="$ans"
2afac517 4228 fi
4229 ;;
8e07c86e 4230esac
bd9b35c9
JH
4231$rm -f intsize intsize.*
4232
4233: see what type lseek is declared as in the kernel
4234rp="What is the type used for lseek's offset on this system?"
4235set off_t lseektype long stdio.h sys/types.h
4236eval $typedef_ask
4237
4238echo " "
49c10eea 4239echo "Checking to see how big your file offsets are..." >&4
bd9b35c9
JH
4240$cat >try.c <<EOCP
4241#include <sys/types.h>
4242#include <stdio.h>
4243int main()
4244{
4245 printf("%d\n", (int)sizeof($lseektype));
4246 return(0);
4247}
4248EOCP
4249set try
4250if eval $compile_ok; then
4251 lseeksize=`./try`
49c10eea 4252 echo "Your file offsets are $lseeksize bytes long."
bd9b35c9
JH
4253else
4254 dflt=$longsize
4255 echo " "
4256 echo "(I can't seem to compile the test program. Guessing...)"
4257 rp="What is the size of your file offsets (in bytes)?"
4258 . ./myread
4259 lseeksize="$ans"
4260fi
4261$rm -f try.c try
4262
4263: see what type file positions are declared as in the library
4264rp="What is the type for file position used by fsetpos()?"
4265set fpos_t fpostype long stdio.h sys/types.h
4266eval $typedef_ask
4267
4268echo " "
4269case "$fpostype" in
4270*_t) zzz="$fpostype" ;;
4271*) zzz="fpos_t" ;;
4272esac
49c10eea 4273echo "Checking the size of $zzz..." >&4
bd9b35c9
JH
4274cat > try.c <<EOCP
4275#include <sys/types.h>
4276#include <stdio.h>
4277int main() {
4278 printf("%d\n", (int)sizeof($fpostype));
4279 exit(0);
4280}
4281EOCP
4282set try
4283if eval $compile_ok; then
4284 yyy=`./try`
4285 case "$yyy" in
4286 '') fpossize=4
bd9b35c9
JH
4287 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4288 ;;
4289 *) fpossize=$yyy
c890dc6c 4290 echo "Your $zzz is $fpossize bytes long."
bd9b35c9
JH
4291 ;;
4292 esac
4293else
4294 dflt="$longsize"
68435ea7 4295 echo " " >&4
bd9b35c9
JH
4296 echo "(I can't compile the test program. Guessing...)" >&4
4297 rp="What is the size of your file positions (in bytes)?"
4298 . ./myread
4299 fpossize="$ans"
4300fi
4301
4302
8e07c86e 4303
10cc9d2a
JH
4304# Backward compatibility (uselfs is deprecated).
4305case "$uselfs" in
4306"$define"|true|[yY]*)
4307 cat <<EOM >&4
4308
4309*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
10cc9d2a
JH
4310EOM
4311 uselargefiles="$define"
4312 ;;
4313esac
4314
bd9b35c9
JH
4315case "$lseeksize:$fpossize" in
43168:8) cat <<EOM
8e07c86e 4317
bd9b35c9 4318You can have files larger than 2 gigabytes.
8e07c86e 4319EOM
bd9b35c9 4320 val="$define" ;;
0f0995ae
JH
4321*) case "$uselargefiles" in
4322 "$undef"|false|[nN]*) dflt='n' ;;
4323 *) dflt='y' ;;
4324 esac
4325 cat <<EOM
8e07c86e 4326
bd9b35c9 4327Perl can be built to understand large files (files larger than 2 gigabytes)
0f0995ae 4328on some systems. To do so, Configure can be run with -Duselargefiles.
bd9b35c9 4329
0f0995ae 4330If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4331EOM
bd9b35c9
JH
4332 rp='Try to understand large files, if available?'
4333 . ./myread
4334 case "$ans" in
4335 y|Y) val="$define" ;;
4336 *) val="$undef" ;;
4337 esac
4338 ;;
dfe9444c 4339esac
bd9b35c9
JH
4340set uselargefiles
4341eval $setvar
4342case "$uselargefiles" in
4343"$define")
4344: Look for a hint-file generated 'call-back-unit'. If the
4345: user has specified that a large files perl is to be built,
4346: we may need to set or change some other defaults.
8a647129 4347 if $test -f uselargefiles.cbu; then
bd9b35c9 4348 echo "Your platform has some specific hints for large file builds, using them..."
8a647129 4349 . ./uselargefiles.cbu
bd9b35c9 4350 echo " "
49c10eea 4351 echo "Rechecking to see how big your file offsets are..." >&4
bd9b35c9
JH
4352 $cat >try.c <<EOCP
4353#include <sys/types.h>
4354#include <stdio.h>
4355int main()
4356{
4357 printf("%d\n", (int)sizeof($lseektype));
4358 return(0);
4359}
4360EOCP
4361 set try
4362 if eval $compile_ok; then
4363 lseeksize=`./try`
49c10eea 4364 $echo "Your file offsets are now $lseeksize bytes long."
bd9b35c9
JH
4365 else
4366 dflt="$lseeksize"
4367 echo " "
4368 echo "(I can't seem to compile the test program. Guessing...)"
4369 rp="What is the size of your file offsets (in bytes)?"
4370 . ./myread
4371 lseeksize="$ans"
4372 fi
4373 case "$fpostype" in
4374 *_t) zzz="$fpostype" ;;
4375 *) zzz="fpos_t" ;;
4376 esac
4377 $echo $n "Rechecking the size of $zzz...$c" >&4
4378 $cat > try.c <<EOCP
4379#include <sys/types.h>
4380#include <stdio.h>
4381int main() {
4382 printf("%d\n", (int)sizeof($fpostype));
4383 exit(0);
4384}
4385EOCP
4386 set try
4387 if eval $compile_ok; then
4388 yyy=`./try`
4389 dflt="$lseeksize"
4390 case "$yyy" in
4391 '') echo " "
4392 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4393 ;;
4394 *) fpossize=$yyy
49c10eea 4395 echo " $fpossize bytes." >&4
bd9b35c9
JH
4396 ;;
4397 esac
4398 else
4399 dflt="$fpossize"
4400 echo " "
4401 echo "(I can't compile the test program. Guessing...)" >&4
4402 rp="What is the size of your file positions (in bytes)?"
4403 . ./myread
4404 fpossize="$ans"
4405 fi
4406 $rm -f try.c try
4407 fi
dfe9444c
AD
4408 ;;
4409esac
bd9b35c9
JH
4410
4411
4412case "$usemorebits" in
4413"$define"|true|[yY]*)
10cc9d2a 4414 use64bitint="$define"
bd9b35c9
JH
4415 uselongdouble="$define"
4416 usemorebits="$define"
dfe9444c 4417 ;;
bd9b35c9 4418*) usemorebits="$undef"
dfe9444c
AD
4419 ;;
4420esac
dfe9444c 4421
dfe9444c 4422
49c10eea
JH
4423case "$uselonglong" in
4424"$define"|true|[yY]*)
4425 cat <<EOM >&4
4426
10cc9d2a 4427*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
10cc9d2a
JH
4428EOM
4429 use64bitint="$define"
4430 ;;
4431esac
10cc9d2a
JH
4432case "$use64bits" in
4433"$define"|true|[yY]*)
4434 cat <<EOM >&4
4435
4436*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
49c10eea 4437EOM
10cc9d2a 4438 use64bitint="$define"
49c10eea
JH
4439 ;;
4440esac
10cc9d2a
JH
4441case "$use64bitints" in
4442"$define"|true|[yY]*)
4443 cat <<EOM >&4
4444
4445*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
10cc9d2a
JH
4446EOM
4447 use64bitint="$define"
4448 ;;
4449esac
3141530c
JH
4450case "$use64bitsint" in
4451"$define"|true|[yY]*)
4452 cat <<EOM >&4
4453
4454*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4455EOM
4456 use64bitint="$define"
4457 ;;
4458esac
4459case "$uselonglongs" in
4460"$define"|true|[yY]*)
4461 cat <<EOM >&4
4462
4463*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4464EOM
4465 use64bitint="$define"
4466 ;;
4467esac
a1b03cdf
JH
4468case "$use64bitsall" in
4469"$define"|true|[yY]*)
4470 cat <<EOM >&4
4471
4472*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4473EOM
4474 use64bitall="$define"
4475 ;;
4476esac
10cc9d2a 4477
49c10eea 4478case "$ccflags" in
10cc9d2a 4479*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
49c10eea 4480esac
10cc9d2a
JH
4481case "$use64bitall" in
4482"$define"|true|[yY]*) use64bitint="$define" ;;
49c10eea
JH
4483esac
4484
4485case "$longsize" in
44868) cat <<EOM
4487
4488You have natively 64-bit long integers.
bd9b35c9 4489EOM
ad551343
JH
4490 val="$define"
4491 ;;
10cc9d2a 4492*) case "$use64bitint" in
49c10eea 4493 "$define"|true|[yY]*) dflt='y';;
ad551343
JH
4494 *) dflt='n';;
4495 esac
49c10eea 4496 cat <<EOM
29209bc5 4497
bd9b35c9 4498Perl can be built to take advantage of 64-bit integer types
10cc9d2a 4499on some systems. To do so, Configure can be run with -Duse64bitint.
49c10eea 4500Choosing this option will most probably introduce binary incompatibilities.
29209bc5 4501
ad551343 4502If this doesn't make any sense to you, just accept the default '$dflt'.
29209bc5 4503EOM
ad551343
JH
4504 rp='Try to use 64-bit integers, if available?'
4505 . ./myread
4506 case "$ans" in
4507 [yY]*) val="$define" ;;
4508 *) val="$undef" ;;
4509 esac
4510 ;;
29209bc5 4511esac
10cc9d2a 4512set use64bitint
29209bc5
JH
4513eval $setvar
4514
1acc7ade
JH
4515case "$use64bitall" in
4516"$define"|true|[yY]*) dflt='y' ;;
4517*) case "$longsize" in
4518 8) dflt='y' ;;
4519 *) dflt='n' ;;
4520 esac
4521 ;;
4522esac
843b3b0e
JH
4523cat <<EOM
4524
4525You may also choose to try maximal 64-bitness. It means using as much
452664-bitness as possible on the platform. This in turn means even more
4527binary incompatibilities. On the other hand, your platform may not
4528have any more 64-bitness available than what you already have chosen.
4529
4530If this doesn't make any sense to you, just accept the default '$dflt'.
4531EOM
4532rp='Try to use maximal 64-bit support, if available?'
4533. ./myread
4534case "$ans" in
4535[yY]*) val="$define" ;;
4536*) val="$undef" ;;
4537esac
10cc9d2a 4538set use64bitall
49c10eea 4539eval $setvar
843b3b0e
JH
4540case "$use64bitall" in
4541"$define")
4542 case "$use64bitint" in
4543 "$undef")
4544 cat <<EOM
4545
4546Since you have chosen a maximally 64-bit build, I'm also turning on
4547the use of 64-bit integers.
4548EOM
4549 use64bitint="$define" ;;
4550 esac
4551 ;;
4552esac
bd9b35c9 4553
10cc9d2a 4554case "$use64bitint" in
bd9b35c9
JH
4555"$define"|true|[yY]*)
4556: Look for a hint-file generated 'call-back-unit'. If the
4557: user has specified that a 64-bit perl is to be built,
4558: we may need to set or change some other defaults.
10cc9d2a 4559 if $test -f use64bitint.cbu; then
e5788f28 4560 echo "Your platform has some specific hints for 64-bit integers, using them..."
10cc9d2a 4561 . ./use64bitint.cbu
bd9b35c9 4562 fi
49c10eea 4563 case "$longsize" in
701a9a05 4564 4) case "$archname64" in
10cc9d2a 4565 '') archname64=64int ;;
49c10eea
JH
4566 esac
4567 ;;
4568 esac
4569 ;;
4570esac
4571
10cc9d2a 4572case "$use64bitall" in
49c10eea
JH
4573"$define"|true|[yY]*)
4574: Look for a hint-file generated 'call-back-unit'. If the
843b3b0e 4575: user has specified that a maximally 64-bit perl is to be built,
49c10eea 4576: we may need to set or change some other defaults.
10cc9d2a 4577 if $test -f use64bitall.cbu; then
843b3b0e 4578 echo "Your platform has some specific hints for 64-bit builds, using them..."
10cc9d2a 4579 . ./use64bitall.cbu
49c10eea
JH
4580 fi
4581 case "$longsize" in
c6861c9d 4582 4) case "$archname64" in
bab3591f 4583 ''|64int) archname64=64all ;;
49c10eea
JH
4584 esac
4585 ;;
4586 esac
bd9b35c9
JH
4587 ;;
4588esac
4589
4590: determine the architecture name
2afac517 4591echo " "
bd9b35c9
JH
4592if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4593 tarch=`arch`"-$osname"
4594elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4595 if uname -m > tmparch 2>&1 ; then
4596 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4597 -e 's/$/'"-$osname/" tmparch`
4598 else
4599 tarch="$osname"
4600 fi
4601 $rm -f tmparch
4602else
4603 tarch="$osname"
4604fi
4605case "$myarchname" in
4606''|"$tarch") ;;
4607*)
4608 echo "(Your architecture name used to be $myarchname.)"
4609 archname=''
4610 ;;
8e07c86e 4611esac
bd9b35c9
JH
4612myarchname="$tarch"
4613case "$archname" in
4614'') dflt="$tarch";;
4615*) dflt="$archname";;
2afac517 4616esac
bd9b35c9
JH
4617rp='What is your architecture name'
4618. ./myread
4619archname="$ans"
4620case "$usethreads" in
29209bc5 4621$define)
bd9b35c9
JH
4622 echo "Threads selected." >&4
4623 case "$archname" in
4624 *-thread*) echo "...and architecture name already has -thread." >&4
4625 ;;
4626 *) archname="$archname-thread"
4627 echo "...setting architecture name to $archname." >&4
4628 ;;
4629 esac
29209bc5
JH
4630 ;;
4631esac
bd9b35c9
JH
4632case "$usemultiplicity" in
4633$define)
4634 echo "Multiplicity selected." >&4
4635 case "$archname" in
4636 *-multi*) echo "...and architecture name already has -multi." >&4
4637 ;;
4638 *) archname="$archname-multi"
4639 echo "...setting architecture name to $archname." >&4
4640 ;;
4641 esac
4642 ;;
4643esac
10cc9d2a 4644case "$use64bitint" in
bd9b35c9
JH
4645$define)
4646 case "$archname64" in
4647 '')
4648 ;;
4649 *)
4650 case "$archname" in
4651 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4652 ;;
4653 *) archname="$archname-$archname64"
4654 echo "...setting architecture name to $archname." >&4
4655 ;;
4656 esac
4657 ;;
4658 esac
4659esac
4660
4661: determine root of directory hierarchy where package will be installed.
4662case "$prefix" in
4663'')
4664 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4665 ;;
4666*)
4667 dflt="$prefix"
4668 ;;
4669esac
4670$cat <<EOM
4671
4672By default, $package will be installed in $dflt/bin, manual pages
4673under $dflt/man, etc..., i.e. with $dflt as prefix for all
4674installation directories. Typically this is something like /usr/local.
4675If you wish to have binaries under /usr/bin but other parts of the
4676installation under /usr/local, that's ok: you will be prompted
4677separately for each of the installation directories, the prefix being
4678only used to set the defaults.
4679
4680EOM
4681fn=d~
4682rp='Installation prefix to use?'
4683. ./getfile
4684oldprefix=''
4685case "$prefix" in
4686'') ;;
4687*)
4688 case "$ans" in
4689 "$prefix") ;;
4690 *) oldprefix="$prefix";;
4691 esac
4692 ;;
4693esac
4694prefix="$ans"
4695prefixexp="$ansexp"
4696
4697: is AFS running?
4698echo " "
4699case "$afs" in
4700$define|true) afs=true ;;
4701$undef|false) afs=false ;;
4702*) if test -d /afs; then
4703 afs=true
2afac517 4704 else
bd9b35c9 4705 afs=false
2afac517 4706 fi
bd9b35c9 4707 ;;
8e07c86e 4708esac
bd9b35c9
JH
4709if $afs; then
4710 echo "AFS may be running... I'll be extra cautious then..." >&4
4711else
4712 echo "AFS does not seem to be running..." >&4
4713fi
2afac517 4714
bd9b35c9
JH
4715: determine installation prefix for where package is to be installed.
4716if $afs; then
4633a7c4 4717$cat <<EOM
29209bc5 4718
bd9b35c9
JH
4719Since you are running AFS, I need to distinguish the directory in which
4720files will reside from the directory in which they are installed (and from
4721which they are presumably copied to the former directory by occult means).
4722
4633a7c4 4723EOM
bd9b35c9
JH
4724 case "$installprefix" in
4725 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4726 *) dflt="$installprefix";;
4727 esac
4728else
4729$cat <<EOM
2afac517 4730
bd9b35c9
JH
4731In some special cases, particularly when building $package for distribution,
4732it is convenient to distinguish between the directory in which files should
4733be installed from the directory ($prefix) in which they
4734will eventually reside. For most users, these two directories are the same.
8e07c86e 4735
bd9b35c9
JH
4736EOM
4737 case "$installprefix" in
4738 '') dflt=$prefix ;;
4739 *) dflt=$installprefix;;
4740 esac
4741fi
4742fn=d~
4743rp='What installation prefix should I use for installing files?'
4744. ./getfile
4745installprefix="$ans"
4746installprefixexp="$ansexp"
4633a7c4 4747
bd9b35c9
JH
4748: set the prefixit variable, to compute a suitable default value
4749prefixit='case "$3" in
4750""|none)
4751 case "$oldprefix" in
4752 "") eval "$1=\"\$$2\"";;
4753 *)
4754 case "$3" in
4755 "") eval "$1=";;
4756 none)
4757 eval "tp=\"\$$2\"";
4758 case "$tp" in
4759 ""|" ") eval "$1=\"\$$2\"";;
4760 *) eval "$1=";;
4761 esac;;
4762 esac;;
4763 esac;;
4764*)
4765 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4766 case "$tp" in
4767 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4768 /*-$oldprefix/*|\~*-$oldprefix/*)
4769 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4770 *) eval "$1=\"\$$2\"";;
4771 esac;;
4772esac'
4633a7c4 4773
ff935051
JH
4774
4775: get the patchlevel
bd9b35c9
JH
4776echo " "
4777echo "Getting the current patchlevel..." >&4
4778if $test -r $rsrc/patchlevel.h;then
49c10eea 4779 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
bd9b35c9
JH
4780 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4781 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
ff935051
JH
4782 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4783 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4784 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
bd9b35c9 4785else
49c10eea 4786 revision=0
bd9b35c9
JH
4787 patchlevel=0
4788 subversion=0
ff935051
JH
4789 api_revision=0
4790 api_version=0
4791 api_subversion=0
bd9b35c9 4792fi
49c10eea 4793$echo $n "(You have $package revision $revision" $c
bd9b35c9
JH
4794$echo $n " patchlevel $patchlevel" $c
4795test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4796echo ".)"
ff935051 4797case "$osname" in
3645a519 4798dos|vms)
ff935051 4799 : XXX Should be a Configure test for double-dots in filenames.
49c10eea 4800 version=`echo $revision $patchlevel $subversion | \
273cf8d1 4801 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
ff935051
JH
4802 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4803 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4804 ;;
4805*)
49c10eea 4806 version=`echo $revision $patchlevel $subversion | \
ff935051
JH
4807 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4808 api_versionstring=`echo $api_revision $api_version $api_subversion | \
273cf8d1 4809 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
ff935051
JH
4810 ;;
4811esac
4812: Special case the 5.005_xx maintenance series, which used 5.005
4813: without any subversion label as a subdirectory in $sitelib
4814if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4815 api_versionstring='5.005'
273cf8d1 4816fi
bd9b35c9
JH
4817
4818: determine installation style
4819: For now, try to deduce it from prefix unless it is already set.
4820: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4821case "$installstyle" in
4822'') case "$prefix" in
4823 *perl*) dflt='lib';;
4824 *) dflt='lib/perl5' ;;
34d1710f 4825 esac
4633a7c4 4826 ;;
d6c8a45d 4827*) dflt="$installstyle" ;;
4633a7c4 4828esac
bd9b35c9
JH
4829: Probably not worth prompting for this since we prompt for all
4830: the directories individually, and the prompt would be too long and
4831: confusing anyway.
4832installstyle=$dflt
4633a7c4 4833
bd9b35c9
JH
4834: determine where private library files go
4835: Usual default is /usr/local/lib/perl5/$version.
4836: Also allow things like /opt/perl/lib/$version, since
4837: /opt/perl/lib/perl5... would be redundant.
4838: The default "style" setting is made in installstyle.U
4839case "$installstyle" in
4840*lib/perl5*) set dflt privlib lib/$package/$version ;;
4841*) set dflt privlib lib/$version ;;
a4f3eea9 4842esac
bd9b35c9
JH
4843eval $prefixit
4844$cat <<EOM
a4f3eea9 4845
bd9b35c9
JH
4846There are some auxiliary files for $package that need to be put into a
4847private library directory that is accessible by everyone.
4848
4849EOM
4850fn=d~+
4851rp='Pathname where the private library files will reside?'
4852. ./getfile
4853privlib="$ans"
4854privlibexp="$ansexp"
4855: Change installation prefix, if necessary.
4856if $test X"$prefix" != X"$installprefix"; then
4857 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
a4f3eea9 4858else
bd9b35c9
JH
4859 installprivlib="$privlibexp"
4860fi
a4f3eea9 4861
bd9b35c9
JH
4862: set the prefixup variable, to restore leading tilda escape
4863prefixup='case "$prefixexp" in
4864"$prefix") ;;
4865*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4866esac'
a4f3eea9 4867
bd9b35c9
JH
4868: determine where public architecture dependent libraries go
4869set archlib archlib
4870eval $prefixit
4871: privlib default is /usr/local/lib/$package/$version
4872: archlib default is /usr/local/lib/$package/$version/$archname
4873: privlib may have an optional trailing /share.
4874tdflt=`echo $privlib | $sed 's,/share$,,'`
4875tdflt=$tdflt/$archname
4876case "$archlib" in
4877'') dflt=$tdflt
29209bc5 4878 ;;
bd9b35c9
JH
4879*) dflt="$archlib"
4880 ;;
29209bc5 4881esac
bd9b35c9 4882$cat <<EOM
29209bc5 4883
bd9b35c9
JH
4884$spackage contains architecture-dependent library files. If you are
4885sharing libraries in a heterogeneous environment, you might store
4886these files in a separate location. Otherwise, you can just include
4887them with the rest of the public library files.
a4f3eea9 4888
bd9b35c9
JH
4889EOM
4890fn=d+~
4891rp='Where do you want to put the public architecture-dependent libraries?'
4892. ./getfile
4893archlib="$ans"
4894archlibexp="$ansexp"
4895if $test X"$archlib" = X"$privlib"; then
4896 d_archlib="$undef"
4897else
4898 d_archlib="$define"
4899fi
4900: Change installation prefix, if necessary.
4901if $test X"$prefix" != X"$installprefix"; then
4902 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4903else
4904 installarchlib="$archlibexp"
4905fi
a4f3eea9 4906
a4f3eea9 4907
bd9b35c9
JH
4908: Binary compatibility with 5.005 is not possible for builds
4909: with advanced features
4910case "$usethreads$usemultiplicity" in
4911*define*)
4912 bincompat5005="$undef"
4913 d_bincompat5005="$undef"
4914 ;;
4915*) $cat <<EOM
a4f3eea9 4916
bd9b35c9
JH
4917Perl 5.006 can be compiled for binary compatibility with 5.005.
4918If you decide to do so, you will be able to continue using most
4919of the extensions that were compiled for Perl 5.005.
a4f3eea9 4920
a4f3eea9 4921EOM
bd9b35c9
JH
4922 case "$bincompat5005$d_bincompat5005" in
4923 *"$undef"*) dflt=n ;;
4924 *) dflt=y ;;
a4f3eea9 4925 esac
bd9b35c9
JH
4926 rp='Binary compatibility with Perl 5.005?'
4927 . ./myread
4928 case "$ans" in
4929 y*) val="$define" ;;
4930 *) val="$undef" ;;
a4f3eea9 4931 esac
bd9b35c9
JH
4932 set d_bincompat5005
4933 eval $setvar
4934 case "$d_bincompat5005" in
4935 "$define")
4936 bincompat5005="$define"
4937 ;;
4938 *) bincompat5005="$undef"
4939 d_bincompat5005="$undef"
a4f3eea9 4940 ;;
4941 esac
bd9b35c9 4942 ;;
a4f3eea9 4943esac
4944
a4f3eea9 4945
bd9b35c9
JH
4946: see if setuid scripts can be secure
4947$cat <<EOM
a4f3eea9 4948
bd9b35c9
JH
4949Some kernels have a bug that prevents setuid #! scripts from being
4950secure. Some sites have disabled setuid #! scripts because of this.
a4f3eea9 4951
bd9b35c9
JH
4952First let's decide if your kernel supports secure setuid #! scripts.
4953(If setuid #! scripts would be secure but have been disabled anyway,
4954don't say that they are secure if asked.)
5ff3f7a4
GS
4955
4956EOM
a4f3eea9 4957
bd9b35c9
JH
4958val="$undef"
4959if $test -d /dev/fd; then
4960 echo "#!$ls" >reflect
4961 chmod +x,u+s reflect
4962 ./reflect >flect 2>&1
4963 if $contains "/dev/fd" flect >/dev/null; then
4964 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4965 val="$define"
4966 else
4967 $cat <<EOM
4968If you are not sure if they are secure, I can check but I'll need a
4969username and password different from the one you are using right now.
4970If you don't have such a username or don't want me to test, simply
4971enter 'none'.
a4f3eea9 4972
4973EOM
bd9b35c9
JH
4974 rp='Other username to test security of setuid scripts with?'
4975 dflt='none'
4976 . ./myread
4977 case "$ans" in
4978 n|none)
4979 case "$d_suidsafe" in
4980 '') echo "I'll assume setuid scripts are *not* secure." >&4
4981 dflt=n;;
4982 "$undef")
4983 echo "Well, the $hint value is *not* secure." >&4
4984 dflt=n;;
4985 *) echo "Well, the $hint value *is* secure." >&4
4986 dflt=y;;
dfe9444c
AD
4987 esac
4988 ;;
bd9b35c9
JH
4989 *)
4990 $rm -f reflect flect
4991 echo "#!$ls" >reflect
4992 chmod +x,u+s reflect
4993 echo >flect
4994 chmod a+w flect
4995 echo '"su" will (probably) prompt you for '"$ans's password."
4996 su $ans -c './reflect >flect'
4997 if $contains "/dev/fd" flect >/dev/null; then
4998 echo "Okay, it looks like setuid scripts are secure." >&4
4999 dflt=y
5000 else
5001 echo "I don't think setuid scripts are secure." >&4
5002 dflt=n
5003 fi
5004 ;;
5005 esac
5006 rp='Does your kernel have *secure* setuid scripts?'
5007 . ./myread
5008 case "$ans" in
5009 [yY]*) val="$define";;
5010 *) val="$undef";;
dfe9444c 5011 esac
a4f3eea9 5012 fi
5013else
bd9b35c9
JH
5014 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5015 echo "(That's for file descriptors, not floppy disks.)"
5016 val="$undef"
a4f3eea9 5017fi
bd9b35c9
JH
5018set d_suidsafe
5019eval $setvar
5020
5021$rm -f reflect flect
5022
5023: now see if they want to do setuid emulation
5024echo " "
5025val="$undef"
5026case "$d_suidsafe" in
5027"$define")
5028 val="$undef"
5029 echo "No need to emulate SUID scripts since they are secure here." >& 4
5030 ;;
5031*)
5032 $cat <<EOM
5033Some systems have disabled setuid scripts, especially systems where
5034setuid scripts cannot be secure. On systems where setuid scripts have
5035been disabled, the setuid/setgid bits on scripts are currently
5036useless. It is possible for $package to detect those bits and emulate
5037setuid/setgid in a secure fashion. This emulation will only work if
5038setuid scripts have been disabled in your kernel.
5039
5040EOM
5041 case "$d_dosuid" in
5042 "$define") dflt=y ;;
5043 *) dflt=n ;;
a4f3eea9 5044 esac
bd9b35c9 5045 rp="Do you want to do setuid/setgid emulation?"
a4f3eea9 5046 . ./myread
5047 case "$ans" in
bd9b35c9
JH
5048 [yY]*) val="$define";;
5049 *) val="$undef";;
a4f3eea9 5050 esac
5051 ;;
a4f3eea9 5052esac
bd9b35c9
JH
5053set d_dosuid
5054eval $setvar
a4f3eea9 5055
bfb7748a
AD
5056: determine filename position in cpp output
5057echo " "
5058echo "Computing filename position in cpp output for #include directives..." >&4
5059echo '#include <stdio.h>' > foo.c
5060$cat >fieldn <<EOF
5061$startsh
5062$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5063$grep '^[ ]*#.*stdio\.h' | \
5064while read cline; do
5065 pos=1
5066 set \$cline
5067 while $test \$# -gt 0; do
5068 if $test -r \`echo \$1 | $tr -d '"'\`; then
5069 echo "\$pos"
5070 exit 0
5071 fi
5072 shift
5073 pos=\`expr \$pos + 1\`
5074 done
5075done
5076EOF
5077chmod +x fieldn
5078fieldn=`./fieldn`
5079$rm -f foo.c fieldn
5080case $fieldn in
5081'') pos='???';;
50821) pos=first;;
50832) pos=second;;
50843) pos=third;;
5085*) pos="${fieldn}th";;
5086esac
5087echo "Your cpp writes the filename in the $pos field of the line."
5088
5089: locate header file
5090$cat >findhdr <<EOF
5091$startsh
5092wanted=\$1
9cc6feab 5093name=''
3656fc86
JH
5094for usrincdir in $usrinc
5095do
5096 if test -f \$usrincdir/\$wanted; then
5097 echo "\$usrincdir/\$wanted"
5098 exit 0
5099 fi
5100done
bfb7748a
AD
5101awkprg='{ print \$$fieldn }'
5102echo "#include <\$wanted>" > foo\$\$.c
5103$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5104$grep "^[ ]*#.*\$wanted" | \
5105while read cline; do
5106 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5107 case "\$name" in
4e400192
JH
5108 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5109 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5110 *) exit 2;;
bfb7748a
AD
5111 esac;
5112done;
4e400192
JH
5113#
5114# status = 0: grep returned 0 lines, case statement not executed
5115# status = 1: headerfile found
5116# status = 2: while loop executed, no headerfile found
5117#
5118status=\$?
bfb7748a 5119$rm -f foo\$\$.c;
4e400192
JH
5120if test \$status -eq 1; then
5121 exit 0;
5122fi
5123exit 1
bfb7748a
AD
5124EOF
5125chmod +x findhdr
5126
5127: define an alternate in-header-list? function
5128inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5129cont=true; xxf="echo \"<\$1> found.\" >&4";
5130case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5131*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5132esac;
5133case $# in 4) instead=instead;; *) instead="at last";; esac;
5134while $test "$cont"; do
5135 xxx=`./findhdr $1`
5136 var=$2; eval "was=\$$2";
5137 if $test "$xxx" && $test -r "$xxx";
5138 then eval $xxf;
5139 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5140 cont="";
5141 else eval $xxnf;
5142 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5143 set $yyy; shift; shift; yyy=$@;
5144 case $# in 0) cont="";;
5145 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5146 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5147 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5148 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5149 esac;
5150done;
5151while $test "$yyy";
5152do set $yyy; var=$2; eval "was=\$$2";
5153 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5154 set $yyy; shift; shift; yyy=$@;
5155done'
5156
5157: see if this is a malloc.h system
5158set malloc.h i_malloc
5159eval $inhdr
5160
5161: see if stdlib is available
5162set stdlib.h i_stdlib
5163eval $inhdr
5164
5165: determine which malloc to compile in
5166echo " "
5167case "$usemymalloc" in
5ff3f7a4
GS
5168''|[yY]*|true|$define) dflt='y' ;;
5169*) dflt='n' ;;
bfb7748a
AD
5170esac
5171rp="Do you wish to attempt to use the malloc that comes with $package?"
5172. ./myread
5173usemymalloc="$ans"
5174case "$ans" in
5175y*|true)
5176 usemymalloc='y'
5177 mallocsrc='malloc.c'
5178 mallocobj="malloc$_o"
5179 d_mymalloc="$define"
5180 case "$libs" in
5181 *-lmalloc*)
5182 : Remove malloc from list of libraries to use
5183 echo "Removing unneeded -lmalloc from library list" >&4
5184 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5185 shift
5186 libs="$*"
5187 echo "libs = $libs" >&4
5188 ;;
5189 esac
5190 ;;
5191*)
5192 usemymalloc='n'
5193 mallocsrc=''
5194 mallocobj=''
5195 d_mymalloc="$undef"
5196 ;;
5197esac
5198
5199: compute the return types of malloc and free
5200echo " "
5201$cat >malloc.c <<END
5202#$i_malloc I_MALLOC
5203#$i_stdlib I_STDLIB
5204#include <stdio.h>
5205#include <sys/types.h>
5206#ifdef I_MALLOC
5207#include <malloc.h>
5208#endif
5209#ifdef I_STDLIB
5210#include <stdlib.h>
5211#endif
5212#ifdef TRY_MALLOC
5213void *malloc();
5214#endif
5215#ifdef TRY_FREE
5216void free();
5217#endif
5218END
5219case "$malloctype" in
5220'')
5221 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5222 malloctype='void *'
5223 else
5224 malloctype='char *'
5225 fi
5226 ;;
5227esac
5228echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5229
5230case "$freetype" in
5231'')
5232 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5233 freetype='void'
5234 else
5235 freetype='int'
5236 fi
5237 ;;
5238esac
5239echo "Your system uses $freetype free(), it would seem." >&4
5240$rm -f malloc.[co]
a3635516
JH
5241$cat <<EOM
5242
5243The installation process will also create a directory for
5244vendor-supplied add-ons. Vendors who supply perl with their system
5245may find it convenient to place all vendor-supplied files in this
5246directory rather than in the main distribution directory. This will
5247ease upgrades between binary-compatible maintenance versions of perl.
5248
5249Of course you may also use these directories in whatever way you see
5250fit. For example, you might use them to access modules shared over a
5251company-wide network.
5252
5253The default answer should be fine for most people.
5254This causes further questions about vendor add-ons to be skipped
5255and no vendor-specific directories will be configured for perl.
5256
5257EOM
5258rp='Do you want to configure vendor-specific add-on directories?'
5259case "$usevendorprefix" in
5260define|true|[yY]*) dflt=y ;;
49c10eea
JH
5261*) : User may have set vendorprefix directly on Configure command line.
5262 case "$vendorprefix" in
5263 ''|' ') dflt=n ;;
5264 *) dflt=y ;;
5265 esac
5266 ;;
a3635516
JH
5267esac
5268. ./myread
5269case "$ans" in
5270[yY]*) fn=d~+
5271 rp='Installation prefix to use for vendor-supplied add-ons?'
5272 case "$vendorprefix" in
5273 '') dflt='' ;;
5274 *) dflt=$vendorprefix ;;
5275 esac
5276 . ./getfile
49c10eea 5277 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
a3635516
JH
5278 oldvendorprefix=''
5279 case "$vendorprefix" in
5280 '') ;;
5281 *) case "$ans" in
5282 "$prefix") ;;
5283 *) oldvendorprefix="$prefix";;
5284 esac
5285 ;;
5286 esac
5287 usevendorprefix="$define"
5288 vendorprefix="$ans"
5289 vendorprefixexp="$ansexp"
5290 ;;
5291*) usevendorprefix="$undef"
5292 vendorprefix=''
5293 vendorprefixexp=''
5294 ;;
5295esac
5296
5297case "$vendorprefix" in
5298'') d_vendorlib="$undef"
5299 vendorlib=''
5300 vendorlibexp=''
5301 ;;
5302*) d_vendorlib="$define"
5303 : determine where vendor-supplied modules go.
629ae163 5304 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
49c10eea
JH
5305 case "$vendorlib" in
5306 '')
5307 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5308 case "$installstyle" in
5309 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5310 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5311 esac
5312 ;;
5313 *) dflt="$vendorlib"
5314 ;;
a3635516
JH
5315 esac
5316 fn=d~+
5317 rp='Pathname for the vendor-supplied library files?'
5318 . ./getfile
5319 vendorlib="$ans"
5320 vendorlibexp="$ansexp"
a3635516
JH
5321 ;;
5322esac
526fdc24 5323vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
49c10eea
JH
5324: Change installation prefix, if necessary.
5325if $test X"$prefix" != X"$installprefix"; then
5326 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5327else
5328 installvendorlib="$vendorlibexp"
5329fi
a3635516 5330
526fdc24
MS
5331case "$vendorprefix" in
5332'') d_vendorarch="$undef"
5333 vendorarch=''
5334 vendorarchexp=''
5335 ;;
5336*) d_vendorarch="$define"
5337 : determine where vendor-supplied architecture-dependent libraries go.
5338 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
5339 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5340 : vendorlib may have an optional trailing /share.
5341 case "$vendorarch" in
5342 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
5343 dflt="$dflt/$archname"
5344 ;;
5345 *) dflt="$vendorarch" ;;
5346 esac
5347 fn=d~+
5348 rp='Pathname for vendor-supplied architecture-dependent files?'
5349 . ./getfile
5350 vendorarch="$ans"
5351 vendorarchexp="$ansexp"
5352 ;;
5353esac
5354: Change installation prefix, if necessary.
5355if $test X"$prefix" != X"$installprefix"; then
5356 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5357else
5358 installvendorarch="$vendorarchexp"
5359fi
5360
c4f23d77
AD
5361: Cruising for prototypes
5362echo " "
5363echo "Checking out function prototypes..." >&4
5364$cat >prototype.c <<'EOCP'
5a411a32 5365int main(int argc, char *argv[]) {
c4f23d77
AD
5366 exit(0);}
5367EOCP
5368if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5369 echo "Your C compiler appears to support function prototypes."
5370 val="$define"
5371else
5372 echo "Your C compiler doesn't seem to understand function prototypes."
5373 val="$undef"
5374fi
5375set prototype
5376eval $setvar
5377$rm -f prototype*
5378
5379case "$prototype" in
5380"$define") ;;
5381*) ansi2knr='ansi2knr'
5382 echo " "
5383 cat <<EOM >&4
5384
5385$me: FATAL ERROR:
5386This version of $package can only be compiled by a compiler that
5387understands function prototypes. Unfortunately, your C compiler
5388 $cc $ccflags
5389doesn't seem to understand them. Sorry about that.
5390
5ff3f7a4 5391If GNU cc is available for your system, perhaps you could try that instead.
c4f23d77
AD
5392
5393Eventually, we hope to support building Perl with pre-ANSI compilers.
5394If you would like to help in that effort, please contact <perlbug@perl.org>.
5395
5396Aborting Configure now.
5397EOM
5398 exit 2
5399 ;;
5400esac
5401
5402: determine where public executables go
5403echo " "
5404set dflt bin bin
5405eval $prefixit
5406fn=d~
5407rp='Pathname where the public executables will reside?'
5408. ./getfile
5409if $test "X$ansexp" != "X$binexp"; then
5410 installbin=''
5411fi
5412bin="$ans"
5413binexp="$ansexp"
dd4e71fd
JH
5414: Change installation prefix, if necessary.
5415: XXX Bug? -- ignores Configure -Dinstallprefix setting.
5416if $test X"$prefix" != X"$installprefix"; then
ec897fb9 5417 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
5418else
5419 installbin="$binexp"
c4f23d77
AD
5420fi
5421
49c10eea
JH
5422: Find perl5.005 or later.
5423echo "Looking for a previously installed perl5.005 or later... "
5424case "$perl5" in
5425'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5426 : Check if this perl is recent and can load a simple module
5427 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5428 perl5=$tdir/perl
5429 break;
5430 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5431 perl5=$tdir/perl
5432 break;
5433 fi
5434 done
5435 ;;
5436*) perl5="$perl5"
5437 ;;
5438esac
5439case "$perl5" in
5440'') echo "None found. That's ok.";;
5441*) echo "Using $perl5." ;;
5442esac
5443
ff935051
JH
5444$cat <<EOM
5445
5446After $package is installed, you may wish to install various
5447add-on modules and utilities. Typically, these add-ons will
5448be installed under $prefix with the rest
5449of this package. However, you may wish to install such add-ons
5450elsewhere under a different prefix.
5451
5452If you do not wish to put everything under a single prefix, that's
5453ok. You will be prompted for the individual locations; this siteprefix
5454is only used to suggest the defaults.
5455
5456The default should be fine for most people.
5457
5458EOM
5459fn=d~+
5460rp='Installation prefix to use for add-on modules and utilities?'
5461: XXX Here might be another good place for an installstyle setting.
5462case "$siteprefix" in
5463'') dflt=$prefix ;;
5464*) dflt=$siteprefix ;;
5465esac
5466. ./getfile
49c10eea 5467: XXX Prefixit unit does not yet support siteprefix and vendorprefix
ff935051
JH
5468oldsiteprefix=''
5469case "$siteprefix" in
5470'') ;;
49c10eea 5471*) case "$ans" in
ff935051
JH
5472 "$prefix") ;;
5473 *) oldsiteprefix="$prefix";;
5474 esac
5475 ;;
5476esac
5477siteprefix="$ans"
5478siteprefixexp="$ansexp"
5479
5480: determine where site specific libraries go.
5481: Usual default is /usr/local/lib/perl5/site_perl/$version
5482: The default "style" setting is made in installstyle.U
5483: XXX No longer works with Prefixit stuff.
5484prog=`echo $package | $sed 's/-*[0-9.]*$//'`
49c10eea
JH
5485case "$sitelib" in
5486'') case "$installstyle" in
5487 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5488 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5489 esac
5490 ;;
5491*) dflt="$sitelib"
5492 ;;
ff935051
JH
5493esac
5494$cat <<EOM
5495
5496The installation process will create a directory for
5497site-specific extensions and modules. Most users find it convenient
5498to place all site-specific files in this directory rather than in the
5499main distribution directory.
5500
5501EOM
5502fn=d~+
5503rp='Pathname for the site-specific library files?'
5504. ./getfile
5505sitelib="$ans"
5506sitelibexp="$ansexp"
526fdc24 5507sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
ff935051
JH
5508: Change installation prefix, if necessary.
5509if $test X"$prefix" != X"$installprefix"; then
49c10eea 5510 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
ff935051
JH
5511else
5512 installsitelib="$sitelibexp"
5513fi
5514
5515: Determine list of previous versions to include in @INC
5516$cat > getverlist <<EOPL
49c10eea 5517#!$perl5 -w
ff935051
JH
5518use File::Basename;
5519\$api_versionstring = "$api_versionstring";
5520\$version = "$version";
5521\$sitelib = "$sitelib";
5522\$archname = "$archname";
5523EOPL
5524 $cat >> getverlist <<'EOPL'
5525# Can't have leading @ because metaconfig interprets it as a command!
5526;@inc_version_list=();
5527$stem=dirname($sitelib);
49c10eea 5528# XXX Redo to do opendir/readdir?
ff935051
JH
5529if (-d $stem) {
5530 chdir($stem);
5531 ;@candidates = glob("5.*");
5532}
5533else {
5534 ;@candidates = ();
5535}
5536
937ac629
JH
5537# XXX ToDo: These comparisons must be reworked when two-digit
5538# subversions come along, so that 5.7.10 compares as greater than
5539# 5.7.3! By that time, hope that 5.6.x is sufficiently
5540# widespread that we can use the built-in version vectors rather
5541# than reinventing them here. For 5.6.0, however, we must
5542# assume this script will likely be run by 5.005_0x. --AD 1/2000.
ff935051
JH
5543foreach $d (@candidates) {
5544 if ($d lt $version) {
5545 if ($d ge $api_versionstring) {
5546 unshift(@inc_version_list, "$d/$archname", $d);
5547 }
5548 elsif ($d ge "5.005") {
5549 unshift(@inc_version_list, $d);
5550 }
5551 }
5552 else {
5553 # Skip newer version. I.e. don't look in
5554 # 5.7.0 if we're installing 5.6.1.
5555 }
5556}
5557
5558if (@inc_version_list) {
3a096bf3 5559 print join(' ', @inc_version_list);
ff935051
JH
5560}
5561else {
5562 # Blank space to preserve value for next Configure run.
5563 print " ";
5564}
5565EOPL
5566chmod +x getverlist
5567case "$inc_version_list" in
49c10eea
JH
5568'') if test -x "$perl5"; then
5569 dflt=`$perl5 getverlist`
ff935051 5570 else
3a096bf3 5571 dflt='none'
ff935051
JH
5572 fi
5573 ;;
3a096bf3 5574$undef) dflt='none' ;;
ff935051
JH
5575*) dflt="$inc_version_list" ;;
5576esac
49c10eea
JH
5577case "$dflt" in
5578''|' ') dflt=none ;;
5579esac
ff935051
JH
5580$cat <<'EOM'
5581
5582In order to ease the process of upgrading, this version of perl
5583can be configured to use modules built and installed with earlier
5584versions of perl that were installed under $prefix. Specify here
5585the list of earlier versions that this version of perl should check.
5586If Configure detected no earlier versions of perl installed under
3a096bf3
JH
5587$prefix, then the list will be empty. Answer 'none' to tell perl
5588to not search earlier versions.
ff935051
JH
5589
5590The default should almost always be sensible, so if you're not sure,
5591just accept the default.
5592EOM
5593
3a096bf3 5594rp='List of earlier versions to include in @INC?'
ff935051 5595. ./myread
3a096bf3 5596case "$ans" in
49c10eea 5597[Nn]one|''|' ') inc_version_list=' ' ;;
3a096bf3
JH
5598*) inc_version_list="$ans" ;;
5599esac
5600case "$inc_version_list" in
5601''|' ')
82aaaa3c 5602 inc_version_list_init='0';;
3a096bf3 5603*) inc_version_list_init=`echo $inc_version_list |
82aaaa3c 5604 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
3a096bf3
JH
5605 ;;
5606esac
ff935051
JH
5607$rm -f getverlist
5608
104d25b7
JH
5609: determine whether to install perl also as /usr/bin/perl
5610
5611echo " "
dd4e71fd 5612if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
104d25b7 5613 $cat <<EOM
526fdc24 5614Many scripts expect perl to be installed as /usr/bin/perl.
104d25b7
JH
5615I can install the perl you are about to compile also as /usr/bin/perl
5616(in addition to $installbin/perl).
5617EOM
472a4973
JH
5618 case "$installusrbinperl" in
5619 "$undef"|[nN]*) dflt='n';;
5620 *) dflt='y';;
5621 esac
104d25b7
JH
5622 rp="Do you want to install perl as /usr/bin/perl?"
5623 . ./myread
5624 case "$ans" in
5625 [yY]*) val="$define";;
472a4973 5626 *) val="$undef" ;;
104d25b7 5627 esac
472a4973
JH
5628else
5629 val="$undef"
5630fi
104d25b7
JH
5631set installusrbinperl
5632eval $setvar
5633
a4f3eea9 5634echo " "
5635echo "Checking for GNU C Library..." >&4
5636cat >gnulibc.c <<EOM
aebf16e7 5637#include <stdio.h>
5a411a32 5638int main()
a4f3eea9 5639{
aebf16e7
AD
5640#ifdef __GLIBC__
5641 exit(0);
5642#else
5643 exit(1);
5644#endif
a4f3eea9 5645}
5646EOM
dfe9444c 5647set gnulibc
aebf16e7 5648if eval $compile_ok && ./gnulibc; then
a4f3eea9 5649 val="$define"
5650 echo "You are using the GNU C Library"
4633a7c4 5651else
a4f3eea9 5652 val="$undef"
5653 echo "You are not using the GNU C Library"
4633a7c4 5654fi
a4f3eea9 5655$rm -f gnulibc*
5656set d_gnulibc
5657eval $setvar
25f94b33 5658
a4f3eea9 5659: see if nm is to be used to determine whether a symbol is defined or not
5660case "$usenm" in
5661'')
dc45a647 5662 dflt=''
a4f3eea9 5663 case "$d_gnulibc" in
dc45a647
MB
5664 "$define")
5665 echo " "
5666 echo "nm probably won't work on the GNU C Library." >&4
a4f3eea9 5667 dflt=n
5668 ;;
dc45a647
MB
5669 esac
5670 case "$dflt" in
5671 '')
5672 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5673 echo " "
5674 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5675 echo "'nm' won't be sufficient on this sytem." >&4
5676 dflt=n
5677 fi
5678 ;;
5679 esac
5680 case "$dflt" in
c4f23d77 5681 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
a4f3eea9 5682 if $test $dflt -gt 20; then
5683 dflt=y
5684 else
5685 dflt=n
5686 fi
5687 ;;
5688 esac
5689 ;;
5690*)
5691 case "$usenm" in
dc45a647 5692 true|$define) dflt=y;;
a4f3eea9 5693 *) dflt=n;;
5694 esac
5695 ;;
25f94b33 5696esac
a4f3eea9 5697$cat <<EOM
4633a7c4 5698
dc45a647
MB
5699I can use $nm to extract the symbols from your C libraries. This
5700is a time consuming task which may generate huge output on the disk (up
5701to 3 megabytes) but that should make the symbols extraction faster. The
5702alternative is to skip the 'nm' extraction part and to compile a small
5703test program instead to determine whether each symbol is present. If
5704you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5705this may be the best solution.
5706
5707You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633a7c4 5708
a4f3eea9 5709EOM
693762b4 5710rp="Shall I use $nm to extract C symbols from the libraries?"
4633a7c4
LW
5711. ./myread
5712case "$ans" in
dc45a647 5713[Nn]*) usenm=false;;
a4f3eea9 5714*) usenm=true;;
4633a7c4
LW
5715esac
5716
a4f3eea9 5717runnm=$usenm
5718case "$reuseval" in
5719true) runnm=false;;
4633a7c4 5720esac
a4f3eea9 5721
5722: nm options which may be necessary
5723case "$nm_opt" in
5724'') if $test -f /mach_boot; then
1e422769 5725 nm_opt='' # Mach
a4f3eea9 5726 elif $test -d /usr/ccs/lib; then
1e422769 5727 nm_opt='-p' # Solaris (and SunOS?)
a4f3eea9 5728 elif $test -f /dgux; then
1e422769 5729 nm_opt='-p' # DG-UX
2ae324a7 5730 elif $test -f /lib64/rld; then
1e422769 5731 nm_opt='-p' # 64-bit Irix
a4f3eea9 5732 else
5733 nm_opt=''
5734 fi;;
4633a7c4 5735esac
4633a7c4 5736
a4f3eea9 5737: nm options which may be necessary for shared libraries but illegal
5738: for archive libraries. Thank you, Linux.
5739case "$nm_so_opt" in
5740'') case "$myuname" in
5741 *linux*)
693762b4 5742 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
a4f3eea9 5743 nm_so_opt='--dynamic'
4633a7c4 5744 fi
a4f3eea9 5745 ;;
4633a7c4 5746 esac
4633a7c4
LW
5747 ;;
5748esac
5749
a4f3eea9 5750case "$runnm" in
5751true)
5752: get list of predefined functions in a handy place
5753echo " "
5754case "$libc" in
5755'') libc=unknown
5756 case "$libs" in
dfe9444c 5757 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
a4f3eea9 5758 esac
5759 ;;
5760esac
5761libnames='';
5762case "$libs" in
5763'') ;;
5764*) for thislib in $libs; do
5765 case "$thislib" in
5766 -lc|-lc_s)
5767 : Handle C library specially below.
5768 ;;
5769 -l*)
5770 thislib=`echo $thislib | $sed -e 's/^-l//'`
5771 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5772 :
5773 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5774 :
dfe9444c 5775 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
a4f3eea9 5776 :
dfe9444c 5777 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
d97d40b5 5778 :
a4f3eea9 5779 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5780 :
5781 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5782 :
dfe9444c 5783 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
a4f3eea9 5784 :
5785 else
5786 try=''
5787 fi
5788 libnames="$libnames $try"
5789 ;;
5790 *) libnames="$libnames $thislib" ;;
5791 esac
5792 done
5793 ;;
5794esac
5795xxx=normal
5796case "$libc" in
5797unknown)
5798 set /lib/libc.$so
5799 for xxx in $libpth; do
5800 $test -r $1 || set $xxx/libc.$so
5801 : The messy sed command sorts on library version numbers.
5802 $test -r $1 || \
5803 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
28e8609d 5804 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
a4f3eea9 5805 h
5806 s/[0-9][0-9]*/0000&/g
5807 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5808 G
5809 s/\n/ /' | \
dfe9444c 5810 sort | $sed -e 's/^.* //'`
a4f3eea9 5811 eval set \$$#
5812 done
5813 $test -r $1 || set /usr/ccs/lib/libc.$so
dfe9444c
AD
5814 $test -r $1 || set /lib/libsys_s$_a
5815 ;;
a4f3eea9 5816*)
5817 set blurfl
5818 ;;
5819esac
5820if $test -r "$1"; then
5821 echo "Your (shared) C library seems to be in $1."
5822 libc="$1"
5823elif $test -r /lib/libc && $test -r /lib/clib; then
5824 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5825 xxx=apollo
5826 libc='/lib/clib /lib/libc'
5827 if $test -r /lib/syslib; then
5828 echo "(Your math library is in /lib/syslib.)"
5829 libc="$libc /lib/syslib"
5830 fi
5831elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5832 echo "Your C library seems to be in $libc, as you said before."
dfe9444c
AD
5833elif $test -r $incpath/usr/lib/libc$_a; then
5834 libc=$incpath/usr/lib/libc$_a;
a4f3eea9 5835 echo "Your C library seems to be in $libc. That's fine."
dfe9444c
AD
5836elif $test -r /lib/libc$_a; then
5837 libc=/lib/libc$_a;
a4f3eea9 5838 echo "Your C library seems to be in $libc. You're normal."
5839else
dfe9444c 5840 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
a4f3eea9 5841 :
5842 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5843 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5844 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5845 :
dfe9444c 5846 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 5847 :
dfe9444c 5848 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 5849 :
4633a7c4 5850 else
dfe9444c 5851 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4633a7c4 5852 fi
a4f3eea9 5853 if $test -r "$tans"; then
5854 echo "Your C library seems to be in $tans, of all places."
5855 libc=$tans
5856 else
5857 libc='blurfl'
5858 fi
5859fi
5860if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5861 dflt="$libc"
5862 cat <<EOM
4633a7c4 5863
a4f3eea9 5864If the guess above is wrong (which it might be if you're using a strange
5865compiler, or your machine supports multiple models), you can override it here.
4633a7c4 5866
a4f3eea9 5867EOM
5868else
5869 dflt=''
28e8609d 5870 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
a4f3eea9 5871 cat >&4 <<EOM
5872I can't seem to find your C library. I've looked in the following places:
4633a7c4 5873
a4f3eea9 5874EOM
5875 $sed 's/^/ /' libpath
5876 cat <<EOM
4633a7c4 5877
a4f3eea9 5878None of these seems to contain your C library. I need to get its name...
4633a7c4 5879
a4f3eea9 5880EOM
5881fi
5882fn=f
5883rp='Where is your C library?'
5884. ./getfile
5885libc="$ans"
4633a7c4 5886
4633a7c4 5887echo " "
28e8609d 5888echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
a4f3eea9 5889set X `cat libnames`
4633a7c4 5890shift
a4f3eea9 5891xxx=files
5892case $# in 1) xxx=file; esac
5893echo "Extracting names from the following $xxx for later perusal:" >&4
5894echo " "
5895$sed 's/^/ /' libnames >&4
5896echo " "
5897$echo $n "This may take a while...$c" >&4
4633a7c4 5898
dfe9444c
AD
5899for file in $*; do
5900 case $file in
693762b4
AD
5901 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5902 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5903 esac
dfe9444c 5904done >libc.tmp
4633a7c4 5905
a4f3eea9 5906$echo $n ".$c"
5907$grep fprintf libc.tmp > libc.ptf
5908xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5909xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5910xxx='[ADTSIW]'
5911if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5912 eval $xscan;\
5913 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5914 eval $xrun
5915elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5916 eval $xscan;\
5917 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5918 eval $xrun
5919elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5920 eval $xscan;\
5921 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5922 eval $xrun
5923elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5924 eval $xscan;\
5925 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5926 eval $xrun
5927elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5928 eval $xscan;\
5929 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5930 eval $xrun
5931elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5932 eval $xscan;\
5933 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5934 eval $xrun
5935elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5936 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5937 eval $xscan;\
5938 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5939 eval $xrun
5940elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5941 eval $xscan;\
5942 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5943 eval $xrun
5944elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5945 eval $xscan;\
5946 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5947 eval $xrun
1e422769 5948elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5949 eval $xscan;\
5950 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5951 eval $xrun
a4f3eea9 5952elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5953 eval $xscan;\
5954 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5955 eval $xrun
5956elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5957 eval $xscan;\
5958 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5959 eval $xrun
44a8e56a 5960elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5961 eval $xscan;\
5962 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5963 eval $xrun
0f502cca
BL
5964elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5965 eval $xscan;\
5966 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5967 eval $xrun
a4f3eea9 5968else
693762b4 5969 $nm -p $* 2>/dev/null >libc.tmp
a4f3eea9 5970 $grep fprintf libc.tmp > libc.ptf
5971 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5972 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5973 then
5974 nm_opt='-p'
5975 eval $xrun
4633a7c4 5976 else
a4f3eea9 5977 echo " "
e5c9fcd0 5978 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
a4f3eea9 5979 com=''
dc45a647
MB
5980 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5981 for thisname in $libnames $libc; do
e5c9fcd0 5982 $ar t $thisname >>libc.tmp
a4f3eea9 5983 done
dfe9444c 5984 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
a4f3eea9 5985 echo "Ok." >&4
dc45a647
MB
5986 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5987 # Repeat libc to extract forwarders to DLL entries too
5988 for thisname in $libnames $libc; do
5989 $ar tv $thisname >>libc.tmp
5990 # Revision 50 of EMX has bug in $ar.
5991 # it will not extract forwarders to DLL entries
5992 # Use emximp which will extract exactly them.
5993 emximp -o tmp.imp $thisname \
5994 2>/dev/null && \
5995 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5996 < tmp.imp >>libc.tmp
5997 $rm tmp.imp
5998 done
5999 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6000 echo "Ok." >&4
a4f3eea9 6001 else
e5c9fcd0 6002 echo "$ar didn't seem to work right." >&4
a4f3eea9 6003 echo "Maybe this is a Cray...trying bld instead..." >&4
dfe9444c 6004 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
a4f3eea9 6005 then
6006 for thisname in $libnames; do
6007 bld t $libnames | \
dfe9444c 6008 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
e5c9fcd0 6009 $ar t $thisname >>libc.tmp
a4f3eea9 6010 done
6011 echo "Ok." >&4
6012 else
6013 echo "That didn't work either. Giving up." >&4
6014 exit 1
6015 fi
6016 fi
4633a7c4 6017 fi
4633a7c4 6018fi
a4f3eea9 6019nm_extract="$com"
6020if $test -f /lib/syscalls.exp; then
4633a7c4 6021 echo " "
a4f3eea9 6022 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
c6912327 6023 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
a4f3eea9 6024fi
6025;;
6026esac
6027$rm -f libnames libpath
6028
2afac517 6029: see if dld is available
6030set dld.h i_dld
6031eval $inhdr
4633a7c4 6032
2afac517 6033: is a C symbol defined?
6034csym='tlook=$1;
6035case "$3" in
6036-v) tf=libc.tmp; tc=""; tdc="";;
6037-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6038*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6039esac;
6040tx=yes;
6041case "$reuseval-$4" in
6042true-) ;;
6043true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6044esac;
6045case "$tx" in
6046yes)
6047 case "$runnm" in
6048 true)
6049 if $contains $tlook $tf >/dev/null 2>&1;
6050 then tval=true;
6051 else tval=false;
6052 fi;;
6053 *)
d674cd6d 6054 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
dfe9444c 6055 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
2afac517 6056 then tval=true;
6057 else tval=false;
6058 fi;
6059 $rm -f t t.c;;
6060 esac;;
6061*)
6062 case "$tval" in
6063 $define) tval=true;;
6064 *) tval=false;;
6065 esac;;
6066esac;
6067eval "$2=$tval"'
4633a7c4 6068
2afac517 6069: define an is-in-libc? function
6070inlibc='echo " "; td=$define; tu=$undef;
6071sym=$1; var=$2; eval "was=\$$2";
6072tx=yes;
6073case "$reuseval$was" in
6074true) ;;
6075true*) tx=no;;
6076esac;
6077case "$tx" in
6078yes)
6079 set $sym tres -f;
6080 eval $csym;
6081 case "$tres" in
6082 true)
6083 echo "$sym() found." >&4;
6084 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6085 *)
6086 echo "$sym() NOT found." >&4;
6087 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6088 esac;;
6089*)
6090 case "$was" in
6091 $define) echo "$sym() found." >&4;;
6092 *) echo "$sym() NOT found." >&4;;
6093 esac;;
6094esac'
4633a7c4 6095
2afac517 6096: see if dlopen exists
6097xxx_runnm="$runnm"
6098runnm=false
6099set dlopen d_dlopen
6100eval $inlibc
6101runnm="$xxx_runnm"
40a7a20a 6102
2afac517 6103: determine which dynamic loading, if any, to compile in
4633a7c4 6104echo " "
2afac517 6105dldir="ext/DynaLoader"
6106case "$usedl" in
6107$define|y|true)
6108 dflt='y'
6109 usedl="$define"
6110 ;;
6111$undef|n|false)
6112 dflt='n'
6113 usedl="$undef"
6114 ;;
6115*)
6116 dflt='n'
6117 case "$d_dlopen" in
6118 $define) dflt='y' ;;
6119 esac
6120 case "$i_dld" in
6121 $define) dflt='y' ;;
4633a7c4 6122 esac
2afac517 6123 : Does a dl_xxx.xs file exist for this operating system
dc45a647 6124 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4633a7c4
LW
6125 ;;
6126esac
2afac517 6127rp="Do you wish to use dynamic loading?"
6128. ./myread
6129usedl="$ans"
6130case "$ans" in
6131y*) usedl="$define"
6132 case "$dlsrc" in
6133 '')
dc45a647 6134 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
2afac517 6135 dflt="$dldir/dl_${osname}.xs"
6136 elif $test "$d_dlopen" = "$define" ; then
6137 dflt="$dldir/dl_dlopen.xs"
6138 elif $test "$i_dld" = "$define" ; then
6139 dflt="$dldir/dl_dld.xs"
4633a7c4 6140 else
2afac517 6141 dflt=''
4633a7c4 6142 fi
4633a7c4 6143 ;;
2afac517 6144 *) dflt="$dldir/$dlsrc"
6145 ;;
4633a7c4 6146 esac
2afac517 6147 echo "The following dynamic loading files are available:"
6148 : Can not go over to $dldir because getfile has path hard-coded in.
dc45a647
MB
6149 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6150 rp="Source file to use for dynamic loading"
6151 fn="fne"
b233458b 6152 gfpth="$src"
dc45a647 6153 . ./getfile
2afac517 6154 usedl="$define"
6155 : emulate basename
1e127011 6156 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
2304df62 6157
dc45a647 6158 $cat << EOM
2304df62 6159
2afac517 6160Some systems may require passing special flags to $cc -c to
6161compile modules that will be used to create a shared library.
6162To use no flags, say "none".
2304df62
AD
6163
6164EOM
2afac517 6165 case "$cccdlflags" in
6166 '') case "$gccversion" in
6167 '') case "$osname" in
6168 hpux) dflt='+z' ;;
6169 next) dflt='none' ;;
8cc95fdb 6170 irix*) dflt='-KPIC' ;;
3a6175e1 6171 svr4*|esix*|solaris) dflt='-KPIC' ;;
2afac517 6172 sunos) dflt='-pic' ;;
6173 *) dflt='none' ;;
dfe9444c
AD
6174 esac
6175 ;;
6176 *) case "$osname" in
3a6175e1 6177 svr4*|esix*|solaris) dflt='-fPIC' ;;
dfe9444c 6178 *) dflt='-fpic' ;;
81d89818 6179 esac ;;
2afac517 6180 esac ;;
bfb7748a 6181 ' ') dflt='none' ;;
2afac517 6182 *) dflt="$cccdlflags" ;;
6183 esac
6184 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6185 . ./myread
6186 case "$ans" in
6187 none) cccdlflags=' ' ;;
6188 *) cccdlflags="$ans" ;;
6189 esac
2304df62 6190
2afac517 6191 cat << EOM
ecfc5424 6192
2afac517 6193Some systems use ld to create libraries that can be dynamically loaded,
6194while other systems (such as those using ELF) use $cc.
a0f45b59 6195
2afac517 6196EOM
6197 case "$ld" in
6198 '') $cat >try.c <<'EOM'
6199/* Test for whether ELF binaries are produced */
6200#include <fcntl.h>
6201#include <stdlib.h>
5a411a32 6202int main() {
2afac517 6203 char b[4];
6204 int i = open("a.out",O_RDONLY);
6205 if(i == -1)
6206 exit(1); /* fail */
6207 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6208 exit(0); /* succeed (yes, it's ELF) */
2304df62 6209 else
2afac517 6210 exit(1); /* fail */
6211}
6212EOM
6213 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6214 cat <<EOM
6215You appear to have ELF support. I'll use $cc to build dynamic libraries.
6216EOM
6217 dflt="$cc"
2304df62 6218 else
2afac517 6219 echo "I'll use ld to build dynamic libraries."
6220 dflt='ld'
2304df62 6221 fi
2afac517 6222 rm -f try.c a.out
6223 ;;
6224 *) dflt="$ld"
6225 ;;
6226 esac
6227
6228 rp="What command should be used to create dynamic libraries?"
6229 . ./myread
6230 ld="$ans"
6231
6232 cat << EOM
6233
6234Some systems may require passing special flags to $ld to create a
6235library that can be dynamically loaded. If your ld flags include
6236-L/other/path options to locate libraries outside your loader's normal
6237search path, you may need to specify those -L options here as well. To
6238use no flags, say "none".
6239
6240EOM
6241 case "$lddlflags" in
6242 '') case "$osname" in
46193409 6243 beos) dflt='-nostart' ;;
a5f83cbf
JH
6244 hpux) dflt='-b';
6245 case "$gccversion" in
6246 '') dflt="$dflt +vnocompatwarnings" ;;
b36fec95
JH
6247 esac
6248 ;;
2afac517 6249 linux|irix*) dflt='-shared' ;;
6250 next) dflt='none' ;;
6251 solaris) dflt='-G' ;;
6252 sunos) dflt='-assert nodefinitions' ;;
6253 svr4*|esix*) dflt="-G $ldflags" ;;
6254 *) dflt='none' ;;
6255 esac
6256 ;;
6257 *) dflt="$lddlflags" ;;
6258 esac
6259
bfb7748a 6260 : Try to guess additional flags to pick up local libraries.
a0915cb7
AD
6261 : Be careful not to append to a plain 'none'
6262 case "$dflt" in
6263 none) dflt='' ;;
6264 esac
bfb7748a
AD
6265 for thisflag in $ldflags; do
6266 case "$thisflag" in
6267 -L*)
6268 case " $dflt " in
6269 *" $thisflag "*) ;;
6270 *) dflt="$dflt $thisflag" ;;
6271 esac
6272 ;;
2afac517 6273 esac
bfb7748a 6274 done
2afac517 6275
bfb7748a
AD
6276 case "$dflt" in
6277 ''|' ') dflt='none' ;;
6278 esac
2afac517 6279
6280 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6281 . ./myread
6282 case "$ans" in
6283 none) lddlflags=' ' ;;
6284 *) lddlflags="$ans" ;;
6285 esac
6286
6287 cat <<EOM
6288
6289Some systems may require passing special flags to $cc to indicate that
6290the resulting executable will use dynamic linking. To use no flags,
6291say "none".
6292
6293EOM
6294 case "$ccdlflags" in
6295 '') case "$osname" in
6296 hpux) dflt='-Wl,-E' ;;
6297 linux) dflt='-rdynamic' ;;
6298 next) dflt='none' ;;
6299 sunos) dflt='none' ;;
6300 *) dflt='none' ;;
6301 esac ;;
bfb7748a 6302 ' ') dflt='none' ;;
2afac517 6303 *) dflt="$ccdlflags" ;;
6304 esac
7f95ee77 6305 rp="Any special flags to pass to $cc to use dynamic linking?"
2afac517 6306 . ./myread
6307 case "$ans" in
6308 none) ccdlflags=' ' ;;
6309 *) ccdlflags="$ans" ;;
6310 esac
6311 ;;
6312*) usedl="$undef"
6313 ld='ld'
6314 dlsrc='dl_none.xs'
6315 lddlflags=''
6316 ccdlflags=''
6317 ;;
6318esac
6319
6320also=''
6321case "$usedl" in
6322$undef)
6323 # No dynamic loading being used, so don't bother even to prompt.
6324 useshrplib='false'
6325 ;;
6326*) case "$useshrplib" in
6327 '') case "$osname" in
4fabb596 6328 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
3e3baf6d 6329 dflt=y
2afac517 6330 also='Building a shared libperl is required for dynamic loading to work on your system.'
6331 ;;
6332 next*)
6333 case "$osvers" in
3e3baf6d 6334 4*) dflt=y
2afac517 6335 also='Building a shared libperl is needed for MAB support.'
6336 ;;
3e3baf6d 6337 *) dflt=n
2afac517 6338 ;;
6339 esac
6340 ;;
3e3baf6d 6341 *) dflt=n
2afac517 6342 ;;
6343 esac
6344 ;;
6345 $define|true|[Yy]*)
3e3baf6d 6346 dflt=y
2afac517 6347 ;;
3e3baf6d 6348 *) dflt=n
2afac517 6349 ;;
6350 esac
6351 $cat << EOM
6352
6353The perl executable is normally obtained by linking perlmain.c with
dfe9444c 6354libperl${_a}, any static extensions (usually just DynaLoader), and
2afac517 6355any other libraries needed on this system (such as -lm, etc.). Since
6356your system supports dynamic loading, it is probably possible to build
6357a shared libperl.$so. If you will have more than one executable linked
6358to libperl.$so, this will significantly reduce the size of each
6359executable, but it may have a noticeable affect on performance. The
6360default is probably sensible for your system.
6361$also
6362
6363EOM
6364 rp="Build a shared libperl.$so (y/n)"
6365 . ./myread
6366 case "$ans" in
6367 true|$define|[Yy]*)
5cf1d1f1 6368 useshrplib='true' ;;
2afac517 6369 *) useshrplib='false' ;;
6370 esac
6371 ;;
6372esac
6373
6374case "$useshrplib" in
6375true)
6376 case "$libperl" in
6377 '')
6378 # Figure out a good name for libperl.so. Since it gets stored in
6379 # a version-specific architecture-dependent library, the version
6380 # number isn't really that important, except for making cc/ld happy.
6381 #
6382 # A name such as libperl.so.3.1
6383 majmin="libperl.$so.$patchlevel.$subversion"
6384 # A name such as libperl.so.301
6385 majonly=`echo $patchlevel $subversion |
6386 $awk '{printf "%d%02d", $1, $2}'`
6387 majonly=libperl.$so.$majonly
6388 # I'd prefer to keep the os-specific stuff here to a minimum, and
6389 # rely on figuring it out from the naming of libc.
6390 case "${osname}${osvers}" in
6391 next4*)
6392 dflt=libperl.5.$so
6393 # XXX How handle the --version stuff for MAB?
6394 ;;
6395 linux*) # ld won't link with a bare -lperl otherwise.
6396 dflt=libperl.$so
6397 ;;
4fabb596
GS
6398 cygwin*) # include version
6399 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6400 ;;
2afac517 6401 *) # Try to guess based on whether libc has major.minor.
6402 case "$libc" in
6403 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6404 *libc.$so.[0-9]*) dflt=$majonly ;;
6405 *) dflt=libperl.$so ;;
6406 esac
6407 ;;
6408 esac
6409 ;;
6410 *) dflt=$libperl
6411 ;;
6412 esac
6413 cat << EOM
6414
6415I need to select a good name for the shared libperl. If your system uses
6416library names with major and minor numbers, then you might want something
6417like $majmin. Alternatively, if your system uses a single version
6418number for shared libraries, then you might want to use $majonly.
6419Or, your system might be quite happy with a simple libperl.$so.
6420
6421Since the shared libperl will get installed into a version-specific
6422architecture-dependent directory, the version number of the shared perl
6423library probably isn't important, so the default should be o.k.
6424
6425EOM
6426 rp='What name do you want to give to the shared libperl?'
6427 . ./myread
6428 libperl=$ans
6429 echo "Ok, I'll use $libperl"
6430 ;;
6431*)
dfe9444c 6432 libperl="libperl${_a}"
2afac517 6433 ;;
6434esac
6435
6436# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6437case "$shrpdir" in
6438'') ;;
6439*) $cat >&4 <<EOM
6440WARNING: Use of the shrpdir variable for the installation location of
6441the shared $libperl is not supported. It was never documented and
46193409 6442will not work in this version. Let me (perlbug@perl.com)
dfe9444c 6443know of any problems this may cause.
2afac517 6444
6445EOM
6446 case "$shrpdir" in
6447 "$archlibexp/CORE")
6448 $cat >&4 <<EOM
6449But your current setting of $shrpdir is
6450the default anyway, so it's harmless.
6451EOM
6452 ;;
6453 *)
4e2a5f63
AD
6454 $cat >&4 <<EOM
6455Further, your current attempted setting of $shrpdir
6456conflicts with the value of $archlibexp/CORE
6457that installperl will use.
6458EOM
dc45a647
MB
6459 ;;
6460 esac
6461 ;;
6462esac
6463
6464# How will the perl executable find the installed shared $libperl?
6465# Add $xxx to ccdlflags.
6466# If we can't figure out a command-line option, use $shrpenv to
6467# set env LD_RUN_PATH. The main perl makefile uses this.
6468shrpdir=$archlibexp/CORE
6469xxx=''
6470tmp_shrpenv=''
6471if "$useshrplib"; then
6472 case "$osname" in
6473 aix)
6474 # We'll set it in Makefile.SH...
6475 ;;
6476 solaris|netbsd)
6477 xxx="-R $shrpdir"
6478 ;;
6479 freebsd)
6480 xxx="-Wl,-R$shrpdir"
6481 ;;
6482 linux|irix*|dec_osf)
6483 xxx="-Wl,-rpath,$shrpdir"
6484 ;;
6485 next)
6486 # next doesn't like the default...
6487 ;;
46193409
JH
6488 beos)
6489 # beos doesn't like the default, either.
6490 ;;
3656fc86
JH
6491 hpux*)
6492 # hpux doesn't like the default, either.
6493 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6494 ;;
dc45a647
MB
6495 *)
6496 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6497 ;;
6498 esac
6499 case "$xxx" in
6500 '') ;;
6501 *)
6502 # Only add $xxx if it isn't already in ccdlflags.
6503 case " $ccdlflags " in
6504 *" $xxx "*) ;;
6505 *) ccdlflags="$ccdlflags $xxx"
6506 cat <<EOM >&4
6507
6508Adding $xxx to the flags
6509passed to $ld so that the perl executable will find the
6510installed shared $libperl.
6511
6512EOM
6513 ;;
6514 esac
6515 ;;
6516 esac
6517fi
5cf1d1f1
JH
6518# Fix ccdlflags in AIX for building external extensions.
6519# (For building Perl itself bare -bE:perl.exp is needed,
6520# Makefile.SH takes care of this.)
5f9d9a17 6521case "$osname" in
5cf1d1f1 6522aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5f9d9a17 6523esac
dc45a647
MB
6524# Respect a hint or command-line value.
6525case "$shrpenv" in
6526'') shrpenv="$tmp_shrpenv" ;;
6527esac
5cf1d1f1
JH
6528case "$ldlibpthname" in
6529'') ldlibpthname=LD_LIBRARY_PATH ;;
6530none) ldlibpthname='' ;;
6531esac
dc45a647
MB
6532
6533: determine where manual pages go
6534set man1dir man1dir none
6535eval $prefixit
6536$cat <<EOM
6537
6538$spackage has manual pages available in source form.
6539EOM
6540case "$nroff" in
6541nroff)
6542 echo "However, you don't have nroff, so they're probably useless to you."
6543 case "$man1dir" in
6544 '') man1dir="none";;
6545 esac;;
6546esac
6547echo "If you don't want the manual sources installed, answer 'none'."
6548case "$man1dir" in
6549' ') dflt=none
6550 ;;
6551'')
6552 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6553 lookpath="$lookpath $prefixexp/man/p_man/man1"
6554 lookpath="$lookpath $prefixexp/man/u_man/man1"
6555 lookpath="$lookpath $prefixexp/man/man.1"
6556 case "$sysman" in
6557 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6558 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6559 esac
6560 set dflt
6561 eval $prefixup
6562 ;;
6563*) dflt="$man1dir"
6564 ;;
6565esac
6566echo " "
6567fn=dn+~
6568rp="Where do the main $spackage manual pages (source) go?"
6569. ./getfile
6570if $test "X$man1direxp" != "X$ansexp"; then
6571 installman1dir=''
6572fi
6573man1dir="$ans"
6574man1direxp="$ansexp"
6575case "$man1dir" in
dd4e71fd 6576'') man1dir=' '
dc45a647
MB
6577 installman1dir='';;
6578esac
dc45a647 6579
dd4e71fd
JH
6580: Change installation prefix, if necessary.
6581if $test X"$prefix" != X"$installprefix"; then
ec897fb9 6582 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
6583else
6584 installman1dir="$man1direxp"
dc45a647
MB
6585fi
6586
6587: What suffix to use on installed man pages
6588
6589case "$man1dir" in
6590' ')
6591 man1ext='0'
6592 ;;
6593*)
6594 rp="What suffix should be used for the main $spackage man pages?"
6595 case "$man1ext" in
6596 '') case "$man1dir" in
6597 *1) dflt=1 ;;
6598 *1p) dflt=1p ;;
6599 *1pm) dflt=1pm ;;
6600 *l) dflt=l;;
6601 *n) dflt=n;;
6602 *o) dflt=o;;
6603 *p) dflt=p;;
6604 *C) dflt=C;;
6605 *L) dflt=L;;
6606 *L1) dflt=L1;;
6607 *) dflt=1;;
6608 esac
6609 ;;
6610 *) dflt="$man1ext";;
6611 esac
6612 . ./myread
6613 man1ext="$ans"
6614 ;;
6615esac
6616
6617: see if we can have long filenames
6618echo " "
6619rmlist="$rmlist /tmp/cf$$"
6620$test -d /tmp/cf$$ || mkdir /tmp/cf$$
6621first=123456789abcdef
6622second=/tmp/cf$$/$first
6623$rm -f $first $second
6624if (echo hi >$first) 2>/dev/null; then
6625 if $test -f 123456789abcde; then
6626 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6627 val="$undef"
6628 else
6629 if (echo hi >$second) 2>/dev/null; then
6630 if $test -f /tmp/cf$$/123456789abcde; then
6631 $cat <<'EOM'
6632That's peculiar... You can have filenames longer than 14 characters, but only
6633on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6634I shall consider your system cannot support long filenames at all.
6635EOM
6636 val="$undef"
6637 else
6638 echo 'You can have filenames longer than 14 characters.' >&4
6639 val="$define"
6640 fi
6641 else
6642 $cat <<'EOM'
6643How confusing! Some of your filesystems are sane enough to allow filenames
6644longer than 14 characters but some others like /tmp can't even think about them.
6645So, for now on, I shall assume your kernel does not allow them at all.
6646EOM
6647 val="$undef"
6648 fi
6649 fi
6650else
6651 $cat <<'EOM'
6652You can't have filenames longer than 14 chars. You can't even think about them!
6653EOM
6654 val="$undef"
6655fi
6656set d_flexfnam
6657eval $setvar
6658$rm -rf /tmp/cf$$ 123456789abcde*
6659
6660: determine where library module manual pages go
6661set man3dir man3dir none
6662eval $prefixit
6663$cat <<EOM
6664
6665$spackage has manual pages for many of the library modules.
6666EOM
6667
6668case "$nroff" in
6669nroff)
6670 $cat <<'EOM'
6671However, you don't have nroff, so they're probably useless to you.
6672EOM
6673 case "$man3dir" in
6674 '') man3dir="none";;
6675 esac;;
6676esac
6677
6678case "$d_flexfnam" in
6679undef)
6680 $cat <<'EOM'
6681However, your system can't handle the long file names like File::Basename.3.
6682EOM
6683 case "$man3dir" in
6684 '') man3dir="none";;
6685 esac;;
6686esac
6687
6688echo "If you don't want the manual sources installed, answer 'none'."
6689prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6690case "$man3dir" in
dd4e71fd
JH
6691'') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6692 if $test -d "$privlib/man/man3"; then
6693 cat <<EOM >&4
6694
6695WARNING: Previous versions of perl installed man3 pages into
6696$privlib/man/man3. This version will suggest a
6697new default of $dflt.
6698EOM
6699 tdflt=$dflt
6700 dflt='n'
6701 rp='Do you wish to preserve the old behavior?(y/n)'
6702 . ./myread
6703 case "$ans" in
6704 y*) dflt="$privlib/man/man3" ;;
6705 *) dflt=$tdflt ;;
6706 esac
6707 fi
2afac517 6708 ;;
dc45a647
MB
6709' ') dflt=none;;
6710*) dflt="$man3dir" ;;
2afac517 6711esac
dc45a647 6712echo " "
dc45a647
MB
6713fn=dn+~
6714rp="Where do the $package library man pages (source) go?"
6715. ./getfile
dc45a647
MB
6716man3dir="$ans"
6717man3direxp="$ansexp"
dd4e71fd
JH
6718case "$man1dir" in
6719'') man3dir=' '
dc45a647
MB
6720 installman3dir='';;
6721esac
dc45a647 6722
dd4e71fd
JH
6723: Change installation prefix, if necessary.
6724if $test X"$prefix" != X"$installprefix"; then
ec897fb9 6725 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
6726else
6727 installman3dir="$man3direxp"
dc45a647
MB
6728fi
6729
6730: What suffix to use on installed man pages
dc45a647
MB
6731case "$man3dir" in
6732' ')
6733 man3ext='0'
6734 ;;
6735*)
6736 rp="What suffix should be used for the $package library man pages?"
6737 case "$man3ext" in
6738 '') case "$man3dir" in
6739 *3) dflt=3 ;;
6740 *3p) dflt=3p ;;
6741 *3pm) dflt=3pm ;;
6742 *l) dflt=l;;
6743 *n) dflt=n;;
6744 *o) dflt=o;;
6745 *p) dflt=p;;
6746 *C) dflt=C;;
6747 *L) dflt=L;;
6748 *L3) dflt=L3;;
6749 *) dflt=3;;
2afac517 6750 esac
6751 ;;
dc45a647 6752 *) dflt="$man3ext";;
2afac517 6753 esac
dc45a647
MB
6754 . ./myread
6755 man3ext="$ans"
6756 ;;
2afac517 6757esac
6758
6759: see if we have to deal with yellow pages, now NIS.
6760if $test -d /usr/etc/yp || $test -d /etc/yp; then
6761 if $test -f /usr/etc/nibindd; then
6762 echo " "
6763 echo "I'm fairly confident you're on a NeXT."
6764 echo " "
6765 rp='Do you get the hosts file via NetInfo?'
6766 dflt=y
6767 case "$hostcat" in
6768 nidump*) ;;
6769 '') ;;
6770 *) dflt=n;;
6771 esac
6772 . ./myread
6773 case "$ans" in
6774 y*) hostcat='nidump hosts .';;
6775 *) case "$hostcat" in
6776 nidump*) hostcat='';;
6777 esac
6778 ;;
6779 esac
6780 fi
6781 case "$hostcat" in
6782 nidump*) ;;
6783 *)
6784 case "$hostcat" in
6785 *ypcat*) dflt=y;;
6786 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6787 dflt=y
6788 else
6789 dflt=n
6790 fi;;
6791 *) dflt=n;;
6792 esac
6793 echo " "
6794 rp='Are you getting the hosts file via yellow pages?'
6795 . ./myread
6796 case "$ans" in
6797 y*) hostcat='ypcat hosts';;
6798 *) hostcat='cat /etc/hosts';;
6799 esac
6800 ;;
6801 esac
6802fi
dfe9444c 6803case "$hostcat" in
7599c0b3 6804'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
dfe9444c
AD
6805esac
6806case "$groupcat" in
7599c0b3 6807'') test -f /etc/group && groupcat='cat /etc/group';;
dfe9444c
AD
6808esac
6809case "$passcat" in
7599c0b3 6810'') test -f /etc/passwd && passcat='cat /etc/passwd';;
dfe9444c 6811esac
2afac517 6812
6813: now get the host name
6814echo " "
6815echo "Figuring out host name..." >&4
6816case "$myhostname" in
6817'') cont=true
6818 echo 'Maybe "hostname" will work...'
6819 if tans=`sh -c hostname 2>&1` ; then
6820 myhostname=$tans
6821 phostname=hostname
6822 cont=''
6823 fi
6824 ;;
6825*) cont='';;
6826esac
6827if $test "$cont"; then
6828 if ./xenix; then
6829 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6830 if tans=`cat /etc/systemid 2>&1` ; then
6831 myhostname=$tans
6832 phostname='cat /etc/systemid'
6833 echo "Whadyaknow. Xenix always was a bit strange..."
6834 cont=''
6835 fi
6836 elif $test -r /etc/systemid; then
6837 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6838 fi
6839fi
6840if $test "$cont"; then
6841 echo 'No, maybe "uuname -l" will work...'
6842 if tans=`sh -c 'uuname -l' 2>&1` ; then
6843 myhostname=$tans
6844 phostname='uuname -l'
6845 else
6846 echo 'Strange. Maybe "uname -n" will work...'
6847 if tans=`sh -c 'uname -n' 2>&1` ; then
6848 myhostname=$tans
6849 phostname='uname -n'
6850 else
6851 echo 'Oh well, maybe I can mine it out of whoami.h...'
6852 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6853 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6854 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6855 else
6856 case "$myhostname" in
6857 '') echo "Does this machine have an identity crisis or something?"
6858 phostname='';;
6859 *)
6860 echo "Well, you said $myhostname before..."
6861 phostname='echo $myhostname';;
6862 esac
6863 fi
6864 fi
6865 fi
6866fi
6867: you do not want to know about this
6868set $myhostname
6869myhostname=$1
6870
6871: verify guess
6872if $test "$myhostname" ; then
6873 dflt=y
6874 rp='Your host name appears to be "'$myhostname'".'" Right?"
6875 . ./myread
6876 case "$ans" in
6877 y*) ;;
6878 *) myhostname='';;
6879 esac
6880fi
6881
6882: bad guess or no guess
6883while $test "X$myhostname" = X ; do
6884 dflt=''
6885 rp="Please type the (one word) name of your host:"
6886 . ./myread
6887 myhostname="$ans"
6888done
6889
6890: translate upper to lower if necessary
6891case "$myhostname" in
6892*[A-Z]*)
6893 echo "(Normalizing case in your host name)"
6894 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6895 ;;
6896esac
6897
6898case "$myhostname" in
6899*.*)
6900 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6901 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6902 echo "(Trimming domain name from host name--host name is now $myhostname)"
6903 ;;
6904*) case "$mydomain" in
6905 '')
6906 {
2afac517 6907 test "X$hostcat" = "Xypcat hosts" &&
6908 ypmatch "$myhostname" hosts 2>/dev/null |\
6909 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6910 $test -s hosts
6911 } || {
7599c0b3 6912 test "X$hostcat" != "X" &&
2afac517 6913 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6914 /[ ]$myhostname[ . ]/p" > hosts
6915 }
6916 tmp_re="[ . ]"
6917 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6918 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6919 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6920 hosts | $sort | $uniq | \
6921 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6922 case `$echo X$dflt` in
6923 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6924 dflt=.
6925 ;;
6926 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6927 ;;
6928 esac
6929 case "$dflt" in
6930 .)
6931 tans=`./loc resolv.conf X /etc /usr/etc`
6932 if $test -f "$tans"; then
6933 echo "(Attempting domain name extraction from $tans)"
a6006777 6934 dflt=.`$sed -n -e 's/ / /g' \
28757baa 6935 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
a6006777 6936 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
2afac517 6937 case "$dflt" in
a6006777 6938 .) dflt=.`$sed -n -e 's/ / /g' \
28757baa 6939 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
a6006777 6940 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
774d564b 6941 ;;
2afac517 6942 esac
6943 fi
6944 ;;
6945 esac
6946 case "$dflt" in
6947 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6948 dflt=.`sh -c domainname 2>/dev/null`
6949 case "$dflt" in
6950 '') dflt='.';;
6951 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6952 esac
6953 ;;
6954 esac
6955 case "$dflt" in
6956 .) echo "(Lost all hope -- silly guess then)"
6957 dflt='.uucp'
6958 ;;
6959 esac
6960 $rm -f hosts
6961 ;;
6962 *) dflt="$mydomain";;
6963 esac;;
6964esac
6965echo " "
6966rp="What is your domain name?"
6967. ./myread
6968tans="$ans"
6969case "$ans" in
6970'') ;;
6971.*) ;;
6972*) tans=".$tans";;
6973esac
6974mydomain="$tans"
6975
6976: translate upper to lower if necessary
6977case "$mydomain" in
6978*[A-Z]*)
6979 echo "(Normalizing case in your domain name)"
6980 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6981 ;;
6982esac
6983
6984: a little sanity check here
6985case "$phostname" in
6986'') ;;
6987*)
6988 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6989 $myhostname$mydomain|$myhostname) ;;
6990 *)
6991 case "$phostname" in
6992 sed*)
6993 echo "(That doesn't agree with your whoami.h file, by the way.)"
6994 ;;
6995 *)
6996 echo "(That doesn't agree with your $phostname command, by the way.)"
6997 ;;
6998 esac
6999 ;;
7000 esac
7001 ;;
7002esac
7003
7004$cat <<EOM
7005
7006I need to get your e-mail address in Internet format if possible, i.e.
7007something like user@host.domain. Please answer accurately since I have
7008no easy means to double check it. The default value provided below
7f95ee77 7009is most probably close to reality but may not be valid from outside
2afac517 7010your organization...
7011
7012EOM
7013cont=x
7014while test "$cont"; do
7015 case "$cf_email" in
7016 '') dflt="$cf_by@$myhostname$mydomain";;
7017 *) dflt="$cf_email";;
7018 esac
7019 rp='What is your e-mail address?'
7020 . ./myread
7021 cf_email="$ans"
7022 case "$cf_email" in
7023 *@*.*) cont='' ;;
7024 *)
7025 rp='Address does not look like an Internet one. Use it anyway?'
7026 case "$fastread" in
7027 yes) dflt=y ;;
7028 *) dflt=n ;;
7029 esac
7030 . ./myread
7031 case "$ans" in
7032 y*) cont='' ;;
7033 *) echo " " ;;
7034 esac
7035 ;;
7036 esac
7037done
7038
7039$cat <<EOM
7040
7041If you or somebody else will be maintaining perl at your site, please
7042fill in the correct e-mail address here so that they may be contacted
7043if necessary. Currently, the "perlbug" program included with perl
7044will send mail to this address in addition to perlbug@perl.com. You may
7045enter "none" for no administrator.
7046
7047EOM
7048case "$perladmin" in
7049'') dflt="$cf_email";;
7050*) dflt="$perladmin";;
7051esac
7052rp='Perl administrator e-mail address'
7053. ./myread
7054perladmin="$ans"
7055
5f05dabc 7056: figure out how to guarantee perl startup
7057case "$startperl" in
7058'')
7059 case "$sharpbang" in
7060 *!)
7061 $cat <<EOH
7062
7063I can use the #! construct to start perl on your system. This will
7064make startup of perl scripts faster, but may cause problems if you
7065want to share those scripts and perl is not in a standard place
7066($binexp/perl) on all your platforms. The alternative is to force
7067a shell by starting the script with a single ':' character.
7068
7069EOH
7070 dflt="$binexp/perl"
7071 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7072 . ./myread
7073 case "$ans" in
68dc0745 7074 none) startperl=": # use perl";;
7075 *) startperl="#!$ans"
3e3baf6d 7076 if $test 30 -lt `echo "$ans" | wc -c`; then
68dc0745 7077 $cat >&4 <<EOM
7078
7079WARNING: Some systems limit the #! command to 32 characters.
7080If you experience difficulty running Perl scripts with #!, try
7081installing Perl in a directory with a shorter pathname.
7082
7083EOM
7084 fi ;;
5f05dabc 7085 esac
7086 ;;
7087 *) startperl=": # use perl"
7088 ;;
7089 esac
7090 ;;
7091esac
7092echo "I'll use $startperl to start perl scripts."
7093
7094: figure best path for perl in scripts
7095case "$perlpath" in
7096'')
7097 perlpath="$binexp/perl"
7098 case "$startperl" in
7099 *!*) ;;
7100 *)
7101 $cat <<EOH
7102
7103I will use the "eval 'exec'" idiom to start Perl on your system.
7104I can use the full path of your Perl binary for this purpose, but
7105doing so may cause problems if you want to share those scripts and
7106Perl is not always in a standard place ($binexp/perl).
7107
7108EOH
7109 dflt="$binexp/perl"
7110 rp="What path shall I use in \"eval 'exec'\"?"
7111 . ./myread
7112 perlpath="$ans"
7113 ;;
7114 esac
7115 ;;
7116esac
7117case "$startperl" in
7118*!*) ;;
7119*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7120esac
7121
dc45a647
MB
7122: determine where public executable scripts go
7123set scriptdir scriptdir
7124eval $prefixit
7125case "$scriptdir" in
7126'')
7127 dflt="$bin"
7128 : guess some guesses
7129 $test -d /usr/share/scripts && dflt=/usr/share/scripts
dd4e71fd
JH
7130 $test -d /usr/share/bin && dflt=/usr/share/bin
7131 $test -d /usr/local/script && dflt=/usr/local/script
7132 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7133 $test -d $prefixexp/script && dflt=$prefixexp/script
dc45a647
MB
7134 set dflt
7135 eval $prefixup
7136 ;;
7137*) dflt="$scriptdir"
7138 ;;
7139esac
7140$cat <<EOM
7141
7142Some installations have a separate directory just for executable scripts so
7143that they can mount it across multiple architectures but keep the scripts in
7144one spot. You might, for example, have a subdirectory of /usr/share for this.
7145Or you might just lump your scripts in with all your other executables.
7146
7147EOM
7148fn=d~
7149rp='Where do you keep publicly executable scripts?'
7150. ./getfile
7151if $test "X$ansexp" != "X$scriptdirexp"; then
7152 installscript=''
7153fi
7154scriptdir="$ans"
7155scriptdirexp="$ansexp"
dd4e71fd
JH
7156: Change installation prefix, if necessary.
7157if $test X"$prefix" != X"$installprefix"; then
ec897fb9 7158 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
dd4e71fd
JH
7159else
7160 installscript="$scriptdirexp"
7161fi
dc45a647 7162
dc45a647 7163: determine where site specific architecture-dependent libraries go.
273cf8d1
GS
7164: sitelib default is /usr/local/lib/perl5/site_perl/$version
7165: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
3a6175e1 7166: sitelib may have an optional trailing /share.
dc45a647 7167case "$sitearch" in
49c10eea
JH
7168'') dflt=`echo $sitelib | $sed 's,/share$,,'`
7169 dflt="$dflt/$archname"
7170 ;;
7171*) dflt="$sitearch"
7172 ;;
dc45a647 7173esac
49c10eea
JH
7174set sitearch sitearch none
7175eval $prefixit
dc45a647
MB
7176$cat <<EOM
7177
7178The installation process will also create a directory for
7179architecture-dependent site-specific extensions and modules.
7180
7181EOM
49c10eea 7182fn=d~+
dc45a647
MB
7183rp='Pathname for the site-specific architecture-dependent library files?'
7184. ./getfile
dc45a647
MB
7185sitearch="$ans"
7186sitearchexp="$ansexp"
dd4e71fd
JH
7187: Change installation prefix, if necessary.
7188if $test X"$prefix" != X"$installprefix"; then
ec897fb9 7189 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
71c4afb4
JH
7190else
7191 installsitearch="$sitearchexp"
dc45a647
MB
7192fi
7193
717c4fcc
JH
7194: determine where add-on public executables go
7195case "$sitebin" in
7196'') dflt=$siteprefix/bin ;;
49c10eea 7197*) dflt=$sitebin ;;
717c4fcc
JH
7198esac
7199fn=d~
7200rp='Pathname where the add-on public executables should be installed?'
7201. ./getfile
7202sitebin="$ans"
7203sitebinexp="$ansexp"
7204: Change installation prefix, if necessary.
7205if $test X"$prefix" != X"$installprefix"; then
7206 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7207else
7208 installsitebin="$sitebinexp"
7209fi
7210
43999f95
JH
7211: see if sqrtl exists
7212set sqrtl d_sqrtl
7213eval $inlibc
7214
d7d93a81
JH
7215case "$ccflags" in
7216*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7217esac
7218
b0ce926a
JH
7219case "$uselongdouble" in
7220$define|true|[yY]*) dflt='y';;
7221*) dflt='n';;
7222esac
0f0995ae
JH
7223cat <<EOM
7224
7225Perl can be built to take advantage of long doubles which
7226(if available) may give more accuracy and range for floating point numbers.
7227
7228If this doesn't make any sense to you, just accept the default '$dflt'.
7229EOM
b0ce926a
JH
7230rp='Try to use long doubles if available?'
7231. ./myread
7232case "$ans" in
309d43cf
JH
7233y|Y) val="$define" ;;
7234*) val="$undef" ;;
b0ce926a
JH
7235esac
7236set uselongdouble
7237eval $setvar
7238
d9b3e12d 7239case "$uselongdouble" in
d7d93a81
JH
7240true|[yY]*) uselongdouble="$define" ;;
7241esac
7242
7243case "$uselongdouble" in
7244$define)
d9b3e12d
JH
7245: Look for a hint-file generated 'call-back-unit'. If the
7246: user has specified that long doubles should be used,
7247: we may need to set or change some other defaults.
7248 if $test -f uselongdouble.cbu; then
7249 echo "Your platform has some specific hints for long doubles, using them..."
7250 . ./uselongdouble.cbu
7251 else
7252 $cat <<EOM
7253(Your platform doesn't have any specific hints for long doubles.)
7254EOM
7255 fi
7256 ;;
7257esac
b0ce926a 7258
43999f95
JH
7259case "$uselongdouble:$d_sqrtl" in
7260$define:$undef)
7261 $cat <<EOM >&4
7262
3d68f8d4
JH
7263*** You requested the use of long doubles but you do not seem to have
7264*** the mathematic functions for long doubles. I'm disabling the use
7265*** of long doubles.
7266
43999f95
JH
7267EOM
7268 uselongdouble=$undef
7269 ;;
7270esac
7271
0f0995ae
JH
7272case "$useperlio" in
7273$define|true|[yY]*) dflt='y';;
7274*) dflt='n';;
7275esac
d7d93a81
JH
7276cat <<EOM
7277
85aff577
CS
7278Previous version of $package used the standard IO mechanisms as defined
7279in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
2afac517 7280mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
85aff577
CS
7281the default. This abstraction layer can use AT&T's sfio (if you already
7282have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7283problems with some extension modules. Using PerlIO with stdio is safe,
7284but it is slower than plain stdio and therefore is not the default.
2afac517 7285
0f0995ae 7286If this doesn't make any sense to you, just accept the default '$dflt'.
2afac517 7287EOM
2afac517 7288rp='Use the experimental PerlIO abstraction layer?'
7289. ./myread
7290case "$ans" in
7291y|Y)
7292 val="$define"
7293 ;;
7294*)
7295 echo "Ok, doing things the stdio way"
7296 val="$undef"
7297 ;;
7298esac
7299set useperlio
7300eval $setvar
2304df62 7301
717c4fcc
JH
7302case "$vendorprefix" in
7303'') d_vendorbin="$undef"
7304 vendorbin=''
7305 vendorbinexp=''
7306 ;;
7307*) d_vendorbin="$define"
7308 : determine where vendor-supplied executables go.
49c10eea
JH
7309 case "$vendorbin" in
7310 '') dflt=$vendorprefix/bin ;;
7311 *) dflt="$vendorbin" ;;
7312 esac
717c4fcc
JH
7313 fn=d~+
7314 rp='Pathname for the vendor-supplied executables directory?'
7315 . ./getfile
7316 vendorbin="$ans"
7317 vendorbinexp="$ansexp"
717c4fcc
JH
7318 ;;
7319esac
49c10eea
JH
7320: Change installation prefix, if necessary.
7321if $test X"$prefix" != X"$installprefix"; then
7322 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7323else
7324 installvendorbin="$vendorbinexp"
7325fi
717c4fcc 7326
bbe6c963
JH
7327: see if qgcvt exists
7328set qgcvt d_qgcvt
7329eval $inlibc
7330
628e1a40
JH
7331: check for length of double
7332echo " "
7333case "$doublesize" in
7334'')
49c10eea 7335 echo "Checking to see how big your double precision numbers are..." >&4
628e1a40
JH
7336 $cat >try.c <<'EOCP'
7337#include <stdio.h>
7338int main()
7339{
7340 printf("%d\n", (int)sizeof(double));
7341 exit(0);
7342}
7343EOCP
7344 set try
7345 if eval $compile_ok; then
7346 doublesize=`./try`
49c10eea 7347 echo "Your double is $doublesize bytes long."
628e1a40
JH
7348 else
7349 dflt='8'
7350 echo "(I can't seem to compile the test program. Guessing...)"
7351 rp="What is the size of a double precision number (in bytes)?"
7352 . ./myread
7353 doublesize="$ans"
7354 fi
7355 ;;
7356esac
7357$rm -f try.c try
7358
7359: check for long doubles
7360echo " "
c5f05a91 7361echo "Checking to see if you have long double..." >&4
628e1a40
JH
7362echo 'int main() { long double x = 7.0; }' > try.c
7363set try
7364if eval $compile; then
7365 val="$define"
ce65dbcf 7366 echo "You have long double."
628e1a40
JH
7367else
7368 val="$undef"
ce65dbcf 7369 echo "You do not have long double."
628e1a40
JH
7370fi
7371$rm try.*
7372set d_longdbl
7373eval $setvar
7374
7375: check for length of long double
7376case "${d_longdbl}${longdblsize}" in
7377$define)
7378 echo " "
49c10eea 7379 echo "Checking to see how big your long doubles are..." >&4
628e1a40
JH
7380 $cat >try.c <<'EOCP'
7381#include <stdio.h>
7382int main()
7383{
7384 printf("%d\n", sizeof(long double));
7385}
7386EOCP
7387 set try
7388 set try
7389 if eval $compile; then
7390 longdblsize=`./try$exe_ext`
49c10eea 7391 echo "Your long doubles are $longdblsize bytes long."
628e1a40
JH
7392 else
7393 dflt='8'
7394 echo " "
7395 echo "(I can't seem to compile the test program. Guessing...)" >&4
7396 rp="What is the size of a long double (in bytes)?"
7397 . ./myread
7398 longdblsize="$ans"
7399 fi
7400 if $test "X$doublesize" = "X$longdblsize"; then
7401 echo "(That isn't any different from an ordinary double.)"
7402 fi
7403 ;;
7404esac
7405$rm -f try.* try
ff935051 7406
cf2093f6
JH
7407echo " "
7408
ea1c3b15 7409if $test X"$d_longdbl" = X"$define"; then
cf2093f6
JH
7410
7411echo "Checking how to print long doubles..." >&4
7412
7413if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7414 $cat >try.c <<'EOCP'
7415#include <sys/types.h>
7416#include <stdio.h>
7417int main() {
7418 double d = 123.456;
7419 printf("%.3f\n", d);
7420}
7421EOCP
7422 set try
7423 if eval $compile; then
7424 yyy=`./try$exe_ext`
7425 case "$yyy" in
7426 123.456)
7427 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7428 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7429 echo "We will use %f."
7430 ;;
7431 esac
7432 fi
7433fi
7434
7435if $test X"$sPRIfldbl" = X; then
7436 $cat >try.c <<'EOCP'
7437#include <sys/types.h>
7438#include <stdio.h>
7439int main() {
7440 long double d = 123.456;
ea1c3b15 7441 printf("%.3llf\n", d);
cf2093f6
JH
7442}
7443EOCP
7444 set try
7445 if eval $compile; then
7446 yyy=`./try$exe_ext`
7447 case "$yyy" in
7448 123.456)
ea1c3b15
JH
7449 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7450 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7451 echo "We will use %llf."
cf2093f6
JH
7452 ;;
7453 esac
7454 fi
7455fi
7456
7457if $test X"$sPRIfldbl" = X; then
7458 $cat >try.c <<'EOCP'
7459#include <sys/types.h>
7460#include <stdio.h>
7461int main() {
7462 long double d = 123.456;
ea1c3b15 7463 printf("%.3Lf\n", d);
cf2093f6
JH
7464}
7465EOCP
7466 set try
7467 if eval $compile; then
7468 yyy=`./try$exe_ext`
7469 case "$yyy" in
7470 123.456)
ea1c3b15
JH
7471 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7472 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7473 echo "We will use %Lf."
cf2093f6
JH
7474 ;;
7475 esac
7476 fi
7477fi
7478
11dc3f68 7479if $test X"$sPRIfldbl" = X; then
cf2093f6
JH
7480 $cat >try.c <<'EOCP'
7481#include <sys/types.h>
7482#include <stdio.h>
7483int main() {
7484 long double d = 123.456;
ea1c3b15 7485 printf("%.3lf\n", d);
cf2093f6
JH
7486}
7487EOCP
7488 set try
7489 if eval $compile; then
7490 yyy=`./try$exe_ext`
7491 case "$yyy" in
7492 123.456)
ea1c3b15
JH
7493 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7494 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7495 echo "We will use %lf."
cf2093f6
JH
7496 ;;
7497 esac
7498 fi
7499fi
7500
09e3ef00
JH
7501if $test X"$sPRIfldbl" = X; then
7502 echo "Cannot figure out how to print long doubles." >&4
7503fi
7504
ea1c3b15 7505$rm -f try try.*
cf2093f6 7506
ea1c3b15 7507fi # d_longdbl
cf2093f6
JH
7508
7509case "$sPRIfldbl" in
7510'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7511 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7512 ;;
7513*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7514 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7515 ;;
7516esac
7517
bbe6c963
JH
7518: Check how to convert floats to strings.
7519if test "X$d_Gconvert" = X; then
7520 echo " "
7521 echo "Checking for an efficient way to convert floats to strings."
7522 echo " " > try.c
7523 case "$uselongdouble" in
7524 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7525 esac
7526 case "$d_longdbl" in
7527 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7528 esac
7529 case "$d_PRIgldbl" in
7530 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7531 esac
7532 $cat >>try.c <<EOP
7533#ifdef TRY_gconvert
7534#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7535char *myname = "gconvert";
7536#endif
7537#ifdef TRY_gcvt
7538#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7539char *myname = "gcvt";
7540#endif
7541#ifdef TRY_qgcvt
7542#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7543char *myname = "qgcvt";
7544#define DOUBLETYPE long double
7545#endif
7546#ifdef TRY_sprintf
7547#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7548#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7549#else
7550#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7551#endif
7552char *myname = "sprintf";
7553#endif
7554
7555#ifndef DOUBLETYPE
7556#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7557#define DOUBLETYPE long double
7558#else
7559#define DOUBLETYPE double
7560#endif
7561#endif
7562
7563#include <stdio.h>
7564
7565#define I_STDLIB $i_stdlib
7566#ifdef I_STDLIB
7567#include <stdlib.h>
7568#endif
7569
7570int
7571checkit(expect, got)
7572char *expect;
7573char *got;
7574{
7575 if (strcmp(expect, got)) {
7576 printf("%s oddity: Expected %s, got %s\n",
7577 myname, expect, got);
7578 exit(1);
7579 }
7580}
7581
7582int main()
7583{
7584 char buf[64];
7585 buf[63] = '\0';
7586
7587 /* This must be 1st test on (which?) platform */
7588 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7589 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7590 checkit("0.1", buf);
7591
7592 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7593 checkit("1", buf);
7594
7595 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7596 checkit("1.1", buf);
7597
7598 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7599 checkit("1.01", buf);
7600
7601 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7602 checkit("1.001", buf);
7603
7604 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7605 checkit("1.0001", buf);
7606
7607 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7608 checkit("1.00001", buf);
7609
7610 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7611 checkit("1.000001", buf);
7612
7613 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7614 checkit("0", buf);
7615
7616 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7617 checkit("-1", buf);
7618
7619 /* Some Linux gcvt's give 1.e+5 here. */
7620 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7621 checkit("100000", buf);
7622
7623 /* Some Linux gcvt's give -1.e+5 here. */
7624 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7625 checkit("-100000", buf);
7626
7627 exit(0);
7628}
7629EOP
7630 case "$d_Gconvert" in
7631 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7632 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7633 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7634 *) xxx_list='gconvert gcvt sprintf' ;;
7635 esac
7636
7637 case "$d_longdbl$uselongdouble$d_qgcvt" in
7638 "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7639 esac
7640
7641 for xxx_convert in $xxx_list; do
7642 echo "Trying $xxx_convert..."
7643 $rm -f try try$_o
7644 set try -DTRY_$xxx_convert
7645 if eval $compile; then
7646 echo "$xxx_convert() found." >&4
7647 if ./try; then
7648 echo "I'll use $xxx_convert to convert floats into a string." >&4
7649 break;
7650 else
7651 echo "...But $xxx_convert didn't work as I expected."
7652 fi
7653 else
7654 echo "$xxx_convert NOT found." >&4
7655 fi
7656 done
7657
7658 case "$xxx_convert" in
7659 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7660 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7661 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7662 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7663 "$define$define$define")
7664 d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7665 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7666 esac
7667 ;;
7668 esac
7669fi
7670
a0d0e21e
LW
7671: Initialize h_fcntl
7672h_fcntl=false
7673
7674: Initialize h_sysfile
7675h_sysfile=false
2304df62 7676
2304df62
AD
7677: access call always available on UNIX
7678set access d_access
7679eval $inlibc
7680
7681: locate the flags for 'access()'
7682case "$d_access" in
7683"$define")
7684 echo " "
7685 $cat >access.c <<'EOCP'
7686#include <sys/types.h>
7687#ifdef I_FCNTL
7688#include <fcntl.h>
7689#endif
7690#ifdef I_SYS_FILE
7691#include <sys/file.h>
7692#endif
7693#ifdef I_UNISTD
7694#include <unistd.h>
7695#endif
d674cd6d 7696int main() {
2304df62
AD
7697 exit(R_OK);
7698}
8e07c86e
AD
7699EOCP
7700 : check sys/file.h first, no particular reason here
7701 if $test `./findhdr sys/file.h` && \
dfe9444c 7702 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7703 h_sysfile=true;
7704 echo "<sys/file.h> defines the *_OK access constants." >&4
7705 elif $test `./findhdr fcntl.h` && \
dfe9444c 7706 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7707 h_fcntl=true;
7708 echo "<fcntl.h> defines the *_OK access constants." >&4
7709 elif $test `./findhdr unistd.h` && \
dfe9444c 7710 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
7711 echo "<unistd.h> defines the *_OK access constants." >&4
7712 else
7713 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7714 fi
7715 ;;
7716esac
7717$rm -f access*
a0d0e21e 7718
5ff3f7a4
GS
7719: see if accessx exists
7720set accessx d_accessx
7721eval $inlibc
7722
8e07c86e
AD
7723: see if alarm exists
7724set alarm d_alarm
7725eval $inlibc
2304df62 7726
cf2093f6
JH
7727: see if atolf exists
7728set atolf d_atolf
7729eval $inlibc
7730
7731: see if atoll exists
7732set atoll d_atoll
7733eval $inlibc
7734
ecfc5424 7735: Look for GNU-cc style attribute checking
2304df62 7736echo " "
a0d0e21e
LW
7737echo "Checking whether your compiler can handle __attribute__ ..." >&4
7738$cat >attrib.c <<'EOCP'
1aef975c 7739#include <stdio.h>
ecfc5424 7740void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
a0d0e21e
LW
7741EOCP
7742if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7743 if $contains 'warning' attrib.out >/dev/null 2>&1; then
ecfc5424 7744 echo "Your C compiler doesn't fully support __attribute__."
a0d0e21e
LW
7745 val="$undef"
7746 else
ecfc5424 7747 echo "Your C compiler supports __attribute__."
a0d0e21e
LW
7748 val="$define"
7749 fi
7750else
ecfc5424 7751 echo "Your C compiler doesn't seem to understand __attribute__ at all."
a0d0e21e
LW
7752 val="$undef"
7753fi
ecfc5424 7754set d_attribut
a0d0e21e
LW
7755eval $setvar
7756$rm -f attrib*
7757
7758: see if bcmp exists
7759set bcmp d_bcmp
7760eval $inlibc
7761
7762: see if bcopy exists
7763set bcopy d_bcopy
7764eval $inlibc
7765
2afac517 7766: see if this is a unistd.h system
7767set unistd.h i_unistd
7768eval $inhdr
7769
7770: see if getpgrp exists
7771set getpgrp d_getpgrp
7772eval $inlibc
7773
2afac517 7774case "$d_getpgrp" in
7775"$define")
7776 echo " "
dfe9444c 7777 echo "Checking to see which flavor of getpgrp is in use..."
2afac517 7778 $cat >set.c <<EOP
7779#$i_unistd I_UNISTD
7780#include <sys/types.h>
7781#ifdef I_UNISTD
7782# include <unistd.h>
7783#endif
5a411a32 7784int main()
2afac517 7785{
7786 if (getuid() == 0) {
7787 printf("(I see you are running Configure as super-user...)\n");
7788 setuid(1);
7789 }
7790#ifdef TRY_BSD_PGRP
7791 if (getpgrp(1) == 0)
7792 exit(0);
7793#else
7794 if (getpgrp() > 0)
7795 exit(0);
7796#endif
7797 exit(1);
7798}
7799EOP
7800 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7801 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7802 val="$define"
7803 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7804 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7805 val="$undef"
7806 else
7807 echo "I can't seem to compile and run the test program."
7808 if ./usg; then
7809 xxx="a USG one, i.e. you use getpgrp()."
7810 else
7811 # SVR4 systems can appear rather BSD-ish.
7812 case "$i_unistd" in
7813 $undef)
7814 xxx="a BSD one, i.e. you use getpgrp(pid)."
7815 val="$define"
7816 ;;
7817 $define)
7818 xxx="probably a USG one, i.e. you use getpgrp()."
7819 val="$undef"
7820 ;;
7821 esac
7822 fi
7823 echo "Assuming your getpgrp is $xxx" >&4
7824 fi
7825 ;;
7826*) val="$undef";;
7827esac
7828set d_bsdgetpgrp
7829eval $setvar
7830$rm -f set set.c
7831
a0d0e21e
LW
7832: see if setpgrp exists
7833set setpgrp d_setpgrp
7834eval $inlibc
7835
a0d0e21e
LW
7836case "$d_setpgrp" in
7837"$define")
7838 echo " "
dfe9444c 7839 echo "Checking to see which flavor of setpgrp is in use..."
a0d0e21e 7840 $cat >set.c <<EOP
2afac517 7841#$i_unistd I_UNISTD
7842#include <sys/types.h>
7843#ifdef I_UNISTD
7844# include <unistd.h>
7845#endif
5a411a32 7846int main()
a0d0e21e
LW
7847{
7848 if (getuid() == 0) {
7849 printf("(I see you are running Configure as super-user...)\n");
7850 setuid(1);
7851 }
2afac517 7852#ifdef TRY_BSD_PGRP
a0d0e21e 7853 if (-1 == setpgrp(1, 1))
2afac517 7854 exit(0);
7855#else
7856 if (setpgrp() != -1)
7857 exit(0);
7858#endif
7859 exit(1);
a0d0e21e
LW
7860}
7861EOP
2afac517 7862 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7863 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7864 val="$define"
7865 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7866 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7867 val="$undef"
a0d0e21e 7868 else
dfe9444c 7869 echo "(I can't seem to compile and run the test program.)"
ecfc5424 7870 if ./usg; then
2afac517 7871 xxx="a USG one, i.e. you use setpgrp()."
a0d0e21e 7872 else
2afac517 7873 # SVR4 systems can appear rather BSD-ish.
7874 case "$i_unistd" in
7875 $undef)
7876 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7877 val="$define"
7878 ;;
7879 $define)
7880 xxx="probably a USG one, i.e. you use setpgrp()."
7881 val="$undef"
7882 ;;
7883 esac
a0d0e21e 7884 fi
2afac517 7885 echo "Assuming your setpgrp is $xxx" >&4
a0d0e21e
LW
7886 fi
7887 ;;
7888*) val="$undef";;
7889esac
2afac517 7890set d_bsdsetpgrp
a0d0e21e
LW
7891eval $setvar
7892$rm -f set set.c
a0d0e21e
LW
7893: see if bzero exists
7894set bzero d_bzero
7895eval $inlibc
7896
ecfc5424 7897: see if signal is declared as pointer to function returning int or void
a0d0e21e 7898echo " "
ecfc5424
AD
7899xxx=`./findhdr signal.h`
7900$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7901if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7902 echo "You have int (*signal())() instead of void." >&4
7903 val="$undef"
7904elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
dfe9444c 7905 echo "You have void (*signal())()." >&4
ecfc5424
AD
7906 val="$define"
7907elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7908 echo "You have int (*signal())() instead of void." >&4
7909 val="$undef"
dfe9444c
AD
7910elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7911 echo "You have void (*signal())()." >&4
7912 val="$define"
a0d0e21e 7913else
ecfc5424
AD
7914 case "$d_voidsig" in
7915 '')
7916 echo "I can't determine whether signal handler returns void or int..." >&4
7917 dflt=void
7918 rp="What type does your signal handler return?"
7919 . ./myread
7920 case "$ans" in
7921 v*) val="$define";;
7922 *) val="$undef";;
7923 esac;;
7924 "$define")
dfe9444c
AD
7925 echo "As you already told me, signal handler returns void." >&4
7926 val="$define"
7927 ;;
7928 *) echo "As you already told me, signal handler returns int." >&4
7929 val="$undef"
7930 ;;
ecfc5424
AD
7931 esac
7932fi
7933set d_voidsig
7934eval $setvar
7935case "$d_voidsig" in
7936"$define") signal_t="void";;
7937*) signal_t="int";;
7938esac
7939$rm -f $$.tmp
7940
7941: check for ability to cast large floats to 32-bit ints.
7942echo " "
7943echo 'Checking whether your C compiler can cast large floats to int32.' >&4
e5c9fcd0 7944if $test "$intsize" -ge 4; then
ecfc5424
AD
7945 xxx=int
7946else
7947 xxx=long
7948fi
7949$cat >try.c <<EOCP
e5c9fcd0 7950#include <stdio.h>
ecfc5424
AD
7951#include <sys/types.h>
7952#include <signal.h>
a1896f58 7953$signal_t blech(s) int s; { exit(3); }
d674cd6d 7954int main()
2304df62 7955{
a0d0e21e 7956 $xxx i32;
e5c9fcd0 7957 double f, g;
2304df62 7958 int result = 0;
89434db5 7959 char str[16];
2304df62
AD
7960 signal(SIGFPE, blech);
7961
89434db5
AD
7962 /* Don't let compiler optimize the test away. Store the number
7963 in a writable string for gcc to pass to sscanf under HP/UX.
7964 */
7965 sprintf(str, "2147483647");
7966 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
e5c9fcd0
AD
7967 g = 10 * f;
7968 i32 = ($xxx) g;
2304df62 7969
e5c9fcd0
AD
7970 /* x86 processors will probably give 0x8000 0000, which is a
7971 sign change. We don't want that. We want to mimic SPARC
7972 behavior here, which is to preserve the sign and give
7973 back 0x7fff ffff.
7974 */
a0d0e21e 7975 if (i32 != ($xxx) f)
2304df62
AD
7976 result |= 1;
7977 exit(result);
7978}
7979EOCP
dfe9444c 7980set try
dc45a647 7981if eval $compile_ok; then
2304df62
AD
7982 ./try
7983 yyy=$?
7984else
a0d0e21e 7985 echo "(I can't seem to compile the test program--assuming it can't)"
2304df62
AD
7986 yyy=1
7987fi
7988case "$yyy" in
79890) val="$define"
7990 echo "Yup, it can."
7991 ;;
7992*) val="$undef"
7993 echo "Nope, it can't."
7994 ;;
7995esac
7996set d_casti32
7997eval $setvar
85e6fe83 7998$rm -f try try.*
a0d0e21e 7999
2304df62
AD
8000: check for ability to cast negative floats to unsigned
8001echo " "
8002echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
ecfc5424 8003$cat >try.c <<EOCP
e5c9fcd0 8004#include <stdio.h>
ecfc5424 8005#include <sys/types.h>
2304df62 8006#include <signal.h>
a1896f58
AD
8007$signal_t blech(s) int s; { exit(7); }
8008$signal_t blech_in_list(s) int s; { exit(4); }
232e078e
AD
8009unsigned long dummy_long(p) unsigned long p; { return p; }
8010unsigned int dummy_int(p) unsigned int p; { return p; }
8011unsigned short dummy_short(p) unsigned short p; { return p; }
d674cd6d 8012int main()
2304df62 8013{
e5c9fcd0 8014 double f;
2304df62
AD
8015 unsigned long along;
8016 unsigned int aint;
8017 unsigned short ashort;
8018 int result = 0;
89434db5
AD
8019 char str[16];
8020
e5c9fcd0
AD
8021 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8022 a direct f = -123. assignment. gcc-2.8.0 reportedly
8023 optimized the whole file away
8024 */
89434db5
AD
8025 /* Store the number in a writable string for gcc to pass to
8026 sscanf under HP/UX.
8027 */
8028 sprintf(str, "-123");
8029 sscanf(str, "%lf", &f); /* f = -123.; */
2304df62
AD
8030
8031 signal(SIGFPE, blech);
8032 along = (unsigned long)f;
8033 aint = (unsigned int)f;
8034 ashort = (unsigned short)f;
8035 if (along != (unsigned long)-123)
8036 result |= 1;
8037 if (aint != (unsigned int)-123)
8038 result |= 1;
8039 if (ashort != (unsigned short)-123)
8040 result |= 1;
89434db5
AD
8041 sprintf(str, "1073741824.");
8042 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
2304df62
AD
8043 f = f + f;
8044 along = 0;
8045 along = (unsigned long)f;
8046 if (along != 0x80000000)
8047 result |= 2;
8048 f -= 1.;
8049 along = 0;
8050 along = (unsigned long)f;
8051 if (along != 0x7fffffff)
8052 result |= 1;
8053 f += 2.;
8054 along = 0;
8055 along = (unsigned long)f;
8056 if (along != 0x80000001)
8057 result |= 2;
232e078e
AD
8058 if (result)
8059 exit(result);
8060 signal(SIGFPE, blech_in_list);
89434db5
AD
8061 sprintf(str, "123.");
8062 sscanf(str, "%lf", &f); /* f = 123.; */
232e078e
AD
8063 along = dummy_long((unsigned long)f);
8064 aint = dummy_int((unsigned int)f);
8065 ashort = dummy_short((unsigned short)f);
8066 if (along != (unsigned long)123)
8067 result |= 4;
8068 if (aint != (unsigned int)123)
8069 result |= 4;
8070 if (ashort != (unsigned short)123)
8071 result |= 4;
2304df62
AD
8072 exit(result);
8073
8074}
8075EOCP
dfe9444c 8076set try
dc45a647 8077if eval $compile_ok; then
2304df62
AD
8078 ./try
8079 castflags=$?
8080else
ecfc5424 8081 echo "(I can't seem to compile the test program--assuming it can't)"
232e078e 8082 castflags=7
2304df62
AD
8083fi
8084case "$castflags" in
80850) val="$define"
8086 echo "Yup, it can."
8087 ;;
8088*) val="$undef"
8089 echo "Nope, it can't."
8090 ;;
8091esac
8092set d_castneg
8093eval $setvar
8094$rm -f try.*
8095
2304df62
AD
8096: see if vprintf exists
8097echo " "
8098if set vprintf val -f d_vprintf; eval $csym; $val; then
8099 echo 'vprintf() found.' >&4
8100 val="$define"
8101 $cat >vprintf.c <<'EOF'
8102#include <varargs.h>
8103
d674cd6d 8104int main() { xxx("foo"); }
2304df62
AD
8105
8106xxx(va_alist)
8107va_dcl
8108{
8109 va_list args;
8110 char buf[10];
8111
8112 va_start(args);
8113 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8114}
8115EOF
dfe9444c
AD
8116 set vprintf
8117 if eval $compile && ./vprintf; then
2304df62
AD
8118 echo "Your vsprintf() returns (int)." >&4
8119 val2="$undef"
8120 else
8121 echo "Your vsprintf() returns (char*)." >&4
8122 val2="$define"
8123 fi
8124else
8125 echo 'vprintf() NOT found.' >&4
8126 val="$undef"
8127 val2="$undef"
8128fi
8129set d_vprintf
8130eval $setvar
8131val=$val2
8132set d_charvspr
8133eval $setvar
8134
a0d0e21e
LW
8135: see if chown exists
8136set chown d_chown
8137eval $inlibc
8138
8139: see if chroot exists
8140set chroot d_chroot
8141eval $inlibc
8142
2304df62
AD
8143: see if chsize exists
8144set chsize d_chsize
8145eval $inlibc
8146
8147: check for const keyword
8148echo " "
8149echo 'Checking to see if your C compiler knows about "const"...' >&4
8150$cat >const.c <<'EOCP'
8151typedef struct spug { int drokk; } spug;
5a411a32 8152int main()
2304df62
AD
8153{
8154 const char *foo;
8155 const spug y;
8156}
8157EOCP
8158if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8159 val="$define"
8160 echo "Yup, it does."
8161else
8162 val="$undef"
8163 echo "Nope, it doesn't."
8164fi
8165set d_const
8166eval $setvar
8167
8168: see if crypt exists
8169echo " "
8170if set crypt val -f d_crypt; eval $csym; $val; then
8171 echo 'crypt() found.' >&4
8172 val="$define"
8173 cryptlib=''
8174else
dfe9444c 8175 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
2304df62 8176 if $test -z "$cryptlib"; then
dfe9444c 8177 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
2304df62
AD
8178 else
8179 cryptlib=-lcrypt
8180 fi
8181 if $test -z "$cryptlib"; then
dfe9444c 8182 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
2304df62
AD
8183 else
8184 cryptlib=-lcrypt
8185 fi
8186 if $test -z "$cryptlib"; then
dfe9444c 8187 cryptlib=`./loc libcrypt$_a "" $libpth`
2304df62
AD
8188 else
8189 cryptlib=-lcrypt
8190 fi
8191 if $test -z "$cryptlib"; then
8192 echo 'crypt() NOT found.' >&4
8193 val="$undef"
8194 else
8195 val="$define"
8196 fi
8197fi
8198set d_crypt
8199eval $setvar
8200
921b2963
JH
8201: get csh whereabouts
8202case "$csh" in
8203'csh') val="$undef" ;;
8204*) val="$define" ;;
8205esac
8206set d_csh
8207eval $setvar
8208: Respect a hint or command line value for full_csh.
8209case "$full_csh" in
8210'') full_csh=$csh ;;
8211esac
8212
a0d0e21e
LW
8213: see if cuserid exists
8214set cuserid d_cuserid
2304df62
AD
8215eval $inlibc
8216
a0d0e21e
LW
8217: see if this is a limits.h system
8218set limits.h i_limits
85e6fe83
LW
8219eval $inhdr
8220
a0d0e21e
LW
8221: see if this is a float.h system
8222set float.h i_float
8223eval $inhdr
8224
8225: See if number of significant digits in a double precision number is known
8226echo " "
8227$cat >dbl_dig.c <<EOM
8228#$i_limits I_LIMITS
8229#$i_float I_FLOAT
8230#ifdef I_LIMITS
8231#include <limits.h>
85e6fe83 8232#endif
a0d0e21e
LW
8233#ifdef I_FLOAT
8234#include <float.h>
8235#endif
8236#ifdef DBL_DIG
8237printf("Contains DBL_DIG");
85e6fe83 8238#endif
85e6fe83 8239EOM
a0d0e21e
LW
8240$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8241if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8242 echo "DBL_DIG found." >&4
8243 val="$define"
2304df62 8244else
a0d0e21e
LW
8245 echo "DBL_DIG NOT found." >&4
8246 val="$undef"
2304df62 8247fi
a0d0e21e
LW
8248$rm -f dbl_dig.?
8249set d_dbl_dig
2304df62 8250eval $setvar
2304df62 8251
a0d0e21e
LW
8252: see if difftime exists
8253set difftime d_difftime
2304df62
AD
8254eval $inlibc
8255
a0d0e21e
LW
8256: see if this is a dirent system
8257echo " "
8258if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8259 val="$define"
8260 echo "<dirent.h> found." >&4
8261else
8262 val="$undef"
8263 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8264 echo "<sys/dir.h> found." >&4
8265 echo " "
8266 else
8267 xinc=`./findhdr sys/ndir.h`
8268 fi
8269 echo "<dirent.h> NOT found." >&4
8270fi
8271set i_dirent
8272eval $setvar
8273
8274: Look for type of directory structure.
8275echo " "
8276$cppstdin $cppflags $cppminus < "$xinc" > try.c
8277
8278case "$direntrytype" in
8279''|' ')
8280 case "$i_dirent" in
8281 $define) guess1='struct dirent' ;;
8282 *) guess1='struct direct' ;;
2afac517 8283 esac
8284 ;;
8285*) guess1="$direntrytype"
8286 ;;
8e07c86e
AD
8287esac
8288
2afac517 8289case "$guess1" in
8290'struct dirent') guess2='struct direct' ;;
8291*) guess2='struct dirent' ;;
8292esac
8293
8294if $contains "$guess1" try.c >/dev/null 2>&1; then
8295 direntrytype="$guess1"
8296 echo "Your directory entries are $direntrytype." >&4
8297elif $contains "$guess2" try.c >/dev/null 2>&1; then
8298 direntrytype="$guess2"
8299 echo "Your directory entries seem to be $direntrytype." >&4
8300else
8301 echo "I don't recognize your system's directory entries." >&4
8302 rp="What type is used for directory entries on this system?"
8303 dflt="$guess1"
8304 . ./myread
8305 direntrytype="$ans"
8306fi
8307$rm -f try.c
a0d0e21e 8308
a0d0e21e 8309
2afac517 8310: see if the directory entry stores field length
8311echo " "
8312$cppstdin $cppflags $cppminus < "$xinc" > try.c
8313if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8314 echo "Good, your directory entry keeps length information in d_namlen." >&4
8315 val="$define"
8316else
8317 echo "Your directory entry does not know about the d_namlen field." >&4
8318 val="$undef"
8319fi
8320set d_dirnamlen
8321eval $setvar
8322$rm -f try.c
a0d0e21e 8323
5ff3f7a4
GS
8324: see if dlerror exists
8325xxx_runnm="$runnm"
8326runnm=false
8327set dlerror d_dlerror
8328eval $inlibc
8329runnm="$xxx_runnm"
8330
8331: see if dlfcn is available
8332set dlfcn.h i_dlfcn
8333eval $inhdr
8334
8335case "$usedl" in
8336$define|y|true)
8337 $cat << EOM
8338
8339On a few systems, the dynamically loaded modules that perl generates and uses
8340will need a different extension than shared libs. The default will probably
8341be appropriate.
8342
8343EOM
8344 case "$dlext" in
8345 '') dflt="$so" ;;
8346 *) dflt="$dlext" ;;
8347 esac
8348 rp='What is the extension of dynamically loaded modules'
8349 . ./myread
8350 dlext="$ans"
8351 ;;
8352*)
8353 dlext="none"
8354 ;;
8355esac
8356
8357: Check if dlsym need a leading underscore
a0d0e21e
LW
8358echo " "
8359val="$undef"
8360
8361case "$dlsrc" in
8362dl_dlopen.xs)
8363 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8364 $cat >dyna.c <<'EOM'
8365fred () { }
8366EOM
8367
8368$cat >fred.c<<EOM
8369
8370#include <stdio.h>
8371#$i_dlfcn I_DLFCN
8372#ifdef I_DLFCN
8373#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8374#else
8375#include <sys/types.h>
8376#include <nlist.h>
8377#include <link.h>
8378#endif
8379
8380extern int fred() ;
8381
5a411a32 8382int main()
a0d0e21e
LW
8383{
8384 void * handle ;
8385 void * symbol ;
8386#ifndef RTLD_LAZY
8387 int mode = 1 ;
8388#else
8389 int mode = RTLD_LAZY ;
8390#endif
8391 handle = dlopen("./dyna.$dlext", mode) ;
8392 if (handle == NULL) {
5f05dabc 8393 printf ("1\n") ;
8394 fflush (stdout) ;
8395 exit(0);
a0d0e21e
LW
8396 }
8397 symbol = dlsym(handle, "fred") ;
8398 if (symbol == NULL) {
5f05dabc 8399 /* try putting a leading underscore */
8400 symbol = dlsym(handle, "_fred") ;
8401 if (symbol == NULL) {
8402 printf ("2\n") ;
8403 fflush (stdout) ;
8404 exit(0);
8405 }
8406 printf ("3\n") ;
a0d0e21e
LW
8407 }
8408 else
5f05dabc 8409 printf ("4\n") ;
36477c24 8410 fflush (stdout) ;
8411 exit(0);
a0d0e21e
LW
8412}
8413EOM
760ac839 8414 : Call the object file tmp-dyna.o in case dlext=o.
a0d0e21e 8415 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
dfe9444c
AD
8416 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8417 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
87563a30 8418 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
a0d0e21e
LW
8419 xxx=`./fred`
8420 case $xxx in
8421 1) echo "Test program failed using dlopen." >&4
8422 echo "Perhaps you should not use dynamic loading." >&4;;
8423 2) echo "Test program failed using dlsym." >&4
8424 echo "Perhaps you should not use dynamic loading." >&4;;
8425 3) echo "dlsym needs a leading underscore" >&4
8426 val="$define" ;;
8427 4) echo "dlsym doesn't need a leading underscore." >&4;;
8428 esac
8429 else
8430 echo "I can't compile and run the test program." >&4
88d5303d 8431 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
a0d0e21e
LW
8432 fi
8433 ;;
8434esac
8435
a78b0d02 8436$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
a0d0e21e
LW
8437
8438set d_dlsymun
8439eval $setvar
8440
85ab1d1d
JH
8441hasproto='varname=$1; func=$2; shift; shift;
8442while $test $# -ge 2; do
8443 case "$1" in
8444 $define) echo "#include <$2>";;
8445 esac ;
8446 shift 2;
8447done > try.c;
8448$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8449if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8450 echo "$func() prototype found.";
8451 val="$define";
8452else
8453 echo "$func() prototype NOT found.";
8454 val="$undef";
8455fi;
8456set $varname;
8457eval $setvar;
8458$rm -f try.c tryout.c'
8459
8460: see if prototype for drand48 is available
8461echo " "
8462set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8463eval $hasproto
8464
a0d0e21e
LW
8465: see if dup2 exists
8466set dup2 d_dup2
8467eval $inlibc
8468
5ff3f7a4
GS
8469: see if eaccess exists
8470set eaccess d_eaccess
8471eval $inlibc
8472
8473: see if endgrent exists
8474set endgrent d_endgrent
8475eval $inlibc
8476
e5c9fcd0
AD
8477: see if endhostent exists
8478set endhostent d_endhent
8479eval $inlibc
8480
8481: see if endnetent exists
8482set endnetent d_endnent
8483eval $inlibc
8484
8485: see if endprotoent exists
8486set endprotoent d_endpent
8487eval $inlibc
8488
5ff3f7a4
GS
8489: see if endpwent exists
8490set endpwent d_endpwent
8491eval $inlibc
8492
e5c9fcd0
AD
8493: see if endservent exists
8494set endservent d_endsent
8495eval $inlibc
8496
f1066039
JH
8497: see if endspent exists
8498set endspent d_endspent
8499eval $inlibc
8500
8e07c86e
AD
8501: Locate the flags for 'open()'
8502echo " "
8503$cat >open3.c <<'EOCP'
8504#include <sys/types.h>
8505#ifdef I_FCNTL
8506#include <fcntl.h>
8507#endif
8508#ifdef I_SYS_FILE
8509#include <sys/file.h>
8510#endif
d674cd6d 8511int main() {
8e07c86e
AD
8512 if(O_RDONLY);
8513#ifdef O_TRUNC
8514 exit(0);
8515#else
8516 exit(1);
8517#endif
8518}
8519EOCP
8520: check sys/file.h first to get FREAD on Sun
8521if $test `./findhdr sys/file.h` && \
dfe9444c 8522 set open3 -DI_SYS_FILE && eval $compile; then
8e07c86e
AD
8523 h_sysfile=true;
8524 echo "<sys/file.h> defines the O_* constants..." >&4
8525 if ./open3; then
8526 echo "and you have the 3 argument form of open()." >&4
8527 val="$define"
8528 else
8529 echo "but not the 3 argument form of open(). Oh, well." >&4
8530 val="$undef"
8531 fi
8532elif $test `./findhdr fcntl.h` && \
dfe9444c 8533 set open3 -DI_FCNTL && eval $compile; then
8e07c86e
AD
8534 h_fcntl=true;
8535 echo "<fcntl.h> defines the O_* constants..." >&4
8536 if ./open3; then
8537 echo "and you have the 3 argument form of open()." >&4
8538 val="$define"
8539 else
8540 echo "but not the 3 argument form of open(). Oh, well." >&4
8541 val="$undef"
8542 fi
8543else
8544 val="$undef"
8545 echo "I can't find the O_* constant definitions! You got problems." >&4
8546fi
8547set d_open3
8548eval $setvar
8549$rm -f open3*
8550
213c275f
JH
8551: see which of string.h or strings.h is needed
8552echo " "
8553strings=`./findhdr string.h`
8554if $test "$strings" && $test -r "$strings"; then
8555 echo "Using <string.h> instead of <strings.h>." >&4
8556 val="$define"
8557else
8558 val="$undef"
8559 strings=`./findhdr strings.h`
8560 if $test "$strings" && $test -r "$strings"; then
8561 echo "Using <strings.h> instead of <string.h>." >&4
8562 else
8563 echo "No string header found -- You'll surely have problems." >&4
8564 fi
8565fi
8566set i_string
8567eval $setvar
8568case "$i_string" in
8569"$undef") strings=`./findhdr strings.h`;;
8570*) strings=`./findhdr string.h`;;
8571esac
8572
8e07c86e
AD
8573: check for non-blocking I/O stuff
8574case "$h_sysfile" in
8575true) echo "#include <sys/file.h>" > head.c;;
8576*)
8577 case "$h_fcntl" in
8578 true) echo "#include <fcntl.h>" > head.c;;
8579 *) echo "#include <sys/fcntl.h>" > head.c;;
8580 esac
8581 ;;
8582esac
8583echo " "
8584echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8585case "$o_nonblock" in
8586'')
8587 $cat head.c > try.c
8588 $cat >>try.c <<'EOCP'
213c275f 8589#include <stdio.h>
d674cd6d 8590int main() {
8e07c86e
AD
8591#ifdef O_NONBLOCK
8592 printf("O_NONBLOCK\n");
8593 exit(0);
8594#endif
8595#ifdef O_NDELAY
8596 printf("O_NDELAY\n");
8597 exit(0);
8598#endif
8599#ifdef FNDELAY
8600 printf("FNDELAY\n");
8601 exit(0);
8602#endif
8603 exit(0);
8604}
8605EOCP
dfe9444c 8606 set try
dc45a647 8607 if eval $compile_ok; then
8e07c86e
AD
8608 o_nonblock=`./try`
8609 case "$o_nonblock" in
8610 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8611 *) echo "Seems like we can use $o_nonblock.";;
8612 esac
8613 else
8614 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8615 fi
8616 ;;
8617*) echo "Using $hint value $o_nonblock.";;
8618esac
8619$rm -f try try.* .out core
8620
8621echo " "
8622echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8623case "$eagain" in
8624'')
8625 $cat head.c > try.c
8626 $cat >>try.c <<EOCP
8627#include <errno.h>
8628#include <sys/types.h>
8629#include <signal.h>
213c275f 8630#include <stdio.h>
4633a7c4 8631#define MY_O_NONBLOCK $o_nonblock
dc45a647 8632#ifndef errno /* XXX need better Configure test */
8e07c86e 8633extern int errno;
dc45a647 8634#endif
14e4fe40
JH
8635#$i_unistd I_UNISTD
8636#ifdef I_UNISTD
213c275f
JH
8637#include <unistd.h>
8638#endif
1acc7ade
JH
8639#$i_string I_STRING
8640#ifdef I_STRING
213c275f
JH
8641#include <string.h>
8642#else
8643#include <strings.h>
8644#endif
8e07c86e 8645$signal_t blech(x) int x; { exit(3); }
4633a7c4
LW
8646EOCP
8647 $cat >> try.c <<'EOCP'
d674cd6d 8648int main()
8e07c86e
AD
8649{
8650 int pd[2];
8651 int pu[2];
8652 char buf[1];
8653 char string[100];
8654
8655 pipe(pd); /* Down: child -> parent */
8656 pipe(pu); /* Up: parent -> child */
8657 if (0 != fork()) {
8658 int ret;
8659 close(pd[1]); /* Parent reads from pd[0] */
8660 close(pu[0]); /* Parent writes (blocking) to pu[1] */
4633a7c4 8661 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8e07c86e
AD
8662 exit(1);
8663 signal(SIGALRM, blech);
8664 alarm(5);
8665 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8666 exit(2);
8667 sprintf(string, "%d\n", ret);
8668 write(2, string, strlen(string));
8669 alarm(0);
8670#ifdef EAGAIN
8671 if (errno == EAGAIN) {
8672 printf("EAGAIN\n");
8673 goto ok;
8674 }
8675#endif
8676#ifdef EWOULDBLOCK
8677 if (errno == EWOULDBLOCK)
8678 printf("EWOULDBLOCK\n");
8679#endif
8680 ok:
8681 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8682 sleep(2); /* Give it time to close our pipe */
8683 alarm(5);
8684 ret = read(pd[0], buf, 1); /* Should read EOF */
8685 alarm(0);
8686 sprintf(string, "%d\n", ret);
8687 write(3, string, strlen(string));
8688 exit(0);
8689 }
8690
8691 close(pd[0]); /* We write to pd[1] */
8692 close(pu[1]); /* We read from pu[0] */
8693 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8694 close(pd[1]); /* Pipe pd is now fully closed! */
8695 exit(0); /* Bye bye, thank you for playing! */
8696}
8697EOCP
dfe9444c 8698 set try
dc45a647 8699 if eval $compile_ok; then
774d564b 8700 echo "$startsh" >mtry
40a7a20a 8701 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8e07c86e
AD
8702 chmod +x mtry
8703 ./mtry >/dev/null 2>&1
8704 case $? in
8705 0) eagain=`$cat try.out`;;
8706 1) echo "Could not perform non-blocking setting!";;
8707 2) echo "I did a successful read() for something that was not there!";;
8708 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8709 *) echo "Something terribly wrong happened during testing.";;
8710 esac
8711 rd_nodata=`$cat try.ret`
8712 echo "A read() system call with no data present returns $rd_nodata."
8713 case "$rd_nodata" in
8714 0|-1) ;;
8715 *)
8716 echo "(That's peculiar, fixing that to be -1.)"
8717 rd_nodata=-1
8718 ;;
8719 esac
8720 case "$eagain" in
8721 '')
8722 echo "Forcing errno EAGAIN on read() with no data available."
8723 eagain=EAGAIN
8724 ;;
8725 *)
8726 echo "Your read() sets errno to $eagain when no data is available."
8727 ;;
8728 esac
8729 status=`$cat try.err`
8730 case "$status" in
8731 0) echo "And it correctly returns 0 to signal EOF.";;
8732 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8733 *) echo "However, your read() returns '$status' on EOF??";;
8734 esac
8735 val="$define"
28757baa 8736 if test "$status" = "$rd_nodata"; then
8e07c86e
AD
8737 echo "WARNING: you can't distinguish between EOF and no data!"
8738 val="$undef"
8739 fi
8740 else
8741 echo "I can't compile the test program--assuming errno EAGAIN will do."
8742 eagain=EAGAIN
8743 fi
8744 set d_eofnblk
8745 eval $setvar
8746 ;;
8747*)
8748 echo "Using $hint value $eagain."
8749 echo "Your read() returns $rd_nodata when no data is present."
8750 case "$d_eofnblk" in
8751 "$define") echo "And you can see EOF because read() returns 0.";;
8752 "$undef") echo "But you can't see EOF status from read() returned value.";;
8753 *)
8754 echo "(Assuming you can't see EOF status from read anyway.)"
8755 d_eofnblk=$undef
8756 ;;
8757 esac
8758 ;;
8759esac
8760$rm -f try try.* .out core head.c mtry
8761
a0d0e21e
LW
8762: see if fchmod exists
8763set fchmod d_fchmod
8764eval $inlibc
8765
8766: see if fchown exists
8767set fchown d_fchown
8768eval $inlibc
8769
8770: see if this is an fcntl system
8771set fcntl d_fcntl
8772eval $inlibc
8773
b7b35fc2
JH
8774hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8775while $test $# -ge 2; do
8776 case "$1" in
8777 $define) echo "#include <$2>";;
8778 esac ;
8779 shift 2;
8780done > try.c;
8781echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8782set try;
8783if eval $compile; then
8784 val="$define";
8785else
8786 val="$undef";
8787fi;
8788set $varname;
8789eval $setvar;
8790$rm -f try.c try.o'
8791
8792socketlib=''
8793sockethdr=''
8794: see whether socket exists
8795echo " "
8796$echo $n "Hmm... $c" >&4
8797if set socket val -f d_socket; eval $csym; $val; then
8798 echo "Looks like you have Berkeley networking support." >&4
8799 d_socket="$define"
8800 if set setsockopt val -f; eval $csym; $val; then
8801 d_oldsock="$undef"
8802 else
8803 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8804 d_oldsock="$define"
8805 fi
8806else
8807 if $contains socklib libc.list >/dev/null 2>&1; then
8808 echo "Looks like you have Berkeley networking support." >&4
8809 d_socket="$define"
8810 : we will have to assume that it supports the 4.2 BSD interface
8811 d_oldsock="$undef"
8812 else
8813 echo "You don't have Berkeley networking in libc$_a..." >&4
8814 if test "X$d_socket" = "X$define"; then
8815 echo "...but you seem to believe that you have sockets." >&4
8816 else
8817 for net in net socket
8818 do
8819 if test -f /usr/lib/lib$net$_a; then
8820 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8821 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8822 if $contains socket libc.list >/dev/null 2>&1; then
8823 d_socket="$define"
8824 socketlib="-l$net"
8825 case "$net" in
8826 net)
8827 echo "...but the Wollongong group seems to have hacked it in." >&4
8828 sockethdr="-I/usr/netinclude"
8829 ;;
8830 esac
8831 echo "Found Berkeley sockets interface in lib$net." >& 4
8832 if $contains setsockopt libc.list >/dev/null 2>&1; then
8833 d_oldsock="$undef"
8834 else
8835 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8836 d_oldsock="$define"
8837 fi
8838 break
8839 fi
8840 fi
8841 done
8842 if test "X$d_socket" != "X$define"; then
8843 echo "or anywhere else I see." >&4
8844 d_socket="$undef"
8845 d_oldsock="$undef"
8846 fi
8847 fi
8848 fi
8849fi
8850
8851: see if socketpair exists
8852set socketpair d_sockpair
8853eval $inlibc
8854
8855
8856echo " "
8857echo "Checking the availability of certain socket constants..." >& 4
8858for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8859 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8860 $cat >try.c <<EOF
8861#include <sys/types.h>
8862#include <sys/socket.h>
8863int main() {
8864 int i = $ENUM;
8865}
8866EOF
8867 val="$undef"
8868 set try; if eval $compile; then
8869 val="$define"
8870 fi
8871 set d_${enum}; eval $setvar
8872 $rm -f try.c try
8873done
8874
921b2963
JH
8875: see if sys/select.h has to be included
8876set sys/select.h i_sysselct
8877eval $inhdr
8878
8879: see if we should include time.h, sys/time.h, or both
8880echo " "
8881if test "X$timeincl" = X; then
8882 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8883 $echo $n "I'm now running the test program...$c"
8884 $cat >try.c <<'EOCP'
8885#include <sys/types.h>
8886#ifdef I_TIME
8887#include <time.h>
8888#endif
8889#ifdef I_SYSTIME
8890#ifdef SYSTIMEKERNEL
8891#define KERNEL
8892#endif
8893#include <sys/time.h>
8894#endif
8895#ifdef I_SYSSELECT
8896#include <sys/select.h>
8897#endif
d674cd6d 8898int main()
921b2963
JH
8899{
8900 struct tm foo;
8901#ifdef S_TIMEVAL
8902 struct timeval bar;
8903#endif
8904#ifdef S_TIMEZONE
8905 struct timezone tzp;
8906#endif
8907 if (foo.tm_sec == foo.tm_sec)
8908 exit(0);
8909#ifdef S_TIMEVAL
8910 if (bar.tv_sec == bar.tv_sec)
8911 exit(0);
8912#endif
8913 exit(1);
8914}
8915EOCP
8916 flags=''
8917 for s_timezone in '-DS_TIMEZONE' ''; do
8918 sysselect=''
8919 for s_timeval in '-DS_TIMEVAL' ''; do
8920 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8921 for i_time in '' '-DI_TIME'; do
8922 for i_systime in '-DI_SYSTIME' ''; do
8923 case "$flags" in
8924 '') $echo $n ".$c"
8925 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8926 if eval $compile; then
8927 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8928 shift
8929 flags="$*"
8930 echo " "
8931 $echo $n "Succeeded with $flags$c"
8932 fi
8933 ;;
8934 esac
8935 done
8936 done
8937 done
8938 done
8939 done
8940 timeincl=''
8941 echo " "
8942 case "$flags" in
8943 *SYSTIMEKERNEL*) i_systimek="$define"
8944 timeincl=`./findhdr sys/time.h`
8945 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8946 *) i_systimek="$undef";;
8947 esac
8948 case "$flags" in
8949 *I_TIME*) i_time="$define"
8950 timeincl=`./findhdr time.h`" $timeincl"
8951 echo "We'll include <time.h>." >&4;;
8952 *) i_time="$undef";;
8953 esac
8954 case "$flags" in
8955 *I_SYSTIME*) i_systime="$define"
8956 timeincl=`./findhdr sys/time.h`" $timeincl"
8957 echo "We'll include <sys/time.h>." >&4;;
8958 *) i_systime="$undef";;
8959 esac
8960 $rm -f try.c try
8961fi
8962
8963: check for fd_set items
8964$cat <<EOM
8965
8966Checking to see how well your C compiler handles fd_set and friends ...
8967EOM
8968$cat >fd_set.c <<EOCP
8969#$i_systime I_SYS_TIME
8970#$i_sysselct I_SYS_SELECT
8971#$d_socket HAS_SOCKET
8972#include <sys/types.h>
8973#ifdef HAS_SOCKET
8974#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8975#endif
8976#ifdef I_SYS_TIME
8977#include <sys/time.h>
8978#endif
8979#ifdef I_SYS_SELECT
8980#include <sys/select.h>
8981#endif
d674cd6d 8982int main() {
921b2963
JH
8983 fd_set fds;
8984
8985#ifdef TRYBITS
8986 if(fds.fds_bits);
8987#endif
8988
8989#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8990 exit(0);
8991#else
8992 exit(1);
8993#endif
8994}
8995EOCP
8996set fd_set -DTRYBITS
8997if eval $compile; then
8998 d_fds_bits="$define"
8999 d_fd_set="$define"
9000 echo "Well, your system knows about the normal fd_set typedef..." >&4
9001 if ./fd_set; then
9002 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9003 d_fd_macros="$define"
9004 else
9005 $cat >&4 <<'EOM'
9006but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9007EOM
9008 d_fd_macros="$undef"
9009 fi
9010else
9011 $cat <<'EOM'
9012Hmm, your compiler has some difficulty with fd_set. Checking further...
9013EOM
9014 set fd_set
9015 if eval $compile; then
9016 d_fds_bits="$undef"
9017 d_fd_set="$define"
9018 echo "Well, your system has some sort of fd_set available..." >&4
9019 if ./fd_set; then
9020 echo "and you have the normal fd_set macros." >&4
9021 d_fd_macros="$define"
9022 else
9023 $cat <<'EOM'
9024but not the normal fd_set macros! Gross! More work for me...
9025EOM
9026 d_fd_macros="$undef"
9027 fi
9028 else
9029 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9030 d_fd_set="$undef"
9031 d_fds_bits="$undef"
9032 d_fd_macros="$undef"
9033 fi
9034fi
9035$rm -f fd_set*
9036
a0d0e21e
LW
9037: see if fgetpos exists
9038set fgetpos d_fgetpos
9039eval $inlibc
9040
8175356b
JH
9041: see if flock exists
9042set flock d_flock
9043eval $inlibc
9044
9045: see if fork exists
9046set fork d_fork
9047eval $inlibc
9048
9049: see if pathconf exists
9050set pathconf d_pathconf
9051eval $inlibc
9052
9053: see if fpathconf exists
9054set fpathconf d_fpathconf
9055eval $inlibc
9056
d9b3e12d 9057
d9b3e12d
JH
9058: check for fpos64_t
9059echo " "
c5f05a91 9060echo "Checking to see if you have fpos64_t..." >&4
d9b3e12d 9061$cat >try.c <<EOCP
ce65dbcf 9062#include <stdio.h>
3c96ce7f 9063int main() { fpos64_t x = 7; }
d9b3e12d 9064EOCP
8175356b
JH
9065set try
9066if eval $compile; then
d9b3e12d 9067 val="$define"
c5f05a91 9068 echo "You have fpos64_t."
d9b3e12d
JH
9069else
9070 val="$undef"
c5f05a91 9071 echo "You do not have fpos64_t."
8175356b 9072 case "$fpossize" in
1eeb0f31 9073 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8175356b 9074 esac
d9b3e12d 9075fi
8175356b 9076$rm -f try.* try
d9b3e12d
JH
9077set d_fpos64_t
9078eval $setvar
9079
0545a864
JH
9080hasstruct='varname=$1; struct=$2; shift; shift;
9081while $test $# -ge 2; do
9082 case "$1" in
9083 $define) echo "#include <$2>";;
9084 esac ;
9085 shift 2;
9086done > try.c;
9087echo "int main () { struct $struct foo; }" >> try.c;
9088set try;
9089if eval $compile; then
9090 val="$define";
9091else
9092 val="$undef";
9093fi;
9094set $varname;
9095eval $setvar;
9096$rm -f try.c try.o'
d9b3e12d 9097
9b9c89a3
JH
9098: see if this is a sys/param system
9099set sys/param.h i_sysparam
9100eval $inhdr
9101
104d25b7
JH
9102: see if this is a sys/mount.h system
9103set sys/mount.h i_sysmount
9104eval $inhdr
9105
0545a864
JH
9106: see if sys/types.h has to be included
9107set sys/types.h i_systypes
9108eval $inhdr
9109
0545a864 9110
ad27e871 9111echo " "
8175356b 9112echo "Checking to see if your system supports struct fs_data..." >&4
0545a864
JH
9113set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9114eval $hasstruct
9115case "$d_fs_data_s" in
a22e52b9
JH
9116"$define") echo "Yes, it does." ;;
9117*) echo "No, it doesn't." ;;
0545a864
JH
9118esac
9119
9120: see if fseeko exists
9121set fseeko d_fseeko
9122eval $inlibc
1eeb0f31 9123case "$longsize" in
43999f95 91248) echo "(Your long is 64 bits, so you could use fseek.)" ;;
1eeb0f31 9125esac
0545a864
JH
9126
9127: see if fsetpos exists
9128set fsetpos d_fsetpos
9129eval $inlibc
9130
9131
9132: see if fstatfs exists
9133set fstatfs d_fstatfs
9134eval $inlibc
104d25b7
JH
9135
9136
9137: see if statvfs exists
9138set statvfs d_statvfs
9139eval $inlibc
9140
9141: see if fstatvfs exists
9142set fstatvfs d_fstatvfs
9143eval $inlibc
9144
9145
5ff3f7a4
GS
9146: see if ftello exists
9147set ftello d_ftello
9148eval $inlibc
1eeb0f31 9149case "$longsize" in
43999f95 91508) echo "(Your long is 64 bits, so you could use ftell.)" ;;
1eeb0f31 9151esac
5ff3f7a4 9152
49dabb45
JH
9153: see if getcwd exists
9154set getcwd d_getcwd
9155eval $inlibc
9156
c890dc6c
JH
9157
9158: see if getfsstat exists
9159set getfsstat d_getfsstat
9160eval $inlibc
9161
5ff3f7a4
GS
9162: see if getgrent exists
9163set getgrent d_getgrent
9164eval $inlibc
9165
693762b4
AD
9166: see if gethostbyaddr exists
9167set gethostbyaddr d_gethbyaddr
9168eval $inlibc
9169
9170: see if gethostbyname exists
9171set gethostbyname d_gethbyname
9172eval $inlibc
9173
a0d0e21e
LW
9174: see if gethostent exists
9175set gethostent d_gethent
9176eval $inlibc
9177
921b2963
JH
9178: see how we will look up host name
9179echo " "
a63faeb8
JH
9180call=''
9181if set gethostname val -f d_gethname; eval $csym; $val; then
921b2963
JH
9182 echo 'gethostname() found.' >&4
9183 d_gethname="$define"
9184 call=gethostname
a63faeb8
JH
9185fi
9186if set uname val -f d_uname; eval $csym; $val; then
921b2963
JH
9187 if ./xenix; then
9188 $cat <<'EOM'
9189uname() was found, but you're running xenix, and older versions of xenix
9190have a broken uname(). If you don't really know whether your xenix is old
9191enough to have a broken system call, use the default answer.
9192
9193EOM
9194 dflt=y
9195 case "$d_uname" in
9196 "$define") dflt=n;;
9197 esac
9198 rp='Is your uname() broken?'
9199 . ./myread
9200 case "$ans" in
9201 n*) d_uname="$define"; call=uname;;
9202 esac
9203 else
9204 echo 'uname() found.' >&4
9205 d_uname="$define"
a63faeb8
JH
9206 case "$call" in
9207 '') call=uname ;;
9208 esac
921b2963
JH
9209 fi
9210fi
9211case "$d_gethname" in
9212'') d_gethname="$undef";;
9213esac
9214case "$d_uname" in
9215'') d_uname="$undef";;
9216esac
9217case "$d_uname$d_gethname" in
9218*define*)
9219 dflt=n
9220 cat <<EOM
9221
9222Every now and then someone has a $call() that lies about the hostname
9223but can't be fixed for political or economic reasons. If you wish, I can
9224pretend $call() isn't there and maybe compute hostname at run-time
9225thanks to the '$phostname' command.
9226
9227EOM
9228 rp="Shall I ignore $call() from now on?"
9229 . ./myread
9230 case "$ans" in
9231 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9232 esac;;
9233esac
9234case "$phostname" in
9235'') aphostname='';;
9236*) case "$aphostname" in
9237 /*) ;;
9238 *) set X $phostname
9239 shift
9240 file=$1
9241 shift
9242 file=`./loc $file $file $pth`
9243 aphostname=`echo $file $*`
9244 ;;
9245 esac
9246 ;;
9247esac
9248case "$d_uname$d_gethname" in
9249*define*) ;;
9250*)
9251 case "$phostname" in
9252 '')
9253 echo "There will be no way for $package to get your hostname." >&4;;
9254 *)
9255 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9256 ;;
9257 esac;;
9258esac
9259case "$d_phostname" in
9260'') d_phostname="$undef";;
9261esac
9262
dc45a647
MB
9263: see if this is a netdb.h system
9264set netdb.h i_netdb
9265eval $inhdr
9266
9267: see if prototypes for various gethostxxx netdb.h functions are available
9268echo " "
9269set d_gethostprotos gethostent $i_netdb netdb.h
9270eval $hasproto
9271
a0d0e21e
LW
9272: see if getlogin exists
9273set getlogin d_getlogin
9274eval $inlibc
9275
ad27e871
JH
9276: see if getmnt exists
9277set getmnt d_getmnt
9278eval $inlibc
9279
ccc7f9b3
KS
9280: see if getmntent exists
9281set getmntent d_getmntent
9282eval $inlibc
9283
693762b4
AD
9284: see if getnetbyaddr exists
9285set getnetbyaddr d_getnbyaddr
9286eval $inlibc
9287
9288: see if getnetbyname exists
9289set getnetbyname d_getnbyname
9290eval $inlibc
9291
e5c9fcd0
AD
9292: see if getnetent exists
9293set getnetent d_getnent
9294eval $inlibc
9295
dc45a647
MB
9296: see if prototypes for various getnetxxx netdb.h functions are available
9297echo " "
9298set d_getnetprotos getnetent $i_netdb netdb.h
9299eval $hasproto
9300
693762b4
AD
9301
9302: see if getprotobyname exists
9303set getprotobyname d_getpbyname
9304eval $inlibc
9305
9306: see if getprotobynumber exists
9307set getprotobynumber d_getpbynumber
9308eval $inlibc
e5c9fcd0
AD
9309
9310: see if getprotoent exists
9311set getprotoent d_getpent
9312eval $inlibc
9313
2afac517 9314: see if getpgid exists
9315set getpgid d_getpgid
a0d0e21e
LW
9316eval $inlibc
9317
9318: see if getpgrp2 exists
9319set getpgrp2 d_getpgrp2
9320eval $inlibc
9321
9322: see if getppid exists
9323set getppid d_getppid
9324eval $inlibc
9325
9326: see if getpriority exists
9327set getpriority d_getprior
9328eval $inlibc
9329
dc45a647
MB
9330: see if prototypes for various getprotoxxx netdb.h functions are available
9331echo " "
9332set d_getprotoprotos getprotoent $i_netdb netdb.h
9333eval $hasproto
9334
5ff3f7a4
GS
9335: see if getpwent exists
9336set getpwent d_getpwent
9337eval $inlibc
9338
9339
693762b4
AD
9340: see if getservbyname exists
9341set getservbyname d_getsbyname
9342eval $inlibc
9343
9344: see if getservbyport exists
9345set getservbyport d_getsbyport
9346eval $inlibc
e5c9fcd0
AD
9347
9348: see if getservent exists
9349set getservent d_getsent
9350eval $inlibc
9351
dc45a647
MB
9352: see if prototypes for various getservxxx netdb.h functions are available
9353echo " "
9354set d_getservprotos getservent $i_netdb netdb.h
9355eval $hasproto
9356
f1066039
JH
9357: see if getspent exists
9358set getspent d_getspent
9359eval $inlibc
9360
9361: see if getspnam exists
9362set getspnam d_getspnam
9363eval $inlibc
9364
5f05dabc 9365: see if gettimeofday or ftime exists
9366set gettimeofday d_gettimeod
9367eval $inlibc
9368case "$d_gettimeod" in
9369"$undef")
9370 set ftime d_ftime
9371 eval $inlibc
9372 ;;
9373*)
9374 val="$undef"; set d_ftime; eval $setvar
9375 ;;
9376esac
9377case "$d_gettimeod$d_ftime" in
9378"$undef$undef")
9379 echo " "
9380 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9381 ;;
9382esac
9383
5ff3f7a4
GS
9384: see if this is an grp system
9385set grp.h i_grp
9386eval $inhdr
9387
9388case "$i_grp" in
9389$define)
9390 xxx=`./findhdr grp.h`
9391 $cppstdin $cppflags $cppminus < $xxx >$$.h
9392
9393 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9394 val="$define"
9395 else
9396 val="$undef"
9397 fi
9398 set d_grpasswd
9399 eval $setvar
9400
9401 $rm -f $$.h
9402 ;;
9403*)
9404 val="$undef";
9405 set d_grpasswd; eval $setvar
9406 ;;
9407esac
9408
ccc7f9b3
KS
9409: see if hasmntopt exists
9410set hasmntopt d_hasmntopt
9411eval $inlibc
9412
a0d0e21e
LW
9413: see if this is a netinet/in.h or sys/in.h system
9414set netinet/in.h i_niin sys/in.h i_sysin
9415eval $inhdr
9416
5ff3f7a4 9417: see if arpa/inet.h has to be included
93341792 9418set arpa/inet.h i_arpainet
28e8609d
JH
9419eval $inhdr
9420
a0d0e21e
LW
9421: see if htonl --and friends-- exists
9422val=''
9423set htonl val
9424eval $inlibc
9425
9426: Maybe they are macros.
9427case "$val" in
9428$undef)
9429 $cat >htonl.c <<EOM
9430#include <stdio.h>
9431#include <sys/types.h>
9432#$i_niin I_NETINET_IN
9433#$i_sysin I_SYS_IN
93341792 9434#$i_arpainet I_ARPA_INET
a0d0e21e
LW
9435#ifdef I_NETINET_IN
9436#include <netinet/in.h>
9437#endif
9438#ifdef I_SYS_IN
9439#include <sys/in.h>
9440#endif
28e8609d
JH
9441#ifdef I_ARPA_INET
9442#include <arpa/inet.h>
9443#endif
a0d0e21e
LW
9444#ifdef htonl
9445printf("Defined as a macro.");
9446#endif
9447EOM
9448 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9449 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9450 val="$define"
9451 echo "But it seems to be defined as a macro." >&4
9452 fi
9453 $rm -f htonl.?
9454 ;;
9455esac
9456set d_htonl
9457eval $setvar
9458
43999f95
JH
9459: see if iconv exists
9460set iconv d_iconv
9461eval $inlibc
9462
a0d0e21e
LW
9463: index or strchr
9464echo " "
9465if set index val -f; eval $csym; $val; then
9466 if set strchr val -f d_strchr; eval $csym; $val; then
9467 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9468 val="$define"
9469 vali="$undef"
9470 echo "strchr() found." >&4
9471 else
9472 val="$undef"
9473 vali="$define"
9474 echo "index() found." >&4
9475 fi
9476 else
9477 val="$undef"
9478 vali="$define"
9479 echo "index() found." >&4
9480 fi
9481else
9482 if set strchr val -f d_strchr; eval $csym; $val; then
9483 val="$define"
9484 vali="$undef"
9485 echo "strchr() found." >&4
9486 else
9487 echo "No index() or strchr() found!" >&4
9488 val="$undef"
9489 vali="$undef"
9490 fi
9491fi
9492set d_strchr; eval $setvar
9493val="$vali"
9494set d_index; eval $setvar
9495
7e1af8bc 9496: check whether inet_aton exists
9497set inet_aton d_inetaton
9498eval $inlibc
9499
fe749a9f
JH
9500: see if inttypes.h is available
9501: we want a real compile instead of Inhdr because some systems
9502: have an inttypes.h which includes non-existent headers
9503echo " "
9504$cat >try.c <<EOCP
9505#include <inttypes.h>
9506int main() {
9507 static int32_t foo32 = 0x12345678;
9508}
9509EOCP
9510set try
9511if eval $compile; then
9512 echo "<inttypes.h> found." >&4
9513 val="$define"
9514else
9515 echo "<inttypes.h> NOT found." >&4
9516 val="$undef"
9517fi
9518$rm -f try.c try
9519set i_inttypes
9520eval $setvar
9521
9522: check for int64_t
9523echo " "
c5f05a91 9524echo "Checking to see if you have int64_t..." >&4
fe749a9f
JH
9525$cat >try.c <<EOCP
9526#include <sys/types.h>
9527#$i_inttypes I_INTTYPES
9528#ifdef I_INTTYPES
9529#include <inttypes.h>
9530#endif
9531int main() { int64_t x = 7; }
9532EOCP
9533set try
9534if eval $compile; then
9535 val="$define"
ce65dbcf 9536 echo "You have int64_t."
fe749a9f
JH
9537else
9538 val="$undef"
ce65dbcf 9539 echo "You do not have int64_t."
fe749a9f
JH
9540fi
9541$rm -f try try.*
13b3f787 9542set d_int64_t
fe749a9f
JH
9543eval $setvar
9544
a0d0e21e
LW
9545: Look for isascii
9546echo " "
9547$cat >isascii.c <<'EOCP'
9548#include <stdio.h>
9549#include <ctype.h>
d674cd6d 9550int main() {
a0d0e21e
LW
9551 int c = 'A';
9552 if (isascii(c))
9553 exit(0);
9554 else
9555 exit(1);
9556}
9557EOCP
dfe9444c
AD
9558set isascii
9559if eval $compile; then
a0d0e21e
LW
9560 echo "isascii() found." >&4
9561 val="$define"
9562else
9563 echo "isascii() NOT found." >&4
9564 val="$undef"
9565fi
9566set d_isascii
9567eval $setvar
9568$rm -f isascii*
9569
9570: see if killpg exists
9571set killpg d_killpg
9572eval $inlibc
9573
dd64f1c3
AD
9574: see if lchown exists
9575echo " "
9576$cat > try.c <<'EOCP'
9577/* System header to define __stub macros and hopefully few prototypes,
9578 which can conflict with char lchown(); below. */
9579#include <assert.h>
9580/* Override any gcc2 internal prototype to avoid an error. */
9581/* We use char because int might match the return type of a gcc2
9582 builtin and then its argument prototype would still apply. */
9583char lchown();
9584int main() {
9585 /* The GNU C library defines this for functions which it implements
9586 to always fail with ENOSYS. Some functions are actually named
9587 something starting with __ and the normal name is an alias. */
9588#if defined (__stub_lchown) || defined (__stub___lchown)
9589choke me
9590#else
9591lchown();
9592#endif
9593; return 0; }
9594EOCP
9595set try
9596if eval $compile; then
9597 $echo "lchown() found." >&4
9598 val="$define"
9599else
9600 $echo "lchown() NOT found." >&4
9601 val="$undef"
9602fi
9603set d_lchown
9604eval $setvar
9605
2d4389e4
JH
9606: See if number of significant digits in a double precision number is known
9607echo " "
9608$cat >ldbl_dig.c <<EOM
9609#$i_limits I_LIMITS
9610#$i_float I_FLOAT
9611#ifdef I_LIMITS
9612#include <limits.h>
9613#endif
9614#ifdef I_FLOAT
9615#include <float.h>
9616#endif
9617#ifdef LDBL_DIG
9618printf("Contains LDBL_DIG");
9619#endif
9620EOM
9621$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9622if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9623 echo "LDBL_DIG found." >&4
9624 val="$define"
9625else
9626 echo "LDBL_DIG NOT found." >&4
9627 val="$undef"
9628fi
9629$rm -f ldbl_dig.?
9630set d_ldbl_dig
9631eval $setvar
9632
a0d0e21e
LW
9633: see if link exists
9634set link d_link
9635eval $inlibc
9636
a0d0e21e
LW
9637: see if localeconv exists
9638set localeconv d_locconv
9639eval $inlibc
9640
9641: see if lockf exists
9642set lockf d_lockf
9643eval $inlibc
9644
8175356b
JH
9645: check for long long
9646echo " "
c5f05a91 9647echo "Checking to see if you have long long..." >&4
213c275f 9648echo 'int main() { long long x = 7; return 0; }' > try.c
8175356b
JH
9649set try
9650if eval $compile; then
9651 val="$define"
ce65dbcf 9652 echo "You have have long long."
8175356b
JH
9653else
9654 val="$undef"
ce65dbcf 9655 echo "You do not have long long."
8175356b
JH
9656fi
9657$rm try.*
9658set d_longlong
9659eval $setvar
9660
9661: check for length of long long
9662case "${d_longlong}${longlongsize}" in
9663$define)
9664 echo " "
49c10eea 9665 echo "Checking to see how big your long longs are..." >&4
8175356b
JH
9666 $cat >try.c <<'EOCP'
9667#include <stdio.h>
9668int main()
9669{
213c275f
JH
9670 printf("%d\n", (int)sizeof(long long));
9671 return(0);
8175356b
JH
9672}
9673EOCP
9674 set try
9675 if eval $compile_ok; then
9676 longlongsize=`./try$exe_ext`
49c10eea 9677 echo "Your long longs are $longlongsize bytes long."
8175356b
JH
9678 else
9679 dflt='8'
9680 echo " "
9681 echo "(I can't seem to compile the test program. Guessing...)"
9682 rp="What is the size of a long long (in bytes)?"
9683 . ./myread
9684 longlongsize="$ans"
9685 fi
9686 if $test "X$longsize" = "X$longlongsize"; then
9687 echo "(That isn't any different from an ordinary long.)"
9688 fi
9689 ;;
9690esac
9691$rm -f try.* try
9692
49c10eea
JH
9693: see if prototype for lseek is available
9694echo " "
9695set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9696eval $hasproto
9697
a0d0e21e
LW
9698: see if lstat exists
9699set lstat d_lstat
9700eval $inlibc
9701
1e8c3fde
JH
9702: see if madvise exists
9703set madvise d_madvise
9704eval $inlibc
9705
a0d0e21e
LW
9706: see if mblen exists
9707set mblen d_mblen
9708eval $inlibc
9709
9710: see if mbstowcs exists
9711set mbstowcs d_mbstowcs
9712eval $inlibc
9713
9714: see if mbtowc exists
9715set mbtowc d_mbtowc
9716eval $inlibc
9717
0f27ced1
JH
9718: see if memchr exists
9719set memchr d_memchr
9720eval $inlibc
9721
a0d0e21e
LW
9722: see if memcmp exists
9723set memcmp d_memcmp
9724eval $inlibc
9725
9726: see if memcpy exists
9727set memcpy d_memcpy
9728eval $inlibc
9729
9730: see if memmove exists
9731set memmove d_memmove
2304df62
AD
9732eval $inlibc
9733
9734: see if memset exists
9735set memset d_memset
9736eval $inlibc
9737
9738: see if mkdir exists
9739set mkdir d_mkdir
9740eval $inlibc
9741
fe749a9f
JH
9742: see if mkdtemp exists
9743set mkdtemp d_mkdtemp
9744eval $inlibc
9745
a0d0e21e
LW
9746: see if mkfifo exists
9747set mkfifo d_mkfifo
9748eval $inlibc
9749
fe749a9f
JH
9750: see if mkstemp exists
9751set mkstemp d_mkstemp
9752eval $inlibc
9753
9754: see if mkstemps exists
9755set mkstemps d_mkstemps
9756eval $inlibc
9757
a0d0e21e
LW
9758: see if mktime exists
9759set mktime d_mktime
9760eval $inlibc
9761
87b71857
JH
9762: see if this is a sys/mman.h system
9763set sys/mman.h i_sysmman
9764eval $inhdr
9765
9766: see if mmap exists
9767set mmap d_mmap
9768eval $inlibc
9769: see what shmat returns
9770: default to something harmless
9771mmaptype='void *'
9772case "$i_sysmman$d_mmap" in
9773"$define$define")
9774 $cat >mmap.c <<'END'
9775#include <sys/mman.h>
9776void *mmap();
9777END
9778 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9779 mmaptype='void *'
9780 else
9781 mmaptype='caddr_t'
9782 fi
9783 echo "and it returns ($mmaptype)." >&4
9784 ;;
9785esac
9786
9787
9788
fe749a9f
JH
9789: see if mprotect exists
9790set mprotect d_mprotect
9791eval $inlibc
9792
2304df62
AD
9793: see if msgctl exists
9794set msgctl d_msgctl
9795eval $inlibc
9796
9797: see if msgget exists
9798set msgget d_msgget
9799eval $inlibc
9800
9801: see if msgsnd exists
9802set msgsnd d_msgsnd
9803eval $inlibc
9804
9805: see if msgrcv exists
9806set msgrcv d_msgrcv
9807eval $inlibc
9808
9809: see how much of the 'msg*(2)' library is present.
9810h_msg=true
9811echo " "
9812case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9813*"$undef"*) h_msg=false;;
9814esac
6087ac44
JH
9815case "$osname" in
9816freebsd)
9817 case "`ipcs 2>&1`" in
9818 "SVID messages"*"not configured"*)
5ff3f7a4 9819 echo "Your $osname does not have the msg*(2) configured." >&4
6087ac44
JH
9820 h_msg=false
9821 val="$undef"
9822 set msgctl d_msgctl
9823 eval $setvar
9824 set msgget d_msgget
9825 eval $setvar
9826 set msgsnd d_msgsnd
9827 eval $setvar
9828 set msgrcv d_msgrcv
9829 eval $setvar
9830 ;;
9831 esac
9832 ;;
9833esac
2304df62
AD
9834: we could also check for sys/ipc.h ...
9835if $h_msg && $test `./findhdr sys/msg.h`; then
9836 echo "You have the full msg*(2) library." >&4
9837 val="$define"
9838else
9839 echo "You don't have the full msg*(2) library." >&4
9840 val="$undef"
9841fi
9842set d_msg
9843eval $setvar
9844
fe749a9f
JH
9845: see if msync exists
9846set msync d_msync
dfe9444c
AD
9847eval $inlibc
9848
fe749a9f
JH
9849: see if munmap exists
9850set munmap d_munmap
9851eval $inlibc
ff935051 9852
fe749a9f
JH
9853: see if nice exists
9854set nice d_nice
9855eval $inlibc
ff935051 9856
de1c2614
JH
9857
9858echo " "
6b8eaf93 9859echo "Checking which 64-bit integer type we could use..." >&4
de1c2614
JH
9860
9861case "$intsize" in
98628) val=int
9863 set quadtype
9864 eval $setvar
9865 val='"unsigned int"'
9866 set uquadtype
9867 eval $setvar
6b8eaf93 9868 quadkind=1
de1c2614
JH
9869 ;;
9870*) case "$longsize" in
9871 8) val=long
9872 set quadtype
9873 eval $setvar
9874 val='"unsigned long"'
9875 set uquadtype
9876 eval $setvar
6b8eaf93 9877 quadkind=2
de1c2614 9878 ;;
43999f95
JH
9879 *) case "$d_longlong:$longlongsize" in
9880 define:8)
de1c2614
JH
9881 val='"long long"'
9882 set quadtype
9883 eval $setvar
9884 val='"unsigned long long"'
9885 set uquadtype
9886 eval $setvar
6b8eaf93 9887 quadkind=3
de1c2614 9888 ;;
13b3f787 9889 *) case "$d_int64_t" in
de1c2614
JH
9890 define)
9891 val=int64_t
9892 set quadtype
9893 eval $setvar
9894 val=uint64_t
9895 set uquadtype
9896 eval $setvar
6b8eaf93 9897 quadkind=4
de1c2614
JH
9898 ;;
9899 esac
9900 ;;
9901 esac
9902 ;;
9903 esac
9904 ;;
9905esac
9906
9907case "$quadtype" in
ad551343 9908'') echo "Alas, no 64-bit integer types in sight." >&4
de1c2614
JH
9909 d_quad="$undef"
9910 ;;
10cc9d2a 9911*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
1eeb0f31
JH
9912 verb="will"
9913 else
9914 verb="could"
9915 fi
9916 echo "We $verb use '$quadtype' for 64-bit integers." >&4
de1c2614
JH
9917 d_quad="$define"
9918 ;;
9919esac
9920
cce08f5b
JH
9921: check for length of character
9922echo " "
9923case "$charsize" in
9924'')
9925 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9926 $cat >try.c <<'EOCP'
9927#include <stdio.h>
9928int main()
9929{
9930 printf("%d\n", (int)sizeof(char));
9931 exit(0);
9932}
9933EOCP
9934 set try
9935 if eval $compile_ok; then
9936 dflt=`./try`
9937 else
9938 dflt='1'
9939 echo "(I can't seem to compile the test program. Guessing...)"
9940 fi
9941 ;;
9942*)
9943 dflt="$charsize"
9944 ;;
9945esac
9946rp="What is the size of a character (in bytes)?"
9947. ./myread
9948charsize="$ans"
9949$rm -f try.c try
9950
9951
9952echo " "
9953$echo "Choosing the C types to be used for Perl's internal types..." >&4
9954
10cc9d2a 9955case "$use64bitint:$d_quad:$quadtype" in
cce08f5b
JH
9956define:define:?*)
9957 ivtype="$quadtype"
9958 uvtype="$uquadtype"
9959 ivsize=8
9960 uvsize=8
9961 ;;
9962*) ivtype="long"
9963 uvtype="unsigned long"
9964 ivsize=$longsize
9965 uvsize=$longsize
9966 ;;
9967esac
9968
9969case "$uselongdouble:$d_longdbl" in
9970define:define)
9971 nvtype="long double"
9972 nvsize=$longdblsize
9973 ;;
9974*) nvtype=double
9975 nvsize=$doublesize
9976 ;;
9977esac
9978
9979$echo "(IV will be "$ivtype", $ivsize bytes)"
9980$echo "(UV will be "$uvtype", $uvsize bytes)"
9981$echo "(NV will be "$nvtype", $nvsize bytes)"
9982
9983$cat >try.c <<EOCP
9984#$i_inttypes I_INTTYPES
9985#ifdef I_INTTYPES
9986#include <inttypes.h>
9987#endif
9988#include <stdio.h>
9989int main() {
9990#ifdef INT8
9991 int8_t i = INT8_MAX;
9992 uint8_t u = UINT8_MAX;
9993 printf("int8_t\n");
9994#endif
9995#ifdef INT16
9996 int16_t i = INT16_MAX;
9997 uint16_t i = UINT16_MAX;
9998 printf("int16_t\n");
9999#endif
10000#ifdef INT32
10001 int32_t i = INT32_MAX;
10002 uint32_t u = UINT32_MAX;
10003 printf("int32_t\n");
10004#endif
10005}
10006EOCP
10007
10008case "$i8type" in
10009'') case "$charsize" in
10010 1) i8type=char
10011 u8type="unsigned char"
10012 i8size=$charsize
10013 u8size=$charsize
10014 ;;
10015 esac
10016 ;;
10017esac
10018case "$i8type" in
10019'') set try -DINT8
10020 if eval $compile; then
10021 case "`./try$exe_ext`" in
10022 int8_t) i8type=int8_t
10023 u8type=uint8_t
10024 i8size=1
10025 u8size=1
10026 ;;
10027 esac
10028 fi
10029 ;;
10030esac
10031case "$i8type" in
10032'') if $test $charsize -ge 1; then
10033 i8type=char
10034 u8type="unsigned char"
10035 i8size=$charsize
10036 u8size=$charsize
10037 fi
10038 ;;
10039esac
10040
10041case "$i16type" in
10042'') case "$shortsize" in
10043 2) i16type=short
10044 u16type="unsigned short"
10045 i16size=$shortsize
10046 u16size=$shortsize
10047 ;;
10048 esac
10049 ;;
10050esac
10051case "$i16type" in
10052'') set try -DINT16
10053 if eval $compile; then
10054 case "`./try$exe_ext`" in
10055 int16_t)
10056 i16type=int16_t
10057 u16type=uint16_t
10058 i16size=2
10059 u16size=2
10060 ;;
10061 esac
10062 fi
10063 ;;
10064esac
10065case "$i16type" in
10066'') if $test $shortsize -ge 2; then
10067 i16type=short
10068 u16type="unsigned short"
10069 i16size=$shortsize
10070 u16size=$shortsize
10071 fi
10072 ;;
10073esac
10074
10075case "$i32type" in
10076'') case "$longsize" in
10077 4) i32type=long
10078 u32type="unsigned long"
10079 i32size=$longsize
10080 u32size=$longsize
10081 ;;
10082 *) case "$intsize" in
10083 4) i32type=int
10084 u32type="unsigned int"
10085 i32size=$intsize
10086 u32size=$intsize
10087 ;;
10088 esac
10089 ;;
10090 esac
10091 ;;
10092esac
10093case "$i32type" in
10094'') set try -DINT32
10095 if eval $compile; then
10096 case "`./try$exe_ext`" in
10097 int32_t)
10098 i32type=int32_t
10099 u32type=uint32_t
10100 i32size=4
10101 u32size=4
10102 ;;
10103 esac
10104 fi
10105 ;;
10106esac
10107case "$i32type" in
10108'') if $test $intsize -ge 4; then
10109 i32type=int
10110 u32type="unsigned int"
10111 i32size=$intsize
10112 u32size=$intsize
10113 fi
10114 ;;
10115esac
10116
10117case "$i64type" in
10118'') case "$d_quad:$quadtype" in
10119 define:?*)
10120 i64type="$quadtype"
10121 u64type="$uquadtype"
10122 i64size=8
10123 u64size=8
10124 ;;
10125 esac
10126 ;;
10127esac
10128
10129$echo "Checking whether your NVs can preserve your UVs..." >&4
10130$cat <<EOP >try.c
10131#include <stdio.h>
10132int main() {
10133 $uvtype k = ($uvtype)~0, l;
10134 $nvtype d;
10135 l = k;
10136 d = ($nvtype)l;
10137 l = ($uvtype)d;
10138 if (l == k)
10139 printf("preserve\n");
10140 exit(0);
10141}
10142EOP
10143set try
10144if eval $compile; then
10145 case "`./try$exe_ext`" in
78691af5 10146 preserve) d_nv_preserves_uv="$define" ;;
cce08f5b
JH
10147 esac
10148fi
78691af5 10149case "$d_nv_preserves_uv" in
cce08f5b
JH
10150$define) $echo "Yes, they can." 2>&1 ;;
10151*) $echo "No, they can't." 2>&1
78691af5 10152 d_nv_preserves_uv="$undef"
cce08f5b
JH
10153 ;;
10154esac
10155
10156$rm -f try.* try
10157
c5f05a91
JH
10158
10159: check for off64_t
10160echo " "
10161echo "Checking to see if you have off64_t..." >&4
10162$cat >try.c <<EOCP
10163#include <sys/types.h>
10164#include <unistd.h>
10165int main() { off64_t x = 7; }
10166EOCP
10167set try
10168if eval $compile; then
10169 val="$define"
10170 echo "You have off64_t."
10171else
10172 val="$undef"
10173 echo "You do not have off64_t."
10174 case "$lseeksize" in
10175 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10176 esac
10177fi
10178$rm -f try.* try
10179set d_off64_t
10180eval $setvar
10181
c4747d3e 10182: see if POSIX threads are available
1f5ae88c
JH
10183set pthread.h i_pthread
10184eval $inhdr
10185
c4747d3e
JH
10186
10187
10188
10189: how to create joinable pthreads
10190if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13666627
JH
10191 echo " "
10192 echo "Checking what constant to use for creating joinable pthreads..." >&4
10193 $cat >try.c <<'EOCP'
10194#include <pthread.h>
10195int main() {
10196 int detachstate = JOINABLE;
10197}
10198EOCP
10199 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10200 if eval $compile; then
c6912327 10201 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
ef4af2be
JH
10202 val="$undef" # Yes, undef.
10203 set d_old_pthread_create_joinable
13666627 10204 eval $setvar
ef4af2be
JH
10205 val=""
10206 set old_pthread_create_joinable
13666627
JH
10207 eval $setvar
10208 else
10209 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10210 if eval $compile; then
c6912327 10211 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13666627 10212 val="$define"
ef4af2be 10213 set d_old_pthread_create_joinable
13666627
JH
10214 eval $setvar
10215 val=PTHREAD_CREATE_UNDETACHED
ef4af2be 10216 set old_pthread_create_joinable
13666627
JH
10217 eval $setvar
10218 else
10219 set try -DJOINABLE=__UNDETACHED
10220 if eval $compile; then
c6912327 10221 echo "You seem to use __UNDETACHED." >&4
13666627 10222 val="$define"
ef4af2be 10223 set d_old_pthread_create_joinable
13666627
JH
10224 eval $setvar
10225 val=__UNDETACHED
ef4af2be 10226 set old_pthread_create_joinable
13666627
JH
10227 eval $setvar
10228 else
c6912327 10229 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13666627 10230 val="$define"
ef4af2be 10231 set d_old_pthread_create_joinable
13666627
JH
10232 eval $setvar
10233 val=0
ef4af2be 10234 set old_pthread_create_joinable
13666627
JH
10235 eval $setvar
10236 fi
10237 fi
10238 fi
10239 $rm -f try try.*
10240else
ef4af2be
JH
10241 d_old_pthread_create_joinable="$undef"
10242 old_pthread_create_joinable=""
13666627
JH
10243fi
10244
ef4af2be
JH
10245: see if pause exists
10246set pause d_pause
10247eval $inlibc
10248
10249: see if pipe exists
10250set pipe d_pipe
10251eval $inlibc
10252
10253: see if poll exists
10254set poll d_poll
10255eval $inlibc
10256
31dfa2f6
JH
10257
10258: see whether the various POSIXish _yields exist
10259$cat >try.c <<EOP
10260#include <pthread.h>
10261#include <stdio.h>
5a411a32 10262int main() {
31dfa2f6
JH
10263#ifdef SCHED_YIELD
10264 sched_yield();
10265#else
10266#ifdef PTHREAD_YIELD
10267 pthread_yield();
10268#else
10269#ifdef PTHREAD_YIELD_NULL
10270 pthread_yield(NULL);
10271#endif
10272#endif
10273#endif
10274}
10275EOP
10276: see if sched_yield exists
10277set try -DSCHED_YIELD
10278if eval $compile; then
10279 val="$define"
10280 sched_yield='sched_yield()'
10281else
10282 val="$undef"
10283fi
10284case "$usethreads" in
10285$define)
10286 case "$val" in
10287 $define) echo 'sched_yield() found.' >&4 ;;
10288 *) echo 'sched_yield() NOT found.' >&4 ;;
10289 esac
10290esac
10291set d_sched_yield
10292eval $setvar
10293
10294: see if pthread_yield exists
10295set try -DPTHREAD_YIELD
10296if eval $compile; then
10297 val="$define"
10298 case "$sched_yield" in
10299 '') sched_yield='pthread_yield()' ;;
10300 esac
10301else
10302 set try -DPTHREAD_YIELD_NULL
10303 if eval $compile; then
10304 val="$define"
10305 case "$sched_yield" in
10306 '') sched_yield='pthread_yield(NULL)' ;;
10307 esac
10308 else
10309 val="$undef"
10310 fi
10311fi
10312case "$usethreads" in
10313$define)
10314 case "$val" in
10315 $define) echo 'pthread_yield() found.' >&4 ;;
10316 *) echo 'pthread_yield() NOT found.' >&4 ;;
10317 esac
10318 ;;
10319esac
10320set d_pthread_yield
10321eval $setvar
10322
10323case "$sched_yield" in
10324'') sched_yield=undef ;;
10325esac
10326
10327$rm -f try try.*
10328
4aa0a1f7
AD
10329: see if this is a pwd.h system
10330set pwd.h i_pwd
10331eval $inhdr
10332
10333case "$i_pwd" in
10334$define)
10335 xxx=`./findhdr pwd.h`
85e6fe83 10336 $cppstdin $cppflags $cppminus < $xxx >$$.h
4aa0a1f7 10337
2304df62 10338 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
4aa0a1f7 10339 val="$define"
2304df62 10340 else
4aa0a1f7 10341 val="$undef"
2304df62 10342 fi
4aa0a1f7
AD
10343 set d_pwquota
10344 eval $setvar
10345
2304df62 10346 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
4aa0a1f7 10347 val="$define"
2304df62 10348 else
4aa0a1f7 10349 val="$undef"
2304df62 10350 fi
4aa0a1f7
AD
10351 set d_pwage
10352 eval $setvar
10353
2304df62 10354 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
4aa0a1f7 10355 val="$define"
2304df62 10356 else
4aa0a1f7 10357 val="$undef"
2304df62 10358 fi
4aa0a1f7
AD
10359 set d_pwchange
10360 eval $setvar
10361
2304df62 10362 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
4aa0a1f7 10363 val="$define"
2304df62 10364 else
4aa0a1f7 10365 val="$undef"
2304df62 10366 fi
4aa0a1f7
AD
10367 set d_pwclass
10368 eval $setvar
10369
2304df62 10370 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
4aa0a1f7 10371 val="$define"
2304df62 10372 else
4aa0a1f7 10373 val="$undef"
2304df62 10374 fi
4aa0a1f7 10375 set d_pwexpire
cce08f5b 10376 eval $setvar
de1c2614 10377
cce08f5b
JH
10378 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10379 val="$define"
1eeb0f31 10380 else
cce08f5b 10381 val="$undef"
1eeb0f31 10382 fi
cce08f5b
JH
10383 set d_pwcomment
10384 eval $setvar
10385
10386 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10387 val="$define"
10388 else
10389 val="$undef"
10390 fi
10391 set d_pwgecos
10392 eval $setvar
10393
10394 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10395 val="$define"
10396 else
10397 val="$undef"
10398 fi
10399 set d_pwpasswd
10400 eval $setvar
10401
10402 $rm -f $$.h
10403 ;;
10404*)
10405 val="$undef";
10406 set d_pwquota; eval $setvar
10407 set d_pwage; eval $setvar
10408 set d_pwchange; eval $setvar
10409 set d_pwclass; eval $setvar
10410 set d_pwexpire; eval $setvar
10411 set d_pwcomment; eval $setvar
10412 set d_pwgecos; eval $setvar
10413 set d_pwpasswd; eval $setvar
de1c2614
JH
10414 ;;
10415esac
10416
85e6fe83 10417: see if readdir and friends exist
2304df62
AD
10418set readdir d_readdir
10419eval $inlibc
85e6fe83
LW
10420set seekdir d_seekdir
10421eval $inlibc
10422set telldir d_telldir
10423eval $inlibc
10424set rewinddir d_rewinddir
10425eval $inlibc
2304df62 10426
a0d0e21e
LW
10427: see if readlink exists
10428set readlink d_readlink
10429eval $inlibc
10430
2304df62
AD
10431: see if rename exists
10432set rename d_rename
10433eval $inlibc
10434
10435: see if rmdir exists
10436set rmdir d_rmdir
10437eval $inlibc
10438
8ff267be 10439: see if memory.h is available.
10440val=''
10441set memory.h val
10442eval $inhdr
10443
10444: See if it conflicts with string.h
10445case "$val" in
10446$define)
10447 case "$strings" in
10448 '') ;;
10449 *)
10450 $cppstdin $cppflags $cppminus < $strings > mem.h
10451 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10452 echo " "
10453 echo "We won't be including <memory.h>."
10454 val="$undef"
10455 fi
10456 $rm -f mem.h
10457 ;;
10458 esac
10459esac
10460set i_memory
10461eval $setvar
10462
2304df62
AD
10463: can bcopy handle overlapping blocks?
10464val="$undef"
10465case "$d_bcopy" in
10466"$define")
10467 echo " "
10468 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
dfe9444c 10469 $cat >try.c <<EOCP
8ff267be 10470#$i_memory I_MEMORY
10471#$i_stdlib I_STDLIB
10472#$i_string I_STRING
10473#$i_unistd I_UNISTD
10474EOCP
dfe9444c 10475 $cat >>try.c <<'EOCP'
8ff267be 10476#include <stdio.h>
8ff267be 10477#ifdef I_MEMORY
10478# include <memory.h>
10479#endif
10480#ifdef I_STDLIB
10481# include <stdlib.h>
10482#endif
10483#ifdef I_STRING
10484# include <string.h>
10485#else
10486# include <strings.h>
10487#endif
10488#ifdef I_UNISTD
10489# include <unistd.h> /* Needed for NetBSD */
10490#endif
d674cd6d 10491int main()
2304df62 10492{
85e6fe83
LW
10493char buf[128], abc[128];
10494char *b;
10495int len;
10496int off;
10497int align;
a0d0e21e 10498
85e6fe83 10499bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
2304df62
AD
10500
10501for (align = 7; align >= 0; align--) {
10502 for (len = 36; len; len--) {
10503 b = buf+align;
85e6fe83 10504 bcopy(abc, b, len);
2304df62
AD
10505 for (off = 1; off <= len; off++) {
10506 bcopy(b, b+off, len);
10507 bcopy(b+off, b, len);
85e6fe83 10508 if (bcmp(b, abc, len))
2304df62
AD
10509 exit(1);
10510 }
10511 }
10512}
10513exit(0);
10514}
10515EOCP
dfe9444c 10516 set try
dc45a647 10517 if eval $compile_ok; then
dfe9444c 10518 if ./try 2>/dev/null; then
2304df62
AD
10519 echo "Yes, it can."
10520 val="$define"
10521 else
10522 echo "It can't, sorry."
8ff267be 10523 case "$d_memmove" in
10524 "$define") echo "But that's Ok since you have memmove()." ;;
10525 esac
2304df62
AD
10526 fi
10527 else
10528 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 10529 case "$d_memmove" in
10530 "$define") echo "But that's Ok since you have memmove()." ;;
10531 esac
2304df62
AD
10532 fi
10533 ;;
10534esac
dfe9444c 10535$rm -f try.* try core
2304df62
AD
10536set d_safebcpy
10537eval $setvar
10538
10539: can memcpy handle overlapping blocks?
10540val="$undef"
10541case "$d_memcpy" in
10542"$define")
10543 echo " "
10544 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
dfe9444c 10545 $cat >try.c <<EOCP
8ff267be 10546#$i_memory I_MEMORY
10547#$i_stdlib I_STDLIB
10548#$i_string I_STRING
10549#$i_unistd I_UNISTD
10550EOCP
dfe9444c 10551 $cat >>try.c <<'EOCP'
8ff267be 10552#include <stdio.h>
8ff267be 10553#ifdef I_MEMORY
10554# include <memory.h>
10555#endif
10556#ifdef I_STDLIB
10557# include <stdlib.h>
10558#endif
10559#ifdef I_STRING
10560# include <string.h>
10561#else
10562# include <strings.h>
10563#endif
10564#ifdef I_UNISTD
10565# include <unistd.h> /* Needed for NetBSD */
10566#endif
d674cd6d 10567int main()
2304df62 10568{
85e6fe83
LW
10569char buf[128], abc[128];
10570char *b;
10571int len;
10572int off;
10573int align;
10574
8ff267be 10575/* Copy "abcde..." string to char abc[] so that gcc doesn't
10576 try to store the string in read-only memory. */
85e6fe83 10577memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
2304df62
AD
10578
10579for (align = 7; align >= 0; align--) {
10580 for (len = 36; len; len--) {
10581 b = buf+align;
232e078e 10582 memcpy(b, abc, len);
2304df62 10583 for (off = 1; off <= len; off++) {
2304df62 10584 memcpy(b+off, b, len);
232e078e 10585 memcpy(b, b+off, len);
85e6fe83 10586 if (memcmp(b, abc, len))
2304df62
AD
10587 exit(1);
10588 }
10589 }
10590}
10591exit(0);
10592}
10593EOCP
dfe9444c 10594 set try
dc45a647 10595 if eval $compile_ok; then
dfe9444c 10596 if ./try 2>/dev/null; then
2304df62
AD
10597 echo "Yes, it can."
10598 val="$define"
10599 else
10600 echo "It can't, sorry."
8ff267be 10601 case "$d_memmove" in
10602 "$define") echo "But that's Ok since you have memmove()." ;;
10603 esac
2304df62
AD
10604 fi
10605 else
10606 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 10607 case "$d_memmove" in
10608 "$define") echo "But that's Ok since you have memmove()." ;;
10609 esac
2304df62
AD
10610 fi
10611 ;;
10612esac
dfe9444c 10613$rm -f try.* try core
2304df62
AD
10614set d_safemcpy
10615eval $setvar
10616
36477c24 10617: can memcmp be trusted to compare relative magnitude?
10618val="$undef"
10619case "$d_memcmp" in
10620"$define")
10621 echo " "
dfe9444c
AD
10622 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10623 $cat >try.c <<EOCP
36477c24 10624#$i_memory I_MEMORY
10625#$i_stdlib I_STDLIB
10626#$i_string I_STRING
10627#$i_unistd I_UNISTD
10628EOCP
dfe9444c 10629 $cat >>try.c <<'EOCP'
36477c24 10630#include <stdio.h>
36477c24 10631#ifdef I_MEMORY
10632# include <memory.h>
10633#endif
10634#ifdef I_STDLIB
10635# include <stdlib.h>
10636#endif
10637#ifdef I_STRING
10638# include <string.h>
10639#else
10640# include <strings.h>
10641#endif
10642#ifdef I_UNISTD
10643# include <unistd.h> /* Needed for NetBSD */
10644#endif
d674cd6d 10645int main()
36477c24 10646{
10647char a = -1;
10648char b = 0;
10649if ((a < b) && memcmp(&a, &b, 1) < 0)
10650 exit(1);
10651exit(0);
10652}
10653EOCP
dfe9444c 10654 set try
dc45a647 10655 if eval $compile_ok; then
dfe9444c 10656 if ./try 2>/dev/null; then
36477c24 10657 echo "Yes, it can."
10658 val="$define"
10659 else
10660 echo "No, it can't (it uses signed chars)."
10661 fi
10662 else
10663 echo "(I can't compile the test program, so we'll assume not...)"
10664 fi
10665 ;;
10666esac
dfe9444c 10667$rm -f try.* try core
36477c24 10668set d_sanemcmp
10669eval $setvar
10670
2304df62
AD
10671: see if select exists
10672set select d_select
10673eval $inlibc
10674
10675: see if semctl exists
10676set semctl d_semctl
10677eval $inlibc
10678
10679: see if semget exists
10680set semget d_semget
10681eval $inlibc
10682
10683: see if semop exists
10684set semop d_semop
10685eval $inlibc
10686
10687: see how much of the 'sem*(2)' library is present.
10688h_sem=true
10689echo " "
10690case "$d_semctl$d_semget$d_semop" in
10691*"$undef"*) h_sem=false;;
10692esac
6087ac44
JH
10693case "$osname" in
10694freebsd)
10695 case "`ipcs 2>&1`" in
10696 "SVID messages"*"not configured"*)
5ff3f7a4 10697 echo "Your $osname does not have the sem*(2) configured." >&4
6087ac44
JH
10698 h_sem=false
10699 val="$undef"
10700 set semctl d_semctl
10701 eval $setvar
10702 set semget d_semget
10703 eval $setvar
10704 set semop d_semop
10705 eval $setvar
10706 ;;
10707 esac
10708 ;;
10709esac
2304df62
AD
10710: we could also check for sys/ipc.h ...
10711if $h_sem && $test `./findhdr sys/sem.h`; then
10712 echo "You have the full sem*(2) library." >&4
10713 val="$define"
10714else
10715 echo "You don't have the full sem*(2) library." >&4
10716 val="$undef"
10717fi
10718set d_sem
10719eval $setvar
10720
bd89102f
AD
10721: see whether sys/sem.h defines union semun
10722echo " "
10723$cat > try.c <<'END'
10724#include <sys/types.h>
10725#include <sys/ipc.h>
10726#include <sys/sem.h>
10727int main () { union semun semun; semun.buf = 0; }
10728END
10729set try
10730if eval $compile; then
10731 echo "You have union semun in <sys/sem.h>." >&4
10732 val="$define"
10733else
10734 echo "You do not have union semun in <sys/sem.h>." >&4
10735 val="$undef"
10736fi
85ab1d1d 10737$rm -f try try.c try.h
bd89102f
AD
10738set d_union_semun
10739eval $setvar
10740
10741: see how to do semctl IPC_STAT
10742case "$d_sem" in
10743$define)
10744 : see whether semctl IPC_STAT can use union semun
10745 echo " "
85ab1d1d
JH
10746 $cat > try.h <<END
10747#ifndef S_IRUSR
10748# ifdef S_IREAD
10749# define S_IRUSR S_IREAD
10750# define S_IWUSR S_IWRITE
10751# define S_IXUSR S_IEXEC
10752# else
10753# define S_IRUSR 0400
10754# define S_IWUSR 0200
10755# define S_IXUSR 0100
10756# endif
10757# define S_IRGRP (S_IRUSR>>3)
10758# define S_IWGRP (S_IWUSR>>3)
10759# define S_IXGRP (S_IXUSR>>3)
10760# define S_IROTH (S_IRUSR>>6)
10761# define S_IWOTH (S_IWUSR>>6)
10762# define S_IXOTH (S_IXUSR>>6)
10763#endif
10764#ifndef S_IRWXU
10765# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10766# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10767# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10768#endif
10769END
10770
bd89102f
AD
10771 $cat > try.c <<END
10772#include <sys/types.h>
10773#include <sys/ipc.h>
10774#include <sys/sem.h>
10775#include <sys/stat.h>
10776#include <stdio.h>
10777#include <errno.h>
85ab1d1d 10778#include "try.h"
bd89102f
AD
10779#ifndef errno
10780extern int errno;
10781#endif
10782#$d_union_semun HAS_UNION_SEMUN
10783int main() {
10784 union semun
10785#ifndef HAS_UNION_SEMUN
10786 {
10787 int val;
10788 struct semid_ds *buf;
10789 unsigned short *array;
10790 }
10791#endif
10792 arg;
10793 int sem, st;
10794
10795#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10796 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10797 if (sem > -1) {
10798 struct semid_ds argbuf;
10799 arg.buf = &argbuf;
10800# ifdef IPC_STAT
10801 st = semctl(sem, 0, IPC_STAT, arg);
10802 if (st == 0)
10803 printf("semun\n");
10804 else
10805# endif /* IPC_STAT */
10806 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10807# ifdef IPC_RMID
10808 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10809# endif /* IPC_RMID */
10810 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10811 } else
10812#endif /* IPC_PRIVATE && ... */
10813 printf("semget failed: errno = %d\n", errno);
10814 return 0;
10815}
10816END
10817 val="$undef"
10818 set try
10819 if eval $compile; then
10820 xxx=`./try`
10821 case "$xxx" in
10822 semun) val="$define" ;;
10823 esac
10824 fi
10825 $rm -f try try.c
10826 set d_semctl_semun
10827 eval $setvar
10828 case "$d_semctl_semun" in
10829 $define)
10830 echo "You can use union semun for semctl IPC_STAT." >&4
10831 also='also'
10832 ;;
10833 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10834 also=''
10835 ;;
10836 esac
10837
10838 : see whether semctl IPC_STAT can use struct semid_ds pointer
10839 $cat > try.c <<'END'
10840#include <sys/types.h>
10841#include <sys/ipc.h>
10842#include <sys/sem.h>
10843#include <sys/stat.h>
85ab1d1d 10844#include "try.h"
bd89102f
AD
10845#include <stdio.h>
10846#include <errno.h>
10847#ifndef errno
10848extern int errno;
10849#endif
10850int main() {
10851 struct semid_ds arg;
10852 int sem, st;
10853
10854#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10855 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10856 if (sem > -1) {
10857# ifdef IPC_STAT
10858 st = semctl(sem, 0, IPC_STAT, &arg);
10859 if (st == 0)
10860 printf("semid_ds\n");
10861 else
10862# endif /* IPC_STAT */
10863 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10864# ifdef IPC_RMID
10865 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10866# endif /* IPC_RMID */
10867 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10868 } else
10869#endif /* IPC_PRIVATE && ... */
10870 printf("semget failed: errno = %d\n", errno);
10871
10872 return 0;
10873}
10874END
10875 val="$undef"
10876 set try
10877 if eval $compile; then
10878 xxx=`./try`
10879 case "$xxx" in
10880 semid_ds) val="$define" ;;
10881 esac
10882 fi
10883 $rm -f try try.c
10884 set d_semctl_semid_ds
10885 eval $setvar
10886 case "$d_semctl_semid_ds" in
10887 $define)
7f3d1cf1 10888 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f 10889 ;;
7f3d1cf1 10890 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f
AD
10891 ;;
10892 esac
85ab1d1d 10893 $rm -f try.h
bd89102f
AD
10894 ;;
10895*) val="$undef"
10896
10897 # We do not have the full sem*(2) library, so assume we can not
10898 # use either.
10899
10900 set d_semctl_semun
10901 eval $setvar
10902
10903 set d_semctl_semid_ds
10904 eval $setvar
10905 ;;
10906esac
10907
2304df62
AD
10908: see if setegid exists
10909set setegid d_setegid
10910eval $inlibc
10911
10912: see if seteuid exists
10913set seteuid d_seteuid
10914eval $inlibc
10915
5ff3f7a4
GS
10916: see if setgrent exists
10917set setgrent d_setgrent
10918eval $inlibc
10919
693762b4
AD
10920: see if sethostent exists
10921set sethostent d_sethent
10922eval $inlibc
10923
a0d0e21e
LW
10924: see if setlinebuf exists
10925set setlinebuf d_setlinebuf
10926eval $inlibc
10927
2304df62
AD
10928: see if setlocale exists
10929set setlocale d_setlocale
10930eval $inlibc
a0d0e21e 10931
e5c9fcd0
AD
10932: see if setnetent exists
10933set setnetent d_setnent
10934eval $inlibc
10935
10936: see if setprotoent exists
10937set setprotoent d_setpent
10938eval $inlibc
10939
2304df62
AD
10940: see if setpgid exists
10941set setpgid d_setpgid
10942eval $inlibc
10943
2304df62
AD
10944: see if setpgrp2 exists
10945set setpgrp2 d_setpgrp2
10946eval $inlibc
10947
10948: see if setpriority exists
10949set setpriority d_setprior
10950eval $inlibc
10951
5ff3f7a4
GS
10952: see if setpwent exists
10953set setpwent d_setpwent
10954eval $inlibc
10955
2304df62
AD
10956: see if setregid exists
10957set setregid d_setregid
10958eval $inlibc
10959set setresgid d_setresgid
10960eval $inlibc
10961
10962: see if setreuid exists
10963set setreuid d_setreuid
10964eval $inlibc
10965set setresuid d_setresuid
10966eval $inlibc
10967
10968: see if setrgid exists
10969set setrgid d_setrgid
10970eval $inlibc
10971
10972: see if setruid exists
10973set setruid d_setruid
10974eval $inlibc
10975
e5c9fcd0
AD
10976: see if setservent exists
10977set setservent d_setsent
10978eval $inlibc
10979
2304df62
AD
10980: see if setsid exists
10981set setsid d_setsid
10982eval $inlibc
10983
f1066039
JH
10984: see if setspent exists
10985set setspent d_setspent
10986eval $inlibc
10987
e5c9fcd0
AD
10988: see if setvbuf exists
10989set setvbuf d_setvbuf
10990eval $inlibc
10991
760ac839
LW
10992: see if sfio.h is available
10993set sfio.h i_sfio
10994eval $inhdr
10995
10996
8ff267be 10997: see if sfio library is available
760ac839
LW
10998case "$i_sfio" in
10999$define)
11000 val=''
11001 set sfreserve val
11002 eval $inlibc
11003 ;;
11004*)
11005 val="$undef"
11006 ;;
11007esac
8ff267be 11008: Ok, but do we want to use it.
760ac839
LW
11009case "$val" in
11010$define)
11011 case "$usesfio" in
8ff267be 11012 true|$define|[yY]*) dflt='y';;
760ac839
LW
11013 *) dflt='n';;
11014 esac
8ff267be 11015 echo "$package can use the sfio library, but it is experimental."
760ac839
LW
11016 rp="You seem to have sfio available, do you want to try using it?"
11017 . ./myread
11018 case "$ans" in
8ff267be 11019 y|Y) ;;
11020 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
760ac839 11021 val="$undef"
ff0cee69 11022 : Remove sfio from list of libraries to use
11023 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11024 shift
11025 libs="$*"
11026 echo "libs = $libs" >&4
760ac839
LW
11027 ;;
11028 esac
11029 ;;
8ff267be 11030*) case "$usesfio" in
11031 true|$define|[yY]*)
11032 echo "Sorry, cannot find sfio on this machine" >&4
11033 echo "Ignoring your setting of usesfio=$usesfio" >&4
760ac839
LW
11034 ;;
11035 esac
11036 ;;
11037esac
8ff267be 11038set d_sfio
11039eval $setvar
760ac839
LW
11040case "$d_sfio" in
11041$define) usesfio='true';;
11042*) usesfio='false';;
11043esac
11044
2304df62
AD
11045: see if shmctl exists
11046set shmctl d_shmctl
11047eval $inlibc
11048
11049: see if shmget exists
11050set shmget d_shmget
11051eval $inlibc
11052
a0d0e21e
LW
11053: see if shmat exists
11054set shmat d_shmat
11055eval $inlibc
11056: see what shmat returns
11057case "$d_shmat" in
11058"$define")
11059 $cat >shmat.c <<'END'
11060#include <sys/shm.h>
11061void *shmat();
11062END
11063 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11064 shmattype='void *'
11065 else
11066 shmattype='char *'
11067 fi
11068 echo "and it returns ($shmattype)." >&4
11069 : see if a prototype for shmat is available
e50aee73
AD
11070 xxx=`./findhdr sys/shm.h`
11071 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
a0d0e21e
LW
11072 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11073 val="$define"
11074 else
11075 val="$undef"
11076 fi
11077 $rm -f shmat.[co]
11078 ;;
11079*)
11080 val="$undef"
11081 ;;
11082esac
11083set d_shmatprototype
11084eval $setvar
11085
11086: see if shmdt exists
11087set shmdt d_shmdt
11088eval $inlibc
11089
11090: see how much of the 'shm*(2)' library is present.
11091h_shm=true
11092echo " "
11093case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11094*"$undef"*) h_shm=false;;
11095esac
6087ac44
JH
11096case "$osname" in
11097freebsd)
11098 case "`ipcs 2>&1`" in
11099 "SVID shared memory"*"not configured"*)
5ff3f7a4 11100 echo "Your $osname does not have the shm*(2) configured." >&4
6087ac44
JH
11101 h_shm=false
11102 val="$undef"
11103 set shmctl d_shmctl
11104 evat $setvar
11105 set shmget d_shmget
11106 evat $setvar
11107 set shmat d_shmat
11108 evat $setvar
11109 set shmdt d_shmdt
11110 evat $setvar
11111 ;;
11112 esac
11113 ;;
11114esac
a0d0e21e
LW
11115: we could also check for sys/ipc.h ...
11116if $h_shm && $test `./findhdr sys/shm.h`; then
11117 echo "You have the full shm*(2) library." >&4
11118 val="$define"
11119else
11120 echo "You don't have the full shm*(2) library." >&4
11121 val="$undef"
11122fi
11123set d_shm
11124eval $setvar
11125
2c7991dc 11126echo " "
8ff267be 11127: see if we have sigaction
11128if set sigaction val -f d_sigaction; eval $csym; $val; then
11129 echo 'sigaction() found.' >&4
dc45a647 11130 $cat > try.c <<'EOP'
8ff267be 11131#include <stdio.h>
11132#include <sys/types.h>
11133#include <signal.h>
d674cd6d 11134int main()
8ff267be 11135{
11136 struct sigaction act, oact;
190b66db 11137 act.sa_flags = 0;
48159a0c 11138 oact.sa_handler = 0;
14e4fe40
JH
11139 /* so that act and oact are used */
11140 exit(act.sa_flags == 0 && oact.sa_handler == 0);
8ff267be 11141}
11142EOP
dc45a647
MB
11143 set try
11144 if eval $compile_ok; then
11145 val="$define"
11146 else
11147 echo "But you don't seem to have a useable struct sigaction." >&4
11148 val="$undef"
11149 fi
8ff267be 11150else
dc45a647 11151 echo 'sigaction NOT found.' >&4
8ff267be 11152 val="$undef"
11153fi
11154set d_sigaction; eval $setvar
dfe9444c 11155$rm -f try try$_o try.c
2c7991dc 11156
a5f75d66
AD
11157: see if sigsetjmp exists
11158echo " "
921b2963
JH
11159case "$d_sigsetjmp" in
11160'')
11161 $cat >try.c <<'EOP'
11162#include <setjmp.h>
11163sigjmp_buf env;
11164int set = 1;
d674cd6d 11165int main()
921b2963
JH
11166{
11167 if (sigsetjmp(env,1))
11168 exit(set);
11169 set = 0;
11170 siglongjmp(env, 1);
11171 exit(1);
11172}
11173EOP
11174 set try
11175 if eval $compile; then
11176 if ./try >/dev/null 2>&1; then
11177 echo "POSIX sigsetjmp found." >&4
11178 val="$define"
11179 else
11180 $cat >&4 <<EOM
11181Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11182I'll ignore them.
11183EOM
11184 val="$undef"
a0d0e21e 11185 fi
921b2963
JH
11186 else
11187 echo "sigsetjmp not found." >&4
11188 val="$undef"
a0d0e21e 11189 fi
921b2963
JH
11190 ;;
11191*) val="$d_sigsetjmp"
11192 case "$d_sigsetjmp" in
11193 $define) echo "POSIX sigsetjmp found." >&4;;
11194 $undef) echo "sigsetjmp not found." >&4;;
11195 esac
11196 ;;
11197esac
11198set d_sigsetjmp
11199eval $setvar
11200$rm -f try.c try
2304df62 11201
d9b3e12d
JH
11202: see if sys/stat.h is available
11203set sys/stat.h i_sysstat
11204eval $inhdr
11205
b7b35fc2 11206
2304df62
AD
11207: see if stat knows about block sizes
11208echo " "
b7b35fc2 11209echo "Checking to see if your struct stat has st_blocks field..." >&4
5ff3f7a4
GS
11210set d_statblks stat st_blocks $i_sysstat sys/stat.h
11211eval $hasfield
2304df62 11212
b7b35fc2 11213
ad27e871
JH
11214: see if this is a sys/vfs.h system
11215set sys/vfs.h i_sysvfs
11216eval $inhdr
11217
b7b35fc2 11218
ad27e871
JH
11219: see if this is a sys/statfs.h system
11220set sys/statfs.h i_sysstatfs
11221eval $inhdr
11222
11223
11224echo " "
8175356b 11225echo "Checking to see if your system supports struct statfs..." >&4
ad27e871
JH
11226set 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
11227eval $hasstruct
11228case "$d_statfs_s" in
a22e52b9
JH
11229"$define") echo "Yes, it does." ;;
11230*) echo "No, it doesn't." ;;
ad27e871
JH
11231esac
11232
11233
11234
11235: see if struct statfs knows about f_flags
11236case "$d_statfs_s" in
11237define)
11238 echo " "
8175356b 11239 echo "Checking to see if your struct statfs has f_flags field..." >&4
ad27e871
JH
11240 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
11241 eval $hasfield
11242 ;;
11243*) val="$undef"
11244 set d_statfs_f_flags
11245 eval $setvar
11246 ;;
11247esac
11248case "$d_statfs_f_flags" in
a22e52b9
JH
11249"$define") echo "Yes, it does." ;;
11250*) echo "No, it doesn't." ;;
ad27e871
JH
11251esac
11252
16d20bd9
AD
11253: see if _ptr and _cnt from stdio act std
11254echo " "
dca663ed 11255if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
16d20bd9
AD
11256 echo "(Looks like you have stdio.h from Linux.)"
11257 case "$stdio_ptr" in
c2960299
AD
11258 '') stdio_ptr='((fp)->_IO_read_ptr)'
11259 ptr_lval=$define
11260 ;;
8e07c86e 11261 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
11262 esac
11263 case "$stdio_cnt" in
c2960299
AD
11264 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11265 cnt_lval=$undef
11266 ;;
8e07c86e 11267 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
11268 esac
11269 case "$stdio_base" in
11270 '') stdio_base='((fp)->_IO_read_base)';;
11271 esac
11272 case "$stdio_bufsiz" in
c2960299 11273 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
16d20bd9
AD
11274 esac
11275else
11276 case "$stdio_ptr" in
c2960299
AD
11277 '') stdio_ptr='((fp)->_ptr)'
11278 ptr_lval=$define
11279 ;;
8e07c86e 11280 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
11281 esac
11282 case "$stdio_cnt" in
c2960299
AD
11283 '') stdio_cnt='((fp)->_cnt)'
11284 cnt_lval=$define
11285 ;;
8e07c86e 11286 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
11287 esac
11288 case "$stdio_base" in
11289 '') stdio_base='((fp)->_base)';;
11290 esac
11291 case "$stdio_bufsiz" in
11292 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11293 esac
11294fi
11295: test whether _ptr and _cnt really work
11296echo "Checking how std your stdio is..." >&4
11297$cat >try.c <<EOP
11298#include <stdio.h>
11299#define FILE_ptr(fp) $stdio_ptr
11300#define FILE_cnt(fp) $stdio_cnt
d674cd6d 11301int main() {
16d20bd9
AD
11302 FILE *fp = fopen("try.c", "r");
11303 char c = getc(fp);
11304 if (
11305 18 <= FILE_cnt(fp) &&
11306 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11307 )
11308 exit(0);
11309 exit(1);
11310}
11311EOP
11312val="$undef"
dfe9444c
AD
11313set try
11314if eval $compile; then
16d20bd9
AD
11315 if ./try; then
11316 echo "Your stdio acts pretty std."
11317 val="$define"
11318 else
11319 echo "Your stdio isn't very std."
11320 fi
11321else
11322 echo "Your stdio doesn't appear very std."
11323fi
11324$rm -f try.c try
11325set d_stdstdio
11326eval $setvar
11327
8e07c86e 11328: Can _ptr be used as an lvalue?
e50aee73
AD
11329case "$d_stdstdio$ptr_lval" in
11330$define$define) val=$define ;;
c2960299
AD
11331*) val=$undef ;;
11332esac
11333set d_stdio_ptr_lval
11334eval $setvar
11335
8e07c86e 11336: Can _cnt be used as an lvalue?
e50aee73
AD
11337case "$d_stdstdio$cnt_lval" in
11338$define$define) val=$define ;;
c2960299
AD
11339*) val=$undef ;;
11340esac
11341set d_stdio_cnt_lval
11342eval $setvar
11343
16d20bd9
AD
11344: see if _base is also standard
11345val="$undef"
11346case "$d_stdstdio" in
11347$define)
11348 $cat >try.c <<EOP
11349#include <stdio.h>
11350#define FILE_base(fp) $stdio_base
11351#define FILE_bufsiz(fp) $stdio_bufsiz
d674cd6d 11352int main() {
16d20bd9
AD
11353 FILE *fp = fopen("try.c", "r");
11354 char c = getc(fp);
11355 if (
11356 19 <= FILE_bufsiz(fp) &&
11357 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11358 )
11359 exit(0);
11360 exit(1);
11361}
11362EOP
dfe9444c
AD
11363 set try
11364 if eval $compile; then
16d20bd9 11365 if ./try; then
8ff267be 11366 echo "And its _base field acts std."
16d20bd9
AD
11367 val="$define"
11368 else
11369 echo "But its _base field isn't std."
11370 fi
11371 else
11372 echo "However, it seems to be lacking the _base field."
11373 fi
11374 $rm -f try.c try
11375 ;;
11376esac
11377set d_stdiobase
11378eval $setvar
11379
ed39a0f2
JH
11380$cat >&4 <<EOM
11381Checking how to access stdio streams by file descriptor number...
11382EOM
11383case "$stdio_stream_array" in
11384'') $cat >try.c <<EOCP
11385#include <stdio.h>
11386int main() {
11387 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11388 printf("yes\n");
11389}
11390EOCP
11391 for s in _iob __iob __sF
11392 do
11393 set try -DSTDIO_STREAM_ARRAY=$s
11394 if eval $compile; then
11395 case "`./try$exe_ext`" in
11396 yes) stdio_stream_array=$s; break ;;
11397 esac
11398 fi
11399 done
11400 $rm -f try.* try$exe_ext
11401esac
11402case "$stdio_stream_array" in
11403'') $cat >&4 <<EOM
11404I can't figure out how to access stdio streams by file descriptor number.
11405EOM
11406 d_stdio_stream_array="$undef"
11407 ;;
11408*) $cat >&4 <<EOM
11409You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11410EOM
11411 d_stdio_stream_array="$define"
11412 ;;
11413esac
11414
a0d0e21e
LW
11415: see if strcoll exists
11416set strcoll d_strcoll
11417eval $inlibc
2304df62
AD
11418
11419: check for structure copying
11420echo " "
11421echo "Checking to see if your C compiler can copy structs..." >&4
11422$cat >try.c <<'EOCP'
5a411a32 11423int main()
2304df62
AD
11424{
11425 struct blurfl {
11426 int dyick;
11427 } foo, bar;
11428
11429 foo = bar;
11430}
11431EOCP
11432if $cc -c try.c >/dev/null 2>&1 ; then
11433 val="$define"
11434 echo "Yup, it can."
11435else
11436 val="$undef"
11437 echo "Nope, it can't."
11438fi
11439set d_strctcpy
11440eval $setvar
11441$rm -f try.*
11442
11443: see if strerror and/or sys_errlist[] exist
11444echo " "
28e8609d
JH
11445if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11446 if set strerror val -f d_strerror; eval $csym; $val; then
5ff3f7a4
GS
11447 echo 'strerror() found.' >&4
11448 d_strerror="$define"
11449 d_strerrm='strerror(e)'
11450 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11451 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11452 d_syserrlst="$define"
11453 else
11454 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11455 d_syserrlst="$undef"
11456 fi
28e8609d 11457 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5ff3f7a4
GS
11458 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11459 echo 'strerror() found in string header.' >&4
11460 d_strerror="$define"
11461 d_strerrm='strerror(e)'
11462 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11463 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11464 d_syserrlst="$define"
11465 else
11466 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11467 d_syserrlst="$undef"
11468 fi
28e8609d 11469 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5ff3f7a4
GS
11470 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11471 d_strerror="$undef"
11472 d_syserrlst="$define"
11473 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
28e8609d 11474 else
5ff3f7a4
GS
11475 echo 'strerror() and sys_errlist[] NOT found.' >&4
11476 d_strerror="$undef"
11477 d_syserrlst="$undef"
11478 d_strerrm='"unknown"'
28e8609d 11479 fi
2304df62
AD
11480fi
11481
a89d8a78
DH
11482: see if strtod exists
11483set strtod d_strtod
11484eval $inlibc
11485
11486: see if strtol exists
11487set strtol d_strtol
11488eval $inlibc
11489
ff935051
JH
11490: see if strtold exists
11491set strtold d_strtold
11492eval $inlibc
11493
76d49b1c
JH
11494: see if strtoll exists
11495set strtoll d_strtoll
11496eval $inlibc
11497
358a0a84
JH
11498case "$d_longlong-$d_strtoll" in
11499"$define-$define")
11500 $cat <<EOM
11501Checking whether your strtoll() works okay...
11502EOM
11503 $cat >try.c <<'EOCP'
11504#include <errno.h>
11505#ifdef __hpux
11506#define strtoll __strtoll
11507#endif
11508#include <stdio.h>
11509extern long long int strtoll(char *s, char **, int);
11510static int bad = 0;
11511int check(char *s, long long ell, int een) {
11512 long long gll;
11513 errno = 0;
11514 gll = strtoll(s, 0, 10);
11515 if (!((gll == ell) && (errno == een)))
11516 bad++;
11517}
11518int main() {
11519 check(" 1", 1LL, 0);
11520 check(" 0", 0LL, 0);
11521 check("-1", -1LL, 0);
11522 check("-9223372036854775808", -9223372036854775808LL, 0);
11523 check("-9223372036854775808", -9223372036854775808LL, 0);
11524 check(" 9223372036854775807", 9223372036854775807LL, 0);
11525 check("-9223372036854775808", -9223372036854775808LL, 0);
11526 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11527 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11528 if (!bad)
11529 printf("ok\n");
11530}
11531EOCP
11532 set try
11533 if eval $compile; then
11534 case "`./try`" in
11535 ok) echo "Your strtoll() seems to be working okay." ;;
11536 *) cat <<EOM >&4
11537Your strtoll() doesn't seem to be working okay.
11538EOM
11539 d_strtoll="$undef"
11540 ;;
11541 esac
11542 fi
11543 ;;
11544esac
11545
a89d8a78
DH
11546: see if strtoul exists
11547set strtoul d_strtoul
11548eval $inlibc
11549
cf2093f6
JH
11550: see if strtoull exists
11551set strtoull d_strtoull
11552eval $inlibc
11553
358a0a84
JH
11554case "$d_longlong-$d_strtoull" in
11555"$define-$define")
11556 $cat <<EOM
11557Checking whether your strtoull() works okay...
11558EOM
11559 $cat >try.c <<'EOCP'
11560#include <errno.h>
11561#ifdef __hpux
11562#define strtoull __strtoull
11563#endif
11564#include <stdio.h>
11565extern unsigned long long int strtoull(char *s, char **, int);
11566static int bad = 0;
11567int check(char *s, long long eull, int een) {
11568 long long gull;
11569 errno = 0;
11570 gull = strtoull(s, 0, 10);
11571 if (!((gull == eull) && (errno == een)))
11572 bad++;
11573}
11574int main() {
11575 check(" 1", 1LL, 0);
11576 check(" 0", 0LL, 0);
11577 check("18446744073709551615", 18446744073709551615ULL, 0);
11578 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11579 if (!bad)
11580 printf("ok\n");
11581}
11582EOCP
11583 set try
11584 if eval $compile; then
11585 case "`./try`" in
11586 ok) echo "Your strtoull() seems to be working okay." ;;
11587 *) cat <<EOM >&4
11588Your strtoull() doesn't seem to be working okay.
11589EOM
11590 d_strtoull="$undef"
11591 ;;
11592 esac
11593 fi
11594 ;;
11595esac
11596
ff935051
JH
11597: see if strtouq exists
11598set strtouq d_strtouq
11599eval $inlibc
11600
a0d0e21e
LW
11601: see if strxfrm exists
11602set strxfrm d_strxfrm
11603eval $inlibc
11604
8175356b
JH
11605: see if symlink exists
11606set symlink d_symlink
11607eval $inlibc
11608
11609: see if syscall exists
11610set syscall d_syscall
11611eval $inlibc
11612
11613: see if sysconf exists
11614set sysconf d_sysconf
11615eval $inlibc
11616
11617: see if system exists
11618set system d_system
11619eval $inlibc
11620
11621: see if tcgetpgrp exists
11622set tcgetpgrp d_tcgetpgrp
11623eval $inlibc
11624
11625: see if tcsetpgrp exists
11626set tcsetpgrp d_tcsetpgrp
11627eval $inlibc
11628
11629: see if prototype for telldir is available
11630echo " "
11631set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11632eval $hasproto
dc45a647 11633
2c7991dc 11634: see if this is a sys/times.h system
11635set sys/times.h i_systimes
11636eval $inhdr
4633a7c4 11637
2c7991dc 11638: see if times exists
4633a7c4 11639echo " "
2c7991dc 11640if set times val -f d_times; eval $csym; $val; then
11641 echo 'times() found.' >&4
11642 d_times="$define"
11643 inc=''
11644 case "$i_systimes" in
11645 "$define") inc='sys/times.h';;
11646 esac
dc45a647 11647 rp="What is the type returned by times() on this system?"
2c7991dc 11648 set clock_t clocktype long stdio.h sys/types.h $inc
dc45a647 11649 eval $typedef_ask
2c7991dc 11650else
11651 echo 'times() NOT found, hope that will do.' >&4
11652 d_times="$undef"
11653 clocktype='int'
11654fi
2304df62 11655
2c7991dc 11656: see if truncate exists
11657set truncate d_truncate
11658eval $inlibc
2304df62 11659
2c7991dc 11660: see if tzname[] exists
11661echo " "
11662if set tzname val -a d_tzname; eval $csym; $val; then
11663 val="$define"
11664 echo 'tzname[] found.' >&4
11665else
11666 val="$undef"
11667 echo 'tzname[] NOT found.' >&4
11668fi
11669set d_tzname
11670eval $setvar
11671
11672: see if umask exists
11673set umask d_umask
11674eval $inlibc
85e6fe83 11675
0545a864
JH
11676: see if ustat exists
11677set ustat d_ustat
11678eval $inlibc
11679
4633a7c4
LW
11680: backward compatibility for d_hvfork
11681if test X$d_hvfork != X; then
11682 d_vfork="$d_hvfork"
11683 d_hvfork=''
11684fi
11685: see if there is a vfork
11686val=''
11687set vfork val
11688eval $inlibc
ecfc5424 11689
4633a7c4
LW
11690: Ok, but do we want to use it. vfork is reportedly unreliable in
11691: perl on Solaris 2.x, and probably elsewhere.
11692case "$val" in
11693$define)
16d20bd9 11694 echo " "
4633a7c4
LW
11695 case "$usevfork" in
11696 false) dflt='n';;
11697 *) dflt='y';;
11698 esac
f10488a3
JH
11699 cat <<'EOM'
11700
11701Perl can only use a vfork() that doesn't suffer from strict
11702restrictions on calling functions or modifying global data in
11703the child. For example, glibc-2.1 contains such a vfork()
11704that is unsuitable. If your system provides a proper fork()
11705call, chances are that you do NOT want perl to use vfork().
11706
11707EOM
11708 rp="Do you still want to use vfork()?"
4633a7c4
LW
11709 . ./myread
11710 case "$ans" in
11711 y|Y) ;;
11712 *)
11713 echo "Ok, we won't use vfork()."
11714 val="$undef"
11715 ;;
11716 esac
ecfc5424
AD
11717 ;;
11718esac
4633a7c4
LW
11719set d_vfork
11720eval $setvar
11721case "$d_vfork" in
11722$define) usevfork='true';;
11723*) usevfork='false';;
11724esac
ecfc5424 11725
4633a7c4
LW
11726: see if this is an sysdir system
11727set sys/dir.h i_sysdir
11728eval $inhdr
11729
11730: see if this is an sysndir system
11731set sys/ndir.h i_sysndir
11732eval $inhdr
11733
11734: see if closedir exists
11735set closedir d_closedir
11736eval $inlibc
11737
11738case "$d_closedir" in
11739"$define")
16d20bd9 11740 echo " "
4633a7c4
LW
11741 echo "Checking whether closedir() returns a status..." >&4
11742 cat > closedir.c <<EOM
11743#$i_dirent I_DIRENT /**/
11744#$i_sysdir I_SYS_DIR /**/
11745#$i_sysndir I_SYS_NDIR /**/
bfb7748a 11746#$i_systypes I_SYS_TYPES /**/
4633a7c4 11747
bfb7748a
AD
11748#if defined(I_SYS_TYPES)
11749#include <sys/types.h>
11750#endif
4633a7c4
LW
11751#if defined(I_DIRENT)
11752#include <dirent.h>
11753#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11754#include <sys/dir.h>
4aa0a1f7 11755#endif
4633a7c4
LW
11756#else
11757#ifdef I_SYS_NDIR
11758#include <sys/ndir.h>
11759#else
11760#ifdef I_SYS_DIR
11761#ifdef hp9000s500
11762#include <ndir.h> /* may be wrong in the future */
11763#else
11764#include <sys/dir.h>
11765#endif
11766#endif
11767#endif
11768#endif
11769int main() { return closedir(opendir(".")); }
11770EOM
dfe9444c 11771 set closedir
dc45a647 11772 if eval $compile_ok; then
4633a7c4
LW
11773 if ./closedir > /dev/null 2>&1 ; then
11774 echo "Yes, it does."
11775 val="$undef"
ecfc5424 11776 else
4633a7c4
LW
11777 echo "No, it doesn't."
11778 val="$define"
ecfc5424
AD
11779 fi
11780 else
4633a7c4
LW
11781 echo "(I can't seem to compile the test program--assuming it doesn't)"
11782 val="$define"
ecfc5424 11783 fi
ecfc5424 11784 ;;
4633a7c4
LW
11785*)
11786 val="$undef";
ecfc5424
AD
11787 ;;
11788esac
4633a7c4
LW
11789set d_void_closedir
11790eval $setvar
11791$rm -f closedir*
11792: check for volatile keyword
ecfc5424 11793echo " "
4633a7c4
LW
11794echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11795$cat >try.c <<'EOCP'
5a411a32 11796int main()
4633a7c4
LW
11797{
11798 typedef struct _goo_struct goo_struct;
11799 goo_struct * volatile goo = ((goo_struct *)0);
11800 struct _goo_struct {
11801 long long_int;
11802 int reg_int;
11803 char char_var;
11804 };
11805 typedef unsigned short foo_t;
11806 char *volatile foo;
11807 volatile int bar;
11808 volatile foo_t blech;
11809 foo = foo;
a0d0e21e
LW
11810}
11811EOCP
4633a7c4
LW
11812if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11813 val="$define"
11814 echo "Yup, it does."
11815else
11816 val="$undef"
11817 echo "Nope, it doesn't."
11818fi
11819set d_volatile
11820eval $setvar
11821$rm -f try.*
a0d0e21e 11822
4633a7c4
LW
11823: see if there is a wait4
11824set wait4 d_wait4
8e07c86e
AD
11825eval $inlibc
11826
4633a7c4
LW
11827: see if waitpid exists
11828set waitpid d_waitpid
11829eval $inlibc
11830
11831: see if wcstombs exists
11832set wcstombs d_wcstombs
11833eval $inlibc
11834
11835: see if wctomb exists
11836set wctomb d_wctomb
11837eval $inlibc
11838
11839: preserve RCS keywords in files with variable substitution, grrr
11840Date='$Date'
11841Id='$Id'
11842Log='$Log'
11843RCSfile='$RCSfile'
11844Revision='$Revision'
11845
ca8cfa54
JH
11846case "$crosscompile" in
11847''|[nN]*) crosscompile="$undef" ;;
11848esac
11849
11850case "$osname" in
f556e5b9 11851next|rhapsody|darwin) multiarch="$define" ;;
ca8cfa54
JH
11852esac
11853case "$multiarch" in
11854''|[nN]*) multiarch="$undef" ;;
11855esac
11856
4633a7c4
LW
11857: check for alignment requirements
11858echo " "
68c15b6f
HM
11859case "$crosscompile$multiarch" in
11860*$define*)
ca8cfa54
JH
11861 $cat <<EOM
11862You seem to be either cross-compiling or doing a multiarchitecture build,
11863skipping the memory alignment check.
68c15b6f
HM
11864
11865EOM
11866 case "$alignbytes" in
11867 '') alignbytes=8 ;;
11868 esac
11869 ;;
11870*)
11871 case "$alignbytes" in
11872 '') echo "Checking alignment constraints..." >&4
87b71857
JH
11873 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11874 $cat >try.c <<'EOCP'
11875typedef long double NV;
11876EOCP
11877 else
11878 $cat >try.c <<'EOCP'
11879typedef double NV;
11880EOCP
11881 fi
11882 $cat >>try.c <<'EOCP'
14e4fe40 11883#include <stdio.h>
4633a7c4
LW
11884struct foobar {
11885 char foo;
87b71857 11886 NV bar;
732c9516 11887} try_algn;
d674cd6d 11888int main()
4633a7c4 11889{
213c275f
JH
11890 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11891 return(0);
4633a7c4
LW
11892}
11893EOCP
68c15b6f
HM
11894 set try
11895 if eval $compile_ok; then
11896 dflt=`./try`
11897 else
11898 dflt='8'
11899 echo "(I can't seem to compile the test program...)"
11900 fi
11901 ;;
11902 *) dflt="$alignbytes"
11903 ;;
11904 esac
11905 rp="Doubles must be aligned on a how-many-byte boundary?"
11906 . ./myread
11907 alignbytes="$ans"
11908 $rm -f try.c try
8e07c86e 11909 ;;
ecfc5424 11910esac
68c15b6f 11911
85e6fe83 11912
49c10eea
JH
11913: set the base revision
11914baserev=5.0
11915
4633a7c4 11916: check for ordering of bytes in a long
68c15b6f
HM
11917echo " "
11918case "$crosscompile$multiarch" in
11919*$define*)
11920 $cat <<EOM
ca8cfa54
JH
11921You seem to be either cross-compiling or doing a multiarchitecture build,
11922skipping the byteorder check.
68c15b6f
HM
11923
11924EOM
d9b3e12d 11925 byteorder='0xffff'
68c15b6f
HM
11926 ;;
11927*)
11928 case "$byteorder" in
11929 '')
11930 $cat <<'EOM'
4633a7c4
LW
11931In the following, larger digits indicate more significance. A big-endian
11932machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11933little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
d9b3e12d
JH
11934machines may have weird orders like 3412. A Cray will report 87654321,
11935an Alpha will report 12345678. If the test program works the default is
11936probably right.
4633a7c4
LW
11937I'm now running the test program...
11938EOM
68c15b6f 11939 $cat >try.c <<'EOCP'
4633a7c4 11940#include <stdio.h>
d674cd6d 11941int main()
4633a7c4
LW
11942{
11943 int i;
11944 union {
11945 unsigned long l;
11946 char c[sizeof(long)];
11947 } u;
11948
11949 if (sizeof(long) > 4)
11950 u.l = (0x08070605L << 32) | 0x04030201L;
11951 else
11952 u.l = 0x04030201L;
11953 for (i = 0; i < sizeof(long); i++)
11954 printf("%c", u.c[i]+'0');
11955 printf("\n");
11956 exit(0);
11957}
11958EOCP
68c15b6f
HM
11959 xxx_prompt=y
11960 set try
11961 if eval $compile && ./try > /dev/null; then
11962 dflt=`./try`
11963 case "$dflt" in
11964 [1-4][1-4][1-4][1-4]|12345678|87654321)
11965 echo "(The test program ran ok.)"
11966 echo "byteorder=$dflt"
11967 xxx_prompt=n
4633a7c4 11968 ;;
68c15b6f
HM
11969 ????|????????) echo "(The test program ran ok.)" ;;
11970 *) echo "(The test program didn't run right for some reason.)" ;;
11971 esac
11972 else
11973 dflt='4321'
11974 cat <<'EOM'
4633a7c4
LW
11975(I can't seem to compile the test program. Guessing big-endian...)
11976EOM
68c15b6f
HM
11977 fi
11978 case "$xxx_prompt" in
11979 y)
11980 rp="What is the order of bytes in a long?"
11981 . ./myread
11982 byteorder="$ans"
11983 ;;
11984 *) byteorder=$dflt
11985 ;;
11986 esac
ecfc5424
AD
11987 ;;
11988 esac
68c15b6f 11989 $rm -f try.c try
ecfc5424
AD
11990 ;;
11991esac
68c15b6f 11992
85e6fe83 11993
4633a7c4 11994: how do we catenate cpp tokens here?
2304df62 11995echo " "
4633a7c4
LW
11996echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11997$cat >cpp_stuff.c <<'EOCP'
11998#define RCAT(a,b)a/**/b
11999#define ACAT(a,b)a ## b
12000RCAT(Rei,ser)
12001ACAT(Cir,cus)
12002EOCP
12003$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12004if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 12005 echo "Oh! Smells like ANSI's been here." >&4
4633a7c4
LW
12006 echo "We can catify or stringify, separately or together!"
12007 cpp_stuff=42
12008elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 12009 echo "Ah, yes! The good old days!" >&4
4633a7c4
LW
12010 echo "However, in the good old days we don't know how to stringify and"
12011 echo "catify at the same time."
12012 cpp_stuff=1
12013else
12014 $cat >&4 <<EOM
12015Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12016to have to edit the values of CAT[2-5] in config.h...
a0d0e21e 12017EOM
4633a7c4
LW
12018 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12019fi
12020$rm -f cpp_stuff.*
a0d0e21e 12021
4633a7c4
LW
12022: see if this is a db.h system
12023set db.h i_db
12024eval $inhdr
12025
12026case "$i_db" in
68dc0745 12027$define)
1f70e1ea 12028 : Check db version.
68dc0745 12029 echo " "
12030 echo "Checking Berkeley DB version ..." >&4
12031 $cat >try.c <<EOCP
12032#$d_const HASCONST
12033#ifndef HASCONST
12034#define const
12035#endif
12036#include <sys/types.h>
12037#include <stdio.h>
12038#include <db.h>
d674cd6d 12039int main()
68dc0745 12040{
1f70e1ea
PM
12041#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12042 int Major, Minor, Patch ;
ee02776e 12043 unsigned long Version ;
1f70e1ea
PM
12044 (void)db_version(&Major, &Minor, &Patch) ;
12045 printf("You have Berkeley DB Version 2 or greater\n");
12046
12047 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12048 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12049 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12050 Major, Minor, Patch) ;
12051
12052 /* check that db.h & libdb are compatible */
12053 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12054 printf("db.h and libdb are incompatible\n") ;
12055 exit(3);
12056 }
12057
12058 printf("db.h and libdb are compatible\n") ;
ee02776e
PM
12059
12060 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
693762b4 12061 + DB_VERSION_PATCH ;
ee02776e
PM
12062
12063 /* needs to be >= 2.3.4 */
12064 if (Version < 2003004) {
693762b4 12065 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
ee02776e 12066 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
1f70e1ea
PM
12067 exit(2);
12068 }
12069
12070 exit(0);
68dc0745 12071#else
6a1b87e5 12072#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
1f70e1ea 12073 printf("You have Berkeley DB Version 1\n");
6a1b87e5
JH
12074 exit(0); /* DB version < 2: the coast is clear. */
12075#else
12076 exit(1); /* <db.h> not Berkeley DB? */
12077#endif
68dc0745 12078#endif
12079}
12080EOCP
dfe9444c 12081 set try
cf21f3c6 12082 if eval $compile_ok && ./try; then
1f70e1ea 12083 echo 'Looks OK.' >&4
68dc0745 12084 else
c90c0ff4 12085 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
68dc0745 12086 i_db=$undef
12087 case " $libs " in
12088 *"-ldb "*)
12089 : Remove db from list of libraries to use
12090 echo "Removing unusable -ldb from library list" >&4
12091 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12092 shift
12093 libs="$*"
12094 echo "libs = $libs" >&4
12095 ;;
12096 esac
12097 fi
12098 $rm -f try.*
12099 ;;
12100esac
12101
12102case "$i_db" in
4633a7c4 12103define)
dc45a647
MB
12104 : Check the return type needed for hash
12105 echo " "
12106 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12107 $cat >try.c <<EOCP
12108#$d_const HASCONST
12109#ifndef HASCONST
12110#define const
12111#endif
12112#include <sys/types.h>
12113#include <db.h>
12114
12115#ifndef DB_VERSION_MAJOR
12116u_int32_t hash_cb (ptr, size)
12117const void *ptr;
12118size_t size;
12119{
12120}
12121HASHINFO info;
d674cd6d 12122int main()
dc45a647
MB
12123{
12124 info.hash = hash_cb;
12125}
12126#endif
12127EOCP
12128 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12129 if $contains warning try.out >>/dev/null 2>&1 ; then
12130 db_hashtype='int'
12131 else
12132 db_hashtype='u_int32_t'
12133 fi
12134 else
12135 : XXX Maybe we should just give up here.
12136 db_hashtype=u_int32_t
12137 $cat try.out >&4
12138 echo "Help: I can't seem to compile the db test program." >&4
12139 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12140 fi
12141 $rm -f try.*
12142 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12143 ;;
12144*) db_hashtype=u_int32_t
12145 ;;
12146esac
12147case "$i_db" in
12148define)
4633a7c4
LW
12149 : Check the return type needed for prefix
12150 echo " "
12151 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12152 cat >try.c <<EOCP
12153#$d_const HASCONST
12154#ifndef HASCONST
12155#define const
12156#endif
12157#include <sys/types.h>
12158#include <db.h>
1f70e1ea
PM
12159
12160#ifndef DB_VERSION_MAJOR
4633a7c4
LW
12161size_t prefix_cb (key1, key2)
12162const DBT *key1;
12163const DBT *key2;
12164{
12165}
12166BTREEINFO info;
d674cd6d 12167int main()
4633a7c4
LW
12168{
12169 info.prefix = prefix_cb;
12170}
1f70e1ea 12171#endif
4633a7c4
LW
12172EOCP
12173 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12174 if $contains warning try.out >>/dev/null 2>&1 ; then
12175 db_prefixtype='int'
12176 else
12177 db_prefixtype='size_t'
12178 fi
12179 else
68dc0745 12180 db_prefixtype='size_t'
12181 : XXX Maybe we should just give up here.
dc45a647 12182 $cat try.out >&4
68dc0745 12183 echo "Help: I can't seem to compile the db test program." >&4
12184 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
4633a7c4
LW
12185 fi
12186 $rm -f try.*
12187 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
a0d0e21e 12188 ;;
68dc0745 12189*) db_prefixtype='size_t'
4633a7c4
LW
12190 ;;
12191esac
a0d0e21e 12192
4633a7c4
LW
12193: check for void type
12194echo " "
12195echo "Checking to see how well your C compiler groks the void type..." >&4
4633a7c4
LW
12196case "$voidflags" in
12197'')
12198 $cat >try.c <<'EOCP'
12199#if TRY & 1
760ac839 12200void sub() {
4633a7c4 12201#else
760ac839 12202sub() {
4633a7c4
LW
12203#endif
12204 extern void moo(); /* function returning void */
12205 void (*goo)(); /* ptr to func returning void */
12206#if TRY & 8
12207 void *hue; /* generic ptr */
12208#endif
12209#if TRY & 2
12210 void (*foo[10])();
12211#endif
a0d0e21e 12212
4633a7c4
LW
12213#if TRY & 4
12214 if(goo == moo) {
12215 exit(0);
12216 }
12217#endif
12218 exit(0);
12219}
d674cd6d 12220int main() { sub(); }
4633a7c4 12221EOCP
760ac839 12222 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4633a7c4 12223 voidflags=$defvoidused
bfb7748a 12224 echo "Good. It appears to support void to the level $package wants.">&4
4633a7c4
LW
12225 if $contains warning .out >/dev/null 2>&1; then
12226 echo "However, you might get some warnings that look like this:"
12227 $cat .out
12228 fi
12229 else
12230echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
760ac839 12231 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4633a7c4 12232 echo "It supports 1..."
760ac839 12233 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4633a7c4 12234 echo "It also supports 2..."
760ac839 12235 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4633a7c4
LW
12236 voidflags=7
12237 echo "And it supports 4 but not 8 definitely."
12238 else
12239 echo "It doesn't support 4..."
760ac839 12240 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4633a7c4
LW
12241 voidflags=11
12242 echo "But it supports 8."
12243 else
12244 voidflags=3
12245 echo "Neither does it support 8."
12246 fi
12247 fi
12248 else
12249 echo "It does not support 2..."
760ac839 12250 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4633a7c4
LW
12251 voidflags=13
12252 echo "But it supports 4 and 8."
12253 else
760ac839 12254 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4633a7c4
LW
12255 voidflags=5
12256 echo "And it supports 4 but has not heard about 8."
12257 else
12258 echo "However it supports 8 but not 4."
12259 fi
12260 fi
12261 fi
12262 else
12263 echo "There is no support at all for void."
12264 voidflags=0
12265 fi
12266 fi
12267esac
4633a7c4 12268case "$voidflags" in
2c7991dc 12269"$defvoidused") ;;
bfb7748a
AD
12270*) $cat >&4 <<'EOM'
12271 Support flag bits are:
12272 1: basic void declarations.
12273 2: arrays of pointers to functions returning void.
12274 4: operations between pointers to and addresses of void functions.
12275 8: generic void pointers.
12276EOM
2c7991dc 12277 dflt="$voidflags";
4633a7c4 12278 rp="Your void support flags add up to what?"
a0d0e21e 12279 . ./myread
4633a7c4 12280 voidflags="$ans"
a0d0e21e
LW
12281 ;;
12282esac
4633a7c4 12283$rm -f try.* .out
a0d0e21e 12284
85ab1d1d
JH
12285
12286: How can we generate normalized random numbers ?
693762b4 12287echo " "
de4597cb 12288echo "Looking for a random number function..." >&4
85ab1d1d 12289case "$randfunc" in
693762b4 12290'')
85ab1d1d
JH
12291 if set drand48 val -f; eval $csym; $val; then
12292 dflt="drand48"
12293 echo "Good, found drand48()." >&4
12294 elif set random val -f; eval $csym; $val; then
12295 dflt="random"
12296 echo "OK, found random()." >&4
12297 else
12298 dflt="rand"
12299 echo "Yick, looks like I have to use rand()." >&4
12300 fi
12301 echo " "
12302 ;;
12303*)
12304 dflt="$randfunc"
12305 ;;
12306esac
12307cont=true
12308
12309case "$ccflags" in
12310*-Dmy_rand=*|*-Dmy_srand=*)
12311 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12312 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12313 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12314 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12315 ;;
12316esac
12317
12318while $test "$cont"; do
12319 rp="Use which function to generate random numbers?"
12320 . ./myread
12321 if $test "$ans" = "$dflt"; then
12322 : null
12323 else
12324 randbits=''
12325 fi
12326 randfunc="$ans"
12327 if set $ans val -f; eval $csym; $val; then
12328 cont=''
12329 else
ef4af2be
JH
12330 dflt=y
12331 rp="I cannot find function $ans. Use that name anyway?"
85ab1d1d
JH
12332 . ./myread
12333 dflt=rand
12334 case "$ans" in
12335 [yY]*) cont='';;
12336 esac
12337 fi
12338 case "$cont" in
12339 '')
12340 case "$randfunc" in
12341 drand48)
12342 drand01="drand48()"
12343 seedfunc="srand48"
12344 randbits=48
12345 randseedtype=long
12346 ;;
12347 rand|random)
12348 case "$randbits" in
12349 '')
12350echo "Checking to see how many bits your $randfunc() function produces..." >&4
12351 $cat >try.c <<EOCP
12352#$i_unistd I_UNISTD
12353#$i_stdlib I_STDLIB
693762b4 12354#include <stdio.h>
85ab1d1d
JH
12355#ifdef I_UNISTD
12356# include <unistd.h>
12357#endif
12358#ifdef I_STDLIB
12359# include <stdlib.h>
12360#endif
d674cd6d 12361int main()
693762b4 12362{
85ab1d1d
JH
12363 register int i;
12364 register unsigned long tmp;
12365 register unsigned long max = 0L;
12366
12367 for (i = 1000; i; i--) {
12368 tmp = (unsigned long) $randfunc();
12369 if (tmp > max) max = tmp;
12370 }
12371 for (i = 0; max; i++)
12372 max /= 2;
12373 printf("%d\n",i);
693762b4
AD
12374}
12375EOCP
85ab1d1d
JH
12376 set try
12377 if eval $compile_ok; then
12378 dflt=`try`
12379 else
12380 dflt='?'
12381 echo "(I can't seem to compile the test program...)"
12382 fi
12383 ;;
12384 *)
12385 dflt="$randbits"
12386 ;;
12387 esac
12388 rp="How many bits does your $randfunc() function produce?"
12389 . ./myread
12390 randbits="$ans"
12391 $rm -f try.c try
12392 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12393 seedfunc="s$randfunc"
12394 randseedtype=unsigned
12395 ;;
12396 *)
12397 dflt="31"
12398 rp="How many bits does your $randfunc() function produce?"
12399 . ./myread
12400 randbits="$ans"
12401 seedfunc="s$randfunc"
12402 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12403 if set $seedfunc val -f; eval $csym; $val; then
12404 echo "(Using $seedfunc() to seed random generator)"
12405 else
12406 echo "(Warning: no $seedfunc() to seed random generator)"
12407 seedfunc=rand
12408 fi
12409 randseedtype=unsigned
12410 ;;
12411 esac
12412 ;;
12413 esac
12414done
693762b4 12415
5ff3f7a4
GS
12416echo " "
12417echo "Determining whether or not we are on an EBCDIC system..." >&4
12418$cat >tebcdic.c <<'EOM'
12419int main()
12420{
12421 if ('M'==0xd4) return 0;
12422 return 1;
12423}
12424EOM
12425
12426val=$undef
12427set tebcdic
12428if eval $compile_ok; then
12429 if ./tebcdic; then
12430 echo "You have EBCDIC." >&4
12431 val="$define"
12432 else
57def98f 12433 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
5ff3f7a4
GS
12434 fi
12435else
5cc3184f 12436 echo "I'm unable to compile the test program." >&4
5ff3f7a4
GS
12437 echo "I'll assume ASCII or some ISO Latin." >&4
12438fi
12439$rm -f tebcdic.c tebcdic
12440set ebcdic
12441eval $setvar
12442
29209bc5 12443echo " "
767df6a1
JH
12444$cat >&4 <<EOM
12445Checking how to flush all pending stdio output...
66fe083f 12446EOM
d2201af2
AD
12447# I only know how to find the first 32 possibly open files on SunOS.
12448# See also hints/sunos_4_1.sh and util.c --AD
12449case "$osname" in
12450sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12451esac
12452$cat >>try.c <<EOCP
66fe083f 12453#include <stdio.h>
d2201af2 12454#$i_unistd I_UNISTD
767df6a1 12455#ifdef I_UNISTD
a32a45b6 12456# include <unistd.h>
767df6a1
JH
12457#endif
12458#$d_sysconf HAS_SYSCONF
a71cd7cd
JH
12459#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12460#ifdef HAS_STDIO_STREAM_ARRAY
12461# define STDIO_STREAM_ARRAY $stdio_stream_array
12462#endif
66fe083f
JH
12463int main() {
12464 FILE* p = fopen("try.out", "w");
0f27ced1 12465#ifdef TRY_FPUTC
66fe083f 12466 fputc('x', p);
0f27ced1
JH
12467#else
12468# ifdef TRY_FPRINTF
12469 fprintf(p, "x");
12470# endif
12471#endif
767df6a1 12472#ifdef TRY_FFLUSH_NULL
66fe083f 12473 fflush(NULL);
767df6a1
JH
12474#endif
12475#ifdef TRY_FFLUSH_ALL
12476 {
12477 long open_max = -1;
d2201af2
AD
12478# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12479 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
767df6a1 12480# else
d2201af2
AD
12481# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12482 open_max = sysconf(_SC_OPEN_MAX);
767df6a1 12483# else
4b257aef 12484# ifdef FOPEN_MAX
d2201af2 12485 open_max = FOPEN_MAX;
767df6a1 12486# else
d2201af2
AD
12487# ifdef OPEN_MAX
12488 open_max = OPEN_MAX;
12489# else
12490# ifdef _NFILE
12491 open_max = _NFILE;
12492# endif
767df6a1
JH
12493# endif
12494# endif
12495# endif
4b257aef 12496# endif
ed39a0f2 12497# ifdef HAS_STDIO_STREAM_ARRAY
767df6a1
JH
12498 if (open_max > 0) {
12499 long i;
12500 for (i = 0; i < open_max; i++)
d2201af2
AD
12501 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12502 STDIO_STREAM_ARRAY[i]._file < open_max &&
12503 STDIO_STREAM_ARRAY[i]._flag)
12504 fflush(&STDIO_STREAM_ARRAY[i]);
767df6a1
JH
12505 }
12506 }
ed39a0f2 12507# endif
767df6a1
JH
12508#endif
12509 _exit(42);
66fe083f
JH
12510}
12511EOCP
0f27ced1
JH
12512: first we have to find out how _not_ to flush
12513if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12514 output=''
12515 set try -DTRY_FPUTC
6626660c 12516 if eval $compile; then
4b257aef 12517 $rm -f try.out
0f27ced1
JH
12518 ./try$exe_ext 2>/dev/null
12519 if $test ! -s try.out -a "X$?" = X42; then
12520 output=-DTRY_FPUTC
12521 fi
12522 fi
12523 case "$output" in
12524 '')
12525 set try -DTRY_FPRINTF
12526 $rm -f try.out
6626660c 12527 if eval $compile; then
4b257aef 12528 $rm -f try.out
0f27ced1
JH
12529 ./try$exe_ext 2>/dev/null
12530 if $test ! -s try.out -a "X$?" = X42; then
12531 output=-DTRY_FPRINTF
12532 fi
12533 fi
12534 ;;
12535 esac
12536fi
767df6a1
JH
12537: check for fflush NULL behaviour
12538case "$fflushNULL" in
0f27ced1 12539'') set try -DTRY_FFLUSH_NULL $output
6626660c 12540 if eval $compile; then
4b257aef 12541 $rm -f try.out
196fa3d2 12542 ./try$exe_ext 2>/dev/null
a32a45b6
JH
12543 code="$?"
12544 if $test -s try.out -a "X$code" = X42; then
c2fddd50 12545 fflushNULL="`$cat try.out`"
a32a45b6
JH
12546 else
12547 if $test "X$code" != X42; then
12548 $cat >&4 <<EOM
12549(If this test failed, don't worry, we'll try another method shortly.)
12550EOM
12551 fi
c2fddd50
JH
12552 fi
12553 fi
0f27ced1 12554 $rm -f core try.core core.try.*
c2fddd50 12555 case "$fflushNULL" in
6626660c 12556 x) $cat >&4 <<EOM
66fe083f
JH
12557Your fflush(NULL) works okay.
12558EOM
ed39a0f2 12559 fflushNULL="$define"
c2fddd50 12560 ;;
6626660c 12561 '') $cat >&4 <<EOM
66fe083f
JH
12562Your fflush(NULL) isn't working (contrary to ANSI C).
12563EOM
ed39a0f2 12564 fflushNULL="$undef"
c2fddd50 12565 ;;
6626660c 12566 *) $cat >&4 <<EOM
66fe083f
JH
12567Cannot figure out whether your fflush(NULL) works or not.
12568I'm assuming it doesn't (contrary to ANSI C).
12569EOM
ed39a0f2 12570 fflushNULL="$undef"
c2fddd50
JH
12571 ;;
12572 esac
66fe083f
JH
12573 ;;
12574$define|true|[yY]*)
ed39a0f2 12575 fflushNULL="$define"
66fe083f
JH
12576 ;;
12577*)
ed39a0f2 12578 fflushNULL="$undef"
66fe083f
JH
12579 ;;
12580esac
a32a45b6
JH
12581: check explicit looping only if NULL did not work
12582case "$fflushNULL" in
12583"$undef")
12584 : check for fflush all behaviour
12585 case "$fflushall" in
12586 '') set try -DTRY_FFLUSH_ALL $output
a32a45b6 12587 if eval $compile; then
4b257aef 12588 $cat >&4 <<EOM
a32a45b6 12589(Now testing the other method--but note that also this may fail.)
a71cd7cd 12590EOM
4b257aef 12591 $rm -f try.out
a32a45b6
JH
12592 ./try$exe_ext 2>/dev/null
12593 if $test -s try.out -a "X$?" = X42; then
12594 fflushall="`$cat try.out`"
12595 fi
767df6a1 12596 fi
a32a45b6
JH
12597 $rm -f core try.core core.try.*
12598 case "$fflushall" in
12599 x) $cat >&4 <<EOM
12600Whew. Flushing explicitly all the stdio streams works.
767df6a1 12601EOM
a32a45b6
JH
12602 fflushall="$define"
12603 ;;
12604 '') $cat >&4 <<EOM
12605Sigh. Flushing explicitly all the stdio streams doesn't work.
767df6a1 12606EOM
a32a45b6
JH
12607 fflushall="$undef"
12608 ;;
12609 *) $cat >&4 <<EOM
6626660c 12610Cannot figure out whether flushing stdio streams explicitly works or not.
767df6a1
JH
12611I'm assuming it doesn't.
12612EOM
a32a45b6
JH
12613 fflushall="$undef"
12614 ;;
12615 esac
767df6a1 12616 ;;
a32a45b6
JH
12617 "$define"|true|[yY]*)
12618 fflushall="$define"
12619 ;;
12620 *)
12621 fflushall="$undef"
6626660c
JH
12622 ;;
12623 esac
767df6a1 12624 ;;
a32a45b6 12625*) fflushall="$undef"
767df6a1
JH
12626 ;;
12627esac
12628case "$fflushNULL$fflushall" in
12629undefundef)
6626660c 12630 $cat <<EOM
767df6a1
JH
12631I cannot figure out how to flush pending stdio output.
12632EOM
12633 ;;
12634esac
12635$rm -f try.* try$exe_ext
66fe083f 12636
ccc7f9b3
KS
12637: Store the full pathname to the ar program for use in the C program
12638: Respect a hint or command line value for full_ar.
12639case "$full_ar" in
12640'') full_ar=$ar ;;
12641esac
12642
1aef975c
AD
12643: Store the full pathname to the sed program for use in the C program
12644full_sed=$sed
12645
2304df62 12646: see what type gids are declared as in the kernel
dc45a647
MB
12647echo " "
12648echo "Looking for the type for group ids returned by getgid()."
a0d0e21e
LW
12649set gid_t gidtype xxx stdio.h sys/types.h
12650eval $typedef
2304df62 12651case "$gidtype" in
a0d0e21e
LW
12652xxx)
12653 xxx=`./findhdr sys/user.h`
12654 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12655 case $1 in
12656 unsigned) dflt="$1 $2" ;;
12657 *) dflt="$1" ;;
12658 esac
2304df62 12659 ;;
8175356b
JH
12660*) dflt="$gidtype";;
12661esac
12662case "$gidtype" in
12663gid_t) echo "gid_t found." ;;
12664*) rp="What is the type for group ids returned by getgid()?"
12665 . ./myread
12666 gidtype="$ans"
12667 ;;
12668esac
12669
12670echo " "
12671case "$gidtype" in
12672*_t) zzz="$gidtype" ;;
12673*) zzz="gid" ;;
12674esac
a22e52b9 12675echo "Checking the size of $zzz..." >&4
8175356b
JH
12676cat > try.c <<EOCP
12677#include <sys/types.h>
12678#include <stdio.h>
12679int main() {
213c275f 12680 printf("%d\n", (int)sizeof($gidtype));
14e4fe40 12681 exit(0);
8175356b
JH
12682}
12683EOCP
12684set try
a22e52b9 12685if eval $compile_ok; then
8175356b
JH
12686 yyy=`./try`
12687 case "$yyy" in
a22e52b9
JH
12688 '') gidsize=4
12689 echo "(I can't execute the test program--guessing $gidsize.)" >&4
8175356b 12690 ;;
a22e52b9 12691 *) gidsize=$yyy
49c10eea 12692 echo "Your $zzz is $gidsize bytes long."
8175356b
JH
12693 ;;
12694 esac
12695else
a22e52b9
JH
12696 gidsize=4
12697 echo "(I can't compile the test program--guessing $gidsize.)" >&4
8175356b
JH
12698fi
12699
12700
12701echo " "
12702case "$gidtype" in
12703*_t) zzz="$gidtype" ;;
12704*) zzz="gid" ;;
12705esac
a22e52b9 12706echo "Checking the sign of $zzz..." >&4
8175356b
JH
12707cat > try.c <<EOCP
12708#include <sys/types.h>
12709#include <stdio.h>
12710int main() {
a22e52b9
JH
12711 $gidtype foo = -1;
12712 if (foo < 0)
12713 printf("-1\n");
12714 else
12715 printf("1\n");
8175356b
JH
12716}
12717EOCP
12718set try
a22e52b9 12719if eval $compile; then
8175356b
JH
12720 yyy=`./try`
12721 case "$yyy" in
a22e52b9
JH
12722 '') gidsign=1
12723 echo "(I can't execute the test program--guessing unsigned.)" >&4
8175356b 12724 ;;
a22e52b9
JH
12725 *) gidsign=$yyy
12726 case "$gidsign" in
12727 1) echo "Your $zzz is unsigned." ;;
12728 -1) echo "Your $zzz is signed." ;;
12729 esac
8175356b
JH
12730 ;;
12731 esac
12732else
a22e52b9
JH
12733 gidsign=1
12734 echo "(I can't compile the test program--guessing unsigned.)" >&4
8175356b
JH
12735fi
12736
12737
785fb66b 12738echo " "
8175356b
JH
12739
12740if $test X"$quadtype" != X; then
12741
12742echo "Checking how to print 64-bit integers..." >&4
12743
12744if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12745 $cat >try.c <<'EOCP'
785fb66b
JH
12746#include <sys/types.h>
12747#include <stdio.h>
12748int main() {
8175356b
JH
12749 int q = 12345678901;
12750 printf("%ld\n", q);
785fb66b
JH
12751}
12752EOCP
8175356b
JH
12753 set try
12754 if eval $compile; then
12755 yyy=`./try$exe_ext`
12756 case "$yyy" in
12757 12345678901)
12758 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12759 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12760 echo "We will use %d."
12761 ;;
785fb66b 12762 esac
8175356b 12763 fi
785fb66b
JH
12764fi
12765
8175356b
JH
12766if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12767 $cat >try.c <<'EOCP'
12768#include <sys/types.h>
12769#include <stdio.h>
12770int main() {
12771 long q = 12345678901;
12772 printf("%ld\n", q);
12773}
12774EOCP
12775 set try
12776 if eval $compile; then
12777 yyy=`./try$exe_ext`
12778 case "$yyy" in
12779 12345678901)
12780 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12781 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12782 echo "We will use %ld."
12783 ;;
12784 esac
12785 fi
12786fi
785fb66b 12787
8afc5b8d 12788if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
8175356b 12789 $cat >try.c <<'EOCP'
785fb66b 12790#include <sys/types.h>
8175356b 12791#include <inttypes.h>
785fb66b
JH
12792#include <stdio.h>
12793int main() {
8175356b
JH
12794 int64_t q = 12345678901;
12795 printf("%" PRId64 "\n", q);
785fb66b
JH
12796}
12797EOCP
8175356b
JH
12798 set try
12799 if eval $compile; then
12800 yyy=`./try$exe_ext`
12801 case "$yyy" in
12802 12345678901)
12803 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12804 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12805 echo "We will use the C9X style."
12806 ;;
12807 esac
12808 fi
12809fi
12810
12811if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12812 $cat >try.c <<'EOCP'
12813#include <sys/types.h>
12814#include <stdio.h>
12815int main() {
12816 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12817 printf("%lld\n", q);
12818}
12819EOCP
12820 set try
12821 if eval $compile; then
12822 yyy=`./try$exe_ext`
12823 case "$yyy" in
12824 12345678901)
12825 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12826 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12827 echo "We will use the %lld style."
12828 ;;
12829 esac
12830 fi
785fb66b
JH
12831fi
12832
8175356b
JH
12833if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12834 $cat >try.c <<EOCP
12835#include <sys/types.h>
12836#include <stdio.h>
12837int main() {
12838 $quadtype q = 12345678901;
12839 printf("%Ld\n", q);
12840}
12841EOCP
12842 set try
12843 if eval $compile; then
12844 yyy=`./try$exe_ext`
12845 case "$yyy" in
12846 12345678901)
12847 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12848 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12849 echo "We will use %Ld."
12850 ;;
12851 esac
12852 fi
12853fi
785fb66b 12854
8175356b
JH
12855if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12856 $cat >try.c <<EOCP
12857#include <sys/types.h>
12858#include <stdio.h>
12859int main() {
12860 $quadtype q = 12345678901;
12861 printf("%qd\n", q);
12862}
12863EOCP
12864 set try
12865 if eval $compile; then
12866 yyy=`./try$exe_ext`
12867 case "$yyy" in
12868 12345678901)
12869 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12870 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12871 echo "We will use %qd."
12872 ;;
12873 esac
12874 fi
12875fi
2304df62 12876
8175356b
JH
12877if $test X"$sPRId64" = X; then
12878 echo "Cannot figure out how to print 64-bit integers." >&4
12879fi
5cd24f17 12880
8175356b 12881$rm -f try try.*
dfe9444c 12882
8175356b 12883fi
2304df62 12884
8175356b
JH
12885case "$sPRId64" in
12886'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12887 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12888 ;;
12889*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12890 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
a0d0e21e 12891 ;;
2304df62 12892esac
2304df62 12893
2304df62 12894
8ff267be 12895echo " "
8175356b
JH
12896$echo "Checking the format strings to be used for Perl's internal types..." >&4
12897
12898if $test X"$ivsize" = X8; then
12899 ivdformat="$sPRId64"
12900 uvuformat="$sPRIu64"
12901 uvoformat="$sPRIo64"
12902 uvxformat="$sPRIx64"
5ff3f7a4 12903else
8175356b
JH
12904 if $test X"$ivsize" = X"$longsize"; then
12905 ivdformat='"ld"'
12906 uvuformat='"lu"'
12907 uvoformat='"lo"'
12908 uvxformat='"lx"'
12909 else
12910 if $test X"$ivsize" = X"$intsize"; then
12911 ivdformat='"d"'
12912 uvuformat='"u"'
12913 uvoformat='"o"'
12914 uvxformat='"x"'
12915 else
12916 : far out
12917 if $test X"$ivsize" = X"$shortsize"; then
12918 ivdformat='"hd"'
12919 uvuformat='"hu"'
12920 uvoformat='"ho"'
12921 uvxformat='"hx"'
12922 fi
12923 fi
12924 fi
5ff3f7a4 12925fi
8175356b
JH
12926
12927case "$ivdformat" in
12928'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12929 exit 1
12930 ;;
12931esac
5ff3f7a4 12932
a22e52b9
JH
12933
12934echo " "
12935$echo "Checking the format string to be used for gids..." >&4
12936
12937case "$gidsign" in
12938-1) if $test X"$gidsize" = X"$ivsize"; then
12939 gidformat="$ivdformat"
12940 else
12941 if $test X"$gidsize" = X"$longsize"; then
12942 gidformat='"ld"'
12943 else
12944 if $test X"$gidsize" = X"$intsize"; then
12945 gidformat='"d"'
12946 else
12947 if $test X"$gidsize" = X"$shortsize"; then
12948 gidformat='"hd"'
12949 fi
12950 fi
12951 fi
12952 fi
12953 ;;
12954*) if $test X"$gidsize" = X"$uvsize"; then
12955 gidformat="$uvuformat"
12956 else
12957 if $test X"$gidsize" = X"$longsize"; then
12958 gidformat='"lu"'
12959 else
12960 if $test X"$gidsize" = X"$intsize"; then
12961 gidformat='"u"'
12962 else
12963 if $test X"$gidsize" = X"$shortsize"; then
12964 gidformat='"hu"'
12965 fi
12966 fi
12967 fi
12968 fi
12969 ;;
12970esac
12971
12972: see if getgroups exists
12973set getgroups d_getgrps
12974eval $inlibc
12975
12976: see if setgroups exists
12977set setgroups d_setgrps
12978eval $inlibc
12979
12980
12981: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12982echo " "
12983case "$d_getgrps$d_setgrps" in
12984*define*)
12985 case "$groupstype" in
12986 '') dflt="$gidtype" ;;
12987 *) dflt="$groupstype" ;;
12988 esac
12989 $cat <<EOM
12990What type of pointer is the second argument to getgroups() and setgroups()?
12991Usually this is the same as group ids, $gidtype, but not always.
12992
12993EOM
12994 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12995 . ./myread
12996 groupstype="$ans"
12997 ;;
12998*) groupstype="$gidtype";;
12999esac
13000
5ff3f7a4 13001echo " "
dfe9444c 13002echo "Checking if your $make program sets \$(MAKE)..." >&4
8ff267be 13003case "$make_set_make" in
13004'')
13005 $sed 's/^X //' > testmake.mak << 'EOF'
13006Xall:
dfe9444c 13007X @echo 'maketemp="$(MAKE)"'
8ff267be 13008EOF
8ff267be 13009 case "`$make -f testmake.mak 2>/dev/null`" in
dfe9444c 13010 *maketemp=*) make_set_make='#' ;;
8ff267be 13011 *) make_set_make="MAKE=$make" ;;
13012 esac
dfe9444c
AD
13013 $rm -f testmake.mak
13014 ;;
13015esac
13016case "$make_set_make" in
13017'#') echo "Yup, it does.";;
13018*) echo "Nope, it doesn't.";;
13019esac
13020
13021: see what type is used for mode_t
dc45a647 13022rp="What is the type used for file modes for system calls (e.g. fchmod())?"
dfe9444c 13023set mode_t modetype int stdio.h sys/types.h
dc45a647 13024eval $typedef_ask
dfe9444c 13025
dfe9444c
AD
13026: define a fucntion to check prototypes
13027$cat > protochk <<EOSH
13028$startsh
13029cc="$cc"
13030optimize="$optimize"
13031ccflags="$ccflags"
13032prototype="$prototype"
13033define="$define"
13034rm=$rm
13035EOSH
13036
13037$cat >> protochk <<'EOSH'
13038
13039$rm -f try.c
13040foo="$1"
13041shift
13042while test $# -ge 2; do
13043 case "$1" in
13044 $define) echo "#include <$2>" >> try.c ;;
13045 literal) echo "$2" >> try.c ;;
13046 esac
13047 shift 2
13048done
13049test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13050cat >> try.c <<'EOCP'
13051#ifdef CAN_PROTOTYPE
13052#define _(args) args
13053#else
13054#define _(args) ()
13055#endif
13056EOCP
13057echo "$foo" >> try.c
13058echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13059$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13060status=$?
13061$rm -f try.[co]
13062exit $status
13063EOSH
13064chmod +x protochk
13065$eunicefix protochk
13066
c890dc6c
JH
13067: see what type is used for size_t
13068rp="What is the type used for the length parameter for string functions?"
13069set size_t sizetype 'unsigned int' stdio.h sys/types.h
13070eval $typedef_ask
13071
dfe9444c
AD
13072: check for type of arguments to gethostbyaddr.
13073if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13074 case "$d_gethbyaddr" in
13075 $define)
13076 $cat <<EOM
13077
13078Checking to see what type of arguments are accepted by gethostbyaddr().
13079EOM
13080 hdrs="$define sys/types.h
13081 $d_socket sys/socket.h
13082 $i_niin netinet/in.h
13083 $i_netdb netdb.h
13084 $i_unistd unistd.h"
13085 : The first arg can 'char *' or 'void *'
13086 : The second arg is some of integral type
13087 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13088 for yyy in size_t long int; do
13089 case "$netdb_host_type" in
13090 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13091 if ./protochk "$try" $hdrs; then
13092 echo "Your system accepts $xxx for the first arg."
13093 echo "...and $yyy for the second arg."
13094 netdb_host_type="$xxx"
13095 netdb_hlen_type="$yyy"
13096 fi
13097 ;;
13098 esac
13099 done
13100 done
13101 : In case none of those worked, prompt the user.
13102 case "$netdb_host_type" in
13103 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13104 dflt='char *'
13105 . ./myread
13106 netdb_host_type=$ans
13107 rp='What is the type for the 2nd argument to gethostbyaddr?'
13108 dflt="$sizetype"
13109 . ./myread
13110 netdb_hlen_type=$ans
13111 ;;
13112 esac
13113 ;;
13114 *) : no gethostbyaddr, so pick harmless defaults
13115 netdb_host_type='char *'
13116 netdb_hlen_type="$sizetype"
13117 ;;
13118 esac
13119 # Remove the "const" if needed. -- but then we'll have a
13120 # prototype clash!
13121 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13122fi
13123
13124: check for type of argument to gethostbyname.
13125if test "X$netdb_name_type" = X ; then
13126 case "$d_gethbyname" in
13127 $define)
13128 $cat <<EOM
13129
13130Checking to see what type of argument is accepted by gethostbyname().
13131EOM
13132 hdrs="$define sys/types.h
13133 $d_socket sys/socket.h
13134 $i_niin netinet/in.h
13135 $i_netdb netdb.h
13136 $i_unistd unistd.h"
13137 for xxx in "const char *" "char *"; do
13138 case "$netdb_name_type" in
13139 '') try="extern struct hostent *gethostbyname($xxx);"
13140 if ./protochk "$try" $hdrs; then
13141 echo "Your system accepts $xxx."
13142 netdb_name_type="$xxx"
13143 fi
13144 ;;
13145 esac
13146 done
13147 : In case none of those worked, prompt the user.
13148 case "$netdb_name_type" in
13149 '') rp='What is the type for the 1st argument to gethostbyname?'
13150 dflt='char *'
13151 . ./myread
13152 netdb_name_type=$ans
13153 ;;
13154 esac
13155 ;;
13156 *) : no gethostbyname, so pick harmless default
13157 netdb_name_type='char *'
13158 ;;
13159 esac
13160fi
8ff267be 13161
dfe9444c
AD
13162: check for type of 1st argument to getnetbyaddr.
13163if test "X$netdb_net_type" = X ; then
13164 case "$d_getnbyaddr" in
13165 $define)
13166 $cat <<EOM
85e6fe83 13167
dfe9444c
AD
13168Checking to see what type of 1st argument is accepted by getnetbyaddr().
13169EOM
13170 hdrs="$define sys/types.h
13171 $d_socket sys/socket.h
13172 $i_niin netinet/in.h
13173 $i_netdb netdb.h
13174 $i_unistd unistd.h"
13175 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13176 case "$netdb_net_type" in
13177 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13178 if ./protochk "$try" $hdrs; then
13179 echo "Your system accepts $xxx."
13180 netdb_net_type="$xxx"
13181 fi
13182 ;;
13183 esac
13184 done
13185 : In case none of those worked, prompt the user.
13186 case "$netdb_net_type" in
13187 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13188 dflt='long'
13189 . ./myread
13190 netdb_net_type=$ans
13191 ;;
13192 esac
13193 ;;
13194 *) : no getnetbyaddr, so pick harmless default
e5c9fcd0 13195 netdb_net_type='long'
dfe9444c
AD
13196 ;;
13197 esac
13198fi
2c7991dc 13199: locate the preferred pager for this system
13200case "$pager" in
13201'')
13202 dflt=''
13203 case "$pg" in
13204 /*) dflt=$pg;;
13205 esac
13206 case "$more" in
13207 /*) dflt=$more;;
13208 esac
13209 case "$less" in
13210 /*) dflt=$less;;
13211 esac
13212 case "$dflt" in
13213 '') dflt=/usr/ucb/more;;
13214 esac
13215 ;;
13216*) dflt="$pager";;
13217esac
13218echo " "
13219fn=f/
13220rp='What pager is used on your system?'
13221. ./getfile
13222pager="$ans"
13223
dfe9444c 13224: see what type pids are declared as in the kernel
dc45a647 13225rp="What is the type of process ids on this system?"
dfe9444c 13226set pid_t pidtype int stdio.h sys/types.h
dc45a647 13227eval $typedef_ask
2304df62 13228
fe749a9f
JH
13229: Find earliest binary compatible site_perl subdirectory perl can use.
13230case "$bincompat5005" in
13231"$define") xs_apiversion='5.005' ;;
13232*) xs_apiversion=$version ;; # The current site_perl version.
13233esac
13234: Find earliest pure perl site_perl subdirectory perl can use.
13235: The versioned directories started at 5.005.
13236pm_apiversion='5.005'
13237
693762b4
AD
13238: check for length of pointer
13239echo " "
13240case "$ptrsize" in
13241'')
49c10eea 13242 echo "Checking to see how big your pointers are..." >&4
693762b4
AD
13243 if test "$voidflags" -gt 7; then
13244 echo '#define VOID_PTR char *' > try.c
13245 else
13246 echo '#define VOID_PTR void *' > try.c
13247 fi
13248 $cat >>try.c <<'EOCP'
13249#include <stdio.h>
d674cd6d 13250int main()
693762b4 13251{
213c275f 13252 printf("%d\n", (int)sizeof(VOID_PTR));
14e4fe40 13253 exit(0);
693762b4
AD
13254}
13255EOCP
13256 set try
dc45a647 13257 if eval $compile_ok; then
693762b4 13258 ptrsize=`./try`
49c10eea 13259 echo "Your pointers are $ptrsize bytes long."
693762b4
AD
13260 else
13261 dflt='4'
13262 echo "(I can't seem to compile the test program. Guessing...)" >&4
13263 rp="What is the size of a pointer (in bytes)?"
13264 . ./myread
13265 ptrsize="$ans"
13266 fi
13267 ;;
13268esac
13269$rm -f try.c try
13270
a0d0e21e
LW
13271: see if ar generates random libraries by itself
13272echo " "
13273echo "Checking how to generate random libraries on your machine..." >&4
13274echo 'int bar1() { return bar2(); }' > bar1.c
13275echo 'int bar2() { return 2; }' > bar2.c
13276$cat > foo.c <<'EOP'
d674cd6d 13277int main() { printf("%d\n", bar1()); exit(0); }
a0d0e21e
LW
13278EOP
13279$cc $ccflags -c bar1.c >/dev/null 2>&1
13280$cc $ccflags -c bar2.c >/dev/null 2>&1
13281$cc $ccflags -c foo.c >/dev/null 2>&1
dfe9444c
AD
13282$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13283if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 13284 ./foobar >/dev/null 2>&1; then
4e2a5f63 13285 echo "$ar appears to generate random libraries itself."
a0d0e21e
LW
13286 orderlib=false
13287 ranlib=":"
dfe9444c
AD
13288elif $ar ts bar$_a >/dev/null 2>&1 &&
13289 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 13290 ./foobar >/dev/null 2>&1; then
4e2a5f63 13291 echo "a table of contents needs to be added with '$ar ts'."
a0d0e21e 13292 orderlib=false
dfe9444c 13293 ranlib="$ar ts"
a0d0e21e 13294else
ecfc5424
AD
13295 case "$ranlib" in
13296 :) ranlib='';;
13297 '')
13298 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13299 $test -f $ranlib || ranlib=''
13300 ;;
13301 esac
a0d0e21e 13302 if $test -n "$ranlib"; then
ecfc5424 13303 echo "your system has '$ranlib'; we'll use that."
a0d0e21e
LW
13304 orderlib=false
13305 else
13306 echo "your system doesn't seem to support random libraries"
13307 echo "so we'll use lorder and tsort to order the libraries."
13308 orderlib=true
13309 ranlib=":"
13310 fi
13311fi
13312$rm -f foo* bar*
13313
dfe9444c
AD
13314: check for type of arguments to select.
13315case "$selecttype" in
13316'') case "$d_select" in
13317 $define)
cce08f5b 13318 echo " "
dfe9444c
AD
13319 $cat <<EOM
13320Checking to see what type of arguments are accepted by select().
13321EOM
13322 hdrs="$define sys/types.h
13323 $i_systime sys/time.h
13324 $i_sysselct sys/select.h
13325 $d_socket sys/socket.h"
13326 : The first arg can be int, unsigned, or size_t
13327 : The last arg may or may not be 'const'
13328 val=''
7f3d1cf1
BH
13329 : void pointer has been seen but using that
13330 : breaks the selectminbits test
13331 for xxx in 'fd_set *' 'int *'; do
1cfa4ec7 13332 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
dfe9444c
AD
13333 for tmo in 'struct timeval *' 'const struct timeval *'; do
13334 case "$val" in
13335 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13336 if ./protochk "$try" $hdrs; then
13337 echo "Your system accepts $xxx."
13338 val="$xxx"
13339 fi
13340 ;;
13341 esac
13342 done
13343 done
13344 done
13345 case "$val" in
13346 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13347 case "$d_fd_set" in
13348 $define) dflt="fd_set *" ;;
13349 *) dflt="int *" ;;
13350 esac
13351 . ./myread
13352 val=$ans
13353 ;;
a0d0e21e 13354 esac
dfe9444c 13355 selecttype="$val"
a0d0e21e 13356 ;;
dfe9444c
AD
13357 *) : no select, so pick a harmless default
13358 selecttype='int *'
a0d0e21e
LW
13359 ;;
13360 esac
a0d0e21e
LW
13361 ;;
13362esac
2304df62 13363
5ff3f7a4
GS
13364: check for the select 'width'
13365case "$selectminbits" in
13366'') case "$d_select" in
13367 $define)
13368 $cat <<EOM
13369
85ab1d1d 13370Checking to see on how many bits at a time your select() operates...
5ff3f7a4
GS
13371EOM
13372 $cat >try.c <<EOCP
13373#include <sys/types.h>
13374#$i_time I_TIME
13375#$i_systime I_SYS_TIME
13376#$i_systimek I_SYS_TIME_KERNEL
13377#ifdef I_TIME
13378# include <time.h>
13379#endif
13380#ifdef I_SYS_TIME
13381# ifdef I_SYS_TIME_KERNEL
13382# define KERNEL
13383# endif
13384# include <sys/time.h>
13385# ifdef I_SYS_TIME_KERNEL
13386# undef KERNEL
13387# endif
13388#endif
13389#$i_sysselct I_SYS_SELECT
13390#ifdef I_SYS_SELECT
13391#include <sys/select.h>
13392#endif
bd628c73
AD
13393#$d_socket HAS_SOCKET
13394#ifdef HAS_SOCKET
13395# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13396#endif
5ff3f7a4 13397#include <stdio.h>
fb164848
JH
13398$selecttype b;
13399#define S sizeof(*(b))
5ff3f7a4
GS
13400#define MINBITS 64
13401#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13402#define NBITS (NBYTES * 8)
13403int main() {
13404 char s[NBYTES];
5ff3f7a4
GS
13405 struct timeval t;
13406 int i;
13407 FILE* fp;
13408 int fd;
13409
13410 fclose(stdin);
13411 fp = fopen("try.c", "r");
13412 if (fp == 0)
13413 exit(1);
13414 fd = fileno(fp);
13415 if (fd < 0)
13416 exit(2);
13417 b = ($selecttype)s;
13418 for (i = 0; i < NBITS; i++)
13419 FD_SET(i, b);
13420 t.tv_sec = 0;
13421 t.tv_usec = 0;
13422 select(fd + 1, b, 0, 0, &t);
13423 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13424 printf("%d\n", i + 1);
13425 return 0;
13426}
13427EOCP
13428 set try
13429 if eval $compile_ok; then
13430 selectminbits=`./try`
85ab1d1d 13431 case "$selectminbits" in
fb164848
JH
13432 '') cat >&4 <<EOM
13433Cannot figure out on how many bits at a time your select() operates.
13434I'll play safe and guess it is 32 bits.
13435EOM
13436 selectminbits=32
13437 bits="32 bits"
13438 ;;
85ab1d1d
JH
13439 1) bits="1 bit" ;;
13440 *) bits="$selectminbits bits" ;;
13441 esac
13442 echo "Your select() operates on $bits at a time." >&4
5ff3f7a4
GS
13443 else
13444 rp='What is the minimum number of bits your select() operates on?'
13445 case "$byteorder" in
13446 1234|12345678) dflt=32 ;;
13447 *) dflt=1 ;;
13448 esac
13449 . ./myread
13450 val=$ans
13451 selectminbits="$val"
13452 fi
13453 $rm -f try.* try
13454 ;;
13455 *) : no select, so pick a harmless default
13456 selectminbits='32'
13457 ;;
13458 esac
13459 ;;
13460esac
13461
8e07c86e
AD
13462: Trace out the files included by signal.h, then look for SIGxxx names.
13463: Remove SIGARRAYSIZE used by HPUX.
af4c28eb
CS
13464: Remove SIGSTKSIZE used by Linux.
13465: Remove SIGSTKSZ used by Posix.
4633a7c4 13466: Remove SIGTYP void lines used by OS2.
6764938d 13467: Some cpps, like os390, dont give the file name anywhere
53d4e464 13468if [ "X$fieldn" = X ]; then
6764938d
GS
13469 : Just make some guesses. We check them later.
13470 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
53d4e464 13471else
6764938d 13472 xxx=`echo '#include <signal.h>' |
8e07c86e
AD
13473 $cppstdin $cppminus $cppflags 2>/dev/null |
13474 $grep '^[ ]*#.*include' |
13475 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
53d4e464 13476fi
8e07c86e
AD
13477: Check this list of files to be sure we have parsed the cpp output ok.
13478: This will also avoid potentially non-existent files, such
13479: as ../foo/bar.h
13480xxxfiles=''
13481for xx in $xxx /dev/null ; do
13482 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13483done
13484: If we have found no files, at least try signal.h
13485case "$xxxfiles" in
13486'') xxxfiles=`./findhdr signal.h` ;;
13487esac
13488xxx=`awk '
af4c28eb 13489$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
8e07c86e
AD
13490 print substr($2, 4, 20)
13491}
4633a7c4 13492$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8e07c86e
AD
13493 print substr($3, 4, 20)
13494}' $xxxfiles`
13495: Append some common names just in case the awk scan failed.
6764938d
GS
13496xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13497xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13498xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13499xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13500xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13501
8e07c86e 13502: generate a few handy files for later
dc45a647 13503$cat > signal.c <<'EOCP'
4633a7c4
LW
13504#include <sys/types.h>
13505#include <signal.h>
dc45a647 13506#include <stdio.h>
4633a7c4 13507int main() {
760ac839
LW
13508
13509/* Strange style to avoid deeply-nested #if/#else/#endif */
13510#ifndef NSIG
13511# ifdef _NSIG
13512# define NSIG (_NSIG)
13513# endif
13514#endif
13515
13516#ifndef NSIG
13517# ifdef SIGMAX
13518# define NSIG (SIGMAX+1)
13519# endif
13520#endif
13521
13522#ifndef NSIG
13523# ifdef SIG_MAX
13524# define NSIG (SIG_MAX+1)
13525# endif
13526#endif
13527
13528#ifndef NSIG
13529# ifdef MAXSIG
13530# define NSIG (MAXSIG+1)
13531# endif
4633a7c4 13532#endif
760ac839
LW
13533
13534#ifndef NSIG
13535# ifdef MAX_SIG
13536# define NSIG (MAX_SIG+1)
13537# endif
13538#endif
13539
13540#ifndef NSIG
13541# ifdef SIGARRAYSIZE
13542# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13543# endif
13544#endif
13545
13546#ifndef NSIG
13547# ifdef _sys_nsig
13548# define NSIG (_sys_nsig) /* Solaris 2.5 */
13549# endif
13550#endif
13551
13552/* Default to some arbitrary number that's big enough to get most
13553 of the common signals.
13554*/
13555#ifndef NSIG
13556# define NSIG 50
4633a7c4 13557#endif
760ac839
LW
13558
13559printf("NSIG %d\n", NSIG);
13560
dc45a647
MB
13561#ifndef JUST_NSIG
13562
13563EOCP
13564
28e8609d 13565echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
8e07c86e
AD
13566{
13567 printf "#ifdef SIG"; printf $1; printf "\n"
13568 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13569 printf $1; printf ");\n"
13570 printf "#endif\n"
2304df62 13571}
2304df62 13572END {
dc45a647 13573 printf "#endif /* JUST_NSIG */\n";
14e4fe40 13574 printf "exit(0);\n}\n";
2304df62 13575}
4633a7c4
LW
13576' >>signal.c
13577$cat >signal.awk <<'EOP'
13578BEGIN { ndups = 0 }
13579$1 ~ /^NSIG$/ { nsig = $2 }
13580($1 !~ /^NSIG$/) && (NF == 2) {
13581 if ($2 > maxsig) { maxsig = $2 }
13582 if (sig_name[$2]) {
13583 dup_name[ndups] = $1
13584 dup_num[ndups] = $2
13585 ndups++
13586 }
13587 else {
13588 sig_name[$2] = $1
13589 sig_num[$2] = $2
13590 }
4633a7c4
LW
13591}
13592END {
af4c28eb
CS
13593 if (nsig == 0) {
13594 nsig = maxsig + 1
13595 }
13596 printf("NSIG %d\n", nsig);
13597 for (n = 1; n < nsig; n++) {
13598 if (sig_name[n]) {
13599 printf("%s %d\n", sig_name[n], sig_num[n])
4633a7c4 13600 }
af4c28eb
CS
13601 else {
13602 printf("NUM%d %d\n", n, n)
13603 }
13604 }
4633a7c4 13605 for (n = 0; n < ndups; n++) {
af4c28eb 13606 printf("%s %d\n", dup_name[n], dup_num[n])
4633a7c4
LW
13607 }
13608}
13609EOP
13610$cat >signal_cmd <<EOS
8e07c86e 13611$startsh
dc45a647
MB
13612if $test -s signal.lst; then
13613 echo "Using your existing signal.lst file"
13614 exit 0
13615fi
13616xxx="$xxx"
13617EOS
13618$cat >>signal_cmd <<'EOS'
13619
13620set signal
13621if eval $compile_ok; then
dfe9444c 13622 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8e07c86e 13623else
dc45a647
MB
13624 echo "(I can't seem be able to compile the whole test program)" >&4
13625 echo "(I'll try it in little pieces.)" >&4
13626 set signal -DJUST_NSIG
13627 if eval $compile_ok; then
13628 ./signal$_exe > signal.nsg
13629 $cat signal.nsg
13630 else
13631 echo "I can't seem to figure out how many signals you have." >&4
13632 echo "Guessing 50." >&4
13633 echo 'NSIG 50' > signal.nsg
13634 fi
13635 : Now look at all the signal names, one at a time.
28e8609d 13636 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
dc45a647
MB
13637 $cat > signal.c <<EOCP
13638#include <sys/types.h>
13639#include <signal.h>
13640#include <stdio.h>
13641int main() {
13642printf("$xx %d\n", SIG${xx});
13643return 0;
13644}
13645EOCP
13646 set signal
13647 if eval $compile; then
13648 echo "SIG${xx} found."
13649 ./signal$_exe >> signal.ls1
13650 else
13651 echo "SIG${xx} NOT found."
13652 fi
13653 done
13654 if $test -s signal.ls1; then
13655 $cat signal.nsg signal.ls1 |
13656 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13657 fi
13658
13659fi
13660if $test -s signal.lst; then
13661 :
13662else
13663 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
8e07c86e 13664 echo 'kill -l' >signal
dc45a647 13665 set X `csh -f <signal`
8e07c86e 13666 $rm -f signal
2304df62 13667 shift
dc45a647 13668 case $# in
8e07c86e 13669 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
2304df62 13670 esac
28e8609d 13671 echo $@ | $tr ' ' $trnl | \
af4c28eb
CS
13672 $awk '{ printf "%s %d\n", $1, ++s; }
13673 END { printf "NSIG %d\n", ++s }' >signal.lst
8e07c86e 13674fi
dc45a647 13675$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
8e07c86e 13676EOS
4633a7c4
LW
13677chmod a+x signal_cmd
13678$eunicefix signal_cmd
8e07c86e
AD
13679
13680: generate list of signal names
13681echo " "
dfe9444c 13682case "$sig_name_init" in
6626bf4c
JH
13683'') doinit=yes ;;
13684*) case "$sig_num_init" in
13685 ''|*,*) doinit=yes ;;
13686 esac ;;
13687esac
13688case "$doinit" in
13689yes)
4633a7c4 13690 echo "Generating a list of signal names and numbers..." >&4
dc45a647 13691 . ./signal_cmd
af4c28eb
CS
13692 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13693 sig_name=`$awk 'BEGIN { printf "ZERO " }
13694 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13695 sig_num=`$awk 'BEGIN { printf "0 " }
13696 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13697 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13698 !/^NSIG/ { printf "\"%s\", ", $1 }
13699 END { printf "0\n" }' signal.lst`
13700 sig_num_init=`$awk 'BEGIN { printf "0, " }
13701 !/^NSIG/ { printf "%d, ", $2}
13702 END { printf "0\n"}' signal.lst`
13703 ;;
13704esac
13705echo "The following $sig_count signals are available:"
a0d0e21e
LW
13706echo " "
13707echo $sig_name | $awk \
13708'BEGIN { linelen = 0 }
13709{
8e07c86e 13710 for (i = 1; i <= NF; i++) {
a0d0e21e
LW
13711 name = "SIG" $i " "
13712 linelen = linelen + length(name)
13713 if (linelen > 70) {
13714 printf "\n"
13715 linelen = length(name)
13716 }
13717 printf "%s", name
13718 }
8e07c86e 13719 printf "\n"
a0d0e21e 13720}'
4633a7c4 13721$rm -f signal signal.c signal.awk signal.lst signal_cmd
a0d0e21e 13722
c890dc6c
JH
13723: check for socklen_t
13724echo " "
13725echo "Checking to see if you have socklen_t..." >&4
13726$cat >try.c <<EOCP
13727#include <sys/types.h>
13728#$d_socket HAS_SOCKET
13729#ifdef HAS_SOCKET
13730#include <sys/socket.h>
13731#endif
13732int main() { socklen_t x = 16; }
13733EOCP
13734set try
13735if eval $compile; then
13736 val="$define"
13737 echo "You have socklen_t."
13738else
13739 val="$undef"
13740 echo "You do not have socklen_t."
13741 case "$sizetype" in
13742 size_t) echo "(You do have size_t, that might work.)" ;;
13743 esac
13744fi
13745$rm -f try try.*
13746set d_socklen_t
13747eval $setvar
13748
13749: check for type of the size argument to socket calls
13750case "$d_socket" in
13751"$define")
13752 $cat <<EOM
13753
13754Checking to see what type is the last argument of accept().
13755EOM
13756 hdrs="$define sys/types.h $d_socket sys/socket.h"
13757 yyy=''
13758 case "$d_socklen_t" in
13759 "$define") yyy="$yyy socklen_t"
13760 esac
13761 yyy="$yyy $sizetype int long"
13762 for xxx in $yyy; do
13763 case "$socksizetype" in
13764 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
13765 if ./protochk "$try" $hdrs; then
13766 echo "Your system accepts '$xxx *' for the last argument of accept()."
10cc9d2a 13767 socksizetype="$xxx"
c890dc6c
JH
13768 fi
13769 ;;
13770 esac
13771 done
13772: In case none of those worked, prompt the user.
13773 case "$socksizetype" in
4f309e22 13774 '') rp='What is the type for socket address structure sizes?'
10cc9d2a 13775 dflt='int'
c890dc6c
JH
13776 . ./myread
13777 socksizetype=$ans
13778 ;;
13779 esac
13780 ;;
10cc9d2a 13781*) : no sockets, so pick relatively harmless defaults
c890dc6c
JH
13782 socksizetype='char *'
13783 ;;
13784esac
13785
a0d0e21e
LW
13786: see what type is used for signed size_t
13787set ssize_t ssizetype int stdio.h sys/types.h
13788eval $typedef
13789dflt="$ssizetype"
13790$cat > ssize.c <<EOM
13791#include <stdio.h>
13792#include <sys/types.h>
13793#define Size_t $sizetype
13794#define SSize_t $dflt
d674cd6d 13795int main()
a0d0e21e
LW
13796{
13797 if (sizeof(Size_t) == sizeof(SSize_t))
13798 printf("$dflt\n");
13799 else if (sizeof(Size_t) == sizeof(int))
13800 printf("int\n");
13801 else
13802 printf("long\n");
760ac839 13803 exit(0);
a0d0e21e
LW
13804}
13805EOM
13806echo " "
dfe9444c 13807set ssize
dc45a647 13808if eval $compile_ok && ./ssize > /dev/null; then
dfe9444c 13809 ssizetype=`./ssize`
a0d0e21e
LW
13810 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13811else
24fef2a7 13812 $cat >&4 <<EOM
24fef2a7
AD
13813Help! I can't compile and run the ssize_t test program: please enlighten me!
13814(This is probably a misconfiguration in your system or libraries, and
13815you really ought to fix it. Still, I'll try anyway.)
a0d0e21e
LW
13816
13817I need a type that is the same size as $sizetype, but is guaranteed to
24fef2a7 13818be signed. Common values are ssize_t, int and long.
a0d0e21e
LW
13819
13820EOM
13821 rp="What signed type is the same size as $sizetype?"
13822 . ./myread
13823 ssizetype="$ans"
13824fi
dfe9444c 13825$rm -f ssize ssize.*
3fd537d4 13826
a0d0e21e
LW
13827: see what type of char stdio uses.
13828echo " "
13829if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13830 echo "Your stdio uses unsigned chars." >&4
13831 stdchar="unsigned char"
13832else
13833 echo "Your stdio uses signed chars." >&4
13834 stdchar="char"
13835fi
13836
13837: see if time exists
13838echo " "
28e8609d
JH
13839if test "X$d_time" = X -o X"$timetype" = X; then
13840 if set time val -f d_time; eval $csym; $val; then
5ff3f7a4
GS
13841 echo 'time() found.' >&4
13842 val="$define"
13843 rp="What is the type returned by time() on this system?"
13844 set time_t timetype long stdio.h sys/types.h
13845 eval $typedef_ask
28e8609d 13846 else
5ff3f7a4
GS
13847 echo 'time() not found, hope that will do.' >&4
13848 val="$undef"
13849 timetype='int';
28e8609d
JH
13850 fi
13851 set d_time
13852 eval $setvar
a0d0e21e 13853fi
a0d0e21e
LW
13854
13855: see what type uids are declared as in the kernel
dc45a647
MB
13856echo " "
13857echo "Looking for the type for user ids returned by getuid()."
a0d0e21e
LW
13858set uid_t uidtype xxx stdio.h sys/types.h
13859eval $typedef
13860case "$uidtype" in
13861xxx)
13862 xxx=`./findhdr sys/user.h`
13863 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13864 case $1 in
13865 unsigned) dflt="$1 $2" ;;
13866 *) dflt="$1" ;;
13867 esac
13868 ;;
4633a7c4
LW
13869*) dflt="$uidtype";;
13870esac
dc45a647
MB
13871case "$uidtype" in
13872uid_t) echo "uid_t found." ;;
13873*) rp="What is the type for user ids returned by getuid()?"
13874 . ./myread
13875 uidtype="$ans"
13876 ;;
13877esac
4633a7c4 13878
57def98f
JH
13879echo " "
13880case "$uidtype" in
13881*_t) zzz="$uidtype" ;;
13882*) zzz="uid" ;;
13883esac
a22e52b9 13884echo "Checking the size of $zzz..." >&4
57def98f
JH
13885cat > try.c <<EOCP
13886#include <sys/types.h>
13887#include <stdio.h>
13888int main() {
213c275f 13889 printf("%d\n", (int)sizeof($uidtype));
14e4fe40 13890 exit(0);
57def98f
JH
13891}
13892EOCP
d4265146 13893set try
a22e52b9 13894if eval $compile_ok; then
57def98f
JH
13895 yyy=`./try`
13896 case "$yyy" in
a22e52b9
JH
13897 '') uidsize=4
13898 echo "(I can't execute the test program--guessing $uidsize.)" >&4
57def98f 13899 ;;
a22e52b9 13900 *) uidsize=$yyy
49c10eea 13901 echo "Your $zzz is $uidsize bytes long."
57def98f
JH
13902 ;;
13903 esac
13904else
a22e52b9
JH
13905 uidsize=4
13906 echo "(I can't compile the test program--guessing $uidsize.)" >&4
57def98f
JH
13907fi
13908
785fb66b
JH
13909echo " "
13910case "$uidtype" in
13911*_t) zzz="$uidtype" ;;
13912*) zzz="uid" ;;
13913esac
a22e52b9 13914echo "Checking the sign of $zzz..." >&4
785fb66b
JH
13915cat > try.c <<EOCP
13916#include <sys/types.h>
13917#include <stdio.h>
13918int main() {
a22e52b9
JH
13919 $uidtype foo = -1;
13920 if (foo < 0)
13921 printf("-1\n");
13922 else
13923 printf("1\n");
785fb66b
JH
13924}
13925EOCP
13926set try
a22e52b9 13927if eval $compile; then
785fb66b
JH
13928 yyy=`./try`
13929 case "$yyy" in
a22e52b9
JH
13930 '') uidsign=1
13931 echo "(I can't execute the test program--guessing unsigned.)" >&4
785fb66b 13932 ;;
a22e52b9
JH
13933 *) uidsign=$yyy
13934 case "$uidsign" in
13935 1) echo "Your $zzz is unsigned." ;;
13936 -1) echo "Your $zzz is signed." ;;
13937 esac
785fb66b
JH
13938 ;;
13939 esac
13940else
a22e52b9
JH
13941 uidsign=1
13942 echo "(I can't compile the test program--guessing unsigned.)" >&4
785fb66b
JH
13943fi
13944
a22e52b9
JH
13945
13946
13947echo " "
13948$echo "Checking the format string to be used for uids..." >&4
13949
13950case "$uidsign" in
13951-1) if $test X"$uidsize" = X"$ivsize"; then
13952 uidformat="$ivdformat"
13953 else
13954 if $test X"$uidsize" = X"$longsize"; then
13955 uidformat='"ld"'
13956 else
13957 if $test X"$uidsize" = X"$intsize"; then
13958 uidformat='"d"'
13959 else
13960 if $test X"$uidsize" = X"$shortsize"; then
13961 uidformat='"hd"'
13962 fi
13963 fi
13964 fi
13965 fi
13966 ;;
13967*) if $test X"$uidsize" = X"$uvsize"; then
13968 uidformat="$uvuformat"
13969 else
13970 if $test X"$uidsize" = X"$longsize"; then
13971 uidformat='"lu"'
13972 else
13973 if $test X"$uidsize" = X"$intsize"; then
13974 uidformat='"u"'
13975 else
13976 if $test X"$uidsize" = X"$shortsize"; then
13977 uidformat='"hu"'
13978 fi
13979 fi
13980 fi
13981 fi
13982 ;;
13983esac
13984
4633a7c4
LW
13985: see if dbm.h is available
13986: see if dbmclose exists
13987set dbmclose d_dbmclose
13988eval $inlibc
13989
13990case "$d_dbmclose" in
13991$define)
13992 set dbm.h i_dbm
13993 eval $inhdr
5f80c64f
JH
13994 case "$i_dbm" in
13995 $define)
13996 val="$undef"
13997 set i_rpcsvcdbm
13998 eval $setvar
13999 ;;
14000 *) set rpcsvc/dbm.h i_rpcsvcdbm
14001 eval $inhdr
14002 ;;
14003 esac
14004 ;;
14005*) echo "We won't be including <dbm.h>"
14006 val="$undef"
14007 set i_dbm
14008 eval $setvar
14009 val="$undef"
14010 set i_rpcsvcdbm
14011 eval $setvar
14012 ;;
14013esac
14014
14015: see if this is a sys/file.h system
14016val=''
14017set sys/file.h val
14018eval $inhdr
14019
14020: do we need to include sys/file.h ?
14021case "$val" in
14022"$define")
14023 echo " "
14024 if $h_sysfile; then
14025 val="$define"
14026 echo "We'll be including <sys/file.h>." >&4
14027 else
14028 val="$undef"
14029 echo "We won't be including <sys/file.h>." >&4
14030 fi
14031 ;;
14032*)
14033 h_sysfile=false
14034 ;;
14035esac
14036set i_sysfile
14037eval $setvar
14038
14039: see if fcntl.h is there
14040val=''
14041set fcntl.h val
14042eval $inhdr
14043
14044: see if we can include fcntl.h
14045case "$val" in
14046"$define")
14047 echo " "
14048 if $h_fcntl; then
14049 val="$define"
14050 echo "We'll be including <fcntl.h>." >&4
14051 else
14052 val="$undef"
14053 if $h_sysfile; then
14054 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14055 else
14056 echo "We won't be including <fcntl.h>." >&4
14057 fi
14058 fi
14059 ;;
14060*)
14061 h_fcntl=false
14062 val="$undef"
14063 ;;
14064esac
14065set i_fcntl
14066eval $setvar
14067
43999f95
JH
14068: see if this is a iconv.h system
14069set iconv.h i_iconv
14070eval $inhdr
14071
792d8dab
JH
14072: see if this is a ieeefp.h system
14073set ieeefp.h i_ieeefp
14074eval $inhdr
14075
5f80c64f
JH
14076: see if locale.h is available
14077set locale.h i_locale
14078eval $inhdr
14079
7f3d1cf1 14080: see if mach cthreads are available
13666627
JH
14081if test "X$usethreads" = "X$define"; then
14082 set mach/cthreads.h i_machcthr
14083 eval $inhdr
14084else
14085 i_machcthr="$undef"
14086fi
14087
14088
7f3d1cf1 14089
5f80c64f
JH
14090: see if this is a math.h system
14091set math.h i_math
14092eval $inhdr
14093
e7fb4fcc
JH
14094: see if this is a mntent.h system
14095set mntent.h i_mntent
14096eval $inhdr
14097
5f80c64f
JH
14098: see if ndbm.h is available
14099set ndbm.h t_ndbm
14100eval $inhdr
14101case "$t_ndbm" in
14102$define)
14103 : see if dbm_open exists
14104 set dbm_open d_dbm_open
14105 eval $inlibc
14106 case "$d_dbm_open" in
14107 $undef)
14108 t_ndbm="$undef"
14109 echo "We won't be including <ndbm.h>"
14110 ;;
14111 esac
14112 ;;
14113esac
14114val="$t_ndbm"
14115set i_ndbm
14116eval $setvar
14117
14118: see if net/errno.h is available
14119val=''
14120set net/errno.h val
14121eval $inhdr
14122
14123: Unfortunately, it causes problems on some systems. Arrgh.
14124case "$val" in
14125$define)
14126 cat > try.c <<'EOM'
14127#include <stdio.h>
14128#include <errno.h>
14129#include <net/errno.h>
14130int func()
14131{
14132 return ENOTSOCK;
14133}
14134EOM
14135 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14136 echo "We'll be including <net/errno.h>." >&4
14137 else
14138 echo "We won't be including <net/errno.h>." >&4
14139 val="$undef"
14140 fi
14141 $rm -f try.* try
14142 ;;
14143esac
14144set i_neterrno
14145eval $setvar
14146
9cc6feab
JH
14147: see if netinet/tcp.h is available
14148set netinet/tcp.h i_netinettcp
14149eval $inhdr
14150
5b34fd99
JH
14151: see if this is a poll.h system
14152set poll.h i_poll
14153eval $inhdr
14154
5f80c64f 14155echo " "
78691af5 14156$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
43999f95
JH
14157$cat <<'EOSH' > Cppsym.know
14158a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14159AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14160alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14161ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14162BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14163BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14164bull c cadmus clipper CMU COFF COMPILER_VERSION
14165concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14166CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14167Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14168FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14169GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14170H3050R H3050RX hbullx20 hcx host_mips
14171hp200 hp300 hp700 HP700 hp800 hp9000
14172hp9000s200 hp9000s300 hp9000s400 hp9000s500
14173hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14174i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14175iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14176INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14177LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14178LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14179Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14180LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14181M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14182M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14183M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14184MATH_HAS_NO_SIDE_EFFECTS
14185mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14186mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14187mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14188MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14189mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14190NetBSD news1500 news1700 news1800 news1900 news3700
14191news700 news800 news900 NeXT NLS ns16000 ns32000
14192ns32016 ns32332 ns32k nsc32000
14193OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14194pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14195pc532 pdp11 PGC PIC plexus PORTAR posix
14196POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14197POSIX_C_SOURCE POSIX_SOURCE POWER
14198PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14199riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14200SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14201sony sony_news sonyrisc sparc sparclite spectrum
14202stardent stdc STDC_EXT stratos sun sun3 sun386
14203Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14204SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14205SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14206sysV68 sysV88 Tek4132 Tek4300 titan
14207tower tower32 tower32_200 tower32_600 tower32_700
14208tower32_800 tower32_850 tss
14209u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14210ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14211unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14212Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14213XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14214XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14215z8000
14216EOSH
14217# Maybe put other stuff here too.
14218cat <<EOSH >>Cppsym.know
14219$osname
14220EOSH
9b97abf7
JH
14221./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14222./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
43999f95
JH
14223$cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14224$rm -f Cppsym.a Cppsym.b
14225cat <<EOSH > Cppsym
5f80c64f 14226$startsh
43999f95
JH
14227if $test \$# -gt 0; then
14228 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14229 if $test -s Cppsym.got; then
14230 $rm -f Cppsym.got
14231 exit 0
14232 fi
14233 $rm -f Cppsym.got
14234 exit 1
14235else
14236 $tr " " "$trnl" | ./Cppsym.try
14237 exit 0
14238fi
14239EOSH
5f80c64f
JH
14240chmod +x Cppsym
14241$eunicefix Cppsym
43999f95
JH
14242cat <<EOSH > Cppsym.try
14243$startsh
14244cat <<'EOCP' > try.c
14245#include <stdio.h>
14246int main() {
14247EOCP
14248$awk \\
14249EOSH
14250cat <<'EOSH' >> Cppsym.try
14251'length($1) > 0 {
14252 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
14253 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
14254 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
14255 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
14256}' >> try.c
14257echo '}' >> try.c
14258EOSH
14259cat <<EOSH >> Cppsym.try
43999f95 14260ccflags="$ccflags"
a3489f11
JH
14261case "$osname-$gccversion" in
14262irix-) ccflags="\$ccflags -woff 1178" ;;
14263esac
14264$cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
43999f95
JH
14265EOSH
14266chmod +x Cppsym.try
14267$eunicefix Cppsym.try
14268./Cppsym < Cppsym.know > Cppsym.true
5f80c64f 14269: now check the C compiler for additional symbols
c4747d3e
JH
14270postprocess_cc_v=''
14271case "$osname" in
14272aix) postprocess_cc_v="|$tr , ' '" ;;
14273esac
5f80c64f
JH
14274$cat >ccsym <<EOS
14275$startsh
14276$cat >tmp.c <<EOF
14277extern int foo;
14278EOF
c4747d3e 14279for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
5f80c64f
JH
14280do
14281 case "\$i" in
14282 -D*) echo "\$i" | $sed 's/^-D//';;
14283 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14284 esac
14285done
14286$rm -f try.c
14287EOS
2000072c 14288postprocess_cc_v=''
5f80c64f
JH
14289chmod +x ccsym
14290$eunicefix ccsym
14291./ccsym > ccsym1.raw
14292if $test -s ccsym1.raw; then
14293 $sort ccsym1.raw | $uniq >ccsym.raw
14294else
14295 mv ccsym1.raw ccsym.raw
14296fi
14297
14298$awk '/\=/ { print $0; next }
14299 { print $0"=1" }' ccsym.raw >ccsym.list
43999f95
JH
14300$awk '/\=/ { print $0; next }
14301 { print $0"=1" }' Cppsym.true >ccsym.true
5f80c64f
JH
14302$comm -13 ccsym.true ccsym.list >ccsym.own
14303$comm -12 ccsym.true ccsym.list >ccsym.com
14304$comm -23 ccsym.true ccsym.list >ccsym.cpp
14305also=''
5f80c64f 14306if $test -z ccsym.raw; then
ff49bff8 14307 echo "Your C compiler doesn't seem to define any symbols!" >&4
5f80c64f 14308 echo " "
ff49bff8 14309 echo "However, your C preprocessor defines the following symbols:"
5f80c64f 14310 $cat Cppsym.true
ff49bff8
JH
14311 ccsymbols=''
14312 cppsymbols=`$cat Cppsym.true`
918c3d21 14313 cppsymbols=`echo $cppsymbols`
ff49bff8 14314 cppccsymbols="$cppsymbols"
5f80c64f
JH
14315else
14316 if $test -s ccsym.com; then
14317 echo "Your C compiler and pre-processor define these symbols:"
14318 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14319 also='also '
14320 symbols='ones'
ff49bff8 14321 cppccsymbols=`$cat ccsym.com`
918c3d21 14322 cppccsymbols=`echo $cppccsymbols`
5f80c64f
JH
14323 $test "$silent" || sleep 1
14324 fi
14325 if $test -s ccsym.cpp; then
14326 $test "$also" && echo " "
ff49bff8 14327 echo "Your C pre-processor ${also}defines the following symbols:"
5f80c64f
JH
14328 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14329 also='further '
ff49bff8 14330 cppsymbols=`$cat ccsym.cpp`
918c3d21 14331 cppsymbols=`echo $cppsymbols`
5f80c64f
JH
14332 $test "$silent" || sleep 1
14333 fi
14334 if $test -s ccsym.own; then
14335 $test "$also" && echo " "
ff49bff8 14336 echo "Your C compiler ${also}defines the following cpp symbols:"
5f80c64f
JH
14337 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14338 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
ff49bff8 14339 ccsymbols=`$cat ccsym.own`
918c3d21 14340 ccsymbols=`echo $ccsymbols`
5f80c64f
JH
14341 $test "$silent" || sleep 1
14342 fi
14343fi
14344$rm -f ccsym*
14345
14346: see if this is a termio system
14347val="$undef"
14348val2="$undef"
14349val3="$undef"
14350if $test `./findhdr termios.h`; then
14351 set tcsetattr i_termios
14352 eval $inlibc
14353 val3="$i_termios"
14354fi
14355echo " "
14356case "$val3" in
14357"$define") echo "You have POSIX termios.h... good!" >&4;;
14358*) if ./Cppsym pyr; then
14359 case "`/bin/universe`" in
14360 ucb) if $test `./findhdr sgtty.h`; then
14361 val2="$define"
14362 echo "<sgtty.h> found." >&4
14363 else
14364 echo "System is pyramid with BSD universe."
14365 echo "<sgtty.h> not found--you could have problems." >&4
14366 fi;;
14367 *) if $test `./findhdr termio.h`; then
14368 val="$define"
14369 echo "<termio.h> found." >&4
14370 else
14371 echo "System is pyramid with USG universe."
14372 echo "<termio.h> not found--you could have problems." >&4
14373 fi;;
14374 esac
14375 elif ./usg; then
14376 if $test `./findhdr termio.h`; then
14377 echo "<termio.h> found." >&4
14378 val="$define"
14379 elif $test `./findhdr sgtty.h`; then
14380 echo "<sgtty.h> found." >&4
14381 val2="$define"
14382 else
14383echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14384 fi
14385 else
14386 if $test `./findhdr sgtty.h`; then
14387 echo "<sgtty.h> found." >&4
14388 val2="$define"
14389 elif $test `./findhdr termio.h`; then
14390 echo "<termio.h> found." >&4
14391 val="$define"
14392 else
14393echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14394 fi
14395 fi;;
14396esac
14397set i_termio; eval $setvar
14398val=$val2; set i_sgtty; eval $setvar
14399val=$val3; set i_termios; eval $setvar
14400
f1066039
JH
14401: see if this is a shadow.h system
14402set shadow.h i_shadow
14403eval $inhdr
14404
86959918
JH
14405: see if this is a socks.h system
14406set socks.h i_socks
14407eval $inhdr
14408
5f80c64f
JH
14409: see if stdarg is available
14410echo " "
14411if $test `./findhdr stdarg.h`; then
14412 echo "<stdarg.h> found." >&4
14413 valstd="$define"
14414else
14415 echo "<stdarg.h> NOT found." >&4
14416 valstd="$undef"
14417fi
14418
14419: see if varags is available
14420echo " "
14421if $test `./findhdr varargs.h`; then
14422 echo "<varargs.h> found." >&4
14423else
14424 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14425fi
14426
14427: set up the varargs testing programs
14428$cat > varargs.c <<EOP
14429#ifdef I_STDARG
14430#include <stdarg.h>
14431#endif
14432#ifdef I_VARARGS
14433#include <varargs.h>
14434#endif
14435
14436#ifdef I_STDARG
14437int f(char *p, ...)
14438#else
14439int f(va_alist)
14440va_dcl
14441#endif
14442{
14443 va_list ap;
14444#ifndef I_STDARG
14445 char *p;
14446#endif
14447#ifdef I_STDARG
14448 va_start(ap,p);
14449#else
14450 va_start(ap);
14451 p = va_arg(ap, char *);
14452#endif
14453 va_end(ap);
14454}
14455EOP
14456$cat > varargs <<EOP
14457$startsh
14458if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14459 echo "true"
14460else
14461 echo "false"
14462fi
14463$rm -f varargs$_o
14464EOP
14465chmod +x varargs
14466
14467: now check which varargs header should be included
14468echo " "
14469i_varhdr=''
14470case "$valstd" in
14471"$define")
14472 if `./varargs I_STDARG`; then
14473 val='stdarg.h'
14474 elif `./varargs I_VARARGS`; then
14475 val='varargs.h'
14476 fi
14477 ;;
14478*)
14479 if `./varargs I_VARARGS`; then
14480 val='varargs.h'
14481 fi
14482 ;;
14483esac
14484case "$val" in
14485'')
14486echo "I could not find the definition for va_dcl... You have problems..." >&4
14487 val="$undef"; set i_stdarg; eval $setvar
14488 val="$undef"; set i_varargs; eval $setvar
14489 ;;
14490*)
14491 set i_varhdr
14492 eval $setvar
14493 case "$i_varhdr" in
14494 stdarg.h)
14495 val="$define"; set i_stdarg; eval $setvar
14496 val="$undef"; set i_varargs; eval $setvar
14497 ;;
14498 varargs.h)
14499 val="$undef"; set i_stdarg; eval $setvar
14500 val="$define"; set i_varargs; eval $setvar
14501 ;;
14502 esac
14503 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14504esac
14505$rm -f varargs*
14506
14507: see if stddef is available
14508set stddef.h i_stddef
14509eval $inhdr
14510
923fc586
JH
14511: see if this is a sunmath.h system
14512set sunmath.h i_sunmath
14513eval $inhdr
14514
5f80c64f
JH
14515: see if sys/access.h is available
14516set sys/access.h i_sysaccess
14517eval $inhdr
14518
14519: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14520set sys/filio.h i_sysfilio
14521eval $inhdr
14522echo " "
14523if $test `./findhdr sys/ioctl.h`; then
14524 val="$define"
14525 echo '<sys/ioctl.h> found.' >&4
14526else
14527 val="$undef"
14528 if $test $i_sysfilio = "$define"; then
14529 echo '<sys/ioctl.h> NOT found.' >&4
14530 else
14531 $test $i_sgtty = "$define" && xxx="sgtty.h"
14532 $test $i_termio = "$define" && xxx="termio.h"
14533 $test $i_termios = "$define" && xxx="termios.h"
14534echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14535 fi
14536fi
14537set i_sysioctl
14538eval $setvar
14539
ca52efda
JH
14540
14541: see if this is a syslog.h system
14542set syslog.h i_syslog
14543eval $inhdr
14544
bf0c440f
JH
14545
14546: see if this is a sys/mode.h system
14547set sys/mode.h i_sysmode
14548eval $inhdr
14549
5f80c64f
JH
14550: see if sys/resource.h has to be included
14551set sys/resource.h i_sysresrc
14552eval $inhdr
14553
14554: see if sys/security.h is available
14555set sys/security.h i_syssecrt
14556eval $inhdr
14557
104d25b7
JH
14558: see if this is a sys/statvfs.h system
14559set sys/statvfs.h i_sysstatvfs
14560eval $inhdr
14561
b7b35fc2
JH
14562: see if this is a sys/uio.h system
14563set sys/uio.h i_sysuio
14564eval $inhdr
14565
5f80c64f
JH
14566: see if this is a sys/un.h system
14567set sys/un.h i_sysun
14568eval $inhdr
14569
d4935d7f
JH
14570
14571: see if this is a sys/utsname.h system
14572set sys/utsname.h i_sysutsname
14573eval $inhdr
14574
5f80c64f
JH
14575: see if this is a syswait system
14576set sys/wait.h i_syswait
14577eval $inhdr
14578
0545a864
JH
14579: see if this is a ustat.h system
14580set ustat.h i_ustat
14581eval $inhdr
14582
5f80c64f
JH
14583: see if this is an utime system
14584set utime.h i_utime
14585eval $inhdr
14586
14587: see if this is a values.h system
14588set values.h i_values
14589eval $inhdr
14590
14591: see if this is a vfork system
14592case "$d_vfork" in
14593"$define")
14594 set vfork.h i_vfork
14595 eval $inhdr
14596 ;;
14597*)
14598 i_vfork="$undef"
14599 ;;
14600esac
14601
14602: see if gdbm.h is available
14603set gdbm.h t_gdbm
14604eval $inhdr
14605case "$t_gdbm" in
14606$define)
14607 : see if gdbm_open exists
14608 set gdbm_open d_gdbm_open
14609 eval $inlibc
14610 case "$d_gdbm_open" in
14611 $undef)
14612 t_gdbm="$undef"
14613 echo "We won't be including <gdbm.h>"
14614 ;;
14615 esac
14616 ;;
14617esac
14618val="$t_gdbm"
14619set i_gdbm
14620eval $setvar
14621
14622echo " "
14623echo "Looking for extensions..." >&4
5f80c64f
JH
14624: If we are using the old config.sh, known_extensions may contain
14625: old or inaccurate or duplicate values.
14626known_extensions=''
14627nonxs_extensions=''
14628: We do not use find because it might not be available.
14629: We do not just use MANIFEST because the user may have dropped
14630: some additional extensions into the source tree and expect them
14631: to be built.
7e791ca9
NK
14632
14633: Function to recursively find available extensions, ignoring DynaLoader
14634: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14635find_extensions='
14636 for xxx in *; do
14637 case "$xxx" in
14638 DynaLoader|dynaload) ;;
14639 *)
14640 if $test -f $xxx/$xxx.xs; then
14641 known_extensions="$known_extensions $1$xxx";
14642 elif $test -f $xxx/Makefile.PL; then
14643 nonxs_extensions="$nonxs_extensions $1$xxx";
14644 else
14645 if $test -d $xxx -a $# -lt 10; then
14646 set $1$xxx/ $*;
14647 cd $xxx;
14648 eval $find_extensions;
14649 cd ..;
14650 shift;
9f50e519 14651 fi;
7e791ca9
NK
14652 fi
14653 ;;
9f50e519 14654 esac;
7e791ca9
NK
14655 done'
14656tdir=`pwd`
14657cd $rsrc/ext
a3635516 14658set X
efdb23e1 14659shift
7e791ca9 14660eval $find_extensions
5f80c64f
JH
14661set X $nonxs_extensions
14662shift
14663nonxs_extensions="$*"
14664set X $known_extensions
14665shift
14666known_extensions="$*"
14667cd $tdir
14668
14669: Now see which are supported on this system.
14670avail_ext=''
14671for xxx in $known_extensions ; do
14672 case "$xxx" in
14673 DB_File|db_file)
14674 case "$i_db" in
14675 $define) avail_ext="$avail_ext $xxx" ;;
14676 esac
14677 ;;
14678 GDBM_File|gdbm_fil)
14679 case "$i_gdbm" in
14680 $define) avail_ext="$avail_ext $xxx" ;;
14681 esac
14682 ;;
14683 NDBM_File|ndbm_fil)
14684 case "$i_ndbm" in
f7dd4e7f 14685 $define)
10cc9d2a 14686 case "$osname-$use64bitint" in
f7dd4e7f
JH
14687 hpux-define)
14688 case "$libs" in
14689 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14690 esac
14691 ;;
14692 *) avail_ext="$avail_ext $xxx" ;;
14693 esac
14694 ;;
5f80c64f
JH
14695 esac
14696 ;;
14697 ODBM_File|odbm_fil)
14698 case "${i_dbm}${i_rpcsvcdbm}" in
f7dd4e7f 14699 *"${define}"*)
10cc9d2a 14700 case "$osname-$use64bitint" in
f7dd4e7f
JH
14701 hpux-define)
14702 case "$libs" in
14703 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14704 esac
14705 ;;
14706 *) avail_ext="$avail_ext $xxx" ;;
14707 esac
14708 ;;
5f80c64f
JH
14709 esac
14710 ;;
14711 POSIX|posix)
14712 case "$useposix" in
14713 true|define|y) avail_ext="$avail_ext $xxx" ;;
14714 esac
14715 ;;
14716 Opcode|opcode)
14717 case "$useopcode" in
14718 true|define|y) avail_ext="$avail_ext $xxx" ;;
14719 esac
14720 ;;
14721 Socket|socket)
14722 case "$d_socket" in
14723 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14724 esac
14725 ;;
14726 Thread|thread)
14727 case "$usethreads" in
14728 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14729 esac
14730 ;;
14731 IPC/SysV|ipc/sysv)
14732 : XXX Do we need a useipcsysv variable here
14733 case "${d_msg}${d_sem}${d_shm}" in
14734 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14735 esac
14736 ;;
14737 *) avail_ext="$avail_ext $xxx"
14738 ;;
14739 esac
14740done
14741
14742set X $avail_ext
14743shift
14744avail_ext="$*"
14745
14746: Now see which nonxs extensions are supported on this system.
14747: For now assume all are.
14748nonxs_ext=''
14749for xxx in $nonxs_extensions ; do
14750 case "$xxx" in
14751 *) nonxs_ext="$nonxs_ext $xxx"
14752 ;;
14753 esac
14754done
14755
14756set X $nonxs_ext
14757shift
14758nonxs_ext="$*"
14759
14760case $usedl in
14761$define)
14762 $cat <<EOM
14763A number of extensions are supplied with $package. You may choose to
14764compile these extensions for dynamic loading (the default), compile
14765them into the $package executable (static loading), or not include
14766them at all. Answer "none" to include no extensions.
14767Note that DynaLoader is always built and need not be mentioned here.
14768
14769EOM
14770 case "$dynamic_ext" in
14771 '') dflt="$avail_ext" ;;
14772 *) dflt="$dynamic_ext"
14773 # Perhaps we are reusing an old out-of-date config.sh.
14774 case "$hint" in
14775 previous)
14776 if test X"$dynamic_ext" != X"$avail_ext"; then
14777 $cat <<EOM
14778NOTICE: Your previous config.sh list may be incorrect.
14779The extensions now available to you are
14780 ${avail_ext}
14781but the default list from your previous config.sh is
14782 ${dynamic_ext}
14783
14784EOM
14785 fi
14786 ;;
14787 esac
14788 ;;
14789 esac
14790 case "$dflt" in
14791 '') dflt=none;;
14792 esac
14793 rp="What extensions do you wish to load dynamically?"
14794 . ./myread
14795 case "$ans" in
14796 none) dynamic_ext=' ' ;;
14797 *) dynamic_ext="$ans" ;;
14798 esac
14799
14800 case "$static_ext" in
14801 '')
14802 : Exclude those already listed in dynamic linking
14803 dflt=''
14804 for xxx in $avail_ext; do
14805 case " $dynamic_ext " in
14806 *" $xxx "*) ;;
14807 *) dflt="$dflt $xxx" ;;
14808 esac
14809 done
14810 set X $dflt
14811 shift
14812 dflt="$*"
14813 ;;
14814 *) dflt="$static_ext"
14815 ;;
14816 esac
14817
14818 case "$dflt" in
14819 '') dflt=none;;
14820 esac
14821 rp="What extensions do you wish to load statically?"
14822 . ./myread
14823 case "$ans" in
14824 none) static_ext=' ' ;;
14825 *) static_ext="$ans" ;;
14826 esac
14827 ;;
14828*)
14829 $cat <<EOM
14830A number of extensions are supplied with $package. Answer "none"
14831to include no extensions.
14832Note that DynaLoader is always built and need not be mentioned here.
14833
14834EOM
14835 case "$static_ext" in
14836 '') dflt="$avail_ext" ;;
14837 *) dflt="$static_ext"
14838 # Perhaps we are reusing an old out-of-date config.sh.
14839 case "$hint" in
14840 previous)
14841 if test X"$static_ext" != X"$avail_ext"; then
14842 $cat <<EOM
14843NOTICE: Your previous config.sh list may be incorrect.
14844The extensions now available to you are
14845 ${avail_ext}
14846but the default list from your previous config.sh is
14847 ${static_ext}
14848
14849EOM
14850 fi
14851 ;;
14852 esac
14853 ;;
14854 esac
14855 : Exclude those that are not xs extensions
14856 case "$dflt" in
14857 '') dflt=none;;
14858 esac
14859 rp="What extensions do you wish to include?"
14860 . ./myread
14861 case "$ans" in
14862 none) static_ext=' ' ;;
14863 *) static_ext="$ans" ;;
14864 esac
14865 ;;
14866esac
14867
14868set X $dynamic_ext $static_ext $nonxs_ext
14869shift
14870extensions="$*"
14871
14872: Remove build directory name from cppstdin so it can be used from
14873: either the present location or the final installed location.
14874echo " "
14875: Get out of the UU directory to get correct path name.
14876cd ..
14877case "$cppstdin" in
14878`pwd`/cppstdin)
14879 echo "Stripping down cppstdin path name"
14880 cppstdin=cppstdin
14881 ;;
14882esac
14883cd UU
14884
14885: end of configuration questions
14886echo " "
14887echo "End of configuration questions."
14888echo " "
14889
14890: back to where it started
14891if test -d ../UU; then
14892 cd ..
14893fi
14894
14895: configuration may be patched via a 'config.over' file
14896if $test -f config.over; then
14897 echo " "
14898 dflt=y
14899 rp='I see a config.over file. Do you wish to load it?'
14900 . UU/myread
14901 case "$ans" in
14902 n*) echo "OK, I'll ignore it.";;
14903 *) . ./config.over
14904 echo "Configuration override changes have been loaded."
14905 ;;
14906 esac
14907fi
14908
14909: in case they want portability, strip down executable paths
14910case "$d_portable" in
14911"$define")
14912 echo " "
14913 echo "Stripping down executable paths..." >&4
14914 for file in $loclist $trylist; do
534ac15a
JH
14915 eval temp=\$$file
14916 eval $file=`basename $temp`
5f80c64f
JH
14917 done
14918 ;;
14919esac
14920
14921: create config.sh file
14922echo " "
14923echo "Creating config.sh..." >&4
14924$spitshell <<EOT >config.sh
14925$startsh
14926#
14927# This file was produced by running the Configure script. It holds all the
14928# definitions figured out by Configure. Should you modify one of these values,
14929# do not forget to propagate your changes by running "Configure -der". You may
14930# instead choose to run each of the .SH files by yourself, or "Configure -S".
14931#
14932
14933# Package name : $package
14934# Source directory : $src
14935# Configuration time: $cf_time
14936# Configured by : $cf_by
14937# Target system : $myuname
14938
14939Author='$Author'
14940Date='$Date'
14941Header='$Header'
14942Id='$Id'
14943Locker='$Locker'
14944Log='$Log'
14945Mcc='$Mcc'
14946RCSfile='$RCSfile'
14947Revision='$Revision'
14948Source='$Source'
14949State='$State'
14950_a='$_a'
14951_exe='$_exe'
14952_o='$_o'
14953afs='$afs'
14954alignbytes='$alignbytes'
14955ansi2knr='$ansi2knr'
14956aphostname='$aphostname'
ff935051
JH
14957api_revision='$api_revision'
14958api_subversion='$api_subversion'
14959api_version='$api_version'
14960api_versionstring='$api_versionstring'
5f80c64f
JH
14961ar='$ar'
14962archlib='$archlib'
14963archlibexp='$archlibexp'
14964archname64='$archname64'
14965archname='$archname'
14966archobjs='$archobjs'
14967awk='$awk'
14968baserev='$baserev'
14969bash='$bash'
14970bin='$bin'
d71b2b6b 14971bincompat5005='$bincompat5005'
5f80c64f
JH
14972binexp='$binexp'
14973bison='$bison'
14974byacc='$byacc'
14975byteorder='$byteorder'
14976c='$c'
14977castflags='$castflags'
14978cat='$cat'
14979cc='$cc'
14980cccdlflags='$cccdlflags'
14981ccdlflags='$ccdlflags'
14982ccflags='$ccflags'
ff49bff8 14983ccsymbols='$ccsymbols'
5f80c64f
JH
14984cf_by='$cf_by'
14985cf_email='$cf_email'
14986cf_time='$cf_time'
8175356b 14987charsize='$charsize'
5f80c64f
JH
14988chgrp='$chgrp'
14989chmod='$chmod'
14990chown='$chown'
14991clocktype='$clocktype'
14992comm='$comm'
14993compress='$compress'
14994contains='$contains'
14995cp='$cp'
14996cpio='$cpio'
14997cpp='$cpp'
14998cpp_stuff='$cpp_stuff'
ff49bff8 14999cppccsymbols='$cppccsymbols'
5f80c64f
JH
15000cppflags='$cppflags'
15001cpplast='$cpplast'
15002cppminus='$cppminus'
15003cpprun='$cpprun'
15004cppstdin='$cppstdin'
ff49bff8 15005cppsymbols='$cppsymbols'
68c15b6f 15006crosscompile='$crosscompile'
5f80c64f
JH
15007cryptlib='$cryptlib'
15008csh='$csh'
15009d_Gconvert='$d_Gconvert'
cf2093f6
JH
15010d_PRIEldbl='$d_PRIEldbl'
15011d_PRIFldbl='$d_PRIFldbl'
15012d_PRIGldbl='$d_PRIGldbl'
15013d_PRIX64='$d_PRIX64'
15014d_PRId64='$d_PRId64'
15015d_PRIeldbl='$d_PRIeldbl'
15016d_PRIfldbl='$d_PRIfldbl'
15017d_PRIgldbl='$d_PRIgldbl'
15018d_PRIi64='$d_PRIi64'
15019d_PRIo64='$d_PRIo64'
15020d_PRIu64='$d_PRIu64'
15021d_PRIx64='$d_PRIx64'
5f80c64f
JH
15022d_access='$d_access'
15023d_accessx='$d_accessx'
15024d_alarm='$d_alarm'
15025d_archlib='$d_archlib'
cf2093f6
JH
15026d_atolf='$d_atolf'
15027d_atoll='$d_atoll'
5f80c64f
JH
15028d_attribut='$d_attribut'
15029d_bcmp='$d_bcmp'
15030d_bcopy='$d_bcopy'
d71b2b6b 15031d_bincompat5005='$d_bincompat5005'
5f80c64f
JH
15032d_bsd='$d_bsd'
15033d_bsdgetpgrp='$d_bsdgetpgrp'
15034d_bsdsetpgrp='$d_bsdsetpgrp'
15035d_bzero='$d_bzero'
15036d_casti32='$d_casti32'
15037d_castneg='$d_castneg'
15038d_charvspr='$d_charvspr'
15039d_chown='$d_chown'
15040d_chroot='$d_chroot'
15041d_chsize='$d_chsize'
15042d_closedir='$d_closedir'
15043d_const='$d_const'
15044d_crypt='$d_crypt'
15045d_csh='$d_csh'
15046d_cuserid='$d_cuserid'
15047d_dbl_dig='$d_dbl_dig'
5f80c64f 15048d_difftime='$d_difftime'
5f80c64f
JH
15049d_dirnamlen='$d_dirnamlen'
15050d_dlerror='$d_dlerror'
15051d_dlopen='$d_dlopen'
15052d_dlsymun='$d_dlsymun'
15053d_dosuid='$d_dosuid'
15054d_drand48proto='$d_drand48proto'
15055d_dup2='$d_dup2'
15056d_eaccess='$d_eaccess'
15057d_endgrent='$d_endgrent'
15058d_endhent='$d_endhent'
15059d_endnent='$d_endnent'
15060d_endpent='$d_endpent'
15061d_endpwent='$d_endpwent'
15062d_endsent='$d_endsent'
f1066039 15063d_endspent='$d_endspent'
5f80c64f
JH
15064d_eofnblk='$d_eofnblk'
15065d_eunice='$d_eunice'
15066d_fchmod='$d_fchmod'
15067d_fchown='$d_fchown'
15068d_fcntl='$d_fcntl'
15069d_fd_macros='$d_fd_macros'
15070d_fd_set='$d_fd_set'
15071d_fds_bits='$d_fds_bits'
5f80c64f 15072d_fgetpos='$d_fgetpos'
5f80c64f 15073d_flexfnam='$d_flexfnam'
5f80c64f 15074d_flock='$d_flock'
5f80c64f
JH
15075d_fork='$d_fork'
15076d_fpathconf='$d_fpathconf'
d9b3e12d 15077d_fpos64_t='$d_fpos64_t'
0545a864 15078d_fs_data_s='$d_fs_data_s'
5f80c64f 15079d_fseeko='$d_fseeko'
5f80c64f 15080d_fsetpos='$d_fsetpos'
104d25b7
JH
15081d_fstatfs='$d_fstatfs'
15082d_fstatvfs='$d_fstatvfs'
5f80c64f
JH
15083d_ftello='$d_ftello'
15084d_ftime='$d_ftime'
49dabb45 15085d_getcwd='$d_getcwd'
c890dc6c 15086d_getfsstat='$d_getfsstat'
5f80c64f
JH
15087d_getgrent='$d_getgrent'
15088d_getgrps='$d_getgrps'
15089d_gethbyaddr='$d_gethbyaddr'
15090d_gethbyname='$d_gethbyname'
15091d_gethent='$d_gethent'
15092d_gethname='$d_gethname'
15093d_gethostprotos='$d_gethostprotos'
15094d_getlogin='$d_getlogin'
ad27e871 15095d_getmnt='$d_getmnt'
ccc7f9b3 15096d_getmntent='$d_getmntent'
5f80c64f
JH
15097d_getnbyaddr='$d_getnbyaddr'
15098d_getnbyname='$d_getnbyname'
15099d_getnent='$d_getnent'
15100d_getnetprotos='$d_getnetprotos'
15101d_getpbyname='$d_getpbyname'
15102d_getpbynumber='$d_getpbynumber'
15103d_getpent='$d_getpent'
15104d_getpgid='$d_getpgid'
15105d_getpgrp2='$d_getpgrp2'
15106d_getpgrp='$d_getpgrp'
15107d_getppid='$d_getppid'
15108d_getprior='$d_getprior'
15109d_getprotoprotos='$d_getprotoprotos'
15110d_getpwent='$d_getpwent'
15111d_getsbyname='$d_getsbyname'
15112d_getsbyport='$d_getsbyport'
15113d_getsent='$d_getsent'
15114d_getservprotos='$d_getservprotos'
f1066039
JH
15115d_getspent='$d_getspent'
15116d_getspnam='$d_getspnam'
5f80c64f
JH
15117d_gettimeod='$d_gettimeod'
15118d_gnulibc='$d_gnulibc'
15119d_grpasswd='$d_grpasswd'
ccc7f9b3 15120d_hasmntopt='$d_hasmntopt'
5f80c64f 15121d_htonl='$d_htonl'
43999f95 15122d_iconv='$d_iconv'
5f80c64f
JH
15123d_index='$d_index'
15124d_inetaton='$d_inetaton'
13b3f787 15125d_int64_t='$d_int64_t'
5f80c64f
JH
15126d_isascii='$d_isascii'
15127d_killpg='$d_killpg'
15128d_lchown='$d_lchown'
2d4389e4 15129d_ldbl_dig='$d_ldbl_dig'
5f80c64f
JH
15130d_link='$d_link'
15131d_locconv='$d_locconv'
5f80c64f
JH
15132d_lockf='$d_lockf'
15133d_longdbl='$d_longdbl'
15134d_longlong='$d_longlong'
49c10eea 15135d_lseekproto='$d_lseekproto'
5f80c64f 15136d_lstat='$d_lstat'
1e8c3fde 15137d_madvise='$d_madvise'
5f80c64f
JH
15138d_mblen='$d_mblen'
15139d_mbstowcs='$d_mbstowcs'
15140d_mbtowc='$d_mbtowc'
0f27ced1 15141d_memchr='$d_memchr'
5f80c64f
JH
15142d_memcmp='$d_memcmp'
15143d_memcpy='$d_memcpy'
15144d_memmove='$d_memmove'
15145d_memset='$d_memset'
15146d_mkdir='$d_mkdir'
fe749a9f 15147d_mkdtemp='$d_mkdtemp'
5f80c64f 15148d_mkfifo='$d_mkfifo'
fe749a9f
JH
15149d_mkstemp='$d_mkstemp'
15150d_mkstemps='$d_mkstemps'
5f80c64f 15151d_mktime='$d_mktime'
fe749a9f
JH
15152d_mmap='$d_mmap'
15153d_mprotect='$d_mprotect'
5f80c64f 15154d_msg='$d_msg'
de4597cb
JH
15155d_msg_ctrunc='$d_msg_ctrunc'
15156d_msg_dontroute='$d_msg_dontroute'
15157d_msg_oob='$d_msg_oob'
15158d_msg_peek='$d_msg_peek'
15159d_msg_proxy='$d_msg_proxy'
5f80c64f
JH
15160d_msgctl='$d_msgctl'
15161d_msgget='$d_msgget'
15162d_msgrcv='$d_msgrcv'
15163d_msgsnd='$d_msgsnd'
fe749a9f
JH
15164d_msync='$d_msync'
15165d_munmap='$d_munmap'
5f80c64f 15166d_mymalloc='$d_mymalloc'
5f80c64f 15167d_nice='$d_nice'
78691af5 15168d_nv_preserves_uv='$d_nv_preserves_uv'
2000072c 15169d_off64_t='$d_off64_t'
ef4af2be 15170d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
5f80c64f
JH
15171d_oldpthreads='$d_oldpthreads'
15172d_oldsock='$d_oldsock'
15173d_open3='$d_open3'
5f80c64f
JH
15174d_pathconf='$d_pathconf'
15175d_pause='$d_pause'
15176d_phostname='$d_phostname'
15177d_pipe='$d_pipe'
15178d_poll='$d_poll'
15179d_portable='$d_portable'
15180d_pthread_yield='$d_pthread_yield'
5f80c64f
JH
15181d_pwage='$d_pwage'
15182d_pwchange='$d_pwchange'
15183d_pwclass='$d_pwclass'
15184d_pwcomment='$d_pwcomment'
15185d_pwexpire='$d_pwexpire'
15186d_pwgecos='$d_pwgecos'
15187d_pwpasswd='$d_pwpasswd'
15188d_pwquota='$d_pwquota'
bbe6c963 15189d_qgcvt='$d_qgcvt'
de1c2614 15190d_quad='$d_quad'
5f80c64f
JH
15191d_readdir='$d_readdir'
15192d_readlink='$d_readlink'
15193d_rename='$d_rename'
15194d_rewinddir='$d_rewinddir'
15195d_rmdir='$d_rmdir'
15196d_safebcpy='$d_safebcpy'
15197d_safemcpy='$d_safemcpy'
15198d_sanemcmp='$d_sanemcmp'
15199d_sched_yield='$d_sched_yield'
de4597cb 15200d_scm_rights='$d_scm_rights'
5f80c64f
JH
15201d_seekdir='$d_seekdir'
15202d_select='$d_select'
15203d_sem='$d_sem'
15204d_semctl='$d_semctl'
15205d_semctl_semid_ds='$d_semctl_semid_ds'
15206d_semctl_semun='$d_semctl_semun'
15207d_semget='$d_semget'
15208d_semop='$d_semop'
15209d_setegid='$d_setegid'
15210d_seteuid='$d_seteuid'
15211d_setgrent='$d_setgrent'
15212d_setgrps='$d_setgrps'
15213d_sethent='$d_sethent'
15214d_setlinebuf='$d_setlinebuf'
15215d_setlocale='$d_setlocale'
15216d_setnent='$d_setnent'
15217d_setpent='$d_setpent'
15218d_setpgid='$d_setpgid'
15219d_setpgrp2='$d_setpgrp2'
15220d_setpgrp='$d_setpgrp'
15221d_setprior='$d_setprior'
15222d_setpwent='$d_setpwent'
15223d_setregid='$d_setregid'
15224d_setresgid='$d_setresgid'
15225d_setresuid='$d_setresuid'
15226d_setreuid='$d_setreuid'
15227d_setrgid='$d_setrgid'
15228d_setruid='$d_setruid'
15229d_setsent='$d_setsent'
15230d_setsid='$d_setsid'
f1066039 15231d_setspent='$d_setspent'
5f80c64f
JH
15232d_setvbuf='$d_setvbuf'
15233d_sfio='$d_sfio'
15234d_shm='$d_shm'
15235d_shmat='$d_shmat'
15236d_shmatprototype='$d_shmatprototype'
15237d_shmctl='$d_shmctl'
15238d_shmdt='$d_shmdt'
15239d_shmget='$d_shmget'
15240d_sigaction='$d_sigaction'
15241d_sigsetjmp='$d_sigsetjmp'
15242d_socket='$d_socket'
13b3f787 15243d_socklen_t='$d_socklen_t'
5f80c64f 15244d_sockpair='$d_sockpair'
68d4903c 15245d_sqrtl='$d_sqrtl'
5f80c64f 15246d_statblks='$d_statblks'
0545a864
JH
15247d_statfs_f_flags='$d_statfs_f_flags'
15248d_statfs_s='$d_statfs_s'
104d25b7 15249d_statvfs='$d_statvfs'
5f80c64f
JH
15250d_stdio_cnt_lval='$d_stdio_cnt_lval'
15251d_stdio_ptr_lval='$d_stdio_ptr_lval'
ed39a0f2 15252d_stdio_stream_array='$d_stdio_stream_array'
5f80c64f
JH
15253d_stdiobase='$d_stdiobase'
15254d_stdstdio='$d_stdstdio'
5f80c64f
JH
15255d_strchr='$d_strchr'
15256d_strcoll='$d_strcoll'
15257d_strctcpy='$d_strctcpy'
15258d_strerrm='$d_strerrm'
15259d_strerror='$d_strerror'
15260d_strtod='$d_strtod'
15261d_strtol='$d_strtol'
ff935051 15262d_strtold='$d_strtold'
76d49b1c 15263d_strtoll='$d_strtoll'
5f80c64f 15264d_strtoul='$d_strtoul'
cf2093f6 15265d_strtoull='$d_strtoull'
ff935051 15266d_strtouq='$d_strtouq'
5f80c64f
JH
15267d_strxfrm='$d_strxfrm'
15268d_suidsafe='$d_suidsafe'
15269d_symlink='$d_symlink'
15270d_syscall='$d_syscall'
15271d_sysconf='$d_sysconf'
15272d_sysernlst='$d_sysernlst'
15273d_syserrlst='$d_syserrlst'
15274d_system='$d_system'
15275d_tcgetpgrp='$d_tcgetpgrp'
15276d_tcsetpgrp='$d_tcsetpgrp'
5f80c64f 15277d_telldir='$d_telldir'
cb86ce0e 15278d_telldirproto='$d_telldirproto'
5f80c64f
JH
15279d_time='$d_time'
15280d_times='$d_times'
5f80c64f
JH
15281d_truncate='$d_truncate'
15282d_tzname='$d_tzname'
15283d_umask='$d_umask'
15284d_uname='$d_uname'
15285d_union_semun='$d_union_semun'
0545a864 15286d_ustat='$d_ustat'
526fdc24 15287d_vendorarch='$d_vendorarch'
717c4fcc 15288d_vendorbin='$d_vendorbin'
a3635516 15289d_vendorlib='$d_vendorlib'
5f80c64f
JH
15290d_vfork='$d_vfork'
15291d_void_closedir='$d_void_closedir'
15292d_voidsig='$d_voidsig'
15293d_voidtty='$d_voidtty'
15294d_volatile='$d_volatile'
15295d_vprintf='$d_vprintf'
15296d_wait4='$d_wait4'
15297d_waitpid='$d_waitpid'
15298d_wcstombs='$d_wcstombs'
15299d_wctomb='$d_wctomb'
15300d_xenix='$d_xenix'
15301date='$date'
15302db_hashtype='$db_hashtype'
15303db_prefixtype='$db_prefixtype'
15304defvoidused='$defvoidused'
15305direntrytype='$direntrytype'
15306dlext='$dlext'
15307dlsrc='$dlsrc'
15308doublesize='$doublesize'
15309drand01='$drand01'
15310dynamic_ext='$dynamic_ext'
15311eagain='$eagain'
15312ebcdic='$ebcdic'
15313echo='$echo'
15314egrep='$egrep'
15315emacs='$emacs'
15316eunicefix='$eunicefix'
15317exe_ext='$exe_ext'
15318expr='$expr'
15319extensions='$extensions'
66fe083f 15320fflushNULL='$fflushNULL'
767df6a1 15321fflushall='$fflushall'
5f80c64f
JH
15322find='$find'
15323firstmakefile='$firstmakefile'
15324flex='$flex'
8175356b 15325fpossize='$fpossize'
5f80c64f
JH
15326fpostype='$fpostype'
15327freetype='$freetype'
ccc7f9b3 15328full_ar='$full_ar'
5f80c64f
JH
15329full_csh='$full_csh'
15330full_sed='$full_sed'
15331gccversion='$gccversion'
a22e52b9 15332gidformat='$gidformat'
785fb66b
JH
15333gidsign='$gidsign'
15334gidsize='$gidsize'
5f80c64f
JH
15335gidtype='$gidtype'
15336glibpth='$glibpth'
15337grep='$grep'
15338groupcat='$groupcat'
15339groupstype='$groupstype'
15340gzip='$gzip'
15341h_fcntl='$h_fcntl'
15342h_sysfile='$h_sysfile'
15343hint='$hint'
15344hostcat='$hostcat'
15345huge='$huge'
8175356b
JH
15346i16size='$i16size'
15347i16type='$i16type'
15348i32size='$i32size'
15349i32type='$i32type'
15350i64size='$i64size'
15351i64type='$i64type'
15352i8size='$i8size'
15353i8type='$i8type'
5f80c64f
JH
15354i_arpainet='$i_arpainet'
15355i_bsdioctl='$i_bsdioctl'
15356i_db='$i_db'
15357i_dbm='$i_dbm'
15358i_dirent='$i_dirent'
15359i_dld='$i_dld'
15360i_dlfcn='$i_dlfcn'
15361i_fcntl='$i_fcntl'
15362i_float='$i_float'
15363i_gdbm='$i_gdbm'
15364i_grp='$i_grp'
43999f95 15365i_iconv='$i_iconv'
792d8dab 15366i_ieeefp='$i_ieeefp'
5f80c64f
JH
15367i_inttypes='$i_inttypes'
15368i_limits='$i_limits'
15369i_locale='$i_locale'
7f3d1cf1 15370i_machcthr='$i_machcthr'
5f80c64f
JH
15371i_malloc='$i_malloc'
15372i_math='$i_math'
15373i_memory='$i_memory'
e7fb4fcc 15374i_mntent='$i_mntent'
5f80c64f
JH
15375i_ndbm='$i_ndbm'
15376i_netdb='$i_netdb'
15377i_neterrno='$i_neterrno'
9cc6feab 15378i_netinettcp='$i_netinettcp'
5f80c64f 15379i_niin='$i_niin'
5b34fd99 15380i_poll='$i_poll'
c4747d3e 15381i_pthread='$i_pthread'
5f80c64f
JH
15382i_pwd='$i_pwd'
15383i_rpcsvcdbm='$i_rpcsvcdbm'
15384i_sfio='$i_sfio'
15385i_sgtty='$i_sgtty'
f1066039 15386i_shadow='$i_shadow'
86959918 15387i_socks='$i_socks'
5f80c64f
JH
15388i_stdarg='$i_stdarg'
15389i_stddef='$i_stddef'
15390i_stdlib='$i_stdlib'
15391i_string='$i_string'
923fc586 15392i_sunmath='$i_sunmath'
5f80c64f
JH
15393i_sysaccess='$i_sysaccess'
15394i_sysdir='$i_sysdir'
15395i_sysfile='$i_sysfile'
15396i_sysfilio='$i_sysfilio'
15397i_sysin='$i_sysin'
15398i_sysioctl='$i_sysioctl'
ca52efda 15399i_syslog='$i_syslog'
fe749a9f 15400i_sysmman='$i_sysmman'
bf0c440f 15401i_sysmode='$i_sysmode'
104d25b7 15402i_sysmount='$i_sysmount'
5f80c64f
JH
15403i_sysndir='$i_sysndir'
15404i_sysparam='$i_sysparam'
15405i_sysresrc='$i_sysresrc'
15406i_syssecrt='$i_syssecrt'
15407i_sysselct='$i_sysselct'
15408i_syssockio='$i_syssockio'
15409i_sysstat='$i_sysstat'
0545a864 15410i_sysstatfs='$i_sysstatfs'
104d25b7 15411i_sysstatvfs='$i_sysstatvfs'
5f80c64f
JH
15412i_systime='$i_systime'
15413i_systimek='$i_systimek'
15414i_systimes='$i_systimes'
15415i_systypes='$i_systypes'
de4597cb 15416i_sysuio='$i_sysuio'
5f80c64f 15417i_sysun='$i_sysun'
d4935d7f 15418i_sysutsname='$i_sysutsname'
0545a864 15419i_sysvfs='$i_sysvfs'
5f80c64f
JH
15420i_syswait='$i_syswait'
15421i_termio='$i_termio'
15422i_termios='$i_termios'
15423i_time='$i_time'
15424i_unistd='$i_unistd'
0545a864 15425i_ustat='$i_ustat'
5f80c64f
JH
15426i_utime='$i_utime'
15427i_values='$i_values'
15428i_varargs='$i_varargs'
15429i_varhdr='$i_varhdr'
15430i_vfork='$i_vfork'
15431ignore_versioned_solibs='$ignore_versioned_solibs'
ff935051 15432inc_version_list='$inc_version_list'
3a096bf3 15433inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
15434incpath='$incpath'
15435inews='$inews'
15436installarchlib='$installarchlib'
15437installbin='$installbin'
15438installman1dir='$installman1dir'
15439installman3dir='$installman3dir'
dd4e71fd
JH
15440installprefix='$installprefix'
15441installprefixexp='$installprefixexp'
5f80c64f
JH
15442installprivlib='$installprivlib'
15443installscript='$installscript'
15444installsitearch='$installsitearch'
717c4fcc 15445installsitebin='$installsitebin'
5f80c64f 15446installsitelib='$installsitelib'
dd4e71fd 15447installstyle='$installstyle'
104d25b7 15448installusrbinperl='$installusrbinperl'
526fdc24 15449installvendorarch='$installvendorarch'
717c4fcc 15450installvendorbin='$installvendorbin'
a3635516 15451installvendorlib='$installvendorlib'
5f80c64f 15452intsize='$intsize'
8175356b
JH
15453ivdformat='$ivdformat'
15454ivsize='$ivsize'
15455ivtype='$ivtype'
5f80c64f
JH
15456known_extensions='$known_extensions'
15457ksh='$ksh'
15458large='$large'
15459ld='$ld'
15460lddlflags='$lddlflags'
15461ldflags='$ldflags'
5cf1d1f1 15462ldlibpthname='$ldlibpthname'
5f80c64f
JH
15463less='$less'
15464lib_ext='$lib_ext'
15465libc='$libc'
15466libperl='$libperl'
15467libpth='$libpth'
15468libs='$libs'
43999f95
JH
15469libsdirs='$libsdirs'
15470libsfiles='$libsfiles'
15471libsfound='$libsfound'
13b3f787 15472libspath='$libspath'
5f80c64f
JH
15473libswanted='$libswanted'
15474line='$line'
15475lint='$lint'
15476lkflags='$lkflags'
15477ln='$ln'
15478lns='$lns'
15479locincpth='$locincpth'
15480loclibpth='$loclibpth'
15481longdblsize='$longdblsize'
15482longlongsize='$longlongsize'
15483longsize='$longsize'
15484lp='$lp'
15485lpr='$lpr'
15486ls='$ls'
15487lseeksize='$lseeksize'
15488lseektype='$lseektype'
15489mail='$mail'
15490mailx='$mailx'
15491make='$make'
15492make_set_make='$make_set_make'
15493mallocobj='$mallocobj'
15494mallocsrc='$mallocsrc'
15495malloctype='$malloctype'
15496man1dir='$man1dir'
15497man1direxp='$man1direxp'
15498man1ext='$man1ext'
15499man3dir='$man3dir'
15500man3direxp='$man3direxp'
15501man3ext='$man3ext'
15502medium='$medium'
5f80c64f
JH
15503mips_type='$mips_type'
15504mkdir='$mkdir'
fe749a9f 15505mmaptype='$mmaptype'
5f80c64f
JH
15506models='$models'
15507modetype='$modetype'
15508more='$more'
68c15b6f 15509multiarch='$multiarch'
5f80c64f
JH
15510mv='$mv'
15511myarchname='$myarchname'
15512mydomain='$mydomain'
15513myhostname='$myhostname'
15514myuname='$myuname'
15515n='$n'
15516netdb_hlen_type='$netdb_hlen_type'
15517netdb_host_type='$netdb_host_type'
15518netdb_name_type='$netdb_name_type'
15519netdb_net_type='$netdb_net_type'
15520nm='$nm'
15521nm_opt='$nm_opt'
15522nm_so_opt='$nm_so_opt'
15523nonxs_ext='$nonxs_ext'
15524nroff='$nroff'
8175356b
JH
15525nvsize='$nvsize'
15526nvtype='$nvtype'
5f80c64f
JH
15527o_nonblock='$o_nonblock'
15528obj_ext='$obj_ext'
ef4af2be 15529old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f
JH
15530optimize='$optimize'
15531orderlib='$orderlib'
15532osname='$osname'
15533osvers='$osvers'
15534package='$package'
15535pager='$pager'
15536passcat='$passcat'
15537patchlevel='$patchlevel'
15538path_sep='$path_sep'
49c10eea 15539perl5='$perl5'
5f80c64f
JH
15540perl='$perl'
15541perladmin='$perladmin'
15542perlpath='$perlpath'
15543pg='$pg'
15544phostname='$phostname'
15545pidtype='$pidtype'
15546plibpth='$plibpth'
fe749a9f 15547pm_apiversion='$pm_apiversion'
5f80c64f
JH
15548pmake='$pmake'
15549pr='$pr'
15550prefix='$prefix'
15551prefixexp='$prefixexp'
15552privlib='$privlib'
15553privlibexp='$privlibexp'
15554prototype='$prototype'
15555ptrsize='$ptrsize'
6b8eaf93 15556quadkind='$quadkind'
d7d93a81 15557quadtype='$quadtype'
5f80c64f
JH
15558randbits='$randbits'
15559randfunc='$randfunc'
15560randseedtype='$randseedtype'
15561ranlib='$ranlib'
15562rd_nodata='$rd_nodata'
49c10eea 15563revision='$revision'
5f80c64f
JH
15564rm='$rm'
15565rmail='$rmail'
15566runnm='$runnm'
cf2093f6
JH
15567sPRIEldbl='$sPRIEldbl'
15568sPRIFldbl='$sPRIFldbl'
15569sPRIGldbl='$sPRIGldbl'
15570sPRIX64='$sPRIX64'
15571sPRId64='$sPRId64'
15572sPRIeldbl='$sPRIeldbl'
15573sPRIfldbl='$sPRIfldbl'
15574sPRIgldbl='$sPRIgldbl'
15575sPRIi64='$sPRIi64'
15576sPRIo64='$sPRIo64'
15577sPRIu64='$sPRIu64'
15578sPRIx64='$sPRIx64'
5f80c64f
JH
15579sched_yield='$sched_yield'
15580scriptdir='$scriptdir'
15581scriptdirexp='$scriptdirexp'
15582sed='$sed'
15583seedfunc='$seedfunc'
15584selectminbits='$selectminbits'
15585selecttype='$selecttype'
15586sendmail='$sendmail'
15587sh='$sh'
15588shar='$shar'
15589sharpbang='$sharpbang'
15590shmattype='$shmattype'
15591shortsize='$shortsize'
15592shrpenv='$shrpenv'
15593shsharp='$shsharp'
af4c28eb 15594sig_count='$sig_count'
5f80c64f
JH
15595sig_name='$sig_name'
15596sig_name_init='$sig_name_init'
15597sig_num='$sig_num'
824a2ba3 15598sig_num_init='$sig_num_init'
5f80c64f
JH
15599signal_t='$signal_t'
15600sitearch='$sitearch'
15601sitearchexp='$sitearchexp'
717c4fcc
JH
15602sitebin='$sitebin'
15603sitebinexp='$sitebinexp'
5f80c64f 15604sitelib='$sitelib'
526fdc24 15605sitelib_stem='$sitelib_stem'
5f80c64f 15606sitelibexp='$sitelibexp'
dd4e71fd
JH
15607siteprefix='$siteprefix'
15608siteprefixexp='$siteprefixexp'
5f80c64f
JH
15609sizetype='$sizetype'
15610sleep='$sleep'
15611smail='$smail'
15612small='$small'
15613so='$so'
15614sockethdr='$sockethdr'
15615socketlib='$socketlib'
c890dc6c 15616socksizetype='$socksizetype'
5f80c64f
JH
15617sort='$sort'
15618spackage='$spackage'
15619spitshell='$spitshell'
15620split='$split'
15621src='$src'
15622ssizetype='$ssizetype'
15623startperl='$startperl'
15624startsh='$startsh'
15625static_ext='$static_ext'
15626stdchar='$stdchar'
15627stdio_base='$stdio_base'
15628stdio_bufsiz='$stdio_bufsiz'
15629stdio_cnt='$stdio_cnt'
15630stdio_filbuf='$stdio_filbuf'
15631stdio_ptr='$stdio_ptr'
767df6a1 15632stdio_stream_array='$stdio_stream_array'
5f80c64f
JH
15633strings='$strings'
15634submit='$submit'
15635subversion='$subversion'
15636sysman='$sysman'
15637tail='$tail'
15638tar='$tar'
15639tbl='$tbl'
15640tee='$tee'
15641test='$test'
15642timeincl='$timeincl'
15643timetype='$timetype'
15644touch='$touch'
15645tr='$tr'
15646trnl='$trnl'
15647troff='$troff'
8175356b
JH
15648u16size='$u16size'
15649u16type='$u16type'
15650u32size='$u32size'
15651u32type='$u32type'
15652u64size='$u64size'
15653u64type='$u64type'
15654u8size='$u8size'
15655u8type='$u8type'
a22e52b9 15656uidformat='$uidformat'
57def98f 15657uidsign='$uidsign'
785fb66b 15658uidsize='$uidsize'
5f80c64f
JH
15659uidtype='$uidtype'
15660uname='$uname'
15661uniq='$uniq'
d7d93a81 15662uquadtype='$uquadtype'
aaacdc8b 15663use5005threads='$use5005threads'
10cc9d2a
JH
15664use64bitall='$use64bitall'
15665use64bitint='$use64bitint'
5f80c64f 15666usedl='$usedl'
aaacdc8b 15667useithreads='$useithreads'
249b38c6 15668uselargefiles='$uselargefiles'
b0ce926a 15669uselongdouble='$uselongdouble'
09458382 15670usemorebits='$usemorebits'
5f80c64f
JH
15671usemultiplicity='$usemultiplicity'
15672usemymalloc='$usemymalloc'
15673usenm='$usenm'
15674useopcode='$useopcode'
15675useperlio='$useperlio'
15676useposix='$useposix'
15677usesfio='$usesfio'
15678useshrplib='$useshrplib'
29209bc5 15679usesocks='$usesocks'
5f80c64f 15680usethreads='$usethreads'
a3635516 15681usevendorprefix='$usevendorprefix'
5f80c64f
JH
15682usevfork='$usevfork'
15683usrinc='$usrinc'
15684uuname='$uuname'
8175356b
JH
15685uvoformat='$uvoformat'
15686uvsize='$uvsize'
15687uvtype='$uvtype'
15688uvuformat='$uvuformat'
15689uvxformat='$uvxformat'
526fdc24
MS
15690vendorarch='$vendorarch'
15691vendorarchexp='$vendorarchexp'
717c4fcc
JH
15692vendorbin='$vendorbin'
15693vendorbinexp='$vendorbinexp'
a3635516 15694vendorlib='$vendorlib'
526fdc24 15695vendorlib_stem='$vendorlib_stem'
a3635516
JH
15696vendorlibexp='$vendorlibexp'
15697vendorprefix='$vendorprefix'
15698vendorprefixexp='$vendorprefixexp'
5f80c64f
JH
15699version='$version'
15700vi='$vi'
15701voidflags='$voidflags'
15702xlibpth='$xlibpth'
fe749a9f 15703xs_apiversion='$xs_apiversion'
5f80c64f
JH
15704zcat='$zcat'
15705zip='$zip'
15706EOT
15707
15708: Add in command line options if available
15709$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15710
15711: add special variables
15712$test -f $src/patchlevel.h && \
d00b958f 15713awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 15714echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
15715
15716: propagate old symbols
15717if $test -f UU/config.sh; then
15718 <UU/config.sh sort | uniq >UU/oldconfig.sh
15719 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15720 sort | uniq -u >UU/oldsyms
15721 set X `cat UU/oldsyms`
15722 shift
15723 case $# in
15724 0) ;;
15725 *)
15726 cat <<EOM
15727Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15728EOM
15729 echo "# Variables propagated from previous config.sh file." >>config.sh
15730 for sym in `cat UU/oldsyms`; do
15731 echo " Propagating $hint variable "'$'"$sym..."
15732 eval 'tmp="$'"${sym}"'"'
15733 echo "$tmp" | \
15734 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15735 done
15736 ;;
15737 esac
15738fi
15739
15740: Finish up by extracting the .SH files
15741case "$alldone" in
15742exit)
15743 $rm -rf UU
15744 echo "Done."
15745 exit 0
15746 ;;
15747cont)
15748 ;;
15749'')
15750 dflt=''
15751 nostick=true
15752 $cat <<EOM
15753
15754If you'd like to make any changes to the config.sh file before I begin
15755to configure things, do it as a shell escape now (e.g. !vi config.sh).
15756
15757EOM
15758 rp="Press return or use a shell escape to edit config.sh:"
15759 . UU/myread
15760 nostick=''
15761 case "$ans" in
15762 '') ;;
15763 *) : in case they cannot read
15764 sh 1>&4 -c "$ans";;
15765 esac
15766 ;;
15767esac
15768
15769: if this fails, just run all the .SH files by hand
15770. ./config.sh
15771
15772echo " "
15773exec 1>&4
15774. ./UU/extract
15775
15776if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15777 dflt=y
15778 case "$silent" in
15779 true) ;;
15780 *)
15781 $cat <<EOM
15782
15783Now you need to generate make dependencies by running "$make depend".
15784You might prefer to run it in background: "$make depend > makedepend.out &"
15785It can take a while, so you might not want to run it right now.
15786
15787EOM
15788 ;;
15789 esac
15790 rp="Run $make depend now?"
15791 . UU/myread
15792 case "$ans" in
15793 y*)
15794 $make depend && echo "Now you must run a $make."
15795 ;;
15796 *)
15797 echo "You must run '$make depend' then '$make'."
15798 ;;
15799 esac
15800elif test -f [Mm]akefile; then
15801 echo " "
15802 echo "Now you must run a $make."
15803else
15804 echo "Done."
15805fi
15806
15807if $test -f Policy.sh; then
15808 $cat <<EOM
15809
15810If you compile $package on a different machine or from a different object
15811directory, copy the Policy.sh file from this object directory to the
15812new one before you run Configure -- this will help you with most of
15813the policy defaults.
15814
15815EOM
15816fi
15817if $test -f config.msg; then
15818 echo "Hmm. I also noted the following information while running:"
15819 echo " "
15820 $cat config.msg >&4
15821 $rm -f config.msg
15822fi
15823$rm -f kit*isdone ark*isdone
15824$rm -rf UU
15825
15826: End of Configure
15827