This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
flip release & version in win32_uname()
[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#
8f1f23e8 23# Generated on Mon Mar 15 18:36:13 EET 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
AD
110fi
111case "$inksh/$needksh" in
112/[a-z]*)
c4f23d77 113 ENV=''
dfe9444c
AD
114 changesh=true
115 reason="$needksh"
116 ;;
117esac
118case "$inksh/$avoidksh" in
119true/[a-z]*)
120 changesh=true
121 reason="$avoidksh"
122 ;;
123esac
124case "$inksh/$needksh-$avoidksh-" in
125true/--)
a0d0e21e
LW
126 cat <<EOM
127(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 128mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 129EOM
dfe9444c
AD
130 ;;
131esac
132case "$changesh" in
133true)
134 echo "(Feeding myself to $newsh $reason.)"
135 case "$0" in
136 Configure|*/Configure) exec $newsh $0 "$@";;
137 *) exec $newsh Configure "$@";;
138 esac
139 ;;
140esac
2304df62 141
bfb7748a
AD
142: if needed set CDPATH to a harmless value that is not chatty
143: avoid bash 2.02 problems with empty CDPATH.
144case "$CDPATH" in
145'') ;;
146*) case "$SHELL" in
147 *bash*) CDPATH='.' ;;
148 *) CDPATH='' ;;
149 esac
150 ;;
151esac
2304df62
AD
152: Configure runs within the UU subdirectory
153test -d UU || mkdir UU
8e07c86e 154cd UU && rm -f ./*
2304df62 155
ff49bff8
JH
156ccsymbols=''
157cppccsymbols=''
158cppsymbols=''
a0d0e21e 159dynamic_ext=''
2304df62 160extensions=''
a0d0e21e 161known_extensions=''
4318d5a0 162nonxs_ext=''
bfb7748a 163static_ext=''
8ff267be 164useopcode=''
a0d0e21e 165useposix=''
ecfc5424 166d_bsd=''
40a7a20a 167d_eunice=''
2304df62
AD
168d_xenix=''
169eunicefix=''
170Mcc=''
dfe9444c 171ar=''
2304df62
AD
172awk=''
173bash=''
174bison=''
175byacc=''
176cat=''
177chgrp=''
178chmod=''
179chown=''
ecfc5424 180comm=''
2304df62
AD
181compress=''
182cp=''
183cpio=''
184cpp=''
185csh=''
186date=''
187echo=''
188egrep=''
189emacs=''
190expr=''
191find=''
192flex=''
2304df62 193grep=''
8ff267be 194gzip=''
2304df62
AD
195inews=''
196ksh=''
197less=''
198line=''
199lint=''
200ln=''
201lp=''
202lpr=''
203ls=''
204mail=''
205mailx=''
dfe9444c 206make=''
2304df62
AD
207mkdir=''
208more=''
209mv=''
693762b4 210nm=''
2304df62
AD
211nroff=''
212perl=''
213pg=''
214pmake=''
215pr=''
216rm=''
217rmail=''
218sed=''
219sendmail=''
2304df62
AD
220shar=''
221sleep=''
222smail=''
223sort=''
224submit=''
225tail=''
226tar=''
227tbl=''
693762b4 228tee=''
2304df62
AD
229test=''
230touch=''
231tr=''
232troff=''
233uname=''
234uniq=''
235uuname=''
236vi=''
237zcat=''
8ff267be 238zip=''
ccc7f9b3 239full_ar=''
1aef975c 240full_sed=''
a0d0e21e 241libswanted=''
2304df62
AD
242hint=''
243myuname=''
85e6fe83
LW
244osname=''
245osvers=''
2304df62
AD
246Author=''
247Date=''
248Header=''
249Id=''
250Locker=''
251Log=''
252RCSfile=''
253Revision=''
254Source=''
255State=''
dfe9444c
AD
256_a=''
257_exe=''
258_o=''
4633a7c4
LW
259archobjs=''
260exe_ext=''
261firstmakefile=''
262lib_ext=''
263obj_ext=''
264path_sep=''
2304df62 265afs=''
a0d0e21e 266alignbytes=''
c4f23d77 267ansi2knr=''
a0d0e21e
LW
268archlib=''
269archlibexp=''
a0d0e21e
LW
270d_archlib=''
271installarchlib=''
40000a8c
AD
272archname=''
273myarchname=''
ecfc5424 274baserev=''
2304df62
AD
275bin=''
276binexp=''
277installbin=''
278byteorder=''
279cc=''
280gccversion=''
281ccflags=''
282cppflags=''
283ldflags=''
284lkflags=''
8e07c86e 285locincpth=''
2304df62 286optimize=''
8e07c86e 287cf_email=''
2304df62
AD
288cf_by=''
289cf_time=''
290contains=''
a0d0e21e 291cpp_stuff=''
2304df62
AD
292cpplast=''
293cppminus=''
294cpprun=''
295cppstdin=''
68c15b6f 296crosscompile=''
2304df62 297d_access=''
5ff3f7a4 298d_accessx=''
a0d0e21e 299d_alarm=''
ecfc5424 300d_attribut=''
2304df62
AD
301d_bcmp=''
302d_bcopy=''
303d_bzero=''
304d_casti32=''
305castflags=''
306d_castneg=''
a0d0e21e
LW
307d_chown=''
308d_chroot=''
2304df62 309d_chsize=''
a0d0e21e
LW
310d_closedir=''
311d_void_closedir=''
2304df62
AD
312d_const=''
313cryptlib=''
314d_crypt=''
315d_csh=''
1aef975c 316full_csh=''
a0d0e21e
LW
317d_cuserid=''
318d_dbl_dig=''
319d_difftime=''
320d_dlerror=''
321d_dlopen=''
322d_dlsymun=''
2304df62 323d_dosuid=''
a0d0e21e 324d_suidsafe=''
85ab1d1d 325d_drand48proto=''
2304df62 326d_dup2=''
5ff3f7a4
GS
327d_eaccess=''
328d_endgrent=''
e5c9fcd0
AD
329d_endhent=''
330d_endnent=''
331d_endpent=''
5ff3f7a4 332d_endpwent=''
e5c9fcd0 333d_endsent=''
2304df62
AD
334d_fchmod=''
335d_fchown=''
336d_fcntl=''
a0d0e21e
LW
337d_fd_macros=''
338d_fd_set=''
339d_fds_bits=''
340d_fgetpos=''
2304df62
AD
341d_flexfnam=''
342d_flock=''
a0d0e21e 343d_fork=''
5ff3f7a4 344d_fseeko=''
a0d0e21e 345d_fsetpos=''
5ff3f7a4 346d_ftello=''
5f05dabc 347d_ftime=''
348d_gettimeod=''
a0d0e21e 349d_Gconvert=''
5ff3f7a4 350d_getgrent=''
2304df62 351d_getgrps=''
4599a1de 352d_gethbyaddr=''
4599a1de 353d_gethbyname=''
dfe9444c 354d_gethent=''
2304df62
AD
355aphostname=''
356d_gethname=''
357d_phostname=''
358d_uname=''
dc45a647 359d_gethostprotos=''
a0d0e21e 360d_getlogin=''
ccc7f9b3 361d_getmntent=''
dfe9444c 362d_getnbyaddr=''
693762b4 363d_getnbyname=''
e5c9fcd0 364d_getnent=''
dc45a647 365d_getnetprotos=''
e5c9fcd0 366d_getpent=''
2afac517 367d_getpgid=''
2304df62 368d_getpgrp2=''
2afac517 369d_bsdgetpgrp=''
2304df62 370d_getpgrp=''
a0d0e21e 371d_getppid=''
2304df62 372d_getprior=''
693762b4
AD
373d_getpbyname=''
374d_getpbynumber=''
dc45a647 375d_getprotoprotos=''
5ff3f7a4 376d_getpwent=''
e5c9fcd0 377d_getsent=''
dc45a647 378d_getservprotos=''
693762b4
AD
379d_getsbyname=''
380d_getsbyport=''
a4f3eea9 381d_gnulibc=''
ccc7f9b3 382d_hasmntopt=''
2304df62 383d_htonl=''
7e1af8bc 384d_inetaton=''
2304df62
AD
385d_isascii=''
386d_killpg=''
dd64f1c3 387d_lchown=''
2304df62 388d_link=''
a0d0e21e
LW
389d_locconv=''
390d_lockf=''
e5c9fcd0
AD
391d_longdbl=''
392longdblsize=''
dc45a647
MB
393d_longlong=''
394longlongsize=''
2304df62 395d_lstat=''
ff49bff8 396d_madvise=''
a0d0e21e
LW
397d_mblen=''
398d_mbstowcs=''
399d_mbtowc=''
2304df62
AD
400d_memcmp=''
401d_memcpy=''
402d_memmove=''
403d_memset=''
404d_mkdir=''
a0d0e21e
LW
405d_mkfifo=''
406d_mktime=''
ff49bff8
JH
407d_mmap=''
408mmaptype=''
409d_mprotect=''
2304df62
AD
410d_msg=''
411d_msgctl=''
412d_msgget=''
413d_msgrcv=''
414d_msgsnd=''
ff49bff8
JH
415d_msync=''
416d_munmap=''
a0d0e21e 417d_nice=''
2304df62 418d_open3=''
a0d0e21e
LW
419d_fpathconf=''
420d_pathconf=''
421d_pause=''
422d_pipe=''
8e07c86e 423d_poll=''
2304df62 424d_portable=''
ef4af2be
JH
425d_old_pthread_create_joinable=''
426old_pthread_create_joinable=''
dfe9444c
AD
427d_pthread_yield=''
428d_sched_yield=''
1cfa4ec7 429sched_yield=''
2304df62 430d_readdir=''
85e6fe83
LW
431d_rewinddir=''
432d_seekdir=''
433d_telldir=''
a0d0e21e 434d_readlink=''
de4597cb 435d_readv=''
2304df62
AD
436d_rename=''
437d_rmdir=''
438d_safebcpy=''
439d_safemcpy=''
36477c24 440d_sanemcmp=''
2304df62
AD
441d_select=''
442d_sem=''
443d_semctl=''
444d_semget=''
445d_semop=''
446d_setegid=''
447d_seteuid=''
5ff3f7a4 448d_setgrent=''
dfe9444c 449d_setgrps=''
693762b4 450d_sethent=''
a0d0e21e 451d_setlinebuf=''
2304df62 452d_setlocale=''
e5c9fcd0
AD
453d_setnent=''
454d_setpent=''
2304df62
AD
455d_setpgid=''
456d_setpgrp2=''
2afac517 457d_bsdsetpgrp=''
2304df62
AD
458d_setpgrp=''
459d_setprior=''
5ff3f7a4 460d_setpwent=''
2304df62
AD
461d_setregid=''
462d_setresgid=''
463d_setresuid=''
464d_setreuid=''
465d_setrgid=''
466d_setruid=''
e5c9fcd0 467d_setsent=''
2304df62 468d_setsid=''
e5c9fcd0 469d_setvbuf=''
760ac839 470d_sfio=''
8ff267be 471usesfio=''
2304df62
AD
472d_shm=''
473d_shmat=''
a0d0e21e
LW
474d_shmatprototype=''
475shmattype=''
2304df62
AD
476d_shmctl=''
477d_shmdt=''
478d_shmget=''
2c7991dc 479d_sigaction=''
8ff267be 480d_sigsetjmp=''
de4597cb
JH
481d_cmsghdr_s=''
482d_msg_ctrunc=''
483d_msg_dontroute=''
484d_msg_oob=''
485d_msg_peek=''
486d_msg_proxy=''
487d_msghdr_s=''
2304df62 488d_oldsock=''
de4597cb
JH
489d_recvmsg=''
490d_scm_rights=''
491d_sendmsg=''
2304df62
AD
492d_socket=''
493d_sockpair=''
494sockethdr=''
495socketlib=''
496d_statblks=''
104d25b7
JH
497d_fstatfs=''
498d_statfs=''
499d_statfsflags=''
500d_fstatvfs=''
501d_statvfs=''
c2960299
AD
502d_stdio_cnt_lval=''
503d_stdio_ptr_lval=''
16d20bd9 504d_stdiobase=''
2304df62 505d_stdstdio=''
16d20bd9
AD
506stdio_base=''
507stdio_bufsiz=''
508stdio_cnt=''
dfe9444c 509stdio_filbuf=''
16d20bd9 510stdio_ptr=''
2304df62
AD
511d_index=''
512d_strchr=''
a0d0e21e 513d_strcoll=''
2304df62
AD
514d_strctcpy=''
515d_strerrm=''
516d_strerror=''
517d_sysernlst=''
518d_syserrlst=''
a89d8a78
DH
519d_strtod=''
520d_strtol=''
521d_strtoul=''
a0d0e21e 522d_strxfrm=''
2304df62
AD
523d_symlink=''
524d_syscall=''
a0d0e21e 525d_sysconf=''
2304df62 526d_system=''
a0d0e21e
LW
527d_tcgetpgrp=''
528d_tcsetpgrp=''
cb86ce0e 529d_telldirproto=''
85e6fe83
LW
530d_time=''
531timetype=''
2304df62
AD
532clocktype=''
533d_times=''
534d_truncate=''
a0d0e21e
LW
535d_tzname=''
536d_umask=''
bd89102f
AD
537d_semctl_semid_ds=''
538d_semctl_semun=''
539d_union_semun=''
2304df62 540d_vfork=''
a0d0e21e 541usevfork=''
2304df62
AD
542d_voidsig=''
543signal_t=''
544d_volatile=''
545d_charvspr=''
546d_vprintf=''
547d_wait4=''
548d_waitpid=''
a0d0e21e
LW
549d_wcstombs=''
550d_wctomb=''
de4597cb 551d_writev=''
5ff3f7a4
GS
552d_dbmclose64=''
553d_dbminit64=''
554d_delete64=''
555d_fetch64=''
556d_firstkey64=''
557d_nextkey64=''
558d_store64=''
a0d0e21e 559dlext=''
85e6fe83
LW
560cccdlflags=''
561ccdlflags=''
2304df62 562dlsrc=''
232e078e 563ld=''
85e6fe83 564lddlflags=''
2304df62 565usedl=''
693762b4 566doublesize=''
5ff3f7a4 567ebcdic=''
a0d0e21e 568fpostype=''
2304df62
AD
569gidtype=''
570groupstype=''
571h_fcntl=''
572h_sysfile=''
5ff3f7a4 573i_arpainet=''
ecfc5424
AD
574db_hashtype=''
575db_prefixtype=''
a0d0e21e 576i_db=''
2304df62 577i_dbm=''
8e07c86e 578i_rpcsvcdbm=''
2304df62 579d_dirnamlen=''
a0d0e21e 580direntrytype=''
2304df62 581i_dirent=''
a0d0e21e 582i_dld=''
2304df62
AD
583i_dlfcn=''
584i_fcntl=''
a0d0e21e 585i_float=''
2304df62 586i_gdbm=''
28e8609d 587d_grpasswd=''
2304df62 588i_grp=''
5ff3f7a4
GS
589d_int64t=''
590i_inttypes=''
a0d0e21e 591i_limits=''
4633a7c4 592i_locale=''
7f3d1cf1 593i_machcthr=''
a0d0e21e
LW
594i_malloc=''
595i_math=''
85e6fe83 596i_memory=''
e7fb4fcc 597i_mntent=''
2304df62 598i_ndbm=''
3fd537d4 599i_netdb=''
85e6fe83 600i_neterrno=''
2304df62
AD
601i_niin=''
602i_sysin=''
5b34fd99 603i_poll=''
c4747d3e 604i_pthread=''
2304df62
AD
605d_pwage=''
606d_pwchange=''
607d_pwclass=''
608d_pwcomment=''
609d_pwexpire=''
c4f23d77 610d_pwgecos=''
28e8609d 611d_pwpasswd=''
2304df62
AD
612d_pwquota=''
613i_pwd=''
760ac839 614i_sfio=''
2304df62 615i_stddef=''
a0d0e21e 616i_stdlib=''
2304df62
AD
617i_string=''
618strings=''
5ff3f7a4 619i_sysaccess=''
2304df62
AD
620i_sysdir=''
621i_sysfile=''
622d_voidtty=''
623i_bsdioctl=''
a0d0e21e 624i_sysfilio=''
2304df62
AD
625i_sysioctl=''
626i_syssockio=''
ff49bff8 627i_sysmman=''
104d25b7 628i_sysmount=''
2304df62 629i_sysndir=''
a0d0e21e 630i_sysparam=''
8ff267be 631i_sysresrc=''
5ff3f7a4 632i_syssecrt=''
2304df62 633i_sysselct=''
1aef975c 634i_sysstat=''
104d25b7 635i_sysstatvfs=''
a0d0e21e 636i_systimes=''
fed7345c 637i_systypes=''
de4597cb
JH
638d_iovec_s=''
639i_sysuio=''
25f94b33 640i_sysun=''
8ff267be 641i_syswait=''
2304df62
AD
642i_sgtty=''
643i_termio=''
644i_termios=''
645i_systime=''
646i_systimek=''
647i_time=''
648timeincl=''
85e6fe83 649i_unistd=''
2304df62 650i_utime=''
760ac839 651i_values=''
a0d0e21e 652i_stdarg=''
2304df62
AD
653i_varargs=''
654i_varhdr=''
655i_vfork=''
104d25b7 656installusrbinperl=''
2304df62 657intsize=''
24fef2a7
AD
658longsize=''
659shortsize=''
de4597cb
JH
660d_dirent64_s=''
661d_flock64_s=''
5ff3f7a4
GS
662d_fstat64=''
663d_ftruncate64=''
664d_ino64t=''
665d_lockf64=''
666d_lseek64=''
667d_lstat64=''
668d_off64t=''
669d_open64=''
670d_opendir64=''
671d_readdir64=''
672d_seekdir64=''
673d_stat64=''
674d_telldir64=''
675d_truncate64=''
2304df62 676libc=''
8ff267be 677libperl=''
2afac517 678shrpenv=''
8ff267be 679useshrplib=''
a0d0e21e 680glibpth=''
2304df62 681libpth=''
8e07c86e 682loclibpth=''
2304df62
AD
683plibpth=''
684xlibpth=''
1cfa4ec7 685ignore_versioned_solibs=''
2304df62 686libs=''
85e6fe83 687lns=''
5ff3f7a4 688lseeksize=''
85e6fe83 689lseektype=''
8ff267be 690make_set_make=''
85e6fe83 691d_mymalloc=''
94b6baf5 692freetype=''
2304df62
AD
693mallocobj=''
694mallocsrc=''
695malloctype=''
696usemymalloc=''
16d20bd9
AD
697installman1dir=''
698man1dir=''
699man1direxp=''
700man1ext=''
701installman3dir=''
702man3dir=''
703man3direxp=''
704man3ext=''
2304df62
AD
705huge=''
706large=''
707medium=''
708models=''
709small=''
710split=''
a0d0e21e 711modetype=''
68c15b6f 712multiarch=''
2304df62
AD
713mydomain=''
714myhostname=''
715phostname=''
716c=''
717n=''
8e07c86e
AD
718d_eofnblk=''
719eagain=''
720o_nonblock=''
721rd_nodata=''
dfe9444c
AD
722netdb_hlen_type=''
723netdb_host_type=''
724netdb_name_type=''
725netdb_net_type=''
2304df62
AD
726groupcat=''
727hostcat=''
728passcat=''
85e6fe83
LW
729orderlib=''
730ranlib=''
2304df62
AD
731package=''
732spackage=''
2c7991dc 733pager=''
bfb7748a 734apiversion=''
ecfc5424 735patchlevel=''
760ac839 736subversion=''
bfb7748a 737version=''
8e07c86e 738perladmin=''
4633a7c4 739perlpath=''
dfe9444c 740pidtype=''
a0d0e21e 741prefix=''
1aef975c 742prefixexp=''
2304df62
AD
743installprivlib=''
744privlib=''
745privlibexp=''
746prototype=''
693762b4 747ptrsize=''
85ab1d1d 748drand01=''
2304df62 749randbits=''
85ab1d1d
JH
750randfunc=''
751randseedtype=''
752seedfunc=''
2304df62
AD
753installscript=''
754scriptdir=''
755scriptdirexp=''
5ff3f7a4 756selectminbits=''
a0d0e21e 757selecttype=''
8ff267be 758sh=''
2304df62 759sig_name=''
dfe9444c 760sig_name_init=''
8e07c86e 761sig_num=''
824a2ba3 762sig_num_init=''
4633a7c4
LW
763installsitearch=''
764sitearch=''
765sitearchexp=''
25f94b33
AD
766installsitelib=''
767sitelib=''
768sitelibexp=''
a0d0e21e
LW
769sizetype=''
770so=''
2304df62
AD
771sharpbang=''
772shsharp=''
773spitshell=''
dfe9444c 774src=''
a0d0e21e 775ssizetype=''
4633a7c4 776startperl=''
2304df62
AD
777startsh=''
778stdchar=''
5ff3f7a4
GS
779d_fgetpos64=''
780d_fopen64=''
781d_freopen64=''
782d_fseek64=''
783d_fseeko64=''
784d_fsetpos64=''
785d_ftell64=''
786d_ftello64=''
787d_tmpfile64=''
2304df62 788sysman=''
5ff3f7a4 789trnl=''
2304df62 790uidtype=''
85ab1d1d 791archname64=''
5ff3f7a4 792use64bits=''
85ab1d1d 793usemultiplicity=''
2304df62 794nm_opt=''
40a7a20a 795nm_so_opt=''
2304df62
AD
796runnm=''
797usenm=''
8ff267be 798useperlio=''
693762b4 799d_oldpthreads=''
dfe9444c 800usethreads=''
2304df62
AD
801incpath=''
802mips=''
803mips_type=''
804usrinc=''
805defvoidused=''
806voidflags=''
2304df62
AD
807CONFIG=''
808
ecfc5424
AD
809define='define'
810undef='undef'
811smallmach='pdp11 i8086 z8000 i80286 iAPX286'
812rmlist=''
813
814: We must find out about Eunice early
815eunicefix=':'
816if test -f /etc/unixtovms; then
817 eunicefix=/etc/unixtovms
818fi
819if test -f /etc/unixtovms.exe; then
820 eunicefix=/etc/unixtovms.exe
821fi
822
5ff3f7a4 823i_whoami=''
5ff3f7a4
GS
824: Possible local include directories to search.
825: Set locincpth to "" in a hint file to defeat local include searches.
826locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
827locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
828:
829: no include file wanted by default
830inclwanted=''
831
ecfc5424
AD
832: list of known cpp symbols, sorted alphabetically
833al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
834al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
835al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
836al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
837al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
838al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
839al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
840al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
841al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
842al="$al VMS Xenix286"
5ff3f7a4
GS
843al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
844al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
ecfc5424
AD
845al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
846al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
847al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
848al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
849al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
850al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
851al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
852al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
853al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
854al="$al __SVR4_2__ __UMAXV__"
855al="$al ____386BSD____ __alpha __alpha__ __amiga"
856al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
857al="$al __host_mips__"
858al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
859al="$al __hp9000s500 __hp9000s700 __hp9000s800"
860al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
861al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
862al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
863al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
864al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
865al="$al __mc88100 __mc88100__ __mips __mips__"
866al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
867al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
868al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
869al="$al _host_mips _mips _unix"
870al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
871al="$al apollo ardent att386 att3b"
872al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
873al="$al cadmus clipper concurrent convex cray ctix"
874al="$al dmert encore gcos gcx gimpel gould"
875al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
876al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
877al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
878al="$al i186 i286 i386 i486 i8086"
879al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
880al="$al ksr1 linux luna luna88k m68k m88100 m88k"
881al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
882al="$al mc68040 mc68060 mc68k mc68k32 mc700"
883al="$al mc88000 mc88100 merlin mert mips mvs n16"
884al="$al ncl_el ncl_mr"
885al="$al news1500 news1700 news1800 news1900 news3700"
886al="$al news700 news800 news900 ns16000 ns32000"
887al="$al ns32016 ns32332 ns32k nsc32000 os osf"
888al="$al parisc pc532 pdp11 plexus posix pyr"
889al="$al riscix riscos scs sequent sgi sinix sony sony_news"
890al="$al sonyrisc sparc sparclite spectrum stardent stratos"
891al="$al sun sun3 sun386 svr4 sysV68 sysV88"
892al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
893al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
894al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
895al="$al xenix z8000"
896
dfe9444c 897: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 898_exe=''
dfe9444c
AD
899: Extra object files, if any, needed on this platform.
900archobjs=''
901groupstype=''
732c9516
JH
902: change the next line if compiling for Xenix/286 on Xenix/386
903xlibpth='/usr/lib/386 /lib/386'
904
905: Possible local library directories to search.
906loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
907loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
908
909: general looking path for locating libraries
910glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
911glibpth="$glibpth /lib /usr/lib $xlibpth"
912glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
913glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
914
915: Private path used by Configure to find libraries. Its value
916: is prepended to libpth. This variable takes care of special
917: machines, like the mips. Usually, it should be empty.
918plibpth=''
919
1cfa4ec7
GS
920: default library list
921libswanted=''
921b2963 922: some systems want to use only the non-versioned libso:s
1cfa4ec7 923ignore_versioned_solibs=''
bfb7748a
AD
924: full support for void wanted by default
925defvoidused=15
926
dfe9444c
AD
927: set useposix=false in your hint file to disable the POSIX extension.
928useposix=true
929: set useopcode=false in your hint file to disable the Opcode extension.
930useopcode=true
85ab1d1d 931: set usemultiplicity on the Configure command line to enable multiplicity.
dfe9444c 932: set usethreads on the Configure command line to enable threads.
ecfc5424 933: List of libraries we want.
693762b4
AD
934: If anyone needs -lnet, put it in a hint file.
935libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
ca8cfa54
JH
936libswanted="$libswanted dld ld sun m rt c cposix posix"
937libswanted="$libswanted ndir dir crypt"
ecfc5424 938libswanted="$libswanted ucb bsd BSD PW x"
1aef975c 939: We probably want to search /usr/shlib before most other libraries.
94b6baf5 940: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
941glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
942glibpth="/usr/shlib $glibpth"
943: Do not use vfork unless overridden by a hint file.
944usevfork=false
945
8ff267be 946: Find the basic shell for Bourne shell scripts
947case "$sh" in
948'')
8ff267be 949 case "$SYSTYPE" in
950 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
951 *) xxx='/bin/sh';;
952 esac
953 if test -f "$xxx"; then
954 sh="$xxx"
955 else
956 : Build up a list and do a single loop so we can 'break' out.
957 pth=`echo $PATH | sed -e "s/$p_/ /g"`
958 for xxx in sh bash ksh pdksh ash; do
959 for p in $pth; do
960 try="$try ${p}/${xxx}"
961 done
962 done
963 for xxx in $try; do
964 if test -f "$xxx"; then
965 sh="$xxx";
8ff267be 966 break
967 elif test -f "$xxx.exe"; then
968 sh="$xxx";
8ff267be 969 break
970 fi
971 done
972 fi
973 ;;
974esac
975
976case "$sh" in
977'') cat <<EOM >&2
978$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 979
8ff267be 980Usually it's in /bin/sh. How did you even get this far?
46193409 981Please contact me (Perl Maintainers) at perlbug@perl.com and
dfe9444c 982we'll try to straighten this all out.
8ff267be 983EOM
984 exit 1
985 ;;
986esac
987
760ac839 988: see if sh knows # comments
8ff267be 989if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
990 shsharp=true
991 spitshell=cat
760ac839
LW
992 xcat=/bin/cat
993 test -f $xcat || xcat=/usr/bin/cat
994 echo "#!$xcat" >try
995 $eunicefix try
996 chmod +x try
997 ./try > today
998 if test -s today; then
760ac839
LW
999 sharpbang='#!'
1000 else
1001 echo "#! $xcat" > try
1002 $eunicefix try
1003 chmod +x try
1004 ./try > today
1005 if test -s today; then
760ac839
LW
1006 sharpbang='#! '
1007 else
760ac839
LW
1008 sharpbang=': use '
1009 fi
1010 fi
1011else
dfe9444c 1012 echo " "
8ff267be 1013 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1014 shsharp=false
1015 cd ..
1016 echo "exec grep -v '^[ ]*#'" >spitshell
1017 chmod +x spitshell
1018 $eunicefix spitshell
1019 spitshell=`pwd`/spitshell
1020 cd UU
1021 echo "I presume that if # doesn't work, #! won't work either!"
1022 sharpbang=': use '
1023fi
1024rm -f try today
1025
1026: figure out how to guarantee sh startup
8ff267be 1027case "$startsh" in
1028'') startsh=${sharpbang}${sh} ;;
1029*)
760ac839 1030esac
760ac839
LW
1031cat >try <<EOSS
1032$startsh
1033set abc
1034test "$?abc" != 1
1035EOSS
1036
1037chmod +x try
1038$eunicefix try
1039if ./try; then
8ff267be 1040 : echo "Yup, it does."
760ac839 1041else
dfe9444c
AD
1042 echo "Hmm... '$startsh' does not guarantee sh startup..."
1043 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1044fi
1045rm -f try
1046
aebf16e7
AD
1047
1048: Save command line options in file UU/cmdline.opt for later use in
1049: generating config.sh.
1050cat > cmdline.opt <<EOSH
1051# Configure command line arguments.
1052config_arg0='$0'
1053config_args='$*'
1054config_argc=$#
1055EOSH
1056argn=1
1057for arg in "$@"; do
1058 cat >>cmdline.opt <<EOSH
1059config_arg$argn='$arg'
1060EOSH
1061 argn=`expr $argn + 1`
1062done
1063
2304df62
AD
1064: produce awk script to parse command line options
1065cat >options.awk <<'EOF'
1066BEGIN {
16d20bd9 1067 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1068
1069 len = length(optstr);
1070 for (i = 1; i <= len; i++) {
1071 c = substr(optstr, i, 1);
1072 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1073 if (a == ":") {
1074 arg[c] = 1;
1075 i++;
1076 }
1077 opt[c] = 1;
1078 }
1079}
1080{
1081 expect = 0;
1082 str = $0;
1083 if (substr(str, 1, 1) != "-") {
1084 printf("'%s'\n", str);
1085 next;
1086 }
1087 len = length($0);
1088 for (i = 2; i <= len; i++) {
1089 c = substr(str, i, 1);
1090 if (!opt[c]) {
1091 printf("-%s\n", substr(str, i));
1092 next;
1093 }
1094 printf("-%s\n", c);
1095 if (arg[c]) {
1096 if (i < len)
1097 printf("'%s'\n", substr(str, i + 1));
1098 else
1099 expect = 1;
1100 next;
1101 }
1102 }
1103}
1104END {
1105 if (expect)
1106 print "?";
1107}
1108EOF
1109
1110: process the command line options
4633a7c4
LW
1111set X `for arg in "$@"; do echo "X$arg"; done |
1112 sed -e s/X// | awk -f options.awk`
2304df62
AD
1113eval "set $*"
1114shift
1115rm -f options.awk
1116
1117: set up default values
1118fastread=''
1119reuseval=false
1120config_sh=''
1121alldone=''
1122error=''
1123silent=''
1124extractsh=''
ecfc5424 1125override=''
16d20bd9 1126knowitall=''
1aef975c 1127rm -f optdef.sh
28757baa 1128cat >optdef.sh <<EOS
1129$startsh
1130EOS
2304df62 1131
dfe9444c 1132
2304df62
AD
1133: option parsing
1134while test $# -gt 0; do
1135 case "$1" in
1136 -d) shift; fastread=yes;;
1137 -e) shift; alldone=cont;;
1138 -f)
1139 shift
1140 cd ..
1141 if test -r "$1"; then
1142 config_sh="$1"
1143 else
a0d0e21e 1144 echo "$me: cannot read config file $1." >&2
2304df62
AD
1145 error=true
1146 fi
1147 cd UU
1148 shift;;
1149 -h) shift; error=true;;
1150 -r) shift; reuseval=true;;
dfe9444c 1151 -s) shift; silent=true; realsilent=true;;
2304df62 1152 -E) shift; alldone=exit;;
16d20bd9 1153 -K) shift; knowitall=true;;
ecfc5424 1154 -O) shift; override=true;;
dfe9444c 1155 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1156 -D)
1157 shift
1158 case "$1" in
1159 *=)
1160 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1161 echo "$me: ignoring -D $1" >&2
1162 ;;
ecfc5424 1163 *=*) echo "$1" | \
1aef975c
AD
1164 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1165 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1166 esac
1167 shift
1168 ;;
1169 -U)
1170 shift
1171 case "$1" in
1aef975c 1172 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1173 *=*)
1174 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1175 echo "$me: ignoring -U $1" >&2
1176 ;;
1aef975c 1177 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1178 esac
1179 shift
1180 ;;
dfe9444c 1181 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
2304df62
AD
1182 exit 0;;
1183 --) break;;
a0d0e21e 1184 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1185 *) break;;
1186 esac
1187done
1188
1189case "$error" in
1190true)
1191 cat >&2 <<EOM
2afac517 1192Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
a0d0e21e 1193 [-U symbol] [-U symbol=]
2304df62
AD
1194 -d : use defaults for all answers.
1195 -e : go on without questioning past the production of config.sh.
1196 -f : specify an alternate default configuration file.
1197 -h : print this help message and exit (with an error status).
1198 -r : reuse C symbols value if possible (skips costly nm extraction).
1199 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1200 -D : define symbol to have some value:
1201 -D symbol symbol gets the value 'define'
1202 -D symbol=value symbol gets the value 'value'
2304df62 1203 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1204 -K : do not use unless you know what you are doing.
ecfc5424 1205 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1206 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1207 -U : undefine symbol:
1208 -U symbol symbol gets the value 'undef'
1209 -U symbol= symbol gets completely empty
2304df62
AD
1210 -V : print version number and exit (with a zero status).
1211EOM
1212 exit 1
1213 ;;
1214esac
1215
dfe9444c
AD
1216: Sanity checks
1217case "$fastread$alldone" in
1218yescont|yesexit) ;;
1219*)
1220 if test ! -t 0; then
1221 echo "Say 'sh Configure', not 'sh <Configure'"
1222 exit 1
1223 fi
1224 ;;
1225esac
1226
2304df62
AD
1227exec 4>&1
1228case "$silent" in
1229true) exec 1>/dev/null;;
1230esac
1231
ecfc5424 1232: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1233touch optdef.sh
1234. ./optdef.sh
a0d0e21e 1235
2304df62 1236: set package name
85e6fe83 1237package=perl5
1aef975c
AD
1238first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1239last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1240case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1241ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1242*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1243esac
2304df62 1244
2304df62
AD
1245: Some greps do not return status, grrr.
1246echo "grimblepritz" >grimble
1247if grep blurfldyick grimble >/dev/null 2>&1 ; then
1248 contains=contains
1249elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1250 contains=grep
1251else
1252 contains=contains
1253fi
1254rm -f grimble
1255: the following should work in any shell
1256case "$contains" in
1257contains*)
1258 echo " "
1259 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1260 cat >contains <<'EOSS'
1261grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1262EOSS
1263chmod +x contains
1264esac
1265
dfe9444c
AD
1266: Find the path to the source tree
1267case "$src" in
1268'') case "$0" in
1269 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1270 *) src='.';;
1271 esac;;
1272esac
1273case "$src" in
1274'') src=/
1275 rsrc=/
1276 ;;
1277/*) rsrc="$src";;
1278*) rsrc="../$src";;
1279esac
1280if test -f $rsrc/Configure && \
1281 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1282then
1283 : found it, so we are ok.
1284else
1285 rsrc=''
1286 for src in . .. ../.. ../../.. ../../../..; do
1287 if test -f ../$src/Configure && \
1288 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1289 then
1290 rsrc=../$src
1291 break
1292 fi
1293 done
1294fi
1295case "$rsrc" in
1296'')
1297 cat <<EOM >&4
1298
1299Sorry, I can't seem to locate the source dir for $package. Please start
1300Configure with an explicit path -- i.e. /some/path/Configure.
1301
1302EOM
1303 exit 1
1304 ;;
1305../.) rsrc='..';;
1306*)
1307 echo " "
1308 echo "Sources for $package found in \"$src\"." >&4
1309 ;;
1310esac
1311
1312: script used to extract .SH files with variable substitutions
1313cat >extract <<'EOS'
1314CONFIG=true
1315echo "Doing variable substitutions on .SH files..."
1316if test -f $src/MANIFEST; then
f7ab18e9 1317 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1318else
1319 echo "(Looking for .SH files under the source directory.)"
1320 set x `(cd $src; find . -name "*.SH" -print)`
1321fi
1322shift
1323case $# in
13240) set x `(cd $src; echo *.SH)`; shift;;
1325esac
1326if test ! -f $src/$1; then
1327 shift
1328fi
1329mkdir_p='
1330name=$1;
1331create="";
1332while test $name; do
1333 if test ! -d "$name"; then
1334 create="$name $create";
1335 name=`echo $name | sed -e "s|^[^/]*$||"`;
1336 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1337 else
1338 name="";
1339 fi;
1340done;
1341for file in $create; do
1342 mkdir $file;
1343done
1344'
1345for file in $*; do
1346 case "$src" in
1347 ".")
1348 case "$file" in
1349 */*)
1350 dir=`expr X$file : 'X\(.*\)/'`
1351 file=`expr X$file : 'X.*/\(.*\)'`
1352 (cd $dir && . ./$file)
1353 ;;
1354 *)
1355 . ./$file
1356 ;;
1357 esac
1358 ;;
1359 *)
1360 case "$file" in
1361 */*)
1362 dir=`expr X$file : 'X\(.*\)/'`
1363 file=`expr X$file : 'X.*/\(.*\)'`
1364 (set x $dir; shift; eval $mkdir_p)
1365 sh <$src/$dir/$file
1366 ;;
1367 *)
1368 sh <$src/$file
1369 ;;
1370 esac
1371 ;;
1372 esac
1373done
1374if test -f $src/config_h.SH; then
1375 if test ! -f config.h; then
1376 : oops, they left it out of MANIFEST, probably, so do it anyway.
1377 . $src/config_h.SH
1378 fi
1379fi
1380EOS
1381
1382: extract files and exit if asked to do so
1383case "$extractsh" in
1384true)
1385 case "$realsilent" in
1386 true) ;;
1387 *) exec 1>&4;;
1388 esac
1389 case "$config_sh" in
1390 '') config_sh='config.sh';;
1391 esac
1392 echo " "
1393 echo "Fetching answers from $config_sh..."
1394 cd ..
1395 . $config_sh
1396 test "$override" && . ./optdef.sh
1397 echo " "
1398 . UU/extract
1399 rm -rf UU
1400 echo "Done."
1401 exit 0
1402 ;;
1403esac
1404
1405: Eunice requires " " instead of "", can you believe it
1406echo " "
1407: Here we go...
1408echo "Beginning of configuration questions for $package."
1409
1410trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1411
2304df62
AD
1412: first determine how to suppress newline on echo command
1413echo " "
1414echo "Checking echo to see how to suppress newlines..."
1415(echo "hi there\c" ; echo " ") >.echotmp
1416if $contains c .echotmp >/dev/null 2>&1 ; then
1417 echo "...using -n."
1418 n='-n'
1419 c=''
1420else
1421 cat <<'EOM'
1422...using \c
1423EOM
1424 n=''
1425 c='\c'
1426fi
1427echo $n "The star should be here-->$c"
1428echo '*'
1429rm -f .echotmp
1430
1431: Now test for existence of everything in MANIFEST
1432echo " "
dfe9444c 1433if test -f $rsrc/MANIFEST; then
2304df62 1434 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1435 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1436 rm -f missing
dfe9444c 1437 tmppwd=`pwd`
2304df62 1438 for filelist in x??; do
dfe9444c 1439 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1440 done
1441 if test -s missing; then
1442 cat missing >&4
1443 cat >&4 <<'EOM'
1444
1445THIS PACKAGE SEEMS TO BE INCOMPLETE.
1446
1447You have the option of continuing the configuration process, despite the
1448distinct possibility that your kit is damaged, by typing 'y'es. If you
1449do, don't blame me if something goes wrong. I advise you to type 'n'o
46193409 1450and contact the author (perlbug@perl.com).
2304df62
AD
1451
1452EOM
1453 echo $n "Continue? [n] $c" >&4
1454 read ans
1455 case "$ans" in
1456 y*)
1457 echo "Continuing..." >&4
1458 rm -f missing
1459 ;;
1460 *)
1461 echo "ABORTING..." >&4
1462 kill $$
1463 ;;
1464 esac
1465 else
dfe9444c 1466 echo "Looks good..."
2304df62
AD
1467 fi
1468else
1469 echo "There is no MANIFEST file. I hope your kit is complete !"
1470fi
1471rm -f missing x??
1472
5ff3f7a4
GS
1473echo " "
1474: Find the appropriate value for a newline for tr
1475if test -n "$DJGPP"; then
1476 trnl='\012'
1477fi
1478if test X"$trnl" = X; then
1479 case "`echo foo|tr '\n' x 2>/dev/null`" in
1480 foox) trnl='\n' ;;
1481 esac
1482fi
1483if test X"$trnl" = X; then
1484 case "`echo foo|tr '\012' x 2>/dev/null`" in
1485 foox) trnl='\012' ;;
1486 esac
1487fi
1488if test X"$trnl" = X; then
1489 cat <<EOM >&2
1490
1491$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1492
1493EOM
1494 exit 1
1495fi
1496
2304df62
AD
1497: compute the number of columns on the terminal for proper question formatting
1498case "$COLUMNS" in
1499'') COLUMNS='80';;
1500esac
1501
1502: set up the echo used in my read
1503myecho="case \"\$xxxm\" in
1504'') echo $n \"\$rp $c\" >&4;;
1505*) case \"\$rp\" in
1506 '') echo $n \"[\$xxxm] $c\";;
1507 *)
1508 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1509 echo \"\$rp\" >&4
1510 echo $n \"[\$xxxm] $c\" >&4
1511 else
1512 echo $n \"\$rp [\$xxxm] $c\" >&4
1513 fi
1514 ;;
1515 esac;;
1516esac"
1517
1518: now set up to do reads with possible shell escape and default assignment
1519cat <<EOSC >myread
28757baa 1520$startsh
2304df62
AD
1521xxxm=\$dflt
1522$myecho
1523ans='!'
1524case "\$fastread" in
1525yes) case "\$dflt" in
1526 '') ;;
1527 *) ans='';
1528 case "\$silent-\$rp" in
1529 true-) ;;
1530 *) echo " " >&4;;
1531 esac;;
1532 esac;;
1533*) case "\$silent" in
1534 true) case "\$rp" in
1535 '') ans='';;
1536 esac;;
1537 esac;;
1538esac
1539while expr "X\$ans" : "X!" >/dev/null; do
1540 read answ
1541 set x \$xxxm
1542 shift
dfe9444c 1543 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1544 case "\$answ" in
dfe9444c
AD
1545 "!")
1546 sh 1>&4
1547 echo " "
1548 $myecho
1549 ;;
1550 !*)
1551 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1552 shift
1553 sh 1>&4 -c "\$*"
1554 echo " "
1555 $myecho
1556 ;;
2304df62
AD
1557 "\$ans")
1558 case "\$ans" in
ecfc5424
AD
1559 \\&*)
1560 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1561 shift
1562 case "\$1" in
1563 -d)
1564 fastread=yes
40a7a20a 1565 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1566 ;;
1567 -*)
40a7a20a 1568 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1569 ;;
1570 esac
1571 $myecho
1572 ans=!
1573 ;;
2304df62
AD
1574 esac;;
1575 *)
1576 case "\$aok" in
1577 y)
1578 echo "*** Substitution done -- please confirm."
1579 xxxm="\$ans"
c9795ab7 1580 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1581 xxxm="\$ans"
1582 ans=!
1583 ;;
1584 *)
1585 echo "*** Error -- try again."
1586 ans=!
1587 ;;
1588 esac
1589 $myecho
1590 ;;
1591 esac
1592 case "\$ans\$xxxm\$nostick" in
1593 '')
1594 ans=!
1595 $myecho
1596 ;;
1597 esac
1598done
1599case "\$ans" in
1600'') ans="\$xxxm";;
1601esac
1602EOSC
1603
1604: create .config dir to save info across Configure sessions
1605test -d ../.config || mkdir ../.config
1606cat >../.config/README <<EOF
1607This directory created by Configure to save information that should
dfe9444c 1608persist across sessions for $package.
2304df62
AD
1609
1610You may safely delete it if you wish.
1611EOF
1612
1613: general instructions
1614needman=true
1615firsttime=true
760ac839 1616user=`(logname) 2>/dev/null`
dfe9444c
AD
1617case "$user" in
1618'') user=`whoami 2>&1`;;
760ac839 1619esac
2304df62
AD
1620if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1621 firsttime=false
1622 echo " "
1623 rp='Would you like to see the instructions?'
1624 dflt=n
1625 . ./myread
1626 case "$ans" in
1627 [yY]*) ;;
1628 *) needman=false;;
1629 esac
1630fi
1631if $needman; then
1632 cat <<EOH
4e2a5f63 1633
2304df62 1634This installation shell script will examine your system and ask you questions
a0d0e21e 1635to determine how the perl5 package should be installed. If you get
2304df62
AD
1636stuck on a question, you may use a ! shell escape to start a subshell or
1637execute a command. Many of the questions will have default answers in square
1638brackets; typing carriage return will give you the default.
1639
1640On some of the questions which ask for file or directory names you are allowed
1641to use the ~name construct to specify the login directory belonging to "name",
1642even if you don't have a shell which knows about that. Questions where this is
1643allowed will be marked "(~name ok)".
1644
1645EOH
1646 rp=''
1647 dflt='Type carriage return to continue'
1648 . ./myread
1649 cat <<'EOH'
1650
1651The prompter used in this script allows you to use shell variables and
1652backticks in your answers. You may use $1, $2, etc... to refer to the words
1653in the default answer, as if the default line was a set of arguments given to a
1654script shell. This means you may also use $* to repeat the whole default line,
1655so you do not have to re-type everything to add something to the default.
1656
1657Everytime there is a substitution, you will have to confirm. If there is an
1658error (e.g. an unmatched backtick), the default answer will remain unchanged
1659and you will be prompted again.
1660
1661If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1662the questions and use the computed defaults (or the previous answers if there
1663was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1664You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1665on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1666
1667EOH
1668 . ./myread
1669 cat <<EOH
1670
1671Much effort has been expended to ensure that this shell script will run on any
1672Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1673Configure and run it again. If you can't run Configure for some reason,
1674you'll have to generate a config.sh file by hand. Whatever problems you
46193409 1675have, let me (perlbug@perl.com) know how I blew it.
2304df62
AD
1676
1677This installation script affects things in two ways:
1678
16791) it may do direct variable substitutions on some of the files included
1680 in this kit.
16812) it builds a config.h file for inclusion in C programs. You may edit
1682 any of these files as the need arises after running this script.
1683
1684If you make a mistake on a question, there is no easy way to back up to it
1685currently. The easiest thing to do is to edit config.sh and rerun all the SH
1686files. Configure will offer to let you do this before it runs the SH files.
1687
1688EOH
1689 dflt='Type carriage return to continue'
1690 . ./myread
1691 case "$firsttime" in
1692 true) echo $user >>../.config/instruct;;
1693 esac
1694fi
1695
2304df62
AD
1696: find out where common programs are
1697echo " "
1698echo "Locating common programs..." >&4
1699cat <<EOSC >loc
1700$startsh
1701case \$# in
17020) exit 1;;
1703esac
1704thing=\$1
1705shift
1706dflt=\$1
1707shift
1708for dir in \$*; do
1709 case "\$thing" in
1710 .)
1711 if test -d \$dir/\$thing; then
1712 echo \$dir
1713 exit 0
1714 fi
1715 ;;
1716 *)
a0d0e21e 1717 for thisthing in \$dir/\$thing; do
ecfc5424 1718 : just loop through to pick last item
a0d0e21e 1719 done
25f94b33 1720 if test -f \$thisthing; then
a0d0e21e 1721 echo \$thisthing
2304df62
AD
1722 exit 0
1723 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1724 if test -n "$DJGPP"; then
1725 echo \$dir/\$thing.exe
1726 else
1727 : on Eunice apparently
1728 echo \$dir/\$thing
1729 fi
2304df62
AD
1730 exit 0
1731 fi
1732 ;;
1733 esac
1734done
1735echo \$dflt
1736exit 1
1737EOSC
1738chmod +x loc
1739$eunicefix loc
1740loclist="
1741awk
1742cat
ecfc5424 1743comm
2304df62
AD
1744cp
1745echo
1746expr
1747grep
a0d0e21e 1748ls
dfe9444c 1749make
2304df62 1750mkdir
2304df62
AD
1751rm
1752sed
1753sort
85e6fe83 1754touch
2304df62
AD
1755tr
1756uniq
1757"
1758trylist="
1759Mcc
dfe9444c 1760ar
2304df62
AD
1761byacc
1762cpp
1763csh
1764date
1765egrep
8ff267be 1766gzip
2c7991dc 1767less
8ff267be 1768ln
2c7991dc 1769more
693762b4 1770nm
2304df62 1771nroff
2c7991dc 1772pg
693762b4 1773tee
2304df62
AD
1774test
1775uname
8ff267be 1776zip
2304df62 1777"
8e07c86e 1778pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1779pth="$pth /lib /usr/lib"
1780for file in $loclist; do
dfe9444c
AD
1781 eval xxx=\$$file
1782 case "$xxx" in
1783 /*|?:[\\/]*)
1784 if test -f "$xxx"; then
1785 : ok
1786 else
1787 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1788 xxx=`./loc $file $file $pth`
1789 fi
1790 ;;
1791 '') xxx=`./loc $file $file $pth`;;
1792 *) xxx=`./loc $xxx $xxx $pth`;;
1793 esac
2304df62
AD
1794 eval $file=$xxx
1795 eval _$file=$xxx
1796 case "$xxx" in
1797 /*)
1798 echo $file is in $xxx.
1799 ;;
8e07c86e
AD
1800 ?:[\\/]*)
1801 echo $file is in $xxx.
1802 ;;
2304df62 1803 *)
25f94b33
AD
1804 echo "I don't know where '$file' is, and my life depends on it." >&4
1805 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1806 exit 1
2304df62
AD
1807 ;;
1808 esac
1809done
1810echo " "
1811echo "Don't worry if any of the following aren't found..."
1812say=offhand
1813for file in $trylist; do
dfe9444c
AD
1814 eval xxx=\$$file
1815 case "$xxx" in
1816 /*|?:[\\/]*)
1817 if test -f "$xxx"; then
1818 : ok
1819 else
1820 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1821 xxx=`./loc $file $file $pth`
1822 fi
1823 ;;
1824 '') xxx=`./loc $file $file $pth`;;
1825 *) xxx=`./loc $xxx $xxx $pth`;;
1826 esac
2304df62
AD
1827 eval $file=$xxx
1828 eval _$file=$xxx
1829 case "$xxx" in
1830 /*)
1831 echo $file is in $xxx.
1832 ;;
8e07c86e
AD
1833 ?:[\\/]*)
1834 echo $file is in $xxx.
1835 ;;
2304df62
AD
1836 *)
1837 echo "I don't see $file out there, $say."
1838 say=either
1839 ;;
1840 esac
1841done
1842case "$egrep" in
1843egrep)
1844 echo "Substituting grep for egrep."
1845 egrep=$grep
1846 ;;
1847esac
8ff267be 1848case "$ln" in
1849ln)
1850 echo "Substituting cp for ln."
1851 ln=$cp
1852 ;;
1853esac
2304df62
AD
1854case "$test" in
1855test)
1856 echo "Hopefully test is built into your sh."
1857 ;;
1858*)
ecfc5424 1859 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
1860 echo "Using the test built into your sh."
1861 test=test
1862 _test=test
1863 fi
1864 ;;
1865esac
1866case "$echo" in
1867echo)
1868 echo "Hopefully echo is built into your sh."
1869 ;;
1870'') ;;
1871*)
1872 echo " "
1873echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1874 $echo $n "hi there$c" >foo1
1875 echo $n "hi there$c" >foo2
1876 if cmp foo1 foo2 >/dev/null 2>&1; then
1877 echo "They are compatible. In fact, they may be identical."
1878 else
1879 case "$n" in
1880 '-n') n='' c='\c';;
1881 *) n='-n' c='';;
1882 esac
1883 cat <<FOO
1884They are not compatible! You are probably running ksh on a non-USG system.
1885I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1886have echo built in and we may have to run some Bourne shell scripts. That
1887means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1888
1889FOO
1890 $echo $n "The star should be here-->$c"
1891 $echo "*"
1892 fi
1893 $rm -f foo1 foo2
1894 ;;
1895esac
1896
a0d0e21e
LW
1897: determine whether symbolic links are supported
1898echo " "
1899$touch blurfl
1900if $ln -s blurfl sym > /dev/null 2>&1 ; then
1901 echo "Symbolic links are supported." >&4
1902 lns="$ln -s"
1903else
1904 echo "Symbolic links are NOT supported." >&4
1905 lns="$ln"
1906fi
1907$rm -f blurfl sym
1908
ecfc5424
AD
1909: see whether [:lower:] and [:upper:] are supported character classes
1910echo " "
ecfc5424
AD
1911case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1912ABYZ)
1913 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1914 up='[:upper:]'
1915 low='[:lower:]'
1916 ;;
28e8609d
JH
1917*) # There is a discontinuity in EBCDIC between 'I' and 'J'
1918 # (0xc9 and 0xd1), therefore that is a nice testing point.
1919 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 1920 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
1921 ij) up='[A-Z]'
1922 low='[a-z]'
1923 ;;
1924 esac
1925 fi
1926 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 1927 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
1928 ij) up='A-Z'
1929 low='a-z'
1930 ;;
1931 esac
1932 fi
1933 if test "X$up" = X -o "X$low" = X; then
1934 case "`echo IJ | od -x 2>/dev/null`" in
1935 *C9D1*|*c9d1*)
1936 echo "Hey, this might be EBCDIC." >&4
1937 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 1938 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
1939 ij) up='[A-IJ-RS-Z]'
1940 low='[a-ij-rs-z]'
1941 ;;
1942 esac
1943 fi
1944 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 1945 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
1946 ij) up='A-IJ-RS-Z'
1947 low='a-ij-rs-z'
1948 ;;
1949 esac
1950 fi
1951 ;;
1952 esac
1953 fi
1954esac
3eaeeeae 1955case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
1956ij)
1957 echo "Using $up and $low to convert case." >&4
1958 ;;
ecfc5424 1959*)
28e8609d
JH
1960 echo "I don't know how to translate letters from upper to lower case." >&4
1961 echo "Your tr is not acting any way I know of." >&4
1962 exit 1
1963 ;;
ecfc5424
AD
1964esac
1965: set up the translation script tr, must be called with ./tr of course
1966cat >tr <<EOSC
1967$startsh
1968case "\$1\$2" in
1969'[A-Z][a-z]') exec $tr '$up' '$low';;
1970'[a-z][A-Z]') exec $tr '$low' '$up';;
1971esac
1972exec $tr "\$@"
1973EOSC
1974chmod +x tr
1975$eunicefix tr
1976
2304df62
AD
1977: Try to determine whether config.sh was made on this system
1978case "$config_sh" in
1979'')
1980myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
28e8609d
JH
1981# tr '[A-Z]' '[a-z]' would not work in EBCDIC
1982# because the A-Z/a-z are not consecutive.
a0d0e21e 1983myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 1984 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 1985newmyuname="$myuname"
2304df62 1986dflt=n
16d20bd9
AD
1987case "$knowitall" in
1988'')
1989 if test -f ../config.sh; then
1990 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1991 eval "`grep myuname= ../config.sh`"
1992 fi
1993 if test "X$myuname" = "X$newmyuname"; then
1994 dflt=y
1995 fi
2304df62 1996 fi
16d20bd9
AD
1997 ;;
1998*) dflt=y;;
1999esac
2304df62
AD
2000
2001: Get old answers from old config file if Configure was run on the
2002: same system, otherwise use the hints.
2003hint=default
2004cd ..
2005if test -f config.sh; then
16d20bd9
AD
2006 echo " "
2007 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2008 . UU/myread
2009 case "$ans" in
2010 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2011 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2012 tmp_n="$n"
2013 tmp_c="$c"
85cad39c 2014 tmp_sh="$sh"
2304df62
AD
2015 . ./config.sh
2016 cp config.sh UU
ecfc5424
AD
2017 n="$tmp_n"
2018 c="$tmp_c"
85cad39c 2019 : Older versions did not always set $sh. Catch re-use of such
2020 : an old config.sh.
2021 case "$sh" in
2022 '') sh="$tmp_sh" ;;
2023 esac
2304df62
AD
2024 hint=previous
2025 ;;
2026 esac
2027fi
2028if test ! -f config.sh; then
2029 $cat <<EOM
2030
4e2a5f63
AD
2031First time through, eh? I have some defaults handy for some systems
2032that need some extra help getting the Configure answers right:
2304df62
AD
2033
2034EOM
dfe9444c 2035 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2036 dflt=''
2037 : Half the following guesses are probably wrong... If you have better
46193409 2038 : tests or hints, please send them to perlbug@perl.com
2304df62 2039 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2040 $test -f /irix && osname=irix
85e6fe83
LW
2041 $test -f /xenix && osname=sco_xenix
2042 $test -f /dynix && osname=dynix
2043 $test -f /dnix && osname=dnix
5f05dabc 2044 $test -f /lynx.os && osname=lynxos
2045 $test -f /unicos && osname=unicos && osvers=`$uname -r`
7a4c00b4 2046 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2047 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2048 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2049 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2050 $test -d /usr/apollo/bin && osname=apollo
2051 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2052 $test -d /usr/include/minix && osname=minix
e060872b 2053 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2054 osname=machten
4633a7c4 2055 if $test -x /sbin/version; then
dfe9444c 2056 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2057 $sed -e 's/[A-Za-z]$//'`
2058 elif $test -x /usr/etc/version; then
dfe9444c 2059 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2060 $sed -e 's/[A-Za-z]$//'`
2061 else
2062 osvers="$2.$3"
2063 fi
2064 fi
85ab1d1d
JH
2065 $test -f /sys/posix.dll &&
2066 $test -f /usr/bin/what &&
2067 set X `/usr/bin/what /sys/posix.dll` &&
2068 $test "$3" = UWIN &&
2069 osname=uwin &&
2070 osvers="$5"
2304df62
AD
2071 if $test -f $uname; then
2072 set X $myuname
2073 shift
2074
2304df62 2075 case "$5" in
85e6fe83 2076 fps*) osname=fps ;;
2304df62
AD
2077 mips*)
2078 case "$4" in
85e6fe83
LW
2079 umips) osname=umips ;;
2080 *) osname=mips ;;
2304df62 2081 esac;;
85e6fe83
LW
2082 [23]100) osname=mips ;;
2083 next*) osname=next ;;
ecfc5424 2084 i386*)
c6912327
JH
2085 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2086 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2087 osname='sco'
2088 osvers=$tmp
2089 elif $test -f /etc/kconfig; then
ecfc5424 2090 osname=isc
a0d0e21e
LW
2091 if test "$lns" = "ln -s"; then
2092 osvers=4
2093 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2094 osvers=3
2304df62 2095 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2096 osvers=2
ecfc5424
AD
2097 fi
2098 fi
619ffc2b 2099 unset tmp
ecfc5424 2100 ;;
c4f23d77
AD
2101 pc*)
2102 if test -n "$DJGPP"; then
2103 osname=dos
2104 osvers=djgpp
2105 fi
2106 ;;
2304df62
AD
2107 esac
2108
2109 case "$1" in
a0d0e21e
LW
2110 aix) osname=aix
2111 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2112 case "$tmp" in
1aef975c 2113 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2114 '<3240'|'<>3240') osvers=3.2.0 ;;
2115 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2116 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2117 *) osvers=$tmp;;
a0d0e21e
LW
2118 esac
2119 ;;
23f87696
SZ
2120 *dc.osx) osname=dcosx
2121 osvers="$3"
2122 ;;
a0d0e21e
LW
2123 dnix) osname=dnix
2124 osvers="$3"
2125 ;;
2126 domainos) osname=apollo
2127 osvers="$3"
2128 ;;
2129 dgux) osname=dgux
2130 osvers="$3"
2131 ;;
760ac839 2132 dynixptx*) osname=dynixptx
e58e581d 2133 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2134 ;;
a0d0e21e
LW
2135 freebsd) osname=freebsd
2136 osvers="$3" ;;
2137 genix) osname=genix ;;
2138 hp*) osname=hpux
bfb7748a 2139 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2140 ;;
a78b0d02 2141 irix*) osname=irix
a0d0e21e
LW
2142 case "$3" in
2143 4*) osvers=4 ;;
2144 5*) osvers=5 ;;
ecfc5424 2145 *) osvers="$3" ;;
a0d0e21e
LW
2146 esac
2147 ;;
2148 linux) osname=linux
2149 case "$3" in
a0d0e21e
LW
2150 *) osvers="$3" ;;
2151 esac
2152 ;;
28e8609d
JH
2153 MiNT) osname=mint
2154 ;;
2155 netbsd*) osname=netbsd
ecfc5424
AD
2156 osvers="$3"
2157 ;;
4e81affe
MM
2158 news-os) osvers="$3"
2159 case "$3" in
2160 4*) osname=newsos4 ;;
2161 *) osname=newsos ;;
2162 esac
2163 ;;
a0d0e21e
LW
2164 bsd386) osname=bsd386
2165 osvers=`$uname -r`
2166 ;;
a1a0e61e
TD
2167 POSIX-BC | posix-bc ) osname=posix-bc
2168 osvers="$3"
2169 ;;
ae3afa4e
TH
2170 powerux | power_ux | powermax_os | powermaxos | \
2171 powerunix | power_unix) osname=powerux
2172 osvers="$3"
2173 ;;
a0d0e21e
LW
2174 next*) osname=next ;;
2175 solaris) osname=solaris
2176 case "$3" in
2177 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2178 *) osvers="$3" ;;
a0d0e21e
LW
2179 esac
2180 ;;
85e6fe83
LW
2181 sunos) osname=sunos
2182 case "$3" in
85e6fe83
LW
2183 5*) osname=solaris
2184 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2185 *) osvers="$3" ;;
2304df62
AD
2186 esac
2187 ;;
a0d0e21e 2188 titanos) osname=titanos
85e6fe83 2189 case "$3" in
a0d0e21e
LW
2190 1*) osvers=1 ;;
2191 2*) osvers=2 ;;
2192 3*) osvers=3 ;;
2193 4*) osvers=4 ;;
ecfc5424 2194 *) osvers="$3" ;;
2304df62
AD
2195 esac
2196 ;;
85e6fe83 2197 ultrix) osname=ultrix
ecfc5424 2198 osvers="$3"
2304df62 2199 ;;
28757baa 2200 osf1|mls+) case "$5" in
fed7345c
AD
2201 alpha)
2202 osname=dec_osf
313489a2 2203 osvers=`echo "$3" | sed 's/^[xvt]//'`
ecfc5424
AD
2204 ;;
2205 hp*) osname=hp_osf1 ;;
2206 mips) osname=mips_osf1 ;;
85e6fe83
LW
2207 esac
2208 ;;
a0d0e21e
LW
2209 uts) osname=uts
2210 osvers="$3"
2211 ;;
ff68c719 2212 qnx) osname=qnx
2213 osvers="$4"
2214 ;;
85e6fe83 2215 $2) case "$osname" in
2304df62 2216 *isc*) ;;
a0d0e21e 2217 *freebsd*) ;;
5f05dabc 2218 svr*)
a0d0e21e
LW
2219 : svr4.x or possibly later
2220 case "svr$3" in
2221 ${osname}*)
2222 osname=svr$3
2223 osvers=$4
2224 ;;
2225 esac
2226 case "$osname" in
2227 svr4.0)
2228 : Check for ESIX
2229 if test -f /stand/boot ; then
2230 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2231 if test -n "$INITPROG" -a -f "$INITPROG"; then
2232 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2233 if test -n "$isesix"; then
a0d0e21e
LW
2234 osname=esix4
2235 fi
2236 fi
2237 fi
2238 ;;
2239 esac
2240 ;;
2304df62 2241 *) if test -f /etc/systemid; then
a0d0e21e
LW
2242 osname=sco
2243 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2244 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2245 osvers=$1.$2.$3
c4f23d77 2246 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2247 osvers=$1.$2
c4f23d77 2248 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2249 osvers=$1
2304df62 2250 fi
a0d0e21e
LW
2251 else
2252 case "$osname" in
2253 '') : Still unknown. Probably a generic Sys V.
2254 osname="sysv"
2255 osvers="$3"
2256 ;;
2257 esac
2304df62
AD
2258 fi
2259 ;;
2260 esac
2261 ;;
a0d0e21e
LW
2262 *) case "$osname" in
2263 '') : Still unknown. Probably a generic BSD.
2264 osname="$1"
2265 osvers="$3"
2266 ;;
2267 esac
2268 ;;
2304df62
AD
2269 esac
2270 else
dfe9444c
AD
2271 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2272 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2273 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2274 osname=news_os
2304df62 2275 fi
dfe9444c 2276 $rm -f UU/kernel.what
8e07c86e
AD
2277 elif test -d c:/.; then
2278 set X $myuname
2279 osname=os2
2280 osvers="$5"
2304df62
AD
2281 fi
2282 fi
85e6fe83 2283
a0d0e21e
LW
2284 : Now look for a hint file osname_osvers, unless one has been
2285 : specified already.
2286 case "$hintfile" in
2287 ''|' ')
ecfc5424 2288 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
a0d0e21e 2289 : Also try without trailing minor version numbers.
ecfc5424
AD
2290 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2291 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2292 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2293 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
a0d0e21e
LW
2294 case "$file" in
2295 '') dflt=none ;;
2296 *) case "$osvers" in
2297 '') dflt=$file
2298 ;;
dfe9444c 2299 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2300 dflt=$file
dfe9444c 2301 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2302 dflt=$xfile
dfe9444c 2303 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2304 dflt=$xxfile
dfe9444c 2305 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2306 dflt=$xxxfile
dfe9444c 2307 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2308 dflt=$xxxxfile
dfe9444c 2309 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2310 dflt="${osname}"
2311 else
2312 dflt=none
2313 fi
2314 ;;
2315 esac
85e6fe83
LW
2316 ;;
2317 esac
4e2a5f63
AD
2318 if $test -f Policy.sh ; then
2319 case "$dflt" in
2320 *Policy*) ;;
2321 none) dflt="Policy" ;;
2322 *) dflt="Policy $dflt" ;;
2323 esac
2324 fi
85e6fe83 2325 ;;
a0d0e21e 2326 *)
ecfc5424 2327 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2328 ;;
2304df62 2329 esac
1aef975c 2330
4e2a5f63
AD
2331 if $test -f Policy.sh ; then
2332 $cat <<EOM
2333
2334There's also a Policy hint file available, which should make the
2335site-specific (policy) questions easier to answer.
2336EOM
2337
2338 fi
2339
2304df62
AD
2340 $cat <<EOM
2341
2342You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63
AD
2343A well-behaved OS will have no hints, so answering "none" or just "Policy"
2344is a good thing. DO NOT give a wrong version.
2304df62
AD
2345
2346EOM
4e2a5f63 2347
2304df62 2348 rp="Which of these apply, if any?"
dfe9444c 2349 . UU/myread
85e6fe83
LW
2350 tans=$ans
2351 for file in $tans; do
4e2a5f63
AD
2352 if $test X$file = XPolicy -a -f Policy.sh; then
2353 . Policy.sh
2354 $cat Policy.sh >> UU/config.sh
2355 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2356 . $src/hints/$file.sh
2357 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2358 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2359 : nothing
2360 else
85e6fe83
LW
2361 : Give one chance to correct a possible typo.
2362 echo "$file.sh does not exist"
2363 dflt=$file
2364 rp="hint to use instead?"
dfe9444c 2365 . UU/myread
85e6fe83 2366 for file in $ans; do
dfe9444c
AD
2367 if $test -f "$src/hints/$file.sh"; then
2368 . $src/hints/$file.sh
2369 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2370 elif $test X$ans = X -o X$ans = Xnone ; then
2371 : nothing
2372 else
2373 echo "$file.sh does not exist -- ignored."
2374 fi
2375 done
2304df62
AD
2376 fi
2377 done
85e6fe83 2378
2304df62 2379 hint=recommended
85e6fe83 2380 : Remember our hint file for later.
dfe9444c 2381 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2382 hintfile="$file"
85e6fe83 2383 else
a0d0e21e 2384 hintfile=''
85e6fe83 2385 fi
2304df62
AD
2386fi
2387cd UU
2388;;
2389*)
2390 echo " "
2391 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2392 tmp_n="$n"
2393 tmp_c="$c"
2304df62
AD
2394 cd ..
2395 cp $config_sh config.sh 2>/dev/null
a78b0d02 2396 chmod +w config.sh
2304df62
AD
2397 . ./config.sh
2398 cd UU
2399 cp ../config.sh .
ecfc5424
AD
2400 n="$tmp_n"
2401 c="$tmp_c"
2304df62
AD
2402 hint=previous
2403 ;;
2404esac
1aef975c
AD
2405test "$override" && . ./optdef.sh
2406myuname="$newmyuname"
2304df62
AD
2407
2408: Restore computed paths
2409for file in $loclist $trylist; do
2410 eval $file="\$_$file"
2411done
2412
85e6fe83 2413cat << EOM
a0d0e21e 2414
85e6fe83 2415Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2416The default value is probably right if the name rings a bell. Otherwise,
2417since spelling matters for me, either accept the default or answer "none"
2418to leave it blank.
a0d0e21e 2419
85e6fe83 2420EOM
85e6fe83 2421case "$osname" in
a0d0e21e 2422 ''|' ')
85e6fe83 2423 case "$hintfile" in
a0d0e21e 2424 ''|' '|none) dflt=none ;;
ecfc5424 2425 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2426 esac
2427 ;;
2428 *) dflt="$osname" ;;
2429esac
2430rp="Operating system name?"
2431. ./myread
2432case "$ans" in
ecfc5424
AD
2433none) osname='' ;;
2434*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2435esac
8ff267be 2436echo " "
2437case "$osvers" in
2438 ''|' ')
2439 case "$hintfile" in
2440 ''|' '|none) dflt=none ;;
2441 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2442 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2443 case "$dflt" in
2444 ''|' ') dflt=none ;;
2445 esac
2446 ;;
2447 esac
2448 ;;
2449 *) dflt="$osvers" ;;
2450esac
2451rp="Operating system version?"
2452. ./myread
2453case "$ans" in
2454none) osvers='' ;;
2455*) osvers="$ans" ;;
2456esac
2457
2304df62 2458: who configured the system
59b83a6f 2459cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2460cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2461case "$cf_by" in
2462"")
8ff267be 2463 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2464 case "$cf_by" in
2465 "") cf_by=unknown ;;
8ff267be 2466 esac ;;
2467esac
2304df62 2468
dfe9444c
AD
2469: set up the script used to warn in case of inconsistency
2470cat <<EOS >whoa
2471$startsh
2472EOS
2473cat <<'EOSC' >>whoa
2474dflt=y
2475echo " "
2476echo "*** WHOA THERE!!! ***" >&4
2477echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2478rp=" Keep the $hint value?"
2479. ./myread
2480case "$ans" in
2481y) td=$was; tu=$was;;
2482esac
2483EOSC
2484
2485: function used to set $1 to $val
2486setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2487case "$val$was" in
2488$define$undef) . ./whoa; eval "$var=\$td";;
2489$undef$define) . ./whoa; eval "$var=\$tu";;
2490*) eval "$var=$val";;
2491esac'
2492
64e689dc
JH
2493cat <<EOM
2494
2495Perl can be built to take advantage of threads, on some systems.
2496To do so, Configure must be run with -Dusethreads.
d00b958f
JH
2497
2498Note that threading is a highly experimental feature, and
2499some known race conditions still remain. If you choose to try
2500it, be very sure to not actually deploy it for production
2501purposes. README.threads has more details, and is required
2502reading if you enable threads.
64e689dc 2503EOM
dfe9444c 2504case "$usethreads" in
b691c02f 2505$define|true|[yY]*) dflt='y';;
64e689dc
JH
2506*) dflt='n';;
2507esac
2508rp='Build a threading Perl?'
2509. ./myread
2510case "$ans" in
b691c02f 2511y|Y) val="$define" ;;
64e689dc 2512*) val="$undef" ;;
dfe9444c 2513esac
64e689dc
JH
2514set usethreads
2515eval $setvar
104d25b7 2516
693762b4
AD
2517case "$d_oldpthreads" in
2518'') : Configure tests would be welcome here. For now, assume undef.
2519 val="$undef" ;;
2520*) val="$d_oldpthreads" ;;
2521esac
2522set d_oldpthreads
2523eval $setvar
dfe9444c 2524
b691c02f
JH
2525
2526case "$usethreads" in
104d25b7
JH
2527"$define"|true|[yY]*)
2528: Look for a hint-file generated 'call-back-unit'. If the
2529: user has specified that a threading perl is to be built,
2530: we may need to set or change some other defaults.
2531 if $test -f usethreads.cbu; then
2532 . ./usethreads.cbu
2533 fi
2534 case "$osname" in
68c15b6f 2535 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
104d25b7
JH
2536 # Known thread-capable platforms.
2537 ;;
2538 *)
b691c02f 2539 cat >&4 <<EOM
b691c02f 2540$osname is not known to support threads.
dec9635e 2541Please let perlbug@perl.com know how to do that.
b691c02f
JH
2542
2543Cannot continue, aborting.
2544EOM
104d25b7 2545 exit 1
b691c02f 2546 ;;
104d25b7 2547 esac # $osname
b691c02f
JH
2548 ;;
2549esac # $usethreads
104d25b7 2550
64e689dc
JH
2551cat <<EOM
2552
2553Perl can be built so that multiple Perl interpreters can coexist
2554within the same Perl executable. To do so, Configure must be run with
2555-Dusemultiplicity.
2556
2557Normally you do not need this and you should answer no.
2558
2559EOM
85ab1d1d 2560case "$usemultiplicity" in
64e689dc
JH
2561$define|true|[yY]*) dflt='y';;
2562*) dflt='n';;
85ab1d1d 2563esac
64e689dc
JH
2564rp='Build Perl for multiplicity?'
2565. ./myread
2566case "$ans" in
2567y|Y) val="$define" ;;
2568*) val="$undef" ;;
2569esac
2570set usemultiplicity
2571eval $setvar
2572
2573cat <<EOM
2574
2575Perl can be built to take advantage of explicit 64-bit interfaces,
2576on some systems. To do so, Configure must be run with -Duse64bits.
2577
2578If this doesn't make any sense to you, just accept the default 'n'.
2579EOM
85ab1d1d 2580case "$use64bits" in
64e689dc
JH
2581$define|true|[yY]*) dflt='y';;
2582*) dflt='n';;
2583esac
2584rp='Try to use explicit 64-bit interfaces, if available?'
2585. ./myread
2586case "$ans" in
2587y|Y)
2588 val="$define"
2589 ;;
2590*)
2591 val="$undef"
2592 ;;
85ab1d1d 2593esac
64e689dc
JH
2594set use64bits
2595eval $setvar
85ab1d1d 2596
104d25b7
JH
2597case "$archname64" in
2598'') archname64='' ;; # not a typo
2599esac
85ab1d1d 2600
b691c02f 2601case "$use64bits" in
104d25b7
JH
2602"$define"|true|[yY]*)
2603: Look for a hint-file generated 'call-back-unit'. If the
2604: user has specified that a threading perl is to be built,
2605: we may need to set or change some other defaults.
2606 if $test -f use64bits.cbu; then
2607 . ./use64bits.cbu
2608 fi
b691c02f 2609 case "$osname" in
104d25b7
JH
2610 dec_osf|hpux|irix|solaris|unicos)
2611 # Known 64-bit capable platforms.
b691c02f 2612 ;;
b691c02f 2613 *)
104d25b7 2614 cat >&4 <<EOM
b691c02f 2615$osname is not known to support 64-bit interfaces.
dec9635e 2616Please let perlbug@perl.com know how to do that.
b691c02f
JH
2617
2618Cannot continue, aborting.
2619EOM
104d25b7
JH
2620 exit 1
2621 ;;
b691c02f
JH
2622 esac
2623 ;;
2624esac
104d25b7 2625
4633a7c4 2626: determine the architecture name
2304df62 2627echo " "
4633a7c4
LW
2628if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2629 tarch=`arch`"-$osname"
2630elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2631 if uname -m > tmparch 2>&1 ; then
7e1af8bc 2632 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5f05dabc 2633 -e 's/$/'"-$osname/" tmparch`
4633a7c4
LW
2634 else
2635 tarch="$osname"
2636 fi
2637 $rm -f tmparch
2638else
2639 tarch="$osname"
2640fi
2641case "$myarchname" in
2642''|"$tarch") ;;
2643*)
2644 echo "(Your architecture name used to be $myarchname.)"
2645 archname=''
2304df62
AD
2646 ;;
2647esac
85ab1d1d 2648myarchname="$tarch"
4633a7c4
LW
2649case "$archname" in
2650'') dflt="$tarch";;
2651*) dflt="$archname";;
2652esac
2653rp='What is your architecture name'
2654. ./myread
85ab1d1d 2655archname="$ans"
dc66995c 2656case "$usethreads" in
85ab1d1d
JH
2657$define)
2658 echo "Threads selected." >&4
2659 case "$archname" in
2660 *-thread*) echo "...and architecture name already has -thread." >&4
2661 ;;
2662 *) archname="$archname-thread"
2663 echo "...setting architecture name to $archname." >&4
2664 ;;
2665 esac
2666 ;;
dc66995c 2667esac
85ab1d1d
JH
2668case "$usemultiplicity" in
2669$define)
2670 echo "Multiplicity selected." >&4
2671 case "$archname" in
2672 *-multi*) echo "...and architecture name already has -multi." >&4
2673 ;;
2674 *) archname="$archname-multi"
2675 echo "...setting architecture name to $archname." >&4
2676 ;;
2677 esac
2678 ;;
2679esac
2680case "$use64bits" in
2681$define)
2682 echo "Explicit 64-bitness selected." >&4
2683 case "$archname64" in
2684 '')
2685 ;;
2686 *)
2687 case "$archname" in
2688 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2689 ;;
2690 *) archname="$archname-$archname64"
2691 echo "...setting architecture name to $archname." >&4
2692 ;;
2693 esac
2694 ;;
2695 esac
2696esac
2697
4633a7c4
LW
2698: is AFS running?
2699echo " "
2afac517 2700case "$afs" in
2701$define|true) afs=true ;;
2702$undef|false) afs=false ;;
2703*) if test -d /afs; then
2704 afs=true
2705 else
2706 afs=false
2707 fi
2708 ;;
2709esac
2710if $afs; then
4633a7c4 2711 echo "AFS may be running... I'll be extra cautious then..." >&4
2304df62 2712else
4633a7c4 2713 echo "AFS does not seem to be running..." >&4
2304df62
AD
2714fi
2715
4633a7c4
LW
2716: decide how portable to be. Allow command line overrides.
2717case "$d_portable" in
2718"$undef") ;;
2719*) d_portable="$define" ;;
2304df62 2720esac
2304df62 2721
4633a7c4
LW
2722: set up shell script to do ~ expansion
2723cat >filexp <<EOSS
2724$startsh
2725: expand filename
2726case "\$1" in
2727 ~/*|~)
2728 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2304df62 2729 ;;
4633a7c4
LW
2730 ~*)
2731 if $test -f /bin/csh; then
2732 /bin/csh -f -c "glob \$1"
2733 failed=\$?
2734 echo ""
2735 exit \$failed
2736 else
2737 name=\`$expr x\$1 : '..\([^/]*\)'\`
2738 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2739 if $test ! -d "\$dir"; then
2740 me=\`basename \$0\`
2741 echo "\$me: can't locate home directory for: \$name" >&2
2742 exit 1
2743 fi
2744 case "\$1" in
2745 */*)
2746 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2747 ;;
2748 *)
2749 echo \$dir
2750 ;;
2304df62 2751 esac
4633a7c4 2752 fi
2304df62
AD
2753 ;;
2754*)
4633a7c4 2755 echo \$1
2304df62
AD
2756 ;;
2757esac
4633a7c4
LW
2758EOSS
2759chmod +x filexp
2760$eunicefix filexp
2304df62
AD
2761
2762: now set up to get a file name
28757baa 2763cat <<EOS >getfile
2764$startsh
2765EOS
2766cat <<'EOSC' >>getfile
2304df62
AD
2767tilde=''
2768fullpath=''
2769already=''
2770skip=''
2771none_ok=''
2772exp_file=''
a0d0e21e 2773nopath_ok=''
2304df62
AD
2774orig_rp="$rp"
2775orig_dflt="$dflt"
2776
2777case "$fn" in
ecfc5424 2778*\(*)
28e8609d 2779 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
2780 fn=`echo $fn | sed 's/(.*)//'`
2781 ;;
2782esac
2783
2784case "$fn" in
a0d0e21e
LW
2785*:*)
2786 loc_file=`expr $fn : '.*:\(.*\)'`
2787 fn=`expr $fn : '\(.*\):.*'`
2788 ;;
2789esac
2790
2791case "$fn" in
2304df62
AD
2792*~*) tilde=true;;
2793esac
2794case "$fn" in
2795*/*) fullpath=true;;
2796esac
2797case "$fn" in
2798*+*) skip=true;;
2799esac
2800case "$fn" in
2801*n*) none_ok=true;;
2802esac
2803case "$fn" in
2804*e*) exp_file=true;;
2805esac
a0d0e21e
LW
2806case "$fn" in
2807*p*) nopath_ok=true;;
2808esac
2304df62
AD
2809
2810case "$fn" in
2811*f*) type='File';;
2812*d*) type='Directory';;
a0d0e21e 2813*l*) type='Locate';;
2304df62
AD
2814esac
2815
2816what="$type"
2817case "$what" in
2818Locate) what='File';;
2819esac
2820
2821case "$exp_file" in
2822'')
2823 case "$d_portable" in
2824 "$define") ;;
2825 *) exp_file=true;;
2826 esac
2827 ;;
2828esac
2829
2830cd ..
2831while test "$type"; do
2832 redo=''
2833 rp="$orig_rp"
2834 dflt="$orig_dflt"
2835 case "$tilde" in
2836 true) rp="$rp (~name ok)";;
2837 esac
2838 . UU/myread
ecfc5424
AD
2839 if test -f UU/getfile.ok && \
2840 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2841 then
2842 value="$ans"
2843 ansexp="$ans"
2844 break
2845 fi
2304df62
AD
2846 case "$ans" in
2847 none)
2848 value=''
2849 ansexp=''
2850 case "$none_ok" in
2851 true) type='';;
2852 esac
2853 ;;
2854 *)
2855 case "$tilde" in
2856 '') value="$ans"
2857 ansexp="$ans";;
2858 *)
2859 value=`UU/filexp $ans`
2860 case $? in
2861 0)
2862 if test "$ans" != "$value"; then
ecfc5424 2863 echo "(That expands to $value on this system.)"
2304df62
AD
2864 fi
2865 ;;
2866 *) value="$ans";;
2867 esac
2868 ansexp="$value"
2869 case "$exp_file" in
2870 '') value="$ans";;
2871 esac
2872 ;;
2873 esac
2874 case "$fullpath" in
2875 true)
2876 case "$ansexp" in
2877 /*) value="$ansexp" ;;
2878 *)
2879 redo=true
2880 case "$already" in
2881 true)
2882 echo "I shall only accept a full path name, as in /bin/ls." >&4
2883 echo "Use a ! shell escape if you wish to check pathnames." >&4
2884 ;;
2885 *)
2886 echo "Please give a full path name, starting with slash." >&4
2887 case "$tilde" in
2888 true)
2889 echo "Note that using ~name is ok provided it expands well." >&4
2890 already=true
2891 ;;
2892 esac
2893 esac
2894 ;;
2895 esac
2896 ;;
2897 esac
2898 case "$redo" in
2899 '')
2900 case "$type" in
2901 File)
2902 if test -f "$ansexp"; then
2903 type=''
2904 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2905 then
2906 echo "($value is not a plain file, but that's ok.)"
2907 type=''
2908 fi
2909 ;;
2910 Directory)
2911 if test -d "$ansexp"; then
2912 type=''
2913 fi
2914 ;;
2915 Locate)
40000a8c 2916 if test -d "$ansexp"; then
a0d0e21e
LW
2917 echo "(Looking for $loc_file in directory $value.)"
2918 value="$value/$loc_file"
40000a8c 2919 ansexp="$ansexp/$loc_file"
2304df62 2920 fi
40000a8c 2921 if test -f "$ansexp"; then
2304df62
AD
2922 type=''
2923 fi
a0d0e21e
LW
2924 case "$nopath_ok" in
2925 true) case "$value" in
2926 */*) ;;
2927 *) echo "Assuming $value will be in people's path."
2928 type=''
2929 ;;
2930 esac
2931 ;;
2932 esac
2304df62
AD
2933 ;;
2934 esac
2935
2936 case "$skip" in
2937 true) type='';
2938 esac
2939
2940 case "$type" in
2941 '') ;;
2942 *)
2943 if test "$fastread" = yes; then
2944 dflt=y
2945 else
2946 dflt=n
2947 fi
2948 rp="$what $value doesn't exist. Use that name anyway?"
2949 . UU/myread
2950 dflt=''
2951 case "$ans" in
2952 y*) type='';;
2953 *) echo " ";;
2954 esac
2955 ;;
2956 esac
2957 ;;
2958 esac
2959 ;;
2960 esac
2961done
2962cd UU
2963ans="$value"
2964rp="$orig_rp"
2965dflt="$orig_dflt"
ecfc5424 2966rm -f getfile.ok
2304df62
AD
2967EOSC
2968
4633a7c4
LW
2969: determine root of directory hierarchy where package will be installed.
2970case "$prefix" in
2971'')
2972 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
8e07c86e 2973 ;;
4633a7c4
LW
2974*)
2975 dflt="$prefix"
8e07c86e
AD
2976 ;;
2977esac
4633a7c4 2978$cat <<EOM
2304df62 2979
4633a7c4
LW
2980By default, $package will be installed in $dflt/bin, manual
2981pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2982all installation directories. Typically set to /usr/local, but you
2983may choose /usr if you wish to install $package among your system
2984binaries. If you wish to have binaries under /bin but manual pages
2985under /usr/local/man, that's ok: you will be prompted separately
2986for each of the installation directories, the prefix being only used
2987to set the defaults.
8e07c86e
AD
2988
2989EOM
2990fn=d~
2991rp='Installation prefix to use?'
2992. ./getfile
2993oldprefix=''
2994case "$prefix" in
a0d0e21e 2995'') ;;
8e07c86e
AD
2996*)
2997 case "$ans" in
2998 "$prefix") ;;
2999 *) oldprefix="$prefix";;
3000 esac
3001 ;;
a0d0e21e 3002esac
8e07c86e
AD
3003prefix="$ans"
3004prefixexp="$ansexp"
a0d0e21e 3005
8e07c86e
AD
3006: set the prefixit variable, to compute a suitable default value
3007prefixit='case "$3" in
3008""|none)
3009 case "$oldprefix" in
3010 "") eval "$1=\"\$$2\"";;
3011 *)
3012 case "$3" in
3013 "") eval "$1=";;
3014 none)
3015 eval "tp=\"\$$2\"";
3016 case "$tp" in
3017 ""|" ") eval "$1=\"\$$2\"";;
3018 *) eval "$1=";;
3019 esac;;
3020 esac;;
3021 esac;;
3022*)
3023 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3024 case "$tp" in
3025 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3026 /*-$oldprefix/*|\~*-$oldprefix/*)
3027 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3028 *) eval "$1=\"\$$2\"";;
3029 esac;;
3030esac'
a0d0e21e 3031
bfb7748a
AD
3032: set the base revision
3033baserev=5.0
3034
3035: get the patchlevel
3036echo " "
3037echo "Getting the current patchlevel..." >&4
3038if $test -r $rsrc/patchlevel.h;then
d00b958f
JH
3039 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3040 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
bfb7748a
AD
3041else
3042 patchlevel=0
3043 subversion=0
3044fi
3045$echo $n "(You have $package" $c
3046case "$package" in
3047"*$baserev") ;;
3048*) $echo $n " $baserev" $c ;;
3049esac
3050$echo $n " patchlevel $patchlevel" $c
3051test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3052echo ".)"
3053
3054if test 0 -eq "$subversion"; then
3055 version=`LC_ALL=C; export LC_ALL; \
3056 echo $baserev $patchlevel | \
3057 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3058else
3059 version=`LC_ALL=C; export LC_ALL; \
3060 echo $baserev $patchlevel $subversion | \
3061 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3062fi
3063: Figure out perl API version. Perhaps this should be in patchlevel.h
3064if test "$subversion" -lt 50; then
3065 apiversion=`LC_ALL=C; export LC_ALL; \
59b83a6f 3066 LANGUAGE=C; export LANGUAGE; \
bfb7748a
AD
3067 echo $baserev $patchlevel | \
3068 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3069else
3070 apiversion="$version"
3071fi
3072
4633a7c4 3073: determine where private library files go
3a6175e1
AD
3074: Usual default is /usr/local/lib/perl5/$version.
3075: Also allow things like /opt/perl/lib/$version, since
bfb7748a 3076: /opt/perl/lib/perl5... would be redundant.
4633a7c4 3077case "$prefix" in
3a6175e1
AD
3078*perl*) set dflt privlib lib/$version ;;
3079*) set dflt privlib lib/$package/$version ;;
4633a7c4 3080esac
8e07c86e 3081eval $prefixit
4633a7c4
LW
3082$cat <<EOM
3083
3084There are some auxiliary files for $package that need to be put into a
3085private library directory that is accessible by everyone.
3086
3087EOM
3088fn=d~+
3089rp='Pathname where the private library files will reside?'
8e07c86e 3090. ./getfile
4633a7c4
LW
3091if $test "X$privlibexp" != "X$ansexp"; then
3092 installprivlib=''
8e07c86e 3093fi
4633a7c4
LW
3094privlib="$ans"
3095privlibexp="$ansexp"
8e07c86e
AD
3096if $afs; then
3097 $cat <<EOM
2304df62 3098
8e07c86e 3099Since you are running AFS, I need to distinguish the directory in which
4633a7c4 3100private files reside from the directory in which they are installed (and from
8e07c86e 3101which they are presumably copied to the former directory by occult means).
a0d0e21e 3102
8e07c86e 3103EOM
4633a7c4
LW
3104 case "$installprivlib" in
3105 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3106 *) dflt="$installprivlib";;
8e07c86e
AD
3107 esac
3108 fn=de~
4633a7c4 3109 rp='Where will private files be installed?'
8e07c86e 3110 . ./getfile
4633a7c4 3111 installprivlib="$ans"
8e07c86e 3112else
4633a7c4
LW
3113 installprivlib="$privlibexp"
3114fi
3115
8e07c86e
AD
3116: set the prefixup variable, to restore leading tilda escape
3117prefixup='case "$prefixexp" in
3118"$prefix") ;;
3119*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3120esac'
3121
4633a7c4
LW
3122: determine where public architecture dependent libraries go
3123set archlib archlib
8e07c86e 3124eval $prefixit
3a6175e1 3125: privlib default is /usr/local/lib/$package/$version
bfb7748a 3126: archlib default is /usr/local/lib/$package/$version/$archname
3a6175e1 3127: privlib may have an optional trailing /share.
bfb7748a
AD
3128tdflt=`echo $privlib | $sed 's,/share$,,'`
3129tdflt=$tdflt/$archname
4633a7c4 3130case "$archlib" in
bfb7748a 3131'') dflt=$tdflt
8e07c86e 3132 ;;
bfb7748a 3133*) dflt="$archlib"
774d564b 3134 ;;
8e07c86e 3135esac
4633a7c4
LW
3136cat <<EOM
3137
3138$spackage contains architecture-dependent library files. If you are
3139sharing libraries in a heterogeneous environment, you might store
3140these files in a separate location. Otherwise, you can just include
3141them with the rest of the public library files.
3142
8e07c86e 3143EOM
4633a7c4
LW
3144fn=d+~
3145rp='Where do you want to put the public architecture-dependent libraries?'
8e07c86e 3146. ./getfile
4633a7c4
LW
3147archlib="$ans"
3148archlibexp="$ansexp"
3149
8e07c86e
AD
3150if $afs; then
3151 $cat <<EOM
3152
7bac28a0 3153Since you are running AFS, I need to distinguish the directory in
3154which architecture-dependent library files reside from the directory
3155in which they are installed (and from which they are presumably copied
3156to the former directory by occult means).
8e07c86e
AD
3157
3158EOM
4633a7c4
LW
3159 case "$installarchlib" in
3160 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3161 *) dflt="$installarchlib";;
8e07c86e
AD
3162 esac
3163 fn=de~
4633a7c4 3164 rp='Where will architecture-dependent library files be installed?'
8e07c86e 3165 . ./getfile
4633a7c4 3166 installarchlib="$ans"
8e07c86e 3167else
4633a7c4
LW
3168 installarchlib="$archlibexp"
3169fi
3170if $test X"$archlib" = X"$privlib"; then
3171 d_archlib="$undef"
3172else
3173 d_archlib="$define"
8e07c86e
AD
3174fi
3175
40a7a20a 3176: make some quick guesses about what we are up against
3177echo " "
3178$echo $n "Hmm... $c"
3179echo exit 1 >bsd
3180echo exit 1 >usg
3181echo exit 1 >v7
3182echo exit 1 >osf1
3183echo exit 1 >eunice
3184echo exit 1 >xenix
3185echo exit 1 >venix
8ff267be 3186echo exit 1 >os2
40a7a20a 3187d_bsd="$undef"
3188$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3189if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3190then
3191 echo "Looks kind of like an OSF/1 system, but we'll see..."
3192 echo exit 0 >osf1
3193elif test `echo abc | tr a-z A-Z` = Abc ; then
3194 xxx=`./loc addbib blurfl $pth`
3195 if $test -f $xxx; then
3196 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3197 echo exit 0 >bsd
3198 echo exit 0 >usg
3199 else
3200 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3201 echo "Looks kind of like an extended USG system, but we'll see..."
3202 else
3203 echo "Looks kind of like a USG system, but we'll see..."
3204 fi
3205 echo exit 0 >usg
3206 fi
3207elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3208 echo "Looks kind of like a BSD system, but we'll see..."
3209 d_bsd="$define"
3210 echo exit 0 >bsd
3211else
3212 echo "Looks kind of like a Version 7 system, but we'll see..."
3213 echo exit 0 >v7
3214fi
3215case "$eunicefix" in
3216*unixtovms*)
3217 $cat <<'EOI'
3218There is, however, a strange, musty smell in the air that reminds me of
3219something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3220EOI
3221 echo exit 0 >eunice
3222 d_eunice="$define"
3223: it so happens the Eunice I know will not run shell scripts in Unix format
3224 ;;
3225*)
3226 echo " "
3227 echo "Congratulations. You aren't running Eunice."
3228 d_eunice="$undef"
3229 ;;
3230esac
8ff267be 3231: Detect OS2. The p_ variable is set above in the Head.U unit.
3232case "$p_" in
3233:) ;;
3234*)
3235 $cat <<'EOI'
3236I have the feeling something is not exactly right, however...don't tell me...
3237lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3238EOI
3239 echo exit 0 >os2
3240 ;;
3241esac
40a7a20a 3242if test -f /xenix; then
3243 echo "Actually, this looks more like a XENIX system..."
3244 echo exit 0 >xenix
3245 d_xenix="$define"
3246else
3247 echo " "
3248 echo "It's not Xenix..."
3249 d_xenix="$undef"
3250fi
3251chmod +x xenix
3252$eunicefix xenix
3253if test -f /venix; then
3254 echo "Actually, this looks more like a VENIX system..."
3255 echo exit 0 >venix
3256else
3257 echo " "
3258 if ./xenix; then
3259 : null
3260 else
3261 echo "Nor is it Venix..."
3262 fi
3263fi
8ff267be 3264chmod +x bsd usg v7 osf1 eunice xenix venix os2
3265$eunicefix bsd usg v7 osf1 eunice xenix venix os2
40a7a20a 3266$rm -f foo
3267
3268: see if setuid scripts can be secure
3269$cat <<EOM
3270
3271Some kernels have a bug that prevents setuid #! scripts from being
3272secure. Some sites have disabled setuid #! scripts because of this.
3273
3274First let's decide if your kernel supports secure setuid #! scripts.
3275(If setuid #! scripts would be secure but have been disabled anyway,
3276don't say that they are secure if asked.)
3277
3278EOM
3279
3280val="$undef"
3281if $test -d /dev/fd; then
3282 echo "#!$ls" >reflect
3283 chmod +x,u+s reflect
3284 ./reflect >flect 2>&1
3285 if $contains "/dev/fd" flect >/dev/null; then
3286 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3287 val="$define"
3288 else
3289 $cat <<EOM
3290If you are not sure if they are secure, I can check but I'll need a
3291username and password different from the one you are using right now.
3292If you don't have such a username or don't want me to test, simply
3293enter 'none'.
3294
3295EOM
3296 rp='Other username to test security of setuid scripts with?'
3297 dflt='none'
3298 . ./myread
3299 case "$ans" in
3300 n|none)
3301 case "$d_suidsafe" in
3302 '') echo "I'll assume setuid scripts are *not* secure." >&4
3303 dflt=n;;
3304 "$undef")
3305 echo "Well, the $hint value is *not* secure." >&4
3306 dflt=n;;
3307 *) echo "Well, the $hint value *is* secure." >&4
3308 dflt=y;;
3309 esac
3310 ;;
3311 *)
3312 $rm -f reflect flect
3313 echo "#!$ls" >reflect
3314 chmod +x,u+s reflect
3315 echo >flect
3316 chmod a+w flect
3317 echo '"su" will (probably) prompt you for '"$ans's password."
3318 su $ans -c './reflect >flect'
3319 if $contains "/dev/fd" flect >/dev/null; then
3320 echo "Okay, it looks like setuid scripts are secure." >&4
3321 dflt=y
3322 else
3323 echo "I don't think setuid scripts are secure." >&4
3324 dflt=n
3325 fi
3326 ;;
3327 esac
3328 rp='Does your kernel have *secure* setuid scripts?'
3329 . ./myread
3330 case "$ans" in
3331 [yY]*) val="$define";;
3332 *) val="$undef";;
3333 esac
3334 fi
3335else
3336 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
760ac839 3337 echo "(That's for file descriptors, not floppy disks.)"
40a7a20a 3338 val="$undef"
3339fi
3340set d_suidsafe
3341eval $setvar
3342
3343$rm -f reflect flect
3344
3345: now see if they want to do setuid emulation
3346echo " "
3347val="$undef"
3348case "$d_suidsafe" in
3349"$define")
3350 val="$undef"
3351 echo "No need to emulate SUID scripts since they are secure here." >& 4
3352 ;;
3353*)
3354 $cat <<EOM
3355Some systems have disabled setuid scripts, especially systems where
3356setuid scripts cannot be secure. On systems where setuid scripts have
dfe9444c
AD
3357been disabled, the setuid/setgid bits on scripts are currently
3358useless. It is possible for $package to detect those bits and emulate
3359setuid/setgid in a secure fashion. This emulation will only work if
3360setuid scripts have been disabled in your kernel.
8e07c86e
AD
3361
3362EOM
dfe9444c
AD
3363 case "$d_dosuid" in
3364 "$define") dflt=y ;;
3365 *) dflt=n ;;
3366 esac
3367 rp="Do you want to do setuid/setgid emulation?"
3368 . ./myread
3369 case "$ans" in
3370 [yY]*) val="$define";;
3371 *) val="$undef";;
3372 esac
3373 ;;
4633a7c4 3374esac
dfe9444c 3375set d_dosuid
4633a7c4 3376eval $setvar
8e07c86e 3377
2c7991dc 3378: determine where manual pages are on this system
3379echo " "
3380case "$sysman" in
3381'')
3382 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3383 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3384 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3385 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3386 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3387 sysman=`./loc . /usr/man/man1 $syspath`
3388 ;;
3389esac
3390if $test -d "$sysman"; then
3391 echo "System manual is in $sysman." >&4
3392else
3393 echo "Could not find manual pages in source form." >&4
3394fi
3395
dc45a647
MB
3396: see what memory models we can support
3397case "$models" in
3398'')
3399 $cat >pdp11.c <<'EOP'
d674cd6d 3400int main() {
dc45a647
MB
3401#ifdef pdp11
3402 exit(0);
3403#else
3404 exit(1);
3405#endif
3406}
3407EOP
3408 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3409 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3410 dflt='unsplit split'
3411 else
3412 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3413 case "$tans" in
3414 X) dflt='none';;
3415 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3416 dflt='small'
3417 else
3418 dflt=''
3419 fi
3420 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3421 dflt="$dflt medium"
3422 fi
3423 if $test -d /lib/large || $test -d /usr/lib/large; then
3424 dflt="$dflt large"
3425 fi
3426 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3427 dflt="$dflt huge"
3428 fi
3429 esac
3430 fi;;
3431*) dflt="$models";;
3432esac
8e07c86e 3433$cat <<EOM
dc45a647
MB
3434
3435Some systems have different model sizes. On most systems they are called
3436small, medium, large, and huge. On the PDP11 they are called unsplit and
3437split. If your system doesn't support different memory models, say "none".
3438If you wish to force everything to one memory model, say "none" here and
3439put the appropriate flags later when it asks you for other cc and ld flags.
3440Venix systems may wish to put "none" and let the compiler figure things out.
3441(In the following question multiple model names should be space separated.)
3442
3443The default for most systems is "none".
8e07c86e 3444
8e07c86e 3445EOM
dc45a647
MB
3446rp="Which memory models are supported?"
3447. ./myread
3448models="$ans"
3449
3450case "$models" in
3451none)
3452 small=''
3453 medium=''
3454 large=''
3455 huge=''
3456 unsplit=''
3457 split=''
2c7991dc 3458 ;;
dc45a647
MB
3459*split)
3460 case "$split" in
3461 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3462 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3463 dflt='-i'
3464 else
3465 dflt='none'
3466 fi;;
3467 *) dflt="$split";;
3468 esac
3469 rp="What flag indicates separate I and D space?"
3470 . ./myread
3471 tans="$ans"
3472 case "$tans" in
3473 none) tans='';;
3474 esac
3475 split="$tans"
3476 unsplit='';;
3477*large*|*small*|*medium*|*huge*)
3478 case "$models" in
3479 *large*)
3480 case "$large" in
3481 '') dflt='-Ml';;
3482 *) dflt="$large";;
3483 esac
3484 rp="What flag indicates large model?"
3485 . ./myread
3486 tans="$ans"
3487 case "$tans" in
3488 none) tans='';
3489 esac
3490 large="$tans";;
3491 *) large='';;
3492 esac
3493 case "$models" in
3494 *huge*) case "$huge" in
3495 '') dflt='-Mh';;
3496 *) dflt="$huge";;
3497 esac
3498 rp="What flag indicates huge model?"
3499 . ./myread
3500 tans="$ans"
3501 case "$tans" in
3502 none) tans='';
3503 esac
3504 huge="$tans";;
3505 *) huge="$large";;
3506 esac
3507 case "$models" in
3508 *medium*) case "$medium" in
3509 '') dflt='-Mm';;
3510 *) dflt="$medium";;
3511 esac
3512 rp="What flag indicates medium model?"
3513 . ./myread
3514 tans="$ans"
3515 case "$tans" in
3516 none) tans='';
3517 esac
3518 medium="$tans";;
3519 *) medium="$large";;
3520 esac
3521 case "$models" in
3522 *small*) case "$small" in
3523 '') dflt='none';;
3524 *) dflt="$small";;
3525 esac
3526 rp="What flag indicates small model?"
3527 . ./myread
3528 tans="$ans"
3529 case "$tans" in
3530 none) tans='';
3531 esac
3532 small="$tans";;
3533 *) small='';;
25f94b33 3534 esac
8e07c86e 3535 ;;
dc45a647
MB
3536*)
3537 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
8e07c86e
AD
3538 ;;
3539esac
dc45a647 3540$rm -f pdp11.* pdp11
4e2a5f63 3541
dc45a647
MB
3542: see if we need a special compiler
3543echo " "
3544if ./usg; then
3545 case "$cc" in
3546 '') case "$Mcc" in
3547 /*) dflt='Mcc';;
3548 *) case "$large" in
3549 -M*) dflt='cc';;
3550 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3551 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3552 dflt='cc'
3553 else
3554 dflt='cc -M'
3555 fi
3556 else
3557 dflt='cc'
3558 fi;;
3559 esac;;
3560 esac;;
3561 *) dflt="$cc";;
3562 esac
3563 case "$dflt" in
3564 *M*) $cat <<'EOM'
3565On some older systems the default C compiler will not resolve multiple global
3566references that happen to have the same name. On some such systems the "Mcc"
3567command may be used to force these to be resolved. On other systems a "cc -M"
3568command is required. (Note that the -M flag on other systems indicates a
3569memory model to use!) If you have the Gnu C compiler, you might wish to use
3570that instead.
8e07c86e
AD
3571
3572EOM
dc45a647 3573 ;;
2afac517 3574 esac
dc45a647
MB
3575 rp="Use which C compiler?"
3576 . ./myread
3577 cc="$ans"
4e2a5f63 3578else
dc45a647
MB
3579 case "$cc" in
3580 '') dflt=cc;;
3581 *) dflt="$cc";;
4e2a5f63 3582 esac
dc45a647 3583 rp="Use which C compiler?"
4e2a5f63
AD
3584 . ./myread
3585 cc="$ans"
3586fi
693762b4
AD
3587: Look for a hint-file generated 'call-back-unit'. Now that the
3588: user has specified the compiler, we may need to set or change some
3589: other defaults.
3590if $test -f cc.cbu; then
3591 . ./cc.cbu
3592fi
4e2a5f63
AD
3593echo " "
3594echo "Checking for GNU cc in disguise and/or its version number..." >&4
3595$cat >gccvers.c <<EOM
3596#include <stdio.h>
3597int main() {
3598#ifdef __GNUC__
3599#ifdef __VERSION__
3600 printf("%s\n", __VERSION__);
3601#else
3602 printf("%s\n", "1");
3603#endif
3604#endif
3605 exit(0);
3606}
3607EOM
3608if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3609 gccversion=`./gccvers`
3610 case "$gccversion" in
2afac517 3611 '') echo "You are not using GNU cc." ;;
3612 *) echo "You are using GNU cc $gccversion." ;;
3613 esac
3614else
3615 echo " "
3616 echo "*** WHOA THERE!!! ***" >&4
3617 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3618 case "$knowitall" in
3619 '')
3620 echo " You'd better start hunting for one and let me know about it." >&4
3621 exit 1
2c7991dc 3622 ;;
8e07c86e 3623 esac
2afac517 3624fi
3625$rm -f gccvers*
3626case "$gccversion" in
36271*) cpp=`./loc gcc-cpp $cpp $pth` ;;
8e07c86e
AD
3628esac
3629
2afac517 3630: What should the include directory be ?
8e07c86e 3631echo " "
2afac517 3632$echo $n "Hmm... $c"
3633dflt='/usr/include'
3634incpath=''
3635mips_type=''
3636if $test -f /bin/mips && /bin/mips; then
3637 echo "Looks like a MIPS system..."
3638 $cat >usr.c <<'EOCP'
3639#ifdef SYSTYPE_BSD43
3640/bsd43
3641#endif
3642EOCP
3643 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3644 dflt='/bsd43/usr/include'
3645 incpath='/bsd43'
3646 mips_type='BSD 4.3'
8e07c86e 3647 else
2afac517 3648 mips_type='System V'
8e07c86e 3649 fi
2afac517 3650 $rm -f usr.c usr.out
3651 echo "and you're compiling with the $mips_type compiler and libraries."
3652 xxx_prompt=y
3653 echo "exit 0" >mips
8e07c86e 3654else
2afac517 3655 echo "Doesn't look like a MIPS system."
3656 xxx_prompt=n
3657 echo "exit 1" >mips
3658fi
3659chmod +x mips
3660$eunicefix mips
2afac517 3661case "$usrinc" in
3662'') ;;
3663*) dflt="$usrinc";;
3664esac
3665case "$xxx_prompt" in
3666y) fn=d/
dfe9444c 3667 echo " "
2afac517 3668 rp='Where are the include files you want to use?'
3669 . ./getfile
3670 usrinc="$ans"
3671 ;;
3672*) usrinc="$dflt"
3673 ;;
3674esac
8e07c86e 3675
c4f23d77
AD
3676: see how we invoke the C preprocessor
3677echo " "
3678echo "Now, how can we feed standard input to your C preprocessor..." >&4
3679cat <<'EOT' >testcpp.c
3680#define ABC abc
3681#define XYZ xyz
3682ABC.XYZ
3683EOT
3684cd ..
1cfa4ec7
GS
3685if test ! -f cppstdin; then
3686 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3687else
3688 echo "Keeping your $hint cppstdin wrapper."
3689fi
c4f23d77
AD
3690chmod 755 cppstdin
3691wrapper=`pwd`/cppstdin
3692ok='false'
3693cd UU
3694
3695if $test "X$cppstdin" != "X" && \
3696 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3697 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3698then
3699 echo "You used to use $cppstdin $cppminus so we'll use that again."
3700 case "$cpprun" in
3701 '') echo "But let's see if we can live without a wrapper..." ;;
3702 *)
3703 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3704 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3705 then
3706 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3707 ok='true'
3708 else
3709 echo "(However, $cpprun $cpplast does not work, let's see...)"
3710 fi
3711 ;;
3712 esac
3713else
3714 case "$cppstdin" in
3715 '') ;;
3716 *)
3717 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3718 ;;
3719 esac
3720fi
3721
3722if $ok; then
3723 : nothing
3724elif echo 'Maybe "'"$cc"' -E" will work...'; \
3725 $cc -E <testcpp.c >testcpp.out 2>&1; \
3726 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3727 echo "Yup, it does."
3728 x_cpp="$cc -E"
3729 x_minus='';
3730elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3731 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3732 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3733 echo "Yup, it does."
3734 x_cpp="$cc -E"
3735 x_minus='-';
3736elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3737 $cc -P <testcpp.c >testcpp.out 2>&1; \
3738 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3739 echo "Yipee, that works!"
3740 x_cpp="$cc -P"
3741 x_minus='';
3742elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3743 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3744 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745 echo "At long last!"
3746 x_cpp="$cc -P"
3747 x_minus='-';
3748elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3749 $cpp <testcpp.c >testcpp.out 2>&1; \
3750 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3751 echo "It works!"
3752 x_cpp="$cpp"
3753 x_minus='';
3754elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3755 $cpp - <testcpp.c >testcpp.out 2>&1; \
3756 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3757 echo "Hooray, it works! I was beginning to wonder."
3758 x_cpp="$cpp"
3759 x_minus='-';
3760elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3761 $wrapper <testcpp.c >testcpp.out 2>&1; \
3762 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3763 x_cpp="$wrapper"
3764 x_minus=''
3765 echo "Eureka!"
3766else
3767 dflt=''
3768 rp="No dice. I can't find a C preprocessor. Name one:"
3769 . ./myread
3770 x_cpp="$ans"
3771 x_minus=''
3772 $x_cpp <testcpp.c >testcpp.out 2>&1
3773 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3774 echo "OK, that will do." >&4
3775 else
3776echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3777 exit 1
3778 fi
3779fi
3780
3781case "$ok" in
3782false)
3783 cppstdin="$x_cpp"
3784 cppminus="$x_minus"
3785 cpprun="$x_cpp"
3786 cpplast="$x_minus"
3787 set X $x_cpp
3788 shift
3789 case "$1" in
3790 "$cpp")
3791 echo "Perhaps can we force $cc -E using a wrapper..."
3792 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3793 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3794 then
3795 echo "Yup, we can."
3796 cppstdin="$wrapper"
3797 cppminus='';
3798 else
3799 echo "Nope, we'll have to live without it..."
3800 fi
3801 ;;
3802 esac
3803 case "$cpprun" in
3804 "$wrapper")
3805 cpprun=''
3806 cpplast=''
3807 ;;
3808 esac
3809 ;;
3810esac
3811
3812case "$cppstdin" in
def887e8 3813"$wrapper"|'cppstdin') ;;
c4f23d77
AD
3814*) $rm -f $wrapper;;
3815esac
3816$rm -f testcpp.c testcpp.out
3817
2afac517 3818: Set private lib path
3819case "$plibpth" in
3820'') if ./mips; then
3821 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3822 fi;;
3823esac
3824case "$libpth" in
3825' ') dlist='';;
3826'') dlist="$loclibpth $plibpth $glibpth";;
3827*) dlist="$libpth";;
3828esac
8e07c86e 3829
2afac517 3830: Now check and see which directories actually exist, avoiding duplicates
3831libpth=''
3832for xxx in $dlist
3833do
3834 if $test -d $xxx; then
3835 case " $libpth " in
3836 *" $xxx "*) ;;
3837 *) libpth="$libpth $xxx";;
3838 esac
3839 fi
3840done
3841$cat <<'EOM'
8e07c86e 3842
2afac517 3843Some systems have incompatible or broken versions of libraries. Among
3844the directories listed in the question below, please remove any you
3845know not to be holding relevant libraries, and add any that are needed.
3846Say "none" for none.
8e07c86e 3847
8e07c86e 3848EOM
2afac517 3849case "$libpth" in
3850'') dflt='none';;
3851*)
3852 set X $libpth
3853 shift
3854 dflt=${1+"$@"}
4633a7c4 3855 ;;
8e07c86e 3856esac
2afac517 3857rp="Directories to use for library searches?"
3858. ./myread
3859case "$ans" in
3860none) libpth=' ';;
3861*) libpth="$ans";;
3862esac
8e07c86e 3863
2afac517 3864: compute shared library extension
3865case "$so" in
3866'')
3867 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3868 dflt='sl'
3869 else
3870 dflt='so'
3871 fi
3872 ;;
3873*) dflt="$so";;
8e07c86e 3874esac
2afac517 3875$cat <<EOM
8e07c86e 3876
2afac517 3877On some systems, shared libraries may be available. Answer 'none' if
3878you want to suppress searching of shared libraries for the remaining
3879of this configuration.
8e07c86e
AD
3880
3881EOM
2afac517 3882rp='What is the file extension used for shared libraries?'
3883. ./myread
3884so="$ans"
8e07c86e 3885
dfe9444c
AD
3886: Define several unixisms.
3887: Hints files or command line option can be used to override them.
3888: The convoluted testing is in case hints files set either the old
3889: or the new name.
3890case "$_exe" in
3891'') case "$exe_ext" in
3892 '') ;;
3893 *) _exe="$exe_ext" ;;
3894 esac
3895 ;;
3896esac
3897case "$_a" in
3898'') case "$lib_ext" in
3899 '') _a='.a';;
3900 *) _a="$lib_ext" ;;
3901 esac
3902 ;;
3903esac
3904case "$_o" in
3905'') case "$obj_ext" in
3906 '') _o='.o';;
3907 *) _o="$obj_ext";;
3908 esac
3909 ;;
3910esac
3911case "$p_" in
3912'') case "$path_sep" in
3913 '') p_=':';;
3914 *) p_="$path_sep";;
3915 esac
3916 ;;
3917esac
3918exe_ext=$_exe
3919lib_ext=$_a
3920obj_ext=$_o
3921path_sep=$p_
3922
3923: Which makefile gets called first. This is used by make depend.
3924case "$firstmakefile" in
3925'') firstmakefile='makefile';;
3926esac
3927
2afac517 3928: Looking for optional libraries
3929echo " "
3930echo "Checking for optional libraries..." >&4
3931case "$libs" in
3932' '|'') dflt='';;
3933*) dflt="$libs";;
8e07c86e 3934esac
2afac517 3935case "$libswanted" in
3936'') libswanted='c_s';;
3937esac
3938for thislib in $libswanted; do
3939
1cfa4ec7
GS
3940 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3941 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
2afac517 3942 echo "Found -l$thislib (shared)."
3943 case " $dflt " in
3944 *"-l$thislib "*);;
3945 *) dflt="$dflt -l$thislib";;
4633a7c4 3946 esac
2afac517 3947 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3948 echo "Found -l$thislib (shared)."
3949 case " $dflt " in
3950 *"-l$thislib "*);;
3951 *) dflt="$dflt -l$thislib";;
3952 esac
dfe9444c 3953 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
2afac517 3954 echo "Found -l$thislib."
3955 case " $dflt " in
3956 *"-l$thislib "*);;
3957 *) dflt="$dflt -l$thislib";;
3958 esac
dfe9444c 3959 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
2afac517 3960 echo "Found -l$thislib."
3961 case " $dflt " in
3962 *"-l$thislib "*);;
3963 *) dflt="$dflt -l$thislib";;
3964 esac
dfe9444c 3965 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
2afac517 3966 echo "Found -l${thislib}_s."
3967 case " $dflt " in
3968 *"-l$thislib "*);;
3969 *) dflt="$dflt -l${thislib}_s";;
3970 esac
dfe9444c 3971 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
2afac517 3972 echo "Found -l$thislib."
3973 case " $dflt " in
3974 *"-l$thislib "*);;
3975 *) dflt="$dflt -l$thislib";;
3976 esac
3977 else
3978 echo "No -l$thislib."
3979 fi
3980done
3981set X $dflt
3982shift
3983dflt="$*"
3984case "$libs" in
3985'') dflt="$dflt";;
3986*) dflt="$libs";;
3987esac
3988case "$dflt" in
3989' '|'') dflt='none';;
8e07c86e 3990esac
2afac517 3991
4633a7c4
LW
3992$cat <<EOM
3993
2afac517 3994Some versions of Unix support shared libraries, which make executables smaller
3995but make load time slightly longer.
8e07c86e 3996
2afac517 3997On some systems, mostly System V Release 3's, the shared library is included
3998by putting the option "-lc_s" as the last thing on the cc command line when
3999linking. Other systems use shared libraries by default. There may be other
4000libraries needed to compile $package on your machine as well. If your system
4001needs the "-lc_s" option, include it here. Include any other special libraries
4002here as well. Say "none" for none.
4633a7c4 4003EOM
2afac517 4004
4005echo " "
4006rp="Any additional libraries?"
8e07c86e 4007. ./myread
2afac517 4008case "$ans" in
4009none) libs=' ';;
4010*) libs="$ans";;
4011esac
8e07c86e 4012
2afac517 4013: determine optimize, if desired, or use for debug flag also
4014case "$optimize" in
2ae324a7 4015' '|$undef) dflt='none';;
2afac517 4016'') dflt='-O';;
4017*) dflt="$optimize";;
4633a7c4 4018esac
2afac517 4019$cat <<EOH
4633a7c4 4020
760ac839 4021Some C compilers have problems with their optimizers. By default, $package
4633a7c4
LW
4022compiles with the -O flag to use the optimizer. Alternately, you might want
4023to use the symbolic debugger, which uses the -g flag (on traditional Unix
4024systems). Either flag can be specified here. To use neither flag, specify
4025the word "none".
4026
4027EOH
4028rp="What optimizer/debugger flag should be used?"
4029. ./myread
4030optimize="$ans"
4031case "$optimize" in
4032'none') optimize=" ";;
4033esac
4034
4035dflt=''
25f94b33
AD
4036: We will not override a previous value, but we might want to
4037: augment a hint file
4038case "$hint" in
4039none|recommended)
4633a7c4
LW
4040 case "$gccversion" in
4041 1*) dflt='-fpcc-struct-return' ;;
4042 esac
4043 case "$optimize" in
4044 *-g*) dflt="$dflt -DDEBUGGING";;
4045 esac
4046 case "$gccversion" in
4047 2*) if test -d /etc/conf/kconfig.d &&
4048 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4049 then
4050 dflt="$dflt -posix"
4051 fi
4052 ;;
4053 esac
4054 ;;
4055esac
4056
a4f3eea9 4057case "$mips_type" in
4058*BSD*|'') inclwanted="$locincpth $usrinc";;
4059*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4060esac
4061for thisincl in $inclwanted; do
4062 if $test -d $thisincl; then
4063 if $test x$thisincl != x$usrinc; then
4064 case "$dflt" in
4065 *$thisincl*);;
4066 *) dflt="$dflt -I$thisincl";;
4067 esac
4068 fi
4069 fi
4070done
4071
4072inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4073 xxx=true;
4074elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4075 xxx=true;
4076else
4077 xxx=false;
4078fi;
4079if $xxx; then
4080 case "$dflt" in
4081 *$2*);;
4082 *) dflt="$dflt -D$2";;
4083 esac;
4084fi'
4085
ccc7f9b3 4086set signal.h LANGUAGE_C; eval $inctest
a4f3eea9 4087
4088case "$hint" in
4089none|recommended) dflt="$ccflags $dflt" ;;
4090*) dflt="$ccflags";;
4091esac
4092
4093case "$dflt" in
4094''|' ') dflt=none;;
4095esac
4096$cat <<EOH
4097
4098Your C compiler may want other flags. For this question you should include
4099-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4100but you should NOT include libraries or ld flags like -lwhatever. If you
4101want $package to honor its debug switch, you should include -DDEBUGGING here.
dfe9444c 4102Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
a4f3eea9 4103
4104To use no flags, specify the word "none".
4105
4106EOH
4107set X $dflt
4108shift
4109dflt=${1+"$@"}
4110rp="Any additional cc flags?"
4111. ./myread
4112case "$ans" in
4113none) ccflags='';;
4114*) ccflags="$ans";;
4115esac
4116
4117: the following weeds options from ccflags that are of no interest to cpp
4118cppflags="$ccflags"
4119case "$gccversion" in
41201*) cppflags="$cppflags -D__GNUC__"
4121esac
4122case "$mips_type" in
4123'');;
4124*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4125esac
4126case "$cppflags" in
4127'');;
4128*)
4129 echo " "
4130 echo "Let me guess what the preprocessor flags are..." >&4
4131 set X $cppflags
4132 shift
4133 cppflags=''
4134 $cat >cpp.c <<'EOM'
4135#define BLURFL foo
4136
4137BLURFL xx LFRULB
4138EOM
4139 previous=''
4140 for flag in $*
4141 do
4142 case "$flag" in
4143 -*) ftry="$flag";;
4144 *) ftry="$previous $flag";;
4145 esac
7bac28a0 4146 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
a4f3eea9 4147 >cpp1.out 2>/dev/null && \
dfe9444c 4148 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
a4f3eea9 4149 >cpp2.out 2>/dev/null && \
4150 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4151 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4152 then
4153 cppflags="$cppflags $ftry"
4154 previous=''
4155 else
4156 previous="$flag"
4157 fi
4158 done
4159 set X $cppflags
4160 shift
4161 cppflags=${1+"$@"}
4162 case "$cppflags" in
4163 *-*) echo "They appear to be: $cppflags";;
4164 esac
4165 $rm -f cpp.c cpp?.out
4166 ;;
4167esac
4168
4169: flags used in final linking phase
a4f3eea9 4170case "$ldflags" in
4171'') if ./venix; then
4172 dflt='-i -z'
4173 else
4174 dflt=''
4175 fi
4176 case "$ccflags" in
4177 *-posix*) dflt="$dflt -posix" ;;
4178 esac
4179 ;;
4180*) dflt="$ldflags";;
4181esac
4182
4183: Try to guess additional flags to pick up local libraries.
4184for thislibdir in $libpth; do
4185 case " $loclibpth " in
4186 *" $thislibdir "*)
4187 case "$dflt " in
4188 *"-L$thislibdir "*) ;;
4189 *) dflt="$dflt -L$thislibdir" ;;
4190 esac
4191 ;;
4192 esac
4193done
4194
4195case "$dflt" in
4196'') dflt='none' ;;
4197esac
4198
4199$cat <<EOH
4200
4201Your C linker may need flags. For this question you should
4202include -L/whatever and any other flags used by the C linker, but you
4203should NOT include libraries like -lwhatever.
4204
4205Make sure you include the appropriate -L/path flags if your C linker
4206does not normally search all of the directories you specified above,
4207namely
4208 $libpth
4209To use no flags, specify the word "none".
4210
4211EOH
4212
4213rp="Any additional ld flags (NOT including libraries)?"
4214. ./myread
4215case "$ans" in
4216none) ldflags='';;
4217*) ldflags="$ans";;
4218esac
4219rmlist="$rmlist pdp11"
4220
4221: coherency check
4222echo " "
dfe9444c 4223echo "Checking your choice of C compiler and flags for coherency..." >&4
5ff3f7a4
GS
4224$cat > try.c <<'EOF'
4225#include <stdio.h>
732c9516 4226int main() { printf("Ok\n"); exit(0); }
5ff3f7a4 4227EOF
87563a30 4228set X $cc $optimize $ccflags -o try $ldflags try.c $libs
a4f3eea9 4229shift
5ff3f7a4
GS
4230$cat >try.msg <<'EOM'
4231I've tried to compile and run the following simple program:
4232
4233EOM
a83b1ac8 4234$cat try.c >> try.msg
5ff3f7a4
GS
4235
4236$cat >> try.msg <<EOM
4237
4238I used the command:
a4f3eea9 4239
4240 $*
4241 ./try
4242
4243and I got the following output:
4244
4245EOM
a4f3eea9 4246dflt=y
28e8609d 4247if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
a4f3eea9 4248 if sh -c './try' >>try.msg 2>&1; then
dfe9444c
AD
4249 xxx=`./try`
4250 case "$xxx" in
4251 "Ok") dflt=n ;;
4252 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4253 case " $libs " in
4254 *" -lsfio "*)
4255 cat >> try.msg <<'EOQS'
4256If $libs contains -lsfio, and sfio is mis-configured, then it
4257sometimes (apparently) runs and exits with a 0 status, but with no
4258output! It may have to do with sfio's use of _exit vs. exit.
4259
4260EOQS
4261 rp="You have a big problem. Shall I abort Configure"
4262 dflt=y
4263 ;;
4264 esac
4265 ;;
4266 esac
a4f3eea9 4267 else
4268 echo "The program compiled OK, but exited with status $?." >>try.msg
dfe9444c 4269 rp="You have a problem. Shall I abort Configure"
a4f3eea9 4270 dflt=y
4271 fi
4272else
4273 echo "I can't compile the test program." >>try.msg
dfe9444c 4274 rp="You have a BIG problem. Shall I abort Configure"
a4f3eea9 4275 dflt=y
4276fi
4277case "$dflt" in
4278y)
97286747 4279 $cat try.msg >&4
a4f3eea9 4280 case "$knowitall" in
4281 '')
5ff3f7a4 4282 echo "(The supplied flags or libraries might be incorrect.)"
a4f3eea9 4283 ;;
4284 *) dflt=n;;
4285 esac
4286 echo " "
4287 . ./myread
4288 case "$ans" in
4289 n*|N*) ;;
4290 *) echo "Ok. Stopping Configure." >&4
4291 exit 1
4292 ;;
4293 esac
4294 ;;
4295n) echo "OK, that should do.";;
4296esac
4297$rm -f try try.* core
4298
bfb7748a
AD
4299: determine filename position in cpp output
4300echo " "
4301echo "Computing filename position in cpp output for #include directives..." >&4
4302echo '#include <stdio.h>' > foo.c
4303$cat >fieldn <<EOF
4304$startsh
4305$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4306$grep '^[ ]*#.*stdio\.h' | \
4307while read cline; do
4308 pos=1
4309 set \$cline
4310 while $test \$# -gt 0; do
4311 if $test -r \`echo \$1 | $tr -d '"'\`; then
4312 echo "\$pos"
4313 exit 0
4314 fi
4315 shift
4316 pos=\`expr \$pos + 1\`
4317 done
4318done
4319EOF
4320chmod +x fieldn
4321fieldn=`./fieldn`
4322$rm -f foo.c fieldn
4323case $fieldn in
4324'') pos='???';;
43251) pos=first;;
43262) pos=second;;
43273) pos=third;;
4328*) pos="${fieldn}th";;
4329esac
4330echo "Your cpp writes the filename in the $pos field of the line."
4331
4332: locate header file
4333$cat >findhdr <<EOF
4334$startsh
4335wanted=\$1
4336name=''
4337if test -f $usrinc/\$wanted; then
4338 echo "$usrinc/\$wanted"
4339 exit 0
4340fi
4341awkprg='{ print \$$fieldn }'
4342echo "#include <\$wanted>" > foo\$\$.c
4343$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4344$grep "^[ ]*#.*\$wanted" | \
4345while read cline; do
4346 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4347 case "\$name" in
4348 */\$wanted) echo "\$name"; exit 0;;
4349 *) name='';;
4350 esac;
4351done;
4352$rm -f foo\$\$.c;
4353case "\$name" in
4354'') exit 1;;
4355esac
4356EOF
4357chmod +x findhdr
4358
4359: define an alternate in-header-list? function
4360inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4361cont=true; xxf="echo \"<\$1> found.\" >&4";
4362case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4363*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4364esac;
4365case $# in 4) instead=instead;; *) instead="at last";; esac;
4366while $test "$cont"; do
4367 xxx=`./findhdr $1`
4368 var=$2; eval "was=\$$2";
4369 if $test "$xxx" && $test -r "$xxx";
4370 then eval $xxf;
4371 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4372 cont="";
4373 else eval $xxnf;
4374 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4375 set $yyy; shift; shift; yyy=$@;
4376 case $# in 0) cont="";;
4377 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4378 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4379 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4380 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4381 esac;
4382done;
4383while $test "$yyy";
4384do set $yyy; var=$2; eval "was=\$$2";
4385 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4386 set $yyy; shift; shift; yyy=$@;
4387done'
4388
4389: see if this is a malloc.h system
4390set malloc.h i_malloc
4391eval $inhdr
4392
4393: see if stdlib is available
4394set stdlib.h i_stdlib
4395eval $inhdr
4396
4397: determine which malloc to compile in
4398echo " "
4399case "$usemymalloc" in
5ff3f7a4
GS
4400''|[yY]*|true|$define) dflt='y' ;;
4401*) dflt='n' ;;
bfb7748a
AD
4402esac
4403rp="Do you wish to attempt to use the malloc that comes with $package?"
4404. ./myread
4405usemymalloc="$ans"
4406case "$ans" in
4407y*|true)
4408 usemymalloc='y'
4409 mallocsrc='malloc.c'
4410 mallocobj="malloc$_o"
4411 d_mymalloc="$define"
4412 case "$libs" in
4413 *-lmalloc*)
4414 : Remove malloc from list of libraries to use
4415 echo "Removing unneeded -lmalloc from library list" >&4
4416 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4417 shift
4418 libs="$*"
4419 echo "libs = $libs" >&4
4420 ;;
4421 esac
4422 ;;
4423*)
4424 usemymalloc='n'
4425 mallocsrc=''
4426 mallocobj=''
4427 d_mymalloc="$undef"
4428 ;;
4429esac
4430
4431: compute the return types of malloc and free
4432echo " "
4433$cat >malloc.c <<END
4434#$i_malloc I_MALLOC
4435#$i_stdlib I_STDLIB
4436#include <stdio.h>
4437#include <sys/types.h>
4438#ifdef I_MALLOC
4439#include <malloc.h>
4440#endif
4441#ifdef I_STDLIB
4442#include <stdlib.h>
4443#endif
4444#ifdef TRY_MALLOC
4445void *malloc();
4446#endif
4447#ifdef TRY_FREE
4448void free();
4449#endif
4450END
4451case "$malloctype" in
4452'')
4453 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4454 malloctype='void *'
4455 else
4456 malloctype='char *'
4457 fi
4458 ;;
4459esac
4460echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4461
4462case "$freetype" in
4463'')
4464 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4465 freetype='void'
4466 else
4467 freetype='int'
4468 fi
4469 ;;
4470esac
4471echo "Your system uses $freetype free(), it would seem." >&4
4472$rm -f malloc.[co]
c4f23d77
AD
4473: Cruising for prototypes
4474echo " "
4475echo "Checking out function prototypes..." >&4
4476$cat >prototype.c <<'EOCP'
5a411a32 4477int main(int argc, char *argv[]) {
c4f23d77
AD
4478 exit(0);}
4479EOCP
4480if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4481 echo "Your C compiler appears to support function prototypes."
4482 val="$define"
4483else
4484 echo "Your C compiler doesn't seem to understand function prototypes."
4485 val="$undef"
4486fi
4487set prototype
4488eval $setvar
4489$rm -f prototype*
4490
4491case "$prototype" in
4492"$define") ;;
4493*) ansi2knr='ansi2knr'
4494 echo " "
4495 cat <<EOM >&4
4496
4497$me: FATAL ERROR:
4498This version of $package can only be compiled by a compiler that
4499understands function prototypes. Unfortunately, your C compiler
4500 $cc $ccflags
4501doesn't seem to understand them. Sorry about that.
4502
5ff3f7a4 4503If GNU cc is available for your system, perhaps you could try that instead.
c4f23d77
AD
4504
4505Eventually, we hope to support building Perl with pre-ANSI compilers.
4506If you would like to help in that effort, please contact <perlbug@perl.org>.
4507
4508Aborting Configure now.
4509EOM
4510 exit 2
4511 ;;
4512esac
4513
4514: determine where public executables go
4515echo " "
4516set dflt bin bin
4517eval $prefixit
4518fn=d~
4519rp='Pathname where the public executables will reside?'
4520. ./getfile
4521if $test "X$ansexp" != "X$binexp"; then
4522 installbin=''
4523fi
4524bin="$ans"
4525binexp="$ansexp"
4526if $afs; then
4527 $cat <<EOM
4528
4529Since you are running AFS, I need to distinguish the directory in which
4530executables reside from the directory in which they are installed (and from
4531which they are presumably copied to the former directory by occult means).
4532
4533EOM
4534 case "$installbin" in
4535 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4536 *) dflt="$installbin";;
4537 esac
4538 fn=de~
4539 rp='Where will public executables be installed?'
4540 . ./getfile
4541 installbin="$ans"
4542else
4543 installbin="$binexp"
4544fi
4545
104d25b7
JH
4546: determine whether to install perl also as /usr/bin/perl
4547
4548echo " "
472a4973 4549if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
104d25b7
JH
4550 $cat <<EOM
4551Many scripts expect to perl to be installed as /usr/bin/perl.
4552I can install the perl you are about to compile also as /usr/bin/perl
4553(in addition to $installbin/perl).
4554EOM
472a4973
JH
4555 case "$installusrbinperl" in
4556 "$undef"|[nN]*) dflt='n';;
4557 *) dflt='y';;
4558 esac
104d25b7
JH
4559 rp="Do you want to install perl as /usr/bin/perl?"
4560 . ./myread
4561 case "$ans" in
4562 [yY]*) val="$define";;
472a4973 4563 *) val="$undef" ;;
104d25b7 4564 esac
472a4973
JH
4565else
4566 val="$undef"
4567fi
104d25b7
JH
4568set installusrbinperl
4569eval $setvar
4570
dfe9444c
AD
4571: define a shorthand compile call
4572compile='
4573mc_file=$1;
4574shift;
c4f23d77 4575$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
dc45a647
MB
4576: define a shorthand compile call for compilations that should be ok.
4577compile_ok='
4578mc_file=$1;
4579shift;
c4f23d77 4580$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
dfe9444c 4581
a4f3eea9 4582echo " "
4583echo "Checking for GNU C Library..." >&4
4584cat >gnulibc.c <<EOM
aebf16e7 4585#include <stdio.h>
5a411a32 4586int main()
a4f3eea9 4587{
aebf16e7
AD
4588#ifdef __GLIBC__
4589 exit(0);
4590#else
4591 exit(1);
4592#endif
a4f3eea9 4593}
4594EOM
dfe9444c 4595set gnulibc
aebf16e7 4596if eval $compile_ok && ./gnulibc; then
a4f3eea9 4597 val="$define"
4598 echo "You are using the GNU C Library"
4633a7c4 4599else
a4f3eea9 4600 val="$undef"
4601 echo "You are not using the GNU C Library"
4633a7c4 4602fi
a4f3eea9 4603$rm -f gnulibc*
4604set d_gnulibc
4605eval $setvar
25f94b33 4606
a4f3eea9 4607: see if nm is to be used to determine whether a symbol is defined or not
4608case "$usenm" in
4609'')
dc45a647 4610 dflt=''
a4f3eea9 4611 case "$d_gnulibc" in
dc45a647
MB
4612 "$define")
4613 echo " "
4614 echo "nm probably won't work on the GNU C Library." >&4
a4f3eea9 4615 dflt=n
4616 ;;
dc45a647
MB
4617 esac
4618 case "$dflt" in
4619 '')
4620 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4621 echo " "
4622 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4623 echo "'nm' won't be sufficient on this sytem." >&4
4624 dflt=n
4625 fi
4626 ;;
4627 esac
4628 case "$dflt" in
c4f23d77 4629 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
a4f3eea9 4630 if $test $dflt -gt 20; then
4631 dflt=y
4632 else
4633 dflt=n
4634 fi
4635 ;;
4636 esac
4637 ;;
4638*)
4639 case "$usenm" in
dc45a647 4640 true|$define) dflt=y;;
a4f3eea9 4641 *) dflt=n;;
4642 esac
4643 ;;
25f94b33 4644esac
a4f3eea9 4645$cat <<EOM
4633a7c4 4646
dc45a647
MB
4647I can use $nm to extract the symbols from your C libraries. This
4648is a time consuming task which may generate huge output on the disk (up
4649to 3 megabytes) but that should make the symbols extraction faster. The
4650alternative is to skip the 'nm' extraction part and to compile a small
4651test program instead to determine whether each symbol is present. If
4652you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4653this may be the best solution.
4654
4655You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4633a7c4 4656
a4f3eea9 4657EOM
693762b4 4658rp="Shall I use $nm to extract C symbols from the libraries?"
4633a7c4
LW
4659. ./myread
4660case "$ans" in
dc45a647 4661[Nn]*) usenm=false;;
a4f3eea9 4662*) usenm=true;;
4633a7c4
LW
4663esac
4664
a4f3eea9 4665runnm=$usenm
4666case "$reuseval" in
4667true) runnm=false;;
4633a7c4 4668esac
a4f3eea9 4669
4670: nm options which may be necessary
4671case "$nm_opt" in
4672'') if $test -f /mach_boot; then
1e422769 4673 nm_opt='' # Mach
a4f3eea9 4674 elif $test -d /usr/ccs/lib; then
1e422769 4675 nm_opt='-p' # Solaris (and SunOS?)
a4f3eea9 4676 elif $test -f /dgux; then
1e422769 4677 nm_opt='-p' # DG-UX
2ae324a7 4678 elif $test -f /lib64/rld; then
1e422769 4679 nm_opt='-p' # 64-bit Irix
a4f3eea9 4680 else
4681 nm_opt=''
4682 fi;;
4633a7c4 4683esac
4633a7c4 4684
a4f3eea9 4685: nm options which may be necessary for shared libraries but illegal
4686: for archive libraries. Thank you, Linux.
4687case "$nm_so_opt" in
4688'') case "$myuname" in
4689 *linux*)
693762b4 4690 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
a4f3eea9 4691 nm_so_opt='--dynamic'
4633a7c4 4692 fi
a4f3eea9 4693 ;;
4633a7c4 4694 esac
4633a7c4
LW
4695 ;;
4696esac
4697
a4f3eea9 4698case "$runnm" in
4699true)
4700: get list of predefined functions in a handy place
4701echo " "
4702case "$libc" in
4703'') libc=unknown
4704 case "$libs" in
dfe9444c 4705 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
a4f3eea9 4706 esac
4707 ;;
4708esac
4709libnames='';
4710case "$libs" in
4711'') ;;
4712*) for thislib in $libs; do
4713 case "$thislib" in
4714 -lc|-lc_s)
4715 : Handle C library specially below.
4716 ;;
4717 -l*)
4718 thislib=`echo $thislib | $sed -e 's/^-l//'`
4719 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4720 :
4721 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4722 :
dfe9444c 4723 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
a4f3eea9 4724 :
dfe9444c 4725 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
d97d40b5 4726 :
a4f3eea9 4727 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4728 :
4729 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4730 :
dfe9444c 4731 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
a4f3eea9 4732 :
4733 else
4734 try=''
4735 fi
4736 libnames="$libnames $try"
4737 ;;
4738 *) libnames="$libnames $thislib" ;;
4739 esac
4740 done
4741 ;;
4742esac
4743xxx=normal
4744case "$libc" in
4745unknown)
4746 set /lib/libc.$so
4747 for xxx in $libpth; do
4748 $test -r $1 || set $xxx/libc.$so
4749 : The messy sed command sorts on library version numbers.
4750 $test -r $1 || \
4751 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
28e8609d 4752 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
a4f3eea9 4753 h
4754 s/[0-9][0-9]*/0000&/g
4755 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4756 G
4757 s/\n/ /' | \
dfe9444c 4758 sort | $sed -e 's/^.* //'`
a4f3eea9 4759 eval set \$$#
4760 done
4761 $test -r $1 || set /usr/ccs/lib/libc.$so
dfe9444c
AD
4762 $test -r $1 || set /lib/libsys_s$_a
4763 ;;
a4f3eea9 4764*)
4765 set blurfl
4766 ;;
4767esac
4768if $test -r "$1"; then
4769 echo "Your (shared) C library seems to be in $1."
4770 libc="$1"
4771elif $test -r /lib/libc && $test -r /lib/clib; then
4772 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4773 xxx=apollo
4774 libc='/lib/clib /lib/libc'
4775 if $test -r /lib/syslib; then
4776 echo "(Your math library is in /lib/syslib.)"
4777 libc="$libc /lib/syslib"
4778 fi
4779elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4780 echo "Your C library seems to be in $libc, as you said before."
dfe9444c
AD
4781elif $test -r $incpath/usr/lib/libc$_a; then
4782 libc=$incpath/usr/lib/libc$_a;
a4f3eea9 4783 echo "Your C library seems to be in $libc. That's fine."
dfe9444c
AD
4784elif $test -r /lib/libc$_a; then
4785 libc=/lib/libc$_a;
a4f3eea9 4786 echo "Your C library seems to be in $libc. You're normal."
4787else
dfe9444c 4788 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
a4f3eea9 4789 :
4790 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4791 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4792 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4793 :
dfe9444c 4794 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4795 :
dfe9444c 4796 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4797 :
4633a7c4 4798 else
dfe9444c 4799 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4633a7c4 4800 fi
a4f3eea9 4801 if $test -r "$tans"; then
4802 echo "Your C library seems to be in $tans, of all places."
4803 libc=$tans
4804 else
4805 libc='blurfl'
4806 fi
4807fi
4808if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4809 dflt="$libc"
4810 cat <<EOM
4633a7c4 4811
a4f3eea9 4812If the guess above is wrong (which it might be if you're using a strange
4813compiler, or your machine supports multiple models), you can override it here.
4633a7c4 4814
a4f3eea9 4815EOM
4816else
4817 dflt=''
28e8609d 4818 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
a4f3eea9 4819 cat >&4 <<EOM
4820I can't seem to find your C library. I've looked in the following places:
4633a7c4 4821
a4f3eea9 4822EOM
4823 $sed 's/^/ /' libpath
4824 cat <<EOM
4633a7c4 4825
a4f3eea9 4826None of these seems to contain your C library. I need to get its name...
4633a7c4 4827
a4f3eea9 4828EOM
4829fi
4830fn=f
4831rp='Where is your C library?'
4832. ./getfile
4833libc="$ans"
4633a7c4 4834
4633a7c4 4835echo " "
28e8609d 4836echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
a4f3eea9 4837set X `cat libnames`
4633a7c4 4838shift
a4f3eea9 4839xxx=files
4840case $# in 1) xxx=file; esac
4841echo "Extracting names from the following $xxx for later perusal:" >&4
4842echo " "
4843$sed 's/^/ /' libnames >&4
4844echo " "
4845$echo $n "This may take a while...$c" >&4
4633a7c4 4846
dfe9444c
AD
4847for file in $*; do
4848 case $file in
693762b4
AD
4849 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4850 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4851 esac
dfe9444c 4852done >libc.tmp
4633a7c4 4853
a4f3eea9 4854$echo $n ".$c"
4855$grep fprintf libc.tmp > libc.ptf
4856xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4857xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4858xxx='[ADTSIW]'
4859if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4860 eval $xscan;\
4861 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4862 eval $xrun
4863elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4864 eval $xscan;\
4865 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4866 eval $xrun
4867elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4868 eval $xscan;\
4869 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870 eval $xrun
4871elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4872 eval $xscan;\
4873 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874 eval $xrun
4875elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4876 eval $xscan;\
4877 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878 eval $xrun
4879elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4880 eval $xscan;\
4881 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 eval $xrun
4883elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4884 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4885 eval $xscan;\
4886 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887 eval $xrun
4888elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4889 eval $xscan;\
4890 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891 eval $xrun
4892elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4893 eval $xscan;\
4894 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895 eval $xrun
1e422769 4896elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4897 eval $xscan;\
4898 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4899 eval $xrun
a4f3eea9 4900elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4901 eval $xscan;\
4902 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4903 eval $xrun
4904elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4905 eval $xscan;\
4906 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4907 eval $xrun
44a8e56a 4908elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4909 eval $xscan;\
4910 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4911 eval $xrun
0f502cca
BL
4912elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4913 eval $xscan;\
4914 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4915 eval $xrun
a4f3eea9 4916else
693762b4 4917 $nm -p $* 2>/dev/null >libc.tmp
a4f3eea9 4918 $grep fprintf libc.tmp > libc.ptf
4919 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4920 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4921 then
4922 nm_opt='-p'
4923 eval $xrun
4633a7c4 4924 else
a4f3eea9 4925 echo " "
e5c9fcd0 4926 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
a4f3eea9 4927 com=''
dc45a647
MB
4928 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4929 for thisname in $libnames $libc; do
e5c9fcd0 4930 $ar t $thisname >>libc.tmp
a4f3eea9 4931 done
dfe9444c 4932 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
a4f3eea9 4933 echo "Ok." >&4
dc45a647
MB
4934 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4935 # Repeat libc to extract forwarders to DLL entries too
4936 for thisname in $libnames $libc; do
4937 $ar tv $thisname >>libc.tmp
4938 # Revision 50 of EMX has bug in $ar.
4939 # it will not extract forwarders to DLL entries
4940 # Use emximp which will extract exactly them.
4941 emximp -o tmp.imp $thisname \
4942 2>/dev/null && \
4943 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4944 < tmp.imp >>libc.tmp
4945 $rm tmp.imp
4946 done
4947 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4948 echo "Ok." >&4
a4f3eea9 4949 else
e5c9fcd0 4950 echo "$ar didn't seem to work right." >&4
a4f3eea9 4951 echo "Maybe this is a Cray...trying bld instead..." >&4
dfe9444c 4952 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
a4f3eea9 4953 then
4954 for thisname in $libnames; do
4955 bld t $libnames | \
dfe9444c 4956 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
e5c9fcd0 4957 $ar t $thisname >>libc.tmp
a4f3eea9 4958 done
4959 echo "Ok." >&4
4960 else
4961 echo "That didn't work either. Giving up." >&4
4962 exit 1
4963 fi
4964 fi
4633a7c4 4965 fi
4633a7c4 4966fi
a4f3eea9 4967nm_extract="$com"
4968if $test -f /lib/syscalls.exp; then
4633a7c4 4969 echo " "
a4f3eea9 4970 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
c6912327 4971 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
a4f3eea9 4972fi
4973;;
4974esac
4975$rm -f libnames libpath
4976
2afac517 4977: see if dld is available
4978set dld.h i_dld
4979eval $inhdr
4633a7c4 4980
2afac517 4981: is a C symbol defined?
4982csym='tlook=$1;
4983case "$3" in
4984-v) tf=libc.tmp; tc=""; tdc="";;
4985-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4986*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4987esac;
4988tx=yes;
4989case "$reuseval-$4" in
4990true-) ;;
4991true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4992esac;
4993case "$tx" in
4994yes)
4995 case "$runnm" in
4996 true)
4997 if $contains $tlook $tf >/dev/null 2>&1;
4998 then tval=true;
4999 else tval=false;
5000 fi;;
5001 *)
d674cd6d 5002 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
dfe9444c 5003 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
2afac517 5004 then tval=true;
5005 else tval=false;
5006 fi;
5007 $rm -f t t.c;;
5008 esac;;
5009*)
5010 case "$tval" in
5011 $define) tval=true;;
5012 *) tval=false;;
5013 esac;;
5014esac;
5015eval "$2=$tval"'
4633a7c4 5016
2afac517 5017: define an is-in-libc? function
5018inlibc='echo " "; td=$define; tu=$undef;
5019sym=$1; var=$2; eval "was=\$$2";
5020tx=yes;
5021case "$reuseval$was" in
5022true) ;;
5023true*) tx=no;;
5024esac;
5025case "$tx" in
5026yes)
5027 set $sym tres -f;
5028 eval $csym;
5029 case "$tres" in
5030 true)
5031 echo "$sym() found." >&4;
5032 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5033 *)
5034 echo "$sym() NOT found." >&4;
5035 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5036 esac;;
5037*)
5038 case "$was" in
5039 $define) echo "$sym() found." >&4;;
5040 *) echo "$sym() NOT found." >&4;;
5041 esac;;
5042esac'
4633a7c4 5043
2afac517 5044: see if dlopen exists
5045xxx_runnm="$runnm"
5046runnm=false
5047set dlopen d_dlopen
5048eval $inlibc
5049runnm="$xxx_runnm"
40a7a20a 5050
2afac517 5051: determine which dynamic loading, if any, to compile in
4633a7c4 5052echo " "
2afac517 5053dldir="ext/DynaLoader"
5054case "$usedl" in
5055$define|y|true)
5056 dflt='y'
5057 usedl="$define"
5058 ;;
5059$undef|n|false)
5060 dflt='n'
5061 usedl="$undef"
5062 ;;
5063*)
5064 dflt='n'
5065 case "$d_dlopen" in
5066 $define) dflt='y' ;;
5067 esac
5068 case "$i_dld" in
5069 $define) dflt='y' ;;
4633a7c4 5070 esac
2afac517 5071 : Does a dl_xxx.xs file exist for this operating system
dc45a647 5072 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4633a7c4
LW
5073 ;;
5074esac
2afac517 5075rp="Do you wish to use dynamic loading?"
5076. ./myread
5077usedl="$ans"
5078case "$ans" in
5079y*) usedl="$define"
5080 case "$dlsrc" in
5081 '')
dc45a647 5082 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
2afac517 5083 dflt="$dldir/dl_${osname}.xs"
5084 elif $test "$d_dlopen" = "$define" ; then
5085 dflt="$dldir/dl_dlopen.xs"
5086 elif $test "$i_dld" = "$define" ; then
5087 dflt="$dldir/dl_dld.xs"
4633a7c4 5088 else
2afac517 5089 dflt=''
4633a7c4 5090 fi
4633a7c4 5091 ;;
2afac517 5092 *) dflt="$dldir/$dlsrc"
5093 ;;
4633a7c4 5094 esac
2afac517 5095 echo "The following dynamic loading files are available:"
5096 : Can not go over to $dldir because getfile has path hard-coded in.
dc45a647
MB
5097 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5098 rp="Source file to use for dynamic loading"
5099 fn="fne"
5100 # XXX This getfile call will fail the existence check if you try
5101 # building away from $src (this is not supported yet).
5102 . ./getfile
2afac517 5103 usedl="$define"
5104 : emulate basename
5105 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
2304df62 5106
dc45a647 5107 $cat << EOM
2304df62 5108
2afac517 5109Some systems may require passing special flags to $cc -c to
5110compile modules that will be used to create a shared library.
5111To use no flags, say "none".
2304df62
AD
5112
5113EOM
2afac517 5114 case "$cccdlflags" in
5115 '') case "$gccversion" in
5116 '') case "$osname" in
5117 hpux) dflt='+z' ;;
5118 next) dflt='none' ;;
8cc95fdb 5119 irix*) dflt='-KPIC' ;;
3a6175e1 5120 svr4*|esix*|solaris) dflt='-KPIC' ;;
2afac517 5121 sunos) dflt='-pic' ;;
5122 *) dflt='none' ;;
dfe9444c
AD
5123 esac
5124 ;;
5125 *) case "$osname" in
3a6175e1 5126 svr4*|esix*|solaris) dflt='-fPIC' ;;
dfe9444c 5127 *) dflt='-fpic' ;;
81d89818 5128 esac ;;
2afac517 5129 esac ;;
bfb7748a 5130 ' ') dflt='none' ;;
2afac517 5131 *) dflt="$cccdlflags" ;;
5132 esac
5133 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5134 . ./myread
5135 case "$ans" in
5136 none) cccdlflags=' ' ;;
5137 *) cccdlflags="$ans" ;;
5138 esac
2304df62 5139
2afac517 5140 cat << EOM
ecfc5424 5141
2afac517 5142Some systems use ld to create libraries that can be dynamically loaded,
5143while other systems (such as those using ELF) use $cc.
a0f45b59 5144
2afac517 5145EOM
5146 case "$ld" in
5147 '') $cat >try.c <<'EOM'
5148/* Test for whether ELF binaries are produced */
5149#include <fcntl.h>
5150#include <stdlib.h>
5a411a32 5151int main() {
2afac517 5152 char b[4];
5153 int i = open("a.out",O_RDONLY);
5154 if(i == -1)
5155 exit(1); /* fail */
5156 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5157 exit(0); /* succeed (yes, it's ELF) */
2304df62 5158 else
2afac517 5159 exit(1); /* fail */
5160}
5161EOM
5162 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5163 cat <<EOM
5164You appear to have ELF support. I'll use $cc to build dynamic libraries.
5165EOM
5166 dflt="$cc"
2304df62 5167 else
2afac517 5168 echo "I'll use ld to build dynamic libraries."
5169 dflt='ld'
2304df62 5170 fi
2afac517 5171 rm -f try.c a.out
5172 ;;
5173 *) dflt="$ld"
5174 ;;
5175 esac
5176
5177 rp="What command should be used to create dynamic libraries?"
5178 . ./myread
5179 ld="$ans"
5180
5181 cat << EOM
5182
5183Some systems may require passing special flags to $ld to create a
5184library that can be dynamically loaded. If your ld flags include
5185-L/other/path options to locate libraries outside your loader's normal
5186search path, you may need to specify those -L options here as well. To
5187use no flags, say "none".
5188
5189EOM
5190 case "$lddlflags" in
5191 '') case "$osname" in
46193409 5192 beos) dflt='-nostart' ;;
2afac517 5193 hpux) dflt='-b' ;;
5194 linux|irix*) dflt='-shared' ;;
5195 next) dflt='none' ;;
5196 solaris) dflt='-G' ;;
5197 sunos) dflt='-assert nodefinitions' ;;
5198 svr4*|esix*) dflt="-G $ldflags" ;;
5199 *) dflt='none' ;;
5200 esac
5201 ;;
5202 *) dflt="$lddlflags" ;;
5203 esac
5204
bfb7748a 5205 : Try to guess additional flags to pick up local libraries.
a0915cb7
AD
5206 : Be careful not to append to a plain 'none'
5207 case "$dflt" in
5208 none) dflt='' ;;
5209 esac
bfb7748a
AD
5210 for thisflag in $ldflags; do
5211 case "$thisflag" in
5212 -L*)
5213 case " $dflt " in
5214 *" $thisflag "*) ;;
5215 *) dflt="$dflt $thisflag" ;;
5216 esac
5217 ;;
2afac517 5218 esac
bfb7748a 5219 done
2afac517 5220
bfb7748a
AD
5221 case "$dflt" in
5222 ''|' ') dflt='none' ;;
5223 esac
2afac517 5224
5225 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5226 . ./myread
5227 case "$ans" in
5228 none) lddlflags=' ' ;;
5229 *) lddlflags="$ans" ;;
5230 esac
5231
5232 cat <<EOM
5233
5234Some systems may require passing special flags to $cc to indicate that
5235the resulting executable will use dynamic linking. To use no flags,
5236say "none".
5237
5238EOM
5239 case "$ccdlflags" in
5240 '') case "$osname" in
5241 hpux) dflt='-Wl,-E' ;;
5242 linux) dflt='-rdynamic' ;;
5243 next) dflt='none' ;;
5244 sunos) dflt='none' ;;
5245 *) dflt='none' ;;
5246 esac ;;
bfb7748a 5247 ' ') dflt='none' ;;
2afac517 5248 *) dflt="$ccdlflags" ;;
5249 esac
5250 rp="Any special flags to pass to $cc to use dynamic loading?"
5251 . ./myread
5252 case "$ans" in
5253 none) ccdlflags=' ' ;;
5254 *) ccdlflags="$ans" ;;
5255 esac
5256 ;;
5257*) usedl="$undef"
5258 ld='ld'
5259 dlsrc='dl_none.xs'
5260 lddlflags=''
5261 ccdlflags=''
5262 ;;
5263esac
5264
5265also=''
5266case "$usedl" in
5267$undef)
5268 # No dynamic loading being used, so don't bother even to prompt.
5269 useshrplib='false'
5270 ;;
5271*) case "$useshrplib" in
5272 '') case "$osname" in
46193409 5273 svr4*|dgux|dynixptx|esix|powerux|beos)
3e3baf6d 5274 dflt=y
2afac517 5275 also='Building a shared libperl is required for dynamic loading to work on your system.'
5276 ;;
5277 next*)
5278 case "$osvers" in
3e3baf6d 5279 4*) dflt=y
2afac517 5280 also='Building a shared libperl is needed for MAB support.'
5281 ;;
3e3baf6d 5282 *) dflt=n
2afac517 5283 ;;
5284 esac
5285 ;;
3e3baf6d 5286 *) dflt=n
2afac517 5287 ;;
5288 esac
5289 ;;
5290 $define|true|[Yy]*)
3e3baf6d 5291 dflt=y
2afac517 5292 ;;
3e3baf6d 5293 *) dflt=n
2afac517 5294 ;;
5295 esac
5296 $cat << EOM
5297
5298The perl executable is normally obtained by linking perlmain.c with
dfe9444c 5299libperl${_a}, any static extensions (usually just DynaLoader), and
2afac517 5300any other libraries needed on this system (such as -lm, etc.). Since
5301your system supports dynamic loading, it is probably possible to build
5302a shared libperl.$so. If you will have more than one executable linked
5303to libperl.$so, this will significantly reduce the size of each
5304executable, but it may have a noticeable affect on performance. The
5305default is probably sensible for your system.
5306$also
5307
5308EOM
5309 rp="Build a shared libperl.$so (y/n)"
5310 . ./myread
5311 case "$ans" in
5312 true|$define|[Yy]*)
5313 useshrplib='true'
5314 # Why does next4 have to be so different?
5315 case "${osname}${osvers}" in
8f1f23e8
W
5316 next4*|rhapsody*)
5317 xxx='DYLD_LIBRARY_PATH' ;;
dc45a647 5318 os2*) xxx='' ;; # Nothing special needed.
46193409 5319 beos*) xxx='' ;;
2afac517 5320 *) xxx='LD_LIBRARY_PATH' ;;
5321 esac
dc45a647
MB
5322 if test X"$xxx" != "X"; then
5323 $cat <<EOM | $tee -a ../config.msg >&4
2afac517 5324
5325To build perl, you must add the current working directory to your
693762b4 5326$xxx environment variable before running make. You can do
2afac517 5327this with
768f99fb 5328 $xxx=\`pwd\`:\$$xxx; export $xxx
2afac517 5329for Bourne-style shells, or
5330 setenv $xxx \`pwd\`
5331for Csh-style shells. You *MUST* do this before running make.
5332
5333EOM
dc45a647 5334 fi
2afac517 5335 ;;
5336 *) useshrplib='false' ;;
5337 esac
5338 ;;
5339esac
5340
5341case "$useshrplib" in
5342true)
5343 case "$libperl" in
5344 '')
5345 # Figure out a good name for libperl.so. Since it gets stored in
5346 # a version-specific architecture-dependent library, the version
5347 # number isn't really that important, except for making cc/ld happy.
5348 #
5349 # A name such as libperl.so.3.1
5350 majmin="libperl.$so.$patchlevel.$subversion"
5351 # A name such as libperl.so.301
5352 majonly=`echo $patchlevel $subversion |
5353 $awk '{printf "%d%02d", $1, $2}'`
5354 majonly=libperl.$so.$majonly
5355 # I'd prefer to keep the os-specific stuff here to a minimum, and
5356 # rely on figuring it out from the naming of libc.
5357 case "${osname}${osvers}" in
5358 next4*)
5359 dflt=libperl.5.$so
5360 # XXX How handle the --version stuff for MAB?
5361 ;;
5362 linux*) # ld won't link with a bare -lperl otherwise.
5363 dflt=libperl.$so
5364 ;;
5365 *) # Try to guess based on whether libc has major.minor.
5366 case "$libc" in
5367 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5368 *libc.$so.[0-9]*) dflt=$majonly ;;
5369 *) dflt=libperl.$so ;;
5370 esac
5371 ;;
5372 esac
5373 ;;
5374 *) dflt=$libperl
5375 ;;
5376 esac
5377 cat << EOM
5378
5379I need to select a good name for the shared libperl. If your system uses
5380library names with major and minor numbers, then you might want something
5381like $majmin. Alternatively, if your system uses a single version
5382number for shared libraries, then you might want to use $majonly.
5383Or, your system might be quite happy with a simple libperl.$so.
5384
5385Since the shared libperl will get installed into a version-specific
5386architecture-dependent directory, the version number of the shared perl
5387library probably isn't important, so the default should be o.k.
5388
5389EOM
5390 rp='What name do you want to give to the shared libperl?'
5391 . ./myread
5392 libperl=$ans
5393 echo "Ok, I'll use $libperl"
5394 ;;
5395*)
dfe9444c 5396 libperl="libperl${_a}"
2afac517 5397 ;;
5398esac
5399
5400# Detect old use of shrpdir via undocumented Configure -Dshrpdir
5401case "$shrpdir" in
5402'') ;;
5403*) $cat >&4 <<EOM
5404WARNING: Use of the shrpdir variable for the installation location of
5405the shared $libperl is not supported. It was never documented and
46193409 5406will not work in this version. Let me (perlbug@perl.com)
dfe9444c 5407know of any problems this may cause.
2afac517 5408
5409EOM
5410 case "$shrpdir" in
5411 "$archlibexp/CORE")
5412 $cat >&4 <<EOM
5413But your current setting of $shrpdir is
5414the default anyway, so it's harmless.
5415EOM
5416 ;;
5417 *)
4e2a5f63
AD
5418 $cat >&4 <<EOM
5419Further, your current attempted setting of $shrpdir
5420conflicts with the value of $archlibexp/CORE
5421that installperl will use.
5422EOM
dc45a647
MB
5423 ;;
5424 esac
5425 ;;
5426esac
5427
5428# How will the perl executable find the installed shared $libperl?
5429# Add $xxx to ccdlflags.
5430# If we can't figure out a command-line option, use $shrpenv to
5431# set env LD_RUN_PATH. The main perl makefile uses this.
5432shrpdir=$archlibexp/CORE
5433xxx=''
5434tmp_shrpenv=''
5435if "$useshrplib"; then
5436 case "$osname" in
5437 aix)
5438 # We'll set it in Makefile.SH...
5439 ;;
5440 solaris|netbsd)
5441 xxx="-R $shrpdir"
5442 ;;
5443 freebsd)
5444 xxx="-Wl,-R$shrpdir"
5445 ;;
5446 linux|irix*|dec_osf)
5447 xxx="-Wl,-rpath,$shrpdir"
5448 ;;
5449 next)
5450 # next doesn't like the default...
5451 ;;
46193409
JH
5452 beos)
5453 # beos doesn't like the default, either.
5454 ;;
dc45a647
MB
5455 *)
5456 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5457 ;;
5458 esac
5459 case "$xxx" in
5460 '') ;;
5461 *)
5462 # Only add $xxx if it isn't already in ccdlflags.
5463 case " $ccdlflags " in
5464 *" $xxx "*) ;;
5465 *) ccdlflags="$ccdlflags $xxx"
5466 cat <<EOM >&4
5467
5468Adding $xxx to the flags
5469passed to $ld so that the perl executable will find the
5470installed shared $libperl.
5471
5472EOM
5473 ;;
5474 esac
5475 ;;
5476 esac
5477fi
5478# Respect a hint or command-line value.
5479case "$shrpenv" in
5480'') shrpenv="$tmp_shrpenv" ;;
5481esac
5482
5483: determine where manual pages go
5484set man1dir man1dir none
5485eval $prefixit
5486$cat <<EOM
5487
5488$spackage has manual pages available in source form.
5489EOM
5490case "$nroff" in
5491nroff)
5492 echo "However, you don't have nroff, so they're probably useless to you."
5493 case "$man1dir" in
5494 '') man1dir="none";;
5495 esac;;
5496esac
5497echo "If you don't want the manual sources installed, answer 'none'."
5498case "$man1dir" in
5499' ') dflt=none
5500 ;;
5501'')
5502 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5503 lookpath="$lookpath $prefixexp/man/p_man/man1"
5504 lookpath="$lookpath $prefixexp/man/u_man/man1"
5505 lookpath="$lookpath $prefixexp/man/man.1"
5506 case "$sysman" in
5507 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5508 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5509 esac
5510 set dflt
5511 eval $prefixup
5512 ;;
5513*) dflt="$man1dir"
5514 ;;
5515esac
5516echo " "
5517fn=dn+~
5518rp="Where do the main $spackage manual pages (source) go?"
5519. ./getfile
5520if $test "X$man1direxp" != "X$ansexp"; then
5521 installman1dir=''
5522fi
5523man1dir="$ans"
5524man1direxp="$ansexp"
5525case "$man1dir" in
5526'') man1dir=' '
5527 installman1dir='';;
5528esac
5529if $afs; then
5530 $cat <<EOM
5531
5532Since you are running AFS, I need to distinguish the directory in which
5533manual pages reside from the directory in which they are installed (and from
5534which they are presumably copied to the former directory by occult means).
5535
5536EOM
5537 case "$installman1dir" in
5538 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5539 *) dflt="$installman1dir";;
5540 esac
5541 fn=de~
5542 rp='Where will man pages be installed?'
5543 . ./getfile
5544 installman1dir="$ans"
5545else
5546 installman1dir="$man1direxp"
5547fi
5548
5549: What suffix to use on installed man pages
5550
5551case "$man1dir" in
5552' ')
5553 man1ext='0'
5554 ;;
5555*)
5556 rp="What suffix should be used for the main $spackage man pages?"
5557 case "$man1ext" in
5558 '') case "$man1dir" in
5559 *1) dflt=1 ;;
5560 *1p) dflt=1p ;;
5561 *1pm) dflt=1pm ;;
5562 *l) dflt=l;;
5563 *n) dflt=n;;
5564 *o) dflt=o;;
5565 *p) dflt=p;;
5566 *C) dflt=C;;
5567 *L) dflt=L;;
5568 *L1) dflt=L1;;
5569 *) dflt=1;;
5570 esac
5571 ;;
5572 *) dflt="$man1ext";;
5573 esac
5574 . ./myread
5575 man1ext="$ans"
5576 ;;
5577esac
5578
5579: see if we can have long filenames
5580echo " "
5581rmlist="$rmlist /tmp/cf$$"
5582$test -d /tmp/cf$$ || mkdir /tmp/cf$$
5583first=123456789abcdef
5584second=/tmp/cf$$/$first
5585$rm -f $first $second
5586if (echo hi >$first) 2>/dev/null; then
5587 if $test -f 123456789abcde; then
5588 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5589 val="$undef"
5590 else
5591 if (echo hi >$second) 2>/dev/null; then
5592 if $test -f /tmp/cf$$/123456789abcde; then
5593 $cat <<'EOM'
5594That's peculiar... You can have filenames longer than 14 characters, but only
5595on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5596I shall consider your system cannot support long filenames at all.
5597EOM
5598 val="$undef"
5599 else
5600 echo 'You can have filenames longer than 14 characters.' >&4
5601 val="$define"
5602 fi
5603 else
5604 $cat <<'EOM'
5605How confusing! Some of your filesystems are sane enough to allow filenames
5606longer than 14 characters but some others like /tmp can't even think about them.
5607So, for now on, I shall assume your kernel does not allow them at all.
5608EOM
5609 val="$undef"
5610 fi
5611 fi
5612else
5613 $cat <<'EOM'
5614You can't have filenames longer than 14 chars. You can't even think about them!
5615EOM
5616 val="$undef"
5617fi
5618set d_flexfnam
5619eval $setvar
5620$rm -rf /tmp/cf$$ 123456789abcde*
5621
5622: determine where library module manual pages go
5623set man3dir man3dir none
5624eval $prefixit
5625$cat <<EOM
5626
5627$spackage has manual pages for many of the library modules.
5628EOM
5629
5630case "$nroff" in
5631nroff)
5632 $cat <<'EOM'
5633However, you don't have nroff, so they're probably useless to you.
5634EOM
5635 case "$man3dir" in
5636 '') man3dir="none";;
5637 esac;;
5638esac
5639
5640case "$d_flexfnam" in
5641undef)
5642 $cat <<'EOM'
5643However, your system can't handle the long file names like File::Basename.3.
5644EOM
5645 case "$man3dir" in
5646 '') man3dir="none";;
5647 esac;;
5648esac
5649
5650echo "If you don't want the manual sources installed, answer 'none'."
5651prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5652case "$man3dir" in
5653'') case "$prefix" in
5654 *$prog*) dflt=`echo $man1dir |
5655 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5656 *) dflt="$privlib/man/man3" ;;
2afac517 5657 esac
5658 ;;
dc45a647
MB
5659' ') dflt=none;;
5660*) dflt="$man3dir" ;;
2afac517 5661esac
dc45a647 5662echo " "
2afac517 5663
dc45a647
MB
5664fn=dn+~
5665rp="Where do the $package library man pages (source) go?"
5666. ./getfile
5667if test "X$man3direxp" != "X$ansexp"; then
5668 installman3dir=''
5669fi
2afac517 5670
dc45a647
MB
5671man3dir="$ans"
5672man3direxp="$ansexp"
5673case "$man3dir" in
5674'') man3dir=' '
5675 installman3dir='';;
5676esac
5677if $afs; then
5678 $cat <<EOM
5679
5680Since you are running AFS, I need to distinguish the directory in which
5681manual pages reside from the directory in which they are installed (and from
5682which they are presumably copied to the former directory by occult means).
2afac517 5683
4e2a5f63 5684EOM
dc45a647
MB
5685 case "$installman3dir" in
5686 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5687 *) dflt="$installman3dir";;
5688 esac
5689 fn=de~
5690 rp='Where will man pages be installed?'
5691 . ./getfile
5692 installman3dir="$ans"
5693else
5694 installman3dir="$man3direxp"
5695fi
5696
5697: What suffix to use on installed man pages
5698
5699case "$man3dir" in
5700' ')
5701 man3ext='0'
5702 ;;
5703*)
5704 rp="What suffix should be used for the $package library man pages?"
5705 case "$man3ext" in
5706 '') case "$man3dir" in
5707 *3) dflt=3 ;;
5708 *3p) dflt=3p ;;
5709 *3pm) dflt=3pm ;;
5710 *l) dflt=l;;
5711 *n) dflt=n;;
5712 *o) dflt=o;;
5713 *p) dflt=p;;
5714 *C) dflt=C;;
5715 *L) dflt=L;;
5716 *L3) dflt=L3;;
5717 *) dflt=3;;
2afac517 5718 esac
5719 ;;
dc45a647 5720 *) dflt="$man3ext";;
2afac517 5721 esac
dc45a647
MB
5722 . ./myread
5723 man3ext="$ans"
5724 ;;
2afac517 5725esac
5726
5727: see if we have to deal with yellow pages, now NIS.
5728if $test -d /usr/etc/yp || $test -d /etc/yp; then
5729 if $test -f /usr/etc/nibindd; then
5730 echo " "
5731 echo "I'm fairly confident you're on a NeXT."
5732 echo " "
5733 rp='Do you get the hosts file via NetInfo?'
5734 dflt=y
5735 case "$hostcat" in
5736 nidump*) ;;
5737 '') ;;
5738 *) dflt=n;;
5739 esac
5740 . ./myread
5741 case "$ans" in
5742 y*) hostcat='nidump hosts .';;
5743 *) case "$hostcat" in
5744 nidump*) hostcat='';;
5745 esac
5746 ;;
5747 esac
5748 fi
5749 case "$hostcat" in
5750 nidump*) ;;
5751 *)
5752 case "$hostcat" in
5753 *ypcat*) dflt=y;;
5754 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5755 dflt=y
5756 else
5757 dflt=n
5758 fi;;
5759 *) dflt=n;;
5760 esac
5761 echo " "
5762 rp='Are you getting the hosts file via yellow pages?'
5763 . ./myread
5764 case "$ans" in
5765 y*) hostcat='ypcat hosts';;
5766 *) hostcat='cat /etc/hosts';;
5767 esac
5768 ;;
5769 esac
5770fi
dfe9444c
AD
5771case "$hostcat" in
5772'') hostcat='cat /etc/hosts';;
5773esac
5774case "$groupcat" in
5775'') groupcat='cat /etc/group';;
5776esac
5777case "$passcat" in
5778'') passcat='cat /etc/passwd';;
5779esac
2afac517 5780
5781: now get the host name
5782echo " "
5783echo "Figuring out host name..." >&4
5784case "$myhostname" in
5785'') cont=true
5786 echo 'Maybe "hostname" will work...'
5787 if tans=`sh -c hostname 2>&1` ; then
5788 myhostname=$tans
5789 phostname=hostname
5790 cont=''
5791 fi
5792 ;;
5793*) cont='';;
5794esac
5795if $test "$cont"; then
5796 if ./xenix; then
5797 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5798 if tans=`cat /etc/systemid 2>&1` ; then
5799 myhostname=$tans
5800 phostname='cat /etc/systemid'
5801 echo "Whadyaknow. Xenix always was a bit strange..."
5802 cont=''
5803 fi
5804 elif $test -r /etc/systemid; then
5805 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5806 fi
5807fi
5808if $test "$cont"; then
5809 echo 'No, maybe "uuname -l" will work...'
5810 if tans=`sh -c 'uuname -l' 2>&1` ; then
5811 myhostname=$tans
5812 phostname='uuname -l'
5813 else
5814 echo 'Strange. Maybe "uname -n" will work...'
5815 if tans=`sh -c 'uname -n' 2>&1` ; then
5816 myhostname=$tans
5817 phostname='uname -n'
5818 else
5819 echo 'Oh well, maybe I can mine it out of whoami.h...'
5820 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5821 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5822 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5823 else
5824 case "$myhostname" in
5825 '') echo "Does this machine have an identity crisis or something?"
5826 phostname='';;
5827 *)
5828 echo "Well, you said $myhostname before..."
5829 phostname='echo $myhostname';;
5830 esac
5831 fi
5832 fi
5833 fi
5834fi
5835: you do not want to know about this
5836set $myhostname
5837myhostname=$1
5838
5839: verify guess
5840if $test "$myhostname" ; then
5841 dflt=y
5842 rp='Your host name appears to be "'$myhostname'".'" Right?"
5843 . ./myread
5844 case "$ans" in
5845 y*) ;;
5846 *) myhostname='';;
5847 esac
5848fi
5849
5850: bad guess or no guess
5851while $test "X$myhostname" = X ; do
5852 dflt=''
5853 rp="Please type the (one word) name of your host:"
5854 . ./myread
5855 myhostname="$ans"
5856done
5857
5858: translate upper to lower if necessary
5859case "$myhostname" in
5860*[A-Z]*)
5861 echo "(Normalizing case in your host name)"
5862 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5863 ;;
5864esac
5865
5866case "$myhostname" in
5867*.*)
5868 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5869 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5870 echo "(Trimming domain name from host name--host name is now $myhostname)"
5871 ;;
5872*) case "$mydomain" in
5873 '')
5874 {
2afac517 5875 test "X$hostcat" = "Xypcat hosts" &&
5876 ypmatch "$myhostname" hosts 2>/dev/null |\
5877 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5878 $test -s hosts
5879 } || {
2afac517 5880 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5881 /[ ]$myhostname[ . ]/p" > hosts
5882 }
5883 tmp_re="[ . ]"
5884 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5885 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5886 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5887 hosts | $sort | $uniq | \
5888 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5889 case `$echo X$dflt` in
5890 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5891 dflt=.
5892 ;;
5893 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5894 ;;
5895 esac
5896 case "$dflt" in
5897 .)
5898 tans=`./loc resolv.conf X /etc /usr/etc`
5899 if $test -f "$tans"; then
5900 echo "(Attempting domain name extraction from $tans)"
a6006777 5901 dflt=.`$sed -n -e 's/ / /g' \
28757baa 5902 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
a6006777 5903 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
2afac517 5904 case "$dflt" in
a6006777 5905 .) dflt=.`$sed -n -e 's/ / /g' \
28757baa 5906 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
a6006777 5907 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
774d564b 5908 ;;
2afac517 5909 esac
5910 fi
5911 ;;
5912 esac
5913 case "$dflt" in
5914 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5915 dflt=.`sh -c domainname 2>/dev/null`
5916 case "$dflt" in
5917 '') dflt='.';;
5918 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5919 esac
5920 ;;
5921 esac
5922 case "$dflt" in
5923 .) echo "(Lost all hope -- silly guess then)"
5924 dflt='.uucp'
5925 ;;
5926 esac
5927 $rm -f hosts
5928 ;;
5929 *) dflt="$mydomain";;
5930 esac;;
5931esac
5932echo " "
5933rp="What is your domain name?"
5934. ./myread
5935tans="$ans"
5936case "$ans" in
5937'') ;;
5938.*) ;;
5939*) tans=".$tans";;
5940esac
5941mydomain="$tans"
5942
5943: translate upper to lower if necessary
5944case "$mydomain" in
5945*[A-Z]*)
5946 echo "(Normalizing case in your domain name)"
5947 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5948 ;;
5949esac
5950
5951: a little sanity check here
5952case "$phostname" in
5953'') ;;
5954*)
5955 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5956 $myhostname$mydomain|$myhostname) ;;
5957 *)
5958 case "$phostname" in
5959 sed*)
5960 echo "(That doesn't agree with your whoami.h file, by the way.)"
5961 ;;
5962 *)
5963 echo "(That doesn't agree with your $phostname command, by the way.)"
5964 ;;
5965 esac
5966 ;;
5967 esac
5968 ;;
5969esac
5970
5971$cat <<EOM
5972
5973I need to get your e-mail address in Internet format if possible, i.e.
5974something like user@host.domain. Please answer accurately since I have
5975no easy means to double check it. The default value provided below
5976is most probably close to the reality but may not be valid from outside
5977your organization...
5978
5979EOM
5980cont=x
5981while test "$cont"; do
5982 case "$cf_email" in
5983 '') dflt="$cf_by@$myhostname$mydomain";;
5984 *) dflt="$cf_email";;
5985 esac
5986 rp='What is your e-mail address?'
5987 . ./myread
5988 cf_email="$ans"
5989 case "$cf_email" in
5990 *@*.*) cont='' ;;
5991 *)
5992 rp='Address does not look like an Internet one. Use it anyway?'
5993 case "$fastread" in
5994 yes) dflt=y ;;
5995 *) dflt=n ;;
5996 esac
5997 . ./myread
5998 case "$ans" in
5999 y*) cont='' ;;
6000 *) echo " " ;;
6001 esac
6002 ;;
6003 esac
6004done
6005
6006$cat <<EOM
6007
6008If you or somebody else will be maintaining perl at your site, please
6009fill in the correct e-mail address here so that they may be contacted
6010if necessary. Currently, the "perlbug" program included with perl
6011will send mail to this address in addition to perlbug@perl.com. You may
6012enter "none" for no administrator.
6013
6014EOM
6015case "$perladmin" in
6016'') dflt="$cf_email";;
6017*) dflt="$perladmin";;
6018esac
6019rp='Perl administrator e-mail address'
6020. ./myread
6021perladmin="$ans"
6022
5f05dabc 6023: figure out how to guarantee perl startup
6024case "$startperl" in
6025'')
6026 case "$sharpbang" in
6027 *!)
6028 $cat <<EOH
6029
6030I can use the #! construct to start perl on your system. This will
6031make startup of perl scripts faster, but may cause problems if you
6032want to share those scripts and perl is not in a standard place
6033($binexp/perl) on all your platforms. The alternative is to force
6034a shell by starting the script with a single ':' character.
6035
6036EOH
6037 dflt="$binexp/perl"
6038 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6039 . ./myread
6040 case "$ans" in
68dc0745 6041 none) startperl=": # use perl";;
6042 *) startperl="#!$ans"
3e3baf6d 6043 if $test 30 -lt `echo "$ans" | wc -c`; then
68dc0745 6044 $cat >&4 <<EOM
6045
6046WARNING: Some systems limit the #! command to 32 characters.
6047If you experience difficulty running Perl scripts with #!, try
6048installing Perl in a directory with a shorter pathname.
6049
6050EOM
6051 fi ;;
5f05dabc 6052 esac
6053 ;;
6054 *) startperl=": # use perl"
6055 ;;
6056 esac
6057 ;;
6058esac
6059echo "I'll use $startperl to start perl scripts."
6060
6061: figure best path for perl in scripts
6062case "$perlpath" in
6063'')
6064 perlpath="$binexp/perl"
6065 case "$startperl" in
6066 *!*) ;;
6067 *)
6068 $cat <<EOH
6069
6070I will use the "eval 'exec'" idiom to start Perl on your system.
6071I can use the full path of your Perl binary for this purpose, but
6072doing so may cause problems if you want to share those scripts and
6073Perl is not always in a standard place ($binexp/perl).
6074
6075EOH
6076 dflt="$binexp/perl"
6077 rp="What path shall I use in \"eval 'exec'\"?"
6078 . ./myread
6079 perlpath="$ans"
6080 ;;
6081 esac
6082 ;;
6083esac
6084case "$startperl" in
6085*!*) ;;
6086*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6087esac
6088
dc45a647
MB
6089: determine where public executable scripts go
6090set scriptdir scriptdir
6091eval $prefixit
6092case "$scriptdir" in
6093'')
6094 dflt="$bin"
6095 : guess some guesses
6096 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6097 $test -d /usr/share/bin && dflt=/usr/share/bin
6098 $test -d /usr/local/script && dflt=/usr/local/script
6099 $test -d $prefixexp/script && dflt=$prefixexp/script
6100 set dflt
6101 eval $prefixup
6102 ;;
6103*) dflt="$scriptdir"
6104 ;;
6105esac
6106$cat <<EOM
6107
6108Some installations have a separate directory just for executable scripts so
6109that they can mount it across multiple architectures but keep the scripts in
6110one spot. You might, for example, have a subdirectory of /usr/share for this.
6111Or you might just lump your scripts in with all your other executables.
6112
6113EOM
6114fn=d~
6115rp='Where do you keep publicly executable scripts?'
6116. ./getfile
6117if $test "X$ansexp" != "X$scriptdirexp"; then
6118 installscript=''
6119fi
6120scriptdir="$ans"
6121scriptdirexp="$ansexp"
6122if $afs; then
6123 $cat <<EOM
6124
6125Since you are running AFS, I need to distinguish the directory in which
6126scripts reside from the directory in which they are installed (and from
6127which they are presumably copied to the former directory by occult means).
6128
6129EOM
6130 case "$installscript" in
6131 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6132 *) dflt="$installscript";;
6133 esac
6134 fn=de~
6135 rp='Where will public scripts be installed?'
6136 . ./getfile
6137 installscript="$ans"
6138else
6139 installscript="$scriptdirexp"
6140fi
6141
6142: determine where site specific libraries go.
3a6175e1 6143: Usual default is /usr/local/lib/perl5/site_perl/$apiversion
bfb7748a
AD
6144prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6145case "$prefix" in
3a6175e1
AD
6146*perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6147*) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
dc45a647 6148esac
bfb7748a 6149eval $prefixit
dc45a647
MB
6150$cat <<EOM
6151
6152The installation process will also create a directory for
6153site-specific extensions and modules. Some users find it convenient
68c15b6f
HM
6154to place all site-specific files in this directory rather than in the
6155main distribution directory.
dc45a647
MB
6156
6157EOM
6158fn=d~+
6159rp='Pathname for the site-specific library files?'
6160. ./getfile
6161if $test "X$sitelibexp" != "X$ansexp"; then
6162 installsitelib=''
6163fi
6164sitelib="$ans"
6165sitelibexp="$ansexp"
6166if $afs; then
6167 $cat <<EOM
6168
6169Since you are running AFS, I need to distinguish the directory in
6170which site-specific files reside from the directory in which they are
6171installed (and from which they are presumably copied to the former
6172directory by occult means).
6173
6174EOM
6175 case "$installsitelib" in
6176 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6177 *) dflt="$installsitelib";;
6178 esac
6179 fn=de~
6180 rp='Where will site-specific files be installed?'
6181 . ./getfile
6182 installsitelib="$ans"
6183else
6184 installsitelib="$sitelibexp"
6185fi
6186
6187: determine where site specific architecture-dependent libraries go.
3a6175e1 6188: sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
bfb7748a 6189: sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
3a6175e1 6190: sitelib may have an optional trailing /share.
bfb7748a
AD
6191tdflt=`echo $sitelib | $sed 's,/share$,,'`
6192tdflt="$tdflt/$archname"
dc45a647
MB
6193set sitearch sitearch none
6194eval $prefixit
6195case "$sitearch" in
bfb7748a 6196'') dflt="$tdflt" ;;
dc45a647
MB
6197*) dflt="$sitearch" ;;
6198esac
6199$cat <<EOM
6200
6201The installation process will also create a directory for
6202architecture-dependent site-specific extensions and modules.
6203
6204EOM
6205fn=nd~+
6206rp='Pathname for the site-specific architecture-dependent library files?'
6207. ./getfile
6208if $test "X$sitearchexp" != "X$ansexp"; then
6209 installsitearch=''
6210fi
6211sitearch="$ans"
6212sitearchexp="$ansexp"
6213if $afs; then
6214 $cat <<EOM
6215
6216Since you are running AFS, I need to distinguish the directory in
6217which site-specific architecture-dependent library files reside from
6218the directory in which they are installed (and from which they are
6219presumably copied to the former directory by occult means).
6220
6221EOM
6222 case "$installsitearch" in
6223 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6224 *) dflt="$installsitearch";;
6225 esac
6226 fn=de~
6227 rp='Where will site-specific architecture-dependent files be installed?'
6228 . ./getfile
6229 installsitearch="$ans"
6230else
6231 installsitearch="$sitearchexp"
6232fi
6233
2afac517 6234cat <<EOM
6235
85aff577
CS
6236Previous version of $package used the standard IO mechanisms as defined
6237in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
2afac517 6238mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
85aff577
CS
6239the default. This abstraction layer can use AT&T's sfio (if you already
6240have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6241problems with some extension modules. Using PerlIO with stdio is safe,
6242but it is slower than plain stdio and therefore is not the default.
2afac517 6243
6244If this doesn't make any sense to you, just accept the default 'n'.
6245EOM
6246case "$useperlio" in
6247$define|true|[yY]*) dflt='y';;
6248*) dflt='n';;
6249esac
6250rp='Use the experimental PerlIO abstraction layer?'
6251. ./myread
6252case "$ans" in
6253y|Y)
6254 val="$define"
6255 ;;
6256*)
6257 echo "Ok, doing things the stdio way"
6258 val="$undef"
6259 ;;
6260esac
6261set useperlio
6262eval $setvar
2304df62 6263
8e07c86e 6264: Check how to convert floats to strings.
28e8609d 6265if test "X$d_Gconvert" = X; then
5ff3f7a4
GS
6266 echo " "
6267 echo "Checking for an efficient way to convert floats to strings."
6268 $cat >try.c <<'EOP'
8e07c86e
AD
6269#ifdef TRY_gconvert
6270#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8ff267be 6271char *myname = "gconvert";
8e07c86e
AD
6272#endif
6273#ifdef TRY_gcvt
6274#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8ff267be 6275char *myname = "gcvt";
8e07c86e
AD
6276#endif
6277#ifdef TRY_sprintf
6278#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8ff267be 6279char *myname = "sprintf";
8e07c86e 6280#endif
8ff267be 6281
6282#include <stdio.h>
6283
6284int
6285checkit(expect, got)
6286char *expect;
6287char *got;
6288{
6289 if (strcmp(expect, got)) {
6290 printf("%s oddity: Expected %s, got %s\n",
6291 myname, expect, got);
6292 exit(1);
6293 }
6294}
6295
5a411a32 6296int main()
8ff267be 6297{
ecfc5424 6298 char buf[64];
8ff267be 6299 buf[63] = '\0';
6300
6301 /* This must be 1st test on (which?) platform */
6302 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6303 Gconvert(0.1, 8, 0, buf);
6304 checkit("0.1", buf);
6305
8e07c86e 6306 Gconvert(1.0, 8, 0, buf);
8ff267be 6307 checkit("1", buf);
6308
8e07c86e 6309 Gconvert(0.0, 8, 0, buf);
8ff267be 6310 checkit("0", buf);
6311
8e07c86e 6312 Gconvert(-1.0, 8, 0, buf);
8ff267be 6313 checkit("-1", buf);
6314
6315 /* Some Linux gcvt's give 1.e+5 here. */
6316 Gconvert(100000.0, 8, 0, buf);
6317 checkit("100000", buf);
6318
6319 /* Some Linux gcvt's give -1.e+5 here. */
6320 Gconvert(-100000.0, 8, 0, buf);
6321 checkit("-100000", buf);
6322
ecfc5424 6323 exit(0);
a0d0e21e
LW
6324}
6325EOP
5ff3f7a4
GS
6326 case "$d_Gconvert" in
6327 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6328 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6329 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6330 *) xxx_list='gconvert gcvt sprintf' ;;
6331 esac
8e07c86e 6332
5ff3f7a4
GS
6333 for xxx_convert in $xxx_list; do
6334 echo "Trying $xxx_convert"
6335 $rm -f try try$_o
6336 set try -DTRY_$xxx_convert
6337 if eval $compile; then
6338 echo "$xxx_convert" found. >&4
6339 if ./try; then
6340 echo "I'll use $xxx_convert to convert floats into a string." >&4
6341 break;
6342 else
6343 echo "...But $xxx_convert didn't work as I expected."
6344 fi
2304df62 6345 else
5ff3f7a4 6346 echo "$xxx_convert NOT found." >&4
2304df62 6347 fi
5ff3f7a4 6348 done
8e07c86e 6349
5ff3f7a4
GS
6350 case "$xxx_convert" in
6351 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6352 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6353 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6354 esac
28e8609d 6355fi
2304df62 6356
a0d0e21e
LW
6357: Initialize h_fcntl
6358h_fcntl=false
6359
6360: Initialize h_sysfile
6361h_sysfile=false
2304df62 6362
2304df62
AD
6363: access call always available on UNIX
6364set access d_access
6365eval $inlibc
6366
6367: locate the flags for 'access()'
6368case "$d_access" in
6369"$define")
6370 echo " "
6371 $cat >access.c <<'EOCP'
6372#include <sys/types.h>
6373#ifdef I_FCNTL
6374#include <fcntl.h>
6375#endif
6376#ifdef I_SYS_FILE
6377#include <sys/file.h>
6378#endif
6379#ifdef I_UNISTD
6380#include <unistd.h>
6381#endif
d674cd6d 6382int main() {
2304df62
AD
6383 exit(R_OK);
6384}
8e07c86e
AD
6385EOCP
6386 : check sys/file.h first, no particular reason here
6387 if $test `./findhdr sys/file.h` && \
dfe9444c 6388 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6389 h_sysfile=true;
6390 echo "<sys/file.h> defines the *_OK access constants." >&4
6391 elif $test `./findhdr fcntl.h` && \
dfe9444c 6392 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6393 h_fcntl=true;
6394 echo "<fcntl.h> defines the *_OK access constants." >&4
6395 elif $test `./findhdr unistd.h` && \
dfe9444c 6396 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
8e07c86e
AD
6397 echo "<unistd.h> defines the *_OK access constants." >&4
6398 else
6399 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6400 fi
6401 ;;
6402esac
6403$rm -f access*
a0d0e21e 6404
5ff3f7a4
GS
6405: see if accessx exists
6406set accessx d_accessx
6407eval $inlibc
6408
8e07c86e
AD
6409: see if alarm exists
6410set alarm d_alarm
6411eval $inlibc
2304df62 6412
ecfc5424 6413: Look for GNU-cc style attribute checking
2304df62 6414echo " "
a0d0e21e
LW
6415echo "Checking whether your compiler can handle __attribute__ ..." >&4
6416$cat >attrib.c <<'EOCP'
1aef975c 6417#include <stdio.h>
ecfc5424 6418void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
a0d0e21e
LW
6419EOCP
6420if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6421 if $contains 'warning' attrib.out >/dev/null 2>&1; then
ecfc5424 6422 echo "Your C compiler doesn't fully support __attribute__."
a0d0e21e
LW
6423 val="$undef"
6424 else
ecfc5424 6425 echo "Your C compiler supports __attribute__."
a0d0e21e
LW
6426 val="$define"
6427 fi
6428else
ecfc5424 6429 echo "Your C compiler doesn't seem to understand __attribute__ at all."
a0d0e21e
LW
6430 val="$undef"
6431fi
ecfc5424 6432set d_attribut
a0d0e21e
LW
6433eval $setvar
6434$rm -f attrib*
6435
6436: see if bcmp exists
6437set bcmp d_bcmp
6438eval $inlibc
6439
6440: see if bcopy exists
6441set bcopy d_bcopy
6442eval $inlibc
6443
2afac517 6444: see if this is a unistd.h system
6445set unistd.h i_unistd
6446eval $inhdr
6447
6448: see if getpgrp exists
6449set getpgrp d_getpgrp
6450eval $inlibc
6451
2afac517 6452case "$d_getpgrp" in
6453"$define")
6454 echo " "
dfe9444c 6455 echo "Checking to see which flavor of getpgrp is in use..."
2afac517 6456 $cat >set.c <<EOP
6457#$i_unistd I_UNISTD
6458#include <sys/types.h>
6459#ifdef I_UNISTD
6460# include <unistd.h>
6461#endif
5a411a32 6462int main()
2afac517 6463{
6464 if (getuid() == 0) {
6465 printf("(I see you are running Configure as super-user...)\n");
6466 setuid(1);
6467 }
6468#ifdef TRY_BSD_PGRP
6469 if (getpgrp(1) == 0)
6470 exit(0);
6471#else
6472 if (getpgrp() > 0)
6473 exit(0);
6474#endif
6475 exit(1);
6476}
6477EOP
6478 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6479 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6480 val="$define"
6481 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6482 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6483 val="$undef"
6484 else
6485 echo "I can't seem to compile and run the test program."
6486 if ./usg; then
6487 xxx="a USG one, i.e. you use getpgrp()."
6488 else
6489 # SVR4 systems can appear rather BSD-ish.
6490 case "$i_unistd" in
6491 $undef)
6492 xxx="a BSD one, i.e. you use getpgrp(pid)."
6493 val="$define"
6494 ;;
6495 $define)
6496 xxx="probably a USG one, i.e. you use getpgrp()."
6497 val="$undef"
6498 ;;
6499 esac
6500 fi
6501 echo "Assuming your getpgrp is $xxx" >&4
6502 fi
6503 ;;
6504*) val="$undef";;
6505esac
6506set d_bsdgetpgrp
6507eval $setvar
6508$rm -f set set.c
6509
a0d0e21e
LW
6510: see if setpgrp exists
6511set setpgrp d_setpgrp
6512eval $inlibc
6513
a0d0e21e
LW
6514case "$d_setpgrp" in
6515"$define")
6516 echo " "
dfe9444c 6517 echo "Checking to see which flavor of setpgrp is in use..."
a0d0e21e 6518 $cat >set.c <<EOP
2afac517 6519#$i_unistd I_UNISTD
6520#include <sys/types.h>
6521#ifdef I_UNISTD
6522# include <unistd.h>
6523#endif
5a411a32 6524int main()
a0d0e21e
LW
6525{
6526 if (getuid() == 0) {
6527 printf("(I see you are running Configure as super-user...)\n");
6528 setuid(1);
6529 }
2afac517 6530#ifdef TRY_BSD_PGRP
a0d0e21e 6531 if (-1 == setpgrp(1, 1))
2afac517 6532 exit(0);
6533#else
6534 if (setpgrp() != -1)
6535 exit(0);
6536#endif
6537 exit(1);
a0d0e21e
LW
6538}
6539EOP
2afac517 6540 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6541 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6542 val="$define"
6543 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6544 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6545 val="$undef"
a0d0e21e 6546 else
dfe9444c 6547 echo "(I can't seem to compile and run the test program.)"
ecfc5424 6548 if ./usg; then
2afac517 6549 xxx="a USG one, i.e. you use setpgrp()."
a0d0e21e 6550 else
2afac517 6551 # SVR4 systems can appear rather BSD-ish.
6552 case "$i_unistd" in
6553 $undef)
6554 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6555 val="$define"
6556 ;;
6557 $define)
6558 xxx="probably a USG one, i.e. you use setpgrp()."
6559 val="$undef"
6560 ;;
6561 esac
a0d0e21e 6562 fi
2afac517 6563 echo "Assuming your setpgrp is $xxx" >&4
a0d0e21e
LW
6564 fi
6565 ;;
6566*) val="$undef";;
6567esac
2afac517 6568set d_bsdsetpgrp
a0d0e21e
LW
6569eval $setvar
6570$rm -f set set.c
a0d0e21e
LW
6571: see if bzero exists
6572set bzero d_bzero
6573eval $inlibc
6574
24fef2a7 6575: check for lengths of integral types
a0d0e21e
LW
6576echo " "
6577case "$intsize" in
6578'')
6579 echo "Checking to see how big your integers are..." >&4
24fef2a7 6580 $cat >intsize.c <<'EOCP'
a0d0e21e 6581#include <stdio.h>
d674cd6d 6582int main()
a0d0e21e 6583{
24fef2a7
AD
6584 printf("intsize=%d;\n", sizeof(int));
6585 printf("longsize=%d;\n", sizeof(long));
6586 printf("shortsize=%d;\n", sizeof(short));
8e07c86e 6587 exit(0);
a0d0e21e
LW
6588}
6589EOCP
dfe9444c 6590 set intsize
dc45a647 6591 if eval $compile_ok && ./intsize > /dev/null; then
dfe9444c 6592 eval `./intsize`
8e07c86e 6593 echo "Your integers are $intsize bytes long."
24fef2a7
AD
6594 echo "Your long integers are $longsize bytes long."
6595 echo "Your short integers are $shortsize bytes long."
a0d0e21e 6596 else
24fef2a7 6597 $cat >&4 <<EOM
dfe9444c 6598!
24fef2a7
AD
6599Help! I can't compile and run the intsize test program: please enlighten me!
6600(This is probably a misconfiguration in your system or libraries, and
6601you really ought to fix it. Still, I'll try anyway.)
dfe9444c 6602!
24fef2a7
AD
6603EOM
6604 dflt=4
8e07c86e
AD
6605 rp="What is the size of an integer (in bytes)?"
6606 . ./myread
6607 intsize="$ans"
24fef2a7
AD
6608 dflt=$intsize
6609 rp="What is the size of a long integer (in bytes)?"
6610 . ./myread
6611 longsize="$ans"
6612 dflt=2
6613 rp="What is the size of a short integer (in bytes)?"
6614 . ./myread
6615 shortsize="$ans"
a0d0e21e
LW
6616 fi
6617 ;;
a0d0e21e 6618esac
dfe9444c 6619$rm -f intsize intsize.*
a0d0e21e 6620
ecfc5424 6621: see if signal is declared as pointer to function returning int or void
a0d0e21e 6622echo " "
ecfc5424
AD
6623xxx=`./findhdr signal.h`
6624$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6625if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6626 echo "You have int (*signal())() instead of void." >&4
6627 val="$undef"
6628elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
dfe9444c 6629 echo "You have void (*signal())()." >&4
ecfc5424
AD
6630 val="$define"
6631elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6632 echo "You have int (*signal())() instead of void." >&4
6633 val="$undef"
dfe9444c
AD
6634elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6635 echo "You have void (*signal())()." >&4
6636 val="$define"
a0d0e21e 6637else
ecfc5424
AD
6638 case "$d_voidsig" in
6639 '')
6640 echo "I can't determine whether signal handler returns void or int..." >&4
6641 dflt=void
6642 rp="What type does your signal handler return?"
6643 . ./myread
6644 case "$ans" in
6645 v*) val="$define";;
6646 *) val="$undef";;
6647 esac;;
6648 "$define")
dfe9444c
AD
6649 echo "As you already told me, signal handler returns void." >&4
6650 val="$define"
6651 ;;
6652 *) echo "As you already told me, signal handler returns int." >&4
6653 val="$undef"
6654 ;;
ecfc5424
AD
6655 esac
6656fi
6657set d_voidsig
6658eval $setvar
6659case "$d_voidsig" in
6660"$define") signal_t="void";;
6661*) signal_t="int";;
6662esac
6663$rm -f $$.tmp
6664
6665: check for ability to cast large floats to 32-bit ints.
6666echo " "
6667echo 'Checking whether your C compiler can cast large floats to int32.' >&4
e5c9fcd0 6668if $test "$intsize" -ge 4; then
ecfc5424
AD
6669 xxx=int
6670else
6671 xxx=long
6672fi
6673$cat >try.c <<EOCP
e5c9fcd0 6674#include <stdio.h>
ecfc5424
AD
6675#include <sys/types.h>
6676#include <signal.h>
a1896f58 6677$signal_t blech(s) int s; { exit(3); }
d674cd6d 6678int main()
2304df62 6679{
a0d0e21e 6680 $xxx i32;
e5c9fcd0 6681 double f, g;
2304df62 6682 int result = 0;
89434db5 6683 char str[16];
2304df62
AD
6684 signal(SIGFPE, blech);
6685
89434db5
AD
6686 /* Don't let compiler optimize the test away. Store the number
6687 in a writable string for gcc to pass to sscanf under HP/UX.
6688 */
6689 sprintf(str, "2147483647");
6690 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
e5c9fcd0
AD
6691 g = 10 * f;
6692 i32 = ($xxx) g;
2304df62 6693
e5c9fcd0
AD
6694 /* x86 processors will probably give 0x8000 0000, which is a
6695 sign change. We don't want that. We want to mimic SPARC
6696 behavior here, which is to preserve the sign and give
6697 back 0x7fff ffff.
6698 */
a0d0e21e 6699 if (i32 != ($xxx) f)
2304df62
AD
6700 result |= 1;
6701 exit(result);
6702}
6703EOCP
dfe9444c 6704set try
dc45a647 6705if eval $compile_ok; then
2304df62
AD
6706 ./try
6707 yyy=$?
6708else
a0d0e21e 6709 echo "(I can't seem to compile the test program--assuming it can't)"
2304df62
AD
6710 yyy=1
6711fi
6712case "$yyy" in
67130) val="$define"
6714 echo "Yup, it can."
6715 ;;
6716*) val="$undef"
6717 echo "Nope, it can't."
6718 ;;
6719esac
6720set d_casti32
6721eval $setvar
85e6fe83 6722$rm -f try try.*
a0d0e21e 6723
2304df62
AD
6724: check for ability to cast negative floats to unsigned
6725echo " "
6726echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
ecfc5424 6727$cat >try.c <<EOCP
e5c9fcd0 6728#include <stdio.h>
ecfc5424 6729#include <sys/types.h>
2304df62 6730#include <signal.h>
a1896f58
AD
6731$signal_t blech(s) int s; { exit(7); }
6732$signal_t blech_in_list(s) int s; { exit(4); }
232e078e
AD
6733unsigned long dummy_long(p) unsigned long p; { return p; }
6734unsigned int dummy_int(p) unsigned int p; { return p; }
6735unsigned short dummy_short(p) unsigned short p; { return p; }
d674cd6d 6736int main()
2304df62 6737{
e5c9fcd0 6738 double f;
2304df62
AD
6739 unsigned long along;
6740 unsigned int aint;
6741 unsigned short ashort;
6742 int result = 0;
89434db5
AD
6743 char str[16];
6744
e5c9fcd0
AD
6745 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6746 a direct f = -123. assignment. gcc-2.8.0 reportedly
6747 optimized the whole file away
6748 */
89434db5
AD
6749 /* Store the number in a writable string for gcc to pass to
6750 sscanf under HP/UX.
6751 */
6752 sprintf(str, "-123");
6753 sscanf(str, "%lf", &f); /* f = -123.; */
2304df62
AD
6754
6755 signal(SIGFPE, blech);
6756 along = (unsigned long)f;
6757 aint = (unsigned int)f;
6758 ashort = (unsigned short)f;
6759 if (along != (unsigned long)-123)
6760 result |= 1;
6761 if (aint != (unsigned int)-123)
6762 result |= 1;
6763 if (ashort != (unsigned short)-123)
6764 result |= 1;
89434db5
AD
6765 sprintf(str, "1073741824.");
6766 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
2304df62
AD
6767 f = f + f;
6768 along = 0;
6769 along = (unsigned long)f;
6770 if (along != 0x80000000)
6771 result |= 2;
6772 f -= 1.;
6773 along = 0;
6774 along = (unsigned long)f;
6775 if (along != 0x7fffffff)
6776 result |= 1;
6777 f += 2.;
6778 along = 0;
6779 along = (unsigned long)f;
6780 if (along != 0x80000001)
6781 result |= 2;
232e078e
AD
6782 if (result)
6783 exit(result);
6784 signal(SIGFPE, blech_in_list);
89434db5
AD
6785 sprintf(str, "123.");
6786 sscanf(str, "%lf", &f); /* f = 123.; */
232e078e
AD
6787 along = dummy_long((unsigned long)f);
6788 aint = dummy_int((unsigned int)f);
6789 ashort = dummy_short((unsigned short)f);
6790 if (along != (unsigned long)123)
6791 result |= 4;
6792 if (aint != (unsigned int)123)
6793 result |= 4;
6794 if (ashort != (unsigned short)123)
6795 result |= 4;
2304df62
AD
6796 exit(result);
6797
6798}
6799EOCP
dfe9444c 6800set try
dc45a647 6801if eval $compile_ok; then
2304df62
AD
6802 ./try
6803 castflags=$?
6804else
ecfc5424 6805 echo "(I can't seem to compile the test program--assuming it can't)"
232e078e 6806 castflags=7
2304df62
AD
6807fi
6808case "$castflags" in
68090) val="$define"
6810 echo "Yup, it can."
6811 ;;
6812*) val="$undef"
6813 echo "Nope, it can't."
6814 ;;
6815esac
6816set d_castneg
6817eval $setvar
6818$rm -f try.*
6819
2304df62
AD
6820: see if vprintf exists
6821echo " "
6822if set vprintf val -f d_vprintf; eval $csym; $val; then
6823 echo 'vprintf() found.' >&4
6824 val="$define"
6825 $cat >vprintf.c <<'EOF'
6826#include <varargs.h>
6827
d674cd6d 6828int main() { xxx("foo"); }
2304df62
AD
6829
6830xxx(va_alist)
6831va_dcl
6832{
6833 va_list args;
6834 char buf[10];
6835
6836 va_start(args);
6837 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6838}
6839EOF
dfe9444c
AD
6840 set vprintf
6841 if eval $compile && ./vprintf; then
2304df62
AD
6842 echo "Your vsprintf() returns (int)." >&4
6843 val2="$undef"
6844 else
6845 echo "Your vsprintf() returns (char*)." >&4
6846 val2="$define"
6847 fi
6848else
6849 echo 'vprintf() NOT found.' >&4
6850 val="$undef"
6851 val2="$undef"
6852fi
6853set d_vprintf
6854eval $setvar
6855val=$val2
6856set d_charvspr
6857eval $setvar
6858
a0d0e21e
LW
6859: see if chown exists
6860set chown d_chown
6861eval $inlibc
6862
6863: see if chroot exists
6864set chroot d_chroot
6865eval $inlibc
6866
2304df62
AD
6867: see if chsize exists
6868set chsize d_chsize
6869eval $inlibc
6870
de4597cb
JH
6871hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6872while $test $# -ge 2; do
6873 case "$1" in
6874 $define) echo "#include <$2>";;
6875 esac ;
6876 shift 2;
6877done > try.c;
6878echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6879if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6880 val="$define";
6881else
6882 val="$undef";
6883fi;
6884set $varname;
6885eval $setvar;
6886$rm -f try.c try.o'
6887
6888: see if this is a sys/uio.h system
6889set sys/uio.h i_sysuio
6890eval $inhdr
6891
6892echo "Checking to see if your system supports struct iovec..." >&4
6893set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6894eval $hasfield
6895case "$d_iovec_s" in
6896"$define") echo "Yup, it does." >&4
6897 ;;
6898*) echo "Nope, it doesn't." >&4
6899 ;;
6900esac
6901
6902socketlib=''
6903sockethdr=''
6904: see whether socket exists
6905echo " "
6906$echo $n "Hmm... $c" >&4
6907if set socket val -f d_socket; eval $csym; $val; then
6908 echo "Looks like you have Berkeley networking support." >&4
6909 d_socket="$define"
6910 if set setsockopt val -f; eval $csym; $val; then
6911 d_oldsock="$undef"
6912 else
6913 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6914 d_oldsock="$define"
6915 fi
6916else
6917 if $contains socklib libc.list >/dev/null 2>&1; then
6918 echo "Looks like you have Berkeley networking support." >&4
6919 d_socket="$define"
6920 : we will have to assume that it supports the 4.2 BSD interface
6921 d_oldsock="$undef"
6922 else
6923 echo "You don't have Berkeley networking in libc$_a..." >&4
6924 if test "X$d_socket" = "X$define"; then
6925 echo "...but you seem to believe that you have sockets." >&4
6926 else
6927 for net in net socket
6928 do
6929 if test -f /usr/lib/lib$net$_a; then
6930 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6931 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6932 if $contains socket libc.list >/dev/null 2>&1; then
6933 d_socket="$define"
6934 socketlib="-l$net"
6935 case "$net" in
6936 net)
6937 echo "...but the Wollongong group seems to have hacked it in." >&4
6938 sockethdr="-I/usr/netinclude"
6939 ;;
6940 esac
6941 echo "Found Berkeley sockets interface in lib$net." >& 4
6942 if $contains setsockopt libc.list >/dev/null 2>&1; then
6943 d_oldsock="$undef"
6944 else
6945 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6946 d_oldsock="$define"
6947 fi
6948 break
6949 fi
6950 fi
6951 done
6952 if test "X$d_socket" != "X$define"; then
6953 echo "or anywhere else I see." >&4
6954 d_socket="$undef"
6955 d_oldsock="$undef"
6956 fi
6957 fi
6958 fi
6959fi
6960
6961: see if socketpair exists
6962set socketpair d_sockpair
6963eval $inlibc
6964
6965
5b34fd99 6966echo " "
de4597cb
JH
6967echo "Checking the availability of certain socket constants..." >& 4
6968for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6969 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6970 $cat >try.c <<EOF
ac60b016 6971#include <sys/types.h>
de4597cb
JH
6972#include <sys/socket.h>
6973int main() {
6974 int i = $ENUM;
6975}
6976EOF
6977 val="$undef"
6978 set try; if eval $compile; then
6979 val="$define"
6980 fi
6981 set d_${enum}; eval $setvar
6982 $rm -f try.c try
6983done
6984
6985set sendmsg d_sendmsg
6986eval $inlibc
6987
6988set recvmsg d_recvmsg
6989eval $inlibc
6990
6991echo " "
6992$echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6993set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6994eval $hasfield
6995case "$d_msghdr_s" in
6996"$define") echo "Yup, it does." >&4
6997 ;;
6998*) echo "Nope, it doesn't." >&4
6999 ;;
7000esac
7001
7002$echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7003set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7004eval $hasfield
7005case "$d_cmsghdr_s" in
7006"$define") echo "Yup, it does." >&4
7007 ;;
7008*) echo "Nope, it doesn't." >&4
7009 ;;
7010esac
7011
2304df62
AD
7012: check for const keyword
7013echo " "
7014echo 'Checking to see if your C compiler knows about "const"...' >&4
7015$cat >const.c <<'EOCP'
7016typedef struct spug { int drokk; } spug;
5a411a32 7017int main()
2304df62
AD
7018{
7019 const char *foo;
7020 const spug y;
7021}
7022EOCP
7023if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7024 val="$define"
7025 echo "Yup, it does."
7026else
7027 val="$undef"
7028 echo "Nope, it doesn't."
7029fi
7030set d_const
7031eval $setvar
7032
7033: see if crypt exists
7034echo " "
7035if set crypt val -f d_crypt; eval $csym; $val; then
7036 echo 'crypt() found.' >&4
7037 val="$define"
7038 cryptlib=''
7039else
dfe9444c 7040 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
2304df62 7041 if $test -z "$cryptlib"; then
dfe9444c 7042 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
2304df62
AD
7043 else
7044 cryptlib=-lcrypt
7045 fi
7046 if $test -z "$cryptlib"; then
dfe9444c 7047 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
2304df62
AD
7048 else
7049 cryptlib=-lcrypt
7050 fi
7051 if $test -z "$cryptlib"; then
dfe9444c 7052 cryptlib=`./loc libcrypt$_a "" $libpth`
2304df62
AD
7053 else
7054 cryptlib=-lcrypt
7055 fi
7056 if $test -z "$cryptlib"; then
7057 echo 'crypt() NOT found.' >&4
7058 val="$undef"
7059 else
7060 val="$define"
7061 fi
7062fi
7063set d_crypt
7064eval $setvar
7065
921b2963
JH
7066: get csh whereabouts
7067case "$csh" in
7068'csh') val="$undef" ;;
7069*) val="$define" ;;
7070esac
7071set d_csh
7072eval $setvar
7073: Respect a hint or command line value for full_csh.
7074case "$full_csh" in
7075'') full_csh=$csh ;;
7076esac
7077
a0d0e21e
LW
7078: see if cuserid exists
7079set cuserid d_cuserid
2304df62
AD
7080eval $inlibc
7081
a0d0e21e
LW
7082: see if this is a limits.h system
7083set limits.h i_limits
85e6fe83
LW
7084eval $inhdr
7085
a0d0e21e
LW
7086: see if this is a float.h system
7087set float.h i_float
7088eval $inhdr
7089
7090: See if number of significant digits in a double precision number is known
7091echo " "
7092$cat >dbl_dig.c <<EOM
7093#$i_limits I_LIMITS
7094#$i_float I_FLOAT
7095#ifdef I_LIMITS
7096#include <limits.h>
85e6fe83 7097#endif
a0d0e21e
LW
7098#ifdef I_FLOAT
7099#include <float.h>
7100#endif
7101#ifdef DBL_DIG
7102printf("Contains DBL_DIG");
85e6fe83 7103#endif
85e6fe83 7104EOM
a0d0e21e
LW
7105$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7106if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7107 echo "DBL_DIG found." >&4
7108 val="$define"
2304df62 7109else
a0d0e21e
LW
7110 echo "DBL_DIG NOT found." >&4
7111 val="$undef"
2304df62 7112fi
a0d0e21e
LW
7113$rm -f dbl_dig.?
7114set d_dbl_dig
2304df62 7115eval $setvar
2304df62 7116
5ff3f7a4
GS
7117
7118if $test X"$use64bits" = X"$define"; then
7119 : see if dbminit64 exists
7120 set dbminit64 d_dbminit64
7121 eval $inlibc
7122
7123 : see if dbmclose64 exists
7124 set dbmclose64 d_dbmclose64
7125 eval $inlibc
7126
7127 : see if fetch64 exists
7128 set fetch64 d_fetch64
7129 eval $inlibc
7130
7131 : see if store64 exists
7132 set store64 d_store64
7133 eval $inlibc
7134
7135 : see if delete64 exists
7136 set delete64 d_delete64
7137 eval $inlibc
7138
7139 : see if firstkey64 exists
7140 set firstkey64 d_firstkey64
7141 eval $inlibc
7142
7143 : see if nextkey64 exists
7144 set nextkey64 d_nextkey64
7145 eval $inlibc
7146else
7147 val="$undef"
7148 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7149 do
7150 set $xxx
7151 eval $setvar
7152 done
7153fi
7154
a0d0e21e
LW
7155: see if difftime exists
7156set difftime d_difftime
2304df62
AD
7157eval $inlibc
7158
5ff3f7a4
GS
7159: see if sys/stat.h is available
7160set sys/stat.h i_sysstat
7161eval $inhdr
7162
a0d0e21e
LW
7163: see if this is a dirent system
7164echo " "
7165if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7166 val="$define"
7167 echo "<dirent.h> found." >&4
7168else
7169 val="$undef"
7170 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7171 echo "<sys/dir.h> found." >&4
7172 echo " "
7173 else
7174 xinc=`./findhdr sys/ndir.h`
7175 fi
7176 echo "<dirent.h> NOT found." >&4
7177fi
7178set i_dirent
7179eval $setvar
7180
7181: Look for type of directory structure.
7182echo " "
7183$cppstdin $cppflags $cppminus < "$xinc" > try.c
7184
7185case "$direntrytype" in
7186''|' ')
7187 case "$i_dirent" in
7188 $define) guess1='struct dirent' ;;
7189 *) guess1='struct direct' ;;
2afac517 7190 esac
7191 ;;
7192*) guess1="$direntrytype"
7193 ;;
8e07c86e
AD
7194esac
7195
2afac517 7196case "$guess1" in
7197'struct dirent') guess2='struct direct' ;;
7198*) guess2='struct dirent' ;;
7199esac
7200
7201if $contains "$guess1" try.c >/dev/null 2>&1; then
7202 direntrytype="$guess1"
7203 echo "Your directory entries are $direntrytype." >&4
7204elif $contains "$guess2" try.c >/dev/null 2>&1; then
7205 direntrytype="$guess2"
7206 echo "Your directory entries seem to be $direntrytype." >&4
7207else
7208 echo "I don't recognize your system's directory entries." >&4
7209 rp="What type is used for directory entries on this system?"
7210 dflt="$guess1"
7211 . ./myread
7212 direntrytype="$ans"
7213fi
7214$rm -f try.c
a0d0e21e 7215
a0d0e21e 7216
2afac517 7217: see if the directory entry stores field length
7218echo " "
7219$cppstdin $cppflags $cppminus < "$xinc" > try.c
7220if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7221 echo "Good, your directory entry keeps length information in d_namlen." >&4
7222 val="$define"
7223else
7224 echo "Your directory entry does not know about the d_namlen field." >&4
7225 val="$undef"
7226fi
7227set d_dirnamlen
7228eval $setvar
7229$rm -f try.c
a0d0e21e 7230
a0d0e21e 7231
5ff3f7a4
GS
7232if $test X"$use64bits" = X"$define"; then
7233 : see if fstat64 exists
7234 set fstat64 d_fstat64
7235 eval $inlibc
a0d0e21e 7236
5ff3f7a4
GS
7237 : see if ftruncate64 exists
7238 set ftruncate64 d_ftruncate64
7239 eval $inlibc
a0d0e21e 7240
5ff3f7a4
GS
7241 : see if lockf64 exists
7242 set lockf64 d_lockf64
7243 eval $inlibc
a0d0e21e 7244
5ff3f7a4
GS
7245 : see if lseek64 exists
7246 set lseek64 d_lseek64
7247 eval $inlibc
7248
7249 : see if lstat64 exists
7250 set lstat64 d_lstat64
7251 eval $inlibc
7252
7253 : see if open64 exists
7254 set open64 d_open64
7255 eval $inlibc
7256
7257 : see if opendir64 exists
7258 set opendir64 d_opendir64
7259 eval $inlibc
7260
7261 : see if readdir64 exists
7262 set readdir64 d_readdir64
7263 eval $inlibc
7264
7265 : see if seekdir64 exists
7266 set seekdir64 d_seekdir64
7267 eval $inlibc
7268
7269 : see if stat64 exists
7270 set stat64 d_stat64
7271 eval $inlibc
7272
7273 : see if telldir64 exists
7274 set telldir64 d_telldir64
7275 eval $inlibc
7276
7277 : see if truncate64 exists
7278 set truncate64 d_truncate64
7279 eval $inlibc
7280
7281 : check for off64_t
7282 echo " "
7283 echo $n "Checking to see if your system supports off64_t...$c" >&4
7284 $cat >try.c <<EOCP
7285#include <sys/types.h>
7286off64_t foo() { off64_t x; x = 7; return x; }'
7287EOCP
7288 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7289 val="$define"
7290 echo " Yup, it does." >&4
7291 else
7292 val="$undef"
7293 echo " Nope, it doesn't." >&4
7294 fi
7295 $rm -f try.*
7296 set d_off64t
7297 eval $setvar
7298
7299 : check for ino64_t
7300 echo " "
7301 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7302 val="$undef"
7303 case "$i_sysstat" in
7304 "$define" )
7305 $cat >try.c <<EOCP
7306#include <sys/types.h>
7307#include <sys/stat.h>
7308ino64_t foo() { ino64_t x; x = 7; return x; }'
7309EOCP
7310 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7311 val="$define"
7312 fi
7313 $rm -f try.*
7314 ;;
7315 esac
7316 if $test "X$val" = X"$define"; then
7317 echo " Yup, it does." >&4
7318 else
7319 echo " Nope, it doesn't." >&4
7320 fi
7321 set d_ino64t
7322 eval $setvar
7323
7324 : check for struct flock64
7325 echo " "
85ab1d1d 7326 echo "Checking to see if your system supports struct flock64..." >&4
5ff3f7a4 7327 if $h_fcntl; then
de4597cb 7328 set d_flock64_s flock64 l_len define fcntl.h
5ff3f7a4 7329 eval $hasfield
85ab1d1d
JH
7330 else
7331 val="$undef"
de4597cb 7332 set d_flock64_s
85ab1d1d 7333 eval $setvar
5ff3f7a4 7334 fi
de4597cb 7335 case "$d_flock64_s" in
85ab1d1d
JH
7336 "$define") echo "Yup, it does." >&4
7337 ;;
7338 *) echo "Nope, it doesn't." >&4
7339 ;;
7340 esac
5ff3f7a4
GS
7341
7342 : check for struct dirent64
7343 echo " "
85ab1d1d 7344 echo "Checking to see if your system supports struct dirent64..." >&4
de4597cb 7345 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
5ff3f7a4 7346 eval $hasfield
de4597cb 7347 case "$d_dirent64_s" in
85ab1d1d
JH
7348 "$define") echo "Yup, it does." >&4
7349 ;;
7350 *) echo "Nope, it doesn't." >&4
7351 ;;
7352 esac
7353
5ff3f7a4
GS
7354else
7355 val="$undef"
de4597cb 7356 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_off64t d_ino64t d_flock64_s d_dirent64_s
5ff3f7a4
GS
7357 do
7358 set $xxx
7359 eval $setvar
7360 done
7361fi
7362
7363: see if dlerror exists
7364xxx_runnm="$runnm"
7365runnm=false
7366set dlerror d_dlerror
7367eval $inlibc
7368runnm="$xxx_runnm"
7369
7370: see if dlfcn is available
7371set dlfcn.h i_dlfcn
7372eval $inhdr
7373
7374case "$usedl" in
7375$define|y|true)
7376 $cat << EOM
7377
7378On a few systems, the dynamically loaded modules that perl generates and uses
7379will need a different extension than shared libs. The default will probably
7380be appropriate.
7381
7382EOM
7383 case "$dlext" in
7384 '') dflt="$so" ;;
7385 *) dflt="$dlext" ;;
7386 esac
7387 rp='What is the extension of dynamically loaded modules'
7388 . ./myread
7389 dlext="$ans"
7390 ;;
7391*)
7392 dlext="none"
7393 ;;
7394esac
7395
7396: Check if dlsym need a leading underscore
a0d0e21e
LW
7397echo " "
7398val="$undef"
7399
7400case "$dlsrc" in
7401dl_dlopen.xs)
7402 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7403 $cat >dyna.c <<'EOM'
7404fred () { }
7405EOM
7406
7407$cat >fred.c<<EOM
7408
7409#include <stdio.h>
7410#$i_dlfcn I_DLFCN
7411#ifdef I_DLFCN
7412#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7413#else
7414#include <sys/types.h>
7415#include <nlist.h>
7416#include <link.h>
7417#endif
7418
7419extern int fred() ;
7420
5a411a32 7421int main()
a0d0e21e
LW
7422{
7423 void * handle ;
7424 void * symbol ;
7425#ifndef RTLD_LAZY
7426 int mode = 1 ;
7427#else
7428 int mode = RTLD_LAZY ;
7429#endif
7430 handle = dlopen("./dyna.$dlext", mode) ;
7431 if (handle == NULL) {
5f05dabc 7432 printf ("1\n") ;
7433 fflush (stdout) ;
7434 exit(0);
a0d0e21e
LW
7435 }
7436 symbol = dlsym(handle, "fred") ;
7437 if (symbol == NULL) {
5f05dabc 7438 /* try putting a leading underscore */
7439 symbol = dlsym(handle, "_fred") ;
7440 if (symbol == NULL) {
7441 printf ("2\n") ;
7442 fflush (stdout) ;
7443 exit(0);
7444 }
7445 printf ("3\n") ;
a0d0e21e
LW
7446 }
7447 else
5f05dabc 7448 printf ("4\n") ;
36477c24 7449 fflush (stdout) ;
7450 exit(0);
a0d0e21e
LW
7451}
7452EOM
760ac839 7453 : Call the object file tmp-dyna.o in case dlext=o.
a0d0e21e 7454 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
dfe9444c
AD
7455 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7456 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
87563a30 7457 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
a0d0e21e
LW
7458 xxx=`./fred`
7459 case $xxx in
7460 1) echo "Test program failed using dlopen." >&4
7461 echo "Perhaps you should not use dynamic loading." >&4;;
7462 2) echo "Test program failed using dlsym." >&4
7463 echo "Perhaps you should not use dynamic loading." >&4;;
7464 3) echo "dlsym needs a leading underscore" >&4
7465 val="$define" ;;
7466 4) echo "dlsym doesn't need a leading underscore." >&4;;
7467 esac
7468 else
7469 echo "I can't compile and run the test program." >&4
7470 fi
7471 ;;
7472esac
7473
a78b0d02 7474$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
a0d0e21e
LW
7475
7476set d_dlsymun
7477eval $setvar
7478
85ab1d1d
JH
7479hasproto='varname=$1; func=$2; shift; shift;
7480while $test $# -ge 2; do
7481 case "$1" in
7482 $define) echo "#include <$2>";;
7483 esac ;
7484 shift 2;
7485done > try.c;
7486$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7487if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7488 echo "$func() prototype found.";
7489 val="$define";
7490else
7491 echo "$func() prototype NOT found.";
7492 val="$undef";
7493fi;
7494set $varname;
7495eval $setvar;
7496$rm -f try.c tryout.c'
7497
7498: see if prototype for drand48 is available
7499echo " "
7500set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7501eval $hasproto
7502
a0d0e21e
LW
7503: see if dup2 exists
7504set dup2 d_dup2
7505eval $inlibc
7506
5ff3f7a4
GS
7507: see if eaccess exists
7508set eaccess d_eaccess
7509eval $inlibc
7510
7511: see if endgrent exists
7512set endgrent d_endgrent
7513eval $inlibc
7514
e5c9fcd0
AD
7515: see if endhostent exists
7516set endhostent d_endhent
7517eval $inlibc
7518
7519: see if endnetent exists
7520set endnetent d_endnent
7521eval $inlibc
7522
7523: see if endprotoent exists
7524set endprotoent d_endpent
7525eval $inlibc
7526
5ff3f7a4
GS
7527: see if endpwent exists
7528set endpwent d_endpwent
7529eval $inlibc
7530
e5c9fcd0
AD
7531: see if endservent exists
7532set endservent d_endsent
7533eval $inlibc
7534
8e07c86e
AD
7535: Locate the flags for 'open()'
7536echo " "
7537$cat >open3.c <<'EOCP'
7538#include <sys/types.h>
7539#ifdef I_FCNTL
7540#include <fcntl.h>
7541#endif
7542#ifdef I_SYS_FILE
7543#include <sys/file.h>
7544#endif
d674cd6d 7545int main() {
8e07c86e
AD
7546 if(O_RDONLY);
7547#ifdef O_TRUNC
7548 exit(0);
7549#else
7550 exit(1);
7551#endif
7552}
7553EOCP
7554: check sys/file.h first to get FREAD on Sun
7555if $test `./findhdr sys/file.h` && \
dfe9444c 7556 set open3 -DI_SYS_FILE && eval $compile; then
8e07c86e
AD
7557 h_sysfile=true;
7558 echo "<sys/file.h> defines the O_* constants..." >&4
7559 if ./open3; then
7560 echo "and you have the 3 argument form of open()." >&4
7561 val="$define"
7562 else
7563 echo "but not the 3 argument form of open(). Oh, well." >&4
7564 val="$undef"
7565 fi
7566elif $test `./findhdr fcntl.h` && \
dfe9444c 7567 set open3 -DI_FCNTL && eval $compile; then
8e07c86e
AD
7568 h_fcntl=true;
7569 echo "<fcntl.h> defines the O_* constants..." >&4
7570 if ./open3; then
7571 echo "and you have the 3 argument form of open()." >&4
7572 val="$define"
7573 else
7574 echo "but not the 3 argument form of open(). Oh, well." >&4
7575 val="$undef"
7576 fi
7577else
7578 val="$undef"
7579 echo "I can't find the O_* constant definitions! You got problems." >&4
7580fi
7581set d_open3
7582eval $setvar
7583$rm -f open3*
7584
7585: check for non-blocking I/O stuff
7586case "$h_sysfile" in
7587true) echo "#include <sys/file.h>" > head.c;;
7588*)
7589 case "$h_fcntl" in
7590 true) echo "#include <fcntl.h>" > head.c;;
7591 *) echo "#include <sys/fcntl.h>" > head.c;;
7592 esac
7593 ;;
7594esac
7595echo " "
7596echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7597case "$o_nonblock" in
7598'')
7599 $cat head.c > try.c
7600 $cat >>try.c <<'EOCP'
d674cd6d 7601int main() {
8e07c86e
AD
7602#ifdef O_NONBLOCK
7603 printf("O_NONBLOCK\n");
7604 exit(0);
7605#endif
7606#ifdef O_NDELAY
7607 printf("O_NDELAY\n");
7608 exit(0);
7609#endif
7610#ifdef FNDELAY
7611 printf("FNDELAY\n");
7612 exit(0);
7613#endif
7614 exit(0);
7615}
7616EOCP
dfe9444c 7617 set try
dc45a647 7618 if eval $compile_ok; then
8e07c86e
AD
7619 o_nonblock=`./try`
7620 case "$o_nonblock" in
7621 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7622 *) echo "Seems like we can use $o_nonblock.";;
7623 esac
7624 else
7625 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7626 fi
7627 ;;
7628*) echo "Using $hint value $o_nonblock.";;
7629esac
7630$rm -f try try.* .out core
7631
7632echo " "
7633echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7634case "$eagain" in
7635'')
7636 $cat head.c > try.c
7637 $cat >>try.c <<EOCP
7638#include <errno.h>
7639#include <sys/types.h>
7640#include <signal.h>
4633a7c4 7641#define MY_O_NONBLOCK $o_nonblock
dc45a647 7642#ifndef errno /* XXX need better Configure test */
8e07c86e 7643extern int errno;
dc45a647 7644#endif
8e07c86e 7645$signal_t blech(x) int x; { exit(3); }
4633a7c4
LW
7646EOCP
7647 $cat >> try.c <<'EOCP'
d674cd6d 7648int main()
8e07c86e
AD
7649{
7650 int pd[2];
7651 int pu[2];
7652 char buf[1];
7653 char string[100];
7654
7655 pipe(pd); /* Down: child -> parent */
7656 pipe(pu); /* Up: parent -> child */
7657 if (0 != fork()) {
7658 int ret;
7659 close(pd[1]); /* Parent reads from pd[0] */
7660 close(pu[0]); /* Parent writes (blocking) to pu[1] */
4633a7c4 7661 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8e07c86e
AD
7662 exit(1);
7663 signal(SIGALRM, blech);
7664 alarm(5);
7665 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7666 exit(2);
7667 sprintf(string, "%d\n", ret);
7668 write(2, string, strlen(string));
7669 alarm(0);
7670#ifdef EAGAIN
7671 if (errno == EAGAIN) {
7672 printf("EAGAIN\n");
7673 goto ok;
7674 }
7675#endif
7676#ifdef EWOULDBLOCK
7677 if (errno == EWOULDBLOCK)
7678 printf("EWOULDBLOCK\n");
7679#endif
7680 ok:
7681 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7682 sleep(2); /* Give it time to close our pipe */
7683 alarm(5);
7684 ret = read(pd[0], buf, 1); /* Should read EOF */
7685 alarm(0);
7686 sprintf(string, "%d\n", ret);
7687 write(3, string, strlen(string));
7688 exit(0);
7689 }
7690
7691 close(pd[0]); /* We write to pd[1] */
7692 close(pu[1]); /* We read from pu[0] */
7693 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7694 close(pd[1]); /* Pipe pd is now fully closed! */
7695 exit(0); /* Bye bye, thank you for playing! */
7696}
7697EOCP
dfe9444c 7698 set try
dc45a647 7699 if eval $compile_ok; then
774d564b 7700 echo "$startsh" >mtry
40a7a20a 7701 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8e07c86e
AD
7702 chmod +x mtry
7703 ./mtry >/dev/null 2>&1
7704 case $? in
7705 0) eagain=`$cat try.out`;;
7706 1) echo "Could not perform non-blocking setting!";;
7707 2) echo "I did a successful read() for something that was not there!";;
7708 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7709 *) echo "Something terribly wrong happened during testing.";;
7710 esac
7711 rd_nodata=`$cat try.ret`
7712 echo "A read() system call with no data present returns $rd_nodata."
7713 case "$rd_nodata" in
7714 0|-1) ;;
7715 *)
7716 echo "(That's peculiar, fixing that to be -1.)"
7717 rd_nodata=-1
7718 ;;
7719 esac
7720 case "$eagain" in
7721 '')
7722 echo "Forcing errno EAGAIN on read() with no data available."
7723 eagain=EAGAIN
7724 ;;
7725 *)
7726 echo "Your read() sets errno to $eagain when no data is available."
7727 ;;
7728 esac
7729 status=`$cat try.err`
7730 case "$status" in
7731 0) echo "And it correctly returns 0 to signal EOF.";;
7732 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7733 *) echo "However, your read() returns '$status' on EOF??";;
7734 esac
7735 val="$define"
28757baa 7736 if test "$status" = "$rd_nodata"; then
8e07c86e
AD
7737 echo "WARNING: you can't distinguish between EOF and no data!"
7738 val="$undef"
7739 fi
7740 else
7741 echo "I can't compile the test program--assuming errno EAGAIN will do."
7742 eagain=EAGAIN
7743 fi
7744 set d_eofnblk
7745 eval $setvar
7746 ;;
7747*)
7748 echo "Using $hint value $eagain."
7749 echo "Your read() returns $rd_nodata when no data is present."
7750 case "$d_eofnblk" in
7751 "$define") echo "And you can see EOF because read() returns 0.";;
7752 "$undef") echo "But you can't see EOF status from read() returned value.";;
7753 *)
7754 echo "(Assuming you can't see EOF status from read anyway.)"
7755 d_eofnblk=$undef
7756 ;;
7757 esac
7758 ;;
7759esac
7760$rm -f try try.* .out core head.c mtry
7761
a0d0e21e
LW
7762: see if fchmod exists
7763set fchmod d_fchmod
7764eval $inlibc
7765
7766: see if fchown exists
7767set fchown d_fchown
7768eval $inlibc
7769
7770: see if this is an fcntl system
7771set fcntl d_fcntl
7772eval $inlibc
7773
921b2963
JH
7774: see if sys/select.h has to be included
7775set sys/select.h i_sysselct
7776eval $inhdr
7777
7778: see if we should include time.h, sys/time.h, or both
7779echo " "
7780if test "X$timeincl" = X; then
7781 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7782 $echo $n "I'm now running the test program...$c"
7783 $cat >try.c <<'EOCP'
7784#include <sys/types.h>
7785#ifdef I_TIME
7786#include <time.h>
7787#endif
7788#ifdef I_SYSTIME
7789#ifdef SYSTIMEKERNEL
7790#define KERNEL
7791#endif
7792#include <sys/time.h>
7793#endif
7794#ifdef I_SYSSELECT
7795#include <sys/select.h>
7796#endif
d674cd6d 7797int main()
921b2963
JH
7798{
7799 struct tm foo;
7800#ifdef S_TIMEVAL
7801 struct timeval bar;
7802#endif
7803#ifdef S_TIMEZONE
7804 struct timezone tzp;
7805#endif
7806 if (foo.tm_sec == foo.tm_sec)
7807 exit(0);
7808#ifdef S_TIMEVAL
7809 if (bar.tv_sec == bar.tv_sec)
7810 exit(0);
7811#endif
7812 exit(1);
7813}
7814EOCP
7815 flags=''
7816 for s_timezone in '-DS_TIMEZONE' ''; do
7817 sysselect=''
7818 for s_timeval in '-DS_TIMEVAL' ''; do
7819 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7820 for i_time in '' '-DI_TIME'; do
7821 for i_systime in '-DI_SYSTIME' ''; do
7822 case "$flags" in
7823 '') $echo $n ".$c"
7824 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7825 if eval $compile; then
7826 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7827 shift
7828 flags="$*"
7829 echo " "
7830 $echo $n "Succeeded with $flags$c"
7831 fi
7832 ;;
7833 esac
7834 done
7835 done
7836 done
7837 done
7838 done
7839 timeincl=''
7840 echo " "
7841 case "$flags" in
7842 *SYSTIMEKERNEL*) i_systimek="$define"
7843 timeincl=`./findhdr sys/time.h`
7844 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7845 *) i_systimek="$undef";;
7846 esac
7847 case "$flags" in
7848 *I_TIME*) i_time="$define"
7849 timeincl=`./findhdr time.h`" $timeincl"
7850 echo "We'll include <time.h>." >&4;;
7851 *) i_time="$undef";;
7852 esac
7853 case "$flags" in
7854 *I_SYSTIME*) i_systime="$define"
7855 timeincl=`./findhdr sys/time.h`" $timeincl"
7856 echo "We'll include <sys/time.h>." >&4;;
7857 *) i_systime="$undef";;
7858 esac
7859 $rm -f try.c try
7860fi
7861
7862: check for fd_set items
7863$cat <<EOM
7864
7865Checking to see how well your C compiler handles fd_set and friends ...
7866EOM
7867$cat >fd_set.c <<EOCP
7868#$i_systime I_SYS_TIME
7869#$i_sysselct I_SYS_SELECT
7870#$d_socket HAS_SOCKET
7871#include <sys/types.h>
7872#ifdef HAS_SOCKET
7873#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7874#endif
7875#ifdef I_SYS_TIME
7876#include <sys/time.h>
7877#endif
7878#ifdef I_SYS_SELECT
7879#include <sys/select.h>
7880#endif
d674cd6d 7881int main() {
921b2963
JH
7882 fd_set fds;
7883
7884#ifdef TRYBITS
7885 if(fds.fds_bits);
7886#endif
7887
7888#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7889 exit(0);
7890#else
7891 exit(1);
7892#endif
7893}
7894EOCP
7895set fd_set -DTRYBITS
7896if eval $compile; then
7897 d_fds_bits="$define"
7898 d_fd_set="$define"
7899 echo "Well, your system knows about the normal fd_set typedef..." >&4
7900 if ./fd_set; then
7901 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7902 d_fd_macros="$define"
7903 else
7904 $cat >&4 <<'EOM'
7905but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7906EOM
7907 d_fd_macros="$undef"
7908 fi
7909else
7910 $cat <<'EOM'
7911Hmm, your compiler has some difficulty with fd_set. Checking further...
7912EOM
7913 set fd_set
7914 if eval $compile; then
7915 d_fds_bits="$undef"
7916 d_fd_set="$define"
7917 echo "Well, your system has some sort of fd_set available..." >&4
7918 if ./fd_set; then
7919 echo "and you have the normal fd_set macros." >&4
7920 d_fd_macros="$define"
7921 else
7922 $cat <<'EOM'
7923but not the normal fd_set macros! Gross! More work for me...
7924EOM
7925 d_fd_macros="$undef"
7926 fi
7927 else
7928 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7929 d_fd_set="$undef"
7930 d_fds_bits="$undef"
7931 d_fd_macros="$undef"
7932 fi
7933fi
7934$rm -f fd_set*
7935
a0d0e21e
LW
7936: see if fgetpos exists
7937set fgetpos d_fgetpos
7938eval $inlibc
7939
5ff3f7a4
GS
7940
7941if $test X"$use64bits" = X"$define"; then
7942 : see if fgetpos64 exists
7943 set fgetpos64 d_fgetpos64
7944 eval $inlibc
7945
7946 : see if fopen64 exists
7947 set freopen64 d_fopen64
7948 eval $inlibc
7949
7950 : see if freopen64 exists
7951 set freopen64 d_freopen64
7952 eval $inlibc
7953
7954 : see if fseek64 exists
7955 set fseek64 d_fseek64
7956 eval $inlibc
7957
7958 : see if fseeko64 exists
7959 set fseeko64 d_fseeko64
7960 eval $inlibc
7961
7962 : see if fsetpos64 exists
7963 set fsetpos64 d_fsetpos64
7964 eval $inlibc
7965
7966 : see if ftell64 exists
7967 set ftell64 d_ftell64
7968 eval $inlibc
7969
7970 : see if ftello64 exists
7971 set ftello64 d_ftello64
7972 eval $inlibc
7973
7974 : see if tmpfile64 exists
7975 set tmpfile64 d_tmpfile64
7976 eval $inlibc
7977else
7978 val="$undef"
7979 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7980 do
7981 set $xxx
7982 eval $setvar
7983 done
7984fi
7985
a0d0e21e
LW
7986: see if flock exists
7987set flock d_flock
7988eval $inlibc
7989
a0d0e21e
LW
7990: see if fork exists
7991set fork d_fork
7992eval $inlibc
7993
7994: see if pathconf exists
7995set pathconf d_pathconf
7996eval $inlibc
7997
7998: see if fpathconf exists
7999set fpathconf d_fpathconf
8000eval $inlibc
8001
5ff3f7a4
GS
8002: see if fseeko exists
8003set fseeko d_fseeko
8004eval $inlibc
8005
a0d0e21e
LW
8006: see if fsetpos exists
8007set fsetpos d_fsetpos
8008eval $inlibc
8009
9b9c89a3
JH
8010: see if this is a sys/param system
8011set sys/param.h i_sysparam
8012eval $inhdr
8013
104d25b7
JH
8014: see if this is a sys/mount.h system
8015set sys/mount.h i_sysmount
8016eval $inhdr
8017
8018
8019: see if statfs exists
8020set statfs d_statfs
8021eval $inlibc
8022
8023: see if fstatfs exists
8024set fstatfs d_fstatfs
8025eval $inlibc
8026
8027: see if statfs knows about mount flags
9b9c89a3 8028set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
104d25b7
JH
8029eval $hasfield
8030
8031
8032: see if statvfs exists
8033set statvfs d_statvfs
8034eval $inlibc
8035
8036: see if fstatvfs exists
8037set fstatvfs d_fstatvfs
8038eval $inlibc
8039
8040
5ff3f7a4
GS
8041: see if ftello exists
8042set ftello d_ftello
8043eval $inlibc
8044
8045: see if getgrent exists
8046set getgrent d_getgrent
8047eval $inlibc
8048
693762b4
AD
8049: see if gethostbyaddr exists
8050set gethostbyaddr d_gethbyaddr
8051eval $inlibc
8052
8053: see if gethostbyname exists
8054set gethostbyname d_gethbyname
8055eval $inlibc
8056
a0d0e21e
LW
8057: see if gethostent exists
8058set gethostent d_gethent
8059eval $inlibc
8060
921b2963
JH
8061: see how we will look up host name
8062echo " "
a63faeb8
JH
8063call=''
8064if set gethostname val -f d_gethname; eval $csym; $val; then
921b2963
JH
8065 echo 'gethostname() found.' >&4
8066 d_gethname="$define"
8067 call=gethostname
a63faeb8
JH
8068fi
8069if set uname val -f d_uname; eval $csym; $val; then
921b2963
JH
8070 if ./xenix; then
8071 $cat <<'EOM'
8072uname() was found, but you're running xenix, and older versions of xenix
8073have a broken uname(). If you don't really know whether your xenix is old
8074enough to have a broken system call, use the default answer.
8075
8076EOM
8077 dflt=y
8078 case "$d_uname" in
8079 "$define") dflt=n;;
8080 esac
8081 rp='Is your uname() broken?'
8082 . ./myread
8083 case "$ans" in
8084 n*) d_uname="$define"; call=uname;;
8085 esac
8086 else
8087 echo 'uname() found.' >&4
8088 d_uname="$define"
a63faeb8
JH
8089 case "$call" in
8090 '') call=uname ;;
8091 esac
921b2963
JH
8092 fi
8093fi
8094case "$d_gethname" in
8095'') d_gethname="$undef";;
8096esac
8097case "$d_uname" in
8098'') d_uname="$undef";;
8099esac
8100case "$d_uname$d_gethname" in
8101*define*)
8102 dflt=n
8103 cat <<EOM
8104
8105Every now and then someone has a $call() that lies about the hostname
8106but can't be fixed for political or economic reasons. If you wish, I can
8107pretend $call() isn't there and maybe compute hostname at run-time
8108thanks to the '$phostname' command.
8109
8110EOM
8111 rp="Shall I ignore $call() from now on?"
8112 . ./myread
8113 case "$ans" in
8114 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8115 esac;;
8116esac
8117case "$phostname" in
8118'') aphostname='';;
8119*) case "$aphostname" in
8120 /*) ;;
8121 *) set X $phostname
8122 shift
8123 file=$1
8124 shift
8125 file=`./loc $file $file $pth`
8126 aphostname=`echo $file $*`
8127 ;;
8128 esac
8129 ;;
8130esac
8131case "$d_uname$d_gethname" in
8132*define*) ;;
8133*)
8134 case "$phostname" in
8135 '')
8136 echo "There will be no way for $package to get your hostname." >&4;;
8137 *)
8138 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8139 ;;
8140 esac;;
8141esac
8142case "$d_phostname" in
8143'') d_phostname="$undef";;
8144esac
8145
dc45a647
MB
8146: see if this is a netdb.h system
8147set netdb.h i_netdb
8148eval $inhdr
8149
8150: see if prototypes for various gethostxxx netdb.h functions are available
8151echo " "
8152set d_gethostprotos gethostent $i_netdb netdb.h
8153eval $hasproto
8154
a0d0e21e
LW
8155: see if getlogin exists
8156set getlogin d_getlogin
8157eval $inlibc
8158
ccc7f9b3
KS
8159: see if getmntent exists
8160set getmntent d_getmntent
8161eval $inlibc
8162
693762b4
AD
8163: see if getnetbyaddr exists
8164set getnetbyaddr d_getnbyaddr
8165eval $inlibc
8166
8167: see if getnetbyname exists
8168set getnetbyname d_getnbyname
8169eval $inlibc
8170
e5c9fcd0
AD
8171: see if getnetent exists
8172set getnetent d_getnent
8173eval $inlibc
8174
dc45a647
MB
8175: see if prototypes for various getnetxxx netdb.h functions are available
8176echo " "
8177set d_getnetprotos getnetent $i_netdb netdb.h
8178eval $hasproto
8179
693762b4
AD
8180
8181: see if getprotobyname exists
8182set getprotobyname d_getpbyname
8183eval $inlibc
8184
8185: see if getprotobynumber exists
8186set getprotobynumber d_getpbynumber
8187eval $inlibc
e5c9fcd0
AD
8188
8189: see if getprotoent exists
8190set getprotoent d_getpent
8191eval $inlibc
8192
2afac517 8193: see if getpgid exists
8194set getpgid d_getpgid
a0d0e21e
LW
8195eval $inlibc
8196
8197: see if getpgrp2 exists
8198set getpgrp2 d_getpgrp2
8199eval $inlibc
8200
8201: see if getppid exists
8202set getppid d_getppid
8203eval $inlibc
8204
8205: see if getpriority exists
8206set getpriority d_getprior
8207eval $inlibc
8208
dc45a647
MB
8209: see if prototypes for various getprotoxxx netdb.h functions are available
8210echo " "
8211set d_getprotoprotos getprotoent $i_netdb netdb.h
8212eval $hasproto
8213
5ff3f7a4
GS
8214: see if getpwent exists
8215set getpwent d_getpwent
8216eval $inlibc
8217
8218
693762b4
AD
8219: see if getservbyname exists
8220set getservbyname d_getsbyname
8221eval $inlibc
8222
8223: see if getservbyport exists
8224set getservbyport d_getsbyport
8225eval $inlibc
e5c9fcd0
AD
8226
8227: see if getservent exists
8228set getservent d_getsent
8229eval $inlibc
8230
dc45a647
MB
8231: see if prototypes for various getservxxx netdb.h functions are available
8232echo " "
8233set d_getservprotos getservent $i_netdb netdb.h
8234eval $hasproto
8235
5f05dabc 8236: see if gettimeofday or ftime exists
8237set gettimeofday d_gettimeod
8238eval $inlibc
8239case "$d_gettimeod" in
8240"$undef")
8241 set ftime d_ftime
8242 eval $inlibc
8243 ;;
8244*)
8245 val="$undef"; set d_ftime; eval $setvar
8246 ;;
8247esac
8248case "$d_gettimeod$d_ftime" in
8249"$undef$undef")
8250 echo " "
8251 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8252 ;;
8253esac
8254
5ff3f7a4
GS
8255: see if this is an grp system
8256set grp.h i_grp
8257eval $inhdr
8258
8259case "$i_grp" in
8260$define)
8261 xxx=`./findhdr grp.h`
8262 $cppstdin $cppflags $cppminus < $xxx >$$.h
8263
8264 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8265 val="$define"
8266 else
8267 val="$undef"
8268 fi
8269 set d_grpasswd
8270 eval $setvar
8271
8272 $rm -f $$.h
8273 ;;
8274*)
8275 val="$undef";
8276 set d_grpasswd; eval $setvar
8277 ;;
8278esac
8279
ccc7f9b3
KS
8280: see if hasmntopt exists
8281set hasmntopt d_hasmntopt
8282eval $inlibc
8283
a0d0e21e
LW
8284: see if this is a netinet/in.h or sys/in.h system
8285set netinet/in.h i_niin sys/in.h i_sysin
8286eval $inhdr
8287
5ff3f7a4 8288: see if arpa/inet.h has to be included
93341792 8289set arpa/inet.h i_arpainet
28e8609d
JH
8290eval $inhdr
8291
a0d0e21e
LW
8292: see if htonl --and friends-- exists
8293val=''
8294set htonl val
8295eval $inlibc
8296
8297: Maybe they are macros.
8298case "$val" in
8299$undef)
8300 $cat >htonl.c <<EOM
8301#include <stdio.h>
8302#include <sys/types.h>
8303#$i_niin I_NETINET_IN
8304#$i_sysin I_SYS_IN
93341792 8305#$i_arpainet I_ARPA_INET
a0d0e21e
LW
8306#ifdef I_NETINET_IN
8307#include <netinet/in.h>
8308#endif
8309#ifdef I_SYS_IN
8310#include <sys/in.h>
8311#endif
28e8609d
JH
8312#ifdef I_ARPA_INET
8313#include <arpa/inet.h>
8314#endif
a0d0e21e
LW
8315#ifdef htonl
8316printf("Defined as a macro.");
8317#endif
8318EOM
8319 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8320 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8321 val="$define"
8322 echo "But it seems to be defined as a macro." >&4
8323 fi
8324 $rm -f htonl.?
8325 ;;
8326esac
8327set d_htonl
8328eval $setvar
8329
8330: see which of string.h or strings.h is needed
8331echo " "
8332strings=`./findhdr string.h`
8333if $test "$strings" && $test -r "$strings"; then
8334 echo "Using <string.h> instead of <strings.h>." >&4
8335 val="$define"
8336else
8337 val="$undef"
8338 strings=`./findhdr strings.h`
8339 if $test "$strings" && $test -r "$strings"; then
8340 echo "Using <strings.h> instead of <string.h>." >&4
8341 else
8342 echo "No string header found -- You'll surely have problems." >&4
8343 fi
8344fi
8345set i_string
8346eval $setvar
8347case "$i_string" in
8348"$undef") strings=`./findhdr strings.h`;;
8349*) strings=`./findhdr string.h`;;
8350esac
8351
8352: index or strchr
8353echo " "
8354if set index val -f; eval $csym; $val; then
8355 if set strchr val -f d_strchr; eval $csym; $val; then
8356 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8357 val="$define"
8358 vali="$undef"
8359 echo "strchr() found." >&4
8360 else
8361 val="$undef"
8362 vali="$define"
8363 echo "index() found." >&4
8364 fi
8365 else
8366 val="$undef"
8367 vali="$define"
8368 echo "index() found." >&4
8369 fi
8370else
8371 if set strchr val -f d_strchr; eval $csym; $val; then
8372 val="$define"
8373 vali="$undef"
8374 echo "strchr() found." >&4
8375 else
8376 echo "No index() or strchr() found!" >&4
8377 val="$undef"
8378 vali="$undef"
8379 fi
8380fi
8381set d_strchr; eval $setvar
8382val="$vali"
8383set d_index; eval $setvar
8384
7e1af8bc 8385: check whether inet_aton exists
8386set inet_aton d_inetaton
8387eval $inlibc
8388
5ff3f7a4 8389: see if inttypes.h is available
7f3d1cf1
BH
8390: we want a real compile instead of Inhdr because some systems
8391: have an inttypes.h which includes non-existent headers
921b2963 8392echo " "
7f3d1cf1
BH
8393$cat >try.c <<EOCP
8394#include <inttypes.h>
5a411a32 8395int main() {
921b2963
JH
8396 static int32_t foo32 = 0x12345678;
8397}
7f3d1cf1
BH
8398EOCP
8399set try
921b2963
JH
8400if eval $compile; then
8401 echo "<inttypes.h> found." >&4
7f3d1cf1
BH
8402 val="$define"
8403else
921b2963 8404 echo "<inttypes.h> NOT found." >&4
7f3d1cf1
BH
8405 val="$undef"
8406fi
921b2963 8407$rm -f try.c try
7f3d1cf1
BH
8408set i_inttypes
8409eval $setvar
8410
5ff3f7a4 8411: check for int64_t
85ab1d1d
JH
8412case "$use64bits" in
8413"$define" )
8414 echo " "
8415 echo $n "Checking to see if your system supports int64_t...$c" >&4
8416 $cat >try.c <<EOCP
5ff3f7a4
GS
8417#include <sys/types.h>
8418#$i_inttypes I_INTTYPES
8419#ifdef I_INTTYPES
8420#include <inttypes.h>
8421#endif
94be4d36 8422int64_t foo() { int64_t x; x = 7; return x; }
5ff3f7a4 8423EOCP
85ab1d1d
JH
8424 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8425 val="$define"
8426 echo " Yup, it does." >&4
8427 else
8428 val="$undef"
8429 echo " Nope, it doesn't." >&4
8430 fi
8431 $rm -f try.*
8432 ;;
8433*) val="$undef"
8434 ;;
8435esac
5ff3f7a4
GS
8436set d_int64t
8437eval $setvar
8438
8439
a0d0e21e
LW
8440: Look for isascii
8441echo " "
8442$cat >isascii.c <<'EOCP'
8443#include <stdio.h>
8444#include <ctype.h>
d674cd6d 8445int main() {
a0d0e21e
LW
8446 int c = 'A';
8447 if (isascii(c))
8448 exit(0);
8449 else
8450 exit(1);
8451}
8452EOCP
dfe9444c
AD
8453set isascii
8454if eval $compile; then
a0d0e21e
LW
8455 echo "isascii() found." >&4
8456 val="$define"
8457else
8458 echo "isascii() NOT found." >&4
8459 val="$undef"
8460fi
8461set d_isascii
8462eval $setvar
8463$rm -f isascii*
8464
8465: see if killpg exists
8466set killpg d_killpg
8467eval $inlibc
8468
dd64f1c3
AD
8469: see if lchown exists
8470echo " "
8471$cat > try.c <<'EOCP'
8472/* System header to define __stub macros and hopefully few prototypes,
8473 which can conflict with char lchown(); below. */
8474#include <assert.h>
8475/* Override any gcc2 internal prototype to avoid an error. */
8476/* We use char because int might match the return type of a gcc2
8477 builtin and then its argument prototype would still apply. */
8478char lchown();
8479int main() {
8480 /* The GNU C library defines this for functions which it implements
8481 to always fail with ENOSYS. Some functions are actually named
8482 something starting with __ and the normal name is an alias. */
8483#if defined (__stub_lchown) || defined (__stub___lchown)
8484choke me
8485#else
8486lchown();
8487#endif
8488; return 0; }
8489EOCP
8490set try
8491if eval $compile; then
8492 $echo "lchown() found." >&4
8493 val="$define"
8494else
8495 $echo "lchown() NOT found." >&4
8496 val="$undef"
8497fi
8498set d_lchown
8499eval $setvar
8500
a0d0e21e
LW
8501: see if link exists
8502set link d_link
8503eval $inlibc
8504
a0d0e21e
LW
8505: see if localeconv exists
8506set localeconv d_locconv
8507eval $inlibc
8508
8509: see if lockf exists
8510set lockf d_lockf
8511eval $inlibc
8512
85ab1d1d
JH
8513: check for length of double
8514echo " "
8515case "$doublesize" in
8516'')
8517 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8518 $cat >try.c <<'EOCP'
8519#include <stdio.h>
d674cd6d 8520int main()
85ab1d1d
JH
8521{
8522 printf("%d\n", sizeof(double));
8523}
8524EOCP
8525 set try
8526 if eval $compile_ok; then
8527 doublesize=`./try`
8528 $echo " $doublesize bytes." >&4
8529 else
8530 dflt='8'
8531 echo "(I can't seem to compile the test program. Guessing...)"
8532 rp="What is the size of a double precision number (in bytes)?"
8533 . ./myread
8534 doublesize="$ans"
8535 fi
8536 ;;
8537esac
8538$rm -f try.c try
8539
e5c9fcd0
AD
8540: check for long doubles
8541echo " "
8542echo $n "Checking to see if your system supports long doubles...$c" >&4
8543echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
dc45a647 8544if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
e5c9fcd0
AD
8545 val="$define"
8546 echo " Yup, it does." >&4
8547else
8548 val="$undef"
8549 echo " Nope, it doesn't." >&4
8550fi
8551$rm try.*
8552set d_longdbl
8553eval $setvar
8554
8555: check for length of long double
e5c9fcd0
AD
8556case "${d_longdbl}${longdblsize}" in
8557$define)
dc45a647 8558 echo " "
e5c9fcd0
AD
8559 $echo $n "Checking to see how big your long doubles are...$c" >&4
8560 $cat >try.c <<'EOCP'
8561#include <stdio.h>
5a411a32 8562int main()
e5c9fcd0
AD
8563{
8564 printf("%d\n", sizeof(long double));
8565}
8566EOCP
8567 set try
c4f23d77 8568 if eval $compile; then
e5c9fcd0 8569 longdblsize=`./try`
dc45a647 8570 $echo " $longdblsize bytes." >&4
e5c9fcd0
AD
8571 else
8572 dflt='8'
dc45a647 8573 echo " "
c4f23d77 8574 echo "(I can't seem to compile the test program. Guessing...)" >&4
e5c9fcd0
AD
8575 rp="What is the size of a long double (in bytes)?"
8576 . ./myread
8577 longdblsize="$ans"
8578 fi
85ab1d1d
JH
8579 if $test "X$doublesize" = "X$longdblsize"; then
8580 echo "(That isn't any different from an ordinary double.)"
8581 fi
dc45a647
MB
8582 ;;
8583esac
8584$rm -f try.c try
8585
8586: check for long long
8587echo " "
8588echo $n "Checking to see if your system supports long long...$c" >&4
8589echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8590if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8591 val="$define"
8592 echo " Yup, it does." >&4
8593else
8594 val="$undef"
8595 echo " Nope, it doesn't." >&4
8596fi
8597$rm try.*
8598set d_longlong
8599eval $setvar
8600
8601: check for length of long long
8602case "${d_longlong}${longlongsize}" in
8603$define)
8604 echo " "
8605 $echo $n "Checking to see how big your long longs are...$c" >&4
8606 $cat >try.c <<'EOCP'
8607#include <stdio.h>
5a411a32 8608int main()
dc45a647
MB
8609{
8610 printf("%d\n", sizeof(long long));
8611}
8612EOCP
8613 set try
8614 if eval $compile_ok; then
8615 longlongsize=`./try`
8616 $echo " $longlongsize bytes." >&4
8617 else
8618 dflt='8'
8619 echo " "
8620 echo "(I can't seem to compile the test program. Guessing...)"
8621 rp="What is the size of a long long (in bytes)?"
8622 . ./myread
8623 longlongsize="$ans"
8624 fi
85ab1d1d
JH
8625 if $test "X$longsize" = "X$longlongsize"; then
8626 echo "(That isn't any different from an ordinary long.)"
8627 fi
e5c9fcd0
AD
8628 ;;
8629esac
8630$rm -f try.c try
8631
a0d0e21e
LW
8632: see if lstat exists
8633set lstat d_lstat
8634eval $inlibc
8635
ff49bff8
JH
8636: see if madvise exists
8637set madvise d_madvise
8638eval $inlibc
8639
a0d0e21e
LW
8640: see if mblen exists
8641set mblen d_mblen
8642eval $inlibc
8643
8644: see if mbstowcs exists
8645set mbstowcs d_mbstowcs
8646eval $inlibc
8647
8648: see if mbtowc exists
8649set mbtowc d_mbtowc
8650eval $inlibc
8651
8652: see if memcmp exists
8653set memcmp d_memcmp
8654eval $inlibc
8655
8656: see if memcpy exists
8657set memcpy d_memcpy
8658eval $inlibc
8659
8660: see if memmove exists
8661set memmove d_memmove
2304df62
AD
8662eval $inlibc
8663
8664: see if memset exists
8665set memset d_memset
8666eval $inlibc
8667
8668: see if mkdir exists
8669set mkdir d_mkdir
8670eval $inlibc
8671
a0d0e21e
LW
8672: see if mkfifo exists
8673set mkfifo d_mkfifo
8674eval $inlibc
8675
8676: see if mktime exists
8677set mktime d_mktime
8678eval $inlibc
8679
ff49bff8
JH
8680: see if this is a sys/mman.h system
8681set sys/mman.h i_sysmman
8682eval $inhdr
8683
8684: see if mmap exists
8685set mmap d_mmap
8686eval $inlibc
8687: see what shmat returns
8688: default to something harmless
8689mmaptype='void *'
8690case "$i_sysmman$d_mmap" in
8691"$define$define")
8692 $cat >mmap.c <<'END'
8693#include <sys/mman.h>
8694void *mmap();
8695END
8696 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8697 mmaptype='void *'
8698 else
8699 mmaptype='caddr_t'
8700 fi
8701 echo "and it returns ($mmaptype)." >&4
8702 ;;
8703esac
8704
8705
8706
8707: see if mprotect exists
8708set mprotect d_mprotect
8709eval $inlibc
8710
2304df62
AD
8711: see if msgctl exists
8712set msgctl d_msgctl
8713eval $inlibc
8714
8715: see if msgget exists
8716set msgget d_msgget
8717eval $inlibc
8718
8719: see if msgsnd exists
8720set msgsnd d_msgsnd
8721eval $inlibc
8722
8723: see if msgrcv exists
8724set msgrcv d_msgrcv
8725eval $inlibc
8726
8727: see how much of the 'msg*(2)' library is present.
8728h_msg=true
8729echo " "
8730case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8731*"$undef"*) h_msg=false;;
8732esac
6087ac44
JH
8733case "$osname" in
8734freebsd)
8735 case "`ipcs 2>&1`" in
8736 "SVID messages"*"not configured"*)
5ff3f7a4 8737 echo "Your $osname does not have the msg*(2) configured." >&4
6087ac44
JH
8738 h_msg=false
8739 val="$undef"
8740 set msgctl d_msgctl
8741 eval $setvar
8742 set msgget d_msgget
8743 eval $setvar
8744 set msgsnd d_msgsnd
8745 eval $setvar
8746 set msgrcv d_msgrcv
8747 eval $setvar
8748 ;;
8749 esac
8750 ;;
8751esac
2304df62
AD
8752: we could also check for sys/ipc.h ...
8753if $h_msg && $test `./findhdr sys/msg.h`; then
8754 echo "You have the full msg*(2) library." >&4
8755 val="$define"
8756else
8757 echo "You don't have the full msg*(2) library." >&4
8758 val="$undef"
8759fi
8760set d_msg
8761eval $setvar
8762
ff49bff8
JH
8763: see if msync exists
8764set msync d_msync
8765eval $inlibc
8766
8767: see if munmap exists
8768set munmap d_munmap
8769eval $inlibc
8770
dfe9444c
AD
8771: see if nice exists
8772set nice d_nice
8773eval $inlibc
8774
c4747d3e 8775: see if POSIX threads are available
13666627 8776if test "X$usethreads" = "X$define"; then
c4747d3e
JH
8777 set pthread.h i_pthread
8778 eval $inhdr
8779else
8780 i_pthread="$undef"
8781fi
8782
8783
8784
8785: how to create joinable pthreads
8786if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13666627
JH
8787 echo " "
8788 echo "Checking what constant to use for creating joinable pthreads..." >&4
8789 $cat >try.c <<'EOCP'
8790#include <pthread.h>
8791int main() {
8792 int detachstate = JOINABLE;
8793}
8794EOCP
8795 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8796 if eval $compile; then
c6912327 8797 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
ef4af2be
JH
8798 val="$undef" # Yes, undef.
8799 set d_old_pthread_create_joinable
13666627 8800 eval $setvar
ef4af2be
JH
8801 val=""
8802 set old_pthread_create_joinable
13666627
JH
8803 eval $setvar
8804 else
8805 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8806 if eval $compile; then
c6912327 8807 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13666627 8808 val="$define"
ef4af2be 8809 set d_old_pthread_create_joinable
13666627
JH
8810 eval $setvar
8811 val=PTHREAD_CREATE_UNDETACHED
ef4af2be 8812 set old_pthread_create_joinable
13666627
JH
8813 eval $setvar
8814 else
8815 set try -DJOINABLE=__UNDETACHED
8816 if eval $compile; then
c6912327 8817 echo "You seem to use __UNDETACHED." >&4
13666627 8818 val="$define"
ef4af2be 8819 set d_old_pthread_create_joinable
13666627
JH
8820 eval $setvar
8821 val=__UNDETACHED
ef4af2be 8822 set old_pthread_create_joinable
13666627
JH
8823 eval $setvar
8824 else
c6912327 8825 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13666627 8826 val="$define"
ef4af2be 8827 set d_old_pthread_create_joinable
13666627
JH
8828 eval $setvar
8829 val=0
ef4af2be 8830 set old_pthread_create_joinable
13666627
JH
8831 eval $setvar
8832 fi
8833 fi
8834 fi
8835 $rm -f try try.*
8836else
ef4af2be
JH
8837 d_old_pthread_create_joinable="$undef"
8838 old_pthread_create_joinable=""
13666627
JH
8839fi
8840
ef4af2be
JH
8841: see if pause exists
8842set pause d_pause
8843eval $inlibc
8844
8845: see if pipe exists
8846set pipe d_pipe
8847eval $inlibc
8848
8849: see if poll exists
8850set poll d_poll
8851eval $inlibc
8852
31dfa2f6
JH
8853
8854: see whether the various POSIXish _yields exist
8855$cat >try.c <<EOP
8856#include <pthread.h>
8857#include <stdio.h>
5a411a32 8858int main() {
31dfa2f6
JH
8859#ifdef SCHED_YIELD
8860 sched_yield();
8861#else
8862#ifdef PTHREAD_YIELD
8863 pthread_yield();
8864#else
8865#ifdef PTHREAD_YIELD_NULL
8866 pthread_yield(NULL);
8867#endif
8868#endif
8869#endif
8870}
8871EOP
8872: see if sched_yield exists
8873set try -DSCHED_YIELD
8874if eval $compile; then
8875 val="$define"
8876 sched_yield='sched_yield()'
8877else
8878 val="$undef"
8879fi
8880case "$usethreads" in
8881$define)
8882 case "$val" in
8883 $define) echo 'sched_yield() found.' >&4 ;;
8884 *) echo 'sched_yield() NOT found.' >&4 ;;
8885 esac
8886esac
8887set d_sched_yield
8888eval $setvar
8889
8890: see if pthread_yield exists
8891set try -DPTHREAD_YIELD
8892if eval $compile; then
8893 val="$define"
8894 case "$sched_yield" in
8895 '') sched_yield='pthread_yield()' ;;
8896 esac
8897else
8898 set try -DPTHREAD_YIELD_NULL
8899 if eval $compile; then
8900 val="$define"
8901 case "$sched_yield" in
8902 '') sched_yield='pthread_yield(NULL)' ;;
8903 esac
8904 else
8905 val="$undef"
8906 fi
8907fi
8908case "$usethreads" in
8909$define)
8910 case "$val" in
8911 $define) echo 'pthread_yield() found.' >&4 ;;
8912 *) echo 'pthread_yield() NOT found.' >&4 ;;
8913 esac
8914 ;;
8915esac
8916set d_pthread_yield
8917eval $setvar
8918
8919case "$sched_yield" in
8920'') sched_yield=undef ;;
8921esac
8922
8923$rm -f try try.*
8924
4aa0a1f7
AD
8925: see if this is a pwd.h system
8926set pwd.h i_pwd
8927eval $inhdr
8928
8929case "$i_pwd" in
8930$define)
8931 xxx=`./findhdr pwd.h`
85e6fe83 8932 $cppstdin $cppflags $cppminus < $xxx >$$.h
4aa0a1f7 8933
2304df62 8934 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
4aa0a1f7 8935 val="$define"
2304df62 8936 else
4aa0a1f7 8937 val="$undef"
2304df62 8938 fi
4aa0a1f7
AD
8939 set d_pwquota
8940 eval $setvar
8941
2304df62 8942 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
4aa0a1f7 8943 val="$define"
2304df62 8944 else
4aa0a1f7 8945 val="$undef"
2304df62 8946 fi
4aa0a1f7
AD
8947 set d_pwage
8948 eval $setvar
8949
2304df62 8950 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
4aa0a1f7 8951 val="$define"
2304df62 8952 else
4aa0a1f7 8953 val="$undef"
2304df62 8954 fi
4aa0a1f7
AD
8955 set d_pwchange
8956 eval $setvar
8957
2304df62 8958 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
4aa0a1f7 8959 val="$define"
2304df62 8960 else
4aa0a1f7 8961 val="$undef"
2304df62 8962 fi
4aa0a1f7
AD
8963 set d_pwclass
8964 eval $setvar
8965
2304df62 8966 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
4aa0a1f7 8967 val="$define"
2304df62 8968 else
4aa0a1f7 8969 val="$undef"
2304df62 8970 fi
4aa0a1f7
AD
8971 set d_pwexpire
8972 eval $setvar
8973
2304df62 8974 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
4aa0a1f7 8975 val="$define"
2304df62 8976 else
4aa0a1f7 8977 val="$undef"
2304df62 8978 fi
4aa0a1f7
AD
8979 set d_pwcomment
8980 eval $setvar
8981
c4f23d77
AD
8982 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8983 val="$define"
8984 else
8985 val="$undef"
8986 fi
8987 set d_pwgecos
8988 eval $setvar
8989
28e8609d
JH
8990 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8991 val="$define"
8992 else
8993 val="$undef"
8994 fi
8995 set d_pwpasswd
8996 eval $setvar
8997
2304df62 8998 $rm -f $$.h
4aa0a1f7 8999 ;;
5ff3f7a4 9000*)
4aa0a1f7
AD
9001 val="$undef";
9002 set d_pwquota; eval $setvar
9003 set d_pwage; eval $setvar
9004 set d_pwchange; eval $setvar
9005 set d_pwclass; eval $setvar
9006 set d_pwexpire; eval $setvar
9007 set d_pwcomment; eval $setvar
c4f23d77 9008 set d_pwgecos; eval $setvar
28e8609d 9009 set d_pwpasswd; eval $setvar
4aa0a1f7
AD
9010 ;;
9011esac
2304df62 9012
85e6fe83 9013: see if readdir and friends exist
2304df62
AD
9014set readdir d_readdir
9015eval $inlibc
85e6fe83
LW
9016set seekdir d_seekdir
9017eval $inlibc
9018set telldir d_telldir
9019eval $inlibc
9020set rewinddir d_rewinddir
9021eval $inlibc
2304df62 9022
a0d0e21e
LW
9023: see if readlink exists
9024set readlink d_readlink
9025eval $inlibc
9026
de4597cb
JH
9027: see if readv exists
9028set readv d_readv
9029eval $inlibc
9030
2304df62
AD
9031: see if rename exists
9032set rename d_rename
9033eval $inlibc
9034
9035: see if rmdir exists
9036set rmdir d_rmdir
9037eval $inlibc
9038
8ff267be 9039: see if memory.h is available.
9040val=''
9041set memory.h val
9042eval $inhdr
9043
9044: See if it conflicts with string.h
9045case "$val" in
9046$define)
9047 case "$strings" in
9048 '') ;;
9049 *)
9050 $cppstdin $cppflags $cppminus < $strings > mem.h
9051 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9052 echo " "
9053 echo "We won't be including <memory.h>."
9054 val="$undef"
9055 fi
9056 $rm -f mem.h
9057 ;;
9058 esac
9059esac
9060set i_memory
9061eval $setvar
9062
2304df62
AD
9063: can bcopy handle overlapping blocks?
9064val="$undef"
9065case "$d_bcopy" in
9066"$define")
9067 echo " "
9068 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
dfe9444c 9069 $cat >try.c <<EOCP
8ff267be 9070#$i_memory I_MEMORY
9071#$i_stdlib I_STDLIB
9072#$i_string I_STRING
9073#$i_unistd I_UNISTD
9074EOCP
dfe9444c 9075 $cat >>try.c <<'EOCP'
8ff267be 9076#include <stdio.h>
8ff267be 9077#ifdef I_MEMORY
9078# include <memory.h>
9079#endif
9080#ifdef I_STDLIB
9081# include <stdlib.h>
9082#endif
9083#ifdef I_STRING
9084# include <string.h>
9085#else
9086# include <strings.h>
9087#endif
9088#ifdef I_UNISTD
9089# include <unistd.h> /* Needed for NetBSD */
9090#endif
d674cd6d 9091int main()
2304df62 9092{
85e6fe83
LW
9093char buf[128], abc[128];
9094char *b;
9095int len;
9096int off;
9097int align;
a0d0e21e 9098
85e6fe83 9099bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
2304df62
AD
9100
9101for (align = 7; align >= 0; align--) {
9102 for (len = 36; len; len--) {
9103 b = buf+align;
85e6fe83 9104 bcopy(abc, b, len);
2304df62
AD
9105 for (off = 1; off <= len; off++) {
9106 bcopy(b, b+off, len);
9107 bcopy(b+off, b, len);
85e6fe83 9108 if (bcmp(b, abc, len))
2304df62
AD
9109 exit(1);
9110 }
9111 }
9112}
9113exit(0);
9114}
9115EOCP
dfe9444c 9116 set try
dc45a647 9117 if eval $compile_ok; then
dfe9444c 9118 if ./try 2>/dev/null; then
2304df62
AD
9119 echo "Yes, it can."
9120 val="$define"
9121 else
9122 echo "It can't, sorry."
8ff267be 9123 case "$d_memmove" in
9124 "$define") echo "But that's Ok since you have memmove()." ;;
9125 esac
2304df62
AD
9126 fi
9127 else
9128 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 9129 case "$d_memmove" in
9130 "$define") echo "But that's Ok since you have memmove()." ;;
9131 esac
2304df62
AD
9132 fi
9133 ;;
9134esac
dfe9444c 9135$rm -f try.* try core
2304df62
AD
9136set d_safebcpy
9137eval $setvar
9138
9139: can memcpy handle overlapping blocks?
9140val="$undef"
9141case "$d_memcpy" in
9142"$define")
9143 echo " "
9144 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
dfe9444c 9145 $cat >try.c <<EOCP
8ff267be 9146#$i_memory I_MEMORY
9147#$i_stdlib I_STDLIB
9148#$i_string I_STRING
9149#$i_unistd I_UNISTD
9150EOCP
dfe9444c 9151 $cat >>try.c <<'EOCP'
8ff267be 9152#include <stdio.h>
8ff267be 9153#ifdef I_MEMORY
9154# include <memory.h>
9155#endif
9156#ifdef I_STDLIB
9157# include <stdlib.h>
9158#endif
9159#ifdef I_STRING
9160# include <string.h>
9161#else
9162# include <strings.h>
9163#endif
9164#ifdef I_UNISTD
9165# include <unistd.h> /* Needed for NetBSD */
9166#endif
d674cd6d 9167int main()
2304df62 9168{
85e6fe83
LW
9169char buf[128], abc[128];
9170char *b;
9171int len;
9172int off;
9173int align;
9174
8ff267be 9175/* Copy "abcde..." string to char abc[] so that gcc doesn't
9176 try to store the string in read-only memory. */
85e6fe83 9177memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
2304df62
AD
9178
9179for (align = 7; align >= 0; align--) {
9180 for (len = 36; len; len--) {
9181 b = buf+align;
232e078e 9182 memcpy(b, abc, len);
2304df62 9183 for (off = 1; off <= len; off++) {
2304df62 9184 memcpy(b+off, b, len);
232e078e 9185 memcpy(b, b+off, len);
85e6fe83 9186 if (memcmp(b, abc, len))
2304df62
AD
9187 exit(1);
9188 }
9189 }
9190}
9191exit(0);
9192}
9193EOCP
dfe9444c 9194 set try
dc45a647 9195 if eval $compile_ok; then
dfe9444c 9196 if ./try 2>/dev/null; then
2304df62
AD
9197 echo "Yes, it can."
9198 val="$define"
9199 else
9200 echo "It can't, sorry."
8ff267be 9201 case "$d_memmove" in
9202 "$define") echo "But that's Ok since you have memmove()." ;;
9203 esac
2304df62
AD
9204 fi
9205 else
9206 echo "(I can't compile the test program, so we'll assume not...)"
8ff267be 9207 case "$d_memmove" in
9208 "$define") echo "But that's Ok since you have memmove()." ;;
9209 esac
2304df62
AD
9210 fi
9211 ;;
9212esac
dfe9444c 9213$rm -f try.* try core
2304df62
AD
9214set d_safemcpy
9215eval $setvar
9216
36477c24 9217: can memcmp be trusted to compare relative magnitude?
9218val="$undef"
9219case "$d_memcmp" in
9220"$define")
9221 echo " "
dfe9444c
AD
9222 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9223 $cat >try.c <<EOCP
36477c24 9224#$i_memory I_MEMORY
9225#$i_stdlib I_STDLIB
9226#$i_string I_STRING
9227#$i_unistd I_UNISTD
9228EOCP
dfe9444c 9229 $cat >>try.c <<'EOCP'
36477c24 9230#include <stdio.h>
36477c24 9231#ifdef I_MEMORY
9232# include <memory.h>
9233#endif
9234#ifdef I_STDLIB
9235# include <stdlib.h>
9236#endif
9237#ifdef I_STRING
9238# include <string.h>
9239#else
9240# include <strings.h>
9241#endif
9242#ifdef I_UNISTD
9243# include <unistd.h> /* Needed for NetBSD */
9244#endif
d674cd6d 9245int main()
36477c24 9246{
9247char a = -1;
9248char b = 0;
9249if ((a < b) && memcmp(&a, &b, 1) < 0)
9250 exit(1);
9251exit(0);
9252}
9253EOCP
dfe9444c 9254 set try
dc45a647 9255 if eval $compile_ok; then
dfe9444c 9256 if ./try 2>/dev/null; then
36477c24 9257 echo "Yes, it can."
9258 val="$define"
9259 else
9260 echo "No, it can't (it uses signed chars)."
9261 fi
9262 else
9263 echo "(I can't compile the test program, so we'll assume not...)"
9264 fi
9265 ;;
9266esac
dfe9444c 9267$rm -f try.* try core
36477c24 9268set d_sanemcmp
9269eval $setvar
9270
2304df62
AD
9271: see if select exists
9272set select d_select
9273eval $inlibc
9274
9275: see if semctl exists
9276set semctl d_semctl
9277eval $inlibc
9278
9279: see if semget exists
9280set semget d_semget
9281eval $inlibc
9282
9283: see if semop exists
9284set semop d_semop
9285eval $inlibc
9286
9287: see how much of the 'sem*(2)' library is present.
9288h_sem=true
9289echo " "
9290case "$d_semctl$d_semget$d_semop" in
9291*"$undef"*) h_sem=false;;
9292esac
6087ac44
JH
9293case "$osname" in
9294freebsd)
9295 case "`ipcs 2>&1`" in
9296 "SVID messages"*"not configured"*)
5ff3f7a4 9297 echo "Your $osname does not have the sem*(2) configured." >&4
6087ac44
JH
9298 h_sem=false
9299 val="$undef"
9300 set semctl d_semctl
9301 eval $setvar
9302 set semget d_semget
9303 eval $setvar
9304 set semop d_semop
9305 eval $setvar
9306 ;;
9307 esac
9308 ;;
9309esac
2304df62
AD
9310: we could also check for sys/ipc.h ...
9311if $h_sem && $test `./findhdr sys/sem.h`; then
9312 echo "You have the full sem*(2) library." >&4
9313 val="$define"
9314else
9315 echo "You don't have the full sem*(2) library." >&4
9316 val="$undef"
9317fi
9318set d_sem
9319eval $setvar
9320
bd89102f
AD
9321: see whether sys/sem.h defines union semun
9322echo " "
9323$cat > try.c <<'END'
9324#include <sys/types.h>
9325#include <sys/ipc.h>
9326#include <sys/sem.h>
9327int main () { union semun semun; semun.buf = 0; }
9328END
9329set try
9330if eval $compile; then
9331 echo "You have union semun in <sys/sem.h>." >&4
9332 val="$define"
9333else
9334 echo "You do not have union semun in <sys/sem.h>." >&4
9335 val="$undef"
9336fi
85ab1d1d 9337$rm -f try try.c try.h
bd89102f
AD
9338set d_union_semun
9339eval $setvar
9340
9341: see how to do semctl IPC_STAT
9342case "$d_sem" in
9343$define)
9344 : see whether semctl IPC_STAT can use union semun
9345 echo " "
85ab1d1d
JH
9346 $cat > try.h <<END
9347#ifndef S_IRUSR
9348# ifdef S_IREAD
9349# define S_IRUSR S_IREAD
9350# define S_IWUSR S_IWRITE
9351# define S_IXUSR S_IEXEC
9352# else
9353# define S_IRUSR 0400
9354# define S_IWUSR 0200
9355# define S_IXUSR 0100
9356# endif
9357# define S_IRGRP (S_IRUSR>>3)
9358# define S_IWGRP (S_IWUSR>>3)
9359# define S_IXGRP (S_IXUSR>>3)
9360# define S_IROTH (S_IRUSR>>6)
9361# define S_IWOTH (S_IWUSR>>6)
9362# define S_IXOTH (S_IXUSR>>6)
9363#endif
9364#ifndef S_IRWXU
9365# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9366# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9367# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9368#endif
9369END
9370
bd89102f
AD
9371 $cat > try.c <<END
9372#include <sys/types.h>
9373#include <sys/ipc.h>
9374#include <sys/sem.h>
9375#include <sys/stat.h>
9376#include <stdio.h>
9377#include <errno.h>
85ab1d1d 9378#include "try.h"
bd89102f
AD
9379#ifndef errno
9380extern int errno;
9381#endif
9382#$d_union_semun HAS_UNION_SEMUN
9383int main() {
9384 union semun
9385#ifndef HAS_UNION_SEMUN
9386 {
9387 int val;
9388 struct semid_ds *buf;
9389 unsigned short *array;
9390 }
9391#endif
9392 arg;
9393 int sem, st;
9394
9395#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9396 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9397 if (sem > -1) {
9398 struct semid_ds argbuf;
9399 arg.buf = &argbuf;
9400# ifdef IPC_STAT
9401 st = semctl(sem, 0, IPC_STAT, arg);
9402 if (st == 0)
9403 printf("semun\n");
9404 else
9405# endif /* IPC_STAT */
9406 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9407# ifdef IPC_RMID
9408 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9409# endif /* IPC_RMID */
9410 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9411 } else
9412#endif /* IPC_PRIVATE && ... */
9413 printf("semget failed: errno = %d\n", errno);
9414 return 0;
9415}
9416END
9417 val="$undef"
9418 set try
9419 if eval $compile; then
9420 xxx=`./try`
9421 case "$xxx" in
9422 semun) val="$define" ;;
9423 esac
9424 fi
9425 $rm -f try try.c
9426 set d_semctl_semun
9427 eval $setvar
9428 case "$d_semctl_semun" in
9429 $define)
9430 echo "You can use union semun for semctl IPC_STAT." >&4
9431 also='also'
9432 ;;
9433 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9434 also=''
9435 ;;
9436 esac
9437
9438 : see whether semctl IPC_STAT can use struct semid_ds pointer
9439 $cat > try.c <<'END'
9440#include <sys/types.h>
9441#include <sys/ipc.h>
9442#include <sys/sem.h>
9443#include <sys/stat.h>
85ab1d1d 9444#include "try.h"
bd89102f
AD
9445#include <stdio.h>
9446#include <errno.h>
9447#ifndef errno
9448extern int errno;
9449#endif
9450int main() {
9451 struct semid_ds arg;
9452 int sem, st;
9453
9454#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9455 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9456 if (sem > -1) {
9457# ifdef IPC_STAT
9458 st = semctl(sem, 0, IPC_STAT, &arg);
9459 if (st == 0)
9460 printf("semid_ds\n");
9461 else
9462# endif /* IPC_STAT */
9463 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9464# ifdef IPC_RMID
9465 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9466# endif /* IPC_RMID */
9467 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9468 } else
9469#endif /* IPC_PRIVATE && ... */
9470 printf("semget failed: errno = %d\n", errno);
9471
9472 return 0;
9473}
9474END
9475 val="$undef"
9476 set try
9477 if eval $compile; then
9478 xxx=`./try`
9479 case "$xxx" in
9480 semid_ds) val="$define" ;;
9481 esac
9482 fi
9483 $rm -f try try.c
9484 set d_semctl_semid_ds
9485 eval $setvar
9486 case "$d_semctl_semid_ds" in
9487 $define)
7f3d1cf1 9488 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f 9489 ;;
7f3d1cf1 9490 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
bd89102f
AD
9491 ;;
9492 esac
85ab1d1d 9493 $rm -f try.h
bd89102f
AD
9494 ;;
9495*) val="$undef"
9496
9497 # We do not have the full sem*(2) library, so assume we can not
9498 # use either.
9499
9500 set d_semctl_semun
9501 eval $setvar
9502
9503 set d_semctl_semid_ds
9504 eval $setvar
9505 ;;
9506esac
9507
2304df62
AD
9508: see if setegid exists
9509set setegid d_setegid
9510eval $inlibc
9511
9512: see if seteuid exists
9513set seteuid d_seteuid
9514eval $inlibc
9515
5ff3f7a4
GS
9516: see if setgrent exists
9517set setgrent d_setgrent
9518eval $inlibc
9519
693762b4
AD
9520: see if sethostent exists
9521set sethostent d_sethent
9522eval $inlibc
9523
a0d0e21e
LW
9524: see if setlinebuf exists
9525set setlinebuf d_setlinebuf
9526eval $inlibc
9527
2304df62
AD
9528: see if setlocale exists
9529set setlocale d_setlocale
9530eval $inlibc
a0d0e21e 9531
e5c9fcd0
AD
9532: see if setnetent exists
9533set setnetent d_setnent
9534eval $inlibc
9535
9536: see if setprotoent exists
9537set setprotoent d_setpent
9538eval $inlibc
9539
2304df62
AD
9540: see if setpgid exists
9541set setpgid d_setpgid
9542eval $inlibc
9543
2304df62
AD
9544: see if setpgrp2 exists
9545set setpgrp2 d_setpgrp2
9546eval $inlibc
9547
9548: see if setpriority exists
9549set setpriority d_setprior
9550eval $inlibc
9551
5ff3f7a4
GS
9552: see if setpwent exists
9553set setpwent d_setpwent
9554eval $inlibc
9555
2304df62
AD
9556: see if setregid exists
9557set setregid d_setregid
9558eval $inlibc
9559set setresgid d_setresgid
9560eval $inlibc
9561
9562: see if setreuid exists
9563set setreuid d_setreuid
9564eval $inlibc
9565set setresuid d_setresuid
9566eval $inlibc
9567
9568: see if setrgid exists
9569set setrgid d_setrgid
9570eval $inlibc
9571
9572: see if setruid exists
9573set setruid d_setruid
9574eval $inlibc
9575
e5c9fcd0
AD
9576: see if setservent exists
9577set setservent d_setsent
9578eval $inlibc
9579
2304df62
AD
9580: see if setsid exists
9581set setsid d_setsid
9582eval $inlibc
9583
e5c9fcd0
AD
9584: see if setvbuf exists
9585set setvbuf d_setvbuf
9586eval $inlibc
9587
760ac839
LW
9588: see if sfio.h is available
9589set sfio.h i_sfio
9590eval $inhdr
9591
9592
8ff267be 9593: see if sfio library is available
760ac839
LW
9594case "$i_sfio" in
9595$define)
9596 val=''
9597 set sfreserve val
9598 eval $inlibc
9599 ;;
9600*)
9601 val="$undef"
9602 ;;
9603esac
8ff267be 9604: Ok, but do we want to use it.
760ac839
LW
9605case "$val" in
9606$define)
9607 case "$usesfio" in
8ff267be 9608 true|$define|[yY]*) dflt='y';;
760ac839
LW
9609 *) dflt='n';;
9610 esac
8ff267be 9611 echo "$package can use the sfio library, but it is experimental."
760ac839
LW
9612 rp="You seem to have sfio available, do you want to try using it?"
9613 . ./myread
9614 case "$ans" in
8ff267be 9615 y|Y) ;;
9616 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
760ac839 9617 val="$undef"
ff0cee69 9618 : Remove sfio from list of libraries to use
9619 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9620 shift
9621 libs="$*"
9622 echo "libs = $libs" >&4
760ac839
LW
9623 ;;
9624 esac
9625 ;;
8ff267be 9626*) case "$usesfio" in
9627 true|$define|[yY]*)
9628 echo "Sorry, cannot find sfio on this machine" >&4
9629 echo "Ignoring your setting of usesfio=$usesfio" >&4
760ac839
LW
9630 ;;
9631 esac
9632 ;;
9633esac
8ff267be 9634set d_sfio
9635eval $setvar
760ac839
LW
9636case "$d_sfio" in
9637$define) usesfio='true';;
9638*) usesfio='false';;
9639esac
9640
2304df62
AD
9641: see if shmctl exists
9642set shmctl d_shmctl
9643eval $inlibc
9644
9645: see if shmget exists
9646set shmget d_shmget
9647eval $inlibc
9648
a0d0e21e
LW
9649: see if shmat exists
9650set shmat d_shmat
9651eval $inlibc
9652: see what shmat returns
9653case "$d_shmat" in
9654"$define")
9655 $cat >shmat.c <<'END'
9656#include <sys/shm.h>
9657void *shmat();
9658END
9659 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9660 shmattype='void *'
9661 else
9662 shmattype='char *'
9663 fi
9664 echo "and it returns ($shmattype)." >&4
9665 : see if a prototype for shmat is available
e50aee73
AD
9666 xxx=`./findhdr sys/shm.h`
9667 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
a0d0e21e
LW
9668 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9669 val="$define"
9670 else
9671 val="$undef"
9672 fi
9673 $rm -f shmat.[co]
9674 ;;
9675*)
9676 val="$undef"
9677 ;;
9678esac
9679set d_shmatprototype
9680eval $setvar
9681
9682: see if shmdt exists
9683set shmdt d_shmdt
9684eval $inlibc
9685
9686: see how much of the 'shm*(2)' library is present.
9687h_shm=true
9688echo " "
9689case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9690*"$undef"*) h_shm=false;;
9691esac
6087ac44
JH
9692case "$osname" in
9693freebsd)
9694 case "`ipcs 2>&1`" in
9695 "SVID shared memory"*"not configured"*)
5ff3f7a4 9696 echo "Your $osname does not have the shm*(2) configured." >&4
6087ac44
JH
9697 h_shm=false
9698 val="$undef"
9699 set shmctl d_shmctl
9700 evat $setvar
9701 set shmget d_shmget
9702 evat $setvar
9703 set shmat d_shmat
9704 evat $setvar
9705 set shmdt d_shmdt
9706 evat $setvar
9707 ;;
9708 esac
9709 ;;
9710esac
a0d0e21e
LW
9711: we could also check for sys/ipc.h ...
9712if $h_shm && $test `./findhdr sys/shm.h`; then
9713 echo "You have the full shm*(2) library." >&4
9714 val="$define"
9715else
9716 echo "You don't have the full shm*(2) library." >&4
9717 val="$undef"
9718fi
9719set d_shm
9720eval $setvar
9721
2c7991dc 9722echo " "
8ff267be 9723: see if we have sigaction
9724if set sigaction val -f d_sigaction; eval $csym; $val; then
9725 echo 'sigaction() found.' >&4
dc45a647 9726 $cat > try.c <<'EOP'
8ff267be 9727#include <stdio.h>
9728#include <sys/types.h>
9729#include <signal.h>
d674cd6d 9730int main()
8ff267be 9731{
9732 struct sigaction act, oact;
9733}
9734EOP
dc45a647
MB
9735 set try
9736 if eval $compile_ok; then
9737 val="$define"
9738 else
9739 echo "But you don't seem to have a useable struct sigaction." >&4
9740 val="$undef"
9741 fi
8ff267be 9742else
dc45a647 9743 echo 'sigaction NOT found.' >&4
8ff267be 9744 val="$undef"
9745fi
9746set d_sigaction; eval $setvar
dfe9444c 9747$rm -f try try$_o try.c
2c7991dc 9748
a5f75d66
AD
9749: see if sigsetjmp exists
9750echo " "
921b2963
JH
9751case "$d_sigsetjmp" in
9752'')
9753 $cat >try.c <<'EOP'
9754#include <setjmp.h>
9755sigjmp_buf env;
9756int set = 1;
d674cd6d 9757int main()
921b2963
JH
9758{
9759 if (sigsetjmp(env,1))
9760 exit(set);
9761 set = 0;
9762 siglongjmp(env, 1);
9763 exit(1);
9764}
9765EOP
9766 set try
9767 if eval $compile; then
9768 if ./try >/dev/null 2>&1; then
9769 echo "POSIX sigsetjmp found." >&4
9770 val="$define"
9771 else
9772 $cat >&4 <<EOM
9773Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9774I'll ignore them.
9775EOM
9776 val="$undef"
a0d0e21e 9777 fi
921b2963
JH
9778 else
9779 echo "sigsetjmp not found." >&4
9780 val="$undef"
a0d0e21e 9781 fi
921b2963
JH
9782 ;;
9783*) val="$d_sigsetjmp"
9784 case "$d_sigsetjmp" in
9785 $define) echo "POSIX sigsetjmp found." >&4;;
9786 $undef) echo "sigsetjmp not found." >&4;;
9787 esac
9788 ;;
9789esac
9790set d_sigsetjmp
9791eval $setvar
9792$rm -f try.c try
2304df62 9793
2304df62
AD
9794: see if stat knows about block sizes
9795echo " "
5ff3f7a4
GS
9796set d_statblks stat st_blocks $i_sysstat sys/stat.h
9797eval $hasfield
2304df62 9798
16d20bd9
AD
9799: see if _ptr and _cnt from stdio act std
9800echo " "
9801if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9802 echo "(Looks like you have stdio.h from Linux.)"
9803 case "$stdio_ptr" in
c2960299
AD
9804 '') stdio_ptr='((fp)->_IO_read_ptr)'
9805 ptr_lval=$define
9806 ;;
8e07c86e 9807 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
9808 esac
9809 case "$stdio_cnt" in
c2960299
AD
9810 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9811 cnt_lval=$undef
9812 ;;
8e07c86e 9813 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
9814 esac
9815 case "$stdio_base" in
9816 '') stdio_base='((fp)->_IO_read_base)';;
9817 esac
9818 case "$stdio_bufsiz" in
c2960299 9819 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
16d20bd9
AD
9820 esac
9821else
9822 case "$stdio_ptr" in
c2960299
AD
9823 '') stdio_ptr='((fp)->_ptr)'
9824 ptr_lval=$define
9825 ;;
8e07c86e 9826 *) ptr_lval=$d_stdio_ptr_lval;;
16d20bd9
AD
9827 esac
9828 case "$stdio_cnt" in
c2960299
AD
9829 '') stdio_cnt='((fp)->_cnt)'
9830 cnt_lval=$define
9831 ;;
8e07c86e 9832 *) cnt_lval=$d_stdio_cnt_lval;;
16d20bd9
AD
9833 esac
9834 case "$stdio_base" in
9835 '') stdio_base='((fp)->_base)';;
9836 esac
9837 case "$stdio_bufsiz" in
9838 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9839 esac
9840fi
9841: test whether _ptr and _cnt really work
9842echo "Checking how std your stdio is..." >&4
9843$cat >try.c <<EOP
9844#include <stdio.h>
9845#define FILE_ptr(fp) $stdio_ptr
9846#define FILE_cnt(fp) $stdio_cnt
d674cd6d 9847int main() {
16d20bd9
AD
9848 FILE *fp = fopen("try.c", "r");
9849 char c = getc(fp);
9850 if (
9851 18 <= FILE_cnt(fp) &&
9852 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9853 )
9854 exit(0);
9855 exit(1);
9856}
9857EOP
9858val="$undef"
dfe9444c
AD
9859set try
9860if eval $compile; then
16d20bd9
AD
9861 if ./try; then
9862 echo "Your stdio acts pretty std."
9863 val="$define"
9864 else
9865 echo "Your stdio isn't very std."
9866 fi
9867else
9868 echo "Your stdio doesn't appear very std."
9869fi
9870$rm -f try.c try
9871set d_stdstdio
9872eval $setvar
9873
8e07c86e 9874: Can _ptr be used as an lvalue?
e50aee73
AD
9875case "$d_stdstdio$ptr_lval" in
9876$define$define) val=$define ;;
c2960299
AD
9877*) val=$undef ;;
9878esac
9879set d_stdio_ptr_lval
9880eval $setvar
9881
8e07c86e 9882: Can _cnt be used as an lvalue?
e50aee73
AD
9883case "$d_stdstdio$cnt_lval" in
9884$define$define) val=$define ;;
c2960299
AD
9885*) val=$undef ;;
9886esac
9887set d_stdio_cnt_lval
9888eval $setvar
9889
16d20bd9
AD
9890: see if _base is also standard
9891val="$undef"
9892case "$d_stdstdio" in
9893$define)
9894 $cat >try.c <<EOP
9895#include <stdio.h>
9896#define FILE_base(fp) $stdio_base
9897#define FILE_bufsiz(fp) $stdio_bufsiz
d674cd6d 9898int main() {
16d20bd9
AD
9899 FILE *fp = fopen("try.c", "r");
9900 char c = getc(fp);
9901 if (
9902 19 <= FILE_bufsiz(fp) &&
9903 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9904 )
9905 exit(0);
9906 exit(1);
9907}
9908EOP
dfe9444c
AD
9909 set try
9910 if eval $compile; then
16d20bd9 9911 if ./try; then
8ff267be 9912 echo "And its _base field acts std."
16d20bd9
AD
9913 val="$define"
9914 else
9915 echo "But its _base field isn't std."
9916 fi
9917 else
9918 echo "However, it seems to be lacking the _base field."
9919 fi
9920 $rm -f try.c try
9921 ;;
9922esac
9923set d_stdiobase
9924eval $setvar
9925
a0d0e21e
LW
9926: see if strcoll exists
9927set strcoll d_strcoll
9928eval $inlibc
2304df62
AD
9929
9930: check for structure copying
9931echo " "
9932echo "Checking to see if your C compiler can copy structs..." >&4
9933$cat >try.c <<'EOCP'
5a411a32 9934int main()
2304df62
AD
9935{
9936 struct blurfl {
9937 int dyick;
9938 } foo, bar;
9939
9940 foo = bar;
9941}
9942EOCP
9943if $cc -c try.c >/dev/null 2>&1 ; then
9944 val="$define"
9945 echo "Yup, it can."
9946else
9947 val="$undef"
9948 echo "Nope, it can't."
9949fi
9950set d_strctcpy
9951eval $setvar
9952$rm -f try.*
9953
9954: see if strerror and/or sys_errlist[] exist
9955echo " "
28e8609d
JH
9956if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9957 if set strerror val -f d_strerror; eval $csym; $val; then
5ff3f7a4
GS
9958 echo 'strerror() found.' >&4
9959 d_strerror="$define"
9960 d_strerrm='strerror(e)'
9961 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9962 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9963 d_syserrlst="$define"
9964 else
9965 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9966 d_syserrlst="$undef"
9967 fi
28e8609d 9968 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5ff3f7a4
GS
9969 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9970 echo 'strerror() found in string header.' >&4
9971 d_strerror="$define"
9972 d_strerrm='strerror(e)'
9973 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9974 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9975 d_syserrlst="$define"
9976 else
9977 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9978 d_syserrlst="$undef"
9979 fi
28e8609d 9980 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5ff3f7a4
GS
9981 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9982 d_strerror="$undef"
9983 d_syserrlst="$define"
9984 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
28e8609d 9985 else
5ff3f7a4
GS
9986 echo 'strerror() and sys_errlist[] NOT found.' >&4
9987 d_strerror="$undef"
9988 d_syserrlst="$undef"
9989 d_strerrm='"unknown"'
28e8609d 9990 fi
2304df62
AD
9991fi
9992
a89d8a78
DH
9993: see if strtod exists
9994set strtod d_strtod
9995eval $inlibc
9996
9997: see if strtol exists
9998set strtol d_strtol
9999eval $inlibc
10000
10001: see if strtoul exists
10002set strtoul d_strtoul
10003eval $inlibc
10004
a0d0e21e
LW
10005: see if strxfrm exists
10006set strxfrm d_strxfrm
10007eval $inlibc
10008
2304df62
AD
10009: see if symlink exists
10010set symlink d_symlink
10011eval $inlibc
10012
10013: see if syscall exists
10014set syscall d_syscall
10015eval $inlibc
10016
a0d0e21e
LW
10017: see if sysconf exists
10018set sysconf d_sysconf
10019eval $inlibc
10020
2304df62
AD
10021: see if system exists
10022set system d_system
10023eval $inlibc
10024
a0d0e21e
LW
10025: see if tcgetpgrp exists
10026set tcgetpgrp d_tcgetpgrp
10027eval $inlibc
10028
2c7991dc 10029: see if tcsetpgrp exists
10030set tcsetpgrp d_tcsetpgrp
10031eval $inlibc
4633a7c4 10032
cb86ce0e
JH
10033: see if sys/types.h has to be included
10034set sys/types.h i_systypes
10035eval $inhdr
10036
10037: see if prototype for telldir is available
10038echo " "
10039set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10040eval $hasproto
10041
2c7991dc 10042: define an is-a-typedef? function
10043typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10044case "$inclist" in
10045"") inclist="sys/types.h";;
10046esac;
10047eval "varval=\$$var";
10048case "$varval" in
10049"")
10050 $rm -f temp.c;
10051 for inc in $inclist; do
10052 echo "#include <$inc>" >>temp.c;
10053 done;
c4f23d77
AD
10054 echo "#ifdef $type" >> temp.c;
10055 echo "printf(\"We have $type\");" >> temp.c;
10056 echo "#endif" >> temp.c;
2c7991dc 10057 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10058 if $contains $type temp.E >/dev/null 2>&1; then
10059 eval "$var=\$type";
10060 else
10061 eval "$var=\$def";
10062 fi;
10063 $rm -f temp.?;;
10064*) eval "$var=\$varval";;
10065esac'
4633a7c4 10066
dc45a647
MB
10067: define an is-a-typedef? function that prompts if the type is not available.
10068typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10069case "$inclist" in
10070"") inclist="sys/types.h";;
10071esac;
10072eval "varval=\$$var";
10073case "$varval" in
10074"")
10075 $rm -f temp.c;
10076 for inc in $inclist; do
10077 echo "#include <$inc>" >>temp.c;
10078 done;
c4f23d77
AD
10079 echo "#ifdef $type" >> temp.c;
10080 echo "printf(\"We have $type\");" >> temp.c;
10081 echo "#endif" >> temp.c;
dc45a647
MB
10082 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10083 echo " " ;
10084 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10085 if $contains $type temp.E >/dev/null 2>&1; then
10086 echo "$type found." >&4;
10087 eval "$var=\$type";
10088 else
10089 echo "$type NOT found." >&4;
10090 dflt="$def";
10091 . ./myread ;
10092 eval "$var=\$ans";
10093 fi;
10094 $rm -f temp.?;;
10095*) eval "$var=\$varval";;
10096esac'
10097
2c7991dc 10098: see if this is a sys/times.h system
10099set sys/times.h i_systimes
10100eval $inhdr
4633a7c4 10101
2c7991dc 10102: see if times exists
4633a7c4 10103echo " "
2c7991dc 10104if set times val -f d_times; eval $csym; $val; then
10105 echo 'times() found.' >&4
10106 d_times="$define"
10107 inc=''
10108 case "$i_systimes" in
10109 "$define") inc='sys/times.h';;
10110 esac
dc45a647 10111 rp="What is the type returned by times() on this system?"
2c7991dc 10112 set clock_t clocktype long stdio.h sys/types.h $inc
dc45a647 10113 eval $typedef_ask
2c7991dc 10114else
10115 echo 'times() NOT found, hope that will do.' >&4
10116 d_times="$undef"
10117 clocktype='int'
10118fi
2304df62 10119
2c7991dc 10120: see if truncate exists
10121set truncate d_truncate
10122eval $inlibc
2304df62 10123
2c7991dc 10124: see if tzname[] exists
10125echo " "
10126if set tzname val -a d_tzname; eval $csym; $val; then
10127 val="$define"
10128 echo 'tzname[] found.' >&4
10129else
10130 val="$undef"
10131 echo 'tzname[] NOT found.' >&4
10132fi
10133set d_tzname
10134eval $setvar
10135
10136: see if umask exists
10137set umask d_umask
10138eval $inlibc
85e6fe83 10139
4633a7c4
LW
10140: backward compatibility for d_hvfork
10141if test X$d_hvfork != X; then
10142 d_vfork="$d_hvfork"
10143 d_hvfork=''
10144fi
10145: see if there is a vfork
10146val=''
10147set vfork val
10148eval $inlibc
ecfc5424 10149
4633a7c4
LW
10150: Ok, but do we want to use it. vfork is reportedly unreliable in
10151: perl on Solaris 2.x, and probably elsewhere.
10152case "$val" in
10153$define)
16d20bd9 10154 echo " "
4633a7c4
LW
10155 case "$usevfork" in
10156 false) dflt='n';;
10157 *) dflt='y';;
10158 esac
10159 rp="Some systems have problems with vfork(). Do you want to use it?"
10160 . ./myread
10161 case "$ans" in
10162 y|Y) ;;
10163 *)
10164 echo "Ok, we won't use vfork()."
10165 val="$undef"
10166 ;;
10167 esac
ecfc5424
AD
10168 ;;
10169esac
4633a7c4
LW
10170set d_vfork
10171eval $setvar
10172case "$d_vfork" in
10173$define) usevfork='true';;
10174*) usevfork='false';;
10175esac
ecfc5424 10176
4633a7c4
LW
10177: see if this is an sysdir system
10178set sys/dir.h i_sysdir
10179eval $inhdr
10180
10181: see if this is an sysndir system
10182set sys/ndir.h i_sysndir
10183eval $inhdr
10184
10185: see if closedir exists
10186set closedir d_closedir
10187eval $inlibc
10188
10189case "$d_closedir" in
10190"$define")
16d20bd9 10191 echo " "
4633a7c4
LW
10192 echo "Checking whether closedir() returns a status..." >&4
10193 cat > closedir.c <<EOM
10194#$i_dirent I_DIRENT /**/
10195#$i_sysdir I_SYS_DIR /**/
10196#$i_sysndir I_SYS_NDIR /**/
bfb7748a 10197#$i_systypes I_SYS_TYPES /**/
4633a7c4 10198
bfb7748a
AD
10199#if defined(I_SYS_TYPES)
10200#include <sys/types.h>
10201#endif
4633a7c4
LW
10202#if defined(I_DIRENT)
10203#include <dirent.h>
10204#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10205#include <sys/dir.h>
4aa0a1f7 10206#endif
4633a7c4
LW
10207#else
10208#ifdef I_SYS_NDIR
10209#include <sys/ndir.h>
10210#else
10211#ifdef I_SYS_DIR
10212#ifdef hp9000s500
10213#include <ndir.h> /* may be wrong in the future */
10214#else
10215#include <sys/dir.h>
10216#endif
10217#endif
10218#endif
10219#endif
10220int main() { return closedir(opendir(".")); }
10221EOM
dfe9444c 10222 set closedir
dc45a647 10223 if eval $compile_ok; then
4633a7c4
LW
10224 if ./closedir > /dev/null 2>&1 ; then
10225 echo "Yes, it does."
10226 val="$undef"
ecfc5424 10227 else
4633a7c4
LW
10228 echo "No, it doesn't."
10229 val="$define"
ecfc5424
AD
10230 fi
10231 else
4633a7c4
LW
10232 echo "(I can't seem to compile the test program--assuming it doesn't)"
10233 val="$define"
ecfc5424 10234 fi
ecfc5424 10235 ;;
4633a7c4
LW
10236*)
10237 val="$undef";
ecfc5424
AD
10238 ;;
10239esac
4633a7c4
LW
10240set d_void_closedir
10241eval $setvar
10242$rm -f closedir*
10243: check for volatile keyword
ecfc5424 10244echo " "
4633a7c4
LW
10245echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10246$cat >try.c <<'EOCP'
5a411a32 10247int main()
4633a7c4
LW
10248{
10249 typedef struct _goo_struct goo_struct;
10250 goo_struct * volatile goo = ((goo_struct *)0);
10251 struct _goo_struct {
10252 long long_int;
10253 int reg_int;
10254 char char_var;
10255 };
10256 typedef unsigned short foo_t;
10257 char *volatile foo;
10258 volatile int bar;
10259 volatile foo_t blech;
10260 foo = foo;
a0d0e21e
LW
10261}
10262EOCP
4633a7c4
LW
10263if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10264 val="$define"
10265 echo "Yup, it does."
10266else
10267 val="$undef"
10268 echo "Nope, it doesn't."
10269fi
10270set d_volatile
10271eval $setvar
10272$rm -f try.*
a0d0e21e 10273
4633a7c4
LW
10274: see if there is a wait4
10275set wait4 d_wait4
8e07c86e
AD
10276eval $inlibc
10277
4633a7c4
LW
10278: see if waitpid exists
10279set waitpid d_waitpid
10280eval $inlibc
10281
10282: see if wcstombs exists
10283set wcstombs d_wcstombs
10284eval $inlibc
10285
10286: see if wctomb exists
10287set wctomb d_wctomb
10288eval $inlibc
10289
de4597cb
JH
10290: see if writev exists
10291set writev d_writev
10292eval $inlibc
10293
4633a7c4
LW
10294: preserve RCS keywords in files with variable substitution, grrr
10295Date='$Date'
10296Id='$Id'
10297Log='$Log'
10298RCSfile='$RCSfile'
10299Revision='$Revision'
10300
ca8cfa54
JH
10301case "$crosscompile" in
10302''|[nN]*) crosscompile="$undef" ;;
10303esac
10304
10305case "$osname" in
8f1f23e8 10306next|rhapsody) multiarch="$define" ;;
ca8cfa54
JH
10307esac
10308case "$multiarch" in
10309''|[nN]*) multiarch="$undef" ;;
10310esac
10311
4633a7c4
LW
10312: check for alignment requirements
10313echo " "
68c15b6f
HM
10314case "$crosscompile$multiarch" in
10315*$define*)
ca8cfa54
JH
10316 $cat <<EOM
10317You seem to be either cross-compiling or doing a multiarchitecture build,
10318skipping the memory alignment check.
68c15b6f
HM
10319
10320EOM
10321 case "$alignbytes" in
10322 '') alignbytes=8 ;;
10323 esac
10324 ;;
10325*)
10326 case "$alignbytes" in
10327 '') echo "Checking alignment constraints..." >&4
10328 $cat >try.c <<'EOCP'
4633a7c4
LW
10329struct foobar {
10330 char foo;
10331 double bar;
732c9516 10332} try_algn;
d674cd6d 10333int main()
4633a7c4 10334{
732c9516 10335 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
4633a7c4
LW
10336}
10337EOCP
68c15b6f
HM
10338 set try
10339 if eval $compile_ok; then
10340 dflt=`./try`
10341 else
10342 dflt='8'
10343 echo "(I can't seem to compile the test program...)"
10344 fi
10345 ;;
10346 *) dflt="$alignbytes"
10347 ;;
10348 esac
10349 rp="Doubles must be aligned on a how-many-byte boundary?"
10350 . ./myread
10351 alignbytes="$ans"
10352 $rm -f try.c try
8e07c86e 10353 ;;
ecfc5424 10354esac
68c15b6f 10355
85e6fe83 10356
4633a7c4 10357: check for ordering of bytes in a long
68c15b6f
HM
10358echo " "
10359case "$crosscompile$multiarch" in
10360*$define*)
10361 $cat <<EOM
ca8cfa54
JH
10362You seem to be either cross-compiling or doing a multiarchitecture build,
10363skipping the byteorder check.
68c15b6f
HM
10364
10365EOM
ca8cfa54 10366 byteorder=''
68c15b6f
HM
10367 ;;
10368*)
10369 case "$byteorder" in
10370 '')
10371 $cat <<'EOM'
4633a7c4
LW
10372In the following, larger digits indicate more significance. A big-endian
10373machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10374little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10375machines may have weird orders like 3412. A Cray will report 87654321. If
10376the test program works the default is probably right.
10377I'm now running the test program...
10378EOM
68c15b6f 10379 $cat >try.c <<'EOCP'
4633a7c4 10380#include <stdio.h>
d674cd6d 10381int main()
4633a7c4
LW
10382{
10383 int i;
10384 union {
10385 unsigned long l;
10386 char c[sizeof(long)];
10387 } u;
10388
10389 if (sizeof(long) > 4)
10390 u.l = (0x08070605L << 32) | 0x04030201L;
10391 else
10392 u.l = 0x04030201L;
10393 for (i = 0; i < sizeof(long); i++)
10394 printf("%c", u.c[i]+'0');
10395 printf("\n");
10396 exit(0);
10397}
10398EOCP
68c15b6f
HM
10399 xxx_prompt=y
10400 set try
10401 if eval $compile && ./try > /dev/null; then
10402 dflt=`./try`
10403 case "$dflt" in
10404 [1-4][1-4][1-4][1-4]|12345678|87654321)
10405 echo "(The test program ran ok.)"
10406 echo "byteorder=$dflt"
10407 xxx_prompt=n
4633a7c4 10408 ;;
68c15b6f
HM
10409 ????|????????) echo "(The test program ran ok.)" ;;
10410 *) echo "(The test program didn't run right for some reason.)" ;;
10411 esac
10412 else
10413 dflt='4321'
10414 cat <<'EOM'
4633a7c4
LW
10415(I can't seem to compile the test program. Guessing big-endian...)
10416EOM
68c15b6f
HM
10417 fi
10418 case "$xxx_prompt" in
10419 y)
10420 rp="What is the order of bytes in a long?"
10421 . ./myread
10422 byteorder="$ans"
10423 ;;
10424 *) byteorder=$dflt
10425 ;;
10426 esac
ecfc5424
AD
10427 ;;
10428 esac
68c15b6f 10429 $rm -f try.c try
ecfc5424
AD
10430 ;;
10431esac
68c15b6f 10432
85e6fe83 10433
4633a7c4 10434: how do we catenate cpp tokens here?
2304df62 10435echo " "
4633a7c4
LW
10436echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10437$cat >cpp_stuff.c <<'EOCP'
10438#define RCAT(a,b)a/**/b
10439#define ACAT(a,b)a ## b
10440RCAT(Rei,ser)
10441ACAT(Cir,cus)
10442EOCP
10443$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10444if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 10445 echo "Oh! Smells like ANSI's been here." >&4
4633a7c4
LW
10446 echo "We can catify or stringify, separately or together!"
10447 cpp_stuff=42
10448elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
dfe9444c 10449 echo "Ah, yes! The good old days!" >&4
4633a7c4
LW
10450 echo "However, in the good old days we don't know how to stringify and"
10451 echo "catify at the same time."
10452 cpp_stuff=1
10453else
10454 $cat >&4 <<EOM
10455Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10456to have to edit the values of CAT[2-5] in config.h...
a0d0e21e 10457EOM
4633a7c4
LW
10458 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10459fi
10460$rm -f cpp_stuff.*
a0d0e21e 10461
4633a7c4
LW
10462: see if this is a db.h system
10463set db.h i_db
10464eval $inhdr
10465
10466case "$i_db" in
68dc0745 10467$define)
1f70e1ea 10468 : Check db version.
68dc0745 10469 echo " "
10470 echo "Checking Berkeley DB version ..." >&4
10471 $cat >try.c <<EOCP
10472#$d_const HASCONST
10473#ifndef HASCONST
10474#define const
10475#endif
10476#include <sys/types.h>
10477#include <stdio.h>
10478#include <db.h>
d674cd6d 10479int main()
68dc0745 10480{
1f70e1ea
PM
10481#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10482 int Major, Minor, Patch ;
ee02776e 10483 unsigned long Version ;
1f70e1ea
PM
10484 (void)db_version(&Major, &Minor, &Patch) ;
10485 printf("You have Berkeley DB Version 2 or greater\n");
10486
10487 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10488 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10489 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10490 Major, Minor, Patch) ;
10491
10492 /* check that db.h & libdb are compatible */
10493 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10494 printf("db.h and libdb are incompatible\n") ;
10495 exit(3);
10496 }
10497
10498 printf("db.h and libdb are compatible\n") ;
ee02776e
PM
10499
10500 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
693762b4 10501 + DB_VERSION_PATCH ;
ee02776e
PM
10502
10503 /* needs to be >= 2.3.4 */
10504 if (Version < 2003004) {
693762b4 10505 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
ee02776e 10506 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
1f70e1ea
PM
10507 exit(2);
10508 }
10509
10510 exit(0);
68dc0745 10511#else
6a1b87e5 10512#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
1f70e1ea 10513 printf("You have Berkeley DB Version 1\n");
6a1b87e5
JH
10514 exit(0); /* DB version < 2: the coast is clear. */
10515#else
10516 exit(1); /* <db.h> not Berkeley DB? */
10517#endif
68dc0745 10518#endif
10519}
10520EOCP
dfe9444c
AD
10521 set try
10522 if eval $compile && ./try; then
1f70e1ea 10523 echo 'Looks OK.' >&4
68dc0745 10524 else
c90c0ff4 10525 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
68dc0745 10526 i_db=$undef
10527 case " $libs " in
10528 *"-ldb "*)
10529 : Remove db from list of libraries to use
10530 echo "Removing unusable -ldb from library list" >&4
10531 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10532 shift
10533 libs="$*"
10534 echo "libs = $libs" >&4
10535 ;;
10536 esac
10537 fi
10538 $rm -f try.*
10539 ;;
10540esac
10541
10542case "$i_db" in
4633a7c4 10543define)
dc45a647
MB
10544 : Check the return type needed for hash
10545 echo " "
10546 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10547 $cat >try.c <<EOCP
10548#$d_const HASCONST
10549#ifndef HASCONST
10550#define const
10551#endif
10552#include <sys/types.h>
10553#include <db.h>
10554
10555#ifndef DB_VERSION_MAJOR
10556u_int32_t hash_cb (ptr, size)
10557const void *ptr;
10558size_t size;
10559{
10560}
10561HASHINFO info;
d674cd6d 10562int main()
dc45a647
MB
10563{
10564 info.hash = hash_cb;
10565}
10566#endif
10567EOCP
10568 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10569 if $contains warning try.out >>/dev/null 2>&1 ; then
10570 db_hashtype='int'
10571 else
10572 db_hashtype='u_int32_t'
10573 fi
10574 else
10575 : XXX Maybe we should just give up here.
10576 db_hashtype=u_int32_t
10577 $cat try.out >&4
10578 echo "Help: I can't seem to compile the db test program." >&4
10579 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10580 fi
10581 $rm -f try.*
10582 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10583 ;;
10584*) db_hashtype=u_int32_t
10585 ;;
10586esac
10587case "$i_db" in
10588define)
4633a7c4
LW
10589 : Check the return type needed for prefix
10590 echo " "
10591 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10592 cat >try.c <<EOCP
10593#$d_const HASCONST
10594#ifndef HASCONST
10595#define const
10596#endif
10597#include <sys/types.h>
10598#include <db.h>
1f70e1ea
PM
10599
10600#ifndef DB_VERSION_MAJOR
4633a7c4
LW
10601size_t prefix_cb (key1, key2)
10602const DBT *key1;
10603const DBT *key2;
10604{
10605}
10606BTREEINFO info;
d674cd6d 10607int main()
4633a7c4
LW
10608{
10609 info.prefix = prefix_cb;
10610}
1f70e1ea 10611#endif
4633a7c4
LW
10612EOCP
10613 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10614 if $contains warning try.out >>/dev/null 2>&1 ; then
10615 db_prefixtype='int'
10616 else
10617 db_prefixtype='size_t'
10618 fi
10619 else
68dc0745 10620 db_prefixtype='size_t'
10621 : XXX Maybe we should just give up here.
dc45a647 10622 $cat try.out >&4
68dc0745 10623 echo "Help: I can't seem to compile the db test program." >&4
10624 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
4633a7c4
LW
10625 fi
10626 $rm -f try.*
10627 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
a0d0e21e 10628 ;;
68dc0745 10629*) db_prefixtype='size_t'
4633a7c4
LW
10630 ;;
10631esac
a0d0e21e 10632
4633a7c4
LW
10633: check for void type
10634echo " "
10635echo "Checking to see how well your C compiler groks the void type..." >&4
4633a7c4
LW
10636case "$voidflags" in
10637'')
10638 $cat >try.c <<'EOCP'
10639#if TRY & 1
760ac839 10640void sub() {
4633a7c4 10641#else
760ac839 10642sub() {
4633a7c4
LW
10643#endif
10644 extern void moo(); /* function returning void */
10645 void (*goo)(); /* ptr to func returning void */
10646#if TRY & 8
10647 void *hue; /* generic ptr */
10648#endif
10649#if TRY & 2
10650 void (*foo[10])();
10651#endif
a0d0e21e 10652
4633a7c4
LW
10653#if TRY & 4
10654 if(goo == moo) {
10655 exit(0);
10656 }
10657#endif
10658 exit(0);
10659}
d674cd6d 10660int main() { sub(); }
4633a7c4 10661EOCP
760ac839 10662 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4633a7c4 10663 voidflags=$defvoidused
bfb7748a 10664 echo "Good. It appears to support void to the level $package wants.">&4
4633a7c4
LW
10665 if $contains warning .out >/dev/null 2>&1; then
10666 echo "However, you might get some warnings that look like this:"
10667 $cat .out
10668 fi
10669 else
10670echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
760ac839 10671 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4633a7c4 10672 echo "It supports 1..."
760ac839 10673 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4633a7c4 10674 echo "It also supports 2..."
760ac839 10675 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4633a7c4
LW
10676 voidflags=7
10677 echo "And it supports 4 but not 8 definitely."
10678 else
10679 echo "It doesn't support 4..."
760ac839 10680 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4633a7c4
LW
10681 voidflags=11
10682 echo "But it supports 8."
10683 else
10684 voidflags=3
10685 echo "Neither does it support 8."
10686 fi
10687 fi
10688 else
10689 echo "It does not support 2..."
760ac839 10690 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4633a7c4
LW
10691 voidflags=13
10692 echo "But it supports 4 and 8."
10693 else
760ac839 10694 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4633a7c4
LW
10695 voidflags=5
10696 echo "And it supports 4 but has not heard about 8."
10697 else
10698 echo "However it supports 8 but not 4."
10699 fi
10700 fi
10701 fi
10702 else
10703 echo "There is no support at all for void."
10704 voidflags=0
10705 fi
10706 fi
10707esac
4633a7c4 10708case "$voidflags" in
2c7991dc 10709"$defvoidused") ;;
bfb7748a
AD
10710*) $cat >&4 <<'EOM'
10711 Support flag bits are:
10712 1: basic void declarations.
10713 2: arrays of pointers to functions returning void.
10714 4: operations between pointers to and addresses of void functions.
10715 8: generic void pointers.
10716EOM
2c7991dc 10717 dflt="$voidflags";
4633a7c4 10718 rp="Your void support flags add up to what?"
a0d0e21e 10719 . ./myread
4633a7c4 10720 voidflags="$ans"
a0d0e21e
LW
10721 ;;
10722esac
4633a7c4 10723$rm -f try.* .out
a0d0e21e 10724
85ab1d1d
JH
10725
10726: How can we generate normalized random numbers ?
693762b4 10727echo " "
de4597cb 10728echo "Looking for a random number function..." >&4
85ab1d1d 10729case "$randfunc" in
693762b4 10730'')
85ab1d1d
JH
10731 if set drand48 val -f; eval $csym; $val; then
10732 dflt="drand48"
10733 echo "Good, found drand48()." >&4
10734 elif set random val -f; eval $csym; $val; then
10735 dflt="random"
10736 echo "OK, found random()." >&4
10737 else
10738 dflt="rand"
10739 echo "Yick, looks like I have to use rand()." >&4
10740 fi
10741 echo " "
10742 ;;
10743*)
10744 dflt="$randfunc"
10745 ;;
10746esac
10747cont=true
10748
10749case "$ccflags" in
10750*-Dmy_rand=*|*-Dmy_srand=*)
10751 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10752 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10753 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10754 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10755 ;;
10756esac
10757
10758while $test "$cont"; do
10759 rp="Use which function to generate random numbers?"
10760 . ./myread
10761 if $test "$ans" = "$dflt"; then
10762 : null
10763 else
10764 randbits=''
10765 fi
10766 randfunc="$ans"
10767 if set $ans val -f; eval $csym; $val; then
10768 cont=''
10769 else
ef4af2be
JH
10770 dflt=y
10771 rp="I cannot find function $ans. Use that name anyway?"
85ab1d1d
JH
10772 . ./myread
10773 dflt=rand
10774 case "$ans" in
10775 [yY]*) cont='';;
10776 esac
10777 fi
10778 case "$cont" in
10779 '')
10780 case "$randfunc" in
10781 drand48)
10782 drand01="drand48()"
10783 seedfunc="srand48"
10784 randbits=48
10785 randseedtype=long
10786 ;;
10787 rand|random)
10788 case "$randbits" in
10789 '')
10790echo "Checking to see how many bits your $randfunc() function produces..." >&4
10791 $cat >try.c <<EOCP
10792#$i_unistd I_UNISTD
10793#$i_stdlib I_STDLIB
693762b4 10794#include <stdio.h>
85ab1d1d
JH
10795#ifdef I_UNISTD
10796# include <unistd.h>
10797#endif
10798#ifdef I_STDLIB
10799# include <stdlib.h>
10800#endif
d674cd6d 10801int main()
693762b4 10802{
85ab1d1d
JH
10803 register int i;
10804 register unsigned long tmp;
10805 register unsigned long max = 0L;
10806
10807 for (i = 1000; i; i--) {
10808 tmp = (unsigned long) $randfunc();
10809 if (tmp > max) max = tmp;
10810 }
10811 for (i = 0; max; i++)
10812 max /= 2;
10813 printf("%d\n",i);
693762b4
AD
10814}
10815EOCP
85ab1d1d
JH
10816 set try
10817 if eval $compile_ok; then
10818 dflt=`try`
10819 else
10820 dflt='?'
10821 echo "(I can't seem to compile the test program...)"
10822 fi
10823 ;;
10824 *)
10825 dflt="$randbits"
10826 ;;
10827 esac
10828 rp="How many bits does your $randfunc() function produce?"
10829 . ./myread
10830 randbits="$ans"
10831 $rm -f try.c try
10832 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10833 seedfunc="s$randfunc"
10834 randseedtype=unsigned
10835 ;;
10836 *)
10837 dflt="31"
10838 rp="How many bits does your $randfunc() function produce?"
10839 . ./myread
10840 randbits="$ans"
10841 seedfunc="s$randfunc"
10842 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10843 if set $seedfunc val -f; eval $csym; $val; then
10844 echo "(Using $seedfunc() to seed random generator)"
10845 else
10846 echo "(Warning: no $seedfunc() to seed random generator)"
10847 seedfunc=rand
10848 fi
10849 randseedtype=unsigned
10850 ;;
10851 esac
10852 ;;
10853 esac
10854done
693762b4 10855
5ff3f7a4
GS
10856echo " "
10857echo "Determining whether or not we are on an EBCDIC system..." >&4
10858$cat >tebcdic.c <<'EOM'
10859int main()
10860{
10861 if ('M'==0xd4) return 0;
10862 return 1;
10863}
10864EOM
10865
10866val=$undef
10867set tebcdic
10868if eval $compile_ok; then
10869 if ./tebcdic; then
10870 echo "You have EBCDIC." >&4
10871 val="$define"
10872 else
10873 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10874 fi
10875else
5cc3184f 10876 echo "I'm unable to compile the test program." >&4
5ff3f7a4
GS
10877 echo "I'll assume ASCII or some ISO Latin." >&4
10878fi
10879$rm -f tebcdic.c tebcdic
10880set ebcdic
10881eval $setvar
10882
a0d0e21e 10883: see what type file positions are declared as in the library
a0d0e21e 10884rp="What is the type for file position used by fsetpos()?"
dc45a647
MB
10885set fpos_t fpostype long stdio.h sys/types.h
10886eval $typedef_ask
2304df62 10887
ccc7f9b3
KS
10888: Store the full pathname to the ar program for use in the C program
10889: Respect a hint or command line value for full_ar.
10890case "$full_ar" in
10891'') full_ar=$ar ;;
10892esac
10893
1aef975c
AD
10894: Store the full pathname to the sed program for use in the C program
10895full_sed=$sed
10896
2304df62 10897: see what type gids are declared as in the kernel
dc45a647
MB
10898echo " "
10899echo "Looking for the type for group ids returned by getgid()."
a0d0e21e
LW
10900set gid_t gidtype xxx stdio.h sys/types.h
10901eval $typedef
2304df62 10902case "$gidtype" in
a0d0e21e
LW
10903xxx)
10904 xxx=`./findhdr sys/user.h`
10905 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10906 case $1 in
10907 unsigned) dflt="$1 $2" ;;
10908 *) dflt="$1" ;;
10909 esac
2304df62 10910 ;;
a0d0e21e 10911*) dflt="$gidtype";;
2304df62 10912esac
dc45a647
MB
10913case "$gidtype" in
10914gid_t) echo "gid_t found." ;;
10915*) rp="What is the type for group ids returned by getgid()?"
10916 . ./myread
10917 gidtype="$ans"
10918 ;;
10919esac
a0d0e21e 10920
2304df62
AD
10921: see if getgroups exists
10922set getgroups d_getgrps
10923eval $inlibc
10924
5cd24f17 10925: see if setgroups exists
10926set setgroups d_setgrps
10927eval $inlibc
10928
dfe9444c 10929
8cc95fdb 10930: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
a0d0e21e 10931echo " "
5cd24f17 10932case "$d_getgrps$d_setgrps" in
10933*define*)
a0d0e21e 10934 case "$groupstype" in
2304df62
AD
10935 '') dflt="$gidtype" ;;
10936 *) dflt="$groupstype" ;;
a0d0e21e
LW
10937 esac
10938 $cat <<EOM
dc45a647 10939What type of pointer is the second argument to getgroups() and setgroups()?
5cd24f17 10940Usually this is the same as group ids, $gidtype, but not always.
2304df62
AD
10941
10942EOM
dc45a647 10943 rp='What type pointer is the second argument to getgroups() and setgroups()?'
a0d0e21e
LW
10944 . ./myread
10945 groupstype="$ans"
10946 ;;
10947*) groupstype="$gidtype";;
2304df62 10948esac
2304df62 10949
85e6fe83 10950: see what type lseek is declared as in the kernel
dc45a647 10951rp="What is the type used for lseek's offset on this system?"
a0d0e21e 10952set off_t lseektype long stdio.h sys/types.h
dc45a647 10953eval $typedef_ask
2304df62 10954
8ff267be 10955echo " "
5ff3f7a4
GS
10956$echo $n "Checking to see how big your file offsets are...$c" >&4
10957$cat >try.c <<EOCP
10958#include <sys/types.h>
10959#include <stdio.h>
5a411a32 10960int main()
5ff3f7a4
GS
10961{
10962 printf("%d\n", sizeof($lseektype));
10963}
10964EOCP
10965set try
10966if eval $compile_ok; then
10967 lseeksize=`./try`
10968 $echo " $lseeksize bytes." >&4
10969else
10970 dflt='4'
10971 echo " "
10972 echo "(I can't seem to compile the test program. Guessing...)"
10973 rp="What is the size of your file offsets (in bytes)?"
10974 . ./myread
10975 lseeksize="$ans"
10976fi
10977$rm -f try.c try
10978
10979echo " "
dfe9444c 10980echo "Checking if your $make program sets \$(MAKE)..." >&4
8ff267be 10981case "$make_set_make" in
10982'')
10983 $sed 's/^X //' > testmake.mak << 'EOF'
10984Xall:
dfe9444c 10985X @echo 'maketemp="$(MAKE)"'
8ff267be 10986EOF
8ff267be 10987 case "`$make -f testmake.mak 2>/dev/null`" in
dfe9444c 10988 *maketemp=*) make_set_make='#' ;;
8ff267be 10989 *) make_set_make="MAKE=$make" ;;
10990 esac
dfe9444c
AD
10991 $rm -f testmake.mak
10992 ;;
10993esac
10994case "$make_set_make" in
10995'#') echo "Yup, it does.";;
10996*) echo "Nope, it doesn't.";;
10997esac
10998
10999: see what type is used for mode_t
dc45a647 11000rp="What is the type used for file modes for system calls (e.g. fchmod())?"
dfe9444c 11001set mode_t modetype int stdio.h sys/types.h
dc45a647 11002eval $typedef_ask
dfe9444c 11003
dfe9444c
AD
11004: define a fucntion to check prototypes
11005$cat > protochk <<EOSH
11006$startsh
11007cc="$cc"
11008optimize="$optimize"
11009ccflags="$ccflags"
11010prototype="$prototype"
11011define="$define"
11012rm=$rm
11013EOSH
11014
11015$cat >> protochk <<'EOSH'
11016
11017$rm -f try.c
11018foo="$1"
11019shift
11020while test $# -ge 2; do
11021 case "$1" in
11022 $define) echo "#include <$2>" >> try.c ;;
11023 literal) echo "$2" >> try.c ;;
11024 esac
11025 shift 2
11026done
11027test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11028cat >> try.c <<'EOCP'
11029#ifdef CAN_PROTOTYPE
11030#define _(args) args
11031#else
11032#define _(args) ()
11033#endif
11034EOCP
11035echo "$foo" >> try.c
11036echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11037$cc $optimize $ccflags -c try.c > /dev/null 2>&1
11038status=$?
11039$rm -f try.[co]
11040exit $status
11041EOSH
11042chmod +x protochk
11043$eunicefix protochk
11044
dfe9444c 11045: see what type is used for size_t
dc45a647 11046rp="What is the type used for the length parameter for string functions?"
dfe9444c 11047set size_t sizetype 'unsigned int' stdio.h sys/types.h
dc45a647 11048eval $typedef_ask
dfe9444c
AD
11049
11050: check for type of arguments to gethostbyaddr.
11051if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11052 case "$d_gethbyaddr" in
11053 $define)
11054 $cat <<EOM
11055
11056Checking to see what type of arguments are accepted by gethostbyaddr().
11057EOM
11058 hdrs="$define sys/types.h
11059 $d_socket sys/socket.h
11060 $i_niin netinet/in.h
11061 $i_netdb netdb.h
11062 $i_unistd unistd.h"
11063 : The first arg can 'char *' or 'void *'
11064 : The second arg is some of integral type
11065 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11066 for yyy in size_t long int; do
11067 case "$netdb_host_type" in
11068 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11069 if ./protochk "$try" $hdrs; then
11070 echo "Your system accepts $xxx for the first arg."
11071 echo "...and $yyy for the second arg."
11072 netdb_host_type="$xxx"
11073 netdb_hlen_type="$yyy"
11074 fi
11075 ;;
11076 esac
11077 done
11078 done
11079 : In case none of those worked, prompt the user.
11080 case "$netdb_host_type" in
11081 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11082 dflt='char *'
11083 . ./myread
11084 netdb_host_type=$ans
11085 rp='What is the type for the 2nd argument to gethostbyaddr?'
11086 dflt="$sizetype"
11087 . ./myread
11088 netdb_hlen_type=$ans
11089 ;;
11090 esac
11091 ;;
11092 *) : no gethostbyaddr, so pick harmless defaults
11093 netdb_host_type='char *'
11094 netdb_hlen_type="$sizetype"
11095 ;;
11096 esac
11097 # Remove the "const" if needed. -- but then we'll have a
11098 # prototype clash!
11099 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11100fi
11101
11102: check for type of argument to gethostbyname.
11103if test "X$netdb_name_type" = X ; then
11104 case "$d_gethbyname" in
11105 $define)
11106 $cat <<EOM
11107
11108Checking to see what type of argument is accepted by gethostbyname().
11109EOM
11110 hdrs="$define sys/types.h
11111 $d_socket sys/socket.h
11112 $i_niin netinet/in.h
11113 $i_netdb netdb.h
11114 $i_unistd unistd.h"
11115 for xxx in "const char *" "char *"; do
11116 case "$netdb_name_type" in
11117 '') try="extern struct hostent *gethostbyname($xxx);"
11118 if ./protochk "$try" $hdrs; then
11119 echo "Your system accepts $xxx."
11120 netdb_name_type="$xxx"
11121 fi
11122 ;;
11123 esac
11124 done
11125 : In case none of those worked, prompt the user.
11126 case "$netdb_name_type" in
11127 '') rp='What is the type for the 1st argument to gethostbyname?'
11128 dflt='char *'
11129 . ./myread
11130 netdb_name_type=$ans
11131 ;;
11132 esac
11133 ;;
11134 *) : no gethostbyname, so pick harmless default
11135 netdb_name_type='char *'
11136 ;;
11137 esac
11138fi
8ff267be 11139
dfe9444c
AD
11140: check for type of 1st argument to getnetbyaddr.
11141if test "X$netdb_net_type" = X ; then
11142 case "$d_getnbyaddr" in
11143 $define)
11144 $cat <<EOM
85e6fe83 11145
dfe9444c
AD
11146Checking to see what type of 1st argument is accepted by getnetbyaddr().
11147EOM
11148 hdrs="$define sys/types.h
11149 $d_socket sys/socket.h
11150 $i_niin netinet/in.h
11151 $i_netdb netdb.h
11152 $i_unistd unistd.h"
11153 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11154 case "$netdb_net_type" in
11155 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11156 if ./protochk "$try" $hdrs; then
11157 echo "Your system accepts $xxx."
11158 netdb_net_type="$xxx"
11159 fi
11160 ;;
11161 esac
11162 done
11163 : In case none of those worked, prompt the user.
11164 case "$netdb_net_type" in
11165 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11166 dflt='long'
11167 . ./myread
11168 netdb_net_type=$ans
11169 ;;
11170 esac
11171 ;;
11172 *) : no getnetbyaddr, so pick harmless default
e5c9fcd0 11173 netdb_net_type='long'
dfe9444c
AD
11174 ;;
11175 esac
11176fi
2c7991dc 11177: locate the preferred pager for this system
11178case "$pager" in
11179'')
11180 dflt=''
11181 case "$pg" in
11182 /*) dflt=$pg;;
11183 esac
11184 case "$more" in
11185 /*) dflt=$more;;
11186 esac
11187 case "$less" in
11188 /*) dflt=$less;;
11189 esac
11190 case "$dflt" in
11191 '') dflt=/usr/ucb/more;;
11192 esac
11193 ;;
11194*) dflt="$pager";;
11195esac
11196echo " "
11197fn=f/
11198rp='What pager is used on your system?'
11199. ./getfile
11200pager="$ans"
11201
dfe9444c 11202: see what type pids are declared as in the kernel
dc45a647 11203rp="What is the type of process ids on this system?"
dfe9444c 11204set pid_t pidtype int stdio.h sys/types.h
dc45a647 11205eval $typedef_ask
2304df62 11206
693762b4
AD
11207: check for length of pointer
11208echo " "
11209case "$ptrsize" in
11210'')
dc45a647 11211 $echo $n "Checking to see how big your pointers are...$c" >&4
693762b4
AD
11212 if test "$voidflags" -gt 7; then
11213 echo '#define VOID_PTR char *' > try.c
11214 else
11215 echo '#define VOID_PTR void *' > try.c
11216 fi
11217 $cat >>try.c <<'EOCP'
11218#include <stdio.h>
d674cd6d 11219int main()
693762b4
AD
11220{
11221 printf("%d\n", sizeof(VOID_PTR));
11222 exit(0);
11223}
11224EOCP
11225 set try
dc45a647 11226 if eval $compile_ok; then
693762b4 11227 ptrsize=`./try`
dc45a647 11228 $echo " $ptrsize bytes." >&4
693762b4
AD
11229 else
11230 dflt='4'
11231 echo "(I can't seem to compile the test program. Guessing...)" >&4
11232 rp="What is the size of a pointer (in bytes)?"
11233 . ./myread
11234 ptrsize="$ans"
11235 fi
11236 ;;
11237esac
11238$rm -f try.c try
11239
a0d0e21e
LW
11240: see if ar generates random libraries by itself
11241echo " "
11242echo "Checking how to generate random libraries on your machine..." >&4
11243echo 'int bar1() { return bar2(); }' > bar1.c
11244echo 'int bar2() { return 2; }' > bar2.c
11245$cat > foo.c <<'EOP'
d674cd6d 11246int main() { printf("%d\n", bar1()); exit(0); }
a0d0e21e
LW
11247EOP
11248$cc $ccflags -c bar1.c >/dev/null 2>&1
11249$cc $ccflags -c bar2.c >/dev/null 2>&1
11250$cc $ccflags -c foo.c >/dev/null 2>&1
dfe9444c
AD
11251$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11252if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 11253 ./foobar >/dev/null 2>&1; then
4e2a5f63 11254 echo "$ar appears to generate random libraries itself."
a0d0e21e
LW
11255 orderlib=false
11256 ranlib=":"
dfe9444c
AD
11257elif $ar ts bar$_a >/dev/null 2>&1 &&
11258 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
a0d0e21e 11259 ./foobar >/dev/null 2>&1; then
4e2a5f63 11260 echo "a table of contents needs to be added with '$ar ts'."
a0d0e21e 11261 orderlib=false
dfe9444c 11262 ranlib="$ar ts"
a0d0e21e 11263else
ecfc5424
AD
11264 case "$ranlib" in
11265 :) ranlib='';;
11266 '')
11267 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11268 $test -f $ranlib || ranlib=''
11269 ;;
11270 esac
a0d0e21e 11271 if $test -n "$ranlib"; then
ecfc5424 11272 echo "your system has '$ranlib'; we'll use that."
a0d0e21e
LW
11273 orderlib=false
11274 else
11275 echo "your system doesn't seem to support random libraries"
11276 echo "so we'll use lorder and tsort to order the libraries."
11277 orderlib=true
11278 ranlib=":"
11279 fi
11280fi
11281$rm -f foo* bar*
11282
dfe9444c
AD
11283: check for type of arguments to select.
11284case "$selecttype" in
11285'') case "$d_select" in
11286 $define)
11287 $cat <<EOM
11288Checking to see what type of arguments are accepted by select().
11289EOM
11290 hdrs="$define sys/types.h
11291 $i_systime sys/time.h
11292 $i_sysselct sys/select.h
11293 $d_socket sys/socket.h"
11294 : The first arg can be int, unsigned, or size_t
11295 : The last arg may or may not be 'const'
11296 val=''
7f3d1cf1
BH
11297 : void pointer has been seen but using that
11298 : breaks the selectminbits test
11299 for xxx in 'fd_set *' 'int *'; do
1cfa4ec7 11300 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
dfe9444c
AD
11301 for tmo in 'struct timeval *' 'const struct timeval *'; do
11302 case "$val" in
11303 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11304 if ./protochk "$try" $hdrs; then
11305 echo "Your system accepts $xxx."
11306 val="$xxx"
11307 fi
11308 ;;
11309 esac
11310 done
11311 done
11312 done
11313 case "$val" in
11314 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11315 case "$d_fd_set" in
11316 $define) dflt="fd_set *" ;;
11317 *) dflt="int *" ;;
11318 esac
11319 . ./myread
11320 val=$ans
11321 ;;
a0d0e21e 11322 esac
dfe9444c 11323 selecttype="$val"
a0d0e21e 11324 ;;
dfe9444c
AD
11325 *) : no select, so pick a harmless default
11326 selecttype='int *'
a0d0e21e
LW
11327 ;;
11328 esac
a0d0e21e
LW
11329 ;;
11330esac
2304df62 11331
5ff3f7a4
GS
11332: check for the select 'width'
11333case "$selectminbits" in
11334'') case "$d_select" in
11335 $define)
11336 $cat <<EOM
11337
85ab1d1d 11338Checking to see on how many bits at a time your select() operates...
5ff3f7a4
GS
11339EOM
11340 $cat >try.c <<EOCP
11341#include <sys/types.h>
11342#$i_time I_TIME
11343#$i_systime I_SYS_TIME
11344#$i_systimek I_SYS_TIME_KERNEL
11345#ifdef I_TIME
11346# include <time.h>
11347#endif
11348#ifdef I_SYS_TIME
11349# ifdef I_SYS_TIME_KERNEL
11350# define KERNEL
11351# endif
11352# include <sys/time.h>
11353# ifdef I_SYS_TIME_KERNEL
11354# undef KERNEL
11355# endif
11356#endif
11357#$i_sysselct I_SYS_SELECT
11358#ifdef I_SYS_SELECT
11359#include <sys/select.h>
11360#endif
11361#include <stdio.h>
fb164848
JH
11362$selecttype b;
11363#define S sizeof(*(b))
5ff3f7a4
GS
11364#define MINBITS 64
11365#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11366#define NBITS (NBYTES * 8)
11367int main() {
11368 char s[NBYTES];
5ff3f7a4
GS
11369 struct timeval t;
11370 int i;
11371 FILE* fp;
11372 int fd;
11373
11374 fclose(stdin);
11375 fp = fopen("try.c", "r");
11376 if (fp == 0)
11377 exit(1);
11378 fd = fileno(fp);
11379 if (fd < 0)
11380 exit(2);
11381 b = ($selecttype)s;
11382 for (i = 0; i < NBITS; i++)
11383 FD_SET(i, b);
11384 t.tv_sec = 0;
11385 t.tv_usec = 0;
11386 select(fd + 1, b, 0, 0, &t);
11387 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11388 printf("%d\n", i + 1);
11389 return 0;
11390}
11391EOCP
11392 set try
11393 if eval $compile_ok; then
11394 selectminbits=`./try`
85ab1d1d 11395 case "$selectminbits" in
fb164848
JH
11396 '') cat >&4 <<EOM
11397Cannot figure out on how many bits at a time your select() operates.
11398I'll play safe and guess it is 32 bits.
11399EOM
11400 selectminbits=32
11401 bits="32 bits"
11402 ;;
85ab1d1d
JH
11403 1) bits="1 bit" ;;
11404 *) bits="$selectminbits bits" ;;
11405 esac
11406 echo "Your select() operates on $bits at a time." >&4
5ff3f7a4
GS
11407 else
11408 rp='What is the minimum number of bits your select() operates on?'
11409 case "$byteorder" in
11410 1234|12345678) dflt=32 ;;
11411 *) dflt=1 ;;
11412 esac
11413 . ./myread
11414 val=$ans
11415 selectminbits="$val"
11416 fi
11417 $rm -f try.* try
11418 ;;
11419 *) : no select, so pick a harmless default
11420 selectminbits='32'
11421 ;;
11422 esac
11423 ;;
11424esac
11425
8e07c86e
AD
11426: Trace out the files included by signal.h, then look for SIGxxx names.
11427: Remove SIGARRAYSIZE used by HPUX.
4633a7c4 11428: Remove SIGTYP void lines used by OS2.
8e07c86e
AD
11429xxx=`echo '#include <signal.h>' |
11430 $cppstdin $cppminus $cppflags 2>/dev/null |
11431 $grep '^[ ]*#.*include' |
11432 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11433: Check this list of files to be sure we have parsed the cpp output ok.
11434: This will also avoid potentially non-existent files, such
11435: as ../foo/bar.h
11436xxxfiles=''
11437for xx in $xxx /dev/null ; do
11438 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11439done
11440: If we have found no files, at least try signal.h
11441case "$xxxfiles" in
11442'') xxxfiles=`./findhdr signal.h` ;;
11443esac
11444xxx=`awk '
4633a7c4 11445$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8e07c86e
AD
11446 print substr($2, 4, 20)
11447}
4633a7c4 11448$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8e07c86e
AD
11449 print substr($3, 4, 20)
11450}' $xxxfiles`
11451: Append some common names just in case the awk scan failed.
11452xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11453xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11454xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11455xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11456: generate a few handy files for later
dc45a647 11457$cat > signal.c <<'EOCP'
4633a7c4
LW
11458#include <sys/types.h>
11459#include <signal.h>
dc45a647 11460#include <stdio.h>
4633a7c4 11461int main() {
760ac839
LW
11462
11463/* Strange style to avoid deeply-nested #if/#else/#endif */
11464#ifndef NSIG
11465# ifdef _NSIG
11466# define NSIG (_NSIG)
11467# endif
11468#endif
11469
11470#ifndef NSIG
11471# ifdef SIGMAX
11472# define NSIG (SIGMAX+1)
11473# endif
11474#endif
11475
11476#ifndef NSIG
11477# ifdef SIG_MAX
11478# define NSIG (SIG_MAX+1)
11479# endif
11480#endif
11481
11482#ifndef NSIG
11483# ifdef MAXSIG
11484# define NSIG (MAXSIG+1)
11485# endif
4633a7c4 11486#endif
760ac839
LW
11487
11488#ifndef NSIG
11489# ifdef MAX_SIG
11490# define NSIG (MAX_SIG+1)
11491# endif
11492#endif
11493
11494#ifndef NSIG
11495# ifdef SIGARRAYSIZE
11496# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11497# endif
11498#endif
11499
11500#ifndef NSIG
11501# ifdef _sys_nsig
11502# define NSIG (_sys_nsig) /* Solaris 2.5 */
11503# endif
11504#endif
11505
11506/* Default to some arbitrary number that's big enough to get most
11507 of the common signals.
11508*/
11509#ifndef NSIG
11510# define NSIG 50
4633a7c4 11511#endif
760ac839
LW
11512
11513printf("NSIG %d\n", NSIG);
11514
dc45a647
MB
11515#ifndef JUST_NSIG
11516
11517EOCP
11518
28e8609d 11519echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
8e07c86e
AD
11520{
11521 printf "#ifdef SIG"; printf $1; printf "\n"
11522 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11523 printf $1; printf ");\n"
11524 printf "#endif\n"
2304df62 11525}
2304df62 11526END {
dc45a647 11527 printf "#endif /* JUST_NSIG */\n";
8e07c86e 11528 printf "}\n";
2304df62 11529}
4633a7c4
LW
11530' >>signal.c
11531$cat >signal.awk <<'EOP'
11532BEGIN { ndups = 0 }
11533$1 ~ /^NSIG$/ { nsig = $2 }
11534($1 !~ /^NSIG$/) && (NF == 2) {
11535 if ($2 > maxsig) { maxsig = $2 }
11536 if (sig_name[$2]) {
11537 dup_name[ndups] = $1
11538 dup_num[ndups] = $2
11539 ndups++
11540 }
11541 else {
11542 sig_name[$2] = $1
11543 sig_num[$2] = $2
11544 }
11545
11546}
11547END {
11548 if (nsig == 0) { nsig = maxsig + 1 }
11549 for (n = 1; n < nsig; n++) {
11550 if (sig_name[n]) {
11551 printf("%s %d\n", sig_name[n], sig_num[n])
11552 }
11553 else {
11554 printf("NUM%d %d\n", n, n)
11555 }
11556 }
11557 for (n = 0; n < ndups; n++) {
11558 printf("%s %d\n", dup_name[n], dup_num[n])
11559 }
11560}
11561EOP
11562$cat >signal_cmd <<EOS
8e07c86e 11563$startsh
dc45a647
MB
11564if $test -s signal.lst; then
11565 echo "Using your existing signal.lst file"
11566 exit 0
11567fi
11568xxx="$xxx"
11569EOS
11570$cat >>signal_cmd <<'EOS'
11571
11572set signal
11573if eval $compile_ok; then
dfe9444c 11574 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8e07c86e 11575else
dc45a647
MB
11576 echo "(I can't seem be able to compile the whole test program)" >&4
11577 echo "(I'll try it in little pieces.)" >&4
11578 set signal -DJUST_NSIG
11579 if eval $compile_ok; then
11580 ./signal$_exe > signal.nsg
11581 $cat signal.nsg
11582 else
11583 echo "I can't seem to figure out how many signals you have." >&4
11584 echo "Guessing 50." >&4
11585 echo 'NSIG 50' > signal.nsg
11586 fi
11587 : Now look at all the signal names, one at a time.
28e8609d 11588 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
dc45a647
MB
11589 $cat > signal.c <<EOCP
11590#include <sys/types.h>
11591#include <signal.h>
11592#include <stdio.h>
11593int main() {
11594printf("$xx %d\n", SIG${xx});
11595return 0;
11596}
11597EOCP
11598 set signal
11599 if eval $compile; then
11600 echo "SIG${xx} found."
11601 ./signal$_exe >> signal.ls1
11602 else
11603 echo "SIG${xx} NOT found."
11604 fi
11605 done
11606 if $test -s signal.ls1; then
11607 $cat signal.nsg signal.ls1 |
11608 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11609 fi
11610
11611fi
11612if $test -s signal.lst; then
11613 :
11614else
11615 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
8e07c86e 11616 echo 'kill -l' >signal
dc45a647 11617 set X `csh -f <signal`
8e07c86e 11618 $rm -f signal
2304df62 11619 shift
dc45a647 11620 case $# in
8e07c86e 11621 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
2304df62 11622 esac
28e8609d 11623 echo $@ | $tr ' ' $trnl | \
dc45a647 11624 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8e07c86e 11625fi
dc45a647 11626$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
8e07c86e 11627EOS
4633a7c4
LW
11628chmod a+x signal_cmd
11629$eunicefix signal_cmd
8e07c86e
AD
11630
11631: generate list of signal names
11632echo " "
dfe9444c 11633case "$sig_name_init" in
6626bf4c
JH
11634'') doinit=yes ;;
11635*) case "$sig_num_init" in
11636 ''|*,*) doinit=yes ;;
11637 esac ;;
11638esac
11639case "$doinit" in
11640yes)
4633a7c4 11641 echo "Generating a list of signal names and numbers..." >&4
dc45a647 11642 . ./signal_cmd
8e07c86e
AD
11643 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11644 sig_name="ZERO $sig_name"
dfe9444c
AD
11645 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11646 { printf "\"%s\", ", $1 }
11647 END { printf "0\n" }' signal.lst`
824a2ba3
JH
11648 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11649 sig_num="0 $sig_num"
11650 sig_num_init=`$awk 'BEGIN { printf "0, " }
dfe9444c
AD
11651 { printf "%d, ", $2}
11652 END { printf "0\n"}' signal.lst`
a0d0e21e 11653 ;;
2304df62 11654esac
a0d0e21e
LW
11655echo "The following signals are available:"
11656echo " "
11657echo $sig_name | $awk \
11658'BEGIN { linelen = 0 }
11659{
8e07c86e 11660 for (i = 1; i <= NF; i++) {
a0d0e21e
LW
11661 name = "SIG" $i " "
11662 linelen = linelen + length(name)
11663 if (linelen > 70) {
11664 printf "\n"
11665 linelen = length(name)
11666 }
11667 printf "%s", name
11668 }
8e07c86e 11669 printf "\n"
a0d0e21e 11670}'
4633a7c4 11671$rm -f signal signal.c signal.awk signal.lst signal_cmd
a0d0e21e 11672
a0d0e21e
LW
11673: see what type is used for signed size_t
11674set ssize_t ssizetype int stdio.h sys/types.h
11675eval $typedef
11676dflt="$ssizetype"
11677$cat > ssize.c <<EOM
11678#include <stdio.h>
11679#include <sys/types.h>
11680#define Size_t $sizetype
11681#define SSize_t $dflt
d674cd6d 11682int main()
a0d0e21e
LW
11683{
11684 if (sizeof(Size_t) == sizeof(SSize_t))
11685 printf("$dflt\n");
11686 else if (sizeof(Size_t) == sizeof(int))
11687 printf("int\n");
11688 else
11689 printf("long\n");
760ac839 11690 exit(0);
a0d0e21e
LW
11691}
11692EOM
11693echo " "
dfe9444c 11694set ssize
dc45a647 11695if eval $compile_ok && ./ssize > /dev/null; then
dfe9444c 11696 ssizetype=`./ssize`
a0d0e21e
LW
11697 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11698else
24fef2a7 11699 $cat >&4 <<EOM
24fef2a7
AD
11700Help! I can't compile and run the ssize_t test program: please enlighten me!
11701(This is probably a misconfiguration in your system or libraries, and
11702you really ought to fix it. Still, I'll try anyway.)
a0d0e21e
LW
11703
11704I need a type that is the same size as $sizetype, but is guaranteed to
24fef2a7 11705be signed. Common values are ssize_t, int and long.
a0d0e21e
LW
11706
11707EOM
11708 rp="What signed type is the same size as $sizetype?"
11709 . ./myread
11710 ssizetype="$ans"
11711fi
dfe9444c 11712$rm -f ssize ssize.*
3fd537d4 11713
a0d0e21e
LW
11714: see what type of char stdio uses.
11715echo " "
11716if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11717 echo "Your stdio uses unsigned chars." >&4
11718 stdchar="unsigned char"
11719else
11720 echo "Your stdio uses signed chars." >&4
11721 stdchar="char"
11722fi
11723
11724: see if time exists
11725echo " "
28e8609d
JH
11726if test "X$d_time" = X -o X"$timetype" = X; then
11727 if set time val -f d_time; eval $csym; $val; then
5ff3f7a4
GS
11728 echo 'time() found.' >&4
11729 val="$define"
11730 rp="What is the type returned by time() on this system?"
11731 set time_t timetype long stdio.h sys/types.h
11732 eval $typedef_ask
28e8609d 11733 else
5ff3f7a4
GS
11734 echo 'time() not found, hope that will do.' >&4
11735 val="$undef"
11736 timetype='int';
28e8609d
JH
11737 fi
11738 set d_time
11739 eval $setvar
a0d0e21e 11740fi
a0d0e21e
LW
11741
11742: see what type uids are declared as in the kernel
dc45a647
MB
11743echo " "
11744echo "Looking for the type for user ids returned by getuid()."
a0d0e21e
LW
11745set uid_t uidtype xxx stdio.h sys/types.h
11746eval $typedef
11747case "$uidtype" in
11748xxx)
11749 xxx=`./findhdr sys/user.h`
11750 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11751 case $1 in
11752 unsigned) dflt="$1 $2" ;;
11753 *) dflt="$1" ;;
11754 esac
11755 ;;
4633a7c4
LW
11756*) dflt="$uidtype";;
11757esac
dc45a647
MB
11758case "$uidtype" in
11759uid_t) echo "uid_t found." ;;
11760*) rp="What is the type for user ids returned by getuid()?"
11761 . ./myread
11762 uidtype="$ans"
11763 ;;
11764esac
4633a7c4
LW
11765
11766: see if dbm.h is available
11767: see if dbmclose exists
11768set dbmclose d_dbmclose
11769eval $inlibc
11770
11771case "$d_dbmclose" in
11772$define)
11773 set dbm.h i_dbm
11774 eval $inhdr
5f80c64f
JH
11775 case "$i_dbm" in
11776 $define)
11777 val="$undef"
11778 set i_rpcsvcdbm
11779 eval $setvar
11780 ;;
11781 *) set rpcsvc/dbm.h i_rpcsvcdbm
11782 eval $inhdr
11783 ;;
11784 esac
11785 ;;
11786*) echo "We won't be including <dbm.h>"
11787 val="$undef"
11788 set i_dbm
11789 eval $setvar
11790 val="$undef"
11791 set i_rpcsvcdbm
11792 eval $setvar
11793 ;;
11794esac
11795
11796: see if this is a sys/file.h system
11797val=''
11798set sys/file.h val
11799eval $inhdr
11800
11801: do we need to include sys/file.h ?
11802case "$val" in
11803"$define")
11804 echo " "
11805 if $h_sysfile; then
11806 val="$define"
11807 echo "We'll be including <sys/file.h>." >&4
11808 else
11809 val="$undef"
11810 echo "We won't be including <sys/file.h>." >&4
11811 fi
11812 ;;
11813*)
11814 h_sysfile=false
11815 ;;
11816esac
11817set i_sysfile
11818eval $setvar
11819
11820: see if fcntl.h is there
11821val=''
11822set fcntl.h val
11823eval $inhdr
11824
11825: see if we can include fcntl.h
11826case "$val" in
11827"$define")
11828 echo " "
11829 if $h_fcntl; then
11830 val="$define"
11831 echo "We'll be including <fcntl.h>." >&4
11832 else
11833 val="$undef"
11834 if $h_sysfile; then
11835 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11836 else
11837 echo "We won't be including <fcntl.h>." >&4
11838 fi
11839 fi
11840 ;;
11841*)
11842 h_fcntl=false
11843 val="$undef"
11844 ;;
11845esac
11846set i_fcntl
11847eval $setvar
11848
11849: see if locale.h is available
11850set locale.h i_locale
11851eval $inhdr
11852
7f3d1cf1 11853: see if mach cthreads are available
13666627
JH
11854if test "X$usethreads" = "X$define"; then
11855 set mach/cthreads.h i_machcthr
11856 eval $inhdr
11857else
11858 i_machcthr="$undef"
11859fi
11860
11861
7f3d1cf1 11862
5f80c64f
JH
11863: see if this is a math.h system
11864set math.h i_math
11865eval $inhdr
11866
e7fb4fcc
JH
11867: see if this is a mntent.h system
11868set mntent.h i_mntent
11869eval $inhdr
11870
5f80c64f
JH
11871: see if ndbm.h is available
11872set ndbm.h t_ndbm
11873eval $inhdr
11874case "$t_ndbm" in
11875$define)
11876 : see if dbm_open exists
11877 set dbm_open d_dbm_open
11878 eval $inlibc
11879 case "$d_dbm_open" in
11880 $undef)
11881 t_ndbm="$undef"
11882 echo "We won't be including <ndbm.h>"
11883 ;;
11884 esac
11885 ;;
11886esac
11887val="$t_ndbm"
11888set i_ndbm
11889eval $setvar
11890
11891: see if net/errno.h is available
11892val=''
11893set net/errno.h val
11894eval $inhdr
11895
11896: Unfortunately, it causes problems on some systems. Arrgh.
11897case "$val" in
11898$define)
11899 cat > try.c <<'EOM'
11900#include <stdio.h>
11901#include <errno.h>
11902#include <net/errno.h>
11903int func()
11904{
11905 return ENOTSOCK;
11906}
11907EOM
11908 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11909 echo "We'll be including <net/errno.h>." >&4
11910 else
11911 echo "We won't be including <net/errno.h>." >&4
11912 val="$undef"
11913 fi
11914 $rm -f try.* try
11915 ;;
11916esac
11917set i_neterrno
11918eval $setvar
11919
5b34fd99
JH
11920: see if this is a poll.h system
11921set poll.h i_poll
11922eval $inhdr
11923
5f80c64f
JH
11924: get C preprocessor symbols handy
11925echo " "
11926$echo $n "Hmm... $c"
11927echo $al | $tr ' ' $trnl >Cppsym.know
11928$cat <<EOSS >Cppsym
11929$startsh
11930case "\$1" in
11931-l) list=true
11932 shift
11933 ;;
11934esac
11935unknown=''
11936case "\$list\$#" in
119371|2)
11938 for sym do
11939 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11940 exit 0
11941 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11942 :
11943 else
11944 unknown="\$unknown \$sym"
11945 fi
11946 done
11947 set X \$unknown
11948 shift
11949 ;;
11950esac
11951case \$# in
119520) exit 1;;
11953esac
11954echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11955#ifdef \1\\
11956exit 0; _ _ _ _\1\\ \1\\
11957#endif\\
11958/' >Cppsym\$\$
11959echo "exit 1; _ _ _" >>Cppsym\$\$
11960$cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11961case "\$list" in
11962true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11963*)
11964 sh Cppsym2\$\$
11965 status=\$?
11966 ;;
11967esac
11968$rm -f Cppsym\$\$ Cppsym2\$\$
11969exit \$status
11970EOSS
11971chmod +x Cppsym
11972$eunicefix Cppsym
11973./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11974
11975: now check the C compiler for additional symbols
c4747d3e
JH
11976postprocess_cc_v=''
11977case "$osname" in
11978aix) postprocess_cc_v="|$tr , ' '" ;;
11979esac
5f80c64f
JH
11980$cat >ccsym <<EOS
11981$startsh
11982$cat >tmp.c <<EOF
11983extern int foo;
11984EOF
c4747d3e 11985for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
5f80c64f
JH
11986do
11987 case "\$i" in
11988 -D*) echo "\$i" | $sed 's/^-D//';;
11989 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11990 esac
11991done
11992$rm -f try.c
11993EOS
c4747d3e 11994unset postprocess_cc_v
5f80c64f
JH
11995chmod +x ccsym
11996$eunicefix ccsym
11997./ccsym > ccsym1.raw
11998if $test -s ccsym1.raw; then
11999 $sort ccsym1.raw | $uniq >ccsym.raw
12000else
12001 mv ccsym1.raw ccsym.raw
12002fi
12003
12004$awk '/\=/ { print $0; next }
12005 { print $0"=1" }' ccsym.raw >ccsym.list
12006$awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12007$comm -13 ccsym.true ccsym.list >ccsym.own
12008$comm -12 ccsym.true ccsym.list >ccsym.com
12009$comm -23 ccsym.true ccsym.list >ccsym.cpp
12010also=''
5f80c64f 12011if $test -z ccsym.raw; then
ff49bff8 12012 echo "Your C compiler doesn't seem to define any symbols!" >&4
5f80c64f 12013 echo " "
ff49bff8 12014 echo "However, your C preprocessor defines the following symbols:"
5f80c64f 12015 $cat Cppsym.true
ff49bff8
JH
12016 ccsymbols=''
12017 cppsymbols=`$cat Cppsym.true`
918c3d21 12018 cppsymbols=`echo $cppsymbols`
ff49bff8 12019 cppccsymbols="$cppsymbols"
5f80c64f
JH
12020else
12021 if $test -s ccsym.com; then
12022 echo "Your C compiler and pre-processor define these symbols:"
12023 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12024 also='also '
12025 symbols='ones'
ff49bff8 12026 cppccsymbols=`$cat ccsym.com`
918c3d21 12027 cppccsymbols=`echo $cppccsymbols`
5f80c64f
JH
12028 $test "$silent" || sleep 1
12029 fi
12030 if $test -s ccsym.cpp; then
12031 $test "$also" && echo " "
ff49bff8 12032 echo "Your C pre-processor ${also}defines the following symbols:"
5f80c64f
JH
12033 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12034 also='further '
ff49bff8 12035 cppsymbols=`$cat ccsym.cpp`
918c3d21 12036 cppsymbols=`echo $cppsymbols`
5f80c64f
JH
12037 $test "$silent" || sleep 1
12038 fi
12039 if $test -s ccsym.own; then
12040 $test "$also" && echo " "
ff49bff8 12041 echo "Your C compiler ${also}defines the following cpp symbols:"
5f80c64f
JH
12042 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12043 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
ff49bff8 12044 ccsymbols=`$cat ccsym.own`
918c3d21 12045 ccsymbols=`echo $ccsymbols`
5f80c64f
JH
12046 $test "$silent" || sleep 1
12047 fi
12048fi
12049$rm -f ccsym*
12050
12051: see if this is a termio system
12052val="$undef"
12053val2="$undef"
12054val3="$undef"
12055if $test `./findhdr termios.h`; then
12056 set tcsetattr i_termios
12057 eval $inlibc
12058 val3="$i_termios"
12059fi
12060echo " "
12061case "$val3" in
12062"$define") echo "You have POSIX termios.h... good!" >&4;;
12063*) if ./Cppsym pyr; then
12064 case "`/bin/universe`" in
12065 ucb) if $test `./findhdr sgtty.h`; then
12066 val2="$define"
12067 echo "<sgtty.h> found." >&4
12068 else
12069 echo "System is pyramid with BSD universe."
12070 echo "<sgtty.h> not found--you could have problems." >&4
12071 fi;;
12072 *) if $test `./findhdr termio.h`; then
12073 val="$define"
12074 echo "<termio.h> found." >&4
12075 else
12076 echo "System is pyramid with USG universe."
12077 echo "<termio.h> not found--you could have problems." >&4
12078 fi;;
12079 esac
12080 elif ./usg; then
12081 if $test `./findhdr termio.h`; then
12082 echo "<termio.h> found." >&4
12083 val="$define"
12084 elif $test `./findhdr sgtty.h`; then
12085 echo "<sgtty.h> found." >&4
12086 val2="$define"
12087 else
12088echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12089 fi
12090 else
12091 if $test `./findhdr sgtty.h`; then
12092 echo "<sgtty.h> found." >&4
12093 val2="$define"
12094 elif $test `./findhdr termio.h`; then
12095 echo "<termio.h> found." >&4
12096 val="$define"
12097 else
12098echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12099 fi
12100 fi;;
12101esac
12102set i_termio; eval $setvar
12103val=$val2; set i_sgtty; eval $setvar
12104val=$val3; set i_termios; eval $setvar
12105
12106: see if stdarg is available
12107echo " "
12108if $test `./findhdr stdarg.h`; then
12109 echo "<stdarg.h> found." >&4
12110 valstd="$define"
12111else
12112 echo "<stdarg.h> NOT found." >&4
12113 valstd="$undef"
12114fi
12115
12116: see if varags is available
12117echo " "
12118if $test `./findhdr varargs.h`; then
12119 echo "<varargs.h> found." >&4
12120else
12121 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12122fi
12123
12124: set up the varargs testing programs
12125$cat > varargs.c <<EOP
12126#ifdef I_STDARG
12127#include <stdarg.h>
12128#endif
12129#ifdef I_VARARGS
12130#include <varargs.h>
12131#endif
12132
12133#ifdef I_STDARG
12134int f(char *p, ...)
12135#else
12136int f(va_alist)
12137va_dcl
12138#endif
12139{
12140 va_list ap;
12141#ifndef I_STDARG
12142 char *p;
12143#endif
12144#ifdef I_STDARG
12145 va_start(ap,p);
12146#else
12147 va_start(ap);
12148 p = va_arg(ap, char *);
12149#endif
12150 va_end(ap);
12151}
12152EOP
12153$cat > varargs <<EOP
12154$startsh
12155if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12156 echo "true"
12157else
12158 echo "false"
12159fi
12160$rm -f varargs$_o
12161EOP
12162chmod +x varargs
12163
12164: now check which varargs header should be included
12165echo " "
12166i_varhdr=''
12167case "$valstd" in
12168"$define")
12169 if `./varargs I_STDARG`; then
12170 val='stdarg.h'
12171 elif `./varargs I_VARARGS`; then
12172 val='varargs.h'
12173 fi
12174 ;;
12175*)
12176 if `./varargs I_VARARGS`; then
12177 val='varargs.h'
12178 fi
12179 ;;
12180esac
12181case "$val" in
12182'')
12183echo "I could not find the definition for va_dcl... You have problems..." >&4
12184 val="$undef"; set i_stdarg; eval $setvar
12185 val="$undef"; set i_varargs; eval $setvar
12186 ;;
12187*)
12188 set i_varhdr
12189 eval $setvar
12190 case "$i_varhdr" in
12191 stdarg.h)
12192 val="$define"; set i_stdarg; eval $setvar
12193 val="$undef"; set i_varargs; eval $setvar
12194 ;;
12195 varargs.h)
12196 val="$undef"; set i_stdarg; eval $setvar
12197 val="$define"; set i_varargs; eval $setvar
12198 ;;
12199 esac
12200 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12201esac
12202$rm -f varargs*
12203
12204: see if stddef is available
12205set stddef.h i_stddef
12206eval $inhdr
12207
12208: see if sys/access.h is available
12209set sys/access.h i_sysaccess
12210eval $inhdr
12211
12212: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12213set sys/filio.h i_sysfilio
12214eval $inhdr
12215echo " "
12216if $test `./findhdr sys/ioctl.h`; then
12217 val="$define"
12218 echo '<sys/ioctl.h> found.' >&4
12219else
12220 val="$undef"
12221 if $test $i_sysfilio = "$define"; then
12222 echo '<sys/ioctl.h> NOT found.' >&4
12223 else
12224 $test $i_sgtty = "$define" && xxx="sgtty.h"
12225 $test $i_termio = "$define" && xxx="termio.h"
12226 $test $i_termios = "$define" && xxx="termios.h"
12227echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12228 fi
12229fi
12230set i_sysioctl
12231eval $setvar
12232
5f80c64f
JH
12233: see if sys/resource.h has to be included
12234set sys/resource.h i_sysresrc
12235eval $inhdr
12236
12237: see if sys/security.h is available
12238set sys/security.h i_syssecrt
12239eval $inhdr
12240
104d25b7
JH
12241: see if this is a sys/statvfs.h system
12242set sys/statvfs.h i_sysstatvfs
12243eval $inhdr
12244
5f80c64f
JH
12245: see if this is a sys/un.h system
12246set sys/un.h i_sysun
12247eval $inhdr
12248
12249: see if this is a syswait system
12250set sys/wait.h i_syswait
12251eval $inhdr
12252
12253: see if this is an utime system
12254set utime.h i_utime
12255eval $inhdr
12256
12257: see if this is a values.h system
12258set values.h i_values
12259eval $inhdr
12260
12261: see if this is a vfork system
12262case "$d_vfork" in
12263"$define")
12264 set vfork.h i_vfork
12265 eval $inhdr
12266 ;;
12267*)
12268 i_vfork="$undef"
12269 ;;
12270esac
12271
12272: see if gdbm.h is available
12273set gdbm.h t_gdbm
12274eval $inhdr
12275case "$t_gdbm" in
12276$define)
12277 : see if gdbm_open exists
12278 set gdbm_open d_gdbm_open
12279 eval $inlibc
12280 case "$d_gdbm_open" in
12281 $undef)
12282 t_gdbm="$undef"
12283 echo "We won't be including <gdbm.h>"
12284 ;;
12285 esac
12286 ;;
12287esac
12288val="$t_gdbm"
12289set i_gdbm
12290eval $setvar
12291
12292echo " "
12293echo "Looking for extensions..." >&4
12294tdir=`pwd`
12295cd $rsrc/ext
12296: If we are using the old config.sh, known_extensions may contain
12297: old or inaccurate or duplicate values.
12298known_extensions=''
12299nonxs_extensions=''
12300: We do not use find because it might not be available.
12301: We do not just use MANIFEST because the user may have dropped
12302: some additional extensions into the source tree and expect them
12303: to be built.
12304for xxx in * ; do
12305 case "$xxx" in
12306 DynaLoader|dynaload) ;;
12307 *) if $test -f $xxx/$xxx.xs; then
12308 known_extensions="$known_extensions $xxx"
12309 elif $test -f $xxx/Makefile.PL; then
12310 nonxs_extensions="$nonxs_extensions $xxx"
12311 else
12312 if $test -d $xxx; then
12313 # Look for nested extensions, eg. Devel/Dprof.
12314 cd $xxx
12315 for yyy in * ; do
12316 if $test -f $yyy/$yyy.xs; then
12317 known_extensions="$known_extensions $xxx/$yyy"
12318 elif $test -f $yyy/Makefile.PL; then
12319 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12320 fi
12321 done
12322 cd ..
12323 fi
12324 fi
12325 ;;
12326 esac
12327done
12328set X $nonxs_extensions
12329shift
12330nonxs_extensions="$*"
12331set X $known_extensions
12332shift
12333known_extensions="$*"
12334cd $tdir
12335
12336: Now see which are supported on this system.
12337avail_ext=''
12338for xxx in $known_extensions ; do
12339 case "$xxx" in
12340 DB_File|db_file)
12341 case "$i_db" in
12342 $define) avail_ext="$avail_ext $xxx" ;;
12343 esac
12344 ;;
12345 GDBM_File|gdbm_fil)
12346 case "$i_gdbm" in
12347 $define) avail_ext="$avail_ext $xxx" ;;
12348 esac
12349 ;;
12350 NDBM_File|ndbm_fil)
12351 case "$i_ndbm" in
12352 $define) avail_ext="$avail_ext $xxx" ;;
12353 esac
12354 ;;
12355 ODBM_File|odbm_fil)
12356 case "${i_dbm}${i_rpcsvcdbm}" in
12357 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12358 esac
12359 ;;
12360 POSIX|posix)
12361 case "$useposix" in
12362 true|define|y) avail_ext="$avail_ext $xxx" ;;
12363 esac
12364 ;;
12365 Opcode|opcode)
12366 case "$useopcode" in
12367 true|define|y) avail_ext="$avail_ext $xxx" ;;
12368 esac
12369 ;;
12370 Socket|socket)
12371 case "$d_socket" in
12372 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12373 esac
12374 ;;
12375 Thread|thread)
12376 case "$usethreads" in
12377 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12378 esac
12379 ;;
12380 IPC/SysV|ipc/sysv)
12381 : XXX Do we need a useipcsysv variable here
12382 case "${d_msg}${d_sem}${d_shm}" in
12383 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12384 esac
12385 ;;
12386 *) avail_ext="$avail_ext $xxx"
12387 ;;
12388 esac
12389done
12390
12391set X $avail_ext
12392shift
12393avail_ext="$*"
12394
12395: Now see which nonxs extensions are supported on this system.
12396: For now assume all are.
12397nonxs_ext=''
12398for xxx in $nonxs_extensions ; do
12399 case "$xxx" in
12400 *) nonxs_ext="$nonxs_ext $xxx"
12401 ;;
12402 esac
12403done
12404
12405set X $nonxs_ext
12406shift
12407nonxs_ext="$*"
12408
12409case $usedl in
12410$define)
12411 $cat <<EOM
12412A number of extensions are supplied with $package. You may choose to
12413compile these extensions for dynamic loading (the default), compile
12414them into the $package executable (static loading), or not include
12415them at all. Answer "none" to include no extensions.
12416Note that DynaLoader is always built and need not be mentioned here.
12417
12418EOM
12419 case "$dynamic_ext" in
12420 '') dflt="$avail_ext" ;;
12421 *) dflt="$dynamic_ext"
12422 # Perhaps we are reusing an old out-of-date config.sh.
12423 case "$hint" in
12424 previous)
12425 if test X"$dynamic_ext" != X"$avail_ext"; then
12426 $cat <<EOM
12427NOTICE: Your previous config.sh list may be incorrect.
12428The extensions now available to you are
12429 ${avail_ext}
12430but the default list from your previous config.sh is
12431 ${dynamic_ext}
12432
12433EOM
12434 fi
12435 ;;
12436 esac
12437 ;;
12438 esac
12439 case "$dflt" in
12440 '') dflt=none;;
12441 esac
12442 rp="What extensions do you wish to load dynamically?"
12443 . ./myread
12444 case "$ans" in
12445 none) dynamic_ext=' ' ;;
12446 *) dynamic_ext="$ans" ;;
12447 esac
12448
12449 case "$static_ext" in
12450 '')
12451 : Exclude those already listed in dynamic linking
12452 dflt=''
12453 for xxx in $avail_ext; do
12454 case " $dynamic_ext " in
12455 *" $xxx "*) ;;
12456 *) dflt="$dflt $xxx" ;;
12457 esac
12458 done
12459 set X $dflt
12460 shift
12461 dflt="$*"
12462 ;;
12463 *) dflt="$static_ext"
12464 ;;
12465 esac
12466
12467 case "$dflt" in
12468 '') dflt=none;;
12469 esac
12470 rp="What extensions do you wish to load statically?"
12471 . ./myread
12472 case "$ans" in
12473 none) static_ext=' ' ;;
12474 *) static_ext="$ans" ;;
12475 esac
12476 ;;
12477*)
12478 $cat <<EOM
12479A number of extensions are supplied with $package. Answer "none"
12480to include no extensions.
12481Note that DynaLoader is always built and need not be mentioned here.
12482
12483EOM
12484 case "$static_ext" in
12485 '') dflt="$avail_ext" ;;
12486 *) dflt="$static_ext"
12487 # Perhaps we are reusing an old out-of-date config.sh.
12488 case "$hint" in
12489 previous)
12490 if test X"$static_ext" != X"$avail_ext"; then
12491 $cat <<EOM
12492NOTICE: Your previous config.sh list may be incorrect.
12493The extensions now available to you are
12494 ${avail_ext}
12495but the default list from your previous config.sh is
12496 ${static_ext}
12497
12498EOM
12499 fi
12500 ;;
12501 esac
12502 ;;
12503 esac
12504 : Exclude those that are not xs extensions
12505 case "$dflt" in
12506 '') dflt=none;;
12507 esac
12508 rp="What extensions do you wish to include?"
12509 . ./myread
12510 case "$ans" in
12511 none) static_ext=' ' ;;
12512 *) static_ext="$ans" ;;
12513 esac
12514 ;;
12515esac
12516
12517set X $dynamic_ext $static_ext $nonxs_ext
12518shift
12519extensions="$*"
12520
12521: Remove build directory name from cppstdin so it can be used from
12522: either the present location or the final installed location.
12523echo " "
12524: Get out of the UU directory to get correct path name.
12525cd ..
12526case "$cppstdin" in
12527`pwd`/cppstdin)
12528 echo "Stripping down cppstdin path name"
12529 cppstdin=cppstdin
12530 ;;
12531esac
12532cd UU
12533
12534: end of configuration questions
12535echo " "
12536echo "End of configuration questions."
12537echo " "
12538
12539: back to where it started
12540if test -d ../UU; then
12541 cd ..
12542fi
12543
12544: configuration may be patched via a 'config.over' file
12545if $test -f config.over; then
12546 echo " "
12547 dflt=y
12548 rp='I see a config.over file. Do you wish to load it?'
12549 . UU/myread
12550 case "$ans" in
12551 n*) echo "OK, I'll ignore it.";;
12552 *) . ./config.over
12553 echo "Configuration override changes have been loaded."
12554 ;;
12555 esac
12556fi
12557
12558: in case they want portability, strip down executable paths
12559case "$d_portable" in
12560"$define")
12561 echo " "
12562 echo "Stripping down executable paths..." >&4
12563 for file in $loclist $trylist; do
12564 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12565 eval $file="\$file"
12566 fi
12567 done
12568 ;;
12569esac
12570
12571: create config.sh file
12572echo " "
12573echo "Creating config.sh..." >&4
12574$spitshell <<EOT >config.sh
12575$startsh
12576#
12577# This file was produced by running the Configure script. It holds all the
12578# definitions figured out by Configure. Should you modify one of these values,
12579# do not forget to propagate your changes by running "Configure -der". You may
12580# instead choose to run each of the .SH files by yourself, or "Configure -S".
12581#
12582
12583# Package name : $package
12584# Source directory : $src
12585# Configuration time: $cf_time
12586# Configured by : $cf_by
12587# Target system : $myuname
12588
12589Author='$Author'
12590Date='$Date'
12591Header='$Header'
12592Id='$Id'
12593Locker='$Locker'
12594Log='$Log'
12595Mcc='$Mcc'
12596RCSfile='$RCSfile'
12597Revision='$Revision'
12598Source='$Source'
12599State='$State'
12600_a='$_a'
12601_exe='$_exe'
12602_o='$_o'
12603afs='$afs'
12604alignbytes='$alignbytes'
12605ansi2knr='$ansi2knr'
12606aphostname='$aphostname'
12607apiversion='$apiversion'
12608ar='$ar'
12609archlib='$archlib'
12610archlibexp='$archlibexp'
12611archname64='$archname64'
12612archname='$archname'
12613archobjs='$archobjs'
12614awk='$awk'
12615baserev='$baserev'
12616bash='$bash'
12617bin='$bin'
12618binexp='$binexp'
12619bison='$bison'
12620byacc='$byacc'
12621byteorder='$byteorder'
12622c='$c'
12623castflags='$castflags'
12624cat='$cat'
12625cc='$cc'
12626cccdlflags='$cccdlflags'
12627ccdlflags='$ccdlflags'
12628ccflags='$ccflags'
ff49bff8 12629ccsymbols='$ccsymbols'
5f80c64f
JH
12630cf_by='$cf_by'
12631cf_email='$cf_email'
12632cf_time='$cf_time'
12633chgrp='$chgrp'
12634chmod='$chmod'
12635chown='$chown'
12636clocktype='$clocktype'
12637comm='$comm'
12638compress='$compress'
12639contains='$contains'
12640cp='$cp'
12641cpio='$cpio'
12642cpp='$cpp'
12643cpp_stuff='$cpp_stuff'
ff49bff8 12644cppccsymbols='$cppccsymbols'
5f80c64f
JH
12645cppflags='$cppflags'
12646cpplast='$cpplast'
12647cppminus='$cppminus'
12648cpprun='$cpprun'
12649cppstdin='$cppstdin'
ff49bff8 12650cppsymbols='$cppsymbols'
68c15b6f 12651crosscompile='$crosscompile'
5f80c64f
JH
12652cryptlib='$cryptlib'
12653csh='$csh'
12654d_Gconvert='$d_Gconvert'
12655d_access='$d_access'
12656d_accessx='$d_accessx'
12657d_alarm='$d_alarm'
12658d_archlib='$d_archlib'
12659d_attribut='$d_attribut'
12660d_bcmp='$d_bcmp'
12661d_bcopy='$d_bcopy'
12662d_bsd='$d_bsd'
12663d_bsdgetpgrp='$d_bsdgetpgrp'
12664d_bsdsetpgrp='$d_bsdsetpgrp'
12665d_bzero='$d_bzero'
12666d_casti32='$d_casti32'
12667d_castneg='$d_castneg'
12668d_charvspr='$d_charvspr'
12669d_chown='$d_chown'
12670d_chroot='$d_chroot'
12671d_chsize='$d_chsize'
12672d_closedir='$d_closedir'
de4597cb 12673d_cmsghdr_s='$d_cmsghdr_s'
5f80c64f
JH
12674d_const='$d_const'
12675d_crypt='$d_crypt'
12676d_csh='$d_csh'
12677d_cuserid='$d_cuserid'
12678d_dbl_dig='$d_dbl_dig'
12679d_dbmclose64='$d_dbmclose64'
12680d_dbminit64='$d_dbminit64'
12681d_delete64='$d_delete64'
12682d_difftime='$d_difftime'
de4597cb 12683d_dirent64_s='$d_dirent64_s'
5f80c64f
JH
12684d_dirnamlen='$d_dirnamlen'
12685d_dlerror='$d_dlerror'
12686d_dlopen='$d_dlopen'
12687d_dlsymun='$d_dlsymun'
12688d_dosuid='$d_dosuid'
12689d_drand48proto='$d_drand48proto'
12690d_dup2='$d_dup2'
12691d_eaccess='$d_eaccess'
12692d_endgrent='$d_endgrent'
12693d_endhent='$d_endhent'
12694d_endnent='$d_endnent'
12695d_endpent='$d_endpent'
12696d_endpwent='$d_endpwent'
12697d_endsent='$d_endsent'
12698d_eofnblk='$d_eofnblk'
12699d_eunice='$d_eunice'
12700d_fchmod='$d_fchmod'
12701d_fchown='$d_fchown'
12702d_fcntl='$d_fcntl'
12703d_fd_macros='$d_fd_macros'
12704d_fd_set='$d_fd_set'
12705d_fds_bits='$d_fds_bits'
12706d_fetch64='$d_fetch64'
12707d_fgetpos64='$d_fgetpos64'
12708d_fgetpos='$d_fgetpos'
12709d_firstkey64='$d_firstkey64'
12710d_flexfnam='$d_flexfnam'
de4597cb 12711d_flock64_s='$d_flock64_s'
5f80c64f
JH
12712d_flock='$d_flock'
12713d_fopen64='$d_fopen64'
12714d_fork='$d_fork'
12715d_fpathconf='$d_fpathconf'
12716d_freopen64='$d_freopen64'
12717d_fseek64='$d_fseek64'
12718d_fseeko64='$d_fseeko64'
12719d_fseeko='$d_fseeko'
12720d_fsetpos64='$d_fsetpos64'
12721d_fsetpos='$d_fsetpos'
12722d_fstat64='$d_fstat64'
104d25b7
JH
12723d_fstatfs='$d_fstatfs'
12724d_fstatvfs='$d_fstatvfs'
5f80c64f
JH
12725d_ftell64='$d_ftell64'
12726d_ftello64='$d_ftello64'
12727d_ftello='$d_ftello'
12728d_ftime='$d_ftime'
12729d_ftruncate64='$d_ftruncate64'
12730d_getgrent='$d_getgrent'
12731d_getgrps='$d_getgrps'
12732d_gethbyaddr='$d_gethbyaddr'
12733d_gethbyname='$d_gethbyname'
12734d_gethent='$d_gethent'
12735d_gethname='$d_gethname'
12736d_gethostprotos='$d_gethostprotos'
12737d_getlogin='$d_getlogin'
ccc7f9b3 12738d_getmntent='$d_getmntent'
5f80c64f
JH
12739d_getnbyaddr='$d_getnbyaddr'
12740d_getnbyname='$d_getnbyname'
12741d_getnent='$d_getnent'
12742d_getnetprotos='$d_getnetprotos'
12743d_getpbyname='$d_getpbyname'
12744d_getpbynumber='$d_getpbynumber'
12745d_getpent='$d_getpent'
12746d_getpgid='$d_getpgid'
12747d_getpgrp2='$d_getpgrp2'
12748d_getpgrp='$d_getpgrp'
12749d_getppid='$d_getppid'
12750d_getprior='$d_getprior'
12751d_getprotoprotos='$d_getprotoprotos'
12752d_getpwent='$d_getpwent'
12753d_getsbyname='$d_getsbyname'
12754d_getsbyport='$d_getsbyport'
12755d_getsent='$d_getsent'
12756d_getservprotos='$d_getservprotos'
12757d_gettimeod='$d_gettimeod'
12758d_gnulibc='$d_gnulibc'
12759d_grpasswd='$d_grpasswd'
ccc7f9b3 12760d_hasmntopt='$d_hasmntopt'
5f80c64f
JH
12761d_htonl='$d_htonl'
12762d_index='$d_index'
12763d_inetaton='$d_inetaton'
12764d_ino64t='$d_ino64t'
12765d_int64t='$d_int64t'
de4597cb 12766d_iovec_s='$d_iovec_s'
5f80c64f
JH
12767d_isascii='$d_isascii'
12768d_killpg='$d_killpg'
12769d_lchown='$d_lchown'
12770d_link='$d_link'
12771d_locconv='$d_locconv'
12772d_lockf64='$d_lockf64'
12773d_lockf='$d_lockf'
12774d_longdbl='$d_longdbl'
12775d_longlong='$d_longlong'
12776d_lseek64='$d_lseek64'
12777d_lstat64='$d_lstat64'
12778d_lstat='$d_lstat'
ff49bff8 12779d_madvise='$d_madvise'
5f80c64f
JH
12780d_mblen='$d_mblen'
12781d_mbstowcs='$d_mbstowcs'
12782d_mbtowc='$d_mbtowc'
12783d_memcmp='$d_memcmp'
12784d_memcpy='$d_memcpy'
12785d_memmove='$d_memmove'
12786d_memset='$d_memset'
12787d_mkdir='$d_mkdir'
12788d_mkfifo='$d_mkfifo'
12789d_mktime='$d_mktime'
ff49bff8
JH
12790d_mmap='$d_mmap'
12791d_mprotect='$d_mprotect'
5f80c64f 12792d_msg='$d_msg'
de4597cb
JH
12793d_msg_ctrunc='$d_msg_ctrunc'
12794d_msg_dontroute='$d_msg_dontroute'
12795d_msg_oob='$d_msg_oob'
12796d_msg_peek='$d_msg_peek'
12797d_msg_proxy='$d_msg_proxy'
5f80c64f
JH
12798d_msgctl='$d_msgctl'
12799d_msgget='$d_msgget'
de4597cb 12800d_msghdr_s='$d_msghdr_s'
5f80c64f
JH
12801d_msgrcv='$d_msgrcv'
12802d_msgsnd='$d_msgsnd'
ff49bff8
JH
12803d_msync='$d_msync'
12804d_munmap='$d_munmap'
5f80c64f
JH
12805d_mymalloc='$d_mymalloc'
12806d_nextkey64='$d_nextkey64'
12807d_nice='$d_nice'
12808d_off64t='$d_off64t'
ef4af2be 12809d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
5f80c64f
JH
12810d_oldpthreads='$d_oldpthreads'
12811d_oldsock='$d_oldsock'
12812d_open3='$d_open3'
12813d_open64='$d_open64'
12814d_opendir64='$d_opendir64'
12815d_pathconf='$d_pathconf'
12816d_pause='$d_pause'
12817d_phostname='$d_phostname'
12818d_pipe='$d_pipe'
12819d_poll='$d_poll'
12820d_portable='$d_portable'
12821d_pthread_yield='$d_pthread_yield'
5f80c64f
JH
12822d_pwage='$d_pwage'
12823d_pwchange='$d_pwchange'
12824d_pwclass='$d_pwclass'
12825d_pwcomment='$d_pwcomment'
12826d_pwexpire='$d_pwexpire'
12827d_pwgecos='$d_pwgecos'
12828d_pwpasswd='$d_pwpasswd'
12829d_pwquota='$d_pwquota'
12830d_readdir64='$d_readdir64'
12831d_readdir='$d_readdir'
12832d_readlink='$d_readlink'
de4597cb
JH
12833d_readv='$d_readv'
12834d_recvmsg='$d_recvmsg'
5f80c64f
JH
12835d_rename='$d_rename'
12836d_rewinddir='$d_rewinddir'
12837d_rmdir='$d_rmdir'
12838d_safebcpy='$d_safebcpy'
12839d_safemcpy='$d_safemcpy'
12840d_sanemcmp='$d_sanemcmp'
12841d_sched_yield='$d_sched_yield'
de4597cb 12842d_scm_rights='$d_scm_rights'
5f80c64f
JH
12843d_seekdir64='$d_seekdir64'
12844d_seekdir='$d_seekdir'
12845d_select='$d_select'
12846d_sem='$d_sem'
12847d_semctl='$d_semctl'
12848d_semctl_semid_ds='$d_semctl_semid_ds'
12849d_semctl_semun='$d_semctl_semun'
12850d_semget='$d_semget'
12851d_semop='$d_semop'
de4597cb 12852d_sendmsg='$d_sendmsg'
5f80c64f
JH
12853d_setegid='$d_setegid'
12854d_seteuid='$d_seteuid'
12855d_setgrent='$d_setgrent'
12856d_setgrps='$d_setgrps'
12857d_sethent='$d_sethent'
12858d_setlinebuf='$d_setlinebuf'
12859d_setlocale='$d_setlocale'
12860d_setnent='$d_setnent'
12861d_setpent='$d_setpent'
12862d_setpgid='$d_setpgid'
12863d_setpgrp2='$d_setpgrp2'
12864d_setpgrp='$d_setpgrp'
12865d_setprior='$d_setprior'
12866d_setpwent='$d_setpwent'
12867d_setregid='$d_setregid'
12868d_setresgid='$d_setresgid'
12869d_setresuid='$d_setresuid'
12870d_setreuid='$d_setreuid'
12871d_setrgid='$d_setrgid'
12872d_setruid='$d_setruid'
12873d_setsent='$d_setsent'
12874d_setsid='$d_setsid'
12875d_setvbuf='$d_setvbuf'
12876d_sfio='$d_sfio'
12877d_shm='$d_shm'
12878d_shmat='$d_shmat'
12879d_shmatprototype='$d_shmatprototype'
12880d_shmctl='$d_shmctl'
12881d_shmdt='$d_shmdt'
12882d_shmget='$d_shmget'
12883d_sigaction='$d_sigaction'
12884d_sigsetjmp='$d_sigsetjmp'
12885d_socket='$d_socket'
12886d_sockpair='$d_sockpair'
12887d_stat64='$d_stat64'
12888d_statblks='$d_statblks'
104d25b7
JH
12889d_statfs='$d_statfs'
12890d_statfsflags='$d_statfsflags'
12891d_statvfs='$d_statvfs'
5f80c64f
JH
12892d_stdio_cnt_lval='$d_stdio_cnt_lval'
12893d_stdio_ptr_lval='$d_stdio_ptr_lval'
12894d_stdiobase='$d_stdiobase'
12895d_stdstdio='$d_stdstdio'
12896d_store64='$d_store64'
12897d_strchr='$d_strchr'
12898d_strcoll='$d_strcoll'
12899d_strctcpy='$d_strctcpy'
12900d_strerrm='$d_strerrm'
12901d_strerror='$d_strerror'
12902d_strtod='$d_strtod'
12903d_strtol='$d_strtol'
12904d_strtoul='$d_strtoul'
12905d_strxfrm='$d_strxfrm'
12906d_suidsafe='$d_suidsafe'
12907d_symlink='$d_symlink'
12908d_syscall='$d_syscall'
12909d_sysconf='$d_sysconf'
12910d_sysernlst='$d_sysernlst'
12911d_syserrlst='$d_syserrlst'
12912d_system='$d_system'
12913d_tcgetpgrp='$d_tcgetpgrp'
12914d_tcsetpgrp='$d_tcsetpgrp'
12915d_telldir64='$d_telldir64'
12916d_telldir='$d_telldir'
cb86ce0e 12917d_telldirproto='$d_telldirproto'
5f80c64f
JH
12918d_time='$d_time'
12919d_times='$d_times'
12920d_tmpfile64='$d_tmpfile64'
12921d_truncate64='$d_truncate64'
12922d_truncate='$d_truncate'
12923d_tzname='$d_tzname'
12924d_umask='$d_umask'
12925d_uname='$d_uname'
12926d_union_semun='$d_union_semun'
12927d_vfork='$d_vfork'
12928d_void_closedir='$d_void_closedir'
12929d_voidsig='$d_voidsig'
12930d_voidtty='$d_voidtty'
12931d_volatile='$d_volatile'
12932d_vprintf='$d_vprintf'
12933d_wait4='$d_wait4'
12934d_waitpid='$d_waitpid'
12935d_wcstombs='$d_wcstombs'
12936d_wctomb='$d_wctomb'
de4597cb 12937d_writev='$d_writev'
5f80c64f
JH
12938d_xenix='$d_xenix'
12939date='$date'
12940db_hashtype='$db_hashtype'
12941db_prefixtype='$db_prefixtype'
12942defvoidused='$defvoidused'
12943direntrytype='$direntrytype'
12944dlext='$dlext'
12945dlsrc='$dlsrc'
12946doublesize='$doublesize'
12947drand01='$drand01'
12948dynamic_ext='$dynamic_ext'
12949eagain='$eagain'
12950ebcdic='$ebcdic'
12951echo='$echo'
12952egrep='$egrep'
12953emacs='$emacs'
12954eunicefix='$eunicefix'
12955exe_ext='$exe_ext'
12956expr='$expr'
12957extensions='$extensions'
12958find='$find'
12959firstmakefile='$firstmakefile'
12960flex='$flex'
12961fpostype='$fpostype'
12962freetype='$freetype'
ccc7f9b3 12963full_ar='$full_ar'
5f80c64f
JH
12964full_csh='$full_csh'
12965full_sed='$full_sed'
12966gccversion='$gccversion'
12967gidtype='$gidtype'
12968glibpth='$glibpth'
12969grep='$grep'
12970groupcat='$groupcat'
12971groupstype='$groupstype'
12972gzip='$gzip'
12973h_fcntl='$h_fcntl'
12974h_sysfile='$h_sysfile'
12975hint='$hint'
12976hostcat='$hostcat'
12977huge='$huge'
12978i_arpainet='$i_arpainet'
12979i_bsdioctl='$i_bsdioctl'
12980i_db='$i_db'
12981i_dbm='$i_dbm'
12982i_dirent='$i_dirent'
12983i_dld='$i_dld'
12984i_dlfcn='$i_dlfcn'
12985i_fcntl='$i_fcntl'
12986i_float='$i_float'
12987i_gdbm='$i_gdbm'
12988i_grp='$i_grp'
12989i_inttypes='$i_inttypes'
12990i_limits='$i_limits'
12991i_locale='$i_locale'
7f3d1cf1 12992i_machcthr='$i_machcthr'
5f80c64f
JH
12993i_malloc='$i_malloc'
12994i_math='$i_math'
12995i_memory='$i_memory'
e7fb4fcc 12996i_mntent='$i_mntent'
5f80c64f
JH
12997i_ndbm='$i_ndbm'
12998i_netdb='$i_netdb'
12999i_neterrno='$i_neterrno'
13000i_niin='$i_niin'
5b34fd99 13001i_poll='$i_poll'
c4747d3e 13002i_pthread='$i_pthread'
5f80c64f
JH
13003i_pwd='$i_pwd'
13004i_rpcsvcdbm='$i_rpcsvcdbm'
13005i_sfio='$i_sfio'
13006i_sgtty='$i_sgtty'
13007i_stdarg='$i_stdarg'
13008i_stddef='$i_stddef'
13009i_stdlib='$i_stdlib'
13010i_string='$i_string'
13011i_sysaccess='$i_sysaccess'
13012i_sysdir='$i_sysdir'
13013i_sysfile='$i_sysfile'
13014i_sysfilio='$i_sysfilio'
13015i_sysin='$i_sysin'
13016i_sysioctl='$i_sysioctl'
ff49bff8 13017i_sysmman='$i_sysmman'
104d25b7 13018i_sysmount='$i_sysmount'
5f80c64f
JH
13019i_sysndir='$i_sysndir'
13020i_sysparam='$i_sysparam'
13021i_sysresrc='$i_sysresrc'
13022i_syssecrt='$i_syssecrt'
13023i_sysselct='$i_sysselct'
13024i_syssockio='$i_syssockio'
13025i_sysstat='$i_sysstat'
104d25b7 13026i_sysstatvfs='$i_sysstatvfs'
5f80c64f
JH
13027i_systime='$i_systime'
13028i_systimek='$i_systimek'
13029i_systimes='$i_systimes'
13030i_systypes='$i_systypes'
de4597cb 13031i_sysuio='$i_sysuio'
5f80c64f
JH
13032i_sysun='$i_sysun'
13033i_syswait='$i_syswait'
13034i_termio='$i_termio'
13035i_termios='$i_termios'
13036i_time='$i_time'
13037i_unistd='$i_unistd'
13038i_utime='$i_utime'
13039i_values='$i_values'
13040i_varargs='$i_varargs'
13041i_varhdr='$i_varhdr'
13042i_vfork='$i_vfork'
13043ignore_versioned_solibs='$ignore_versioned_solibs'
13044incpath='$incpath'
13045inews='$inews'
13046installarchlib='$installarchlib'
13047installbin='$installbin'
13048installman1dir='$installman1dir'
13049installman3dir='$installman3dir'
13050installprivlib='$installprivlib'
13051installscript='$installscript'
13052installsitearch='$installsitearch'
13053installsitelib='$installsitelib'
104d25b7 13054installusrbinperl='$installusrbinperl'
5f80c64f
JH
13055intsize='$intsize'
13056known_extensions='$known_extensions'
13057ksh='$ksh'
13058large='$large'
13059ld='$ld'
13060lddlflags='$lddlflags'
13061ldflags='$ldflags'
13062less='$less'
13063lib_ext='$lib_ext'
13064libc='$libc'
13065libperl='$libperl'
13066libpth='$libpth'
13067libs='$libs'
13068libswanted='$libswanted'
13069line='$line'
13070lint='$lint'
13071lkflags='$lkflags'
13072ln='$ln'
13073lns='$lns'
13074locincpth='$locincpth'
13075loclibpth='$loclibpth'
13076longdblsize='$longdblsize'
13077longlongsize='$longlongsize'
13078longsize='$longsize'
13079lp='$lp'
13080lpr='$lpr'
13081ls='$ls'
13082lseeksize='$lseeksize'
13083lseektype='$lseektype'
13084mail='$mail'
13085mailx='$mailx'
13086make='$make'
13087make_set_make='$make_set_make'
13088mallocobj='$mallocobj'
13089mallocsrc='$mallocsrc'
13090malloctype='$malloctype'
13091man1dir='$man1dir'
13092man1direxp='$man1direxp'
13093man1ext='$man1ext'
13094man3dir='$man3dir'
13095man3direxp='$man3direxp'
13096man3ext='$man3ext'
13097medium='$medium'
13098mips='$mips'
13099mips_type='$mips_type'
13100mkdir='$mkdir'
ff49bff8 13101mmaptype='$mmaptype'
5f80c64f
JH
13102models='$models'
13103modetype='$modetype'
13104more='$more'
68c15b6f 13105multiarch='$multiarch'
5f80c64f
JH
13106mv='$mv'
13107myarchname='$myarchname'
13108mydomain='$mydomain'
13109myhostname='$myhostname'
13110myuname='$myuname'
13111n='$n'
13112netdb_hlen_type='$netdb_hlen_type'
13113netdb_host_type='$netdb_host_type'
13114netdb_name_type='$netdb_name_type'
13115netdb_net_type='$netdb_net_type'
13116nm='$nm'
13117nm_opt='$nm_opt'
13118nm_so_opt='$nm_so_opt'
13119nonxs_ext='$nonxs_ext'
13120nroff='$nroff'
13121o_nonblock='$o_nonblock'
13122obj_ext='$obj_ext'
ef4af2be 13123old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f
JH
13124optimize='$optimize'
13125orderlib='$orderlib'
13126osname='$osname'
13127osvers='$osvers'
13128package='$package'
13129pager='$pager'
13130passcat='$passcat'
13131patchlevel='$patchlevel'
13132path_sep='$path_sep'
13133perl='$perl'
13134perladmin='$perladmin'
13135perlpath='$perlpath'
13136pg='$pg'
13137phostname='$phostname'
13138pidtype='$pidtype'
13139plibpth='$plibpth'
13140pmake='$pmake'
13141pr='$pr'
13142prefix='$prefix'
13143prefixexp='$prefixexp'
13144privlib='$privlib'
13145privlibexp='$privlibexp'
13146prototype='$prototype'
13147ptrsize='$ptrsize'
13148randbits='$randbits'
13149randfunc='$randfunc'
13150randseedtype='$randseedtype'
13151ranlib='$ranlib'
13152rd_nodata='$rd_nodata'
13153rm='$rm'
13154rmail='$rmail'
13155runnm='$runnm'
13156sched_yield='$sched_yield'
13157scriptdir='$scriptdir'
13158scriptdirexp='$scriptdirexp'
13159sed='$sed'
13160seedfunc='$seedfunc'
13161selectminbits='$selectminbits'
13162selecttype='$selecttype'
13163sendmail='$sendmail'
13164sh='$sh'
13165shar='$shar'
13166sharpbang='$sharpbang'
13167shmattype='$shmattype'
13168shortsize='$shortsize'
13169shrpenv='$shrpenv'
13170shsharp='$shsharp'
13171sig_name='$sig_name'
13172sig_name_init='$sig_name_init'
13173sig_num='$sig_num'
824a2ba3 13174sig_num_init='$sig_num_init'
5f80c64f
JH
13175signal_t='$signal_t'
13176sitearch='$sitearch'
13177sitearchexp='$sitearchexp'
13178sitelib='$sitelib'
13179sitelibexp='$sitelibexp'
13180sizetype='$sizetype'
13181sleep='$sleep'
13182smail='$smail'
13183small='$small'
13184so='$so'
13185sockethdr='$sockethdr'
13186socketlib='$socketlib'
13187sort='$sort'
13188spackage='$spackage'
13189spitshell='$spitshell'
13190split='$split'
13191src='$src'
13192ssizetype='$ssizetype'
13193startperl='$startperl'
13194startsh='$startsh'
13195static_ext='$static_ext'
13196stdchar='$stdchar'
13197stdio_base='$stdio_base'
13198stdio_bufsiz='$stdio_bufsiz'
13199stdio_cnt='$stdio_cnt'
13200stdio_filbuf='$stdio_filbuf'
13201stdio_ptr='$stdio_ptr'
13202strings='$strings'
13203submit='$submit'
13204subversion='$subversion'
13205sysman='$sysman'
13206tail='$tail'
13207tar='$tar'
13208tbl='$tbl'
13209tee='$tee'
13210test='$test'
13211timeincl='$timeincl'
13212timetype='$timetype'
13213touch='$touch'
13214tr='$tr'
13215trnl='$trnl'
13216troff='$troff'
13217uidtype='$uidtype'
13218uname='$uname'
13219uniq='$uniq'
13220use64bits='$use64bits'
13221usedl='$usedl'
13222usemultiplicity='$usemultiplicity'
13223usemymalloc='$usemymalloc'
13224usenm='$usenm'
13225useopcode='$useopcode'
13226useperlio='$useperlio'
13227useposix='$useposix'
13228usesfio='$usesfio'
13229useshrplib='$useshrplib'
13230usethreads='$usethreads'
13231usevfork='$usevfork'
13232usrinc='$usrinc'
13233uuname='$uuname'
13234version='$version'
13235vi='$vi'
13236voidflags='$voidflags'
13237xlibpth='$xlibpth'
13238zcat='$zcat'
13239zip='$zip'
13240EOT
13241
13242: Add in command line options if available
13243$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13244
13245: add special variables
13246$test -f $src/patchlevel.h && \
d00b958f 13247awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
5f80c64f
JH
13248echo "CONFIG=true" >>config.sh
13249
13250: propagate old symbols
13251if $test -f UU/config.sh; then
13252 <UU/config.sh sort | uniq >UU/oldconfig.sh
13253 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13254 sort | uniq -u >UU/oldsyms
13255 set X `cat UU/oldsyms`
13256 shift
13257 case $# in
13258 0) ;;
13259 *)
13260 cat <<EOM
13261Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13262EOM
13263 echo "# Variables propagated from previous config.sh file." >>config.sh
13264 for sym in `cat UU/oldsyms`; do
13265 echo " Propagating $hint variable "'$'"$sym..."
13266 eval 'tmp="$'"${sym}"'"'
13267 echo "$tmp" | \
13268 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13269 done
13270 ;;
13271 esac
13272fi
13273
13274: Finish up by extracting the .SH files
13275case "$alldone" in
13276exit)
13277 $rm -rf UU
13278 echo "Done."
13279 exit 0
13280 ;;
13281cont)
13282 ;;
13283'')
13284 dflt=''
13285 nostick=true
13286 $cat <<EOM
13287
13288If you'd like to make any changes to the config.sh file before I begin
13289to configure things, do it as a shell escape now (e.g. !vi config.sh).
13290
13291EOM
13292 rp="Press return or use a shell escape to edit config.sh:"
13293 . UU/myread
13294 nostick=''
13295 case "$ans" in
13296 '') ;;
13297 *) : in case they cannot read
13298 sh 1>&4 -c "$ans";;
13299 esac
13300 ;;
13301esac
13302
13303: if this fails, just run all the .SH files by hand
13304. ./config.sh
13305
13306echo " "
13307exec 1>&4
13308. ./UU/extract
13309
13310if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13311 dflt=y
13312 case "$silent" in
13313 true) ;;
13314 *)
13315 $cat <<EOM
13316
13317Now you need to generate make dependencies by running "$make depend".
13318You might prefer to run it in background: "$make depend > makedepend.out &"
13319It can take a while, so you might not want to run it right now.
13320
13321EOM
13322 ;;
13323 esac
13324 rp="Run $make depend now?"
13325 . UU/myread
13326 case "$ans" in
13327 y*)
13328 $make depend && echo "Now you must run a $make."
13329 ;;
13330 *)
13331 echo "You must run '$make depend' then '$make'."
13332 ;;
13333 esac
13334elif test -f [Mm]akefile; then
13335 echo " "
13336 echo "Now you must run a $make."
13337else
13338 echo "Done."
13339fi
13340
13341if $test -f Policy.sh; then
13342 $cat <<EOM
13343
13344If you compile $package on a different machine or from a different object
13345directory, copy the Policy.sh file from this object directory to the
13346new one before you run Configure -- this will help you with most of
13347the policy defaults.
13348
13349EOM
13350fi
13351if $test -f config.msg; then
13352 echo "Hmm. I also noted the following information while running:"
13353 echo " "
13354 $cat config.msg >&4
13355 $rm -f config.msg
13356fi
13357$rm -f kit*isdone ark*isdone
13358$rm -rf UU
13359
13360: End of Configure
13361