This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate change #8665 from maintperl to mainline,
[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#
a0acbdc3 23# Generated on Wed Feb 21 17:01:28 EET 2001 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
dfe9444c
AD
68 p_=\;
69 fi
39e571d4 70fi
a0d0e21e
LW
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
81
82for p in $paths
83do
8e07c86e
AD
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
87 esac
88done
89
8e07c86e 90PATH=.$p_$PATH
2304df62
AD
91export PATH
92
dfe9444c
AD
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
ff0cee69 99if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
2304df62 109 fi
dfe9444c 110fi
cf04f91f
JH
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
dfe9444c
AD
118case "$inksh/$needksh" in
119/[a-z]*)
c4f23d77 120 ENV=''
dfe9444c
AD
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
a0d0e21e
LW
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 136EOM
dfe9444c
AD
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
2304df62 148
bfb7748a
AD
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
2304df62
AD
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
8e07c86e 161cd UU && rm -f ./*
2304df62 162
6b356c8e
JH
163ccname=''
164ccversion=''
b4eb6b3d
JH
165ccsymbols=''
166cppccsymbols=''
167cppsymbols=''
9c839522 168perllibs=''
b4eb6b3d
JH
169dynamic_ext=''
170extensions=''
171known_extensions=''
172nonxs_ext=''
173static_ext=''
174useopcode=''
175useposix=''
ecfc5424 176d_bsd=''
40a7a20a 177d_eunice=''
2304df62
AD
178d_xenix=''
179eunicefix=''
180Mcc=''
dfe9444c 181ar=''
2304df62
AD
182awk=''
183bash=''
184bison=''
185byacc=''
186cat=''
187chgrp=''
188chmod=''
189chown=''
ecfc5424 190comm=''
2304df62
AD
191compress=''
192cp=''
193cpio=''
194cpp=''
195csh=''
196date=''
197echo=''
198egrep=''
199emacs=''
200expr=''
201find=''
202flex=''
2304df62 203grep=''
8ff267be 204gzip=''
2304df62
AD
205inews=''
206ksh=''
207less=''
208line=''
209lint=''
210ln=''
211lp=''
212lpr=''
213ls=''
214mail=''
215mailx=''
dfe9444c 216make=''
2304df62
AD
217mkdir=''
218more=''
219mv=''
693762b4 220nm=''
2304df62
AD
221nroff=''
222perl=''
223pg=''
224pmake=''
225pr=''
226rm=''
227rmail=''
228sed=''
229sendmail=''
2304df62
AD
230shar=''
231sleep=''
232smail=''
233sort=''
234submit=''
235tail=''
236tar=''
237tbl=''
693762b4 238tee=''
2304df62
AD
239test=''
240touch=''
241tr=''
242troff=''
243uname=''
244uniq=''
245uuname=''
246vi=''
247zcat=''
8ff267be 248zip=''
b4eb6b3d
JH
249full_ar=''
250full_sed=''
a0d0e21e 251libswanted=''
2304df62
AD
252hint=''
253myuname=''
85e6fe83
LW
254osname=''
255osvers=''
2304df62
AD
256Author=''
257Date=''
258Header=''
259Id=''
260Locker=''
261Log=''
262RCSfile=''
263Revision=''
264Source=''
265State=''
dfe9444c
AD
266_a=''
267_exe=''
268_o=''
4633a7c4
LW
269archobjs=''
270exe_ext=''
271firstmakefile=''
272lib_ext=''
273obj_ext=''
274path_sep=''
b4eb6b3d
JH
275afs=''
276alignbytes=''
277ansi2knr=''
278archlib=''
279archlibexp=''
280d_archlib=''
281installarchlib=''
282archname=''
283myarchname=''
284d_atolf=''
285d_atoll=''
286baserev=''
287bin=''
288binexp=''
289installbin=''
290bincompat5005=''
291d_bincompat5005=''
292byteorder=''
2304df62 293cc=''
2304df62
AD
294ccflags=''
295cppflags=''
296ldflags=''
297lkflags=''
8e07c86e 298locincpth=''
2304df62 299optimize=''
b4eb6b3d 300cf_email=''
2304df62
AD
301cf_by=''
302cf_time=''
b4eb6b3d 303charsize=''
2304df62 304contains=''
b4eb6b3d 305cpp_stuff=''
2304df62
AD
306cpplast=''
307cppminus=''
308cpprun=''
309cppstdin=''
b4eb6b3d 310crosscompile=''
74cac757 311d__fwalk=''
b4eb6b3d
JH
312d_access=''
313d_accessx=''
314d_alarm=''
315d_attribut=''
316d_bcmp=''
317d_bcopy=''
318d_bzero=''
319d_casti32=''
320castflags=''
321d_castneg=''
322d_chown=''
323d_chroot=''
324d_chsize=''
325d_closedir=''
326d_void_closedir=''
327d_const=''
328cryptlib=''
329d_crypt=''
330d_csh=''
331full_csh=''
332d_cuserid=''
333d_dbl_dig=''
334d_difftime=''
335d_dlerror=''
a0d0e21e 336d_dlopen=''
b4eb6b3d
JH
337d_dlsymun=''
338d_dosuid=''
339d_suidsafe=''
340d_drand48proto=''
341d_dup2=''
342d_eaccess=''
343d_endgrent=''
344d_endhent=''
345d_endnent=''
346d_endpent=''
347d_endpwent=''
348d_endsent=''
349d_fchmod=''
350d_fchown=''
351d_fcntl=''
9d9004a9 352d_fcntl_can_lock=''
b4eb6b3d
JH
353d_fd_macros=''
354d_fd_set=''
355d_fds_bits=''
356d_fgetpos=''
357d_flexfnam=''
358d_flock=''
359d_fork=''
360d_fpos64_t=''
361d_frexpl=''
362d_fs_data_s=''
363d_fseeko=''
364d_fsetpos=''
365d_fstatfs=''
411ab01c 366d_fsync=''
b4eb6b3d
JH
367d_ftello=''
368d_ftime=''
369d_gettimeod=''
370d_Gconvert=''
371d_getcwd=''
372d_getespwnam=''
373d_getfsstat=''
374d_getgrent=''
375d_getgrps=''
376d_gethbyaddr=''
377d_gethbyname=''
378d_gethent=''
379aphostname=''
380d_gethname=''
381d_phostname=''
382d_uname=''
383d_gethostprotos=''
384d_getlogin=''
385d_getmnt=''
386d_getmntent=''
387d_getnbyaddr=''
388d_getnbyname=''
389d_getnent=''
390d_getnetprotos=''
0c0643d0 391d_getpagsz=''
b4eb6b3d
JH
392d_getpent=''
393d_getpgid=''
394d_getpgrp2=''
395d_bsdgetpgrp=''
396d_getpgrp=''
397d_getppid=''
398d_getprior=''
399d_getpbyname=''
400d_getpbynumber=''
401d_getprotoprotos=''
402d_getprpwnam=''
403d_getpwent=''
404d_getsent=''
405d_getservprotos=''
406d_getspnam=''
407d_getsbyname=''
408d_getsbyport=''
a4f3eea9 409d_gnulibc=''
b4eb6b3d
JH
410d_hasmntopt=''
411d_htonl=''
412d_iconv=''
413d_inetaton=''
414d_int64_t=''
415d_isascii=''
416d_isnan=''
417d_isnanl=''
418d_killpg=''
419d_lchown=''
420d_ldbl_dig=''
421d_link=''
422d_locconv=''
423d_lockf=''
424d_longdbl=''
425longdblsize=''
426d_longlong=''
427longlongsize=''
428d_lseekproto=''
429d_lstat=''
430d_madvise=''
431d_mblen=''
432d_mbstowcs=''
433d_mbtowc=''
434d_memchr=''
435d_memcmp=''
436d_memcpy=''
437d_memmove=''
438d_memset=''
439d_mkdir=''
440d_mkdtemp=''
441d_mkfifo=''
442d_mkstemp=''
443d_mkstemps=''
444d_mktime=''
445d_mmap=''
446mmaptype=''
447d_modfl=''
448d_mprotect=''
449d_msg=''
450d_msgctl=''
451d_msgget=''
452d_msgrcv=''
453d_msgsnd=''
454d_msync=''
455d_munmap=''
456d_nice=''
457d_off64_t=''
458d_open3=''
459d_fpathconf=''
460d_pathconf=''
461d_pause=''
462d_pipe=''
463d_poll=''
2304df62 464d_portable=''
b4eb6b3d
JH
465d_old_pthread_create_joinable=''
466old_pthread_create_joinable=''
467d_pthread_yield=''
468d_sched_yield=''
469sched_yield=''
470d_qgcvt=''
471d_readdir=''
472d_rewinddir=''
473d_seekdir=''
474d_telldir=''
475d_readlink=''
476d_rename=''
477d_rmdir=''
478d_safebcpy=''
479d_safemcpy=''
480d_sanemcmp=''
ef9f17be 481d_sbrkproto=''
b4eb6b3d
JH
482d_select=''
483d_sem=''
484d_semctl=''
485d_semget=''
486d_semop=''
487d_setegid=''
488d_seteuid=''
489d_setgrent=''
490d_setgrps=''
491d_sethent=''
492d_setlinebuf=''
493d_setlocale=''
494d_setnent=''
495d_setpent=''
496d_setpgid=''
497d_setpgrp2=''
498d_bsdsetpgrp=''
499d_setpgrp=''
500d_setprior=''
501d_setproctitle=''
502d_setpwent=''
503d_setregid=''
504d_setresgid=''
505d_setresuid=''
506d_setreuid=''
507d_setrgid=''
508d_setruid=''
509d_setsent=''
510d_setsid=''
511d_setvbuf=''
512d_sfio=''
513usesfio=''
514d_shm=''
515d_shmat=''
516d_shmatprototype=''
517shmattype=''
518d_shmctl=''
519d_shmdt=''
520d_shmget=''
521d_sigaction=''
983dbef6 522d_sigprocmask=''
b4eb6b3d
JH
523d_sigsetjmp=''
524d_msg_ctrunc=''
525d_msg_dontroute=''
526d_msg_oob=''
527d_msg_peek=''
528d_msg_proxy=''
529d_oldsock=''
530d_scm_rights=''
531d_socket=''
532d_sockpair=''
533sockethdr=''
534socketlib=''
535d_socklen_t=''
536d_socks5_init=''
537d_sqrtl=''
538d_statblks=''
539d_statfs_f_flags=''
540d_statfs_s=''
541d_fstatvfs=''
542d_statvfs=''
543d_stdio_cnt_lval=''
544d_stdio_ptr_lval=''
a7ffa9b9
NC
545d_stdio_ptr_lval_nochange_cnt=''
546d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
547d_stdiobase=''
548d_stdstdio=''
549stdio_base=''
550stdio_bufsiz=''
551stdio_cnt=''
552stdio_filbuf=''
553stdio_ptr=''
554d_index=''
555d_strchr=''
556d_strcoll=''
557d_strctcpy=''
558d_strerrm=''
559d_strerror=''
560d_sysernlst=''
561d_syserrlst=''
562d_strtod=''
563d_strtol=''
564d_strtold=''
565d_strtoll=''
28e5dec8 566d_strtoq=''
b4eb6b3d
JH
567d_strtoul=''
568d_strtoull=''
569d_strtouq=''
570d_strxfrm=''
571d_symlink=''
572d_syscall=''
573d_sysconf=''
574d_system=''
575d_tcgetpgrp=''
576d_tcsetpgrp=''
577d_telldirproto=''
578d_time=''
579timetype=''
580clocktype=''
581d_times=''
582d_truncate=''
583d_tzname=''
584d_umask=''
585d_semctl_semid_ds=''
586d_semctl_semun=''
587d_union_semun=''
588d_ustat=''
589d_vfork=''
590usevfork=''
591d_voidsig=''
592signal_t=''
593d_volatile=''
594d_charvspr=''
595d_vprintf=''
596d_wait4=''
597d_waitpid=''
598d_wcstombs=''
599d_wctomb=''
600dlext=''
85e6fe83
LW
601cccdlflags=''
602ccdlflags=''
2304df62 603dlsrc=''
232e078e 604ld=''
85e6fe83 605lddlflags=''
2304df62 606usedl=''
b4eb6b3d
JH
607doublesize=''
608ebcdic=''
609fflushNULL=''
610fflushall=''
611fpossize=''
612fpostype=''
5b463ca7 613gccosandvers=''
8a27cf78 614gccversion=''
b4eb6b3d
JH
615gidformat=''
616gidsign=''
617gidsize=''
618gidtype=''
619groupstype=''
620h_fcntl=''
621h_sysfile=''
622i_arpainet=''
623db_hashtype=''
624db_prefixtype=''
625i_db=''
626i_dbm=''
627i_rpcsvcdbm=''
628d_dirnamlen=''
629direntrytype=''
630i_dirent=''
a0d0e21e 631i_dld=''
b4eb6b3d
JH
632i_dlfcn=''
633i_fcntl=''
634i_float=''
635i_gdbm=''
636d_grpasswd=''
637i_grp=''
638i_iconv=''
639i_ieeefp=''
640i_inttypes=''
641i_libutil=''
642i_limits=''
643i_locale=''
644i_machcthr=''
645i_malloc=''
646i_math=''
647i_memory=''
648i_mntent=''
649i_ndbm=''
650i_netdb=''
651i_neterrno=''
652i_netinettcp=''
653i_niin=''
654i_sysin=''
655i_poll=''
656i_prot=''
657i_pthread=''
658d_pwage=''
659d_pwchange=''
660d_pwclass=''
661d_pwcomment=''
662d_pwexpire=''
663d_pwgecos=''
664d_pwpasswd=''
665d_pwquota=''
666i_pwd=''
667i_sfio=''
668i_shadow=''
669i_socks=''
670i_stddef=''
671i_stdlib=''
672i_string=''
673strings=''
674i_sunmath=''
675i_sysaccess=''
676i_sysdir=''
677i_sysfile=''
678d_voidtty=''
679i_bsdioctl=''
680i_sysfilio=''
681i_sysioctl=''
682i_syssockio=''
683i_syslog=''
684i_sysmman=''
685i_sysmode=''
686i_sysmount=''
687i_sysndir=''
688i_sysparam=''
689i_sysresrc=''
690i_syssecrt=''
691i_sysselct=''
692i_sysstat=''
693i_sysstatfs=''
694i_sysstatvfs=''
695i_systimes=''
696i_systypes=''
697i_sysuio=''
698i_sysun=''
699i_sysutsname=''
700i_sysvfs=''
701i_syswait=''
702i_sgtty=''
703i_termio=''
704i_termios=''
705i_systime=''
706i_systimek=''
707i_time=''
708timeincl=''
709i_unistd=''
710i_ustat=''
711i_utime=''
712i_values=''
713i_stdarg=''
714i_varargs=''
715i_varhdr=''
716i_vfork=''
717inc_version_list=''
718inc_version_list_init=''
719installprefix=''
720installprefixexp=''
721installstyle=''
722installusrbinperl=''
723intsize=''
724longsize=''
725shortsize=''
4b661809 726issymlink=''
2304df62 727libc=''
b4eb6b3d
JH
728ldlibpthname=''
729libperl=''
730shrpenv=''
731useshrplib=''
a0d0e21e 732glibpth=''
2304df62 733libpth=''
8e07c86e 734loclibpth=''
2304df62
AD
735plibpth=''
736xlibpth=''
1cfa4ec7 737ignore_versioned_solibs=''
2304df62 738libs=''
43999f95
JH
739libsdirs=''
740libsfiles=''
741libsfound=''
13b3f787 742libspath=''
85e6fe83 743lns=''
b4eb6b3d
JH
744d_PRIEUldbl=''
745d_PRIFUldbl=''
746d_PRIGUldbl=''
747d_PRIeldbl=''
748d_PRIfldbl=''
749d_PRIgldbl=''
750d_SCNfldbl=''
751sPRIEUldbl=''
752sPRIFUldbl=''
753sPRIGUldbl=''
754sPRIeldbl=''
755sPRIfldbl=''
756sPRIgldbl=''
757sSCNfldbl=''
758lseeksize=''
759lseektype=''
8ff267be 760make_set_make=''
b4eb6b3d
JH
761d_mymalloc=''
762freetype=''
763mallocobj=''
764mallocsrc=''
765malloctype=''
766usemymalloc=''
767installman1dir=''
768man1dir=''
769man1direxp=''
770man1ext=''
771installman3dir=''
772man3dir=''
773man3direxp=''
774man3ext=''
775modetype=''
776multiarch=''
777mydomain=''
778myhostname=''
779phostname=''
2304df62
AD
780c=''
781n=''
b4eb6b3d
JH
782d_eofnblk=''
783eagain=''
784o_nonblock=''
785rd_nodata=''
2cc61e15 786need_va_copy=''
b4eb6b3d
JH
787netdb_hlen_type=''
788netdb_host_type=''
789netdb_name_type=''
790netdb_net_type=''
791groupcat=''
792hostcat=''
793passcat=''
794orderlib=''
795ranlib=''
796d_perl_otherlibdirs=''
797otherlibdirs=''
2304df62
AD
798package=''
799spackage=''
b4eb6b3d
JH
800pager=''
801api_revision=''
802api_subversion=''
803api_version=''
804api_versionstring=''
805patchlevel=''
806revision=''
807subversion=''
808version=''
809perl5=''
810perladmin=''
811perlpath=''
812d_nv_preserves_uv=''
813d_nv_preserves_uv_bits=''
814i16size=''
815i16type=''
816i32size=''
817i32type=''
818i64size=''
819i64type=''
820i8size=''
821i8type=''
822ivsize=''
823ivtype=''
824nvsize=''
825nvtype=''
826u16size=''
827u16type=''
828u32size=''
829u32type=''
830u64size=''
831u64type=''
832u8size=''
833u8type=''
834uvsize=''
835uvtype=''
836ivdformat=''
837nvEUformat=''
838nvFUformat=''
839nvGUformat=''
840nveformat=''
841nvfformat=''
842nvgformat=''
843uvXUformat=''
844uvoformat=''
845uvuformat=''
846uvxformat=''
847pidtype=''
848prefix=''
849prefixexp=''
850installprivlib=''
851privlib=''
852privlibexp=''
853prototype=''
854ptrsize=''
855d_PRIXU64=''
856d_PRId64=''
857d_PRIi64=''
858d_PRIo64=''
859d_PRIu64=''
860d_PRIx64=''
861sPRIXU64=''
862sPRId64=''
863sPRIi64=''
864sPRIo64=''
865sPRIu64=''
866sPRIx64=''
867d_quad=''
868quadkind=''
869quadtype=''
870uquadtype=''
871drand01=''
872randbits=''
873randfunc=''
874randseedtype=''
875seedfunc=''
876installscript=''
877scriptdir=''
878scriptdirexp=''
879selectminbits=''
880selecttype=''
8ff267be 881sh=''
b4eb6b3d
JH
882sig_count=''
883sig_name=''
884sig_name_init=''
885sig_num=''
886sig_num_init=''
76d3c696 887sig_size=''
b4eb6b3d
JH
888installsitearch=''
889sitearch=''
890sitearchexp=''
891installsitebin=''
892sitebin=''
893sitebinexp=''
894installsitelib=''
895sitelib=''
896sitelib_stem=''
897sitelibexp=''
898siteprefix=''
899siteprefixexp=''
900sizesize=''
901sizetype=''
a0d0e21e 902so=''
b4eb6b3d 903socksizetype=''
2304df62
AD
904sharpbang=''
905shsharp=''
906spitshell=''
dfe9444c 907src=''
b4eb6b3d
JH
908ssizetype=''
909startperl=''
2304df62 910startsh=''
b4eb6b3d
JH
911stdchar=''
912d_stdio_stream_array=''
913stdio_stream_array=''
914sysman=''
5ff3f7a4 915trnl=''
b4eb6b3d
JH
916uidformat=''
917uidsign=''
918uidsize=''
919uidtype=''
920archname64=''
921use64bitall=''
922use64bitint=''
923ccflags_uselargefiles=''
924ldflags_uselargefiles=''
925libswanted_uselargefiles=''
926uselargefiles=''
927uselongdouble=''
928usemorebits=''
929usemultiplicity=''
2304df62 930nm_opt=''
40a7a20a 931nm_so_opt=''
2304df62
AD
932runnm=''
933usenm=''
b4eb6b3d 934useperlio=''
29209bc5 935usesocks=''
b4eb6b3d
JH
936d_oldpthreads=''
937use5005threads=''
938useithreads=''
939usethreads=''
2304df62 940incpath=''
2304df62
AD
941mips_type=''
942usrinc=''
b4eb6b3d
JH
943d_vendorarch=''
944installvendorarch=''
945vendorarch=''
946vendorarchexp=''
947d_vendorbin=''
948installvendorbin=''
949vendorbin=''
950vendorbinexp=''
951d_vendorlib=''
952installvendorlib=''
953vendorlib=''
954vendorlib_stem=''
955vendorlibexp=''
956usevendorprefix=''
957vendorprefix=''
958vendorprefixexp=''
d56c5707 959versiononly=''
b4eb6b3d
JH
960defvoidused=''
961voidflags=''
962pm_apiversion=''
963xs_apiversion=''
3659ebf1
JH
964yacc=''
965yaccflags=''
2304df62
AD
966CONFIG=''
967
ecfc5424
AD
968define='define'
969undef='undef'
970smallmach='pdp11 i8086 z8000 i80286 iAPX286'
971rmlist=''
972
973: We must find out about Eunice early
974eunicefix=':'
975if test -f /etc/unixtovms; then
976 eunicefix=/etc/unixtovms
977fi
978if test -f /etc/unixtovms.exe; then
979 eunicefix=/etc/unixtovms.exe
980fi
981
b4eb6b3d 982i_whoami=''
6b356c8e
JH
983ccname=''
984ccversion=''
9c839522 985perllibs=''
b4eb6b3d
JH
986: set useposix=false in your hint file to disable the POSIX extension.
987useposix=true
988: set useopcode=false in your hint file to disable the Opcode extension.
989useopcode=true
dfe9444c 990: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 991_exe=''
dfe9444c
AD
992: Extra object files, if any, needed on this platform.
993archobjs=''
b4eb6b3d 994archname=''
ff935051
JH
995: Possible local include directories to search.
996: Set locincpth to "" in a hint file to defeat local include searches.
997locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
998locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
999:
1000: no include file wanted by default
1001inclwanted=''
1002
b4eb6b3d 1003groupstype=''
732c9516
JH
1004: change the next line if compiling for Xenix/286 on Xenix/386
1005xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1006: Possible local library directories to search.
1007loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1008loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1009
1010: general looking path for locating libraries
5869b1f1 1011glibpth="/lib /usr/lib $xlibpth"
732c9516 1012glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1013test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1014test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1015
1016: Private path used by Configure to find libraries. Its value
1017: is prepended to libpth. This variable takes care of special
1018: machines, like the mips. Usually, it should be empty.
1019plibpth=''
1020
1cfa4ec7
GS
1021: default library list
1022libswanted=''
921b2963 1023: some systems want to use only the non-versioned libso:s
1cfa4ec7 1024ignore_versioned_solibs=''
b4eb6b3d
JH
1025archname64=''
1026ccflags_uselargefiles=''
1027ldflags_uselargefiles=''
1028libswanted_uselargefiles=''
1029: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1030: set usesocks on the Configure command line to enable socks.
b4eb6b3d
JH
1031: set usethreads on the Configure command line to enable threads.
1032: full support for void wanted by default
1033defvoidused=15
1034
ecfc5424 1035: List of libraries we want.
693762b4 1036: If anyone needs -lnet, put it in a hint file.
997d70a2 1037libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1038libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1039libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1040libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1041: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1042: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1043glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1044glibpth="/usr/shlib $glibpth"
1045: Do not use vfork unless overridden by a hint file.
1046usevfork=false
1047
8ff267be 1048: Find the basic shell for Bourne shell scripts
1049case "$sh" in
1050'')
8ff267be 1051 case "$SYSTYPE" in
1052 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1053 *) xxx='/bin/sh';;
1054 esac
1055 if test -f "$xxx"; then
1056 sh="$xxx"
1057 else
1058 : Build up a list and do a single loop so we can 'break' out.
1059 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1060 for xxx in sh bash ksh pdksh ash; do
1061 for p in $pth; do
1062 try="$try ${p}/${xxx}"
1063 done
1064 done
1065 for xxx in $try; do
1066 if test -f "$xxx"; then
1067 sh="$xxx";
8ff267be 1068 break
1069 elif test -f "$xxx.exe"; then
1070 sh="$xxx";
8ff267be 1071 break
1072 fi
1073 done
1074 fi
1075 ;;
1076esac
1077
1078case "$sh" in
1079'') cat <<EOM >&2
1080$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1081
8ff267be 1082Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1083Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1084we'll try to straighten this all out.
8ff267be 1085EOM
1086 exit 1
1087 ;;
1088esac
1089
760ac839 1090: see if sh knows # comments
73614538 1091if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1092 shsharp=true
1093 spitshell=cat
760ac839
LW
1094 xcat=/bin/cat
1095 test -f $xcat || xcat=/usr/bin/cat
1096 echo "#!$xcat" >try
1097 $eunicefix try
1098 chmod +x try
1099 ./try > today
1100 if test -s today; then
760ac839
LW
1101 sharpbang='#!'
1102 else
1103 echo "#! $xcat" > try
1104 $eunicefix try
1105 chmod +x try
1106 ./try > today
1107 if test -s today; then
760ac839
LW
1108 sharpbang='#! '
1109 else
760ac839
LW
1110 sharpbang=': use '
1111 fi
1112 fi
1113else
dfe9444c 1114 echo " "
8ff267be 1115 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1116 shsharp=false
1117 cd ..
1118 echo "exec grep -v '^[ ]*#'" >spitshell
1119 chmod +x spitshell
1120 $eunicefix spitshell
1121 spitshell=`pwd`/spitshell
1122 cd UU
1123 echo "I presume that if # doesn't work, #! won't work either!"
1124 sharpbang=': use '
1125fi
1126rm -f try today
1127
1128: figure out how to guarantee sh startup
8ff267be 1129case "$startsh" in
1130'') startsh=${sharpbang}${sh} ;;
1131*)
760ac839 1132esac
760ac839
LW
1133cat >try <<EOSS
1134$startsh
1135set abc
1136test "$?abc" != 1
1137EOSS
1138
1139chmod +x try
1140$eunicefix try
1141if ./try; then
8ff267be 1142 : echo "Yup, it does."
760ac839 1143else
dfe9444c
AD
1144 echo "Hmm... '$startsh' does not guarantee sh startup..."
1145 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1146fi
1147rm -f try
1148
aebf16e7
AD
1149
1150: Save command line options in file UU/cmdline.opt for later use in
1151: generating config.sh.
1152cat > cmdline.opt <<EOSH
1153# Configure command line arguments.
1154config_arg0='$0'
1155config_args='$*'
1156config_argc=$#
1157EOSH
1158argn=1
1159for arg in "$@"; do
1160 cat >>cmdline.opt <<EOSH
1161config_arg$argn='$arg'
1162EOSH
1163 argn=`expr $argn + 1`
1164done
1165
2304df62
AD
1166: produce awk script to parse command line options
1167cat >options.awk <<'EOF'
1168BEGIN {
02e93a22 1169 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1170
1171 len = length(optstr);
1172 for (i = 1; i <= len; i++) {
1173 c = substr(optstr, i, 1);
1174 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1175 if (a == ":") {
1176 arg[c] = 1;
1177 i++;
1178 }
1179 opt[c] = 1;
1180 }
1181}
1182{
1183 expect = 0;
1184 str = $0;
1185 if (substr(str, 1, 1) != "-") {
1186 printf("'%s'\n", str);
1187 next;
1188 }
1189 len = length($0);
1190 for (i = 2; i <= len; i++) {
1191 c = substr(str, i, 1);
1192 if (!opt[c]) {
1193 printf("-%s\n", substr(str, i));
1194 next;
1195 }
1196 printf("-%s\n", c);
1197 if (arg[c]) {
1198 if (i < len)
1199 printf("'%s'\n", substr(str, i + 1));
1200 else
1201 expect = 1;
1202 next;
1203 }
1204 }
1205}
1206END {
1207 if (expect)
1208 print "?";
1209}
1210EOF
1211
1212: process the command line options
4633a7c4
LW
1213set X `for arg in "$@"; do echo "X$arg"; done |
1214 sed -e s/X// | awk -f options.awk`
2304df62
AD
1215eval "set $*"
1216shift
1217rm -f options.awk
1218
1219: set up default values
1220fastread=''
1221reuseval=false
1222config_sh=''
1223alldone=''
1224error=''
1225silent=''
1226extractsh=''
ecfc5424 1227override=''
16d20bd9 1228knowitall=''
02e93a22 1229rm -f optdef.sh posthint.sh
28757baa 1230cat >optdef.sh <<EOS
1231$startsh
1232EOS
2304df62 1233
dfe9444c 1234
2304df62
AD
1235: option parsing
1236while test $# -gt 0; do
1237 case "$1" in
1238 -d) shift; fastread=yes;;
1239 -e) shift; alldone=cont;;
1240 -f)
1241 shift
1242 cd ..
1243 if test -r "$1"; then
1244 config_sh="$1"
1245 else
a0d0e21e 1246 echo "$me: cannot read config file $1." >&2
2304df62
AD
1247 error=true
1248 fi
1249 cd UU
1250 shift;;
1251 -h) shift; error=true;;
1252 -r) shift; reuseval=true;;
dfe9444c 1253 -s) shift; silent=true; realsilent=true;;
2304df62 1254 -E) shift; alldone=exit;;
16d20bd9 1255 -K) shift; knowitall=true;;
ecfc5424 1256 -O) shift; override=true;;
dfe9444c 1257 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1258 -D)
1259 shift
1260 case "$1" in
1261 *=)
1262 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1263 echo "$me: ignoring -D $1" >&2
1264 ;;
ecfc5424 1265 *=*) echo "$1" | \
1aef975c
AD
1266 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1267 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1268 esac
1269 shift
1270 ;;
1271 -U)
1272 shift
1273 case "$1" in
1aef975c 1274 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1275 *=*)
1276 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1277 echo "$me: ignoring -U $1" >&2
1278 ;;
1aef975c 1279 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1280 esac
1281 shift
1282 ;;
02e93a22
JH
1283 -A)
1284 shift
1285 xxx=''
1286 yyy="$1"
02e93a22 1287 zzz=''
5f83a3e9 1288 uuu=undef
02e93a22 1289 case "$yyy" in
5f83a3e9
JH
1290 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1291 case "$zzz" in
1292 *:*) zzz='' ;;
1293 *) xxx=append
1294 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1295 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1296 esac
1297 ;;
1298 esac
1299 case "$xxx" in
1300 '') case "$yyy" in
1301 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1302 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1303 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1304 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1305 *) xxx=`echo $yyy|sed 's!:.*!!'`
1306 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1307 esac
1308 ;;
1309 esac
02e93a22
JH
1310 case "$xxx" in
1311 append)
5f83a3e9 1312 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1313 clear)
5f83a3e9 1314 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1315 define)
1316 case "$zzz" in
1317 '') zzz=define ;;
1318 esac
5f83a3e9 1319 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1320 eval)
5f83a3e9 1321 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1322 prepend)
5f83a3e9 1323 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1324 undef)
1325 case "$zzz" in
1326 '') zzz="$uuu" ;;
1327 esac
5f83a3e9
JH
1328 echo "$yyy=$zzz" >> posthint.sh ;;
1329 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1330 esac
bde6b06b 1331 shift
02e93a22 1332 ;;
dfe9444c 1333 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1334 exit 0;;
2304df62 1335 --) break;;
a0d0e21e 1336 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1337 *) break;;
1338 esac
1339done
1340
1341case "$error" in
1342true)
1343 cat >&2 <<EOM
2afac517 1344Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1345 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1346 -d : use defaults for all answers.
1347 -e : go on without questioning past the production of config.sh.
1348 -f : specify an alternate default configuration file.
1349 -h : print this help message and exit (with an error status).
1350 -r : reuse C symbols value if possible (skips costly nm extraction).
1351 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1352 -D : define symbol to have some value:
1353 -D symbol symbol gets the value 'define'
1354 -D symbol=value symbol gets the value 'value'
2304df62 1355 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1356 -K : do not use unless you know what you are doing.
ecfc5424 1357 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1358 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1359 -U : undefine symbol:
1360 -U symbol symbol gets the value 'undef'
1361 -U symbol= symbol gets completely empty
02e93a22 1362 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1363 -A symbol=value append " "value to symbol
02e93a22
JH
1364 -A append:symbol=value append value to symbol
1365 -A define:symbol=value define symbol to have value
02e93a22
JH
1366 -A clear:symbol define symbol to be ''
1367 -A define:symbol define symbol to be 'define'
1368 -A eval:symbol=value define symbol to be eval of value
1369 -A prepend:symbol=value prepend value to symbol
1370 -A undef:symbol define symbol to be 'undef'
1371 -A undef:symbol= define symbol to be ''
2304df62
AD
1372 -V : print version number and exit (with a zero status).
1373EOM
1374 exit 1
1375 ;;
1376esac
1377
dfe9444c
AD
1378: Sanity checks
1379case "$fastread$alldone" in
1380yescont|yesexit) ;;
1381*)
aaeb8e51
GS
1382 case "$extractsh" in
1383 true) ;;
1384 *)
1385 if test ! -t 0; then
1386 echo "Say 'sh Configure', not 'sh <Configure'"
1387 exit 1
1388 fi
1389 ;;
1390 esac
dfe9444c
AD
1391 ;;
1392esac
1393
2304df62
AD
1394exec 4>&1
1395case "$silent" in
1396true) exec 1>/dev/null;;
1397esac
1398
ecfc5424 1399: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1400touch optdef.sh
1401. ./optdef.sh
02e93a22
JH
1402: create the posthint manipulation script and leave the file out there...
1403touch posthint.sh
a0d0e21e 1404
2304df62 1405: set package name
85e6fe83 1406package=perl5
b4eb6b3d
JH
1407first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1408last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1409case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1410ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1411*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1412esac
2304df62 1413
2304df62
AD
1414: Some greps do not return status, grrr.
1415echo "grimblepritz" >grimble
1416if grep blurfldyick grimble >/dev/null 2>&1 ; then
1417 contains=contains
1418elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1419 contains=grep
1420else
1421 contains=contains
1422fi
1423rm -f grimble
1424: the following should work in any shell
1425case "$contains" in
1426contains*)
1427 echo " "
1428 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1429 cat >contains <<'EOSS'
1430grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1431EOSS
1432chmod +x contains
1433esac
1434
dfe9444c
AD
1435: Find the path to the source tree
1436case "$src" in
1437'') case "$0" in
b233458b
JH
1438 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1439 case "$src" in
1440 /*) ;;
8504afb7 1441 .) ;;
b233458b
JH
1442 *) src=`cd ../$src && pwd` ;;
1443 esac
1444 ;;
dfe9444c
AD
1445 *) src='.';;
1446 esac;;
1447esac
1448case "$src" in
1449'') src=/
1450 rsrc=/
1451 ;;
1452/*) rsrc="$src";;
1453*) rsrc="../$src";;
1454esac
1455if test -f $rsrc/Configure && \
1456 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1457then
1458 : found it, so we are ok.
1459else
1460 rsrc=''
1461 for src in . .. ../.. ../../.. ../../../..; do
1462 if test -f ../$src/Configure && \
1463 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1464 then
1465 rsrc=../$src
1466 break
1467 fi
1468 done
1469fi
1470case "$rsrc" in
1471'')
1472 cat <<EOM >&4
1473
1474Sorry, I can't seem to locate the source dir for $package. Please start
1475Configure with an explicit path -- i.e. /some/path/Configure.
1476
1477EOM
1478 exit 1
1479 ;;
1480../.) rsrc='..';;
1481*)
1482 echo " "
1483 echo "Sources for $package found in \"$src\"." >&4
1484 ;;
1485esac
1486
1487: script used to extract .SH files with variable substitutions
1488cat >extract <<'EOS'
2000072c 1489CONFIGDOTSH=true
dfe9444c
AD
1490echo "Doing variable substitutions on .SH files..."
1491if test -f $src/MANIFEST; then
f7ab18e9 1492 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1493else
1494 echo "(Looking for .SH files under the source directory.)"
1495 set x `(cd $src; find . -name "*.SH" -print)`
1496fi
1497shift
1498case $# in
14990) set x `(cd $src; echo *.SH)`; shift;;
1500esac
1501if test ! -f $src/$1; then
1502 shift
1503fi
1504mkdir_p='
1505name=$1;
1506create="";
1507while test $name; do
1508 if test ! -d "$name"; then
1509 create="$name $create";
1510 name=`echo $name | sed -e "s|^[^/]*$||"`;
1511 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1512 else
1513 name="";
1514 fi;
1515done;
1516for file in $create; do
1517 mkdir $file;
1518done
1519'
1520for file in $*; do
1521 case "$src" in
1522 ".")
1523 case "$file" in
1524 */*)
1525 dir=`expr X$file : 'X\(.*\)/'`
1526 file=`expr X$file : 'X.*/\(.*\)'`
1527 (cd $dir && . ./$file)
1528 ;;
1529 *)
1530 . ./$file
1531 ;;
1532 esac
1533 ;;
1534 *)
1535 case "$file" in
1536 */*)
1537 dir=`expr X$file : 'X\(.*\)/'`
1538 file=`expr X$file : 'X.*/\(.*\)'`
1539 (set x $dir; shift; eval $mkdir_p)
1540 sh <$src/$dir/$file
1541 ;;
1542 *)
1543 sh <$src/$file
1544 ;;
1545 esac
1546 ;;
1547 esac
1548done
1549if test -f $src/config_h.SH; then
1550 if test ! -f config.h; then
1551 : oops, they left it out of MANIFEST, probably, so do it anyway.
1552 . $src/config_h.SH
1553 fi
1554fi
1555EOS
1556
1557: extract files and exit if asked to do so
1558case "$extractsh" in
1559true)
1560 case "$realsilent" in
1561 true) ;;
1562 *) exec 1>&4;;
1563 esac
1564 case "$config_sh" in
1565 '') config_sh='config.sh';;
1566 esac
1567 echo " "
1568 echo "Fetching answers from $config_sh..."
1569 cd ..
1570 . $config_sh
1571 test "$override" && . ./optdef.sh
1572 echo " "
1573 . UU/extract
1574 rm -rf UU
1575 echo "Done."
1576 exit 0
1577 ;;
1578esac
1579
1580: Eunice requires " " instead of "", can you believe it
1581echo " "
1582: Here we go...
1583echo "Beginning of configuration questions for $package."
1584
1585trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1586
2304df62
AD
1587: first determine how to suppress newline on echo command
1588echo " "
1589echo "Checking echo to see how to suppress newlines..."
1590(echo "hi there\c" ; echo " ") >.echotmp
1591if $contains c .echotmp >/dev/null 2>&1 ; then
1592 echo "...using -n."
1593 n='-n'
1594 c=''
1595else
1596 cat <<'EOM'
1597...using \c
1598EOM
1599 n=''
1600 c='\c'
1601fi
1602echo $n "The star should be here-->$c"
1603echo '*'
1604rm -f .echotmp
1605
1606: Now test for existence of everything in MANIFEST
1607echo " "
dfe9444c 1608if test -f $rsrc/MANIFEST; then
2304df62 1609 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1610 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1611 rm -f missing
dfe9444c 1612 tmppwd=`pwd`
2304df62 1613 for filelist in x??; do
dfe9444c 1614 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1615 done
1616 if test -s missing; then
1617 cat missing >&4
1618 cat >&4 <<'EOM'
1619
1620THIS PACKAGE SEEMS TO BE INCOMPLETE.
1621
1622You have the option of continuing the configuration process, despite the
1623distinct possibility that your kit is damaged, by typing 'y'es. If you
1624do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1625and contact the author (perlbug@perl.org).
2304df62
AD
1626
1627EOM
1628 echo $n "Continue? [n] $c" >&4
1629 read ans
1630 case "$ans" in
1631 y*)
1632 echo "Continuing..." >&4
1633 rm -f missing
1634 ;;
1635 *)
1636 echo "ABORTING..." >&4
1637 kill $$
1638 ;;
1639 esac
1640 else
dfe9444c 1641 echo "Looks good..."
2304df62
AD
1642 fi
1643else
1644 echo "There is no MANIFEST file. I hope your kit is complete !"
1645fi
1646rm -f missing x??
1647
5ff3f7a4
GS
1648echo " "
1649: Find the appropriate value for a newline for tr
1650if test -n "$DJGPP"; then
1651 trnl='\012'
1652fi
1653if test X"$trnl" = X; then
1654 case "`echo foo|tr '\n' x 2>/dev/null`" in
1655 foox) trnl='\n' ;;
1656 esac
1657fi
1658if test X"$trnl" = X; then
1659 case "`echo foo|tr '\012' x 2>/dev/null`" in
1660 foox) trnl='\012' ;;
1661 esac
1662fi
1663if test X"$trnl" = X; then
1664 cat <<EOM >&2
1665
1666$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1667
1668EOM
1669 exit 1
1670fi
1671
2304df62
AD
1672: compute the number of columns on the terminal for proper question formatting
1673case "$COLUMNS" in
1674'') COLUMNS='80';;
1675esac
1676
1677: set up the echo used in my read
1678myecho="case \"\$xxxm\" in
1679'') echo $n \"\$rp $c\" >&4;;
1680*) case \"\$rp\" in
1681 '') echo $n \"[\$xxxm] $c\";;
1682 *)
1683 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1684 echo \"\$rp\" >&4
1685 echo $n \"[\$xxxm] $c\" >&4
1686 else
1687 echo $n \"\$rp [\$xxxm] $c\" >&4
1688 fi
1689 ;;
1690 esac;;
1691esac"
1692
1693: now set up to do reads with possible shell escape and default assignment
1694cat <<EOSC >myread
28757baa 1695$startsh
2304df62
AD
1696xxxm=\$dflt
1697$myecho
1698ans='!'
1699case "\$fastread" in
1700yes) case "\$dflt" in
1701 '') ;;
1702 *) ans='';
1703 case "\$silent-\$rp" in
1704 true-) ;;
1705 *) echo " " >&4;;
1706 esac;;
1707 esac;;
1708*) case "\$silent" in
1709 true) case "\$rp" in
1710 '') ans='';;
1711 esac;;
1712 esac;;
1713esac
1714while expr "X\$ans" : "X!" >/dev/null; do
1715 read answ
1716 set x \$xxxm
1717 shift
dfe9444c 1718 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1719 case "\$answ" in
dfe9444c
AD
1720 "!")
1721 sh 1>&4
1722 echo " "
1723 $myecho
1724 ;;
1725 !*)
1726 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1727 shift
1728 sh 1>&4 -c "\$*"
1729 echo " "
1730 $myecho
1731 ;;
2304df62
AD
1732 "\$ans")
1733 case "\$ans" in
ecfc5424
AD
1734 \\&*)
1735 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1736 shift
1737 case "\$1" in
1738 -d)
1739 fastread=yes
40a7a20a 1740 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1741 ;;
1742 -*)
40a7a20a 1743 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1744 ;;
1745 esac
1746 $myecho
1747 ans=!
1748 ;;
2304df62
AD
1749 esac;;
1750 *)
1751 case "\$aok" in
1752 y)
1753 echo "*** Substitution done -- please confirm."
1754 xxxm="\$ans"
c9795ab7 1755 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1756 xxxm="\$ans"
1757 ans=!
1758 ;;
1759 *)
1760 echo "*** Error -- try again."
1761 ans=!
1762 ;;
1763 esac
1764 $myecho
1765 ;;
1766 esac
1767 case "\$ans\$xxxm\$nostick" in
1768 '')
1769 ans=!
1770 $myecho
1771 ;;
1772 esac
1773done
1774case "\$ans" in
1775'') ans="\$xxxm";;
1776esac
1777EOSC
1778
1779: create .config dir to save info across Configure sessions
1780test -d ../.config || mkdir ../.config
1781cat >../.config/README <<EOF
1782This directory created by Configure to save information that should
dfe9444c 1783persist across sessions for $package.
2304df62
AD
1784
1785You may safely delete it if you wish.
1786EOF
1787
9507cadf 1788xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1789case "$usedevel" in
0107c034 1790$define|true|[yY]*) ;;
9507cadf 1791*) case "$xversion" in
0107c034
JH
1792 *[13579])
1793 cat >&4 <<EOH
1794*** WHOA THERE!!! ***
1795
1796 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1797 The version of this $package distribution is $xversion, that is, odd,
1798 (as opposed to even) and that signifies a development release.
3d5d58b1 1799 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1800
1801 Do ***NOT*** install this into production use.
1802 Data corruption and crashes are possible.
1803
1804 It is most seriously suggested that you do not continue any further
1805 unless you want to help in developing and debugging Perl.
1806
1807EOH
1808 rp='Do you really want to continue?'
1809 dflt='n'
1810 . ./myread
1811 case "$ans" in
8feeef0e
JH
1812 [yY]) echo >&4 "Okay, continuing."
1813 usedevel="$define" ;;
0107c034
JH
1814 *) echo >&4 "Okay, bye."
1815 exit 1
1816 ;;
1817 esac
1818 ;;
1819 esac
1820 ;;
1821esac
8feeef0e
JH
1822case "$usedevel" in
1823$define|true|[yY]*)
1824 case "$versiononly" in
1825 '') versiononly="$define" ;;
1826 esac
1827 case "$installusrbinperl" in
1828 '') installusrbinperl="$undef" ;;
1829 esac
1830 ;;
1831esac
0107c034 1832
2304df62
AD
1833: general instructions
1834needman=true
1835firsttime=true
760ac839 1836user=`(logname) 2>/dev/null`
dfe9444c
AD
1837case "$user" in
1838'') user=`whoami 2>&1`;;
760ac839 1839esac
2304df62
AD
1840if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1841 firsttime=false
1842 echo " "
1843 rp='Would you like to see the instructions?'
1844 dflt=n
1845 . ./myread
1846 case "$ans" in
1847 [yY]*) ;;
1848 *) needman=false;;
1849 esac
1850fi
1851if $needman; then
1852 cat <<EOH
4e2a5f63 1853
2304df62 1854This installation shell script will examine your system and ask you questions
a0d0e21e 1855to determine how the perl5 package should be installed. If you get
2304df62
AD
1856stuck on a question, you may use a ! shell escape to start a subshell or
1857execute a command. Many of the questions will have default answers in square
1858brackets; typing carriage return will give you the default.
1859
1860On some of the questions which ask for file or directory names you are allowed
1861to use the ~name construct to specify the login directory belonging to "name",
1862even if you don't have a shell which knows about that. Questions where this is
1863allowed will be marked "(~name ok)".
1864
1865EOH
1866 rp=''
1867 dflt='Type carriage return to continue'
1868 . ./myread
1869 cat <<'EOH'
1870
1871The prompter used in this script allows you to use shell variables and
1872backticks in your answers. You may use $1, $2, etc... to refer to the words
1873in the default answer, as if the default line was a set of arguments given to a
1874script shell. This means you may also use $* to repeat the whole default line,
1875so you do not have to re-type everything to add something to the default.
1876
1877Everytime there is a substitution, you will have to confirm. If there is an
1878error (e.g. an unmatched backtick), the default answer will remain unchanged
1879and you will be prompted again.
1880
1881If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1882the questions and use the computed defaults (or the previous answers if there
1883was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1884You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1885on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1886
1887EOH
1888 . ./myread
1889 cat <<EOH
1890
1891Much effort has been expended to ensure that this shell script will run on any
1892Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1893Configure and run it again. If you can't run Configure for some reason,
1894you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1895have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1896
1897This installation script affects things in two ways:
1898
18991) it may do direct variable substitutions on some of the files included
1900 in this kit.
19012) it builds a config.h file for inclusion in C programs. You may edit
1902 any of these files as the need arises after running this script.
1903
1904If you make a mistake on a question, there is no easy way to back up to it
1905currently. The easiest thing to do is to edit config.sh and rerun all the SH
1906files. Configure will offer to let you do this before it runs the SH files.
1907
1908EOH
1909 dflt='Type carriage return to continue'
1910 . ./myread
1911 case "$firsttime" in
1912 true) echo $user >>../.config/instruct;;
1913 esac
1914fi
1915
2304df62
AD
1916: find out where common programs are
1917echo " "
1918echo "Locating common programs..." >&4
1919cat <<EOSC >loc
1920$startsh
1921case \$# in
19220) exit 1;;
1923esac
1924thing=\$1
1925shift
1926dflt=\$1
1927shift
1928for dir in \$*; do
1929 case "\$thing" in
1930 .)
1931 if test -d \$dir/\$thing; then
1932 echo \$dir
1933 exit 0
1934 fi
1935 ;;
1936 *)
a0d0e21e 1937 for thisthing in \$dir/\$thing; do
ecfc5424 1938 : just loop through to pick last item
a0d0e21e 1939 done
25f94b33 1940 if test -f \$thisthing; then
a0d0e21e 1941 echo \$thisthing
2304df62
AD
1942 exit 0
1943 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1944 if test -n "$DJGPP"; then
1945 echo \$dir/\$thing.exe
1946 else
1947 : on Eunice apparently
1948 echo \$dir/\$thing
1949 fi
2304df62
AD
1950 exit 0
1951 fi
1952 ;;
1953 esac
1954done
1955echo \$dflt
1956exit 1
1957EOSC
1958chmod +x loc
1959$eunicefix loc
1960loclist="
1961awk
1962cat
b4eb6b3d
JH
1963comm
1964cp
2304df62
AD
1965echo
1966expr
1967grep
a0d0e21e 1968ls
dfe9444c 1969make
b4eb6b3d 1970mkdir
2304df62
AD
1971rm
1972sed
b4eb6b3d 1973sort
85e6fe83 1974touch
2304df62 1975tr
b4eb6b3d 1976uniq
2304df62
AD
1977"
1978trylist="
1979Mcc
dfe9444c 1980ar
3659ebf1 1981bison
b4eb6b3d 1982byacc
2304df62 1983cpp
b4eb6b3d 1984csh
2304df62
AD
1985date
1986egrep
8ff267be 1987gzip
b4eb6b3d 1988less
8ff267be 1989ln
b4eb6b3d 1990more
693762b4 1991nm
b4eb6b3d
JH
1992nroff
1993pg
2304df62
AD
1994test
1995uname
8ff267be 1996zip
2304df62 1997"
8e07c86e 1998pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1999pth="$pth /lib /usr/lib"
2000for file in $loclist; do
dfe9444c
AD
2001 eval xxx=\$$file
2002 case "$xxx" in
2003 /*|?:[\\/]*)
2004 if test -f "$xxx"; then
2005 : ok
2006 else
2007 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2008 xxx=`./loc $file $file $pth`
2009 fi
2010 ;;
2011 '') xxx=`./loc $file $file $pth`;;
2012 *) xxx=`./loc $xxx $xxx $pth`;;
2013 esac
2304df62
AD
2014 eval $file=$xxx
2015 eval _$file=$xxx
2016 case "$xxx" in
2017 /*)
2018 echo $file is in $xxx.
2019 ;;
8e07c86e
AD
2020 ?:[\\/]*)
2021 echo $file is in $xxx.
2022 ;;
2304df62 2023 *)
25f94b33
AD
2024 echo "I don't know where '$file' is, and my life depends on it." >&4
2025 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2026 exit 1
2304df62
AD
2027 ;;
2028 esac
2029done
2030echo " "
2031echo "Don't worry if any of the following aren't found..."
2032say=offhand
2033for file in $trylist; do
dfe9444c
AD
2034 eval xxx=\$$file
2035 case "$xxx" in
2036 /*|?:[\\/]*)
2037 if test -f "$xxx"; then
2038 : ok
2039 else
2040 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2041 xxx=`./loc $file $file $pth`
2042 fi
2043 ;;
2044 '') xxx=`./loc $file $file $pth`;;
2045 *) xxx=`./loc $xxx $xxx $pth`;;
2046 esac
2304df62
AD
2047 eval $file=$xxx
2048 eval _$file=$xxx
2049 case "$xxx" in
2050 /*)
2051 echo $file is in $xxx.
2052 ;;
8e07c86e
AD
2053 ?:[\\/]*)
2054 echo $file is in $xxx.
2055 ;;
2304df62
AD
2056 *)
2057 echo "I don't see $file out there, $say."
2058 say=either
2059 ;;
2060 esac
2061done
2062case "$egrep" in
2063egrep)
2064 echo "Substituting grep for egrep."
2065 egrep=$grep
2066 ;;
2067esac
8ff267be 2068case "$ln" in
2069ln)
2070 echo "Substituting cp for ln."
2071 ln=$cp
2072 ;;
2073esac
2304df62
AD
2074case "$test" in
2075test)
2076 echo "Hopefully test is built into your sh."
2077 ;;
2078*)
73614538 2079 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2080 echo "Using the test built into your sh."
2304df62
AD
2081 test=test
2082 _test=test
2083 fi
2084 ;;
2085esac
2086case "$echo" in
2087echo)
2088 echo "Hopefully echo is built into your sh."
2089 ;;
2090'') ;;
2091*)
2092 echo " "
2093echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2094 $echo $n "hi there$c" >foo1
2095 echo $n "hi there$c" >foo2
2096 if cmp foo1 foo2 >/dev/null 2>&1; then
2097 echo "They are compatible. In fact, they may be identical."
2098 else
2099 case "$n" in
2100 '-n') n='' c='\c';;
2101 *) n='-n' c='';;
2102 esac
2103 cat <<FOO
2104They are not compatible! You are probably running ksh on a non-USG system.
2105I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2106have echo built in and we may have to run some Bourne shell scripts. That
2107means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2108
2109FOO
2110 $echo $n "The star should be here-->$c"
2111 $echo "*"
2112 fi
2113 $rm -f foo1 foo2
2114 ;;
2115esac
2116
2573c5f9
JH
2117cat <<EOS >checkcc
2118$startsh
2119EOS
2120cat <<'EOSC' >>checkcc
2121case "$cc" in
2122'') ;;
2123*) $rm -f try try.*
2124 $cat >try.c <<EOM
2125int main(int argc, char *argv[]) {
2126 return 0;
2127}
2128EOM
7a282f6d 2129 if $cc -o try $ccflags try.c; then
2573c5f9
JH
2130 :
2131 else
2132 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2133 despair=yes
2134 trygcc=yes
2135 case "$cc" in
2136 *gcc*) trygcc=no ;;
2137 esac
2138 case "`$cc -v -c try.c 2>&1`" in
2139 *gcc*) trygcc=no ;;
2140 esac
2141 if $test X"$trygcc" = Xyes; then
2142 if gcc -o try -c try.c; then
2143 echo " "
2144 echo "You seem to have a working gcc, though." >&4
2145 rp="Would you like to use it?"
2146 dflt=y
2147 if $test -f myread; then
2148 . ./myread
2149 else
2150 if $test -f UU/myread; then
2151 . ./UU/myread
2152 else
2153 echo "Cannot find myread, sorry. Aborting." >&2
2154 exit 1
2155 fi
2156 fi
2157 case "$ans" in
e723fc21 2158 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2159 esac
2160 fi
2161 fi
2162 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2163 $cat >&4 <<EOM
2164You need to find a working C compiler.
2165Either (purchase and) install the C compiler supplied by your OS vendor,
2166or for a free C compiler try http://gcc.gnu.org/
2167I cannot continue any further, aborting.
2168EOM
2573c5f9
JH
2169 exit 1
2170 fi
2171 fi
2172 $rm -f try try.*
2173 ;;
2174esac
2175EOSC
2176
a0d0e21e
LW
2177: determine whether symbolic links are supported
2178echo " "
2179$touch blurfl
2180if $ln -s blurfl sym > /dev/null 2>&1 ; then
2181 echo "Symbolic links are supported." >&4
2182 lns="$ln -s"
2183else
2184 echo "Symbolic links are NOT supported." >&4
2185 lns="$ln"
2186fi
2187$rm -f blurfl sym
2188
dafca956
JH
2189: determine whether symbolic links are supported
2190echo " "
2191case "$lns" in
2192*"ln -s")
2193 echo "Checking how to test for symbolic links..." >&4
2194 $lns blurfl sym
4b661809 2195 if $test "X$issymlink" = X; then
73614538 2196 sh -c "PATH= test -h sym" >/dev/null 2>&1
5d644a95
MB
2197 if test $? = 0; then
2198 issymlink="test -h"
2199 fi
2200 fi
2201 if $test "X$issymlink" = X; then
73614538 2202 if $test -h >/dev/null 2>&1; then
5d644a95
MB
2203 issymlink="$test -h"
2204 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2205 fi
dafca956 2206 fi
4b661809 2207 if $test "X$issymlink" = X; then
dafca956 2208 if $test -L sym 2>/dev/null; then
5d644a95 2209 issymlink="$test -L"
dafca956
JH
2210 fi
2211 fi
4b661809 2212 if $test "X$issymlink" != X; then
5d644a95 2213 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2214 else
2215 echo "I do not know how you can test for symbolic links." >&4
2216 fi
2217 $rm -f blurfl sym
2218 ;;
2219*) echo "No symbolic links, so not testing for their testing..." >&4
2220 ;;
2221esac
2222echo " "
2223
2224
2225case "$mksymlinks" in
2226$define|true|[yY]*)
2227 case "$src" in
2228 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2229 exit 1
2230 ;;
4b661809 2231 *) case "$lns:$issymlink" in
7a800fca 2232 *"ln -s:"*"test -"?)
dafca956
JH
2233 echo "Creating the symbolic links..." >&4
2234 echo "(First creating the subdirectories...)" >&4
2235 cd ..
2236 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2237 read directory
2238 test -z "$directory" && break
2239 mkdir -p $directory
2240 done
2241 # Sanity check 1.
2242 if test ! -d t/base; then
2243 echo "Failed to create the subdirectories. Aborting." >&4
2244 exit 1
2245 fi
2246 echo "(Then creating the symlinks...)" >&4
2247 awk '{print $1}' $src/MANIFEST | while true; do
2248 read filename
2249 test -z "$filename" && break
2250 if test -f $filename; then
5d644a95 2251 if $issymlink $filename; then
dafca956
JH
2252 rm -f $filename
2253 fi
2254 fi
2255 if test -f $filename; then
2256 echo "$filename already exists, not symlinking."
2257 else
2258 ln -s $src/$filename $filename
2259 fi
2260 done
2261 # Sanity check 2.
2262 if test ! -f t/base/commonsense.t; then
2263 echo "Failed to create the symlinks. Aborting." >&4
2264 exit 1
2265 fi
2266 cd UU
2267 ;;
2268 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2269 ;;
2270 esac
2271 ;;
2272 esac
2273 ;;
2274esac
2275
ecfc5424
AD
2276: see whether [:lower:] and [:upper:] are supported character classes
2277echo " "
ecfc5424
AD
2278case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2279ABYZ)
2280 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2281 up='[:upper:]'
2282 low='[:lower:]'
2283 ;;
28e8609d
JH
2284*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2285 # (0xc9 and 0xd1), therefore that is a nice testing point.
2286 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2287 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2288 ij) up='[A-Z]'
2289 low='[a-z]'
2290 ;;
2291 esac
2292 fi
2293 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2294 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2295 ij) up='A-Z'
2296 low='a-z'
2297 ;;
2298 esac
2299 fi
2300 if test "X$up" = X -o "X$low" = X; then
2301 case "`echo IJ | od -x 2>/dev/null`" in
2302 *C9D1*|*c9d1*)
2303 echo "Hey, this might be EBCDIC." >&4
2304 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2305 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2306 ij) up='[A-IJ-RS-Z]'
2307 low='[a-ij-rs-z]'
2308 ;;
2309 esac
2310 fi
2311 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2312 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2313 ij) up='A-IJ-RS-Z'
2314 low='a-ij-rs-z'
2315 ;;
2316 esac
2317 fi
2318 ;;
2319 esac
2320 fi
2321esac
3eaeeeae 2322case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2323ij)
2324 echo "Using $up and $low to convert case." >&4
2325 ;;
ecfc5424 2326*)
28e8609d
JH
2327 echo "I don't know how to translate letters from upper to lower case." >&4
2328 echo "Your tr is not acting any way I know of." >&4
2329 exit 1
2330 ;;
ecfc5424
AD
2331esac
2332: set up the translation script tr, must be called with ./tr of course
2333cat >tr <<EOSC
2334$startsh
2335case "\$1\$2" in
2336'[A-Z][a-z]') exec $tr '$up' '$low';;
2337'[a-z][A-Z]') exec $tr '$low' '$up';;
2338esac
2339exec $tr "\$@"
2340EOSC
2341chmod +x tr
2342$eunicefix tr
2343
2304df62
AD
2344: Try to determine whether config.sh was made on this system
2345case "$config_sh" in
2346'')
43999f95
JH
2347myuname=`$uname -a 2>/dev/null`
2348$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2349# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2350# because the A-Z/a-z are not consecutive.
a0d0e21e 2351myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2352 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2353newmyuname="$myuname"
2304df62 2354dflt=n
16d20bd9
AD
2355case "$knowitall" in
2356'')
2357 if test -f ../config.sh; then
2358 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2359 eval "`grep myuname= ../config.sh`"
2360 fi
2361 if test "X$myuname" = "X$newmyuname"; then
2362 dflt=y
2363 fi
2304df62 2364 fi
16d20bd9
AD
2365 ;;
2366*) dflt=y;;
2367esac
2304df62
AD
2368
2369: Get old answers from old config file if Configure was run on the
2370: same system, otherwise use the hints.
2371hint=default
2372cd ..
2373if test -f config.sh; then
16d20bd9
AD
2374 echo " "
2375 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2376 . UU/myread
2377 case "$ans" in
f83701cd
AD
2378 n*|N*) echo "OK, I'll ignore it."
2379 mv config.sh config.sh.old
2380 myuname="$newmyuname"
2381 ;;
2304df62 2382 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2383 tmp_n="$n"
2384 tmp_c="$c"
85cad39c 2385 tmp_sh="$sh"
2304df62
AD
2386 . ./config.sh
2387 cp config.sh UU
ecfc5424
AD
2388 n="$tmp_n"
2389 c="$tmp_c"
85cad39c 2390 : Older versions did not always set $sh. Catch re-use of such
2391 : an old config.sh.
2392 case "$sh" in
2393 '') sh="$tmp_sh" ;;
2394 esac
2304df62
AD
2395 hint=previous
2396 ;;
2397 esac
2398fi
2573c5f9 2399. ./UU/checkcc
2304df62
AD
2400if test ! -f config.sh; then
2401 $cat <<EOM
2402
4e2a5f63
AD
2403First time through, eh? I have some defaults handy for some systems
2404that need some extra help getting the Configure answers right:
2304df62
AD
2405
2406EOM
dfe9444c 2407 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2408 dflt=''
2409 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2410 : tests or hints, please send them to perlbug@perl.org
2304df62 2411 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2412 $test -f /irix && osname=irix
85e6fe83
LW
2413 $test -f /xenix && osname=sco_xenix
2414 $test -f /dynix && osname=dynix
2415 $test -f /dnix && osname=dnix
5f05dabc 2416 $test -f /lynx.os && osname=lynxos
2417 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2418 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2419 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2420 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2421 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2422 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2423 $test -d /usr/apollo/bin && osname=apollo
2424 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2425 $test -d /usr/include/minix && osname=minix
e060872b 2426 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2427 osname=machten
4633a7c4 2428 if $test -x /sbin/version; then
dfe9444c 2429 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2430 $sed -e 's/[A-Za-z]$//'`
2431 elif $test -x /usr/etc/version; then
dfe9444c 2432 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2433 $sed -e 's/[A-Za-z]$//'`
2434 else
2435 osvers="$2.$3"
2436 fi
2437 fi
aaacdc8b
GS
2438
2439 $test -f /sys/posix.dll &&
2440 $test -f /usr/bin/what &&
2441 set X `/usr/bin/what /sys/posix.dll` &&
2442 $test "$3" = UWIN &&
2443 osname=uwin &&
2444 osvers="$5"
2445
2304df62
AD
2446 if $test -f $uname; then
2447 set X $myuname
2448 shift
2449
2304df62 2450 case "$5" in
85e6fe83 2451 fps*) osname=fps ;;
2304df62
AD
2452 mips*)
2453 case "$4" in
85e6fe83
LW
2454 umips) osname=umips ;;
2455 *) osname=mips ;;
2304df62 2456 esac;;
85e6fe83
LW
2457 [23]100) osname=mips ;;
2458 next*) osname=next ;;
ecfc5424 2459 i386*)
c6912327
JH
2460 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2461 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2462 osname='sco'
2463 osvers=$tmp
2464 elif $test -f /etc/kconfig; then
ecfc5424 2465 osname=isc
bd628c73 2466 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2467 osvers=4
2468 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2469 osvers=3
2304df62 2470 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2471 osvers=2
ecfc5424
AD
2472 fi
2473 fi
2000072c 2474 tmp=''
ecfc5424 2475 ;;
c4f23d77
AD
2476 pc*)
2477 if test -n "$DJGPP"; then
2478 osname=dos
2479 osvers=djgpp
2480 fi
2481 ;;
2304df62
AD
2482 esac
2483
2484 case "$1" in
a0d0e21e
LW
2485 aix) osname=aix
2486 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2487 case "$tmp" in
1aef975c 2488 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2489 '<3240'|'<>3240') osvers=3.2.0 ;;
2490 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2491 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2492 *) osvers=$tmp;;
a0d0e21e
LW
2493 esac
2494 ;;
aaacdc8b
GS
2495 bsd386) osname=bsd386
2496 osvers=`$uname -r`
2497 ;;
2498 cygwin*) osname=cygwin
2499 osvers="$3"
2500 ;;
23f87696
SZ
2501 *dc.osx) osname=dcosx
2502 osvers="$3"
2503 ;;
a0d0e21e
LW
2504 dnix) osname=dnix
2505 osvers="$3"
2506 ;;
2507 domainos) osname=apollo
2508 osvers="$3"
2509 ;;
2510 dgux) osname=dgux
2511 osvers="$3"
2512 ;;
760ac839 2513 dynixptx*) osname=dynixptx
e58e581d 2514 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2515 ;;
a0d0e21e
LW
2516 freebsd) osname=freebsd
2517 osvers="$3" ;;
2518 genix) osname=genix ;;
2519 hp*) osname=hpux
bfb7748a 2520 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2521 ;;
a78b0d02 2522 irix*) osname=irix
a0d0e21e
LW
2523 case "$3" in
2524 4*) osvers=4 ;;
2525 5*) osvers=5 ;;
ecfc5424 2526 *) osvers="$3" ;;
a0d0e21e
LW
2527 esac
2528 ;;
2529 linux) osname=linux
2530 case "$3" in
a0d0e21e
LW
2531 *) osvers="$3" ;;
2532 esac
2533 ;;
28e8609d
JH
2534 MiNT) osname=mint
2535 ;;
2536 netbsd*) osname=netbsd
ecfc5424
AD
2537 osvers="$3"
2538 ;;
4e81affe
MM
2539 news-os) osvers="$3"
2540 case "$3" in
2541 4*) osname=newsos4 ;;
2542 *) osname=newsos ;;
2543 esac
2544 ;;
aaacdc8b 2545 next*) osname=next ;;
28bb1e2c 2546 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2547 POSIX-BC | posix-bc ) osname=posix-bc
2548 osvers="$3"
a0d0e21e 2549 ;;
ae3afa4e
TH
2550 powerux | power_ux | powermax_os | powermaxos | \
2551 powerunix | power_unix) osname=powerux
2552 osvers="$3"
2553 ;;
aaacdc8b
GS
2554 qnx) osname=qnx
2555 osvers="$4"
2556 ;;
a0d0e21e
LW
2557 solaris) osname=solaris
2558 case "$3" in
2559 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2560 *) osvers="$3" ;;
a0d0e21e
LW
2561 esac
2562 ;;
85e6fe83
LW
2563 sunos) osname=sunos
2564 case "$3" in
85e6fe83
LW
2565 5*) osname=solaris
2566 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2567 *) osvers="$3" ;;
2304df62
AD
2568 esac
2569 ;;
a0d0e21e 2570 titanos) osname=titanos
85e6fe83 2571 case "$3" in
a0d0e21e
LW
2572 1*) osvers=1 ;;
2573 2*) osvers=2 ;;
2574 3*) osvers=3 ;;
2575 4*) osvers=4 ;;
ecfc5424 2576 *) osvers="$3" ;;
2304df62
AD
2577 esac
2578 ;;
85e6fe83 2579 ultrix) osname=ultrix
ecfc5424 2580 osvers="$3"
2304df62 2581 ;;
28757baa 2582 osf1|mls+) case "$5" in
fed7345c
AD
2583 alpha)
2584 osname=dec_osf
2aa76180
JH
2585 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2586 case "$osvers" in
2587 [1-9].[0-9]*) ;;
2588 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2589 esac
ecfc5424
AD
2590 ;;
2591 hp*) osname=hp_osf1 ;;
2592 mips) osname=mips_osf1 ;;
85e6fe83
LW
2593 esac
2594 ;;
0337d152
BG
2595 unixware) osname=svr5
2596 osvers="$4"
2597 ;;
2598 uts) osname=uts
a0d0e21e
LW
2599 osvers="$3"
2600 ;;
85e6fe83 2601 $2) case "$osname" in
2304df62 2602 *isc*) ;;
a0d0e21e 2603 *freebsd*) ;;
5f05dabc 2604 svr*)
a0d0e21e
LW
2605 : svr4.x or possibly later
2606 case "svr$3" in
2607 ${osname}*)
2608 osname=svr$3
2609 osvers=$4
2610 ;;
2611 esac
2612 case "$osname" in
2613 svr4.0)
2614 : Check for ESIX
2615 if test -f /stand/boot ; then
2616 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2617 if test -n "$INITPROG" -a -f "$INITPROG"; then
2618 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2619 if test -n "$isesix"; then
a0d0e21e
LW
2620 osname=esix4
2621 fi
2622 fi
2623 fi
2624 ;;
2625 esac
2626 ;;
2304df62 2627 *) if test -f /etc/systemid; then
a0d0e21e
LW
2628 osname=sco
2629 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2630 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2631 osvers=$1.$2.$3
c4f23d77 2632 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2633 osvers=$1.$2
c4f23d77 2634 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2635 osvers=$1
2304df62 2636 fi
a0d0e21e
LW
2637 else
2638 case "$osname" in
2639 '') : Still unknown. Probably a generic Sys V.
2640 osname="sysv"
2641 osvers="$3"
2642 ;;
2643 esac
2304df62
AD
2644 fi
2645 ;;
2646 esac
2647 ;;
a0d0e21e
LW
2648 *) case "$osname" in
2649 '') : Still unknown. Probably a generic BSD.
2650 osname="$1"
2651 osvers="$3"
2652 ;;
2653 esac
2654 ;;
2304df62
AD
2655 esac
2656 else
dfe9444c
AD
2657 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2658 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2659 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2660 osname=news_os
2304df62 2661 fi
dfe9444c 2662 $rm -f UU/kernel.what
8e07c86e
AD
2663 elif test -d c:/.; then
2664 set X $myuname
2665 osname=os2
2666 osvers="$5"
2304df62
AD
2667 fi
2668 fi
85e6fe83 2669
a0d0e21e
LW
2670 : Now look for a hint file osname_osvers, unless one has been
2671 : specified already.
2672 case "$hintfile" in
2673 ''|' ')
1e127011 2674 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2675 : Also try without trailing minor version numbers.
1e127011
DD
2676 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2677 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2678 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2679 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2680 case "$file" in
2681 '') dflt=none ;;
2682 *) case "$osvers" in
2683 '') dflt=$file
2684 ;;
dfe9444c 2685 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2686 dflt=$file
dfe9444c 2687 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2688 dflt=$xfile
dfe9444c 2689 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2690 dflt=$xxfile
dfe9444c 2691 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2692 dflt=$xxxfile
dfe9444c 2693 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2694 dflt=$xxxxfile
dfe9444c 2695 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2696 dflt="${osname}"
2697 else
2698 dflt=none
2699 fi
2700 ;;
2701 esac
85e6fe83
LW
2702 ;;
2703 esac
4e2a5f63
AD
2704 if $test -f Policy.sh ; then
2705 case "$dflt" in
2706 *Policy*) ;;
2707 none) dflt="Policy" ;;
2708 *) dflt="Policy $dflt" ;;
2709 esac
2710 fi
85e6fe83 2711 ;;
a0d0e21e 2712 *)
ecfc5424 2713 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2714 ;;
2304df62 2715 esac
1aef975c 2716
4e2a5f63
AD
2717 if $test -f Policy.sh ; then
2718 $cat <<EOM
2719
2720There's also a Policy hint file available, which should make the
2721site-specific (policy) questions easier to answer.
2722EOM
2723
2724 fi
2725
2304df62
AD
2726 $cat <<EOM
2727
2728You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2729A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2730is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2731
2732EOM
4e2a5f63 2733
2304df62 2734 rp="Which of these apply, if any?"
dfe9444c 2735 . UU/myread
85e6fe83
LW
2736 tans=$ans
2737 for file in $tans; do
4e2a5f63
AD
2738 if $test X$file = XPolicy -a -f Policy.sh; then
2739 . Policy.sh
2740 $cat Policy.sh >> UU/config.sh
2741 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2742 . $src/hints/$file.sh
2743 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2744 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2745 : nothing
2746 else
85e6fe83
LW
2747 : Give one chance to correct a possible typo.
2748 echo "$file.sh does not exist"
2749 dflt=$file
2750 rp="hint to use instead?"
dfe9444c 2751 . UU/myread
85e6fe83 2752 for file in $ans; do
dfe9444c
AD
2753 if $test -f "$src/hints/$file.sh"; then
2754 . $src/hints/$file.sh
2755 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2756 elif $test X$ans = X -o X$ans = Xnone ; then
2757 : nothing
2758 else
2759 echo "$file.sh does not exist -- ignored."
2760 fi
2761 done
2304df62
AD
2762 fi
2763 done
85e6fe83 2764
2304df62 2765 hint=recommended
85e6fe83 2766 : Remember our hint file for later.
dfe9444c 2767 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2768 hintfile="$file"
85e6fe83 2769 else
a0d0e21e 2770 hintfile=''
85e6fe83 2771 fi
2304df62
AD
2772fi
2773cd UU
2774;;
2775*)
2776 echo " "
2777 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2778 tmp_n="$n"
2779 tmp_c="$c"
2304df62
AD
2780 cd ..
2781 cp $config_sh config.sh 2>/dev/null
a78b0d02 2782 chmod +w config.sh
2304df62
AD
2783 . ./config.sh
2784 cd UU
2785 cp ../config.sh .
ecfc5424
AD
2786 n="$tmp_n"
2787 c="$tmp_c"
2304df62
AD
2788 hint=previous
2789 ;;
2790esac
1aef975c 2791test "$override" && . ./optdef.sh
2304df62
AD
2792
2793: Restore computed paths
2794for file in $loclist $trylist; do
2795 eval $file="\$_$file"
2796done
2797
85e6fe83 2798cat << EOM
a0d0e21e 2799
85e6fe83 2800Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2801The default value is probably right if the name rings a bell. Otherwise,
2802since spelling matters for me, either accept the default or answer "none"
2803to leave it blank.
a0d0e21e 2804
85e6fe83 2805EOM
85e6fe83 2806case "$osname" in
a0d0e21e 2807 ''|' ')
85e6fe83 2808 case "$hintfile" in
a0d0e21e 2809 ''|' '|none) dflt=none ;;
ecfc5424 2810 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2811 esac
2812 ;;
2813 *) dflt="$osname" ;;
2814esac
2815rp="Operating system name?"
2816. ./myread
2817case "$ans" in
ecfc5424
AD
2818none) osname='' ;;
2819*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2820esac
8ff267be 2821echo " "
2822case "$osvers" in
2823 ''|' ')
2824 case "$hintfile" in
2825 ''|' '|none) dflt=none ;;
2826 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2827 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2828 case "$dflt" in
2829 ''|' ') dflt=none ;;
2830 esac
2831 ;;
2832 esac
2833 ;;
2834 *) dflt="$osvers" ;;
2835esac
2836rp="Operating system version?"
2837. ./myread
2838case "$ans" in
2839none) osvers='' ;;
2840*) osvers="$ans" ;;
2841esac
2842
02e93a22
JH
2843
2844. ./posthint.sh
2845
2304df62 2846: who configured the system
59b83a6f 2847cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2848cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2849case "$cf_by" in
2850"")
8ff267be 2851 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2852 case "$cf_by" in
2853 "") cf_by=unknown ;;
8ff267be 2854 esac ;;
2855esac
2304df62 2856
b4eb6b3d
JH
2857: set up the script used to warn in case of inconsistency
2858cat <<EOS >whoa
2859$startsh
2860EOS
2861cat <<'EOSC' >>whoa
2862dflt=y
2863echo " "
2864echo "*** WHOA THERE!!! ***" >&4
2865echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2866rp=" Keep the $hint value?"
2867. ./myread
2868case "$ans" in
2869y) td=$was; tu=$was;;
2870esac
2871EOSC
2872
2873: function used to set $1 to $val
2874setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2875case "$val$was" in
2876$define$undef) . ./whoa; eval "$var=\$td";;
2877$undef$define) . ./whoa; eval "$var=\$tu";;
2878*) eval "$var=$val";;
2879esac'
2880
2881case "$usethreads" in
2882$define|true|[yY]*) dflt='y';;
2883*) dflt='n';;
2884esac
2885cat <<EOM
2886
2887Perl can be built to take advantage of threads on some systems.
2888To do so, Configure can be run with -Dusethreads.
2889
2890Note that threading is a highly experimental feature, and
2891some known race conditions still remain. If you choose to try
2892it, be very sure to not actually deploy it for production
2893purposes. README.threads has more details, and is required
2894reading if you enable threads.
2895
2896If this doesn't make any sense to you, just accept the default '$dflt'.
2897EOM
2898rp='Build a threading Perl?'
2899. ./myread
2900case "$ans" in
2901y|Y) val="$define" ;;
2902*) val="$undef" ;;
2903esac
2904set usethreads
2905eval $setvar
2906
2907case "$usethreads" in
2908$define)
2909 $cat <<EOM
2910
2911As of 5.5.640, Perl has two different internal threading implementations,
2912the 5.005 version (5005threads) and an interpreter-based version
2913(ithreads) that has one interpreter per thread. Both are very
2914experimental. This arrangement exists to help developers work out
2915which one is better.
2916
2917If you're a casual user, you probably don't want interpreter-threads
2918at this time. There doesn't yet exist a way to create threads from
2919within Perl in this model, i.e., "use Thread;" will NOT work.
2920EOM
2921 : Default to ithreads unless overridden on command line or with
2922 : old config.sh
2923 dflt='y'
2924 case "$use5005threads" in
2925 $define|true|[yY]*) dflt='n';;
2926 esac
2927 case "$useithreads" in
2928 $undef|false|[nN]*) dflt='n';;
2929 esac
2930 rp='Use interpreter-based ithreads?'
2931 . ./myread
2932 case "$ans" in
2933 y|Y) val="$define" ;;
2934 *) val="$undef" ;;
2935 esac
2936 set useithreads
2937 eval $setvar
2938 : Now set use5005threads to the opposite value.
2939 case "$useithreads" in
2940 $define) val="$undef" ;;
2941 *) val="$define" ;;
2942 esac
2943 set use5005threads
2944 eval $setvar
2945 ;;
2946*)
2947 useithreads="$undef"
2948 use5005threads="$undef"
2949 ;;
2950esac
2951
c915ce7f
JH
2952case "$useithreads$use5005threads" in
2953"$define$define")
2954 $cat >&4 <<EOM
2955
2956You cannot have both the ithreads and the 5.005 threads enabled
2957at the same time. Disabling the 5.005 threads since they are
2958much less stable than the ithreads.
2959
2960EOM
2961 use5005threads="$undef"
2962 ;;
2963esac
2964
b4eb6b3d
JH
2965case "$d_oldpthreads" in
2966'') : Configure tests would be welcome here. For now, assume undef.
2967 val="$undef" ;;
2968*) val="$d_oldpthreads" ;;
2969esac
2970set d_oldpthreads
2971eval $setvar
2972
2973
2974case "$usethreads" in
2975"$define"|true|[yY]*)
2976: Look for a hint-file generated 'call-back-unit'. If the
2977: user has specified that a threading perl is to be built,
2978: we may need to set or change some other defaults.
2979 if $test -f usethreads.cbu; then
2980 echo "Your platform has some specific hints for threaded builds, using them..."
2981 . ./usethreads.cbu
2982 else
2983 $cat <<EOM
2984(Your platform doesn't have any specific hints for threaded builds.
2985 Assuming POSIX threads, then.)
2986EOM
2987 fi
2988 ;;
2989esac
2990
2991cat <<EOM
2992
2993Perl can be built so that multiple Perl interpreters can coexist
2994within the same Perl executable.
2995EOM
2996
2997case "$useithreads" in
2998$define)
2999 cat <<EOM
3000This multiple interpreter support is required for interpreter-based threads.
3001EOM
3002 val="$define"
3003 ;;
3004*) case "$usemultiplicity" in
3005 $define|true|[yY]*) dflt='y';;
3006 *) dflt='n';;
3007 esac
3008 echo " "
3009 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3010 rp='Build Perl for multiplicity?'
3011 . ./myread
3012 case "$ans" in
3013 y|Y) val="$define" ;;
3014 *) val="$undef" ;;
3015 esac
3016 ;;
3017esac
3018set usemultiplicity
3019eval $setvar
3020
e5e20432
JH
3021: make some quick guesses about what we are up against
3022echo " "
3023$echo $n "Hmm... $c"
3024echo exit 1 >bsd
3025echo exit 1 >usg
3026echo exit 1 >v7
3027echo exit 1 >osf1
3028echo exit 1 >eunice
3029echo exit 1 >xenix
3030echo exit 1 >venix
3031echo exit 1 >os2
3032d_bsd="$undef"
3033$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3034if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3035then
3036 echo "Looks kind of like an OSF/1 system, but we'll see..."
3037 echo exit 0 >osf1
381aa1ff 3038elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3039 xxx=`./loc addbib blurfl $pth`
3040 if $test -f $xxx; then
3041 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3042 echo exit 0 >bsd
3043 echo exit 0 >usg
3044 else
3045 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3046 echo "Looks kind of like an extended USG system, but we'll see..."
3047 else
3048 echo "Looks kind of like a USG system, but we'll see..."
3049 fi
3050 echo exit 0 >usg
3051 fi
3052elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3053 echo "Looks kind of like a BSD system, but we'll see..."
3054 d_bsd="$define"
3055 echo exit 0 >bsd
3056else
3057 echo "Looks kind of like a Version 7 system, but we'll see..."
3058 echo exit 0 >v7
3059fi
3060case "$eunicefix" in
3061*unixtovms*)
3062 $cat <<'EOI'
3063There is, however, a strange, musty smell in the air that reminds me of
3064something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3065EOI
3066 echo exit 0 >eunice
3067 d_eunice="$define"
3068: it so happens the Eunice I know will not run shell scripts in Unix format
3069 ;;
3070*)
3071 echo " "
3072 echo "Congratulations. You aren't running Eunice."
3073 d_eunice="$undef"
3074 ;;
3075esac
3076: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3077: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3078: semicolon as a patch separator
e5e20432
JH
3079case "$p_" in
3080:) ;;
3081*)
3082 $cat <<'EOI'
3083I have the feeling something is not exactly right, however...don't tell me...
3084lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3085(Or you may be running DOS with DJGPP.)
e5e20432
JH
3086EOI
3087 echo exit 0 >os2
3088 ;;
3089esac
3090if test -f /xenix; then
3091 echo "Actually, this looks more like a XENIX system..."
3092 echo exit 0 >xenix
3093 d_xenix="$define"
3094else
3095 echo " "
3096 echo "It's not Xenix..."
3097 d_xenix="$undef"
3098fi
3099chmod +x xenix
3100$eunicefix xenix
3101if test -f /venix; then
3102 echo "Actually, this looks more like a VENIX system..."
3103 echo exit 0 >venix
3104else
3105 echo " "
3106 if ./xenix; then
3107 : null
3108 else
3109 echo "Nor is it Venix..."
3110 fi
3111fi
3112chmod +x bsd usg v7 osf1 eunice xenix venix os2
3113$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3114$rm -f foo
3115
5869b1f1
JH
3116case "$cc" in
3117'') dflt=cc;;
3118*) dflt="$cc";;
3119esac
3120rp="Use which C compiler?"
3121. ./myread
3122cc="$ans"
e5e20432
JH
3123: Look for a hint-file generated 'call-back-unit'. Now that the
3124: user has specified the compiler, we may need to set or change some
3125: other defaults.
3126if $test -f cc.cbu; then
3127 . ./cc.cbu
3128fi
2573c5f9 3129. ./checkcc
8a27cf78 3130
e5e20432
JH
3131echo " "
3132echo "Checking for GNU cc in disguise and/or its version number..." >&4
3133$cat >gccvers.c <<EOM
3134#include <stdio.h>
3135int main() {
3136#ifdef __GNUC__
3137#ifdef __VERSION__
3138 printf("%s\n", __VERSION__);
3139#else
3140 printf("%s\n", "1");
3141#endif
3142#endif
3143 exit(0);
3144}
3145EOM
7a282f6d 3146if $cc -o gccvers $ldflags gccvers.c; then
e5e20432
JH
3147 gccversion=`./gccvers`
3148 case "$gccversion" in
3149 '') echo "You are not using GNU cc." ;;
fc68435e 3150 *) echo "You are using GNU cc $gccversion."
e723fc21 3151 ccname=gcc
fc68435e 3152 ;;
e5e20432
JH
3153 esac
3154else
3155 echo " "
3156 echo "*** WHOA THERE!!! ***" >&4
3157 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3158 case "$knowitall" in
3159 '')
3160 echo " You'd better start hunting for one and let me know about it." >&4
3161 exit 1
3162 ;;
3163 esac
3164fi
3165$rm -f gccvers*
3166case "$gccversion" in
31671*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3168esac
5b463ca7
KS
3169case "$gccversion" in
3170'') gccosandvers='' ;;
10b4ebb5
JH
3171*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3172 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3173 gccshortvers=''
5b463ca7 3174 case "$gccosandvers" in
02903077
JH
3175 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3176 $osname$osvers) ;; # looking good
5b463ca7
KS
3177 $osname*) cat <<EOM >&4
3178
3179*** WHOA THERE!!! ***
3180
3181 Your gcc has not been compiled for the exact release of
3182 your operating system ($gccosandvers versus $osname$osvers).
3183
3184 In general it is a good idea to keep gcc synchronized with
3185 the operating system because otherwise serious problems
3186 may ensue when trying to compile software, like Perl.
3187
3188 I'm trying to be optimistic here, though, and will continue.
3189 If later during the configuration and build icky compilation
02903077
JH
3190 problems appear (headerfile conflicts being the most common
3191 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3192 your operating system release.
3193
3194EOM
3195 ;;
81575342 3196 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3197 esac
3198 ;;
3199esac
e723fc21
JH
3200case "$ccname" in
3201'') ccname="$cc" ;;
3202esac
e5e20432 3203
8a27cf78
JH
3204: see how we invoke the C preprocessor
3205echo " "
3206echo "Now, how can we feed standard input to your C preprocessor..." >&4
3207cat <<'EOT' >testcpp.c
3208#define ABC abc
3209#define XYZ xyz
3210ABC.XYZ
3211EOT
3212cd ..
3213if test ! -f cppstdin; then
3214 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3215 # AIX cc -E doesn't show the absolute headerfile
3216 # locations but we'll cheat by using the -M flag.
3217 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3218 else
3219 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3220 fi
3221else
3222 echo "Keeping your $hint cppstdin wrapper."
3223fi
3224chmod 755 cppstdin
3225wrapper=`pwd`/cppstdin
3226ok='false'
3227cd UU
3228
3229if $test "X$cppstdin" != "X" && \
3230 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3231 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3232then
3233 echo "You used to use $cppstdin $cppminus so we'll use that again."
3234 case "$cpprun" in
3235 '') echo "But let's see if we can live without a wrapper..." ;;
3236 *)
3237 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3238 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3239 then
3240 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3241 ok='true'
3242 else
3243 echo "(However, $cpprun $cpplast does not work, let's see...)"
3244 fi
3245 ;;
3246 esac
3247else
3248 case "$cppstdin" in
3249 '') ;;
3250 *)
3251 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3252 ;;
3253 esac
3254fi
3255
3256if $ok; then
3257 : nothing
3258elif echo 'Maybe "'"$cc"' -E" will work...'; \
3259 $cc -E <testcpp.c >testcpp.out 2>&1; \
3260 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3261 echo "Yup, it does."
3262 x_cpp="$cc -E"
3263 x_minus='';
3264elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3265 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3266 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3267 echo "Yup, it does."
3268 x_cpp="$cc -E"
3269 x_minus='-';
3270elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3271 $cc -P <testcpp.c >testcpp.out 2>&1; \
3272 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3273 echo "Yipee, that works!"
3274 x_cpp="$cc -P"
3275 x_minus='';
3276elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3277 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3278 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3279 echo "At long last!"
3280 x_cpp="$cc -P"
3281 x_minus='-';
3282elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3283 $cpp <testcpp.c >testcpp.out 2>&1; \
3284 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3285 echo "It works!"
3286 x_cpp="$cpp"
3287 x_minus='';
3288elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3289 $cpp - <testcpp.c >testcpp.out 2>&1; \
3290 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3291 echo "Hooray, it works! I was beginning to wonder."
3292 x_cpp="$cpp"
3293 x_minus='-';
3294elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3295 $wrapper <testcpp.c >testcpp.out 2>&1; \
3296 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3297 x_cpp="$wrapper"
3298 x_minus=''
3299 echo "Eureka!"
3300else
3301 dflt=''
3302 rp="No dice. I can't find a C preprocessor. Name one:"
3303 . ./myread
3304 x_cpp="$ans"
3305 x_minus=''
3306 $x_cpp <testcpp.c >testcpp.out 2>&1
3307 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3308 echo "OK, that will do." >&4
3309 else
3310echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3311 exit 1
3312 fi
3313fi
3314
3315case "$ok" in
3316false)
3317 cppstdin="$x_cpp"
3318 cppminus="$x_minus"
3319 cpprun="$x_cpp"
3320 cpplast="$x_minus"
3321 set X $x_cpp
3322 shift
3323 case "$1" in
3324 "$cpp")
3325 echo "Perhaps can we force $cc -E using a wrapper..."
3326 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3327 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3328 then
3329 echo "Yup, we can."
3330 cppstdin="$wrapper"
3331 cppminus='';
3332 else
3333 echo "Nope, we'll have to live without it..."
3334 fi
3335 ;;
3336 esac
3337 case "$cpprun" in
3338 "$wrapper")
3339 cpprun=''
3340 cpplast=''
3341 ;;
3342 esac
3343 ;;
3344esac
3345
3346case "$cppstdin" in
3347"$wrapper"|'cppstdin') ;;
3348*) $rm -f $wrapper;;
3349esac
3350$rm -f testcpp.c testcpp.out
3351
bd9b35c9
JH
3352: decide how portable to be. Allow command line overrides.
3353case "$d_portable" in
3354"$undef") ;;
3355*) d_portable="$define" ;;
104d25b7 3356esac
85ab1d1d 3357
bd9b35c9
JH
3358: set up shell script to do ~ expansion
3359cat >filexp <<EOSS
3360$startsh
3361: expand filename
3362case "\$1" in
3363 ~/*|~)
3364 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3365 ;;
3366 ~*)
3367 if $test -f /bin/csh; then
3368 /bin/csh -f -c "glob \$1"
3369 failed=\$?
3370 echo ""
3371 exit \$failed
e5e20432 3372 else
bd9b35c9
JH
3373 name=\`$expr x\$1 : '..\([^/]*\)'\`
3374 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3375 if $test ! -d "\$dir"; then
3376 me=\`basename \$0\`
3377 echo "\$me: can't locate home directory for: \$name" >&2
3378 exit 1
3379 fi
3380 case "\$1" in
3381 */*)
3382 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3383 ;;
3384 *)
3385 echo \$dir
e5e20432
JH
3386 ;;
3387 esac
3388 fi
b691c02f 3389 ;;
4633a7c4 3390*)
bd9b35c9 3391 echo \$1
2304df62
AD
3392 ;;
3393esac
4633a7c4
LW
3394EOSS
3395chmod +x filexp
3396$eunicefix filexp
2304df62
AD
3397
3398: now set up to get a file name
28757baa 3399cat <<EOS >getfile
3400$startsh
3401EOS
3402cat <<'EOSC' >>getfile
2304df62
AD
3403tilde=''
3404fullpath=''
3405already=''
3406skip=''
3407none_ok=''
3408exp_file=''
a0d0e21e 3409nopath_ok=''
2304df62
AD
3410orig_rp="$rp"
3411orig_dflt="$dflt"
b233458b
JH
3412case "$gfpth" in
3413'') gfpth='.' ;;
3414esac
2304df62
AD
3415
3416case "$fn" in
ecfc5424 3417*\(*)
381aa1ff 3418 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3419 fn=`echo $fn | sed 's/(.*)//'`
3420 ;;
3421esac
3422
3423case "$fn" in
a0d0e21e
LW
3424*:*)
3425 loc_file=`expr $fn : '.*:\(.*\)'`
3426 fn=`expr $fn : '\(.*\):.*'`
3427 ;;
3428esac
3429
3430case "$fn" in
2304df62
AD
3431*~*) tilde=true;;
3432esac
3433case "$fn" in
3434*/*) fullpath=true;;
3435esac
3436case "$fn" in
3437*+*) skip=true;;
3438esac
3439case "$fn" in
3440*n*) none_ok=true;;
3441esac
3442case "$fn" in
3443*e*) exp_file=true;;
3444esac
a0d0e21e
LW
3445case "$fn" in
3446*p*) nopath_ok=true;;
3447esac
2304df62
AD
3448
3449case "$fn" in
3450*f*) type='File';;
3451*d*) type='Directory';;
a0d0e21e 3452*l*) type='Locate';;
2304df62
AD
3453esac
3454
3455what="$type"
3456case "$what" in
3457Locate) what='File';;
3458esac
3459
3460case "$exp_file" in
3461'')
3462 case "$d_portable" in
3463 "$define") ;;
3464 *) exp_file=true;;
3465 esac
3466 ;;
3467esac
3468
3469cd ..
3470while test "$type"; do
3471 redo=''
3472 rp="$orig_rp"
3473 dflt="$orig_dflt"
3474 case "$tilde" in
3475 true) rp="$rp (~name ok)";;
3476 esac
3477 . UU/myread
ecfc5424
AD
3478 if test -f UU/getfile.ok && \
3479 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3480 then
3481 value="$ans"
3482 ansexp="$ans"
3483 break
3484 fi
2304df62
AD
3485 case "$ans" in
3486 none)
3487 value=''
3488 ansexp=''
3489 case "$none_ok" in
3490 true) type='';;
3491 esac
3492 ;;
3493 *)
3494 case "$tilde" in
3495 '') value="$ans"
3496 ansexp="$ans";;
3497 *)
3498 value=`UU/filexp $ans`
3499 case $? in
3500 0)
3501 if test "$ans" != "$value"; then
ecfc5424 3502 echo "(That expands to $value on this system.)"
2304df62
AD
3503 fi
3504 ;;
3505 *) value="$ans";;
3506 esac
3507 ansexp="$value"
3508 case "$exp_file" in
3509 '') value="$ans";;
3510 esac
3511 ;;
3512 esac
3513 case "$fullpath" in
3514 true)
3515 case "$ansexp" in
3516 /*) value="$ansexp" ;;
23da6c43 3517 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3518 *)
3519 redo=true
3520 case "$already" in
3521 true)
3522 echo "I shall only accept a full path name, as in /bin/ls." >&4
3523 echo "Use a ! shell escape if you wish to check pathnames." >&4
3524 ;;
3525 *)
3526 echo "Please give a full path name, starting with slash." >&4
3527 case "$tilde" in
3528 true)
3529 echo "Note that using ~name is ok provided it expands well." >&4
3530 already=true
3531 ;;
3532 esac
3533 esac
3534 ;;
3535 esac
3536 ;;
3537 esac
3538 case "$redo" in
3539 '')
3540 case "$type" in
3541 File)
b233458b
JH
3542 for fp in $gfpth; do
3543 if test "X$fp" = X.; then
3544 pf="$ansexp"
3545 else
3546 pf="$fp/$ansexp"
3547 fi
3548 if test -f "$pf"; then
3549 type=''
3550 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3551 then
3552 echo "($value is not a plain file, but that's ok.)"
3553 type=''
3554 fi
3555 if test X"$type" = X; then
3556 value="$pf"
3557 break
3558 fi
3559 done
2304df62
AD
3560 ;;
3561 Directory)
b233458b
JH
3562 for fp in $gfpth; do
3563 if test "X$fp" = X.; then
f78bfc9c
JH
3564 dir="$ans"
3565 direxp="$ansexp"
b233458b 3566 else
dd858076 3567 dir="$fp/$ansexp"
f78bfc9c 3568 direxp="$fp/$ansexp"
b233458b 3569 fi
f78bfc9c 3570 if test -d "$direxp"; then
b233458b 3571 type=''
f78bfc9c 3572 value="$dir"
b233458b
JH
3573 break
3574 fi
3575 done
2304df62
AD
3576 ;;
3577 Locate)
40000a8c 3578 if test -d "$ansexp"; then
a0d0e21e
LW
3579 echo "(Looking for $loc_file in directory $value.)"
3580 value="$value/$loc_file"
40000a8c 3581 ansexp="$ansexp/$loc_file"
2304df62 3582 fi
40000a8c 3583 if test -f "$ansexp"; then
2304df62
AD
3584 type=''
3585 fi
a0d0e21e
LW
3586 case "$nopath_ok" in
3587 true) case "$value" in
3588 */*) ;;
3589 *) echo "Assuming $value will be in people's path."
3590 type=''
3591 ;;
3592 esac
3593 ;;
3594 esac
2304df62
AD
3595 ;;
3596 esac
3597
3598 case "$skip" in
3599 true) type='';
3600 esac
3601
3602 case "$type" in
3603 '') ;;
3604 *)
3605 if test "$fastread" = yes; then
3606 dflt=y
3607 else
3608 dflt=n
3609 fi
3610 rp="$what $value doesn't exist. Use that name anyway?"
3611 . UU/myread
3612 dflt=''
3613 case "$ans" in
3614 y*) type='';;
3615 *) echo " ";;
3616 esac
3617 ;;
3618 esac
3619 ;;
3620 esac
3621 ;;
3622 esac
3623done
3624cd UU
3625ans="$value"
3626rp="$orig_rp"
3627dflt="$orig_dflt"
ecfc5424 3628rm -f getfile.ok
b233458b 3629test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3630EOSC
3631
bd9b35c9
JH
3632: What should the include directory be ?
3633echo " "
3634$echo $n "Hmm... $c"
3635dflt='/usr/include'
3636incpath=''
3637mips_type=''
3638if $test -f /bin/mips && /bin/mips; then
3639 echo "Looks like a MIPS system..."
3640 $cat >usr.c <<'EOCP'
3641#ifdef SYSTYPE_BSD43
3642/bsd43
3643#endif
3644EOCP
8a27cf78 3645 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3646 dflt='/bsd43/usr/include'
3647 incpath='/bsd43'
3648 mips_type='BSD 4.3'
3649 else
3650 mips_type='System V'
3651 fi
3652 $rm -f usr.c usr.out
3653 echo "and you're compiling with the $mips_type compiler and libraries."
3654 xxx_prompt=y
3655 echo "exit 0" >mips
3656else
3657 echo "Doesn't look like a MIPS system."
3658 xxx_prompt=n
3659 echo "exit 1" >mips
3660fi
3661chmod +x mips
3662$eunicefix mips
3663case "$usrinc" in
3664'') ;;
3665*) dflt="$usrinc";;
3666esac
3667case "$xxx_prompt" in
3668y) fn=d/
3669 echo " "
3670 rp='Where are the include files you want to use?'
3671 . ./getfile
3672 usrinc="$ans"
8e07c86e 3673 ;;
bd9b35c9 3674*) usrinc="$dflt"
8e07c86e
AD
3675 ;;
3676esac
2304df62 3677
bd9b35c9
JH
3678: Set private lib path
3679case "$plibpth" in
3680'') if ./mips; then
3681 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3682 fi;;
3683esac
3684case "$libpth" in
3685' ') dlist='';;
3686'') dlist="$loclibpth $plibpth $glibpth";;
3687*) dlist="$libpth";;
3688esac
3689
3690: Now check and see which directories actually exist, avoiding duplicates
3691libpth=''
3692for xxx in $dlist
3693do
3694 if $test -d $xxx; then
3695 case " $libpth " in
3696 *" $xxx "*) ;;
3697 *) libpth="$libpth $xxx";;
3698 esac
3699 fi
3700done
3701$cat <<'EOM'
3702
3703Some systems have incompatible or broken versions of libraries. Among
3704the directories listed in the question below, please remove any you
3705know not to be holding relevant libraries, and add any that are needed.
3706Say "none" for none.
8e07c86e
AD
3707
3708EOM
bd9b35c9
JH
3709case "$libpth" in
3710'') dflt='none';;
8e07c86e 3711*)
bd9b35c9
JH
3712 set X $libpth
3713 shift
3714 dflt=${1+"$@"}
8e07c86e 3715 ;;
a0d0e21e 3716esac
bd9b35c9
JH
3717rp="Directories to use for library searches?"
3718. ./myread
3719case "$ans" in
3720none) libpth=' ';;
3721*) libpth="$ans";;
3722esac
a0d0e21e 3723
bd9b35c9
JH
3724: compute shared library extension
3725case "$so" in
3726'')
3727 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3728 dflt='sl'
dd4e71fd 3729 else
bd9b35c9 3730 dflt='so'
dd4e71fd
JH
3731 fi
3732 ;;
bd9b35c9 3733*) dflt="$so";;
dd4e71fd 3734esac
dd4e71fd
JH
3735$cat <<EOM
3736
bd9b35c9 3737On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3738you want to suppress searching of shared libraries for the remainder
bd9b35c9 3739of this configuration.
dd4e71fd
JH
3740
3741EOM
bd9b35c9
JH
3742rp='What is the file extension used for shared libraries?'
3743. ./myread
3744so="$ans"
dd4e71fd 3745
bd9b35c9
JH
3746: Define several unixisms.
3747: Hints files or command line option can be used to override them.
3748: The convoluted testing is in case hints files set either the old
3749: or the new name.
3750case "$_exe" in
3751'') case "$exe_ext" in
3752 '') ;;
3753 *) _exe="$exe_ext" ;;
dd4e71fd 3754 esac
bd9b35c9 3755 ;;
bfb7748a 3756esac
bd9b35c9
JH
3757case "$_a" in
3758'') case "$lib_ext" in
3759 '') _a='.a';;
3760 *) _a="$lib_ext" ;;
dd4e71fd
JH
3761 esac
3762 ;;
dd4e71fd 3763esac
bd9b35c9
JH
3764case "$_o" in
3765'') case "$obj_ext" in
3766 '') _o='.o';;
3767 *) _o="$obj_ext";;
3768 esac
3769 ;;
3770esac
3771case "$p_" in
3772'') case "$path_sep" in
3773 '') p_=':';;
3774 *) p_="$path_sep";;
3775 esac
3776 ;;
3777esac
3778exe_ext=$_exe
3779lib_ext=$_a
3780obj_ext=$_o
3781path_sep=$p_
dd4e71fd 3782
b4eb6b3d
JH
3783: Which makefile gets called first. This is used by make depend.
3784case "$firstmakefile" in
3785'') firstmakefile='makefile';;
4633a7c4 3786esac
4633a7c4 3787
0f0995ae
JH
3788case "$usesocks" in
3789$define|true|[yY]*) dflt='y';;
3790*) dflt='n';;
3791esac
bd9b35c9 3792cat <<EOM
4633a7c4 3793
bd9b35c9 3794Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
3795Configure must be run with -Dusesocks. If you use SOCKS you also need
3796to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 3797
0f0995ae 3798If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3799EOM
bd9b35c9
JH
3800rp='Build Perl for SOCKS?'
3801. ./myread
3802case "$ans" in
3803y|Y) val="$define" ;;
3804*) val="$undef" ;;
3805esac
3806set usesocks
3807eval $setvar
3808
cf829ab0
JH
3809case "$usesocks" in
3810$define|true|[yY]*) useperlio="$define";;
3811esac
3812
bd9b35c9
JH
3813: Looking for optional libraries
3814echo " "
3815echo "Checking for optional libraries..." >&4
3816case "$libs" in
3817' '|'') dflt='';;
3818*) dflt="$libs";;
3819esac
3820case "$libswanted" in
3821'') libswanted='c_s';;
3822esac
3823case "$usesocks" in
923fc586 3824"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3825esac
68435ea7
JH
3826libsfound=''
3827libsfiles=''
3828libsdirs=''
13b3f787
JH
3829libspath=''
3830for thisdir in $libpth $xlibpth; do
3831 test -d $thisdir && libspath="$libspath $thisdir"
3832done
bd9b35c9 3833for thislib in $libswanted; do
13b3f787 3834 for thisdir in $libspath; do
f7dd4e7f
JH
3835 xxx=''
3836 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3837 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3838 $test -f "$xxx" && eval $libscheck
3839 $test -f "$xxx" && libstyle=shared
3840 fi
3841 if test ! -f "$xxx"; then
3842 xxx=$thisdir/lib$thislib.$so
3843 $test -f "$xxx" && eval $libscheck
3844 $test -f "$xxx" && libstyle=shared
3845 fi
3846 if test ! -f "$xxx"; then
3847 xxx=$thisdir/lib$thislib$_a
3848 $test -f "$xxx" && eval $libscheck
3849 $test -f "$xxx" && libstyle=static
3850 fi
3851 if test ! -f "$xxx"; then
3852 xxx=$thisdir/$thislib$_a
3853 $test -f "$xxx" && eval $libscheck
3854 $test -f "$xxx" && libstyle=static
3855 fi
3856 if test ! -f "$xxx"; then
3857 xxx=$thisdir/lib${thislib}_s$_a
3858 $test -f "$xxx" && eval $libscheck
3859 $test -f "$xxx" && libstyle=static
09ea5ba9 3860 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3861 fi
3862 if test ! -f "$xxx"; then
3863 xxx=$thisdir/Slib$thislib$_a
3864 $test -f "$xxx" && eval $libscheck
3865 $test -f "$xxx" && libstyle=static
3866 fi
3867 if $test -f "$xxx"; then
43999f95 3868 case "$libstyle" in
f7dd4e7f
JH
3869 shared) echo "Found -l$thislib (shared)." ;;
3870 static) echo "Found -l$thislib." ;;
3871 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3872 esac
bd9b35c9
JH
3873 case " $dflt " in
3874 *"-l$thislib "*);;
f7dd4e7f 3875 *) dflt="$dflt -l$thislib"
43999f95
JH
3876 libsfound="$libsfound $xxx"
3877 yyy=`basename $xxx`
3878 libsfiles="$libsfiles $yyy"
1e127011 3879 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3880 case " $libsdirs " in
3881 *" $yyy "*) ;;
3882 *) libsdirs="$libsdirs $yyy" ;;
3883 esac
3884 ;;
bd9b35c9 3885 esac
f7dd4e7f
JH
3886 break
3887 fi
3888 done
3889 if $test ! -f "$xxx"; then
3890 echo "No -l$thislib."
bd9b35c9
JH
3891 fi
3892done
3893set X $dflt
3894shift
3895dflt="$*"
3896case "$libs" in
3897'') dflt="$dflt";;
3898*) dflt="$libs";;
3899esac
3900case "$dflt" in
3901' '|'') dflt='none';;
3902esac
4633a7c4 3903
bd9b35c9 3904$cat <<EOM
4633a7c4 3905
bd9b35c9
JH
3906In order to compile $package on your machine, a number of libraries
3907are usually needed. Include any other special libraries here as well.
3908Say "none" for none. The default list is almost always right.
8e07c86e 3909EOM
8e07c86e 3910
bd9b35c9
JH
3911echo " "
3912rp="What libraries to use?"
3913. ./myread
3914case "$ans" in
3915none) libs=' ';;
3916*) libs="$ans";;
3917esac
d71b2b6b 3918
bd9b35c9
JH
3919: determine optimization, if desired, or use for debug flag also
3920case "$optimize" in
3921' '|$undef) dflt='none';;
3922'') dflt='-O';;
3923*) dflt="$optimize";;
3924esac
3925$cat <<EOH
d71b2b6b 3926
bd9b35c9
JH
3927By default, $package compiles with the -O flag to use the optimizer.
3928Alternately, you might want to use the symbolic debugger, which uses
3929the -g flag (on traditional Unix systems). Either flag can be
3930specified here. To use neither flag, specify the word "none".
d71b2b6b 3931
bd9b35c9
JH
3932EOH
3933rp="What optimizer/debugger flag should be used?"
3934. ./myread
3935optimize="$ans"
3936case "$optimize" in
3937'none') optimize=" ";;
3938esac
3939
3940dflt=''
3941: We will not override a previous value, but we might want to
3942: augment a hint file
3943case "$hint" in
3944default|recommended)
3945 case "$gccversion" in
3946 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 3947 esac
bd9b35c9
JH
3948 case "$optimize" in
3949 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 3950 esac
bd9b35c9
JH
3951 case "$gccversion" in
3952 2*) if test -d /etc/conf/kconfig.d &&
3953 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3954 then
3955 dflt="$dflt -posix"
3956 fi
f0d04425 3957 ;;
bd9b35c9
JH
3958 esac
3959 case "$gccversion" in
3960 1*) ;;
3961 2.[0-8]*) ;;
3962 ?*) echo " "
3963 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3964 echo 'int main(void) { return 0; }' > gcctest.c
3965 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3966 echo "Yes, it does." 2>&1
3967 case "$ccflags" in
3968 *strict-aliasing*)
3969 echo "Leaving current flags $ccflags alone." 2>&1
3970 ;;
3971 *) dflt="$dflt -fno-strict-aliasing" ;;
3972 esac
3973 else
3974 echo "Nope, it doesn't, but that's ok." 2>&1
3975 fi
f0d04425 3976 ;;
e5e20432
JH
3977 esac
3978 ;;
3979esac
3980
bd9b35c9
JH
3981case "$mips_type" in
3982*BSD*|'') inclwanted="$locincpth $usrinc";;
3983*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3984esac
3985for thisincl in $inclwanted; do
3986 if $test -d $thisincl; then
3987 if $test x$thisincl != x$usrinc; then
3988 case "$dflt" in
422af00a
LC
3989 *" -I$thisincl "*);;
3990 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
3991 esac
3992 fi
3993 fi
3994done
40a7a20a 3995
bd9b35c9
JH
3996inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3997 xxx=true;
3998elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3999 xxx=true;
4000else
4001 xxx=false;
4002fi;
4003if $xxx; then
4004 case "$dflt" in
4005 *$2*);;
4006 *) dflt="$dflt -D$2";;
4007 esac;
4008fi'
40a7a20a 4009
bd9b35c9 4010set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4011
bd9b35c9
JH
4012case "$usesocks" in
4013$define)
4014 ccflags="$ccflags -DSOCKS"
4015 ;;
4016esac
40a7a20a 4017
bd9b35c9
JH
4018case "$hint" in
4019default|recommended) dflt="$ccflags $dflt" ;;
4020*) dflt="$ccflags";;
4021esac
40a7a20a 4022
bd9b35c9
JH
4023case "$dflt" in
4024''|' ') dflt=none;;
4025esac
422af00a 4026
bd9b35c9 4027$cat <<EOH
40a7a20a 4028
bd9b35c9
JH
4029Your C compiler may want other flags. For this question you should include
4030-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4031but you should NOT include libraries or ld flags like -lwhatever. If you
4032want $package to honor its debug switch, you should include -DDEBUGGING here.
4033Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4034
bd9b35c9 4035To use no flags, specify the word "none".
40a7a20a 4036
bd9b35c9
JH
4037EOH
4038set X $dflt
4039shift
4040dflt=${1+"$@"}
4041rp="Any additional cc flags?"
4042. ./myread
4043case "$ans" in
4044none) ccflags='';;
4045*) ccflags="$ans";;
4046esac
8e07c86e 4047
bd9b35c9
JH
4048: the following weeds options from ccflags that are of no interest to cpp
4049cppflags="$ccflags"
4050case "$gccversion" in
40511*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4052esac
bd9b35c9
JH
4053case "$mips_type" in
4054'');;
4055*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4056esac
4057case "$cppflags" in
4058'');;
4059*)
4060 echo " "
4061 echo "Let me guess what the preprocessor flags are..." >&4
4062 set X $cppflags
4063 shift
4064 cppflags=''
4065 $cat >cpp.c <<'EOM'
4066#define BLURFL foo
8e07c86e 4067
bd9b35c9
JH
4068BLURFL xx LFRULB
4069EOM
4070 previous=''
4071 for flag in $*
4072 do
4073 case "$flag" in
4074 -*) ftry="$flag";;
4075 *) ftry="$previous $flag";;
4076 esac
4077 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4078 >cpp1.out 2>/dev/null && \
4079 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4080 >cpp2.out 2>/dev/null && \
4081 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4082 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4083 then
4084 cppflags="$cppflags $ftry"
4085 previous=''
4086 else
4087 previous="$flag"
4088 fi
4089 done
4090 set X $cppflags
4091 shift
4092 cppflags=${1+"$@"}
4093 case "$cppflags" in
4094 *-*) echo "They appear to be: $cppflags";;
4095 esac
4096 $rm -f cpp.c cpp?.out
2afac517 4097 ;;
4098esac
8e07c86e 4099
bd9b35c9
JH
4100: flags used in final linking phase
4101case "$ldflags" in
4102'') if ./venix; then
4103 dflt='-i -z'
10a23457 4104 else
bd9b35c9 4105 dflt=''
10a23457 4106 fi
bd9b35c9
JH
4107 case "$ccflags" in
4108 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4109 esac
bd9b35c9
JH
4110 ;;
4111*) dflt="$ldflags";;
4112esac
4113
4114: Try to guess additional flags to pick up local libraries.
4115for thislibdir in $libpth; do
4116 case " $loclibpth " in
4117 *" $thislibdir "*)
4118 case "$dflt " in
4119 *"-L$thislibdir "*) ;;
4120 *) dflt="$dflt -L$thislibdir" ;;
4121 esac
c4f23d77
AD
4122 ;;
4123 esac
bd9b35c9 4124done
c4f23d77 4125
bd9b35c9
JH
4126case "$dflt" in
4127'') dflt='none' ;;
4128esac
c4f23d77 4129
bd9b35c9
JH
4130$cat <<EOH
4131
4132Your C linker may need flags. For this question you should
4133include -L/whatever and any other flags used by the C linker, but you
4134should NOT include libraries like -lwhatever.
4135
4136Make sure you include the appropriate -L/path flags if your C linker
4137does not normally search all of the directories you specified above,
4138namely
4139 $libpth
4140To use no flags, specify the word "none".
4141
4142EOH
4143
4144rp="Any additional ld flags (NOT including libraries)?"
4145. ./myread
4146case "$ans" in
4147none) ldflags='';;
4148*) ldflags="$ans";;
4149esac
4150rmlist="$rmlist pdp11"
4151
4152: coherency check
4153echo " "
4154echo "Checking your choice of C compiler and flags for coherency..." >&4
4155$cat > try.c <<'EOF'
4156#include <stdio.h>
4157int main() { printf("Ok\n"); exit(0); }
4158EOF
7a282f6d 4159set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4160shift
4161$cat >try.msg <<'EOM'
4162I've tried to compile and run the following simple program:
4163
4164EOM
4165$cat try.c >> try.msg
4166
4167$cat >> try.msg <<EOM
4168
4169I used the command:
4170
4171 $*
4172 ./try
4173
4174and I got the following output:
4175
4176EOM
4177dflt=y
73614538
JH
4178if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4179 if $sh -c './try' >>try.msg 2>&1; then
bd9b35c9
JH
4180 xxx=`./try`
4181 case "$xxx" in
4182 "Ok") dflt=n ;;
4183 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4184 case " $libs " in
4185 *" -lsfio "*)
4186 cat >> try.msg <<'EOQS'
4187If $libs contains -lsfio, and sfio is mis-configured, then it
4188sometimes (apparently) runs and exits with a 0 status, but with no
4189output! It may have to do with sfio's use of _exit vs. exit.
4190
4191EOQS
4192 rp="You have a big problem. Shall I abort Configure"
4193 dflt=y
4194 ;;
4195 esac
4196 ;;
4197 esac
4198 else
4199 echo "The program compiled OK, but exited with status $?." >>try.msg
4200 rp="You have a problem. Shall I abort Configure"
4201 dflt=y
4202 fi
4203else
4204 echo "I can't compile the test program." >>try.msg
4205 rp="You have a BIG problem. Shall I abort Configure"
4206 dflt=y
4207fi
4208case "$dflt" in
4209y)
4210 $cat try.msg >&4
4211 case "$knowitall" in
4212 '')
4213 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4214 ;;
bd9b35c9 4215 *) dflt=n;;
c4f23d77 4216 esac
bd9b35c9
JH
4217 echo " "
4218 . ./myread
4219 case "$ans" in
4220 n*|N*) ;;
4221 *) echo "Ok. Stopping Configure." >&4
4222 exit 1
c4f23d77
AD
4223 ;;
4224 esac
4225 ;;
bd9b35c9 4226n) echo "OK, that should do.";;
c4f23d77 4227esac
bd9b35c9 4228$rm -f try try.* core
c4f23d77 4229
b4eb6b3d
JH
4230: define an is-a-typedef? function
4231typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4232case "$inclist" in
4233"") inclist="sys/types.h";;
4234esac;
4235eval "varval=\$$var";
4236case "$varval" in
4237"")
4238 $rm -f temp.c;
4239 for inc in $inclist; do
4240 echo "#include <$inc>" >>temp.c;
4241 done;
4242 echo "#ifdef $type" >> temp.c;
4243 echo "printf(\"We have $type\");" >> temp.c;
4244 echo "#endif" >> temp.c;
4245 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4246 if $contains $type temp.E >/dev/null 2>&1; then
4247 eval "$var=\$type";
4248 else
4249 eval "$var=\$def";
4250 fi;
4251 $rm -f temp.?;;
4252*) eval "$var=\$varval";;
4253esac'
4254
4255: define an is-a-typedef? function that prompts if the type is not available.
4256typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4257case "$inclist" in
4258"") inclist="sys/types.h";;
4259esac;
4260eval "varval=\$$var";
4261case "$varval" in
4262"")
4263 $rm -f temp.c;
4264 for inc in $inclist; do
4265 echo "#include <$inc>" >>temp.c;
4266 done;
4267 echo "#ifdef $type" >> temp.c;
4268 echo "printf(\"We have $type\");" >> temp.c;
4269 echo "#endif" >> temp.c;
4270 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4271 echo " " ;
4272 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4273 if $contains $type temp.E >/dev/null 2>&1; then
4274 echo "$type found." >&4;
4275 eval "$var=\$type";
4276 else
4277 echo "$type NOT found." >&4;
4278 dflt="$def";
4279 . ./myread ;
4280 eval "$var=\$ans";
4281 fi;
4282 $rm -f temp.?;;
4283*) eval "$var=\$varval";;
4284esac'
4285
bd9b35c9
JH
4286: define a shorthand compile call
4287compile='
4288mc_file=$1;
4289shift;
08413ebc 4290$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4291: define a shorthand compile call for compilations that should be ok.
4292compile_ok='
4293mc_file=$1;
4294shift;
7a282f6d 4295$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4296
b4eb6b3d 4297: check for lengths of integral types
bd9b35c9 4298echo " "
b4eb6b3d
JH
4299case "$intsize" in
4300'')
4301 echo "Checking to see how big your integers are..." >&4
4302 $cat >intsize.c <<'EOCP'
bd9b35c9
JH
4303#include <stdio.h>
4304int main()
4305{
b4eb6b3d
JH
4306 printf("intsize=%d;\n", (int)sizeof(int));
4307 printf("longsize=%d;\n", (int)sizeof(long));
4308 printf("shortsize=%d;\n", (int)sizeof(short));
4309 exit(0);
bd9b35c9 4310}
b4eb6b3d
JH
4311EOCP
4312 set intsize
4313 if eval $compile_ok && ./intsize > /dev/null; then
4314 eval `./intsize`
4315 echo "Your integers are $intsize bytes long."
4316 echo "Your long integers are $longsize bytes long."
4317 echo "Your short integers are $shortsize bytes long."
4318 else
4319 $cat >&4 <<EOM
4320!
4321Help! I can't compile and run the intsize test program: please enlighten me!
4322(This is probably a misconfiguration in your system or libraries, and
4323you really ought to fix it. Still, I'll try anyway.)
4324!
bd9b35c9 4325EOM
b4eb6b3d
JH
4326 dflt=4
4327 rp="What is the size of an integer (in bytes)?"
4328 . ./myread
4329 intsize="$ans"
4330 dflt=$intsize
4331 rp="What is the size of a long integer (in bytes)?"
4332 . ./myread
4333 longsize="$ans"
4334 dflt=2
4335 rp="What is the size of a short integer (in bytes)?"
4336 . ./myread
4337 shortsize="$ans"
4338 fi
4339 ;;
4340esac
4341$rm -f intsize intsize.*
c1a7f87b 4342
b4eb6b3d
JH
4343: see what type lseek is declared as in the kernel
4344rp="What is the type used for lseek's offset on this system?"
4345set off_t lseektype long stdio.h sys/types.h
4346eval $typedef_ask
4347
4348echo " "
4349echo "Checking to see how big your file offsets are..." >&4
4350$cat >try.c <<EOCP
4351#include <sys/types.h>
4352#include <stdio.h>
4353int main()
4354{
4355 printf("%d\n", (int)sizeof($lseektype));
4356 return(0);
4357}
4358EOCP
4359set try
4360if eval $compile_ok; then
4361 lseeksize=`./try`
4362 echo "Your file offsets are $lseeksize bytes long."
4363else
4364 dflt=$longsize
4365 echo " "
4366 echo "(I can't seem to compile the test program. Guessing...)"
4367 rp="What is the size of your file offsets (in bytes)?"
4368 . ./myread
4369 lseeksize="$ans"
4370fi
4371$rm -f try.c try
4372
4373: see what type file positions are declared as in the library
4374rp="What is the type for file position used by fsetpos()?"
4375set fpos_t fpostype long stdio.h sys/types.h
4376eval $typedef_ask
4377
4378echo " "
4379case "$fpostype" in
4380*_t) zzz="$fpostype" ;;
4381*) zzz="fpos_t" ;;
4382esac
4383echo "Checking the size of $zzz..." >&4
4384cat > try.c <<EOCP
4385#include <sys/types.h>
4386#include <stdio.h>
4387int main() {
4388 printf("%d\n", (int)sizeof($fpostype));
4389 exit(0);
4390}
4391EOCP
4392set try
4393if eval $compile_ok; then
4394 yyy=`./try`
4395 case "$yyy" in
4396 '') fpossize=4
4397 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4398 ;;
4399 *) fpossize=$yyy
4400 echo "Your $zzz is $fpossize bytes long."
4401 ;;
4402 esac
4403else
4404 dflt="$longsize"
4405 echo " " >&4
4406 echo "(I can't compile the test program. Guessing...)" >&4
4407 rp="What is the size of your file positions (in bytes)?"
4408 . ./myread
4409 fpossize="$ans"
4410fi
4411
4412
4413
4414# Backward compatibility (uselfs is deprecated).
4415case "$uselfs" in
4416"$define"|true|[yY]*)
4417 cat <<EOM >&4
4418
4419*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4420EOM
4421 uselargefiles="$define"
4422 ;;
4423esac
4424
4425case "$lseeksize:$fpossize" in
44268:8) cat <<EOM
4427
4428You can have files larger than 2 gigabytes.
4429EOM
4430 val="$define" ;;
4431*) case "$uselargefiles" in
4432 "$undef"|false|[nN]*) dflt='n' ;;
4433 *) dflt='y' ;;
4434 esac
4435 cat <<EOM
4436
4437Perl can be built to understand large files (files larger than 2 gigabytes)
4438on some systems. To do so, Configure can be run with -Duselargefiles.
4439
4440If this doesn't make any sense to you, just accept the default '$dflt'.
4441EOM
4442 rp='Try to understand large files, if available?'
4443 . ./myread
4444 case "$ans" in
4445 y|Y) val="$define" ;;
4446 *) val="$undef" ;;
4447 esac
4448 ;;
4449esac
4450set uselargefiles
4451eval $setvar
4452case "$uselargefiles" in
4453"$define")
4454: Look for a hint-file generated 'call-back-unit'. If the
4455: user has specified that a large files perl is to be built,
4456: we may need to set or change some other defaults.
4457 if $test -f uselargefiles.cbu; then
4458 echo "Your platform has some specific hints for large file builds, using them..."
4459 . ./uselargefiles.cbu
4460 echo " "
4461 echo "Rechecking to see how big your file offsets are..." >&4
4462 $cat >try.c <<EOCP
4463#include <sys/types.h>
4464#include <stdio.h>
4465int main()
4466{
4467 printf("%d\n", (int)sizeof($lseektype));
4468 return(0);
4469}
4470EOCP
4471 set try
4472 if eval $compile_ok; then
4473 lseeksize=`./try`
4474 $echo "Your file offsets are now $lseeksize bytes long."
4475 else
4476 dflt="$lseeksize"
4477 echo " "
4478 echo "(I can't seem to compile the test program. Guessing...)"
4479 rp="What is the size of your file offsets (in bytes)?"
4480 . ./myread
4481 lseeksize="$ans"
4482 fi
4483 case "$fpostype" in
4484 *_t) zzz="$fpostype" ;;
4485 *) zzz="fpos_t" ;;
4486 esac
4487 $echo $n "Rechecking the size of $zzz...$c" >&4
4488 $cat > try.c <<EOCP
4489#include <sys/types.h>
4490#include <stdio.h>
4491int main() {
4492 printf("%d\n", (int)sizeof($fpostype));
4493 exit(0);
4494}
4495EOCP
4496 set try
4497 if eval $compile_ok; then
4498 yyy=`./try`
4499 dflt="$lseeksize"
4500 case "$yyy" in
4501 '') echo " "
4502 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4503 ;;
4504 *) fpossize=$yyy
4505 echo " $fpossize bytes." >&4
4506 ;;
4507 esac
4508 else
4509 dflt="$fpossize"
4510 echo " "
4511 echo "(I can't compile the test program. Guessing...)" >&4
4512 rp="What is the size of your file positions (in bytes)?"
4513 . ./myread
4514 fpossize="$ans"
4515 fi
4516 $rm -f try.c try
4517 fi
4518 ;;
4519esac
4520
4521
4522case "$usemorebits" in
4523"$define"|true|[yY]*)
4524 use64bitint="$define"
4525 uselongdouble="$define"
4526 usemorebits="$define"
4527 ;;
4528*) usemorebits="$undef"
4529 ;;
4530esac
4531
4532
4533case "$uselonglong" in
4534"$define"|true|[yY]*)
4535 cat <<EOM >&4
4536
4537*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4538EOM
4539 use64bitint="$define"
4540 ;;
4541esac
4542case "$use64bits" in
4543"$define"|true|[yY]*)
4544 cat <<EOM >&4
4545
4546*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4547EOM
4548 use64bitint="$define"
4549 ;;
4550esac
4551case "$use64bitints" in
4552"$define"|true|[yY]*)
4553 cat <<EOM >&4
4554
4555*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4556EOM
4557 use64bitint="$define"
4558 ;;
4559esac
4560case "$use64bitsint" in
4561"$define"|true|[yY]*)
4562 cat <<EOM >&4
4563
4564*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4565EOM
4566 use64bitint="$define"
4567 ;;
4568esac
4569case "$uselonglongs" in
4570"$define"|true|[yY]*)
4571 cat <<EOM >&4
4572
4573*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4574EOM
4575 use64bitint="$define"
4576 ;;
4577esac
4578case "$use64bitsall" in
4579"$define"|true|[yY]*)
4580 cat <<EOM >&4
4581
4582*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4583EOM
4584 use64bitall="$define"
4585 ;;
4586esac
4587
4588case "$ccflags" in
4589*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4590esac
4591case "$use64bitall" in
4592"$define"|true|[yY]*) use64bitint="$define" ;;
4593esac
4594
4595case "$longsize" in
45968) cat <<EOM
4597
4598You have natively 64-bit long integers.
4599EOM
4600 val="$define"
4601 ;;
4602*) case "$use64bitint" in
4603 "$define"|true|[yY]*) dflt='y';;
4604 *) dflt='n';;
4605 esac
4606 cat <<EOM
4607
4608Perl can be built to take advantage of 64-bit integer types
4609on some systems. To do so, Configure can be run with -Duse64bitint.
4610Choosing this option will most probably introduce binary incompatibilities.
4611
4612If this doesn't make any sense to you, just accept the default '$dflt'.
4613EOM
4614 rp='Try to use 64-bit integers, if available?'
4615 . ./myread
4616 case "$ans" in
4617 [yY]*) val="$define" ;;
4618 *) val="$undef" ;;
4619 esac
4620 ;;
4621esac
4622set use64bitint
4623eval $setvar
4624
4625case "$use64bitall" in
4626"$define"|true|[yY]*) dflt='y' ;;
4627*) case "$longsize" in
4628 8) dflt='y' ;;
4629 *) dflt='n' ;;
4630 esac
4631 ;;
4632esac
4633cat <<EOM
4634
4635You may also choose to try maximal 64-bitness. It means using as much
463664-bitness as possible on the platform. This in turn means even more
4637binary incompatibilities. On the other hand, your platform may not
4638have any more 64-bitness available than what you already have chosen.
4639
4640If this doesn't make any sense to you, just accept the default '$dflt'.
4641EOM
4642rp='Try to use maximal 64-bit support, if available?'
4643. ./myread
4644case "$ans" in
4645[yY]*) val="$define" ;;
4646*) val="$undef" ;;
4647esac
4648set use64bitall
4649eval $setvar
4650case "$use64bitall" in
4651"$define")
4652 case "$use64bitint" in
4653 "$undef")
4654 cat <<EOM
4655
4656Since you have chosen a maximally 64-bit build, I'm also turning on
4657the use of 64-bit integers.
4658EOM
4659 use64bitint="$define" ;;
4660 esac
4661 ;;
4662esac
4663
4664case "$use64bitint" in
4665"$define"|true|[yY]*)
4666: Look for a hint-file generated 'call-back-unit'. If the
4667: user has specified that a 64-bit perl is to be built,
4668: we may need to set or change some other defaults.
4669 if $test -f use64bitint.cbu; then
4670 echo "Your platform has some specific hints for 64-bit integers, using them..."
4671 . ./use64bitint.cbu
4672 fi
4673 case "$longsize" in
4674 4) case "$archname64" in
4675 '') archname64=64int ;;
4676 esac
4677 ;;
4678 esac
4679 ;;
4680esac
4681
4682case "$use64bitall" in
4683"$define"|true|[yY]*)
4684: Look for a hint-file generated 'call-back-unit'. If the
4685: user has specified that a maximally 64-bit perl is to be built,
4686: we may need to set or change some other defaults.
4687 if $test -f use64bitall.cbu; then
4688 echo "Your platform has some specific hints for 64-bit builds, using them..."
4689 . ./use64bitall.cbu
4690 fi
4691 case "$longsize" in
4692 4) case "$archname64" in
4693 ''|64int) archname64=64all ;;
4694 esac
4695 ;;
4696 esac
4697 ;;
4698esac
4699
4700echo " "
4701echo "Checking for GNU C Library..." >&4
4702cat >gnulibc.c <<EOM
4703#include <stdio.h>
4704int main()
4705{
4706#ifdef __GLIBC__
4707 exit(0);
4708#else
4709 exit(1);
4710#endif
4711}
4712EOM
4713set gnulibc
4714if eval $compile_ok && ./gnulibc; then
4715 val="$define"
4716 echo "You are using the GNU C Library"
4717else
4718 val="$undef"
4719 echo "You are not using the GNU C Library"
4720fi
4721$rm -f gnulibc*
4722set d_gnulibc
4723eval $setvar
4724
4725: see if nm is to be used to determine whether a symbol is defined or not
4726case "$usenm" in
4727'')
4728 dflt=''
c1a7f87b
JH
4729 case "$d_gnulibc" in
4730 "$define")
4731 echo " "
4732 echo "nm probably won't work on the GNU C Library." >&4
4733 dflt=n
bd9b35c9 4734 ;;
c1a7f87b
JH
4735 esac
4736 case "$dflt" in
4737 '')
4738 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4739 echo " "
4740 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4741 echo "'nm' won't be sufficient on this sytem." >&4
4742 dflt=n
4743 fi
4744 ;;
4745 esac
4746 case "$dflt" in
4747 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4748 if $test $dflt -gt 20; then
4749 dflt=y
4750 else
4751 dflt=n
4752 fi
bd9b35c9
JH
4753 ;;
4754 esac
bd9b35c9
JH
4755 ;;
4756*)
c1a7f87b
JH
4757 case "$usenm" in
4758 true|$define) dflt=y;;
4759 *) dflt=n;;
4760 esac
bd9b35c9
JH
4761 ;;
4762esac
4763$cat <<EOM
4764
c1a7f87b
JH
4765I can use $nm to extract the symbols from your C libraries. This
4766is a time consuming task which may generate huge output on the disk (up
4767to 3 megabytes) but that should make the symbols extraction faster. The
4768alternative is to skip the 'nm' extraction part and to compile a small
4769test program instead to determine whether each symbol is present. If
4770you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4771this may be the best solution.
4772
4773You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
4774
4775EOM
c1a7f87b
JH
4776rp="Shall I use $nm to extract C symbols from the libraries?"
4777. ./myread
4778case "$ans" in
4779[Nn]*) usenm=false;;
4780*) usenm=true;;
bd9b35c9 4781esac
bd9b35c9 4782
c1a7f87b
JH
4783runnm=$usenm
4784case "$reuseval" in
4785true) runnm=false;;
8e07c86e 4786esac
29209bc5 4787
c1a7f87b
JH
4788: nm options which may be necessary
4789case "$nm_opt" in
4790'') if $test -f /mach_boot; then
4791 nm_opt='' # Mach
4792 elif $test -d /usr/ccs/lib; then
4793 nm_opt='-p' # Solaris (and SunOS?)
4794 elif $test -f /dgux; then
4795 nm_opt='-p' # DG-UX
4796 elif $test -f /lib64/rld; then
4797 nm_opt='-p' # 64-bit Irix
4798 else
4799 nm_opt=''
4800 fi;;
4801esac
bd9b35c9 4802
c1a7f87b
JH
4803: nm options which may be necessary for shared libraries but illegal
4804: for archive libraries. Thank you, Linux.
4805case "$nm_so_opt" in
4806'') case "$myuname" in
4807 *linux*)
4808 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4809 nm_so_opt='--dynamic'
4810 fi
4811 ;;
bd9b35c9 4812 esac
c1a7f87b
JH
4813 ;;
4814esac
8e07c86e 4815
c1a7f87b
JH
4816case "$runnm" in
4817true)
4818: get list of predefined functions in a handy place
4819echo " "
4820case "$libc" in
4821'') libc=unknown
4822 case "$libs" in
4823 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 4824 esac
ff935051
JH
4825 ;;
4826esac
c1a7f87b
JH
4827libnames='';
4828case "$libs" in
4829'') ;;
4830*) for thislib in $libs; do
4831 case "$thislib" in
4832 -lc|-lc_s)
4833 : Handle C library specially below.
4834 ;;
4835 -l*)
4836 thislib=`echo $thislib | $sed -e 's/^-l//'`
4837 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4838 :
4839 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4840 :
4841 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4842 :
4843 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4844 :
4845 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4846 :
4847 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4848 :
4849 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4850 :
4851 else
4852 try=''
4853 fi
4854 libnames="$libnames $try"
4855 ;;
4856 *) libnames="$libnames $thislib" ;;
34d1710f 4857 esac
c1a7f87b 4858 done
4633a7c4
LW
4859 ;;
4860esac
c1a7f87b
JH
4861xxx=normal
4862case "$libc" in
4863unknown)
4864 set /lib/libc.$so
4865 for xxx in $libpth; do
4866 $test -r $1 || set $xxx/libc.$so
4867 : The messy sed command sorts on library version numbers.
4868 $test -r $1 || \
4869 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4870 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4871 h
4872 s/[0-9][0-9]*/0000&/g
4873 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4874 G
4875 s/\n/ /' | \
381aa1ff 4876 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
4877 eval set \$$#
4878 done
4879 $test -r $1 || set /usr/ccs/lib/libc.$so
4880 $test -r $1 || set /lib/libsys_s$_a
4881 ;;
4882*)
4883 set blurfl
4884 ;;
a4f3eea9 4885esac
c1a7f87b
JH
4886if $test -r "$1"; then
4887 echo "Your (shared) C library seems to be in $1."
4888 libc="$1"
4889elif $test -r /lib/libc && $test -r /lib/clib; then
4890 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4891 xxx=apollo
4892 libc='/lib/clib /lib/libc'
4893 if $test -r /lib/syslib; then
4894 echo "(Your math library is in /lib/syslib.)"
4895 libc="$libc /lib/syslib"
4896 fi
4897elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4898 echo "Your C library seems to be in $libc, as you said before."
4899elif $test -r $incpath/usr/lib/libc$_a; then
4900 libc=$incpath/usr/lib/libc$_a;
4901 echo "Your C library seems to be in $libc. That's fine."
4902elif $test -r /lib/libc$_a; then
4903 libc=/lib/libc$_a;
4904 echo "Your C library seems to be in $libc. You're normal."
4905else
4906 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4907 :
4908 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4909 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4910 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4911 :
4912 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4913 :
4914 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4915 :
4916 else
4917 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4918 fi
4919 if $test -r "$tans"; then
4920 echo "Your C library seems to be in $tans, of all places."
4921 libc=$tans
4922 else
4923 libc='blurfl'
4924 fi
4925fi
4926if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4927 dflt="$libc"
4928 cat <<EOM
a4f3eea9 4929
c1a7f87b
JH
4930If the guess above is wrong (which it might be if you're using a strange
4931compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
4932
4933EOM
a4f3eea9 4934else
c1a7f87b 4935 dflt=''
381aa1ff 4936 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
4937 cat >&4 <<EOM
4938I can't seem to find your C library. I've looked in the following places:
a4f3eea9 4939
c1a7f87b
JH
4940EOM
4941 $sed 's/^/ /' libpath
4942 cat <<EOM
29209bc5 4943
c1a7f87b 4944None of these seems to contain your C library. I need to get its name...
a4f3eea9 4945
bd9b35c9 4946EOM
bd9b35c9 4947fi
c1a7f87b
JH
4948fn=f
4949rp='Where is your C library?'
4950. ./getfile
4951libc="$ans"
a4f3eea9 4952
c1a7f87b 4953echo " "
381aa1ff 4954echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
4955set X `cat libnames`
4956shift
4957xxx=files
4958case $# in 1) xxx=file; esac
4959echo "Extracting names from the following $xxx for later perusal:" >&4
4960echo " "
4961$sed 's/^/ /' libnames >&4
4962echo " "
4963$echo $n "This may take a while...$c" >&4
a4f3eea9 4964
c1a7f87b
JH
4965for file in $*; do
4966 case $file in
4967 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4968 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4969 esac
c1a7f87b 4970done >libc.tmp
a4f3eea9 4971
c1a7f87b
JH
4972$echo $n ".$c"
4973$grep fprintf libc.tmp > libc.ptf
4974xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4975xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4976xxx='[ADTSIW]'
4977if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4978 eval $xscan;\
4979 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4980 eval $xrun
4981elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4982 eval $xscan;\
4983 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4984 eval $xrun
4985elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4986 eval $xscan;\
4987 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988 eval $xrun
4989elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4990 eval $xscan;\
4991 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992 eval $xrun
4993elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4994 eval $xscan;\
4995 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996 eval $xrun
4997elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4998 eval $xscan;\
4999 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000 eval $xrun
5001elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5002 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5003 eval $xscan;\
5004 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5005 eval $xrun
5006elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5007 eval $xscan;\
5008 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5009 eval $xrun
5010elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5011 eval $xscan;\
5012 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5013 eval $xrun
5014elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5015 eval $xscan;\
5016 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5017 eval $xrun
5018elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5019 eval $xscan;\
5020 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5021 eval $xrun
5022elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5023 eval $xscan;\
5024 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5025 eval $xrun
5026elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5027 eval $xscan;\
5028 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5029 eval $xrun
5030elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5031 eval $xscan;\
5032 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5033 eval $xrun
5034else
5035 $nm -p $* 2>/dev/null >libc.tmp
5036 $grep fprintf libc.tmp > libc.ptf
5037 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5038 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5039 then
5040 nm_opt='-p'
5041 eval $xrun
bd9b35c9 5042 else
c1a7f87b
JH
5043 echo " "
5044 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5045 com=''
5046 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5047 for thisname in $libnames $libc; do
5048 $ar t $thisname >>libc.tmp
5049 done
5050 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5051 echo "Ok." >&4
5052 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5053 # Repeat libc to extract forwarders to DLL entries too
5054 for thisname in $libnames $libc; do
5055 $ar tv $thisname >>libc.tmp
5056 # Revision 50 of EMX has bug in $ar.
5057 # it will not extract forwarders to DLL entries
5058 # Use emximp which will extract exactly them.
5059 emximp -o tmp.imp $thisname \
5060 2>/dev/null && \
5061 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5062 < tmp.imp >>libc.tmp
5063 $rm tmp.imp
5064 done
5065 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5066 echo "Ok." >&4
5067 else
5068 echo "$ar didn't seem to work right." >&4
5069 echo "Maybe this is a Cray...trying bld instead..." >&4
5070 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5071 then
5072 for thisname in $libnames; do
5073 bld t $libnames | \
5074 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5075 $ar t $thisname >>libc.tmp
5076 done
5077 echo "Ok." >&4
bd9b35c9 5078 else
c1a7f87b
JH
5079 echo "That didn't work either. Giving up." >&4
5080 exit 1
bd9b35c9 5081 fi
c1a7f87b 5082 fi
a4f3eea9 5083 fi
a4f3eea9 5084fi
c1a7f87b
JH
5085nm_extract="$com"
5086if $test -f /lib/syscalls.exp; then
5087 echo " "
5088 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5089 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5090fi
5091;;
5092esac
5093$rm -f libnames libpath
bd9b35c9 5094
c1a7f87b
JH
5095: is a C symbol defined?
5096csym='tlook=$1;
5097case "$3" in
5098-v) tf=libc.tmp; tc=""; tdc="";;
5099-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5100*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5101esac;
5102tx=yes;
5103case "$reuseval-$4" in
5104true-) ;;
5105true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5106esac;
5107case "$tx" in
5108yes)
5109 case "$runnm" in
5110 true)
5111 if $contains $tlook $tf >/dev/null 2>&1;
5112 then tval=true;
5113 else tval=false;
5114 fi;;
5115 *)
5116 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5117 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5118 then tval=true;
5119 else tval=false;
5120 fi;
5121 $rm -f t t.c;;
5122 esac;;
5123*)
5124 case "$tval" in
5125 $define) tval=true;;
5126 *) tval=false;;
5127 esac;;
5128esac;
5129eval "$2=$tval"'
bd9b35c9 5130
c1a7f87b
JH
5131: define an is-in-libc? function
5132inlibc='echo " "; td=$define; tu=$undef;
5133sym=$1; var=$2; eval "was=\$$2";
5134tx=yes;
5135case "$reuseval$was" in
5136true) ;;
5137true*) tx=no;;
5138esac;
5139case "$tx" in
5140yes)
5141 set $sym tres -f;
5142 eval $csym;
5143 case "$tres" in
5144 true)
5145 echo "$sym() found." >&4;
5146 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5147 *)
5148 echo "$sym() NOT found." >&4;
5149 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5150 esac;;
bd9b35c9 5151*)
c1a7f87b
JH
5152 case "$was" in
5153 $define) echo "$sym() found." >&4;;
5154 *) echo "$sym() NOT found." >&4;;
5155 esac;;
5156esac'
5157
b4eb6b3d
JH
5158: see if sqrtl exists
5159set sqrtl d_sqrtl
c1a7f87b
JH
5160eval $inlibc
5161
b4eb6b3d
JH
5162case "$ccflags" in
5163*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5164esac
b4eb6b3d
JH
5165
5166case "$uselongdouble" in
5167$define|true|[yY]*) dflt='y';;
5168*) dflt='n';;
5169esac
5170cat <<EOM
5171
5172Perl can be built to take advantage of long doubles which
5173(if available) may give more accuracy and range for floating point numbers.
5174
5175If this doesn't make any sense to you, just accept the default '$dflt'.
5176EOM
5177rp='Try to use long doubles if available?'
c1a7f87b
JH
5178. ./myread
5179case "$ans" in
b4eb6b3d
JH
5180y|Y) val="$define" ;;
5181*) val="$undef" ;;
5182esac
5183set uselongdouble
5184eval $setvar
bfb7748a 5185
b4eb6b3d
JH
5186case "$uselongdouble" in
5187true|[yY]*) uselongdouble="$define" ;;
5188esac
bfb7748a 5189
b4eb6b3d
JH
5190case "$uselongdouble" in
5191$define)
5192: Look for a hint-file generated 'call-back-unit'. If the
5193: user has specified that long doubles should be used,
5194: we may need to set or change some other defaults.
5195 if $test -f uselongdouble.cbu; then
5196 echo "Your platform has some specific hints for long doubles, using them..."
5197 . ./uselongdouble.cbu
5198 else
5199 $cat <<EOM
5200(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5201EOM
b4eb6b3d
JH
5202 fi
5203 ;;
5204esac
5205
5206case "$uselongdouble:$d_sqrtl" in
5207$define:$undef)
5208 $cat <<EOM >&4
5209
5210*** You requested the use of long doubles but you do not seem to have
5211*** the mathematic functions for long doubles. I'm disabling the use
5212*** of long doubles.
5213
5214EOM
5215 uselongdouble=$undef
5216 ;;
5217esac
5218
5219: check for length of double
5220echo " "
5221case "$doublesize" in
5222'')
5223 echo "Checking to see how big your double precision numbers are..." >&4
5224 $cat >try.c <<'EOCP'
5225#include <stdio.h>
5226int main()
5227{
5228 printf("%d\n", (int)sizeof(double));
5229 exit(0);
5230}
5231EOCP
5232 set try
5233 if eval $compile_ok; then
5234 doublesize=`./try`
5235 echo "Your double is $doublesize bytes long."
5236 else
5237 dflt='8'
5238 echo "(I can't seem to compile the test program. Guessing...)"
5239 rp="What is the size of a double precision number (in bytes)?"
5240 . ./myread
5241 doublesize="$ans"
5242 fi
5243 ;;
5244esac
5245$rm -f try.c try
5246
5247: check for long doubles
5248echo " "
5249echo "Checking to see if you have long double..." >&4
5250echo 'int main() { long double x = 7.0; }' > try.c
5251set try
5252if eval $compile; then
5253 val="$define"
5254 echo "You have long double."
5255else
5256 val="$undef"
5257 echo "You do not have long double."
5258fi
5259$rm try.*
5260set d_longdbl
5261eval $setvar
5262
5263: check for length of long double
5264case "${d_longdbl}${longdblsize}" in
5265$define)
5266 echo " "
5267 echo "Checking to see how big your long doubles are..." >&4
5268 $cat >try.c <<'EOCP'
5269#include <stdio.h>
5270int main()
5271{
5272 printf("%d\n", sizeof(long double));
5273}
5274EOCP
5275 set try
5276 set try
5277 if eval $compile; then
5278 longdblsize=`./try$exe_ext`
5279 echo "Your long doubles are $longdblsize bytes long."
5280 else
5281 dflt='8'
5282 echo " "
5283 echo "(I can't seem to compile the test program. Guessing...)" >&4
5284 rp="What is the size of a long double (in bytes)?"
5285 . ./myread
5286 longdblsize="$ans"
5287 fi
5288 if $test "X$doublesize" = "X$longdblsize"; then
5289 echo "(That isn't any different from an ordinary double.)"
5290 fi
5291 ;;
5292esac
5293$rm -f try.* try
5294
51de783f
JH
5295case "$useperlio" in
5296$define|true|[yY]*) dflt='y';;
5297*) dflt='n';;
5298esac
5299cat <<EOM
5300
5301Previous version of $package used the standard IO mechanisms as
5302defined in <stdio.h>. Versions 5.003_02 and later of perl allow
5303alternate IO mechanisms via the PerlIO abstraction layer, but the
5304stdio mechanism is still the default. This abstraction layer can
5305use AT&T's sfio (if you already have sfio installed) or regular stdio.
5306Using PerlIO with sfio may cause problems with some extension modules.
5307
5308If this doesn't make any sense to you, just accept the default '$dflt'.
5309EOM
5310rp='Use the experimental PerlIO abstraction layer?'
5311. ./myread
5312case "$ans" in
5313y|Y)
5314 val="$define"
5315 ;;
5316*)
5317 echo "Ok, doing things the stdio way."
5318 val="$undef"
5319 ;;
5320esac
5321set useperlio
5322eval $setvar
5323
5324case "$usesocks" in
5325$define|true|[yY]*)
5326 case "$useperlio" in
5327 $define|true|[yY]*) ;;
5328 *) cat >&4 <<EOM
5329
5330You are using the SOCKS proxy protocol library which means that you
5331should also use the PerlIO layer. You may be headed for trouble.
5332
5333EOM
5334 ;;
5335 esac
5336 ;;
5337esac
5338
5339
b4eb6b3d
JH
5340: determine the architecture name
5341echo " "
5342if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5343 tarch=`arch`"-$osname"
5344elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5345 if uname -m > tmparch 2>&1 ; then
5346 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5347 -e 's/$/'"-$osname/" tmparch`
5348 else
5349 tarch="$osname"
5350 fi
5351 $rm -f tmparch
5352else
5353 tarch="$osname"
5354fi
5355case "$myarchname" in
5356''|"$tarch") ;;
5357*)
5358 echo "(Your architecture name used to be $myarchname.)"
5359 archname=''
5360 ;;
5361esac
5362myarchname="$tarch"
5363case "$archname" in
5364'') dflt="$tarch";;
5365*) dflt="$archname";;
5366esac
5367rp='What is your architecture name'
5368. ./myread
5369archname="$ans"
5370case "$usethreads" in
5371$define)
5372 echo "Threads selected." >&4
5373 case "$archname" in
5374 *-thread*) echo "...and architecture name already has -thread." >&4
5375 ;;
5376 *) archname="$archname-thread"
5377 echo "...setting architecture name to $archname." >&4
5378 ;;
5379 esac
5380 ;;
5381esac
5382case "$usemultiplicity" in
5383$define)
5384 echo "Multiplicity selected." >&4
5385 case "$archname" in
5386 *-multi*) echo "...and architecture name already has -multi." >&4
5387 ;;
5388 *) archname="$archname-multi"
5389 echo "...setting architecture name to $archname." >&4
5390 ;;
5391 esac
5392 ;;
5393esac
5394case "$use64bitint$use64bitall" in
5395*"$define"*)
5396 case "$archname64" in
5397 '')
5398 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5399 ;;
5400 *)
5401 case "$use64bitint" in
5402 "$define") echo "64 bit integers selected." >&4 ;;
5403 esac
5404 case "$use64bitall" in
5405 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5406 esac
5407 case "$archname" in
5408 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5409 ;;
5410 *) archname="$archname-$archname64"
5411 echo "...setting architecture name to $archname." >&4
5412 ;;
5413 esac
5414 ;;
5415 esac
5416esac
5417case "$uselongdouble" in
5418$define)
5419 echo "Long doubles selected." >&4
5420 case "$longdblsize" in
5421 $doublesize)
5422 "...but long doubles are equal to doubles, not changing architecture name." >&4
5423 ;;
5424 *)
5425 case "$archname" in
5426 *-ld*) echo "...and architecture name already has -ld." >&4
5427 ;;
5428 *) archname="$archname-ld"
5429 echo "...setting architecture name to $archname." >&4
5430 ;;
5431 esac
5432 ;;
5433 esac
5434 ;;
5435esac
51de783f
JH
5436case "$useperlio" in
5437$define)
5438 echo "Perlio selected." >&4
5439 case "$archname" in
5440 *-perlio*) echo "...and architecture name already has -perlio." >&4
5441 ;;
5442 *) archname="$archname-perlio"
5443 echo "...setting architecture name to $archname." >&4
5444 ;;
5445 esac
5446 ;;
5447esac
b4eb6b3d
JH
5448
5449: determine root of directory hierarchy where package will be installed.
5450case "$prefix" in
5451'')
5452 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5453 ;;
5454*)
5455 dflt="$prefix"
5456 ;;
5457esac
5458$cat <<EOM
5459
5460By default, $package will be installed in $dflt/bin, manual pages
5461under $dflt/man, etc..., i.e. with $dflt as prefix for all
5462installation directories. Typically this is something like /usr/local.
5463If you wish to have binaries under /usr/bin but other parts of the
5464installation under /usr/local, that's ok: you will be prompted
5465separately for each of the installation directories, the prefix being
5466only used to set the defaults.
5467
5468EOM
5469fn=d~
5470rp='Installation prefix to use?'
5471. ./getfile
5472oldprefix=''
5473case "$prefix" in
5474'') ;;
5475*)
5476 case "$ans" in
5477 "$prefix") ;;
5478 *) oldprefix="$prefix";;
5479 esac
5480 ;;
5481esac
5482prefix="$ans"
5483prefixexp="$ansexp"
5484
5485: is AFS running?
5486echo " "
5487case "$afs" in
5488$define|true) afs=true ;;
5489$undef|false) afs=false ;;
5490*) if test -d /afs; then
5491 afs=true
5492 else
5493 afs=false
5494 fi
5495 ;;
5496esac
5497if $afs; then
5498 echo "AFS may be running... I'll be extra cautious then..." >&4
5499else
5500 echo "AFS does not seem to be running..." >&4
5501fi
5502
5503: determine installation prefix for where package is to be installed.
5504if $afs; then
5505$cat <<EOM
5506
5507Since you are running AFS, I need to distinguish the directory in which
5508files will reside from the directory in which they are installed (and from
5509which they are presumably copied to the former directory by occult means).
5510
5511EOM
5512 case "$installprefix" in
5513 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5514 *) dflt="$installprefix";;
5515 esac
5516else
5517$cat <<EOM
5518
5519In some special cases, particularly when building $package for distribution,
5520it is convenient to distinguish between the directory in which files should
5521be installed from the directory ($prefix) in which they
5522will eventually reside. For most users, these two directories are the same.
5523
5524EOM
5525 case "$installprefix" in
5526 '') dflt=$prefix ;;
5527 *) dflt=$installprefix;;
5528 esac
5529fi
5530fn=d~
5531rp='What installation prefix should I use for installing files?'
5532. ./getfile
5533installprefix="$ans"
5534installprefixexp="$ansexp"
5535
5536: set the prefixit variable, to compute a suitable default value
5537prefixit='case "$3" in
5538""|none)
5539 case "$oldprefix" in
5540 "") eval "$1=\"\$$2\"";;
5541 *)
5542 case "$3" in
5543 "") eval "$1=";;
5544 none)
5545 eval "tp=\"\$$2\"";
5546 case "$tp" in
5547 ""|" ") eval "$1=\"\$$2\"";;
5548 *) eval "$1=";;
5549 esac;;
5550 esac;;
5551 esac;;
5552*)
5553 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5554 case "$tp" in
5555 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5556 /*-$oldprefix/*|\~*-$oldprefix/*)
5557 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5558 *) eval "$1=\"\$$2\"";;
5559 esac;;
5560esac'
5561
5562
5563: get the patchlevel
5564echo " "
5565echo "Getting the current patchlevel..." >&4
5566if $test -r $rsrc/patchlevel.h;then
5567 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5568 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5569 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5570 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5571 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5572 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5573else
5574 revision=0
5575 patchlevel=0
5576 subversion=0
5577 api_revision=0
5578 api_version=0
5579 api_subversion=0
5580fi
5581$echo "(You have $package version $patchlevel subversion $subversion.)"
5582case "$osname" in
5583dos|vms)
5584 : XXX Should be a Configure test for double-dots in filenames.
5585 version=`echo $revision $patchlevel $subversion | \
5586 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5587 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5588 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5589 ;;
5590*)
5591 version=`echo $revision $patchlevel $subversion | \
5592 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5593 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5594 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5595 ;;
5596esac
5597: Special case the 5.005_xx maintenance series, which used 5.005
5598: without any subversion label as a subdirectory in $sitelib
5599if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5600 api_versionstring='5.005'
5601fi
5602
5603: determine installation style
5604: For now, try to deduce it from prefix unless it is already set.
5605: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5606case "$installstyle" in
5607'') case "$prefix" in
5608 *perl*) dflt='lib';;
5609 *) dflt='lib/perl5' ;;
5610 esac
5611 ;;
5612*) dflt="$installstyle" ;;
5613esac
5614: Probably not worth prompting for this since we prompt for all
5615: the directories individually, and the prompt would be too long and
5616: confusing anyway.
5617installstyle=$dflt
5618
5619: determine where private library files go
5620: Usual default is /usr/local/lib/perl5/$version.
5621: Also allow things like /opt/perl/lib/$version, since
5622: /opt/perl/lib/perl5... would be redundant.
5623: The default "style" setting is made in installstyle.U
5624case "$installstyle" in
5625*lib/perl5*) set dflt privlib lib/$package/$version ;;
5626*) set dflt privlib lib/$version ;;
5627esac
5628eval $prefixit
5629$cat <<EOM
5630
5631There are some auxiliary files for $package that need to be put into a
5632private library directory that is accessible by everyone.
5633
5634EOM
5635fn=d~+
5636rp='Pathname where the private library files will reside?'
5637. ./getfile
5638privlib="$ans"
5639privlibexp="$ansexp"
5640: Change installation prefix, if necessary.
5641if $test X"$prefix" != X"$installprefix"; then
5642 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5643else
5644 installprivlib="$privlibexp"
5645fi
5646
5647: set the prefixup variable, to restore leading tilda escape
5648prefixup='case "$prefixexp" in
5649"$prefix") ;;
5650*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5651esac'
5652
5653: determine where public architecture dependent libraries go
5654set archlib archlib
5655eval $prefixit
5656: privlib default is /usr/local/lib/$package/$version
5657: archlib default is /usr/local/lib/$package/$version/$archname
5658: privlib may have an optional trailing /share.
5659tdflt=`echo $privlib | $sed 's,/share$,,'`
5660tdflt=$tdflt/$archname
5661case "$archlib" in
5662'') dflt=$tdflt
5663 ;;
5664*) dflt="$archlib"
5665 ;;
5666esac
5667$cat <<EOM
5668
5669$spackage contains architecture-dependent library files. If you are
5670sharing libraries in a heterogeneous environment, you might store
5671these files in a separate location. Otherwise, you can just include
5672them with the rest of the public library files.
5673
5674EOM
5675fn=d+~
5676rp='Where do you want to put the public architecture-dependent libraries?'
5677. ./getfile
5678archlib="$ans"
5679archlibexp="$ansexp"
5680if $test X"$archlib" = X"$privlib"; then
5681 d_archlib="$undef"
5682else
5683 d_archlib="$define"
5684fi
5685: Change installation prefix, if necessary.
5686if $test X"$prefix" != X"$installprefix"; then
5687 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5688else
5689 installarchlib="$archlibexp"
5690fi
5691
5692
5693: Binary compatibility with 5.005 is not possible for builds
5694: with advanced features
5695case "$usethreads$usemultiplicity" in
5696*define*)
5697 bincompat5005="$undef"
5698 d_bincompat5005="$undef"
5699 ;;
5700*) $cat <<EOM
5701
5702This version of Perl can be compiled for binary compatibility with 5.005.
5703If you decide to do so, you will be able to continue using most of the
5704extensions that were compiled for Perl 5.005.
5705
5706EOM
5707 case "$bincompat5005$d_bincompat5005" in
5708 *"$undef"*) dflt=n ;;
5709 *) dflt=y ;;
5710 esac
5711 rp='Binary compatibility with Perl 5.005?'
5712 . ./myread
5713 case "$ans" in
5714 y*) val="$define" ;;
5715 *) val="$undef" ;;
5716 esac
5717 set d_bincompat5005
5718 eval $setvar
5719 case "$d_bincompat5005" in
5720 "$define")
5721 bincompat5005="$define"
5722 ;;
5723 *) bincompat5005="$undef"
5724 d_bincompat5005="$undef"
5725 ;;
5726 esac
5727 ;;
5728esac
5729
5730
5731: see if setuid scripts can be secure
5732$cat <<EOM
5733
5734Some kernels have a bug that prevents setuid #! scripts from being
5735secure. Some sites have disabled setuid #! scripts because of this.
5736
5737First let's decide if your kernel supports secure setuid #! scripts.
5738(If setuid #! scripts would be secure but have been disabled anyway,
5739don't say that they are secure if asked.)
5740
5741EOM
5742
5743val="$undef"
5744if $test -d /dev/fd; then
5745 echo "#!$ls" >reflect
5746 chmod +x,u+s reflect
5747 ./reflect >flect 2>&1
5748 if $contains "/dev/fd" flect >/dev/null; then
5749 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5750 val="$define"
5751 else
5752 $cat <<EOM
5753If you are not sure if they are secure, I can check but I'll need a
5754username and password different from the one you are using right now.
5755If you don't have such a username or don't want me to test, simply
5756enter 'none'.
5757
5758EOM
5759 rp='Other username to test security of setuid scripts with?'
5760 dflt='none'
5761 . ./myread
5762 case "$ans" in
5763 n|none)
5764 case "$d_suidsafe" in
5765 '') echo "I'll assume setuid scripts are *not* secure." >&4
5766 dflt=n;;
5767 "$undef")
5768 echo "Well, the $hint value is *not* secure." >&4
5769 dflt=n;;
5770 *) echo "Well, the $hint value *is* secure." >&4
5771 dflt=y;;
5772 esac
c1a7f87b 5773 ;;
b4eb6b3d
JH
5774 *)
5775 $rm -f reflect flect
5776 echo "#!$ls" >reflect
5777 chmod +x,u+s reflect
5778 echo >flect
5779 chmod a+w flect
5780 echo '"su" will (probably) prompt you for '"$ans's password."
5781 su $ans -c './reflect >flect'
5782 if $contains "/dev/fd" flect >/dev/null; then
5783 echo "Okay, it looks like setuid scripts are secure." >&4
5784 dflt=y
5785 else
5786 echo "I don't think setuid scripts are secure." >&4
5787 dflt=n
5788 fi
5789 ;;
5790 esac
5791 rp='Does your kernel have *secure* setuid scripts?'
5792 . ./myread
5793 case "$ans" in
5794 [yY]*) val="$define";;
5795 *) val="$undef";;
5796 esac
5797 fi
5798else
5799 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5800 echo "(That's for file descriptors, not floppy disks.)"
5801 val="$undef"
5802fi
5803set d_suidsafe
5804eval $setvar
5805
5806$rm -f reflect flect
5807
5808: now see if they want to do setuid emulation
5809echo " "
5810val="$undef"
5811case "$d_suidsafe" in
5812"$define")
5813 val="$undef"
5814 echo "No need to emulate SUID scripts since they are secure here." >& 4
5815 ;;
5816*)
5817 $cat <<EOM
5818Some systems have disabled setuid scripts, especially systems where
5819setuid scripts cannot be secure. On systems where setuid scripts have
5820been disabled, the setuid/setgid bits on scripts are currently
5821useless. It is possible for $package to detect those bits and emulate
5822setuid/setgid in a secure fashion. This emulation will only work if
5823setuid scripts have been disabled in your kernel.
5824
5825EOM
5826 case "$d_dosuid" in
5827 "$define") dflt=y ;;
5828 *) dflt=n ;;
5829 esac
5830 rp="Do you want to do setuid/setgid emulation?"
5831 . ./myread
5832 case "$ans" in
5833 [yY]*) val="$define";;
5834 *) val="$undef";;
5835 esac
5836 ;;
5837esac
5838set d_dosuid
5839eval $setvar
5840
5841: determine filename position in cpp output
5842echo " "
5843echo "Computing filename position in cpp output for #include directives..." >&4
5844echo '#include <stdio.h>' > foo.c
5845$cat >fieldn <<EOF
5846$startsh
5847$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5848$grep '^[ ]*#.*stdio\.h' | \
5849while read cline; do
5850 pos=1
5851 set \$cline
5852 while $test \$# -gt 0; do
5853 if $test -r \`echo \$1 | $tr -d '"'\`; then
5854 echo "\$pos"
5855 exit 0
5856 fi
5857 shift
5858 pos=\`expr \$pos + 1\`
5859 done
5860done
5861EOF
5862chmod +x fieldn
5863fieldn=`./fieldn`
5864$rm -f foo.c fieldn
5865case $fieldn in
5866'') pos='???';;
58671) pos=first;;
58682) pos=second;;
58693) pos=third;;
5870*) pos="${fieldn}th";;
5871esac
5872echo "Your cpp writes the filename in the $pos field of the line."
5873
5874: locate header file
5875$cat >findhdr <<EOF
5876$startsh
5877wanted=\$1
5878name=''
5879for usrincdir in $usrinc
5880do
5881 if test -f \$usrincdir/\$wanted; then
5882 echo "\$usrincdir/\$wanted"
5883 exit 0
5884 fi
5885done
5886awkprg='{ print \$$fieldn }'
5887echo "#include <\$wanted>" > foo\$\$.c
5888$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5889$grep "^[ ]*#.*\$wanted" | \
5890while read cline; do
5891 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5892 case "\$name" in
5893 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5894 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5895 *) exit 2;;
5896 esac;
5897done;
5898#
5899# status = 0: grep returned 0 lines, case statement not executed
5900# status = 1: headerfile found
5901# status = 2: while loop executed, no headerfile found
5902#
5903status=\$?
5904$rm -f foo\$\$.c;
5905if test \$status -eq 1; then
5906 exit 0;
5907fi
5908exit 1
5909EOF
5910chmod +x findhdr
5911
5912: define an alternate in-header-list? function
5913inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5914cont=true; xxf="echo \"<\$1> found.\" >&4";
5915case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5916*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5917esac;
5918case $# in 4) instead=instead;; *) instead="at last";; esac;
5919while $test "$cont"; do
5920 xxx=`./findhdr $1`
5921 var=$2; eval "was=\$$2";
5922 if $test "$xxx" && $test -r "$xxx";
5923 then eval $xxf;
5924 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5925 cont="";
5926 else eval $xxnf;
5927 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5928 set $yyy; shift; shift; yyy=$@;
5929 case $# in 0) cont="";;
5930 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5931 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5932 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5933 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5934 esac;
5935done;
5936while $test "$yyy";
5937do set $yyy; var=$2; eval "was=\$$2";
5938 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5939 set $yyy; shift; shift; yyy=$@;
5940done'
5941
5942: see if this is a malloc.h system
5943set malloc.h i_malloc
5944eval $inhdr
5945
5946: see if stdlib is available
5947set stdlib.h i_stdlib
5948eval $inhdr
5949
5950: determine which malloc to compile in
5951echo " "
5952case "$usemymalloc" in
5953''|[yY]*|true|$define) dflt='y' ;;
5954*) dflt='n' ;;
5955esac
5956rp="Do you wish to attempt to use the malloc that comes with $package?"
5957. ./myread
5958usemymalloc="$ans"
5959case "$ans" in
5960y*|true)
5961 usemymalloc='y'
5962 mallocsrc='malloc.c'
5963 mallocobj="malloc$_o"
5964 d_mymalloc="$define"
5965 case "$libs" in
5966 *-lmalloc*)
5967 : Remove malloc from list of libraries to use
5968 echo "Removing unneeded -lmalloc from library list" >&4
5969 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5970 shift
5971 libs="$*"
5972 echo "libs = $libs" >&4
5973 ;;
5974 esac
5975 ;;
5976*)
5977 usemymalloc='n'
5978 mallocsrc=''
5979 mallocobj=''
5980 d_mymalloc="$undef"
5981 ;;
5982esac
5983
5984: compute the return types of malloc and free
5985echo " "
5986$cat >malloc.c <<END
5987#$i_malloc I_MALLOC
5988#$i_stdlib I_STDLIB
5989#include <stdio.h>
5990#include <sys/types.h>
5991#ifdef I_MALLOC
5992#include <malloc.h>
5993#endif
5994#ifdef I_STDLIB
5995#include <stdlib.h>
5996#endif
5997#ifdef TRY_MALLOC
5998void *malloc();
5999#endif
6000#ifdef TRY_FREE
6001void free();
6002#endif
6003END
6004case "$malloctype" in
6005'')
6006 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6007 malloctype='void *'
6008 else
6009 malloctype='char *'
6010 fi
6011 ;;
6012esac
6013echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6014
6015case "$freetype" in
6016'')
6017 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6018 freetype='void'
6019 else
6020 freetype='int'
6021 fi
6022 ;;
6023esac
6024echo "Your system uses $freetype free(), it would seem." >&4
6025$rm -f malloc.[co]
6026$cat <<EOM
6027
6028After $package is installed, you may wish to install various
6029add-on modules and utilities. Typically, these add-ons will
6030be installed under $prefix with the rest
6031of this package. However, you may wish to install such add-ons
6032elsewhere under a different prefix.
6033
6034If you do not wish to put everything under a single prefix, that's
6035ok. You will be prompted for the individual locations; this siteprefix
6036is only used to suggest the defaults.
6037
6038The default should be fine for most people.
6039
6040EOM
6041fn=d~+
6042rp='Installation prefix to use for add-on modules and utilities?'
6043: XXX Here might be another good place for an installstyle setting.
6044case "$siteprefix" in
6045'') dflt=$prefix ;;
6046*) dflt=$siteprefix ;;
6047esac
6048. ./getfile
6049: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6050oldsiteprefix=''
6051case "$siteprefix" in
6052'') ;;
6053*) case "$ans" in
6054 "$prefix") ;;
6055 *) oldsiteprefix="$prefix";;
6056 esac
6057 ;;
6058esac
6059siteprefix="$ans"
6060siteprefixexp="$ansexp"
6061
6062: determine where site specific libraries go.
6063: Usual default is /usr/local/lib/perl5/site_perl/$version
6064: The default "style" setting is made in installstyle.U
6065: XXX No longer works with Prefixit stuff.
6066prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6067case "$sitelib" in
6068'') case "$installstyle" in
6069 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6070 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6071 esac
6072 ;;
6073*) dflt="$sitelib"
6074 ;;
6075esac
6076$cat <<EOM
6077
6078The installation process will create a directory for
6079site-specific extensions and modules. Most users find it convenient
6080to place all site-specific files in this directory rather than in the
6081main distribution directory.
6082
6083EOM
6084fn=d~+
6085rp='Pathname for the site-specific library files?'
6086. ./getfile
6087sitelib="$ans"
6088sitelibexp="$ansexp"
6089sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6090: Change installation prefix, if necessary.
6091if $test X"$prefix" != X"$installprefix"; then
6092 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6093else
6094 installsitelib="$sitelibexp"
6095fi
6096
6097: determine where site specific architecture-dependent libraries go.
6098: sitelib default is /usr/local/lib/perl5/site_perl/$version
6099: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6100: sitelib may have an optional trailing /share.
6101case "$sitearch" in
6102'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6103 dflt="$dflt/$archname"
6104 ;;
6105*) dflt="$sitearch"
6106 ;;
6107esac
6108set sitearch sitearch none
6109eval $prefixit
6110$cat <<EOM
6111
6112The installation process will also create a directory for
6113architecture-dependent site-specific extensions and modules.
6114
6115EOM
6116fn=d~+
6117rp='Pathname for the site-specific architecture-dependent library files?'
6118. ./getfile
6119sitearch="$ans"
6120sitearchexp="$ansexp"
6121: Change installation prefix, if necessary.
6122if $test X"$prefix" != X"$installprefix"; then
6123 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6124else
6125 installsitearch="$sitearchexp"
6126fi
6127
6128$cat <<EOM
6129
6130The installation process will also create a directory for
6131vendor-supplied add-ons. Vendors who supply perl with their system
6132may find it convenient to place all vendor-supplied files in this
6133directory rather than in the main distribution directory. This will
6134ease upgrades between binary-compatible maintenance versions of perl.
6135
6136Of course you may also use these directories in whatever way you see
6137fit. For example, you might use them to access modules shared over a
6138company-wide network.
6139
6140The default answer should be fine for most people.
6141This causes further questions about vendor add-ons to be skipped
6142and no vendor-specific directories will be configured for perl.
6143
6144EOM
6145rp='Do you want to configure vendor-specific add-on directories?'
6146case "$usevendorprefix" in
6147define|true|[yY]*) dflt=y ;;
6148*) : User may have set vendorprefix directly on Configure command line.
6149 case "$vendorprefix" in
6150 ''|' ') dflt=n ;;
6151 *) dflt=y ;;
6152 esac
6153 ;;
6154esac
6155. ./myread
6156case "$ans" in
6157[yY]*) fn=d~+
6158 rp='Installation prefix to use for vendor-supplied add-ons?'
6159 case "$vendorprefix" in
6160 '') dflt='' ;;
6161 *) dflt=$vendorprefix ;;
6162 esac
6163 . ./getfile
6164 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6165 oldvendorprefix=''
6166 case "$vendorprefix" in
6167 '') ;;
6168 *) case "$ans" in
6169 "$prefix") ;;
6170 *) oldvendorprefix="$prefix";;
6171 esac
6172 ;;
6173 esac
6174 usevendorprefix="$define"
6175 vendorprefix="$ans"
6176 vendorprefixexp="$ansexp"
6177 ;;
6178*) usevendorprefix="$undef"
6179 vendorprefix=''
6180 vendorprefixexp=''
6181 ;;
6182esac
6183
6184case "$vendorprefix" in
6185'') d_vendorlib="$undef"
6186 vendorlib=''
6187 vendorlibexp=''
6188 ;;
6189*) d_vendorlib="$define"
6190 : determine where vendor-supplied modules go.
6191 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6192 case "$vendorlib" in
6193 '')
6194 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6195 case "$installstyle" in
6196 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6197 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6198 esac
6199 ;;
6200 *) dflt="$vendorlib"
6201 ;;
6202 esac
6203 fn=d~+
6204 rp='Pathname for the vendor-supplied library files?'
6205 . ./getfile
6206 vendorlib="$ans"
6207 vendorlibexp="$ansexp"
6208 ;;
6209esac
6210vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6211: Change installation prefix, if necessary.
6212if $test X"$prefix" != X"$installprefix"; then
6213 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6214else
6215 installvendorlib="$vendorlibexp"
6216fi
6217
6218case "$vendorprefix" in
6219'') d_vendorarch="$undef"
6220 vendorarch=''
6221 vendorarchexp=''
6222 ;;
6223*) d_vendorarch="$define"
6224 : determine where vendor-supplied architecture-dependent libraries go.
6225 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6226 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6227 : vendorlib may have an optional trailing /share.
6228 case "$vendorarch" in
6229 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6230 dflt="$dflt/$archname"
6231 ;;
6232 *) dflt="$vendorarch" ;;
6233 esac
6234 fn=d~+
6235 rp='Pathname for vendor-supplied architecture-dependent files?'
6236 . ./getfile
6237 vendorarch="$ans"
6238 vendorarchexp="$ansexp"
6239 ;;
6240esac
6241: Change installation prefix, if necessary.
6242if $test X"$prefix" != X"$installprefix"; then
6243 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6244else
6245 installvendorarch="$vendorarchexp"
6246fi
6247
6248: Final catch-all directories to search
6249$cat <<EOM
6250
6251Lastly, you can have perl look in other directories for extensions and
6252modules in addition to those already specified.
6253These directories will be searched after
6254 $sitearch
6255 $sitelib
6256EOM
6257test X"$vendorlib" != "X" && echo ' ' $vendorlib
6258test X"$vendorarch" != "X" && echo ' ' $vendorarch
6259echo ' '
6260case "$otherlibdirs" in
6261''|' ') dflt='none' ;;
6262*) dflt="$otherlibdirs" ;;
6263esac
6264$cat <<EOM
6265Enter a colon-separated set of extra paths to include in perl's @INC
6266search path, or enter 'none' for no extra paths.
6267
6268EOM
6269
6270rp='Colon-separated list of additional directories for perl to search?'
6271. ./myread
6272case "$ans" in
6273' '|''|none) otherlibdirs=' ' ;;
6274*) otherlibdirs="$ans" ;;
6275esac
6276case "$otherlibdirs" in
6277' ') val=$undef ;;
6278*) val=$define ;;
6279esac
6280set d_perl_otherlibdirs
6281eval $setvar
6282
6283: Cruising for prototypes
6284echo " "
6285echo "Checking out function prototypes..." >&4
6286$cat >prototype.c <<'EOCP'
6287int main(int argc, char *argv[]) {
6288 exit(0);}
6289EOCP
6290if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6291 echo "Your C compiler appears to support function prototypes."
6292 val="$define"
6293else
6294 echo "Your C compiler doesn't seem to understand function prototypes."
6295 val="$undef"
6296fi
6297set prototype
6298eval $setvar
6299$rm -f prototype*
6300
6301case "$prototype" in
6302"$define") ;;
6303*) ansi2knr='ansi2knr'
6304 echo " "
6305 cat <<EOM >&4
6306
6307$me: FATAL ERROR:
6308This version of $package can only be compiled by a compiler that
6309understands function prototypes. Unfortunately, your C compiler
6310 $cc $ccflags
6311doesn't seem to understand them. Sorry about that.
6312
6313If GNU cc is available for your system, perhaps you could try that instead.
6314
6315Eventually, we hope to support building Perl with pre-ANSI compilers.
6316If you would like to help in that effort, please contact <perlbug@perl.org>.
6317
6318Aborting Configure now.
6319EOM
6320 exit 2
6321 ;;
6322esac
6323
6324: determine where public executables go
6325echo " "
6326set dflt bin bin
6327eval $prefixit
6328fn=d~
6329rp='Pathname where the public executables will reside?'
6330. ./getfile
6331if $test "X$ansexp" != "X$binexp"; then
6332 installbin=''
6333fi
6334bin="$ans"
6335binexp="$ansexp"
6336: Change installation prefix, if necessary.
6337: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6338if $test X"$prefix" != X"$installprefix"; then
6339 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6340else
6341 installbin="$binexp"
6342fi
6343
6344: Find perl5.005 or later.
6345echo "Looking for a previously installed perl5.005 or later... "
6346case "$perl5" in
6347'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6348 : Check if this perl is recent and can load a simple module
6349 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6350 perl5=$tdir/perl
6351 break;
6352 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6353 perl5=$tdir/perl
6354 break;
6355 fi
6356 done
6357 ;;
6358*) perl5="$perl5"
6359 ;;
6360esac
6361case "$perl5" in
6362'') echo "None found. That's ok.";;
6363*) echo "Using $perl5." ;;
6364esac
6365
6366: Determine list of previous versions to include in @INC
6367$cat > getverlist <<EOPL
6368#!$perl5 -w
6369use File::Basename;
6370\$api_versionstring = "$api_versionstring";
6371\$version = "$version";
6372\$stem = "$sitelib_stem";
6373\$archname = "$archname";
6374EOPL
6375 $cat >> getverlist <<'EOPL'
6376# Can't have leading @ because metaconfig interprets it as a command!
6377;@inc_version_list=();
6378# XXX Redo to do opendir/readdir?
6379if (-d $stem) {
6380 chdir($stem);
6381 ;@candidates = glob("5.*");
6382}
6383else {
6384 ;@candidates = ();
6385}
6386
6387# XXX ToDo: These comparisons must be reworked when two-digit
6388# subversions come along, so that 5.7.10 compares as greater than
6389# 5.7.3! By that time, hope that 5.6.x is sufficiently
6390# widespread that we can use the built-in version vectors rather
6391# than reinventing them here. For 5.6.0, however, we must
6392# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6393foreach $d (@candidates) {
6394 if ($d lt $version) {
6395 if ($d ge $api_versionstring) {
6396 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6397 }
6398 elsif ($d ge "5.005") {
6399 unshift(@inc_version_list, grep { -d } $d);
6400 }
6401 }
6402 else {
6403 # Skip newer version. I.e. don't look in
6404 # 5.7.0 if we're installing 5.6.1.
6405 }
6406}
6407
6408if (@inc_version_list) {
6409 print join(' ', @inc_version_list);
6410}
6411else {
6412 # Blank space to preserve value for next Configure run.
6413 print " ";
6414}
6415EOPL
6416chmod +x getverlist
6417case "$inc_version_list" in
6418'') if test -x "$perl5"; then
6419 dflt=`$perl5 getverlist`
6420 else
6421 dflt='none'
6422 fi
6423 ;;
6424$undef) dflt='none' ;;
6425*) dflt="$inc_version_list" ;;
6426esac
6427case "$dflt" in
6428''|' ') dflt=none ;;
6429esac
6430case "$dflt" in
64315.005) case "$bincompat5005" in
6432 $define|true|[yY]*) ;;
6433 *) dflt=none ;;
6434 esac
6435 ;;
6436esac
6437$cat <<'EOM'
6438
6439In order to ease the process of upgrading, this version of perl
6440can be configured to use modules built and installed with earlier
6441versions of perl that were installed under $prefix. Specify here
6442the list of earlier versions that this version of perl should check.
6443If Configure detected no earlier versions of perl installed under
6444$prefix, then the list will be empty. Answer 'none' to tell perl
6445to not search earlier versions.
6446
6447The default should almost always be sensible, so if you're not sure,
6448just accept the default.
6449EOM
6450
6451rp='List of earlier versions to include in @INC?'
6452. ./myread
6453case "$ans" in
6454[Nn]one|''|' ') inc_version_list=' ' ;;
6455*) inc_version_list="$ans" ;;
6456esac
6457case "$inc_version_list" in
6458''|' ')
6459 inc_version_list_init='0';;
6460*) inc_version_list_init=`echo $inc_version_list |
6461 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6462 ;;
6463esac
6464$rm -f getverlist
6465
6466: determine whether to install perl also as /usr/bin/perl
6467
6468echo " "
6469if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6470 $cat <<EOM
6471Many scripts expect perl to be installed as /usr/bin/perl.
6472I can install the perl you are about to compile also as /usr/bin/perl
6473(in addition to $installbin/perl).
6474EOM
6475 case "$installusrbinperl" in
6476 "$undef"|[nN]*) dflt='n';;
6477 *) dflt='y';;
6478 esac
6479 rp="Do you want to install perl as /usr/bin/perl?"
6480 . ./myread
6481 case "$ans" in
6482 [yY]*) val="$define";;
6483 *) val="$undef" ;;
6484 esac
6485else
6486 val="$undef"
6487fi
6488set installusrbinperl
6489eval $setvar
6490
6491: see if dld is available
6492set dld.h i_dld
6493eval $inhdr
6494
6495: see if dlopen exists
6496xxx_runnm="$runnm"
6497runnm=false
6498set dlopen d_dlopen
6499eval $inlibc
6500runnm="$xxx_runnm"
6501
6502: determine which dynamic loading, if any, to compile in
6503echo " "
6504dldir="ext/DynaLoader"
6505case "$usedl" in
6506$define|y|true)
6507 dflt='y'
6508 usedl="$define"
6509 ;;
6510$undef|n|false)
6511 dflt='n'
6512 usedl="$undef"
6513 ;;
6514*)
6515 dflt='n'
6516 case "$d_dlopen" in
6517 $define) dflt='y' ;;
6518 esac
6519 case "$i_dld" in
6520 $define) dflt='y' ;;
6521 esac
6522 : Does a dl_xxx.xs file exist for this operating system
6523 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6524 ;;
6525esac
6526rp="Do you wish to use dynamic loading?"
6527. ./myread
6528usedl="$ans"
6529case "$ans" in
6530y*) usedl="$define"
6531 case "$dlsrc" in
6532 '')
6533 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6534 dflt="$dldir/dl_${osname}.xs"
6535 elif $test "$d_dlopen" = "$define" ; then
6536 dflt="$dldir/dl_dlopen.xs"
6537 elif $test "$i_dld" = "$define" ; then
6538 dflt="$dldir/dl_dld.xs"
6539 else
6540 dflt=''
6541 fi
6542 ;;
6543 *) dflt="$dldir/$dlsrc"
6544 ;;
6545 esac
6546 echo "The following dynamic loading files are available:"
6547 : Can not go over to $dldir because getfile has path hard-coded in.
6548 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6549 rp="Source file to use for dynamic loading"
6550 fn="fne"
6551 gfpth="$src"
6552 . ./getfile
6553 usedl="$define"
6554 : emulate basename
6555 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6556
6557 $cat << EOM
6558
6559Some systems may require passing special flags to $cc -c to
6560compile modules that will be used to create a shared library.
6561To use no flags, say "none".
6562
6563EOM
6564 case "$cccdlflags" in
6565 '') case "$gccversion" in
6566 '') case "$osname" in
6567 hpux) dflt='+z' ;;
6568 next) dflt='none' ;;
6569 irix*) dflt='-KPIC' ;;
48bcfe03 6570 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
6571 sunos) dflt='-pic' ;;
6572 *) dflt='none' ;;
6573 esac
6574 ;;
6575 *) case "$osname" in
48bcfe03 6576 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
6577 *) dflt='-fpic' ;;
6578 esac ;;
6579 esac ;;
6580 ' ') dflt='none' ;;
6581 *) dflt="$cccdlflags" ;;
6582 esac
6583 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6584 . ./myread
6585 case "$ans" in
6586 none) cccdlflags=' ' ;;
6587 *) cccdlflags="$ans" ;;
6588 esac
6589
6590 cat << EOM
6591
6592Some systems use ld to create libraries that can be dynamically loaded,
6593while other systems (such as those using ELF) use $cc.
6594
6595EOM
6596 case "$ld" in
6597 '') $cat >try.c <<'EOM'
6598/* Test for whether ELF binaries are produced */
6599#include <fcntl.h>
6600#include <stdlib.h>
6601int main() {
6602 char b[4];
6603 int i = open("a.out",O_RDONLY);
6604 if(i == -1)
6605 exit(1); /* fail */
6606 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6607 exit(0); /* succeed (yes, it's ELF) */
6608 else
6609 exit(1); /* fail */
6610}
6611EOM
6612 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6613 cat <<EOM
6614You appear to have ELF support. I'll use $cc to build dynamic libraries.
6615EOM
6616 dflt="$cc"
6617 else
6618 echo "I'll use ld to build dynamic libraries."
6619 dflt='ld'
6620 fi
6621 rm -f try.c a.out
6622 ;;
6623 *) dflt="$ld"
6624 ;;
6625 esac
6626
6627 rp="What command should be used to create dynamic libraries?"
6628 . ./myread
6629 ld="$ans"
6630
6631 cat << EOM
6632
6633Some systems may require passing special flags to $ld to create a
6634library that can be dynamically loaded. If your ld flags include
6635-L/other/path options to locate libraries outside your loader's normal
6636search path, you may need to specify those -L options here as well. To
6637use no flags, say "none".
6638
6639EOM
6640 case "$lddlflags" in
6641 '') case "$osname" in
6642 beos) dflt='-nostart' ;;
6643 hpux) dflt='-b';
6644 case "$gccversion" in
6645 '') dflt="$dflt +vnocompatwarnings" ;;
6646 esac
6647 ;;
6648 linux|irix*) dflt='-shared' ;;
6649 next) dflt='none' ;;
6650 solaris) dflt='-G' ;;
6651 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 6652 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
6653 *) dflt='none' ;;
6654 esac
6655 ;;
6656 *) dflt="$lddlflags" ;;
6657 esac
6658
6659 : Try to guess additional flags to pick up local libraries.
6660 : Be careful not to append to a plain 'none'
6661 case "$dflt" in
6662 none) dflt='' ;;
6663 esac
6664 for thisflag in $ldflags; do
6665 case "$thisflag" in
6666 -L*|-R*)
6667 case " $dflt " in
6668 *" $thisflag "*) ;;
6669 *) dflt="$dflt $thisflag" ;;
6670 esac
6671 ;;
6672 esac
6673 done
6674
6675 case "$dflt" in
6676 ''|' ') dflt='none' ;;
6677 esac
6678
6679 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6680 . ./myread
6681 case "$ans" in
6682 none) lddlflags=' ' ;;
6683 *) lddlflags="$ans" ;;
6684 esac
6685
6686 cat <<EOM
6687
6688Some systems may require passing special flags to $cc to indicate that
6689the resulting executable will use dynamic linking. To use no flags,
6690say "none".
6691
6692EOM
6693 case "$ccdlflags" in
6694 '') case "$osname" in
6695 hpux) dflt='-Wl,-E' ;;
6696 linux) dflt='-rdynamic' ;;
6697 next) dflt='none' ;;
6698 sunos) dflt='none' ;;
6699 *) dflt='none' ;;
6700 esac ;;
6701 ' ') dflt='none' ;;
6702 *) dflt="$ccdlflags" ;;
6703 esac
6704 rp="Any special flags to pass to $cc to use dynamic linking?"
6705 . ./myread
6706 case "$ans" in
6707 none) ccdlflags=' ' ;;
6708 *) ccdlflags="$ans" ;;
6709 esac
6710 ;;
6711*) usedl="$undef"
6712 ld='ld'
6713 dlsrc='dl_none.xs'
6714 lddlflags=''
6715 ccdlflags=''
6716 ;;
6717esac
6718
6719also=''
6720case "$usedl" in
6721$undef)
6722 # No dynamic loading being used, so don't bother even to prompt.
6723 useshrplib='false'
6724 ;;
6725*) case "$useshrplib" in
6726 '') case "$osname" in
48bcfe03 6727 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
6728 dflt=y
6729 also='Building a shared libperl is required for dynamic loading to work on your system.'
6730 ;;
6731 next*)
6732 case "$osvers" in
6733 4*) dflt=y
6734 also='Building a shared libperl is needed for MAB support.'
6735 ;;
6736 *) dflt=n
6737 ;;
6738 esac
6739 ;;
6740 *) dflt=n
6741 ;;
6742 esac
6743 ;;
6744 $define|true|[Yy]*)
6745 dflt=y
6746 ;;
6747 *) dflt=n
6748 ;;
6749 esac
6750 $cat << EOM
6751
6752The perl executable is normally obtained by linking perlmain.c with
6753libperl${_a}, any static extensions (usually just DynaLoader), and
6754any other libraries needed on this system (such as -lm, etc.). Since
6755your system supports dynamic loading, it is probably possible to build
6756a shared libperl.$so. If you will have more than one executable linked
6757to libperl.$so, this will significantly reduce the size of each
6758executable, but it may have a noticeable affect on performance. The
6759default is probably sensible for your system.
6760$also
6761
6762EOM
6763 rp="Build a shared libperl.$so (y/n)"
6764 . ./myread
6765 case "$ans" in
6766 true|$define|[Yy]*)
6767 useshrplib='true' ;;
6768 *) useshrplib='false' ;;
6769 esac
6770 ;;
6771esac
6772
6773case "$useshrplib" in
6774true)
6775 case "$libperl" in
6776 '')
6777 # Figure out a good name for libperl.so. Since it gets stored in
6778 # a version-specific architecture-dependent library, the version
6779 # number isn't really that important, except for making cc/ld happy.
6780 #
6781 # A name such as libperl.so.3.1
6782 majmin="libperl.$so.$patchlevel.$subversion"
6783 # A name such as libperl.so.301
6784 majonly=`echo $patchlevel $subversion |
6785 $awk '{printf "%d%02d", $1, $2}'`
6786 majonly=libperl.$so.$majonly
6787 # I'd prefer to keep the os-specific stuff here to a minimum, and
6788 # rely on figuring it out from the naming of libc.
6789 case "${osname}${osvers}" in
6790 next4*)
6791 dflt=libperl.5.$so
6792 # XXX How handle the --version stuff for MAB?
6793 ;;
6794 linux*) # ld won't link with a bare -lperl otherwise.
6795 dflt=libperl.$so
6796 ;;
6797 cygwin*) # include version
6798 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6799 ;;
6800 *) # Try to guess based on whether libc has major.minor.
6801 case "$libc" in
6802 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6803 *libc.$so.[0-9]*) dflt=$majonly ;;
6804 *) dflt=libperl.$so ;;
6805 esac
6806 ;;
6807 esac
6808 ;;
6809 *) dflt=$libperl
6810 ;;
6811 esac
6812 cat << EOM
6813
6814I need to select a good name for the shared libperl. If your system uses
6815library names with major and minor numbers, then you might want something
6816like $majmin. Alternatively, if your system uses a single version
6817number for shared libraries, then you might want to use $majonly.
6818Or, your system might be quite happy with a simple libperl.$so.
6819
6820Since the shared libperl will get installed into a version-specific
6821architecture-dependent directory, the version number of the shared perl
6822library probably isn't important, so the default should be o.k.
6823
6824EOM
6825 rp='What name do you want to give to the shared libperl?'
6826 . ./myread
6827 libperl=$ans
6828 echo "Ok, I'll use $libperl"
6829 ;;
6830*)
6831 libperl="libperl${_a}"
6832 ;;
6833esac
6834
6835# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6836case "$shrpdir" in
6837'') ;;
6838*) $cat >&4 <<EOM
6839WARNING: Use of the shrpdir variable for the installation location of
6840the shared $libperl is not supported. It was never documented and
6841will not work in this version. Let me (perlbug@perl.org)
6842know of any problems this may cause.
6843
6844EOM
6845 case "$shrpdir" in
6846 "$archlibexp/CORE")
6847 $cat >&4 <<EOM
6848But your current setting of $shrpdir is
6849the default anyway, so it's harmless.
6850EOM
6851 ;;
6852 *)
6853 $cat >&4 <<EOM
6854Further, your current attempted setting of $shrpdir
6855conflicts with the value of $archlibexp/CORE
6856that installperl will use.
6857EOM
6858 ;;
6859 esac
6860 ;;
6861esac
6862
6863# How will the perl executable find the installed shared $libperl?
6864# Add $xxx to ccdlflags.
6865# If we can't figure out a command-line option, use $shrpenv to
6866# set env LD_RUN_PATH. The main perl makefile uses this.
6867shrpdir=$archlibexp/CORE
6868xxx=''
6869tmp_shrpenv=''
6870if "$useshrplib"; then
6871 case "$osname" in
6872 aix)
6873 # We'll set it in Makefile.SH...
6874 ;;
6875 solaris|netbsd)
6876 xxx="-R $shrpdir"
6877 ;;
6878 freebsd)
6879 xxx="-Wl,-R$shrpdir"
6880 ;;
6881 linux|irix*|dec_osf)
6882 xxx="-Wl,-rpath,$shrpdir"
6883 ;;
6884 next)
6885 # next doesn't like the default...
6886 ;;
6887 beos)
6888 # beos doesn't like the default, either.
6889 ;;
6890 hpux*)
6891 # hpux doesn't like the default, either.
6892 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6893 ;;
6894 *)
6895 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6896 ;;
6897 esac
6898 case "$xxx" in
6899 '') ;;
6900 *)
6901 # Only add $xxx if it isn't already in ccdlflags.
6902 case " $ccdlflags " in
6903 *" $xxx "*) ;;
6904 *) ccdlflags="$ccdlflags $xxx"
6905 cat <<EOM >&4
6906
6907Adding $xxx to the flags
6908passed to $ld so that the perl executable will find the
6909installed shared $libperl.
6910
6911EOM
6912 ;;
6913 esac
6914 ;;
6915 esac
6916fi
6917# Fix ccdlflags in AIX for building external extensions.
6918# (For building Perl itself bare -bE:perl.exp is needed,
6919# Makefile.SH takes care of this.)
6920case "$osname" in
6921aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6922esac
6923# Respect a hint or command-line value.
6924case "$shrpenv" in
6925'') shrpenv="$tmp_shrpenv" ;;
6926esac
6927case "$ldlibpthname" in
6928'') ldlibpthname=LD_LIBRARY_PATH ;;
6929none) ldlibpthname='' ;;
6930esac
6931
6932: determine where manual pages are on this system
6933echo " "
6934case "$sysman" in
6935'')
6936 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6937 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6938 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6939 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6940 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6941 sysman=`./loc . /usr/man/man1 $syspath`
6942 ;;
6943esac
6944if $test -d "$sysman"; then
6945 echo "System manual is in $sysman." >&4
6946else
6947 echo "Could not find manual pages in source form." >&4
6948fi
6949
6950: determine where manual pages go
6951set man1dir man1dir none
6952eval $prefixit
6953$cat <<EOM
6954
6955$spackage has manual pages available in source form.
6956EOM
6957case "$nroff" in
6958nroff)
6959 echo "However, you don't have nroff, so they're probably useless to you."
6960 case "$man1dir" in
6961 '') man1dir="none";;
6962 esac;;
6963esac
6964echo "If you don't want the manual sources installed, answer 'none'."
6965case "$man1dir" in
6966' ') dflt=none
6967 ;;
6968'')
6969 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6970 lookpath="$lookpath $prefixexp/man/p_man/man1"
6971 lookpath="$lookpath $prefixexp/man/u_man/man1"
6972 lookpath="$lookpath $prefixexp/man/man.1"
6973 case "$sysman" in
6974 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6975 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6976 esac
6977 set dflt
6978 eval $prefixup
6979 ;;
6980*) dflt="$man1dir"
6981 ;;
6982esac
6983echo " "
6984fn=dn+~
6985rp="Where do the main $spackage manual pages (source) go?"
6986. ./getfile
6987if $test "X$man1direxp" != "X$ansexp"; then
6988 installman1dir=''
6989fi
6990man1dir="$ans"
6991man1direxp="$ansexp"
6992case "$man1dir" in
6993'') man1dir=' '
6994 installman1dir='';;
6995esac
6996
6997: Change installation prefix, if necessary.
6998if $test X"$prefix" != X"$installprefix"; then
6999 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7000else
7001 installman1dir="$man1direxp"
7002fi
7003
7004: What suffix to use on installed man pages
7005
7006case "$man1dir" in
7007' ')
7008 man1ext='0'
7009 ;;
7010*)
7011 rp="What suffix should be used for the main $spackage man pages?"
7012 case "$man1ext" in
7013 '') case "$man1dir" in
7014 *1) dflt=1 ;;
7015 *1p) dflt=1p ;;
7016 *1pm) dflt=1pm ;;
7017 *l) dflt=l;;
7018 *n) dflt=n;;
7019 *o) dflt=o;;
7020 *p) dflt=p;;
7021 *C) dflt=C;;
7022 *L) dflt=L;;
7023 *L1) dflt=L1;;
7024 *) dflt=1;;
7025 esac
7026 ;;
7027 *) dflt="$man1ext";;
7028 esac
7029 . ./myread
7030 man1ext="$ans"
7031 ;;
7032esac
7033
7034: see if we can have long filenames
7035echo " "
7036first=123456789abcdef
7037$rm -f $first
7038if (echo hi >$first) 2>/dev/null; then
7039 if $test -f 123456789abcde; then
7040 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7041 val="$undef"
7042 else
7043 echo 'You can have filenames longer than 14 characters.'>&4
7044 val="$define"
7045 fi
7046else
7047 $cat <<'EOM'
7048You can't have filenames longer than 14 chars.
7049You can't even think about them!
7050EOM
7051 val="$undef"
7052fi
7053set d_flexfnam
7054eval $setvar
7055$rm -rf 123456789abcde*
7056
7057: determine where library module manual pages go
7058set man3dir man3dir none
7059eval $prefixit
7060$cat <<EOM
7061
7062$spackage has manual pages for many of the library modules.
7063EOM
7064
7065case "$nroff" in
7066nroff)
7067 $cat <<'EOM'
7068However, you don't have nroff, so they're probably useless to you.
7069EOM
7070 case "$man3dir" in
7071 '') man3dir="none";;
7072 esac;;
7073esac
7074
7075case "$d_flexfnam" in
7076undef)
7077 $cat <<'EOM'
7078However, your system can't handle the long file names like File::Basename.3.
7079EOM
7080 case "$man3dir" in
7081 '') man3dir="none";;
7082 esac;;
7083esac
7084
7085echo "If you don't want the manual sources installed, answer 'none'."
7086prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7087case "$man3dir" in
7088'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7089 if $test -d "$privlib/man/man3"; then
7090 cat <<EOM >&4
7091
7092WARNING: Previous versions of perl installed man3 pages into
7093$privlib/man/man3. This version will suggest a
7094new default of $dflt.
7095EOM
7096 tdflt=$dflt
7097 dflt='n'
7098 rp='Do you wish to preserve the old behavior?(y/n)'
7099 . ./myread
7100 case "$ans" in
7101 y*) dflt="$privlib/man/man3" ;;
7102 *) dflt=$tdflt ;;
7103 esac
7104 fi
7105 ;;
7106*) dflt="$man3dir" ;;
7107esac
7108case "$dflt" in
7109' ') dflt=none ;;
7110esac
7111echo " "
7112fn=dn+~
7113rp="Where do the $package library man pages (source) go?"
7114. ./getfile
7115man3dir="$ans"
7116man3direxp="$ansexp"
7117case "$man3dir" in
7118'') man3dir=' '
7119 installman3dir='';;
7120esac
7121
7122: Change installation prefix, if necessary.
7123if $test X"$prefix" != X"$installprefix"; then
7124 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7125else
7126 installman3dir="$man3direxp"
7127fi
7128
7129: What suffix to use on installed man pages
7130case "$man3dir" in
7131' ')
7132 man3ext='0'
7133 ;;
7134*)
7135 rp="What suffix should be used for the $package library man pages?"
7136 case "$man3ext" in
7137 '') case "$man3dir" in
7138 *3) dflt=3 ;;
7139 *3p) dflt=3p ;;
7140 *3pm) dflt=3pm ;;
7141 *l) dflt=l;;
7142 *n) dflt=n;;
7143 *o) dflt=o;;
7144 *p) dflt=p;;
7145 *C) dflt=C;;
7146 *L) dflt=L;;
7147 *L3) dflt=L3;;
7148 *) dflt=3;;
7149 esac
7150 ;;
7151 *) dflt="$man3ext";;
7152 esac
7153 . ./myread
7154 man3ext="$ans"
7155 ;;
7156esac
7157
7158: see if we have to deal with yellow pages, now NIS.
7159if $test -d /usr/etc/yp || $test -d /etc/yp; then
7160 if $test -f /usr/etc/nibindd; then
7161 echo " "
7162 echo "I'm fairly confident you're on a NeXT."
7163 echo " "
7164 rp='Do you get the hosts file via NetInfo?'
7165 dflt=y
7166 case "$hostcat" in
7167 nidump*) ;;
7168 '') ;;
7169 *) dflt=n;;
7170 esac
7171 . ./myread
7172 case "$ans" in
7173 y*) hostcat='nidump hosts .';;
7174 *) case "$hostcat" in
7175 nidump*) hostcat='';;
7176 esac
7177 ;;
7178 esac
7179 fi
7180 case "$hostcat" in
7181 nidump*) ;;
7182 *)
7183 case "$hostcat" in
7184 *ypcat*) dflt=y;;
7185 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7186 dflt=y
7187 else
7188 dflt=n
7189 fi;;
7190 *) dflt=n;;
7191 esac
7192 echo " "
7193 rp='Are you getting the hosts file via yellow pages?'
7194 . ./myread
7195 case "$ans" in
7196 y*) hostcat='ypcat hosts';;
7197 *) hostcat='cat /etc/hosts';;
7198 esac
7199 ;;
7200 esac
7201fi
7202case "$hostcat" in
7203'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7204esac
7205case "$groupcat" in
7206'') test -f /etc/group && groupcat='cat /etc/group';;
7207esac
7208case "$passcat" in
7209'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7210esac
7211
7212: now get the host name
7213echo " "
7214echo "Figuring out host name..." >&4
7215case "$myhostname" in
7216'') cont=true
7217 echo 'Maybe "hostname" will work...'
73614538 7218 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7219 myhostname=$tans
7220 phostname=hostname
7221 cont=''
7222 fi
7223 ;;
7224*) cont='';;
7225esac
7226if $test "$cont"; then
7227 if ./xenix; then
7228 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7229 if tans=`cat /etc/systemid 2>&1` ; then
7230 myhostname=$tans
7231 phostname='cat /etc/systemid'
7232 echo "Whadyaknow. Xenix always was a bit strange..."
7233 cont=''
7234 fi
7235 elif $test -r /etc/systemid; then
7236 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7237 fi
7238fi
7239if $test "$cont"; then
7240 echo 'No, maybe "uuname -l" will work...'
73614538 7241 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
7242 myhostname=$tans
7243 phostname='uuname -l'
7244 else
7245 echo 'Strange. Maybe "uname -n" will work...'
73614538 7246 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
7247 myhostname=$tans
7248 phostname='uname -n'
7249 else
7250 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 7251 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
7252 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7253 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7254 else
7255 case "$myhostname" in
7256 '') echo "Does this machine have an identity crisis or something?"
7257 phostname='';;
7258 *)
7259 echo "Well, you said $myhostname before..."
7260 phostname='echo $myhostname';;
7261 esac
7262 fi
7263 fi
7264 fi
7265fi
7266: you do not want to know about this
7267set $myhostname
7268myhostname=$1
7269
7270: verify guess
7271if $test "$myhostname" ; then
7272 dflt=y
7273 rp='Your host name appears to be "'$myhostname'".'" Right?"
7274 . ./myread
7275 case "$ans" in
7276 y*) ;;
7277 *) myhostname='';;
7278 esac
7279fi
7280
7281: bad guess or no guess
7282while $test "X$myhostname" = X ; do
7283 dflt=''
7284 rp="Please type the (one word) name of your host:"
7285 . ./myread
7286 myhostname="$ans"
7287done
7288
7289: translate upper to lower if necessary
7290case "$myhostname" in
7291*[A-Z]*)
7292 echo "(Normalizing case in your host name)"
7293 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7294 ;;
7295esac
7296
7297case "$myhostname" in
7298*.*)
7299 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7300 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7301 echo "(Trimming domain name from host name--host name is now $myhostname)"
7302 ;;
7303*) case "$mydomain" in
7304 '')
7305 {
7306 test "X$hostcat" = "Xypcat hosts" &&
7307 ypmatch "$myhostname" hosts 2>/dev/null |\
7308 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7309 $test -s hosts
7310 } || {
7311 test "X$hostcat" != "X" &&
7312 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7313 /[ ]$myhostname[ . ]/p" > hosts
7314 }
7315 tmp_re="[ . ]"
f08cbdd1
PP
7316 if $test -f hosts; then
7317 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7318 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7319 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7320 hosts | $sort | $uniq | \
7321 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7322 case `$echo X$dflt` in
7323 X*\ *) echo "(Several hosts in the database matched hostname)"
7324 dflt=.
7325 ;;
7326 X.) echo "(You do not have fully-qualified names in the hosts database)"
7327 ;;
7328 esac
7329 else
7330 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7331 dflt=.
f08cbdd1 7332 fi
b4eb6b3d
JH
7333 case "$dflt" in
7334 .)
7335 tans=`./loc resolv.conf X /etc /usr/etc`
7336 if $test -f "$tans"; then
7337 echo "(Attempting domain name extraction from $tans)"
7338 dflt=.`$sed -n -e 's/ / /g' \
7339 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7340 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7341 case "$dflt" in
7342 .) dflt=.`$sed -n -e 's/ / /g' \
7343 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7344 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7345 ;;
7346 esac
7347 fi
7348 ;;
7349 esac
7350 case "$dflt" in
7351 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 7352 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
7353 case "$dflt" in
7354 '') dflt='.';;
7355 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7356 esac
7357 ;;
7358 esac
7359 case "$dflt" in
7360 .) echo "(Lost all hope -- silly guess then)"
7361 dflt='.uucp'
7362 ;;
7363 esac
7364 $rm -f hosts
7365 ;;
7366 *) dflt="$mydomain";;
7367 esac;;
7368esac
7369echo " "
7370rp="What is your domain name?"
7371. ./myread
7372tans="$ans"
7373case "$ans" in
7374'') ;;
7375.*) ;;
7376*) tans=".$tans";;
7377esac
7378mydomain="$tans"
7379
7380: translate upper to lower if necessary
7381case "$mydomain" in
7382*[A-Z]*)
7383 echo "(Normalizing case in your domain name)"
7384 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7385 ;;
7386esac
7387
7388: a little sanity check here
7389case "$phostname" in
7390'') ;;
7391*)
7392 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7393 $myhostname$mydomain|$myhostname) ;;
7394 *)
7395 case "$phostname" in
7396 sed*)
7397 echo "(That doesn't agree with your whoami.h file, by the way.)"
7398 ;;
7399 *)
7400 echo "(That doesn't agree with your $phostname command, by the way.)"
7401 ;;
7402 esac
7403 ;;
7404 esac
7405 ;;
7406esac
7407
7408$cat <<EOM
7409
7410I need to get your e-mail address in Internet format if possible, i.e.
7411something like user@host.domain. Please answer accurately since I have
7412no easy means to double check it. The default value provided below
7413is most probably close to reality but may not be valid from outside
7414your organization...
7415
7416EOM
7417cont=x
7418while test "$cont"; do
7419 case "$cf_email" in
7420 '') dflt="$cf_by@$myhostname$mydomain";;
7421 *) dflt="$cf_email";;
7422 esac
7423 rp='What is your e-mail address?'
7424 . ./myread
7425 cf_email="$ans"
7426 case "$cf_email" in
7427 *@*.*) cont='' ;;
7428 *)
7429 rp='Address does not look like an Internet one. Use it anyway?'
7430 case "$fastread" in
7431 yes) dflt=y ;;
7432 *) dflt=n ;;
7433 esac
7434 . ./myread
7435 case "$ans" in
7436 y*) cont='' ;;
7437 *) echo " " ;;
7438 esac
7439 ;;
7440 esac
7441done
7442
7443$cat <<EOM
7444
7445If you or somebody else will be maintaining perl at your site, please
7446fill in the correct e-mail address here so that they may be contacted
7447if necessary. Currently, the "perlbug" program included with perl
7448will send mail to this address in addition to perlbug@perl.org. You may
7449enter "none" for no administrator.
7450
7451EOM
7452case "$perladmin" in
7453'') dflt="$cf_email";;
7454*) dflt="$perladmin";;
7455esac
7456rp='Perl administrator e-mail address'
7457. ./myread
7458perladmin="$ans"
7459
674912d7
RB
7460: determine whether to only install version-specific parts.
7461echo " "
7462$cat <<EOM
7463Do you want to install only the version-specific parts of the perl
7464distribution? Usually you do *not* want to do this.
7465EOM
7466case "$versiononly" in
7467"$define"|[Yy]*|true) dflt='y' ;;
7468*) dflt='n';
7469esac
7470rp="Do you want to install only the version-specific parts of perl?"
7471. ./myread
7472case "$ans" in
7473[yY]*) val="$define";;
7474*) val="$undef" ;;
7475esac
7476set versiononly
7477eval $setvar
7478
b4eb6b3d
JH
7479: figure out how to guarantee perl startup
7480case "$startperl" in
7481'')
7482 case "$sharpbang" in
7483 *!)
7484 $cat <<EOH
7485
7486I can use the #! construct to start perl on your system. This will
7487make startup of perl scripts faster, but may cause problems if you
7488want to share those scripts and perl is not in a standard place
7489($binexp/perl) on all your platforms. The alternative is to force
7490a shell by starting the script with a single ':' character.
7491
7492EOH
674912d7
RB
7493 case "$versiononly" in
7494 "$define") dflt="$binexp/perl$version";;
7495 *) dflt="$binexp/perl";;
7496 esac
b4eb6b3d
JH
7497 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7498 . ./myread
7499 case "$ans" in
7500 none) startperl=": # use perl";;
7501 *) startperl="#!$ans"
7502 if $test 30 -lt `echo "$ans" | wc -c`; then
7503 $cat >&4 <<EOM
7504
7505WARNING: Some systems limit the #! command to 32 characters.
7506If you experience difficulty running Perl scripts with #!, try
7507installing Perl in a directory with a shorter pathname.
7508
7509EOM
7510 fi ;;
7511 esac
7512 ;;
7513 *) startperl=": # use perl"
7514 ;;
7515 esac
7516 ;;
7517esac
7518echo "I'll use $startperl to start perl scripts."
7519
7520: figure best path for perl in scripts
7521case "$perlpath" in
7522'')
7523 perlpath="$binexp/perl"
7524 case "$startperl" in
7525 *!*) ;;
7526 *)
7527 $cat <<EOH
7528
7529I will use the "eval 'exec'" idiom to start Perl on your system.
7530I can use the full path of your Perl binary for this purpose, but
7531doing so may cause problems if you want to share those scripts and
7532Perl is not always in a standard place ($binexp/perl).
7533
7534EOH
7535 dflt="$binexp/perl"
7536 rp="What path shall I use in \"eval 'exec'\"?"
7537 . ./myread
7538 perlpath="$ans"
7539 ;;
7540 esac
7541 ;;
7542esac
7543case "$startperl" in
7544*!*) ;;
7545*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7546esac
7547
7548: determine where public executable scripts go
7549set scriptdir scriptdir
7550eval $prefixit
7551case "$scriptdir" in
7552'')
7553 dflt="$bin"
7554 : guess some guesses
7555 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7556 $test -d /usr/share/bin && dflt=/usr/share/bin
7557 $test -d /usr/local/script && dflt=/usr/local/script
7558 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7559 $test -d $prefixexp/script && dflt=$prefixexp/script
7560 set dflt
7561 eval $prefixup
7562 ;;
7563*) dflt="$scriptdir"
7564 ;;
7565esac
7566$cat <<EOM
7567
7568Some installations have a separate directory just for executable scripts so
7569that they can mount it across multiple architectures but keep the scripts in
7570one spot. You might, for example, have a subdirectory of /usr/share for this.
7571Or you might just lump your scripts in with all your other executables.
7572
7573EOM
7574fn=d~
7575rp='Where do you keep publicly executable scripts?'
7576. ./getfile
7577if $test "X$ansexp" != "X$scriptdirexp"; then
7578 installscript=''
7579fi
7580scriptdir="$ans"
7581scriptdirexp="$ansexp"
7582: Change installation prefix, if necessary.
7583if $test X"$prefix" != X"$installprefix"; then
7584 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7585else
7586 installscript="$scriptdirexp"
7587fi
7588
7589: determine where add-on public executables go
7590case "$sitebin" in
7591'') dflt=$siteprefix/bin ;;
7592*) dflt=$sitebin ;;
7593esac
7594fn=d~
7595rp='Pathname where the add-on public executables should be installed?'
7596. ./getfile
7597sitebin="$ans"
7598sitebinexp="$ansexp"
7599: Change installation prefix, if necessary.
7600if $test X"$prefix" != X"$installprefix"; then
7601 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7602else
7603 installsitebin="$sitebinexp"
7604fi
7605
b4eb6b3d
JH
7606case "$vendorprefix" in
7607'') d_vendorbin="$undef"
7608 vendorbin=''
7609 vendorbinexp=''
7610 ;;
7611*) d_vendorbin="$define"
7612 : determine where vendor-supplied executables go.
7613 case "$vendorbin" in
7614 '') dflt=$vendorprefix/bin ;;
7615 *) dflt="$vendorbin" ;;
7616 esac
7617 fn=d~+
7618 rp='Pathname for the vendor-supplied executables directory?'
7619 . ./getfile
7620 vendorbin="$ans"
7621 vendorbinexp="$ansexp"
7622 ;;
7623esac
7624: Change installation prefix, if necessary.
7625if $test X"$prefix" != X"$installprefix"; then
7626 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7627else
7628 installvendorbin="$vendorbinexp"
7629fi
7630
7631: see if qgcvt exists
7632set qgcvt d_qgcvt
7633eval $inlibc
7634
7635echo " "
7636
7637if $test X"$d_longdbl" = X"$define"; then
7638
7639echo "Checking how to print long doubles..." >&4
7640
7641if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7642 $cat >try.c <<'EOCP'
7643#include <sys/types.h>
7644#include <stdio.h>
7645int main() {
7646 double d = 123.456;
7647 printf("%.3f\n", d);
7648}
7649EOCP
7650 set try
7651 if eval $compile; then
7652 yyy=`./try$exe_ext`
7653 case "$yyy" in
7654 123.456)
7655 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7656 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7657 echo "We will use %f."
7658 ;;
7659 esac
7660 fi
7661fi
7662
7663if $test X"$sPRIfldbl" = X; then
7664 $cat >try.c <<'EOCP'
7665#include <sys/types.h>
7666#include <stdio.h>
7667int main() {
7668 long double d = 123.456;
7669 printf("%.3llf\n", d);
7670}
7671EOCP
7672 set try
7673 if eval $compile; then
7674 yyy=`./try$exe_ext`
7675 case "$yyy" in
7676 123.456)
7677 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7678 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7679 echo "We will use %llf."
7680 ;;
7681 esac
7682 fi
7683fi
7684
7685if $test X"$sPRIfldbl" = X; then
7686 $cat >try.c <<'EOCP'
7687#include <sys/types.h>
7688#include <stdio.h>
7689int main() {
7690 long double d = 123.456;
7691 printf("%.3Lf\n", d);
7692}
7693EOCP
7694 set try
7695 if eval $compile; then
7696 yyy=`./try$exe_ext`
7697 case "$yyy" in
7698 123.456)
7699 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7700 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7701 echo "We will use %Lf."
7702 ;;
7703 esac
7704 fi
7705fi
7706
7707if $test X"$sPRIfldbl" = X; then
7708 $cat >try.c <<'EOCP'
7709#include <sys/types.h>
7710#include <stdio.h>
7711int main() {
7712 long double d = 123.456;
7713 printf("%.3lf\n", d);
7714}
7715EOCP
7716 set try
7717 if eval $compile; then
7718 yyy=`./try$exe_ext`
7719 case "$yyy" in
7720 123.456)
7721 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7722 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7723 echo "We will use %lf."
7724 ;;
7725 esac
7726 fi
7727fi
7728
7729if $test X"$sPRIfldbl" = X; then
7730 echo "Cannot figure out how to print long doubles." >&4
7731else
7732 sSCNfldbl=$sPRIfldbl # expect consistency
7733fi
7734
7735$rm -f try try.*
7736
7737fi # d_longdbl
7738
7739case "$sPRIfldbl" in
7740'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7741 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7742 d_SCNfldbl="$undef";
7743 ;;
7744*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7745 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7746 d_SCNfldbl="$define";
7747 ;;
7748esac
7749
7750: Check how to convert floats to strings.
7751echo " "
7752echo "Checking for an efficient way to convert floats to strings."
7753echo " " > try.c
7754case "$uselongdouble" in
7755"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7756esac
7757case "$d_longdbl" in
7758"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7759esac
7760case "$d_PRIgldbl" in
7761"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7762esac
7763$cat >>try.c <<EOP
7764#ifdef TRY_gconvert
7765#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7766char *myname = "gconvert";
7767#endif
7768#ifdef TRY_gcvt
7769#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7770char *myname = "gcvt";
7771#endif
7772#ifdef TRY_qgcvt
7773#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7774char *myname = "qgcvt";
7775#define DOUBLETYPE long double
7776#endif
7777#ifdef TRY_sprintf
7778#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7779#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7780#else
7781#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7782#endif
7783char *myname = "sprintf";
7784#endif
7785
7786#ifndef DOUBLETYPE
7787#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7788#define DOUBLETYPE long double
7789#else
7790#define DOUBLETYPE double
7791#endif
7792#endif
7793
7794#include <stdio.h>
7795
7796#define I_STDLIB $i_stdlib
7797#ifdef I_STDLIB
7798#include <stdlib.h>
7799#endif
7800
7801int
7802checkit(expect, got)
7803char *expect;
7804char *got;
7805{
7806 if (strcmp(expect, got)) {
7807 printf("%s oddity: Expected %s, got %s\n",
7808 myname, expect, got);
7809 exit(1);
7810 }
7811}
7812
7813int main()
7814{
7815 char buf[64];
7816 buf[63] = '\0';
7817
7818 /* This must be 1st test on (which?) platform */
7819 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7820 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7821 checkit("0.1", buf);
7822
7823 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7824 checkit("1", buf);
7825
7826 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7827 checkit("1.1", buf);
7828
7829 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7830 checkit("1.01", buf);
7831
7832 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7833 checkit("1.001", buf);
7834
7835 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7836 checkit("1.0001", buf);
7837
7838 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7839 checkit("1.00001", buf);
7840
7841 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7842 checkit("1.000001", buf);
7843
7844 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7845 checkit("0", buf);
7846
7847 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7848 checkit("-1", buf);
7849
7850 /* Some Linux gcvt's give 1.e+5 here. */
7851 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7852 checkit("100000", buf);
7853
7854 /* Some Linux gcvt's give -1.e+5 here. */
7855 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7856 checkit("-100000", buf);
7857
7858 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7859 checkit("123.456", buf);
7860
7861 exit(0);
7862}
7863EOP
7864case "$d_Gconvert" in
7865gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7866gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7867sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7868*) xxx_list='gconvert gcvt sprintf' ;;
7869esac
7870
7871case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7872"$define$define$define")
7873 # for long doubles prefer first qgcvt, then sprintf
7874 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7875 xxx_list="sprintf $xxx_list"
7876 case "$d_qgcvt" in
7877 "$define") xxx_list="qgcvt $xxx_list" ;;
7878 esac
7879 ;;
7880esac
7881
7882for xxx_convert in $xxx_list; do
7883 echo "Trying $xxx_convert..."
7884 $rm -f try try$_o
7885 set try -DTRY_$xxx_convert
7886 if eval $compile; then
7887 echo "$xxx_convert() found." >&4
7888 if ./try; then
7889 echo "I'll use $xxx_convert to convert floats into a string." >&4
7890 break;
7891 else
7892 echo "...But $xxx_convert didn't work as I expected."
7893 fi
7894 else
7895 echo "$xxx_convert NOT found." >&4
7896 fi
7897done
7898
7899case "$xxx_convert" in
7900gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7901gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7902qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7903*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7904 "$define$define$define")
7905 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7906 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7907 esac
7908 ;;
7909esac
7910
74cac757
JH
7911: see if _fwalk exists
7912set fwalk d__fwalk
7913eval $inlibc
7914
b4eb6b3d
JH
7915: Initialize h_fcntl
7916h_fcntl=false
7917
7918: Initialize h_sysfile
7919h_sysfile=false
7920
7921: access call always available on UNIX
7922set access d_access
7923eval $inlibc
7924
7925: locate the flags for 'access()'
7926case "$d_access" in
7927"$define")
7928 echo " "
7929 $cat >access.c <<'EOCP'
7930#include <sys/types.h>
7931#ifdef I_FCNTL
7932#include <fcntl.h>
7933#endif
7934#ifdef I_SYS_FILE
7935#include <sys/file.h>
7936#endif
7937#ifdef I_UNISTD
7938#include <unistd.h>
7939#endif
7940int main() {
7941 exit(R_OK);
7942}
7943EOCP
7944 : check sys/file.h first, no particular reason here
7945 if $test `./findhdr sys/file.h` && \
7a282f6d 7946 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7947 h_sysfile=true;
7948 echo "<sys/file.h> defines the *_OK access constants." >&4
7949 elif $test `./findhdr fcntl.h` && \
7a282f6d 7950 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7951 h_fcntl=true;
7952 echo "<fcntl.h> defines the *_OK access constants." >&4
7953 elif $test `./findhdr unistd.h` && \
7a282f6d 7954 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7955 echo "<unistd.h> defines the *_OK access constants." >&4
7956 else
7957 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7958 fi
7959 ;;
7960esac
7961$rm -f access*
7962
7963: see if accessx exists
7964set accessx d_accessx
7965eval $inlibc
7966
7967: see if alarm exists
7968set alarm d_alarm
7969eval $inlibc
7970
7971: see if atolf exists
7972set atolf d_atolf
7973eval $inlibc
7974
7975: see if atoll exists
7976set atoll d_atoll
7977eval $inlibc
7978
7979: Look for GNU-cc style attribute checking
7980echo " "
7981echo "Checking whether your compiler can handle __attribute__ ..." >&4
7982$cat >attrib.c <<'EOCP'
7983#include <stdio.h>
7984void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7985EOCP
7986if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7987 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7988 echo "Your C compiler doesn't fully support __attribute__."
7989 val="$undef"
7990 else
7991 echo "Your C compiler supports __attribute__."
7992 val="$define"
7993 fi
7994else
7995 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7996 val="$undef"
7997fi
7998set d_attribut
7999eval $setvar
8000$rm -f attrib*
8001
8002: see if bcmp exists
8003set bcmp d_bcmp
8004eval $inlibc
8005
8006: see if bcopy exists
8007set bcopy d_bcopy
8008eval $inlibc
8009
8010: see if this is a unistd.h system
8011set unistd.h i_unistd
8012eval $inhdr
8013
8014: see if getpgrp exists
8015set getpgrp d_getpgrp
8016eval $inlibc
8017
8018case "$d_getpgrp" in
8019"$define")
8020 echo " "
8021 echo "Checking to see which flavor of getpgrp is in use..."
8022 $cat >set.c <<EOP
8023#$i_unistd I_UNISTD
8024#include <sys/types.h>
8025#ifdef I_UNISTD
8026# include <unistd.h>
8027#endif
8028int main()
8029{
8030 if (getuid() == 0) {
8031 printf("(I see you are running Configure as super-user...)\n");
8032 setuid(1);
8033 }
8034#ifdef TRY_BSD_PGRP
8035 if (getpgrp(1) == 0)
8036 exit(0);
8037#else
8038 if (getpgrp() > 0)
8039 exit(0);
8040#endif
8041 exit(1);
8042}
8043EOP
7a282f6d 8044 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
8045 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8046 val="$define"
7a282f6d 8047 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
8048 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8049 val="$undef"
8050 else
8051 echo "I can't seem to compile and run the test program."
8052 if ./usg; then
8053 xxx="a USG one, i.e. you use getpgrp()."
8054 else
8055 # SVR4 systems can appear rather BSD-ish.
8056 case "$i_unistd" in
8057 $undef)
8058 xxx="a BSD one, i.e. you use getpgrp(pid)."
8059 val="$define"
8060 ;;
8061 $define)
8062 xxx="probably a USG one, i.e. you use getpgrp()."
8063 val="$undef"
8064 ;;
8065 esac
8066 fi
8067 echo "Assuming your getpgrp is $xxx" >&4
8068 fi
8069 ;;
8070*) val="$undef";;
8071esac
8072set d_bsdgetpgrp
8073eval $setvar
8074$rm -f set set.c
8075
8076: see if setpgrp exists
8077set setpgrp d_setpgrp
8078eval $inlibc
8079
8080case "$d_setpgrp" in
8081"$define")
8082 echo " "
8083 echo "Checking to see which flavor of setpgrp is in use..."
8084 $cat >set.c <<EOP
8085#$i_unistd I_UNISTD
8086#include <sys/types.h>
8087#ifdef I_UNISTD
8088# include <unistd.h>
8089#endif
8090int main()
8091{
8092 if (getuid() == 0) {
8093 printf("(I see you are running Configure as super-user...)\n");
8094 setuid(1);
8095 }
8096#ifdef TRY_BSD_PGRP
8097 if (-1 == setpgrp(1, 1))
8098 exit(0);
8099#else
8100 if (setpgrp() != -1)
8101 exit(0);
8102#endif
8103 exit(1);
8104}
8105EOP
7a282f6d 8106 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
8107 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8108 val="$define"
7a282f6d 8109 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
8110 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8111 val="$undef"
8112 else
8113 echo "(I can't seem to compile and run the test program.)"
8114 if ./usg; then
8115 xxx="a USG one, i.e. you use setpgrp()."
8116 else
8117 # SVR4 systems can appear rather BSD-ish.
8118 case "$i_unistd" in
8119 $undef)
8120 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8121 val="$define"
8122 ;;
8123 $define)
8124 xxx="probably a USG one, i.e. you use setpgrp()."
8125 val="$undef"
8126 ;;
8127 esac
8128 fi
8129 echo "Assuming your setpgrp is $xxx" >&4
8130 fi
8131 ;;
8132*) val="$undef";;
8133esac
8134set d_bsdsetpgrp
8135eval $setvar
8136$rm -f set set.c
8137: see if bzero exists
8138set bzero d_bzero
8139eval $inlibc
8140
8141: see if signal is declared as pointer to function returning int or void
8142echo " "
8143xxx=`./findhdr signal.h`
8144$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8145if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8146 echo "You have int (*signal())() instead of void." >&4
8147 val="$undef"
8148elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8149 echo "You have void (*signal())()." >&4
8150 val="$define"
8151elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8152 echo "You have int (*signal())() instead of void." >&4
8153 val="$undef"
8154elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8155 echo "You have void (*signal())()." >&4
8156 val="$define"
8157else
8158 case "$d_voidsig" in
8159 '')
8160 echo "I can't determine whether signal handler returns void or int..." >&4
8161 dflt=void
8162 rp="What type does your signal handler return?"
8163 . ./myread
8164 case "$ans" in
8165 v*) val="$define";;
8166 *) val="$undef";;
8167 esac;;
8168 "$define")
8169 echo "As you already told me, signal handler returns void." >&4
8170 val="$define"
8171 ;;
8172 *) echo "As you already told me, signal handler returns int." >&4
8173 val="$undef"
8174 ;;
8175 esac
8176fi
8177set d_voidsig
8178eval $setvar
8179case "$d_voidsig" in
8180"$define") signal_t="void";;
8181*) signal_t="int";;
8182esac
8183$rm -f $$.tmp
8184
8185: check for ability to cast large floats to 32-bit ints.
8186echo " "
8187echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8188if $test "$intsize" -ge 4; then
8189 xxx=int
8190else
8191 xxx=long
8192fi
8193$cat >try.c <<EOCP
8194#include <stdio.h>
8195#include <sys/types.h>
8196#include <signal.h>
8197$signal_t blech(s) int s; { exit(3); }
8198int main()
8199{
8200 $xxx i32;
8201 double f, g;
8202 int result = 0;
8203 char str[16];
8204 signal(SIGFPE, blech);
8205
8206 /* Don't let compiler optimize the test away. Store the number
8207 in a writable string for gcc to pass to sscanf under HP/UX.
8208 */
8209 sprintf(str, "2147483647");
8210 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8211 g = 10 * f;
8212 i32 = ($xxx) g;
8213
8214 /* x86 processors will probably give 0x8000 0000, which is a
8215 sign change. We don't want that. We want to mimic SPARC
8216 behavior here, which is to preserve the sign and give
8217 back 0x7fff ffff.
8218 */
8219 if (i32 != ($xxx) f)
8220 result |= 1;
8221 exit(result);
8222}
8223EOCP
8224set try
8225if eval $compile_ok; then
8226 ./try
8227 yyy=$?
8228else
8229 echo "(I can't seem to compile the test program--assuming it can't)"
8230 yyy=1
8231fi
8232case "$yyy" in
82330) val="$define"
8234 echo "Yup, it can."
8235 ;;
8236*) val="$undef"
8237 echo "Nope, it can't."
8238 ;;
8239esac
8240set d_casti32
8241eval $setvar
8242$rm -f try try.*
8243
8244: check for ability to cast negative floats to unsigned
8245echo " "
8246echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8247$cat >try.c <<EOCP
8248#include <stdio.h>
8249#include <sys/types.h>
8250#include <signal.h>
8251$signal_t blech(s) int s; { exit(7); }
8252$signal_t blech_in_list(s) int s; { exit(4); }
8253unsigned long dummy_long(p) unsigned long p; { return p; }
8254unsigned int dummy_int(p) unsigned int p; { return p; }
8255unsigned short dummy_short(p) unsigned short p; { return p; }
8256int main()
8257{
8258 double f;
8259 unsigned long along;
8260 unsigned int aint;
8261 unsigned short ashort;
8262 int result = 0;
8263 char str[16];
8264
8265 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8266 a direct f = -123. assignment. gcc-2.8.0 reportedly
8267 optimized the whole file away
8268 */
8269 /* Store the number in a writable string for gcc to pass to
8270 sscanf under HP/UX.
8271 */
8272 sprintf(str, "-123");
8273 sscanf(str, "%lf", &f); /* f = -123.; */
8274
8275 signal(SIGFPE, blech);
8276 along = (unsigned long)f;
8277 aint = (unsigned int)f;
8278 ashort = (unsigned short)f;
8279 if (along != (unsigned long)-123)
8280 result |= 1;
8281 if (aint != (unsigned int)-123)
8282 result |= 1;
8283 if (ashort != (unsigned short)-123)
8284 result |= 1;
8285 sprintf(str, "1073741824.");
8286 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8287 f = f + f;
8288 along = 0;
8289 along = (unsigned long)f;
8290 if (along != 0x80000000)
8291 result |= 2;
8292 f -= 1.;
8293 along = 0;
8294 along = (unsigned long)f;
8295 if (along != 0x7fffffff)
8296 result |= 1;
8297 f += 2.;
8298 along = 0;
8299 along = (unsigned long)f;
8300 if (along != 0x80000001)
8301 result |= 2;
8302 if (result)
8303 exit(result);
8304 signal(SIGFPE, blech_in_list);
8305 sprintf(str, "123.");
8306 sscanf(str, "%lf", &f); /* f = 123.; */
8307 along = dummy_long((unsigned long)f);
8308 aint = dummy_int((unsigned int)f);
8309 ashort = dummy_short((unsigned short)f);
8310 if (along != (unsigned long)123)
8311 result |= 4;
8312 if (aint != (unsigned int)123)
8313 result |= 4;
8314 if (ashort != (unsigned short)123)
8315 result |= 4;
8316 exit(result);
8317
8318}
8319EOCP
8320set try
8321if eval $compile_ok; then
8322 ./try
8323 castflags=$?
8324else
8325 echo "(I can't seem to compile the test program--assuming it can't)"
8326 castflags=7
8327fi
8328case "$castflags" in
83290) val="$define"
8330 echo "Yup, it can."
8331 ;;
8332*) val="$undef"
8333 echo "Nope, it can't."
8334 ;;
8335esac
8336set d_castneg
8337eval $setvar
8338$rm -f try.*
8339
8340: see if vprintf exists
8341echo " "
8342if set vprintf val -f d_vprintf; eval $csym; $val; then
8343 echo 'vprintf() found.' >&4
8344 val="$define"
8345 $cat >vprintf.c <<'EOF'
8346#include <varargs.h>
8347
8348int main() { xxx("foo"); }
8349
8350xxx(va_alist)
8351va_dcl
8352{
8353 va_list args;
8354 char buf[10];
8355
8356 va_start(args);
8357 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8358}
8359EOF
8360 set vprintf
8361 if eval $compile && ./vprintf; then
8362 echo "Your vsprintf() returns (int)." >&4
8363 val2="$undef"
8364 else
8365 echo "Your vsprintf() returns (char*)." >&4
8366 val2="$define"
8367 fi
8368else
8369 echo 'vprintf() NOT found.' >&4
8370 val="$undef"
8371 val2="$undef"
8372fi
8373set d_vprintf
8374eval $setvar
8375val=$val2
8376set d_charvspr
8377eval $setvar
8378
8379: see if chown exists
8380set chown d_chown
8381eval $inlibc
8382
8383: see if chroot exists
8384set chroot d_chroot
8385eval $inlibc
8386
8387: see if chsize exists
8388set chsize d_chsize
8389eval $inlibc
8390
8391: check for const keyword
8392echo " "
8393echo 'Checking to see if your C compiler knows about "const"...' >&4
8394$cat >const.c <<'EOCP'
8395typedef struct spug { int drokk; } spug;
8396int main()
8397{
8398 const char *foo;
8399 const spug y;
8400}
8401EOCP
8402if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8403 val="$define"
8404 echo "Yup, it does."
8405else
8406 val="$undef"
8407 echo "Nope, it doesn't."
8408fi
8409set d_const
8410eval $setvar
8411
8412: see if crypt exists
8413echo " "
8414if set crypt val -f d_crypt; eval $csym; $val; then
8415 echo 'crypt() found.' >&4
8416 val="$define"
8417 cryptlib=''
8418else
8419 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8420 if $test -z "$cryptlib"; then
8421 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8422 else
8423 cryptlib=-lcrypt
8424 fi
8425 if $test -z "$cryptlib"; then
8426 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8427 else
8428 cryptlib=-lcrypt
8429 fi
8430 if $test -z "$cryptlib"; then
8431 cryptlib=`./loc libcrypt$_a "" $libpth`
8432 else
8433 cryptlib=-lcrypt
8434 fi
8435 if $test -z "$cryptlib"; then
8436 echo 'crypt() NOT found.' >&4
8437 val="$undef"
8438 else
8439 val="$define"
8440 fi
8441fi
8442set d_crypt
8443eval $setvar
8444
8445: get csh whereabouts
8446case "$csh" in
8447'csh') val="$undef" ;;
8448*) val="$define" ;;
8449esac
8450set d_csh
8451eval $setvar
8452: Respect a hint or command line value for full_csh.
8453case "$full_csh" in
8454'') full_csh=$csh ;;
8455esac
8456
8457: see if cuserid exists
8458set cuserid d_cuserid
8459eval $inlibc
8460
8461: see if this is a limits.h system
8462set limits.h i_limits
8463eval $inhdr
8464
8465: see if this is a float.h system
8466set float.h i_float
8467eval $inhdr
8468
8469: See if number of significant digits in a double precision number is known
8470echo " "
8471$cat >dbl_dig.c <<EOM
8472#$i_limits I_LIMITS
8473#$i_float I_FLOAT
8474#ifdef I_LIMITS
8475#include <limits.h>
8476#endif
8477#ifdef I_FLOAT
8478#include <float.h>
8479#endif
8480#ifdef DBL_DIG
8481printf("Contains DBL_DIG");
8482#endif
8483EOM
8484$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8485if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8486 echo "DBL_DIG found." >&4
8487 val="$define"
8488else
8489 echo "DBL_DIG NOT found." >&4
8490 val="$undef"
8491fi
8492$rm -f dbl_dig.?
8493set d_dbl_dig
8494eval $setvar
8495
8496: see if difftime exists
8497set difftime d_difftime
8498eval $inlibc
8499
8500: see if this is a dirent system
8501echo " "
8502if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8503 val="$define"
8504 echo "<dirent.h> found." >&4
8505else
8506 val="$undef"
8507 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8508 echo "<sys/dir.h> found." >&4
8509 echo " "
8510 else
8511 xinc=`./findhdr sys/ndir.h`
8512 fi
8513 echo "<dirent.h> NOT found." >&4
8514fi
8515set i_dirent
8516eval $setvar
8517
8518: Look for type of directory structure.
8519echo " "
8520$cppstdin $cppflags $cppminus < "$xinc" > try.c
8521
8522case "$direntrytype" in
8523''|' ')
8524 case "$i_dirent" in
8525 $define) guess1='struct dirent' ;;
8526 *) guess1='struct direct' ;;
8527 esac
8528 ;;
8529*) guess1="$direntrytype"
8530 ;;
8531esac
8532
8533case "$guess1" in
8534'struct dirent') guess2='struct direct' ;;
8535*) guess2='struct dirent' ;;
8536esac
8537
8538if $contains "$guess1" try.c >/dev/null 2>&1; then
8539 direntrytype="$guess1"
8540 echo "Your directory entries are $direntrytype." >&4
8541elif $contains "$guess2" try.c >/dev/null 2>&1; then
8542 direntrytype="$guess2"
8543 echo "Your directory entries seem to be $direntrytype." >&4
8544else
8545 echo "I don't recognize your system's directory entries." >&4
8546 rp="What type is used for directory entries on this system?"
8547 dflt="$guess1"
8548 . ./myread
8549 direntrytype="$ans"
8550fi
8551$rm -f try.c
8552
8553
8554: see if the directory entry stores field length
8555echo " "
8556$cppstdin $cppflags $cppminus < "$xinc" > try.c
8557if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8558 echo "Good, your directory entry keeps length information in d_namlen." >&4
8559 val="$define"
8560else
8561 echo "Your directory entry does not know about the d_namlen field." >&4
8562 val="$undef"
8563fi
8564set d_dirnamlen
8565eval $setvar
8566$rm -f try.c
8567
8568: see if dlerror exists
8569xxx_runnm="$runnm"
8570runnm=false
8571set dlerror d_dlerror
8572eval $inlibc
8573runnm="$xxx_runnm"
8574
8575: see if dlfcn is available
8576set dlfcn.h i_dlfcn
8577eval $inhdr
8578
8579case "$usedl" in
8580$define|y|true)
8581 $cat << EOM
8582
8583On a few systems, the dynamically loaded modules that perl generates and uses
8584will need a different extension than shared libs. The default will probably
8585be appropriate.
8586
8587EOM
8588 case "$dlext" in
8589 '') dflt="$so" ;;
8590 *) dflt="$dlext" ;;
8591 esac
8592 rp='What is the extension of dynamically loaded modules'
8593 . ./myread
8594 dlext="$ans"
8595 ;;
8596*)
8597 dlext="none"
8598 ;;
8599esac
8600
8601: Check if dlsym need a leading underscore
8602echo " "
8603val="$undef"
8604
8605case "$dlsrc" in
8606dl_dlopen.xs)
8607 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8608 $cat >dyna.c <<'EOM'
8609fred () { }
8610EOM
8611
8612$cat >fred.c<<EOM
8613
8614#include <stdio.h>
8615#$i_dlfcn I_DLFCN
8616#ifdef I_DLFCN
8617#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8618#else
8619#include <sys/types.h>
8620#include <nlist.h>
8621#include <link.h>
8622#endif
8623
8624extern int fred() ;
8625
8626int main()
8627{
8628 void * handle ;
8629 void * symbol ;
8630#ifndef RTLD_LAZY
8631 int mode = 1 ;
8632#else
8633 int mode = RTLD_LAZY ;
8634#endif
8635 handle = dlopen("./dyna.$dlext", mode) ;
8636 if (handle == NULL) {
8637 printf ("1\n") ;
8638 fflush (stdout) ;
8639 exit(0);
8640 }
8641 symbol = dlsym(handle, "fred") ;
8642 if (symbol == NULL) {
8643 /* try putting a leading underscore */
8644 symbol = dlsym(handle, "_fred") ;
8645 if (symbol == NULL) {
8646 printf ("2\n") ;
8647 fflush (stdout) ;
8648 exit(0);
8649 }
8650 printf ("3\n") ;
8651 }
8652 else
8653 printf ("4\n") ;
8654 fflush (stdout) ;
8655 exit(0);
8656}
8657EOM
8658 : Call the object file tmp-dyna.o in case dlext=o.
8659 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8660 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7a282f6d
JH
8661 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8662 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
b4eb6b3d
JH
8663 xxx=`./fred`
8664 case $xxx in
8665 1) echo "Test program failed using dlopen." >&4
8666 echo "Perhaps you should not use dynamic loading." >&4;;
8667 2) echo "Test program failed using dlsym." >&4
8668 echo "Perhaps you should not use dynamic loading." >&4;;
8669 3) echo "dlsym needs a leading underscore" >&4
8670 val="$define" ;;
8671 4) echo "dlsym doesn't need a leading underscore." >&4;;
8672 esac
8673 else
8674 echo "I can't compile and run the test program." >&4
8675 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8676 fi
8677 ;;
8678esac
8679
8680$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8681
8682set d_dlsymun
8683eval $setvar
8684
8685hasproto='varname=$1; func=$2; shift; shift;
8686while $test $# -ge 2; do
8687 case "$1" in
8688 $define) echo "#include <$2>";;
8689 esac ;
8690 shift 2;
8691done > try.c;
8692$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8693if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8694 echo "$func() prototype found.";
8695 val="$define";
8696else
8697 echo "$func() prototype NOT found.";
8698 val="$undef";
8699fi;
8700set $varname;
8701eval $setvar;
8702$rm -f try.c tryout.c'
8703
8704: see if prototype for drand48 is available
8705echo " "
8706set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8707eval $hasproto
8708
8709: see if dup2 exists
8710set dup2 d_dup2
8711eval $inlibc
8712
8713: see if eaccess exists
8714set eaccess d_eaccess
8715eval $inlibc
8716
8717: see if endgrent exists
8718set endgrent d_endgrent
8719eval $inlibc
8720
8721: see if endhostent exists
8722set endhostent d_endhent
8723eval $inlibc
8724
8725: see if endnetent exists
8726set endnetent d_endnent
8727eval $inlibc
8728
8729: see if endprotoent exists
8730set endprotoent d_endpent
8731eval $inlibc
8732
8733: see if endpwent exists
8734set endpwent d_endpwent
8735eval $inlibc
8736
8737: see if endservent exists
8738set endservent d_endsent
8739eval $inlibc
8740
8741: Locate the flags for 'open()'
8742echo " "
8743$cat >open3.c <<'EOCP'
8744#include <sys/types.h>
8745#ifdef I_FCNTL
8746#include <fcntl.h>
8747#endif
8748#ifdef I_SYS_FILE
8749#include <sys/file.h>
8750#endif
8751int main() {
8752 if(O_RDONLY);
8753#ifdef O_TRUNC
8754 exit(0);
8755#else
8756 exit(1);
8757#endif
8758}
8759EOCP
8760: check sys/file.h first to get FREAD on Sun
8761if $test `./findhdr sys/file.h` && \
8762 set open3 -DI_SYS_FILE && eval $compile; then
8763 h_sysfile=true;
8764 echo "<sys/file.h> defines the O_* constants..." >&4
8765 if ./open3; then
8766 echo "and you have the 3 argument form of open()." >&4
8767 val="$define"
8768 else
8769 echo "but not the 3 argument form of open(). Oh, well." >&4
8770 val="$undef"
8771 fi
8772elif $test `./findhdr fcntl.h` && \
8773 set open3 -DI_FCNTL && eval $compile; then
8774 h_fcntl=true;
8775 echo "<fcntl.h> defines the O_* constants..." >&4
8776 if ./open3; then
8777 echo "and you have the 3 argument form of open()." >&4
8778 val="$define"
8779 else
8780 echo "but not the 3 argument form of open(). Oh, well." >&4
8781 val="$undef"
8782 fi
8783else
8784 val="$undef"
8785 echo "I can't find the O_* constant definitions! You got problems." >&4
8786fi
8787set d_open3
8788eval $setvar
8789$rm -f open3*
8790
8791: see which of string.h or strings.h is needed
8792echo " "
8793strings=`./findhdr string.h`
8794if $test "$strings" && $test -r "$strings"; then
8795 echo "Using <string.h> instead of <strings.h>." >&4
8796 val="$define"
8797else
8798 val="$undef"
8799 strings=`./findhdr strings.h`
8800 if $test "$strings" && $test -r "$strings"; then
8801 echo "Using <strings.h> instead of <string.h>." >&4
8802 else
8803 echo "No string header found -- You'll surely have problems." >&4
8804 fi
8805fi
8806set i_string
8807eval $setvar
8808case "$i_string" in
8809"$undef") strings=`./findhdr strings.h`;;
8810*) strings=`./findhdr string.h`;;
8811esac
8812
8813: check for non-blocking I/O stuff
8814case "$h_sysfile" in
a0acbdc3
JH
8815true) echo "#include <sys/file.h>" > head.c;;
8816*)
8817 case "$h_fcntl" in
8818 true) echo "#include <fcntl.h>" > head.c;;
8819 *) echo "#include <sys/fcntl.h>" > head.c;;
8820 esac
8821 ;;
b4eb6b3d
JH
8822esac
8823echo " "
8824echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8825case "$o_nonblock" in
8826'')
8827 $cat head.c > try.c
8828 $cat >>try.c <<'EOCP'
8829#include <stdio.h>
8830int main() {
8831#ifdef O_NONBLOCK
8832 printf("O_NONBLOCK\n");
8833 exit(0);
8834#endif
8835#ifdef O_NDELAY
8836 printf("O_NDELAY\n");
8837 exit(0);
8838#endif
8839#ifdef FNDELAY
8840 printf("FNDELAY\n");
8841 exit(0);
8842#endif
8843 exit(0);
8844}
8845EOCP
8846 set try
8847 if eval $compile_ok; then
8848 o_nonblock=`./try`
8849 case "$o_nonblock" in
8850 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8851 *) echo "Seems like we can use $o_nonblock.";;
8852 esac
8853 else
8854 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8855 fi
8856 ;;
8857*) echo "Using $hint value $o_nonblock.";;
8858esac
8859$rm -f try try.* .out core
8860
8861echo " "
8862echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8863case "$eagain" in
8864'')
8865 $cat head.c > try.c
8866 $cat >>try.c <<EOCP
8867#include <errno.h>
8868#include <sys/types.h>
8869#include <signal.h>
8870#include <stdio.h>
8871#define MY_O_NONBLOCK $o_nonblock
8872#ifndef errno /* XXX need better Configure test */
8873extern int errno;
8874#endif
8875#$i_unistd I_UNISTD
8876#ifdef I_UNISTD
8877#include <unistd.h>
8878#endif
8879#$i_string I_STRING
8880#ifdef I_STRING
8881#include <string.h>
8882#else
8883#include <strings.h>
8884#endif
8885$signal_t blech(x) int x; { exit(3); }
8886EOCP
8887 $cat >> try.c <<'EOCP'
8888int main()
8889{
8890 int pd[2];
8891 int pu[2];
8892 char buf[1];
8893 char string[100];
8894
8895 pipe(pd); /* Down: child -> parent */
8896 pipe(pu); /* Up: parent -> child */
8897 if (0 != fork()) {
8898 int ret;
8899 close(pd[1]); /* Parent reads from pd[0] */
8900 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 8901#ifdef F_SETFL
b4eb6b3d
JH
8902 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8903 exit(1);
a0acbdc3
JH
8904#else
8905 exit(4);
8906#endif
b4eb6b3d
JH
8907 signal(SIGALRM, blech);
8908 alarm(5);
8909 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8910 exit(2);
8911 sprintf(string, "%d\n", ret);
8912 write(2, string, strlen(string));
8913 alarm(0);
8914#ifdef EAGAIN
8915 if (errno == EAGAIN) {
8916 printf("EAGAIN\n");
8917 goto ok;
8918 }
8919#endif
8920#ifdef EWOULDBLOCK
8921 if (errno == EWOULDBLOCK)
8922 printf("EWOULDBLOCK\n");
8923#endif
8924 ok:
8925 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8926 sleep(2); /* Give it time to close our pipe */
8927 alarm(5);
8928 ret = read(pd[0], buf, 1); /* Should read EOF */
8929 alarm(0);
8930 sprintf(string, "%d\n", ret);
8931 write(3, string, strlen(string));
8932 exit(0);
8933 }
8934
8935 close(pd[0]); /* We write to pd[1] */
8936 close(pu[1]); /* We read from pu[0] */
8937 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8938 close(pd[1]); /* Pipe pd is now fully closed! */
8939 exit(0); /* Bye bye, thank you for playing! */
8940}
8941EOCP
8942 set try
8943 if eval $compile_ok; then
8944 echo "$startsh" >mtry
8945 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8946 chmod +x mtry
8947 ./mtry >/dev/null 2>&1
8948 case $? in
8949 0) eagain=`$cat try.out`;;
8950 1) echo "Could not perform non-blocking setting!";;
8951 2) echo "I did a successful read() for something that was not there!";;
8952 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 8953 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
8954 *) echo "Something terribly wrong happened during testing.";;
8955 esac
8956 rd_nodata=`$cat try.ret`
8957 echo "A read() system call with no data present returns $rd_nodata."
8958 case "$rd_nodata" in
8959 0|-1) ;;
8960 *)
8961 echo "(That's peculiar, fixing that to be -1.)"
8962 rd_nodata=-1
8963 ;;
8964 esac
8965 case "$eagain" in
8966 '')
8967 echo "Forcing errno EAGAIN on read() with no data available."
8968 eagain=EAGAIN
8969 ;;
8970 *)
8971 echo "Your read() sets errno to $eagain when no data is available."
8972 ;;
8973 esac
8974 status=`$cat try.err`
8975 case "$status" in
8976 0) echo "And it correctly returns 0 to signal EOF.";;
8977 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8978 *) echo "However, your read() returns '$status' on EOF??";;
8979 esac
8980 val="$define"
8981 if test "$status" = "$rd_nodata"; then
8982 echo "WARNING: you can't distinguish between EOF and no data!"
8983 val="$undef"
8984 fi
8985 else
8986 echo "I can't compile the test program--assuming errno EAGAIN will do."
8987 eagain=EAGAIN
8988 fi
8989 set d_eofnblk
8990 eval $setvar
8991 ;;
8992*)
8993 echo "Using $hint value $eagain."
8994 echo "Your read() returns $rd_nodata when no data is present."
8995 case "$d_eofnblk" in
8996 "$define") echo "And you can see EOF because read() returns 0.";;
8997 "$undef") echo "But you can't see EOF status from read() returned value.";;
8998 *)
8999 echo "(Assuming you can't see EOF status from read anyway.)"
9000 d_eofnblk=$undef
9001 ;;
9002 esac
9003 ;;
9004esac
9005$rm -f try try.* .out core head.c mtry
9006
9007: see if fchmod exists
9008set fchmod d_fchmod
9009eval $inlibc
9010
9011: see if fchown exists
9012set fchown d_fchown
9013eval $inlibc
9014
9015: see if this is an fcntl system
9016set fcntl d_fcntl
9017eval $inlibc
9018
9d9004a9
AD
9019echo " "
9020: See if fcntl-based locking works.
9021$cat >try.c <<'EOCP'
9022#include <stdlib.h>
9023#include <unistd.h>
9024#include <fcntl.h>
9025int main() {
9026#if defined(F_SETLK) && defined(F_SETLKW)
9027 struct flock flock;
9028 int retval, fd;
9029 fd = open("try.c", O_RDONLY);
9030 flock.l_type = F_RDLCK;
9031 flock.l_whence = SEEK_SET;
9032 flock.l_start = flock.l_len = 0;
9033 retval = fcntl(fd, F_SETLK, &flock);
9034 close(fd);
9035 (retval < 0 ? exit(2) : exit(0));
9036#else
9037 exit(2);
9038#endif
9039}
9040EOCP
9041echo "Checking if fcntl-based file locking works... "
9042case "$d_fcntl" in
9043"$define")
9044 set try
9045 if eval $compile_ok; then
9046 if ./try; then
9047 echo "Yes, it seems to work."
9048 val="$define"
9049 else
9050 echo "Nope, it didn't work."
9051 val="$undef"
9052 fi
9053 else
9054 echo "I'm unable to compile the test program, so I'll assume not."
9055 val="$undef"
9056 fi
9057 ;;
9058*) val="$undef";
9059 echo "Nope, since you don't even have fcntl()."
9060 ;;
9061esac
9062set d_fcntl_can_lock
9063eval $setvar
9064$rm -f try*
9065
9066
b4eb6b3d
JH
9067hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9068while $test $# -ge 2; do
9069 case "$1" in
9070 $define) echo "#include <$2>";;
9071 esac ;
9072 shift 2;
9073done > try.c;
9074echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9075set try;
9076if eval $compile; then
9077 val="$define";
9078else
9079 val="$undef";
9080fi;
9081set $varname;
9082eval $setvar;
9083$rm -f try.c try.o'
9084
9085socketlib=''
9086sockethdr=''
9087: see whether socket exists
9088echo " "
9089$echo $n "Hmm... $c" >&4
9090if set socket val -f d_socket; eval $csym; $val; then
9091 echo "Looks like you have Berkeley networking support." >&4
9092 d_socket="$define"
9093 if set setsockopt val -f; eval $csym; $val; then
9094 d_oldsock="$undef"
9095 else
9096 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9097 d_oldsock="$define"
9098 fi
9099else
9100 if $contains socklib libc.list >/dev/null 2>&1; then
9101 echo "Looks like you have Berkeley networking support." >&4
9102 d_socket="$define"
9103 : we will have to assume that it supports the 4.2 BSD interface
9104 d_oldsock="$undef"
9105 else
9106 echo "You don't have Berkeley networking in libc$_a..." >&4
9107 if test "X$d_socket" = "X$define"; then
9108 echo "...but you seem to believe that you have sockets." >&4
9109 else
9110 for net in net socket
9111 do
9112 if test -f /usr/lib/lib$net$_a; then
9113 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9114 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9115 if $contains socket libc.list >/dev/null 2>&1; then
9116 d_socket="$define"
9117 socketlib="-l$net"
9118 case "$net" in
9119 net)
9120 echo "...but the Wollongong group seems to have hacked it in." >&4
9121 sockethdr="-I/usr/netinclude"
9122 ;;
9123 esac
9124 echo "Found Berkeley sockets interface in lib$net." >& 4
9125 if $contains setsockopt libc.list >/dev/null 2>&1; then
9126 d_oldsock="$undef"
9127 else
9128 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9129 d_oldsock="$define"
9130 fi
9131 break
9132 fi
9133 fi
9134 done
9135 if test "X$d_socket" != "X$define"; then
9136 echo "or anywhere else I see." >&4
9137 d_socket="$undef"
9138 d_oldsock="$undef"
9139 fi
9140 fi
9141 fi
9142fi
9143
9144: see if socketpair exists
9145set socketpair d_sockpair
9146eval $inlibc
9147
9148
9149echo " "
9150echo "Checking the availability of certain socket constants..." >& 4
9151for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9152 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9153 $cat >try.c <<EOF
9154#include <sys/types.h>
9155#include <sys/socket.h>
9156int main() {
9157 int i = $ENUM;
9158}
9159EOF
9160 val="$undef"
9161 set try; if eval $compile; then
9162 val="$define"
9163 fi
9164 set d_${enum}; eval $setvar
9165 $rm -f try.c try
9166done
9167
9168: see if sys/select.h has to be included
9169set sys/select.h i_sysselct
9170eval $inhdr
9171
9172: see if we should include time.h, sys/time.h, or both
9173echo " "
9174if test "X$timeincl" = X; then
9175 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9176 $echo $n "I'm now running the test program...$c"
9177 $cat >try.c <<'EOCP'
9178#include <sys/types.h>
9179#ifdef I_TIME
9180#include <time.h>
9181#endif
9182#ifdef I_SYSTIME
9183#ifdef SYSTIMEKERNEL
9184#define KERNEL
9185#endif
9186#include <sys/time.h>
9187#endif
9188#ifdef I_SYSSELECT
9189#include <sys/select.h>
9190#endif
9191int main()
9192{
9193 struct tm foo;
9194#ifdef S_TIMEVAL
9195 struct timeval bar;
9196#endif
9197#ifdef S_TIMEZONE
9198 struct timezone tzp;
9199#endif
9200 if (foo.tm_sec == foo.tm_sec)
9201 exit(0);
9202#ifdef S_TIMEVAL
9203 if (bar.tv_sec == bar.tv_sec)
9204 exit(0);
9205#endif
9206 exit(1);
9207}
9208EOCP
9209 flags=''
9210 for s_timezone in '-DS_TIMEZONE' ''; do
9211 sysselect=''
9212 for s_timeval in '-DS_TIMEVAL' ''; do
9213 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9214 for i_time in '' '-DI_TIME'; do
9215 for i_systime in '-DI_SYSTIME' ''; do
9216 case "$flags" in
9217 '') $echo $n ".$c"
9218 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9219 if eval $compile; then
9220 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9221 shift
9222 flags="$*"
9223 echo " "
9224 $echo $n "Succeeded with $flags$c"
9225 fi
9226 ;;
9227 esac
9228 done
9229 done
9230 done
9231 done
9232 done
9233 timeincl=''
9234 echo " "
9235 case "$flags" in
9236 *SYSTIMEKERNEL*) i_systimek="$define"
9237 timeincl=`./findhdr sys/time.h`
9238 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9239 *) i_systimek="$undef";;
9240 esac
9241 case "$flags" in
9242 *I_TIME*) i_time="$define"
9243 timeincl=`./findhdr time.h`" $timeincl"
9244 echo "We'll include <time.h>." >&4;;
9245 *) i_time="$undef";;
9246 esac
9247 case "$flags" in
9248 *I_SYSTIME*) i_systime="$define"
9249 timeincl=`./findhdr sys/time.h`" $timeincl"
9250 echo "We'll include <sys/time.h>." >&4;;
9251 *) i_systime="$undef";;
9252 esac
9253 $rm -f try.c try
9254fi
9255
9256: check for fd_set items
9257$cat <<EOM
9258
9259Checking to see how well your C compiler handles fd_set and friends ...
9260EOM
9261$cat >fd_set.c <<EOCP
9262#$i_systime I_SYS_TIME
9263#$i_sysselct I_SYS_SELECT
9264#$d_socket HAS_SOCKET
9265#include <sys/types.h>
9266#ifdef HAS_SOCKET
9267#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9268#endif
9269#ifdef I_SYS_TIME
9270#include <sys/time.h>
9271#endif
9272#ifdef I_SYS_SELECT
9273#include <sys/select.h>
9274#endif
9275int main() {
9276 fd_set fds;
9277
9278#ifdef TRYBITS
9279 if(fds.fds_bits);
9280#endif
9281
9282#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9283 exit(0);
9284#else
9285 exit(1);
9286#endif
9287}
9288EOCP
9289set fd_set -DTRYBITS
9290if eval $compile; then
9291 d_fds_bits="$define"
9292 d_fd_set="$define"
9293 echo "Well, your system knows about the normal fd_set typedef..." >&4
9294 if ./fd_set; then
9295 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9296 d_fd_macros="$define"
9297 else
9298 $cat >&4 <<'EOM'
9299but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9300EOM
9301 d_fd_macros="$undef"
9302 fi
9303else
9304 $cat <<'EOM'
9305Hmm, your compiler has some difficulty with fd_set. Checking further...
9306EOM
9307 set fd_set
9308 if eval $compile; then
9309 d_fds_bits="$undef"
9310 d_fd_set="$define"
9311 echo "Well, your system has some sort of fd_set available..." >&4
9312 if ./fd_set; then
9313 echo "and you have the normal fd_set macros." >&4
9314 d_fd_macros="$define"
9315 else
9316 $cat <<'EOM'
9317but not the normal fd_set macros! Gross! More work for me...
9318EOM
9319 d_fd_macros="$undef"
9320 fi
9321 else
9322 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9323 d_fd_set="$undef"
9324 d_fds_bits="$undef"
9325 d_fd_macros="$undef"
9326 fi
9327fi
9328$rm -f fd_set*
9329
9330: see if fgetpos exists
9331set fgetpos d_fgetpos
9332eval $inlibc
9333
9334: see if flock exists
9335set flock d_flock
9336eval $inlibc
9337
9338: see if fork exists
9339set fork d_fork
9340eval $inlibc
9341
9342: see if pathconf exists
9343set pathconf d_pathconf
9344eval $inlibc
9345
9346: see if fpathconf exists
9347set fpathconf d_fpathconf
9348eval $inlibc
9349
9350
9351: check for fpos64_t
9352echo " "
9353echo "Checking to see if you have fpos64_t..." >&4
9354$cat >try.c <<EOCP
9355#include <stdio.h>
9356int main() { fpos64_t x = 7; }
9357EOCP
9358set try
9359if eval $compile; then
9360 val="$define"
9361 echo "You have fpos64_t."
9362else
9363 val="$undef"
9364 echo "You do not have fpos64_t."
9365 case "$fpossize" in
9366 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9367 esac
9368fi
9369$rm -f try.* try
9370set d_fpos64_t
9371eval $setvar
9372
9373: see if frexpl exists
9374set frexpl d_frexpl
9375eval $inlibc
9376
9377hasstruct='varname=$1; struct=$2; shift; shift;
9378while $test $# -ge 2; do
9379 case "$1" in
9380 $define) echo "#include <$2>";;
9381 esac ;
9382 shift 2;
9383done > try.c;
9384echo "int main () { struct $struct foo; }" >> try.c;
9385set try;
9386if eval $compile; then
9387 val="$define";
9388else
9389 val="$undef";
9390fi;
9391set $varname;
9392eval $setvar;
9393$rm -f try.c try.o'
9394
9395: see if this is a sys/param system
9396set sys/param.h i_sysparam
9397eval $inhdr
9398
9399: see if this is a sys/mount.h system
9400set sys/mount.h i_sysmount
9401eval $inhdr
9402
9403: see if sys/types.h has to be included
9404set sys/types.h i_systypes
9405eval $inhdr
9406
9407
9408echo " "
9409echo "Checking to see if your system supports struct fs_data..." >&4
9410set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9411eval $hasstruct
9412case "$d_fs_data_s" in
9413"$define") echo "Yes, it does." ;;
9414*) echo "No, it doesn't." ;;
9415esac
9416
9417: see if fseeko exists
9418set fseeko d_fseeko
9419eval $inlibc
9420case "$longsize" in
94218) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9422esac
9423
9424: see if fsetpos exists
9425set fsetpos d_fsetpos
9426eval $inlibc
9427
9428
9429: see if fstatfs exists
9430set fstatfs d_fstatfs
9431eval $inlibc
9432
9433
9434: see if statvfs exists
9435set statvfs d_statvfs
9436eval $inlibc
9437
9438: see if fstatvfs exists
9439set fstatvfs d_fstatvfs
9440eval $inlibc
9441
9442
411ab01c
JH
9443: see if fsync exists
9444set fsync d_fsync
9445eval $inlibc
9446
b4eb6b3d
JH
9447: see if ftello exists
9448set ftello d_ftello
9449eval $inlibc
9450case "$longsize" in
94518) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9452esac
9453
9454: see if getcwd exists
9455set getcwd d_getcwd
9456eval $inlibc
9457
9458: see if getespwnam exists
9459set getespwnam d_getespwnam
9460eval $inlibc
9461
9462
9463: see if getfsstat exists
9464set getfsstat d_getfsstat
9465eval $inlibc
9466
9467: see if getgrent exists
9468set getgrent d_getgrent
9469eval $inlibc
9470
9471: see if gethostbyaddr exists
9472set gethostbyaddr d_gethbyaddr
9473eval $inlibc
9474
9475: see if gethostbyname exists
9476set gethostbyname d_gethbyname
9477eval $inlibc
9478
9479: see if gethostent exists
9480set gethostent d_gethent
9481eval $inlibc
9482
9483: see how we will look up host name
9484echo " "
9485call=''
9486if set gethostname val -f d_gethname; eval $csym; $val; then
9487 echo 'gethostname() found.' >&4
9488 d_gethname="$define"
9489 call=gethostname
9490fi
9491if set uname val -f d_uname; eval $csym; $val; then
9492 if ./xenix; then
9493 $cat <<'EOM'
9494uname() was found, but you're running xenix, and older versions of xenix
9495have a broken uname(). If you don't really know whether your xenix is old
9496enough to have a broken system call, use the default answer.
9497
9498EOM
9499 dflt=y
9500 case "$d_uname" in
9501 "$define") dflt=n;;
9502 esac
9503 rp='Is your uname() broken?'
9504 . ./myread
9505 case "$ans" in
9506 n*) d_uname="$define"; call=uname;;
9507 esac
9508 else
9509 echo 'uname() found.' >&4
9510 d_uname="$define"
9511 case "$call" in
9512 '') call=uname ;;
9513 esac
9514 fi
9515fi
9516case "$d_gethname" in
9517'') d_gethname="$undef";;
9518esac
9519case "$d_uname" in
9520'') d_uname="$undef";;
9521esac
9522case "$d_uname$d_gethname" in
9523*define*)
9524 dflt=n
9525 cat <<EOM
9526
9527Every now and then someone has a $call() that lies about the hostname
9528but can't be fixed for political or economic reasons. If you wish, I can
9529pretend $call() isn't there and maybe compute hostname at run-time
9530thanks to the '$phostname' command.
9531
9532EOM
9533 rp="Shall I ignore $call() from now on?"
9534 . ./myread
9535 case "$ans" in
9536 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9537 esac;;
9538esac
9539case "$phostname" in
9540'') aphostname='';;
9541*) case "$aphostname" in
9542 /*) ;;
9543 *) set X $phostname
9544 shift
9545 file=$1
9546 shift
9547 file=`./loc $file $file $pth`
9548 aphostname=`echo $file $*`
9549 ;;
9550 esac
9551 ;;
9552esac
9553case "$d_uname$d_gethname" in
9554*define*) ;;
9555*)
9556 case "$phostname" in
9557 '')
9558 echo "There will be no way for $package to get your hostname." >&4;;
9559 *)
9560 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9561 ;;
9562 esac;;
9563esac
9564case "$d_phostname" in
9565'') d_phostname="$undef";;
9566esac
9567
9568: see if this is a netdb.h system
9569set netdb.h i_netdb
9570eval $inhdr
9571
9572: see if prototypes for various gethostxxx netdb.h functions are available
9573echo " "
9574set d_gethostprotos gethostent $i_netdb netdb.h
9575eval $hasproto
9576
9577: see if getlogin exists
9578set getlogin d_getlogin
9579eval $inlibc
9580
9581: see if getmnt exists
9582set getmnt d_getmnt
9583eval $inlibc
9584
9585: see if getmntent exists
9586set getmntent d_getmntent
9587eval $inlibc
9588
9589: see if getnetbyaddr exists
9590set getnetbyaddr d_getnbyaddr
9591eval $inlibc
9592
9593: see if getnetbyname exists
9594set getnetbyname d_getnbyname
9595eval $inlibc
9596
9597: see if getnetent exists
9598set getnetent d_getnent
9599eval $inlibc
9600
9601: see if prototypes for various getnetxxx netdb.h functions are available
9602echo " "
9603set d_getnetprotos getnetent $i_netdb netdb.h
9604eval $hasproto
9605
0c0643d0
JH
9606: see if getpagesize exists
9607set getpagesize d_getpagsz
9608eval $inlibc
9609
b4eb6b3d
JH
9610
9611: see if getprotobyname exists
9612set getprotobyname d_getpbyname
9613eval $inlibc
9614
9615: see if getprotobynumber exists
9616set getprotobynumber d_getpbynumber
9617eval $inlibc
9618
9619: see if getprotoent exists
9620set getprotoent d_getpent
9621eval $inlibc
9622
9623: see if getpgid exists
9624set getpgid d_getpgid
9625eval $inlibc
9626
9627: see if getpgrp2 exists
9628set getpgrp2 d_getpgrp2
9629eval $inlibc
9630
9631: see if getppid exists
9632set getppid d_getppid
9633eval $inlibc
9634
9635: see if getpriority exists
9636set getpriority d_getprior
9637eval $inlibc
9638
9639: see if prototypes for various getprotoxxx netdb.h functions are available
9640echo " "
9641set d_getprotoprotos getprotoent $i_netdb netdb.h
9642eval $hasproto
9643
9644: see if getprpwnam exists
9645set getprpwnam d_getprpwnam
9646eval $inlibc
9647
9648: see if getpwent exists
9649set getpwent d_getpwent
9650eval $inlibc
9651
9652
9653: see if getservbyname exists
9654set getservbyname d_getsbyname
9655eval $inlibc
9656
9657: see if getservbyport exists
9658set getservbyport d_getsbyport
9659eval $inlibc
9660
9661: see if getservent exists
9662set getservent d_getsent
9663eval $inlibc
9664
9665: see if prototypes for various getservxxx netdb.h functions are available
9666echo " "
9667set d_getservprotos getservent $i_netdb netdb.h
9668eval $hasproto
9669
9670: see if getspnam exists
9671set getspnam d_getspnam
9672eval $inlibc
9673
9674: see if gettimeofday or ftime exists
9675set gettimeofday d_gettimeod
9676eval $inlibc
9677case "$d_gettimeod" in
9678"$undef")
9679 set ftime d_ftime
9680 eval $inlibc
9681 ;;
9682*)
9683 val="$undef"; set d_ftime; eval $setvar
9684 ;;
9685esac
9686case "$d_gettimeod$d_ftime" in
9687"$undef$undef")
9688 echo " "
9689 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9690 ;;
9691esac
9692
9693: see if this is an grp system
9694set grp.h i_grp
9695eval $inhdr
9696
9697case "$i_grp" in
9698$define)
9699 xxx=`./findhdr grp.h`
9700 $cppstdin $cppflags $cppminus < $xxx >$$.h
9701
9702 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9703 val="$define"
9704 else
9705 val="$undef"
9706 fi
9707 set d_grpasswd
9708 eval $setvar
9709
9710 $rm -f $$.h
9711 ;;
9712*)
9713 val="$undef";
9714 set d_grpasswd; eval $setvar
9715 ;;
9716esac
9717
9718: see if hasmntopt exists
9719set hasmntopt d_hasmntopt
9720eval $inlibc
9721
9722: see if this is a netinet/in.h or sys/in.h system
9723set netinet/in.h i_niin sys/in.h i_sysin
9724eval $inhdr
9725
9726: see if arpa/inet.h has to be included
9727set arpa/inet.h i_arpainet
9728eval $inhdr
9729
9730: see if htonl --and friends-- exists
9731val=''
9732set htonl val
9733eval $inlibc
9734
9735: Maybe they are macros.
9736case "$val" in
9737$undef)
9738 $cat >htonl.c <<EOM
9739#include <stdio.h>
9740#include <sys/types.h>
9741#$i_niin I_NETINET_IN
9742#$i_sysin I_SYS_IN
9743#$i_arpainet I_ARPA_INET
9744#ifdef I_NETINET_IN
9745#include <netinet/in.h>
9746#endif
9747#ifdef I_SYS_IN
9748#include <sys/in.h>
9749#endif
9750#ifdef I_ARPA_INET
9751#include <arpa/inet.h>
9752#endif
9753#ifdef htonl
9754printf("Defined as a macro.");
9755#endif
9756EOM
9757 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9758 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9759 val="$define"
9760 echo "But it seems to be defined as a macro." >&4
9761 fi
9762 $rm -f htonl.?
9763 ;;
9764esac
9765set d_htonl
9766eval $setvar
9767
9768: see if iconv exists
9769set iconv d_iconv
9770eval $inlibc
9771
9772: index or strchr
9773echo " "
9774if set index val -f; eval $csym; $val; then
9775 if set strchr val -f d_strchr; eval $csym; $val; then
9776 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9777 val="$define"
9778 vali="$undef"
9779 echo "strchr() found." >&4
9780 else
9781 val="$undef"
9782 vali="$define"
9783 echo "index() found." >&4
9784 fi
9785 else
9786 val="$undef"
9787 vali="$define"
9788 echo "index() found." >&4
9789 fi
9790else
9791 if set strchr val -f d_strchr; eval $csym; $val; then
9792 val="$define"
9793 vali="$undef"
9794 echo "strchr() found." >&4
9795 else
9796 echo "No index() or strchr() found!" >&4
9797 val="$undef"
9798 vali="$undef"
9799 fi
9800fi
9801set d_strchr; eval $setvar
9802val="$vali"
9803set d_index; eval $setvar
9804
9805: check whether inet_aton exists
9806set inet_aton d_inetaton
9807eval $inlibc
9808
9809: see if inttypes.h is available
9810: we want a real compile instead of Inhdr because some systems
9811: have an inttypes.h which includes non-existent headers
9812echo " "
9813$cat >try.c <<EOCP
9814#include <inttypes.h>
9815int main() {
9816 static int32_t foo32 = 0x12345678;
9817}
9818EOCP
9819set try
9820if eval $compile; then
9821 echo "<inttypes.h> found." >&4
9822 val="$define"
9823else
9824 echo "<inttypes.h> NOT found." >&4
9825 val="$undef"
9826fi
9827$rm -f try.c try
9828set i_inttypes
9829eval $setvar
9830
9831: check for int64_t
9832echo " "
9833echo "Checking to see if you have int64_t..." >&4
9834$cat >try.c <<EOCP
9835#include <sys/types.h>
9836#$i_inttypes I_INTTYPES
9837#ifdef I_INTTYPES
9838#include <inttypes.h>
9839#endif
9840int main() { int64_t x = 7; }
9841EOCP
9842set try
9843if eval $compile; then
9844 val="$define"
9845 echo "You have int64_t."
9846else
9847 val="$undef"
9848 echo "You do not have int64_t."
9849fi
9850$rm -f try try.*
9851set d_int64_t
9852eval $setvar
9853
9854: Look for isascii
9855echo " "
9856$cat >isascii.c <<'EOCP'
9857#include <stdio.h>
9858#include <ctype.h>
9859int main() {
9860 int c = 'A';
9861 if (isascii(c))
9862 exit(0);
9863 else
9864 exit(1);
9865}
9866EOCP
9867set isascii
9868if eval $compile; then
9869 echo "isascii() found." >&4
9870 val="$define"
9871else
9872 echo "isascii() NOT found." >&4
9873 val="$undef"
9874fi
9875set d_isascii
9876eval $setvar
9877$rm -f isascii*
9878
9879: see if isnan exists
9880set isnan d_isnan
9881eval $inlibc
9882
9883: see if isnanl exists
9884set isnanl d_isnanl
9885eval $inlibc
9886
9887: see if killpg exists
9888set killpg d_killpg
9889eval $inlibc
9890
9891: see if lchown exists
9892echo " "
9893$cat > try.c <<'EOCP'
9894/* System header to define __stub macros and hopefully few prototypes,
9895 which can conflict with char lchown(); below. */
9896#include <assert.h>
9897/* Override any gcc2 internal prototype to avoid an error. */
9898/* We use char because int might match the return type of a gcc2
9899 builtin and then its argument prototype would still apply. */
9900char lchown();
9901int main() {
9902 /* The GNU C library defines this for functions which it implements
9903 to always fail with ENOSYS. Some functions are actually named
9904 something starting with __ and the normal name is an alias. */
9905#if defined (__stub_lchown) || defined (__stub___lchown)
9906choke me
9907#else
9908lchown();
9909#endif
9910; return 0; }
9911EOCP
9912set try
9913if eval $compile; then
9914 $echo "lchown() found." >&4
9915 val="$define"
9916else
9917 $echo "lchown() NOT found." >&4
9918 val="$undef"
9919fi
9920set d_lchown
9921eval $setvar
9922
9923: See if number of significant digits in a double precision number is known
9924echo " "
9925$cat >ldbl_dig.c <<EOM
9926#$i_limits I_LIMITS
9927#$i_float I_FLOAT
9928#ifdef I_LIMITS
9929#include <limits.h>
9930#endif
9931#ifdef I_FLOAT
9932#include <float.h>
9933#endif
9934#ifdef LDBL_DIG
9935printf("Contains LDBL_DIG");
9936#endif
9937EOM
9938$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9939if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9940 echo "LDBL_DIG found." >&4
9941 val="$define"
9942else
9943 echo "LDBL_DIG NOT found." >&4
9944 val="$undef"
9945fi
9946$rm -f ldbl_dig.?
9947set d_ldbl_dig
9948eval $setvar
9949
9950: see if link exists
9951set link d_link
9952eval $inlibc
9953
9954: see if localeconv exists
9955set localeconv d_locconv
9956eval $inlibc
9957
9958: see if lockf exists
9959set lockf d_lockf
9960eval $inlibc
9961
9962: check for long long
9963echo " "
9964echo "Checking to see if you have long long..." >&4
9965echo 'int main() { long long x = 7; return 0; }' > try.c
9966set try
9967if eval $compile; then
9968 val="$define"
9969 echo "You have long long."
9970else
9971 val="$undef"
9972 echo "You do not have long long."
9973fi
9974$rm try.*
9975set d_longlong
9976eval $setvar
9977
9978: check for length of long long
9979case "${d_longlong}${longlongsize}" in
9980$define)
9981 echo " "
9982 echo "Checking to see how big your long longs are..." >&4
9983 $cat >try.c <<'EOCP'
9984#include <stdio.h>
9985int main()
9986{
9987 printf("%d\n", (int)sizeof(long long));
9988 return(0);
9989}
9990EOCP
9991 set try
9992 if eval $compile_ok; then
9993 longlongsize=`./try$exe_ext`
9994 echo "Your long longs are $longlongsize bytes long."
9995 else
9996 dflt='8'
9997 echo " "
9998 echo "(I can't seem to compile the test program. Guessing...)"
9999 rp="What is the size of a long long (in bytes)?"
10000 . ./myread
10001 longlongsize="$ans"
10002 fi
10003 if $test "X$longsize" = "X$longlongsize"; then
10004 echo "(That isn't any different from an ordinary long.)"
10005 fi
10006 ;;
10007esac
10008$rm -f try.* try
10009
10010: see if prototype for lseek is available
10011echo " "
10012set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10013eval $hasproto
10014
10015: see if lstat exists
10016set lstat d_lstat
10017eval $inlibc
10018
10019: see if madvise exists
10020set madvise d_madvise
10021eval $inlibc
10022
10023: see if mblen exists
10024set mblen d_mblen
10025eval $inlibc
10026
10027: see if mbstowcs exists
10028set mbstowcs d_mbstowcs
10029eval $inlibc
10030
10031: see if mbtowc exists
10032set mbtowc d_mbtowc
10033eval $inlibc
10034
10035: see if memchr exists
10036set memchr d_memchr
10037eval $inlibc
10038
10039: see if memcmp exists
10040set memcmp d_memcmp
10041eval $inlibc
10042
10043: see if memcpy exists
10044set memcpy d_memcpy
10045eval $inlibc
10046
10047: see if memmove exists
10048set memmove d_memmove
10049eval $inlibc
10050
10051: see if memset exists
10052set memset d_memset
10053eval $inlibc
10054
10055: see if mkdir exists
10056set mkdir d_mkdir
10057eval $inlibc
10058
10059: see if mkdtemp exists
10060set mkdtemp d_mkdtemp
10061eval $inlibc
10062
10063: see if mkfifo exists
10064set mkfifo d_mkfifo
10065eval $inlibc
10066
10067: see if mkstemp exists
10068set mkstemp d_mkstemp
10069eval $inlibc
10070
10071: see if mkstemps exists
10072set mkstemps d_mkstemps
10073eval $inlibc
10074
10075: see if mktime exists
10076set mktime d_mktime
10077eval $inlibc
10078
10079: see if this is a sys/mman.h system
10080set sys/mman.h i_sysmman
10081eval $inhdr
10082
10083: see if mmap exists
10084set mmap d_mmap
10085eval $inlibc
10086: see what shmat returns
10087: default to something harmless
10088mmaptype='void *'
10089case "$i_sysmman$d_mmap" in
10090"$define$define")
10091 $cat >mmap.c <<'END'
10092#include <sys/mman.h>
10093void *mmap();
10094END
10095 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10096 mmaptype='void *'
10097 else
10098 mmaptype='caddr_t'
10099 fi
10100 echo "and it returns ($mmaptype)." >&4
10101 ;;
10102esac
10103
10104
10105
10106: see if modfl exists
10107set modfl d_modfl
10108eval $inlibc
10109
10110: see if mprotect exists
10111set mprotect d_mprotect
10112eval $inlibc
10113
10114: see if msgctl exists
10115set msgctl d_msgctl
10116eval $inlibc
10117
10118: see if msgget exists
10119set msgget d_msgget
10120eval $inlibc
10121
10122: see if msgsnd exists
10123set msgsnd d_msgsnd
10124eval $inlibc
10125
10126: see if msgrcv exists
10127set msgrcv d_msgrcv
10128eval $inlibc
10129
10130: see how much of the 'msg*(2)' library is present.
10131h_msg=true
10132echo " "
10133case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10134*"$undef"*) h_msg=false;;
10135esac
10136case "$osname" in
10137freebsd)
10138 case "`ipcs 2>&1`" in
10139 "SVID messages"*"not configured"*)
10140 echo "Your $osname does not have the msg*(2) configured." >&4
10141 h_msg=false
10142 val="$undef"
10143 set msgctl d_msgctl
10144 eval $setvar
10145 set msgget d_msgget
10146 eval $setvar
10147 set msgsnd d_msgsnd
10148 eval $setvar
10149 set msgrcv d_msgrcv
10150 eval $setvar
10151 ;;
10152 esac
10153 ;;
10154esac
10155: we could also check for sys/ipc.h ...
10156if $h_msg && $test `./findhdr sys/msg.h`; then
10157 echo "You have the full msg*(2) library." >&4
10158 val="$define"
10159else
10160 echo "You don't have the full msg*(2) library." >&4
10161 val="$undef"
10162fi
10163set d_msg
10164eval $setvar
10165
10166: see if msync exists
10167set msync d_msync
10168eval $inlibc
10169
10170: see if munmap exists
10171set munmap d_munmap
10172eval $inlibc
10173
10174: see if nice exists
10175set nice d_nice
10176eval $inlibc
10177
10178
10179echo " "
10180echo "Checking which 64-bit integer type we could use..." >&4
10181
10182case "$intsize" in
101838) val=int
10184 set quadtype
10185 eval $setvar
10186 val='"unsigned int"'
10187 set uquadtype
10188 eval $setvar
10189 quadkind=1
10190 ;;
10191*) case "$longsize" in
10192 8) val=long
10193 set quadtype
10194 eval $setvar
10195 val='"unsigned long"'
10196 set uquadtype
10197 eval $setvar
10198 quadkind=2
10199 ;;
10200 *) case "$d_longlong:$longlongsize" in
10201 define:8)
10202 val='"long long"'
10203 set quadtype
10204 eval $setvar
10205 val='"unsigned long long"'
10206 set uquadtype
10207 eval $setvar
10208 quadkind=3
10209 ;;
10210 *) case "$d_int64_t" in
10211 define)
10212 val=int64_t
10213 set quadtype
10214 eval $setvar
10215 val=uint64_t
10216 set uquadtype
10217 eval $setvar
10218 quadkind=4
10219 ;;
10220 esac
10221 ;;
10222 esac
10223 ;;
10224 esac
10225 ;;
10226esac
10227
10228case "$quadtype" in
10229'') echo "Alas, no 64-bit integer types in sight." >&4
10230 d_quad="$undef"
10231 ;;
10232*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10233 verb="will"
10234 else
10235 verb="could"
10236 fi
10237 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10238 d_quad="$define"
10239 ;;
10240esac
10241
10242: check for length of character
10243echo " "
10244case "$charsize" in
10245'')
10246 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10247 $cat >try.c <<'EOCP'
10248#include <stdio.h>
10249int main()
10250{
10251 printf("%d\n", (int)sizeof(char));
10252 exit(0);
10253}
10254EOCP
10255 set try
10256 if eval $compile_ok; then
10257 dflt=`./try`
10258 else
10259 dflt='1'
10260 echo "(I can't seem to compile the test program. Guessing...)"
10261 fi
10262 ;;
10263*)
10264 dflt="$charsize"
10265 ;;
10266esac
10267rp="What is the size of a character (in bytes)?"
10268. ./myread
10269charsize="$ans"
10270$rm -f try.c try
10271
1d1be0dc
NC
10272: check for volatile keyword
10273echo " "
10274echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10275$cat >try.c <<'EOCP'
10276int main()
10277{
10278 typedef struct _goo_struct goo_struct;
10279 goo_struct * volatile goo = ((goo_struct *)0);
10280 struct _goo_struct {
10281 long long_int;
10282 int reg_int;
10283 char char_var;
10284 };
10285 typedef unsigned short foo_t;
10286 char *volatile foo;
10287 volatile int bar;
10288 volatile foo_t blech;
10289 foo = foo;
10290}
10291EOCP
10292if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10293 val="$define"
10294 echo "Yup, it does."
10295else
10296 val="$undef"
10297 echo "Nope, it doesn't."
10298fi
10299set d_volatile
10300eval $setvar
10301$rm -f try.*
10302
b4eb6b3d
JH
10303
10304echo " "
10305$echo "Choosing the C types to be used for Perl's internal types..." >&4
10306
10307case "$use64bitint:$d_quad:$quadtype" in
10308define:define:?*)
10309 ivtype="$quadtype"
10310 uvtype="$uquadtype"
10311 ivsize=8
10312 uvsize=8
10313 ;;
10314*) ivtype="long"
10315 uvtype="unsigned long"
10316 ivsize=$longsize
10317 uvsize=$longsize
10318 ;;
10319esac
10320
10321case "$uselongdouble:$d_longdbl" in
10322define:define)
10323 nvtype="long double"
10324 nvsize=$longdblsize
10325 ;;
10326*) nvtype=double
10327 nvsize=$doublesize
10328 ;;
10329esac
10330
10331$echo "(IV will be "$ivtype", $ivsize bytes)"
10332$echo "(UV will be "$uvtype", $uvsize bytes)"
10333$echo "(NV will be "$nvtype", $nvsize bytes)"
10334
10335$cat >try.c <<EOCP
10336#$i_inttypes I_INTTYPES
10337#ifdef I_INTTYPES
10338#include <inttypes.h>
10339#endif
10340#include <stdio.h>
10341int main() {
10342#ifdef INT8
10343 int8_t i = INT8_MAX;
10344 uint8_t u = UINT8_MAX;
10345 printf("int8_t\n");
10346#endif
10347#ifdef INT16
10348 int16_t i = INT16_MAX;
10349 uint16_t i = UINT16_MAX;
10350 printf("int16_t\n");
10351#endif
10352#ifdef INT32
10353 int32_t i = INT32_MAX;
10354 uint32_t u = UINT32_MAX;
10355 printf("int32_t\n");
10356#endif
10357}
10358EOCP
10359
10360case "$i8type" in
10361'') case "$charsize" in
10362 1) i8type=char
10363 u8type="unsigned char"
10364 i8size=$charsize
10365 u8size=$charsize
10366 ;;
10367 esac
10368 ;;
10369esac
10370case "$i8type" in
10371'') set try -DINT8
10372 if eval $compile; then
10373 case "`./try$exe_ext`" in
10374 int8_t) i8type=int8_t
10375 u8type=uint8_t
10376 i8size=1
10377 u8size=1
10378 ;;
10379 esac
10380 fi
10381 ;;
10382esac
10383case "$i8type" in
10384'') if $test $charsize -ge 1; then
10385 i8type=char
10386 u8type="unsigned char"
10387 i8size=$charsize
10388 u8size=$charsize
10389 fi
10390 ;;
10391esac
10392
10393case "$i16type" in
10394'') case "$shortsize" in
10395 2) i16type=short
10396 u16type="unsigned short"
10397 i16size=$shortsize
10398 u16size=$shortsize
10399 ;;
10400 esac
10401 ;;
10402esac
10403case "$i16type" in
10404'') set try -DINT16
10405 if eval $compile; then
10406 case "`./try$exe_ext`" in
10407 int16_t)
10408 i16type=int16_t
10409 u16type=uint16_t
10410 i16size=2
10411 u16size=2
10412 ;;
10413 esac
10414 fi
10415 ;;
10416esac
10417case "$i16type" in
10418'') if $test $shortsize -ge 2; then
10419 i16type=short
10420 u16type="unsigned short"
10421 i16size=$shortsize
10422 u16size=$shortsize
10423 fi
10424 ;;
10425esac
10426
10427case "$i32type" in
10428'') case "$longsize" in
10429 4) i32type=long
10430 u32type="unsigned long"
10431 i32size=$longsize
10432 u32size=$longsize
10433 ;;
10434 *) case "$intsize" in
10435 4) i32type=int
10436 u32type="unsigned int"
10437 i32size=$intsize
10438 u32size=$intsize
10439 ;;
10440 esac
10441 ;;
10442 esac
10443 ;;
10444esac
10445case "$i32type" in
10446'') set try -DINT32
10447 if eval $compile; then
10448 case "`./try$exe_ext`" in
10449 int32_t)
10450 i32type=int32_t
10451 u32type=uint32_t
10452 i32size=4
10453 u32size=4
10454 ;;
10455 esac
10456 fi
10457 ;;
10458esac
10459case "$i32type" in
10460'') if $test $intsize -ge 4; then
10461 i32type=int
10462 u32type="unsigned int"
10463 i32size=$intsize
10464 u32size=$intsize
10465 fi
10466 ;;
10467esac
10468
10469case "$i64type" in
10470'') case "$d_quad:$quadtype" in
10471 define:?*)
10472 i64type="$quadtype"
10473 u64type="$uquadtype"
10474 i64size=8
10475 u64size=8
10476 ;;
10477 esac
10478 ;;
10479esac
10480
1d1be0dc
NC
10481$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10482: volatile so that the compiler has to store it out to memory.
10483if test X"$d_volatile" = X"$define"; then
10484 volatile=volatile
10485fi
b4eb6b3d
JH
10486$cat <<EOP >try.c
10487#include <stdio.h>
1d1be0dc
NC
10488#include <sys/types.h>
10489#include <signal.h>
10490#ifdef SIGFPE
10491$volatile int bletched = 0;
10492$signal_t blech(s) int s; { bletched = 1; }
10493#endif
b4eb6b3d
JH
10494int main() {
10495 $uvtype u = 0;
1d1be0dc 10496 $nvtype d;
b4eb6b3d
JH
10497 int n = 8 * $uvsize;
10498 int i;
1d1be0dc
NC
10499#ifdef SIGFPE
10500 signal(SIGFPE, blech);
10501#endif
10502
b4eb6b3d
JH
10503 for (i = 0; i < n; i++) {
10504 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
10505 d = ($nvtype)u;
10506 if (($uvtype)d != u)
b4eb6b3d 10507 break;
1d1be0dc
NC
10508 if (d <= 0)
10509 break;
10510 d = ($nvtype)(u - 1);
10511 if (($uvtype)d != (u - 1))
10512 break;
10513#ifdef SIGFPE
10514 if (bletched) {
10515 break;
10516#endif
10517 }
b4eb6b3d 10518 }
efd1522b 10519 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
10520 exit(0);
10521}
10522EOP
1d1be0dc
NC
10523set try
10524
10525d_nv_preserves_uv="$undef"
10526if eval $compile; then
10527 d_nv_preserves_uv_bits="`./try$exe_ext`"
10528fi
10529case "$d_nv_preserves_uv_bits" in
10530\-[1-9]*)
10531 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10532 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10533 d_nv_preserves_uv="$define"
b4eb6b3d 10534 ;;
1d1be0dc
NC
10535[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10536 d_nv_preserves_uv="$undef" ;;
10537*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10538 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
10539esac
10540
1d1be0dc
NC
10541$rm -f try.* try
10542
b4eb6b3d
JH
10543
10544: check for off64_t
10545echo " "
10546echo "Checking to see if you have off64_t..." >&4
10547$cat >try.c <<EOCP
10548#include <sys/types.h>
10549#include <unistd.h>
10550int main() { off64_t x = 7; }
10551EOCP
10552set try
10553if eval $compile; then
10554 val="$define"
10555 echo "You have off64_t."
10556else
10557 val="$undef"
10558 echo "You do not have off64_t."
10559 case "$lseeksize" in
10560 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10561 esac
10562fi
10563$rm -f try.* try
10564set d_off64_t
10565eval $setvar
10566
10567: see if POSIX threads are available
10568set pthread.h i_pthread
10569eval $inhdr
10570
10571
10572
10573
10574: how to create joinable pthreads
10575if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10576 echo " "
10577 echo "Checking what constant to use for creating joinable pthreads..." >&4
10578 $cat >try.c <<'EOCP'
10579#include <pthread.h>
10580int main() {
10581 int detachstate = JOINABLE;
10582}
10583EOCP
10584 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10585 if eval $compile; then
10586 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10587 val="$undef" # Yes, undef.
10588 set d_old_pthread_create_joinable
10589 eval $setvar
10590 val=""
10591 set old_pthread_create_joinable
10592 eval $setvar
10593 else
10594 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10595 if eval $compile; then
10596 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10597 val="$define"
10598 set d_old_pthread_create_joinable
10599 eval $setvar
10600 val=PTHREAD_CREATE_UNDETACHED
10601 set old_pthread_create_joinable
10602 eval $setvar
10603 else
10604 set try -DJOINABLE=__UNDETACHED
10605 if eval $compile; then
10606 echo "You seem to use __UNDETACHED." >&4
10607 val="$define"
10608 set d_old_pthread_create_joinable
10609 eval $setvar
10610 val=__UNDETACHED
10611 set old_pthread_create_joinable
10612 eval $setvar
10613 else
10614 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10615 val="$define"
10616 set d_old_pthread_create_joinable
10617 eval $setvar
10618 val=0
10619 set old_pthread_create_joinable
10620 eval $setvar
10621 fi
10622 fi
10623 fi
10624 $rm -f try try.*
10625else
10626 d_old_pthread_create_joinable="$undef"
10627 old_pthread_create_joinable=""
10628fi
10629
10630: see if pause exists
10631set pause d_pause
10632eval $inlibc
10633
10634: see if pipe exists
10635set pipe d_pipe
10636eval $inlibc
10637
10638: see if poll exists
10639set poll d_poll
10640eval $inlibc
10641
10642
10643: see whether the various POSIXish _yields exist
10644$cat >try.c <<EOP
10645#include <pthread.h>
10646#include <stdio.h>
10647int main() {
10648#ifdef SCHED_YIELD
10649 sched_yield();
10650#else
10651#ifdef PTHREAD_YIELD
10652 pthread_yield();
10653#else
10654#ifdef PTHREAD_YIELD_NULL
10655 pthread_yield(NULL);
10656#endif
10657#endif
10658#endif
10659}
10660EOP
10661: see if sched_yield exists
10662set try -DSCHED_YIELD
10663if eval $compile; then
10664 val="$define"
10665 sched_yield='sched_yield()'
10666else
10667 val="$undef"
10668fi
10669case "$usethreads" in
10670$define)
10671 case "$val" in
10672 $define) echo 'sched_yield() found.' >&4 ;;
10673 *) echo 'sched_yield() NOT found.' >&4 ;;
10674 esac
10675esac
10676set d_sched_yield
10677eval $setvar
10678
10679: see if pthread_yield exists
10680set try -DPTHREAD_YIELD
10681if eval $compile; then
10682 val="$define"
10683 case "$sched_yield" in
10684 '') sched_yield='pthread_yield()' ;;
10685 esac
10686else
10687 set try -DPTHREAD_YIELD_NULL
10688 if eval $compile; then
10689 val="$define"
10690 case "$sched_yield" in
10691 '') sched_yield='pthread_yield(NULL)' ;;
10692 esac
10693 else
10694 val="$undef"
10695 fi
10696fi
10697case "$usethreads" in
10698$define)
10699 case "$val" in
10700 $define) echo 'pthread_yield() found.' >&4 ;;
10701 *) echo 'pthread_yield() NOT found.' >&4 ;;
10702 esac
10703 ;;
10704esac
10705set d_pthread_yield
10706eval $setvar
10707
10708case "$sched_yield" in
10709'') sched_yield=undef ;;
10710esac
10711
10712$rm -f try try.*
10713
10714: see if this is a pwd.h system
10715set pwd.h i_pwd
10716eval $inhdr
10717
10718case "$i_pwd" in
10719$define)
10720 xxx=`./findhdr pwd.h`
10721 $cppstdin $cppflags $cppminus < $xxx >$$.h
10722
10723 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10724 val="$define"
10725 else
10726 val="$undef"
10727 fi
10728 set d_pwquota
10729 eval $setvar
10730
10731 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10732 val="$define"
10733 else
10734 val="$undef"
10735 fi
10736 set d_pwage
10737 eval $setvar
10738
10739 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10740 val="$define"
10741 else
10742 val="$undef"
10743 fi
10744 set d_pwchange
10745 eval $setvar
10746
10747 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10748 val="$define"
10749 else
10750 val="$undef"
10751 fi
10752 set d_pwclass
10753 eval $setvar
10754
10755 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10756 val="$define"
10757 else
10758 val="$undef"
10759 fi
10760 set d_pwexpire
10761 eval $setvar
10762
10763 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10764 val="$define"
10765 else
10766 val="$undef"
10767 fi
10768 set d_pwcomment
10769 eval $setvar
10770
10771 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10772 val="$define"
10773 else
10774 val="$undef"
10775 fi
10776 set d_pwgecos
10777 eval $setvar
10778
10779 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10780 val="$define"
10781 else
10782 val="$undef"
10783 fi
10784 set d_pwpasswd
10785 eval $setvar
10786
10787 $rm -f $$.h
10788 ;;
10789*)
10790 val="$undef";
10791 set d_pwquota; eval $setvar
10792 set d_pwage; eval $setvar
10793 set d_pwchange; eval $setvar
10794 set d_pwclass; eval $setvar
10795 set d_pwexpire; eval $setvar
10796 set d_pwcomment; eval $setvar
10797 set d_pwgecos; eval $setvar
10798 set d_pwpasswd; eval $setvar
10799 ;;
10800esac
10801
10802: see if readdir and friends exist
10803set readdir d_readdir
10804eval $inlibc
10805set seekdir d_seekdir
10806eval $inlibc
10807set telldir d_telldir
10808eval $inlibc
10809set rewinddir d_rewinddir
10810eval $inlibc
10811
10812: see if readlink exists
10813set readlink d_readlink
10814eval $inlibc
10815
10816: see if rename exists
10817set rename d_rename
10818eval $inlibc
10819
10820: see if rmdir exists
10821set rmdir d_rmdir
10822eval $inlibc
10823
10824: see if memory.h is available.
10825val=''
10826set memory.h val
10827eval $inhdr
10828
10829: See if it conflicts with string.h
10830case "$val" in
10831$define)
10832 case "$strings" in
10833 '') ;;
10834 *)
10835 $cppstdin $cppflags $cppminus < $strings > mem.h
10836 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10837 echo " "
10838 echo "We won't be including <memory.h>."
10839 val="$undef"
10840 fi
10841 $rm -f mem.h
10842 ;;
10843 esac
10844esac
10845set i_memory
10846eval $setvar
10847
10848: can bcopy handle overlapping blocks?
10849val="$undef"
10850case "$d_bcopy" in
10851"$define")
10852 echo " "
10853 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10854 $cat >try.c <<EOCP
10855#$i_memory I_MEMORY
10856#$i_stdlib I_STDLIB
10857#$i_string I_STRING
10858#$i_unistd I_UNISTD
10859EOCP
10860 $cat >>try.c <<'EOCP'
10861#include <stdio.h>
10862#ifdef I_MEMORY
10863# include <memory.h>
10864#endif
10865#ifdef I_STDLIB
10866# include <stdlib.h>
10867#endif
10868#ifdef I_STRING
10869# include <string.h>
10870#else
10871# include <strings.h>
10872#endif
10873#ifdef I_UNISTD
10874# include <unistd.h> /* Needed for NetBSD */
10875#endif
10876int main()
10877{
10878char buf[128], abc[128];
10879char *b;
10880int len;
10881int off;
10882int align;
10883
10884bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10885
10886for (align = 7; align >= 0; align--) {
10887 for (len = 36; len; len--) {
10888 b = buf+align;
10889 bcopy(abc, b, len);
10890 for (off = 1; off <= len; off++) {
10891 bcopy(b, b+off, len);
10892 bcopy(b+off, b, len);
10893 if (bcmp(b, abc, len))
10894 exit(1);
10895 }
10896 }
10897}
10898exit(0);
10899}
10900EOCP
10901 set try
10902 if eval $compile_ok; then
10903 if ./try 2>/dev/null; then
10904 echo "Yes, it can."
10905 val="$define"
10906 else
10907 echo "It can't, sorry."
10908 case "$d_memmove" in
10909 "$define") echo "But that's Ok since you have memmove()." ;;
10910 esac
10911 fi
10912 else
10913 echo "(I can't compile the test program, so we'll assume not...)"
10914 case "$d_memmove" in
10915 "$define") echo "But that's Ok since you have memmove()." ;;
10916 esac
10917 fi
10918 ;;
10919esac
10920$rm -f try.* try core
10921set d_safebcpy
10922eval $setvar
10923
10924: can memcpy handle overlapping blocks?
10925val="$undef"
10926case "$d_memcpy" in
10927"$define")
10928 echo " "
10929 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10930 $cat >try.c <<EOCP
10931#$i_memory I_MEMORY
10932#$i_stdlib I_STDLIB
10933#$i_string I_STRING
10934#$i_unistd I_UNISTD
10935EOCP
10936 $cat >>try.c <<'EOCP'
10937#include <stdio.h>
10938#ifdef I_MEMORY
10939# include <memory.h>
10940#endif
10941#ifdef I_STDLIB
10942# include <stdlib.h>
10943#endif
10944#ifdef I_STRING
10945# include <string.h>
10946#else
10947# include <strings.h>
10948#endif
10949#ifdef I_UNISTD
10950# include <unistd.h> /* Needed for NetBSD */
10951#endif
10952int main()
10953{
10954char buf[128], abc[128];
10955char *b;
10956int len;
10957int off;
10958int align;
10959
10960/* Copy "abcde..." string to char abc[] so that gcc doesn't
10961 try to store the string in read-only memory. */
10962memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10963
10964for (align = 7; align >= 0; align--) {
10965 for (len = 36; len; len--) {
10966 b = buf+align;
10967 memcpy(b, abc, len);
10968 for (off = 1; off <= len; off++) {
10969 memcpy(b+off, b, len);
10970 memcpy(b, b+off, len);
10971 if (memcmp(b, abc, len))
10972 exit(1);
10973 }
10974 }
10975}
10976exit(0);
10977}
10978EOCP
10979 set try
10980 if eval $compile_ok; then
10981 if ./try 2>/dev/null; then
10982 echo "Yes, it can."
10983 val="$define"
10984 else
10985 echo "It can't, sorry."
10986 case "$d_memmove" in
10987 "$define") echo "But that's Ok since you have memmove()." ;;
10988 esac
10989 fi
10990 else
10991 echo "(I can't compile the test program, so we'll assume not...)"
10992 case "$d_memmove" in
10993 "$define") echo "But that's Ok since you have memmove()." ;;
10994 esac
10995 fi
10996 ;;
10997esac
10998$rm -f try.* try core
10999set d_safemcpy
11000eval $setvar
11001
11002: can memcmp be trusted to compare relative magnitude?
11003val="$undef"
11004case "$d_memcmp" in
11005"$define")
11006 echo " "
11007 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11008 $cat >try.c <<EOCP
11009#$i_memory I_MEMORY
11010#$i_stdlib I_STDLIB
11011#$i_string I_STRING
11012#$i_unistd I_UNISTD
11013EOCP
11014 $cat >>try.c <<'EOCP'
11015#include <stdio.h>
11016#ifdef I_MEMORY
11017# include <memory.h>
11018#endif
11019#ifdef I_STDLIB
11020# include <stdlib.h>
11021#endif
11022#ifdef I_STRING
11023# include <string.h>
11024#else
11025# include <strings.h>
11026#endif
11027#ifdef I_UNISTD
11028# include <unistd.h> /* Needed for NetBSD */
11029#endif
11030int main()
11031{
11032char a = -1;
11033char b = 0;
11034if ((a < b) && memcmp(&a, &b, 1) < 0)
11035 exit(1);
11036exit(0);
11037}
11038EOCP
11039 set try
11040 if eval $compile_ok; then
11041 if ./try 2>/dev/null; then
11042 echo "Yes, it can."
11043 val="$define"
11044 else
11045 echo "No, it can't (it uses signed chars)."
11046 fi
11047 else
11048 echo "(I can't compile the test program, so we'll assume not...)"
11049 fi
11050 ;;
11051esac
11052$rm -f try.* try core
11053set d_sanemcmp
11054eval $setvar
11055
ef9f17be
JH
11056: see if prototype for sbrk is available
11057echo " "
11058set d_sbrkproto sbrk $i_unistd unistd.h
11059eval $hasproto
11060
b4eb6b3d
JH
11061: see if select exists
11062set select d_select
11063eval $inlibc
11064
11065: see if semctl exists
11066set semctl d_semctl
11067eval $inlibc
11068
11069: see if semget exists
11070set semget d_semget
11071eval $inlibc
11072
11073: see if semop exists
11074set semop d_semop
11075eval $inlibc
11076
11077: see how much of the 'sem*(2)' library is present.
11078h_sem=true
11079echo " "
11080case "$d_semctl$d_semget$d_semop" in
11081*"$undef"*) h_sem=false;;
11082esac
11083case "$osname" in
11084freebsd)
11085 case "`ipcs 2>&1`" in
11086 "SVID messages"*"not configured"*)
11087 echo "Your $osname does not have the sem*(2) configured." >&4
11088 h_sem=false
11089 val="$undef"
11090 set semctl d_semctl
11091 eval $setvar
11092 set semget d_semget
11093 eval $setvar
11094 set semop d_semop
11095 eval $setvar
11096 ;;
11097 esac
11098 ;;
11099esac
11100: we could also check for sys/ipc.h ...
11101if $h_sem && $test `./findhdr sys/sem.h`; then
11102 echo "You have the full sem*(2) library." >&4
11103 val="$define"
11104else
11105 echo "You don't have the full sem*(2) library." >&4
11106 val="$undef"
11107fi
11108set d_sem
11109eval $setvar
11110
11111: see whether sys/sem.h defines union semun
11112echo " "
11113$cat > try.c <<'END'
11114#include <sys/types.h>
11115#include <sys/ipc.h>
11116#include <sys/sem.h>
11117int main () { union semun semun; semun.buf = 0; }
11118END
11119set try
11120if eval $compile; then
11121 echo "You have union semun in <sys/sem.h>." >&4
11122 val="$define"
11123else
11124 echo "You do not have union semun in <sys/sem.h>." >&4
11125 val="$undef"
11126fi
11127$rm -f try try.c try.h
11128set d_union_semun
11129eval $setvar
11130
11131: see how to do semctl IPC_STAT
11132case "$d_sem" in
11133$define)
11134 : see whether semctl IPC_STAT can use union semun
11135 echo " "
11136 $cat > try.h <<END
11137#ifndef S_IRUSR
11138# ifdef S_IREAD
11139# define S_IRUSR S_IREAD
11140# define S_IWUSR S_IWRITE
11141# define S_IXUSR S_IEXEC
11142# else
11143# define S_IRUSR 0400
11144# define S_IWUSR 0200
11145# define S_IXUSR 0100
11146# endif
11147# define S_IRGRP (S_IRUSR>>3)
11148# define S_IWGRP (S_IWUSR>>3)
11149# define S_IXGRP (S_IXUSR>>3)
11150# define S_IROTH (S_IRUSR>>6)
11151# define S_IWOTH (S_IWUSR>>6)
11152# define S_IXOTH (S_IXUSR>>6)
11153#endif
11154#ifndef S_IRWXU
11155# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11156# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11157# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11158#endif
11159END
11160
11161 $cat > try.c <<END
11162#include <sys/types.h>
11163#include <sys/ipc.h>
11164#include <sys/sem.h>
11165#include <sys/stat.h>
11166#include <stdio.h>
11167#include <errno.h>
11168#include "try.h"
11169#ifndef errno
11170extern int errno;
11171#endif
11172#$d_union_semun HAS_UNION_SEMUN
11173int main() {
11174 union semun
11175#ifndef HAS_UNION_SEMUN
11176 {
11177 int val;
11178 struct semid_ds *buf;
11179 unsigned short *array;
11180 }
11181#endif
11182 arg;
11183 int sem, st;
11184
11185#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11186 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11187 if (sem > -1) {
11188 struct semid_ds argbuf;
11189 arg.buf = &argbuf;
11190# ifdef IPC_STAT
11191 st = semctl(sem, 0, IPC_STAT, arg);
11192 if (st == 0)
11193 printf("semun\n");
11194 else
11195# endif /* IPC_STAT */
11196 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11197# ifdef IPC_RMID
11198 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11199# endif /* IPC_RMID */
11200 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11201 } else
11202#endif /* IPC_PRIVATE && ... */
11203 printf("semget failed: errno = %d\n", errno);
11204 return 0;
11205}
11206END
11207 val="$undef"
11208 set try
11209 if eval $compile; then
11210 xxx=`./try`
11211 case "$xxx" in
11212 semun) val="$define" ;;
11213 esac
11214 fi
11215 $rm -f try try.c
11216 set d_semctl_semun
11217 eval $setvar
11218 case "$d_semctl_semun" in
11219 $define)
11220 echo "You can use union semun for semctl IPC_STAT." >&4
11221 also='also'
11222 ;;
11223 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11224 also=''
11225 ;;
11226 esac
11227
11228 : see whether semctl IPC_STAT can use struct semid_ds pointer
11229 $cat > try.c <<'END'
11230#include <sys/types.h>
11231#include <sys/ipc.h>
11232#include <sys/sem.h>
11233#include <sys/stat.h>
11234#include "try.h"
11235#include <stdio.h>
11236#include <errno.h>
11237#ifndef errno
11238extern int errno;
11239#endif
11240int main() {
11241 struct semid_ds arg;
11242 int sem, st;
11243
11244#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11245 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11246 if (sem > -1) {
11247# ifdef IPC_STAT
11248 st = semctl(sem, 0, IPC_STAT, &arg);
11249 if (st == 0)
11250 printf("semid_ds\n");
11251 else
11252# endif /* IPC_STAT */
11253 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11254# ifdef IPC_RMID
11255 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11256# endif /* IPC_RMID */
11257 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11258 } else
11259#endif /* IPC_PRIVATE && ... */
11260 printf("semget failed: errno = %d\n", errno);
11261
11262 return 0;
11263}
11264END
11265 val="$undef"
11266 set try
11267 if eval $compile; then
11268 xxx=`./try`
11269 case "$xxx" in
11270 semid_ds) val="$define" ;;
11271 esac
11272 fi
11273 $rm -f try try.c
11274 set d_semctl_semid_ds
11275 eval $setvar
11276 case "$d_semctl_semid_ds" in
11277 $define)
11278 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11279 ;;
11280 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11281 ;;
11282 esac
11283 $rm -f try.h
11284 ;;
11285*) val="$undef"
11286
11287 # We do not have the full sem*(2) library, so assume we can not
11288 # use either.
11289
11290 set d_semctl_semun
11291 eval $setvar
11292
11293 set d_semctl_semid_ds
11294 eval $setvar
11295 ;;
11296esac
11297
11298: see if setegid exists
11299set setegid d_setegid
11300eval $inlibc
11301
11302: see if seteuid exists
11303set seteuid d_seteuid
11304eval $inlibc
11305
11306: see if setgrent exists
11307set setgrent d_setgrent
11308eval $inlibc
11309
11310: see if sethostent exists
11311set sethostent d_sethent
11312eval $inlibc
11313
11314: see if setlinebuf exists
11315set setlinebuf d_setlinebuf
11316eval $inlibc
11317
11318: see if setlocale exists
11319set setlocale d_setlocale
11320eval $inlibc
11321
11322: see if setnetent exists
11323set setnetent d_setnent
11324eval $inlibc
11325
11326: see if setprotoent exists
11327set setprotoent d_setpent
11328eval $inlibc
11329
11330: see if setpgid exists
11331set setpgid d_setpgid
11332eval $inlibc
11333
11334: see if setpgrp2 exists
11335set setpgrp2 d_setpgrp2
11336eval $inlibc
11337
11338: see if setpriority exists
11339set setpriority d_setprior
11340eval $inlibc
11341
11342: see if setproctitle exists
11343set setproctitle d_setproctitle
11344eval $inlibc
11345
11346: see if setpwent exists
11347set setpwent d_setpwent
11348eval $inlibc
11349
11350: see if setregid exists
11351set setregid d_setregid
11352eval $inlibc
11353set setresgid d_setresgid
11354eval $inlibc
11355
11356: see if setreuid exists
11357set setreuid d_setreuid
11358eval $inlibc
11359set setresuid d_setresuid
11360eval $inlibc
11361
11362: see if setrgid exists
11363set setrgid d_setrgid
11364eval $inlibc
11365
11366: see if setruid exists
11367set setruid d_setruid
11368eval $inlibc
11369
11370: see if setservent exists
11371set setservent d_setsent
11372eval $inlibc
11373
11374: see if setsid exists
11375set setsid d_setsid
11376eval $inlibc
11377
11378: see if setvbuf exists
11379set setvbuf d_setvbuf
11380eval $inlibc
11381
11382: see if sfio.h is available
11383set sfio.h i_sfio
11384eval $inhdr
11385
11386
11387: see if sfio library is available
11388case "$i_sfio" in
11389$define)
11390 val=''
11391 set sfreserve val
11392 eval $inlibc
11393 ;;
11394*)
11395 val="$undef"
11396 ;;
11397esac
11398: Ok, but do we want to use it.
11399case "$val" in
11400$define)
11401 case "$usesfio" in
11402 true|$define|[yY]*) dflt='y';;
11403 *) dflt='n';;
11404 esac
11405 echo "$package can use the sfio library, but it is experimental."
11406 case "$useperlio" in
11407 "$undef")
11408 echo "For sfio also the PerlIO abstraction layer is needed."
11409 echo "Earlier you said you wouldn't want that."
11410 ;;
11411 esac
11412 rp="You seem to have sfio available, do you want to try using it?"
11413 . ./myread
11414 case "$ans" in
11415 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11416 useperlio="$define"
11417 val="$define"
11418 ;;
11419 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11420 val="$undef"
b4eb6b3d
JH
11421 ;;
11422 esac
11423 ;;
11424*) case "$usesfio" in
11425 true|$define|[yY]*)
11426 echo "Sorry, cannot find sfio on this machine." >&4
11427 echo "Ignoring your setting of usesfio=$usesfio." >&4
11428 val="$undef"
11429 ;;
11430 esac
11431 ;;
11432esac
11433set d_sfio
11434eval $setvar
11435case "$d_sfio" in
11436$define) usesfio='true';;
11437*) usesfio='false';;
11438esac
3659ebf1
JH
11439case "$d_sfio" in
11440$define) ;;
11441*) : Remove sfio from list of libraries to use
11442 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11443 shift
11444 libs="$*"
11445 echo "libs = $libs" >&4
11446;;
11447esac
11448
b4eb6b3d
JH
11449
11450: see if shmctl exists
11451set shmctl d_shmctl
11452eval $inlibc
11453
11454: see if shmget exists
11455set shmget d_shmget
11456eval $inlibc
11457
11458: see if shmat exists
11459set shmat d_shmat
11460eval $inlibc
11461: see what shmat returns
11462case "$d_shmat" in
11463"$define")
11464 $cat >shmat.c <<'END'
11465#include <sys/shm.h>
11466void *shmat();
11467END
11468 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11469 shmattype='void *'
11470 else
11471 shmattype='char *'
11472 fi
11473 echo "and it returns ($shmattype)." >&4
11474 : see if a prototype for shmat is available
11475 xxx=`./findhdr sys/shm.h`
11476 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11477 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11478 val="$define"
11479 else
11480 val="$undef"
11481 fi
11482 $rm -f shmat.[co]
11483 ;;
11484*)
11485 val="$undef"
11486 ;;
11487esac
11488set d_shmatprototype
11489eval $setvar
11490
11491: see if shmdt exists
11492set shmdt d_shmdt
11493eval $inlibc
11494
11495: see how much of the 'shm*(2)' library is present.
11496h_shm=true
11497echo " "
11498case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11499*"$undef"*) h_shm=false;;
11500esac
11501case "$osname" in
11502freebsd)
11503 case "`ipcs 2>&1`" in
11504 "SVID shared memory"*"not configured"*)
11505 echo "Your $osname does not have the shm*(2) configured." >&4
11506 h_shm=false
11507 val="$undef"
11508 set shmctl d_shmctl
11509 evat $setvar
11510 set shmget d_shmget
11511 evat $setvar
11512 set shmat d_shmat
11513 evat $setvar
11514 set shmdt d_shmdt
11515 evat $setvar
11516 ;;
11517 esac
11518 ;;
11519esac
11520: we could also check for sys/ipc.h ...
11521if $h_shm && $test `./findhdr sys/shm.h`; then
11522 echo "You have the full shm*(2) library." >&4
11523 val="$define"
11524else
11525 echo "You don't have the full shm*(2) library." >&4
11526 val="$undef"
11527fi
11528set d_shm
11529eval $setvar
11530
11531echo " "
11532: see if we have sigaction
11533if set sigaction val -f d_sigaction; eval $csym; $val; then
11534 echo 'sigaction() found.' >&4
11535 $cat > try.c <<'EOP'
11536#include <stdio.h>
11537#include <sys/types.h>
11538#include <signal.h>
11539int main()
11540{
11541 struct sigaction act, oact;
11542 act.sa_flags = 0;
11543 oact.sa_handler = 0;
11544 /* so that act and oact are used */
11545 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11546}
11547EOP
11548 set try
11549 if eval $compile_ok; then
11550 val="$define"
11551 else
11552 echo "But you don't seem to have a useable struct sigaction." >&4
11553 val="$undef"
11554 fi
11555else
11556 echo 'sigaction NOT found.' >&4
11557 val="$undef"
11558fi
11559set d_sigaction; eval $setvar
11560$rm -f try try$_o try.c
11561
983dbef6
JH
11562: see if sigprocmask exists
11563set sigprocmask d_sigprocmask
11564eval $inlibc
11565
b4eb6b3d
JH
11566: see if sigsetjmp exists
11567echo " "
11568case "$d_sigsetjmp" in
11569'')
11570 $cat >try.c <<'EOP'
11571#include <setjmp.h>
11572sigjmp_buf env;
11573int set = 1;
11574int main()
11575{
11576 if (sigsetjmp(env,1))
11577 exit(set);
11578 set = 0;
11579 siglongjmp(env, 1);
11580 exit(1);
11581}
11582EOP
11583 set try
11584 if eval $compile; then
11585 if ./try >/dev/null 2>&1; then
11586 echo "POSIX sigsetjmp found." >&4
11587 val="$define"
11588 else
11589 $cat >&4 <<EOM
11590Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11591I'll ignore them.
11592EOM
11593 val="$undef"
11594 fi
11595 else
11596 echo "sigsetjmp not found." >&4
11597 val="$undef"
11598 fi
11599 ;;
11600*) val="$d_sigsetjmp"
11601 case "$d_sigsetjmp" in
11602 $define) echo "POSIX sigsetjmp found." >&4;;
11603 $undef) echo "sigsetjmp not found." >&4;;
11604 esac
11605 ;;
11606esac
11607set d_sigsetjmp
11608eval $setvar
11609$rm -f try.c try
11610
11611: see if socks5_init exists
11612set socks5_init d_socks5_init
11613eval $inlibc
11614
11615: see if sys/stat.h is available
11616set sys/stat.h i_sysstat
11617eval $inhdr
11618
11619
11620: see if stat knows about block sizes
11621echo " "
11622echo "Checking to see if your struct stat has st_blocks field..." >&4
11623set d_statblks stat st_blocks $i_sysstat sys/stat.h
11624eval $hasfield
11625
11626
11627: see if this is a sys/vfs.h system
11628set sys/vfs.h i_sysvfs
11629eval $inhdr
11630
11631
11632: see if this is a sys/statfs.h system
11633set sys/statfs.h i_sysstatfs
11634eval $inhdr
11635
11636
11637echo " "
11638echo "Checking to see if your system supports struct statfs..." >&4
11639set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
11640eval $hasstruct
11641case "$d_statfs_s" in
11642"$define") echo "Yes, it does." ;;
11643*) echo "No, it doesn't." ;;
11644esac
11645
11646
11647
11648: see if struct statfs knows about f_flags
11649case "$d_statfs_s" in
11650define)
11651 echo " "
11652 echo "Checking to see if your struct statfs has f_flags field..." >&4
11653 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
11654 eval $hasfield
11655 ;;
11656*) val="$undef"
11657 set d_statfs_f_flags
11658 eval $setvar
11659 ;;
11660esac
11661case "$d_statfs_f_flags" in
11662"$define") echo "Yes, it does." ;;
11663*) echo "No, it doesn't." ;;
11664esac
11665
11666: see if _ptr and _cnt from stdio act std
11667echo " "
80f36755
NC
11668
11669if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11670 echo "(Looks like you have stdio.h from BSD.)"
11671 case "$stdio_ptr" in
11672 '') stdio_ptr='((fp)->_p)'
11673 ptr_lval=$define
11674 ;;
11675 *) ptr_lval=$d_stdio_ptr_lval;;
11676 esac
11677 case "$stdio_cnt" in
11678 '') stdio_cnt='((fp)->_r)'
11679 cnt_lval=$define
11680 ;;
11681 *) cnt_lval=$d_stdio_cnt_lval;;
11682 esac
11683 case "$stdio_base" in
11684 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11685 esac
11686 case "$stdio_bufsiz" in
11687 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11688 esac
11689elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
11690 echo "(Looks like you have stdio.h from Linux.)"
11691 case "$stdio_ptr" in
11692 '') stdio_ptr='((fp)->_IO_read_ptr)'
11693 ptr_lval=$define
11694 ;;
11695 *) ptr_lval=$d_stdio_ptr_lval;;
11696 esac
11697 case "$stdio_cnt" in
11698 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11699 cnt_lval=$undef
11700 ;;
11701 *) cnt_lval=$d_stdio_cnt_lval;;
11702 esac
11703 case "$stdio_base" in
11704 '') stdio_base='((fp)->_IO_read_base)';;
11705 esac
11706 case "$stdio_bufsiz" in
11707 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11708 esac
11709else
11710 case "$stdio_ptr" in
11711 '') stdio_ptr='((fp)->_ptr)'
11712 ptr_lval=$define
11713 ;;
11714 *) ptr_lval=$d_stdio_ptr_lval;;
11715 esac
11716 case "$stdio_cnt" in
11717 '') stdio_cnt='((fp)->_cnt)'
11718 cnt_lval=$define
11719 ;;
11720 *) cnt_lval=$d_stdio_cnt_lval;;
11721 esac
11722 case "$stdio_base" in
11723 '') stdio_base='((fp)->_base)';;
11724 esac
11725 case "$stdio_bufsiz" in
11726 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11727 esac
11728fi
80f36755 11729
b4eb6b3d
JH
11730: test whether _ptr and _cnt really work
11731echo "Checking how std your stdio is..." >&4
11732$cat >try.c <<EOP
11733#include <stdio.h>
11734#define FILE_ptr(fp) $stdio_ptr
11735#define FILE_cnt(fp) $stdio_cnt
11736int main() {
11737 FILE *fp = fopen("try.c", "r");
11738 char c = getc(fp);
11739 if (
11740 18 <= FILE_cnt(fp) &&
11741 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11742 )
11743 exit(0);
11744 exit(1);
11745}
11746EOP
11747val="$undef"
11748set try
11749if eval $compile; then
11750 if ./try; then
11751 echo "Your stdio acts pretty std."
11752 val="$define"
11753 else
11754 echo "Your stdio isn't very std."
11755 fi
11756else
11757 echo "Your stdio doesn't appear very std."
11758fi
11759$rm -f try.c try
11760set d_stdstdio
11761eval $setvar
11762
11763: Can _ptr be used as an lvalue?
11764case "$d_stdstdio$ptr_lval" in
11765$define$define) val=$define ;;
11766*) val=$undef ;;
11767esac
11768set d_stdio_ptr_lval
11769eval $setvar
11770
11771: Can _cnt be used as an lvalue?
11772case "$d_stdstdio$cnt_lval" in
11773$define$define) val=$define ;;
11774*) val=$undef ;;
11775esac
11776set d_stdio_cnt_lval
11777eval $setvar
11778
a7ffa9b9
NC
11779
11780: test whether setting _ptr sets _cnt as a side effect
11781d_stdio_ptr_lval_sets_cnt="$undef"
11782d_stdio_ptr_lval_nochange_cnt="$undef"
11783case "$d_stdio_ptr_lval$d_stdstdio" in
11784$define$define)
11785 echo "Checking to see what happens if we set the stdio ptr..." >&4
11786$cat >try.c <<EOP
11787#include <stdio.h>
11788/* Can we scream? */
11789/* Eat dust sed :-) */
c1d9e6fa 11790/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
11791#define FILE_ptr(fp) $stdio_ptr
11792#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 11793#include <sys/types.h>
a7ffa9b9
NC
11794int main() {
11795 FILE *fp = fopen("try.c", "r");
c1d9e6fa 11796 int c;
a7ffa9b9
NC
11797 char *ptr;
11798 size_t cnt;
c1d9e6fa
JH
11799 if (!fp) {
11800 puts("Fail even to read");
11801 exit(1);
11802 }
11803 c = getc(fp); /* Read away the first # */
11804 if (c == EOF) {
11805 puts("Fail even to read");
11806 exit(1);
11807 }
a7ffa9b9
NC
11808 if (!(
11809 18 <= FILE_cnt(fp) &&
11810 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11811 )) {
11812 puts("Fail even to read");
11813 exit (1);
11814 }
c1d9e6fa
JH
11815 ptr = (char*) FILE_ptr(fp);
11816 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 11817
c1d9e6fa 11818 FILE_ptr(fp) += 42;
a7ffa9b9 11819
c1d9e6fa 11820 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
11821 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11822 exit (1);
11823 }
11824 if (FILE_cnt(fp) <= 20) {
11825 printf ("Fail (<20 chars to test)");
11826 exit (1);
11827 }
11828 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11829 puts("Fail compare");
11830 exit (1);
11831 }
11832 if (cnt == FILE_cnt(fp)) {
11833 puts("Pass_unchanged");
11834 exit (0);
11835 }
11836 if (FILE_cnt(fp) == (cnt - 42)) {
11837 puts("Pass_changed");
11838 exit (0);
11839 }
11840 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11841 return 1;
11842
11843}
11844EOP
11845 set try
11846 if eval $compile; then
11847 case `./try$exe_ext` in
11848 Pass_changed)
2e32dcfe 11849 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
11850 d_stdio_ptr_lval_sets_cnt="$define" ;;
11851 Pass_unchanged)
11852 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11853 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11854 Fail*)
11855 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11856 *)
11857 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11858 esac
11859 else
11860 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11861 fi
11862 $rm -f try.c try
11863 ;;
11864esac
11865
b4eb6b3d
JH
11866: see if _base is also standard
11867val="$undef"
11868case "$d_stdstdio" in
11869$define)
11870 $cat >try.c <<EOP
11871#include <stdio.h>
11872#define FILE_base(fp) $stdio_base
11873#define FILE_bufsiz(fp) $stdio_bufsiz
11874int main() {
11875 FILE *fp = fopen("try.c", "r");
11876 char c = getc(fp);
11877 if (
11878 19 <= FILE_bufsiz(fp) &&
11879 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11880 )
11881 exit(0);
11882 exit(1);
11883}
11884EOP
11885 set try
11886 if eval $compile; then
11887 if ./try; then
11888 echo "And its _base field acts std."
11889 val="$define"
11890 else
11891 echo "But its _base field isn't std."
11892 fi
11893 else
11894 echo "However, it seems to be lacking the _base field."
11895 fi
11896 $rm -f try.c try
11897 ;;
11898esac
11899set d_stdiobase
11900eval $setvar
11901
11902$cat >&4 <<EOM
11903Checking how to access stdio streams by file descriptor number...
11904EOM
11905case "$stdio_stream_array" in
11906'') $cat >try.c <<EOCP
11907#include <stdio.h>
11908int main() {
11909 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11910 printf("yes\n");
11911}
11912EOCP
11913 for s in _iob __iob __sF
11914 do
11915 set try -DSTDIO_STREAM_ARRAY=$s
11916 if eval $compile; then
11917 case "`./try$exe_ext`" in
11918 yes) stdio_stream_array=$s; break ;;
11919 esac
11920 fi
11921 done
11922 $rm -f try.* try$exe_ext
11923esac
11924case "$stdio_stream_array" in
11925'') $cat >&4 <<EOM
11926I can't figure out how to access stdio streams by file descriptor number.
11927EOM
11928 d_stdio_stream_array="$undef"
11929 ;;
11930*) $cat >&4 <<EOM
11931You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11932EOM
11933 d_stdio_stream_array="$define"
11934 ;;
11935esac
11936
11937: see if strcoll exists
11938set strcoll d_strcoll
11939eval $inlibc
11940
11941: check for structure copying
11942echo " "
11943echo "Checking to see if your C compiler can copy structs..." >&4
11944$cat >try.c <<'EOCP'
11945int main()
11946{
11947 struct blurfl {
11948 int dyick;
11949 } foo, bar;
11950
11951 foo = bar;
11952}
11953EOCP
11954if $cc -c try.c >/dev/null 2>&1 ; then
11955 val="$define"
11956 echo "Yup, it can."
11957else
11958 val="$undef"
11959 echo "Nope, it can't."
11960fi
11961set d_strctcpy
11962eval $setvar
11963$rm -f try.*
11964
11965: see if strerror and/or sys_errlist[] exist
11966echo " "
11967if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11968 if set strerror val -f d_strerror; eval $csym; $val; then
11969 echo 'strerror() found.' >&4
11970 d_strerror="$define"
11971 d_strerrm='strerror(e)'
11972 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11973 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11974 d_syserrlst="$define"
11975 else
11976 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11977 d_syserrlst="$undef"
11978 fi
11979 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11980 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11981 echo 'strerror() found in string header.' >&4
11982 d_strerror="$define"
11983 d_strerrm='strerror(e)'
11984 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11985 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11986 d_syserrlst="$define"
11987 else
11988 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11989 d_syserrlst="$undef"
11990 fi
11991 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11992 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11993 d_strerror="$undef"
11994 d_syserrlst="$define"
11995 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11996 else
11997 echo 'strerror() and sys_errlist[] NOT found.' >&4
11998 d_strerror="$undef"
11999 d_syserrlst="$undef"
12000 d_strerrm='"unknown"'
12001 fi
12002fi
12003
12004: see if strtod exists
12005set strtod d_strtod
12006eval $inlibc
12007
12008: see if strtol exists
12009set strtol d_strtol
12010eval $inlibc
12011
12012: see if strtold exists
12013set strtold d_strtold
12014eval $inlibc
12015
12016: see if strtoll exists
12017set strtoll d_strtoll
12018eval $inlibc
12019
12020case "$d_longlong-$d_strtoll" in
12021"$define-$define")
12022 $cat <<EOM
12023Checking whether your strtoll() works okay...
12024EOM
12025 $cat >try.c <<'EOCP'
12026#include <errno.h>
12027#ifdef __hpux
12028#define strtoll __strtoll
12029#endif
e75931a7
YST
12030#ifdef __EMX__
12031#define strtoll _strtoll
12032#endif
b4eb6b3d
JH
12033#include <stdio.h>
12034extern long long int strtoll(char *s, char **, int);
12035static int bad = 0;
12036int check(char *s, long long ell, int een) {
12037 long long gll;
12038 errno = 0;
12039 gll = strtoll(s, 0, 10);
12040 if (!((gll == ell) && (errno == een)))
12041 bad++;
12042}
12043int main() {
12044 check(" 1", 1LL, 0);
12045 check(" 0", 0LL, 0);
12046 check("-1", -1LL, 0);
12047 check("-9223372036854775808", -9223372036854775808LL, 0);
12048 check("-9223372036854775808", -9223372036854775808LL, 0);
12049 check(" 9223372036854775807", 9223372036854775807LL, 0);
12050 check("-9223372036854775808", -9223372036854775808LL, 0);
12051 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12052 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12053 if (!bad)
12054 printf("ok\n");
12055}
12056EOCP
12057 set try
12058 if eval $compile; then
e75931a7
YST
12059 yyy=`./try`
12060 case "$yyy" in
b4eb6b3d
JH
12061 ok) echo "Your strtoll() seems to be working okay." ;;
12062 *) cat <<EOM >&4
12063Your strtoll() doesn't seem to be working okay.
12064EOM
12065 d_strtoll="$undef"
12066 ;;
69eadf66 12067 esac
e75931a7
YST
12068 else
12069 echo "(I can't seem to compile the test program--assuming it doesn't)"
12070 d_strtoll="$undef"
b4eb6b3d
JH
12071 fi
12072 ;;
12073esac
12074
28e5dec8
JH
12075: see if strtoq exists
12076set strtoq d_strtoq
12077eval $inlibc
12078
b4eb6b3d
JH
12079: see if strtoul exists
12080set strtoul d_strtoul
12081eval $inlibc
12082
d0e6d399
NC
12083case "$d_strtoul" in
12084"$define")
12085 $cat <<EOM
12086Checking whether your strtoul() works okay...
12087EOM
12088 $cat >try.c <<'EOCP'
12089#include <errno.h>
12090#include <stdio.h>
12091extern unsigned long int strtoul(char *s, char **, int);
12092static int bad = 0;
12093void check(char *s, unsigned long eul, int een) {
12094 unsigned long gul;
12095 errno = 0;
12096 gul = strtoul(s, 0, 10);
12097 if (!((gul == eul) && (errno == een)))
12098 bad++;
12099}
12100int main() {
12101 check(" 1", 1L, 0);
12102 check(" 0", 0L, 0);
12103EOCP
12104 case "$longsize" in
12105 8)
12106 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12107 check("18446744073709551615", 18446744073709551615UL, 0);
12108 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12109#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12110 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12111 check("-18446744073709551614", 2, 0);
12112 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12113 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12114 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12115#endif
d0e6d399
NC
12116EOCP
12117 ;;
12118 4)
12119 $cat >>try.c <<'EOCP'
12120 check("4294967295", 4294967295UL, 0);
12121 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12122#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12123 check("-1", 4294967295UL, 0);
12124 check("-4294967294", 2, 0);
12125 check("-4294967295", 1, 0);
12126 check("-4294967296", 4294967295UL, ERANGE);
12127 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12128#endif
d0e6d399
NC
12129EOCP
12130 ;;
12131 *)
12132: Should we write these tests to be more portable by sprintf-ing
12133: ~0 and then manipulating that char string as input for strtol?
12134 ;;
12135 esac
12136 $cat >>try.c <<'EOCP'
12137 if (!bad)
12138 printf("ok\n");
12139 return 0;
12140}
12141EOCP
12142 set try
12143 if eval $compile; then
12144 case "`./try`" in
12145 ok) echo "Your strtoul() seems to be working okay." ;;
12146 *) cat <<EOM >&4
12147Your strtoul() doesn't seem to be working okay.
12148EOM
12149 d_strtoul="$undef"
12150 ;;
12151 esac
12152 fi
12153 ;;
12154esac
12155
b4eb6b3d
JH
12156: see if strtoull exists
12157set strtoull d_strtoull
12158eval $inlibc
12159
12160case "$d_longlong-$d_strtoull" in
12161"$define-$define")
12162 $cat <<EOM
12163Checking whether your strtoull() works okay...
12164EOM
12165 $cat >try.c <<'EOCP'
12166#include <errno.h>
12167#ifdef __hpux
12168#define strtoull __strtoull
12169#endif
12170#include <stdio.h>
12171extern unsigned long long int strtoull(char *s, char **, int);
12172static int bad = 0;
12173int check(char *s, long long eull, int een) {
12174 long long gull;
12175 errno = 0;
12176 gull = strtoull(s, 0, 10);
12177 if (!((gull == eull) && (errno == een)))
12178 bad++;
12179}
12180int main() {
d0e6d399
NC
12181 check(" 1", 1LL, 0);
12182 check(" 0", 0LL, 0);
12183 check("18446744073709551615", 18446744073709551615ULL, 0);
12184 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12185#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
12186 check("-1", 18446744073709551615ULL, 0);
12187 check("-18446744073709551614", 2LL, 0);
12188 check("-18446744073709551615", 1LL, 0);
12189 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12190 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12191#endif
b4eb6b3d
JH
12192 if (!bad)
12193 printf("ok\n");
12194}
12195EOCP
12196 set try
12197 if eval $compile; then
12198 case "`./try`" in
12199 ok) echo "Your strtoull() seems to be working okay." ;;
12200 *) cat <<EOM >&4
12201Your strtoull() doesn't seem to be working okay.
12202EOM
12203 d_strtoull="$undef"
12204 ;;
12205 esac
12206 fi
12207 ;;
12208esac
12209
12210: see if strtouq exists
12211set strtouq d_strtouq
12212eval $inlibc
12213
d0e6d399
NC
12214case "$d_strtouq" in
12215"$define")
12216 $cat <<EOM
12217Checking whether your strtouq() works okay...
12218EOM
12219 $cat >try.c <<'EOCP'
12220#include <errno.h>
12221#include <stdio.h>
12222extern unsigned long long int strtouq(char *s, char **, int);
12223static int bad = 0;
12224void check(char *s, unsigned long long eull, int een) {
12225 unsigned long long gull;
12226 errno = 0;
12227 gull = strtouq(s, 0, 10);
12228 if (!((gull == eull) && (errno == een)))
12229 bad++;
12230}
12231int main() {
12232 check(" 1", 1LL, 0);
12233 check(" 0", 0LL, 0);
12234 check("18446744073709551615", 18446744073709551615ULL, 0);
12235 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12236#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
12237 check("-1", 18446744073709551615ULL, 0);
12238 check("-18446744073709551614", 2LL, 0);
12239 check("-18446744073709551615", 1LL, 0);
12240 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12241 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12242#endif
d0e6d399
NC
12243 if (!bad)
12244 printf("ok\n");
12245 return 0;
12246}
12247EOCP
12248 set try
12249 if eval $compile; then
12250 case "`./try`" in
12251 ok) echo "Your strtouq() seems to be working okay." ;;
12252 *) cat <<EOM >&4
12253Your strtouq() doesn't seem to be working okay.
12254EOM
12255 d_strtouq="$undef"
12256 ;;
12257 esac
12258 fi
12259 ;;
12260esac
12261
b4eb6b3d
JH
12262: see if strxfrm exists
12263set strxfrm d_strxfrm
12264eval $inlibc
12265
12266: see if symlink exists
12267set symlink d_symlink
12268eval $inlibc
12269
12270: see if syscall exists
12271set syscall d_syscall
12272eval $inlibc
12273
12274: see if sysconf exists
12275set sysconf d_sysconf
12276eval $inlibc
12277
12278: see if system exists
12279set system d_system
12280eval $inlibc
12281
12282: see if tcgetpgrp exists
12283set tcgetpgrp d_tcgetpgrp
12284eval $inlibc
12285
12286: see if tcsetpgrp exists
12287set tcsetpgrp d_tcsetpgrp
12288eval $inlibc
12289
12290: see if prototype for telldir is available
12291echo " "
12292set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12293eval $hasproto
12294
12295: see if this is a sys/times.h system
12296set sys/times.h i_systimes
12297eval $inhdr
12298
12299: see if times exists
12300echo " "
12301if set times val -f d_times; eval $csym; $val; then
12302 echo 'times() found.' >&4
12303 d_times="$define"
12304 inc=''
12305 case "$i_systimes" in
12306 "$define") inc='sys/times.h';;
12307 esac
12308 rp="What is the type returned by times() on this system?"
12309 set clock_t clocktype long stdio.h sys/types.h $inc
12310 eval $typedef_ask
12311else
12312 echo 'times() NOT found, hope that will do.' >&4
12313 d_times="$undef"
12314 clocktype='int'
12315fi
12316
12317: see if truncate exists
12318set truncate d_truncate
12319eval $inlibc
12320
12321: see if tzname[] exists
12322echo " "
12323if set tzname val -a d_tzname; eval $csym; $val; then
12324 val="$define"
12325 echo 'tzname[] found.' >&4
12326else
12327 val="$undef"
12328 echo 'tzname[] NOT found.' >&4
12329fi
12330set d_tzname
12331eval $setvar
12332
12333: see if umask exists
12334set umask d_umask
12335eval $inlibc
12336
12337: see if ustat exists
12338set ustat d_ustat
12339eval $inlibc
12340
12341: backward compatibility for d_hvfork
12342if test X$d_hvfork != X; then
12343 d_vfork="$d_hvfork"
12344 d_hvfork=''
12345fi
12346: see if there is a vfork
12347val=''
12348set vfork val
12349eval $inlibc
12350
12351: Ok, but do we want to use it. vfork is reportedly unreliable in
12352: perl on Solaris 2.x, and probably elsewhere.
12353case "$val" in
12354$define)
12355 echo " "
12356 case "$usevfork" in
12357 false) dflt='n';;
12358 *) dflt='y';;
12359 esac
12360 cat <<'EOM'
12361
12362Perl can only use a vfork() that doesn't suffer from strict
12363restrictions on calling functions or modifying global data in
12364the child. For example, glibc-2.1 contains such a vfork()
12365that is unsuitable. If your system provides a proper fork()
12366call, chances are that you do NOT want perl to use vfork().
12367
12368EOM
12369 rp="Do you still want to use vfork()?"
12370 . ./myread
12371 case "$ans" in
12372 y|Y) ;;
12373 *)
12374 echo "Ok, we won't use vfork()."
12375 val="$undef"
12376 ;;
12377 esac
12378 ;;
12379esac
12380set d_vfork
12381eval $setvar
12382case "$d_vfork" in
12383$define) usevfork='true';;
12384*) usevfork='false';;
12385esac
12386
12387: see if this is an sysdir system
12388set sys/dir.h i_sysdir
12389eval $inhdr
12390
12391: see if this is an sysndir system
12392set sys/ndir.h i_sysndir
12393eval $inhdr
12394
12395: see if closedir exists
12396set closedir d_closedir
12397eval $inlibc
12398
12399case "$d_closedir" in
12400"$define")
12401 echo " "
12402 echo "Checking whether closedir() returns a status..." >&4
12403 cat > closedir.c <<EOM
12404#$i_dirent I_DIRENT /**/
12405#$i_sysdir I_SYS_DIR /**/
12406#$i_sysndir I_SYS_NDIR /**/
12407#$i_systypes I_SYS_TYPES /**/
12408
12409#if defined(I_SYS_TYPES)
12410#include <sys/types.h>
12411#endif
12412#if defined(I_DIRENT)
12413#include <dirent.h>
12414#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12415#include <sys/dir.h>
12416#endif
12417#else
12418#ifdef I_SYS_NDIR
12419#include <sys/ndir.h>
12420#else
12421#ifdef I_SYS_DIR
12422#ifdef hp9000s500
12423#include <ndir.h> /* may be wrong in the future */
12424#else
12425#include <sys/dir.h>
12426#endif
12427#endif
12428#endif
12429#endif
12430int main() { return closedir(opendir(".")); }
12431EOM
12432 set closedir
12433 if eval $compile_ok; then
12434 if ./closedir > /dev/null 2>&1 ; then
12435 echo "Yes, it does."
12436 val="$undef"
12437 else
12438 echo "No, it doesn't."
12439 val="$define"
12440 fi
12441 else
12442 echo "(I can't seem to compile the test program--assuming it doesn't)"
12443 val="$define"
12444 fi
12445 ;;
12446*)
12447 val="$undef";
12448 ;;
12449esac
12450set d_void_closedir
12451eval $setvar
12452$rm -f closedir*
b4eb6b3d
JH
12453: see if there is a wait4
12454set wait4 d_wait4
12455eval $inlibc
12456
12457: see if waitpid exists
12458set waitpid d_waitpid
12459eval $inlibc
12460
12461: see if wcstombs exists
12462set wcstombs d_wcstombs
12463eval $inlibc
12464
12465: see if wctomb exists
12466set wctomb d_wctomb
12467eval $inlibc
12468
12469: preserve RCS keywords in files with variable substitution, grrr
12470Date='$Date'
12471Id='$Id'
12472Log='$Log'
12473RCSfile='$RCSfile'
12474Revision='$Revision'
12475
12476case "$crosscompile" in
12477''|[nN]*) crosscompile="$undef" ;;
12478esac
12479
12480case "$osname" in
12481next|rhapsody|darwin) multiarch="$define" ;;
12482esac
12483case "$multiarch" in
12484''|[nN]*) multiarch="$undef" ;;
12485esac
12486
12487: check for alignment requirements
12488echo " "
12489case "$crosscompile$multiarch" in
12490*$define*)
12491 $cat <<EOM
12492You seem to be either cross-compiling or doing a multiarchitecture build,
12493skipping the memory alignment check.
12494
12495EOM
12496 case "$alignbytes" in
12497 '') alignbytes=8 ;;
12498 esac
12499 ;;
12500*)
12501 case "$alignbytes" in
12502 '') echo "Checking alignment constraints..." >&4
12503 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12504 $cat >try.c <<'EOCP'
12505typedef long double NV;
12506EOCP
12507 else
12508 $cat >try.c <<'EOCP'
12509typedef double NV;
12510EOCP
12511 fi
12512 $cat >>try.c <<'EOCP'
12513#include <stdio.h>
12514struct foobar {
12515 char foo;
12516 NV bar;
12517} try_algn;
12518int main()
12519{
12520 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12521 return(0);
12522}
12523EOCP
12524 set try
12525 if eval $compile_ok; then
12526 dflt=`./try`
12527 else
12528 dflt='8'
12529 echo "(I can't seem to compile the test program...)"
12530 fi
12531 ;;
12532 *) dflt="$alignbytes"
12533 ;;
12534 esac
12535 rp="Doubles must be aligned on a how-many-byte boundary?"
12536 . ./myread
12537 alignbytes="$ans"
12538 $rm -f try.c try
12539 ;;
12540esac
12541
12542
12543: set the base revision
12544baserev=5.0
12545
12546: check for ordering of bytes in a long
12547echo " "
12548case "$crosscompile$multiarch" in
12549*$define*)
12550 $cat <<EOM
12551You seem to be either cross-compiling or doing a multiarchitecture build,
12552skipping the byteorder check.
12553
12554EOM
12555 byteorder='0xffff'
12556 ;;
12557*)
12558 case "$byteorder" in
12559 '')
12560 $cat <<'EOM'
12561In the following, larger digits indicate more significance. A big-endian
12562machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12563little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12564machines may have weird orders like 3412. A Cray will report 87654321,
12565an Alpha will report 12345678. If the test program works the default is
12566probably right.
12567I'm now running the test program...
12568EOM
12569 $cat >try.c <<'EOCP'
12570#include <stdio.h>
12571int main()
12572{
12573 int i;
12574 union {
12575 unsigned long l;
12576 char c[sizeof(long)];
12577 } u;
12578
12579 if (sizeof(long) > 4)
12580 u.l = (0x08070605L << 32) | 0x04030201L;
12581 else
12582 u.l = 0x04030201L;
12583 for (i = 0; i < sizeof(long); i++)
12584 printf("%c", u.c[i]+'0');
12585 printf("\n");
12586 exit(0);
12587}
12588EOCP
12589 xxx_prompt=y
12590 set try
12591 if eval $compile && ./try > /dev/null; then
12592 dflt=`./try`
12593 case "$dflt" in
12594 [1-4][1-4][1-4][1-4]|12345678|87654321)
12595 echo "(The test program ran ok.)"
12596 echo "byteorder=$dflt"
12597 xxx_prompt=n
12598 ;;
12599 ????|????????) echo "(The test program ran ok.)" ;;
12600 *) echo "(The test program didn't run right for some reason.)" ;;
12601 esac
12602 else
12603 dflt='4321'
12604 cat <<'EOM'
12605(I can't seem to compile the test program. Guessing big-endian...)
12606EOM
12607 fi
12608 case "$xxx_prompt" in
12609 y)
12610 rp="What is the order of bytes in a long?"
12611 . ./myread
12612 byteorder="$ans"
12613 ;;
12614 *) byteorder=$dflt
12615 ;;
12616 esac
12617 ;;
12618 esac
12619 $rm -f try.c try
12620 ;;
12621esac
12622
12623
12624: how do we catenate cpp tokens here?
12625echo " "
12626echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12627$cat >cpp_stuff.c <<'EOCP'
12628#define RCAT(a,b)a/**/b
12629#define ACAT(a,b)a ## b
12630RCAT(Rei,ser)
12631ACAT(Cir,cus)
12632EOCP
12633$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12634if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12635 echo "Oh! Smells like ANSI's been here." >&4
12636 echo "We can catify or stringify, separately or together!"
12637 cpp_stuff=42
12638elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12639 echo "Ah, yes! The good old days!" >&4
12640 echo "However, in the good old days we don't know how to stringify and"
12641 echo "catify at the same time."
12642 cpp_stuff=1
12643else
12644 $cat >&4 <<EOM
12645Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12646to have to edit the values of CAT[2-5] in config.h...
12647EOM
12648 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12649fi
12650$rm -f cpp_stuff.*
12651
12652: see if this is a db.h system
12653set db.h i_db
12654eval $inhdr
12655
12656case "$i_db" in
12657$define)
12658 : Check db version.
12659 echo " "
12660 echo "Checking Berkeley DB version ..." >&4
12661 $cat >try.c <<EOCP
12662#$d_const HASCONST
12663#ifndef HASCONST
12664#define const
12665#endif
12666#include <sys/types.h>
12667#include <stdio.h>
12668#include <db.h>
12669int main()
12670{
12671#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12672 int Major, Minor, Patch ;
12673 unsigned long Version ;
12674 (void)db_version(&Major, &Minor, &Patch) ;
12675 printf("You have Berkeley DB Version 2 or greater\n");
12676
12677 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12678 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12679 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12680 Major, Minor, Patch) ;
12681
12682 /* check that db.h & libdb are compatible */
12683 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12684 printf("db.h and libdb are incompatible\n") ;
12685 exit(3);
12686 }
12687
12688 printf("db.h and libdb are compatible\n") ;
12689
12690 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12691 + DB_VERSION_PATCH ;
12692
12693 /* needs to be >= 2.3.4 */
12694 if (Version < 2003004) {
12695 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12696 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12697 exit(2);
12698 }
12699
12700 exit(0);
12701#else
12702#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12703 printf("You have Berkeley DB Version 1\n");
12704 exit(0); /* DB version < 2: the coast is clear. */
12705#else
12706 exit(1); /* <db.h> not Berkeley DB? */
12707#endif
12708#endif
12709}
12710EOCP
12711 set try
12712 if eval $compile_ok && ./try; then
12713 echo 'Looks OK.' >&4
12714 else
12715 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12716 i_db=$undef
12717 case " $libs " in
12718 *"-ldb "*)
12719 : Remove db from list of libraries to use
12720 echo "Removing unusable -ldb from library list" >&4
12721 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12722 shift
12723 libs="$*"
12724 echo "libs = $libs" >&4
12725 ;;
12726 esac
12727 fi
12728 $rm -f try.*
12729 ;;
12730esac
12731
12732case "$i_db" in
12733define)
12734 : Check the return type needed for hash
12735 echo " "
12736 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12737 $cat >try.c <<EOCP
12738#$d_const HASCONST
12739#ifndef HASCONST
12740#define const
12741#endif
12742#include <sys/types.h>
12743#include <db.h>
12744
12745#ifndef DB_VERSION_MAJOR
12746u_int32_t hash_cb (ptr, size)
12747const void *ptr;
12748size_t size;
12749{
12750}
12751HASHINFO info;
12752int main()
12753{
12754 info.hash = hash_cb;
12755}
12756#endif
12757EOCP
12758 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12759 if $contains warning try.out >>/dev/null 2>&1 ; then
12760 db_hashtype='int'
12761 else
12762 db_hashtype='u_int32_t'
12763 fi
12764 else
12765 : XXX Maybe we should just give up here.
12766 db_hashtype=u_int32_t
12767 $cat try.out >&4
12768 echo "Help: I can't seem to compile the db test program." >&4
12769 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12770 fi
12771 $rm -f try.*
12772 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12773 ;;
12774*) db_hashtype=u_int32_t
12775 ;;
12776esac
12777case "$i_db" in
12778define)
12779 : Check the return type needed for prefix
12780 echo " "
12781 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12782 cat >try.c <<EOCP
12783#$d_const HASCONST
12784#ifndef HASCONST
12785#define const
12786#endif
12787#include <sys/types.h>
12788#include <db.h>
12789
12790#ifndef DB_VERSION_MAJOR
12791size_t prefix_cb (key1, key2)
12792const DBT *key1;
12793const DBT *key2;
12794{
12795}
12796BTREEINFO info;
12797int main()
12798{
12799 info.prefix = prefix_cb;
12800}
12801#endif
12802EOCP
12803 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12804 if $contains warning try.out >>/dev/null 2>&1 ; then
12805 db_prefixtype='int'
12806 else
12807 db_prefixtype='size_t'
12808 fi
12809 else
12810 db_prefixtype='size_t'
12811 : XXX Maybe we should just give up here.
12812 $cat try.out >&4
12813 echo "Help: I can't seem to compile the db test program." >&4
12814 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12815 fi
12816 $rm -f try.*
12817 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12818 ;;
12819*) db_prefixtype='size_t'
12820 ;;
12821esac
12822
12823: check for void type
12824echo " "
12825echo "Checking to see how well your C compiler groks the void type..." >&4
12826case "$voidflags" in
12827'')
12828 $cat >try.c <<'EOCP'
12829#if TRY & 1
12830void sub() {
12831#else
12832sub() {
12833#endif
12834 extern void moo(); /* function returning void */
12835 void (*goo)(); /* ptr to func returning void */
12836#if TRY & 8
12837 void *hue; /* generic ptr */
12838#endif
12839#if TRY & 2
12840 void (*foo[10])();
12841#endif
12842
12843#if TRY & 4
12844 if(goo == moo) {
12845 exit(0);
12846 }
12847#endif
12848 exit(0);
12849}
12850int main() { sub(); }
12851EOCP
12852 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12853 voidflags=$defvoidused
12854 echo "Good. It appears to support void to the level $package wants.">&4
12855 if $contains warning .out >/dev/null 2>&1; then
12856 echo "However, you might get some warnings that look like this:"
12857 $cat .out
12858 fi
12859 else
12860echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12861 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12862 echo "It supports 1..."
12863 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12864 echo "It also supports 2..."
12865 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12866 voidflags=7
12867 echo "And it supports 4 but not 8 definitely."
12868 else
12869 echo "It doesn't support 4..."
12870 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12871 voidflags=11
12872 echo "But it supports 8."
12873 else
12874 voidflags=3
12875 echo "Neither does it support 8."
12876 fi
12877 fi
12878 else
12879 echo "It does not support 2..."
12880 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12881 voidflags=13
12882 echo "But it supports 4 and 8."
12883 else
12884 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12885 voidflags=5
12886 echo "And it supports 4 but has not heard about 8."
12887 else
12888 echo "However it supports 8 but not 4."
12889 fi
12890 fi
12891 fi
12892 else
12893 echo "There is no support at all for void."
12894 voidflags=0
12895 fi
12896 fi
12897esac
12898case "$voidflags" in
12899"$defvoidused") ;;
12900*) $cat >&4 <<'EOM'
12901 Support flag bits are:
12902 1: basic void declarations.
12903 2: arrays of pointers to functions returning void.
12904 4: operations between pointers to and addresses of void functions.
12905 8: generic void pointers.
12906EOM
12907 dflt="$voidflags";
12908 rp="Your void support flags add up to what?"
12909 . ./myread
12910 voidflags="$ans"
12911 ;;
12912esac
12913$rm -f try.* .out
12914
12915
12916: How can we generate normalized random numbers ?
12917echo " "
12918echo "Looking for a random number function..." >&4
12919case "$randfunc" in
12920'')
12921 if set drand48 val -f; eval $csym; $val; then
12922 dflt="drand48"
12923 echo "Good, found drand48()." >&4
12924 elif set random val -f; eval $csym; $val; then
12925 dflt="random"
12926 echo "OK, found random()." >&4
12927 else
12928 dflt="rand"
12929 echo "Yick, looks like I have to use rand()." >&4
12930 fi
12931 echo " "
12932 ;;
12933*)
12934 dflt="$randfunc"
12935 ;;
12936esac
12937cont=true
12938
12939case "$ccflags" in
12940*-Dmy_rand=*|*-Dmy_srand=*)
12941 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12942 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12943 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12944 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12945 ;;
12946esac
12947
12948while $test "$cont"; do
12949 rp="Use which function to generate random numbers?"
12950 . ./myread
12951 if $test "$ans" = "$dflt"; then
12952 : null
12953 else
12954 randbits=''
12955 fi
12956 randfunc="$ans"
12957 if set $ans val -f; eval $csym; $val; then
12958 cont=''
12959 else
12960 dflt=y
12961 rp="I cannot find function $ans. Use that name anyway?"
12962 . ./myread
12963 dflt=rand
12964 case "$ans" in
12965 [yY]*) cont='';;
12966 esac
12967 fi
12968 case "$cont" in
12969 '')
12970 case "$randfunc" in
12971 drand48)
12972 drand01="drand48()"
12973 seedfunc="srand48"
12974 randbits=48
12975 randseedtype=long
12976 ;;
12977 rand|random)
12978 case "$randbits" in
12979 '')
12980echo "Checking to see how many bits your $randfunc() function produces..." >&4
12981 $cat >try.c <<EOCP
12982#$i_unistd I_UNISTD
12983#$i_stdlib I_STDLIB
12984#include <stdio.h>
12985#ifdef I_UNISTD
12986# include <unistd.h>
12987#endif
12988#ifdef I_STDLIB
12989# include <stdlib.h>
12990#endif
12991int main()
12992{
12993 register int i;
12994 register unsigned long tmp;
12995 register unsigned long max = 0L;
12996
12997 for (i = 1000; i; i--) {
12998 tmp = (unsigned long) $randfunc();
12999 if (tmp > max) max = tmp;
13000 }
13001 for (i = 0; max; i++)
13002 max /= 2;
13003 printf("%d\n",i);
13004}
13005EOCP
13006 set try
13007 if eval $compile_ok; then
13008 dflt=`try`
13009 else
13010 dflt='?'
13011 echo "(I can't seem to compile the test program...)"
13012 fi
13013 ;;
13014 *)
13015 dflt="$randbits"
13016 ;;
13017 esac
13018 rp="How many bits does your $randfunc() function produce?"
13019 . ./myread
13020 randbits="$ans"
13021 $rm -f try.c try
13022 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13023 seedfunc="s$randfunc"
13024 randseedtype=unsigned
13025 ;;
13026 *)
13027 dflt="31"
13028 rp="How many bits does your $randfunc() function produce?"
13029 . ./myread
13030 randbits="$ans"
13031 seedfunc="s$randfunc"
13032 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13033 if set $seedfunc val -f; eval $csym; $val; then
13034 echo "(Using $seedfunc() to seed random generator)"
13035 else
13036 echo "(Warning: no $seedfunc() to seed random generator)"
13037 seedfunc=rand
13038 fi
13039 randseedtype=unsigned
13040 ;;
13041 esac
13042 ;;
13043 esac
13044done
13045
13046echo " "
13047echo "Determining whether or not we are on an EBCDIC system..." >&4
13048$cat >tebcdic.c <<'EOM'
13049int main()
13050{
13051 if ('M'==0xd4) return 0;
13052 return 1;
13053}
13054EOM
13055
13056val=$undef
13057set tebcdic
13058if eval $compile_ok; then
13059 if ./tebcdic; then
13060 echo "You seem to speak EBCDIC." >&4
13061 val="$define"
13062 else
13063 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13064 fi
13065else
13066 echo "I'm unable to compile the test program." >&4
13067 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13068fi
13069$rm -f tebcdic.c tebcdic
13070set ebcdic
13071eval $setvar
13072
13073echo " "
13074$cat >&4 <<EOM
13075Checking how to flush all pending stdio output...
13076EOM
13077# I only know how to find the first 32 possibly open files on SunOS.
13078# See also hints/sunos_4_1.sh and util.c --AD
13079case "$osname" in
13080sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13081esac
13082$cat >>try.c <<EOCP
13083#include <stdio.h>
13084#$i_unistd I_UNISTD
13085#ifdef I_UNISTD
13086# include <unistd.h>
13087#endif
13088#$d_sysconf HAS_SYSCONF
13089#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13090#ifdef HAS_STDIO_STREAM_ARRAY
13091# define STDIO_STREAM_ARRAY $stdio_stream_array
13092#endif
13093int main() {
13094 FILE* p = fopen("try.out", "w");
13095#ifdef TRY_FPUTC
13096 fputc('x', p);
13097#else
13098# ifdef TRY_FPRINTF
13099 fprintf(p, "x");
13100# endif
13101#endif
13102#ifdef TRY_FFLUSH_NULL
13103 fflush(NULL);
13104#endif
13105#ifdef TRY_FFLUSH_ALL
13106 {
13107 long open_max = -1;
13108# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13109 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13110# else
13111# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13112 open_max = sysconf(_SC_OPEN_MAX);
13113# else
13114# ifdef FOPEN_MAX
13115 open_max = FOPEN_MAX;
13116# else
13117# ifdef OPEN_MAX
13118 open_max = OPEN_MAX;
13119# else
13120# ifdef _NFILE
13121 open_max = _NFILE;
13122# endif
13123# endif
13124# endif
13125# endif
13126# endif
13127# ifdef HAS_STDIO_STREAM_ARRAY
13128 if (open_max > 0) {
13129 long i;
13130 for (i = 0; i < open_max; i++)
13131 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13132 STDIO_STREAM_ARRAY[i]._file < open_max &&
13133 STDIO_STREAM_ARRAY[i]._flag)
13134 fflush(&STDIO_STREAM_ARRAY[i]);
13135 }
13136 }
13137# endif
13138#endif
13139 _exit(42);
13140}
13141EOCP
13142: first we have to find out how _not_ to flush
13143if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13144 output=''
13145 set try -DTRY_FPUTC
13146 if eval $compile; then
13147 $rm -f try.out
13148 ./try$exe_ext 2>/dev/null
13149 if $test ! -s try.out -a "X$?" = X42; then
13150 output=-DTRY_FPUTC
13151 fi
13152 fi
13153 case "$output" in
13154 '')
13155 set try -DTRY_FPRINTF
13156 $rm -f try.out
13157 if eval $compile; then
13158 $rm -f try.out
13159 ./try$exe_ext 2>/dev/null
13160 if $test ! -s try.out -a "X$?" = X42; then
13161 output=-DTRY_FPRINTF
13162 fi
13163 fi
13164 ;;
13165 esac
13166fi
13167: check for fflush NULL behaviour
13168case "$fflushNULL" in
13169'') set try -DTRY_FFLUSH_NULL $output
13170 if eval $compile; then
13171 $rm -f try.out
13172 ./try$exe_ext 2>/dev/null
13173 code="$?"
13174 if $test -s try.out -a "X$code" = X42; then
13175 fflushNULL="`$cat try.out`"
13176 else
13177 if $test "X$code" != X42; then
13178 $cat >&4 <<EOM
13179(If this test failed, don't worry, we'll try another method shortly.)
13180EOM
13181 fi
13182 fi
13183 fi
13184 $rm -f core try.core core.try.*
13185 case "$fflushNULL" in
13186 x) $cat >&4 <<EOM
13187Your fflush(NULL) works okay for output streams.
13188Let's see if it clobbers input pipes...
13189EOM
13190# As of mid-March 2000 all versions of Solaris appear to have a stdio
13191# bug that improperly flushes the input end of pipes. So we avoid the
13192# autoflush on fork/system/exec support for now. :-(
13193$cat >tryp.c <<EOCP
13194#include <stdio.h>
13195int
13196main(int argc, char **argv)
13197{
13198 char buf[1024];
13199 int i;
13200 char *bp = buf;
13201 while (1) {
13202 while ((i = getc(stdin)) != -1
13203 && (*bp++ = i) != '\n'
13204 && bp < &buf[1024])
13205 /* DO NOTHING */ ;
13206 *bp = '\0';
13207 fprintf(stdout, "%s", buf);
13208 fflush(NULL);
13209 if (i == -1)
13210 return 0;
13211 bp = buf;
13212 }
13213}
13214EOCP
13215 fflushNULL="$define"
13216 set tryp
13217 if eval $compile; then
13218 $rm -f tryp.out
13219 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13220 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13221 $cat >&4 <<EOM
13222fflush(NULL) seems to behave okay with input streams.
13223EOM
13224 fflushNULL="$define"
13225 else
13226 $cat >&4 <<EOM
13227Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13228EOM
13229 fflushNULL="$undef"
13230 fi
13231 fi
13232 $rm -f core tryp.c tryp.core core.tryp.*
13233 ;;
13234 '') $cat >&4 <<EOM
13235Your fflush(NULL) isn't working (contrary to ANSI C).
13236EOM
13237 fflushNULL="$undef"
13238 ;;
13239 *) $cat >&4 <<EOM
13240Cannot figure out whether your fflush(NULL) works or not.
13241I'm assuming it doesn't (contrary to ANSI C).
13242EOM
13243 fflushNULL="$undef"
13244 ;;
13245 esac
13246 ;;
13247$define|true|[yY]*)
13248 fflushNULL="$define"
13249 ;;
13250*)
13251 fflushNULL="$undef"
13252 ;;
13253esac
13254: check explicit looping only if NULL did not work, and if the pipe
13255: bug does not show up on an explicit flush too
13256case "$fflushNULL" in
13257"$undef")
13258 $cat >tryp.c <<EOCP
13259#include <stdio.h>
13260int
13261main(int argc, char **argv)
13262{
13263 char buf[1024];
13264 int i;
13265 char *bp = buf;
13266 while (1) {
13267 while ((i = getc(stdin)) != -1
13268 && (*bp++ = i) != '\n'
13269 && bp < &buf[1024])
13270 /* DO NOTHING */ ;
13271 *bp = '\0';
13272 fprintf(stdout, "%s", buf);
13273 fflush(stdin);
13274 if (i == -1)
13275 return 0;
13276 bp = buf;
13277 }
13278}
13279EOCP
13280 set tryp
13281 if eval $compile; then
13282 $rm -f tryp.out
13283 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13284 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13285 $cat >&4 <<EOM
13286Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13287EOM
13288 : now check for fflushall behaviour
13289 case "$fflushall" in
13290 '') set try -DTRY_FFLUSH_ALL $output
13291 if eval $compile; then
13292 $cat >&4 <<EOM
13293(Now testing the other method--but note that this also may fail.)
13294EOM
13295 $rm -f try.out
13296 ./try$exe_ext 2>/dev/null
13297 if $test -s try.out -a "X$?" = X42; then
13298 fflushall="`$cat try.out`"
13299 fi
13300 fi
13301 $rm -f core try.core core.try.*
13302 case "$fflushall" in
13303 x) $cat >&4 <<EOM
13304Whew. Flushing explicitly all the stdio streams works.
13305EOM
13306 fflushall="$define"
13307 ;;
13308 '') $cat >&4 <<EOM
13309Sigh. Flushing explicitly all the stdio streams doesn't work.
13310EOM
13311 fflushall="$undef"
13312 ;;
13313 *) $cat >&4 <<EOM
13314Cannot figure out whether flushing stdio streams explicitly works or not.
13315I'm assuming it doesn't.
13316EOM
13317 fflushall="$undef"
13318 ;;
13319 esac
13320 ;;
13321 "$define"|true|[yY]*)
13322 fflushall="$define"
13323 ;;
13324 *)
13325 fflushall="$undef"
13326 ;;
13327 esac
13328 else
13329 $cat >&4 <<EOM
13330All is futile. Even fflush(stdin) clobbers input pipes!
13331EOM
13332 fflushall="$undef"
13333 fi
13334 else
13335 fflushall="$undef"
13336 fi
13337 $rm -f core tryp.c tryp.core core.tryp.*
13338 ;;
13339*) fflushall="$undef"
13340 ;;
13341esac
13342
13343case "$fflushNULL$fflushall" in
13344undefundef)
13345 $cat <<EOM
13346OK, I give up. I cannot figure out how to flush pending stdio output.
13347We won't be flushing handles at all before fork/exec/popen.
13348EOM
13349 ;;
13350esac
13351$rm -f try.* try$exe_ext
13352
13353: Store the full pathname to the ar program for use in the C program
13354: Respect a hint or command line value for full_ar.
13355case "$full_ar" in
13356'') full_ar=$ar ;;
13357esac
13358
13359: Store the full pathname to the sed program for use in the C program
13360full_sed=$sed
13361
13362: see what type gids are declared as in the kernel
13363echo " "
13364echo "Looking for the type for group ids returned by getgid()."
13365set gid_t gidtype xxx stdio.h sys/types.h
13366eval $typedef
13367case "$gidtype" in
13368xxx)
13369 xxx=`./findhdr sys/user.h`
13370 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13371 case $1 in
13372 unsigned) dflt="$1 $2" ;;
13373 *) dflt="$1" ;;
13374 esac
13375 ;;
13376*) dflt="$gidtype";;
13377esac
13378case "$gidtype" in
13379gid_t) echo "gid_t found." ;;
13380*) rp="What is the type for group ids returned by getgid()?"
13381 . ./myread
13382 gidtype="$ans"
13383 ;;
13384esac
13385
13386echo " "
13387case "$gidtype" in
13388*_t) zzz="$gidtype" ;;
13389*) zzz="gid" ;;
13390esac
13391echo "Checking the size of $zzz..." >&4
13392cat > try.c <<EOCP
13393#include <sys/types.h>
13394#include <stdio.h>
13395int main() {
13396 printf("%d\n", (int)sizeof($gidtype));
13397 exit(0);
13398}
13399EOCP
13400set try
13401if eval $compile_ok; then
13402 yyy=`./try`
13403 case "$yyy" in
13404 '') gidsize=4
13405 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13406 ;;
13407 *) gidsize=$yyy
13408 echo "Your $zzz is $gidsize bytes long."
13409 ;;
13410 esac
13411else
13412 gidsize=4
13413 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13414fi
13415
13416
13417echo " "
13418case "$gidtype" in
13419*_t) zzz="$gidtype" ;;
13420*) zzz="gid" ;;
13421esac
13422echo "Checking the sign of $zzz..." >&4
13423cat > try.c <<EOCP
13424#include <sys/types.h>
13425#include <stdio.h>
13426int main() {
13427 $gidtype foo = -1;
13428 if (foo < 0)
13429 printf("-1\n");
13430 else
13431 printf("1\n");
13432}
13433EOCP
13434set try
13435if eval $compile; then
13436 yyy=`./try`
13437 case "$yyy" in
13438 '') gidsign=1
13439 echo "(I can't execute the test program--guessing unsigned.)" >&4
13440 ;;
13441 *) gidsign=$yyy
13442 case "$gidsign" in
13443 1) echo "Your $zzz is unsigned." ;;
13444 -1) echo "Your $zzz is signed." ;;
13445 esac
13446 ;;
13447 esac
13448else
13449 gidsign=1
13450 echo "(I can't compile the test program--guessing unsigned.)" >&4
13451fi
13452
13453
13454echo " "
13455
13456if $test X"$quadtype" != X; then
13457
13458echo "Checking how to print 64-bit integers..." >&4
13459
13460if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13461 $cat >try.c <<'EOCP'
13462#include <sys/types.h>
13463#include <stdio.h>
13464int main() {
13465 int q = 12345678901;
13466 printf("%ld\n", q);
13467}
13468EOCP
13469 set try
13470 if eval $compile; then
13471 yyy=`./try$exe_ext`
13472 case "$yyy" in
13473 12345678901)
13474 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13475 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13476 echo "We will use %d."
13477 ;;
13478 esac
13479 fi
13480fi
13481
13482if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13483 $cat >try.c <<'EOCP'
13484#include <sys/types.h>
13485#include <stdio.h>
13486int main() {
13487 long q = 12345678901;
13488 printf("%ld\n", q);
13489}
13490EOCP
13491 set try
13492 if eval $compile; then
13493 yyy=`./try$exe_ext`
13494 case "$yyy" in
13495 12345678901)
13496 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13497 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13498 echo "We will use %ld."
13499 ;;
13500 esac
13501 fi
13502fi
13503
13504if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13505 $cat >try.c <<'EOCP'
13506#include <sys/types.h>
13507#include <inttypes.h>
13508#include <stdio.h>
13509int main() {
13510 int64_t q = 12345678901;
13511 printf("%" PRId64 "\n", q);
13512}
13513EOCP
13514 set try
13515 if eval $compile; then
13516 yyy=`./try$exe_ext`
13517 case "$yyy" in
13518 12345678901)
13519 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13520 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13521 echo "We will use the C9X style."
13522 ;;
13523 esac
13524 fi
13525fi
13526
13527if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13528 $cat >try.c <<'EOCP'
13529#include <sys/types.h>
13530#include <stdio.h>
13531int main() {
13532 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13533 printf("%lld\n", q);
13534}
13535EOCP
13536 set try
13537 if eval $compile; then
13538 yyy=`./try$exe_ext`
13539 case "$yyy" in
13540 12345678901)
13541 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13542 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13543 echo "We will use the %lld style."
13544 ;;
13545 esac
13546 fi
13547fi
13548
13549if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13550 $cat >try.c <<EOCP
13551#include <sys/types.h>
13552#include <stdio.h>
13553int main() {
13554 $quadtype q = 12345678901;
13555 printf("%Ld\n", q);
13556}
13557EOCP
13558 set try
13559 if eval $compile; then
13560 yyy=`./try$exe_ext`
13561 case "$yyy" in
13562 12345678901)
13563 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13564 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13565 echo "We will use %Ld."
13566 ;;
13567 esac
13568 fi
13569fi
13570
13571if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13572 $cat >try.c <<EOCP
13573#include <sys/types.h>
13574#include <stdio.h>
13575int main() {
13576 $quadtype q = 12345678901;
13577 printf("%qd\n", q);
13578}
13579EOCP
13580 set try
13581 if eval $compile; then
13582 yyy=`./try$exe_ext`
13583 case "$yyy" in
13584 12345678901)
13585 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13586 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13587 echo "We will use %qd."
13588 ;;
13589 esac
13590 fi
13591fi
13592
13593if $test X"$sPRId64" = X; then
13594 echo "Cannot figure out how to print 64-bit integers." >&4
13595fi
13596
13597$rm -f try try.*
13598
13599fi
13600
13601case "$sPRId64" in
13602'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13603 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13604 ;;
13605*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13606 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13607 ;;
13608esac
13609
13610
13611echo " "
13612$echo "Checking the format strings to be used for Perl's internal types..." >&4
13613
13614if $test X"$ivsize" = X8; then
13615 ivdformat="$sPRId64"
13616 uvuformat="$sPRIu64"
13617 uvoformat="$sPRIo64"
13618 uvxformat="$sPRIx64"
13619 uvXUformat="$sPRIXU64"
13620else
13621 if $test X"$ivsize" = X"$longsize"; then
13622 ivdformat='"ld"'
13623 uvuformat='"lu"'
13624 uvoformat='"lo"'
13625 uvxformat='"lx"'
13626 uvXUformat='"lX"'
13627 else
13628 if $test X"$ivsize" = X"$intsize"; then
13629 ivdformat='"d"'
13630 uvuformat='"u"'
13631 uvoformat='"o"'
13632 uvxformat='"x"'
13633 uvXUformat='"X"'
13634 else
13635 : far out
13636 if $test X"$ivsize" = X"$shortsize"; then
13637 ivdformat='"hd"'
13638 uvuformat='"hu"'
13639 uvoformat='"ho"'
13640 uvxformat='"hx"'
13641 uvXUformat='"hX"'
13642 fi
13643 fi
13644 fi
13645fi
13646
13647if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13648 nveformat="$sPRIeldbl"
13649 nvfformat="$sPRIfldbl"
13650 nvgformat="$sPRIgldbl"
13651 nvEUformat="$sPRIEUldbl"
13652 nvFUformat="$sPRIFUldbl"
13653 nvGUformat="$sPRIGUldbl"
13654else
13655 nveformat='"e"'
13656 nvfformat='"f"'
13657 nvgformat='"g"'
13658 nvEUformat='"E"'
13659 nvFUformat='"F"'
13660 nvGUformat='"G"'
13661fi
13662
13663case "$ivdformat" in
13664'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13665 exit 1
13666 ;;
13667esac
13668
13669
13670echo " "
13671$echo "Checking the format string to be used for gids..." >&4
13672
13673case "$gidsign" in
13674-1) if $test X"$gidsize" = X"$ivsize"; then
13675 gidformat="$ivdformat"
13676 else
13677 if $test X"$gidsize" = X"$longsize"; then
13678 gidformat='"ld"'
13679 else
13680 if $test X"$gidsize" = X"$intsize"; then
13681 gidformat='"d"'
13682 else
13683 if $test X"$gidsize" = X"$shortsize"; then
13684 gidformat='"hd"'
13685 fi
13686 fi
13687 fi
13688 fi
13689 ;;
13690*) if $test X"$gidsize" = X"$uvsize"; then
13691 gidformat="$uvuformat"
13692 else
13693 if $test X"$gidsize" = X"$longsize"; then
13694 gidformat='"lu"'
13695 else
13696 if $test X"$gidsize" = X"$intsize"; then
13697 gidformat='"u"'
13698 else
13699 if $test X"$gidsize" = X"$shortsize"; then
13700 gidformat='"hu"'
13701 fi
13702 fi
13703 fi
13704 fi
13705 ;;
13706esac
13707
13708: see if getgroups exists
13709set getgroups d_getgrps
13710eval $inlibc
13711
13712: see if setgroups exists
13713set setgroups d_setgrps
13714eval $inlibc
13715
13716
13717: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13718echo " "
13719case "$d_getgrps$d_setgrps" in
13720*define*)
13721 case "$groupstype" in
13722 '') dflt="$gidtype" ;;
13723 *) dflt="$groupstype" ;;
13724 esac
13725 $cat <<EOM
13726What type of pointer is the second argument to getgroups() and setgroups()?
13727Usually this is the same as group ids, $gidtype, but not always.
13728
13729EOM
13730 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13731 . ./myread
13732 groupstype="$ans"
13733 ;;
13734*) groupstype="$gidtype";;
13735esac
13736
13737echo " "
13738echo "Checking if your $make program sets \$(MAKE)..." >&4
13739case "$make_set_make" in
13740'')
13741 $sed 's/^X //' > testmake.mak << 'EOF'
13742Xall:
13743X @echo 'maketemp="$(MAKE)"'
13744EOF
13745 case "`$make -f testmake.mak 2>/dev/null`" in
13746 *maketemp=*) make_set_make='#' ;;
13747 *) make_set_make="MAKE=$make" ;;
13748 esac
13749 $rm -f testmake.mak
13750 ;;
13751esac
13752case "$make_set_make" in
13753'#') echo "Yup, it does.";;
13754*) echo "Nope, it doesn't.";;
13755esac
13756
13757: see what type is used for mode_t
13758rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13759set mode_t modetype int stdio.h sys/types.h
13760eval $typedef_ask
13761
2cc61e15
DD
13762: see if stdarg is available
13763echo " "
13764if $test `./findhdr stdarg.h`; then
13765 echo "<stdarg.h> found." >&4
13766 valstd="$define"
13767else
13768 echo "<stdarg.h> NOT found." >&4
13769 valstd="$undef"
13770fi
13771
13772: see if varags is available
13773echo " "
13774if $test `./findhdr varargs.h`; then
13775 echo "<varargs.h> found." >&4
13776else
13777 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13778fi
13779
13780: set up the varargs testing programs
13781$cat > varargs.c <<EOP
13782#ifdef I_STDARG
13783#include <stdarg.h>
13784#endif
13785#ifdef I_VARARGS
13786#include <varargs.h>
13787#endif
13788
13789#ifdef I_STDARG
13790int f(char *p, ...)
13791#else
13792int f(va_alist)
13793va_dcl
13794#endif
13795{
13796 va_list ap;
13797#ifndef I_STDARG
13798 char *p;
13799#endif
13800#ifdef I_STDARG
13801 va_start(ap,p);
13802#else
13803 va_start(ap);
13804 p = va_arg(ap, char *);
13805#endif
13806 va_end(ap);
13807}
13808EOP
13809$cat > varargs <<EOP
13810$startsh
13811if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13812 echo "true"
13813else
13814 echo "false"
13815fi
13816$rm -f varargs$_o
13817EOP
13818chmod +x varargs
13819
13820: now check which varargs header should be included
13821echo " "
13822i_varhdr=''
13823case "$valstd" in
13824"$define")
13825 if `./varargs I_STDARG`; then
13826 val='stdarg.h'
13827 elif `./varargs I_VARARGS`; then
13828 val='varargs.h'
13829 fi
13830 ;;
13831*)
13832 if `./varargs I_VARARGS`; then
13833 val='varargs.h'
13834 fi
13835 ;;
13836esac
13837case "$val" in
13838'')
13839echo "I could not find the definition for va_dcl... You have problems..." >&4
13840 val="$undef"; set i_stdarg; eval $setvar
13841 val="$undef"; set i_varargs; eval $setvar
13842 ;;
13843*)
13844 set i_varhdr
13845 eval $setvar
13846 case "$i_varhdr" in
13847 stdarg.h)
13848 val="$define"; set i_stdarg; eval $setvar
13849 val="$undef"; set i_varargs; eval $setvar
13850 ;;
13851 varargs.h)
13852 val="$undef"; set i_stdarg; eval $setvar
13853 val="$define"; set i_varargs; eval $setvar
13854 ;;
13855 esac
13856 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13857esac
13858$rm -f varargs*
13859
13860: see if we need va_copy
13861echo " "
13862case "$i_stdarg" in
13863"$define")
13864 $cat >try.c <<EOCP
13865#include <stdarg.h>
13866#include <stdio.h>
85c8a686
DD
13867#$i_stdlib I_STDLIB
13868#ifdef I_STDLIB
13869#include <stdlib.h>
13870#endif
13871#include <signal.h>
2cc61e15
DD
13872
13873int
13874ivfprintf(FILE *f, const char *fmt, va_list *valp)
13875{
13876 return vfprintf(f, fmt, *valp);
13877}
13878
13879int
13880myvfprintf(FILE *f, const char *fmt, va_list val)
13881{
13882 return ivfprintf(f, fmt, &val);
13883}
13884
13885int
13886myprintf(char *fmt, ...)
13887{
13888 va_list val;
13889 va_start(val, fmt);
13890 return myvfprintf(stdout, fmt, val);
13891}
13892
13893int
13894main(int ac, char **av)
13895{
85c8a686
DD
13896 signal(SIGSEGV, exit);
13897
2cc61e15
DD
13898 myprintf("%s%cs all right, then\n", "that", '\'');
13899 exit(0);
13900}
13901EOCP
13902 set try
d50de4df 13903 if eval $compile && ./try 2>&1 >/dev/null; then
2cc61e15
DD
13904 case "`./try`" in
13905 "that's all right, then")
13906 okay=yes
13907 ;;
13908 esac
13909 fi
13910 case "$okay" in
13911 yes) echo "It seems that you don't need va_copy()." >&4
13912 need_va_copy="$undef"
13913 ;;
13914 *) echo "It seems that va_copy() or similar will be needed." >&4
13915 need_va_copy="$define"
13916 ;;
13917 esac
13918 $rm -f try.* core core.* *.core *.core.*
13919 ;;
13920*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13921 ;;
13922esac
13923
b4eb6b3d
JH
13924: define a fucntion to check prototypes
13925$cat > protochk <<EOSH
13926$startsh
13927cc="$cc"
13928optimize="$optimize"
13929ccflags="$ccflags"
13930prototype="$prototype"
13931define="$define"
13932rm=$rm
13933EOSH
13934
13935$cat >> protochk <<'EOSH'
13936
13937$rm -f try.c
13938foo="$1"
13939shift
13940while test $# -ge 2; do
13941 case "$1" in
13942 $define) echo "#include <$2>" >> try.c ;;
13943 literal) echo "$2" >> try.c ;;
13944 esac
13945 shift 2
13946done
13947test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13948cat >> try.c <<'EOCP'
13949#ifdef CAN_PROTOTYPE
13950#define _(args) args
13951#else
13952#define _(args) ()
13953#endif
13954EOCP
13955echo "$foo" >> try.c
13956echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13957$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13958status=$?
13959$rm -f try.[co]
13960exit $status
13961EOSH
13962chmod +x protochk
13963$eunicefix protochk
13964
13965: see what type is used for size_t
13966rp="What is the type used for the length parameter for string functions?"
13967set size_t sizetype 'unsigned int' stdio.h sys/types.h
13968eval $typedef_ask
13969
13970: check for type of arguments to gethostbyaddr.
13971if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13972 case "$d_gethbyaddr" in
13973 $define)
13974 $cat <<EOM
13975
13976Checking to see what type of arguments are accepted by gethostbyaddr().
13977EOM
13978 hdrs="$define sys/types.h
13979 $d_socket sys/socket.h
13980 $i_niin netinet/in.h
13981 $i_netdb netdb.h
13982 $i_unistd unistd.h"
13983 : The first arg can 'char *' or 'void *'
13984 : The second arg is some of integral type
13985 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13986 for yyy in size_t long int; do
13987 case "$netdb_host_type" in
13988 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13989 if ./protochk "$try" $hdrs; then
13990 echo "Your system accepts $xxx for the first arg."
13991 echo "...and $yyy for the second arg."
13992 netdb_host_type="$xxx"
13993 netdb_hlen_type="$yyy"
13994 fi
13995 ;;
13996 esac
13997 done
13998 done
13999 : In case none of those worked, prompt the user.
14000 case "$netdb_host_type" in
14001 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14002 dflt='char *'
14003 . ./myread
14004 netdb_host_type=$ans
14005 rp='What is the type for the 2nd argument to gethostbyaddr?'
14006 dflt="$sizetype"
14007 . ./myread
14008 netdb_hlen_type=$ans
14009 ;;
14010 esac
14011 ;;
14012 *) : no gethostbyaddr, so pick harmless defaults
14013 netdb_host_type='char *'
14014 netdb_hlen_type="$sizetype"
14015 ;;
14016 esac
14017 # Remove the "const" if needed. -- but then we'll have a
14018 # prototype clash!
14019 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14020fi
14021
14022: check for type of argument to gethostbyname.
14023if test "X$netdb_name_type" = X ; then
14024 case "$d_gethbyname" in
14025 $define)
14026 $cat <<EOM
14027
14028Checking to see what type of argument is accepted by gethostbyname().
14029EOM
14030 hdrs="$define sys/types.h
14031 $d_socket sys/socket.h
14032 $i_niin netinet/in.h
14033 $i_netdb netdb.h
14034 $i_unistd unistd.h"
14035 for xxx in "const char *" "char *"; do
14036 case "$netdb_name_type" in
14037 '') try="extern struct hostent *gethostbyname($xxx);"
14038 if ./protochk "$try" $hdrs; then
14039 echo "Your system accepts $xxx."
14040 netdb_name_type="$xxx"
14041 fi
14042 ;;
14043 esac
14044 done
14045 : In case none of those worked, prompt the user.
14046 case "$netdb_name_type" in
14047 '') rp='What is the type for the 1st argument to gethostbyname?'
14048 dflt='char *'
14049 . ./myread
14050 netdb_name_type=$ans
14051 ;;
14052 esac
14053 ;;
14054 *) : no gethostbyname, so pick harmless default
14055 netdb_name_type='char *'
14056 ;;
14057 esac
14058fi
14059
14060: check for type of 1st argument to getnetbyaddr.
14061if test "X$netdb_net_type" = X ; then
14062 case "$d_getnbyaddr" in
14063 $define)
14064 $cat <<EOM
14065
14066Checking to see what type of 1st argument is accepted by getnetbyaddr().
14067EOM
14068 hdrs="$define sys/types.h
14069 $d_socket sys/socket.h
14070 $i_niin netinet/in.h
14071 $i_netdb netdb.h
14072 $i_unistd unistd.h"
14073 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14074 case "$netdb_net_type" in
14075 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14076 if ./protochk "$try" $hdrs; then
14077 echo "Your system accepts $xxx."
14078 netdb_net_type="$xxx"
14079 fi
14080 ;;
14081 esac
14082 done
14083 : In case none of those worked, prompt the user.
14084 case "$netdb_net_type" in
14085 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14086 dflt='long'
14087 . ./myread
14088 netdb_net_type=$ans
14089 ;;
14090 esac
14091 ;;
14092 *) : no getnetbyaddr, so pick harmless default
14093 netdb_net_type='long'
14094 ;;
14095 esac
14096fi
14097: locate the preferred pager for this system
14098case "$pager" in
14099'')
14100 dflt=''
14101 case "$pg" in
14102 /*) dflt=$pg;;
14103 [a-zA-Z]:/*) dflt=$pg;;
14104 esac
14105 case "$more" in
14106 /*) dflt=$more;;
14107 [a-zA-Z]:/*) dflt=$more;;
14108 esac
14109 case "$less" in
14110 /*) dflt=$less;;
14111 [a-zA-Z]:/*) dflt=$less;;
14112 esac
14113 case "$dflt" in
14114 '') dflt=/usr/ucb/more;;
14115 esac
14116 ;;
14117*) dflt="$pager";;
14118esac
14119echo " "
14120fn=f/
14121rp='What pager is used on your system?'
14122. ./getfile
14123pager="$ans"
14124
14125: see what type pids are declared as in the kernel
14126rp="What is the type of process ids on this system?"
14127set pid_t pidtype int stdio.h sys/types.h
14128eval $typedef_ask
14129
14130: Find earliest binary compatible site_perl subdirectory perl can use.
14131case "$bincompat5005" in
14132"$define") xs_apiversion='5.005' ;;
14133*) xs_apiversion=$version ;; # The current site_perl version.
14134esac
14135: Find earliest pure perl site_perl subdirectory perl can use.
14136: The versioned directories started at 5.005.
14137pm_apiversion='5.005'
14138
14139: check for length of pointer
14140echo " "
14141case "$ptrsize" in
14142'')
14143 echo "Checking to see how big your pointers are..." >&4
14144 if test "$voidflags" -gt 7; then
14145 echo '#define VOID_PTR char *' > try.c
14146 else
14147 echo '#define VOID_PTR void *' > try.c
14148 fi
14149 $cat >>try.c <<'EOCP'
14150#include <stdio.h>
14151int main()
14152{
14153 printf("%d\n", (int)sizeof(VOID_PTR));
14154 exit(0);
14155}
14156EOCP
14157 set try
14158 if eval $compile_ok; then
14159 ptrsize=`./try`
14160 echo "Your pointers are $ptrsize bytes long."
14161 else
14162 dflt='4'
14163 echo "(I can't seem to compile the test program. Guessing...)" >&4
14164 rp="What is the size of a pointer (in bytes)?"
14165 . ./myread
14166 ptrsize="$ans"
14167 fi
14168 ;;
14169esac
14170$rm -f try.c try
14171
14172: see if ar generates random libraries by itself
14173echo " "
14174echo "Checking how to generate random libraries on your machine..." >&4
14175echo 'int bar1() { return bar2(); }' > bar1.c
14176echo 'int bar2() { return 2; }' > bar2.c
14177$cat > foo.c <<'EOP'
14178int main() { printf("%d\n", bar1()); exit(0); }
14179EOP
14180$cc $ccflags -c bar1.c >/dev/null 2>&1
14181$cc $ccflags -c bar2.c >/dev/null 2>&1
14182$cc $ccflags -c foo.c >/dev/null 2>&1
14183$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 14184if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
14185 ./foobar >/dev/null 2>&1; then
14186 echo "$ar appears to generate random libraries itself."
14187 orderlib=false
14188 ranlib=":"
14189elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 14190 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
14191 ./foobar >/dev/null 2>&1; then
14192 echo "a table of contents needs to be added with '$ar ts'."
14193 orderlib=false
14194 ranlib="$ar ts"
14195else
14196 case "$ranlib" in
14197 :) ranlib='';;
14198 '')
14199 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14200 $test -f $ranlib || ranlib=''
14201 ;;
14202 esac
14203 if $test -n "$ranlib"; then
14204 echo "your system has '$ranlib'; we'll use that."
14205 orderlib=false
14206 else
14207 echo "your system doesn't seem to support random libraries"
14208 echo "so we'll use lorder and tsort to order the libraries."
14209 orderlib=true
14210 ranlib=":"
14211 fi
14212fi
14213$rm -f foo* bar*
14214
14215: check for type of arguments to select.
14216case "$selecttype" in
14217'') case "$d_select" in
14218 $define)
14219 echo " "
14220 $cat <<EOM
14221Checking to see what type of arguments are accepted by select().
14222EOM
14223 hdrs="$define sys/types.h
14224 $i_systime sys/time.h
14225 $i_sysselct sys/select.h
14226 $d_socket sys/socket.h"
14227 : The first arg can be int, unsigned, or size_t
14228 : The last arg may or may not be 'const'
14229 val=''
14230 : void pointer has been seen but using that
14231 : breaks the selectminbits test
14232 for xxx in 'fd_set *' 'int *'; do
14233 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14234 for tmo in 'struct timeval *' 'const struct timeval *'; do
14235 case "$val" in
14236 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14237 if ./protochk "$try" $hdrs; then
14238 echo "Your system accepts $xxx."
14239 val="$xxx"
14240 fi
14241 ;;
14242 esac
14243 done
14244 done
14245 done
14246 case "$val" in
14247 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14248 case "$d_fd_set" in
14249 $define) dflt="fd_set *" ;;
14250 *) dflt="int *" ;;
14251 esac
14252 . ./myread
14253 val=$ans
14254 ;;
14255 esac
14256 selecttype="$val"
14257 ;;
14258 *) : no select, so pick a harmless default
14259 selecttype='int *'
14260 ;;
14261 esac
14262 ;;
14263esac
14264
14265: check for the select 'width'
14266case "$selectminbits" in
14267'') case "$d_select" in
14268 $define)
14269 $cat <<EOM
14270
14271Checking to see on how many bits at a time your select() operates...
14272EOM
14273 $cat >try.c <<EOCP
14274#include <sys/types.h>
14275#$i_time I_TIME
14276#$i_systime I_SYS_TIME
14277#$i_systimek I_SYS_TIME_KERNEL
14278#ifdef I_TIME
14279# include <time.h>
14280#endif
14281#ifdef I_SYS_TIME
14282# ifdef I_SYS_TIME_KERNEL
14283# define KERNEL
14284# endif
14285# include <sys/time.h>
14286# ifdef I_SYS_TIME_KERNEL
14287# undef KERNEL
14288# endif
14289#endif
14290#$i_sysselct I_SYS_SELECT
14291#ifdef I_SYS_SELECT
14292#include <sys/select.h>
14293#endif
14294#$d_socket HAS_SOCKET
14295#ifdef HAS_SOCKET
14296# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14297#endif
14298#include <stdio.h>
14299$selecttype b;
14300#define S sizeof(*(b))
14301#define MINBITS 64
14302#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14303#define NBITS (NBYTES * 8)
14304int main() {
14305 char s[NBYTES];
14306 struct timeval t;
14307 int i;
14308 FILE* fp;
14309 int fd;
14310
14311 fclose(stdin);
14312 fp = fopen("try.c", "r");
14313 if (fp == 0)
14314 exit(1);
14315 fd = fileno(fp);
14316 if (fd < 0)
14317 exit(2);
14318 b = ($selecttype)s;
14319 for (i = 0; i < NBITS; i++)
14320 FD_SET(i, b);
14321 t.tv_sec = 0;
14322 t.tv_usec = 0;
14323 select(fd + 1, b, 0, 0, &t);
14324 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14325 printf("%d\n", i + 1);
14326 return 0;
14327}
14328EOCP
14329 set try
14330 if eval $compile_ok; then
14331 selectminbits=`./try`
14332 case "$selectminbits" in
14333 '') cat >&4 <<EOM
14334Cannot figure out on how many bits at a time your select() operates.
14335I'll play safe and guess it is 32 bits.
14336EOM
14337 selectminbits=32
14338 bits="32 bits"
14339 ;;
14340 1) bits="1 bit" ;;
14341 *) bits="$selectminbits bits" ;;
14342 esac
14343 echo "Your select() operates on $bits at a time." >&4
14344 else
14345 rp='What is the minimum number of bits your select() operates on?'
14346 case "$byteorder" in
14347 1234|12345678) dflt=32 ;;
14348 *) dflt=1 ;;
14349 esac
14350 . ./myread
14351 val=$ans
14352 selectminbits="$val"
14353 fi
14354 $rm -f try.* try
14355 ;;
14356 *) : no select, so pick a harmless default
14357 selectminbits='32'
14358 ;;
14359 esac
14360 ;;
14361esac
14362
14363: Trace out the files included by signal.h, then look for SIGxxx names.
14364: Remove SIGARRAYSIZE used by HPUX.
14365: Remove SIGSTKSIZE used by Linux.
14366: Remove SIGSTKSZ used by Posix.
14367: Remove SIGTYP void lines used by OS2.
14368: Some cpps, like os390, dont give the file name anywhere
14369if [ "X$fieldn" = X ]; then
14370 : Just make some guesses. We check them later.
14371 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14372else
14373 xxx=`echo '#include <signal.h>' |
14374 $cppstdin $cppminus $cppflags 2>/dev/null |
14375 $grep '^[ ]*#.*include' |
14376 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14377fi
14378: Check this list of files to be sure we have parsed the cpp output ok.
14379: This will also avoid potentially non-existent files, such
14380: as ../foo/bar.h
14381xxxfiles=''
14382for xx in $xxx /dev/null ; do
14383 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14384done
14385: If we have found no files, at least try signal.h
14386case "$xxxfiles" in
14387'') xxxfiles=`./findhdr signal.h` ;;
14388esac
14389xxx=`awk '
14390$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14391 print substr($2, 4, 20)
14392}
14393$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14394 print substr($3, 4, 20)
14395}' $xxxfiles`
14396: Append some common names just in case the awk scan failed.
14397xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14398xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14399xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14400xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14401xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14402
14403: generate a few handy files for later
14404$cat > signal.c <<'EOCP'
14405#include <sys/types.h>
14406#include <signal.h>
14407#include <stdio.h>
14408int main() {
14409
14410/* Strange style to avoid deeply-nested #if/#else/#endif */
14411#ifndef NSIG
14412# ifdef _NSIG
14413# define NSIG (_NSIG)
14414# endif
14415#endif
14416
14417#ifndef NSIG
14418# ifdef SIGMAX
14419# define NSIG (SIGMAX+1)
14420# endif
14421#endif
14422
14423#ifndef NSIG
14424# ifdef SIG_MAX
14425# define NSIG (SIG_MAX+1)
14426# endif
14427#endif
14428
14429#ifndef NSIG
14430# ifdef MAXSIG
14431# define NSIG (MAXSIG+1)
14432# endif
14433#endif
14434
14435#ifndef NSIG
14436# ifdef MAX_SIG
14437# define NSIG (MAX_SIG+1)
14438# endif
14439#endif
14440
14441#ifndef NSIG
14442# ifdef SIGARRAYSIZE
14443# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14444# endif
14445#endif
14446
14447#ifndef NSIG
14448# ifdef _sys_nsig
14449# define NSIG (_sys_nsig) /* Solaris 2.5 */
14450# endif
14451#endif
14452
14453/* Default to some arbitrary number that's big enough to get most
14454 of the common signals.
14455*/
14456#ifndef NSIG
14457# define NSIG 50
14458#endif
14459
14460printf("NSIG %d\n", NSIG);
14461
14462#ifndef JUST_NSIG
14463
14464EOCP
14465
14466echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14467{
14468 printf "#ifdef SIG"; printf $1; printf "\n"
14469 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14470 printf $1; printf ");\n"
14471 printf "#endif\n"
14472}
14473END {
14474 printf "#endif /* JUST_NSIG */\n";
14475 printf "exit(0);\n}\n";
14476}
14477' >>signal.c
14478$cat >signal.awk <<'EOP'
14479BEGIN { ndups = 0 }
14480$1 ~ /^NSIG$/ { nsig = $2 }
14481($1 !~ /^NSIG$/) && (NF == 2) {
14482 if ($2 > maxsig) { maxsig = $2 }
14483 if (sig_name[$2]) {
14484 dup_name[ndups] = $1
14485 dup_num[ndups] = $2
14486 ndups++
14487 }
14488 else {
14489 sig_name[$2] = $1
14490 sig_num[$2] = $2
14491 }
14492}
14493END {
14494 if (nsig == 0) {
14495 nsig = maxsig + 1
14496 }
14497 printf("NSIG %d\n", nsig);
14498 for (n = 1; n < nsig; n++) {
14499 if (sig_name[n]) {
14500 printf("%s %d\n", sig_name[n], sig_num[n])
14501 }
14502 else {
14503 printf("NUM%d %d\n", n, n)
14504 }
14505 }
14506 for (n = 0; n < ndups; n++) {
14507 printf("%s %d\n", dup_name[n], dup_num[n])
14508 }
14509}
14510EOP
14511$cat >signal_cmd <<EOS
14512$startsh
14513if $test -s signal.lst; then
14514 echo "Using your existing signal.lst file"
14515 exit 0
14516fi
14517xxx="$xxx"
14518EOS
14519$cat >>signal_cmd <<'EOS'
14520
14521set signal
14522if eval $compile_ok; then
14523 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14524else
14525 echo "(I can't seem be able to compile the whole test program)" >&4
14526 echo "(I'll try it in little pieces.)" >&4
14527 set signal -DJUST_NSIG
14528 if eval $compile_ok; then
14529 ./signal$_exe > signal.nsg
14530 $cat signal.nsg
14531 else
14532 echo "I can't seem to figure out how many signals you have." >&4
14533 echo "Guessing 50." >&4
14534 echo 'NSIG 50' > signal.nsg
14535 fi
14536 : Now look at all the signal names, one at a time.
14537 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14538 $cat > signal.c <<EOCP
14539#include <sys/types.h>
14540#include <signal.h>
14541#include <stdio.h>
14542int main() {
14543printf("$xx %d\n", SIG${xx});
14544return 0;
14545}
14546EOCP
14547 set signal
14548 if eval $compile; then
14549 echo "SIG${xx} found."
14550 ./signal$_exe >> signal.ls1
14551 else
14552 echo "SIG${xx} NOT found."
14553 fi
14554 done
14555 if $test -s signal.ls1; then
14556 $cat signal.nsg signal.ls1 |
14557 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14558 fi
14559
14560fi
14561if $test -s signal.lst; then
14562 :
14563else
14564 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14565 echo 'kill -l' >signal
14566 set X `csh -f <signal`
14567 $rm -f signal
14568 shift
14569 case $# in
14570 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14571 esac
14572 echo $@ | $tr ' ' $trnl | \
14573 $awk '{ printf "%s %d\n", $1, ++s; }
14574 END { printf "NSIG %d\n", ++s }' >signal.lst
14575fi
14576$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14577EOS
14578chmod a+x signal_cmd
14579$eunicefix signal_cmd
14580
14581: generate list of signal names
14582echo " "
14583case "$sig_name_init" in
14584'') doinit=yes ;;
14585*) case "$sig_num_init" in
14586 ''|*,*) doinit=yes ;;
14587 esac ;;
14588esac
14589case "$doinit" in
14590yes)
14591 echo "Generating a list of signal names and numbers..." >&4
14592 . ./signal_cmd
14593 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14594 sig_name=`$awk 'BEGIN { printf "ZERO " }
14595 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14596 sig_num=`$awk 'BEGIN { printf "0 " }
14597 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14598 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14599 !/^NSIG/ { printf "\"%s\", ", $1 }
14600 END { printf "0\n" }' signal.lst`
14601 sig_num_init=`$awk 'BEGIN { printf "0, " }
14602 !/^NSIG/ { printf "%d, ", $2}
14603 END { printf "0\n"}' signal.lst`
14604 ;;
14605esac
14606echo "The following $sig_count signals are available:"
14607echo " "
14608echo $sig_name | $awk \
14609'BEGIN { linelen = 0 }
14610{
14611 for (i = 1; i <= NF; i++) {
14612 name = "SIG" $i " "
14613 linelen = linelen + length(name)
14614 if (linelen > 70) {
14615 printf "\n"
14616 linelen = length(name)
14617 }
14618 printf "%s", name
14619 }
14620 printf "\n"
14621}'
76d3c696 14622sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
14623$rm -f signal signal.c signal.awk signal.lst signal_cmd
14624
14625echo " "
14626case "$sizetype" in
14627*_t) zzz="$sizetype" ;;
14628*) zzz="filesize" ;;
14629esac
14630echo "Checking the size of $zzz..." >&4
14631cat > try.c <<EOCP
14632#include <sys/types.h>
14633#include <stdio.h>
14634int main() {
14635 printf("%d\n", (int)sizeof($sizetype));
14636 exit(0);
14637}
14638EOCP
14639set try
14640if eval $compile_ok; then
14641 yyy=`./try`
14642 case "$yyy" in
14643 '') sizesize=4
14644 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14645 ;;
14646 *) sizesize=$yyy
14647 echo "Your $zzz size is $sizesize bytes."
14648 ;;
14649 esac
14650else
14651 sizesize=4
14652 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14653fi
14654
14655
14656: check for socklen_t
14657echo " "
14658echo "Checking to see if you have socklen_t..." >&4
14659$cat >try.c <<EOCP
14660#include <sys/types.h>
14661#$d_socket HAS_SOCKET
14662#ifdef HAS_SOCKET
14663#include <sys/socket.h>
14664#endif
14665int main() { socklen_t x = 16; }
14666EOCP
14667set try
14668if eval $compile; then
14669 val="$define"
14670 echo "You have socklen_t."
14671else
14672 val="$undef"
14673 echo "You do not have socklen_t."
14674 case "$sizetype" in
14675 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14676 esac
14677fi
14678$rm -f try try.*
14679set d_socklen_t
14680eval $setvar
14681
a7710f8d
JH
14682: see if this is a socks.h system
14683set socks.h i_socks
14684eval $inhdr
14685
b4eb6b3d
JH
14686: check for type of the size argument to socket calls
14687case "$d_socket" in
14688"$define")
14689 $cat <<EOM
14690
14691Checking to see what type is the last argument of accept().
14692EOM
b4eb6b3d
JH
14693 yyy=''
14694 case "$d_socklen_t" in
14695 "$define") yyy="$yyy socklen_t"
14696 esac
14697 yyy="$yyy $sizetype int long unsigned"
14698 for xxx in $yyy; do
14699 case "$socksizetype" in
14700 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
14701 case "$usesocks" in
14702 "$define")
14703 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14704 echo "Your system accepts '$xxx *' for the last argument of accept()."
14705 socksizetype="$xxx"
14706 fi
14707 ;;
14708 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14709 echo "Your system accepts '$xxx *' for the last argument of accept()."
14710 socksizetype="$xxx"
14711 fi
14712 ;;
14713 esac
b4eb6b3d
JH
14714 ;;
14715 esac
14716 done
14717: In case none of those worked, prompt the user.
14718 case "$socksizetype" in
14719 '') rp='What is the type for socket address structure sizes?'
14720 dflt='int'
14721 . ./myread
14722 socksizetype=$ans
14723 ;;
14724 esac
14725 ;;
14726*) : no sockets, so pick relatively harmless default
14727 socksizetype='int'
14728 ;;
14729esac
14730
14731: see what type is used for signed size_t
14732set ssize_t ssizetype int stdio.h sys/types.h
14733eval $typedef
14734dflt="$ssizetype"
14735$cat > ssize.c <<EOM
14736#include <stdio.h>
14737#include <sys/types.h>
14738#define Size_t $sizetype
14739#define SSize_t $dflt
14740int main()
14741{
14742 if (sizeof(Size_t) == sizeof(SSize_t))
14743 printf("$dflt\n");
14744 else if (sizeof(Size_t) == sizeof(int))
14745 printf("int\n");
14746 else
14747 printf("long\n");
14748 exit(0);
14749}
14750EOM
14751echo " "
14752set ssize
14753if eval $compile_ok && ./ssize > /dev/null; then
14754 ssizetype=`./ssize`
14755 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14756else
14757 $cat >&4 <<EOM
14758Help! I can't compile and run the ssize_t test program: please enlighten me!
14759(This is probably a misconfiguration in your system or libraries, and
14760you really ought to fix it. Still, I'll try anyway.)
14761
14762I need a type that is the same size as $sizetype, but is guaranteed to
14763be signed. Common values are ssize_t, int and long.
14764
14765EOM
14766 rp="What signed type is the same size as $sizetype?"
14767 . ./myread
14768 ssizetype="$ans"
14769fi
14770$rm -f ssize ssize.*
14771
14772: see what type of char stdio uses.
14773echo " "
aa517f50
JH
14774echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14775if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
14776 echo "Your stdio uses unsigned chars." >&4
14777 stdchar="unsigned char"
14778else
aa517f50
JH
14779 echo "Your stdio uses signed chars." >&4
14780 stdchar="char"
b4eb6b3d 14781fi
aa517f50
JH
14782$rm -f stdioh
14783
14784
b4eb6b3d
JH
14785
14786: see if time exists
14787echo " "
14788if test "X$d_time" = X -o X"$timetype" = X; then
14789 if set time val -f d_time; eval $csym; $val; then
14790 echo 'time() found.' >&4
14791 val="$define"
14792 rp="What is the type returned by time() on this system?"
14793 set time_t timetype long stdio.h sys/types.h
14794 eval $typedef_ask
14795 else
14796 echo 'time() not found, hope that will do.' >&4
14797 val="$undef"
14798 timetype='int';
14799 fi
14800 set d_time
14801 eval $setvar
14802fi
14803
14804: see what type uids are declared as in the kernel
14805echo " "
14806echo "Looking for the type for user ids returned by getuid()."
14807set uid_t uidtype xxx stdio.h sys/types.h
14808eval $typedef
14809case "$uidtype" in
14810xxx)
14811 xxx=`./findhdr sys/user.h`
14812 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14813 case $1 in
14814 unsigned) dflt="$1 $2" ;;
14815 *) dflt="$1" ;;
14816 esac
14817 ;;
14818*) dflt="$uidtype";;
14819esac
14820case "$uidtype" in
14821uid_t) echo "uid_t found." ;;
14822*) rp="What is the type for user ids returned by getuid()?"
14823 . ./myread
14824 uidtype="$ans"
14825 ;;
14826esac
14827
14828echo " "
14829case "$uidtype" in
14830*_t) zzz="$uidtype" ;;
14831*) zzz="uid" ;;
14832esac
14833echo "Checking the size of $zzz..." >&4
14834cat > try.c <<EOCP
14835#include <sys/types.h>
14836#include <stdio.h>
14837int main() {
14838 printf("%d\n", (int)sizeof($uidtype));
14839 exit(0);
14840}
14841EOCP
14842set try
14843if eval $compile_ok; then
14844 yyy=`./try`
14845 case "$yyy" in
14846 '') uidsize=4
14847 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14848 ;;
14849 *) uidsize=$yyy
14850 echo "Your $zzz is $uidsize bytes long."
14851 ;;
14852 esac
14853else
14854 uidsize=4
14855 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14856fi
14857
14858echo " "
14859case "$uidtype" in
14860*_t) zzz="$uidtype" ;;
14861*) zzz="uid" ;;
14862esac
14863echo "Checking the sign of $zzz..." >&4
14864cat > try.c <<EOCP
14865#include <sys/types.h>
14866#include <stdio.h>
14867int main() {
14868 $uidtype foo = -1;
14869 if (foo < 0)
14870 printf("-1\n");
14871 else
14872 printf("1\n");
14873}
14874EOCP
14875set try
14876if eval $compile; then
14877 yyy=`./try`
14878 case "$yyy" in
14879 '') uidsign=1
14880 echo "(I can't execute the test program--guessing unsigned.)" >&4
14881 ;;
14882 *) uidsign=$yyy
14883 case "$uidsign" in
14884 1) echo "Your $zzz is unsigned." ;;
14885 -1) echo "Your $zzz is signed." ;;
14886 esac
14887 ;;
14888 esac
14889else
14890 uidsign=1
14891 echo "(I can't compile the test program--guessing unsigned.)" >&4
14892fi
14893
14894
14895
14896echo " "
14897$echo "Checking the format string to be used for uids..." >&4
14898
14899case "$uidsign" in
14900-1) if $test X"$uidsize" = X"$ivsize"; then
14901 uidformat="$ivdformat"
14902 else
14903 if $test X"$uidsize" = X"$longsize"; then
14904 uidformat='"ld"'
14905 else
14906 if $test X"$uidsize" = X"$intsize"; then
14907 uidformat='"d"'
14908 else
14909 if $test X"$uidsize" = X"$shortsize"; then
14910 uidformat='"hd"'
14911 fi
14912 fi
14913 fi
14914 fi
14915 ;;
14916*) if $test X"$uidsize" = X"$uvsize"; then
14917 uidformat="$uvuformat"
14918 else
14919 if $test X"$uidsize" = X"$longsize"; then
14920 uidformat='"lu"'
14921 else
14922 if $test X"$uidsize" = X"$intsize"; then
14923 uidformat='"u"'
14924 else
14925 if $test X"$uidsize" = X"$shortsize"; then
14926 uidformat='"hu"'
14927 fi
14928 fi
14929 fi
14930 fi
14931 ;;
14932esac
14933
3659ebf1
JH
14934: determine compiler compiler
14935case "$yacc" in
14936'')
14937 dflt=yacc;;
14938*)
14939 dflt="$yacc";;
14940esac
14941echo " "
14942comp='yacc'
14943if $test -f "$byacc"; then
14944 dflt="$byacc"
14945 comp="byacc or $comp"
14946fi
14947if $test -f "$bison"; then
14948 comp="$comp or bison -y"
14949fi
14950rp="Which compiler compiler ($comp) shall I use?"
14951. ./myread
14952yacc="$ans"
14953case "$yacc" in
14954*bis*)
14955 case "$yacc" in
14956 *-y*) ;;
14957 *)
14958 yacc="$yacc -y"
14959 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
14960 ;;
14961 esac
14962 ;;
14963esac
14964
b4eb6b3d
JH
14965: see if dbm.h is available
14966: see if dbmclose exists
14967set dbmclose d_dbmclose
14968eval $inlibc
14969
14970case "$d_dbmclose" in
14971$define)
14972 set dbm.h i_dbm
14973 eval $inhdr
14974 case "$i_dbm" in
14975 $define)
14976 val="$undef"
14977 set i_rpcsvcdbm
14978 eval $setvar
14979 ;;
14980 *) set rpcsvc/dbm.h i_rpcsvcdbm
14981 eval $inhdr
14982 ;;
14983 esac
14984 ;;
14985*) echo "We won't be including <dbm.h>"
14986 val="$undef"
14987 set i_dbm
14988 eval $setvar
14989 val="$undef"
14990 set i_rpcsvcdbm
14991 eval $setvar
14992 ;;
14993esac
14994
14995: see if this is a sys/file.h system
14996val=''
14997set sys/file.h val
14998eval $inhdr
14999
15000: do we need to include sys/file.h ?
15001case "$val" in
15002"$define")
15003 echo " "
15004 if $h_sysfile; then
15005 val="$define"
15006 echo "We'll be including <sys/file.h>." >&4
15007 else
15008 val="$undef"
15009 echo "We won't be including <sys/file.h>." >&4
15010 fi
15011 ;;
15012*)
15013 h_sysfile=false
15014 ;;
15015esac
15016set i_sysfile
15017eval $setvar
15018
15019: see if fcntl.h is there
15020val=''
15021set fcntl.h val
15022eval $inhdr
15023
15024: see if we can include fcntl.h
15025case "$val" in
15026"$define")
15027 echo " "
15028 if $h_fcntl; then
15029 val="$define"
15030 echo "We'll be including <fcntl.h>." >&4
15031 else
15032 val="$undef"
15033 if $h_sysfile; then
15034 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15035 else
15036 echo "We won't be including <fcntl.h>." >&4
15037 fi
15038 fi
15039 ;;
15040*)
15041 h_fcntl=false
15042 val="$undef"
15043 ;;
15044esac
15045set i_fcntl
15046eval $setvar
15047
15048: see if this is a iconv.h system
15049set iconv.h i_iconv
15050eval $inhdr
15051
15052: see if this is a ieeefp.h system
15053set ieeefp.h i_ieeefp
15054eval $inhdr
15055
15056: see if this is a libutil.h system
15057set libutil.h i_libutil
15058eval $inhdr
15059
15060: see if locale.h is available
15061set locale.h i_locale
15062eval $inhdr
15063
15064: see if mach cthreads are available
15065if test "X$usethreads" = "X$define"; then
15066 set mach/cthreads.h i_machcthr
15067 eval $inhdr
15068else
15069 i_machcthr="$undef"
15070fi
15071
15072
15073
15074: see if this is a math.h system
15075set math.h i_math
15076eval $inhdr
15077
15078: see if this is a mntent.h system
15079set mntent.h i_mntent
15080eval $inhdr
15081
15082: see if ndbm.h is available
15083set ndbm.h t_ndbm
15084eval $inhdr
15085case "$t_ndbm" in
15086$define)
15087 : see if dbm_open exists
15088 set dbm_open d_dbm_open
15089 eval $inlibc
15090 case "$d_dbm_open" in
15091 $undef)
15092 t_ndbm="$undef"
15093 echo "We won't be including <ndbm.h>"
15094 ;;
15095 esac
15096 ;;
15097esac
15098val="$t_ndbm"
15099set i_ndbm
15100eval $setvar
15101
15102: see if net/errno.h is available
15103val=''
15104set net/errno.h val
15105eval $inhdr
15106
15107: Unfortunately, it causes problems on some systems. Arrgh.
15108case "$val" in
15109$define)
15110 cat > try.c <<'EOM'
15111#include <stdio.h>
15112#include <errno.h>
15113#include <net/errno.h>
15114int func()
15115{
15116 return ENOTSOCK;
15117}
15118EOM
15119 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15120 echo "We'll be including <net/errno.h>." >&4
15121 else
15122 echo "We won't be including <net/errno.h>." >&4
15123 val="$undef"
15124 fi
15125 $rm -f try.* try
15126 ;;
15127esac
15128set i_neterrno
15129eval $setvar
15130
15131: see if netinet/tcp.h is available
15132set netinet/tcp.h i_netinettcp
15133eval $inhdr
15134
15135: see if this is a poll.h system
15136set poll.h i_poll
15137eval $inhdr
15138
15139: see if this is a prot.h system
15140set prot.h i_prot
15141eval $inhdr
15142
15143echo " "
15144$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15145$cat <<'EOSH' > Cppsym.know
15146a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15147AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15148alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15149ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15150BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15151BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15152bull c cadmus clipper CMU COFF COMPILER_VERSION
15153concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15154CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15155Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15156FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15157GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15158H3050R H3050RX hbullx20 hcx host_mips
15159hp200 hp300 hp700 HP700 hp800 hp9000
15160hp9000s200 hp9000s300 hp9000s400 hp9000s500
15161hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15162i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15163iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15164INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15165LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15166LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15167Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15168LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15169M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15170M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15171M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15172MATH_HAS_NO_SIDE_EFFECTS
15173mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15174mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15175mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15176MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15177mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15178NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15179news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15180ns32016 ns32332 ns32k nsc32000
15181OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15182pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15183pc532 pdp11 PGC PIC plexus PORTAR posix
15184POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15185POSIX_C_SOURCE POSIX_SOURCE POWER
15186PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15187riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15188SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15189sony sony_news sonyrisc sparc sparclite spectrum
15190stardent stdc STDC_EXT stratos sun sun3 sun386
15191Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15192SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15193SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15194sysV68 sysV88 Tek4132 Tek4300 titan
15195tower tower32 tower32_200 tower32_600 tower32_700
15196tower32_800 tower32_850 tss
15197u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15198ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15199unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15200Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15201XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15202XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15203z8000
15204EOSH
15205# Maybe put other stuff here too.
15206cat <<EOSH >>Cppsym.know
15207$osname
15208EOSH
15209./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15210./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15211$cat Cppsym.know > Cppsym.c
381aa1ff 15212$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15213$rm -f Cppsym.a Cppsym.b Cppsym.c
15214cat <<EOSH > Cppsym
15215$startsh
15216if $test \$# -gt 0; then
15217 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15218 if $test -s Cppsym.got; then
15219 $rm -f Cppsym.got
15220 exit 0
15221 fi
15222 $rm -f Cppsym.got
15223 exit 1
15224else
15225 $tr " " "$trnl" | ./Cppsym.try
15226 exit 0
15227fi
15228EOSH
15229chmod +x Cppsym
15230$eunicefix Cppsym
15231cat <<EOSH > Cppsym.try
15232$startsh
15233cat <<'EOCP' > try.c
15234#include <stdio.h>
15235int main() {
15236EOCP
15237$awk \\
15238EOSH
15239cat <<'EOSH' >> Cppsym.try
15240'length($1) > 0 {
15241 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15242 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15243 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15244 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15245}' >> try.c
15246echo '}' >> try.c
15247EOSH
15248cat <<EOSH >> Cppsym.try
15249ccflags="$ccflags"
15250case "$osname-$gccversion" in
15251irix-) ccflags="\$ccflags -woff 1178" ;;
15252os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15253esac
7a282f6d 15254$cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
b4eb6b3d
JH
15255EOSH
15256chmod +x Cppsym.try
15257$eunicefix Cppsym.try
15258./Cppsym < Cppsym.know > Cppsym.true
15259: now check the C compiler for additional symbols
15260postprocess_cc_v=''
15261case "$osname" in
15262aix) postprocess_cc_v="|$tr , ' '" ;;
15263esac
15264$cat >ccsym <<EOS
15265$startsh
15266$cat >tmp.c <<EOF
15267extern int foo;
15268EOF
15269for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15270do
15271 case "\$i" in
15272 -D*) echo "\$i" | $sed 's/^-D//';;
15273 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15274 esac
15275done
15276$rm -f try.c
15277EOS
15278postprocess_cc_v=''
15279chmod +x ccsym
15280$eunicefix ccsym
15281./ccsym > ccsym1.raw
15282if $test -s ccsym1.raw; then
15283 $sort ccsym1.raw | $uniq >ccsym.raw
15284else
15285 mv ccsym1.raw ccsym.raw
15286fi
15287
15288$awk '/\=/ { print $0; next }
15289 { print $0"=1" }' ccsym.raw >ccsym.list
15290$awk '/\=/ { print $0; next }
15291 { print $0"=1" }' Cppsym.true >ccsym.true
15292$comm -13 ccsym.true ccsym.list >ccsym.own
15293$comm -12 ccsym.true ccsym.list >ccsym.com
15294$comm -23 ccsym.true ccsym.list >ccsym.cpp
15295also=''
15296if $test -z ccsym.raw; then
15297 echo "Your C compiler doesn't seem to define any symbols!" >&4
15298 echo " "
15299 echo "However, your C preprocessor defines the following symbols:"
15300 $cat Cppsym.true
15301 ccsymbols=''
15302 cppsymbols=`$cat Cppsym.true`
15303 cppsymbols=`echo $cppsymbols`
15304 cppccsymbols="$cppsymbols"
15305else
15306 if $test -s ccsym.com; then
15307 echo "Your C compiler and pre-processor define these symbols:"
15308 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15309 also='also '
15310 symbols='ones'
15311 cppccsymbols=`$cat ccsym.com`
15312 cppccsymbols=`echo $cppccsymbols`
15313 $test "$silent" || sleep 1
15314 fi
15315 if $test -s ccsym.cpp; then
15316 $test "$also" && echo " "
15317 echo "Your C pre-processor ${also}defines the following symbols:"
15318 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15319 also='further '
15320 cppsymbols=`$cat ccsym.cpp`
15321 cppsymbols=`echo $cppsymbols`
15322 $test "$silent" || sleep 1
15323 fi
15324 if $test -s ccsym.own; then
15325 $test "$also" && echo " "
15326 echo "Your C compiler ${also}defines the following cpp symbols:"
15327 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15328 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15329 ccsymbols=`$cat ccsym.own`
15330 ccsymbols=`echo $ccsymbols`
15331 $test "$silent" || sleep 1
15332 fi
15333fi
15334$rm -f ccsym* Cppsym.*
15335
15336: see if this is a termio system
15337val="$undef"
15338val2="$undef"
15339val3="$undef"
15340if $test `./findhdr termios.h`; then
15341 set tcsetattr i_termios
15342 eval $inlibc
15343 val3="$i_termios"
15344fi
15345echo " "
15346case "$val3" in
15347"$define") echo "You have POSIX termios.h... good!" >&4;;
15348*) if ./Cppsym pyr; then
15349 case "`/bin/universe`" in
15350 ucb) if $test `./findhdr sgtty.h`; then
15351 val2="$define"
15352 echo "<sgtty.h> found." >&4
15353 else
15354 echo "System is pyramid with BSD universe."
15355 echo "<sgtty.h> not found--you could have problems." >&4
15356 fi;;
15357 *) if $test `./findhdr termio.h`; then
15358 val="$define"
15359 echo "<termio.h> found." >&4
15360 else
15361 echo "System is pyramid with USG universe."
15362 echo "<termio.h> not found--you could have problems." >&4
15363 fi;;
15364 esac
15365 elif ./usg; then
15366 if $test `./findhdr termio.h`; then
15367 echo "<termio.h> found." >&4
15368 val="$define"
15369 elif $test `./findhdr sgtty.h`; then
15370 echo "<sgtty.h> found." >&4
15371 val2="$define"
15372 else
15373echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15374 fi
15375 else
15376 if $test `./findhdr sgtty.h`; then
15377 echo "<sgtty.h> found." >&4
15378 val2="$define"
15379 elif $test `./findhdr termio.h`; then
15380 echo "<termio.h> found." >&4
15381 val="$define"
15382 else
15383echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15384 fi
15385 fi;;
15386esac
15387set i_termio; eval $setvar
15388val=$val2; set i_sgtty; eval $setvar
15389val=$val3; set i_termios; eval $setvar
15390
15391: see if this is a shadow.h system
15392set shadow.h i_shadow
15393eval $inhdr
15394
b4eb6b3d
JH
15395: see if stddef is available
15396set stddef.h i_stddef
15397eval $inhdr
923fc586 15398
b4eb6b3d
JH
15399: see if this is a sunmath.h system
15400set sunmath.h i_sunmath
15401eval $inhdr
5f80c64f 15402
b4eb6b3d
JH
15403: see if sys/access.h is available
15404set sys/access.h i_sysaccess
15405eval $inhdr
15406
15407: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15408set sys/filio.h i_sysfilio
15409eval $inhdr
15410echo " "
15411if $test `./findhdr sys/ioctl.h`; then
15412 val="$define"
15413 echo '<sys/ioctl.h> found.' >&4
15414else
15415 val="$undef"
15416 if $test $i_sysfilio = "$define"; then
15417 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 15418 else
b4eb6b3d
JH
15419 $test $i_sgtty = "$define" && xxx="sgtty.h"
15420 $test $i_termio = "$define" && xxx="termio.h"
15421 $test $i_termios = "$define" && xxx="termios.h"
15422echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15423 fi
15424fi
15425set i_sysioctl
15426eval $setvar
15427
15428
15429: see if this is a syslog.h system
15430set syslog.h i_syslog
15431eval $inhdr
15432
15433
15434: see if this is a sys/mode.h system
15435set sys/mode.h i_sysmode
15436eval $inhdr
15437
15438: see if sys/resource.h has to be included
15439set sys/resource.h i_sysresrc
15440eval $inhdr
15441
15442: see if sys/security.h is available
15443set sys/security.h i_syssecrt
15444eval $inhdr
15445
15446: see if this is a sys/statvfs.h system
15447set sys/statvfs.h i_sysstatvfs
15448eval $inhdr
15449
15450: see if this is a sys/uio.h system
15451set sys/uio.h i_sysuio
15452eval $inhdr
15453
15454: see if this is a sys/un.h system
15455set sys/un.h i_sysun
15456eval $inhdr
15457
15458
15459: see if this is a sys/utsname.h system
15460set sys/utsname.h i_sysutsname
15461eval $inhdr
15462
15463: see if this is a syswait system
15464set sys/wait.h i_syswait
15465eval $inhdr
15466
15467: see if this is a ustat.h system
15468set ustat.h i_ustat
15469eval $inhdr
15470
15471: see if this is an utime system
15472set utime.h i_utime
15473eval $inhdr
15474
15475: see if this is a values.h system
15476set values.h i_values
15477eval $inhdr
15478
15479: see if this is a vfork system
15480case "$d_vfork" in
15481"$define")
15482 set vfork.h i_vfork
15483 eval $inhdr
15484 ;;
15485*)
15486 i_vfork="$undef"
15487 ;;
15488esac
15489
15490: see if gdbm.h is available
15491set gdbm.h t_gdbm
15492eval $inhdr
15493case "$t_gdbm" in
15494$define)
15495 : see if gdbm_open exists
15496 set gdbm_open d_gdbm_open
15497 eval $inlibc
15498 case "$d_gdbm_open" in
15499 $undef)
15500 t_gdbm="$undef"
15501 echo "We won't be including <gdbm.h>"
5f80c64f 15502 ;;
b4eb6b3d
JH
15503 esac
15504 ;;
15505esac
15506val="$t_gdbm"
15507set i_gdbm
15508eval $setvar
15509
15510echo " "
15511echo "Looking for extensions..." >&4
15512: If we are using the old config.sh, known_extensions may contain
15513: old or inaccurate or duplicate values.
15514known_extensions=''
15515nonxs_extensions=''
15516: We do not use find because it might not be available.
15517: We do not just use MANIFEST because the user may have dropped
15518: some additional extensions into the source tree and expect them
15519: to be built.
15520
15521: Function to recursively find available extensions, ignoring DynaLoader
15522: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15523find_extensions='
15524 for xxx in *; do
15525 case "$xxx" in
15526 DynaLoader|dynaload) ;;
15527 *)
15528 if $test -f $xxx/$xxx.xs; then
15529 known_extensions="$known_extensions $1$xxx";
15530 elif $test -f $xxx/Makefile.PL; then
15531 nonxs_extensions="$nonxs_extensions $1$xxx";
15532 else
15533 if $test -d $xxx -a $# -lt 10; then
15534 set $1$xxx/ $*;
15535 cd $xxx;
15536 eval $find_extensions;
15537 cd ..;
15538 shift;
15539 fi;
15540 fi
15541 ;;
15542 esac;
15543 done'
15544tdir=`pwd`
15545cd $rsrc/ext
15546set X
15547shift
15548eval $find_extensions
15549set X $nonxs_extensions
15550shift
15551nonxs_extensions="$*"
15552set X $known_extensions
15553shift
15554known_extensions="$*"
15555cd $tdir
15556
15557: Now see which are supported on this system.
15558avail_ext=''
15559for xxx in $known_extensions ; do
15560 case "$xxx" in
15561 DB_File|db_file)
15562 case "$i_db" in
15563 $define) avail_ext="$avail_ext $xxx" ;;
15564 esac
15565 ;;
15566 GDBM_File|gdbm_fil)
15567 case "$i_gdbm" in
15568 $define) avail_ext="$avail_ext $xxx" ;;
15569 esac
15570 ;;
15571 NDBM_File|ndbm_fil)
15572 case "$i_ndbm" in
15573 $define)
15574 case "$osname-$use64bitint" in
15575 hpux-define)
15576 case "$libs" in
15577 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15578 esac
15579 ;;
15580 *) avail_ext="$avail_ext $xxx" ;;
15581 esac
15582 ;;
15583 esac
15584 ;;
15585 ODBM_File|odbm_fil)
15586 case "${i_dbm}${i_rpcsvcdbm}" in
15587 *"${define}"*)
15588 case "$osname-$use64bitint" in
15589 hpux-define)
15590 case "$libs" in
15591 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15592 esac
15593 ;;
15594 *) avail_ext="$avail_ext $xxx" ;;
15595 esac
15596 ;;
15597 esac
15598 ;;
15599 POSIX|posix)
15600 case "$useposix" in
15601 true|define|y) avail_ext="$avail_ext $xxx" ;;
15602 esac
15603 ;;
15604 Opcode|opcode)
15605 case "$useopcode" in
15606 true|define|y) avail_ext="$avail_ext $xxx" ;;
15607 esac
15608 ;;
15609 Socket|socket)
15610 case "$d_socket" in
15611 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15612 esac
15613 ;;
15614 Sys/Syslog|sys/syslog)
15615 : XXX syslog requires socket
15616 case "$d_socket" in
15617 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15618 esac
15619 ;;
15620 Thread|thread)
15621 case "$usethreads" in
15622 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15623 esac
15624 ;;
15625 IPC/SysV|ipc/sysv)
15626 : XXX Do we need a useipcsysv variable here
15627 case "${d_msg}${d_sem}${d_shm}" in
15628 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15629 esac
15630 ;;
15631 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
15632 ;;
15633 esac
b4eb6b3d 15634done
5f80c64f 15635
b4eb6b3d
JH
15636set X $avail_ext
15637shift
15638avail_ext="$*"
5f80c64f 15639
b4eb6b3d
JH
15640: Now see which nonxs extensions are supported on this system.
15641: For now assume all are.
15642nonxs_ext=''
15643for xxx in $nonxs_extensions ; do
15644 case "$xxx" in
15645 *) nonxs_ext="$nonxs_ext $xxx"
15646 ;;
15647 esac
15648done
5f80c64f 15649
b4eb6b3d
JH
15650set X $nonxs_ext
15651shift
15652nonxs_ext="$*"
15653
15654case $usedl in
15655$define)
15656 $cat <<EOM
15657A number of extensions are supplied with $package. You may choose to
15658compile these extensions for dynamic loading (the default), compile
15659them into the $package executable (static loading), or not include
15660them at all. Answer "none" to include no extensions.
15661Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
15662
15663EOM
b4eb6b3d
JH
15664 case "$dynamic_ext" in
15665 '') dflt="$avail_ext" ;;
15666 *) dflt="$dynamic_ext"
15667 # Perhaps we are reusing an old out-of-date config.sh.
15668 case "$hint" in
15669 previous)
15670 if test X"$dynamic_ext" != X"$avail_ext"; then
15671 $cat <<EOM
15672NOTICE: Your previous config.sh list may be incorrect.
15673The extensions now available to you are
15674 ${avail_ext}
15675but the default list from your previous config.sh is
15676 ${dynamic_ext}
9c839522 15677
b4eb6b3d
JH
15678EOM
15679 fi
9c839522
PM
15680 ;;
15681 esac
b4eb6b3d
JH
15682 ;;
15683 esac
5f80c64f 15684 case "$dflt" in
b4eb6b3d
JH
15685 '') dflt=none;;
15686 esac
15687 rp="What extensions do you wish to load dynamically?"
15688 . ./myread
15689 case "$ans" in
15690 none) dynamic_ext=' ' ;;
15691 *) dynamic_ext="$ans" ;;
5f80c64f 15692 esac
5f80c64f 15693
b4eb6b3d
JH
15694 case "$static_ext" in
15695 '')
15696 : Exclude those already listed in dynamic linking
15697 dflt=''
15698 for xxx in $avail_ext; do
15699 case " $dynamic_ext " in
15700 *" $xxx "*) ;;
15701 *) dflt="$dflt $xxx" ;;
15702 esac
15703 done
15704 set X $dflt
15705 shift
15706 dflt="$*"
15707 ;;
15708 *) dflt="$static_ext"
15709 ;;
15710 esac
9c839522 15711
b4eb6b3d
JH
15712 case "$dflt" in
15713 '') dflt=none;;
15714 esac
15715 rp="What extensions do you wish to load statically?"
15716 . ./myread
15717 case "$ans" in
15718 none) static_ext=' ' ;;
15719 *) static_ext="$ans" ;;
15720 esac
15721 ;;
15722*)
15723 $cat <<EOM
15724A number of extensions are supplied with $package. Answer "none"
15725to include no extensions.
15726Note that DynaLoader is always built and need not be mentioned here.
9c839522 15727
b4eb6b3d
JH
15728EOM
15729 case "$static_ext" in
15730 '') dflt="$avail_ext" ;;
15731 *) dflt="$static_ext"
15732 # Perhaps we are reusing an old out-of-date config.sh.
15733 case "$hint" in
15734 previous)
15735 if test X"$static_ext" != X"$avail_ext"; then
15736 $cat <<EOM
15737NOTICE: Your previous config.sh list may be incorrect.
15738The extensions now available to you are
15739 ${avail_ext}
15740but the default list from your previous config.sh is
15741 ${static_ext}
5f80c64f
JH
15742
15743EOM
b4eb6b3d
JH
15744 fi
15745 ;;
15746 esac
15747 ;;
15748 esac
15749 : Exclude those that are not xs extensions
15750 case "$dflt" in
15751 '') dflt=none;;
15752 esac
15753 rp="What extensions do you wish to include?"
15754 . ./myread
15755 case "$ans" in
15756 none) static_ext=' ' ;;
15757 *) static_ext="$ans" ;;
15758 esac
15759 ;;
5f80c64f
JH
15760esac
15761
b4eb6b3d
JH
15762set X $dynamic_ext $static_ext $nonxs_ext
15763shift
15764extensions="$*"
15765
9c839522
PM
15766: Remove libraries needed only for extensions
15767: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
15768: The exception is SunOS 4.x, which needs them.
15769case "${osname}X${osvers}" in
15770sunos*X4*)
15771 perllibs="$libs"
15772 ;;
15773*) case "$usedl" in
15774 $define|true|[yY]*)
15775 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15776 shift
15777 perllibs="$*"
15778 ;;
15779 *) perllibs="$libs"
15780 ;;
15781 esac
15782 ;;
9c839522 15783esac
5f80c64f
JH
15784
15785: Remove build directory name from cppstdin so it can be used from
15786: either the present location or the final installed location.
15787echo " "
15788: Get out of the UU directory to get correct path name.
15789cd ..
15790case "$cppstdin" in
15791`pwd`/cppstdin)
15792 echo "Stripping down cppstdin path name"
15793 cppstdin=cppstdin
15794 ;;
15795esac
15796cd UU
15797
15798: end of configuration questions
15799echo " "
15800echo "End of configuration questions."
15801echo " "
15802
15803: back to where it started
15804if test -d ../UU; then
15805 cd ..
15806fi
15807
15808: configuration may be patched via a 'config.over' file
15809if $test -f config.over; then
15810 echo " "
15811 dflt=y
15812 rp='I see a config.over file. Do you wish to load it?'
15813 . UU/myread
15814 case "$ans" in
15815 n*) echo "OK, I'll ignore it.";;
15816 *) . ./config.over
15817 echo "Configuration override changes have been loaded."
15818 ;;
15819 esac
15820fi
15821
15822: in case they want portability, strip down executable paths
15823case "$d_portable" in
15824"$define")
15825 echo " "
15826 echo "Stripping down executable paths..." >&4
15827 for file in $loclist $trylist; do
534ac15a
JH
15828 eval temp=\$$file
15829 eval $file=`basename $temp`
5f80c64f
JH
15830 done
15831 ;;
15832esac
15833
15834: create config.sh file
15835echo " "
15836echo "Creating config.sh..." >&4
15837$spitshell <<EOT >config.sh
15838$startsh
15839#
15840# This file was produced by running the Configure script. It holds all the
15841# definitions figured out by Configure. Should you modify one of these values,
15842# do not forget to propagate your changes by running "Configure -der". You may
15843# instead choose to run each of the .SH files by yourself, or "Configure -S".
15844#
15845
15846# Package name : $package
15847# Source directory : $src
15848# Configuration time: $cf_time
15849# Configured by : $cf_by
15850# Target system : $myuname
15851
15852Author='$Author'
15853Date='$Date'
15854Header='$Header'
15855Id='$Id'
15856Locker='$Locker'
15857Log='$Log'
15858Mcc='$Mcc'
15859RCSfile='$RCSfile'
15860Revision='$Revision'
15861Source='$Source'
15862State='$State'
15863_a='$_a'
15864_exe='$_exe'
15865_o='$_o'
b4eb6b3d
JH
15866afs='$afs'
15867alignbytes='$alignbytes'
15868ansi2knr='$ansi2knr'
15869aphostname='$aphostname'
15870api_revision='$api_revision'
15871api_subversion='$api_subversion'
15872api_version='$api_version'
15873api_versionstring='$api_versionstring'
5f80c64f 15874ar='$ar'
b4eb6b3d
JH
15875archlib='$archlib'
15876archlibexp='$archlibexp'
15877archname64='$archname64'
15878archname='$archname'
5f80c64f
JH
15879archobjs='$archobjs'
15880awk='$awk'
b4eb6b3d 15881baserev='$baserev'
5f80c64f 15882bash='$bash'
b4eb6b3d
JH
15883bin='$bin'
15884bincompat5005='$bincompat5005'
15885binexp='$binexp'
5f80c64f
JH
15886bison='$bison'
15887byacc='$byacc'
b4eb6b3d 15888byteorder='$byteorder'
5f80c64f 15889c='$c'
b4eb6b3d 15890castflags='$castflags'
5f80c64f
JH
15891cat='$cat'
15892cc='$cc'
15893cccdlflags='$cccdlflags'
15894ccdlflags='$ccdlflags'
15895ccflags='$ccflags'
b4eb6b3d 15896ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 15897ccname='$ccname'
b4eb6b3d 15898ccsymbols='$ccsymbols'
6b356c8e 15899ccversion='$ccversion'
5f80c64f 15900cf_by='$cf_by'
b4eb6b3d 15901cf_email='$cf_email'
5f80c64f 15902cf_time='$cf_time'
b4eb6b3d 15903charsize='$charsize'
5f80c64f
JH
15904chgrp='$chgrp'
15905chmod='$chmod'
15906chown='$chown'
b4eb6b3d 15907clocktype='$clocktype'
5f80c64f
JH
15908comm='$comm'
15909compress='$compress'
15910contains='$contains'
15911cp='$cp'
15912cpio='$cpio'
15913cpp='$cpp'
b4eb6b3d
JH
15914cpp_stuff='$cpp_stuff'
15915cppccsymbols='$cppccsymbols'
5f80c64f
JH
15916cppflags='$cppflags'
15917cpplast='$cpplast'
15918cppminus='$cppminus'
15919cpprun='$cpprun'
15920cppstdin='$cppstdin'
b4eb6b3d
JH
15921cppsymbols='$cppsymbols'
15922crosscompile='$crosscompile'
15923cryptlib='$cryptlib'
5f80c64f 15924csh='$csh'
b4eb6b3d
JH
15925d_Gconvert='$d_Gconvert'
15926d_PRIEUldbl='$d_PRIEUldbl'
15927d_PRIFUldbl='$d_PRIFUldbl'
15928d_PRIGUldbl='$d_PRIGUldbl'
15929d_PRIXU64='$d_PRIXU64'
15930d_PRId64='$d_PRId64'
15931d_PRIeldbl='$d_PRIeldbl'
15932d_PRIfldbl='$d_PRIfldbl'
15933d_PRIgldbl='$d_PRIgldbl'
15934d_PRIi64='$d_PRIi64'
15935d_PRIo64='$d_PRIo64'
15936d_PRIu64='$d_PRIu64'
15937d_PRIx64='$d_PRIx64'
15938d_SCNfldbl='$d_SCNfldbl'
74cac757 15939d__fwalk='$d__fwalk'
b4eb6b3d
JH
15940d_access='$d_access'
15941d_accessx='$d_accessx'
15942d_alarm='$d_alarm'
15943d_archlib='$d_archlib'
15944d_atolf='$d_atolf'
15945d_atoll='$d_atoll'
15946d_attribut='$d_attribut'
15947d_bcmp='$d_bcmp'
15948d_bcopy='$d_bcopy'
15949d_bincompat5005='$d_bincompat5005'
5f80c64f 15950d_bsd='$d_bsd'
b4eb6b3d
JH
15951d_bsdgetpgrp='$d_bsdgetpgrp'
15952d_bsdsetpgrp='$d_bsdsetpgrp'
15953d_bzero='$d_bzero'
15954d_casti32='$d_casti32'
15955d_castneg='$d_castneg'
15956d_charvspr='$d_charvspr'
15957d_chown='$d_chown'
15958d_chroot='$d_chroot'
15959d_chsize='$d_chsize'
15960d_closedir='$d_closedir'
15961d_const='$d_const'
15962d_crypt='$d_crypt'
15963d_csh='$d_csh'
15964d_cuserid='$d_cuserid'
15965d_dbl_dig='$d_dbl_dig'
15966d_difftime='$d_difftime'
15967d_dirnamlen='$d_dirnamlen'
15968d_dlerror='$d_dlerror'
5f80c64f 15969d_dlopen='$d_dlopen'
b4eb6b3d
JH
15970d_dlsymun='$d_dlsymun'
15971d_dosuid='$d_dosuid'
15972d_drand48proto='$d_drand48proto'
15973d_dup2='$d_dup2'
15974d_eaccess='$d_eaccess'
15975d_endgrent='$d_endgrent'
15976d_endhent='$d_endhent'
15977d_endnent='$d_endnent'
15978d_endpent='$d_endpent'
15979d_endpwent='$d_endpwent'
15980d_endsent='$d_endsent'
15981d_eofnblk='$d_eofnblk'
5f80c64f 15982d_eunice='$d_eunice'
b4eb6b3d
JH
15983d_fchmod='$d_fchmod'
15984d_fchown='$d_fchown'
15985d_fcntl='$d_fcntl'
9d9004a9 15986d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
15987d_fd_macros='$d_fd_macros'
15988d_fd_set='$d_fd_set'
15989d_fds_bits='$d_fds_bits'
15990d_fgetpos='$d_fgetpos'
15991d_flexfnam='$d_flexfnam'
15992d_flock='$d_flock'
15993d_fork='$d_fork'
15994d_fpathconf='$d_fpathconf'
15995d_fpos64_t='$d_fpos64_t'
15996d_frexpl='$d_frexpl'
15997d_fs_data_s='$d_fs_data_s'
15998d_fseeko='$d_fseeko'
15999d_fsetpos='$d_fsetpos'
16000d_fstatfs='$d_fstatfs'
16001d_fstatvfs='$d_fstatvfs'
411ab01c 16002d_fsync='$d_fsync'
b4eb6b3d
JH
16003d_ftello='$d_ftello'
16004d_ftime='$d_ftime'
16005d_getcwd='$d_getcwd'
16006d_getespwnam='$d_getespwnam'
16007d_getfsstat='$d_getfsstat'
16008d_getgrent='$d_getgrent'
16009d_getgrps='$d_getgrps'
16010d_gethbyaddr='$d_gethbyaddr'
16011d_gethbyname='$d_gethbyname'
16012d_gethent='$d_gethent'
16013d_gethname='$d_gethname'
16014d_gethostprotos='$d_gethostprotos'
16015d_getlogin='$d_getlogin'
16016d_getmnt='$d_getmnt'
16017d_getmntent='$d_getmntent'
16018d_getnbyaddr='$d_getnbyaddr'
16019d_getnbyname='$d_getnbyname'
16020d_getnent='$d_getnent'
16021d_getnetprotos='$d_getnetprotos'
0c0643d0 16022d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16023d_getpbyname='$d_getpbyname'
16024d_getpbynumber='$d_getpbynumber'
16025d_getpent='$d_getpent'
16026d_getpgid='$d_getpgid'
16027d_getpgrp2='$d_getpgrp2'
16028d_getpgrp='$d_getpgrp'
16029d_getppid='$d_getppid'
16030d_getprior='$d_getprior'
16031d_getprotoprotos='$d_getprotoprotos'
16032d_getprpwnam='$d_getprpwnam'
16033d_getpwent='$d_getpwent'
16034d_getsbyname='$d_getsbyname'
16035d_getsbyport='$d_getsbyport'
16036d_getsent='$d_getsent'
16037d_getservprotos='$d_getservprotos'
16038d_getspnam='$d_getspnam'
16039d_gettimeod='$d_gettimeod'
5f80c64f 16040d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16041d_grpasswd='$d_grpasswd'
16042d_hasmntopt='$d_hasmntopt'
16043d_htonl='$d_htonl'
16044d_iconv='$d_iconv'
16045d_index='$d_index'
16046d_inetaton='$d_inetaton'
16047d_int64_t='$d_int64_t'
16048d_isascii='$d_isascii'
16049d_isnan='$d_isnan'
16050d_isnanl='$d_isnanl'
16051d_killpg='$d_killpg'
16052d_lchown='$d_lchown'
16053d_ldbl_dig='$d_ldbl_dig'
16054d_link='$d_link'
16055d_locconv='$d_locconv'
16056d_lockf='$d_lockf'
16057d_longdbl='$d_longdbl'
16058d_longlong='$d_longlong'
16059d_lseekproto='$d_lseekproto'
16060d_lstat='$d_lstat'
16061d_madvise='$d_madvise'
16062d_mblen='$d_mblen'
16063d_mbstowcs='$d_mbstowcs'
16064d_mbtowc='$d_mbtowc'
16065d_memchr='$d_memchr'
16066d_memcmp='$d_memcmp'
16067d_memcpy='$d_memcpy'
16068d_memmove='$d_memmove'
16069d_memset='$d_memset'
16070d_mkdir='$d_mkdir'
16071d_mkdtemp='$d_mkdtemp'
16072d_mkfifo='$d_mkfifo'
16073d_mkstemp='$d_mkstemp'
16074d_mkstemps='$d_mkstemps'
16075d_mktime='$d_mktime'
16076d_mmap='$d_mmap'
16077d_modfl='$d_modfl'
16078d_mprotect='$d_mprotect'
16079d_msg='$d_msg'
16080d_msg_ctrunc='$d_msg_ctrunc'
16081d_msg_dontroute='$d_msg_dontroute'
16082d_msg_oob='$d_msg_oob'
16083d_msg_peek='$d_msg_peek'
16084d_msg_proxy='$d_msg_proxy'
16085d_msgctl='$d_msgctl'
16086d_msgget='$d_msgget'
16087d_msgrcv='$d_msgrcv'
16088d_msgsnd='$d_msgsnd'
16089d_msync='$d_msync'
16090d_munmap='$d_munmap'
16091d_mymalloc='$d_mymalloc'
16092d_nice='$d_nice'
16093d_nv_preserves_uv='$d_nv_preserves_uv'
16094d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16095d_off64_t='$d_off64_t'
16096d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16097d_oldpthreads='$d_oldpthreads'
16098d_oldsock='$d_oldsock'
16099d_open3='$d_open3'
16100d_pathconf='$d_pathconf'
16101d_pause='$d_pause'
16102d_perl_otherlibdirs='$d_perl_otherlibdirs'
16103d_phostname='$d_phostname'
16104d_pipe='$d_pipe'
16105d_poll='$d_poll'
5f80c64f 16106d_portable='$d_portable'
b4eb6b3d
JH
16107d_pthread_yield='$d_pthread_yield'
16108d_pwage='$d_pwage'
16109d_pwchange='$d_pwchange'
16110d_pwclass='$d_pwclass'
16111d_pwcomment='$d_pwcomment'
16112d_pwexpire='$d_pwexpire'
16113d_pwgecos='$d_pwgecos'
16114d_pwpasswd='$d_pwpasswd'
16115d_pwquota='$d_pwquota'
16116d_qgcvt='$d_qgcvt'
16117d_quad='$d_quad'
16118d_readdir='$d_readdir'
16119d_readlink='$d_readlink'
16120d_rename='$d_rename'
16121d_rewinddir='$d_rewinddir'
16122d_rmdir='$d_rmdir'
16123d_safebcpy='$d_safebcpy'
16124d_safemcpy='$d_safemcpy'
16125d_sanemcmp='$d_sanemcmp'
ef9f17be 16126d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16127d_sched_yield='$d_sched_yield'
16128d_scm_rights='$d_scm_rights'
16129d_seekdir='$d_seekdir'
16130d_select='$d_select'
16131d_sem='$d_sem'
16132d_semctl='$d_semctl'
16133d_semctl_semid_ds='$d_semctl_semid_ds'
16134d_semctl_semun='$d_semctl_semun'
16135d_semget='$d_semget'
16136d_semop='$d_semop'
16137d_setegid='$d_setegid'
16138d_seteuid='$d_seteuid'
16139d_setgrent='$d_setgrent'
16140d_setgrps='$d_setgrps'
16141d_sethent='$d_sethent'
16142d_setlinebuf='$d_setlinebuf'
16143d_setlocale='$d_setlocale'
16144d_setnent='$d_setnent'
16145d_setpent='$d_setpent'
16146d_setpgid='$d_setpgid'
16147d_setpgrp2='$d_setpgrp2'
16148d_setpgrp='$d_setpgrp'
16149d_setprior='$d_setprior'
16150d_setproctitle='$d_setproctitle'
16151d_setpwent='$d_setpwent'
16152d_setregid='$d_setregid'
16153d_setresgid='$d_setresgid'
16154d_setresuid='$d_setresuid'
16155d_setreuid='$d_setreuid'
16156d_setrgid='$d_setrgid'
16157d_setruid='$d_setruid'
16158d_setsent='$d_setsent'
16159d_setsid='$d_setsid'
16160d_setvbuf='$d_setvbuf'
16161d_sfio='$d_sfio'
16162d_shm='$d_shm'
16163d_shmat='$d_shmat'
16164d_shmatprototype='$d_shmatprototype'
16165d_shmctl='$d_shmctl'
16166d_shmdt='$d_shmdt'
16167d_shmget='$d_shmget'
16168d_sigaction='$d_sigaction'
983dbef6 16169d_sigprocmask='$d_sigprocmask'
b4eb6b3d
JH
16170d_sigsetjmp='$d_sigsetjmp'
16171d_socket='$d_socket'
16172d_socklen_t='$d_socklen_t'
16173d_sockpair='$d_sockpair'
16174d_socks5_init='$d_socks5_init'
16175d_sqrtl='$d_sqrtl'
16176d_statblks='$d_statblks'
16177d_statfs_f_flags='$d_statfs_f_flags'
16178d_statfs_s='$d_statfs_s'
16179d_statvfs='$d_statvfs'
16180d_stdio_cnt_lval='$d_stdio_cnt_lval'
16181d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
16182d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16183d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
16184d_stdio_stream_array='$d_stdio_stream_array'
16185d_stdiobase='$d_stdiobase'
16186d_stdstdio='$d_stdstdio'
16187d_strchr='$d_strchr'
16188d_strcoll='$d_strcoll'
16189d_strctcpy='$d_strctcpy'
16190d_strerrm='$d_strerrm'
16191d_strerror='$d_strerror'
16192d_strtod='$d_strtod'
16193d_strtol='$d_strtol'
16194d_strtold='$d_strtold'
16195d_strtoll='$d_strtoll'
28e5dec8 16196d_strtoq='$d_strtoq'
b4eb6b3d
JH
16197d_strtoul='$d_strtoul'
16198d_strtoull='$d_strtoull'
16199d_strtouq='$d_strtouq'
16200d_strxfrm='$d_strxfrm'
16201d_suidsafe='$d_suidsafe'
16202d_symlink='$d_symlink'
16203d_syscall='$d_syscall'
16204d_sysconf='$d_sysconf'
16205d_sysernlst='$d_sysernlst'
16206d_syserrlst='$d_syserrlst'
16207d_system='$d_system'
16208d_tcgetpgrp='$d_tcgetpgrp'
16209d_tcsetpgrp='$d_tcsetpgrp'
16210d_telldir='$d_telldir'
16211d_telldirproto='$d_telldirproto'
16212d_time='$d_time'
16213d_times='$d_times'
16214d_truncate='$d_truncate'
16215d_tzname='$d_tzname'
16216d_umask='$d_umask'
16217d_uname='$d_uname'
16218d_union_semun='$d_union_semun'
16219d_ustat='$d_ustat'
16220d_vendorarch='$d_vendorarch'
16221d_vendorbin='$d_vendorbin'
16222d_vendorlib='$d_vendorlib'
16223d_vfork='$d_vfork'
16224d_void_closedir='$d_void_closedir'
16225d_voidsig='$d_voidsig'
16226d_voidtty='$d_voidtty'
16227d_volatile='$d_volatile'
16228d_vprintf='$d_vprintf'
16229d_wait4='$d_wait4'
16230d_waitpid='$d_waitpid'
16231d_wcstombs='$d_wcstombs'
16232d_wctomb='$d_wctomb'
5f80c64f
JH
16233d_xenix='$d_xenix'
16234date='$date'
b4eb6b3d
JH
16235db_hashtype='$db_hashtype'
16236db_prefixtype='$db_prefixtype'
16237defvoidused='$defvoidused'
16238direntrytype='$direntrytype'
16239dlext='$dlext'
5f80c64f 16240dlsrc='$dlsrc'
b4eb6b3d
JH
16241doublesize='$doublesize'
16242drand01='$drand01'
16243dynamic_ext='$dynamic_ext'
16244eagain='$eagain'
16245ebcdic='$ebcdic'
5f80c64f
JH
16246echo='$echo'
16247egrep='$egrep'
16248emacs='$emacs'
16249eunicefix='$eunicefix'
16250exe_ext='$exe_ext'
16251expr='$expr'
b4eb6b3d
JH
16252extensions='$extensions'
16253fflushNULL='$fflushNULL'
16254fflushall='$fflushall'
5f80c64f
JH
16255find='$find'
16256firstmakefile='$firstmakefile'
16257flex='$flex'
b4eb6b3d
JH
16258fpossize='$fpossize'
16259fpostype='$fpostype'
16260freetype='$freetype'
16261full_ar='$full_ar'
16262full_csh='$full_csh'
16263full_sed='$full_sed'
5b463ca7 16264gccosandvers='$gccosandvers'
5f80c64f 16265gccversion='$gccversion'
b4eb6b3d
JH
16266gidformat='$gidformat'
16267gidsign='$gidsign'
16268gidsize='$gidsize'
16269gidtype='$gidtype'
5f80c64f
JH
16270glibpth='$glibpth'
16271grep='$grep'
b4eb6b3d
JH
16272groupcat='$groupcat'
16273groupstype='$groupstype'
5f80c64f 16274gzip='$gzip'
b4eb6b3d
JH
16275h_fcntl='$h_fcntl'
16276h_sysfile='$h_sysfile'
5f80c64f 16277hint='$hint'
b4eb6b3d
JH
16278hostcat='$hostcat'
16279i16size='$i16size'
16280i16type='$i16type'
16281i32size='$i32size'
16282i32type='$i32type'
16283i64size='$i64size'
16284i64type='$i64type'
16285i8size='$i8size'
16286i8type='$i8type'
16287i_arpainet='$i_arpainet'
16288i_bsdioctl='$i_bsdioctl'
16289i_db='$i_db'
16290i_dbm='$i_dbm'
16291i_dirent='$i_dirent'
5f80c64f 16292i_dld='$i_dld'
b4eb6b3d
JH
16293i_dlfcn='$i_dlfcn'
16294i_fcntl='$i_fcntl'
16295i_float='$i_float'
16296i_gdbm='$i_gdbm'
16297i_grp='$i_grp'
16298i_iconv='$i_iconv'
16299i_ieeefp='$i_ieeefp'
16300i_inttypes='$i_inttypes'
16301i_libutil='$i_libutil'
16302i_limits='$i_limits'
16303i_locale='$i_locale'
16304i_machcthr='$i_machcthr'
16305i_malloc='$i_malloc'
16306i_math='$i_math'
16307i_memory='$i_memory'
16308i_mntent='$i_mntent'
16309i_ndbm='$i_ndbm'
16310i_netdb='$i_netdb'
16311i_neterrno='$i_neterrno'
16312i_netinettcp='$i_netinettcp'
16313i_niin='$i_niin'
16314i_poll='$i_poll'
16315i_prot='$i_prot'
16316i_pthread='$i_pthread'
16317i_pwd='$i_pwd'
16318i_rpcsvcdbm='$i_rpcsvcdbm'
16319i_sfio='$i_sfio'
16320i_sgtty='$i_sgtty'
16321i_shadow='$i_shadow'
16322i_socks='$i_socks'
16323i_stdarg='$i_stdarg'
16324i_stddef='$i_stddef'
16325i_stdlib='$i_stdlib'
16326i_string='$i_string'
16327i_sunmath='$i_sunmath'
16328i_sysaccess='$i_sysaccess'
16329i_sysdir='$i_sysdir'
16330i_sysfile='$i_sysfile'
16331i_sysfilio='$i_sysfilio'
16332i_sysin='$i_sysin'
16333i_sysioctl='$i_sysioctl'
16334i_syslog='$i_syslog'
16335i_sysmman='$i_sysmman'
16336i_sysmode='$i_sysmode'
16337i_sysmount='$i_sysmount'
16338i_sysndir='$i_sysndir'
16339i_sysparam='$i_sysparam'
16340i_sysresrc='$i_sysresrc'
16341i_syssecrt='$i_syssecrt'
16342i_sysselct='$i_sysselct'
16343i_syssockio='$i_syssockio'
16344i_sysstat='$i_sysstat'
16345i_sysstatfs='$i_sysstatfs'
16346i_sysstatvfs='$i_sysstatvfs'
16347i_systime='$i_systime'
16348i_systimek='$i_systimek'
16349i_systimes='$i_systimes'
16350i_systypes='$i_systypes'
16351i_sysuio='$i_sysuio'
16352i_sysun='$i_sysun'
16353i_sysutsname='$i_sysutsname'
16354i_sysvfs='$i_sysvfs'
16355i_syswait='$i_syswait'
16356i_termio='$i_termio'
16357i_termios='$i_termios'
16358i_time='$i_time'
16359i_unistd='$i_unistd'
16360i_ustat='$i_ustat'
16361i_utime='$i_utime'
16362i_values='$i_values'
16363i_varargs='$i_varargs'
16364i_varhdr='$i_varhdr'
16365i_vfork='$i_vfork'
5f80c64f 16366ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
16367inc_version_list='$inc_version_list'
16368inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
16369incpath='$incpath'
16370inews='$inews'
b4eb6b3d
JH
16371installarchlib='$installarchlib'
16372installbin='$installbin'
16373installman1dir='$installman1dir'
16374installman3dir='$installman3dir'
16375installprefix='$installprefix'
16376installprefixexp='$installprefixexp'
16377installprivlib='$installprivlib'
16378installscript='$installscript'
16379installsitearch='$installsitearch'
16380installsitebin='$installsitebin'
16381installsitelib='$installsitelib'
16382installstyle='$installstyle'
16383installusrbinperl='$installusrbinperl'
16384installvendorarch='$installvendorarch'
16385installvendorbin='$installvendorbin'
16386installvendorlib='$installvendorlib'
16387intsize='$intsize'
4b661809 16388issymlink='$issymlink'
b4eb6b3d
JH
16389ivdformat='$ivdformat'
16390ivsize='$ivsize'
16391ivtype='$ivtype'
16392known_extensions='$known_extensions'
5f80c64f 16393ksh='$ksh'
5f80c64f
JH
16394ld='$ld'
16395lddlflags='$lddlflags'
16396ldflags='$ldflags'
b4eb6b3d
JH
16397ldflags_uselargefiles='$ldflags_uselargefiles'
16398ldlibpthname='$ldlibpthname'
5f80c64f
JH
16399less='$less'
16400lib_ext='$lib_ext'
16401libc='$libc'
b4eb6b3d 16402libperl='$libperl'
5f80c64f
JH
16403libpth='$libpth'
16404libs='$libs'
43999f95
JH
16405libsdirs='$libsdirs'
16406libsfiles='$libsfiles'
16407libsfound='$libsfound'
13b3f787 16408libspath='$libspath'
5f80c64f 16409libswanted='$libswanted'
b4eb6b3d 16410libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
16411line='$line'
16412lint='$lint'
16413lkflags='$lkflags'
16414ln='$ln'
16415lns='$lns'
16416locincpth='$locincpth'
16417loclibpth='$loclibpth'
b4eb6b3d
JH
16418longdblsize='$longdblsize'
16419longlongsize='$longlongsize'
16420longsize='$longsize'
5f80c64f
JH
16421lp='$lp'
16422lpr='$lpr'
16423ls='$ls'
b4eb6b3d
JH
16424lseeksize='$lseeksize'
16425lseektype='$lseektype'
5f80c64f
JH
16426mail='$mail'
16427mailx='$mailx'
16428make='$make'
16429make_set_make='$make_set_make'
b4eb6b3d
JH
16430mallocobj='$mallocobj'
16431mallocsrc='$mallocsrc'
16432malloctype='$malloctype'
16433man1dir='$man1dir'
16434man1direxp='$man1direxp'
16435man1ext='$man1ext'
16436man3dir='$man3dir'
16437man3direxp='$man3direxp'
16438man3ext='$man3ext'
5f80c64f
JH
16439mips_type='$mips_type'
16440mkdir='$mkdir'
b4eb6b3d
JH
16441mmaptype='$mmaptype'
16442modetype='$modetype'
5f80c64f 16443more='$more'
b4eb6b3d 16444multiarch='$multiarch'
5f80c64f 16445mv='$mv'
b4eb6b3d
JH
16446myarchname='$myarchname'
16447mydomain='$mydomain'
16448myhostname='$myhostname'
5f80c64f
JH
16449myuname='$myuname'
16450n='$n'
2cc61e15 16451need_va_copy='$need_va_copy'
b4eb6b3d
JH
16452netdb_hlen_type='$netdb_hlen_type'
16453netdb_host_type='$netdb_host_type'
16454netdb_name_type='$netdb_name_type'
16455netdb_net_type='$netdb_net_type'
5f80c64f
JH
16456nm='$nm'
16457nm_opt='$nm_opt'
16458nm_so_opt='$nm_so_opt'
b4eb6b3d 16459nonxs_ext='$nonxs_ext'
5f80c64f 16460nroff='$nroff'
b4eb6b3d
JH
16461nvEUformat='$nvEUformat'
16462nvFUformat='$nvFUformat'
16463nvGUformat='$nvGUformat'
16464nveformat='$nveformat'
16465nvfformat='$nvfformat'
16466nvgformat='$nvgformat'
16467nvsize='$nvsize'
16468nvtype='$nvtype'
16469o_nonblock='$o_nonblock'
5f80c64f 16470obj_ext='$obj_ext'
b4eb6b3d 16471old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 16472optimize='$optimize'
b4eb6b3d 16473orderlib='$orderlib'
5f80c64f
JH
16474osname='$osname'
16475osvers='$osvers'
b4eb6b3d 16476otherlibdirs='$otherlibdirs'
5f80c64f 16477package='$package'
b4eb6b3d
JH
16478pager='$pager'
16479passcat='$passcat'
16480patchlevel='$patchlevel'
5f80c64f 16481path_sep='$path_sep'
b4eb6b3d 16482perl5='$perl5'
5f80c64f 16483perl='$perl'
b4eb6b3d 16484perladmin='$perladmin'
9c839522 16485perllibs='$perllibs'
b4eb6b3d 16486perlpath='$perlpath'
5f80c64f 16487pg='$pg'
b4eb6b3d
JH
16488phostname='$phostname'
16489pidtype='$pidtype'
5f80c64f 16490plibpth='$plibpth'
b4eb6b3d 16491pm_apiversion='$pm_apiversion'
5f80c64f
JH
16492pmake='$pmake'
16493pr='$pr'
b4eb6b3d
JH
16494prefix='$prefix'
16495prefixexp='$prefixexp'
16496privlib='$privlib'
16497privlibexp='$privlibexp'
16498prototype='$prototype'
16499ptrsize='$ptrsize'
16500quadkind='$quadkind'
16501quadtype='$quadtype'
16502randbits='$randbits'
16503randfunc='$randfunc'
16504randseedtype='$randseedtype'
16505ranlib='$ranlib'
16506rd_nodata='$rd_nodata'
16507revision='$revision'
5f80c64f
JH
16508rm='$rm'
16509rmail='$rmail'
16510runnm='$runnm'
b4eb6b3d
JH
16511sPRIEUldbl='$sPRIEUldbl'
16512sPRIFUldbl='$sPRIFUldbl'
16513sPRIGUldbl='$sPRIGUldbl'
16514sPRIXU64='$sPRIXU64'
16515sPRId64='$sPRId64'
16516sPRIeldbl='$sPRIeldbl'
16517sPRIfldbl='$sPRIfldbl'
16518sPRIgldbl='$sPRIgldbl'
16519sPRIi64='$sPRIi64'
16520sPRIo64='$sPRIo64'
16521sPRIu64='$sPRIu64'
16522sPRIx64='$sPRIx64'
16523sSCNfldbl='$sSCNfldbl'
16524sched_yield='$sched_yield'
16525scriptdir='$scriptdir'
16526scriptdirexp='$scriptdirexp'
5f80c64f 16527sed='$sed'
b4eb6b3d
JH
16528seedfunc='$seedfunc'
16529selectminbits='$selectminbits'
16530selecttype='$selecttype'
5f80c64f
JH
16531sendmail='$sendmail'
16532sh='$sh'
16533shar='$shar'
16534sharpbang='$sharpbang'
b4eb6b3d
JH
16535shmattype='$shmattype'
16536shortsize='$shortsize'
16537shrpenv='$shrpenv'
5f80c64f 16538shsharp='$shsharp'
b4eb6b3d
JH
16539sig_count='$sig_count'
16540sig_name='$sig_name'
16541sig_name_init='$sig_name_init'
16542sig_num='$sig_num'
16543sig_num_init='$sig_num_init'
76d3c696 16544sig_size='$sig_size'
b4eb6b3d
JH
16545signal_t='$signal_t'
16546sitearch='$sitearch'
16547sitearchexp='$sitearchexp'
16548sitebin='$sitebin'
16549sitebinexp='$sitebinexp'
16550sitelib='$sitelib'
16551sitelib_stem='$sitelib_stem'
16552sitelibexp='$sitelibexp'
16553siteprefix='$siteprefix'
16554siteprefixexp='$siteprefixexp'
16555sizesize='$sizesize'
16556sizetype='$sizetype'
5f80c64f
JH
16557sleep='$sleep'
16558smail='$smail'
5f80c64f 16559so='$so'
b4eb6b3d
JH
16560sockethdr='$sockethdr'
16561socketlib='$socketlib'
16562socksizetype='$socksizetype'
5f80c64f
JH
16563sort='$sort'
16564spackage='$spackage'
16565spitshell='$spitshell'
5f80c64f 16566src='$src'
b4eb6b3d
JH
16567ssizetype='$ssizetype'
16568startperl='$startperl'
5f80c64f 16569startsh='$startsh'
b4eb6b3d
JH
16570static_ext='$static_ext'
16571stdchar='$stdchar'
16572stdio_base='$stdio_base'
16573stdio_bufsiz='$stdio_bufsiz'
16574stdio_cnt='$stdio_cnt'
16575stdio_filbuf='$stdio_filbuf'
16576stdio_ptr='$stdio_ptr'
16577stdio_stream_array='$stdio_stream_array'
16578strings='$strings'
5f80c64f 16579submit='$submit'
b4eb6b3d
JH
16580subversion='$subversion'
16581sysman='$sysman'
5f80c64f
JH
16582tail='$tail'
16583tar='$tar'
16584tbl='$tbl'
16585tee='$tee'
16586test='$test'
b4eb6b3d
JH
16587timeincl='$timeincl'
16588timetype='$timetype'
5f80c64f
JH
16589touch='$touch'
16590tr='$tr'
16591trnl='$trnl'
16592troff='$troff'
b4eb6b3d
JH
16593u16size='$u16size'
16594u16type='$u16type'
16595u32size='$u32size'
16596u32type='$u32type'
16597u64size='$u64size'
16598u64type='$u64type'
16599u8size='$u8size'
16600u8type='$u8type'
16601uidformat='$uidformat'
16602uidsign='$uidsign'
16603uidsize='$uidsize'
16604uidtype='$uidtype'
5f80c64f
JH
16605uname='$uname'
16606uniq='$uniq'
b4eb6b3d
JH
16607uquadtype='$uquadtype'
16608use5005threads='$use5005threads'
16609use64bitall='$use64bitall'
16610use64bitint='$use64bitint'
5f80c64f 16611usedl='$usedl'
b4eb6b3d
JH
16612useithreads='$useithreads'
16613uselargefiles='$uselargefiles'
16614uselongdouble='$uselongdouble'
16615usemorebits='$usemorebits'
16616usemultiplicity='$usemultiplicity'
16617usemymalloc='$usemymalloc'
5f80c64f 16618usenm='$usenm'
b4eb6b3d
JH
16619useopcode='$useopcode'
16620useperlio='$useperlio'
16621useposix='$useposix'
16622usesfio='$usesfio'
16623useshrplib='$useshrplib'
29209bc5 16624usesocks='$usesocks'
b4eb6b3d
JH
16625usethreads='$usethreads'
16626usevendorprefix='$usevendorprefix'
16627usevfork='$usevfork'
5f80c64f
JH
16628usrinc='$usrinc'
16629uuname='$uuname'
b4eb6b3d
JH
16630uvXUformat='$uvXUformat'
16631uvoformat='$uvoformat'
16632uvsize='$uvsize'
16633uvtype='$uvtype'
16634uvuformat='$uvuformat'
16635uvxformat='$uvxformat'
16636vendorarch='$vendorarch'
16637vendorarchexp='$vendorarchexp'
16638vendorbin='$vendorbin'
16639vendorbinexp='$vendorbinexp'
16640vendorlib='$vendorlib'
16641vendorlib_stem='$vendorlib_stem'
16642vendorlibexp='$vendorlibexp'
16643vendorprefix='$vendorprefix'
16644vendorprefixexp='$vendorprefixexp'
16645version='$version'
d56c5707 16646versiononly='$versiononly'
5f80c64f 16647vi='$vi'
b4eb6b3d 16648voidflags='$voidflags'
5f80c64f 16649xlibpth='$xlibpth'
b4eb6b3d 16650xs_apiversion='$xs_apiversion'
3659ebf1
JH
16651yacc='$yacc'
16652yaccflags='$yaccflags'
5f80c64f
JH
16653zcat='$zcat'
16654zip='$zip'
16655EOT
16656
16657: Add in command line options if available
16658$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16659
16660: add special variables
16661$test -f $src/patchlevel.h && \
d00b958f 16662awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 16663echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
16664
16665: propagate old symbols
16666if $test -f UU/config.sh; then
381aa1ff 16667 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 16668 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 16669 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
16670 set X `cat UU/oldsyms`
16671 shift
16672 case $# in
16673 0) ;;
16674 *)
16675 cat <<EOM
16676Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16677EOM
16678 echo "# Variables propagated from previous config.sh file." >>config.sh
16679 for sym in `cat UU/oldsyms`; do
16680 echo " Propagating $hint variable "'$'"$sym..."
16681 eval 'tmp="$'"${sym}"'"'
16682 echo "$tmp" | \
16683 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16684 done
16685 ;;
16686 esac
16687fi
16688
16689: Finish up by extracting the .SH files
16690case "$alldone" in
16691exit)
16692 $rm -rf UU
16693 echo "Done."
16694 exit 0
16695 ;;
16696cont)
16697 ;;
16698'')
16699 dflt=''
16700 nostick=true
16701 $cat <<EOM
16702
16703If you'd like to make any changes to the config.sh file before I begin
16704to configure things, do it as a shell escape now (e.g. !vi config.sh).
16705
16706EOM
16707 rp="Press return or use a shell escape to edit config.sh:"
16708 . UU/myread
16709 nostick=''
16710 case "$ans" in
16711 '') ;;
16712 *) : in case they cannot read
16713 sh 1>&4 -c "$ans";;
16714 esac
16715 ;;
16716esac
16717
16718: if this fails, just run all the .SH files by hand
16719. ./config.sh
16720
16721echo " "
16722exec 1>&4
16723. ./UU/extract
16724
16725if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16726 dflt=y
16727 case "$silent" in
16728 true) ;;
16729 *)
16730 $cat <<EOM
16731
16732Now you need to generate make dependencies by running "$make depend".
16733You might prefer to run it in background: "$make depend > makedepend.out &"
16734It can take a while, so you might not want to run it right now.
16735
16736EOM
16737 ;;
16738 esac
16739 rp="Run $make depend now?"
16740 . UU/myread
16741 case "$ans" in
16742 y*)
3d5d58b1 16743 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
16744 ;;
16745 *)
16746 echo "You must run '$make depend' then '$make'."
16747 ;;
16748 esac
16749elif test -f [Mm]akefile; then
16750 echo " "
16751 echo "Now you must run a $make."
16752else
16753 echo "Done."
16754fi
16755
16756if $test -f Policy.sh; then
16757 $cat <<EOM
16758
16759If you compile $package on a different machine or from a different object
16760directory, copy the Policy.sh file from this object directory to the
16761new one before you run Configure -- this will help you with most of
16762the policy defaults.
16763
16764EOM
16765fi
16766if $test -f config.msg; then
16767 echo "Hmm. I also noted the following information while running:"
16768 echo " "
16769 $cat config.msg >&4
16770 $rm -f config.msg
16771fi
16772$rm -f kit*isdone ark*isdone
16773$rm -rf UU
16774
16775: End of Configure
16776