This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add note about glibc bug
[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#
efdb23e1 23# Generated on Tue Jul 6 18:36:05 EET DST 1999 [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=''
ecfc5424 281baserev=''
2304df62
AD
282bin=''
283binexp=''
284installbin=''
285byteorder=''
286cc=''
287gccversion=''
288ccflags=''
289cppflags=''
290ldflags=''
291lkflags=''
8e07c86e 292locincpth=''
2304df62 293optimize=''
8e07c86e 294cf_email=''
2304df62
AD
295cf_by=''
296cf_time=''
297contains=''
a0d0e21e 298cpp_stuff=''
2304df62
AD
299cpplast=''
300cppminus=''
301cpprun=''
302cppstdin=''
68c15b6f 303crosscompile=''
2304df62 304d_access=''
5ff3f7a4 305d_accessx=''
a0d0e21e 306d_alarm=''
ecfc5424 307d_attribut=''
2304df62
AD
308d_bcmp=''
309d_bcopy=''
310d_bzero=''
311d_casti32=''
312castflags=''
313d_castneg=''
a0d0e21e
LW
314d_chown=''
315d_chroot=''
2304df62 316d_chsize=''
a0d0e21e
LW
317d_closedir=''
318d_void_closedir=''
2304df62
AD
319d_const=''
320cryptlib=''
321d_crypt=''
322d_csh=''
1aef975c 323full_csh=''
a0d0e21e
LW
324d_cuserid=''
325d_dbl_dig=''
326d_difftime=''
327d_dlerror=''
328d_dlopen=''
329d_dlsymun=''
2304df62 330d_dosuid=''
a0d0e21e 331d_suidsafe=''
85ab1d1d 332d_drand48proto=''
2304df62 333d_dup2=''
5ff3f7a4
GS
334d_eaccess=''
335d_endgrent=''
e5c9fcd0
AD
336d_endhent=''
337d_endnent=''
338d_endpent=''
5ff3f7a4 339d_endpwent=''
e5c9fcd0 340d_endsent=''
f1066039 341d_endspent=''
2304df62
AD
342d_fchmod=''
343d_fchown=''
344d_fcntl=''
a0d0e21e
LW
345d_fd_macros=''
346d_fd_set=''
347d_fds_bits=''
348d_fgetpos=''
2304df62
AD
349d_flexfnam=''
350d_flock=''
a0d0e21e 351d_fork=''
5ff3f7a4 352d_fseeko=''
a0d0e21e 353d_fsetpos=''
5ff3f7a4 354d_ftello=''
5f05dabc 355d_ftime=''
356d_gettimeod=''
a0d0e21e 357d_Gconvert=''
5ff3f7a4 358d_getgrent=''
2304df62 359d_getgrps=''
4599a1de 360d_gethbyaddr=''
4599a1de 361d_gethbyname=''
dfe9444c 362d_gethent=''
2304df62
AD
363aphostname=''
364d_gethname=''
365d_phostname=''
366d_uname=''
dc45a647 367d_gethostprotos=''
a0d0e21e 368d_getlogin=''
ccc7f9b3 369d_getmntent=''
dfe9444c 370d_getnbyaddr=''
693762b4 371d_getnbyname=''
e5c9fcd0 372d_getnent=''
dc45a647 373d_getnetprotos=''
e5c9fcd0 374d_getpent=''
2afac517 375d_getpgid=''
2304df62 376d_getpgrp2=''
2afac517 377d_bsdgetpgrp=''
2304df62 378d_getpgrp=''
a0d0e21e 379d_getppid=''
2304df62 380d_getprior=''
693762b4
AD
381d_getpbyname=''
382d_getpbynumber=''
dc45a647 383d_getprotoprotos=''
5ff3f7a4 384d_getpwent=''
e5c9fcd0 385d_getsent=''
dc45a647 386d_getservprotos=''
f1066039
JH
387d_getspent=''
388d_getspnam=''
693762b4
AD
389d_getsbyname=''
390d_getsbyport=''
a4f3eea9 391d_gnulibc=''
ccc7f9b3 392d_hasmntopt=''
2304df62 393d_htonl=''
7e1af8bc 394d_inetaton=''
2304df62
AD
395d_isascii=''
396d_killpg=''
dd64f1c3 397d_lchown=''
2304df62 398d_link=''
a0d0e21e
LW
399d_locconv=''
400d_lockf=''
e5c9fcd0
AD
401d_longdbl=''
402longdblsize=''
dc45a647
MB
403d_longlong=''
404longlongsize=''
2304df62 405d_lstat=''
ff49bff8 406d_madvise=''
a0d0e21e
LW
407d_mblen=''
408d_mbstowcs=''
409d_mbtowc=''
0f27ced1 410d_memchr=''
2304df62
AD
411d_memcmp=''
412d_memcpy=''
413d_memmove=''
414d_memset=''
415d_mkdir=''
a0d0e21e
LW
416d_mkfifo=''
417d_mktime=''
ff49bff8
JH
418d_mmap=''
419mmaptype=''
420d_mprotect=''
2304df62
AD
421d_msg=''
422d_msgctl=''
423d_msgget=''
424d_msgrcv=''
425d_msgsnd=''
ff49bff8
JH
426d_msync=''
427d_munmap=''
a0d0e21e 428d_nice=''
2304df62 429d_open3=''
a0d0e21e
LW
430d_fpathconf=''
431d_pathconf=''
432d_pause=''
433d_pipe=''
8e07c86e 434d_poll=''
2304df62 435d_portable=''
ef4af2be
JH
436d_old_pthread_create_joinable=''
437old_pthread_create_joinable=''
dfe9444c
AD
438d_pthread_yield=''
439d_sched_yield=''
1cfa4ec7 440sched_yield=''
2304df62 441d_readdir=''
85e6fe83
LW
442d_rewinddir=''
443d_seekdir=''
444d_telldir=''
a0d0e21e 445d_readlink=''
de4597cb 446d_readv=''
2304df62
AD
447d_rename=''
448d_rmdir=''
449d_safebcpy=''
450d_safemcpy=''
36477c24 451d_sanemcmp=''
2304df62
AD
452d_select=''
453d_sem=''
454d_semctl=''
455d_semget=''
456d_semop=''
457d_setegid=''
458d_seteuid=''
5ff3f7a4 459d_setgrent=''
dfe9444c 460d_setgrps=''
693762b4 461d_sethent=''
a0d0e21e 462d_setlinebuf=''
2304df62 463d_setlocale=''
e5c9fcd0
AD
464d_setnent=''
465d_setpent=''
2304df62
AD
466d_setpgid=''
467d_setpgrp2=''
2afac517 468d_bsdsetpgrp=''
2304df62
AD
469d_setpgrp=''
470d_setprior=''
5ff3f7a4 471d_setpwent=''
2304df62
AD
472d_setregid=''
473d_setresgid=''
474d_setresuid=''
475d_setreuid=''
476d_setrgid=''
477d_setruid=''
e5c9fcd0 478d_setsent=''
2304df62 479d_setsid=''
f1066039 480d_setspent=''
e5c9fcd0 481d_setvbuf=''
760ac839 482d_sfio=''
8ff267be 483usesfio=''
2304df62
AD
484d_shm=''
485d_shmat=''
a0d0e21e
LW
486d_shmatprototype=''
487shmattype=''
2304df62
AD
488d_shmctl=''
489d_shmdt=''
490d_shmget=''
2c7991dc 491d_sigaction=''
8ff267be 492d_sigsetjmp=''
de4597cb
JH
493d_cmsghdr_s=''
494d_msg_ctrunc=''
495d_msg_dontroute=''
496d_msg_oob=''
497d_msg_peek=''
498d_msg_proxy=''
499d_msghdr_s=''
2304df62 500d_oldsock=''
de4597cb
JH
501d_recvmsg=''
502d_scm_rights=''
503d_sendmsg=''
2304df62
AD
504d_socket=''
505d_sockpair=''
506sockethdr=''
507socketlib=''
508d_statblks=''
104d25b7
JH
509d_fstatfs=''
510d_statfs=''
511d_statfsflags=''
512d_fstatvfs=''
513d_statvfs=''
c2960299
AD
514d_stdio_cnt_lval=''
515d_stdio_ptr_lval=''
16d20bd9 516d_stdiobase=''
2304df62 517d_stdstdio=''
16d20bd9
AD
518stdio_base=''
519stdio_bufsiz=''
520stdio_cnt=''
dfe9444c 521stdio_filbuf=''
16d20bd9 522stdio_ptr=''
2304df62
AD
523d_index=''
524d_strchr=''
a0d0e21e 525d_strcoll=''
2304df62
AD
526d_strctcpy=''
527d_strerrm=''
528d_strerror=''
529d_sysernlst=''
530d_syserrlst=''
a89d8a78
DH
531d_strtod=''
532d_strtol=''
533d_strtoul=''
a0d0e21e 534d_strxfrm=''
2304df62
AD
535d_symlink=''
536d_syscall=''
a0d0e21e 537d_sysconf=''
2304df62 538d_system=''
a0d0e21e
LW
539d_tcgetpgrp=''
540d_tcsetpgrp=''
cb86ce0e 541d_telldirproto=''
85e6fe83
LW
542d_time=''
543timetype=''
2304df62
AD
544clocktype=''
545d_times=''
546d_truncate=''
a0d0e21e
LW
547d_tzname=''
548d_umask=''
bd89102f
AD
549d_semctl_semid_ds=''
550d_semctl_semun=''
551d_union_semun=''
2304df62 552d_vfork=''
a0d0e21e 553usevfork=''
2304df62
AD
554d_voidsig=''
555signal_t=''
556d_volatile=''
557d_charvspr=''
558d_vprintf=''
559d_wait4=''
560d_waitpid=''
a0d0e21e
LW
561d_wcstombs=''
562d_wctomb=''
de4597cb 563d_writev=''
5ff3f7a4
GS
564d_dbmclose64=''
565d_dbminit64=''
566d_delete64=''
567d_fetch64=''
568d_firstkey64=''
569d_nextkey64=''
570d_store64=''
a0d0e21e 571dlext=''
85e6fe83
LW
572cccdlflags=''
573ccdlflags=''
2304df62 574dlsrc=''
232e078e 575ld=''
85e6fe83 576lddlflags=''
2304df62 577usedl=''
693762b4 578doublesize=''
5ff3f7a4 579ebcdic=''
66fe083f 580fflushNULL=''
767df6a1 581fflushall=''
a0d0e21e 582fpostype=''
2304df62
AD
583gidtype=''
584groupstype=''
585h_fcntl=''
586h_sysfile=''
5ff3f7a4 587i_arpainet=''
ecfc5424
AD
588db_hashtype=''
589db_prefixtype=''
a0d0e21e 590i_db=''
2304df62 591i_dbm=''
8e07c86e 592i_rpcsvcdbm=''
2304df62 593d_dirnamlen=''
a0d0e21e 594direntrytype=''
2304df62 595i_dirent=''
a0d0e21e 596i_dld=''
2304df62
AD
597i_dlfcn=''
598i_fcntl=''
a0d0e21e 599i_float=''
2304df62 600i_gdbm=''
28e8609d 601d_grpasswd=''
2304df62 602i_grp=''
5ff3f7a4
GS
603d_int64t=''
604i_inttypes=''
a0d0e21e 605i_limits=''
4633a7c4 606i_locale=''
7f3d1cf1 607i_machcthr=''
a0d0e21e
LW
608i_malloc=''
609i_math=''
85e6fe83 610i_memory=''
e7fb4fcc 611i_mntent=''
2304df62 612i_ndbm=''
3fd537d4 613i_netdb=''
85e6fe83 614i_neterrno=''
9cc6feab 615i_netinettcp=''
2304df62
AD
616i_niin=''
617i_sysin=''
5b34fd99 618i_poll=''
c4747d3e 619i_pthread=''
2304df62
AD
620d_pwage=''
621d_pwchange=''
622d_pwclass=''
623d_pwcomment=''
624d_pwexpire=''
c4f23d77 625d_pwgecos=''
28e8609d 626d_pwpasswd=''
2304df62
AD
627d_pwquota=''
628i_pwd=''
760ac839 629i_sfio=''
f1066039 630i_shadow=''
86959918 631i_socks=''
2304df62 632i_stddef=''
a0d0e21e 633i_stdlib=''
2304df62
AD
634i_string=''
635strings=''
5ff3f7a4 636i_sysaccess=''
2304df62
AD
637i_sysdir=''
638i_sysfile=''
639d_voidtty=''
640i_bsdioctl=''
a0d0e21e 641i_sysfilio=''
2304df62
AD
642i_sysioctl=''
643i_syssockio=''
ff49bff8 644i_sysmman=''
104d25b7 645i_sysmount=''
2304df62 646i_sysndir=''
a0d0e21e 647i_sysparam=''
8ff267be 648i_sysresrc=''
5ff3f7a4 649i_syssecrt=''
2304df62 650i_sysselct=''
1aef975c 651i_sysstat=''
104d25b7 652i_sysstatvfs=''
a0d0e21e 653i_systimes=''
fed7345c 654i_systypes=''
de4597cb
JH
655d_iovec_s=''
656i_sysuio=''
25f94b33 657i_sysun=''
8ff267be 658i_syswait=''
2304df62
AD
659i_sgtty=''
660i_termio=''
661i_termios=''
662i_systime=''
663i_systimek=''
664i_time=''
665timeincl=''
85e6fe83 666i_unistd=''
2304df62 667i_utime=''
760ac839 668i_values=''
a0d0e21e 669i_stdarg=''
2304df62
AD
670i_varargs=''
671i_varhdr=''
672i_vfork=''
104d25b7 673installusrbinperl=''
2304df62 674intsize=''
24fef2a7
AD
675longsize=''
676shortsize=''
de4597cb
JH
677d_dirent64_s=''
678d_flock64_s=''
5ff3f7a4
GS
679d_fstat64=''
680d_ftruncate64=''
2000072c
JH
681d_ino64_t=''
682d_llseek=''
5ff3f7a4
GS
683d_lockf64=''
684d_lseek64=''
685d_lstat64=''
2000072c
JH
686d_off64_t=''
687d_offset_t=''
5ff3f7a4
GS
688d_open64=''
689d_opendir64=''
690d_readdir64=''
691d_seekdir64=''
692d_stat64=''
693d_telldir64=''
694d_truncate64=''
2304df62 695libc=''
8ff267be 696libperl=''
2afac517 697shrpenv=''
8ff267be 698useshrplib=''
a0d0e21e 699glibpth=''
2304df62 700libpth=''
8e07c86e 701loclibpth=''
2304df62
AD
702plibpth=''
703xlibpth=''
1cfa4ec7 704ignore_versioned_solibs=''
2304df62 705libs=''
85e6fe83 706lns=''
5ff3f7a4 707lseeksize=''
85e6fe83 708lseektype=''
8ff267be 709make_set_make=''
85e6fe83 710d_mymalloc=''
94b6baf5 711freetype=''
2304df62
AD
712mallocobj=''
713mallocsrc=''
714malloctype=''
715usemymalloc=''
16d20bd9
AD
716installman1dir=''
717man1dir=''
718man1direxp=''
719man1ext=''
720installman3dir=''
721man3dir=''
722man3direxp=''
723man3ext=''
2304df62
AD
724huge=''
725large=''
726medium=''
727models=''
728small=''
729split=''
a0d0e21e 730modetype=''
68c15b6f 731multiarch=''
2304df62
AD
732mydomain=''
733myhostname=''
734phostname=''
735c=''
736n=''
8e07c86e
AD
737d_eofnblk=''
738eagain=''
739o_nonblock=''
740rd_nodata=''
dfe9444c
AD
741netdb_hlen_type=''
742netdb_host_type=''
743netdb_name_type=''
744netdb_net_type=''
2304df62
AD
745groupcat=''
746hostcat=''
747passcat=''
85e6fe83
LW
748orderlib=''
749ranlib=''
2304df62
AD
750package=''
751spackage=''
2c7991dc 752pager=''
bfb7748a 753apiversion=''
ecfc5424 754patchlevel=''
760ac839 755subversion=''
bfb7748a 756version=''
8e07c86e 757perladmin=''
4633a7c4 758perlpath=''
dfe9444c 759pidtype=''
a0d0e21e 760prefix=''
1aef975c 761prefixexp=''
2304df62
AD
762installprivlib=''
763privlib=''
764privlibexp=''
765prototype=''
693762b4 766ptrsize=''
85ab1d1d 767drand01=''
2304df62 768randbits=''
85ab1d1d
JH
769randfunc=''
770randseedtype=''
771seedfunc=''
2304df62
AD
772installscript=''
773scriptdir=''
774scriptdirexp=''
5ff3f7a4 775selectminbits=''
a0d0e21e 776selecttype=''
8ff267be 777sh=''
af4c28eb 778sig_count=''
2304df62 779sig_name=''
dfe9444c 780sig_name_init=''
8e07c86e 781sig_num=''
824a2ba3 782sig_num_init=''
4633a7c4
LW
783installsitearch=''
784sitearch=''
785sitearchexp=''
25f94b33
AD
786installsitelib=''
787sitelib=''
788sitelibexp=''
a0d0e21e
LW
789sizetype=''
790so=''
2304df62
AD
791sharpbang=''
792shsharp=''
793spitshell=''
dfe9444c 794src=''
a0d0e21e 795ssizetype=''
4633a7c4 796startperl=''
2304df62
AD
797startsh=''
798stdchar=''
5ff3f7a4
GS
799d_fgetpos64=''
800d_fopen64=''
801d_freopen64=''
802d_fseek64=''
803d_fseeko64=''
804d_fsetpos64=''
805d_ftell64=''
806d_ftello64=''
807d_tmpfile64=''
ed39a0f2 808d_stdio_stream_array=''
767df6a1 809stdio_stream_array=''
2304df62 810sysman=''
5ff3f7a4 811trnl=''
2304df62 812uidtype=''
85ab1d1d 813archname64=''
5ff3f7a4 814use64bits=''
85ab1d1d 815usemultiplicity=''
2304df62 816nm_opt=''
40a7a20a 817nm_so_opt=''
2304df62
AD
818runnm=''
819usenm=''
8ff267be 820useperlio=''
29209bc5 821usesocks=''
693762b4 822d_oldpthreads=''
dfe9444c 823usethreads=''
2304df62
AD
824incpath=''
825mips=''
826mips_type=''
827usrinc=''
828defvoidused=''
829voidflags=''
2304df62
AD
830CONFIG=''
831
ecfc5424
AD
832define='define'
833undef='undef'
834smallmach='pdp11 i8086 z8000 i80286 iAPX286'
835rmlist=''
836
837: We must find out about Eunice early
838eunicefix=':'
839if test -f /etc/unixtovms; then
840 eunicefix=/etc/unixtovms
841fi
842if test -f /etc/unixtovms.exe; then
843 eunicefix=/etc/unixtovms.exe
844fi
845
5ff3f7a4 846i_whoami=''
5ff3f7a4
GS
847: Possible local include directories to search.
848: Set locincpth to "" in a hint file to defeat local include searches.
849locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
850locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
851:
852: no include file wanted by default
853inclwanted=''
854
ecfc5424
AD
855: list of known cpp symbols, sorted alphabetically
856al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
857al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
858al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
859al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
860al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
861al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
862al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
863al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
864al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
865al="$al VMS Xenix286"
5ff3f7a4
GS
866al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
867al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
ecfc5424
AD
868al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
869al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
870al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
871al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
872al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
873al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
874al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
875al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
876al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
877al="$al __SVR4_2__ __UMAXV__"
878al="$al ____386BSD____ __alpha __alpha__ __amiga"
879al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
880al="$al __host_mips__"
881al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
882al="$al __hp9000s500 __hp9000s700 __hp9000s800"
883al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
884al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
885al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
886al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
887al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
888al="$al __mc88100 __mc88100__ __mips __mips__"
889al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
890al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
891al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
892al="$al _host_mips _mips _unix"
893al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
894al="$al apollo ardent att386 att3b"
895al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
896al="$al cadmus clipper concurrent convex cray ctix"
897al="$al dmert encore gcos gcx gimpel gould"
898al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
899al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
900al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
901al="$al i186 i286 i386 i486 i8086"
902al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
903al="$al ksr1 linux luna luna88k m68k m88100 m88k"
904al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
905al="$al mc68040 mc68060 mc68k mc68k32 mc700"
906al="$al mc88000 mc88100 merlin mert mips mvs n16"
907al="$al ncl_el ncl_mr"
908al="$al news1500 news1700 news1800 news1900 news3700"
909al="$al news700 news800 news900 ns16000 ns32000"
910al="$al ns32016 ns32332 ns32k nsc32000 os osf"
911al="$al parisc pc532 pdp11 plexus posix pyr"
912al="$al riscix riscos scs sequent sgi sinix sony sony_news"
913al="$al sonyrisc sparc sparclite spectrum stardent stratos"
914al="$al sun sun3 sun386 svr4 sysV68 sysV88"
915al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
916al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
917al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
918al="$al xenix z8000"
919
dfe9444c 920: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 921_exe=''
dfe9444c
AD
922: Extra object files, if any, needed on this platform.
923archobjs=''
924groupstype=''
732c9516
JH
925: change the next line if compiling for Xenix/286 on Xenix/386
926xlibpth='/usr/lib/386 /lib/386'
927
928: Possible local library directories to search.
929loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
930loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
931
932: general looking path for locating libraries
933glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
934glibpth="$glibpth /lib /usr/lib $xlibpth"
935glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
936glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
937
938: Private path used by Configure to find libraries. Its value
939: is prepended to libpth. This variable takes care of special
940: machines, like the mips. Usually, it should be empty.
941plibpth=''
942
1cfa4ec7
GS
943: default library list
944libswanted=''
921b2963 945: some systems want to use only the non-versioned libso:s
1cfa4ec7 946ignore_versioned_solibs=''
bfb7748a
AD
947: full support for void wanted by default
948defvoidused=15
949
dfe9444c
AD
950: set useposix=false in your hint file to disable the POSIX extension.
951useposix=true
952: set useopcode=false in your hint file to disable the Opcode extension.
953useopcode=true
85ab1d1d 954: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 955: set usesocks on the Configure command line to enable socks.
dfe9444c 956: set usethreads on the Configure command line to enable threads.
ecfc5424 957: List of libraries we want.
693762b4
AD
958: If anyone needs -lnet, put it in a hint file.
959libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
ca8cfa54 960libswanted="$libswanted dld ld sun m rt c cposix posix"
f1066039 961libswanted="$libswanted ndir dir crypt sec"
ecfc5424 962libswanted="$libswanted ucb bsd BSD PW x"
1aef975c 963: We probably want to search /usr/shlib before most other libraries.
94b6baf5 964: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
965glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
966glibpth="/usr/shlib $glibpth"
967: Do not use vfork unless overridden by a hint file.
968usevfork=false
969
8ff267be 970: Find the basic shell for Bourne shell scripts
971case "$sh" in
972'')
8ff267be 973 case "$SYSTYPE" in
974 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
975 *) xxx='/bin/sh';;
976 esac
977 if test -f "$xxx"; then
978 sh="$xxx"
979 else
980 : Build up a list and do a single loop so we can 'break' out.
981 pth=`echo $PATH | sed -e "s/$p_/ /g"`
982 for xxx in sh bash ksh pdksh ash; do
983 for p in $pth; do
984 try="$try ${p}/${xxx}"
985 done
986 done
987 for xxx in $try; do
988 if test -f "$xxx"; then
989 sh="$xxx";
8ff267be 990 break
991 elif test -f "$xxx.exe"; then
992 sh="$xxx";
8ff267be 993 break
994 fi
995 done
996 fi
997 ;;
998esac
999
1000case "$sh" in
1001'') cat <<EOM >&2
1002$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1003
8ff267be 1004Usually it's in /bin/sh. How did you even get this far?
46193409 1005Please contact me (Perl Maintainers) at perlbug@perl.com and
dfe9444c 1006we'll try to straighten this all out.
8ff267be 1007EOM
1008 exit 1
1009 ;;
1010esac
1011
760ac839 1012: see if sh knows # comments
8ff267be 1013if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1014 shsharp=true
1015 spitshell=cat
760ac839
LW
1016 xcat=/bin/cat
1017 test -f $xcat || xcat=/usr/bin/cat
1018 echo "#!$xcat" >try
1019 $eunicefix try
1020 chmod +x try
1021 ./try > today
1022 if test -s today; then
760ac839
LW
1023 sharpbang='#!'
1024 else
1025 echo "#! $xcat" > try
1026 $eunicefix try
1027 chmod +x try
1028 ./try > today
1029 if test -s today; then
760ac839
LW
1030 sharpbang='#! '
1031 else
760ac839
LW
1032 sharpbang=': use '
1033 fi
1034 fi
1035else
dfe9444c 1036 echo " "
8ff267be 1037 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1038 shsharp=false
1039 cd ..
1040 echo "exec grep -v '^[ ]*#'" >spitshell
1041 chmod +x spitshell
1042 $eunicefix spitshell
1043 spitshell=`pwd`/spitshell
1044 cd UU
1045 echo "I presume that if # doesn't work, #! won't work either!"
1046 sharpbang=': use '
1047fi
1048rm -f try today
1049
1050: figure out how to guarantee sh startup
8ff267be 1051case "$startsh" in
1052'') startsh=${sharpbang}${sh} ;;
1053*)
760ac839 1054esac
760ac839
LW
1055cat >try <<EOSS
1056$startsh
1057set abc
1058test "$?abc" != 1
1059EOSS
1060
1061chmod +x try
1062$eunicefix try
1063if ./try; then
8ff267be 1064 : echo "Yup, it does."
760ac839 1065else
dfe9444c
AD
1066 echo "Hmm... '$startsh' does not guarantee sh startup..."
1067 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1068fi
1069rm -f try
1070
aebf16e7
AD
1071
1072: Save command line options in file UU/cmdline.opt for later use in
1073: generating config.sh.
1074cat > cmdline.opt <<EOSH
1075# Configure command line arguments.
1076config_arg0='$0'
1077config_args='$*'
1078config_argc=$#
1079EOSH
1080argn=1
1081for arg in "$@"; do
1082 cat >>cmdline.opt <<EOSH
1083config_arg$argn='$arg'
1084EOSH
1085 argn=`expr $argn + 1`
1086done
1087
2304df62
AD
1088: produce awk script to parse command line options
1089cat >options.awk <<'EOF'
1090BEGIN {
16d20bd9 1091 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1092
1093 len = length(optstr);
1094 for (i = 1; i <= len; i++) {
1095 c = substr(optstr, i, 1);
1096 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1097 if (a == ":") {
1098 arg[c] = 1;
1099 i++;
1100 }
1101 opt[c] = 1;
1102 }
1103}
1104{
1105 expect = 0;
1106 str = $0;
1107 if (substr(str, 1, 1) != "-") {
1108 printf("'%s'\n", str);
1109 next;
1110 }
1111 len = length($0);
1112 for (i = 2; i <= len; i++) {
1113 c = substr(str, i, 1);
1114 if (!opt[c]) {
1115 printf("-%s\n", substr(str, i));
1116 next;
1117 }
1118 printf("-%s\n", c);
1119 if (arg[c]) {
1120 if (i < len)
1121 printf("'%s'\n", substr(str, i + 1));
1122 else
1123 expect = 1;
1124 next;
1125 }
1126 }
1127}
1128END {
1129 if (expect)
1130 print "?";
1131}
1132EOF
1133
1134: process the command line options
4633a7c4
LW
1135set X `for arg in "$@"; do echo "X$arg"; done |
1136 sed -e s/X// | awk -f options.awk`
2304df62
AD
1137eval "set $*"
1138shift
1139rm -f options.awk
1140
1141: set up default values
1142fastread=''
1143reuseval=false
1144config_sh=''
1145alldone=''
1146error=''
1147silent=''
1148extractsh=''
ecfc5424 1149override=''
16d20bd9 1150knowitall=''
1aef975c 1151rm -f optdef.sh
28757baa 1152cat >optdef.sh <<EOS
1153$startsh
1154EOS
2304df62 1155
dfe9444c 1156
2304df62
AD
1157: option parsing
1158while test $# -gt 0; do
1159 case "$1" in
1160 -d) shift; fastread=yes;;
1161 -e) shift; alldone=cont;;
1162 -f)
1163 shift
1164 cd ..
1165 if test -r "$1"; then
1166 config_sh="$1"
1167 else
a0d0e21e 1168 echo "$me: cannot read config file $1." >&2
2304df62
AD
1169 error=true
1170 fi
1171 cd UU
1172 shift;;
1173 -h) shift; error=true;;
1174 -r) shift; reuseval=true;;
dfe9444c 1175 -s) shift; silent=true; realsilent=true;;
2304df62 1176 -E) shift; alldone=exit;;
16d20bd9 1177 -K) shift; knowitall=true;;
ecfc5424 1178 -O) shift; override=true;;
dfe9444c 1179 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1180 -D)
1181 shift
1182 case "$1" in
1183 *=)
1184 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1185 echo "$me: ignoring -D $1" >&2
1186 ;;
ecfc5424 1187 *=*) echo "$1" | \
1aef975c
AD
1188 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1189 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1190 esac
1191 shift
1192 ;;
1193 -U)
1194 shift
1195 case "$1" in
1aef975c 1196 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1197 *=*)
1198 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1199 echo "$me: ignoring -U $1" >&2
1200 ;;
1aef975c 1201 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1202 esac
1203 shift
1204 ;;
dfe9444c 1205 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
2304df62
AD
1206 exit 0;;
1207 --) break;;
a0d0e21e 1208 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1209 *) break;;
1210 esac
1211done
1212
1213case "$error" in
1214true)
1215 cat >&2 <<EOM
2afac517 1216Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
a0d0e21e 1217 [-U symbol] [-U symbol=]
2304df62
AD
1218 -d : use defaults for all answers.
1219 -e : go on without questioning past the production of config.sh.
1220 -f : specify an alternate default configuration file.
1221 -h : print this help message and exit (with an error status).
1222 -r : reuse C symbols value if possible (skips costly nm extraction).
1223 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1224 -D : define symbol to have some value:
1225 -D symbol symbol gets the value 'define'
1226 -D symbol=value symbol gets the value 'value'
2304df62 1227 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1228 -K : do not use unless you know what you are doing.
ecfc5424 1229 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1230 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1231 -U : undefine symbol:
1232 -U symbol symbol gets the value 'undef'
1233 -U symbol= symbol gets completely empty
2304df62
AD
1234 -V : print version number and exit (with a zero status).
1235EOM
1236 exit 1
1237 ;;
1238esac
1239
dfe9444c
AD
1240: Sanity checks
1241case "$fastread$alldone" in
1242yescont|yesexit) ;;
1243*)
1244 if test ! -t 0; then
1245 echo "Say 'sh Configure', not 'sh <Configure'"
1246 exit 1
1247 fi
1248 ;;
1249esac
1250
2304df62
AD
1251exec 4>&1
1252case "$silent" in
1253true) exec 1>/dev/null;;
1254esac
1255
ecfc5424 1256: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1257touch optdef.sh
1258. ./optdef.sh
a0d0e21e 1259
2304df62 1260: set package name
85e6fe83 1261package=perl5
1aef975c
AD
1262first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1263last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1264case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1265ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1266*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1267esac
2304df62 1268
2304df62
AD
1269: Some greps do not return status, grrr.
1270echo "grimblepritz" >grimble
1271if grep blurfldyick grimble >/dev/null 2>&1 ; then
1272 contains=contains
1273elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1274 contains=grep
1275else
1276 contains=contains
1277fi
1278rm -f grimble
1279: the following should work in any shell
1280case "$contains" in
1281contains*)
1282 echo " "
1283 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1284 cat >contains <<'EOSS'
1285grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1286EOSS
1287chmod +x contains
1288esac
1289
dfe9444c
AD
1290: Find the path to the source tree
1291case "$src" in
1292'') case "$0" in
1293 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1294 *) src='.';;
1295 esac;;
1296esac
1297case "$src" in
1298'') src=/
1299 rsrc=/
1300 ;;
1301/*) rsrc="$src";;
1302*) rsrc="../$src";;
1303esac
1304if test -f $rsrc/Configure && \
1305 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1306then
1307 : found it, so we are ok.
1308else
1309 rsrc=''
1310 for src in . .. ../.. ../../.. ../../../..; do
1311 if test -f ../$src/Configure && \
1312 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1313 then
1314 rsrc=../$src
1315 break
1316 fi
1317 done
1318fi
1319case "$rsrc" in
1320'')
1321 cat <<EOM >&4
1322
1323Sorry, I can't seem to locate the source dir for $package. Please start
1324Configure with an explicit path -- i.e. /some/path/Configure.
1325
1326EOM
1327 exit 1
1328 ;;
1329../.) rsrc='..';;
1330*)
1331 echo " "
1332 echo "Sources for $package found in \"$src\"." >&4
1333 ;;
1334esac
1335
1336: script used to extract .SH files with variable substitutions
1337cat >extract <<'EOS'
2000072c 1338CONFIGDOTSH=true
dfe9444c
AD
1339echo "Doing variable substitutions on .SH files..."
1340if test -f $src/MANIFEST; then
f7ab18e9 1341 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1342else
1343 echo "(Looking for .SH files under the source directory.)"
1344 set x `(cd $src; find . -name "*.SH" -print)`
1345fi
1346shift
1347case $# in
13480) set x `(cd $src; echo *.SH)`; shift;;
1349esac
1350if test ! -f $src/$1; then
1351 shift
1352fi
1353mkdir_p='
1354name=$1;
1355create="";
1356while test $name; do
1357 if test ! -d "$name"; then
1358 create="$name $create";
1359 name=`echo $name | sed -e "s|^[^/]*$||"`;
1360 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1361 else
1362 name="";
1363 fi;
1364done;
1365for file in $create; do
1366 mkdir $file;
1367done
1368'
1369for file in $*; do
1370 case "$src" in
1371 ".")
1372 case "$file" in
1373 */*)
1374 dir=`expr X$file : 'X\(.*\)/'`
1375 file=`expr X$file : 'X.*/\(.*\)'`
1376 (cd $dir && . ./$file)
1377 ;;
1378 *)
1379 . ./$file
1380 ;;
1381 esac
1382 ;;
1383 *)
1384 case "$file" in
1385 */*)
1386 dir=`expr X$file : 'X\(.*\)/'`
1387 file=`expr X$file : 'X.*/\(.*\)'`
1388 (set x $dir; shift; eval $mkdir_p)
1389 sh <$src/$dir/$file
1390 ;;
1391 *)
1392 sh <$src/$file
1393 ;;
1394 esac
1395 ;;
1396 esac
1397done
1398if test -f $src/config_h.SH; then
1399 if test ! -f config.h; then
1400 : oops, they left it out of MANIFEST, probably, so do it anyway.
1401 . $src/config_h.SH
1402 fi
1403fi
1404EOS
1405
1406: extract files and exit if asked to do so
1407case "$extractsh" in
1408true)
1409 case "$realsilent" in
1410 true) ;;
1411 *) exec 1>&4;;
1412 esac
1413 case "$config_sh" in
1414 '') config_sh='config.sh';;
1415 esac
1416 echo " "
1417 echo "Fetching answers from $config_sh..."
1418 cd ..
1419 . $config_sh
1420 test "$override" && . ./optdef.sh
1421 echo " "
1422 . UU/extract
1423 rm -rf UU
1424 echo "Done."
1425 exit 0
1426 ;;
1427esac
1428
1429: Eunice requires " " instead of "", can you believe it
1430echo " "
1431: Here we go...
1432echo "Beginning of configuration questions for $package."
1433
1434trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1435
2304df62
AD
1436: first determine how to suppress newline on echo command
1437echo " "
1438echo "Checking echo to see how to suppress newlines..."
1439(echo "hi there\c" ; echo " ") >.echotmp
1440if $contains c .echotmp >/dev/null 2>&1 ; then
1441 echo "...using -n."
1442 n='-n'
1443 c=''
1444else
1445 cat <<'EOM'
1446...using \c
1447EOM
1448 n=''
1449 c='\c'
1450fi
1451echo $n "The star should be here-->$c"
1452echo '*'
1453rm -f .echotmp
1454
1455: Now test for existence of everything in MANIFEST
1456echo " "
dfe9444c 1457if test -f $rsrc/MANIFEST; then
2304df62 1458 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1459 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1460 rm -f missing
dfe9444c 1461 tmppwd=`pwd`
2304df62 1462 for filelist in x??; do
dfe9444c 1463 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1464 done
1465 if test -s missing; then
1466 cat missing >&4
1467 cat >&4 <<'EOM'
1468
1469THIS PACKAGE SEEMS TO BE INCOMPLETE.
1470
1471You have the option of continuing the configuration process, despite the
1472distinct possibility that your kit is damaged, by typing 'y'es. If you
1473do, don't blame me if something goes wrong. I advise you to type 'n'o
46193409 1474and contact the author (perlbug@perl.com).
2304df62
AD
1475
1476EOM
1477 echo $n "Continue? [n] $c" >&4
1478 read ans
1479 case "$ans" in
1480 y*)
1481 echo "Continuing..." >&4
1482 rm -f missing
1483 ;;
1484 *)
1485 echo "ABORTING..." >&4
1486 kill $$
1487 ;;
1488 esac
1489 else
dfe9444c 1490 echo "Looks good..."
2304df62
AD
1491 fi
1492else
1493 echo "There is no MANIFEST file. I hope your kit is complete !"
1494fi
1495rm -f missing x??
1496
5ff3f7a4
GS
1497echo " "
1498: Find the appropriate value for a newline for tr
1499if test -n "$DJGPP"; then
1500 trnl='\012'
1501fi
1502if test X"$trnl" = X; then
1503 case "`echo foo|tr '\n' x 2>/dev/null`" in
1504 foox) trnl='\n' ;;
1505 esac
1506fi
1507if test X"$trnl" = X; then
1508 case "`echo foo|tr '\012' x 2>/dev/null`" in
1509 foox) trnl='\012' ;;
1510 esac
1511fi
1512if test X"$trnl" = X; then
1513 cat <<EOM >&2
1514
1515$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1516
1517EOM
1518 exit 1
1519fi
1520
2304df62
AD
1521: compute the number of columns on the terminal for proper question formatting
1522case "$COLUMNS" in
1523'') COLUMNS='80';;
1524esac
1525
1526: set up the echo used in my read
1527myecho="case \"\$xxxm\" in
1528'') echo $n \"\$rp $c\" >&4;;
1529*) case \"\$rp\" in
1530 '') echo $n \"[\$xxxm] $c\";;
1531 *)
1532 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1533 echo \"\$rp\" >&4
1534 echo $n \"[\$xxxm] $c\" >&4
1535 else
1536 echo $n \"\$rp [\$xxxm] $c\" >&4
1537 fi
1538 ;;
1539 esac;;
1540esac"
1541
1542: now set up to do reads with possible shell escape and default assignment
1543cat <<EOSC >myread
28757baa 1544$startsh
2304df62
AD
1545xxxm=\$dflt
1546$myecho
1547ans='!'
1548case "\$fastread" in
1549yes) case "\$dflt" in
1550 '') ;;
1551 *) ans='';
1552 case "\$silent-\$rp" in
1553 true-) ;;
1554 *) echo " " >&4;;
1555 esac;;
1556 esac;;
1557*) case "\$silent" in
1558 true) case "\$rp" in
1559 '') ans='';;
1560 esac;;
1561 esac;;
1562esac
1563while expr "X\$ans" : "X!" >/dev/null; do
1564 read answ
1565 set x \$xxxm
1566 shift
dfe9444c 1567 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1568 case "\$answ" in
dfe9444c
AD
1569 "!")
1570 sh 1>&4
1571 echo " "
1572 $myecho
1573 ;;
1574 !*)
1575 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1576 shift
1577 sh 1>&4 -c "\$*"
1578 echo " "
1579 $myecho
1580 ;;
2304df62
AD
1581 "\$ans")
1582 case "\$ans" in
ecfc5424
AD
1583 \\&*)
1584 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1585 shift
1586 case "\$1" in
1587 -d)
1588 fastread=yes
40a7a20a 1589 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1590 ;;
1591 -*)
40a7a20a 1592 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1593 ;;
1594 esac
1595 $myecho
1596 ans=!
1597 ;;
2304df62
AD
1598 esac;;
1599 *)
1600 case "\$aok" in
1601 y)
1602 echo "*** Substitution done -- please confirm."
1603 xxxm="\$ans"
c9795ab7 1604 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1605 xxxm="\$ans"
1606 ans=!
1607 ;;
1608 *)
1609 echo "*** Error -- try again."
1610 ans=!
1611 ;;
1612 esac
1613 $myecho
1614 ;;
1615 esac
1616 case "\$ans\$xxxm\$nostick" in
1617 '')
1618 ans=!
1619 $myecho
1620 ;;
1621 esac
1622done
1623case "\$ans" in
1624'') ans="\$xxxm";;
1625esac
1626EOSC
1627
1628: create .config dir to save info across Configure sessions
1629test -d ../.config || mkdir ../.config
1630cat >../.config/README <<EOF
1631This directory created by Configure to save information that should
dfe9444c 1632persist across sessions for $package.
2304df62
AD
1633
1634You may safely delete it if you wish.
1635EOF
1636
1637: general instructions
1638needman=true
1639firsttime=true
760ac839 1640user=`(logname) 2>/dev/null`
dfe9444c
AD
1641case "$user" in
1642'') user=`whoami 2>&1`;;
760ac839 1643esac
2304df62
AD
1644if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1645 firsttime=false
1646 echo " "
1647 rp='Would you like to see the instructions?'
1648 dflt=n
1649 . ./myread
1650 case "$ans" in
1651 [yY]*) ;;
1652 *) needman=false;;
1653 esac
1654fi
1655if $needman; then
1656 cat <<EOH
4e2a5f63 1657
2304df62 1658This installation shell script will examine your system and ask you questions
a0d0e21e 1659to determine how the perl5 package should be installed. If you get
2304df62
AD
1660stuck on a question, you may use a ! shell escape to start a subshell or
1661execute a command. Many of the questions will have default answers in square
1662brackets; typing carriage return will give you the default.
1663
1664On some of the questions which ask for file or directory names you are allowed
1665to use the ~name construct to specify the login directory belonging to "name",
1666even if you don't have a shell which knows about that. Questions where this is
1667allowed will be marked "(~name ok)".
1668
1669EOH
1670 rp=''
1671 dflt='Type carriage return to continue'
1672 . ./myread
1673 cat <<'EOH'
1674
1675The prompter used in this script allows you to use shell variables and
1676backticks in your answers. You may use $1, $2, etc... to refer to the words
1677in the default answer, as if the default line was a set of arguments given to a
1678script shell. This means you may also use $* to repeat the whole default line,
1679so you do not have to re-type everything to add something to the default.
1680
1681Everytime there is a substitution, you will have to confirm. If there is an
1682error (e.g. an unmatched backtick), the default answer will remain unchanged
1683and you will be prompted again.
1684
1685If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1686the questions and use the computed defaults (or the previous answers if there
1687was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1688You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1689on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1690
1691EOH
1692 . ./myread
1693 cat <<EOH
1694
1695Much effort has been expended to ensure that this shell script will run on any
1696Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1697Configure and run it again. If you can't run Configure for some reason,
1698you'll have to generate a config.sh file by hand. Whatever problems you
46193409 1699have, let me (perlbug@perl.com) know how I blew it.
2304df62
AD
1700
1701This installation script affects things in two ways:
1702
17031) it may do direct variable substitutions on some of the files included
1704 in this kit.
17052) it builds a config.h file for inclusion in C programs. You may edit
1706 any of these files as the need arises after running this script.
1707
1708If you make a mistake on a question, there is no easy way to back up to it
1709currently. The easiest thing to do is to edit config.sh and rerun all the SH
1710files. Configure will offer to let you do this before it runs the SH files.
1711
1712EOH
1713 dflt='Type carriage return to continue'
1714 . ./myread
1715 case "$firsttime" in
1716 true) echo $user >>../.config/instruct;;
1717 esac
1718fi
1719
2304df62
AD
1720: find out where common programs are
1721echo " "
1722echo "Locating common programs..." >&4
1723cat <<EOSC >loc
1724$startsh
1725case \$# in
17260) exit 1;;
1727esac
1728thing=\$1
1729shift
1730dflt=\$1
1731shift
1732for dir in \$*; do
1733 case "\$thing" in
1734 .)
1735 if test -d \$dir/\$thing; then
1736 echo \$dir
1737 exit 0
1738 fi
1739 ;;
1740 *)
a0d0e21e 1741 for thisthing in \$dir/\$thing; do
ecfc5424 1742 : just loop through to pick last item
a0d0e21e 1743 done
25f94b33 1744 if test -f \$thisthing; then
a0d0e21e 1745 echo \$thisthing
2304df62
AD
1746 exit 0
1747 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1748 if test -n "$DJGPP"; then
1749 echo \$dir/\$thing.exe
1750 else
1751 : on Eunice apparently
1752 echo \$dir/\$thing
1753 fi
2304df62
AD
1754 exit 0
1755 fi
1756 ;;
1757 esac
1758done
1759echo \$dflt
1760exit 1
1761EOSC
1762chmod +x loc
1763$eunicefix loc
1764loclist="
1765awk
1766cat
ecfc5424 1767comm
2304df62
AD
1768cp
1769echo
1770expr
1771grep
a0d0e21e 1772ls
dfe9444c 1773make
2304df62 1774mkdir
2304df62
AD
1775rm
1776sed
1777sort
85e6fe83 1778touch
2304df62
AD
1779tr
1780uniq
1781"
1782trylist="
1783Mcc
dfe9444c 1784ar
2304df62
AD
1785byacc
1786cpp
1787csh
1788date
1789egrep
8ff267be 1790gzip
2c7991dc 1791less
8ff267be 1792ln
2c7991dc 1793more
693762b4 1794nm
2304df62 1795nroff
2c7991dc 1796pg
2304df62
AD
1797test
1798uname
8ff267be 1799zip
2304df62 1800"
8e07c86e 1801pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1802pth="$pth /lib /usr/lib"
1803for file in $loclist; do
dfe9444c
AD
1804 eval xxx=\$$file
1805 case "$xxx" in
1806 /*|?:[\\/]*)
1807 if test -f "$xxx"; then
1808 : ok
1809 else
1810 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1811 xxx=`./loc $file $file $pth`
1812 fi
1813 ;;
1814 '') xxx=`./loc $file $file $pth`;;
1815 *) xxx=`./loc $xxx $xxx $pth`;;
1816 esac
2304df62
AD
1817 eval $file=$xxx
1818 eval _$file=$xxx
1819 case "$xxx" in
1820 /*)
1821 echo $file is in $xxx.
1822 ;;
8e07c86e
AD
1823 ?:[\\/]*)
1824 echo $file is in $xxx.
1825 ;;
2304df62 1826 *)
25f94b33
AD
1827 echo "I don't know where '$file' is, and my life depends on it." >&4
1828 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1829 exit 1
2304df62
AD
1830 ;;
1831 esac
1832done
1833echo " "
1834echo "Don't worry if any of the following aren't found..."
1835say=offhand
1836for file in $trylist; do
dfe9444c
AD
1837 eval xxx=\$$file
1838 case "$xxx" in
1839 /*|?:[\\/]*)
1840 if test -f "$xxx"; then
1841 : ok
1842 else
1843 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1844 xxx=`./loc $file $file $pth`
1845 fi
1846 ;;
1847 '') xxx=`./loc $file $file $pth`;;
1848 *) xxx=`./loc $xxx $xxx $pth`;;
1849 esac
2304df62
AD
1850 eval $file=$xxx
1851 eval _$file=$xxx
1852 case "$xxx" in
1853 /*)
1854 echo $file is in $xxx.
1855 ;;
8e07c86e
AD
1856 ?:[\\/]*)
1857 echo $file is in $xxx.
1858 ;;
2304df62
AD
1859 *)
1860 echo "I don't see $file out there, $say."
1861 say=either
1862 ;;
1863 esac
1864done
1865case "$egrep" in
1866egrep)
1867 echo "Substituting grep for egrep."
1868 egrep=$grep
1869 ;;
1870esac
8ff267be 1871case "$ln" in
1872ln)
1873 echo "Substituting cp for ln."
1874 ln=$cp
1875 ;;
1876esac
2304df62
AD
1877case "$test" in
1878test)
1879 echo "Hopefully test is built into your sh."
1880 ;;
1881*)
ecfc5424 1882 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
1883 echo "Using the test built into your sh."
1884 test=test
1885 _test=test
1886 fi
1887 ;;
1888esac
1889case "$echo" in
1890echo)
1891 echo "Hopefully echo is built into your sh."
1892 ;;
1893'') ;;
1894*)
1895 echo " "
1896echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1897 $echo $n "hi there$c" >foo1
1898 echo $n "hi there$c" >foo2
1899 if cmp foo1 foo2 >/dev/null 2>&1; then
1900 echo "They are compatible. In fact, they may be identical."
1901 else
1902 case "$n" in
1903 '-n') n='' c='\c';;
1904 *) n='-n' c='';;
1905 esac
1906 cat <<FOO
1907They are not compatible! You are probably running ksh on a non-USG system.
1908I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1909have echo built in and we may have to run some Bourne shell scripts. That
1910means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1911
1912FOO
1913 $echo $n "The star should be here-->$c"
1914 $echo "*"
1915 fi
1916 $rm -f foo1 foo2
1917 ;;
1918esac
1919
a0d0e21e
LW
1920: determine whether symbolic links are supported
1921echo " "
1922$touch blurfl
1923if $ln -s blurfl sym > /dev/null 2>&1 ; then
1924 echo "Symbolic links are supported." >&4
1925 lns="$ln -s"
1926else
1927 echo "Symbolic links are NOT supported." >&4
1928 lns="$ln"
1929fi
1930$rm -f blurfl sym
1931
ecfc5424
AD
1932: see whether [:lower:] and [:upper:] are supported character classes
1933echo " "
ecfc5424
AD
1934case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1935ABYZ)
1936 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1937 up='[:upper:]'
1938 low='[:lower:]'
1939 ;;
28e8609d
JH
1940*) # There is a discontinuity in EBCDIC between 'I' and 'J'
1941 # (0xc9 and 0xd1), therefore that is a nice testing point.
1942 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 1943 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
1944 ij) up='[A-Z]'
1945 low='[a-z]'
1946 ;;
1947 esac
1948 fi
1949 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 1950 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
1951 ij) up='A-Z'
1952 low='a-z'
1953 ;;
1954 esac
1955 fi
1956 if test "X$up" = X -o "X$low" = X; then
1957 case "`echo IJ | od -x 2>/dev/null`" in
1958 *C9D1*|*c9d1*)
1959 echo "Hey, this might be EBCDIC." >&4
1960 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 1961 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
1962 ij) up='[A-IJ-RS-Z]'
1963 low='[a-ij-rs-z]'
1964 ;;
1965 esac
1966 fi
1967 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 1968 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
1969 ij) up='A-IJ-RS-Z'
1970 low='a-ij-rs-z'
1971 ;;
1972 esac
1973 fi
1974 ;;
1975 esac
1976 fi
1977esac
3eaeeeae 1978case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
1979ij)
1980 echo "Using $up and $low to convert case." >&4
1981 ;;
ecfc5424 1982*)
28e8609d
JH
1983 echo "I don't know how to translate letters from upper to lower case." >&4
1984 echo "Your tr is not acting any way I know of." >&4
1985 exit 1
1986 ;;
ecfc5424
AD
1987esac
1988: set up the translation script tr, must be called with ./tr of course
1989cat >tr <<EOSC
1990$startsh
1991case "\$1\$2" in
1992'[A-Z][a-z]') exec $tr '$up' '$low';;
1993'[a-z][A-Z]') exec $tr '$low' '$up';;
1994esac
1995exec $tr "\$@"
1996EOSC
1997chmod +x tr
1998$eunicefix tr
1999
2304df62
AD
2000: Try to determine whether config.sh was made on this system
2001case "$config_sh" in
2002'')
2003myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
28e8609d
JH
2004# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2005# because the A-Z/a-z are not consecutive.
a0d0e21e 2006myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2007 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2008newmyuname="$myuname"
2304df62 2009dflt=n
16d20bd9
AD
2010case "$knowitall" in
2011'')
2012 if test -f ../config.sh; then
2013 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2014 eval "`grep myuname= ../config.sh`"
2015 fi
2016 if test "X$myuname" = "X$newmyuname"; then
2017 dflt=y
2018 fi
2304df62 2019 fi
16d20bd9
AD
2020 ;;
2021*) dflt=y;;
2022esac
2304df62
AD
2023
2024: Get old answers from old config file if Configure was run on the
2025: same system, otherwise use the hints.
2026hint=default
2027cd ..
2028if test -f config.sh; then
16d20bd9
AD
2029 echo " "
2030 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2031 . UU/myread
2032 case "$ans" in
2033 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2034 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2035 tmp_n="$n"
2036 tmp_c="$c"
85cad39c 2037 tmp_sh="$sh"
2304df62
AD
2038 . ./config.sh
2039 cp config.sh UU
ecfc5424
AD
2040 n="$tmp_n"
2041 c="$tmp_c"
85cad39c 2042 : Older versions did not always set $sh. Catch re-use of such
2043 : an old config.sh.
2044 case "$sh" in
2045 '') sh="$tmp_sh" ;;
2046 esac
2304df62
AD
2047 hint=previous
2048 ;;
2049 esac
2050fi
2051if test ! -f config.sh; then
2052 $cat <<EOM
2053
4e2a5f63
AD
2054First time through, eh? I have some defaults handy for some systems
2055that need some extra help getting the Configure answers right:
2304df62
AD
2056
2057EOM
dfe9444c 2058 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2059 dflt=''
2060 : Half the following guesses are probably wrong... If you have better
46193409 2061 : tests or hints, please send them to perlbug@perl.com
2304df62 2062 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2063 $test -f /irix && osname=irix
85e6fe83
LW
2064 $test -f /xenix && osname=sco_xenix
2065 $test -f /dynix && osname=dynix
2066 $test -f /dnix && osname=dnix
5f05dabc 2067 $test -f /lynx.os && osname=lynxos
2068 $test -f /unicos && osname=unicos && osvers=`$uname -r`
7a4c00b4 2069 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2070 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2071 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2072 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2073 $test -d /usr/apollo/bin && osname=apollo
2074 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2075 $test -d /usr/include/minix && osname=minix
e060872b 2076 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2077 osname=machten
4633a7c4 2078 if $test -x /sbin/version; then
dfe9444c 2079 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2080 $sed -e 's/[A-Za-z]$//'`
2081 elif $test -x /usr/etc/version; then
dfe9444c 2082 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2083 $sed -e 's/[A-Za-z]$//'`
2084 else
2085 osvers="$2.$3"
2086 fi
2087 fi
85ab1d1d
JH
2088 $test -f /sys/posix.dll &&
2089 $test -f /usr/bin/what &&
2090 set X `/usr/bin/what /sys/posix.dll` &&
2091 $test "$3" = UWIN &&
2092 osname=uwin &&
2093 osvers="$5"
2304df62
AD
2094 if $test -f $uname; then
2095 set X $myuname
2096 shift
2097
2304df62 2098 case "$5" in
85e6fe83 2099 fps*) osname=fps ;;
2304df62
AD
2100 mips*)
2101 case "$4" in
85e6fe83
LW
2102 umips) osname=umips ;;
2103 *) osname=mips ;;
2304df62 2104 esac;;
85e6fe83
LW
2105 [23]100) osname=mips ;;
2106 next*) osname=next ;;
ecfc5424 2107 i386*)
c6912327
JH
2108 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2109 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2110 osname='sco'
2111 osvers=$tmp
2112 elif $test -f /etc/kconfig; then
ecfc5424 2113 osname=isc
bd628c73 2114 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2115 osvers=4
2116 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2117 osvers=3
2304df62 2118 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2119 osvers=2
ecfc5424
AD
2120 fi
2121 fi
2000072c 2122 tmp=''
ecfc5424 2123 ;;
c4f23d77
AD
2124 pc*)
2125 if test -n "$DJGPP"; then
2126 osname=dos
2127 osvers=djgpp
2128 fi
2129 ;;
2304df62
AD
2130 esac
2131
2132 case "$1" in
a0d0e21e
LW
2133 aix) osname=aix
2134 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2135 case "$tmp" in
1aef975c 2136 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2137 '<3240'|'<>3240') osvers=3.2.0 ;;
2138 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2139 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2140 *) osvers=$tmp;;
a0d0e21e
LW
2141 esac
2142 ;;
23f87696
SZ
2143 *dc.osx) osname=dcosx
2144 osvers="$3"
2145 ;;
a0d0e21e
LW
2146 dnix) osname=dnix
2147 osvers="$3"
2148 ;;
2149 domainos) osname=apollo
2150 osvers="$3"
2151 ;;
2152 dgux) osname=dgux
2153 osvers="$3"
2154 ;;
760ac839 2155 dynixptx*) osname=dynixptx
e58e581d 2156 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2157 ;;
a0d0e21e
LW
2158 freebsd) osname=freebsd
2159 osvers="$3" ;;
2160 genix) osname=genix ;;
2161 hp*) osname=hpux
bfb7748a 2162 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2163 ;;
a78b0d02 2164 irix*) osname=irix
a0d0e21e
LW
2165 case "$3" in
2166 4*) osvers=4 ;;
2167 5*) osvers=5 ;;
ecfc5424 2168 *) osvers="$3" ;;
a0d0e21e
LW
2169 esac
2170 ;;
2171 linux) osname=linux
2172 case "$3" in
a0d0e21e
LW
2173 *) osvers="$3" ;;
2174 esac
2175 ;;
28e8609d
JH
2176 MiNT) osname=mint
2177 ;;
2178 netbsd*) osname=netbsd
ecfc5424
AD
2179 osvers="$3"
2180 ;;
4e81affe
MM
2181 news-os) osvers="$3"
2182 case "$3" in
2183 4*) osname=newsos4 ;;
2184 *) osname=newsos ;;
2185 esac
2186 ;;
a0d0e21e
LW
2187 bsd386) osname=bsd386
2188 osvers=`$uname -r`
2189 ;;
a1a0e61e
TD
2190 POSIX-BC | posix-bc ) osname=posix-bc
2191 osvers="$3"
2192 ;;
ae3afa4e
TH
2193 powerux | power_ux | powermax_os | powermaxos | \
2194 powerunix | power_unix) osname=powerux
2195 osvers="$3"
2196 ;;
a0d0e21e
LW
2197 next*) osname=next ;;
2198 solaris) osname=solaris
2199 case "$3" in
2200 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2201 *) osvers="$3" ;;
a0d0e21e
LW
2202 esac
2203 ;;
85e6fe83
LW
2204 sunos) osname=sunos
2205 case "$3" in
85e6fe83
LW
2206 5*) osname=solaris
2207 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2208 *) osvers="$3" ;;
2304df62
AD
2209 esac
2210 ;;
a0d0e21e 2211 titanos) osname=titanos
85e6fe83 2212 case "$3" in
a0d0e21e
LW
2213 1*) osvers=1 ;;
2214 2*) osvers=2 ;;
2215 3*) osvers=3 ;;
2216 4*) osvers=4 ;;
ecfc5424 2217 *) osvers="$3" ;;
2304df62
AD
2218 esac
2219 ;;
85e6fe83 2220 ultrix) osname=ultrix
ecfc5424 2221 osvers="$3"
2304df62 2222 ;;
28757baa 2223 osf1|mls+) case "$5" in
fed7345c
AD
2224 alpha)
2225 osname=dec_osf
313489a2 2226 osvers=`echo "$3" | sed 's/^[xvt]//'`
ecfc5424
AD
2227 ;;
2228 hp*) osname=hp_osf1 ;;
2229 mips) osname=mips_osf1 ;;
85e6fe83
LW
2230 esac
2231 ;;
a0d0e21e
LW
2232 uts) osname=uts
2233 osvers="$3"
2234 ;;
ff68c719 2235 qnx) osname=qnx
2236 osvers="$4"
2237 ;;
85e6fe83 2238 $2) case "$osname" in
2304df62 2239 *isc*) ;;
a0d0e21e 2240 *freebsd*) ;;
5f05dabc 2241 svr*)
a0d0e21e
LW
2242 : svr4.x or possibly later
2243 case "svr$3" in
2244 ${osname}*)
2245 osname=svr$3
2246 osvers=$4
2247 ;;
2248 esac
2249 case "$osname" in
2250 svr4.0)
2251 : Check for ESIX
2252 if test -f /stand/boot ; then
2253 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2254 if test -n "$INITPROG" -a -f "$INITPROG"; then
2255 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2256 if test -n "$isesix"; then
a0d0e21e
LW
2257 osname=esix4
2258 fi
2259 fi
2260 fi
2261 ;;
2262 esac
2263 ;;
2304df62 2264 *) if test -f /etc/systemid; then
a0d0e21e
LW
2265 osname=sco
2266 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2267 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2268 osvers=$1.$2.$3
c4f23d77 2269 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2270 osvers=$1.$2
c4f23d77 2271 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2272 osvers=$1
2304df62 2273 fi
a0d0e21e
LW
2274 else
2275 case "$osname" in
2276 '') : Still unknown. Probably a generic Sys V.
2277 osname="sysv"
2278 osvers="$3"
2279 ;;
2280 esac
2304df62
AD
2281 fi
2282 ;;
2283 esac
2284 ;;
a0d0e21e
LW
2285 *) case "$osname" in
2286 '') : Still unknown. Probably a generic BSD.
2287 osname="$1"
2288 osvers="$3"
2289 ;;
2290 esac
2291 ;;
2304df62
AD
2292 esac
2293 else
dfe9444c
AD
2294 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2295 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2296 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2297 osname=news_os
2304df62 2298 fi
dfe9444c 2299 $rm -f UU/kernel.what
8e07c86e
AD
2300 elif test -d c:/.; then
2301 set X $myuname
2302 osname=os2
2303 osvers="$5"
2304df62
AD
2304 fi
2305 fi
85e6fe83 2306
a0d0e21e
LW
2307 : Now look for a hint file osname_osvers, unless one has been
2308 : specified already.
2309 case "$hintfile" in
2310 ''|' ')
ecfc5424 2311 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
a0d0e21e 2312 : Also try without trailing minor version numbers.
ecfc5424
AD
2313 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2314 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2315 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2316 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
a0d0e21e
LW
2317 case "$file" in
2318 '') dflt=none ;;
2319 *) case "$osvers" in
2320 '') dflt=$file
2321 ;;
dfe9444c 2322 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2323 dflt=$file
dfe9444c 2324 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2325 dflt=$xfile
dfe9444c 2326 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2327 dflt=$xxfile
dfe9444c 2328 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2329 dflt=$xxxfile
dfe9444c 2330 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2331 dflt=$xxxxfile
dfe9444c 2332 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2333 dflt="${osname}"
2334 else
2335 dflt=none
2336 fi
2337 ;;
2338 esac
85e6fe83
LW
2339 ;;
2340 esac
4e2a5f63
AD
2341 if $test -f Policy.sh ; then
2342 case "$dflt" in
2343 *Policy*) ;;
2344 none) dflt="Policy" ;;
2345 *) dflt="Policy $dflt" ;;
2346 esac
2347 fi
85e6fe83 2348 ;;
a0d0e21e 2349 *)
ecfc5424 2350 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2351 ;;
2304df62 2352 esac
1aef975c 2353
4e2a5f63
AD
2354 if $test -f Policy.sh ; then
2355 $cat <<EOM
2356
2357There's also a Policy hint file available, which should make the
2358site-specific (policy) questions easier to answer.
2359EOM
2360
2361 fi
2362
2304df62
AD
2363 $cat <<EOM
2364
2365You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63
AD
2366A well-behaved OS will have no hints, so answering "none" or just "Policy"
2367is a good thing. DO NOT give a wrong version.
2304df62
AD
2368
2369EOM
4e2a5f63 2370
2304df62 2371 rp="Which of these apply, if any?"
dfe9444c 2372 . UU/myread
85e6fe83
LW
2373 tans=$ans
2374 for file in $tans; do
4e2a5f63
AD
2375 if $test X$file = XPolicy -a -f Policy.sh; then
2376 . Policy.sh
2377 $cat Policy.sh >> UU/config.sh
2378 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2379 . $src/hints/$file.sh
2380 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2381 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2382 : nothing
2383 else
85e6fe83
LW
2384 : Give one chance to correct a possible typo.
2385 echo "$file.sh does not exist"
2386 dflt=$file
2387 rp="hint to use instead?"
dfe9444c 2388 . UU/myread
85e6fe83 2389 for file in $ans; do
dfe9444c
AD
2390 if $test -f "$src/hints/$file.sh"; then
2391 . $src/hints/$file.sh
2392 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2393 elif $test X$ans = X -o X$ans = Xnone ; then
2394 : nothing
2395 else
2396 echo "$file.sh does not exist -- ignored."
2397 fi
2398 done
2304df62
AD
2399 fi
2400 done
85e6fe83 2401
2304df62 2402 hint=recommended
85e6fe83 2403 : Remember our hint file for later.
dfe9444c 2404 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2405 hintfile="$file"
85e6fe83 2406 else
a0d0e21e 2407 hintfile=''
85e6fe83 2408 fi
2304df62
AD
2409fi
2410cd UU
2411;;
2412*)
2413 echo " "
2414 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2415 tmp_n="$n"
2416 tmp_c="$c"
2304df62
AD
2417 cd ..
2418 cp $config_sh config.sh 2>/dev/null
a78b0d02 2419 chmod +w config.sh
2304df62
AD
2420 . ./config.sh
2421 cd UU
2422 cp ../config.sh .
ecfc5424
AD
2423 n="$tmp_n"
2424 c="$tmp_c"
2304df62
AD
2425 hint=previous
2426 ;;
2427esac
1aef975c
AD
2428test "$override" && . ./optdef.sh
2429myuname="$newmyuname"
2304df62
AD
2430
2431: Restore computed paths
2432for file in $loclist $trylist; do
2433 eval $file="\$_$file"
2434done
2435
85e6fe83 2436cat << EOM
a0d0e21e 2437
85e6fe83 2438Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2439The default value is probably right if the name rings a bell. Otherwise,
2440since spelling matters for me, either accept the default or answer "none"
2441to leave it blank.
a0d0e21e 2442
85e6fe83 2443EOM
85e6fe83 2444case "$osname" in
a0d0e21e 2445 ''|' ')
85e6fe83 2446 case "$hintfile" in
a0d0e21e 2447 ''|' '|none) dflt=none ;;
ecfc5424 2448 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2449 esac
2450 ;;
2451 *) dflt="$osname" ;;
2452esac
2453rp="Operating system name?"
2454. ./myread
2455case "$ans" in
ecfc5424
AD
2456none) osname='' ;;
2457*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2458esac
8ff267be 2459echo " "
2460case "$osvers" in
2461 ''|' ')
2462 case "$hintfile" in
2463 ''|' '|none) dflt=none ;;
2464 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2465 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2466 case "$dflt" in
2467 ''|' ') dflt=none ;;
2468 esac
2469 ;;
2470 esac
2471 ;;
2472 *) dflt="$osvers" ;;
2473esac
2474rp="Operating system version?"
2475. ./myread
2476case "$ans" in
2477none) osvers='' ;;
2478*) osvers="$ans" ;;
2479esac
2480
2304df62 2481: who configured the system
59b83a6f 2482cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2483cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2484case "$cf_by" in
2485"")
8ff267be 2486 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2487 case "$cf_by" in
2488 "") cf_by=unknown ;;
8ff267be 2489 esac ;;
2490esac
2304df62 2491
dfe9444c
AD
2492: set up the script used to warn in case of inconsistency
2493cat <<EOS >whoa
2494$startsh
2495EOS
2496cat <<'EOSC' >>whoa
2497dflt=y
2498echo " "
2499echo "*** WHOA THERE!!! ***" >&4
2500echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2501rp=" Keep the $hint value?"
2502. ./myread
2503case "$ans" in
2504y) td=$was; tu=$was;;
2505esac
2506EOSC
2507
2508: function used to set $1 to $val
2509setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2510case "$val$was" in
2511$define$undef) . ./whoa; eval "$var=\$td";;
2512$undef$define) . ./whoa; eval "$var=\$tu";;
2513*) eval "$var=$val";;
2514esac'
2515
64e689dc
JH
2516cat <<EOM
2517
2518Perl can be built to take advantage of threads, on some systems.
2519To do so, Configure must be run with -Dusethreads.
d00b958f
JH
2520
2521Note that threading is a highly experimental feature, and
2522some known race conditions still remain. If you choose to try
2523it, be very sure to not actually deploy it for production
2524purposes. README.threads has more details, and is required
2525reading if you enable threads.
64e689dc 2526EOM
dfe9444c 2527case "$usethreads" in
b691c02f 2528$define|true|[yY]*) dflt='y';;
64e689dc
JH
2529*) dflt='n';;
2530esac
2531rp='Build a threading Perl?'
2532. ./myread
2533case "$ans" in
b691c02f 2534y|Y) val="$define" ;;
64e689dc 2535*) val="$undef" ;;
dfe9444c 2536esac
64e689dc
JH
2537set usethreads
2538eval $setvar
104d25b7 2539
693762b4
AD
2540case "$d_oldpthreads" in
2541'') : Configure tests would be welcome here. For now, assume undef.
2542 val="$undef" ;;
2543*) val="$d_oldpthreads" ;;
2544esac
2545set d_oldpthreads
2546eval $setvar
dfe9444c 2547
b691c02f
JH
2548
2549case "$usethreads" in
104d25b7
JH
2550"$define"|true|[yY]*)
2551: Look for a hint-file generated 'call-back-unit'. If the
2552: user has specified that a threading perl is to be built,
2553: we may need to set or change some other defaults.
2554 if $test -f usethreads.cbu; then
2555 . ./usethreads.cbu
2556 fi
2557 case "$osname" in
68c15b6f 2558 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
104d25b7
JH
2559 # Known thread-capable platforms.
2560 ;;
2561 *)
b691c02f 2562 cat >&4 <<EOM
b691c02f 2563$osname is not known to support threads.
dec9635e 2564Please let perlbug@perl.com know how to do that.
b691c02f
JH
2565
2566Cannot continue, aborting.
2567EOM
104d25b7 2568 exit 1
b691c02f 2569 ;;
104d25b7 2570 esac # $osname
b691c02f
JH
2571 ;;
2572esac # $usethreads
104d25b7 2573
64e689dc
JH
2574cat <<EOM
2575
2576Perl can be built so that multiple Perl interpreters can coexist
2577within the same Perl executable. To do so, Configure must be run with
2578-Dusemultiplicity.
2579
2580Normally you do not need this and you should answer no.
2581
2582EOM
85ab1d1d 2583case "$usemultiplicity" in
64e689dc
JH
2584$define|true|[yY]*) dflt='y';;
2585*) dflt='n';;
85ab1d1d 2586esac
64e689dc
JH
2587rp='Build Perl for multiplicity?'
2588. ./myread
2589case "$ans" in
2590y|Y) val="$define" ;;
2591*) val="$undef" ;;
2592esac
2593set usemultiplicity
2594eval $setvar
2595
2596cat <<EOM
2597
2598Perl can be built to take advantage of explicit 64-bit interfaces,
2599on some systems. To do so, Configure must be run with -Duse64bits.
2600
2601If this doesn't make any sense to you, just accept the default 'n'.
2602EOM
85ab1d1d 2603case "$use64bits" in
64e689dc
JH
2604$define|true|[yY]*) dflt='y';;
2605*) dflt='n';;
2606esac
2607rp='Try to use explicit 64-bit interfaces, if available?'
2608. ./myread
2609case "$ans" in
2610y|Y)
2611 val="$define"
2612 ;;
2613*)
2614 val="$undef"
2615 ;;
85ab1d1d 2616esac
64e689dc
JH
2617set use64bits
2618eval $setvar
85ab1d1d 2619
104d25b7
JH
2620case "$archname64" in
2621'') archname64='' ;; # not a typo
2622esac
85ab1d1d 2623
b691c02f 2624case "$use64bits" in
104d25b7
JH
2625"$define"|true|[yY]*)
2626: Look for a hint-file generated 'call-back-unit'. If the
2627: user has specified that a threading perl is to be built,
2628: we may need to set or change some other defaults.
2629 if $test -f use64bits.cbu; then
2630 . ./use64bits.cbu
2631 fi
b691c02f 2632 case "$osname" in
efeaa891 2633 aix|dec_osf|hpux|irix|solaris|unicos)
104d25b7 2634 # Known 64-bit capable platforms.
b691c02f 2635 ;;
b691c02f 2636 *)
104d25b7 2637 cat >&4 <<EOM
b691c02f 2638$osname is not known to support 64-bit interfaces.
dec9635e 2639Please let perlbug@perl.com know how to do that.
b691c02f
JH
2640
2641Cannot continue, aborting.
2642EOM
104d25b7
JH
2643 exit 1
2644 ;;
b691c02f
JH
2645 esac
2646 ;;
2647esac
104d25b7 2648
4633a7c4 2649: determine the architecture name
2304df62 2650echo " "
4633a7c4
LW
2651if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2652 tarch=`arch`"-$osname"
2653elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2654 if uname -m > tmparch 2>&1 ; then
7e1af8bc 2655 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5f05dabc 2656 -e 's/$/'"-$osname/" tmparch`
4633a7c4
LW
2657 else
2658 tarch="$osname"
2659 fi
2660 $rm -f tmparch
2661else
2662 tarch="$osname"
2663fi
2664case "$myarchname" in
2665''|"$tarch") ;;
2666*)
2667 echo "(Your architecture name used to be $myarchname.)"
2668 archname=''
2304df62
AD
2669 ;;
2670esac
85ab1d1d 2671myarchname="$tarch"
4633a7c4
LW
2672case "$archname" in
2673'') dflt="$tarch";;
2674*) dflt="$archname";;
2675esac
2676rp='What is your architecture name'
2677. ./myread
85ab1d1d 2678archname="$ans"
dc66995c 2679case "$usethreads" in
85ab1d1d
JH
2680$define)
2681 echo "Threads selected." >&4
2682 case "$archname" in
2683 *-thread*) echo "...and architecture name already has -thread." >&4
2684 ;;
2685 *) archname="$archname-thread"
2686 echo "...setting architecture name to $archname." >&4
2687 ;;
2688 esac
2689 ;;
dc66995c 2690esac
85ab1d1d
JH
2691case "$usemultiplicity" in
2692$define)
2693 echo "Multiplicity selected." >&4
2694 case "$archname" in
2695 *-multi*) echo "...and architecture name already has -multi." >&4
2696 ;;
2697 *) archname="$archname-multi"
2698 echo "...setting architecture name to $archname." >&4
2699 ;;
2700 esac
2701 ;;
2702esac
2703case "$use64bits" in
2704$define)
2705 echo "Explicit 64-bitness selected." >&4
2706 case "$archname64" in
2707 '')
2708 ;;
2709 *)
2710 case "$archname" in
2711 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2712 ;;
2713 *) archname="$archname-$archname64"
2714 echo "...setting architecture name to $archname." >&4
2715 ;;
2716 esac
2717 ;;
2718 esac
2719esac
2720
4633a7c4
LW
2721: is AFS running?
2722echo " "
2afac517 2723case "$afs" in
2724$define|true) afs=true ;;
2725$undef|false) afs=false ;;
2726*) if test -d /afs; then
2727 afs=true
2728 else
2729 afs=false
2730 fi
2731 ;;
2732esac
2733if $afs; then
4633a7c4 2734 echo "AFS may be running... I'll be extra cautious then..." >&4
2304df62 2735else
4633a7c4 2736 echo "AFS does not seem to be running..." >&4
2304df62
AD
2737fi
2738
4633a7c4
LW
2739: decide how portable to be. Allow command line overrides.
2740case "$d_portable" in
2741"$undef") ;;
2742*) d_portable="$define" ;;
2304df62 2743esac
2304df62 2744
4633a7c4
LW
2745: set up shell script to do ~ expansion
2746cat >filexp <<EOSS
2747$startsh
2748: expand filename
2749case "\$1" in
2750 ~/*|~)
2751 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2304df62 2752 ;;
4633a7c4
LW
2753 ~*)
2754 if $test -f /bin/csh; then
2755 /bin/csh -f -c "glob \$1"
2756 failed=\$?
2757 echo ""
2758 exit \$failed
2759 else
2760 name=\`$expr x\$1 : '..\([^/]*\)'\`
2761 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2762 if $test ! -d "\$dir"; then
2763 me=\`basename \$0\`
2764 echo "\$me: can't locate home directory for: \$name" >&2
2765 exit 1
2766 fi
2767 case "\$1" in
2768 */*)
2769 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2770 ;;
2771 *)
2772 echo \$dir
2773 ;;
2304df62 2774 esac
4633a7c4 2775 fi
2304df62
AD
2776 ;;
2777*)
4633a7c4 2778 echo \$1
2304df62
AD
2779 ;;
2780esac
4633a7c4
LW
2781EOSS
2782chmod +x filexp
2783$eunicefix filexp
2304df62
AD
2784
2785: now set up to get a file name
28757baa 2786cat <<EOS >getfile
2787$startsh
2788EOS
2789cat <<'EOSC' >>getfile
2304df62
AD
2790tilde=''
2791fullpath=''
2792already=''
2793skip=''
2794none_ok=''
2795exp_file=''
a0d0e21e 2796nopath_ok=''
2304df62
AD
2797orig_rp="$rp"
2798orig_dflt="$dflt"
2799
2800case "$fn" in
ecfc5424 2801*\(*)
28e8609d 2802 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
2803 fn=`echo $fn | sed 's/(.*)//'`
2804 ;;
2805esac
2806
2807case "$fn" in
a0d0e21e
LW
2808*:*)
2809 loc_file=`expr $fn : '.*:\(.*\)'`
2810 fn=`expr $fn : '\(.*\):.*'`
2811 ;;
2812esac
2813
2814case "$fn" in
2304df62
AD
2815*~*) tilde=true;;
2816esac
2817case "$fn" in
2818*/*) fullpath=true;;
2819esac
2820case "$fn" in
2821*+*) skip=true;;
2822esac
2823case "$fn" in
2824*n*) none_ok=true;;
2825esac
2826case "$fn" in
2827*e*) exp_file=true;;
2828esac
a0d0e21e
LW
2829case "$fn" in
2830*p*) nopath_ok=true;;
2831esac
2304df62
AD
2832
2833case "$fn" in
2834*f*) type='File';;
2835*d*) type='Directory';;
a0d0e21e 2836*l*) type='Locate';;
2304df62
AD
2837esac
2838
2839what="$type"
2840case "$what" in
2841Locate) what='File';;
2842esac
2843
2844case "$exp_file" in
2845'')
2846 case "$d_portable" in
2847 "$define") ;;
2848 *) exp_file=true;;
2849 esac
2850 ;;
2851esac
2852
2853cd ..
2854while test "$type"; do
2855 redo=''
2856 rp="$orig_rp"
2857 dflt="$orig_dflt"
2858 case "$tilde" in
2859 true) rp="$rp (~name ok)";;
2860 esac
2861 . UU/myread
ecfc5424
AD
2862 if test -f UU/getfile.ok && \
2863 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2864 then
2865 value="$ans"
2866 ansexp="$ans"
2867 break
2868 fi
2304df62
AD
2869 case "$ans" in
2870 none)
2871 value=''
2872 ansexp=''
2873 case "$none_ok" in
2874 true) type='';;
2875 esac
2876 ;;
2877 *)
2878 case "$tilde" in
2879 '') value="$ans"
2880 ansexp="$ans";;
2881 *)
2882 value=`UU/filexp $ans`
2883 case $? in
2884 0)
2885 if test "$ans" != "$value"; then
ecfc5424 2886 echo "(That expands to $value on this system.)"
2304df62
AD
2887 fi
2888 ;;
2889 *) value="$ans";;
2890 esac
2891 ansexp="$value"
2892 case "$exp_file" in
2893 '') value="$ans";;
2894 esac
2895 ;;
2896 esac
2897 case "$fullpath" in
2898 true)
2899 case "$ansexp" in
2900 /*) value="$ansexp" ;;
2901 *)
2902 redo=true
2903 case "$already" in
2904 true)
2905 echo "I shall only accept a full path name, as in /bin/ls." >&4
2906 echo "Use a ! shell escape if you wish to check pathnames." >&4
2907 ;;
2908 *)
2909 echo "Please give a full path name, starting with slash." >&4
2910 case "$tilde" in
2911 true)
2912 echo "Note that using ~name is ok provided it expands well." >&4
2913 already=true
2914 ;;
2915 esac
2916 esac
2917 ;;
2918 esac
2919 ;;
2920 esac
2921 case "$redo" in
2922 '')
2923 case "$type" in
2924 File)
2925 if test -f "$ansexp"; then
2926 type=''
2927 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2928 then
2929 echo "($value is not a plain file, but that's ok.)"
2930 type=''
2931 fi
2932 ;;
2933 Directory)
2934 if test -d "$ansexp"; then
2935 type=''
2936 fi
2937 ;;
2938 Locate)
40000a8c 2939 if test -d "$ansexp"; then
a0d0e21e
LW
2940 echo "(Looking for $loc_file in directory $value.)"
2941 value="$value/$loc_file"
40000a8c 2942 ansexp="$ansexp/$loc_file"
2304df62 2943 fi
40000a8c 2944 if test -f "$ansexp"; then
2304df62
AD
2945 type=''
2946 fi
a0d0e21e
LW
2947 case "$nopath_ok" in
2948 true) case "$value" in
2949 */*) ;;
2950 *) echo "Assuming $value will be in people's path."
2951 type=''
2952 ;;
2953 esac
2954 ;;
2955 esac
2304df62
AD
2956 ;;
2957 esac
2958
2959 case "$skip" in
2960 true) type='';
2961 esac
2962
2963 case "$type" in
2964 '') ;;
2965 *)
2966 if test "$fastread" = yes; then
2967 dflt=y
2968 else
2969 dflt=n
2970 fi
2971 rp="$what $value doesn't exist. Use that name anyway?"
2972 . UU/myread
2973 dflt=''
2974 case "$ans" in
2975 y*) type='';;
2976 *) echo " ";;
2977 esac
2978 ;;
2979 esac
2980 ;;
2981 esac
2982 ;;
2983 esac
2984done
2985cd UU
2986ans="$value"
2987rp="$orig_rp"
2988dflt="$orig_dflt"
ecfc5424 2989rm -f getfile.ok
2304df62
AD
2990EOSC
2991
4633a7c4
LW
2992: determine root of directory hierarchy where package will be installed.
2993case "$prefix" in
2994'')
2995 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
8e07c86e 2996 ;;
4633a7c4
LW
2997*)
2998 dflt="$prefix"
8e07c86e
AD
2999 ;;
3000esac
4633a7c4 3001$cat <<EOM
2304df62 3002
4633a7c4
LW
3003By default, $package will be installed in $dflt/bin, manual
3004pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3005all installation directories. Typically set to /usr/local, but you
3006may choose /usr if you wish to install $package among your system
3007binaries. If you wish to have binaries under /bin but manual pages
3008under /usr/local/man, that's ok: you will be prompted separately
3009for each of the installation directories, the prefix being only used
3010to set the defaults.
8e07c86e
AD
3011
3012EOM
3013fn=d~
3014rp='Installation prefix to use?'
3015. ./getfile
3016oldprefix=''
3017case "$prefix" in
a0d0e21e 3018'') ;;
8e07c86e
AD
3019*)
3020 case "$ans" in
3021 "$prefix") ;;
3022 *) oldprefix="$prefix";;
3023 esac
3024 ;;
a0d0e21e 3025esac
8e07c86e
AD
3026prefix="$ans"
3027prefixexp="$ansexp"
a0d0e21e 3028
8e07c86e
AD
3029: set the prefixit variable, to compute a suitable default value
3030prefixit='case "$3" in
3031""|none)
3032 case "$oldprefix" in
3033 "") eval "$1=\"\$$2\"";;
3034 *)
3035 case "$3" in
3036 "") eval "$1=";;
3037 none)
3038 eval "tp=\"\$$2\"";
3039 case "$tp" in
3040 ""|" ") eval "$1=\"\$$2\"";;
3041 *) eval "$1=";;
3042 esac;;
3043 esac;;
3044 esac;;
3045*)
3046 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3047 case "$tp" in
3048 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3049 /*-$oldprefix/*|\~*-$oldprefix/*)
3050 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3051 *) eval "$1=\"\$$2\"";;
3052 esac;;
3053esac'
a0d0e21e 3054
bfb7748a
AD
3055: set the base revision
3056baserev=5.0
3057
3058: get the patchlevel
3059echo " "
3060echo "Getting the current patchlevel..." >&4
3061if $test -r $rsrc/patchlevel.h;then
d00b958f
JH
3062 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3063 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
bfb7748a
AD
3064else
3065 patchlevel=0
3066 subversion=0
3067fi
3068$echo $n "(You have $package" $c
3069case "$package" in
3070"*$baserev") ;;
3071*) $echo $n " $baserev" $c ;;
3072esac
3073$echo $n " patchlevel $patchlevel" $c
3074test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3075echo ".)"
3076
3077if test 0 -eq "$subversion"; then
3078 version=`LC_ALL=C; export LC_ALL; \
3079 echo $baserev $patchlevel | \
3080 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3081else
3082 version=`LC_ALL=C; export LC_ALL; \
3083 echo $baserev $patchlevel $subversion | \
3084 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3085fi
3086: Figure out perl API version. Perhaps this should be in patchlevel.h
3087if test "$subversion" -lt 50; then
3088 apiversion=`LC_ALL=C; export LC_ALL; \
59b83a6f 3089 LANGUAGE=C; export LANGUAGE; \
bfb7748a
AD
3090 echo $baserev $patchlevel | \
3091 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3092else
3093 apiversion="$version"
3094fi
3095
4633a7c4 3096: determine where private library files go
3a6175e1
AD
3097: Usual default is /usr/local/lib/perl5/$version.
3098: Also allow things like /opt/perl/lib/$version, since
bfb7748a 3099: /opt/perl/lib/perl5... would be redundant.
4633a7c4 3100case "$prefix" in
3a6175e1
AD
3101*perl*) set dflt privlib lib/$version ;;
3102*) set dflt privlib lib/$package/$version ;;
4633a7c4 3103esac
8e07c86e 3104eval $prefixit
4633a7c4
LW
3105$cat <<EOM
3106
3107There are some auxiliary files for $package that need to be put into a
3108private library directory that is accessible by everyone.
3109
3110EOM
3111fn=d~+
3112rp='Pathname where the private library files will reside?'
8e07c86e 3113. ./getfile
4633a7c4
LW
3114if $test "X$privlibexp" != "X$ansexp"; then
3115 installprivlib=''
8e07c86e 3116fi
4633a7c4
LW
3117privlib="$ans"
3118privlibexp="$ansexp"
8e07c86e
AD
3119if $afs; then
3120 $cat <<EOM
2304df62 3121
8e07c86e 3122Since you are running AFS, I need to distinguish the directory in which
4633a7c4 3123private files reside from the directory in which they are installed (and from
8e07c86e 3124which they are presumably copied to the former directory by occult means).
a0d0e21e 3125
8e07c86e 3126EOM
4633a7c4
LW
3127 case "$installprivlib" in
3128 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3129 *) dflt="$installprivlib";;
8e07c86e
AD
3130 esac
3131 fn=de~
4633a7c4 3132 rp='Where will private files be installed?'
8e07c86e 3133 . ./getfile
4633a7c4 3134 installprivlib="$ans"
8e07c86e 3135else
4633a7c4
LW
3136 installprivlib="$privlibexp"
3137fi
3138
8e07c86e
AD
3139: set the prefixup variable, to restore leading tilda escape
3140prefixup='case "$prefixexp" in
3141"$prefix") ;;
3142*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3143esac'
3144
4633a7c4
LW
3145: determine where public architecture dependent libraries go
3146set archlib archlib
8e07c86e 3147eval $prefixit
3a6175e1 3148: privlib default is /usr/local/lib/$package/$version
bfb7748a 3149: archlib default is /usr/local/lib/$package/$version/$archname
3a6175e1 3150: privlib may have an optional trailing /share.
bfb7748a
AD
3151tdflt=`echo $privlib | $sed 's,/share$,,'`
3152tdflt=$tdflt/$archname
4633a7c4 3153case "$archlib" in
bfb7748a 3154'') dflt=$tdflt
8e07c86e 3155 ;;
bfb7748a 3156*) dflt="$archlib"
774d564b 3157 ;;
8e07c86e 3158esac
4633a7c4
LW
3159cat <<EOM
3160
3161$spackage contains architecture-dependent library files. If you are
3162sharing libraries in a heterogeneous environment, you might store
3163these files in a separate location. Otherwise, you can just include
3164them with the rest of the public library files.
3165
8e07c86e 3166EOM
4633a7c4
LW
3167fn=d+~
3168rp='Where do you want to put the public architecture-dependent libraries?'
8e07c86e 3169. ./getfile
4633a7c4
LW
3170archlib="$ans"
3171archlibexp="$ansexp"
3172
8e07c86e
AD
3173if $afs; then
3174 $cat <<EOM
3175
7bac28a0 3176Since you are running AFS, I need to distinguish the directory in
3177which architecture-dependent library files reside from the directory
3178in which they are installed (and from which they are presumably copied
3179to the former directory by occult means).
8e07c86e
AD
3180
3181EOM
4633a7c4
LW
3182 case "$installarchlib" in
3183 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3184 *) dflt="$installarchlib";;
8e07c86e
AD
3185 esac
3186 fn=de~
4633a7c4 3187 rp='Where will architecture-dependent library files be installed?'
8e07c86e 3188 . ./getfile
4633a7c4 3189 installarchlib="$ans"
8e07c86e 3190else
4633a7c4
LW
3191 installarchlib="$archlibexp"
3192fi
3193if $test X"$archlib" = X"$privlib"; then
3194 d_archlib="$undef"
3195else
3196 d_archlib="$define"
8e07c86e
AD
3197fi
3198
40a7a20a 3199: make some quick guesses about what we are up against
3200echo " "
3201$echo $n "Hmm... $c"
3202echo exit 1 >bsd
3203echo exit 1 >usg
3204echo exit 1 >v7
3205echo exit 1 >osf1
3206echo exit 1 >eunice
3207echo exit 1 >xenix
3208echo exit 1 >venix
8ff267be 3209echo exit 1 >os2
40a7a20a 3210d_bsd="$undef"
3211$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3212if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3213then
3214 echo "Looks kind of like an OSF/1 system, but we'll see..."
3215 echo exit 0 >osf1
3216elif test `echo abc | tr a-z A-Z` = Abc ; then
3217 xxx=`./loc addbib blurfl $pth`
3218 if $test -f $xxx; then
3219 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3220 echo exit 0 >bsd
3221 echo exit 0 >usg
3222 else
3223 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3224 echo "Looks kind of like an extended USG system, but we'll see..."
3225 else
3226 echo "Looks kind of like a USG system, but we'll see..."
3227 fi
3228 echo exit 0 >usg
3229 fi
3230elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3231 echo "Looks kind of like a BSD system, but we'll see..."
3232 d_bsd="$define"
3233 echo exit 0 >bsd
3234else
3235 echo "Looks kind of like a Version 7 system, but we'll see..."
3236 echo exit 0 >v7
3237fi
3238case "$eunicefix" in
3239*unixtovms*)
3240 $cat <<'EOI'
3241There is, however, a strange, musty smell in the air that reminds me of
3242something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3243EOI
3244 echo exit 0 >eunice
3245 d_eunice="$define"
3246: it so happens the Eunice I know will not run shell scripts in Unix format
3247 ;;
3248*)
3249 echo " "
3250 echo "Congratulations. You aren't running Eunice."
3251 d_eunice="$undef"
3252 ;;
3253esac
8ff267be 3254: Detect OS2. The p_ variable is set above in the Head.U unit.
3255case "$p_" in
3256:) ;;
3257*)
3258 $cat <<'EOI'
3259I have the feeling something is not exactly right, however...don't tell me...
3260lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3261EOI
3262 echo exit 0 >os2
3263 ;;
3264esac
40a7a20a 3265if test -f /xenix; then
3266 echo "Actually, this looks more like a XENIX system..."
3267 echo exit 0 >xenix
3268 d_xenix="$define"
3269else
3270 echo " "
3271 echo "It's not Xenix..."
3272 d_xenix="$undef"
3273fi
3274chmod +x xenix
3275$eunicefix xenix
3276if test -f /venix; then
3277 echo "Actually, this looks more like a VENIX system..."
3278 echo exit 0 >venix
3279else
3280 echo " "
3281 if ./xenix; then
3282 : null
3283 else
3284 echo "Nor is it Venix..."
3285 fi
3286fi
8ff267be 3287chmod +x bsd usg v7 osf1 eunice xenix venix os2
3288$eunicefix bsd usg v7 osf1 eunice xenix venix os2
40a7a20a 3289$rm -f foo
3290
3291: see if setuid scripts can be secure
3292$cat <<EOM
3293
3294Some kernels have a bug that prevents setuid #! scripts from being
3295secure. Some sites have disabled setuid #! scripts because of this.
3296
3297First let's decide if your kernel supports secure setuid #! scripts.
3298(If setuid #! scripts would be secure but have been disabled anyway,
3299don't say that they are secure if asked.)
3300
3301EOM
3302
3303val="$undef"
3304if $test -d /dev/fd; then
3305 echo "#!$ls" >reflect
3306 chmod +x,u+s reflect
3307 ./reflect >flect 2>&1
3308 if $contains "/dev/fd" flect >/dev/null; then
3309 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3310 val="$define"
3311 else
3312 $cat <<EOM
3313If you are not sure if they are secure, I can check but I'll need a
3314username and password different from the one you are using right now.
3315If you don't have such a username or don't want me to test, simply
3316enter 'none'.
3317
3318EOM
3319 rp='Other username to test security of setuid scripts with?'
3320 dflt='none'
3321 . ./myread
3322 case "$ans" in
3323 n|none)
3324 case "$d_suidsafe" in
3325 '') echo "I'll assume setuid scripts are *not* secure." >&4
3326 dflt=n;;
3327 "$undef")
3328 echo "Well, the $hint value is *not* secure." >&4
3329 dflt=n;;
3330 *) echo "Well, the $hint value *is* secure." >&4
3331 dflt=y;;
3332 esac
3333 ;;
3334 *)
3335 $rm -f reflect flect
3336 echo "#!$ls" >reflect
3337 chmod +x,u+s reflect
3338 echo >flect
3339 chmod a+w flect
3340 echo '"su" will (probably) prompt you for '"$ans's password."
3341 su $ans -c './reflect >flect'
3342 if $contains "/dev/fd" flect >/dev/null; then
3343 echo "Okay, it looks like setuid scripts are secure." >&4
3344 dflt=y
3345 else
3346 echo "I don't think setuid scripts are secure." >&4
3347 dflt=n
3348 fi
3349 ;;
3350 esac
3351 rp='Does your kernel have *secure* setuid scripts?'
3352 . ./myread
3353 case "$ans" in
3354 [yY]*) val="$define";;
3355 *) val="$undef";;
3356 esac
3357 fi
3358else
3359 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
760ac839 3360 echo "(That's for file descriptors, not floppy disks.)"
40a7a20a 3361 val="$undef"
3362fi
3363set d_suidsafe
3364eval $setvar
3365
3366$rm -f reflect flect
3367
3368: now see if they want to do setuid emulation
3369echo " "
3370val="$undef"
3371case "$d_suidsafe" in
3372"$define")
3373 val="$undef"
3374 echo "No need to emulate SUID scripts since they are secure here." >& 4
3375 ;;
3376*)
3377 $cat <<EOM
3378Some systems have disabled setuid scripts, especially systems where
3379setuid scripts cannot be secure. On systems where setuid scripts have
dfe9444c
AD
3380been disabled, the setuid/setgid bits on scripts are currently
3381useless. It is possible for $package to detect those bits and emulate
3382setuid/setgid in a secure fashion. This emulation will only work if
3383setuid scripts have been disabled in your kernel.
8e07c86e
AD
3384
3385EOM
dfe9444c
AD
3386 case "$d_dosuid" in
3387 "$define") dflt=y ;;
3388 *) dflt=n ;;
3389 esac
3390 rp="Do you want to do setuid/setgid emulation?"
3391 . ./myread
3392 case "$ans" in
3393 [yY]*) val="$define";;
3394 *) val="$undef";;
3395 esac
3396 ;;
4633a7c4 3397esac
dfe9444c 3398set d_dosuid
4633a7c4 3399eval $setvar
8e07c86e 3400
2c7991dc 3401: determine where manual pages are on this system
3402echo " "
3403case "$sysman" in
3404'')
3405 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3406 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3407 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3408 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3409 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3410 sysman=`./loc . /usr/man/man1 $syspath`
3411 ;;
3412esac
3413if $test -d "$sysman"; then
3414 echo "System manual is in $sysman." >&4
3415else
3416 echo "Could not find manual pages in source form." >&4
3417fi
3418
dc45a647
MB
3419: see what memory models we can support
3420case "$models" in
3421'')
3422 $cat >pdp11.c <<'EOP'
d674cd6d 3423int main() {
dc45a647
MB
3424#ifdef pdp11
3425 exit(0);
3426#else
3427 exit(1);
3428#endif
3429}
3430EOP
3431 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3432 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3433 dflt='unsplit split'
3434 else
3435 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3436 case "$tans" in
3437 X) dflt='none';;
3438 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3439 dflt='small'
3440 else
3441 dflt=''
3442 fi
3443 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3444 dflt="$dflt medium"
3445 fi
3446 if $test -d /lib/large || $test -d /usr/lib/large; then
3447 dflt="$dflt large"
3448 fi
3449 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3450 dflt="$dflt huge"
3451 fi
3452 esac
3453 fi;;
3454*) dflt="$models";;
3455esac
8e07c86e 3456$cat <<EOM
dc45a647
MB
3457
3458Some systems have different model sizes. On most systems they are called
3459small, medium, large, and huge. On the PDP11 they are called unsplit and
3460split. If your system doesn't support different memory models, say "none".
3461If you wish to force everything to one memory model, say "none" here and
3462put the appropriate flags later when it asks you for other cc and ld flags.
3463Venix systems may wish to put "none" and let the compiler figure things out.
3464(In the following question multiple model names should be space separated.)
3465
3466The default for most systems is "none".
8e07c86e 3467
8e07c86e 3468EOM
dc45a647
MB
3469rp="Which memory models are supported?"
3470. ./myread
3471models="$ans"
3472
3473case "$models" in
3474none)
3475 small=''
3476 medium=''
3477 large=''
3478 huge=''
3479 unsplit=''
3480 split=''
2c7991dc 3481 ;;
dc45a647
MB
3482*split)
3483 case "$split" in
3484 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3485 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3486 dflt='-i'
3487 else
3488 dflt='none'
3489 fi;;
3490 *) dflt="$split";;
3491 esac
3492 rp="What flag indicates separate I and D space?"
3493 . ./myread
3494 tans="$ans"
3495 case "$tans" in
3496 none) tans='';;
3497 esac
3498 split="$tans"
3499 unsplit='';;
3500*large*|*small*|*medium*|*huge*)
3501 case "$models" in
3502 *large*)
3503 case "$large" in
3504 '') dflt='-Ml';;
3505 *) dflt="$large";;
3506 esac
3507 rp="What flag indicates large model?"
3508 . ./myread
3509 tans="$ans"
3510 case "$tans" in
3511 none) tans='';
3512 esac
3513 large="$tans";;
3514 *) large='';;
3515 esac
3516 case "$models" in
3517 *huge*) case "$huge" in
3518 '') dflt='-Mh';;
3519 *) dflt="$huge";;
3520 esac
3521 rp="What flag indicates huge model?"
3522 . ./myread
3523 tans="$ans"
3524 case "$tans" in
3525 none) tans='';
3526 esac
3527 huge="$tans";;
3528 *) huge="$large";;
3529 esac
3530 case "$models" in
3531 *medium*) case "$medium" in
3532 '') dflt='-Mm';;
3533 *) dflt="$medium";;
3534 esac
3535 rp="What flag indicates medium model?"
3536 . ./myread
3537 tans="$ans"
3538 case "$tans" in
3539 none) tans='';
3540 esac
3541 medium="$tans";;
3542 *) medium="$large";;
3543 esac
3544 case "$models" in
3545 *small*) case "$small" in
3546 '') dflt='none';;
3547 *) dflt="$small";;
3548 esac
3549 rp="What flag indicates small model?"
3550 . ./myread
3551 tans="$ans"
3552 case "$tans" in
3553 none) tans='';
3554 esac
3555 small="$tans";;
3556 *) small='';;
25f94b33 3557 esac
8e07c86e 3558 ;;
dc45a647
MB
3559*)
3560 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
8e07c86e
AD
3561 ;;
3562esac
dc45a647 3563$rm -f pdp11.* pdp11
4e2a5f63 3564
dc45a647
MB
3565: see if we need a special compiler
3566echo " "
3567if ./usg; then
3568 case "$cc" in
3569 '') case "$Mcc" in
3570 /*) dflt='Mcc';;
3571 *) case "$large" in
3572 -M*) dflt='cc';;
3573 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3574 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3575 dflt='cc'
3576 else
3577 dflt='cc -M'
3578 fi
3579 else
3580 dflt='cc'
3581 fi;;
3582 esac;;
3583 esac;;
3584 *) dflt="$cc";;
3585 esac
3586 case "$dflt" in
3587 *M*) $cat <<'EOM'
3588On some older systems the default C compiler will not resolve multiple global
3589references that happen to have the same name. On some such systems the "Mcc"
3590command may be used to force these to be resolved. On other systems a "cc -M"
3591command is required. (Note that the -M flag on other systems indicates a
3592memory model to use!) If you have the Gnu C compiler, you might wish to use
3593that instead.
8e07c86e
AD
3594
3595EOM
dc45a647 3596 ;;
2afac517 3597 esac
dc45a647
MB
3598 rp="Use which C compiler?"
3599 . ./myread
3600 cc="$ans"
4e2a5f63 3601else
dc45a647
MB
3602 case "$cc" in
3603 '') dflt=cc;;
3604 *) dflt="$cc";;
4e2a5f63 3605 esac
dc45a647 3606 rp="Use which C compiler?"
4e2a5f63
AD
3607 . ./myread
3608 cc="$ans"
3609fi
693762b4
AD
3610: Look for a hint-file generated 'call-back-unit'. Now that the
3611: user has specified the compiler, we may need to set or change some
3612: other defaults.
3613if $test -f cc.cbu; then
3614 . ./cc.cbu
3615fi
4e2a5f63
AD
3616echo " "
3617echo "Checking for GNU cc in disguise and/or its version number..." >&4
3618$cat >gccvers.c <<EOM
3619#include <stdio.h>
3620int main() {
3621#ifdef __GNUC__
3622#ifdef __VERSION__
3623 printf("%s\n", __VERSION__);
3624#else
3625 printf("%s\n", "1");
3626#endif
3627#endif
3628 exit(0);
3629}
3630EOM
b0ca4213 3631if $cc -o gccvers gccvers.c; then
4e2a5f63
AD
3632 gccversion=`./gccvers`
3633 case "$gccversion" in
2afac517 3634 '') echo "You are not using GNU cc." ;;
3635 *) echo "You are using GNU cc $gccversion." ;;
3636 esac
3637else
3638 echo " "
3639 echo "*** WHOA THERE!!! ***" >&4
3640 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3641 case "$knowitall" in
3642 '')
3643 echo " You'd better start hunting for one and let me know about it." >&4
3644 exit 1
2c7991dc 3645 ;;
8e07c86e 3646 esac
2afac517 3647fi
3648$rm -f gccvers*
3649case "$gccversion" in
36501*) cpp=`./loc gcc-cpp $cpp $pth` ;;
8e07c86e
AD
3651esac
3652
2afac517 3653: What should the include directory be ?
8e07c86e 3654echo " "
2afac517 3655$echo $n "Hmm... $c"
3656dflt='/usr/include'
3657incpath=''
3658mips_type=''
3659if $test -f /bin/mips && /bin/mips; then
3660 echo "Looks like a MIPS system..."
3661 $cat >usr.c <<'EOCP'
3662#ifdef SYSTYPE_BSD43
3663/bsd43
3664#endif
3665EOCP
3666 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3667 dflt='/bsd43/usr/include'
3668 incpath='/bsd43'
3669 mips_type='BSD 4.3'
8e07c86e 3670 else
2afac517 3671 mips_type='System V'
8e07c86e 3672 fi
2afac517 3673 $rm -f usr.c usr.out
3674 echo "and you're compiling with the $mips_type compiler and libraries."
3675 xxx_prompt=y
3676 echo "exit 0" >mips
8e07c86e 3677else
2afac517 3678 echo "Doesn't look like a MIPS system."
3679 xxx_prompt=n
3680 echo "exit 1" >mips
3681fi
3682chmod +x mips
3683$eunicefix mips
2afac517 3684case "$usrinc" in
3685'') ;;
3686*) dflt="$usrinc";;
3687esac
3688case "$xxx_prompt" in
3689y) fn=d/
dfe9444c 3690 echo " "
2afac517 3691 rp='Where are the include files you want to use?'
3692 . ./getfile
3693 usrinc="$ans"
3694 ;;
3695*) usrinc="$dflt"
3696 ;;
3697esac
8e07c86e 3698
c4f23d77
AD
3699: see how we invoke the C preprocessor
3700echo " "
3701echo "Now, how can we feed standard input to your C preprocessor..." >&4
3702cat <<'EOT' >testcpp.c
3703#define ABC abc
3704#define XYZ xyz
3705ABC.XYZ
3706EOT
3707cd ..
1cfa4ec7
GS
3708if test ! -f cppstdin; then
3709 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3710else
3711 echo "Keeping your $hint cppstdin wrapper."
3712fi
c4f23d77
AD
3713chmod 755 cppstdin
3714wrapper=`pwd`/cppstdin
3715ok='false'
3716cd UU
3717
3718if $test "X$cppstdin" != "X" && \
3719 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3720 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3721then
3722 echo "You used to use $cppstdin $cppminus so we'll use that again."
3723 case "$cpprun" in
3724 '') echo "But let's see if we can live without a wrapper..." ;;
3725 *)
3726 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3727 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3728 then
3729 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3730 ok='true'
3731 else
3732 echo "(However, $cpprun $cpplast does not work, let's see...)"
3733 fi
3734 ;;
3735 esac
3736else
3737 case "$cppstdin" in
3738 '') ;;
3739 *)
3740 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3741 ;;
3742 esac
3743fi
3744
3745if $ok; then
3746 : nothing
3747elif echo 'Maybe "'"$cc"' -E" will work...'; \
3748 $cc -E <testcpp.c >testcpp.out 2>&1; \
3749 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3750 echo "Yup, it does."
3751 x_cpp="$cc -E"
3752 x_minus='';
3753elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3754 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3755 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 echo "Yup, it does."
3757 x_cpp="$cc -E"
3758 x_minus='-';
3759elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3760 $cc -P <testcpp.c >testcpp.out 2>&1; \
3761 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3762 echo "Yipee, that works!"
3763 x_cpp="$cc -P"
3764 x_minus='';
3765elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3766 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3767 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3768 echo "At long last!"
3769 x_cpp="$cc -P"
3770 x_minus='-';
3771elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3772 $cpp <testcpp.c >testcpp.out 2>&1; \
3773 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3774 echo "It works!"
3775 x_cpp="$cpp"
3776 x_minus='';
3777elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3778 $cpp - <testcpp.c >testcpp.out 2>&1; \
3779 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3780 echo "Hooray, it works! I was beginning to wonder."
3781 x_cpp="$cpp"
3782 x_minus='-';
3783elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3784 $wrapper <testcpp.c >testcpp.out 2>&1; \
3785 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3786 x_cpp="$wrapper"
3787 x_minus=''
3788 echo "Eureka!"
3789else
3790 dflt=''
3791 rp="No dice. I can't find a C preprocessor. Name one:"
3792 . ./myread
3793 x_cpp="$ans"
3794 x_minus=''
3795 $x_cpp <testcpp.c >testcpp.out 2>&1
3796 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3797 echo "OK, that will do." >&4
3798 else
3799echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3800 exit 1
3801 fi
3802fi
3803
3804case "$ok" in
3805false)
3806 cppstdin="$x_cpp"
3807 cppminus="$x_minus"
3808 cpprun="$x_cpp"
3809 cpplast="$x_minus"
3810 set X $x_cpp
3811 shift
3812 case "$1" in
3813 "$cpp")
3814 echo "Perhaps can we force $cc -E using a wrapper..."
3815 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3816 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3817 then
3818 echo "Yup, we can."
3819 cppstdin="$wrapper"
3820 cppminus='';
3821 else
3822 echo "Nope, we'll have to live without it..."
3823 fi
3824 ;;
3825 esac
3826 case "$cpprun" in
3827 "$wrapper")
3828 cpprun=''
3829 cpplast=''
3830 ;;
3831 esac
3832 ;;
3833esac
3834
3835case "$cppstdin" in
def887e8 3836"$wrapper"|'cppstdin') ;;
c4f23d77
AD
3837*) $rm -f $wrapper;;
3838esac
3839$rm -f testcpp.c testcpp.out
3840
2afac517 3841: Set private lib path
3842case "$plibpth" in
3843'') if ./mips; then
3844 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3845 fi;;
3846esac
3847case "$libpth" in
3848' ') dlist='';;
3849'') dlist="$loclibpth $plibpth $glibpth";;
3850*) dlist="$libpth";;
3851esac
8e07c86e 3852
2afac517 3853: Now check and see which directories actually exist, avoiding duplicates
3854libpth=''
3855for xxx in $dlist
3856do
3857 if $test -d $xxx; then
3858 case " $libpth " in
3859 *" $xxx "*) ;;
3860 *) libpth="$libpth $xxx";;
3861 esac
3862 fi
3863done
3864$cat <<'EOM'
8e07c86e 3865
2afac517 3866Some systems have incompatible or broken versions of libraries. Among
3867the directories listed in the question below, please remove any you
3868know not to be holding relevant libraries, and add any that are needed.
3869Say "none" for none.
8e07c86e 3870
8e07c86e 3871EOM
2afac517 3872case "$libpth" in
3873'') dflt='none';;
3874*)
3875 set X $libpth
3876 shift
3877 dflt=${1+"$@"}
4633a7c4 3878 ;;
8e07c86e 3879esac
2afac517 3880rp="Directories to use for library searches?"
3881. ./myread
3882case "$ans" in
3883none) libpth=' ';;
3884*) libpth="$ans";;
3885esac
8e07c86e 3886
2afac517 3887: compute shared library extension
3888case "$so" in
3889'')
3890 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3891 dflt='sl'
3892 else
3893 dflt='so'
3894 fi
3895 ;;
3896*) dflt="$so";;
8e07c86e 3897esac
2afac517 3898$cat <<EOM
8e07c86e 3899
2afac517 3900On some systems, shared libraries may be available. Answer 'none' if
3901you want to suppress searching of shared libraries for the remaining
3902of this configuration.
8e07c86e
AD
3903
3904EOM
2afac517 3905rp='What is the file extension used for shared libraries?'
3906. ./myread
3907so="$ans"
8e07c86e 3908
dfe9444c
AD
3909: Define several unixisms.
3910: Hints files or command line option can be used to override them.
3911: The convoluted testing is in case hints files set either the old
3912: or the new name.
3913case "$_exe" in
3914'') case "$exe_ext" in
3915 '') ;;
3916 *) _exe="$exe_ext" ;;
3917 esac
3918 ;;
3919esac
3920case "$_a" in
3921'') case "$lib_ext" in
3922 '') _a='.a';;
3923 *) _a="$lib_ext" ;;
3924 esac
3925 ;;
3926esac
3927case "$_o" in
3928'') case "$obj_ext" in
3929 '') _o='.o';;
3930 *) _o="$obj_ext";;
3931 esac
3932 ;;
3933esac
3934case "$p_" in
3935'') case "$path_sep" in
3936 '') p_=':';;
3937 *) p_="$path_sep";;
3938 esac
3939 ;;
3940esac
3941exe_ext=$_exe
3942lib_ext=$_a
3943obj_ext=$_o
3944path_sep=$p_
3945
3946: Which makefile gets called first. This is used by make depend.
3947case "$firstmakefile" in
3948'') firstmakefile='makefile';;
3949esac
3950
29209bc5
JH
3951cat <<EOM
3952
3953Perl can be built to use the SOCKS proxy protocol library. To do so,
3954Configure must be run with -Dusesocks.
3955
3956Normally you do not need this and you should answer no.
3957
3958EOM
3959case "$usesocks" in
3960$define|true|[yY]*) dflt='y';;
3961*) dflt='n';;
3962esac
3963rp='Build Perl for SOCKS?'
3964. ./myread
3965case "$ans" in
3966y|Y) val="$define" ;;
3967*) val="$undef" ;;
3968esac
3969set usesocks
3970eval $setvar
3971
2afac517 3972: Looking for optional libraries
3973echo " "
3974echo "Checking for optional libraries..." >&4
3975case "$libs" in
3976' '|'') dflt='';;
3977*) dflt="$libs";;
8e07c86e 3978esac
2afac517 3979case "$libswanted" in
3980'') libswanted='c_s';;
3981esac
29209bc5
JH
3982case "$usesocks" in
3983$define)
3984 libswanted="$libswanted socks5 socks5_sh"
3985 ;;
3986esac
2afac517 3987for thislib in $libswanted; do
3988
1cfa4ec7
GS
3989 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3990 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
2afac517 3991 echo "Found -l$thislib (shared)."
3992 case " $dflt " in
3993 *"-l$thislib "*);;
3994 *) dflt="$dflt -l$thislib";;
4633a7c4 3995 esac
2afac517 3996 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3997 echo "Found -l$thislib (shared)."
3998 case " $dflt " in
3999 *"-l$thislib "*);;
4000 *) dflt="$dflt -l$thislib";;
4001 esac
dfe9444c 4002 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
2afac517 4003 echo "Found -l$thislib."
4004 case " $dflt " in
4005 *"-l$thislib "*);;
4006 *) dflt="$dflt -l$thislib";;
4007 esac
dfe9444c 4008 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
2afac517 4009 echo "Found -l$thislib."
4010 case " $dflt " in
4011 *"-l$thislib "*);;
4012 *) dflt="$dflt -l$thislib";;
4013 esac
dfe9444c 4014 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
2afac517 4015 echo "Found -l${thislib}_s."
4016 case " $dflt " in
4017 *"-l$thislib "*);;
4018 *) dflt="$dflt -l${thislib}_s";;
4019 esac
dfe9444c 4020 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
2afac517 4021 echo "Found -l$thislib."
4022 case " $dflt " in
4023 *"-l$thislib "*);;
4024 *) dflt="$dflt -l$thislib";;
4025 esac
4026 else
4027 echo "No -l$thislib."
4028 fi
4029done
4030set X $dflt
4031shift
4032dflt="$*"
4033case "$libs" in
4034'') dflt="$dflt";;
4035*) dflt="$libs";;
4036esac
4037case "$dflt" in
4038' '|'') dflt='none';;
8e07c86e 4039esac
2afac517 4040
4633a7c4 4041$cat <<EOM
29209bc5
JH
4042
4043In order to compile $package on your machine, a number of libraries
4044are usually needed. Include any other special libraries here as well.
4045Say "none" for none. The default list is almost always right.
4633a7c4 4046EOM
2afac517 4047
4048echo " "
29209bc5 4049rp="What libraries to use?"
8e07c86e 4050. ./myread
2afac517 4051case "$ans" in
4052none) libs=' ';;
4053*) libs="$ans";;
4054esac
8e07c86e 4055
2afac517 4056: determine optimize, if desired, or use for debug flag also
4057case "$optimize" in
2ae324a7 4058' '|$undef) dflt='none';;
2afac517 4059'') dflt='-O';;
4060*) dflt="$optimize";;
4633a7c4 4061esac
2afac517 4062$cat <<EOH
4633a7c4 4063
760ac839 4064Some C compilers have problems with their optimizers. By default, $package
4633a7c4
LW
4065compiles with the -O flag to use the optimizer. Alternately, you might want
4066to use the symbolic debugger, which uses the -g flag (on traditional Unix
4067systems). Either flag can be specified here. To use neither flag, specify
4068the word "none".
4069
4070EOH
4071rp="What optimizer/debugger flag should be used?"
4072. ./myread
4073optimize="$ans"
4074case "$optimize" in
4075'none') optimize=" ";;
4076esac
4077
4078dflt=''
25f94b33
AD
4079: We will not override a previous value, but we might want to
4080: augment a hint file
4081case "$hint" in
4082none|recommended)
4633a7c4
LW
4083 case "$gccversion" in
4084 1*) dflt='-fpcc-struct-return' ;;
4085 esac
4086 case "$optimize" in
4087 *-g*) dflt="$dflt -DDEBUGGING";;
4088 esac
4089 case "$gccversion" in
4090 2*) if test -d /etc/conf/kconfig.d &&
4091 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4092 then
4093 dflt="$dflt -posix"
4094 fi
4095 ;;
4096 esac
4097 ;;
4098esac
4099
a4f3eea9 4100case "$mips_type" in
4101*BSD*|'') inclwanted="$locincpth $usrinc";;
4102*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4103esac
4104for thisincl in $inclwanted; do
4105 if $test -d $thisincl; then
4106 if $test x$thisincl != x$usrinc; then
4107 case "$dflt" in
4108 *$thisincl*);;
4109 *) dflt="$dflt -I$thisincl";;
4110 esac
4111 fi
4112 fi
4113done
4114
4115inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4116 xxx=true;
4117elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4118 xxx=true;
4119else
4120 xxx=false;
4121fi;
4122if $xxx; then
4123 case "$dflt" in
4124 *$2*);;
4125 *) dflt="$dflt -D$2";;
4126 esac;
4127fi'
4128
ccc7f9b3 4129set signal.h LANGUAGE_C; eval $inctest
a4f3eea9 4130
29209bc5
JH
4131case "$usesocks" in
4132$define)
4133 ccflags="$ccflags -DSOCKS"
4134 ;;
4135esac
4136
a4f3eea9 4137case "$hint" in
4138none|recommended) dflt="$ccflags $dflt" ;;
4139*) dflt="$ccflags";;
4140esac
4141
4142case "$dflt" in
4143''|' ') dflt=none;;
4144esac
4145$cat <<EOH
4146
4147Your C compiler may want other flags. For this question you should include
4148-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4149but you should NOT include libraries or ld flags like -lwhatever. If you
4150want $package to honor its debug switch, you should include -DDEBUGGING here.
dfe9444c 4151Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
a4f3eea9 4152
4153To use no flags, specify the word "none".
4154
4155EOH
4156set X $dflt
4157shift
4158dflt=${1+"$@"}
4159rp="Any additional cc flags?"
4160. ./myread
4161case "$ans" in
4162none) ccflags='';;
4163*) ccflags="$ans";;
4164esac
4165
4166: the following weeds options from ccflags that are of no interest to cpp
4167cppflags="$ccflags"
4168case "$gccversion" in
41691*) cppflags="$cppflags -D__GNUC__"
4170esac
4171case "$mips_type" in
4172'');;
4173*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4174esac
4175case "$cppflags" in
4176'');;
4177*)
4178 echo " "
4179 echo "Let me guess what the preprocessor flags are..." >&4
4180 set X $cppflags
4181 shift
4182 cppflags=''
4183 $cat >cpp.c <<'EOM'
4184#define BLURFL foo
4185
4186BLURFL xx LFRULB
4187EOM
4188 previous=''
4189 for flag in $*
4190 do
4191 case "$flag" in
4192 -*) ftry="$flag";;
4193 *) ftry="$previous $flag";;
4194 esac
7bac28a0 4195 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
a4f3eea9 4196 >cpp1.out 2>/dev/null && \
dfe9444c 4197 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
a4f3eea9 4198 >cpp2.out 2>/dev/null && \
4199 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4200 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4201 then
4202 cppflags="$cppflags $ftry"
4203 previous=''
4204 else
4205 previous="$flag"
4206 fi
4207 done
4208 set X $cppflags
4209 shift
4210 cppflags=${1+"$@"}
4211 case "$cppflags" in
4212 *-*) echo "They appear to be: $cppflags";;
4213 esac
4214 $rm -f cpp.c cpp?.out
4215 ;;
4216esac
4217
4218: flags used in final linking phase
a4f3eea9 4219case "$ldflags" in
4220'') if ./venix; then
4221 dflt='-i -z'
4222 else
4223 dflt=''
4224 fi
4225 case "$ccflags" in
4226 *-posix*) dflt="$dflt -posix" ;;
4227 esac
4228 ;;
4229*) dflt="$ldflags";;
4230esac
4231
4232: Try to guess additional flags to pick up local libraries.
4233for thislibdir in $libpth; do
4234 case " $loclibpth " in
4235 *" $thislibdir "*)
4236 case "$dflt " in
4237 *"-L$thislibdir "*) ;;
4238 *) dflt="$dflt -L$thislibdir" ;;
4239 esac
4240 ;;
4241 esac
4242done
4243
4244case "$dflt" in
4245'') dflt='none' ;;
4246esac
4247
4248$cat <<EOH
4249
4250Your C linker may need flags. For this question you should
4251include -L/whatever and any other flags used by the C linker, but you
4252should NOT include libraries like -lwhatever.
4253
4254Make sure you include the appropriate -L/path flags if your C linker
4255does not normally search all of the directories you specified above,
4256namely
4257 $libpth
4258To use no flags, specify the word "none".
4259
4260EOH
4261
4262rp="Any additional ld flags (NOT including libraries)?"
4263. ./myread
4264case "$ans" in
4265none) ldflags='';;
4266*) ldflags="$ans";;
4267esac
4268rmlist="$rmlist pdp11"
4269
4270: coherency check
4271echo " "
dfe9444c 4272echo "Checking your choice of C compiler and flags for coherency..." >&4
5ff3f7a4
GS
4273$cat > try.c <<'EOF'
4274#include <stdio.h>
732c9516 4275int main() { printf("Ok\n"); exit(0); }
5ff3f7a4 4276EOF
87563a30 4277set X $cc $optimize $ccflags -o try $ldflags try.c $libs
a4f3eea9 4278shift
5ff3f7a4
GS
4279$cat >try.msg <<'EOM'
4280I've tried to compile and run the following simple program:
4281
4282EOM
a83b1ac8 4283$cat try.c >> try.msg
5ff3f7a4
GS
4284
4285$cat >> try.msg <<EOM
4286
4287I used the command:
a4f3eea9 4288
4289 $*
4290 ./try
4291
4292and I got the following output:
4293
4294EOM
a4f3eea9 4295dflt=y
28e8609d 4296if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
a4f3eea9 4297 if sh -c './try' >>try.msg 2>&1; then
dfe9444c
AD
4298 xxx=`./try`
4299 case "$xxx" in
4300 "Ok") dflt=n ;;
4301 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4302 case " $libs " in
4303 *" -lsfio "*)
4304 cat >> try.msg <<'EOQS'
4305If $libs contains -lsfio, and sfio is mis-configured, then it
4306sometimes (apparently) runs and exits with a 0 status, but with no
4307output! It may have to do with sfio's use of _exit vs. exit.
4308
4309EOQS
4310 rp="You have a big problem. Shall I abort Configure"
4311 dflt=y
4312 ;;
4313 esac
4314 ;;
4315 esac
a4f3eea9 4316 else
4317 echo "The program compiled OK, but exited with status $?." >>try.msg
dfe9444c 4318 rp="You have a problem. Shall I abort Configure"
a4f3eea9 4319 dflt=y
4320 fi
4321else
4322 echo "I can't compile the test program." >>try.msg
dfe9444c 4323 rp="You have a BIG problem. Shall I abort Configure"
a4f3eea9 4324 dflt=y
4325fi
4326case "$dflt" in
4327y)
97286747 4328 $cat try.msg >&4
a4f3eea9 4329 case "$knowitall" in
4330 '')
5ff3f7a4 4331 echo "(The supplied flags or libraries might be incorrect.)"
a4f3eea9 4332 ;;
4333 *) dflt=n;;
4334 esac
4335 echo " "
4336 . ./myread
4337 case "$ans" in
4338 n*|N*) ;;
4339 *) echo "Ok. Stopping Configure." >&4
4340 exit 1
4341 ;;
4342 esac
4343 ;;
4344n) echo "OK, that should do.";;
4345esac
4346$rm -f try try.* core
4347
bfb7748a
AD
4348: determine filename position in cpp output
4349echo " "
4350echo "Computing filename position in cpp output for #include directives..." >&4
4351echo '#include <stdio.h>' > foo.c
4352$cat >fieldn <<EOF
4353$startsh
4354$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4355$grep '^[ ]*#.*stdio\.h' | \
4356while read cline; do
4357 pos=1
4358 set \$cline
4359 while $test \$# -gt 0; do
4360 if $test -r \`echo \$1 | $tr -d '"'\`; then
4361 echo "\$pos"
4362 exit 0
4363 fi
4364 shift
4365 pos=\`expr \$pos + 1\`
4366 done
4367done
4368EOF
4369chmod +x fieldn
4370fieldn=`./fieldn`
4371$rm -f foo.c fieldn
4372case $fieldn in
4373'') pos='???';;
43741) pos=first;;
43752) pos=second;;
43763) pos=third;;
4377*) pos="${fieldn}th";;
4378esac
4379echo "Your cpp writes the filename in the $pos field of the line."
4380
4381: locate header file
4382$cat >findhdr <<EOF
4383$startsh
4384wanted=\$1
9cc6feab 4385name=''
3656fc86
JH
4386for usrincdir in $usrinc
4387do
4388 if test -f \$usrincdir/\$wanted; then
4389 echo "\$usrincdir/\$wanted"
4390 exit 0
4391 fi
4392done
bfb7748a
AD
4393awkprg='{ print \$$fieldn }'
4394echo "#include <\$wanted>" > foo\$\$.c
4395$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4396$grep "^[ ]*#.*\$wanted" | \
4397while read cline; do
4398 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4399 case "\$name" in
1cab015a
EF
4400 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4401 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4402 *) exit 2;;
bfb7748a
AD
4403 esac;
4404done;
1cab015a 4405#
4e400192
JH
4406# status = 0: grep returned 0 lines, case statement not executed
4407# status = 1: headerfile found
4408# status = 2: while loop executed, no headerfile found
1cab015a
EF
4409#
4410status=\$?
bfb7748a 4411$rm -f foo\$\$.c;
1cab015a
EF
4412if test \$status -eq 1; then
4413 exit 0;
4414fi
4415exit 1
bfb7748a
AD
4416EOF
4417chmod +x findhdr
4418
1cab015a 4419
bfb7748a
AD
4420: define an alternate in-header-list? function
4421inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4422cont=true; xxf="echo \"<\$1> found.\" >&4";
4423case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4424*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4425esac;
4426case $# in 4) instead=instead;; *) instead="at last";; esac;
4427while $test "$cont"; do
4428 xxx=`./findhdr $1`
4429 var=$2; eval "was=\$$2";
4430 if $test "$xxx" && $test -r "$xxx";
4431 then eval $xxf;
4432 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4433 cont="";
4434 else eval $xxnf;
4435 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4436 set $yyy; shift; shift; yyy=$@;
4437 case $# in 0) cont="";;
4438 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4439 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4440 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4441 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4442 esac;
4443done;
4444while $test "$yyy";
4445do set $yyy; var=$2; eval "was=\$$2";
4446 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4447 set $yyy; shift; shift; yyy=$@;
4448done'
4449
4450: see if this is a malloc.h system
4451set malloc.h i_malloc
4452eval $inhdr
4453
4454: see if stdlib is available
4455set stdlib.h i_stdlib
4456eval $inhdr
4457
4458: determine which malloc to compile in
4459echo " "
4460case "$usemymalloc" in
5ff3f7a4
GS
4461''|[yY]*|true|$define) dflt='y' ;;
4462*) dflt='n' ;;
bfb7748a
AD
4463esac
4464rp="Do you wish to attempt to use the malloc that comes with $package?"
4465. ./myread
4466usemymalloc="$ans"
4467case "$ans" in
4468y*|true)
4469 usemymalloc='y'
4470 mallocsrc='malloc.c'
4471 mallocobj="malloc$_o"
4472 d_mymalloc="$define"
4473 case "$libs" in
4474 *-lmalloc*)
4475 : Remove malloc from list of libraries to use
4476 echo "Removing unneeded -lmalloc from library list" >&4
4477 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4478 shift
4479 libs="$*"
4480 echo "libs = $libs" >&4
4481 ;;
4482 esac
4483 ;;
4484*)
4485 usemymalloc='n'
4486 mallocsrc=''
4487 mallocobj=''
4488 d_mymalloc="$undef"
4489 ;;
4490esac
4491
4492: compute the return types of malloc and free
4493echo " "
4494$cat >malloc.c <<END
4495#$i_malloc I_MALLOC
4496#$i_stdlib I_STDLIB
4497#include <stdio.h>
4498#include <sys/types.h>
4499#ifdef I_MALLOC
4500#include <malloc.h>
4501#endif
4502#ifdef I_STDLIB
4503#include <stdlib.h>
4504#endif
4505#ifdef TRY_MALLOC
4506void *malloc();
4507#endif
4508#ifdef TRY_FREE
4509void free();
4510#endif
4511END
4512case "$malloctype" in
4513'')
4514 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4515 malloctype='void *'
4516 else
4517 malloctype='char *'
4518 fi
4519 ;;
4520esac
4521echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4522
4523case "$freetype" in
4524'')
4525 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4526 freetype='void'
4527 else
4528 freetype='int'
4529 fi
4530 ;;
4531esac
4532echo "Your system uses $freetype free(), it would seem." >&4
4533$rm -f malloc.[co]
c4f23d77
AD
4534: Cruising for prototypes
4535echo " "
4536echo "Checking out function prototypes..." >&4
4537$cat >prototype.c <<'EOCP'
5a411a32 4538int main(int argc, char *argv[]) {
c4f23d77
AD
4539 exit(0);}
4540EOCP
4541if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4542 echo "Your C compiler appears to support function prototypes."
4543 val="$define"
4544else
4545 echo "Your C compiler doesn't seem to understand function prototypes."
4546 val="$undef"
4547fi
4548set prototype
4549eval $setvar
4550$rm -f prototype*
4551
4552case "$prototype" in
4553"$define") ;;
4554*) ansi2knr='ansi2knr'
4555 echo " "
4556 cat <<EOM >&4
4557
4558$me: FATAL ERROR:
4559This version of $package can only be compiled by a compiler that
4560understands function prototypes. Unfortunately, your C compiler
4561 $cc $ccflags
4562doesn't seem to understand them. Sorry about that.
4563
5ff3f7a4 4564If GNU cc is available for your system, perhaps you could try that instead.
c4f23d77
AD
4565
4566Eventually, we hope to support building Perl with pre-ANSI compilers.
4567If you would like to help in that effort, please contact <perlbug@perl.org>.
4568
4569Aborting Configure now.
4570EOM
4571 exit 2
4572 ;;
4573esac
4574
4575: determine where public executables go
4576echo " "
4577set dflt bin bin
4578eval $prefixit
4579fn=d~
4580rp='Pathname where the public executables will reside?'
4581. ./getfile
4582if $test "X$ansexp" != "X$binexp"; then
4583 installbin=''
4584fi
4585bin="$ans"
4586binexp="$ansexp"
4587if $afs; then
4588 $cat <<EOM
4589
4590Since you are running AFS, I need to distinguish the directory in which
4591executables reside from the directory in which they are installed (and from
4592which they are presumably copied to the former directory by occult means).
4593
4594EOM
4595 case "$installbin" in
4596 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4597 *) dflt="$installbin";;
4598 esac
4599 fn=de~
4600 rp='Where will public executables be installed?'
4601 . ./getfile
4602 installbin="$ans"
4603else
4604 installbin="$binexp"
4605fi
4606
104d25b7
JH
4607: determine whether to install perl also as /usr/bin/perl
4608
4609echo " "
472a4973 4610if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
104d25b7
JH
4611 $cat <<EOM
4612Many scripts expect to perl to be installed as /usr/bin/perl.
4613I can install the perl you are about to compile also as /usr/bin/perl
4614(in addition to $installbin/perl).
4615EOM
472a4973
JH
4616 case "$installusrbinperl" in
4617 "$undef"|[nN]*) dflt='n';;
4618 *) dflt='y';;
4619 esac
104d25b7
JH
4620 rp="Do you want to install perl as /usr/bin/perl?"
4621 . ./myread
4622 case "$ans" in
4623 [yY]*) val="$define";;
472a4973 4624 *) val="$undef" ;;
104d25b7 4625 esac
472a4973
JH
4626else
4627 val="$undef"
4628fi
104d25b7
JH
4629set installusrbinperl
4630eval $setvar
4631
dfe9444c
AD
4632: define a shorthand compile call
4633compile='
4634mc_file=$1;
4635shift;
c4f23d77 4636$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
dc45a647
MB
4637: define a shorthand compile call for compilations that should be ok.
4638compile_ok='
4639mc_file=$1;
4640shift;
c4f23d77 4641$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
dfe9444c 4642
a4f3eea9 4643echo " "
4644echo "Checking for GNU C Library..." >&4
4645cat >gnulibc.c <<EOM
aebf16e7 4646#include <stdio.h>
5a411a32 4647int main()
a4f3eea9 4648{
aebf16e7
AD
4649#ifdef __GLIBC__
4650 exit(0);
4651#else
4652 exit(1);
4653#endif
a4f3eea9 4654}
4655EOM
dfe9444c 4656set gnulibc
aebf16e7 4657if eval $compile_ok && ./gnulibc; then
a4f3eea9 4658 val="$define"
4659 echo "You are using the GNU C Library"
4633a7c4 4660else
a4f3eea9 4661 val="$undef"
4662 echo "You are not using the GNU C Library"
4633a7c4 4663fi
a4f3eea9 4664$rm -f gnulibc*
4665set d_gnulibc
4666eval $setvar
25f94b33 4667
a4f3eea9 4668: see if nm is to be used to determine whether a symbol is defined or not
4669case "$usenm" in
4670'')
dc45a647 4671 dflt=''
a4f3eea9 4672 case "$d_gnulibc" in
dc45a647
MB
4673 "$define")
4674 echo " "
4675 echo "nm probably won't work on the GNU C Library." >&4
a4f3eea9 4676 dflt=n
4677 ;;
dc45a647
MB
4678 esac
4679 case "$dflt" in
4680 '')
4681 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4682 echo " "
4683 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4684 echo "'nm' won't be sufficient on this sytem." >&4
4685 dflt=n
4686 fi
4687 ;;
4688 esac
4689 case "$dflt" in
c4f23d77 4690 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
a4f3eea9 4691 if $test $dflt -gt 20; then
4692 dflt=y
4693 else
4694 dflt=n
4695 fi
4696 ;;
4697 esac
4698 ;;
4699*)
4700 case "$usenm" in
dc45a647 4701 true|$define) dflt=y;;
a4f3eea9 4702 *) dflt=n;;
4703 esac
4704 ;;
25f94b33 4705esac
a4f3eea9 4706$cat <<EOM
4633a7c4 4707
dc45a647
MB
4708I can use $nm to extract the symbols from your C libraries. This
4709is a time consuming task which may generate huge output on the disk (up
4710to 3 megabytes) but that should make the symbols extraction faster. The
4711alternative is to skip the 'nm' extraction part and to compile a small
4712test program instead to determine whether each symbol is present. If
4713you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4714this may be the best solution.
4715
4716You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633a7c4 4717
a4f3eea9 4718EOM
693762b4 4719rp="Shall I use $nm to extract C symbols from the libraries?"
4633a7c4
LW
4720. ./myread
4721case "$ans" in
dc45a647 4722[Nn]*) usenm=false;;
a4f3eea9 4723*) usenm=true;;
4633a7c4
LW
4724esac
4725
a4f3eea9 4726runnm=$usenm
4727case "$reuseval" in
4728true) runnm=false;;
4633a7c4 4729esac
a4f3eea9 4730
4731: nm options which may be necessary
4732case "$nm_opt" in
4733'') if $test -f /mach_boot; then
1e422769 4734 nm_opt='' # Mach
a4f3eea9 4735 elif $test -d /usr/ccs/lib; then
1e422769 4736 nm_opt='-p' # Solaris (and SunOS?)
a4f3eea9 4737 elif $test -f /dgux; then
1e422769 4738 nm_opt='-p' # DG-UX
2ae324a7 4739 elif $test -f /lib64/rld; then
1e422769 4740 nm_opt='-p' # 64-bit Irix
a4f3eea9 4741 else
4742 nm_opt=''
4743 fi;;
4633a7c4 4744esac
4633a7c4 4745
a4f3eea9 4746: nm options which may be necessary for shared libraries but illegal
4747: for archive libraries. Thank you, Linux.
4748case "$nm_so_opt" in
4749'') case "$myuname" in
4750 *linux*)
693762b4 4751 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
a4f3eea9 4752 nm_so_opt='--dynamic'
4633a7c4 4753 fi
a4f3eea9 4754 ;;
4633a7c4 4755 esac
4633a7c4
LW
4756 ;;
4757esac
4758
a4f3eea9 4759case "$runnm" in
4760true)
4761: get list of predefined functions in a handy place
4762echo " "
4763case "$libc" in
4764'') libc=unknown
4765 case "$libs" in
dfe9444c 4766 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
a4f3eea9 4767 esac
4768 ;;
4769esac
4770libnames='';
4771case "$libs" in
4772'') ;;
4773*) for thislib in $libs; do
4774 case "$thislib" in
4775 -lc|-lc_s)
4776 : Handle C library specially below.
4777 ;;
4778 -l*)
4779 thislib=`echo $thislib | $sed -e 's/^-l//'`
4780 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4781 :
4782 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4783 :
dfe9444c 4784 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
a4f3eea9 4785 :
dfe9444c 4786 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
d97d40b5 4787 :
a4f3eea9 4788 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4789 :
4790 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4791 :
dfe9444c 4792 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
a4f3eea9 4793 :
4794 else
4795 try=''
4796 fi
4797 libnames="$libnames $try"
4798 ;;
4799 *) libnames="$libnames $thislib" ;;
4800 esac
4801 done
4802 ;;
4803esac
4804xxx=normal
4805case "$libc" in
4806unknown)
4807 set /lib/libc.$so
4808 for xxx in $libpth; do
4809 $test -r $1 || set $xxx/libc.$so
4810 : The messy sed command sorts on library version numbers.
4811 $test -r $1 || \
4812 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
28e8609d 4813 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
a4f3eea9 4814 h
4815 s/[0-9][0-9]*/0000&/g
4816 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4817 G
4818 s/\n/ /' | \
dfe9444c 4819 sort | $sed -e 's/^.* //'`
a4f3eea9 4820 eval set \$$#
4821 done
4822 $test -r $1 || set /usr/ccs/lib/libc.$so
dfe9444c
AD
4823 $test -r $1 || set /lib/libsys_s$_a
4824 ;;
a4f3eea9 4825*)
4826 set blurfl
4827 ;;
4828esac
4829if $test -r "$1"; then
4830 echo "Your (shared) C library seems to be in $1."
4831 libc="$1"
4832elif $test -r /lib/libc && $test -r /lib/clib; then
4833 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4834 xxx=apollo
4835 libc='/lib/clib /lib/libc'
4836 if $test -r /lib/syslib; then
4837 echo "(Your math library is in /lib/syslib.)"
4838 libc="$libc /lib/syslib"
4839 fi
4840elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4841 echo "Your C library seems to be in $libc, as you said before."
dfe9444c
AD
4842elif $test -r $incpath/usr/lib/libc$_a; then
4843 libc=$incpath/usr/lib/libc$_a;
a4f3eea9 4844 echo "Your C library seems to be in $libc. That's fine."
dfe9444c
AD
4845elif $test -r /lib/libc$_a; then
4846 libc=/lib/libc$_a;
a4f3eea9 4847 echo "Your C library seems to be in $libc. You're normal."
4848else
dfe9444c 4849 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
a4f3eea9 4850 :
4851 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4852 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4853 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4854 :
dfe9444c 4855 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4856 :
dfe9444c 4857 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4858 :
4633a7c4 4859 else
dfe9444c 4860 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4633a7c4 4861 fi
a4f3eea9 4862 if $test -r "$tans"; then
4863 echo "Your C library seems to be in $tans, of all places."
4864 libc=$tans
4865 else
4866 libc='blurfl'
4867 fi
4868fi
4869if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4870 dflt="$libc"
4871 cat <<EOM
4633a7c4 4872
a4f3eea9 4873If the guess above is wrong (which it might be if you're using a strange
4874compiler, or your machine supports multiple models), you can override it here.
4633a7c4 4875
a4f3eea9 4876EOM
4877else
4878 dflt=''
28e8609d 4879 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
a4f3eea9 4880 cat >&4 <<EOM
4881I can't seem to find your C library. I've looked in the following places:
4633a7c4 4882
a4f3eea9 4883EOM
4884 $sed 's/^/ /' libpath
4885 cat <<EOM
4633a7c4 4886
a4f3eea9 4887None of these seems to contain your C library. I need to get its name...
4633a7c4 4888
a4f3eea9 4889EOM
4890fi
4891fn=f
4892rp='Where is your C library?'
4893. ./getfile
4894libc="$ans"
4633a7c4 4895
4633a7c4 4896echo " "
28e8609d 4897echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
a4f3eea9 4898set X `cat libnames`
4633a7c4 4899shift
a4f3eea9 4900xxx=files
4901case $# in 1) xxx=file; esac
4902echo "Extracting names from the following $xxx for later perusal:" >&4
4903echo " "
4904$sed 's/^/ /' libnames >&4
4905echo " "
4906$echo $n "This may take a while...$c" >&4
4633a7c4 4907
dfe9444c
AD
4908for file in $*; do
4909 case $file in
693762b4
AD
4910 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4911 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4912 esac
dfe9444c 4913done >libc.tmp
4633a7c4 4914
a4f3eea9 4915$echo $n ".$c"
4916$grep fprintf libc.tmp > libc.ptf
4917xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4918xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4919xxx='[ADTSIW]'
4920if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4921 eval $xscan;\
4922 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4923 eval $xrun
4924elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4925 eval $xscan;\
4926 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4927 eval $xrun
4928elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4929 eval $xscan;\
4930 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4931 eval $xrun
4932elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4933 eval $xscan;\
4934 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4935 eval $xrun
4936elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4937 eval $xscan;\
4938 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4939 eval $xrun
4940elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4941 eval $xscan;\
4942 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4943 eval $xrun
4944elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4945 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4946 eval $xscan;\
4947 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4948 eval $xrun
4949elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4950 eval $xscan;\
4951 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4952 eval $xrun
4953elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4954 eval $xscan;\
4955 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4956 eval $xrun
1e422769 4957elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4958 eval $xscan;\
4959 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4960 eval $xrun
a4f3eea9 4961elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4962 eval $xscan;\
4963 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4964 eval $xrun
4965elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4966 eval $xscan;\
4967 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4968 eval $xrun
44a8e56a 4969elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4970 eval $xscan;\
4971 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4972 eval $xrun
0f502cca
BL
4973elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4974 eval $xscan;\
4975 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4976 eval $xrun
a4f3eea9 4977else
693762b4 4978 $nm -p $* 2>/dev/null >libc.tmp
a4f3eea9 4979 $grep fprintf libc.tmp > libc.ptf
4980 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4981 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4982 then
4983 nm_opt='-p'
4984 eval $xrun
4633a7c4 4985 else
a4f3eea9 4986 echo " "
e5c9fcd0 4987 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
a4f3eea9 4988 com=''
dc45a647
MB
4989 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4990 for thisname in $libnames $libc; do
e5c9fcd0 4991 $ar t $thisname >>libc.tmp
a4f3eea9 4992 done
dfe9444c 4993 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
a4f3eea9 4994 echo "Ok." >&4
dc45a647
MB
4995 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4996 # Repeat libc to extract forwarders to DLL entries too
4997 for thisname in $libnames $libc; do
4998 $ar tv $thisname >>libc.tmp
4999 # Revision 50 of EMX has bug in $ar.
5000 # it will not extract forwarders to DLL entries
5001 # Use emximp which will extract exactly them.
5002 emximp -o tmp.imp $thisname \
5003 2>/dev/null && \
5004 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5005 < tmp.imp >>libc.tmp
5006 $rm tmp.imp
5007 done
5008 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5009 echo "Ok." >&4
a4f3eea9 5010 else
e5c9fcd0 5011 echo "$ar didn't seem to work right." >&4
a4f3eea9 5012 echo "Maybe this is a Cray...trying bld instead..." >&4
dfe9444c 5013 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
a4f3eea9 5014 then
5015 for thisname in $libnames; do
5016 bld t $libnames | \
dfe9444c 5017 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
e5c9fcd0 5018 $ar t $thisname >>libc.tmp
a4f3eea9 5019 done
5020 echo "Ok." >&4
5021 else
5022 echo "That didn't work either. Giving up." >&4
5023 exit 1
5024 fi
5025 fi
4633a7c4 5026 fi
4633a7c4 5027fi
a4f3eea9 5028nm_extract="$com"
5029if $test -f /lib/syscalls.exp; then
4633a7c4 5030 echo " "
a4f3eea9 5031 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
c6912327 5032 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
a4f3eea9 5033fi
5034;;
5035esac
5036$rm -f libnames libpath
5037
2afac517 5038: see if dld is available
5039set dld.h i_dld
5040eval $inhdr
4633a7c4 5041
2afac517 5042: is a C symbol defined?
5043csym='tlook=$1;
5044case "$3" in
5045-v) tf=libc.tmp; tc=""; tdc="";;
5046-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5047*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5048esac;
5049tx=yes;
5050case "$reuseval-$4" in
5051true-) ;;
5052true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5053esac;
5054case "$tx" in
5055yes)
5056 case "$runnm" in
5057 true)
5058 if $contains $tlook $tf >/dev/null 2>&1;
5059 then tval=true;
5060 else tval=false;
5061 fi;;
5062 *)
d674cd6d 5063 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
dfe9444c 5064 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
2afac517 5065 then tval=true;
5066 else tval=false;
5067 fi;
5068 $rm -f t t.c;;
5069 esac;;
5070*)
5071 case "$tval" in
5072 $define) tval=true;;
5073 *) tval=false;;
5074 esac;;
5075esac;
5076eval "$2=$tval"'
4633a7c4 5077
2afac517 5078: define an is-in-libc? function
5079inlibc='echo " "; td=$define; tu=$undef;
5080sym=$1; var=$2; eval "was=\$$2";
5081tx=yes;
5082case "$reuseval$was" in
5083true) ;;
5084true*) tx=no;;
5085esac;
5086case "$tx" in
5087yes)
5088 set $sym tres -f;
5089 eval $csym;
5090 case "$tres" in
5091 true)
5092 echo "$sym() found." >&4;
5093 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5094 *)
5095 echo "$sym() NOT found." >&4;
5096 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5097 esac;;
5098*)
5099 case "$was" in
5100 $define) echo "$sym() found." >&4;;
5101 *) echo "$sym() NOT found." >&4;;
5102 esac;;
5103esac'
4633a7c4 5104
2afac517 5105: see if dlopen exists
5106xxx_runnm="$runnm"
5107runnm=false
5108set dlopen d_dlopen
5109eval $inlibc
5110runnm="$xxx_runnm"
40a7a20a 5111
2afac517 5112: determine which dynamic loading, if any, to compile in
4633a7c4 5113echo " "
2afac517 5114dldir="ext/DynaLoader"
5115case "$usedl" in
5116$define|y|true)
5117 dflt='y'
5118 usedl="$define"
5119 ;;
5120$undef|n|false)
5121 dflt='n'
5122 usedl="$undef"
5123 ;;
5124*)
5125 dflt='n'
5126 case "$d_dlopen" in
5127 $define) dflt='y' ;;
5128 esac
5129 case "$i_dld" in
5130 $define) dflt='y' ;;
4633a7c4 5131 esac
2afac517 5132 : Does a dl_xxx.xs file exist for this operating system
dc45a647 5133 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4633a7c4
LW
5134 ;;
5135esac
2afac517 5136rp="Do you wish to use dynamic loading?"
5137. ./myread
5138usedl="$ans"
5139case "$ans" in
5140y*) usedl="$define"
5141 case "$dlsrc" in
5142 '')
dc45a647 5143 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
2afac517 5144 dflt="$dldir/dl_${osname}.xs"
5145 elif $test "$d_dlopen" = "$define" ; then
5146 dflt="$dldir/dl_dlopen.xs"
5147 elif $test "$i_dld" = "$define" ; then
5148 dflt="$dldir/dl_dld.xs"
4633a7c4 5149 else
2afac517 5150 dflt=''
4633a7c4 5151 fi
4633a7c4 5152 ;;
2afac517 5153 *) dflt="$dldir/$dlsrc"
5154 ;;
4633a7c4 5155 esac
2afac517 5156 echo "The following dynamic loading files are available:"
5157 : Can not go over to $dldir because getfile has path hard-coded in.
dc45a647
MB
5158 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5159 rp="Source file to use for dynamic loading"
5160 fn="fne"
5161 # XXX This getfile call will fail the existence check if you try
5162 # building away from $src (this is not supported yet).
5163 . ./getfile
2afac517 5164 usedl="$define"
5165 : emulate basename
5166 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
2304df62 5167
dc45a647 5168 $cat << EOM
2304df62 5169
2afac517 5170Some systems may require passing special flags to $cc -c to
5171compile modules that will be used to create a shared library.
5172To use no flags, say "none".
2304df62
AD
5173
5174EOM
2afac517 5175 case "$cccdlflags" in
5176 '') case "$gccversion" in
5177 '') case "$osname" in
5178 hpux) dflt='+z' ;;
5179 next) dflt='none' ;;
8cc95fdb 5180 irix*) dflt='-KPIC' ;;
3a6175e1 5181 svr4*|esix*|solaris) dflt='-KPIC' ;;
2afac517 5182 sunos) dflt='-pic' ;;
5183 *) dflt='none' ;;
dfe9444c
AD
5184 esac
5185 ;;
5186 *) case "$osname" in
3a6175e1 5187 svr4*|esix*|solaris) dflt='-fPIC' ;;
dfe9444c 5188 *) dflt='-fpic' ;;
81d89818 5189 esac ;;
2afac517 5190 esac ;;
bfb7748a 5191 ' ') dflt='none' ;;
2afac517 5192 *) dflt="$cccdlflags" ;;
5193 esac
5194 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5195 . ./myread
5196 case "$ans" in
5197 none) cccdlflags=' ' ;;
5198 *) cccdlflags="$ans" ;;
5199 esac
2304df62 5200
2afac517 5201 cat << EOM
ecfc5424 5202
2afac517 5203Some systems use ld to create libraries that can be dynamically loaded,
5204while other systems (such as those using ELF) use $cc.
a0f45b59 5205
2afac517 5206EOM
5207 case "$ld" in
5208 '') $cat >try.c <<'EOM'
5209/* Test for whether ELF binaries are produced */
5210#include <fcntl.h>
5211#include <stdlib.h>
5a411a32 5212int main() {
2afac517 5213 char b[4];
5214 int i = open("a.out",O_RDONLY);
5215 if(i == -1)
5216 exit(1); /* fail */
5217 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5218 exit(0); /* succeed (yes, it's ELF) */
2304df62 5219 else
2afac517 5220 exit(1); /* fail */
5221}
5222EOM
5223 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5224 cat <<EOM
5225You appear to have ELF support. I'll use $cc to build dynamic libraries.
5226EOM
5227 dflt="$cc"
2304df62 5228 else
2afac517 5229 echo "I'll use ld to build dynamic libraries."
5230 dflt='ld'
2304df62 5231 fi
2afac517 5232 rm -f try.c a.out
5233 ;;
5234 *) dflt="$ld"
5235 ;;
5236 esac
5237
5238 rp="What command should be used to create dynamic libraries?"
5239 . ./myread
5240 ld="$ans"
5241
5242 cat << EOM
5243
5244Some systems may require passing special flags to $ld to create a
5245library that can be dynamically loaded. If your ld flags include
5246-L/other/path options to locate libraries outside your loader's normal
5247search path, you may need to specify those -L options here as well. To
5248use no flags, say "none".
5249
5250EOM
5251 case "$lddlflags" in
5252 '') case "$osname" in
46193409 5253 beos) dflt='-nostart' ;;
2afac517 5254 hpux) dflt='-b' ;;
5255 linux|irix*) dflt='-shared' ;;
5256 next) dflt='none' ;;
5257 solaris) dflt='-G' ;;
5258 sunos) dflt='-assert nodefinitions' ;;
5259 svr4*|esix*) dflt="-G $ldflags" ;;
5260 *) dflt='none' ;;
5261 esac
5262 ;;
5263 *) dflt="$lddlflags" ;;
5264 esac
5265
bfb7748a 5266 : Try to guess additional flags to pick up local libraries.
a0915cb7
AD
5267 : Be careful not to append to a plain 'none'
5268 case "$dflt" in
5269 none) dflt='' ;;
5270 esac
bfb7748a
AD
5271 for thisflag in $ldflags; do
5272 case "$thisflag" in
5273 -L*)
5274 case " $dflt " in
5275 *" $thisflag "*) ;;
5276 *) dflt="$dflt $thisflag" ;;
5277 esac
5278 ;;
2afac517 5279 esac
bfb7748a 5280 done
2afac517 5281
bfb7748a
AD
5282 case "$dflt" in
5283 ''|' ') dflt='none' ;;
5284 esac
2afac517 5285
5286 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5287 . ./myread
5288 case "$ans" in
5289 none) lddlflags=' ' ;;
5290 *) lddlflags="$ans" ;;
5291 esac
5292
5293 cat <<EOM
5294
5295Some systems may require passing special flags to $cc to indicate that
5296the resulting executable will use dynamic linking. To use no flags,
5297say "none".
5298
5299EOM
5300 case "$ccdlflags" in
5301 '') case "$osname" in
5302 hpux) dflt='-Wl,-E' ;;
5303 linux) dflt='-rdynamic' ;;
5304 next) dflt='none' ;;
5305 sunos) dflt='none' ;;
5306 *) dflt='none' ;;
5307 esac ;;
bfb7748a 5308 ' ') dflt='none' ;;
2afac517 5309 *) dflt="$ccdlflags" ;;
5310 esac
5311 rp="Any special flags to pass to $cc to use dynamic loading?"
5312 . ./myread
5313 case "$ans" in
5314 none) ccdlflags=' ' ;;
5315 *) ccdlflags="$ans" ;;
5316 esac
5317 ;;
5318*) usedl="$undef"
5319 ld='ld'
5320 dlsrc='dl_none.xs'
5321 lddlflags=''
5322 ccdlflags=''
5323 ;;
5324esac
5325
5326also=''
5327case "$usedl" in
5328$undef)
5329 # No dynamic loading being used, so don't bother even to prompt.
5330 useshrplib='false'
5331 ;;
5332*) case "$useshrplib" in
5333 '') case "$osname" in
46193409 5334 svr4*|dgux|dynixptx|esix|powerux|beos)
3e3baf6d 5335 dflt=y
2afac517 5336 also='Building a shared libperl is required for dynamic loading to work on your system.'
5337 ;;
5338 next*)
5339 case "$osvers" in
3e3baf6d 5340 4*) dflt=y
2afac517 5341 also='Building a shared libperl is needed for MAB support.'
5342 ;;
3e3baf6d 5343 *) dflt=n
2afac517 5344 ;;
5345 esac
5346 ;;
3e3baf6d 5347 *) dflt=n
2afac517 5348 ;;
5349 esac
5350 ;;
5351 $define|true|[Yy]*)
3e3baf6d 5352 dflt=y
2afac517 5353 ;;
3e3baf6d 5354 *) dflt=n
2afac517 5355 ;;
5356 esac
5357 $cat << EOM
5358
5359The perl executable is normally obtained by linking perlmain.c with
dfe9444c 5360libperl${_a}, any static extensions (usually just DynaLoader), and
2afac517 5361any other libraries needed on this system (such as -lm, etc.). Since
5362your system supports dynamic loading, it is probably possible to build
5363a shared libperl.$so. If you will have more than one executable linked
5364to libperl.$so, this will significantly reduce the size of each
5365executable, but it may have a noticeable affect on performance. The
5366default is probably sensible for your system.
5367$also
5368
5369EOM
5370 rp="Build a shared libperl.$so (y/n)"
5371 . ./myread
5372 case "$ans" in
5373 true|$define|[Yy]*)
5374 useshrplib='true'
5375 # Why does next4 have to be so different?
5376 case "${osname}${osvers}" in
8f1f23e8
W
5377 next4*|rhapsody*)
5378 xxx='DYLD_LIBRARY_PATH' ;;
dc45a647 5379 os2*) xxx='' ;; # Nothing special needed.
46193409 5380 beos*) xxx='' ;;
2afac517 5381 *) xxx='LD_LIBRARY_PATH' ;;
5382 esac
2afac517 5383 ;;
5384 *) useshrplib='false' ;;
5385 esac
5386 ;;
5387esac
5388
5389case "$useshrplib" in
5390true)
5391 case "$libperl" in
5392 '')
5393 # Figure out a good name for libperl.so. Since it gets stored in
5394 # a version-specific architecture-dependent library, the version
5395 # number isn't really that important, except for making cc/ld happy.
5396 #
5397 # A name such as libperl.so.3.1
5398 majmin="libperl.$so.$patchlevel.$subversion"
5399 # A name such as libperl.so.301
5400 majonly=`echo $patchlevel $subversion |
5401 $awk '{printf "%d%02d", $1, $2}'`
5402 majonly=libperl.$so.$majonly
5403 # I'd prefer to keep the os-specific stuff here to a minimum, and
5404 # rely on figuring it out from the naming of libc.
5405 case "${osname}${osvers}" in
5406 next4*)
5407 dflt=libperl.5.$so
5408 # XXX How handle the --version stuff for MAB?
5409 ;;
5410 linux*) # ld won't link with a bare -lperl otherwise.
5411 dflt=libperl.$so
5412 ;;
5413 *) # Try to guess based on whether libc has major.minor.
5414 case "$libc" in
5415 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5416 *libc.$so.[0-9]*) dflt=$majonly ;;
5417 *) dflt=libperl.$so ;;
5418 esac
5419 ;;
5420 esac
5421 ;;
5422 *) dflt=$libperl
5423 ;;
5424 esac
5425 cat << EOM
5426
5427I need to select a good name for the shared libperl. If your system uses
5428library names with major and minor numbers, then you might want something
5429like $majmin. Alternatively, if your system uses a single version
5430number for shared libraries, then you might want to use $majonly.
5431Or, your system might be quite happy with a simple libperl.$so.
5432
5433Since the shared libperl will get installed into a version-specific
5434architecture-dependent directory, the version number of the shared perl
5435library probably isn't important, so the default should be o.k.
5436
5437EOM
5438 rp='What name do you want to give to the shared libperl?'
5439 . ./myread
5440 libperl=$ans
5441 echo "Ok, I'll use $libperl"
5442 ;;
5443*)
dfe9444c 5444 libperl="libperl${_a}"
2afac517 5445 ;;
5446esac
5447
5448# Detect old use of shrpdir via undocumented Configure -Dshrpdir
5449case "$shrpdir" in
5450'') ;;
5451*) $cat >&4 <<EOM
5452WARNING: Use of the shrpdir variable for the installation location of
5453the shared $libperl is not supported. It was never documented and
46193409 5454will not work in this version. Let me (perlbug@perl.com)
dfe9444c 5455know of any problems this may cause.
2afac517 5456
5457EOM
5458 case "$shrpdir" in
5459 "$archlibexp/CORE")
5460 $cat >&4 <<EOM
5461But your current setting of $shrpdir is
5462the default anyway, so it's harmless.
5463EOM
5464 ;;
5465 *)
4e2a5f63
AD
5466 $cat >&4 <<EOM
5467Further, your current attempted setting of $shrpdir
5468conflicts with the value of $archlibexp/CORE
5469that installperl will use.
5470EOM
dc45a647
MB
5471 ;;
5472 esac
5473 ;;
5474esac
5475
5476# How will the perl executable find the installed shared $libperl?
5477# Add $xxx to ccdlflags.
5478# If we can't figure out a command-line option, use $shrpenv to
5479# set env LD_RUN_PATH. The main perl makefile uses this.
5480shrpdir=$archlibexp/CORE
5481xxx=''
5482tmp_shrpenv=''
5483if "$useshrplib"; then
5484 case "$osname" in
5485 aix)
5486 # We'll set it in Makefile.SH...
5487 ;;
5488 solaris|netbsd)
5489 xxx="-R $shrpdir"
5490 ;;
5491 freebsd)
5492 xxx="-Wl,-R$shrpdir"
5493 ;;
5494 linux|irix*|dec_osf)
5495 xxx="-Wl,-rpath,$shrpdir"
5496 ;;
5497 next)
5498 # next doesn't like the default...
5499 ;;
46193409
JH
5500 beos)
5501 # beos doesn't like the default, either.
5502 ;;
3656fc86
JH
5503 hpux*)
5504 # hpux doesn't like the default, either.
5505 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5506 ;;
dc45a647
MB
5507 *)
5508 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5509 ;;
5510 esac
5511 case "$xxx" in
5512 '') ;;
5513 *)
5514 # Only add $xxx if it isn't already in ccdlflags.
5515 case " $ccdlflags " in
5516 *" $xxx "*) ;;
5517 *) ccdlflags="$ccdlflags $xxx"
5518 cat <<EOM >&4
5519
5520Adding $xxx to the flags
5521passed to $ld so that the perl executable will find the
5522installed shared $libperl.
5523
5524EOM
5525 ;;
5526 esac
5527 ;;
5528 esac
5529fi
5530# Respect a hint or command-line value.
5531case "$shrpenv" in
5532'') shrpenv="$tmp_shrpenv" ;;
5533esac
5534
5535: determine where manual pages go
5536set man1dir man1dir none
5537eval $prefixit
5538$cat <<EOM
5539
5540$spackage has manual pages available in source form.
5541EOM
5542case "$nroff" in
5543nroff)
5544 echo "However, you don't have nroff, so they're probably useless to you."
5545 case "$man1dir" in
5546 '') man1dir="none";;
5547 esac;;
5548esac
5549echo "If you don't want the manual sources installed, answer 'none'."
5550case "$man1dir" in
5551' ') dflt=none
5552 ;;
5553'')
5554 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5555 lookpath="$lookpath $prefixexp/man/p_man/man1"
5556 lookpath="$lookpath $prefixexp/man/u_man/man1"
5557 lookpath="$lookpath $prefixexp/man/man.1"
5558 case "$sysman" in
5559 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5560 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5561 esac
5562 set dflt
5563 eval $prefixup
5564 ;;
5565*) dflt="$man1dir"
5566 ;;
5567esac
5568echo " "
5569fn=dn+~
5570rp="Where do the main $spackage manual pages (source) go?"
5571. ./getfile
5572if $test "X$man1direxp" != "X$ansexp"; then
5573 installman1dir=''
5574fi
5575man1dir="$ans"
5576man1direxp="$ansexp"
5577case "$man1dir" in
5578'') man1dir=' '
5579 installman1dir='';;
5580esac
5581if $afs; then
5582 $cat <<EOM
5583
5584Since you are running AFS, I need to distinguish the directory in which
5585manual pages reside from the directory in which they are installed (and from
5586which they are presumably copied to the former directory by occult means).
5587
5588EOM
5589 case "$installman1dir" in
5590 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5591 *) dflt="$installman1dir";;
5592 esac
5593 fn=de~
5594 rp='Where will man pages be installed?'
5595 . ./getfile
5596 installman1dir="$ans"
5597else
5598 installman1dir="$man1direxp"
5599fi
5600
5601: What suffix to use on installed man pages
5602
5603case "$man1dir" in
5604' ')
5605 man1ext='0'
5606 ;;
5607*)
5608 rp="What suffix should be used for the main $spackage man pages?"
5609 case "$man1ext" in
5610 '') case "$man1dir" in
5611 *1) dflt=1 ;;
5612 *1p) dflt=1p ;;
5613 *1pm) dflt=1pm ;;
5614 *l) dflt=l;;
5615 *n) dflt=n;;
5616 *o) dflt=o;;
5617 *p) dflt=p;;
5618 *C) dflt=C;;
5619 *L) dflt=L;;
5620 *L1) dflt=L1;;
5621 *) dflt=1;;
5622 esac
5623 ;;
5624 *) dflt="$man1ext";;
5625 esac
5626 . ./myread
5627 man1ext="$ans"
5628 ;;
5629esac
5630
5631: see if we can have long filenames
5632echo " "
5633rmlist="$rmlist /tmp/cf$$"
5634$test -d /tmp/cf$$ || mkdir /tmp/cf$$
5635first=123456789abcdef
5636second=/tmp/cf$$/$first
5637$rm -f $first $second
5638if (echo hi >$first) 2>/dev/null; then
5639 if $test -f 123456789abcde; then
5640 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5641 val="$undef"
5642 else
5643 if (echo hi >$second) 2>/dev/null; then
5644 if $test -f /tmp/cf$$/123456789abcde; then
5645 $cat <<'EOM'
5646That's peculiar... You can have filenames longer than 14 characters, but only
5647on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5648I shall consider your system cannot support long filenames at all.
5649EOM
5650 val="$undef"
5651 else
5652 echo 'You can have filenames longer than 14 characters.' >&4
5653 val="$define"
5654 fi
5655 else
5656 $cat <<'EOM'
5657How confusing! Some of your filesystems are sane enough to allow filenames
5658longer than 14 characters but some others like /tmp can't even think about them.
5659So, for now on, I shall assume your kernel does not allow them at all.
5660EOM
5661 val="$undef"
5662 fi
5663 fi
5664else
5665 $cat <<'EOM'
5666You can't have filenames longer than 14 chars. You can't even think about them!
5667EOM
5668 val="$undef"
5669fi
5670set d_flexfnam
5671eval $setvar
5672$rm -rf /tmp/cf$$ 123456789abcde*
5673
5674: determine where library module manual pages go
5675set man3dir man3dir none
5676eval $prefixit
5677$cat <<EOM
5678
5679$spackage has manual pages for many of the library modules.
5680EOM
5681
5682case "$nroff" in
5683nroff)
5684 $cat <<'EOM'
5685However, you don't have nroff, so they're probably useless to you.
5686EOM
5687 case "$man3dir" in
5688 '') man3dir="none";;
5689 esac;;
5690esac
5691
5692case "$d_flexfnam" in
5693undef)
5694 $cat <<'EOM'
5695However, your system can't handle the long file names like File::Basename.3.
5696EOM
5697 case "$man3dir" in
5698 '') man3dir="none";;
5699 esac;;
5700esac
5701
5702echo "If you don't want the manual sources installed, answer 'none'."
5703prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5704case "$man3dir" in
5705'') case "$prefix" in
5706 *$prog*) dflt=`echo $man1dir |
5707 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5708 *) dflt="$privlib/man/man3" ;;
2afac517 5709 esac
5710 ;;
dc45a647
MB
5711' ') dflt=none;;
5712*) dflt="$man3dir" ;;
2afac517 5713esac
dc45a647 5714echo " "
2afac517 5715
dc45a647
MB
5716fn=dn+~
5717rp="Where do the $package library man pages (source) go?"
5718. ./getfile
5719if test "X$man3direxp" != "X$ansexp"; then
5720 installman3dir=''
5721fi
2afac517 5722
dc45a647
MB
5723man3dir="$ans"
5724man3direxp="$ansexp"
5725case "$man3dir" in
5726'') man3dir=' '
5727 installman3dir='';;
5728esac
5729if $afs; then
5730 $cat <<EOM
5731
5732Since you are running AFS, I need to distinguish the directory in which
5733manual pages reside from the directory in which they are installed (and from
5734which they are presumably copied to the former directory by occult means).
2afac517 5735
4e2a5f63 5736EOM
dc45a647
MB
5737 case "$installman3dir" in
5738 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5739 *) dflt="$installman3dir";;
5740 esac
5741 fn=de~
5742 rp='Where will man pages be installed?'
5743 . ./getfile
5744 installman3dir="$ans"
5745else
5746 installman3dir="$man3direxp"
5747fi
5748
5749: What suffix to use on installed man pages
5750
5751case "$man3dir" in
5752' ')
5753 man3ext='0'
5754 ;;
5755*)
5756 rp="What suffix should be used for the $package library man pages?"
5757 case "$man3ext" in
5758 '') case "$man3dir" in
5759 *3) dflt=3 ;;
5760 *3p) dflt=3p ;;
5761 *3pm) dflt=3pm ;;
5762 *l) dflt=l;;
5763 *n) dflt=n;;
5764 *o) dflt=o;;
5765 *p) dflt=p;;
5766 *C) dflt=C;;
5767 *L) dflt=L;;
5768 *L3) dflt=L3;;
5769 *) dflt=3;;
2afac517 5770 esac
5771 ;;
dc45a647 5772 *) dflt="$man3ext";;
2afac517 5773 esac
dc45a647
MB
5774 . ./myread
5775 man3ext="$ans"
5776 ;;
2afac517 5777esac
5778
5779: see if we have to deal with yellow pages, now NIS.
5780if $test -d /usr/etc/yp || $test -d /etc/yp; then
5781 if $test -f /usr/etc/nibindd; then
5782 echo " "
5783 echo "I'm fairly confident you're on a NeXT."
5784 echo " "
5785 rp='Do you get the hosts file via NetInfo?'
5786 dflt=y
5787 case "$hostcat" in
5788 nidump*) ;;
5789 '') ;;
5790 *) dflt=n;;
5791 esac
5792 . ./myread
5793 case "$ans" in
5794 y*) hostcat='nidump hosts .';;
5795 *) case "$hostcat" in
5796 nidump*) hostcat='';;
5797 esac
5798 ;;
5799 esac
5800 fi
5801 case "$hostcat" in
5802 nidump*) ;;
5803 *)
5804 case "$hostcat" in
5805 *ypcat*) dflt=y;;
5806 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5807 dflt=y
5808 else
5809 dflt=n
5810 fi;;
5811 *) dflt=n;;
5812 esac
5813 echo " "
5814 rp='Are you getting the hosts file via yellow pages?'
5815 . ./myread
5816 case "$ans" in
5817 y*) hostcat='ypcat hosts';;
5818 *) hostcat='cat /etc/hosts';;
5819 esac
5820 ;;
5821 esac
5822fi
dfe9444c
AD
5823case "$hostcat" in
5824'') hostcat='cat /etc/hosts';;
5825esac
5826case "$groupcat" in
5827'') groupcat='cat /etc/group';;
5828esac
5829case "$passcat" in
5830'') passcat='cat /etc/passwd';;
5831esac
2afac517 5832
5833: now get the host name
5834echo " "
5835echo "Figuring out host name..." >&4
5836case "$myhostname" in
5837'') cont=true
5838 echo 'Maybe "hostname" will work...'
5839 if tans=`sh -c hostname 2>&1` ; then
5840 myhostname=$tans
5841 phostname=hostname
5842 cont=''
5843 fi
5844 ;;
5845*) cont='';;
5846esac
5847if $test "$cont"; then
5848 if ./xenix; then
5849 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5850 if tans=`cat /etc/systemid 2>&1` ; then
5851 myhostname=$tans
5852 phostname='cat /etc/systemid'
5853 echo "Whadyaknow. Xenix always was a bit strange..."
5854 cont=''
5855 fi
5856 elif $test -r /etc/systemid; then
5857 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5858 fi
5859fi
5860if $test "$cont"; then
5861 echo 'No, maybe "uuname -l" will work...'
5862 if tans=`sh -c 'uuname -l' 2>&1` ; then
5863 myhostname=$tans
5864 phostname='uuname -l'
5865 else
5866 echo 'Strange. Maybe "uname -n" will work...'
5867 if tans=`sh -c 'uname -n' 2>&1` ; then
5868 myhostname=$tans
5869 phostname='uname -n'
5870 else
5871 echo 'Oh well, maybe I can mine it out of whoami.h...'
5872 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5873 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5874 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5875 else
5876 case "$myhostname" in
5877 '') echo "Does this machine have an identity crisis or something?"
5878 phostname='';;
5879 *)
5880 echo "Well, you said $myhostname before..."
5881 phostname='echo $myhostname';;
5882 esac
5883 fi
5884 fi
5885 fi
5886fi
5887: you do not want to know about this
5888set $myhostname
5889myhostname=$1
5890
5891: verify guess
5892if $test "$myhostname" ; then
5893 dflt=y
5894 rp='Your host name appears to be "'$myhostname'".'" Right?"
5895 . ./myread
5896 case "$ans" in
5897 y*) ;;
5898 *) myhostname='';;
5899 esac
5900fi
5901
5902: bad guess or no guess
5903while $test "X$myhostname" = X ; do
5904 dflt=''
5905 rp="Please type the (one word) name of your host:"
5906 . ./myread
5907 myhostname="$ans"
5908done
5909
5910: translate upper to lower if necessary
5911case "$myhostname" in
5912*[A-Z]*)
5913 echo "(Normalizing case in your host name)"
5914 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5915 ;;
5916esac
5917
5918case "$myhostname" in
5919*.*)
5920 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5921 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5922 echo "(Trimming domain name from host name--host name is now $myhostname)"
5923 ;;
5924*) case "$mydomain" in
5925 '')
5926 {
2afac517 5927 test "X$hostcat" = "Xypcat hosts" &&
5928 ypmatch "$myhostname" hosts 2>/dev/null |\
5929 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5930 $test -s hosts
5931 } || {
2afac517 5932 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5933 /[ ]$myhostname[ . ]/p" > hosts
5934 }
5935 tmp_re="[ . ]"
5936 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5937 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5938 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5939 hosts | $sort | $uniq | \
5940 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5941 case `$echo X$dflt` in
5942 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5943 dflt=.
5944 ;;
5945 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5946 ;;
5947 esac
5948 case "$dflt" in
5949 .)
5950 tans=`./loc resolv.conf X /etc /usr/etc`
5951 if $test -f "$tans"; then
5952 echo "(Attempting domain name extraction from $tans)"
a6006777 5953 dflt=.`$sed -n -e 's/ / /g' \
28757baa 5954 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
a6006777 5955 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
2afac517 5956 case "$dflt" in
a6006777 5957 .) dflt=.`$sed -n -e 's/ / /g' \
28757baa 5958 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
a6006777 5959 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
774d564b 5960 ;;
2afac517 5961 esac
5962 fi
5963 ;;
5964 esac
5965 case "$dflt" in
5966 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5967 dflt=.`sh -c domainname 2>/dev/null`
5968 case "$dflt" in
5969 '') dflt='.';;
5970 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5971 esac
5972 ;;
5973 esac
5974 case "$dflt" in
5975 .) echo "(Lost all hope -- silly guess then)"
5976 dflt='.uucp'
5977 ;;
5978 esac
5979 $rm -f hosts
5980 ;;
5981 *) dflt="$mydomain";;
5982 esac;;
5983esac
5984echo " "
5985rp="What is your domain name?"
5986. ./myread
5987tans="$ans"
5988case "$ans" in
5989'') ;;
5990.*) ;;
5991*) tans=".$tans";;
5992esac
5993mydomain="$tans"
5994
5995: translate upper to lower if necessary
5996case "$mydomain" in
5997*[A-Z]*)
5998 echo "(Normalizing case in your domain name)"
5999 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6000 ;;
6001esac
6002
6003: a little sanity check here
6004case "$phostname" in
6005'') ;;
6006*)
6007 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6008 $myhostname$mydomain|$myhostname) ;;
6009 *)
6010 case "$phostname" in
6011 sed*)
6012 echo "(That doesn't agree with your whoami.h file, by the way.)"
6013 ;;
6014 *)
6015 echo "(That doesn't agree with your $phostname command, by the way.)"
6016 ;;
6017 esac
6018 ;;
6019 esac
6020 ;;
6021esac
6022
6023$cat <<EOM
6024
6025I need to get your e-mail address in Internet format if possible, i.e.
6026something like user@host.domain. Please answer accurately since I have
6027no easy means to double check it. The default value provided below
6028is most probably close to the reality but may not be valid from outside
6029your organization...
6030
6031EOM
6032cont=x
6033while test "$cont"; do
6034 case "$cf_email" in
6035 '') dflt="$cf_by@$myhostname$mydomain";;
6036 *) dflt="$cf_email";;
6037 esac
6038 rp='What is your e-mail address?'
6039 . ./myread
6040 cf_email="$ans"
6041 case "$cf_email" in
6042 *@*.*) cont='' ;;
6043 *)
6044 rp='Address does not look like an Internet one. Use it anyway?'
6045 case "$fastread" in
6046 yes) dflt=y ;;
6047 *) dflt=n ;;
6048 esac
6049 . ./myread
6050 case "$ans" in
6051 y*) cont='' ;;
6052 *) echo " " ;;
6053 esac
6054 ;;
6055 esac
6056done
6057
6058$cat <<EOM
6059
6060If you or somebody else will be maintaining perl at your site, please
6061fill in the correct e-mail address here so that they may be contacted
6062if necessary. Currently, the "perlbug" program included with perl
6063will send mail to this address in addition to perlbug@perl.com. You may
6064enter "none" for no administrator.
6065
6066EOM
6067case "$perladmin" in
6068'') dflt="$cf_email";;
6069*) dflt="$perladmin";;
6070esac
6071rp='Perl administrator e-mail address'
6072. ./myread
6073perladmin="$ans"
6074
5f05dabc 6075: figure out how to guarantee perl startup
6076case "$startperl" in
6077'')
6078 case "$sharpbang" in
6079 *!)
6080 $cat <<EOH
6081
6082I can use the #! construct to start perl on your system. This will
6083make startup of perl scripts faster, but may cause problems if you
6084want to share those scripts and perl is not in a standard place
6085($binexp/perl) on all your platforms. The alternative is to force
6086a shell by starting the script with a single ':' character.
6087
6088EOH
6089 dflt="$binexp/perl"
6090 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6091 . ./myread
6092 case "$ans" in
68dc0745 6093 none) startperl=": # use perl";;
6094 *) startperl="#!$ans"
3e3baf6d 6095 if $test 30 -lt `echo "$ans" | wc -c`; then
68dc0745 6096 $cat >&4 <<EOM
6097
6098WARNING: Some systems limit the #! command to 32 characters.
6099If you experience difficulty running Perl scripts with #!, try
6100installing Perl in a directory with a shorter pathname.
6101
6102EOM
6103 fi ;;
5f05dabc 6104 esac
6105 ;;
6106 *) startperl=": # use perl"
6107 ;;
6108 esac
6109 ;;
6110esac
6111echo "I'll use $startperl to start perl scripts."
6112
6113: figure best path for perl in scripts
6114case "$perlpath" in
6115'')
6116 perlpath="$binexp/perl"
6117 case "$startperl" in
6118 *!*) ;;
6119 *)
6120 $cat <<EOH
6121
6122I will use the "eval 'exec'" idiom to start Perl on your system.
6123I can use the full path of your Perl binary for this purpose, but
6124doing so may cause problems if you want to share those scripts and
6125Perl is not always in a standard place ($binexp/perl).
6126
6127EOH
6128 dflt="$binexp/perl"
6129 rp="What path shall I use in \"eval 'exec'\"?"
6130 . ./myread
6131 perlpath="$ans"
6132 ;;
6133 esac
6134 ;;
6135esac
6136case "$startperl" in
6137*!*) ;;
6138*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6139esac
6140
dc45a647
MB
6141: determine where public executable scripts go
6142set scriptdir scriptdir
6143eval $prefixit
6144case "$scriptdir" in
6145'')
6146 dflt="$bin"
6147 : guess some guesses
6148 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6149 $test -d /usr/share/bin && dflt=/usr/share/bin
6150 $test -d /usr/local/script && dflt=/usr/local/script
6151 $test -d $prefixexp/script && dflt=$prefixexp/script
6152 set dflt
6153 eval $prefixup
6154 ;;
6155*) dflt="$scriptdir"
6156 ;;
6157esac
6158$cat <<EOM
6159
6160Some installations have a separate directory just for executable scripts so
6161that they can mount it across multiple architectures but keep the scripts in
6162one spot. You might, for example, have a subdirectory of /usr/share for this.
6163Or you might just lump your scripts in with all your other executables.
6164
6165EOM
6166fn=d~
6167rp='Where do you keep publicly executable scripts?'
6168. ./getfile
6169if $test "X$ansexp" != "X$scriptdirexp"; then
6170 installscript=''
6171fi
6172scriptdir="$ans"
6173scriptdirexp="$ansexp"
6174if $afs; then
6175 $cat <<EOM
6176
6177Since you are running AFS, I need to distinguish the directory in which
6178scripts reside from the directory in which they are installed (and from
6179which they are presumably copied to the former directory by occult means).
6180
6181EOM
6182 case "$installscript" in
6183 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6184 *) dflt="$installscript";;
6185 esac
6186 fn=de~
6187 rp='Where will public scripts be installed?'
6188 . ./getfile
6189 installscript="$ans"
6190else
6191 installscript="$scriptdirexp"
6192fi
6193
6194: determine where site specific libraries go.
3a6175e1 6195: Usual default is /usr/local/lib/perl5/site_perl/$apiversion
bfb7748a
AD
6196prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6197case "$prefix" in
3a6175e1
AD
6198*perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6199*) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
dc45a647 6200esac
bfb7748a 6201eval $prefixit
dc45a647
MB
6202$cat <<EOM
6203
6204The installation process will also create a directory for
6205site-specific extensions and modules. Some users find it convenient
68c15b6f
HM
6206to place all site-specific files in this directory rather than in the
6207main distribution directory.
dc45a647
MB
6208
6209EOM
6210fn=d~+
6211rp='Pathname for the site-specific library files?'
6212. ./getfile
6213if $test "X$sitelibexp" != "X$ansexp"; then
6214 installsitelib=''
6215fi
6216sitelib="$ans"
6217sitelibexp="$ansexp"
6218if $afs; then
6219 $cat <<EOM
6220
6221Since you are running AFS, I need to distinguish the directory in
6222which site-specific files reside from the directory in which they are
6223installed (and from which they are presumably copied to the former
6224directory by occult means).
6225
6226EOM
6227 case "$installsitelib" in
6228 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6229 *) dflt="$installsitelib";;
6230 esac
6231 fn=de~
6232 rp='Where will site-specific files be installed?'
6233 . ./getfile
6234 installsitelib="$ans"
6235else
6236 installsitelib="$sitelibexp"
6237fi
6238
6239: determine where site specific architecture-dependent libraries go.
3a6175e1 6240: sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
bfb7748a 6241: sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
3a6175e1 6242: sitelib may have an optional trailing /share.
bfb7748a
AD
6243tdflt=`echo $sitelib | $sed 's,/share$,,'`
6244tdflt="$tdflt/$archname"
dc45a647
MB
6245set sitearch sitearch none
6246eval $prefixit
6247case "$sitearch" in
bfb7748a 6248'') dflt="$tdflt" ;;
dc45a647
MB
6249*) dflt="$sitearch" ;;
6250esac
6251$cat <<EOM
6252
6253The installation process will also create a directory for
6254architecture-dependent site-specific extensions and modules.
6255
6256EOM
6257fn=nd~+
6258rp='Pathname for the site-specific architecture-dependent library files?'
6259. ./getfile
6260if $test "X$sitearchexp" != "X$ansexp"; then
6261 installsitearch=''
6262fi
6263sitearch="$ans"
6264sitearchexp="$ansexp"
6265if $afs; then
6266 $cat <<EOM
6267
6268Since you are running AFS, I need to distinguish the directory in
6269which site-specific architecture-dependent library files reside from
6270the directory in which they are installed (and from which they are
6271presumably copied to the former directory by occult means).
6272
6273EOM
6274 case "$installsitearch" in
6275 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6276 *) dflt="$installsitearch";;
6277 esac
6278 fn=de~
6279 rp='Where will site-specific architecture-dependent files be installed?'
6280 . ./getfile
6281 installsitearch="$ans"
6282else
6283 installsitearch="$sitearchexp"
6284fi
6285
2afac517 6286cat <<EOM
6287
85aff577
CS
6288Previous version of $package used the standard IO mechanisms as defined
6289in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
2afac517 6290mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
85aff577
CS
6291the default. This abstraction layer can use AT&T's sfio (if you already
6292have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6293problems with some extension modules. Using PerlIO with stdio is safe,
6294but it is slower than plain stdio and therefore is not the default.
2afac517 6295
6296If this doesn't make any sense to you, just accept the default 'n'.
6297EOM
6298case "$useperlio" in
6299$define|true|[yY]*) dflt='y';;
6300*) dflt='n';;
6301esac
6302rp='Use the experimental PerlIO abstraction layer?'
6303. ./myread
6304case "$ans" in
6305y|Y)
6306 val="$define"
6307 ;;
6308*)
6309 echo "Ok, doing things the stdio way"
6310 val="$undef"
6311 ;;
6312esac
6313set useperlio
6314eval $setvar
2304df62 6315
8e07c86e 6316: Check how to convert floats to strings.
28e8609d 6317if test "X$d_Gconvert" = X; then
5ff3f7a4
GS
6318 echo " "
6319 echo "Checking for an efficient way to convert floats to strings."
6320 $cat >try.c <<'EOP'
8e07c86e
AD
6321#ifdef TRY_gconvert
6322#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8ff267be 6323char *myname = "gconvert";
8e07c86e
AD
6324#endif
6325#ifdef TRY_gcvt
6326#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8ff267be 6327char *myname = "gcvt";
8e07c86e
AD
6328#endif
6329#ifdef TRY_sprintf
6330#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8ff267be 6331char *myname = "sprintf";
8e07c86e 6332#endif
8ff267be 6333
6334#include <stdio.h>
6335
6336int
6337checkit(expect, got)
6338char *expect;
6339char *got;
6340{
6341 if (strcmp(expect, got)) {
6342 printf("%s oddity: Expected %s, got %s\n",
6343 myname, expect, got);
6344 exit(1);
6345 }
6346}
6347
5a411a32 6348int main()
8ff267be 6349{
ecfc5424 6350 char buf[64];
8ff267be 6351 buf[63] = '\0';
6352
6353 /* This must be 1st test on (which?) platform */
6354 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6355 Gconvert(0.1, 8, 0, buf);
6356 checkit("0.1", buf);
6357
8e07c86e 6358 Gconvert(1.0, 8, 0, buf);
8ff267be 6359 checkit("1", buf);
6360
8e07c86e 6361 Gconvert(0.0, 8, 0, buf);
8ff267be 6362 checkit("0", buf);
6363
8e07c86e 6364 Gconvert(-1.0, 8, 0, buf);
8ff267be 6365 checkit("-1", buf);
6366
6367 /* Some Linux gcvt's give 1.e+5 here. */
6368 Gconvert(100000.0, 8, 0, buf);
6369 checkit("100000", buf);
6370
6371 /* Some Linux gcvt's give -1.e+5 here. */
6372 Gconvert(-100000.0, 8, 0, buf);
6373 checkit("-100000", buf);
6374
ecfc5424 6375 exit(0);
a0d0e21e
LW
6376}
6377EOP
5ff3f7a4
GS
6378 case "$d_Gconvert" in
6379 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6380 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6381 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6382 *) xxx_list='gconvert gcvt sprintf' ;;
6383 esac
8e07c86e 6384
5ff3f7a4
GS
6385 for xxx_convert in $xxx_list; do
6386 echo "Trying $xxx_convert"
6387 $rm -f try try$_o
6388 set try -DTRY_$xxx_convert
6389 if eval $compile; then
6390 echo "$xxx_convert" found. >&4
6391 if ./try; then
6392 echo "I'll use $xxx_convert to convert floats into a string." >&4
6393 break;
6394 else
6395 echo "...But $xxx_convert didn't work as I expected."
6396 fi
2304df62 6397 else
5ff3f7a4 6398 echo "$xxx_convert NOT found." >&4
2304df62 6399 fi
5ff3f7a4 6400 done
8e07c86e 6401
5ff3f7a4
GS
6402 case "$xxx_convert" in
6403 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6404 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6405 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6406 esac
28e8609d 6407fi
2304df62 6408
a0d0e21e
LW
6409: Initialize h_fcntl
6410h_fcntl=false
6411
6412: Initialize h_sysfile
6413h_sysfile=false
2304df62 6414
2304df62
AD
6415: access call always available on UNIX
6416set access d_access
6417eval $inlibc
6418
6419: locate the flags for 'access()'
6420case "$d_access" in
6421"$define")
6422 echo " "
6423 $cat >access.c <<'EOCP'
6424#include <sys/types.h>
6425#ifdef I_FCNTL
6426#include <fcntl.h>
6427#endif
6428#ifdef I_SYS_FILE
6429#include <sys/file.h>
6430#endif
6431#ifdef I_UNISTD
6432#include <unistd.h>
6433#endif
d674cd6d 6434int main() {
2304df62
AD
6435 exit(R_OK);
6436}
8e07c86e
AD
6437EOCP
6438 : check sys/file.h first, no particular reason here
6439 if $test `./findhdr sys/file.h` && \
dfe9444c 6440 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6441 h_sysfile=true;
6442 echo "<sys/file.h> defines the *_OK access constants." >&4
6443 elif $test `./findhdr fcntl.h` && \
dfe9444c 6444 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6445 h_fcntl=true;
6446 echo "<fcntl.h> defines the *_OK access constants." >&4
6447 elif $test `./findhdr unistd.h` && \
dfe9444c 6448 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6449 echo "<unistd.h> defines the *_OK access constants." >&4
6450 else
6451 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6452 fi
6453 ;;
6454esac
6455$rm -f access*
a0d0e21e 6456
5ff3f7a4
GS
6457: see if accessx exists
6458set accessx d_accessx
6459eval $inlibc
6460
8e07c86e
AD
6461: see if alarm exists
6462set alarm d_alarm
6463eval $inlibc
2304df62 6464
ecfc5424 6465: Look for GNU-cc style attribute checking
2304df62 6466echo " "
a0d0e21e
LW
6467echo "Checking whether your compiler can handle __attribute__ ..." >&4
6468$cat >attrib.c <<'EOCP'
1aef975c 6469#include <stdio.h>
ecfc5424 6470void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
a0d0e21e
LW
6471EOCP
6472if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6473 if $contains 'warning' attrib.out >/dev/null 2>&1; then
ecfc5424 6474 echo "Your C compiler doesn't fully support __attribute__."
a0d0e21e
LW
6475 val="$undef"
6476 else
ecfc5424 6477 echo "Your C compiler supports __attribute__."
a0d0e21e
LW
6478 val="$define"
6479 fi
6480else
ecfc5424 6481 echo "Your C compiler doesn't seem to understand __attribute__ at all."
a0d0e21e
LW
6482 val="$undef"
6483fi
ecfc5424 6484set d_attribut
a0d0e21e
LW
6485eval $setvar
6486$rm -f attrib*
6487
6488: see if bcmp exists
6489set bcmp d_bcmp
6490eval $inlibc
6491
6492: see if bcopy exists
6493set bcopy d_bcopy
6494eval $inlibc
6495
2afac517 6496: see if this is a unistd.h system
6497set unistd.h i_unistd
6498eval $inhdr
6499
6500: see if getpgrp exists
6501set getpgrp d_getpgrp
6502eval $inlibc
6503
2afac517 6504case "$d_getpgrp" in
6505"$define")
6506 echo " "
dfe9444c 6507 echo "Checking to see which flavor of getpgrp is in use..."
2afac517 6508 $cat >set.c <<EOP
6509#$i_unistd I_UNISTD
6510#include <sys/types.h>
6511#ifdef I_UNISTD
6512# include <unistd.h>
6513#endif
5a411a32 6514int main()
2afac517 6515{
6516 if (getuid() == 0) {
6517 printf("(I see you are running Configure as super-user...)\n");
6518 setuid(1);
6519 }
6520#ifdef TRY_BSD_PGRP
6521 if (getpgrp(1) == 0)
6522 exit(0);
6523#else
6524 if (getpgrp() > 0)
6525 exit(0);
6526#endif
6527 exit(1);
6528}
6529EOP
6530 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6531 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6532 val="$define"
6533 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6534 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6535 val="$undef"
6536 else
6537 echo "I can't seem to compile and run the test program."
6538 if ./usg; then
6539 xxx="a USG one, i.e. you use getpgrp()."
6540 else
6541 # SVR4 systems can appear rather BSD-ish.
6542 case "$i_unistd" in
6543 $undef)
6544 xxx="a BSD one, i.e. you use getpgrp(pid)."
6545 val="$define"
6546 ;;
6547 $define)
6548 xxx="probably a USG one, i.e. you use getpgrp()."
6549 val="$undef"
6550 ;;
6551 esac
6552 fi
6553 echo "Assuming your getpgrp is $xxx" >&4
6554 fi
6555 ;;
6556*) val="$undef";;
6557esac
6558set d_bsdgetpgrp
6559eval $setvar
6560$rm -f set set.c
6561
a0d0e21e
LW
6562: see if setpgrp exists
6563set setpgrp d_setpgrp
6564eval $inlibc
6565
a0d0e21e
LW
6566case "$d_setpgrp" in
6567"$define")
6568 echo " "
dfe9444c 6569 echo "Checking to see which flavor of setpgrp is in use..."
a0d0e21e 6570 $cat >set.c <<EOP
2afac517 6571#$i_unistd I_UNISTD
6572#include <sys/types.h>
6573#ifdef I_UNISTD
6574# include <unistd.h>
6575#endif
5a411a32 6576int main()
a0d0e21e
LW
6577{
6578 if (getuid() == 0) {
6579 printf("(I see you are running Configure as super-user...)\n");
6580 setuid(1);
6581 }
2afac517 6582#ifdef TRY_BSD_PGRP
a0d0e21e 6583 if (-1 == setpgrp(1, 1))
2afac517 6584 exit(0);
6585#else
6586 if (setpgrp() != -1)
6587 exit(0);
6588#endif
6589 exit(1);
a0d0e21e
LW
6590}
6591EOP
2afac517 6592 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6593 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6594 val="$define"
6595 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6596 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6597 val="$undef"
a0d0e21e 6598 else
dfe9444c 6599 echo "(I can't seem to compile and run the test program.)"
ecfc5424 6600 if ./usg; then
2afac517 6601 xxx="a USG one, i.e. you use setpgrp()."
a0d0e21e 6602 else
2afac517 6603 # SVR4 systems can appear rather BSD-ish.
6604 case "$i_unistd" in
6605 $undef)
6606 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6607 val="$define"
6608 ;;
6609 $define)
6610 xxx="probably a USG one, i.e. you use setpgrp()."
6611 val="$undef"
6612 ;;
6613 esac
a0d0e21e 6614 fi
2afac517 6615 echo "Assuming your setpgrp is $xxx" >&4
a0d0e21e
LW
6616 fi
6617 ;;
6618*) val="$undef";;
6619esac
2afac517 6620set d_bsdsetpgrp
a0d0e21e
LW
6621eval $setvar
6622$rm -f set set.c
a0d0e21e
LW
6623: see if bzero exists
6624set bzero d_bzero
6625eval $inlibc
6626
24fef2a7 6627: check for lengths of integral types
a0d0e21e
LW
6628echo " "
6629case "$intsize" in
6630'')
6631 echo "Checking to see how big your integers are..." >&4
24fef2a7 6632 $cat >intsize.c <<'EOCP'
a0d0e21e 6633#include <stdio.h>
d674cd6d 6634int main()
a0d0e21e 6635{
24fef2a7
AD
6636 printf("intsize=%d;\n", sizeof(int));
6637 printf("longsize=%d;\n", sizeof(long));
6638 printf("shortsize=%d;\n", sizeof(short));
8e07c86e 6639 exit(0);
a0d0e21e
LW
6640}
6641EOCP
dfe9444c 6642 set intsize
dc45a647 6643 if eval $compile_ok && ./intsize > /dev/null; then
dfe9444c 6644 eval `./intsize`
8e07c86e 6645 echo "Your integers are $intsize bytes long."
24fef2a7
AD
6646 echo "Your long integers are $longsize bytes long."
6647 echo "Your short integers are $shortsize bytes long."
a0d0e21e 6648 else
24fef2a7 6649 $cat >&4 <<EOM
dfe9444c 6650!
24fef2a7
AD
6651Help! I can't compile and run the intsize test program: please enlighten me!
6652(This is probably a misconfiguration in your system or libraries, and
6653you really ought to fix it. Still, I'll try anyway.)
dfe9444c 6654!
24fef2a7
AD
6655EOM
6656 dflt=4
8e07c86e
AD
6657 rp="What is the size of an integer (in bytes)?"
6658 . ./myread
6659 intsize="$ans"
24fef2a7
AD
6660 dflt=$intsize
6661 rp="What is the size of a long integer (in bytes)?"
6662 . ./myread
6663 longsize="$ans"
6664 dflt=2
6665 rp="What is the size of a short integer (in bytes)?"
6666 . ./myread
6667 shortsize="$ans"
a0d0e21e
LW
6668 fi
6669 ;;
a0d0e21e 6670esac
dfe9444c 6671$rm -f intsize intsize.*
a0d0e21e 6672
ecfc5424 6673: see if signal is declared as pointer to function returning int or void
a0d0e21e 6674echo " "
ecfc5424
AD
6675xxx=`./findhdr signal.h`
6676$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6677if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6678 echo "You have int (*signal())() instead of void." >&4
6679 val="$undef"
6680elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
dfe9444c 6681 echo "You have void (*signal())()." >&4
ecfc5424
AD
6682 val="$define"
6683elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6684 echo "You have int (*signal())() instead of void." >&4
6685 val="$undef"
dfe9444c
AD
6686elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6687 echo "You have void (*signal())()." >&4
6688 val="$define"
a0d0e21e 6689else
ecfc5424
AD
6690 case "$d_voidsig" in
6691 '')
6692 echo "I can't determine whether signal handler returns void or int..." >&4
6693 dflt=void
6694 rp="What type does your signal handler return?"
6695 . ./myread
6696 case "$ans" in
6697 v*) val="$define";;
6698 *) val="$undef";;
6699 esac;;
6700 "$define")
dfe9444c
AD
6701 echo "As you already told me, signal handler returns void." >&4
6702 val="$define"
6703 ;;
6704 *) echo "As you already told me, signal handler returns int." >&4
6705 val="$undef"
6706 ;;
ecfc5424
AD
6707 esac
6708fi
6709set d_voidsig
6710eval $setvar
6711case "$d_voidsig" in
6712"$define") signal_t="void";;
6713*) signal_t="int";;
6714esac
6715$rm -f $$.tmp
6716
6717: check for ability to cast large floats to 32-bit ints.
6718echo " "
6719echo 'Checking whether your C compiler can cast large floats to int32.' >&4
e5c9fcd0 6720if $test "$intsize" -ge 4; then
ecfc5424
AD
6721 xxx=int
6722else
6723 xxx=long
6724fi
6725$cat >try.c <<EOCP
e5c9fcd0 6726#include <stdio.h>
ecfc5424
AD
6727#include <sys/types.h>
6728#include <signal.h>
a1896f58 6729$signal_t blech(s) int s; { exit(3); }
d674cd6d 6730int main()
2304df62 6731{
a0d0e21e 6732 $xxx i32;
e5c9fcd0 6733 double f, g;
2304df62 6734 int result = 0;
89434db5 6735 char str[16];
2304df62
AD
6736 signal(SIGFPE, blech);
6737
89434db5
AD
6738 /* Don't let compiler optimize the test away. Store the number
6739 in a writable string for gcc to pass to sscanf under HP/UX.
6740 */
6741 sprintf(str, "2147483647");
6742 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
e5c9fcd0
AD
6743 g = 10 * f;
6744 i32 = ($xxx) g;
2304df62 6745
e5c9fcd0
AD
6746 /* x86 processors will probably give 0x8000 0000, which is a
6747 sign change. We don't want that. We want to mimic SPARC
6748 behavior here, which is to preserve the sign and give
6749 back 0x7fff ffff.
6750 */
a0d0e21e 6751 if (i32 != ($xxx) f)
2304df62
AD
6752 result |= 1;
6753 exit(result);
6754}
6755EOCP
dfe9444c 6756set try
dc45a647 6757if eval $compile_ok; then
2304df62
AD
6758 ./try
6759 yyy=$?
6760else
a0d0e21e 6761 echo "(I can't seem to compile the test program--assuming it can't)"
2304df62
AD
6762 yyy=1
6763fi
6764case "$yyy" in
67650) val="$define"
6766 echo "Yup, it can."
6767 ;;
6768*) val="$undef"
6769 echo "Nope, it can't."
6770 ;;
6771esac
6772set d_casti32
6773eval $setvar
85e6fe83 6774$rm -f try try.*
a0d0e21e 6775
2304df62
AD
6776: check for ability to cast negative floats to unsigned
6777echo " "
6778echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
ecfc5424 6779$cat >try.c <<EOCP
e5c9fcd0 6780#include <stdio.h>
ecfc5424 6781#include <sys/types.h>
2304df62 6782#include <signal.h>
a1896f58
AD
6783$signal_t blech(s) int s; { exit(7); }
6784$signal_t blech_in_list(s) int s; { exit(4); }
232e078e
AD
6785unsigned long dummy_long(p) unsigned long p; { return p; }
6786unsigned int dummy_int(p) unsigned int p; { return p; }
6787unsigned short dummy_short(p) unsigned short p; { return p; }
d674cd6d 6788int main()
2304df62 6789{
e5c9fcd0 6790 double f;
2304df62
AD
6791 unsigned long along;
6792 unsigned int aint;
6793 unsigned short ashort;
6794 int result = 0;
89434db5
AD
6795 char str[16];
6796
e5c9fcd0
AD
6797 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6798 a direct f = -123. assignment. gcc-2.8.0 reportedly
6799 optimized the whole file away
6800 */
89434db5
AD
6801 /* Store the number in a writable string for gcc to pass to
6802 sscanf under HP/UX.
6803 */
6804 sprintf(str, "-123");
6805 sscanf(str, "%lf", &f); /* f = -123.; */
2304df62
AD
6806
6807 signal(SIGFPE, blech);
6808 along = (unsigned long)f;
6809 aint = (unsigned int)f;
6810 ashort = (unsigned short)f;
6811 if (along != (unsigned long)-123)
6812 result |= 1;
6813 if (aint != (unsigned int)-123)
6814 result |= 1;
6815 if (ashort != (unsigned short)-123)
6816 result |= 1;
89434db5
AD
6817 sprintf(str, "1073741824.");
6818 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
2304df62
AD
6819 f = f + f;
6820 along = 0;
6821 along = (unsigned long)f;
6822 if (along != 0x80000000)
6823 result |= 2;
6824 f -= 1.;
6825 along = 0;
6826 along = (unsigned long)f;
6827 if (along != 0x7fffffff)
6828 result |= 1;
6829 f += 2.;
6830 along = 0;
6831 along = (unsigned long)f;
6832 if (along != 0x80000001)
6833 result |= 2;
232e078e
AD
6834 if (result)
6835 exit(result);
6836 signal(SIGFPE, blech_in_list);
89434db5
AD
6837 sprintf(str, "123.");
6838 sscanf(str, "%lf", &f); /* f = 123.; */
232e078e
AD
6839 along = dummy_long((unsigned long)f);
6840 aint = dummy_int((unsigned int)f);
6841 ashort = dummy_short((unsigned short)f);
6842 if (along != (unsigned long)123)
6843 result |= 4;
6844 if (aint != (unsigned int)123)
6845 result |= 4;
6846 if (ashort != (unsigned short)123)
6847 result |= 4;
2304df62
AD
6848 exit(result);
6849
6850}
6851EOCP
dfe9444c 6852set try
dc45a647 6853if eval $compile_ok; then
2304df62
AD
6854 ./try
6855 castflags=$?
6856else
ecfc5424 6857 echo "(I can't seem to compile the test program--assuming it can't)"
232e078e 6858 castflags=7
2304df62
AD
6859fi
6860case "$castflags" in
68610) val="$define"
6862 echo "Yup, it can."
6863 ;;
6864*) val="$undef"
6865 echo "Nope, it can't."
6866 ;;
6867esac
6868set d_castneg
6869eval $setvar
6870$rm -f try.*
6871
2304df62
AD
6872: see if vprintf exists
6873echo " "
6874if set vprintf val -f d_vprintf; eval $csym; $val; then
6875 echo 'vprintf() found.' >&4
6876 val="$define"
6877 $cat >vprintf.c <<'EOF'
6878#include <varargs.h>
6879
d674cd6d 6880int main() { xxx("foo"); }
2304df62
AD
6881
6882xxx(va_alist)
6883va_dcl
6884{
6885 va_list args;
6886 char buf[10];
6887
6888 va_start(args);
6889 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6890}
6891EOF
dfe9444c
AD
6892 set vprintf
6893 if eval $compile && ./vprintf; then
2304df62
AD
6894 echo "Your vsprintf() returns (int)." >&4
6895 val2="$undef"
6896 else
6897 echo "Your vsprintf() returns (char*)." >&4
6898 val2="$define"
6899 fi
6900else
6901 echo 'vprintf() NOT found.' >&4
6902 val="$undef"
6903 val2="$undef"
6904fi
6905set d_vprintf
6906eval $setvar
6907val=$val2
6908set d_charvspr
6909eval $setvar
6910
a0d0e21e
LW
6911: see if chown exists
6912set chown d_chown
6913eval $inlibc
6914
6915: see if chroot exists
6916set chroot d_chroot
6917eval $inlibc
6918
2304df62
AD
6919: see if chsize exists
6920set chsize d_chsize
6921eval $inlibc
6922
de4597cb
JH
6923hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6924while $test $# -ge 2; do
6925 case "$1" in
6926 $define) echo "#include <$2>";;
6927 esac ;
6928 shift 2;
6929done > try.c;
6930echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
2000072c 6931if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
de4597cb
JH
6932 val="$define";
6933else
6934 val="$undef";
6935fi;
6936set $varname;
6937eval $setvar;
6938$rm -f try.c try.o'
6939
6940: see if this is a sys/uio.h system
6941set sys/uio.h i_sysuio
6942eval $inhdr
6943
6944echo "Checking to see if your system supports struct iovec..." >&4
6945set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6946eval $hasfield
6947case "$d_iovec_s" in
6948"$define") echo "Yup, it does." >&4
6949 ;;
6950*) echo "Nope, it doesn't." >&4
6951 ;;
6952esac
6953
6954socketlib=''
6955sockethdr=''
6956: see whether socket exists
6957echo " "
6958$echo $n "Hmm... $c" >&4
6959if set socket val -f d_socket; eval $csym; $val; then
6960 echo "Looks like you have Berkeley networking support." >&4
6961 d_socket="$define"
6962 if set setsockopt val -f; eval $csym; $val; then
6963 d_oldsock="$undef"
6964 else
6965 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6966 d_oldsock="$define"
6967 fi
6968else
6969 if $contains socklib libc.list >/dev/null 2>&1; then
6970 echo "Looks like you have Berkeley networking support." >&4
6971 d_socket="$define"
6972 : we will have to assume that it supports the 4.2 BSD interface
6973 d_oldsock="$undef"
6974 else
6975 echo "You don't have Berkeley networking in libc$_a..." >&4
6976 if test "X$d_socket" = "X$define"; then
6977 echo "...but you seem to believe that you have sockets." >&4
6978 else
6979 for net in net socket
6980 do
6981 if test -f /usr/lib/lib$net$_a; then
6982 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6983 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6984 if $contains socket libc.list >/dev/null 2>&1; then
6985 d_socket="$define"
6986 socketlib="-l$net"
6987 case "$net" in
6988 net)
6989 echo "...but the Wollongong group seems to have hacked it in." >&4
6990 sockethdr="-I/usr/netinclude"
6991 ;;
6992 esac
6993 echo "Found Berkeley sockets interface in lib$net." >& 4
6994 if $contains setsockopt libc.list >/dev/null 2>&1; then
6995 d_oldsock="$undef"
6996 else
6997 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6998 d_oldsock="$define"
6999 fi
7000 break
7001 fi
7002 fi
7003 done
7004 if test "X$d_socket" != "X$define"; then
7005 echo "or anywhere else I see." >&4
7006 d_socket="$undef"
7007 d_oldsock="$undef"
7008 fi
7009 fi
7010 fi
7011fi
7012
7013: see if socketpair exists
7014set socketpair d_sockpair
7015eval $inlibc
7016
7017
5b34fd99 7018echo " "
de4597cb
JH
7019echo "Checking the availability of certain socket constants..." >& 4
7020for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
7021 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
7022 $cat >try.c <<EOF
ac60b016 7023#include <sys/types.h>
de4597cb
JH
7024#include <sys/socket.h>
7025int main() {
7026 int i = $ENUM;
7027}
7028EOF
7029 val="$undef"
7030 set try; if eval $compile; then
7031 val="$define"
7032 fi
7033 set d_${enum}; eval $setvar
7034 $rm -f try.c try
7035done
7036
7037set sendmsg d_sendmsg
7038eval $inlibc
7039
7040set recvmsg d_recvmsg
7041eval $inlibc
7042
7043echo " "
7044$echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7045set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7046eval $hasfield
7047case "$d_msghdr_s" in
7048"$define") echo "Yup, it does." >&4
7049 ;;
7050*) echo "Nope, it doesn't." >&4
7051 ;;
7052esac
7053
7054$echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7055set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7056eval $hasfield
7057case "$d_cmsghdr_s" in
7058"$define") echo "Yup, it does." >&4
7059 ;;
7060*) echo "Nope, it doesn't." >&4
7061 ;;
7062esac
7063
2304df62
AD
7064: check for const keyword
7065echo " "
7066echo 'Checking to see if your C compiler knows about "const"...' >&4
7067$cat >const.c <<'EOCP'
7068typedef struct spug { int drokk; } spug;
5a411a32 7069int main()
2304df62
AD
7070{
7071 const char *foo;
7072 const spug y;
7073}
7074EOCP
7075if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7076 val="$define"
7077 echo "Yup, it does."
7078else
7079 val="$undef"
7080 echo "Nope, it doesn't."
7081fi
7082set d_const
7083eval $setvar
7084
7085: see if crypt exists
7086echo " "
7087if set crypt val -f d_crypt; eval $csym; $val; then
7088 echo 'crypt() found.' >&4
7089 val="$define"
7090 cryptlib=''
7091else
dfe9444c 7092 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
2304df62 7093 if $test -z "$cryptlib"; then
dfe9444c 7094 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
2304df62
AD
7095 else
7096 cryptlib=-lcrypt
7097 fi
7098 if $test -z "$cryptlib"; then
dfe9444c 7099 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
2304df62
AD
7100 else
7101 cryptlib=-lcrypt
7102 fi
7103 if $test -z "$cryptlib"; then
dfe9444c 7104 cryptlib=`./loc libcrypt$_a "" $libpth`
2304df62
AD
7105 else
7106 cryptlib=-lcrypt
7107 fi
7108 if $test -z "$cryptlib"; then
7109 echo 'crypt() NOT found.' >&4
7110 val="$undef"
7111 else
7112 val="$define"
7113 fi
7114fi
7115set d_crypt
7116eval $setvar
7117
921b2963
JH
7118: get csh whereabouts
7119case "$csh" in
7120'csh') val="$undef" ;;
7121*) val="$define" ;;
7122esac
7123set d_csh
7124eval $setvar
7125: Respect a hint or command line value for full_csh.
7126case "$full_csh" in
7127'') full_csh=$csh ;;
7128esac
7129
a0d0e21e
LW
7130: see if cuserid exists
7131set cuserid d_cuserid
2304df62
AD
7132eval $inlibc
7133
a0d0e21e
LW
7134: see if this is a limits.h system
7135set limits.h i_limits
85e6fe83
LW
7136eval $inhdr
7137
a0d0e21e
LW
7138: see if this is a float.h system
7139set float.h i_float
7140eval $inhdr
7141
7142: See if number of significant digits in a double precision number is known
7143echo " "
7144$cat >dbl_dig.c <<EOM
7145#$i_limits I_LIMITS
7146#$i_float I_FLOAT
7147#ifdef I_LIMITS
7148#include <limits.h>
85e6fe83 7149#endif
a0d0e21e
LW
7150#ifdef I_FLOAT
7151#include <float.h>
7152#endif
7153#ifdef DBL_DIG
7154printf("Contains DBL_DIG");
85e6fe83 7155#endif
85e6fe83 7156EOM
a0d0e21e
LW
7157$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7158if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7159 echo "DBL_DIG found." >&4
7160 val="$define"
2304df62 7161else
a0d0e21e
LW
7162 echo "DBL_DIG NOT found." >&4
7163 val="$undef"
2304df62 7164fi
a0d0e21e
LW
7165$rm -f dbl_dig.?
7166set d_dbl_dig
2304df62 7167eval $setvar
2304df62 7168
5ff3f7a4
GS
7169
7170if $test X"$use64bits" = X"$define"; then
7171 : see if dbminit64 exists
7172 set dbminit64 d_dbminit64
7173 eval $inlibc
7174
7175 : see if dbmclose64 exists
7176 set dbmclose64 d_dbmclose64
7177 eval $inlibc
7178
7179 : see if fetch64 exists
7180 set fetch64 d_fetch64
7181 eval $inlibc
7182
7183 : see if store64 exists
7184 set store64 d_store64
7185 eval $inlibc
7186
7187 : see if delete64 exists
7188 set delete64 d_delete64
7189 eval $inlibc
7190
7191 : see if firstkey64 exists
7192 set firstkey64 d_firstkey64
7193 eval $inlibc
7194
7195 : see if nextkey64 exists
7196 set nextkey64 d_nextkey64
7197 eval $inlibc
7198else
7199 val="$undef"
7200 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7201 do
7202 set $xxx
7203 eval $setvar
7204 done
7205fi
7206
a0d0e21e
LW
7207: see if difftime exists
7208set difftime d_difftime
2304df62
AD
7209eval $inlibc
7210
5ff3f7a4
GS
7211: see if sys/stat.h is available
7212set sys/stat.h i_sysstat
7213eval $inhdr
7214
a0d0e21e
LW
7215: see if this is a dirent system
7216echo " "
7217if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7218 val="$define"
7219 echo "<dirent.h> found." >&4
7220else
7221 val="$undef"
7222 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7223 echo "<sys/dir.h> found." >&4
7224 echo " "
7225 else
7226 xinc=`./findhdr sys/ndir.h`
7227 fi
7228 echo "<dirent.h> NOT found." >&4
7229fi
7230set i_dirent
7231eval $setvar
7232
7233: Look for type of directory structure.
7234echo " "
7235$cppstdin $cppflags $cppminus < "$xinc" > try.c
7236
7237case "$direntrytype" in
7238''|' ')
7239 case "$i_dirent" in
7240 $define) guess1='struct dirent' ;;
7241 *) guess1='struct direct' ;;
2afac517 7242 esac
7243 ;;
7244*) guess1="$direntrytype"
7245 ;;
8e07c86e
AD
7246esac
7247
2afac517 7248case "$guess1" in
7249'struct dirent') guess2='struct direct' ;;
7250*) guess2='struct dirent' ;;
7251esac
7252
7253if $contains "$guess1" try.c >/dev/null 2>&1; then
7254 direntrytype="$guess1"
7255 echo "Your directory entries are $direntrytype." >&4
7256elif $contains "$guess2" try.c >/dev/null 2>&1; then
7257 direntrytype="$guess2"
7258 echo "Your directory entries seem to be $direntrytype." >&4
7259else
7260 echo "I don't recognize your system's directory entries." >&4
7261 rp="What type is used for directory entries on this system?"
7262 dflt="$guess1"
7263 . ./myread
7264 direntrytype="$ans"
7265fi
7266$rm -f try.c
a0d0e21e 7267
a0d0e21e 7268
2afac517 7269: see if the directory entry stores field length
7270echo " "
7271$cppstdin $cppflags $cppminus < "$xinc" > try.c
7272if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7273 echo "Good, your directory entry keeps length information in d_namlen." >&4
7274 val="$define"
7275else
7276 echo "Your directory entry does not know about the d_namlen field." >&4
7277 val="$undef"
7278fi
7279set d_dirnamlen
7280eval $setvar
7281$rm -f try.c
a0d0e21e 7282
a0d0e21e 7283
5ff3f7a4
GS
7284if $test X"$use64bits" = X"$define"; then
7285 : see if fstat64 exists
7286 set fstat64 d_fstat64
7287 eval $inlibc
a0d0e21e 7288
5ff3f7a4
GS
7289 : see if ftruncate64 exists
7290 set ftruncate64 d_ftruncate64
7291 eval $inlibc
a0d0e21e 7292
5ff3f7a4
GS
7293 : see if lockf64 exists
7294 set lockf64 d_lockf64
7295 eval $inlibc
a0d0e21e 7296
2000072c
JH
7297 : see if llseek exists
7298 set llseek d_llseek
7299 eval $inlibc
7300
5ff3f7a4
GS
7301 : see if lseek64 exists
7302 set lseek64 d_lseek64
7303 eval $inlibc
7304
7305 : see if lstat64 exists
7306 set lstat64 d_lstat64
7307 eval $inlibc
7308
7309 : see if open64 exists
7310 set open64 d_open64
7311 eval $inlibc
7312
7313 : see if opendir64 exists
7314 set opendir64 d_opendir64
7315 eval $inlibc
7316
7317 : see if readdir64 exists
7318 set readdir64 d_readdir64
7319 eval $inlibc
7320
7321 : see if seekdir64 exists
7322 set seekdir64 d_seekdir64
7323 eval $inlibc
7324
7325 : see if stat64 exists
7326 set stat64 d_stat64
7327 eval $inlibc
7328
7329 : see if telldir64 exists
7330 set telldir64 d_telldir64
7331 eval $inlibc
7332
7333 : see if truncate64 exists
7334 set truncate64 d_truncate64
7335 eval $inlibc
7336
7337 : check for off64_t
7338 echo " "
7339 echo $n "Checking to see if your system supports off64_t...$c" >&4
7340 $cat >try.c <<EOCP
7341#include <sys/types.h>
ca11f38f 7342#include <unistd.h>
5ff3f7a4
GS
7343off64_t foo() { off64_t x; x = 7; return x; }'
7344EOCP
7345 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7346 val="$define"
7347 echo " Yup, it does." >&4
7348 else
7349 val="$undef"
7350 echo " Nope, it doesn't." >&4
7351 fi
7352 $rm -f try.*
2000072c
JH
7353 set d_off64_t
7354 eval $setvar
7355
7356 : check for offset_t
7357 echo " "
7358 echo $n "Checking to see if your system supports offset_t...$c" >&4
7359 $cat >try.c <<EOCP
7360#include <sys/types.h>
ca11f38f 7361#include <unistd.h>
2000072c
JH
7362offset_t foo() { offset_t x; x = 7; return x; }'
7363EOCP
7364 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7365 val="$define"
7366 echo " Yup, it does." >&4
7367 else
7368 val="$undef"
7369 echo " Nope, it doesn't." >&4
7370 fi
7371 $rm -f try.*
7372 set d_offset_t
5ff3f7a4
GS
7373 eval $setvar
7374
7375 : check for ino64_t
7376 echo " "
7377 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7378 val="$undef"
7379 case "$i_sysstat" in
7380 "$define" )
7381 $cat >try.c <<EOCP
7382#include <sys/types.h>
7383#include <sys/stat.h>
7384ino64_t foo() { ino64_t x; x = 7; return x; }'
7385EOCP
7386 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7387 val="$define"
7388 fi
7389 $rm -f try.*
7390 ;;
7391 esac
7392 if $test "X$val" = X"$define"; then
7393 echo " Yup, it does." >&4
7394 else
7395 echo " Nope, it doesn't." >&4
7396 fi
2000072c 7397 set d_ino64_t
5ff3f7a4
GS
7398 eval $setvar
7399
7400 : check for struct flock64
7401 echo " "
85ab1d1d 7402 echo "Checking to see if your system supports struct flock64..." >&4
5ff3f7a4 7403 if $h_fcntl; then
de4597cb 7404 set d_flock64_s flock64 l_len define fcntl.h
5ff3f7a4 7405 eval $hasfield
85ab1d1d
JH
7406 else
7407 val="$undef"
de4597cb 7408 set d_flock64_s
85ab1d1d 7409 eval $setvar
5ff3f7a4 7410 fi
de4597cb 7411 case "$d_flock64_s" in
85ab1d1d
JH
7412 "$define") echo "Yup, it does." >&4
7413 ;;
7414 *) echo "Nope, it doesn't." >&4
7415 ;;
7416 esac
5ff3f7a4
GS
7417
7418 : check for struct dirent64
7419 echo " "
85ab1d1d 7420 echo "Checking to see if your system supports struct dirent64..." >&4
de4597cb 7421 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
5ff3f7a4 7422 eval $hasfield
de4597cb 7423 case "$d_dirent64_s" in
85ab1d1d
JH
7424 "$define") echo "Yup, it does." >&4
7425 ;;
7426 *) echo "Nope, it doesn't." >&4
7427 ;;
7428 esac
7429
5ff3f7a4
GS
7430else
7431 val="$undef"
2000072c 7432 for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64_t d_offset_t d_ino64_t d_flock64_s d_dirent64_s
5ff3f7a4
GS
7433 do
7434 set $xxx
7435 eval $setvar
7436 done
7437fi
7438
7439: see if dlerror exists
7440xxx_runnm="$runnm"
7441runnm=false
7442set dlerror d_dlerror
7443eval $inlibc
7444runnm="$xxx_runnm"
7445
7446: see if dlfcn is available
7447set dlfcn.h i_dlfcn
7448eval $inhdr
7449
7450case "$usedl" in
7451$define|y|true)
7452 $cat << EOM
7453
7454On a few systems, the dynamically loaded modules that perl generates and uses
7455will need a different extension than shared libs. The default will probably
7456be appropriate.
7457
7458EOM
7459 case "$dlext" in
7460 '') dflt="$so" ;;
7461 *) dflt="$dlext" ;;
7462 esac
7463 rp='What is the extension of dynamically loaded modules'
7464 . ./myread
7465 dlext="$ans"
7466 ;;
7467*)
7468 dlext="none"
7469 ;;
7470esac
7471
7472: Check if dlsym need a leading underscore
a0d0e21e
LW
7473echo " "
7474val="$undef"
7475
7476case "$dlsrc" in
7477dl_dlopen.xs)
7478 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7479 $cat >dyna.c <<'EOM'
7480fred () { }
7481EOM
7482
7483$cat >fred.c<<EOM
7484
7485#include <stdio.h>
7486#$i_dlfcn I_DLFCN
7487#ifdef I_DLFCN
7488#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7489#else
7490#include <sys/types.h>
7491#include <nlist.h>
7492#include <link.h>
7493#endif
7494
7495extern int fred() ;
7496
5a411a32 7497int main()
a0d0e21e
LW
7498{
7499 void * handle ;
7500 void * symbol ;
7501#ifndef RTLD_LAZY
7502 int mode = 1 ;
7503#else
7504 int mode = RTLD_LAZY ;
7505#endif
7506 handle = dlopen("./dyna.$dlext", mode) ;
7507 if (handle == NULL) {
5f05dabc 7508 printf ("1\n") ;
7509 fflush (stdout) ;
7510 exit(0);
a0d0e21e
LW
7511 }
7512 symbol = dlsym(handle, "fred") ;
7513 if (symbol == NULL) {
5f05dabc 7514 /* try putting a leading underscore */
7515 symbol = dlsym(handle, "_fred") ;
7516 if (symbol == NULL) {
7517 printf ("2\n") ;
7518 fflush (stdout) ;
7519 exit(0);
7520 }
7521 printf ("3\n") ;
a0d0e21e
LW
7522 }
7523 else
5f05dabc 7524 printf ("4\n") ;
36477c24 7525 fflush (stdout) ;
7526 exit(0);
a0d0e21e
LW
7527}
7528EOM
760ac839 7529 : Call the object file tmp-dyna.o in case dlext=o.
a0d0e21e 7530 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
dfe9444c
AD
7531 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7532 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
87563a30 7533 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
a0d0e21e
LW
7534 xxx=`./fred`
7535 case $xxx in
7536 1) echo "Test program failed using dlopen." >&4
7537 echo "Perhaps you should not use dynamic loading." >&4;;
7538 2) echo "Test program failed using dlsym." >&4
7539 echo "Perhaps you should not use dynamic loading." >&4;;
7540 3) echo "dlsym needs a leading underscore" >&4
7541 val="$define" ;;
7542 4) echo "dlsym doesn't need a leading underscore." >&4;;
7543 esac
7544 else
7545 echo "I can't compile and run the test program." >&4
7546 fi
7547 ;;
7548esac
7549
a78b0d02 7550$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
a0d0e21e
LW
7551
7552set d_dlsymun
7553eval $setvar
7554
85ab1d1d
JH
7555hasproto='varname=$1; func=$2; shift; shift;
7556while $test $# -ge 2; do
7557 case "$1" in
7558 $define) echo "#include <$2>";;
7559 esac ;
7560 shift 2;
7561done > try.c;
7562$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7563if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7564 echo "$func() prototype found.";
7565 val="$define";
7566else
7567 echo "$func() prototype NOT found.";
7568 val="$undef";
7569fi;
7570set $varname;
7571eval $setvar;
7572$rm -f try.c tryout.c'
7573
7574: see if prototype for drand48 is available
7575echo " "
7576set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7577eval $hasproto
7578
a0d0e21e
LW
7579: see if dup2 exists
7580set dup2 d_dup2
7581eval $inlibc
7582
5ff3f7a4
GS
7583: see if eaccess exists
7584set eaccess d_eaccess
7585eval $inlibc
7586
7587: see if endgrent exists
7588set endgrent d_endgrent
7589eval $inlibc
7590
e5c9fcd0
AD
7591: see if endhostent exists
7592set endhostent d_endhent
7593eval $inlibc
7594
7595: see if endnetent exists
7596set endnetent d_endnent
7597eval $inlibc
7598
7599: see if endprotoent exists
7600set endprotoent d_endpent
7601eval $inlibc
7602
5ff3f7a4
GS
7603: see if endpwent exists
7604set endpwent d_endpwent
7605eval $inlibc
7606
e5c9fcd0
AD
7607: see if endservent exists
7608set endservent d_endsent
7609eval $inlibc
7610
f1066039
JH
7611: see if endspent exists
7612set endspent d_endspent
7613eval $inlibc
7614
8e07c86e
AD
7615: Locate the flags for 'open()'
7616echo " "
7617$cat >open3.c <<'EOCP'
7618#include <sys/types.h>
7619#ifdef I_FCNTL
7620#include <fcntl.h>
7621#endif
7622#ifdef I_SYS_FILE
7623#include <sys/file.h>
7624#endif
d674cd6d 7625int main() {
8e07c86e
AD
7626 if(O_RDONLY);
7627#ifdef O_TRUNC
7628 exit(0);
7629#else
7630 exit(1);
7631#endif
7632}
7633EOCP
7634: check sys/file.h first to get FREAD on Sun
7635if $test `./findhdr sys/file.h` && \
dfe9444c 7636 set open3 -DI_SYS_FILE && eval $compile; then
8e07c86e
AD
7637 h_sysfile=true;
7638 echo "<sys/file.h> defines the O_* constants..." >&4
7639 if ./open3; then
7640 echo "and you have the 3 argument form of open()." >&4
7641 val="$define"
7642 else
7643 echo "but not the 3 argument form of open(). Oh, well." >&4
7644 val="$undef"
7645 fi
7646elif $test `./findhdr fcntl.h` && \
dfe9444c 7647 set open3 -DI_FCNTL && eval $compile; then
8e07c86e
AD
7648 h_fcntl=true;
7649 echo "<fcntl.h> defines the O_* constants..." >&4
7650 if ./open3; then
7651 echo "and you have the 3 argument form of open()." >&4
7652 val="$define"
7653 else
7654 echo "but not the 3 argument form of open(). Oh, well." >&4
7655 val="$undef"
7656 fi
7657else
7658 val="$undef"
7659 echo "I can't find the O_* constant definitions! You got problems." >&4
7660fi
7661set d_open3
7662eval $setvar
7663$rm -f open3*
7664
7665: check for non-blocking I/O stuff
7666case "$h_sysfile" in
7667true) echo "#include <sys/file.h>" > head.c;;
7668*)
7669 case "$h_fcntl" in
7670 true) echo "#include <fcntl.h>" > head.c;;
7671 *) echo "#include <sys/fcntl.h>" > head.c;;
7672 esac
7673 ;;
7674esac
7675echo " "
7676echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7677case "$o_nonblock" in
7678'')
7679 $cat head.c > try.c
7680 $cat >>try.c <<'EOCP'
d674cd6d 7681int main() {
8e07c86e
AD
7682#ifdef O_NONBLOCK
7683 printf("O_NONBLOCK\n");
7684 exit(0);
7685#endif
7686#ifdef O_NDELAY
7687 printf("O_NDELAY\n");
7688 exit(0);
7689#endif
7690#ifdef FNDELAY
7691 printf("FNDELAY\n");
7692 exit(0);
7693#endif
7694 exit(0);
7695}
7696EOCP
dfe9444c 7697 set try
dc45a647 7698 if eval $compile_ok; then
8e07c86e
AD
7699 o_nonblock=`./try`
7700 case "$o_nonblock" in
7701 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7702 *) echo "Seems like we can use $o_nonblock.";;
7703 esac
7704 else
7705 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7706 fi
7707 ;;
7708*) echo "Using $hint value $o_nonblock.";;
7709esac
7710$rm -f try try.* .out core
7711
7712echo " "
7713echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7714case "$eagain" in
7715'')
7716 $cat head.c > try.c
7717 $cat >>try.c <<EOCP
7718#include <errno.h>
7719#include <sys/types.h>
7720#include <signal.h>
4633a7c4 7721#define MY_O_NONBLOCK $o_nonblock
dc45a647 7722#ifndef errno /* XXX need better Configure test */
8e07c86e 7723extern int errno;
dc45a647 7724#endif
8e07c86e 7725$signal_t blech(x) int x; { exit(3); }
4633a7c4
LW
7726EOCP
7727 $cat >> try.c <<'EOCP'
d674cd6d 7728int main()
8e07c86e
AD
7729{
7730 int pd[2];
7731 int pu[2];
7732 char buf[1];
7733 char string[100];
7734
7735 pipe(pd); /* Down: child -> parent */
7736 pipe(pu); /* Up: parent -> child */
7737 if (0 != fork()) {
7738 int ret;
7739 close(pd[1]); /* Parent reads from pd[0] */
7740 close(pu[0]); /* Parent writes (blocking) to pu[1] */
4633a7c4 7741 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8e07c86e
AD
7742 exit(1);
7743 signal(SIGALRM, blech);
7744 alarm(5);
7745 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7746 exit(2);
7747 sprintf(string, "%d\n", ret);
7748 write(2, string, strlen(string));
7749 alarm(0);
7750#ifdef EAGAIN
7751 if (errno == EAGAIN) {
7752 printf("EAGAIN\n");
7753 goto ok;
7754 }
7755#endif
7756#ifdef EWOULDBLOCK
7757 if (errno == EWOULDBLOCK)
7758 printf("EWOULDBLOCK\n");
7759#endif
7760 ok:
7761 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7762 sleep(2); /* Give it time to close our pipe */
7763 alarm(5);
7764 ret = read(pd[0], buf, 1); /* Should read EOF */
7765 alarm(0);
7766 sprintf(string, "%d\n", ret);
7767 write(3, string, strlen(string));
7768 exit(0);
7769 }
7770
7771 close(pd[0]); /* We write to pd[1] */
7772 close(pu[1]); /* We read from pu[0] */
7773 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7774 close(pd[1]); /* Pipe pd is now fully closed! */
7775 exit(0); /* Bye bye, thank you for playing! */
7776}
7777EOCP
dfe9444c 7778 set try
dc45a647 7779 if eval $compile_ok; then
774d564b 7780 echo "$startsh" >mtry
40a7a20a 7781 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8e07c86e
AD
7782 chmod +x mtry
7783 ./mtry >/dev/null 2>&1
7784 case $? in
7785 0) eagain=`$cat try.out`;;
7786 1) echo "Could not perform non-blocking setting!";;
7787 2) echo "I did a successful read() for something that was not there!";;
7788 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7789 *) echo "Something terribly wrong happened during testing.";;
7790 esac
7791 rd_nodata=`$cat try.ret`
7792 echo "A read() system call with no data present returns $rd_nodata."
7793 case "$rd_nodata" in
7794 0|-1) ;;
7795 *)
7796 echo "(That's peculiar, fixing that to be -1.)"
7797 rd_nodata=-1
7798 ;;
7799 esac
7800 case "$eagain" in
7801 '')
7802 echo "Forcing errno EAGAIN on read() with no data available."
7803 eagain=EAGAIN
7804 ;;
7805 *)
7806 echo "Your read() sets errno to $eagain when no data is available."
7807 ;;
7808 esac
7809 status=`$cat try.err`
7810 case "$status" in
7811 0) echo "And it correctly returns 0 to signal EOF.";;
7812 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7813 *) echo "However, your read() returns '$status' on EOF??";;
7814 esac
7815 val="$define"
28757baa 7816 if test "$status" = "$rd_nodata"; then
8e07c86e
AD
7817 echo "WARNING: you can't distinguish between EOF and no data!"
7818 val="$undef"
7819 fi
7820 else
7821 echo "I can't compile the test program--assuming errno EAGAIN will do."
7822 eagain=EAGAIN
7823 fi
7824 set d_eofnblk
7825 eval $setvar
7826 ;;
7827*)
7828 echo "Using $hint value $eagain."
7829 echo "Your read() returns $rd_nodata when no data is present."
7830 case "$d_eofnblk" in
7831 "$define") echo "And you can see EOF because read() returns 0.";;
7832 "$undef") echo "But you can't see EOF status from read() returned value.";;
7833 *)
7834 echo "(Assuming you can't see EOF status from read anyway.)"
7835 d_eofnblk=$undef
7836 ;;
7837 esac
7838 ;;
7839esac
7840$rm -f try try.* .out core head.c mtry
7841
a0d0e21e
LW
7842: see if fchmod exists
7843set fchmod d_fchmod
7844eval $inlibc
7845
7846: see if fchown exists
7847set fchown d_fchown
7848eval $inlibc
7849
7850: see if this is an fcntl system
7851set fcntl d_fcntl
7852eval $inlibc
7853
921b2963
JH
7854: see if sys/select.h has to be included
7855set sys/select.h i_sysselct
7856eval $inhdr
7857
7858: see if we should include time.h, sys/time.h, or both
7859echo " "
7860if test "X$timeincl" = X; then
7861 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7862 $echo $n "I'm now running the test program...$c"
7863 $cat >try.c <<'EOCP'
7864#include <sys/types.h>
7865#ifdef I_TIME
7866#include <time.h>
7867#endif
7868#ifdef I_SYSTIME
7869#ifdef SYSTIMEKERNEL
7870#define KERNEL
7871#endif
7872#include <sys/time.h>
7873#endif
7874#ifdef I_SYSSELECT
7875#include <sys/select.h>
7876#endif
d674cd6d 7877int main()
921b2963
JH
7878{
7879 struct tm foo;
7880#ifdef S_TIMEVAL
7881 struct timeval bar;
7882#endif
7883#ifdef S_TIMEZONE
7884 struct timezone tzp;
7885#endif
7886 if (foo.tm_sec == foo.tm_sec)
7887 exit(0);
7888#ifdef S_TIMEVAL
7889 if (bar.tv_sec == bar.tv_sec)
7890 exit(0);
7891#endif
7892 exit(1);
7893}
7894EOCP
7895 flags=''
7896 for s_timezone in '-DS_TIMEZONE' ''; do
7897 sysselect=''
7898 for s_timeval in '-DS_TIMEVAL' ''; do
7899 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7900 for i_time in '' '-DI_TIME'; do
7901 for i_systime in '-DI_SYSTIME' ''; do
7902 case "$flags" in
7903 '') $echo $n ".$c"
7904 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7905 if eval $compile; then
7906 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7907 shift
7908 flags="$*"
7909 echo " "
7910 $echo $n "Succeeded with $flags$c"
7911 fi
7912 ;;
7913 esac
7914 done
7915 done
7916 done
7917 done
7918 done
7919 timeincl=''
7920 echo " "
7921 case "$flags" in
7922 *SYSTIMEKERNEL*) i_systimek="$define"
7923 timeincl=`./findhdr sys/time.h`
7924 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7925 *) i_systimek="$undef";;
7926 esac
7927 case "$flags" in
7928 *I_TIME*) i_time="$define"
7929 timeincl=`./findhdr time.h`" $timeincl"
7930 echo "We'll include <time.h>." >&4;;
7931 *) i_time="$undef";;
7932 esac
7933 case "$flags" in
7934 *I_SYSTIME*) i_systime="$define"
7935 timeincl=`./findhdr sys/time.h`" $timeincl"
7936 echo "We'll include <sys/time.h>." >&4;;
7937 *) i_systime="$undef";;
7938 esac
7939 $rm -f try.c try
7940fi
7941
7942: check for fd_set items
7943$cat <<EOM
7944
7945Checking to see how well your C compiler handles fd_set and friends ...
7946EOM
7947$cat >fd_set.c <<EOCP
7948#$i_systime I_SYS_TIME
7949#$i_sysselct I_SYS_SELECT
7950#$d_socket HAS_SOCKET
7951#include <sys/types.h>
7952#ifdef HAS_SOCKET
7953#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7954#endif
7955#ifdef I_SYS_TIME
7956#include <sys/time.h>
7957#endif
7958#ifdef I_SYS_SELECT
7959#include <sys/select.h>
7960#endif
d674cd6d 7961int main() {
921b2963
JH
7962 fd_set fds;
7963
7964#ifdef TRYBITS
7965 if(fds.fds_bits);
7966#endif
7967
7968#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7969 exit(0);
7970#else
7971 exit(1);
7972#endif
7973}
7974EOCP
7975set fd_set -DTRYBITS
7976if eval $compile; then
7977 d_fds_bits="$define"
7978 d_fd_set="$define"
7979 echo "Well, your system knows about the normal fd_set typedef..." >&4
7980 if ./fd_set; then
7981 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7982 d_fd_macros="$define"
7983 else
7984 $cat >&4 <<'EOM'
7985but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7986EOM
7987 d_fd_macros="$undef"
7988 fi
7989else
7990 $cat <<'EOM'
7991Hmm, your compiler has some difficulty with fd_set. Checking further...
7992EOM
7993 set fd_set
7994 if eval $compile; then
7995 d_fds_bits="$undef"
7996 d_fd_set="$define"
7997 echo "Well, your system has some sort of fd_set available..." >&4
7998 if ./fd_set; then
7999 echo "and you have the normal fd_set macros." >&4
8000 d_fd_macros="$define"
8001 else
8002 $cat <<'EOM'
8003but not the normal fd_set macros! Gross! More work for me...
8004EOM
8005 d_fd_macros="$undef"
8006 fi
8007 else
8008 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8009 d_fd_set="$undef"
8010 d_fds_bits="$undef"
8011 d_fd_macros="$undef"
8012 fi
8013fi
8014$rm -f fd_set*
8015
a0d0e21e
LW
8016: see if fgetpos exists
8017set fgetpos d_fgetpos
8018eval $inlibc
8019
5ff3f7a4
GS
8020
8021if $test X"$use64bits" = X"$define"; then
8022 : see if fgetpos64 exists
8023 set fgetpos64 d_fgetpos64
8024 eval $inlibc
8025
8026 : see if fopen64 exists
8027 set freopen64 d_fopen64
8028 eval $inlibc
8029
8030 : see if freopen64 exists
8031 set freopen64 d_freopen64
8032 eval $inlibc
8033
8034 : see if fseek64 exists
8035 set fseek64 d_fseek64
8036 eval $inlibc
8037
8038 : see if fseeko64 exists
8039 set fseeko64 d_fseeko64
8040 eval $inlibc
8041
8042 : see if fsetpos64 exists
8043 set fsetpos64 d_fsetpos64
8044 eval $inlibc
8045
8046 : see if ftell64 exists
8047 set ftell64 d_ftell64
8048 eval $inlibc
8049
8050 : see if ftello64 exists
8051 set ftello64 d_ftello64
8052 eval $inlibc
8053
8054 : see if tmpfile64 exists
8055 set tmpfile64 d_tmpfile64
8056 eval $inlibc
8057else
8058 val="$undef"
8059 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8060 do
8061 set $xxx
8062 eval $setvar
8063 done
8064fi
9cc6feab 8065
a0d0e21e
LW
8066: see if flock exists
8067set flock d_flock
8068eval $inlibc
8069
a0d0e21e
LW
8070: see if fork exists
8071set fork d_fork
8072eval $inlibc
8073
8074: see if pathconf exists
8075set pathconf d_pathconf
8076eval $inlibc
8077
8078: see if fpathconf exists
8079set fpathconf d_fpathconf
8080eval $inlibc
8081
5ff3f7a4
GS
8082: see if fseeko exists
8083set fseeko d_fseeko
8084eval $inlibc
8085
a0d0e21e
LW
8086: see if fsetpos exists
8087set fsetpos d_fsetpos
8088eval $inlibc
8089
9b9c89a3
JH
8090: see if this is a sys/param system
8091set sys/param.h i_sysparam
8092eval $inhdr
8093
104d25b7
JH
8094: see if this is a sys/mount.h system
8095set sys/mount.h i_sysmount
8096eval $inhdr
8097
8098
8099: see if statfs exists
8100set statfs d_statfs
8101eval $inlibc
8102
8103: see if fstatfs exists
8104set fstatfs d_fstatfs
8105eval $inlibc
8106
8107: see if statfs knows about mount flags
9b9c89a3 8108set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
104d25b7
JH
8109eval $hasfield
8110
8111
8112: see if statvfs exists
8113set statvfs d_statvfs
8114eval $inlibc
8115
8116: see if fstatvfs exists
8117set fstatvfs d_fstatvfs
8118eval $inlibc
8119
8120
5ff3f7a4
GS
8121: see if ftello exists
8122set ftello d_ftello
8123eval $inlibc
8124
8125: see if getgrent exists
8126set getgrent d_getgrent
8127eval $inlibc
8128
693762b4
AD
8129: see if gethostbyaddr exists
8130set gethostbyaddr d_gethbyaddr
8131eval $inlibc
8132
8133: see if gethostbyname exists
8134set gethostbyname d_gethbyname
8135eval $inlibc
8136
a0d0e21e
LW
8137: see if gethostent exists
8138set gethostent d_gethent
8139eval $inlibc
8140
921b2963
JH
8141: see how we will look up host name
8142echo " "
a63faeb8
JH
8143call=''
8144if set gethostname val -f d_gethname; eval $csym; $val; then
921b2963
JH
8145 echo 'gethostname() found.' >&4
8146 d_gethname="$define"
8147 call=gethostname
a63faeb8
JH
8148fi
8149if set uname val -f d_uname; eval $csym; $val; then
921b2963
JH
8150 if ./xenix; then
8151 $cat <<'EOM'
8152uname() was found, but you're running xenix, and older versions of xenix
8153have a broken uname(). If you don't really know whether your xenix is old
8154enough to have a broken system call, use the default answer.
8155
8156EOM
8157 dflt=y
8158 case "$d_uname" in
8159 "$define") dflt=n;;
8160 esac
8161 rp='Is your uname() broken?'
8162 . ./myread
8163 case "$ans" in
8164 n*) d_uname="$define"; call=uname;;
8165 esac
8166 else
8167 echo 'uname() found.' >&4
8168 d_uname="$define"
a63faeb8
JH
8169 case "$call" in
8170 '') call=uname ;;
8171 esac
921b2963
JH
8172 fi
8173fi
8174case "$d_gethname" in
8175'') d_gethname="$undef";;
8176esac
8177case "$d_uname" in
8178'') d_uname="$undef";;
8179esac
8180case "$d_uname$d_gethname" in
8181*define*)
8182 dflt=n
8183 cat <<EOM
8184
8185Every now and then someone has a $call() that lies about the hostname
8186but can't be fixed for political or economic reasons. If you wish, I can
8187pretend $call() isn't there and maybe compute hostname at run-time
8188thanks to the '$phostname' command.
8189
8190EOM
8191 rp="Shall I ignore $call() from now on?"
8192 . ./myread
8193 case "$ans" in
8194 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8195 esac;;
8196esac
8197case "$phostname" in
8198'') aphostname='';;
8199*) case "$aphostname" in
8200 /*) ;;
8201 *) set X $phostname
8202 shift
8203 file=$1
8204 shift
8205 file=`./loc $file $file $pth`
8206 aphostname=`echo $file $*`
8207 ;;
8208 esac
8209 ;;
8210esac
8211case "$d_uname$d_gethname" in
8212*define*) ;;
8213*)
8214 case "$phostname" in
8215 '')
8216 echo "There will be no way for $package to get your hostname." >&4;;
8217 *)
8218 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8219 ;;
8220 esac;;
8221esac
8222case "$d_phostname" in
8223'') d_phostname="$undef";;
8224esac
8225
dc45a647
MB
8226: see if this is a netdb.h system
8227set netdb.h i_netdb
8228eval $inhdr
8229
8230: see if prototypes for various gethostxxx netdb.h functions are available
8231echo " "
8232set d_gethostprotos gethostent $i_netdb netdb.h
8233eval $hasproto
8234
a0d0e21e
LW
8235: see if getlogin exists
8236set getlogin d_getlogin
8237eval $inlibc
8238
ccc7f9b3
KS
8239: see if getmntent exists
8240set getmntent d_getmntent
8241eval $inlibc
8242
693762b4
AD
8243: see if getnetbyaddr exists
8244set getnetbyaddr d_getnbyaddr
8245eval $inlibc
8246
8247: see if getnetbyname exists
8248set getnetbyname d_getnbyname
8249eval $inlibc
8250
e5c9fcd0
AD
8251: see if getnetent exists
8252set getnetent d_getnent
8253eval $inlibc
8254
dc45a647
MB
8255: see if prototypes for various getnetxxx netdb.h functions are available
8256echo " "
8257set d_getnetprotos getnetent $i_netdb netdb.h
8258eval $hasproto
8259
693762b4
AD
8260
8261: see if getprotobyname exists
8262set getprotobyname d_getpbyname
8263eval $inlibc
8264
8265: see if getprotobynumber exists
8266set getprotobynumber d_getpbynumber
8267eval $inlibc
e5c9fcd0
AD
8268
8269: see if getprotoent exists
8270set getprotoent d_getpent
8271eval $inlibc
8272
2afac517 8273: see if getpgid exists
8274set getpgid d_getpgid
a0d0e21e
LW
8275eval $inlibc
8276
8277: see if getpgrp2 exists
8278set getpgrp2 d_getpgrp2
8279eval $inlibc
8280
8281: see if getppid exists
8282set getppid d_getppid
8283eval $inlibc
8284
8285: see if getpriority exists
8286set getpriority d_getprior
8287eval $inlibc
8288
dc45a647
MB
8289: see if prototypes for various getprotoxxx netdb.h functions are available
8290echo " "
8291set d_getprotoprotos getprotoent $i_netdb netdb.h
8292eval $hasproto
8293
5ff3f7a4
GS
8294: see if getpwent exists
8295set getpwent d_getpwent
8296eval $inlibc
8297
8298
693762b4
AD
8299: see if getservbyname exists
8300set getservbyname d_getsbyname
8301eval $inlibc
8302
8303: see if getservbyport exists
8304set getservbyport d_getsbyport
8305eval $inlibc
e5c9fcd0
AD
8306
8307: see if getservent exists
8308set getservent d_getsent
8309eval $inlibc
8310
dc45a647
MB
8311: see if prototypes for various getservxxx netdb.h functions are available
8312echo " "
8313set d_getservprotos getservent $i_netdb netdb.h
8314eval $hasproto
8315
f1066039
JH
8316: see if getspent exists
8317set getspent d_getspent
8318eval $inlibc
8319
8320: see if getspnam exists
8321set getspnam d_getspnam
8322eval $inlibc
8323
5f05dabc 8324: see if gettimeofday or ftime exists
8325set gettimeofday d_gettimeod
8326eval $inlibc
8327case "$d_gettimeod" in
8328"$undef")
8329 set ftime d_ftime
8330 eval $inlibc
8331 ;;
8332*)
8333 val="$undef"; set d_ftime; eval $setvar
8334 ;;
8335esac
8336case "$d_gettimeod$d_ftime" in
8337"$undef$undef")
8338 echo " "
8339 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8340 ;;
8341esac
8342
5ff3f7a4
GS
8343: see if this is an grp system
8344set grp.h i_grp
8345eval $inhdr
8346
8347case "$i_grp" in
8348$define)
8349 xxx=`./findhdr grp.h`
8350 $cppstdin $cppflags $cppminus < $xxx >$$.h
8351
8352 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8353 val="$define"
8354 else
8355 val="$undef"
8356 fi
8357 set d_grpasswd
8358 eval $setvar
8359
8360 $rm -f $$.h
8361 ;;
8362*)
8363 val="$undef";
8364 set d_grpasswd; eval $setvar
8365 ;;
8366esac
8367
ccc7f9b3
KS
8368: see if hasmntopt exists
8369set hasmntopt d_hasmntopt
8370eval $inlibc
8371
a0d0e21e
LW
8372: see if this is a netinet/in.h or sys/in.h system
8373set netinet/in.h i_niin sys/in.h i_sysin
8374eval $inhdr
8375
5ff3f7a4 8376: see if arpa/inet.h has to be included
93341792 8377set arpa/inet.h i_arpainet
28e8609d
JH
8378eval $inhdr
8379
a0d0e21e
LW
8380: see if htonl --and friends-- exists
8381val=''
8382set htonl val
8383eval $inlibc
8384
8385: Maybe they are macros.
8386case "$val" in
8387$undef)
8388 $cat >htonl.c <<EOM
8389#include <stdio.h>
8390#include <sys/types.h>
8391#$i_niin I_NETINET_IN
8392#$i_sysin I_SYS_IN
93341792 8393#$i_arpainet I_ARPA_INET
a0d0e21e
LW
8394#ifdef I_NETINET_IN
8395#include <netinet/in.h>
8396#endif
8397#ifdef I_SYS_IN
8398#include <sys/in.h>
8399#endif
28e8609d
JH
8400#ifdef I_ARPA_INET
8401#include <arpa/inet.h>
8402#endif
a0d0e21e
LW
8403#ifdef htonl
8404printf("Defined as a macro.");
8405#endif
8406EOM
8407 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8408 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8409 val="$define"
8410 echo "But it seems to be defined as a macro." >&4
8411 fi
8412 $rm -f htonl.?
8413 ;;
8414esac
8415set d_htonl
8416eval $setvar
8417
8418: see which of string.h or strings.h is needed
8419echo " "
8420strings=`./findhdr string.h`
8421if $test "$strings" && $test -r "$strings"; then
8422 echo "Using <string.h> instead of <strings.h>." >&4
8423 val="$define"
8424else
8425 val="$undef"
8426 strings=`./findhdr strings.h`
8427 if $test "$strings" && $test -r "$strings"; then
8428 echo "Using <strings.h> instead of <string.h>." >&4
8429 else
8430 echo "No string header found -- You'll surely have problems." >&4
8431 fi
8432fi
8433set i_string
8434eval $setvar
8435case "$i_string" in
8436"$undef") strings=`./findhdr strings.h`;;
8437*) strings=`./findhdr string.h`;;
8438esac
8439
8440: index or strchr
8441echo " "
8442if set index val -f; eval $csym; $val; then
8443 if set strchr val -f d_strchr; eval $csym; $val; then
8444 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8445 val="$define"
8446 vali="$undef"
8447 echo "strchr() found." >&4
8448 else
8449 val="$undef"
8450 vali="$define"
8451 echo "index() found." >&4
8452 fi
8453 else
8454 val="$undef"
8455 vali="$define"
8456 echo "index() found." >&4
8457 fi
8458else
8459 if set strchr val -f d_strchr; eval $csym; $val; then
8460 val="$define"
8461 vali="$undef"
8462 echo "strchr() found." >&4
8463 else
8464 echo "No index() or strchr() found!" >&4
8465 val="$undef"
8466 vali="$undef"
8467 fi
8468fi
8469set d_strchr; eval $setvar
8470val="$vali"
8471set d_index; eval $setvar
8472
7e1af8bc 8473: check whether inet_aton exists
8474set inet_aton d_inetaton
8475eval $inlibc
8476
5ff3f7a4 8477: see if inttypes.h is available
7f3d1cf1
BH
8478: we want a real compile instead of Inhdr because some systems
8479: have an inttypes.h which includes non-existent headers
921b2963 8480echo " "
7f3d1cf1
BH
8481$cat >try.c <<EOCP
8482#include <inttypes.h>
5a411a32 8483int main() {
921b2963
JH
8484 static int32_t foo32 = 0x12345678;
8485}
7f3d1cf1
BH
8486EOCP
8487set try
921b2963
JH
8488if eval $compile; then
8489 echo "<inttypes.h> found." >&4
7f3d1cf1
BH
8490 val="$define"
8491else
921b2963 8492 echo "<inttypes.h> NOT found." >&4
7f3d1cf1
BH
8493 val="$undef"
8494fi
921b2963 8495$rm -f try.c try
7f3d1cf1
BH
8496set i_inttypes
8497eval $setvar
8498
5ff3f7a4 8499: check for int64_t
85ab1d1d
JH
8500case "$use64bits" in
8501"$define" )
8502 echo " "
8503 echo $n "Checking to see if your system supports int64_t...$c" >&4
8504 $cat >try.c <<EOCP
5ff3f7a4
GS
8505#include <sys/types.h>
8506#$i_inttypes I_INTTYPES
8507#ifdef I_INTTYPES
8508#include <inttypes.h>
8509#endif
94be4d36 8510int64_t foo() { int64_t x; x = 7; return x; }
5ff3f7a4 8511EOCP
85ab1d1d
JH
8512 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8513 val="$define"
8514 echo " Yup, it does." >&4
8515 else
8516 val="$undef"
8517 echo " Nope, it doesn't." >&4
8518 fi
8519 $rm -f try.*
8520 ;;
8521*) val="$undef"
8522 ;;
8523esac
5ff3f7a4
GS
8524set d_int64t
8525eval $setvar
8526
8527
a0d0e21e
LW
8528: Look for isascii
8529echo " "
8530$cat >isascii.c <<'EOCP'
8531#include <stdio.h>
8532#include <ctype.h>
d674cd6d 8533int main() {
a0d0e21e
LW
8534 int c = 'A';
8535 if (isascii(c))
8536 exit(0);
8537 else
8538 exit(1);
8539}
8540EOCP
dfe9444c
AD
8541set isascii
8542if eval $compile; then
a0d0e21e
LW
8543 echo "isascii() found." >&4
8544 val="$define"
8545else
8546 echo "isascii() NOT found." >&4
8547 val="$undef"
8548fi
8549set d_isascii
8550eval $setvar
8551$rm -f isascii*
8552
8553: see if killpg exists
8554set killpg d_killpg
8555eval $inlibc
8556
dd64f1c3
AD
8557: see if lchown exists
8558echo " "
8559$cat > try.c <<'EOCP'
8560/* System header to define __stub macros and hopefully few prototypes,
8561 which can conflict with char lchown(); below. */
8562#include <assert.h>
8563/* Override any gcc2 internal prototype to avoid an error. */
8564/* We use char because int might match the return type of a gcc2
8565 builtin and then its argument prototype would still apply. */
8566char lchown();
8567int main() {
8568 /* The GNU C library defines this for functions which it implements
8569 to always fail with ENOSYS. Some functions are actually named
8570 something starting with __ and the normal name is an alias. */
8571#if defined (__stub_lchown) || defined (__stub___lchown)
8572choke me
8573#else
8574lchown();
8575#endif
8576; return 0; }
8577EOCP
8578set try
8579if eval $compile; then
8580 $echo "lchown() found." >&4
8581 val="$define"
8582else
8583 $echo "lchown() NOT found." >&4
8584 val="$undef"
8585fi
8586set d_lchown
8587eval $setvar
8588
a0d0e21e
LW
8589: see if link exists
8590set link d_link
8591eval $inlibc
8592
a0d0e21e
LW
8593: see if localeconv exists
8594set localeconv d_locconv
8595eval $inlibc
8596
8597: see if lockf exists
8598set lockf d_lockf
8599eval $inlibc
8600
85ab1d1d
JH
8601: check for length of double
8602echo " "
8603case "$doublesize" in
8604'')
8605 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8606 $cat >try.c <<'EOCP'
8607#include <stdio.h>
d674cd6d 8608int main()
85ab1d1d
JH
8609{
8610 printf("%d\n", sizeof(double));
8611}
8612EOCP
8613 set try
8614 if eval $compile_ok; then
8615 doublesize=`./try`
8616 $echo " $doublesize bytes." >&4
8617 else
8618 dflt='8'
8619 echo "(I can't seem to compile the test program. Guessing...)"
8620 rp="What is the size of a double precision number (in bytes)?"
8621 . ./myread
8622 doublesize="$ans"
8623 fi
8624 ;;
8625esac
8626$rm -f try.c try
8627
e5c9fcd0
AD
8628: check for long doubles
8629echo " "
8630echo $n "Checking to see if your system supports long doubles...$c" >&4
8631echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
dc45a647 8632if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
e5c9fcd0
AD
8633 val="$define"
8634 echo " Yup, it does." >&4
8635else
8636 val="$undef"
8637 echo " Nope, it doesn't." >&4
8638fi
8639$rm try.*
8640set d_longdbl
8641eval $setvar
8642
8643: check for length of long double
e5c9fcd0
AD
8644case "${d_longdbl}${longdblsize}" in
8645$define)
dc45a647 8646 echo " "
e5c9fcd0
AD
8647 $echo $n "Checking to see how big your long doubles are...$c" >&4
8648 $cat >try.c <<'EOCP'
8649#include <stdio.h>
5a411a32 8650int main()
e5c9fcd0
AD
8651{
8652 printf("%d\n", sizeof(long double));
8653}
8654EOCP
8655 set try
c4f23d77 8656 if eval $compile; then
e5c9fcd0 8657 longdblsize=`./try`
dc45a647 8658 $echo " $longdblsize bytes." >&4
e5c9fcd0
AD
8659 else
8660 dflt='8'
dc45a647 8661 echo " "
c4f23d77 8662 echo "(I can't seem to compile the test program. Guessing...)" >&4
e5c9fcd0
AD
8663 rp="What is the size of a long double (in bytes)?"
8664 . ./myread
8665 longdblsize="$ans"
8666 fi
85ab1d1d
JH
8667 if $test "X$doublesize" = "X$longdblsize"; then
8668 echo "(That isn't any different from an ordinary double.)"
8669 fi
dc45a647
MB
8670 ;;
8671esac
8672$rm -f try.c try
8673
8674: check for long long
8675echo " "
8676echo $n "Checking to see if your system supports long long...$c" >&4
8677echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8678if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8679 val="$define"
8680 echo " Yup, it does." >&4
8681else
8682 val="$undef"
8683 echo " Nope, it doesn't." >&4
8684fi
8685$rm try.*
8686set d_longlong
8687eval $setvar
8688
8689: check for length of long long
8690case "${d_longlong}${longlongsize}" in
8691$define)
8692 echo " "
8693 $echo $n "Checking to see how big your long longs are...$c" >&4
8694 $cat >try.c <<'EOCP'
8695#include <stdio.h>
5a411a32 8696int main()
dc45a647
MB
8697{
8698 printf("%d\n", sizeof(long long));
8699}
8700EOCP
8701 set try
8702 if eval $compile_ok; then
8703 longlongsize=`./try`
8704 $echo " $longlongsize bytes." >&4
8705 else
8706 dflt='8'
8707 echo " "
8708 echo "(I can't seem to compile the test program. Guessing...)"
8709 rp="What is the size of a long long (in bytes)?"
8710 . ./myread
8711 longlongsize="$ans"
8712 fi
85ab1d1d
JH
8713 if $test "X$longsize" = "X$longlongsize"; then
8714 echo "(That isn't any different from an ordinary long.)"
8715 fi
e5c9fcd0
AD
8716 ;;
8717esac
8718$rm -f try.c try
8719
a0d0e21e
LW
8720: see if lstat exists
8721set lstat d_lstat
8722eval $inlibc
8723
ff49bff8
JH
8724: see if madvise exists
8725set madvise d_madvise
8726eval $inlibc
8727
a0d0e21e
LW
8728: see if mblen exists
8729set mblen d_mblen
8730eval $inlibc
8731
8732: see if mbstowcs exists
8733set mbstowcs d_mbstowcs
8734eval $inlibc
8735
8736: see if mbtowc exists
8737set mbtowc d_mbtowc
8738eval $inlibc
8739
0f27ced1
JH
8740: see if memchr exists
8741set memchr d_memchr
8742eval $inlibc
8743
a0d0e21e
LW
8744: see if memcmp exists
8745set memcmp d_memcmp
8746eval $inlibc
8747
8748: see if memcpy exists
8749set memcpy d_memcpy
8750eval $inlibc
8751
8752: see if memmove exists
8753set memmove d_memmove
2304df62
AD
8754eval $inlibc
8755
8756: see if memset exists
8757set memset d_memset
8758eval $inlibc
8759
8760: see if mkdir exists
8761set mkdir d_mkdir
8762eval $inlibc
8763
a0d0e21e
LW
8764: see if mkfifo exists
8765set mkfifo d_mkfifo
8766eval $inlibc
8767
8768: see if mktime exists
8769set mktime d_mktime
8770eval $inlibc
8771
ff49bff8
JH
8772: see if this is a sys/mman.h system
8773set sys/mman.h i_sysmman
8774eval $inhdr
8775
8776: see if mmap exists
8777set mmap d_mmap
8778eval $inlibc
8779: see what shmat returns
8780: default to something harmless
8781mmaptype='void *'
8782case "$i_sysmman$d_mmap" in
8783"$define$define")
8784 $cat >mmap.c <<'END'
8785#include <sys/mman.h>
8786void *mmap();
8787END
8788 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8789 mmaptype='void *'
8790 else
8791 mmaptype='caddr_t'
8792 fi
8793 echo "and it returns ($mmaptype)." >&4
8794 ;;
8795esac
8796
8797
8798
8799: see if mprotect exists
8800set mprotect d_mprotect
8801eval $inlibc
8802
2304df62
AD
8803: see if msgctl exists
8804set msgctl d_msgctl
8805eval $inlibc
8806
8807: see if msgget exists
8808set msgget d_msgget
8809eval $inlibc
8810
8811: see if msgsnd exists
8812set msgsnd d_msgsnd
8813eval $inlibc
8814
8815: see if msgrcv exists
8816set msgrcv d_msgrcv
8817eval $inlibc
8818
8819: see how much of the 'msg*(2)' library is present.
8820h_msg=true
8821echo " "
8822case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8823*"$undef"*) h_msg=false;;
8824esac
6087ac44
JH
8825case "$osname" in
8826freebsd)
8827 case "`ipcs 2>&1`" in
8828 "SVID messages"*"not configured"*)
5ff3f7a4 8829 echo "Your $osname does not have the msg*(2) configured." >&4
6087ac44
JH
8830 h_msg=false
8831 val="$undef"
8832 set msgctl d_msgctl
8833 eval $setvar
8834 set msgget d_msgget
8835 eval $setvar
8836 set msgsnd d_msgsnd
8837 eval $setvar
8838 set msgrcv d_msgrcv
8839 eval $setvar
8840 ;;
8841 esac
8842 ;;
8843esac
2304df62
AD
8844: we could also check for sys/ipc.h ...
8845if $h_msg && $test `./findhdr sys/msg.h`; then
8846 echo "You have the full msg*(2) library." >&4
8847 val="$define"
8848else
8849 echo "You don't have the full msg*(2) library." >&4
8850 val="$undef"
8851fi
8852set d_msg
8853eval $setvar
8854
ff49bff8
JH
8855: see if msync exists
8856set msync d_msync
8857eval $inlibc
8858
8859: see if munmap exists
8860set munmap d_munmap
8861eval $inlibc
8862
dfe9444c
AD
8863: see if nice exists
8864set nice d_nice
8865eval $inlibc
8866
c4747d3e 8867: see if POSIX threads are available
13666627 8868if test "X$usethreads" = "X$define"; then
c4747d3e
JH
8869 set pthread.h i_pthread
8870 eval $inhdr
8871else
8872 i_pthread="$undef"
8873fi
8874
8875
8876
8877: how to create joinable pthreads
8878if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13666627
JH
8879 echo " "
8880 echo "Checking what constant to use for creating joinable pthreads..." >&4
8881 $cat >try.c <<'EOCP'
8882#include <pthread.h>
8883int main() {
8884 int detachstate = JOINABLE;
8885}
8886EOCP
8887 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8888 if eval $compile; then
c6912327 8889 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
ef4af2be
JH
8890 val="$undef" # Yes, undef.
8891 set d_old_pthread_create_joinable
13666627 8892 eval $setvar
ef4af2be
JH
8893 val=""
8894 set old_pthread_create_joinable
13666627
JH
8895 eval $setvar
8896 else
8897 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8898 if eval $compile; then
c6912327 8899 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13666627 8900 val="$define"
ef4af2be 8901 set d_old_pthread_create_joinable
13666627
JH
8902 eval $setvar
8903 val=PTHREAD_CREATE_UNDETACHED
ef4af2be 8904 set old_pthread_create_joinable
13666627
JH
8905 eval $setvar
8906 else
8907 set try -DJOINABLE=__UNDETACHED
8908 if eval $compile; then
c6912327 8909 echo "You seem to use __UNDETACHED." >&4
13666627 8910 val="$define"
ef4af2be 8911 set d_old_pthread_create_joinable
13666627
JH
8912 eval $setvar
8913 val=__UNDETACHED
ef4af2be 8914 set old_pthread_create_joinable
13666627
JH
8915 eval $setvar
8916 else
c6912327 8917 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13666627 8918 val="$define"
ef4af2be 8919 set d_old_pthread_create_joinable
13666627
JH
8920 eval $setvar
8921 val=0
ef4af2be 8922 set old_pthread_create_joinable
13666627
JH
8923 eval $setvar
8924 fi
8925 fi
8926 fi
8927 $rm -f try try.*
8928else
ef4af2be
JH
8929 d_old_pthread_create_joinable="$undef"
8930 old_pthread_create_joinable=""
13666627
JH
8931fi
8932
ef4af2be
JH
8933: see if pause exists
8934set pause d_pause
8935eval $inlibc
8936
8937: see if pipe exists
8938set pipe d_pipe
8939eval $inlibc
8940
8941: see if poll exists
8942set poll d_poll
8943eval $inlibc
8944
31dfa2f6
JH
8945
8946: see whether the various POSIXish _yields exist
8947$cat >try.c <<EOP
8948#include <pthread.h>
8949#include <stdio.h>
5a411a32 8950int main() {
31dfa2f6
JH
8951#ifdef SCHED_YIELD
8952 sched_yield();
8953#else
8954#ifdef PTHREAD_YIELD
8955 pthread_yield();
8956#else
8957#ifdef PTHREAD_YIELD_NULL
8958 pthread_yield(NULL);
8959#endif
8960#endif
8961#endif
8962}
8963EOP
8964: see if sched_yield exists
8965set try -DSCHED_YIELD
8966if eval $compile; then
8967 val="$define"
8968 sched_yield='sched_yield()'
8969else
8970 val="$undef"
8971fi
8972case "$usethreads" in
8973$define)
8974 case "$val" in
8975 $define) echo 'sched_yield() found.' >&4 ;;
8976 *) echo 'sched_yield() NOT found.' >&4 ;;
8977 esac
8978esac
8979set d_sched_yield
8980eval $setvar
8981
8982: see if pthread_yield exists
8983set try -DPTHREAD_YIELD
8984if eval $compile; then
8985 val="$define"
8986 case "$sched_yield" in
8987 '') sched_yield='pthread_yield()' ;;
8988 esac
8989else
8990 set try -DPTHREAD_YIELD_NULL
8991 if eval $compile; then
8992 val="$define"
8993 case "$sched_yield" in
8994 '') sched_yield='pthread_yield(NULL)' ;;
8995 esac
8996 else
8997 val="$undef"
8998 fi
8999fi
9000case "$usethreads" in
9001$define)
9002 case "$val" in
9003 $define) echo 'pthread_yield() found.' >&4 ;;
9004 *) echo 'pthread_yield() NOT found.' >&4 ;;
9005 esac
9006 ;;
9007esac
9008set d_pthread_yield
9009eval $setvar
9010
9011case "$sched_yield" in
9012'') sched_yield=undef ;;
9013esac
9014
9015$rm -f try try.*
9016
4aa0a1f7
AD
9017: see if this is a pwd.h system
9018set pwd.h i_pwd
9019eval $inhdr
9020
9021case "$i_pwd" in
9022$define)
9023 xxx=`./findhdr pwd.h`
85e6fe83 9024 $cppstdin $cppflags $cppminus < $xxx >$$.h
4aa0a1f7 9025
2304df62 9026 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
4aa0a1f7 9027 val="$define"
2304df62 9028 else
4aa0a1f7 9029 val="$undef"
2304df62 9030 fi
4aa0a1f7
AD
9031 set d_pwquota
9032 eval $setvar
9033
2304df62 9034 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
4aa0a1f7 9035 val="$define"
2304df62 9036 else
4aa0a1f7 9037 val="$undef"
2304df62 9038 fi
4aa0a1f7
AD
9039 set d_pwage
9040 eval $setvar
9041
2304df62 9042 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
4aa0a1f7 9043 val="$define"
2304df62 9044 else
4aa0a1f7 9045 val="$undef"
2304df62 9046 fi
4aa0a1f7
AD
9047 set d_pwchange
9048 eval $setvar
9049
2304df62 9050 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
4aa0a1f7 9051 val="$define"
2304df62 9052 else
4aa0a1f7 9053 val="$undef"
2304df62 9054 fi
4aa0a1f7
AD
9055 set d_pwclass
9056 eval $setvar
9057
2304df62 9058 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
4aa0a1f7 9059 val="$define"
2304df62 9060 else
4aa0a1f7 9061 val="$undef"
2304df62 9062 fi
4aa0a1f7
AD
9063 set d_pwexpire
9064 eval $setvar
9065
2304df62 9066 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
4aa0a1f7 9067 val="$define"
2304df62 9068 else
4aa0a1f7 9069 val="$undef"
2304df62 9070 fi
4aa0a1f7
AD
9071 set d_pwcomment
9072 eval $setvar
9073
c4f23d77
AD
9074 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9075 val="$define"
9076 else
9077 val="$undef"
9078 fi
9079 set d_pwgecos
9080 eval $setvar
9081
28e8609d
JH
9082 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9083 val="$define"
9084 else
9085 val="$undef"
9086 fi
9087 set d_pwpasswd
9088 eval $setvar
9089
2304df62 9090 $rm -f $$.h
4aa0a1f7 9091 ;;
5ff3f7a4 9092*)
4aa0a1f7
AD
9093 val="$undef";
9094 set d_pwquota; eval $setvar
9095 set d_pwage; eval $setvar
9096 set d_pwchange; eval $setvar
9097 set d_pwclass; eval $setvar
9098 set d_pwexpire; eval $setvar
9099 set d_pwcomment; eval $setvar
c4f23d77 9100 set d_pwgecos; eval $setvar
28e8609d 9101 set d_pwpasswd; eval $setvar
4aa0a1f7
AD
9102 ;;
9103esac
2304df62 9104
85e6fe83 9105: see if readdir and friends exist
2304df62
AD
9106set readdir d_readdir
9107eval $inlibc
85e6fe83
LW
9108set seekdir d_seekdir
9109eval $inlibc
9110set telldir d_telldir
9111eval $inlibc
9112set rewinddir d_rewinddir
9113eval $inlibc
2304df62 9114
a0d0e21e
LW
9115: see if readlink exists
9116set readlink d_readlink
9117eval $inlibc
9118
de4597cb
JH
9119: see if readv exists
9120set readv d_readv
9121eval $inlibc
9122
2304df62
AD
9123: see if rename exists
9124set rename d_rename
9125eval $inlibc
9126
9127: see if rmdir exists
9128set rmdir d_rmdir
9129eval $inlibc
9130
8ff267be 9131: see if memory.h is available.
9132val=''
9133set memory.h val
9134eval $inhdr
9135
9136: See if it conflicts with string.h
9137case "$val" in
9138$define)
9139 case "$strings" in
9140 '') ;;
9141 *)
9142 $cppstdin $cppflags $cppminus < $strings > mem.h
9143 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9144 echo " "
9145 echo "We won't be including <memory.h>."
9146 val="$undef"
9147 fi
9148 $rm -f mem.h
9149 ;;
9150 esac
9151esac
9152set i_memory
9153eval $setvar
9154
2304df62
AD
9155: can bcopy handle overlapping blocks?
9156val="$undef"
9157case "$d_bcopy" in
9158"$define")
9159 echo " "
9160 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
dfe9444c 9161 $cat >try.c <<EOCP
8ff267be 9162#$i_memory I_MEMORY
9163#$i_stdlib I_STDLIB
9164#$i_string I_STRING
9165#$i_unistd I_UNISTD
9166EOCP
dfe9444c 9167 $cat >>try.c <<'EOCP'
8ff267be 9168#include <stdio.h>
8ff267be 9169#ifdef I_MEMORY
9170# include <memory.h>
9171#endif
9172#ifdef I_STDLIB
9173# include <stdlib.h>
9174#endif
9175#ifdef I_STRING
9176# include <string.h>
9177#else
9178# include <strings.h>
9179#endif
9180#ifdef I_UNISTD
9181# include <unistd.h> /* Needed for NetBSD */
9182#endif
d674cd6d 9183int main()
2304df62 9184{
85e6fe83
LW
9185char buf[128], abc[128];
9186char *b;
9187int len;
9188int off;
9189int align;
a0d0e21e 9190
85e6fe83 9191bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
2304df62
AD
9192
9193for (align = 7; align >= 0; align--) {
9194 for (len = 36; len; len--) {
9195 b = buf+align;
85e6fe83 9196 bcopy(abc, b, len);
2304df62
AD
9197 for (off = 1; off <= len; off++) {
9198 bcopy(b, b+off, len);
9199 bcopy(b+off, b, len);
85e6fe83 9200 if (bcmp(b, abc, len))
2304df62
AD
9201 exit(1);
9202 }
9203 }
9204}
9205exit(0);
9206}
9207EOCP
dfe9444c 9208 set try
dc45a647 9209 if eval $compile_ok; then
dfe9444c 9210 if ./try 2>/dev/null; then
2304df62
AD
9211 echo "Yes, it can."
9212 val="$define"
9213 else
9214 echo "It can't, sorry."
8ff267be 9215 case "$d_memmove" in
9216 "$define") echo "But that's Ok since you have memmove()." ;;
9217 esac
2304df62
AD
9218 fi
9219 else
9220 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 9221 case "$d_memmove" in
9222 "$define") echo "But that's Ok since you have memmove()." ;;
9223 esac
2304df62
AD
9224 fi
9225 ;;
9226esac
dfe9444c 9227$rm -f try.* try core
2304df62
AD
9228set d_safebcpy
9229eval $setvar
9230
9231: can memcpy handle overlapping blocks?
9232val="$undef"
9233case "$d_memcpy" in
9234"$define")
9235 echo " "
9236 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
dfe9444c 9237 $cat >try.c <<EOCP
8ff267be 9238#$i_memory I_MEMORY
9239#$i_stdlib I_STDLIB
9240#$i_string I_STRING
9241#$i_unistd I_UNISTD
9242EOCP
dfe9444c 9243 $cat >>try.c <<'EOCP'
8ff267be 9244#include <stdio.h>
8ff267be 9245#ifdef I_MEMORY
9246# include <memory.h>
9247#endif
9248#ifdef I_STDLIB
9249# include <stdlib.h>
9250#endif
9251#ifdef I_STRING
9252# include <string.h>
9253#else
9254# include <strings.h>
9255#endif
9256#ifdef I_UNISTD
9257# include <unistd.h> /* Needed for NetBSD */
9258#endif
d674cd6d 9259int main()
2304df62 9260{
85e6fe83
LW
9261char buf[128], abc[128];
9262char *b;
9263int len;
9264int off;
9265int align;
9266
8ff267be 9267/* Copy "abcde..." string to char abc[] so that gcc doesn't
9268 try to store the string in read-only memory. */
85e6fe83 9269memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
2304df62
AD
9270
9271for (align = 7; align >= 0; align--) {
9272 for (len = 36; len; len--) {
9273 b = buf+align;
232e078e 9274 memcpy(b, abc, len);
2304df62 9275 for (off = 1; off <= len; off++) {
2304df62 9276 memcpy(b+off, b, len);
232e078e 9277 memcpy(b, b+off, len);
85e6fe83 9278 if (memcmp(b, abc, len))
2304df62
AD
9279 exit(1);
9280 }
9281 }
9282}
9283exit(0);
9284}
9285EOCP
dfe9444c 9286 set try
dc45a647 9287 if eval $compile_ok; then
dfe9444c 9288 if ./try 2>/dev/null; then
2304df62
AD
9289 echo "Yes, it can."
9290 val="$define"
9291 else
9292 echo "It can't, sorry."
8ff267be 9293 case "$d_memmove" in
9294 "$define") echo "But that's Ok since you have memmove()." ;;
9295 esac
2304df62
AD
9296 fi
9297 else
9298 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 9299 case "$d_memmove" in
9300 "$define") echo "But that's Ok since you have memmove()." ;;
9301 esac
2304df62
AD
9302 fi
9303 ;;
9304esac
dfe9444c 9305$rm -f try.* try core
2304df62
AD
9306set d_safemcpy
9307eval $setvar
9308
36477c24 9309: can memcmp be trusted to compare relative magnitude?
9310val="$undef"
9311case "$d_memcmp" in
9312"$define")
9313 echo " "
dfe9444c
AD
9314 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9315 $cat >try.c <<EOCP
36477c24 9316#$i_memory I_MEMORY
9317#$i_stdlib I_STDLIB
9318#$i_string I_STRING
9319#$i_unistd I_UNISTD
9320EOCP
dfe9444c 9321 $cat >>try.c <<'EOCP'
36477c24 9322#include <stdio.h>
36477c24 9323#ifdef I_MEMORY
9324# include <memory.h>
9325#endif
9326#ifdef I_STDLIB
9327# include <stdlib.h>
9328#endif
9329#ifdef I_STRING
9330# include <string.h>
9331#else
9332# include <strings.h>
9333#endif
9334#ifdef I_UNISTD
9335# include <unistd.h> /* Needed for NetBSD */
9336#endif
d674cd6d 9337int main()
36477c24 9338{
9339char a = -1;
9340char b = 0;
9341if ((a < b) && memcmp(&a, &b, 1) < 0)
9342 exit(1);
9343exit(0);
9344}
9345EOCP
dfe9444c 9346 set try
dc45a647 9347 if eval $compile_ok; then
dfe9444c 9348 if ./try 2>/dev/null; then
36477c24 9349 echo "Yes, it can."
9350 val="$define"
9351 else
9352 echo "No, it can't (it uses signed chars)."
9353 fi
9354 else
9355 echo "(I can't compile the test program, so we'll assume not...)"
9356 fi
9357 ;;
9358esac
dfe9444c 9359$rm -f try.* try core
36477c24 9360set d_sanemcmp
9361eval $setvar
9362
2304df62
AD
9363: see if select exists
9364set select d_select
9365eval $inlibc
9366
9367: see if semctl exists
9368set semctl d_semctl
9369eval $inlibc
9370
9371: see if semget exists
9372set semget d_semget
9373eval $inlibc
9374
9375: see if semop exists
9376set semop d_semop
9377eval $inlibc
9378
9379: see how much of the 'sem*(2)' library is present.
9380h_sem=true
9381echo " "
9382case "$d_semctl$d_semget$d_semop" in
9383*"$undef"*) h_sem=false;;
9384esac
6087ac44
JH
9385case "$osname" in
9386freebsd)
9387 case "`ipcs 2>&1`" in
9388 "SVID messages"*"not configured"*)
5ff3f7a4 9389 echo "Your $osname does not have the sem*(2) configured." >&4
6087ac44
JH
9390 h_sem=false
9391 val="$undef"
9392 set semctl d_semctl
9393 eval $setvar
9394 set semget d_semget
9395 eval $setvar
9396 set semop d_semop
9397 eval $setvar
9398 ;;
9399 esac
9400 ;;
9401esac
2304df62
AD
9402: we could also check for sys/ipc.h ...
9403if $h_sem && $test `./findhdr sys/sem.h`; then
9404 echo "You have the full sem*(2) library." >&4
9405 val="$define"
9406else
9407 echo "You don't have the full sem*(2) library." >&4
9408 val="$undef"
9409fi
9410set d_sem
9411eval $setvar
9412
bd89102f
AD
9413: see whether sys/sem.h defines union semun
9414echo " "
9415$cat > try.c <<'END'
9416#include <sys/types.h>
9417#include <sys/ipc.h>
9418#include <sys/sem.h>
9419int main () { union semun semun; semun.buf = 0; }
9420END
9421set try
9422if eval $compile; then
9423 echo "You have union semun in <sys/sem.h>." >&4
9424 val="$define"
9425else
9426 echo "You do not have union semun in <sys/sem.h>." >&4
9427 val="$undef"
9428fi
85ab1d1d 9429$rm -f try try.c try.h
bd89102f
AD
9430set d_union_semun
9431eval $setvar
9432
9433: see how to do semctl IPC_STAT
9434case "$d_sem" in
9435$define)
9436 : see whether semctl IPC_STAT can use union semun
9437 echo " "
85ab1d1d
JH
9438 $cat > try.h <<END
9439#ifndef S_IRUSR
9440# ifdef S_IREAD
9441# define S_IRUSR S_IREAD
9442# define S_IWUSR S_IWRITE
9443# define S_IXUSR S_IEXEC
9444# else
9445# define S_IRUSR 0400
9446# define S_IWUSR 0200
9447# define S_IXUSR 0100
9448# endif
9449# define S_IRGRP (S_IRUSR>>3)
9450# define S_IWGRP (S_IWUSR>>3)
9451# define S_IXGRP (S_IXUSR>>3)
9452# define S_IROTH (S_IRUSR>>6)
9453# define S_IWOTH (S_IWUSR>>6)
9454# define S_IXOTH (S_IXUSR>>6)
9455#endif
9456#ifndef S_IRWXU
9457# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9458# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9459# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9460#endif
9461END
9462
bd89102f
AD
9463 $cat > try.c <<END
9464#include <sys/types.h>
9465#include <sys/ipc.h>
9466#include <sys/sem.h>
9467#include <sys/stat.h>
9468#include <stdio.h>
9469#include <errno.h>
85ab1d1d 9470#include "try.h"
bd89102f
AD
9471#ifndef errno
9472extern int errno;
9473#endif
9474#$d_union_semun HAS_UNION_SEMUN
9475int main() {
9476 union semun
9477#ifndef HAS_UNION_SEMUN
9478 {
9479 int val;
9480 struct semid_ds *buf;
9481 unsigned short *array;
9482 }
9483#endif
9484 arg;
9485 int sem, st;
9486
9487#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9488 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9489 if (sem > -1) {
9490 struct semid_ds argbuf;
9491 arg.buf = &argbuf;
9492# ifdef IPC_STAT
9493 st = semctl(sem, 0, IPC_STAT, arg);
9494 if (st == 0)
9495 printf("semun\n");
9496 else
9497# endif /* IPC_STAT */
9498 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9499# ifdef IPC_RMID
9500 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9501# endif /* IPC_RMID */
9502 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9503 } else
9504#endif /* IPC_PRIVATE && ... */
9505 printf("semget failed: errno = %d\n", errno);
9506 return 0;
9507}
9508END
9509 val="$undef"
9510 set try
9511 if eval $compile; then
9512 xxx=`./try`
9513 case "$xxx" in
9514 semun) val="$define" ;;
9515 esac
9516 fi
9517 $rm -f try try.c
9518 set d_semctl_semun
9519 eval $setvar
9520 case "$d_semctl_semun" in
9521 $define)
9522 echo "You can use union semun for semctl IPC_STAT." >&4
9523 also='also'
9524 ;;
9525 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9526 also=''
9527 ;;
9528 esac
9529
9530 : see whether semctl IPC_STAT can use struct semid_ds pointer
9531 $cat > try.c <<'END'
9532#include <sys/types.h>
9533#include <sys/ipc.h>
9534#include <sys/sem.h>
9535#include <sys/stat.h>
85ab1d1d 9536#include "try.h"
bd89102f
AD
9537#include <stdio.h>
9538#include <errno.h>
9539#ifndef errno
9540extern int errno;
9541#endif
9542int main() {
9543 struct semid_ds arg;
9544 int sem, st;
9545
9546#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9547 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9548 if (sem > -1) {
9549# ifdef IPC_STAT
9550 st = semctl(sem, 0, IPC_STAT, &arg);
9551 if (st == 0)
9552 printf("semid_ds\n");
9553 else
9554# endif /* IPC_STAT */
9555 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9556# ifdef IPC_RMID
9557 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9558# endif /* IPC_RMID */
9559 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9560 } else
9561#endif /* IPC_PRIVATE && ... */
9562 printf("semget failed: errno = %d\n", errno);
9563
9564 return 0;
9565}
9566END
9567 val="$undef"
9568 set try
9569 if eval $compile; then
9570 xxx=`./try`
9571 case "$xxx" in
9572 semid_ds) val="$define" ;;
9573 esac
9574 fi
9575 $rm -f try try.c
9576 set d_semctl_semid_ds
9577 eval $setvar
9578 case "$d_semctl_semid_ds" in
9579 $define)
7f3d1cf1 9580 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f 9581 ;;
7f3d1cf1 9582 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f
AD
9583 ;;
9584 esac
85ab1d1d 9585 $rm -f try.h
bd89102f
AD
9586 ;;
9587*) val="$undef"
9588
9589 # We do not have the full sem*(2) library, so assume we can not
9590 # use either.
9591
9592 set d_semctl_semun
9593 eval $setvar
9594
9595 set d_semctl_semid_ds
9596 eval $setvar
9597 ;;
9598esac
9599
2304df62
AD
9600: see if setegid exists
9601set setegid d_setegid
9602eval $inlibc
9603
9604: see if seteuid exists
9605set seteuid d_seteuid
9606eval $inlibc
9607
5ff3f7a4
GS
9608: see if setgrent exists
9609set setgrent d_setgrent
9610eval $inlibc
9611
693762b4
AD
9612: see if sethostent exists
9613set sethostent d_sethent
9614eval $inlibc
9615
a0d0e21e
LW
9616: see if setlinebuf exists
9617set setlinebuf d_setlinebuf
9618eval $inlibc
9619
2304df62
AD
9620: see if setlocale exists
9621set setlocale d_setlocale
9622eval $inlibc
a0d0e21e 9623
e5c9fcd0
AD
9624: see if setnetent exists
9625set setnetent d_setnent
9626eval $inlibc
9627
9628: see if setprotoent exists
9629set setprotoent d_setpent
9630eval $inlibc
9631
2304df62
AD
9632: see if setpgid exists
9633set setpgid d_setpgid
9634eval $inlibc
9635
2304df62
AD
9636: see if setpgrp2 exists
9637set setpgrp2 d_setpgrp2
9638eval $inlibc
9639
9640: see if setpriority exists
9641set setpriority d_setprior
9642eval $inlibc
9643
5ff3f7a4
GS
9644: see if setpwent exists
9645set setpwent d_setpwent
9646eval $inlibc
9647
2304df62
AD
9648: see if setregid exists
9649set setregid d_setregid
9650eval $inlibc
9651set setresgid d_setresgid
9652eval $inlibc
9653
9654: see if setreuid exists
9655set setreuid d_setreuid
9656eval $inlibc
9657set setresuid d_setresuid
9658eval $inlibc
9659
9660: see if setrgid exists
9661set setrgid d_setrgid
9662eval $inlibc
9663
9664: see if setruid exists
9665set setruid d_setruid
9666eval $inlibc
9667
e5c9fcd0
AD
9668: see if setservent exists
9669set setservent d_setsent
9670eval $inlibc
9671
2304df62
AD
9672: see if setsid exists
9673set setsid d_setsid
9674eval $inlibc
9675
f1066039
JH
9676: see if setspent exists
9677set setspent d_setspent
9678eval $inlibc
9679
e5c9fcd0
AD
9680: see if setvbuf exists
9681set setvbuf d_setvbuf
9682eval $inlibc
9683
760ac839
LW
9684: see if sfio.h is available
9685set sfio.h i_sfio
9686eval $inhdr
9687
9688
8ff267be 9689: see if sfio library is available
760ac839
LW
9690case "$i_sfio" in
9691$define)
9692 val=''
9693 set sfreserve val
9694 eval $inlibc
9695 ;;
9696*)
9697 val="$undef"
9698 ;;
9699esac
8ff267be 9700: Ok, but do we want to use it.
760ac839
LW
9701case "$val" in
9702$define)
9703 case "$usesfio" in
8ff267be 9704 true|$define|[yY]*) dflt='y';;
760ac839
LW
9705 *) dflt='n';;
9706 esac
8ff267be 9707 echo "$package can use the sfio library, but it is experimental."
760ac839
LW
9708 rp="You seem to have sfio available, do you want to try using it?"
9709 . ./myread
9710 case "$ans" in
8ff267be 9711 y|Y) ;;
9712 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
760ac839 9713 val="$undef"
ff0cee69 9714 : Remove sfio from list of libraries to use
9715 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9716 shift
9717 libs="$*"
9718 echo "libs = $libs" >&4
760ac839
LW
9719 ;;
9720 esac
9721 ;;
8ff267be 9722*) case "$usesfio" in
9723 true|$define|[yY]*)
9724 echo "Sorry, cannot find sfio on this machine" >&4
9725 echo "Ignoring your setting of usesfio=$usesfio" >&4
760ac839
LW
9726 ;;
9727 esac
9728 ;;
9729esac
8ff267be 9730set d_sfio
9731eval $setvar
760ac839
LW
9732case "$d_sfio" in
9733$define) usesfio='true';;
9734*) usesfio='false';;
9735esac
9736
2304df62
AD
9737: see if shmctl exists
9738set shmctl d_shmctl
9739eval $inlibc
9740
9741: see if shmget exists
9742set shmget d_shmget
9743eval $inlibc
9744
a0d0e21e
LW
9745: see if shmat exists
9746set shmat d_shmat
9747eval $inlibc
9748: see what shmat returns
9749case "$d_shmat" in
9750"$define")
9751 $cat >shmat.c <<'END'
9752#include <sys/shm.h>
9753void *shmat();
9754END
9755 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9756 shmattype='void *'
9757 else
9758 shmattype='char *'
9759 fi
9760 echo "and it returns ($shmattype)." >&4
9761 : see if a prototype for shmat is available
e50aee73
AD
9762 xxx=`./findhdr sys/shm.h`
9763 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
a0d0e21e
LW
9764 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9765 val="$define"
9766 else
9767 val="$undef"
9768 fi
9769 $rm -f shmat.[co]
9770 ;;
9771*)
9772 val="$undef"
9773 ;;
9774esac
9775set d_shmatprototype
9776eval $setvar
9777
9778: see if shmdt exists
9779set shmdt d_shmdt
9780eval $inlibc
9781
9782: see how much of the 'shm*(2)' library is present.
9783h_shm=true
9784echo " "
9785case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9786*"$undef"*) h_shm=false;;
9787esac
6087ac44
JH
9788case "$osname" in
9789freebsd)
9790 case "`ipcs 2>&1`" in
9791 "SVID shared memory"*"not configured"*)
5ff3f7a4 9792 echo "Your $osname does not have the shm*(2) configured." >&4
6087ac44
JH
9793 h_shm=false
9794 val="$undef"
9795 set shmctl d_shmctl
9796 evat $setvar
9797 set shmget d_shmget
9798 evat $setvar
9799 set shmat d_shmat
9800 evat $setvar
9801 set shmdt d_shmdt
9802 evat $setvar
9803 ;;
9804 esac
9805 ;;
9806esac
a0d0e21e
LW
9807: we could also check for sys/ipc.h ...
9808if $h_shm && $test `./findhdr sys/shm.h`; then
9809 echo "You have the full shm*(2) library." >&4
9810 val="$define"
9811else
9812 echo "You don't have the full shm*(2) library." >&4
9813 val="$undef"
9814fi
9815set d_shm
9816eval $setvar
9817
2c7991dc 9818echo " "
8ff267be 9819: see if we have sigaction
9820if set sigaction val -f d_sigaction; eval $csym; $val; then
9821 echo 'sigaction() found.' >&4
dc45a647 9822 $cat > try.c <<'EOP'
8ff267be 9823#include <stdio.h>
9824#include <sys/types.h>
9825#include <signal.h>
d674cd6d 9826int main()
8ff267be 9827{
9828 struct sigaction act, oact;
9829}
9830EOP
dc45a647
MB
9831 set try
9832 if eval $compile_ok; then
9833 val="$define"
9834 else
9835 echo "But you don't seem to have a useable struct sigaction." >&4
9836 val="$undef"
9837 fi
8ff267be 9838else
dc45a647 9839 echo 'sigaction NOT found.' >&4
8ff267be 9840 val="$undef"
9841fi
9842set d_sigaction; eval $setvar
dfe9444c 9843$rm -f try try$_o try.c
2c7991dc 9844
a5f75d66
AD
9845: see if sigsetjmp exists
9846echo " "
921b2963
JH
9847case "$d_sigsetjmp" in
9848'')
9849 $cat >try.c <<'EOP'
9850#include <setjmp.h>
9851sigjmp_buf env;
9852int set = 1;
d674cd6d 9853int main()
921b2963
JH
9854{
9855 if (sigsetjmp(env,1))
9856 exit(set);
9857 set = 0;
9858 siglongjmp(env, 1);
9859 exit(1);
9860}
9861EOP
9862 set try
9863 if eval $compile; then
9864 if ./try >/dev/null 2>&1; then
9865 echo "POSIX sigsetjmp found." >&4
9866 val="$define"
9867 else
9868 $cat >&4 <<EOM
9869Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9870I'll ignore them.
9871EOM
9872 val="$undef"
a0d0e21e 9873 fi
921b2963
JH
9874 else
9875 echo "sigsetjmp not found." >&4
9876 val="$undef"
a0d0e21e 9877 fi
921b2963
JH
9878 ;;
9879*) val="$d_sigsetjmp"
9880 case "$d_sigsetjmp" in
9881 $define) echo "POSIX sigsetjmp found." >&4;;
9882 $undef) echo "sigsetjmp not found." >&4;;
9883 esac
9884 ;;
9885esac
9886set d_sigsetjmp
9887eval $setvar
9888$rm -f try.c try
2304df62 9889
2304df62
AD
9890: see if stat knows about block sizes
9891echo " "
5ff3f7a4
GS
9892set d_statblks stat st_blocks $i_sysstat sys/stat.h
9893eval $hasfield
2304df62 9894
16d20bd9
AD
9895: see if _ptr and _cnt from stdio act std
9896echo " "
dca663ed 9897if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
16d20bd9
AD
9898 echo "(Looks like you have stdio.h from Linux.)"
9899 case "$stdio_ptr" in
c2960299
AD
9900 '') stdio_ptr='((fp)->_IO_read_ptr)'
9901 ptr_lval=$define
9902 ;;
8e07c86e 9903 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
9904 esac
9905 case "$stdio_cnt" in
c2960299
AD
9906 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9907 cnt_lval=$undef
9908 ;;
8e07c86e 9909 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
9910 esac
9911 case "$stdio_base" in
9912 '') stdio_base='((fp)->_IO_read_base)';;
9913 esac
9914 case "$stdio_bufsiz" in
c2960299 9915 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
16d20bd9
AD
9916 esac
9917else
9918 case "$stdio_ptr" in
c2960299
AD
9919 '') stdio_ptr='((fp)->_ptr)'
9920 ptr_lval=$define
9921 ;;
8e07c86e 9922 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
9923 esac
9924 case "$stdio_cnt" in
c2960299
AD
9925 '') stdio_cnt='((fp)->_cnt)'
9926 cnt_lval=$define
9927 ;;
8e07c86e 9928 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
9929 esac
9930 case "$stdio_base" in
9931 '') stdio_base='((fp)->_base)';;
9932 esac
9933 case "$stdio_bufsiz" in
9934 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9935 esac
9936fi
9937: test whether _ptr and _cnt really work
9938echo "Checking how std your stdio is..." >&4
9939$cat >try.c <<EOP
9940#include <stdio.h>
9941#define FILE_ptr(fp) $stdio_ptr
9942#define FILE_cnt(fp) $stdio_cnt
d674cd6d 9943int main() {
16d20bd9
AD
9944 FILE *fp = fopen("try.c", "r");
9945 char c = getc(fp);
9946 if (
9947 18 <= FILE_cnt(fp) &&
9948 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9949 )
9950 exit(0);
9951 exit(1);
9952}
9953EOP
9954val="$undef"
dfe9444c
AD
9955set try
9956if eval $compile; then
16d20bd9
AD
9957 if ./try; then
9958 echo "Your stdio acts pretty std."
9959 val="$define"
9960 else
9961 echo "Your stdio isn't very std."
9962 fi
9963else
9964 echo "Your stdio doesn't appear very std."
9965fi
9966$rm -f try.c try
9967set d_stdstdio
9968eval $setvar
9969
8e07c86e 9970: Can _ptr be used as an lvalue?
e50aee73
AD
9971case "$d_stdstdio$ptr_lval" in
9972$define$define) val=$define ;;
c2960299
AD
9973*) val=$undef ;;
9974esac
9975set d_stdio_ptr_lval
9976eval $setvar
9977
8e07c86e 9978: Can _cnt be used as an lvalue?
e50aee73
AD
9979case "$d_stdstdio$cnt_lval" in
9980$define$define) val=$define ;;
c2960299
AD
9981*) val=$undef ;;
9982esac
9983set d_stdio_cnt_lval
9984eval $setvar
9985
16d20bd9
AD
9986: see if _base is also standard
9987val="$undef"
9988case "$d_stdstdio" in
9989$define)
9990 $cat >try.c <<EOP
9991#include <stdio.h>
9992#define FILE_base(fp) $stdio_base
9993#define FILE_bufsiz(fp) $stdio_bufsiz
d674cd6d 9994int main() {
16d20bd9
AD
9995 FILE *fp = fopen("try.c", "r");
9996 char c = getc(fp);
9997 if (
9998 19 <= FILE_bufsiz(fp) &&
9999 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10000 )
10001 exit(0);
10002 exit(1);
10003}
10004EOP
dfe9444c
AD
10005 set try
10006 if eval $compile; then
16d20bd9 10007 if ./try; then
8ff267be 10008 echo "And its _base field acts std."
16d20bd9
AD
10009 val="$define"
10010 else
10011 echo "But its _base field isn't std."
10012 fi
10013 else
10014 echo "However, it seems to be lacking the _base field."
10015 fi
10016 $rm -f try.c try
10017 ;;
10018esac
10019set d_stdiobase
10020eval $setvar
10021
ed39a0f2
JH
10022$cat >&4 <<EOM
10023Checking how to access stdio streams by file descriptor number...
10024EOM
10025case "$stdio_stream_array" in
10026'') $cat >try.c <<EOCP
10027#include <stdio.h>
10028int main() {
10029 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10030 printf("yes\n");
10031}
10032EOCP
10033 for s in _iob __iob __sF
10034 do
10035 set try -DSTDIO_STREAM_ARRAY=$s
10036 if eval $compile; then
10037 case "`./try$exe_ext`" in
10038 yes) stdio_stream_array=$s; break ;;
10039 esac
10040 fi
10041 done
10042 $rm -f try.* try$exe_ext
10043esac
10044case "$stdio_stream_array" in
10045'') $cat >&4 <<EOM
10046I can't figure out how to access stdio streams by file descriptor number.
10047EOM
10048 d_stdio_stream_array="$undef"
10049 ;;
10050*) $cat >&4 <<EOM
10051You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10052EOM
10053 d_stdio_stream_array="$define"
10054 ;;
10055esac
10056
a0d0e21e
LW
10057: see if strcoll exists
10058set strcoll d_strcoll
10059eval $inlibc
2304df62
AD
10060
10061: check for structure copying
10062echo " "
10063echo "Checking to see if your C compiler can copy structs..." >&4
10064$cat >try.c <<'EOCP'
5a411a32 10065int main()
2304df62
AD
10066{
10067 struct blurfl {
10068 int dyick;
10069 } foo, bar;
10070
10071 foo = bar;
10072}
10073EOCP
10074if $cc -c try.c >/dev/null 2>&1 ; then
10075 val="$define"
10076 echo "Yup, it can."
10077else
10078 val="$undef"
10079 echo "Nope, it can't."
10080fi
10081set d_strctcpy
10082eval $setvar
10083$rm -f try.*
10084
10085: see if strerror and/or sys_errlist[] exist
10086echo " "
28e8609d
JH
10087if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10088 if set strerror val -f d_strerror; eval $csym; $val; then
5ff3f7a4
GS
10089 echo 'strerror() found.' >&4
10090 d_strerror="$define"
10091 d_strerrm='strerror(e)'
10092 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10093 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10094 d_syserrlst="$define"
10095 else
10096 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10097 d_syserrlst="$undef"
10098 fi
28e8609d 10099 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5ff3f7a4
GS
10100 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10101 echo 'strerror() found in string header.' >&4
10102 d_strerror="$define"
10103 d_strerrm='strerror(e)'
10104 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10105 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10106 d_syserrlst="$define"
10107 else
10108 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10109 d_syserrlst="$undef"
10110 fi
28e8609d 10111 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5ff3f7a4
GS
10112 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10113 d_strerror="$undef"
10114 d_syserrlst="$define"
10115 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
28e8609d 10116 else
5ff3f7a4
GS
10117 echo 'strerror() and sys_errlist[] NOT found.' >&4
10118 d_strerror="$undef"
10119 d_syserrlst="$undef"
10120 d_strerrm='"unknown"'
28e8609d 10121 fi
2304df62
AD
10122fi
10123
a89d8a78
DH
10124: see if strtod exists
10125set strtod d_strtod
10126eval $inlibc
10127
10128: see if strtol exists
10129set strtol d_strtol
10130eval $inlibc
10131
10132: see if strtoul exists
10133set strtoul d_strtoul
10134eval $inlibc
10135
a0d0e21e
LW
10136: see if strxfrm exists
10137set strxfrm d_strxfrm
10138eval $inlibc
10139
2304df62
AD
10140: see if symlink exists
10141set symlink d_symlink
10142eval $inlibc
10143
10144: see if syscall exists
10145set syscall d_syscall
10146eval $inlibc
10147
a0d0e21e
LW
10148: see if sysconf exists
10149set sysconf d_sysconf
10150eval $inlibc
10151
2304df62
AD
10152: see if system exists
10153set system d_system
10154eval $inlibc
10155
a0d0e21e
LW
10156: see if tcgetpgrp exists
10157set tcgetpgrp d_tcgetpgrp
10158eval $inlibc
10159
2c7991dc 10160: see if tcsetpgrp exists
10161set tcsetpgrp d_tcsetpgrp
10162eval $inlibc
4633a7c4 10163
cb86ce0e
JH
10164: see if sys/types.h has to be included
10165set sys/types.h i_systypes
10166eval $inhdr
10167
10168: see if prototype for telldir is available
10169echo " "
10170set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10171eval $hasproto
10172
2c7991dc 10173: define an is-a-typedef? function
10174typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10175case "$inclist" in
10176"") inclist="sys/types.h";;
10177esac;
10178eval "varval=\$$var";
10179case "$varval" in
10180"")
10181 $rm -f temp.c;
10182 for inc in $inclist; do
10183 echo "#include <$inc>" >>temp.c;
10184 done;
c4f23d77
AD
10185 echo "#ifdef $type" >> temp.c;
10186 echo "printf(\"We have $type\");" >> temp.c;
10187 echo "#endif" >> temp.c;
2c7991dc 10188 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10189 if $contains $type temp.E >/dev/null 2>&1; then
10190 eval "$var=\$type";
10191 else
10192 eval "$var=\$def";
10193 fi;
10194 $rm -f temp.?;;
10195*) eval "$var=\$varval";;
10196esac'
4633a7c4 10197
dc45a647
MB
10198: define an is-a-typedef? function that prompts if the type is not available.
10199typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10200case "$inclist" in
10201"") inclist="sys/types.h";;
10202esac;
10203eval "varval=\$$var";
10204case "$varval" in
10205"")
10206 $rm -f temp.c;
10207 for inc in $inclist; do
10208 echo "#include <$inc>" >>temp.c;
10209 done;
c4f23d77
AD
10210 echo "#ifdef $type" >> temp.c;
10211 echo "printf(\"We have $type\");" >> temp.c;
10212 echo "#endif" >> temp.c;
dc45a647
MB
10213 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10214 echo " " ;
10215 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10216 if $contains $type temp.E >/dev/null 2>&1; then
10217 echo "$type found." >&4;
10218 eval "$var=\$type";
10219 else
10220 echo "$type NOT found." >&4;
10221 dflt="$def";
10222 . ./myread ;
10223 eval "$var=\$ans";
10224 fi;
10225 $rm -f temp.?;;
10226*) eval "$var=\$varval";;
10227esac'
10228
2c7991dc 10229: see if this is a sys/times.h system
10230set sys/times.h i_systimes
10231eval $inhdr
4633a7c4 10232
2c7991dc 10233: see if times exists
4633a7c4 10234echo " "
2c7991dc 10235if set times val -f d_times; eval $csym; $val; then
10236 echo 'times() found.' >&4
10237 d_times="$define"
10238 inc=''
10239 case "$i_systimes" in
10240 "$define") inc='sys/times.h';;
10241 esac
dc45a647 10242 rp="What is the type returned by times() on this system?"
2c7991dc 10243 set clock_t clocktype long stdio.h sys/types.h $inc
dc45a647 10244 eval $typedef_ask
2c7991dc 10245else
10246 echo 'times() NOT found, hope that will do.' >&4
10247 d_times="$undef"
10248 clocktype='int'
10249fi
2304df62 10250
2c7991dc 10251: see if truncate exists
10252set truncate d_truncate
10253eval $inlibc
2304df62 10254
2c7991dc 10255: see if tzname[] exists
10256echo " "
10257if set tzname val -a d_tzname; eval $csym; $val; then
10258 val="$define"
10259 echo 'tzname[] found.' >&4
10260else
10261 val="$undef"
10262 echo 'tzname[] NOT found.' >&4
10263fi
10264set d_tzname
10265eval $setvar
10266
10267: see if umask exists
10268set umask d_umask
10269eval $inlibc
85e6fe83 10270
4633a7c4
LW
10271: backward compatibility for d_hvfork
10272if test X$d_hvfork != X; then
10273 d_vfork="$d_hvfork"
10274 d_hvfork=''
10275fi
10276: see if there is a vfork
10277val=''
10278set vfork val
10279eval $inlibc
ecfc5424 10280
4633a7c4
LW
10281: Ok, but do we want to use it. vfork is reportedly unreliable in
10282: perl on Solaris 2.x, and probably elsewhere.
10283case "$val" in
10284$define)
16d20bd9 10285 echo " "
4633a7c4
LW
10286 case "$usevfork" in
10287 false) dflt='n';;
10288 *) dflt='y';;
10289 esac
f10488a3
JH
10290 cat <<'EOM'
10291
10292Perl can only use a vfork() that doesn't suffer from strict
10293restrictions on calling functions or modifying global data in
10294the child. For example, glibc-2.1 contains such a vfork()
10295that is unsuitable. If your system provides a proper fork()
10296call, chances are that you do NOT want perl to use vfork().
10297
10298EOM
10299 rp="Do you still want to use vfork()?"
4633a7c4
LW
10300 . ./myread
10301 case "$ans" in
10302 y|Y) ;;
10303 *)
10304 echo "Ok, we won't use vfork()."
10305 val="$undef"
10306 ;;
10307 esac
ecfc5424
AD
10308 ;;
10309esac
4633a7c4
LW
10310set d_vfork
10311eval $setvar
10312case "$d_vfork" in
10313$define) usevfork='true';;
10314*) usevfork='false';;
10315esac
ecfc5424 10316
4633a7c4
LW
10317: see if this is an sysdir system
10318set sys/dir.h i_sysdir
10319eval $inhdr
10320
10321: see if this is an sysndir system
10322set sys/ndir.h i_sysndir
10323eval $inhdr
10324
10325: see if closedir exists
10326set closedir d_closedir
10327eval $inlibc
10328
10329case "$d_closedir" in
10330"$define")
16d20bd9 10331 echo " "
4633a7c4
LW
10332 echo "Checking whether closedir() returns a status..." >&4
10333 cat > closedir.c <<EOM
10334#$i_dirent I_DIRENT /**/
10335#$i_sysdir I_SYS_DIR /**/
10336#$i_sysndir I_SYS_NDIR /**/
bfb7748a 10337#$i_systypes I_SYS_TYPES /**/
4633a7c4 10338
bfb7748a
AD
10339#if defined(I_SYS_TYPES)
10340#include <sys/types.h>
10341#endif
4633a7c4
LW
10342#if defined(I_DIRENT)
10343#include <dirent.h>
10344#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10345#include <sys/dir.h>
4aa0a1f7 10346#endif
4633a7c4
LW
10347#else
10348#ifdef I_SYS_NDIR
10349#include <sys/ndir.h>
10350#else
10351#ifdef I_SYS_DIR
10352#ifdef hp9000s500
10353#include <ndir.h> /* may be wrong in the future */
10354#else
10355#include <sys/dir.h>
10356#endif
10357#endif
10358#endif
10359#endif
10360int main() { return closedir(opendir(".")); }
10361EOM
dfe9444c 10362 set closedir
dc45a647 10363 if eval $compile_ok; then
4633a7c4
LW
10364 if ./closedir > /dev/null 2>&1 ; then
10365 echo "Yes, it does."
10366 val="$undef"
ecfc5424 10367 else
4633a7c4
LW
10368 echo "No, it doesn't."
10369 val="$define"
ecfc5424
AD
10370 fi
10371 else
4633a7c4
LW
10372 echo "(I can't seem to compile the test program--assuming it doesn't)"
10373 val="$define"
ecfc5424 10374 fi
ecfc5424 10375 ;;
4633a7c4
LW
10376*)
10377 val="$undef";
ecfc5424
AD
10378 ;;
10379esac
4633a7c4
LW
10380set d_void_closedir
10381eval $setvar
10382$rm -f closedir*
10383: check for volatile keyword
ecfc5424 10384echo " "
4633a7c4
LW
10385echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10386$cat >try.c <<'EOCP'
5a411a32 10387int main()
4633a7c4
LW
10388{
10389 typedef struct _goo_struct goo_struct;
10390 goo_struct * volatile goo = ((goo_struct *)0);
10391 struct _goo_struct {
10392 long long_int;
10393 int reg_int;
10394 char char_var;
10395 };
10396 typedef unsigned short foo_t;
10397 char *volatile foo;
10398 volatile int bar;
10399 volatile foo_t blech;
10400 foo = foo;
a0d0e21e
LW
10401}
10402EOCP
4633a7c4
LW
10403if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10404 val="$define"
10405 echo "Yup, it does."
10406else
10407 val="$undef"
10408 echo "Nope, it doesn't."
10409fi
10410set d_volatile
10411eval $setvar
10412$rm -f try.*
a0d0e21e 10413
4633a7c4
LW
10414: see if there is a wait4
10415set wait4 d_wait4
8e07c86e
AD
10416eval $inlibc
10417
4633a7c4
LW
10418: see if waitpid exists
10419set waitpid d_waitpid
10420eval $inlibc
10421
10422: see if wcstombs exists
10423set wcstombs d_wcstombs
10424eval $inlibc
10425
10426: see if wctomb exists
10427set wctomb d_wctomb
10428eval $inlibc
10429
de4597cb
JH
10430: see if writev exists
10431set writev d_writev
10432eval $inlibc
10433
4633a7c4
LW
10434: preserve RCS keywords in files with variable substitution, grrr
10435Date='$Date'
10436Id='$Id'
10437Log='$Log'
10438RCSfile='$RCSfile'
10439Revision='$Revision'
10440
ca8cfa54
JH
10441case "$crosscompile" in
10442''|[nN]*) crosscompile="$undef" ;;
10443esac
10444
10445case "$osname" in
8f1f23e8 10446next|rhapsody) multiarch="$define" ;;
ca8cfa54
JH
10447esac
10448case "$multiarch" in
10449''|[nN]*) multiarch="$undef" ;;
10450esac
10451
4633a7c4
LW
10452: check for alignment requirements
10453echo " "
68c15b6f
HM
10454case "$crosscompile$multiarch" in
10455*$define*)
ca8cfa54
JH
10456 $cat <<EOM
10457You seem to be either cross-compiling or doing a multiarchitecture build,
10458skipping the memory alignment check.
68c15b6f
HM
10459
10460EOM
10461 case "$alignbytes" in
10462 '') alignbytes=8 ;;
10463 esac
10464 ;;
10465*)
10466 case "$alignbytes" in
10467 '') echo "Checking alignment constraints..." >&4
10468 $cat >try.c <<'EOCP'
4633a7c4
LW
10469struct foobar {
10470 char foo;
10471 double bar;
732c9516 10472} try_algn;
d674cd6d 10473int main()
4633a7c4 10474{
732c9516 10475 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
4633a7c4
LW
10476}
10477EOCP
68c15b6f
HM
10478 set try
10479 if eval $compile_ok; then
10480 dflt=`./try`
10481 else
10482 dflt='8'
10483 echo "(I can't seem to compile the test program...)"
10484 fi
10485 ;;
10486 *) dflt="$alignbytes"
10487 ;;
10488 esac
10489 rp="Doubles must be aligned on a how-many-byte boundary?"
10490 . ./myread
10491 alignbytes="$ans"
10492 $rm -f try.c try
8e07c86e 10493 ;;
ecfc5424 10494esac
68c15b6f 10495
85e6fe83 10496
4633a7c4 10497: check for ordering of bytes in a long
68c15b6f
HM
10498echo " "
10499case "$crosscompile$multiarch" in
10500*$define*)
10501 $cat <<EOM
ca8cfa54
JH
10502You seem to be either cross-compiling or doing a multiarchitecture build,
10503skipping the byteorder check.
68c15b6f
HM
10504
10505EOM
ca8cfa54 10506 byteorder=''
68c15b6f
HM
10507 ;;
10508*)
10509 case "$byteorder" in
10510 '')
10511 $cat <<'EOM'
4633a7c4
LW
10512In the following, larger digits indicate more significance. A big-endian
10513machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10514little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10515machines may have weird orders like 3412. A Cray will report 87654321. If
10516the test program works the default is probably right.
10517I'm now running the test program...
10518EOM
68c15b6f 10519 $cat >try.c <<'EOCP'
4633a7c4 10520#include <stdio.h>
d674cd6d 10521int main()
4633a7c4
LW
10522{
10523 int i;
10524 union {
10525 unsigned long l;
10526 char c[sizeof(long)];
10527 } u;
10528
10529 if (sizeof(long) > 4)
10530 u.l = (0x08070605L << 32) | 0x04030201L;
10531 else
10532 u.l = 0x04030201L;
10533 for (i = 0; i < sizeof(long); i++)
10534 printf("%c", u.c[i]+'0');
10535 printf("\n");
10536 exit(0);
10537}
10538EOCP
68c15b6f
HM
10539 xxx_prompt=y
10540 set try
10541 if eval $compile && ./try > /dev/null; then
10542 dflt=`./try`
10543 case "$dflt" in
10544 [1-4][1-4][1-4][1-4]|12345678|87654321)
10545 echo "(The test program ran ok.)"
10546 echo "byteorder=$dflt"
10547 xxx_prompt=n
4633a7c4 10548 ;;
68c15b6f
HM
10549 ????|????????) echo "(The test program ran ok.)" ;;
10550 *) echo "(The test program didn't run right for some reason.)" ;;
10551 esac
10552 else
10553 dflt='4321'
10554 cat <<'EOM'
4633a7c4
LW
10555(I can't seem to compile the test program. Guessing big-endian...)
10556EOM
68c15b6f
HM
10557 fi
10558 case "$xxx_prompt" in
10559 y)
10560 rp="What is the order of bytes in a long?"
10561 . ./myread
10562 byteorder="$ans"
10563 ;;
10564 *) byteorder=$dflt
10565 ;;
10566 esac
ecfc5424
AD
10567 ;;
10568 esac
68c15b6f 10569 $rm -f try.c try
ecfc5424
AD
10570 ;;
10571esac
68c15b6f 10572
85e6fe83 10573
4633a7c4 10574: how do we catenate cpp tokens here?
2304df62 10575echo " "
4633a7c4
LW
10576echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10577$cat >cpp_stuff.c <<'EOCP'
10578#define RCAT(a,b)a/**/b
10579#define ACAT(a,b)a ## b
10580RCAT(Rei,ser)
10581ACAT(Cir,cus)
10582EOCP
10583$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10584if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 10585 echo "Oh! Smells like ANSI's been here." >&4
4633a7c4
LW
10586 echo "We can catify or stringify, separately or together!"
10587 cpp_stuff=42
10588elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 10589 echo "Ah, yes! The good old days!" >&4
4633a7c4
LW
10590 echo "However, in the good old days we don't know how to stringify and"
10591 echo "catify at the same time."
10592 cpp_stuff=1
10593else
10594 $cat >&4 <<EOM
10595Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10596to have to edit the values of CAT[2-5] in config.h...
a0d0e21e 10597EOM
4633a7c4
LW
10598 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10599fi
10600$rm -f cpp_stuff.*
a0d0e21e 10601
4633a7c4
LW
10602: see if this is a db.h system
10603set db.h i_db
10604eval $inhdr
10605
10606case "$i_db" in
68dc0745 10607$define)
1f70e1ea 10608 : Check db version.
68dc0745 10609 echo " "
10610 echo "Checking Berkeley DB version ..." >&4
10611 $cat >try.c <<EOCP
10612#$d_const HASCONST
10613#ifndef HASCONST
10614#define const
10615#endif
10616#include <sys/types.h>
10617#include <stdio.h>
10618#include <db.h>
d674cd6d 10619int main()
68dc0745 10620{
1f70e1ea
PM
10621#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10622 int Major, Minor, Patch ;
ee02776e 10623 unsigned long Version ;
1f70e1ea
PM
10624 (void)db_version(&Major, &Minor, &Patch) ;
10625 printf("You have Berkeley DB Version 2 or greater\n");
10626
10627 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10628 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10629 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10630 Major, Minor, Patch) ;
10631
10632 /* check that db.h & libdb are compatible */
10633 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10634 printf("db.h and libdb are incompatible\n") ;
10635 exit(3);
10636 }
10637
10638 printf("db.h and libdb are compatible\n") ;
ee02776e
PM
10639
10640 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
693762b4 10641 + DB_VERSION_PATCH ;
ee02776e
PM
10642
10643 /* needs to be >= 2.3.4 */
10644 if (Version < 2003004) {
693762b4 10645 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
ee02776e 10646 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
1f70e1ea
PM
10647 exit(2);
10648 }
10649
10650 exit(0);
68dc0745 10651#else
6a1b87e5 10652#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
1f70e1ea 10653 printf("You have Berkeley DB Version 1\n");
6a1b87e5
JH
10654 exit(0); /* DB version < 2: the coast is clear. */
10655#else
10656 exit(1); /* <db.h> not Berkeley DB? */
10657#endif
68dc0745 10658#endif
10659}
10660EOCP
dfe9444c
AD
10661 set try
10662 if eval $compile && ./try; then
1f70e1ea 10663 echo 'Looks OK.' >&4
68dc0745 10664 else
c90c0ff4 10665 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
68dc0745 10666 i_db=$undef
10667 case " $libs " in
10668 *"-ldb "*)
10669 : Remove db from list of libraries to use
10670 echo "Removing unusable -ldb from library list" >&4
10671 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10672 shift
10673 libs="$*"
10674 echo "libs = $libs" >&4
10675 ;;
10676 esac
10677 fi
10678 $rm -f try.*
10679 ;;
10680esac
10681
10682case "$i_db" in
4633a7c4 10683define)
dc45a647
MB
10684 : Check the return type needed for hash
10685 echo " "
10686 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10687 $cat >try.c <<EOCP
10688#$d_const HASCONST
10689#ifndef HASCONST
10690#define const
10691#endif
10692#include <sys/types.h>
10693#include <db.h>
10694
10695#ifndef DB_VERSION_MAJOR
10696u_int32_t hash_cb (ptr, size)
10697const void *ptr;
10698size_t size;
10699{
10700}
10701HASHINFO info;
d674cd6d 10702int main()
dc45a647
MB
10703{
10704 info.hash = hash_cb;
10705}
10706#endif
10707EOCP
10708 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10709 if $contains warning try.out >>/dev/null 2>&1 ; then
10710 db_hashtype='int'
10711 else
10712 db_hashtype='u_int32_t'
10713 fi
10714 else
10715 : XXX Maybe we should just give up here.
10716 db_hashtype=u_int32_t
10717 $cat try.out >&4
10718 echo "Help: I can't seem to compile the db test program." >&4
10719 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10720 fi
10721 $rm -f try.*
10722 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10723 ;;
10724*) db_hashtype=u_int32_t
10725 ;;
10726esac
10727case "$i_db" in
10728define)
4633a7c4
LW
10729 : Check the return type needed for prefix
10730 echo " "
10731 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10732 cat >try.c <<EOCP
10733#$d_const HASCONST
10734#ifndef HASCONST
10735#define const
10736#endif
10737#include <sys/types.h>
10738#include <db.h>
1f70e1ea
PM
10739
10740#ifndef DB_VERSION_MAJOR
4633a7c4
LW
10741size_t prefix_cb (key1, key2)
10742const DBT *key1;
10743const DBT *key2;
10744{
10745}
10746BTREEINFO info;
d674cd6d 10747int main()
4633a7c4
LW
10748{
10749 info.prefix = prefix_cb;
10750}
1f70e1ea 10751#endif
4633a7c4
LW
10752EOCP
10753 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10754 if $contains warning try.out >>/dev/null 2>&1 ; then
10755 db_prefixtype='int'
10756 else
10757 db_prefixtype='size_t'
10758 fi
10759 else
68dc0745 10760 db_prefixtype='size_t'
10761 : XXX Maybe we should just give up here.
dc45a647 10762 $cat try.out >&4
68dc0745 10763 echo "Help: I can't seem to compile the db test program." >&4
10764 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
4633a7c4
LW
10765 fi
10766 $rm -f try.*
10767 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
a0d0e21e 10768 ;;
68dc0745 10769*) db_prefixtype='size_t'
4633a7c4
LW
10770 ;;
10771esac
a0d0e21e 10772
4633a7c4
LW
10773: check for void type
10774echo " "
10775echo "Checking to see how well your C compiler groks the void type..." >&4
4633a7c4
LW
10776case "$voidflags" in
10777'')
10778 $cat >try.c <<'EOCP'
10779#if TRY & 1
760ac839 10780void sub() {
4633a7c4 10781#else
760ac839 10782sub() {
4633a7c4
LW
10783#endif
10784 extern void moo(); /* function returning void */
10785 void (*goo)(); /* ptr to func returning void */
10786#if TRY & 8
10787 void *hue; /* generic ptr */
10788#endif
10789#if TRY & 2
10790 void (*foo[10])();
10791#endif
a0d0e21e 10792
4633a7c4
LW
10793#if TRY & 4
10794 if(goo == moo) {
10795 exit(0);
10796 }
10797#endif
10798 exit(0);
10799}
d674cd6d 10800int main() { sub(); }
4633a7c4 10801EOCP
760ac839 10802 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4633a7c4 10803 voidflags=$defvoidused
bfb7748a 10804 echo "Good. It appears to support void to the level $package wants.">&4
4633a7c4
LW
10805 if $contains warning .out >/dev/null 2>&1; then
10806 echo "However, you might get some warnings that look like this:"
10807 $cat .out
10808 fi
10809 else
10810echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
760ac839 10811 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4633a7c4 10812 echo "It supports 1..."
760ac839 10813 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4633a7c4 10814 echo "It also supports 2..."
760ac839 10815 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4633a7c4
LW
10816 voidflags=7
10817 echo "And it supports 4 but not 8 definitely."
10818 else
10819 echo "It doesn't support 4..."
760ac839 10820 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4633a7c4
LW
10821 voidflags=11
10822 echo "But it supports 8."
10823 else
10824 voidflags=3
10825 echo "Neither does it support 8."
10826 fi
10827 fi
10828 else
10829 echo "It does not support 2..."
760ac839 10830 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4633a7c4
LW
10831 voidflags=13
10832 echo "But it supports 4 and 8."
10833 else
760ac839 10834 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4633a7c4
LW
10835 voidflags=5
10836 echo "And it supports 4 but has not heard about 8."
10837 else
10838 echo "However it supports 8 but not 4."
10839 fi
10840 fi
10841 fi
10842 else
10843 echo "There is no support at all for void."
10844 voidflags=0
10845 fi
10846 fi
10847esac
4633a7c4 10848case "$voidflags" in
2c7991dc 10849"$defvoidused") ;;
bfb7748a
AD
10850*) $cat >&4 <<'EOM'
10851 Support flag bits are:
10852 1: basic void declarations.
10853 2: arrays of pointers to functions returning void.
10854 4: operations between pointers to and addresses of void functions.
10855 8: generic void pointers.
10856EOM
2c7991dc 10857 dflt="$voidflags";
4633a7c4 10858 rp="Your void support flags add up to what?"
a0d0e21e 10859 . ./myread
4633a7c4 10860 voidflags="$ans"
a0d0e21e
LW
10861 ;;
10862esac
4633a7c4 10863$rm -f try.* .out
a0d0e21e 10864
85ab1d1d
JH
10865
10866: How can we generate normalized random numbers ?
693762b4 10867echo " "
de4597cb 10868echo "Looking for a random number function..." >&4
85ab1d1d 10869case "$randfunc" in
693762b4 10870'')
85ab1d1d
JH
10871 if set drand48 val -f; eval $csym; $val; then
10872 dflt="drand48"
10873 echo "Good, found drand48()." >&4
10874 elif set random val -f; eval $csym; $val; then
10875 dflt="random"
10876 echo "OK, found random()." >&4
10877 else
10878 dflt="rand"
10879 echo "Yick, looks like I have to use rand()." >&4
10880 fi
10881 echo " "
10882 ;;
10883*)
10884 dflt="$randfunc"
10885 ;;
10886esac
10887cont=true
10888
10889case "$ccflags" in
10890*-Dmy_rand=*|*-Dmy_srand=*)
10891 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10892 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10893 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10894 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10895 ;;
10896esac
10897
10898while $test "$cont"; do
10899 rp="Use which function to generate random numbers?"
10900 . ./myread
10901 if $test "$ans" = "$dflt"; then
10902 : null
10903 else
10904 randbits=''
10905 fi
10906 randfunc="$ans"
10907 if set $ans val -f; eval $csym; $val; then
10908 cont=''
10909 else
ef4af2be
JH
10910 dflt=y
10911 rp="I cannot find function $ans. Use that name anyway?"
85ab1d1d
JH
10912 . ./myread
10913 dflt=rand
10914 case "$ans" in
10915 [yY]*) cont='';;
10916 esac
10917 fi
10918 case "$cont" in
10919 '')
10920 case "$randfunc" in
10921 drand48)
10922 drand01="drand48()"
10923 seedfunc="srand48"
10924 randbits=48
10925 randseedtype=long
10926 ;;
10927 rand|random)
10928 case "$randbits" in
10929 '')
10930echo "Checking to see how many bits your $randfunc() function produces..." >&4
10931 $cat >try.c <<EOCP
10932#$i_unistd I_UNISTD
10933#$i_stdlib I_STDLIB
693762b4 10934#include <stdio.h>
85ab1d1d
JH
10935#ifdef I_UNISTD
10936# include <unistd.h>
10937#endif
10938#ifdef I_STDLIB
10939# include <stdlib.h>
10940#endif
d674cd6d 10941int main()
693762b4 10942{
85ab1d1d
JH
10943 register int i;
10944 register unsigned long tmp;
10945 register unsigned long max = 0L;
10946
10947 for (i = 1000; i; i--) {
10948 tmp = (unsigned long) $randfunc();
10949 if (tmp > max) max = tmp;
10950 }
10951 for (i = 0; max; i++)
10952 max /= 2;
10953 printf("%d\n",i);
693762b4
AD
10954}
10955EOCP
85ab1d1d
JH
10956 set try
10957 if eval $compile_ok; then
10958 dflt=`try`
10959 else
10960 dflt='?'
10961 echo "(I can't seem to compile the test program...)"
10962 fi
10963 ;;
10964 *)
10965 dflt="$randbits"
10966 ;;
10967 esac
10968 rp="How many bits does your $randfunc() function produce?"
10969 . ./myread
10970 randbits="$ans"
10971 $rm -f try.c try
10972 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10973 seedfunc="s$randfunc"
10974 randseedtype=unsigned
10975 ;;
10976 *)
10977 dflt="31"
10978 rp="How many bits does your $randfunc() function produce?"
10979 . ./myread
10980 randbits="$ans"
10981 seedfunc="s$randfunc"
10982 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10983 if set $seedfunc val -f; eval $csym; $val; then
10984 echo "(Using $seedfunc() to seed random generator)"
10985 else
10986 echo "(Warning: no $seedfunc() to seed random generator)"
10987 seedfunc=rand
10988 fi
10989 randseedtype=unsigned
10990 ;;
10991 esac
10992 ;;
10993 esac
10994done
693762b4 10995
5ff3f7a4
GS
10996echo " "
10997echo "Determining whether or not we are on an EBCDIC system..." >&4
10998$cat >tebcdic.c <<'EOM'
10999int main()
11000{
11001 if ('M'==0xd4) return 0;
11002 return 1;
11003}
11004EOM
11005
11006val=$undef
11007set tebcdic
11008if eval $compile_ok; then
11009 if ./tebcdic; then
11010 echo "You have EBCDIC." >&4
11011 val="$define"
11012 else
11013 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
11014 fi
11015else
5cc3184f 11016 echo "I'm unable to compile the test program." >&4
5ff3f7a4
GS
11017 echo "I'll assume ASCII or some ISO Latin." >&4
11018fi
11019$rm -f tebcdic.c tebcdic
11020set ebcdic
11021eval $setvar
11022
29209bc5 11023echo " "
767df6a1
JH
11024$cat >&4 <<EOM
11025Checking how to flush all pending stdio output...
66fe083f 11026EOM
d2201af2
AD
11027# I only know how to find the first 32 possibly open files on SunOS.
11028# See also hints/sunos_4_1.sh and util.c --AD
11029case "$osname" in
11030sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11031esac
11032$cat >>try.c <<EOCP
66fe083f 11033#include <stdio.h>
d2201af2 11034#$i_unistd I_UNISTD
767df6a1 11035#ifdef I_UNISTD
a32a45b6 11036# include <unistd.h>
767df6a1
JH
11037#endif
11038#$d_sysconf HAS_SYSCONF
a71cd7cd
JH
11039#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11040#ifdef HAS_STDIO_STREAM_ARRAY
11041# define STDIO_STREAM_ARRAY $stdio_stream_array
11042#endif
66fe083f
JH
11043int main() {
11044 FILE* p = fopen("try.out", "w");
0f27ced1 11045#ifdef TRY_FPUTC
66fe083f 11046 fputc('x', p);
0f27ced1
JH
11047#else
11048# ifdef TRY_FPRINTF
11049 fprintf(p, "x");
11050# endif
11051#endif
767df6a1 11052#ifdef TRY_FFLUSH_NULL
66fe083f 11053 fflush(NULL);
767df6a1
JH
11054#endif
11055#ifdef TRY_FFLUSH_ALL
11056 {
11057 long open_max = -1;
d2201af2
AD
11058# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11059 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
767df6a1 11060# else
d2201af2
AD
11061# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11062 open_max = sysconf(_SC_OPEN_MAX);
767df6a1 11063# else
4b257aef 11064# ifdef FOPEN_MAX
d2201af2 11065 open_max = FOPEN_MAX;
767df6a1 11066# else
d2201af2
AD
11067# ifdef OPEN_MAX
11068 open_max = OPEN_MAX;
11069# else
11070# ifdef _NFILE
11071 open_max = _NFILE;
11072# endif
767df6a1
JH
11073# endif
11074# endif
11075# endif
4b257aef 11076# endif
ed39a0f2 11077# ifdef HAS_STDIO_STREAM_ARRAY
767df6a1
JH
11078 if (open_max > 0) {
11079 long i;
11080 for (i = 0; i < open_max; i++)
d2201af2
AD
11081 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11082 STDIO_STREAM_ARRAY[i]._file < open_max &&
11083 STDIO_STREAM_ARRAY[i]._flag)
11084 fflush(&STDIO_STREAM_ARRAY[i]);
767df6a1
JH
11085 }
11086 }
ed39a0f2 11087# endif
767df6a1
JH
11088#endif
11089 _exit(42);
66fe083f
JH
11090}
11091EOCP
0f27ced1
JH
11092: first we have to find out how _not_ to flush
11093if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11094 output=''
11095 set try -DTRY_FPUTC
6626660c 11096 if eval $compile; then
4b257aef 11097 $rm -f try.out
0f27ced1
JH
11098 ./try$exe_ext 2>/dev/null
11099 if $test ! -s try.out -a "X$?" = X42; then
11100 output=-DTRY_FPUTC
11101 fi
11102 fi
11103 case "$output" in
11104 '')
11105 set try -DTRY_FPRINTF
11106 $rm -f try.out
6626660c 11107 if eval $compile; then
4b257aef 11108 $rm -f try.out
0f27ced1
JH
11109 ./try$exe_ext 2>/dev/null
11110 if $test ! -s try.out -a "X$?" = X42; then
11111 output=-DTRY_FPRINTF
11112 fi
11113 fi
11114 ;;
11115 esac
11116fi
767df6a1
JH
11117: check for fflush NULL behaviour
11118case "$fflushNULL" in
0f27ced1 11119'') set try -DTRY_FFLUSH_NULL $output
6626660c 11120 if eval $compile; then
4b257aef 11121 $rm -f try.out
196fa3d2 11122 ./try$exe_ext 2>/dev/null
a32a45b6
JH
11123 code="$?"
11124 if $test -s try.out -a "X$code" = X42; then
c2fddd50 11125 fflushNULL="`$cat try.out`"
a32a45b6
JH
11126 else
11127 if $test "X$code" != X42; then
11128 $cat >&4 <<EOM
11129(If this test failed, don't worry, we'll try another method shortly.)
11130EOM
11131 fi
c2fddd50
JH
11132 fi
11133 fi
0f27ced1 11134 $rm -f core try.core core.try.*
c2fddd50 11135 case "$fflushNULL" in
6626660c 11136 x) $cat >&4 <<EOM
66fe083f
JH
11137Your fflush(NULL) works okay.
11138EOM
ed39a0f2 11139 fflushNULL="$define"
c2fddd50 11140 ;;
6626660c 11141 '') $cat >&4 <<EOM
66fe083f
JH
11142Your fflush(NULL) isn't working (contrary to ANSI C).
11143EOM
ed39a0f2 11144 fflushNULL="$undef"
c2fddd50 11145 ;;
6626660c 11146 *) $cat >&4 <<EOM
66fe083f
JH
11147Cannot figure out whether your fflush(NULL) works or not.
11148I'm assuming it doesn't (contrary to ANSI C).
11149EOM
ed39a0f2 11150 fflushNULL="$undef"
c2fddd50
JH
11151 ;;
11152 esac
66fe083f
JH
11153 ;;
11154$define|true|[yY]*)
ed39a0f2 11155 fflushNULL="$define"
66fe083f
JH
11156 ;;
11157*)
ed39a0f2 11158 fflushNULL="$undef"
66fe083f
JH
11159 ;;
11160esac
a32a45b6
JH
11161: check explicit looping only if NULL did not work
11162case "$fflushNULL" in
11163"$undef")
11164 : check for fflush all behaviour
11165 case "$fflushall" in
11166 '') set try -DTRY_FFLUSH_ALL $output
a32a45b6 11167 if eval $compile; then
4b257aef 11168 $cat >&4 <<EOM
a32a45b6 11169(Now testing the other method--but note that also this may fail.)
a71cd7cd 11170EOM
4b257aef 11171 $rm -f try.out
a32a45b6
JH
11172 ./try$exe_ext 2>/dev/null
11173 if $test -s try.out -a "X$?" = X42; then
11174 fflushall="`$cat try.out`"
11175 fi
767df6a1 11176 fi
a32a45b6
JH
11177 $rm -f core try.core core.try.*
11178 case "$fflushall" in
11179 x) $cat >&4 <<EOM
11180Whew. Flushing explicitly all the stdio streams works.
767df6a1 11181EOM
a32a45b6
JH
11182 fflushall="$define"
11183 ;;
11184 '') $cat >&4 <<EOM
11185Sigh. Flushing explicitly all the stdio streams doesn't work.
767df6a1 11186EOM
a32a45b6
JH
11187 fflushall="$undef"
11188 ;;
11189 *) $cat >&4 <<EOM
6626660c 11190Cannot figure out whether flushing stdio streams explicitly works or not.
767df6a1
JH
11191I'm assuming it doesn't.
11192EOM
a32a45b6
JH
11193 fflushall="$undef"
11194 ;;
11195 esac
767df6a1 11196 ;;
a32a45b6
JH
11197 "$define"|true|[yY]*)
11198 fflushall="$define"
11199 ;;
11200 *)
11201 fflushall="$undef"
6626660c
JH
11202 ;;
11203 esac
767df6a1 11204 ;;
a32a45b6 11205*) fflushall="$undef"
767df6a1
JH
11206 ;;
11207esac
11208case "$fflushNULL$fflushall" in
11209undefundef)
6626660c 11210 $cat <<EOM
767df6a1
JH
11211I cannot figure out how to flush pending stdio output.
11212EOM
11213 ;;
11214esac
11215$rm -f try.* try$exe_ext
66fe083f 11216
a0d0e21e 11217: see what type file positions are declared as in the library
a0d0e21e 11218rp="What is the type for file position used by fsetpos()?"
dc45a647
MB
11219set fpos_t fpostype long stdio.h sys/types.h
11220eval $typedef_ask
2304df62 11221
ccc7f9b3
KS
11222: Store the full pathname to the ar program for use in the C program
11223: Respect a hint or command line value for full_ar.
11224case "$full_ar" in
11225'') full_ar=$ar ;;
11226esac
11227
1aef975c
AD
11228: Store the full pathname to the sed program for use in the C program
11229full_sed=$sed
11230
2304df62 11231: see what type gids are declared as in the kernel
dc45a647
MB
11232echo " "
11233echo "Looking for the type for group ids returned by getgid()."
a0d0e21e
LW
11234set gid_t gidtype xxx stdio.h sys/types.h
11235eval $typedef
2304df62 11236case "$gidtype" in
a0d0e21e
LW
11237xxx)
11238 xxx=`./findhdr sys/user.h`
11239 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11240 case $1 in
11241 unsigned) dflt="$1 $2" ;;
11242 *) dflt="$1" ;;
11243 esac
2304df62 11244 ;;
a0d0e21e 11245*) dflt="$gidtype";;
2304df62 11246esac
dc45a647
MB
11247case "$gidtype" in
11248gid_t) echo "gid_t found." ;;
11249*) rp="What is the type for group ids returned by getgid()?"
11250 . ./myread
11251 gidtype="$ans"
11252 ;;
11253esac
a0d0e21e 11254
2304df62
AD
11255: see if getgroups exists
11256set getgroups d_getgrps
11257eval $inlibc
11258
5cd24f17 11259: see if setgroups exists
11260set setgroups d_setgrps
11261eval $inlibc
11262
dfe9444c 11263
8cc95fdb 11264: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
a0d0e21e 11265echo " "
5cd24f17 11266case "$d_getgrps$d_setgrps" in
11267*define*)
a0d0e21e 11268 case "$groupstype" in
2304df62
AD
11269 '') dflt="$gidtype" ;;
11270 *) dflt="$groupstype" ;;
a0d0e21e
LW
11271 esac
11272 $cat <<EOM
dc45a647 11273What type of pointer is the second argument to getgroups() and setgroups()?
5cd24f17 11274Usually this is the same as group ids, $gidtype, but not always.
2304df62
AD
11275
11276EOM
dc45a647 11277 rp='What type pointer is the second argument to getgroups() and setgroups()?'
a0d0e21e
LW
11278 . ./myread
11279 groupstype="$ans"
11280 ;;
11281*) groupstype="$gidtype";;
2304df62 11282esac
2304df62 11283
85e6fe83 11284: see what type lseek is declared as in the kernel
dc45a647 11285rp="What is the type used for lseek's offset on this system?"
a0d0e21e 11286set off_t lseektype long stdio.h sys/types.h
dc45a647 11287eval $typedef_ask
2304df62 11288
8ff267be 11289echo " "
5ff3f7a4
GS
11290$echo $n "Checking to see how big your file offsets are...$c" >&4
11291$cat >try.c <<EOCP
11292#include <sys/types.h>
11293#include <stdio.h>
5a411a32 11294int main()
5ff3f7a4
GS
11295{
11296 printf("%d\n", sizeof($lseektype));
11297}
11298EOCP
11299set try
11300if eval $compile_ok; then
11301 lseeksize=`./try`
11302 $echo " $lseeksize bytes." >&4
11303else
11304 dflt='4'
11305 echo " "
11306 echo "(I can't seem to compile the test program. Guessing...)"
11307 rp="What is the size of your file offsets (in bytes)?"
11308 . ./myread
11309 lseeksize="$ans"
11310fi
11311$rm -f try.c try
11312
11313echo " "
dfe9444c 11314echo "Checking if your $make program sets \$(MAKE)..." >&4
8ff267be 11315case "$make_set_make" in
11316'')
11317 $sed 's/^X //' > testmake.mak << 'EOF'
11318Xall:
dfe9444c 11319X @echo 'maketemp="$(MAKE)"'
8ff267be 11320EOF
8ff267be 11321 case "`$make -f testmake.mak 2>/dev/null`" in
dfe9444c 11322 *maketemp=*) make_set_make='#' ;;
8ff267be 11323 *) make_set_make="MAKE=$make" ;;
11324 esac
dfe9444c
AD
11325 $rm -f testmake.mak
11326 ;;
11327esac
11328case "$make_set_make" in
11329'#') echo "Yup, it does.";;
11330*) echo "Nope, it doesn't.";;
11331esac
11332
11333: see what type is used for mode_t
dc45a647 11334rp="What is the type used for file modes for system calls (e.g. fchmod())?"
dfe9444c 11335set mode_t modetype int stdio.h sys/types.h
dc45a647 11336eval $typedef_ask
dfe9444c 11337
dfe9444c
AD
11338: define a fucntion to check prototypes
11339$cat > protochk <<EOSH
11340$startsh
11341cc="$cc"
11342optimize="$optimize"
11343ccflags="$ccflags"
11344prototype="$prototype"
11345define="$define"
11346rm=$rm
11347EOSH
11348
11349$cat >> protochk <<'EOSH'
11350
11351$rm -f try.c
11352foo="$1"
11353shift
11354while test $# -ge 2; do
11355 case "$1" in
11356 $define) echo "#include <$2>" >> try.c ;;
11357 literal) echo "$2" >> try.c ;;
11358 esac
11359 shift 2
11360done
11361test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11362cat >> try.c <<'EOCP'
11363#ifdef CAN_PROTOTYPE
11364#define _(args) args
11365#else
11366#define _(args) ()
11367#endif
11368EOCP
11369echo "$foo" >> try.c
11370echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11371$cc $optimize $ccflags -c try.c > /dev/null 2>&1
11372status=$?
11373$rm -f try.[co]
11374exit $status
11375EOSH
11376chmod +x protochk
11377$eunicefix protochk
11378
dfe9444c 11379: see what type is used for size_t
dc45a647 11380rp="What is the type used for the length parameter for string functions?"
dfe9444c 11381set size_t sizetype 'unsigned int' stdio.h sys/types.h
dc45a647 11382eval $typedef_ask
dfe9444c
AD
11383
11384: check for type of arguments to gethostbyaddr.
11385if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11386 case "$d_gethbyaddr" in
11387 $define)
11388 $cat <<EOM
11389
11390Checking to see what type of arguments are accepted by gethostbyaddr().
11391EOM
11392 hdrs="$define sys/types.h
11393 $d_socket sys/socket.h
11394 $i_niin netinet/in.h
11395 $i_netdb netdb.h
11396 $i_unistd unistd.h"
11397 : The first arg can 'char *' or 'void *'
11398 : The second arg is some of integral type
11399 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11400 for yyy in size_t long int; do
11401 case "$netdb_host_type" in
11402 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11403 if ./protochk "$try" $hdrs; then
11404 echo "Your system accepts $xxx for the first arg."
11405 echo "...and $yyy for the second arg."
11406 netdb_host_type="$xxx"
11407 netdb_hlen_type="$yyy"
11408 fi
11409 ;;
11410 esac
11411 done
11412 done
11413 : In case none of those worked, prompt the user.
11414 case "$netdb_host_type" in
11415 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11416 dflt='char *'
11417 . ./myread
11418 netdb_host_type=$ans
11419 rp='What is the type for the 2nd argument to gethostbyaddr?'
11420 dflt="$sizetype"
11421 . ./myread
11422 netdb_hlen_type=$ans
11423 ;;
11424 esac
11425 ;;
11426 *) : no gethostbyaddr, so pick harmless defaults
11427 netdb_host_type='char *'
11428 netdb_hlen_type="$sizetype"
11429 ;;
11430 esac
11431 # Remove the "const" if needed. -- but then we'll have a
11432 # prototype clash!
11433 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11434fi
11435
11436: check for type of argument to gethostbyname.
11437if test "X$netdb_name_type" = X ; then
11438 case "$d_gethbyname" in
11439 $define)
11440 $cat <<EOM
11441
11442Checking to see what type of argument is accepted by gethostbyname().
11443EOM
11444 hdrs="$define sys/types.h
11445 $d_socket sys/socket.h
11446 $i_niin netinet/in.h
11447 $i_netdb netdb.h
11448 $i_unistd unistd.h"
11449 for xxx in "const char *" "char *"; do
11450 case "$netdb_name_type" in
11451 '') try="extern struct hostent *gethostbyname($xxx);"
11452 if ./protochk "$try" $hdrs; then
11453 echo "Your system accepts $xxx."
11454 netdb_name_type="$xxx"
11455 fi
11456 ;;
11457 esac
11458 done
11459 : In case none of those worked, prompt the user.
11460 case "$netdb_name_type" in
11461 '') rp='What is the type for the 1st argument to gethostbyname?'
11462 dflt='char *'
11463 . ./myread
11464 netdb_name_type=$ans
11465 ;;
11466 esac
11467 ;;
11468 *) : no gethostbyname, so pick harmless default
11469 netdb_name_type='char *'
11470 ;;
11471 esac
11472fi
8ff267be 11473
dfe9444c
AD
11474: check for type of 1st argument to getnetbyaddr.
11475if test "X$netdb_net_type" = X ; then
11476 case "$d_getnbyaddr" in
11477 $define)
11478 $cat <<EOM
85e6fe83 11479
dfe9444c
AD
11480Checking to see what type of 1st argument is accepted by getnetbyaddr().
11481EOM
11482 hdrs="$define sys/types.h
11483 $d_socket sys/socket.h
11484 $i_niin netinet/in.h
11485 $i_netdb netdb.h
11486 $i_unistd unistd.h"
11487 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11488 case "$netdb_net_type" in
11489 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11490 if ./protochk "$try" $hdrs; then
11491 echo "Your system accepts $xxx."
11492 netdb_net_type="$xxx"
11493 fi
11494 ;;
11495 esac
11496 done
11497 : In case none of those worked, prompt the user.
11498 case "$netdb_net_type" in
11499 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11500 dflt='long'
11501 . ./myread
11502 netdb_net_type=$ans
11503 ;;
11504 esac
11505 ;;
11506 *) : no getnetbyaddr, so pick harmless default
e5c9fcd0 11507 netdb_net_type='long'
dfe9444c
AD
11508 ;;
11509 esac
11510fi
2c7991dc 11511: locate the preferred pager for this system
11512case "$pager" in
11513'')
11514 dflt=''
11515 case "$pg" in
11516 /*) dflt=$pg;;
11517 esac
11518 case "$more" in
11519 /*) dflt=$more;;
11520 esac
11521 case "$less" in
11522 /*) dflt=$less;;
11523 esac
11524 case "$dflt" in
11525 '') dflt=/usr/ucb/more;;
11526 esac
11527 ;;
11528*) dflt="$pager";;
11529esac
11530echo " "
11531fn=f/
11532rp='What pager is used on your system?'
11533. ./getfile
11534pager="$ans"
11535
dfe9444c 11536: see what type pids are declared as in the kernel
dc45a647 11537rp="What is the type of process ids on this system?"
dfe9444c 11538set pid_t pidtype int stdio.h sys/types.h
dc45a647 11539eval $typedef_ask
2304df62 11540
693762b4
AD
11541: check for length of pointer
11542echo " "
11543case "$ptrsize" in
11544'')
dc45a647 11545 $echo $n "Checking to see how big your pointers are...$c" >&4
693762b4
AD
11546 if test "$voidflags" -gt 7; then
11547 echo '#define VOID_PTR char *' > try.c
11548 else
11549 echo '#define VOID_PTR void *' > try.c
11550 fi
11551 $cat >>try.c <<'EOCP'
11552#include <stdio.h>
d674cd6d 11553int main()
693762b4
AD
11554{
11555 printf("%d\n", sizeof(VOID_PTR));
11556 exit(0);
11557}
11558EOCP
11559 set try
dc45a647 11560 if eval $compile_ok; then
693762b4 11561 ptrsize=`./try`
dc45a647 11562 $echo " $ptrsize bytes." >&4
693762b4
AD
11563 else
11564 dflt='4'
11565 echo "(I can't seem to compile the test program. Guessing...)" >&4
11566 rp="What is the size of a pointer (in bytes)?"
11567 . ./myread
11568 ptrsize="$ans"
11569 fi
11570 ;;
11571esac
11572$rm -f try.c try
11573
a0d0e21e
LW
11574: see if ar generates random libraries by itself
11575echo " "
11576echo "Checking how to generate random libraries on your machine..." >&4
11577echo 'int bar1() { return bar2(); }' > bar1.c
11578echo 'int bar2() { return 2; }' > bar2.c
11579$cat > foo.c <<'EOP'
d674cd6d 11580int main() { printf("%d\n", bar1()); exit(0); }
a0d0e21e
LW
11581EOP
11582$cc $ccflags -c bar1.c >/dev/null 2>&1
11583$cc $ccflags -c bar2.c >/dev/null 2>&1
11584$cc $ccflags -c foo.c >/dev/null 2>&1
dfe9444c
AD
11585$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11586if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 11587 ./foobar >/dev/null 2>&1; then
4e2a5f63 11588 echo "$ar appears to generate random libraries itself."
a0d0e21e
LW
11589 orderlib=false
11590 ranlib=":"
dfe9444c
AD
11591elif $ar ts bar$_a >/dev/null 2>&1 &&
11592 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 11593 ./foobar >/dev/null 2>&1; then
4e2a5f63 11594 echo "a table of contents needs to be added with '$ar ts'."
a0d0e21e 11595 orderlib=false
dfe9444c 11596 ranlib="$ar ts"
a0d0e21e 11597else
ecfc5424
AD
11598 case "$ranlib" in
11599 :) ranlib='';;
11600 '')
11601 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11602 $test -f $ranlib || ranlib=''
11603 ;;
11604 esac
a0d0e21e 11605 if $test -n "$ranlib"; then
ecfc5424 11606 echo "your system has '$ranlib'; we'll use that."
a0d0e21e
LW
11607 orderlib=false
11608 else
11609 echo "your system doesn't seem to support random libraries"
11610 echo "so we'll use lorder and tsort to order the libraries."
11611 orderlib=true
11612 ranlib=":"
11613 fi
11614fi
11615$rm -f foo* bar*
11616
dfe9444c
AD
11617: check for type of arguments to select.
11618case "$selecttype" in
11619'') case "$d_select" in
11620 $define)
11621 $cat <<EOM
11622Checking to see what type of arguments are accepted by select().
11623EOM
11624 hdrs="$define sys/types.h
11625 $i_systime sys/time.h
11626 $i_sysselct sys/select.h
11627 $d_socket sys/socket.h"
11628 : The first arg can be int, unsigned, or size_t
11629 : The last arg may or may not be 'const'
11630 val=''
7f3d1cf1
BH
11631 : void pointer has been seen but using that
11632 : breaks the selectminbits test
11633 for xxx in 'fd_set *' 'int *'; do
1cfa4ec7 11634 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
dfe9444c
AD
11635 for tmo in 'struct timeval *' 'const struct timeval *'; do
11636 case "$val" in
11637 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11638 if ./protochk "$try" $hdrs; then
11639 echo "Your system accepts $xxx."
11640 val="$xxx"
11641 fi
11642 ;;
11643 esac
11644 done
11645 done
11646 done
11647 case "$val" in
11648 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11649 case "$d_fd_set" in
11650 $define) dflt="fd_set *" ;;
11651 *) dflt="int *" ;;
11652 esac
11653 . ./myread
11654 val=$ans
11655 ;;
a0d0e21e 11656 esac
dfe9444c 11657 selecttype="$val"
a0d0e21e 11658 ;;
dfe9444c
AD
11659 *) : no select, so pick a harmless default
11660 selecttype='int *'
a0d0e21e
LW
11661 ;;
11662 esac
a0d0e21e
LW
11663 ;;
11664esac
2304df62 11665
5ff3f7a4
GS
11666: check for the select 'width'
11667case "$selectminbits" in
11668'') case "$d_select" in
11669 $define)
11670 $cat <<EOM
11671
85ab1d1d 11672Checking to see on how many bits at a time your select() operates...
5ff3f7a4
GS
11673EOM
11674 $cat >try.c <<EOCP
11675#include <sys/types.h>
11676#$i_time I_TIME
11677#$i_systime I_SYS_TIME
11678#$i_systimek I_SYS_TIME_KERNEL
11679#ifdef I_TIME
11680# include <time.h>
11681#endif
11682#ifdef I_SYS_TIME
11683# ifdef I_SYS_TIME_KERNEL
11684# define KERNEL
11685# endif
11686# include <sys/time.h>
11687# ifdef I_SYS_TIME_KERNEL
11688# undef KERNEL
11689# endif
11690#endif
11691#$i_sysselct I_SYS_SELECT
11692#ifdef I_SYS_SELECT
11693#include <sys/select.h>
11694#endif
bd628c73
AD
11695#$d_socket HAS_SOCKET
11696#ifdef HAS_SOCKET
11697# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11698#endif
5ff3f7a4 11699#include <stdio.h>
fb164848
JH
11700$selecttype b;
11701#define S sizeof(*(b))
5ff3f7a4
GS
11702#define MINBITS 64
11703#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11704#define NBITS (NBYTES * 8)
11705int main() {
11706 char s[NBYTES];
5ff3f7a4
GS
11707 struct timeval t;
11708 int i;
11709 FILE* fp;
11710 int fd;
11711
11712 fclose(stdin);
11713 fp = fopen("try.c", "r");
11714 if (fp == 0)
11715 exit(1);
11716 fd = fileno(fp);
11717 if (fd < 0)
11718 exit(2);
11719 b = ($selecttype)s;
11720 for (i = 0; i < NBITS; i++)
11721 FD_SET(i, b);
11722 t.tv_sec = 0;
11723 t.tv_usec = 0;
11724 select(fd + 1, b, 0, 0, &t);
11725 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11726 printf("%d\n", i + 1);
11727 return 0;
11728}
11729EOCP
11730 set try
11731 if eval $compile_ok; then
11732 selectminbits=`./try`
85ab1d1d 11733 case "$selectminbits" in
fb164848
JH
11734 '') cat >&4 <<EOM
11735Cannot figure out on how many bits at a time your select() operates.
11736I'll play safe and guess it is 32 bits.
11737EOM
11738 selectminbits=32
11739 bits="32 bits"
11740 ;;
85ab1d1d
JH
11741 1) bits="1 bit" ;;
11742 *) bits="$selectminbits bits" ;;
11743 esac
11744 echo "Your select() operates on $bits at a time." >&4
5ff3f7a4
GS
11745 else
11746 rp='What is the minimum number of bits your select() operates on?'
11747 case "$byteorder" in
11748 1234|12345678) dflt=32 ;;
11749 *) dflt=1 ;;
11750 esac
11751 . ./myread
11752 val=$ans
11753 selectminbits="$val"
11754 fi
11755 $rm -f try.* try
11756 ;;
11757 *) : no select, so pick a harmless default
11758 selectminbits='32'
11759 ;;
11760 esac
11761 ;;
11762esac
11763
8e07c86e
AD
11764: Trace out the files included by signal.h, then look for SIGxxx names.
11765: Remove SIGARRAYSIZE used by HPUX.
af4c28eb
CS
11766: Remove SIGSTKSIZE used by Linux.
11767: Remove SIGSTKSZ used by Posix.
4633a7c4 11768: Remove SIGTYP void lines used by OS2.
8e07c86e
AD
11769xxx=`echo '#include <signal.h>' |
11770 $cppstdin $cppminus $cppflags 2>/dev/null |
11771 $grep '^[ ]*#.*include' |
11772 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11773: Check this list of files to be sure we have parsed the cpp output ok.
11774: This will also avoid potentially non-existent files, such
11775: as ../foo/bar.h
11776xxxfiles=''
11777for xx in $xxx /dev/null ; do
11778 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11779done
11780: If we have found no files, at least try signal.h
11781case "$xxxfiles" in
11782'') xxxfiles=`./findhdr signal.h` ;;
11783esac
11784xxx=`awk '
af4c28eb 11785$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
8e07c86e
AD
11786 print substr($2, 4, 20)
11787}
4633a7c4 11788$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8e07c86e
AD
11789 print substr($3, 4, 20)
11790}' $xxxfiles`
11791: Append some common names just in case the awk scan failed.
11792xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11793xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11794xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11795xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11796: generate a few handy files for later
dc45a647 11797$cat > signal.c <<'EOCP'
4633a7c4
LW
11798#include <sys/types.h>
11799#include <signal.h>
dc45a647 11800#include <stdio.h>
4633a7c4 11801int main() {
760ac839
LW
11802
11803/* Strange style to avoid deeply-nested #if/#else/#endif */
11804#ifndef NSIG
11805# ifdef _NSIG
11806# define NSIG (_NSIG)
11807# endif
11808#endif
11809
11810#ifndef NSIG
11811# ifdef SIGMAX
11812# define NSIG (SIGMAX+1)
11813# endif
11814#endif
11815
11816#ifndef NSIG
11817# ifdef SIG_MAX
11818# define NSIG (SIG_MAX+1)
11819# endif
11820#endif
11821
11822#ifndef NSIG
11823# ifdef MAXSIG
11824# define NSIG (MAXSIG+1)
11825# endif
4633a7c4 11826#endif
760ac839
LW
11827
11828#ifndef NSIG
11829# ifdef MAX_SIG
11830# define NSIG (MAX_SIG+1)
11831# endif
11832#endif
11833
11834#ifndef NSIG
11835# ifdef SIGARRAYSIZE
11836# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11837# endif
11838#endif
11839
11840#ifndef NSIG
11841# ifdef _sys_nsig
11842# define NSIG (_sys_nsig) /* Solaris 2.5 */
11843# endif
11844#endif
11845
11846/* Default to some arbitrary number that's big enough to get most
11847 of the common signals.
11848*/
11849#ifndef NSIG
11850# define NSIG 50
4633a7c4 11851#endif
760ac839
LW
11852
11853printf("NSIG %d\n", NSIG);
11854
dc45a647
MB
11855#ifndef JUST_NSIG
11856
11857EOCP
11858
28e8609d 11859echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
8e07c86e
AD
11860{
11861 printf "#ifdef SIG"; printf $1; printf "\n"
11862 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11863 printf $1; printf ");\n"
11864 printf "#endif\n"
2304df62 11865}
2304df62 11866END {
dc45a647 11867 printf "#endif /* JUST_NSIG */\n";
8e07c86e 11868 printf "}\n";
2304df62 11869}
4633a7c4
LW
11870' >>signal.c
11871$cat >signal.awk <<'EOP'
11872BEGIN { ndups = 0 }
11873$1 ~ /^NSIG$/ { nsig = $2 }
11874($1 !~ /^NSIG$/) && (NF == 2) {
11875 if ($2 > maxsig) { maxsig = $2 }
11876 if (sig_name[$2]) {
11877 dup_name[ndups] = $1
11878 dup_num[ndups] = $2
11879 ndups++
11880 }
11881 else {
11882 sig_name[$2] = $1
11883 sig_num[$2] = $2
11884 }
4633a7c4
LW
11885}
11886END {
af4c28eb
CS
11887 if (nsig == 0) {
11888 nsig = maxsig + 1
11889 }
11890 printf("NSIG %d\n", nsig);
11891 for (n = 1; n < nsig; n++) {
11892 if (sig_name[n]) {
11893 printf("%s %d\n", sig_name[n], sig_num[n])
4633a7c4 11894 }
af4c28eb
CS
11895 else {
11896 printf("NUM%d %d\n", n, n)
11897 }
11898 }
4633a7c4 11899 for (n = 0; n < ndups; n++) {
af4c28eb 11900 printf("%s %d\n", dup_name[n], dup_num[n])
4633a7c4
LW
11901 }
11902}
11903EOP
11904$cat >signal_cmd <<EOS
8e07c86e 11905$startsh
dc45a647
MB
11906if $test -s signal.lst; then
11907 echo "Using your existing signal.lst file"
11908 exit 0
11909fi
11910xxx="$xxx"
11911EOS
11912$cat >>signal_cmd <<'EOS'
11913
11914set signal
11915if eval $compile_ok; then
dfe9444c 11916 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8e07c86e 11917else
dc45a647
MB
11918 echo "(I can't seem be able to compile the whole test program)" >&4
11919 echo "(I'll try it in little pieces.)" >&4
11920 set signal -DJUST_NSIG
11921 if eval $compile_ok; then
11922 ./signal$_exe > signal.nsg
11923 $cat signal.nsg
11924 else
11925 echo "I can't seem to figure out how many signals you have." >&4
11926 echo "Guessing 50." >&4
11927 echo 'NSIG 50' > signal.nsg
11928 fi
11929 : Now look at all the signal names, one at a time.
28e8609d 11930 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
dc45a647
MB
11931 $cat > signal.c <<EOCP
11932#include <sys/types.h>
11933#include <signal.h>
11934#include <stdio.h>
11935int main() {
11936printf("$xx %d\n", SIG${xx});
11937return 0;
11938}
11939EOCP
11940 set signal
11941 if eval $compile; then
11942 echo "SIG${xx} found."
11943 ./signal$_exe >> signal.ls1
11944 else
11945 echo "SIG${xx} NOT found."
11946 fi
11947 done
11948 if $test -s signal.ls1; then
11949 $cat signal.nsg signal.ls1 |
11950 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11951 fi
11952
11953fi
11954if $test -s signal.lst; then
11955 :
11956else
11957 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
8e07c86e 11958 echo 'kill -l' >signal
dc45a647 11959 set X `csh -f <signal`
8e07c86e 11960 $rm -f signal
2304df62 11961 shift
dc45a647 11962 case $# in
8e07c86e 11963 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
2304df62 11964 esac
28e8609d 11965 echo $@ | $tr ' ' $trnl | \
af4c28eb
CS
11966 $awk '{ printf "%s %d\n", $1, ++s; }
11967 END { printf "NSIG %d\n", ++s }' >signal.lst
8e07c86e 11968fi
dc45a647 11969$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
8e07c86e 11970EOS
4633a7c4
LW
11971chmod a+x signal_cmd
11972$eunicefix signal_cmd
8e07c86e
AD
11973
11974: generate list of signal names
11975echo " "
dfe9444c 11976case "$sig_name_init" in
6626bf4c
JH
11977'') doinit=yes ;;
11978*) case "$sig_num_init" in
11979 ''|*,*) doinit=yes ;;
11980 esac ;;
11981esac
11982case "$doinit" in
11983yes)
4633a7c4 11984 echo "Generating a list of signal names and numbers..." >&4
dc45a647 11985 . ./signal_cmd
af4c28eb
CS
11986 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11987 sig_name=`$awk 'BEGIN { printf "ZERO " }
11988 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11989 sig_num=`$awk 'BEGIN { printf "0 " }
11990 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11991 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11992 !/^NSIG/ { printf "\"%s\", ", $1 }
11993 END { printf "0\n" }' signal.lst`
11994 sig_num_init=`$awk 'BEGIN { printf "0, " }
11995 !/^NSIG/ { printf "%d, ", $2}
11996 END { printf "0\n"}' signal.lst`
11997 ;;
11998esac
11999echo "The following $sig_count signals are available:"
a0d0e21e
LW
12000echo " "
12001echo $sig_name | $awk \
12002'BEGIN { linelen = 0 }
12003{
8e07c86e 12004 for (i = 1; i <= NF; i++) {
a0d0e21e
LW
12005 name = "SIG" $i " "
12006 linelen = linelen + length(name)
12007 if (linelen > 70) {
12008 printf "\n"
12009 linelen = length(name)
12010 }
12011 printf "%s", name
12012 }
8e07c86e 12013 printf "\n"
a0d0e21e 12014}'
4633a7c4 12015$rm -f signal signal.c signal.awk signal.lst signal_cmd
a0d0e21e 12016
a0d0e21e
LW
12017: see what type is used for signed size_t
12018set ssize_t ssizetype int stdio.h sys/types.h
12019eval $typedef
12020dflt="$ssizetype"
12021$cat > ssize.c <<EOM
12022#include <stdio.h>
12023#include <sys/types.h>
12024#define Size_t $sizetype
12025#define SSize_t $dflt
d674cd6d 12026int main()
a0d0e21e
LW
12027{
12028 if (sizeof(Size_t) == sizeof(SSize_t))
12029 printf("$dflt\n");
12030 else if (sizeof(Size_t) == sizeof(int))
12031 printf("int\n");
12032 else
12033 printf("long\n");
760ac839 12034 exit(0);
a0d0e21e
LW
12035}
12036EOM
12037echo " "
dfe9444c 12038set ssize
dc45a647 12039if eval $compile_ok && ./ssize > /dev/null; then
dfe9444c 12040 ssizetype=`./ssize`
a0d0e21e
LW
12041 echo "I'll be using $ssizetype for functions returning a byte count." >&4
12042else
24fef2a7 12043 $cat >&4 <<EOM
24fef2a7
AD
12044Help! I can't compile and run the ssize_t test program: please enlighten me!
12045(This is probably a misconfiguration in your system or libraries, and
12046you really ought to fix it. Still, I'll try anyway.)
a0d0e21e
LW
12047
12048I need a type that is the same size as $sizetype, but is guaranteed to
24fef2a7 12049be signed. Common values are ssize_t, int and long.
a0d0e21e
LW
12050
12051EOM
12052 rp="What signed type is the same size as $sizetype?"
12053 . ./myread
12054 ssizetype="$ans"
12055fi
dfe9444c 12056$rm -f ssize ssize.*
3fd537d4 12057
a0d0e21e
LW
12058: see what type of char stdio uses.
12059echo " "
12060if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12061 echo "Your stdio uses unsigned chars." >&4
12062 stdchar="unsigned char"
12063else
12064 echo "Your stdio uses signed chars." >&4
12065 stdchar="char"
12066fi
12067
12068: see if time exists
12069echo " "
28e8609d
JH
12070if test "X$d_time" = X -o X"$timetype" = X; then
12071 if set time val -f d_time; eval $csym; $val; then
5ff3f7a4
GS
12072 echo 'time() found.' >&4
12073 val="$define"
12074 rp="What is the type returned by time() on this system?"
12075 set time_t timetype long stdio.h sys/types.h
12076 eval $typedef_ask
28e8609d 12077 else
5ff3f7a4
GS
12078 echo 'time() not found, hope that will do.' >&4
12079 val="$undef"
12080 timetype='int';
28e8609d
JH
12081 fi
12082 set d_time
12083 eval $setvar
a0d0e21e 12084fi
a0d0e21e
LW
12085
12086: see what type uids are declared as in the kernel
dc45a647
MB
12087echo " "
12088echo "Looking for the type for user ids returned by getuid()."
a0d0e21e
LW
12089set uid_t uidtype xxx stdio.h sys/types.h
12090eval $typedef
12091case "$uidtype" in
12092xxx)
12093 xxx=`./findhdr sys/user.h`
12094 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12095 case $1 in
12096 unsigned) dflt="$1 $2" ;;
12097 *) dflt="$1" ;;
12098 esac
12099 ;;
4633a7c4
LW
12100*) dflt="$uidtype";;
12101esac
dc45a647
MB
12102case "$uidtype" in
12103uid_t) echo "uid_t found." ;;
12104*) rp="What is the type for user ids returned by getuid()?"
12105 . ./myread
12106 uidtype="$ans"
12107 ;;
12108esac
4633a7c4
LW
12109
12110: see if dbm.h is available
12111: see if dbmclose exists
12112set dbmclose d_dbmclose
12113eval $inlibc
12114
12115case "$d_dbmclose" in
12116$define)
12117 set dbm.h i_dbm
12118 eval $inhdr
5f80c64f
JH
12119 case "$i_dbm" in
12120 $define)
12121 val="$undef"
12122 set i_rpcsvcdbm
12123 eval $setvar
12124 ;;
12125 *) set rpcsvc/dbm.h i_rpcsvcdbm
12126 eval $inhdr
12127 ;;
12128 esac
12129 ;;
12130*) echo "We won't be including <dbm.h>"
12131 val="$undef"
12132 set i_dbm
12133 eval $setvar
12134 val="$undef"
12135 set i_rpcsvcdbm
12136 eval $setvar
12137 ;;
12138esac
12139
12140: see if this is a sys/file.h system
12141val=''
12142set sys/file.h val
12143eval $inhdr
12144
12145: do we need to include sys/file.h ?
12146case "$val" in
12147"$define")
12148 echo " "
12149 if $h_sysfile; then
12150 val="$define"
12151 echo "We'll be including <sys/file.h>." >&4
12152 else
12153 val="$undef"
12154 echo "We won't be including <sys/file.h>." >&4
12155 fi
12156 ;;
12157*)
12158 h_sysfile=false
12159 ;;
12160esac
12161set i_sysfile
12162eval $setvar
12163
12164: see if fcntl.h is there
12165val=''
12166set fcntl.h val
12167eval $inhdr
12168
12169: see if we can include fcntl.h
12170case "$val" in
12171"$define")
12172 echo " "
12173 if $h_fcntl; then
12174 val="$define"
12175 echo "We'll be including <fcntl.h>." >&4
12176 else
12177 val="$undef"
12178 if $h_sysfile; then
12179 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12180 else
12181 echo "We won't be including <fcntl.h>." >&4
12182 fi
12183 fi
12184 ;;
12185*)
12186 h_fcntl=false
12187 val="$undef"
12188 ;;
12189esac
12190set i_fcntl
12191eval $setvar
12192
12193: see if locale.h is available
12194set locale.h i_locale
12195eval $inhdr
12196
7f3d1cf1 12197: see if mach cthreads are available
13666627
JH
12198if test "X$usethreads" = "X$define"; then
12199 set mach/cthreads.h i_machcthr
12200 eval $inhdr
12201else
12202 i_machcthr="$undef"
12203fi
12204
12205
7f3d1cf1 12206
5f80c64f
JH
12207: see if this is a math.h system
12208set math.h i_math
12209eval $inhdr
12210
e7fb4fcc
JH
12211: see if this is a mntent.h system
12212set mntent.h i_mntent
12213eval $inhdr
12214
5f80c64f
JH
12215: see if ndbm.h is available
12216set ndbm.h t_ndbm
12217eval $inhdr
12218case "$t_ndbm" in
12219$define)
12220 : see if dbm_open exists
12221 set dbm_open d_dbm_open
12222 eval $inlibc
12223 case "$d_dbm_open" in
12224 $undef)
12225 t_ndbm="$undef"
12226 echo "We won't be including <ndbm.h>"
12227 ;;
12228 esac
12229 ;;
12230esac
12231val="$t_ndbm"
12232set i_ndbm
12233eval $setvar
12234
12235: see if net/errno.h is available
12236val=''
12237set net/errno.h val
12238eval $inhdr
12239
12240: Unfortunately, it causes problems on some systems. Arrgh.
12241case "$val" in
12242$define)
12243 cat > try.c <<'EOM'
12244#include <stdio.h>
12245#include <errno.h>
12246#include <net/errno.h>
12247int func()
12248{
12249 return ENOTSOCK;
12250}
12251EOM
12252 if $cc $ccflags -c try.c >/dev/null 2>&1; then
12253 echo "We'll be including <net/errno.h>." >&4
12254 else
12255 echo "We won't be including <net/errno.h>." >&4
12256 val="$undef"
12257 fi
12258 $rm -f try.* try
12259 ;;
12260esac
12261set i_neterrno
12262eval $setvar
12263
9cc6feab
JH
12264: see if netinet/tcp.h is available
12265set netinet/tcp.h i_netinettcp
12266eval $inhdr
12267
5b34fd99
JH
12268: see if this is a poll.h system
12269set poll.h i_poll
12270eval $inhdr
12271
5f80c64f
JH
12272: get C preprocessor symbols handy
12273echo " "
12274$echo $n "Hmm... $c"
12275echo $al | $tr ' ' $trnl >Cppsym.know
12276$cat <<EOSS >Cppsym
12277$startsh
12278case "\$1" in
12279-l) list=true
12280 shift
12281 ;;
12282esac
12283unknown=''
12284case "\$list\$#" in
122851|2)
12286 for sym do
12287 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12288 exit 0
12289 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12290 :
12291 else
12292 unknown="\$unknown \$sym"
12293 fi
12294 done
12295 set X \$unknown
12296 shift
12297 ;;
12298esac
12299case \$# in
123000) exit 1;;
12301esac
12302echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12303#ifdef \1\\
12304exit 0; _ _ _ _\1\\ \1\\
12305#endif\\
12306/' >Cppsym\$\$
12307echo "exit 1; _ _ _" >>Cppsym\$\$
12308$cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
12309case "\$list" in
12310true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12311*)
12312 sh Cppsym2\$\$
12313 status=\$?
12314 ;;
12315esac
12316$rm -f Cppsym\$\$ Cppsym2\$\$
12317exit \$status
12318EOSS
12319chmod +x Cppsym
12320$eunicefix Cppsym
12321./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12322
12323: now check the C compiler for additional symbols
c4747d3e
JH
12324postprocess_cc_v=''
12325case "$osname" in
12326aix) postprocess_cc_v="|$tr , ' '" ;;
12327esac
5f80c64f
JH
12328$cat >ccsym <<EOS
12329$startsh
12330$cat >tmp.c <<EOF
12331extern int foo;
12332EOF
c4747d3e 12333for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
5f80c64f
JH
12334do
12335 case "\$i" in
12336 -D*) echo "\$i" | $sed 's/^-D//';;
12337 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12338 esac
12339done
12340$rm -f try.c
12341EOS
2000072c 12342postprocess_cc_v=''
5f80c64f
JH
12343chmod +x ccsym
12344$eunicefix ccsym
12345./ccsym > ccsym1.raw
12346if $test -s ccsym1.raw; then
12347 $sort ccsym1.raw | $uniq >ccsym.raw
12348else
12349 mv ccsym1.raw ccsym.raw
12350fi
12351
12352$awk '/\=/ { print $0; next }
12353 { print $0"=1" }' ccsym.raw >ccsym.list
12354$awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12355$comm -13 ccsym.true ccsym.list >ccsym.own
12356$comm -12 ccsym.true ccsym.list >ccsym.com
12357$comm -23 ccsym.true ccsym.list >ccsym.cpp
12358also=''
5f80c64f 12359if $test -z ccsym.raw; then
ff49bff8 12360 echo "Your C compiler doesn't seem to define any symbols!" >&4
5f80c64f 12361 echo " "
ff49bff8 12362 echo "However, your C preprocessor defines the following symbols:"
5f80c64f 12363 $cat Cppsym.true
ff49bff8
JH
12364 ccsymbols=''
12365 cppsymbols=`$cat Cppsym.true`
918c3d21 12366 cppsymbols=`echo $cppsymbols`
ff49bff8 12367 cppccsymbols="$cppsymbols"
5f80c64f
JH
12368else
12369 if $test -s ccsym.com; then
12370 echo "Your C compiler and pre-processor define these symbols:"
12371 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12372 also='also '
12373 symbols='ones'
ff49bff8 12374 cppccsymbols=`$cat ccsym.com`
918c3d21 12375 cppccsymbols=`echo $cppccsymbols`
5f80c64f
JH
12376 $test "$silent" || sleep 1
12377 fi
12378 if $test -s ccsym.cpp; then
12379 $test "$also" && echo " "
ff49bff8 12380 echo "Your C pre-processor ${also}defines the following symbols:"
5f80c64f
JH
12381 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12382 also='further '
ff49bff8 12383 cppsymbols=`$cat ccsym.cpp`
918c3d21 12384 cppsymbols=`echo $cppsymbols`
5f80c64f
JH
12385 $test "$silent" || sleep 1
12386 fi
12387 if $test -s ccsym.own; then
12388 $test "$also" && echo " "
ff49bff8 12389 echo "Your C compiler ${also}defines the following cpp symbols:"
5f80c64f
JH
12390 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12391 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
ff49bff8 12392 ccsymbols=`$cat ccsym.own`
918c3d21 12393 ccsymbols=`echo $ccsymbols`
5f80c64f
JH
12394 $test "$silent" || sleep 1
12395 fi
12396fi
12397$rm -f ccsym*
12398
12399: see if this is a termio system
12400val="$undef"
12401val2="$undef"
12402val3="$undef"
12403if $test `./findhdr termios.h`; then
12404 set tcsetattr i_termios
12405 eval $inlibc
12406 val3="$i_termios"
12407fi
12408echo " "
12409case "$val3" in
12410"$define") echo "You have POSIX termios.h... good!" >&4;;
12411*) if ./Cppsym pyr; then
12412 case "`/bin/universe`" in
12413 ucb) if $test `./findhdr sgtty.h`; then
12414 val2="$define"
12415 echo "<sgtty.h> found." >&4
12416 else
12417 echo "System is pyramid with BSD universe."
12418 echo "<sgtty.h> not found--you could have problems." >&4
12419 fi;;
12420 *) if $test `./findhdr termio.h`; then
12421 val="$define"
12422 echo "<termio.h> found." >&4
12423 else
12424 echo "System is pyramid with USG universe."
12425 echo "<termio.h> not found--you could have problems." >&4
12426 fi;;
12427 esac
12428 elif ./usg; then
12429 if $test `./findhdr termio.h`; then
12430 echo "<termio.h> found." >&4
12431 val="$define"
12432 elif $test `./findhdr sgtty.h`; then
12433 echo "<sgtty.h> found." >&4
12434 val2="$define"
12435 else
12436echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12437 fi
12438 else
12439 if $test `./findhdr sgtty.h`; then
12440 echo "<sgtty.h> found." >&4
12441 val2="$define"
12442 elif $test `./findhdr termio.h`; then
12443 echo "<termio.h> found." >&4
12444 val="$define"
12445 else
12446echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12447 fi
12448 fi;;
12449esac
12450set i_termio; eval $setvar
12451val=$val2; set i_sgtty; eval $setvar
12452val=$val3; set i_termios; eval $setvar
12453
f1066039
JH
12454: see if this is a shadow.h system
12455set shadow.h i_shadow
12456eval $inhdr
12457
86959918
JH
12458: see if this is a socks.h system
12459set socks.h i_socks
12460eval $inhdr
12461
5f80c64f
JH
12462: see if stdarg is available
12463echo " "
12464if $test `./findhdr stdarg.h`; then
12465 echo "<stdarg.h> found." >&4
12466 valstd="$define"
12467else
12468 echo "<stdarg.h> NOT found." >&4
12469 valstd="$undef"
12470fi
12471
12472: see if varags is available
12473echo " "
12474if $test `./findhdr varargs.h`; then
12475 echo "<varargs.h> found." >&4
12476else
12477 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12478fi
12479
12480: set up the varargs testing programs
12481$cat > varargs.c <<EOP
12482#ifdef I_STDARG
12483#include <stdarg.h>
12484#endif
12485#ifdef I_VARARGS
12486#include <varargs.h>
12487#endif
12488
12489#ifdef I_STDARG
12490int f(char *p, ...)
12491#else
12492int f(va_alist)
12493va_dcl
12494#endif
12495{
12496 va_list ap;
12497#ifndef I_STDARG
12498 char *p;
12499#endif
12500#ifdef I_STDARG
12501 va_start(ap,p);
12502#else
12503 va_start(ap);
12504 p = va_arg(ap, char *);
12505#endif
12506 va_end(ap);
12507}
12508EOP
12509$cat > varargs <<EOP
12510$startsh
12511if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12512 echo "true"
12513else
12514 echo "false"
12515fi
12516$rm -f varargs$_o
12517EOP
12518chmod +x varargs
12519
12520: now check which varargs header should be included
12521echo " "
12522i_varhdr=''
12523case "$valstd" in
12524"$define")
12525 if `./varargs I_STDARG`; then
12526 val='stdarg.h'
12527 elif `./varargs I_VARARGS`; then
12528 val='varargs.h'
12529 fi
12530 ;;
12531*)
12532 if `./varargs I_VARARGS`; then
12533 val='varargs.h'
12534 fi
12535 ;;
12536esac
12537case "$val" in
12538'')
12539echo "I could not find the definition for va_dcl... You have problems..." >&4
12540 val="$undef"; set i_stdarg; eval $setvar
12541 val="$undef"; set i_varargs; eval $setvar
12542 ;;
12543*)
12544 set i_varhdr
12545 eval $setvar
12546 case "$i_varhdr" in
12547 stdarg.h)
12548 val="$define"; set i_stdarg; eval $setvar
12549 val="$undef"; set i_varargs; eval $setvar
12550 ;;
12551 varargs.h)
12552 val="$undef"; set i_stdarg; eval $setvar
12553 val="$define"; set i_varargs; eval $setvar
12554 ;;
12555 esac
12556 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12557esac
12558$rm -f varargs*
12559
12560: see if stddef is available
12561set stddef.h i_stddef
12562eval $inhdr
12563
12564: see if sys/access.h is available
12565set sys/access.h i_sysaccess
12566eval $inhdr
12567
12568: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12569set sys/filio.h i_sysfilio
12570eval $inhdr
12571echo " "
12572if $test `./findhdr sys/ioctl.h`; then
12573 val="$define"
12574 echo '<sys/ioctl.h> found.' >&4
12575else
12576 val="$undef"
12577 if $test $i_sysfilio = "$define"; then
12578 echo '<sys/ioctl.h> NOT found.' >&4
12579 else
12580 $test $i_sgtty = "$define" && xxx="sgtty.h"
12581 $test $i_termio = "$define" && xxx="termio.h"
12582 $test $i_termios = "$define" && xxx="termios.h"
12583echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12584 fi
12585fi
12586set i_sysioctl
12587eval $setvar
12588
5f80c64f
JH
12589: see if sys/resource.h has to be included
12590set sys/resource.h i_sysresrc
12591eval $inhdr
12592
12593: see if sys/security.h is available
12594set sys/security.h i_syssecrt
12595eval $inhdr
12596
104d25b7
JH
12597: see if this is a sys/statvfs.h system
12598set sys/statvfs.h i_sysstatvfs
12599eval $inhdr
12600
5f80c64f
JH
12601: see if this is a sys/un.h system
12602set sys/un.h i_sysun
12603eval $inhdr
12604
12605: see if this is a syswait system
12606set sys/wait.h i_syswait
12607eval $inhdr
12608
12609: see if this is an utime system
12610set utime.h i_utime
12611eval $inhdr
12612
12613: see if this is a values.h system
12614set values.h i_values
12615eval $inhdr
12616
12617: see if this is a vfork system
12618case "$d_vfork" in
12619"$define")
12620 set vfork.h i_vfork
12621 eval $inhdr
12622 ;;
12623*)
12624 i_vfork="$undef"
12625 ;;
12626esac
12627
12628: see if gdbm.h is available
12629set gdbm.h t_gdbm
12630eval $inhdr
12631case "$t_gdbm" in
12632$define)
12633 : see if gdbm_open exists
12634 set gdbm_open d_gdbm_open
12635 eval $inlibc
12636 case "$d_gdbm_open" in
12637 $undef)
12638 t_gdbm="$undef"
12639 echo "We won't be including <gdbm.h>"
12640 ;;
12641 esac
12642 ;;
12643esac
12644val="$t_gdbm"
12645set i_gdbm
12646eval $setvar
12647
12648echo " "
12649echo "Looking for extensions..." >&4
5f80c64f
JH
12650: If we are using the old config.sh, known_extensions may contain
12651: old or inaccurate or duplicate values.
12652known_extensions=''
12653nonxs_extensions=''
12654: We do not use find because it might not be available.
12655: We do not just use MANIFEST because the user may have dropped
12656: some additional extensions into the source tree and expect them
12657: to be built.
7e791ca9
NK
12658
12659: Function to recursively find available extensions, ignoring DynaLoader
12660: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
12661find_extensions='
12662 for xxx in *; do
12663 case "$xxx" in
12664 DynaLoader|dynaload) ;;
12665 *)
12666 if $test -f $xxx/$xxx.xs; then
12667 known_extensions="$known_extensions $1$xxx";
12668 elif $test -f $xxx/Makefile.PL; then
12669 nonxs_extensions="$nonxs_extensions $1$xxx";
12670 else
12671 if $test -d $xxx -a $# -lt 10; then
12672 set $1$xxx/ $*;
12673 cd $xxx;
12674 eval $find_extensions;
12675 cd ..;
12676 shift;
12677 fi
12678 fi
12679 ;;
12680 esac
12681 done'
12682tdir=`pwd`
12683cd $rsrc/ext
efdb23e1
JH
12684set
12685shift
7e791ca9 12686eval $find_extensions
5f80c64f
JH
12687set X $nonxs_extensions
12688shift
12689nonxs_extensions="$*"
12690set X $known_extensions
12691shift
12692known_extensions="$*"
12693cd $tdir
12694
12695: Now see which are supported on this system.
12696avail_ext=''
12697for xxx in $known_extensions ; do
12698 case "$xxx" in
12699 DB_File|db_file)
12700 case "$i_db" in
12701 $define) avail_ext="$avail_ext $xxx" ;;
12702 esac
12703 ;;
12704 GDBM_File|gdbm_fil)
12705 case "$i_gdbm" in
12706 $define) avail_ext="$avail_ext $xxx" ;;
12707 esac
12708 ;;
12709 NDBM_File|ndbm_fil)
12710 case "$i_ndbm" in
12711 $define) avail_ext="$avail_ext $xxx" ;;
12712 esac
12713 ;;
12714 ODBM_File|odbm_fil)
12715 case "${i_dbm}${i_rpcsvcdbm}" in
12716 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12717 esac
12718 ;;
12719 POSIX|posix)
12720 case "$useposix" in
12721 true|define|y) avail_ext="$avail_ext $xxx" ;;
12722 esac
12723 ;;
12724 Opcode|opcode)
12725 case "$useopcode" in
12726 true|define|y) avail_ext="$avail_ext $xxx" ;;
12727 esac
12728 ;;
12729 Socket|socket)
12730 case "$d_socket" in
12731 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12732 esac
12733 ;;
12734 Thread|thread)
12735 case "$usethreads" in
12736 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12737 esac
12738 ;;
12739 IPC/SysV|ipc/sysv)
12740 : XXX Do we need a useipcsysv variable here
12741 case "${d_msg}${d_sem}${d_shm}" in
12742 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12743 esac
12744 ;;
12745 *) avail_ext="$avail_ext $xxx"
12746 ;;
12747 esac
12748done
12749
12750set X $avail_ext
12751shift
12752avail_ext="$*"
12753
12754: Now see which nonxs extensions are supported on this system.
12755: For now assume all are.
12756nonxs_ext=''
12757for xxx in $nonxs_extensions ; do
12758 case "$xxx" in
12759 *) nonxs_ext="$nonxs_ext $xxx"
12760 ;;
12761 esac
12762done
12763
12764set X $nonxs_ext
12765shift
12766nonxs_ext="$*"
12767
12768case $usedl in
12769$define)
12770 $cat <<EOM
12771A number of extensions are supplied with $package. You may choose to
12772compile these extensions for dynamic loading (the default), compile
12773them into the $package executable (static loading), or not include
12774them at all. Answer "none" to include no extensions.
12775Note that DynaLoader is always built and need not be mentioned here.
12776
12777EOM
12778 case "$dynamic_ext" in
12779 '') dflt="$avail_ext" ;;
12780 *) dflt="$dynamic_ext"
12781 # Perhaps we are reusing an old out-of-date config.sh.
12782 case "$hint" in
12783 previous)
12784 if test X"$dynamic_ext" != X"$avail_ext"; then
12785 $cat <<EOM
12786NOTICE: Your previous config.sh list may be incorrect.
12787The extensions now available to you are
12788 ${avail_ext}
12789but the default list from your previous config.sh is
12790 ${dynamic_ext}
12791
12792EOM
12793 fi
12794 ;;
12795 esac
12796 ;;
12797 esac
12798 case "$dflt" in
12799 '') dflt=none;;
12800 esac
12801 rp="What extensions do you wish to load dynamically?"
12802 . ./myread
12803 case "$ans" in
12804 none) dynamic_ext=' ' ;;
12805 *) dynamic_ext="$ans" ;;
12806 esac
12807
12808 case "$static_ext" in
12809 '')
12810 : Exclude those already listed in dynamic linking
12811 dflt=''
12812 for xxx in $avail_ext; do
12813 case " $dynamic_ext " in
12814 *" $xxx "*) ;;
12815 *) dflt="$dflt $xxx" ;;
12816 esac
12817 done
12818 set X $dflt
12819 shift
12820 dflt="$*"
12821 ;;
12822 *) dflt="$static_ext"
12823 ;;
12824 esac
12825
12826 case "$dflt" in
12827 '') dflt=none;;
12828 esac
12829 rp="What extensions do you wish to load statically?"
12830 . ./myread
12831 case "$ans" in
12832 none) static_ext=' ' ;;
12833 *) static_ext="$ans" ;;
12834 esac
12835 ;;
12836*)
12837 $cat <<EOM
12838A number of extensions are supplied with $package. Answer "none"
12839to include no extensions.
12840Note that DynaLoader is always built and need not be mentioned here.
12841
12842EOM
12843 case "$static_ext" in
12844 '') dflt="$avail_ext" ;;
12845 *) dflt="$static_ext"
12846 # Perhaps we are reusing an old out-of-date config.sh.
12847 case "$hint" in
12848 previous)
12849 if test X"$static_ext" != X"$avail_ext"; then
12850 $cat <<EOM
12851NOTICE: Your previous config.sh list may be incorrect.
12852The extensions now available to you are
12853 ${avail_ext}
12854but the default list from your previous config.sh is
12855 ${static_ext}
12856
12857EOM
12858 fi
12859 ;;
12860 esac
12861 ;;
12862 esac
12863 : Exclude those that are not xs extensions
12864 case "$dflt" in
12865 '') dflt=none;;
12866 esac
12867 rp="What extensions do you wish to include?"
12868 . ./myread
12869 case "$ans" in
12870 none) static_ext=' ' ;;
12871 *) static_ext="$ans" ;;
12872 esac
12873 ;;
12874esac
12875
12876set X $dynamic_ext $static_ext $nonxs_ext
12877shift
12878extensions="$*"
12879
12880: Remove build directory name from cppstdin so it can be used from
12881: either the present location or the final installed location.
12882echo " "
12883: Get out of the UU directory to get correct path name.
12884cd ..
12885case "$cppstdin" in
12886`pwd`/cppstdin)
12887 echo "Stripping down cppstdin path name"
12888 cppstdin=cppstdin
12889 ;;
12890esac
12891cd UU
12892
12893: end of configuration questions
12894echo " "
12895echo "End of configuration questions."
12896echo " "
12897
12898: back to where it started
12899if test -d ../UU; then
12900 cd ..
12901fi
12902
12903: configuration may be patched via a 'config.over' file
12904if $test -f config.over; then
12905 echo " "
12906 dflt=y
12907 rp='I see a config.over file. Do you wish to load it?'
12908 . UU/myread
12909 case "$ans" in
12910 n*) echo "OK, I'll ignore it.";;
12911 *) . ./config.over
12912 echo "Configuration override changes have been loaded."
12913 ;;
12914 esac
12915fi
12916
12917: in case they want portability, strip down executable paths
12918case "$d_portable" in
12919"$define")
12920 echo " "
12921 echo "Stripping down executable paths..." >&4
12922 for file in $loclist $trylist; do
12923 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12924 eval $file="\$file"
12925 fi
12926 done
12927 ;;
12928esac
12929
12930: create config.sh file
12931echo " "
12932echo "Creating config.sh..." >&4
12933$spitshell <<EOT >config.sh
12934$startsh
12935#
12936# This file was produced by running the Configure script. It holds all the
12937# definitions figured out by Configure. Should you modify one of these values,
12938# do not forget to propagate your changes by running "Configure -der". You may
12939# instead choose to run each of the .SH files by yourself, or "Configure -S".
12940#
12941
12942# Package name : $package
12943# Source directory : $src
12944# Configuration time: $cf_time
12945# Configured by : $cf_by
12946# Target system : $myuname
12947
12948Author='$Author'
12949Date='$Date'
12950Header='$Header'
12951Id='$Id'
12952Locker='$Locker'
12953Log='$Log'
12954Mcc='$Mcc'
12955RCSfile='$RCSfile'
12956Revision='$Revision'
12957Source='$Source'
12958State='$State'
12959_a='$_a'
12960_exe='$_exe'
12961_o='$_o'
12962afs='$afs'
12963alignbytes='$alignbytes'
12964ansi2knr='$ansi2knr'
12965aphostname='$aphostname'
12966apiversion='$apiversion'
12967ar='$ar'
12968archlib='$archlib'
12969archlibexp='$archlibexp'
12970archname64='$archname64'
12971archname='$archname'
12972archobjs='$archobjs'
12973awk='$awk'
12974baserev='$baserev'
12975bash='$bash'
12976bin='$bin'
12977binexp='$binexp'
12978bison='$bison'
12979byacc='$byacc'
12980byteorder='$byteorder'
12981c='$c'
12982castflags='$castflags'
12983cat='$cat'
12984cc='$cc'
12985cccdlflags='$cccdlflags'
12986ccdlflags='$ccdlflags'
12987ccflags='$ccflags'
ff49bff8 12988ccsymbols='$ccsymbols'
5f80c64f
JH
12989cf_by='$cf_by'
12990cf_email='$cf_email'
12991cf_time='$cf_time'
12992chgrp='$chgrp'
12993chmod='$chmod'
12994chown='$chown'
12995clocktype='$clocktype'
12996comm='$comm'
12997compress='$compress'
12998contains='$contains'
12999cp='$cp'
13000cpio='$cpio'
13001cpp='$cpp'
13002cpp_stuff='$cpp_stuff'
ff49bff8 13003cppccsymbols='$cppccsymbols'
5f80c64f
JH
13004cppflags='$cppflags'
13005cpplast='$cpplast'
13006cppminus='$cppminus'
13007cpprun='$cpprun'
13008cppstdin='$cppstdin'
ff49bff8 13009cppsymbols='$cppsymbols'
68c15b6f 13010crosscompile='$crosscompile'
5f80c64f
JH
13011cryptlib='$cryptlib'
13012csh='$csh'
13013d_Gconvert='$d_Gconvert'
13014d_access='$d_access'
13015d_accessx='$d_accessx'
13016d_alarm='$d_alarm'
13017d_archlib='$d_archlib'
13018d_attribut='$d_attribut'
13019d_bcmp='$d_bcmp'
13020d_bcopy='$d_bcopy'
13021d_bsd='$d_bsd'
13022d_bsdgetpgrp='$d_bsdgetpgrp'
13023d_bsdsetpgrp='$d_bsdsetpgrp'
13024d_bzero='$d_bzero'
13025d_casti32='$d_casti32'
13026d_castneg='$d_castneg'
13027d_charvspr='$d_charvspr'
13028d_chown='$d_chown'
13029d_chroot='$d_chroot'
13030d_chsize='$d_chsize'
13031d_closedir='$d_closedir'
de4597cb 13032d_cmsghdr_s='$d_cmsghdr_s'
5f80c64f
JH
13033d_const='$d_const'
13034d_crypt='$d_crypt'
13035d_csh='$d_csh'
13036d_cuserid='$d_cuserid'
13037d_dbl_dig='$d_dbl_dig'
13038d_dbmclose64='$d_dbmclose64'
13039d_dbminit64='$d_dbminit64'
13040d_delete64='$d_delete64'
13041d_difftime='$d_difftime'
de4597cb 13042d_dirent64_s='$d_dirent64_s'
5f80c64f
JH
13043d_dirnamlen='$d_dirnamlen'
13044d_dlerror='$d_dlerror'
13045d_dlopen='$d_dlopen'
13046d_dlsymun='$d_dlsymun'
13047d_dosuid='$d_dosuid'
13048d_drand48proto='$d_drand48proto'
13049d_dup2='$d_dup2'
13050d_eaccess='$d_eaccess'
13051d_endgrent='$d_endgrent'
13052d_endhent='$d_endhent'
13053d_endnent='$d_endnent'
13054d_endpent='$d_endpent'
13055d_endpwent='$d_endpwent'
13056d_endsent='$d_endsent'
f1066039 13057d_endspent='$d_endspent'
5f80c64f
JH
13058d_eofnblk='$d_eofnblk'
13059d_eunice='$d_eunice'
13060d_fchmod='$d_fchmod'
13061d_fchown='$d_fchown'
13062d_fcntl='$d_fcntl'
13063d_fd_macros='$d_fd_macros'
13064d_fd_set='$d_fd_set'
13065d_fds_bits='$d_fds_bits'
13066d_fetch64='$d_fetch64'
13067d_fgetpos64='$d_fgetpos64'
13068d_fgetpos='$d_fgetpos'
13069d_firstkey64='$d_firstkey64'
13070d_flexfnam='$d_flexfnam'
de4597cb 13071d_flock64_s='$d_flock64_s'
5f80c64f
JH
13072d_flock='$d_flock'
13073d_fopen64='$d_fopen64'
13074d_fork='$d_fork'
13075d_fpathconf='$d_fpathconf'
13076d_freopen64='$d_freopen64'
13077d_fseek64='$d_fseek64'
13078d_fseeko64='$d_fseeko64'
13079d_fseeko='$d_fseeko'
13080d_fsetpos64='$d_fsetpos64'
13081d_fsetpos='$d_fsetpos'
13082d_fstat64='$d_fstat64'
104d25b7
JH
13083d_fstatfs='$d_fstatfs'
13084d_fstatvfs='$d_fstatvfs'
5f80c64f
JH
13085d_ftell64='$d_ftell64'
13086d_ftello64='$d_ftello64'
13087d_ftello='$d_ftello'
13088d_ftime='$d_ftime'
13089d_ftruncate64='$d_ftruncate64'
13090d_getgrent='$d_getgrent'
13091d_getgrps='$d_getgrps'
13092d_gethbyaddr='$d_gethbyaddr'
13093d_gethbyname='$d_gethbyname'
13094d_gethent='$d_gethent'
13095d_gethname='$d_gethname'
13096d_gethostprotos='$d_gethostprotos'
13097d_getlogin='$d_getlogin'
ccc7f9b3 13098d_getmntent='$d_getmntent'
5f80c64f
JH
13099d_getnbyaddr='$d_getnbyaddr'
13100d_getnbyname='$d_getnbyname'
13101d_getnent='$d_getnent'
13102d_getnetprotos='$d_getnetprotos'
13103d_getpbyname='$d_getpbyname'
13104d_getpbynumber='$d_getpbynumber'
13105d_getpent='$d_getpent'
13106d_getpgid='$d_getpgid'
13107d_getpgrp2='$d_getpgrp2'
13108d_getpgrp='$d_getpgrp'
13109d_getppid='$d_getppid'
13110d_getprior='$d_getprior'
13111d_getprotoprotos='$d_getprotoprotos'
13112d_getpwent='$d_getpwent'
13113d_getsbyname='$d_getsbyname'
13114d_getsbyport='$d_getsbyport'
13115d_getsent='$d_getsent'
13116d_getservprotos='$d_getservprotos'
f1066039
JH
13117d_getspent='$d_getspent'
13118d_getspnam='$d_getspnam'
5f80c64f
JH
13119d_gettimeod='$d_gettimeod'
13120d_gnulibc='$d_gnulibc'
13121d_grpasswd='$d_grpasswd'
ccc7f9b3 13122d_hasmntopt='$d_hasmntopt'
5f80c64f
JH
13123d_htonl='$d_htonl'
13124d_index='$d_index'
13125d_inetaton='$d_inetaton'
2000072c 13126d_ino64_t='$d_ino64_t'
5f80c64f 13127d_int64t='$d_int64t'
de4597cb 13128d_iovec_s='$d_iovec_s'
5f80c64f
JH
13129d_isascii='$d_isascii'
13130d_killpg='$d_killpg'
13131d_lchown='$d_lchown'
13132d_link='$d_link'
2000072c 13133d_llseek='$d_llseek'
5f80c64f
JH
13134d_locconv='$d_locconv'
13135d_lockf64='$d_lockf64'
13136d_lockf='$d_lockf'
13137d_longdbl='$d_longdbl'
13138d_longlong='$d_longlong'
13139d_lseek64='$d_lseek64'
13140d_lstat64='$d_lstat64'
13141d_lstat='$d_lstat'
ff49bff8 13142d_madvise='$d_madvise'
5f80c64f
JH
13143d_mblen='$d_mblen'
13144d_mbstowcs='$d_mbstowcs'
13145d_mbtowc='$d_mbtowc'
0f27ced1 13146d_memchr='$d_memchr'
5f80c64f
JH
13147d_memcmp='$d_memcmp'
13148d_memcpy='$d_memcpy'
13149d_memmove='$d_memmove'
13150d_memset='$d_memset'
13151d_mkdir='$d_mkdir'
13152d_mkfifo='$d_mkfifo'
13153d_mktime='$d_mktime'
ff49bff8
JH
13154d_mmap='$d_mmap'
13155d_mprotect='$d_mprotect'
5f80c64f 13156d_msg='$d_msg'
de4597cb
JH
13157d_msg_ctrunc='$d_msg_ctrunc'
13158d_msg_dontroute='$d_msg_dontroute'
13159d_msg_oob='$d_msg_oob'
13160d_msg_peek='$d_msg_peek'
13161d_msg_proxy='$d_msg_proxy'
5f80c64f
JH
13162d_msgctl='$d_msgctl'
13163d_msgget='$d_msgget'
de4597cb 13164d_msghdr_s='$d_msghdr_s'
5f80c64f
JH
13165d_msgrcv='$d_msgrcv'
13166d_msgsnd='$d_msgsnd'
ff49bff8
JH
13167d_msync='$d_msync'
13168d_munmap='$d_munmap'
5f80c64f
JH
13169d_mymalloc='$d_mymalloc'
13170d_nextkey64='$d_nextkey64'
13171d_nice='$d_nice'
2000072c
JH
13172d_off64_t='$d_off64_t'
13173d_offset_t='$d_offset_t'
ef4af2be 13174d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
5f80c64f
JH
13175d_oldpthreads='$d_oldpthreads'
13176d_oldsock='$d_oldsock'
13177d_open3='$d_open3'
13178d_open64='$d_open64'
13179d_opendir64='$d_opendir64'
13180d_pathconf='$d_pathconf'
13181d_pause='$d_pause'
13182d_phostname='$d_phostname'
13183d_pipe='$d_pipe'
13184d_poll='$d_poll'
13185d_portable='$d_portable'
13186d_pthread_yield='$d_pthread_yield'
5f80c64f
JH
13187d_pwage='$d_pwage'
13188d_pwchange='$d_pwchange'
13189d_pwclass='$d_pwclass'
13190d_pwcomment='$d_pwcomment'
13191d_pwexpire='$d_pwexpire'
13192d_pwgecos='$d_pwgecos'
13193d_pwpasswd='$d_pwpasswd'
13194d_pwquota='$d_pwquota'
13195d_readdir64='$d_readdir64'
13196d_readdir='$d_readdir'
13197d_readlink='$d_readlink'
de4597cb
JH
13198d_readv='$d_readv'
13199d_recvmsg='$d_recvmsg'
5f80c64f
JH
13200d_rename='$d_rename'
13201d_rewinddir='$d_rewinddir'
13202d_rmdir='$d_rmdir'
13203d_safebcpy='$d_safebcpy'
13204d_safemcpy='$d_safemcpy'
13205d_sanemcmp='$d_sanemcmp'
13206d_sched_yield='$d_sched_yield'
de4597cb 13207d_scm_rights='$d_scm_rights'
5f80c64f
JH
13208d_seekdir64='$d_seekdir64'
13209d_seekdir='$d_seekdir'
13210d_select='$d_select'
13211d_sem='$d_sem'
13212d_semctl='$d_semctl'
13213d_semctl_semid_ds='$d_semctl_semid_ds'
13214d_semctl_semun='$d_semctl_semun'
13215d_semget='$d_semget'
13216d_semop='$d_semop'
de4597cb 13217d_sendmsg='$d_sendmsg'
5f80c64f
JH
13218d_setegid='$d_setegid'
13219d_seteuid='$d_seteuid'
13220d_setgrent='$d_setgrent'
13221d_setgrps='$d_setgrps'
13222d_sethent='$d_sethent'
13223d_setlinebuf='$d_setlinebuf'
13224d_setlocale='$d_setlocale'
13225d_setnent='$d_setnent'
13226d_setpent='$d_setpent'
13227d_setpgid='$d_setpgid'
13228d_setpgrp2='$d_setpgrp2'
13229d_setpgrp='$d_setpgrp'
13230d_setprior='$d_setprior'
13231d_setpwent='$d_setpwent'
13232d_setregid='$d_setregid'
13233d_setresgid='$d_setresgid'
13234d_setresuid='$d_setresuid'
13235d_setreuid='$d_setreuid'
13236d_setrgid='$d_setrgid'
13237d_setruid='$d_setruid'
13238d_setsent='$d_setsent'
13239d_setsid='$d_setsid'
f1066039 13240d_setspent='$d_setspent'
5f80c64f
JH
13241d_setvbuf='$d_setvbuf'
13242d_sfio='$d_sfio'
13243d_shm='$d_shm'
13244d_shmat='$d_shmat'
13245d_shmatprototype='$d_shmatprototype'
13246d_shmctl='$d_shmctl'
13247d_shmdt='$d_shmdt'
13248d_shmget='$d_shmget'
13249d_sigaction='$d_sigaction'
13250d_sigsetjmp='$d_sigsetjmp'
13251d_socket='$d_socket'
13252d_sockpair='$d_sockpair'
13253d_stat64='$d_stat64'
13254d_statblks='$d_statblks'
104d25b7
JH
13255d_statfs='$d_statfs'
13256d_statfsflags='$d_statfsflags'
13257d_statvfs='$d_statvfs'
5f80c64f
JH
13258d_stdio_cnt_lval='$d_stdio_cnt_lval'
13259d_stdio_ptr_lval='$d_stdio_ptr_lval'
ed39a0f2 13260d_stdio_stream_array='$d_stdio_stream_array'
5f80c64f
JH
13261d_stdiobase='$d_stdiobase'
13262d_stdstdio='$d_stdstdio'
13263d_store64='$d_store64'
13264d_strchr='$d_strchr'
13265d_strcoll='$d_strcoll'
13266d_strctcpy='$d_strctcpy'
13267d_strerrm='$d_strerrm'
13268d_strerror='$d_strerror'
13269d_strtod='$d_strtod'
13270d_strtol='$d_strtol'
13271d_strtoul='$d_strtoul'
13272d_strxfrm='$d_strxfrm'
13273d_suidsafe='$d_suidsafe'
13274d_symlink='$d_symlink'
13275d_syscall='$d_syscall'
13276d_sysconf='$d_sysconf'
13277d_sysernlst='$d_sysernlst'
13278d_syserrlst='$d_syserrlst'
13279d_system='$d_system'
13280d_tcgetpgrp='$d_tcgetpgrp'
13281d_tcsetpgrp='$d_tcsetpgrp'
13282d_telldir64='$d_telldir64'
13283d_telldir='$d_telldir'
cb86ce0e 13284d_telldirproto='$d_telldirproto'
5f80c64f
JH
13285d_time='$d_time'
13286d_times='$d_times'
13287d_tmpfile64='$d_tmpfile64'
13288d_truncate64='$d_truncate64'
13289d_truncate='$d_truncate'
13290d_tzname='$d_tzname'
13291d_umask='$d_umask'
13292d_uname='$d_uname'
13293d_union_semun='$d_union_semun'
13294d_vfork='$d_vfork'
13295d_void_closedir='$d_void_closedir'
13296d_voidsig='$d_voidsig'
13297d_voidtty='$d_voidtty'
13298d_volatile='$d_volatile'
13299d_vprintf='$d_vprintf'
13300d_wait4='$d_wait4'
13301d_waitpid='$d_waitpid'
13302d_wcstombs='$d_wcstombs'
13303d_wctomb='$d_wctomb'
de4597cb 13304d_writev='$d_writev'
5f80c64f
JH
13305d_xenix='$d_xenix'
13306date='$date'
13307db_hashtype='$db_hashtype'
13308db_prefixtype='$db_prefixtype'
13309defvoidused='$defvoidused'
13310direntrytype='$direntrytype'
13311dlext='$dlext'
13312dlsrc='$dlsrc'
13313doublesize='$doublesize'
13314drand01='$drand01'
13315dynamic_ext='$dynamic_ext'
13316eagain='$eagain'
13317ebcdic='$ebcdic'
13318echo='$echo'
13319egrep='$egrep'
13320emacs='$emacs'
13321eunicefix='$eunicefix'
13322exe_ext='$exe_ext'
13323expr='$expr'
13324extensions='$extensions'
66fe083f 13325fflushNULL='$fflushNULL'
767df6a1 13326fflushall='$fflushall'
5f80c64f
JH
13327find='$find'
13328firstmakefile='$firstmakefile'
13329flex='$flex'
13330fpostype='$fpostype'
13331freetype='$freetype'
ccc7f9b3 13332full_ar='$full_ar'
5f80c64f
JH
13333full_csh='$full_csh'
13334full_sed='$full_sed'
13335gccversion='$gccversion'
13336gidtype='$gidtype'
13337glibpth='$glibpth'
13338grep='$grep'
13339groupcat='$groupcat'
13340groupstype='$groupstype'
13341gzip='$gzip'
13342h_fcntl='$h_fcntl'
13343h_sysfile='$h_sysfile'
13344hint='$hint'
13345hostcat='$hostcat'
13346huge='$huge'
13347i_arpainet='$i_arpainet'
13348i_bsdioctl='$i_bsdioctl'
13349i_db='$i_db'
13350i_dbm='$i_dbm'
13351i_dirent='$i_dirent'
13352i_dld='$i_dld'
13353i_dlfcn='$i_dlfcn'
13354i_fcntl='$i_fcntl'
13355i_float='$i_float'
13356i_gdbm='$i_gdbm'
13357i_grp='$i_grp'
13358i_inttypes='$i_inttypes'
13359i_limits='$i_limits'
13360i_locale='$i_locale'
7f3d1cf1 13361i_machcthr='$i_machcthr'
5f80c64f
JH
13362i_malloc='$i_malloc'
13363i_math='$i_math'
13364i_memory='$i_memory'
e7fb4fcc 13365i_mntent='$i_mntent'
5f80c64f
JH
13366i_ndbm='$i_ndbm'
13367i_netdb='$i_netdb'
13368i_neterrno='$i_neterrno'
9cc6feab 13369i_netinettcp='$i_netinettcp'
5f80c64f 13370i_niin='$i_niin'
5b34fd99 13371i_poll='$i_poll'
c4747d3e 13372i_pthread='$i_pthread'
5f80c64f
JH
13373i_pwd='$i_pwd'
13374i_rpcsvcdbm='$i_rpcsvcdbm'
13375i_sfio='$i_sfio'
13376i_sgtty='$i_sgtty'
f1066039 13377i_shadow='$i_shadow'
86959918 13378i_socks='$i_socks'
5f80c64f
JH
13379i_stdarg='$i_stdarg'
13380i_stddef='$i_stddef'
13381i_stdlib='$i_stdlib'
13382i_string='$i_string'
13383i_sysaccess='$i_sysaccess'
13384i_sysdir='$i_sysdir'
13385i_sysfile='$i_sysfile'
13386i_sysfilio='$i_sysfilio'
13387i_sysin='$i_sysin'
13388i_sysioctl='$i_sysioctl'
ff49bff8 13389i_sysmman='$i_sysmman'
104d25b7 13390i_sysmount='$i_sysmount'
5f80c64f
JH
13391i_sysndir='$i_sysndir'
13392i_sysparam='$i_sysparam'
13393i_sysresrc='$i_sysresrc'
13394i_syssecrt='$i_syssecrt'
13395i_sysselct='$i_sysselct'
13396i_syssockio='$i_syssockio'
13397i_sysstat='$i_sysstat'
104d25b7 13398i_sysstatvfs='$i_sysstatvfs'
5f80c64f
JH
13399i_systime='$i_systime'
13400i_systimek='$i_systimek'
13401i_systimes='$i_systimes'
13402i_systypes='$i_systypes'
de4597cb 13403i_sysuio='$i_sysuio'
5f80c64f
JH
13404i_sysun='$i_sysun'
13405i_syswait='$i_syswait'
13406i_termio='$i_termio'
13407i_termios='$i_termios'
13408i_time='$i_time'
13409i_unistd='$i_unistd'
13410i_utime='$i_utime'
13411i_values='$i_values'
13412i_varargs='$i_varargs'
13413i_varhdr='$i_varhdr'
13414i_vfork='$i_vfork'
13415ignore_versioned_solibs='$ignore_versioned_solibs'
13416incpath='$incpath'
13417inews='$inews'
13418installarchlib='$installarchlib'
13419installbin='$installbin'
13420installman1dir='$installman1dir'
13421installman3dir='$installman3dir'
13422installprivlib='$installprivlib'
13423installscript='$installscript'
13424installsitearch='$installsitearch'
13425installsitelib='$installsitelib'
104d25b7 13426installusrbinperl='$installusrbinperl'
5f80c64f
JH
13427intsize='$intsize'
13428known_extensions='$known_extensions'
13429ksh='$ksh'
13430large='$large'
13431ld='$ld'
13432lddlflags='$lddlflags'
13433ldflags='$ldflags'
13434less='$less'
13435lib_ext='$lib_ext'
13436libc='$libc'
13437libperl='$libperl'
13438libpth='$libpth'
13439libs='$libs'
13440libswanted='$libswanted'
13441line='$line'
13442lint='$lint'
13443lkflags='$lkflags'
13444ln='$ln'
13445lns='$lns'
13446locincpth='$locincpth'
13447loclibpth='$loclibpth'
13448longdblsize='$longdblsize'
13449longlongsize='$longlongsize'
13450longsize='$longsize'
13451lp='$lp'
13452lpr='$lpr'
13453ls='$ls'
13454lseeksize='$lseeksize'
13455lseektype='$lseektype'
13456mail='$mail'
13457mailx='$mailx'
13458make='$make'
13459make_set_make='$make_set_make'
13460mallocobj='$mallocobj'
13461mallocsrc='$mallocsrc'
13462malloctype='$malloctype'
13463man1dir='$man1dir'
13464man1direxp='$man1direxp'
13465man1ext='$man1ext'
13466man3dir='$man3dir'
13467man3direxp='$man3direxp'
13468man3ext='$man3ext'
13469medium='$medium'
13470mips='$mips'
13471mips_type='$mips_type'
13472mkdir='$mkdir'
ff49bff8 13473mmaptype='$mmaptype'
5f80c64f
JH
13474models='$models'
13475modetype='$modetype'
13476more='$more'
68c15b6f 13477multiarch='$multiarch'
5f80c64f
JH
13478mv='$mv'
13479myarchname='$myarchname'
13480mydomain='$mydomain'
13481myhostname='$myhostname'
13482myuname='$myuname'
13483n='$n'
13484netdb_hlen_type='$netdb_hlen_type'
13485netdb_host_type='$netdb_host_type'
13486netdb_name_type='$netdb_name_type'
13487netdb_net_type='$netdb_net_type'
13488nm='$nm'
13489nm_opt='$nm_opt'
13490nm_so_opt='$nm_so_opt'
13491nonxs_ext='$nonxs_ext'
13492nroff='$nroff'
13493o_nonblock='$o_nonblock'
13494obj_ext='$obj_ext'
ef4af2be 13495old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f
JH
13496optimize='$optimize'
13497orderlib='$orderlib'
13498osname='$osname'
13499osvers='$osvers'
13500package='$package'
13501pager='$pager'
13502passcat='$passcat'
13503patchlevel='$patchlevel'
13504path_sep='$path_sep'
13505perl='$perl'
13506perladmin='$perladmin'
13507perlpath='$perlpath'
13508pg='$pg'
13509phostname='$phostname'
13510pidtype='$pidtype'
13511plibpth='$plibpth'
13512pmake='$pmake'
13513pr='$pr'
13514prefix='$prefix'
13515prefixexp='$prefixexp'
13516privlib='$privlib'
13517privlibexp='$privlibexp'
13518prototype='$prototype'
13519ptrsize='$ptrsize'
13520randbits='$randbits'
13521randfunc='$randfunc'
13522randseedtype='$randseedtype'
13523ranlib='$ranlib'
13524rd_nodata='$rd_nodata'
13525rm='$rm'
13526rmail='$rmail'
13527runnm='$runnm'
13528sched_yield='$sched_yield'
13529scriptdir='$scriptdir'
13530scriptdirexp='$scriptdirexp'
13531sed='$sed'
13532seedfunc='$seedfunc'
13533selectminbits='$selectminbits'
13534selecttype='$selecttype'
13535sendmail='$sendmail'
13536sh='$sh'
13537shar='$shar'
13538sharpbang='$sharpbang'
13539shmattype='$shmattype'
13540shortsize='$shortsize'
13541shrpenv='$shrpenv'
13542shsharp='$shsharp'
af4c28eb 13543sig_count='$sig_count'
5f80c64f
JH
13544sig_name='$sig_name'
13545sig_name_init='$sig_name_init'
13546sig_num='$sig_num'
824a2ba3 13547sig_num_init='$sig_num_init'
5f80c64f
JH
13548signal_t='$signal_t'
13549sitearch='$sitearch'
13550sitearchexp='$sitearchexp'
13551sitelib='$sitelib'
13552sitelibexp='$sitelibexp'
13553sizetype='$sizetype'
13554sleep='$sleep'
13555smail='$smail'
13556small='$small'
13557so='$so'
13558sockethdr='$sockethdr'
13559socketlib='$socketlib'
13560sort='$sort'
13561spackage='$spackage'
13562spitshell='$spitshell'
13563split='$split'
13564src='$src'
13565ssizetype='$ssizetype'
13566startperl='$startperl'
13567startsh='$startsh'
13568static_ext='$static_ext'
13569stdchar='$stdchar'
13570stdio_base='$stdio_base'
13571stdio_bufsiz='$stdio_bufsiz'
13572stdio_cnt='$stdio_cnt'
13573stdio_filbuf='$stdio_filbuf'
13574stdio_ptr='$stdio_ptr'
767df6a1 13575stdio_stream_array='$stdio_stream_array'
5f80c64f
JH
13576strings='$strings'
13577submit='$submit'
13578subversion='$subversion'
13579sysman='$sysman'
13580tail='$tail'
13581tar='$tar'
13582tbl='$tbl'
13583tee='$tee'
13584test='$test'
13585timeincl='$timeincl'
13586timetype='$timetype'
13587touch='$touch'
13588tr='$tr'
13589trnl='$trnl'
13590troff='$troff'
13591uidtype='$uidtype'
13592uname='$uname'
13593uniq='$uniq'
13594use64bits='$use64bits'
13595usedl='$usedl'
13596usemultiplicity='$usemultiplicity'
13597usemymalloc='$usemymalloc'
13598usenm='$usenm'
13599useopcode='$useopcode'
13600useperlio='$useperlio'
13601useposix='$useposix'
13602usesfio='$usesfio'
13603useshrplib='$useshrplib'
29209bc5 13604usesocks='$usesocks'
5f80c64f
JH
13605usethreads='$usethreads'
13606usevfork='$usevfork'
13607usrinc='$usrinc'
13608uuname='$uuname'
13609version='$version'
13610vi='$vi'
13611voidflags='$voidflags'
13612xlibpth='$xlibpth'
13613zcat='$zcat'
13614zip='$zip'
13615EOT
13616
13617: Add in command line options if available
13618$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13619
13620: add special variables
13621$test -f $src/patchlevel.h && \
d00b958f 13622awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 13623echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
13624
13625: propagate old symbols
13626if $test -f UU/config.sh; then
13627 <UU/config.sh sort | uniq >UU/oldconfig.sh
13628 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13629 sort | uniq -u >UU/oldsyms
13630 set X `cat UU/oldsyms`
13631 shift
13632 case $# in
13633 0) ;;
13634 *)
13635 cat <<EOM
13636Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13637EOM
13638 echo "# Variables propagated from previous config.sh file." >>config.sh
13639 for sym in `cat UU/oldsyms`; do
13640 echo " Propagating $hint variable "'$'"$sym..."
13641 eval 'tmp="$'"${sym}"'"'
13642 echo "$tmp" | \
13643 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13644 done
13645 ;;
13646 esac
13647fi
13648
13649: Finish up by extracting the .SH files
13650case "$alldone" in
13651exit)
13652 $rm -rf UU
13653 echo "Done."
13654 exit 0
13655 ;;
13656cont)
13657 ;;
13658'')
13659 dflt=''
13660 nostick=true
13661 $cat <<EOM
13662
13663If you'd like to make any changes to the config.sh file before I begin
13664to configure things, do it as a shell escape now (e.g. !vi config.sh).
13665
13666EOM
13667 rp="Press return or use a shell escape to edit config.sh:"
13668 . UU/myread
13669 nostick=''
13670 case "$ans" in
13671 '') ;;
13672 *) : in case they cannot read
13673 sh 1>&4 -c "$ans";;
13674 esac
13675 ;;
13676esac
13677
13678: if this fails, just run all the .SH files by hand
13679. ./config.sh
13680
13681echo " "
13682exec 1>&4
13683. ./UU/extract
13684
13685if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13686 dflt=y
13687 case "$silent" in
13688 true) ;;
13689 *)
13690 $cat <<EOM
13691
13692Now you need to generate make dependencies by running "$make depend".
13693You might prefer to run it in background: "$make depend > makedepend.out &"
13694It can take a while, so you might not want to run it right now.
13695
13696EOM
13697 ;;
13698 esac
13699 rp="Run $make depend now?"
13700 . UU/myread
13701 case "$ans" in
13702 y*)
13703 $make depend && echo "Now you must run a $make."
13704 ;;
13705 *)
13706 echo "You must run '$make depend' then '$make'."
13707 ;;
13708 esac
13709elif test -f [Mm]akefile; then
13710 echo " "
13711 echo "Now you must run a $make."
13712else
13713 echo "Done."
13714fi
13715
13716if $test -f Policy.sh; then
13717 $cat <<EOM
13718
13719If you compile $package on a different machine or from a different object
13720directory, copy the Policy.sh file from this object directory to the
13721new one before you run Configure -- this will help you with most of
13722the policy defaults.
13723
13724EOM
13725fi
13726if $test -f config.msg; then
13727 echo "Hmm. I also noted the following information while running:"
13728 echo " "
13729 $cat config.msg >&4
13730 $rm -f config.msg
13731fi
13732$rm -f kit*isdone ark*isdone
13733$rm -rf UU
13734
13735: End of Configure
13736