This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clean up Darwin hints
[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#
a0d24b8a 23# Generated on Mon Jul 23 21:06:18 EET DST 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=''
5440bc8e
JH
168from=''
169run=''
170targetarch=''
171to=''
172usecrosscompile=''
9c839522 173perllibs=''
b4eb6b3d
JH
174dynamic_ext=''
175extensions=''
176known_extensions=''
177nonxs_ext=''
178static_ext=''
179useopcode=''
180useposix=''
ecfc5424 181d_bsd=''
40a7a20a 182d_eunice=''
2304df62
AD
183d_xenix=''
184eunicefix=''
185Mcc=''
dfe9444c 186ar=''
2304df62
AD
187awk=''
188bash=''
189bison=''
190byacc=''
191cat=''
192chgrp=''
193chmod=''
194chown=''
ecfc5424 195comm=''
2304df62
AD
196compress=''
197cp=''
198cpio=''
199cpp=''
200csh=''
201date=''
202echo=''
203egrep=''
204emacs=''
205expr=''
206find=''
207flex=''
2304df62 208grep=''
8ff267be 209gzip=''
2304df62
AD
210inews=''
211ksh=''
212less=''
213line=''
214lint=''
215ln=''
216lp=''
217lpr=''
218ls=''
219mail=''
220mailx=''
dfe9444c 221make=''
2304df62
AD
222mkdir=''
223more=''
224mv=''
693762b4 225nm=''
2304df62
AD
226nroff=''
227perl=''
228pg=''
229pmake=''
230pr=''
231rm=''
232rmail=''
233sed=''
234sendmail=''
2304df62
AD
235shar=''
236sleep=''
237smail=''
238sort=''
239submit=''
240tail=''
241tar=''
242tbl=''
693762b4 243tee=''
2304df62
AD
244test=''
245touch=''
246tr=''
247troff=''
248uname=''
249uniq=''
250uuname=''
251vi=''
252zcat=''
8ff267be 253zip=''
b4eb6b3d
JH
254full_ar=''
255full_sed=''
a0d0e21e 256libswanted=''
2304df62
AD
257hint=''
258myuname=''
85e6fe83
LW
259osname=''
260osvers=''
2304df62
AD
261Author=''
262Date=''
263Header=''
264Id=''
265Locker=''
266Log=''
267RCSfile=''
268Revision=''
269Source=''
270State=''
dfe9444c
AD
271_a=''
272_exe=''
273_o=''
4633a7c4
LW
274archobjs=''
275exe_ext=''
276firstmakefile=''
277lib_ext=''
278obj_ext=''
279path_sep=''
b4eb6b3d 280afs=''
a6d26a0d 281afsroot=''
b4eb6b3d
JH
282alignbytes=''
283ansi2knr=''
284archlib=''
285archlibexp=''
286d_archlib=''
287installarchlib=''
288archname=''
289myarchname=''
290d_atolf=''
291d_atoll=''
292baserev=''
293bin=''
294binexp=''
295installbin=''
296bincompat5005=''
297d_bincompat5005=''
298byteorder=''
2304df62 299cc=''
2304df62
AD
300ccflags=''
301cppflags=''
302ldflags=''
303lkflags=''
8e07c86e 304locincpth=''
2304df62 305optimize=''
b4eb6b3d 306cf_email=''
2304df62
AD
307cf_by=''
308cf_time=''
b4eb6b3d 309charsize=''
2304df62 310contains=''
b4eb6b3d 311cpp_stuff=''
2304df62
AD
312cpplast=''
313cppminus=''
314cpprun=''
315cppstdin=''
74cac757 316d__fwalk=''
b4eb6b3d
JH
317d_access=''
318d_accessx=''
319d_alarm=''
320d_attribut=''
321d_bcmp=''
322d_bcopy=''
323d_bzero=''
324d_casti32=''
325castflags=''
326d_castneg=''
327d_chown=''
328d_chroot=''
329d_chsize=''
330d_closedir=''
331d_void_closedir=''
4e0554ec 332d_cmsghdr_s=''
b4eb6b3d
JH
333d_const=''
334cryptlib=''
335d_crypt=''
336d_csh=''
337full_csh=''
338d_cuserid=''
339d_dbl_dig=''
2ef53570 340d_dbminitproto=''
b4eb6b3d
JH
341d_difftime=''
342d_dlerror=''
a0d0e21e 343d_dlopen=''
b4eb6b3d
JH
344d_dlsymun=''
345d_dosuid=''
346d_suidsafe=''
347d_drand48proto=''
348d_dup2=''
349d_eaccess=''
350d_endgrent=''
351d_endhent=''
352d_endnent=''
353d_endpent=''
354d_endpwent=''
355d_endsent=''
b363b713 356d_fchdir=''
b4eb6b3d
JH
357d_fchmod=''
358d_fchown=''
359d_fcntl=''
9d9004a9 360d_fcntl_can_lock=''
b4eb6b3d
JH
361d_fd_macros=''
362d_fd_set=''
363d_fds_bits=''
364d_fgetpos=''
365d_flexfnam=''
366d_flock=''
2ef53570 367d_flockproto=''
b4eb6b3d
JH
368d_fork=''
369d_fpos64_t=''
370d_frexpl=''
371d_fs_data_s=''
372d_fseeko=''
373d_fsetpos=''
374d_fstatfs=''
411ab01c 375d_fsync=''
b4eb6b3d
JH
376d_ftello=''
377d_ftime=''
378d_gettimeod=''
379d_Gconvert=''
380d_getcwd=''
381d_getespwnam=''
382d_getfsstat=''
383d_getgrent=''
384d_getgrps=''
385d_gethbyaddr=''
386d_gethbyname=''
387d_gethent=''
388aphostname=''
389d_gethname=''
390d_phostname=''
391d_uname=''
392d_gethostprotos=''
4e0554ec 393d_getitimer=''
b4eb6b3d
JH
394d_getlogin=''
395d_getmnt=''
396d_getmntent=''
397d_getnbyaddr=''
398d_getnbyname=''
399d_getnent=''
400d_getnetprotos=''
0c0643d0 401d_getpagsz=''
b4eb6b3d
JH
402d_getpent=''
403d_getpgid=''
404d_getpgrp2=''
405d_bsdgetpgrp=''
406d_getpgrp=''
407d_getppid=''
408d_getprior=''
409d_getpbyname=''
410d_getpbynumber=''
411d_getprotoprotos=''
412d_getprpwnam=''
413d_getpwent=''
414d_getsent=''
415d_getservprotos=''
416d_getspnam=''
417d_getsbyname=''
418d_getsbyport=''
a4f3eea9 419d_gnulibc=''
b4eb6b3d
JH
420d_hasmntopt=''
421d_htonl=''
422d_iconv=''
423d_inetaton=''
424d_int64_t=''
425d_isascii=''
426d_isnan=''
427d_isnanl=''
428d_killpg=''
429d_lchown=''
430d_ldbl_dig=''
431d_link=''
432d_locconv=''
433d_lockf=''
434d_longdbl=''
435longdblsize=''
436d_longlong=''
437longlongsize=''
438d_lseekproto=''
439d_lstat=''
440d_madvise=''
441d_mblen=''
442d_mbstowcs=''
443d_mbtowc=''
444d_memchr=''
445d_memcmp=''
446d_memcpy=''
447d_memmove=''
448d_memset=''
449d_mkdir=''
450d_mkdtemp=''
451d_mkfifo=''
452d_mkstemp=''
453d_mkstemps=''
454d_mktime=''
455d_mmap=''
456mmaptype=''
457d_modfl=''
e67aeab1 458d_modfl_pow32_bug=''
b4eb6b3d
JH
459d_mprotect=''
460d_msg=''
461d_msgctl=''
462d_msgget=''
4e0554ec 463d_msghdr_s=''
b4eb6b3d
JH
464d_msgrcv=''
465d_msgsnd=''
466d_msync=''
467d_munmap=''
468d_nice=''
2765b840 469d_nl_langinfo=''
b4eb6b3d
JH
470d_off64_t=''
471d_open3=''
472d_fpathconf=''
473d_pathconf=''
474d_pause=''
475d_pipe=''
476d_poll=''
2304df62 477d_portable=''
b4eb6b3d
JH
478d_old_pthread_create_joinable=''
479old_pthread_create_joinable=''
d6483fcc 480d_pthread_atfork=''
b4eb6b3d
JH
481d_pthread_yield=''
482d_sched_yield=''
483sched_yield=''
484d_qgcvt=''
485d_readdir=''
486d_rewinddir=''
487d_seekdir=''
488d_telldir=''
489d_readlink=''
4e0554ec
JH
490d_readv=''
491d_recvmsg=''
b4eb6b3d
JH
492d_rename=''
493d_rmdir=''
494d_safebcpy=''
495d_safemcpy=''
496d_sanemcmp=''
ef9f17be 497d_sbrkproto=''
b4eb6b3d
JH
498d_select=''
499d_sem=''
500d_semctl=''
501d_semget=''
502d_semop=''
4e0554ec 503d_sendmsg=''
b4eb6b3d
JH
504d_setegid=''
505d_seteuid=''
506d_setgrent=''
507d_setgrps=''
508d_sethent=''
4e0554ec 509d_setitimer=''
b4eb6b3d
JH
510d_setlinebuf=''
511d_setlocale=''
512d_setnent=''
513d_setpent=''
514d_setpgid=''
515d_setpgrp2=''
516d_bsdsetpgrp=''
517d_setpgrp=''
518d_setprior=''
519d_setproctitle=''
520d_setpwent=''
521d_setregid=''
522d_setresgid=''
523d_setresuid=''
524d_setreuid=''
525d_setrgid=''
526d_setruid=''
527d_setsent=''
528d_setsid=''
529d_setvbuf=''
530d_sfio=''
531usesfio=''
532d_shm=''
533d_shmat=''
534d_shmatprototype=''
535shmattype=''
536d_shmctl=''
537d_shmdt=''
538d_shmget=''
539d_sigaction=''
983dbef6 540d_sigprocmask=''
b4eb6b3d 541d_sigsetjmp=''
49a78c82 542d_sockatmark=''
2ef53570 543d_sockatmarkproto=''
b4eb6b3d
JH
544d_msg_ctrunc=''
545d_msg_dontroute=''
546d_msg_oob=''
547d_msg_peek=''
548d_msg_proxy=''
549d_oldsock=''
550d_scm_rights=''
551d_socket=''
552d_sockpair=''
553sockethdr=''
554socketlib=''
555d_socklen_t=''
556d_socks5_init=''
557d_sqrtl=''
eef837ea 558d_sresgproto=''
640374d0 559d_sresuproto=''
b4eb6b3d
JH
560d_statblks=''
561d_statfs_f_flags=''
562d_statfs_s=''
563d_fstatvfs=''
564d_statvfs=''
565d_stdio_cnt_lval=''
566d_stdio_ptr_lval=''
a7ffa9b9
NC
567d_stdio_ptr_lval_nochange_cnt=''
568d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
569d_stdiobase=''
570d_stdstdio=''
571stdio_base=''
572stdio_bufsiz=''
573stdio_cnt=''
574stdio_filbuf=''
575stdio_ptr=''
576d_index=''
577d_strchr=''
578d_strcoll=''
579d_strctcpy=''
580d_strerrm=''
581d_strerror=''
582d_sysernlst=''
583d_syserrlst=''
b3c85772 584d_strftime=''
b4eb6b3d
JH
585d_strtod=''
586d_strtol=''
587d_strtold=''
588d_strtoll=''
28e5dec8 589d_strtoq=''
b4eb6b3d
JH
590d_strtoul=''
591d_strtoull=''
592d_strtouq=''
593d_strxfrm=''
594d_symlink=''
595d_syscall=''
2ef53570 596d_syscallproto=''
b4eb6b3d
JH
597d_sysconf=''
598d_system=''
599d_tcgetpgrp=''
600d_tcsetpgrp=''
601d_telldirproto=''
602d_time=''
603timetype=''
604clocktype=''
605d_times=''
606d_truncate=''
607d_tzname=''
4e0554ec
JH
608d_u32align=''
609d_ualarm=''
b4eb6b3d
JH
610d_umask=''
611d_semctl_semid_ds=''
612d_semctl_semun=''
613d_union_semun=''
4e0554ec 614d_usleep=''
2ef53570 615d_usleepproto=''
b4eb6b3d
JH
616d_ustat=''
617d_vfork=''
618usevfork=''
619d_voidsig=''
620signal_t=''
621d_volatile=''
622d_charvspr=''
623d_vprintf=''
624d_wait4=''
625d_waitpid=''
626d_wcstombs=''
627d_wctomb=''
4e0554ec 628d_writev=''
b4eb6b3d 629dlext=''
85e6fe83
LW
630cccdlflags=''
631ccdlflags=''
2304df62 632dlsrc=''
232e078e 633ld=''
85e6fe83 634lddlflags=''
2304df62 635usedl=''
b4eb6b3d
JH
636doublesize=''
637ebcdic=''
638fflushNULL=''
639fflushall=''
640fpossize=''
641fpostype=''
5b463ca7 642gccosandvers=''
8a27cf78 643gccversion=''
b4eb6b3d
JH
644gidformat=''
645gidsign=''
646gidsize=''
647gidtype=''
648groupstype=''
649h_fcntl=''
650h_sysfile=''
651i_arpainet=''
652db_hashtype=''
653db_prefixtype=''
640374d0
JH
654db_version_major=''
655db_version_minor=''
656db_version_patch=''
b4eb6b3d
JH
657i_db=''
658i_dbm=''
659i_rpcsvcdbm=''
660d_dirnamlen=''
661direntrytype=''
662i_dirent=''
a0d0e21e 663i_dld=''
b4eb6b3d
JH
664i_dlfcn=''
665i_fcntl=''
666i_float=''
667i_gdbm=''
668d_grpasswd=''
669i_grp=''
670i_iconv=''
671i_ieeefp=''
672i_inttypes=''
2765b840 673i_langinfo=''
b4eb6b3d
JH
674i_libutil=''
675i_limits=''
676i_locale=''
677i_machcthr=''
678i_malloc=''
679i_math=''
680i_memory=''
681i_mntent=''
682i_ndbm=''
683i_netdb=''
684i_neterrno=''
685i_netinettcp=''
686i_niin=''
687i_sysin=''
688i_poll=''
689i_prot=''
690i_pthread=''
691d_pwage=''
692d_pwchange=''
693d_pwclass=''
694d_pwcomment=''
695d_pwexpire=''
696d_pwgecos=''
697d_pwpasswd=''
698d_pwquota=''
699i_pwd=''
700i_sfio=''
701i_shadow=''
702i_socks=''
703i_stddef=''
704i_stdlib=''
705i_string=''
706strings=''
707i_sunmath=''
708i_sysaccess=''
709i_sysdir=''
710i_sysfile=''
711d_voidtty=''
712i_bsdioctl=''
713i_sysfilio=''
714i_sysioctl=''
715i_syssockio=''
716i_syslog=''
717i_sysmman=''
718i_sysmode=''
719i_sysmount=''
720i_sysndir=''
721i_sysparam=''
722i_sysresrc=''
723i_syssecrt=''
724i_sysselct=''
725i_sysstat=''
726i_sysstatfs=''
727i_sysstatvfs=''
728i_systimes=''
729i_systypes=''
730i_sysuio=''
731i_sysun=''
732i_sysutsname=''
733i_sysvfs=''
734i_syswait=''
735i_sgtty=''
736i_termio=''
737i_termios=''
738i_systime=''
739i_systimek=''
740i_time=''
741timeincl=''
742i_unistd=''
743i_ustat=''
744i_utime=''
745i_values=''
746i_stdarg=''
747i_varargs=''
748i_varhdr=''
749i_vfork=''
750inc_version_list=''
751inc_version_list_init=''
752installprefix=''
753installprefixexp=''
754installstyle=''
755installusrbinperl=''
756intsize=''
757longsize=''
758shortsize=''
4b661809 759issymlink=''
2304df62 760libc=''
b4eb6b3d
JH
761ldlibpthname=''
762libperl=''
763shrpenv=''
764useshrplib=''
a0d0e21e 765glibpth=''
2304df62 766libpth=''
8e07c86e 767loclibpth=''
2304df62
AD
768plibpth=''
769xlibpth=''
1cfa4ec7 770ignore_versioned_solibs=''
2304df62 771libs=''
43999f95
JH
772libsdirs=''
773libsfiles=''
774libsfound=''
13b3f787 775libspath=''
85e6fe83 776lns=''
b4eb6b3d
JH
777d_PRIEUldbl=''
778d_PRIFUldbl=''
779d_PRIGUldbl=''
780d_PRIeldbl=''
781d_PRIfldbl=''
782d_PRIgldbl=''
783d_SCNfldbl=''
784sPRIEUldbl=''
785sPRIFUldbl=''
786sPRIGUldbl=''
787sPRIeldbl=''
788sPRIfldbl=''
789sPRIgldbl=''
790sSCNfldbl=''
791lseeksize=''
792lseektype=''
8ff267be 793make_set_make=''
b4eb6b3d
JH
794d_mymalloc=''
795freetype=''
796mallocobj=''
797mallocsrc=''
798malloctype=''
799usemymalloc=''
800installman1dir=''
801man1dir=''
802man1direxp=''
803man1ext=''
804installman3dir=''
805man3dir=''
806man3direxp=''
807man3ext=''
808modetype=''
809multiarch=''
810mydomain=''
811myhostname=''
812phostname=''
2304df62
AD
813c=''
814n=''
b4eb6b3d
JH
815d_eofnblk=''
816eagain=''
817o_nonblock=''
818rd_nodata=''
2cc61e15 819need_va_copy=''
b4eb6b3d
JH
820netdb_hlen_type=''
821netdb_host_type=''
822netdb_name_type=''
823netdb_net_type=''
824groupcat=''
825hostcat=''
826passcat=''
827orderlib=''
828ranlib=''
829d_perl_otherlibdirs=''
830otherlibdirs=''
2304df62
AD
831package=''
832spackage=''
b4eb6b3d
JH
833pager=''
834api_revision=''
835api_subversion=''
836api_version=''
837api_versionstring=''
838patchlevel=''
151e6568 839perl_patchlevel=''
b4eb6b3d
JH
840revision=''
841subversion=''
842version=''
861eb78d 843version_patchlevel_string=''
b4eb6b3d
JH
844perl5=''
845perladmin=''
846perlpath=''
847d_nv_preserves_uv=''
848d_nv_preserves_uv_bits=''
849i16size=''
850i16type=''
851i32size=''
852i32type=''
853i64size=''
854i64type=''
855i8size=''
856i8type=''
857ivsize=''
858ivtype=''
859nvsize=''
860nvtype=''
861u16size=''
862u16type=''
863u32size=''
864u32type=''
865u64size=''
866u64type=''
867u8size=''
868u8type=''
869uvsize=''
870uvtype=''
871ivdformat=''
872nvEUformat=''
873nvFUformat=''
874nvGUformat=''
875nveformat=''
876nvfformat=''
877nvgformat=''
878uvXUformat=''
879uvoformat=''
880uvuformat=''
881uvxformat=''
882pidtype=''
883prefix=''
884prefixexp=''
885installprivlib=''
886privlib=''
887privlibexp=''
888prototype=''
889ptrsize=''
890d_PRIXU64=''
891d_PRId64=''
892d_PRIi64=''
893d_PRIo64=''
894d_PRIu64=''
895d_PRIx64=''
896sPRIXU64=''
897sPRId64=''
898sPRIi64=''
899sPRIo64=''
900sPRIu64=''
901sPRIx64=''
902d_quad=''
903quadkind=''
904quadtype=''
905uquadtype=''
906drand01=''
907randbits=''
908randfunc=''
909randseedtype=''
910seedfunc=''
911installscript=''
912scriptdir=''
913scriptdirexp=''
914selectminbits=''
915selecttype=''
8ff267be 916sh=''
b4eb6b3d
JH
917sig_count=''
918sig_name=''
919sig_name_init=''
920sig_num=''
921sig_num_init=''
76d3c696 922sig_size=''
b4eb6b3d
JH
923installsitearch=''
924sitearch=''
925sitearchexp=''
926installsitebin=''
927sitebin=''
928sitebinexp=''
929installsitelib=''
930sitelib=''
931sitelib_stem=''
932sitelibexp=''
933siteprefix=''
934siteprefixexp=''
935sizesize=''
936sizetype=''
a0d0e21e 937so=''
b4eb6b3d 938socksizetype=''
2304df62
AD
939sharpbang=''
940shsharp=''
941spitshell=''
dfe9444c 942src=''
b4eb6b3d
JH
943ssizetype=''
944startperl=''
2304df62 945startsh=''
b4eb6b3d
JH
946stdchar=''
947d_stdio_stream_array=''
948stdio_stream_array=''
949sysman=''
5ff3f7a4 950trnl=''
b4eb6b3d
JH
951uidformat=''
952uidsign=''
953uidsize=''
954uidtype=''
955archname64=''
956use64bitall=''
957use64bitint=''
958ccflags_uselargefiles=''
959ldflags_uselargefiles=''
960libswanted_uselargefiles=''
961uselargefiles=''
962uselongdouble=''
963usemorebits=''
964usemultiplicity=''
2304df62 965nm_opt=''
40a7a20a 966nm_so_opt=''
2304df62
AD
967runnm=''
968usenm=''
b4eb6b3d 969useperlio=''
29209bc5 970usesocks=''
b4eb6b3d
JH
971d_oldpthreads=''
972use5005threads=''
973useithreads=''
9514c62b 974usereentrant=''
b4eb6b3d 975usethreads=''
2304df62 976incpath=''
2304df62
AD
977mips_type=''
978usrinc=''
b4eb6b3d
JH
979d_vendorarch=''
980installvendorarch=''
981vendorarch=''
982vendorarchexp=''
983d_vendorbin=''
984installvendorbin=''
985vendorbin=''
986vendorbinexp=''
987d_vendorlib=''
988installvendorlib=''
989vendorlib=''
990vendorlib_stem=''
991vendorlibexp=''
992usevendorprefix=''
993vendorprefix=''
994vendorprefixexp=''
d56c5707 995versiononly=''
b4eb6b3d
JH
996defvoidused=''
997voidflags=''
998pm_apiversion=''
999xs_apiversion=''
3659ebf1
JH
1000yacc=''
1001yaccflags=''
2304df62
AD
1002CONFIG=''
1003
ecfc5424
AD
1004define='define'
1005undef='undef'
1006smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1007rmlist=''
1008
1009: We must find out about Eunice early
1010eunicefix=':'
1011if test -f /etc/unixtovms; then
1012 eunicefix=/etc/unixtovms
1013fi
1014if test -f /etc/unixtovms.exe; then
1015 eunicefix=/etc/unixtovms.exe
1016fi
1017
b4eb6b3d 1018i_whoami=''
6b356c8e
JH
1019ccname=''
1020ccversion=''
9c839522 1021perllibs=''
b4eb6b3d
JH
1022: set useposix=false in your hint file to disable the POSIX extension.
1023useposix=true
1024: set useopcode=false in your hint file to disable the Opcode extension.
1025useopcode=true
dfe9444c 1026: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 1027_exe=''
dfe9444c
AD
1028: Extra object files, if any, needed on this platform.
1029archobjs=''
b4eb6b3d 1030archname=''
ff935051
JH
1031: Possible local include directories to search.
1032: Set locincpth to "" in a hint file to defeat local include searches.
1033locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1034locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1035:
1036: no include file wanted by default
1037inclwanted=''
1038
b4eb6b3d 1039groupstype=''
64615a5e 1040libnames=''
732c9516
JH
1041: change the next line if compiling for Xenix/286 on Xenix/386
1042xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1043: Possible local library directories to search.
1044loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1045loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1046
1047: general looking path for locating libraries
5869b1f1 1048glibpth="/lib /usr/lib $xlibpth"
732c9516 1049glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1050test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1051test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1052
1053: Private path used by Configure to find libraries. Its value
1054: is prepended to libpth. This variable takes care of special
1055: machines, like the mips. Usually, it should be empty.
1056plibpth=''
1057
1cfa4ec7
GS
1058: default library list
1059libswanted=''
921b2963 1060: some systems want to use only the non-versioned libso:s
1cfa4ec7 1061ignore_versioned_solibs=''
b4eb6b3d
JH
1062archname64=''
1063ccflags_uselargefiles=''
1064ldflags_uselargefiles=''
1065libswanted_uselargefiles=''
1066: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1067: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1068: set usethreads on the Configure command line to enable threads.
cd040c5e 1069usereentrant='undef'
b4eb6b3d
JH
1070: full support for void wanted by default
1071defvoidused=15
1072
ecfc5424 1073: List of libraries we want.
693762b4 1074: If anyone needs -lnet, put it in a hint file.
997d70a2 1075libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1076libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1077libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1078libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1079: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1080: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1081glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1082glibpth="/usr/shlib $glibpth"
1083: Do not use vfork unless overridden by a hint file.
1084usevfork=false
1085
8ff267be 1086: Find the basic shell for Bourne shell scripts
1087case "$sh" in
1088'')
8ff267be 1089 case "$SYSTYPE" in
1090 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1091 *) xxx='/bin/sh';;
1092 esac
1093 if test -f "$xxx"; then
1094 sh="$xxx"
1095 else
1096 : Build up a list and do a single loop so we can 'break' out.
1097 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1098 for xxx in sh bash ksh pdksh ash; do
1099 for p in $pth; do
1100 try="$try ${p}/${xxx}"
1101 done
1102 done
1103 for xxx in $try; do
1104 if test -f "$xxx"; then
1105 sh="$xxx";
8ff267be 1106 break
1107 elif test -f "$xxx.exe"; then
1108 sh="$xxx";
8ff267be 1109 break
1110 fi
1111 done
1112 fi
1113 ;;
1114esac
1115
1116case "$sh" in
1117'') cat <<EOM >&2
1118$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1119
8ff267be 1120Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1121Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1122we'll try to straighten this all out.
8ff267be 1123EOM
1124 exit 1
1125 ;;
1126esac
1127
760ac839 1128: see if sh knows # comments
73614538 1129if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1130 shsharp=true
1131 spitshell=cat
760ac839
LW
1132 xcat=/bin/cat
1133 test -f $xcat || xcat=/usr/bin/cat
5440bc8e
JH
1134 echo "#!$xcat" >sharp
1135 $eunicefix sharp
1136 chmod +x sharp
1137 ./sharp > today
760ac839 1138 if test -s today; then
760ac839
LW
1139 sharpbang='#!'
1140 else
5440bc8e
JH
1141 echo "#! $xcat" > sharp
1142 $eunicefix sharp
1143 chmod +x sharp
1144 ./sharp > today
760ac839 1145 if test -s today; then
760ac839
LW
1146 sharpbang='#! '
1147 else
760ac839
LW
1148 sharpbang=': use '
1149 fi
1150 fi
1151else
dfe9444c 1152 echo " "
8ff267be 1153 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1154 shsharp=false
1155 cd ..
1156 echo "exec grep -v '^[ ]*#'" >spitshell
1157 chmod +x spitshell
1158 $eunicefix spitshell
1159 spitshell=`pwd`/spitshell
1160 cd UU
1161 echo "I presume that if # doesn't work, #! won't work either!"
1162 sharpbang=': use '
1163fi
5440bc8e 1164rm -f sharp today
760ac839
LW
1165
1166: figure out how to guarantee sh startup
8ff267be 1167case "$startsh" in
1168'') startsh=${sharpbang}${sh} ;;
1169*)
760ac839 1170esac
5440bc8e 1171cat >sharp <<EOSS
760ac839
LW
1172$startsh
1173set abc
1174test "$?abc" != 1
1175EOSS
1176
5440bc8e
JH
1177chmod +x sharp
1178$eunicefix sharp
1179if ./sharp; then
8ff267be 1180 : echo "Yup, it does."
760ac839 1181else
dfe9444c
AD
1182 echo "Hmm... '$startsh' does not guarantee sh startup..."
1183 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1184fi
5440bc8e 1185rm -f sharp
760ac839 1186
aebf16e7
AD
1187
1188: Save command line options in file UU/cmdline.opt for later use in
1189: generating config.sh.
1190cat > cmdline.opt <<EOSH
1191# Configure command line arguments.
1192config_arg0='$0'
1193config_args='$*'
1194config_argc=$#
1195EOSH
1196argn=1
ee45ea83
IZ
1197args_exp=''
1198args_sep=''
aebf16e7
AD
1199for arg in "$@"; do
1200 cat >>cmdline.opt <<EOSH
1201config_arg$argn='$arg'
1202EOSH
ee45ea83
IZ
1203 # Extreme backslashitis: replace each ' by '"'"'
1204 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1205$arg
1206EOC
1207 arg_exp=`cat cmdl.opt`
1208 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1209 argn=`expr $argn + 1`
ee45ea83 1210 args_sep=' '
aebf16e7 1211done
ee45ea83
IZ
1212# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1213# used by ./hints/os2.sh
1214rm -f cmdl.opt
aebf16e7 1215
2304df62
AD
1216: produce awk script to parse command line options
1217cat >options.awk <<'EOF'
1218BEGIN {
02e93a22 1219 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1220
1221 len = length(optstr);
1222 for (i = 1; i <= len; i++) {
1223 c = substr(optstr, i, 1);
1224 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1225 if (a == ":") {
1226 arg[c] = 1;
1227 i++;
1228 }
1229 opt[c] = 1;
1230 }
1231}
1232{
1233 expect = 0;
1234 str = $0;
1235 if (substr(str, 1, 1) != "-") {
1236 printf("'%s'\n", str);
1237 next;
1238 }
1239 len = length($0);
1240 for (i = 2; i <= len; i++) {
1241 c = substr(str, i, 1);
1242 if (!opt[c]) {
1243 printf("-%s\n", substr(str, i));
1244 next;
1245 }
1246 printf("-%s\n", c);
1247 if (arg[c]) {
1248 if (i < len)
1249 printf("'%s'\n", substr(str, i + 1));
1250 else
1251 expect = 1;
1252 next;
1253 }
1254 }
1255}
1256END {
1257 if (expect)
1258 print "?";
1259}
1260EOF
1261
1262: process the command line options
4633a7c4
LW
1263set X `for arg in "$@"; do echo "X$arg"; done |
1264 sed -e s/X// | awk -f options.awk`
2304df62
AD
1265eval "set $*"
1266shift
1267rm -f options.awk
1268
1269: set up default values
1270fastread=''
1271reuseval=false
1272config_sh=''
1273alldone=''
1274error=''
1275silent=''
1276extractsh=''
ecfc5424 1277override=''
16d20bd9 1278knowitall=''
02e93a22 1279rm -f optdef.sh posthint.sh
28757baa 1280cat >optdef.sh <<EOS
1281$startsh
1282EOS
2304df62 1283
dfe9444c 1284
2304df62
AD
1285: option parsing
1286while test $# -gt 0; do
1287 case "$1" in
1288 -d) shift; fastread=yes;;
1289 -e) shift; alldone=cont;;
1290 -f)
1291 shift
1292 cd ..
1293 if test -r "$1"; then
1294 config_sh="$1"
1295 else
a0d0e21e 1296 echo "$me: cannot read config file $1." >&2
2304df62
AD
1297 error=true
1298 fi
1299 cd UU
1300 shift;;
1301 -h) shift; error=true;;
1302 -r) shift; reuseval=true;;
dfe9444c 1303 -s) shift; silent=true; realsilent=true;;
2304df62 1304 -E) shift; alldone=exit;;
16d20bd9 1305 -K) shift; knowitall=true;;
ecfc5424 1306 -O) shift; override=true;;
dfe9444c 1307 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1308 -D)
1309 shift
1310 case "$1" in
1311 *=)
1312 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1313 echo "$me: ignoring -D $1" >&2
1314 ;;
ecfc5424 1315 *=*) echo "$1" | \
1aef975c
AD
1316 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1317 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1318 esac
1319 shift
1320 ;;
1321 -U)
1322 shift
1323 case "$1" in
1aef975c 1324 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1325 *=*)
1326 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1327 echo "$me: ignoring -U $1" >&2
1328 ;;
1aef975c 1329 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1330 esac
1331 shift
1332 ;;
02e93a22
JH
1333 -A)
1334 shift
1335 xxx=''
1336 yyy="$1"
02e93a22 1337 zzz=''
5f83a3e9 1338 uuu=undef
02e93a22 1339 case "$yyy" in
5f83a3e9
JH
1340 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1341 case "$zzz" in
1342 *:*) zzz='' ;;
1343 *) xxx=append
1344 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1345 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1346 esac
1347 ;;
1348 esac
1349 case "$xxx" in
1350 '') case "$yyy" in
1351 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1352 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1353 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1354 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1355 *) xxx=`echo $yyy|sed 's!:.*!!'`
1356 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1357 esac
1358 ;;
1359 esac
02e93a22
JH
1360 case "$xxx" in
1361 append)
5f83a3e9 1362 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1363 clear)
5f83a3e9 1364 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1365 define)
1366 case "$zzz" in
1367 '') zzz=define ;;
1368 esac
5f83a3e9 1369 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1370 eval)
5f83a3e9 1371 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1372 prepend)
5f83a3e9 1373 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1374 undef)
1375 case "$zzz" in
1376 '') zzz="$uuu" ;;
1377 esac
5f83a3e9
JH
1378 echo "$yyy=$zzz" >> posthint.sh ;;
1379 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1380 esac
bde6b06b 1381 shift
02e93a22 1382 ;;
dfe9444c 1383 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1384 exit 0;;
2304df62 1385 --) break;;
a0d0e21e 1386 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1387 *) break;;
1388 esac
1389done
1390
1391case "$error" in
1392true)
1393 cat >&2 <<EOM
2afac517 1394Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1395 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1396 -d : use defaults for all answers.
1397 -e : go on without questioning past the production of config.sh.
1398 -f : specify an alternate default configuration file.
1399 -h : print this help message and exit (with an error status).
1400 -r : reuse C symbols value if possible (skips costly nm extraction).
1401 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1402 -D : define symbol to have some value:
1403 -D symbol symbol gets the value 'define'
1404 -D symbol=value symbol gets the value 'value'
2304df62 1405 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1406 -K : do not use unless you know what you are doing.
ecfc5424 1407 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1408 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1409 -U : undefine symbol:
1410 -U symbol symbol gets the value 'undef'
1411 -U symbol= symbol gets completely empty
02e93a22 1412 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1413 -A symbol=value append " "value to symbol
02e93a22
JH
1414 -A append:symbol=value append value to symbol
1415 -A define:symbol=value define symbol to have value
02e93a22
JH
1416 -A clear:symbol define symbol to be ''
1417 -A define:symbol define symbol to be 'define'
1418 -A eval:symbol=value define symbol to be eval of value
1419 -A prepend:symbol=value prepend value to symbol
1420 -A undef:symbol define symbol to be 'undef'
1421 -A undef:symbol= define symbol to be ''
2304df62
AD
1422 -V : print version number and exit (with a zero status).
1423EOM
1424 exit 1
1425 ;;
1426esac
1427
dfe9444c
AD
1428: Sanity checks
1429case "$fastread$alldone" in
1430yescont|yesexit) ;;
1431*)
aaeb8e51
GS
1432 case "$extractsh" in
1433 true) ;;
1434 *)
1435 if test ! -t 0; then
1436 echo "Say 'sh Configure', not 'sh <Configure'"
1437 exit 1
1438 fi
1439 ;;
1440 esac
dfe9444c
AD
1441 ;;
1442esac
1443
2304df62
AD
1444exec 4>&1
1445case "$silent" in
1446true) exec 1>/dev/null;;
1447esac
1448
ecfc5424 1449: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1450touch optdef.sh
1451. ./optdef.sh
02e93a22
JH
1452: create the posthint manipulation script and leave the file out there...
1453touch posthint.sh
a0d0e21e 1454
2304df62 1455: set package name
85e6fe83 1456package=perl5
b4eb6b3d
JH
1457first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1458last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1459case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1460ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1461*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1462esac
2304df62 1463
2304df62
AD
1464: Some greps do not return status, grrr.
1465echo "grimblepritz" >grimble
1466if grep blurfldyick grimble >/dev/null 2>&1 ; then
1467 contains=contains
1468elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1469 contains=grep
1470else
1471 contains=contains
1472fi
1473rm -f grimble
1474: the following should work in any shell
1475case "$contains" in
1476contains*)
1477 echo " "
1478 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1479 cat >contains <<'EOSS'
1480grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1481EOSS
1482chmod +x contains
1483esac
1484
dfe9444c
AD
1485: Find the path to the source tree
1486case "$src" in
1487'') case "$0" in
b233458b
JH
1488 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1489 case "$src" in
1490 /*) ;;
8504afb7 1491 .) ;;
b233458b
JH
1492 *) src=`cd ../$src && pwd` ;;
1493 esac
1494 ;;
dfe9444c
AD
1495 *) src='.';;
1496 esac;;
1497esac
1498case "$src" in
1499'') src=/
1500 rsrc=/
1501 ;;
1502/*) rsrc="$src";;
1503*) rsrc="../$src";;
1504esac
1505if test -f $rsrc/Configure && \
1506 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1507then
1508 : found it, so we are ok.
1509else
1510 rsrc=''
1511 for src in . .. ../.. ../../.. ../../../..; do
1512 if test -f ../$src/Configure && \
1513 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1514 then
1515 rsrc=../$src
1516 break
1517 fi
1518 done
1519fi
1520case "$rsrc" in
1521'')
1522 cat <<EOM >&4
1523
1524Sorry, I can't seem to locate the source dir for $package. Please start
1525Configure with an explicit path -- i.e. /some/path/Configure.
1526
1527EOM
1528 exit 1
1529 ;;
1530../.) rsrc='..';;
1531*)
1532 echo " "
1533 echo "Sources for $package found in \"$src\"." >&4
1534 ;;
1535esac
1536
1537: script used to extract .SH files with variable substitutions
1538cat >extract <<'EOS'
a02608de 1539PERL_CONFIG_SH=true
dfe9444c 1540echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1541if test -f MANIFEST; then
1542 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1543else
1544 echo "(Looking for .SH files under the source directory.)"
1545 set x `(cd $src; find . -name "*.SH" -print)`
1546fi
1547shift
1548case $# in
15490) set x `(cd $src; echo *.SH)`; shift;;
1550esac
1551if test ! -f $src/$1; then
1552 shift
1553fi
1554mkdir_p='
1555name=$1;
1556create="";
1557while test $name; do
1558 if test ! -d "$name"; then
1559 create="$name $create";
1560 name=`echo $name | sed -e "s|^[^/]*$||"`;
1561 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1562 else
1563 name="";
1564 fi;
1565done;
1566for file in $create; do
1567 mkdir $file;
1568done
1569'
1570for file in $*; do
1571 case "$src" in
1572 ".")
1573 case "$file" in
1574 */*)
1575 dir=`expr X$file : 'X\(.*\)/'`
1576 file=`expr X$file : 'X.*/\(.*\)'`
1577 (cd $dir && . ./$file)
1578 ;;
1579 *)
1580 . ./$file
1581 ;;
1582 esac
1583 ;;
1584 *)
1585 case "$file" in
1586 */*)
1587 dir=`expr X$file : 'X\(.*\)/'`
1588 file=`expr X$file : 'X.*/\(.*\)'`
1589 (set x $dir; shift; eval $mkdir_p)
1590 sh <$src/$dir/$file
1591 ;;
1592 *)
1593 sh <$src/$file
1594 ;;
1595 esac
1596 ;;
1597 esac
1598done
1599if test -f $src/config_h.SH; then
1600 if test ! -f config.h; then
1601 : oops, they left it out of MANIFEST, probably, so do it anyway.
1602 . $src/config_h.SH
1603 fi
1604fi
1605EOS
1606
1607: extract files and exit if asked to do so
1608case "$extractsh" in
1609true)
1610 case "$realsilent" in
1611 true) ;;
1612 *) exec 1>&4;;
1613 esac
1614 case "$config_sh" in
1615 '') config_sh='config.sh';;
1616 esac
1617 echo " "
1618 echo "Fetching answers from $config_sh..."
1619 cd ..
1620 . $config_sh
1621 test "$override" && . ./optdef.sh
1622 echo " "
1623 . UU/extract
1624 rm -rf UU
24ccb310 1625 echo "Extraction done."
dfe9444c
AD
1626 exit 0
1627 ;;
1628esac
1629
1630: Eunice requires " " instead of "", can you believe it
1631echo " "
1632: Here we go...
1633echo "Beginning of configuration questions for $package."
1634
1635trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1636
2304df62
AD
1637: first determine how to suppress newline on echo command
1638echo " "
1639echo "Checking echo to see how to suppress newlines..."
1640(echo "hi there\c" ; echo " ") >.echotmp
1641if $contains c .echotmp >/dev/null 2>&1 ; then
1642 echo "...using -n."
1643 n='-n'
1644 c=''
1645else
1646 cat <<'EOM'
1647...using \c
1648EOM
1649 n=''
1650 c='\c'
1651fi
1652echo $n "The star should be here-->$c"
1653echo '*'
1654rm -f .echotmp
1655
1656: Now test for existence of everything in MANIFEST
1657echo " "
dfe9444c 1658if test -f $rsrc/MANIFEST; then
2304df62 1659 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1660 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1661 rm -f missing
dfe9444c 1662 tmppwd=`pwd`
2304df62 1663 for filelist in x??; do
dfe9444c 1664 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1665 done
1666 if test -s missing; then
1667 cat missing >&4
1668 cat >&4 <<'EOM'
1669
1670THIS PACKAGE SEEMS TO BE INCOMPLETE.
1671
1672You have the option of continuing the configuration process, despite the
1673distinct possibility that your kit is damaged, by typing 'y'es. If you
1674do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1675and contact the author (perlbug@perl.org).
2304df62
AD
1676
1677EOM
1678 echo $n "Continue? [n] $c" >&4
1679 read ans
1680 case "$ans" in
1681 y*)
1682 echo "Continuing..." >&4
1683 rm -f missing
1684 ;;
1685 *)
1686 echo "ABORTING..." >&4
1687 kill $$
1688 ;;
1689 esac
1690 else
dfe9444c 1691 echo "Looks good..."
2304df62
AD
1692 fi
1693else
1694 echo "There is no MANIFEST file. I hope your kit is complete !"
1695fi
1696rm -f missing x??
1697
5ff3f7a4
GS
1698echo " "
1699: Find the appropriate value for a newline for tr
1700if test -n "$DJGPP"; then
1701 trnl='\012'
1702fi
1703if test X"$trnl" = X; then
1704 case "`echo foo|tr '\n' x 2>/dev/null`" in
1705 foox) trnl='\n' ;;
1706 esac
1707fi
1708if test X"$trnl" = X; then
1709 case "`echo foo|tr '\012' x 2>/dev/null`" in
1710 foox) trnl='\012' ;;
1711 esac
1712fi
1713if test X"$trnl" = X; then
1714 cat <<EOM >&2
1715
1716$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1717
1718EOM
1719 exit 1
1720fi
1721
2304df62
AD
1722: compute the number of columns on the terminal for proper question formatting
1723case "$COLUMNS" in
1724'') COLUMNS='80';;
1725esac
1726
1727: set up the echo used in my read
1728myecho="case \"\$xxxm\" in
1729'') echo $n \"\$rp $c\" >&4;;
1730*) case \"\$rp\" in
1731 '') echo $n \"[\$xxxm] $c\";;
1732 *)
1733 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1734 echo \"\$rp\" >&4
1735 echo $n \"[\$xxxm] $c\" >&4
1736 else
1737 echo $n \"\$rp [\$xxxm] $c\" >&4
1738 fi
1739 ;;
1740 esac;;
1741esac"
1742
1743: now set up to do reads with possible shell escape and default assignment
1744cat <<EOSC >myread
28757baa 1745$startsh
2304df62
AD
1746xxxm=\$dflt
1747$myecho
1748ans='!'
1749case "\$fastread" in
1750yes) case "\$dflt" in
1751 '') ;;
1752 *) ans='';
1753 case "\$silent-\$rp" in
1754 true-) ;;
1755 *) echo " " >&4;;
1756 esac;;
1757 esac;;
1758*) case "\$silent" in
1759 true) case "\$rp" in
1760 '') ans='';;
1761 esac;;
1762 esac;;
1763esac
1764while expr "X\$ans" : "X!" >/dev/null; do
1765 read answ
1766 set x \$xxxm
1767 shift
dfe9444c 1768 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1769 case "\$answ" in
dfe9444c
AD
1770 "!")
1771 sh 1>&4
1772 echo " "
1773 $myecho
1774 ;;
1775 !*)
1776 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1777 shift
1778 sh 1>&4 -c "\$*"
1779 echo " "
1780 $myecho
1781 ;;
2304df62
AD
1782 "\$ans")
1783 case "\$ans" in
ecfc5424
AD
1784 \\&*)
1785 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1786 shift
1787 case "\$1" in
1788 -d)
1789 fastread=yes
40a7a20a 1790 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1791 ;;
1792 -*)
40a7a20a 1793 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1794 ;;
1795 esac
1796 $myecho
1797 ans=!
1798 ;;
2304df62
AD
1799 esac;;
1800 *)
1801 case "\$aok" in
1802 y)
1803 echo "*** Substitution done -- please confirm."
1804 xxxm="\$ans"
c9795ab7 1805 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1806 xxxm="\$ans"
1807 ans=!
1808 ;;
1809 *)
1810 echo "*** Error -- try again."
1811 ans=!
1812 ;;
1813 esac
1814 $myecho
1815 ;;
1816 esac
1817 case "\$ans\$xxxm\$nostick" in
1818 '')
1819 ans=!
1820 $myecho
1821 ;;
1822 esac
1823done
1824case "\$ans" in
1825'') ans="\$xxxm";;
1826esac
1827EOSC
1828
1829: create .config dir to save info across Configure sessions
1830test -d ../.config || mkdir ../.config
1831cat >../.config/README <<EOF
1832This directory created by Configure to save information that should
dfe9444c 1833persist across sessions for $package.
2304df62
AD
1834
1835You may safely delete it if you wish.
1836EOF
1837
9507cadf 1838xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1839case "$usedevel" in
0107c034 1840$define|true|[yY]*) ;;
9507cadf 1841*) case "$xversion" in
0107c034
JH
1842 *[13579])
1843 cat >&4 <<EOH
1844*** WHOA THERE!!! ***
1845
1846 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1847 The version of this $package distribution is $xversion, that is, odd,
1848 (as opposed to even) and that signifies a development release.
3d5d58b1 1849 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1850
1851 Do ***NOT*** install this into production use.
1852 Data corruption and crashes are possible.
1853
1854 It is most seriously suggested that you do not continue any further
1855 unless you want to help in developing and debugging Perl.
1856
6adc6a45
JH
1857 If you *still* want to build perl, you can answer 'y' now,
1858 or pass -Dusedevel to Configure.
1859
0107c034
JH
1860EOH
1861 rp='Do you really want to continue?'
1862 dflt='n'
1863 . ./myread
1864 case "$ans" in
8feeef0e
JH
1865 [yY]) echo >&4 "Okay, continuing."
1866 usedevel="$define" ;;
0107c034
JH
1867 *) echo >&4 "Okay, bye."
1868 exit 1
1869 ;;
1870 esac
1871 ;;
1872 esac
1873 ;;
1874esac
8feeef0e
JH
1875case "$usedevel" in
1876$define|true|[yY]*)
1877 case "$versiononly" in
1878 '') versiononly="$define" ;;
1879 esac
1880 case "$installusrbinperl" in
1881 '') installusrbinperl="$undef" ;;
1882 esac
1883 ;;
1884esac
0107c034 1885
2304df62
AD
1886: general instructions
1887needman=true
1888firsttime=true
760ac839 1889user=`(logname) 2>/dev/null`
dfe9444c
AD
1890case "$user" in
1891'') user=`whoami 2>&1`;;
760ac839 1892esac
2304df62
AD
1893if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1894 firsttime=false
1895 echo " "
1896 rp='Would you like to see the instructions?'
1897 dflt=n
1898 . ./myread
1899 case "$ans" in
1900 [yY]*) ;;
1901 *) needman=false;;
1902 esac
1903fi
1904if $needman; then
1905 cat <<EOH
4e2a5f63 1906
2304df62 1907This installation shell script will examine your system and ask you questions
a0d0e21e 1908to determine how the perl5 package should be installed. If you get
2304df62
AD
1909stuck on a question, you may use a ! shell escape to start a subshell or
1910execute a command. Many of the questions will have default answers in square
1911brackets; typing carriage return will give you the default.
1912
1913On some of the questions which ask for file or directory names you are allowed
1914to use the ~name construct to specify the login directory belonging to "name",
1915even if you don't have a shell which knows about that. Questions where this is
1916allowed will be marked "(~name ok)".
1917
1918EOH
1919 rp=''
1920 dflt='Type carriage return to continue'
1921 . ./myread
1922 cat <<'EOH'
1923
1924The prompter used in this script allows you to use shell variables and
1925backticks in your answers. You may use $1, $2, etc... to refer to the words
1926in the default answer, as if the default line was a set of arguments given to a
1927script shell. This means you may also use $* to repeat the whole default line,
1928so you do not have to re-type everything to add something to the default.
1929
1930Everytime there is a substitution, you will have to confirm. If there is an
1931error (e.g. an unmatched backtick), the default answer will remain unchanged
1932and you will be prompted again.
1933
1934If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1935the questions and use the computed defaults (or the previous answers if there
1936was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1937You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1938on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1939
1940EOH
1941 . ./myread
1942 cat <<EOH
1943
1944Much effort has been expended to ensure that this shell script will run on any
1945Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1946Configure and run it again. If you can't run Configure for some reason,
1947you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1948have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1949
1950This installation script affects things in two ways:
1951
19521) it may do direct variable substitutions on some of the files included
1953 in this kit.
19542) it builds a config.h file for inclusion in C programs. You may edit
1955 any of these files as the need arises after running this script.
1956
1957If you make a mistake on a question, there is no easy way to back up to it
1958currently. The easiest thing to do is to edit config.sh and rerun all the SH
1959files. Configure will offer to let you do this before it runs the SH files.
1960
1961EOH
1962 dflt='Type carriage return to continue'
1963 . ./myread
1964 case "$firsttime" in
1965 true) echo $user >>../.config/instruct;;
1966 esac
1967fi
1968
2304df62
AD
1969: find out where common programs are
1970echo " "
1971echo "Locating common programs..." >&4
1972cat <<EOSC >loc
1973$startsh
1974case \$# in
19750) exit 1;;
1976esac
1977thing=\$1
1978shift
1979dflt=\$1
1980shift
1981for dir in \$*; do
1982 case "\$thing" in
1983 .)
1984 if test -d \$dir/\$thing; then
1985 echo \$dir
1986 exit 0
1987 fi
1988 ;;
1989 *)
a0d0e21e 1990 for thisthing in \$dir/\$thing; do
ecfc5424 1991 : just loop through to pick last item
a0d0e21e 1992 done
25f94b33 1993 if test -f \$thisthing; then
a0d0e21e 1994 echo \$thisthing
2304df62
AD
1995 exit 0
1996 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1997 if test -n "$DJGPP"; then
1998 echo \$dir/\$thing.exe
1999 else
2000 : on Eunice apparently
2001 echo \$dir/\$thing
2002 fi
2304df62
AD
2003 exit 0
2004 fi
2005 ;;
2006 esac
2007done
2008echo \$dflt
2009exit 1
2010EOSC
2011chmod +x loc
2012$eunicefix loc
2013loclist="
2014awk
2015cat
f8006fac 2016chmod
b4eb6b3d
JH
2017comm
2018cp
2304df62
AD
2019echo
2020expr
2021grep
a0d0e21e 2022ls
dfe9444c 2023make
b4eb6b3d 2024mkdir
2304df62
AD
2025rm
2026sed
b4eb6b3d 2027sort
85e6fe83 2028touch
2304df62 2029tr
b4eb6b3d 2030uniq
2304df62
AD
2031"
2032trylist="
2033Mcc
dfe9444c 2034ar
3659ebf1 2035bison
b4eb6b3d 2036byacc
2304df62 2037cpp
b4eb6b3d 2038csh
2304df62
AD
2039date
2040egrep
8ff267be 2041gzip
b4eb6b3d 2042less
8ff267be 2043ln
b4eb6b3d 2044more
693762b4 2045nm
b4eb6b3d
JH
2046nroff
2047pg
2304df62
AD
2048test
2049uname
8ff267be 2050zip
2304df62 2051"
8e07c86e 2052pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2053pth="$pth /lib /usr/lib"
2054for file in $loclist; do
dfe9444c
AD
2055 eval xxx=\$$file
2056 case "$xxx" in
2057 /*|?:[\\/]*)
2058 if test -f "$xxx"; then
2059 : ok
2060 else
2061 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2062 xxx=`./loc $file $file $pth`
2063 fi
2064 ;;
2065 '') xxx=`./loc $file $file $pth`;;
2066 *) xxx=`./loc $xxx $xxx $pth`;;
2067 esac
2304df62
AD
2068 eval $file=$xxx
2069 eval _$file=$xxx
2070 case "$xxx" in
2071 /*)
2072 echo $file is in $xxx.
2073 ;;
8e07c86e
AD
2074 ?:[\\/]*)
2075 echo $file is in $xxx.
2076 ;;
2304df62 2077 *)
25f94b33
AD
2078 echo "I don't know where '$file' is, and my life depends on it." >&4
2079 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2080 exit 1
2304df62
AD
2081 ;;
2082 esac
2083done
2084echo " "
2085echo "Don't worry if any of the following aren't found..."
2086say=offhand
2087for file in $trylist; do
dfe9444c
AD
2088 eval xxx=\$$file
2089 case "$xxx" in
2090 /*|?:[\\/]*)
2091 if test -f "$xxx"; then
2092 : ok
2093 else
2094 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2095 xxx=`./loc $file $file $pth`
2096 fi
2097 ;;
2098 '') xxx=`./loc $file $file $pth`;;
2099 *) xxx=`./loc $xxx $xxx $pth`;;
2100 esac
2304df62
AD
2101 eval $file=$xxx
2102 eval _$file=$xxx
2103 case "$xxx" in
2104 /*)
2105 echo $file is in $xxx.
2106 ;;
8e07c86e
AD
2107 ?:[\\/]*)
2108 echo $file is in $xxx.
2109 ;;
2304df62
AD
2110 *)
2111 echo "I don't see $file out there, $say."
2112 say=either
2113 ;;
2114 esac
2115done
2116case "$egrep" in
2117egrep)
2118 echo "Substituting grep for egrep."
2119 egrep=$grep
2120 ;;
2121esac
8ff267be 2122case "$ln" in
2123ln)
2124 echo "Substituting cp for ln."
2125 ln=$cp
2126 ;;
2127esac
2304df62
AD
2128case "$test" in
2129test)
2130 echo "Hopefully test is built into your sh."
2131 ;;
2132*)
73614538 2133 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2134 echo "Using the test built into your sh."
2304df62
AD
2135 test=test
2136 _test=test
2137 fi
2138 ;;
2139esac
2140case "$echo" in
2141echo)
2142 echo "Hopefully echo is built into your sh."
2143 ;;
2144'') ;;
2145*)
2146 echo " "
2147echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2148 $echo $n "hi there$c" >foo1
2149 echo $n "hi there$c" >foo2
2150 if cmp foo1 foo2 >/dev/null 2>&1; then
2151 echo "They are compatible. In fact, they may be identical."
2152 else
2153 case "$n" in
2154 '-n') n='' c='\c';;
2155 *) n='-n' c='';;
2156 esac
2157 cat <<FOO
2158They are not compatible! You are probably running ksh on a non-USG system.
2159I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2160have echo built in and we may have to run some Bourne shell scripts. That
2161means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2162
2163FOO
2164 $echo $n "The star should be here-->$c"
2165 $echo "*"
2166 fi
2167 $rm -f foo1 foo2
2168 ;;
2169esac
2170
2573c5f9
JH
2171cat <<EOS >checkcc
2172$startsh
2173EOS
2174cat <<'EOSC' >>checkcc
2175case "$cc" in
2176'') ;;
2177*) $rm -f try try.*
2178 $cat >try.c <<EOM
2179int main(int argc, char *argv[]) {
2180 return 0;
2181}
2182EOM
e4778687 2183 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2184 :
2185 else
2186 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2187 despair=yes
2188 trygcc=yes
2189 case "$cc" in
2190 *gcc*) trygcc=no ;;
2191 esac
2192 case "`$cc -v -c try.c 2>&1`" in
2193 *gcc*) trygcc=no ;;
2194 esac
2195 if $test X"$trygcc" = Xyes; then
2196 if gcc -o try -c try.c; then
2197 echo " "
2198 echo "You seem to have a working gcc, though." >&4
2199 rp="Would you like to use it?"
2200 dflt=y
2201 if $test -f myread; then
2202 . ./myread
2203 else
2204 if $test -f UU/myread; then
2205 . ./UU/myread
2206 else
2207 echo "Cannot find myread, sorry. Aborting." >&2
2208 exit 1
2209 fi
2210 fi
2211 case "$ans" in
e723fc21 2212 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2213 esac
2214 fi
2215 fi
2216 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2217 $cat >&4 <<EOM
2218You need to find a working C compiler.
2219Either (purchase and) install the C compiler supplied by your OS vendor,
2220or for a free C compiler try http://gcc.gnu.org/
2221I cannot continue any further, aborting.
2222EOM
2573c5f9
JH
2223 exit 1
2224 fi
2225 fi
2226 $rm -f try try.*
2227 ;;
2228esac
2229EOSC
2230
a0d0e21e
LW
2231: determine whether symbolic links are supported
2232echo " "
2233$touch blurfl
2234if $ln -s blurfl sym > /dev/null 2>&1 ; then
2235 echo "Symbolic links are supported." >&4
2236 lns="$ln -s"
2237else
2238 echo "Symbolic links are NOT supported." >&4
2239 lns="$ln"
2240fi
2241$rm -f blurfl sym
2242
dafca956
JH
2243: determine whether symbolic links are supported
2244echo " "
2245case "$lns" in
2246*"ln -s")
2247 echo "Checking how to test for symbolic links..." >&4
2248 $lns blurfl sym
4b661809 2249 if $test "X$issymlink" = X; then
73614538 2250 sh -c "PATH= test -h sym" >/dev/null 2>&1
5d644a95
MB
2251 if test $? = 0; then
2252 issymlink="test -h"
2253 fi
2254 fi
2255 if $test "X$issymlink" = X; then
73614538 2256 if $test -h >/dev/null 2>&1; then
5d644a95
MB
2257 issymlink="$test -h"
2258 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2259 fi
dafca956 2260 fi
4b661809 2261 if $test "X$issymlink" = X; then
dafca956 2262 if $test -L sym 2>/dev/null; then
5d644a95 2263 issymlink="$test -L"
dafca956
JH
2264 fi
2265 fi
4b661809 2266 if $test "X$issymlink" != X; then
5d644a95 2267 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2268 else
2269 echo "I do not know how you can test for symbolic links." >&4
2270 fi
2271 $rm -f blurfl sym
2272 ;;
2273*) echo "No symbolic links, so not testing for their testing..." >&4
2274 ;;
2275esac
2276echo " "
2277
2278
2279case "$mksymlinks" in
2280$define|true|[yY]*)
2281 case "$src" in
2282 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2283 exit 1
2284 ;;
4b661809 2285 *) case "$lns:$issymlink" in
7a800fca 2286 *"ln -s:"*"test -"?)
dafca956
JH
2287 echo "Creating the symbolic links..." >&4
2288 echo "(First creating the subdirectories...)" >&4
2289 cd ..
2290 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2291 read directory
2292 test -z "$directory" && break
2293 mkdir -p $directory
2294 done
2295 # Sanity check 1.
2296 if test ! -d t/base; then
2297 echo "Failed to create the subdirectories. Aborting." >&4
2298 exit 1
2299 fi
2300 echo "(Then creating the symlinks...)" >&4
2301 awk '{print $1}' $src/MANIFEST | while true; do
2302 read filename
2303 test -z "$filename" && break
2304 if test -f $filename; then
5d644a95 2305 if $issymlink $filename; then
dafca956
JH
2306 rm -f $filename
2307 fi
2308 fi
2309 if test -f $filename; then
2310 echo "$filename already exists, not symlinking."
2311 else
2312 ln -s $src/$filename $filename
2313 fi
2314 done
2315 # Sanity check 2.
a0d24b8a
JH
2316 if test ! -f t/base/lex.t; then
2317 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2318 exit 1
2319 fi
2320 cd UU
2321 ;;
2322 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2323 ;;
2324 esac
2325 ;;
2326 esac
2327 ;;
2328esac
2329
5440bc8e
JH
2330
2331case "$usecrosscompile" in
2332$define|true|[yY]*)
93bc48fa 2333 $echo "Cross-compiling..."
5440bc8e
JH
2334 croak=''
2335 case "$cc" in
2336 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2337 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2338 ar=$targetarch-ar
2339 # leave out ld, choosing it is more complex
2340 nm=$targetarch-nm
2341 ranlib=$targetarch-ranlib
93bc48fa 2342 $echo 'extern int foo;' > try.c
f8006fac 2343 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2344 shift
2345 if $test $# -gt 0; then
2346 incpth="$incpth $*"
f8006fac
JH
2347 incpth="`$echo $incpth|$sed 's/^ //'`"
2348 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2349 for i in $*; do
f8006fac 2350 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2351 if $test -d $j; then
2352 libpth="$libpth $j"
2353 fi
2354 done
f8006fac
JH
2355 libpth="`$echo $libpth|$sed 's/^ //'`"
2356 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2357 fi
2358 $rm -f try.c
5440bc8e
JH
2359 ;;
2360 esac
2361 case "$targetarch" in
93bc48fa
JH
2362 '') echo "Targetarch not defined." >&4; croak=y ;;
2363 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2364 esac
2365 case "$incpth" in
93bc48fa 2366 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2367 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2368 esac
2369 case "$libpth" in
93bc48fa 2370 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2371 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2372 esac
93bc48fa
JH
2373 case "$usrinc" in
2374 '') for i in $incpth; do
2375 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2376 usrinc=$i
2377 echo "Guessing usrinc $usrinc." >&4
2378 break
2379 fi
2380 done
2381 case "$usrinc" in
2382 '') echo "Usrinc not defined." >&4; croak=y ;;
2383 esac
2384 ;;
2385 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2386 esac
93bc48fa
JH
2387 case "$targethost" in
2388 '') echo "Targethost not defined." >&4; croak=y ;;
2389 *) echo "Using targethost $targethost." >&4
5440bc8e 2390 esac
93bc48fa
JH
2391 locincpth=' '
2392 loclibpth=' '
5440bc8e 2393 case "$croak" in
93bc48fa 2394 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2395 esac
2396 case "$src" in
2397 /*) run=$src/Cross/run
93c0359c 2398 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2399 to=$src/Cross/to
2400 from=$src/Cross/from
2401 ;;
93bc48fa 2402 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2403 run=$pwd/Cross/run
f8006fac 2404 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2405 to=$pwd/Cross/to
2406 from=$pwd/Cross/from
2407 ;;
2408 esac
2409 case "$targetrun" in
2410 '') targetrun=ssh ;;
2411 esac
2412 case "$targetto" in
2413 '') targetto=scp ;;
2414 esac
2415 case "$targetfrom" in
2416 '') targetfrom=scp ;;
2417 esac
2418 run=$run-$targetrun
2419 to=$to-$targetto
2420 from=$from-$targetfrom
93bc48fa
JH
2421 case "$targetdir" in
2422 '') targetdir=/tmp
2423 echo "Guessing targetdir $targetdir." >&4
2424 ;;
2425 esac
5440bc8e 2426 case "$targetuser" in
93bc48fa
JH
2427 '') targetuser=root
2428 echo "Guessing targetuser $targetuser." >&4
2429 ;;
5440bc8e
JH
2430 esac
2431 case "$targetfrom" in
2432 scp) q=-q ;;
2433 *) q='' ;;
2434 esac
2435 case "$targetrun" in
2436 ssh|rsh)
2437 cat >$run <<EOF
2438#!/bin/sh
93c0359c
JH
2439case "\$1" in
2440-cwd)
2441 shift
2442 cwd=\$1
2443 shift
2444 ;;
2445esac
2446case "\$cwd" in
2447'') cwd=$targetdir ;;
2448esac
5440bc8e
JH
2449exe=\$1
2450shift
93c0359c
JH
2451if $test ! -f \$exe.xok; then
2452 $to \$exe
2453 $touch \$exe.xok
2454fi
2455$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2456EOF
2457 ;;
93bc48fa 2458 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2459 exit 1
2460 ;;
2461 esac
93c0359c
JH
2462 case "$targetmkdir" in
2463 */Cross/mkdir)
2464 cat >$targetmkdir <<EOF
2465#!/bin/sh
2466$targetrun -l $targetuser $targethost "mkdir -p \$@"
2467EOF
f8006fac 2468 $chmod a+rx $targetmkdir
93c0359c
JH
2469 ;;
2470 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2471 exit 1
2472 ;;
2473 esac
5440bc8e
JH
2474 case "$targetto" in
2475 scp|rcp)
2476 cat >$to <<EOF
2477#!/bin/sh
2478for f in \$@
2479do
93c0359c
JH
2480 case "\$f" in
2481 /*)
2482 $targetmkdir \`dirname \$f\`
2483 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2484 ;;
2485 *)
2486 $targetmkdir $targetdir/\`dirname \$f\`
2487 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2488 ;;
2489 esac
5440bc8e
JH
2490done
2491exit 0
2492EOF
2493 ;;
2494 cp) cat >$to <<EOF
2495#!/bin/sh
93c0359c
JH
2496for f in \$@
2497do
2498 case "\$f" in
2499 /*)
2500 $mkdir -p $targetdir/\`dirname \$f\`
2501 $cp \$f $targetdir/\$f || exit 1
2502 ;;
2503 *)
2504 $targetmkdir $targetdir/\`dirname \$f\`
2505 $cp \$f $targetdir/\$f || exit 1
2506 ;;
2507 esac
2508done
2509exit 0
5440bc8e
JH
2510EOF
2511 ;;
93bc48fa 2512 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2513 exit 1
2514 ;;
2515 esac
2516 case "$targetfrom" in
2517 scp|rcp)
2518 cat >$from <<EOF
2519#!/bin/sh
2520for f in \$@
2521do
93c0359c 2522 $rm -f \$f
5440bc8e
JH
2523 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2524done
2525exit 0
2526EOF
2527 ;;
2528 cp) cat >$from <<EOF
2529#!/bin/sh
2530for f in \$@
2531do
93c0359c 2532 $rm -f \$f
5440bc8e
JH
2533 cp $targetdir/\$f . || exit 1
2534done
2535exit 0
2536EOF
2537 ;;
93bc48fa 2538 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2539 exit 1
2540 ;;
2541 esac
93bc48fa
JH
2542 if $test ! -f $run; then
2543 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2544 else
f8006fac 2545 $chmod a+rx $run
5440bc8e 2546 fi
93bc48fa
JH
2547 if $test ! -f $to; then
2548 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2549 else
f8006fac 2550 $chmod a+rx $to
5440bc8e 2551 fi
93bc48fa
JH
2552 if $test ! -f $from; then
2553 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2554 else
f8006fac 2555 $chmod a+rx $from
5440bc8e 2556 fi
93bc48fa 2557 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2558 exit 1
2559 fi
2560 cat >&4 <<EOF
f8006fac
JH
2561Using '$run' for remote execution,
2562and '$from' and '$to'
93bc48fa 2563for remote file transfer.
5440bc8e
JH
2564EOF
2565 ;;
2566*) run=''
2567 to=:
2568 from=:
2569 usecrosscompile='undef'
2570 targetarch=''
2571 ;;
2572esac
2573
ecfc5424
AD
2574: see whether [:lower:] and [:upper:] are supported character classes
2575echo " "
ecfc5424
AD
2576case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2577ABYZ)
2578 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2579 up='[:upper:]'
2580 low='[:lower:]'
2581 ;;
28e8609d
JH
2582*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2583 # (0xc9 and 0xd1), therefore that is a nice testing point.
2584 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2585 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2586 ij) up='[A-Z]'
2587 low='[a-z]'
2588 ;;
2589 esac
2590 fi
2591 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2592 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2593 ij) up='A-Z'
2594 low='a-z'
2595 ;;
2596 esac
2597 fi
2598 if test "X$up" = X -o "X$low" = X; then
2599 case "`echo IJ | od -x 2>/dev/null`" in
2600 *C9D1*|*c9d1*)
2601 echo "Hey, this might be EBCDIC." >&4
2602 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2603 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2604 ij) up='[A-IJ-RS-Z]'
2605 low='[a-ij-rs-z]'
2606 ;;
2607 esac
2608 fi
2609 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2610 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2611 ij) up='A-IJ-RS-Z'
2612 low='a-ij-rs-z'
2613 ;;
2614 esac
2615 fi
2616 ;;
2617 esac
2618 fi
2619esac
3eaeeeae 2620case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2621ij)
2622 echo "Using $up and $low to convert case." >&4
2623 ;;
ecfc5424 2624*)
28e8609d
JH
2625 echo "I don't know how to translate letters from upper to lower case." >&4
2626 echo "Your tr is not acting any way I know of." >&4
2627 exit 1
2628 ;;
ecfc5424
AD
2629esac
2630: set up the translation script tr, must be called with ./tr of course
2631cat >tr <<EOSC
2632$startsh
2633case "\$1\$2" in
2634'[A-Z][a-z]') exec $tr '$up' '$low';;
2635'[a-z][A-Z]') exec $tr '$low' '$up';;
2636esac
2637exec $tr "\$@"
2638EOSC
2639chmod +x tr
2640$eunicefix tr
2641
2304df62
AD
2642: Try to determine whether config.sh was made on this system
2643case "$config_sh" in
2644'')
43999f95
JH
2645myuname=`$uname -a 2>/dev/null`
2646$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2647# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2648# because the A-Z/a-z are not consecutive.
a0d0e21e 2649myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2650 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2651newmyuname="$myuname"
2304df62 2652dflt=n
16d20bd9
AD
2653case "$knowitall" in
2654'')
2655 if test -f ../config.sh; then
2656 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2657 eval "`grep myuname= ../config.sh`"
2658 fi
2659 if test "X$myuname" = "X$newmyuname"; then
2660 dflt=y
2661 fi
2304df62 2662 fi
16d20bd9
AD
2663 ;;
2664*) dflt=y;;
2665esac
2304df62
AD
2666
2667: Get old answers from old config file if Configure was run on the
2668: same system, otherwise use the hints.
2669hint=default
2670cd ..
2671if test -f config.sh; then
16d20bd9
AD
2672 echo " "
2673 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2674 . UU/myread
2675 case "$ans" in
f83701cd
AD
2676 n*|N*) echo "OK, I'll ignore it."
2677 mv config.sh config.sh.old
2678 myuname="$newmyuname"
2679 ;;
2304df62 2680 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2681 tmp_n="$n"
2682 tmp_c="$c"
85cad39c 2683 tmp_sh="$sh"
2304df62
AD
2684 . ./config.sh
2685 cp config.sh UU
ecfc5424
AD
2686 n="$tmp_n"
2687 c="$tmp_c"
85cad39c 2688 : Older versions did not always set $sh. Catch re-use of such
2689 : an old config.sh.
2690 case "$sh" in
2691 '') sh="$tmp_sh" ;;
2692 esac
2304df62
AD
2693 hint=previous
2694 ;;
2695 esac
2696fi
2573c5f9 2697. ./UU/checkcc
2304df62
AD
2698if test ! -f config.sh; then
2699 $cat <<EOM
2700
4e2a5f63
AD
2701First time through, eh? I have some defaults handy for some systems
2702that need some extra help getting the Configure answers right:
2304df62
AD
2703
2704EOM
dfe9444c 2705 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2706 dflt=''
2707 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2708 : tests or hints, please send them to perlbug@perl.org
2304df62 2709 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2710 $test -f /irix && osname=irix
85e6fe83
LW
2711 $test -f /xenix && osname=sco_xenix
2712 $test -f /dynix && osname=dynix
2713 $test -f /dnix && osname=dnix
5f05dabc 2714 $test -f /lynx.os && osname=lynxos
2715 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2716 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2717 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2718 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2719 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2720 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2721 $test -d /usr/apollo/bin && osname=apollo
2722 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2723 $test -d /usr/include/minix && osname=minix
e060872b 2724 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2725 osname=machten
4633a7c4 2726 if $test -x /sbin/version; then
dfe9444c 2727 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2728 $sed -e 's/[A-Za-z]$//'`
2729 elif $test -x /usr/etc/version; then
dfe9444c 2730 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2731 $sed -e 's/[A-Za-z]$//'`
2732 else
2733 osvers="$2.$3"
2734 fi
2735 fi
aaacdc8b
GS
2736
2737 $test -f /sys/posix.dll &&
2738 $test -f /usr/bin/what &&
2739 set X `/usr/bin/what /sys/posix.dll` &&
2740 $test "$3" = UWIN &&
2741 osname=uwin &&
2742 osvers="$5"
2743
2304df62
AD
2744 if $test -f $uname; then
2745 set X $myuname
2746 shift
2747
2304df62 2748 case "$5" in
85e6fe83 2749 fps*) osname=fps ;;
2304df62
AD
2750 mips*)
2751 case "$4" in
85e6fe83
LW
2752 umips) osname=umips ;;
2753 *) osname=mips ;;
2304df62 2754 esac;;
85e6fe83
LW
2755 [23]100) osname=mips ;;
2756 next*) osname=next ;;
ecfc5424 2757 i386*)
c6912327
JH
2758 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2759 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2760 osname='sco'
2761 osvers=$tmp
2762 elif $test -f /etc/kconfig; then
ecfc5424 2763 osname=isc
bd628c73 2764 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2765 osvers=4
2766 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2767 osvers=3
2304df62 2768 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2769 osvers=2
ecfc5424
AD
2770 fi
2771 fi
2000072c 2772 tmp=''
ecfc5424 2773 ;;
c4f23d77
AD
2774 pc*)
2775 if test -n "$DJGPP"; then
2776 osname=dos
2777 osvers=djgpp
2778 fi
2779 ;;
2304df62
AD
2780 esac
2781
2782 case "$1" in
a0d0e21e
LW
2783 aix) osname=aix
2784 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2785 case "$tmp" in
1aef975c 2786 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2787 '<3240'|'<>3240') osvers=3.2.0 ;;
2788 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2789 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2790 *) osvers=$tmp;;
a0d0e21e
LW
2791 esac
2792 ;;
aaacdc8b
GS
2793 bsd386) osname=bsd386
2794 osvers=`$uname -r`
2795 ;;
2796 cygwin*) osname=cygwin
2797 osvers="$3"
2798 ;;
23f87696
SZ
2799 *dc.osx) osname=dcosx
2800 osvers="$3"
2801 ;;
a0d0e21e
LW
2802 dnix) osname=dnix
2803 osvers="$3"
2804 ;;
2805 domainos) osname=apollo
2806 osvers="$3"
2807 ;;
2808 dgux) osname=dgux
2809 osvers="$3"
2810 ;;
760ac839 2811 dynixptx*) osname=dynixptx
e58e581d 2812 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2813 ;;
a0d0e21e
LW
2814 freebsd) osname=freebsd
2815 osvers="$3" ;;
2816 genix) osname=genix ;;
2817 hp*) osname=hpux
bfb7748a 2818 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2819 ;;
a78b0d02 2820 irix*) osname=irix
a0d0e21e
LW
2821 case "$3" in
2822 4*) osvers=4 ;;
2823 5*) osvers=5 ;;
ecfc5424 2824 *) osvers="$3" ;;
a0d0e21e
LW
2825 esac
2826 ;;
2827 linux) osname=linux
2828 case "$3" in
a0d0e21e
LW
2829 *) osvers="$3" ;;
2830 esac
2831 ;;
28e8609d
JH
2832 MiNT) osname=mint
2833 ;;
2834 netbsd*) osname=netbsd
ecfc5424
AD
2835 osvers="$3"
2836 ;;
4e81affe
MM
2837 news-os) osvers="$3"
2838 case "$3" in
2839 4*) osname=newsos4 ;;
2840 *) osname=newsos ;;
2841 esac
2842 ;;
aaacdc8b 2843 next*) osname=next ;;
28bb1e2c 2844 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2845 POSIX-BC | posix-bc ) osname=posix-bc
2846 osvers="$3"
a0d0e21e 2847 ;;
ae3afa4e
TH
2848 powerux | power_ux | powermax_os | powermaxos | \
2849 powerunix | power_unix) osname=powerux
2850 osvers="$3"
2851 ;;
aaacdc8b
GS
2852 qnx) osname=qnx
2853 osvers="$4"
2854 ;;
a0d0e21e
LW
2855 solaris) osname=solaris
2856 case "$3" in
2857 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2858 *) osvers="$3" ;;
a0d0e21e
LW
2859 esac
2860 ;;
85e6fe83
LW
2861 sunos) osname=sunos
2862 case "$3" in
85e6fe83
LW
2863 5*) osname=solaris
2864 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2865 *) osvers="$3" ;;
2304df62
AD
2866 esac
2867 ;;
a0d0e21e 2868 titanos) osname=titanos
85e6fe83 2869 case "$3" in
a0d0e21e
LW
2870 1*) osvers=1 ;;
2871 2*) osvers=2 ;;
2872 3*) osvers=3 ;;
2873 4*) osvers=4 ;;
ecfc5424 2874 *) osvers="$3" ;;
2304df62
AD
2875 esac
2876 ;;
85e6fe83 2877 ultrix) osname=ultrix
ecfc5424 2878 osvers="$3"
2304df62 2879 ;;
28757baa 2880 osf1|mls+) case "$5" in
fed7345c
AD
2881 alpha)
2882 osname=dec_osf
2aa76180
JH
2883 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2884 case "$osvers" in
2885 [1-9].[0-9]*) ;;
2886 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2887 esac
ecfc5424
AD
2888 ;;
2889 hp*) osname=hp_osf1 ;;
2890 mips) osname=mips_osf1 ;;
85e6fe83
LW
2891 esac
2892 ;;
0337d152
BG
2893 unixware) osname=svr5
2894 osvers="$4"
2895 ;;
2896 uts) osname=uts
a0d0e21e
LW
2897 osvers="$3"
2898 ;;
85e6fe83 2899 $2) case "$osname" in
2304df62 2900 *isc*) ;;
a0d0e21e 2901 *freebsd*) ;;
5f05dabc 2902 svr*)
a0d0e21e
LW
2903 : svr4.x or possibly later
2904 case "svr$3" in
2905 ${osname}*)
2906 osname=svr$3
2907 osvers=$4
2908 ;;
2909 esac
2910 case "$osname" in
2911 svr4.0)
2912 : Check for ESIX
2913 if test -f /stand/boot ; then
2914 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2915 if test -n "$INITPROG" -a -f "$INITPROG"; then
2916 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2917 if test -n "$isesix"; then
a0d0e21e
LW
2918 osname=esix4
2919 fi
2920 fi
2921 fi
2922 ;;
2923 esac
2924 ;;
2304df62 2925 *) if test -f /etc/systemid; then
a0d0e21e
LW
2926 osname=sco
2927 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2928 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2929 osvers=$1.$2.$3
c4f23d77 2930 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2931 osvers=$1.$2
c4f23d77 2932 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2933 osvers=$1
2304df62 2934 fi
a0d0e21e
LW
2935 else
2936 case "$osname" in
2937 '') : Still unknown. Probably a generic Sys V.
2938 osname="sysv"
2939 osvers="$3"
2940 ;;
2941 esac
2304df62
AD
2942 fi
2943 ;;
2944 esac
2945 ;;
a0d0e21e
LW
2946 *) case "$osname" in
2947 '') : Still unknown. Probably a generic BSD.
2948 osname="$1"
2949 osvers="$3"
2950 ;;
2951 esac
2952 ;;
2304df62
AD
2953 esac
2954 else
dfe9444c
AD
2955 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2956 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2957 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2958 osname=news_os
2304df62 2959 fi
dfe9444c 2960 $rm -f UU/kernel.what
8e07c86e
AD
2961 elif test -d c:/.; then
2962 set X $myuname
2963 osname=os2
2964 osvers="$5"
2304df62
AD
2965 fi
2966 fi
85e6fe83 2967
5440bc8e
JH
2968 case "$targetarch" in
2969 '') ;;
2970 *) hostarch=$osname
2971 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2972 osvers=''
2973 ;;
2974 esac
2975
a0d0e21e
LW
2976 : Now look for a hint file osname_osvers, unless one has been
2977 : specified already.
2978 case "$hintfile" in
2979 ''|' ')
1e127011 2980 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2981 : Also try without trailing minor version numbers.
1e127011
DD
2982 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2983 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2984 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2985 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2986 case "$file" in
2987 '') dflt=none ;;
2988 *) case "$osvers" in
2989 '') dflt=$file
2990 ;;
dfe9444c 2991 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2992 dflt=$file
dfe9444c 2993 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2994 dflt=$xfile
dfe9444c 2995 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2996 dflt=$xxfile
dfe9444c 2997 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2998 dflt=$xxxfile
dfe9444c 2999 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3000 dflt=$xxxxfile
dfe9444c 3001 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3002 dflt="${osname}"
3003 else
3004 dflt=none
3005 fi
3006 ;;
3007 esac
85e6fe83
LW
3008 ;;
3009 esac
4e2a5f63
AD
3010 if $test -f Policy.sh ; then
3011 case "$dflt" in
3012 *Policy*) ;;
3013 none) dflt="Policy" ;;
3014 *) dflt="Policy $dflt" ;;
3015 esac
3016 fi
85e6fe83 3017 ;;
a0d0e21e 3018 *)
ecfc5424 3019 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3020 ;;
2304df62 3021 esac
1aef975c 3022
4e2a5f63
AD
3023 if $test -f Policy.sh ; then
3024 $cat <<EOM
3025
3026There's also a Policy hint file available, which should make the
3027site-specific (policy) questions easier to answer.
3028EOM
3029
3030 fi
3031
2304df62
AD
3032 $cat <<EOM
3033
3034You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3035A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3036is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3037
3038EOM
4e2a5f63 3039
2304df62 3040 rp="Which of these apply, if any?"
dfe9444c 3041 . UU/myread
85e6fe83
LW
3042 tans=$ans
3043 for file in $tans; do
4e2a5f63
AD
3044 if $test X$file = XPolicy -a -f Policy.sh; then
3045 . Policy.sh
3046 $cat Policy.sh >> UU/config.sh
3047 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3048 . $src/hints/$file.sh
3049 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3050 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3051 : nothing
3052 else
85e6fe83
LW
3053 : Give one chance to correct a possible typo.
3054 echo "$file.sh does not exist"
3055 dflt=$file
3056 rp="hint to use instead?"
dfe9444c 3057 . UU/myread
85e6fe83 3058 for file in $ans; do
dfe9444c
AD
3059 if $test -f "$src/hints/$file.sh"; then
3060 . $src/hints/$file.sh
3061 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3062 elif $test X$ans = X -o X$ans = Xnone ; then
3063 : nothing
3064 else
3065 echo "$file.sh does not exist -- ignored."
3066 fi
3067 done
2304df62
AD
3068 fi
3069 done
85e6fe83 3070
2304df62 3071 hint=recommended
85e6fe83 3072 : Remember our hint file for later.
dfe9444c 3073 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3074 hintfile="$file"
85e6fe83 3075 else
a0d0e21e 3076 hintfile=''
85e6fe83 3077 fi
2304df62
AD
3078fi
3079cd UU
3080;;
3081*)
3082 echo " "
3083 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3084 tmp_n="$n"
3085 tmp_c="$c"
2304df62
AD
3086 cd ..
3087 cp $config_sh config.sh 2>/dev/null
a78b0d02 3088 chmod +w config.sh
2304df62
AD
3089 . ./config.sh
3090 cd UU
3091 cp ../config.sh .
ecfc5424
AD
3092 n="$tmp_n"
3093 c="$tmp_c"
2304df62
AD
3094 hint=previous
3095 ;;
3096esac
1aef975c 3097test "$override" && . ./optdef.sh
2304df62
AD
3098
3099: Restore computed paths
3100for file in $loclist $trylist; do
3101 eval $file="\$_$file"
3102done
3103
85e6fe83 3104cat << EOM
a0d0e21e 3105
85e6fe83 3106Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3107The default value is probably right if the name rings a bell. Otherwise,
3108since spelling matters for me, either accept the default or answer "none"
3109to leave it blank.
a0d0e21e 3110
85e6fe83 3111EOM
85e6fe83 3112case "$osname" in
a0d0e21e 3113 ''|' ')
85e6fe83 3114 case "$hintfile" in
a0d0e21e 3115 ''|' '|none) dflt=none ;;
ecfc5424 3116 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3117 esac
3118 ;;
3119 *) dflt="$osname" ;;
3120esac
3121rp="Operating system name?"
3122. ./myread
3123case "$ans" in
ecfc5424
AD
3124none) osname='' ;;
3125*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3126esac
8ff267be 3127echo " "
3128case "$osvers" in
3129 ''|' ')
3130 case "$hintfile" in
3131 ''|' '|none) dflt=none ;;
3132 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3133 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3134 case "$dflt" in
3135 ''|' ') dflt=none ;;
3136 esac
3137 ;;
3138 esac
3139 ;;
3140 *) dflt="$osvers" ;;
3141esac
3142rp="Operating system version?"
3143. ./myread
3144case "$ans" in
3145none) osvers='' ;;
3146*) osvers="$ans" ;;
3147esac
3148
02e93a22
JH
3149
3150. ./posthint.sh
3151
2304df62 3152: who configured the system
59b83a6f 3153cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3154cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3155case "$cf_by" in
3156"")
8ff267be 3157 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3158 case "$cf_by" in
3159 "") cf_by=unknown ;;
8ff267be 3160 esac ;;
3161esac
2304df62 3162
b4eb6b3d
JH
3163: set up the script used to warn in case of inconsistency
3164cat <<EOS >whoa
3165$startsh
3166EOS
3167cat <<'EOSC' >>whoa
3168dflt=y
3169echo " "
3170echo "*** WHOA THERE!!! ***" >&4
3171echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3172rp=" Keep the $hint value?"
3173. ./myread
3174case "$ans" in
3175y) td=$was; tu=$was;;
3176esac
3177EOSC
3178
3179: function used to set $1 to $val
3180setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3181case "$val$was" in
3182$define$undef) . ./whoa; eval "$var=\$td";;
3183$undef$define) . ./whoa; eval "$var=\$tu";;
3184*) eval "$var=$val";;
3185esac'
3186
3187case "$usethreads" in
3188$define|true|[yY]*) dflt='y';;
3189*) dflt='n';;
3190esac
3191cat <<EOM
3192
3193Perl can be built to take advantage of threads on some systems.
3194To do so, Configure can be run with -Dusethreads.
3195
3196Note that threading is a highly experimental feature, and
3197some known race conditions still remain. If you choose to try
3198it, be very sure to not actually deploy it for production
3199purposes. README.threads has more details, and is required
3200reading if you enable threads.
3201
3202If this doesn't make any sense to you, just accept the default '$dflt'.
3203EOM
3204rp='Build a threading Perl?'
3205. ./myread
3206case "$ans" in
3207y|Y) val="$define" ;;
3208*) val="$undef" ;;
3209esac
3210set usethreads
3211eval $setvar
3212
3213case "$usethreads" in
3214$define)
3215 $cat <<EOM
3216
3217As of 5.5.640, Perl has two different internal threading implementations,
3218the 5.005 version (5005threads) and an interpreter-based version
3219(ithreads) that has one interpreter per thread. Both are very
3220experimental. This arrangement exists to help developers work out
3221which one is better.
3222
3223If you're a casual user, you probably don't want interpreter-threads
3224at this time. There doesn't yet exist a way to create threads from
3225within Perl in this model, i.e., "use Thread;" will NOT work.
3226EOM
3227 : Default to ithreads unless overridden on command line or with
3228 : old config.sh
3229 dflt='y'
3230 case "$use5005threads" in
3231 $define|true|[yY]*) dflt='n';;
3232 esac
3233 case "$useithreads" in
3234 $undef|false|[nN]*) dflt='n';;
3235 esac
3236 rp='Use interpreter-based ithreads?'
3237 . ./myread
3238 case "$ans" in
3239 y|Y) val="$define" ;;
3240 *) val="$undef" ;;
3241 esac
3242 set useithreads
3243 eval $setvar
3244 : Now set use5005threads to the opposite value.
3245 case "$useithreads" in
3246 $define) val="$undef" ;;
3247 *) val="$define" ;;
3248 esac
3249 set use5005threads
3250 eval $setvar
3251 ;;
3252*)
3253 useithreads="$undef"
3254 use5005threads="$undef"
3255 ;;
3256esac
3257
c915ce7f
JH
3258case "$useithreads$use5005threads" in
3259"$define$define")
3260 $cat >&4 <<EOM
3261
3262You cannot have both the ithreads and the 5.005 threads enabled
3263at the same time. Disabling the 5.005 threads since they are
3264much less stable than the ithreads.
3265
3266EOM
3267 use5005threads="$undef"
3268 ;;
3269esac
3270
b4eb6b3d
JH
3271case "$d_oldpthreads" in
3272'') : Configure tests would be welcome here. For now, assume undef.
3273 val="$undef" ;;
3274*) val="$d_oldpthreads" ;;
3275esac
3276set d_oldpthreads
3277eval $setvar
3278
3279
3280case "$usethreads" in
3281"$define"|true|[yY]*)
3282: Look for a hint-file generated 'call-back-unit'. If the
3283: user has specified that a threading perl is to be built,
3284: we may need to set or change some other defaults.
3285 if $test -f usethreads.cbu; then
3286 echo "Your platform has some specific hints for threaded builds, using them..."
3287 . ./usethreads.cbu
3288 else
3289 $cat <<EOM
3290(Your platform doesn't have any specific hints for threaded builds.
3291 Assuming POSIX threads, then.)
3292EOM
3293 fi
3294 ;;
3295esac
3296
3297cat <<EOM
3298
3299Perl can be built so that multiple Perl interpreters can coexist
3300within the same Perl executable.
3301EOM
3302
3303case "$useithreads" in
3304$define)
3305 cat <<EOM
3306This multiple interpreter support is required for interpreter-based threads.
3307EOM
3308 val="$define"
3309 ;;
3310*) case "$usemultiplicity" in
3311 $define|true|[yY]*) dflt='y';;
3312 *) dflt='n';;
3313 esac
3314 echo " "
3315 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3316 rp='Build Perl for multiplicity?'
3317 . ./myread
3318 case "$ans" in
3319 y|Y) val="$define" ;;
3320 *) val="$undef" ;;
3321 esac
3322 ;;
3323esac
3324set usemultiplicity
3325eval $setvar
3326
96056487
JH
3327
3328case "$usemorebits" in
3329"$define"|true|[yY]*)
3330 use64bitint="$define"
3331 uselongdouble="$define"
3332 usemorebits="$define"
3333 ;;
3334*) usemorebits="$undef"
3335 ;;
3336esac
3337
e5e20432
JH
3338: make some quick guesses about what we are up against
3339echo " "
3340$echo $n "Hmm... $c"
3341echo exit 1 >bsd
3342echo exit 1 >usg
3343echo exit 1 >v7
3344echo exit 1 >osf1
3345echo exit 1 >eunice
3346echo exit 1 >xenix
3347echo exit 1 >venix
3348echo exit 1 >os2
3349d_bsd="$undef"
3350$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3351if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3352then
3353 echo "Looks kind of like an OSF/1 system, but we'll see..."
3354 echo exit 0 >osf1
381aa1ff 3355elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3356 xxx=`./loc addbib blurfl $pth`
3357 if $test -f $xxx; then
3358 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3359 echo exit 0 >bsd
3360 echo exit 0 >usg
3361 else
3362 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3363 echo "Looks kind of like an extended USG system, but we'll see..."
3364 else
3365 echo "Looks kind of like a USG system, but we'll see..."
3366 fi
3367 echo exit 0 >usg
3368 fi
3369elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3370 echo "Looks kind of like a BSD system, but we'll see..."
3371 d_bsd="$define"
3372 echo exit 0 >bsd
3373else
3374 echo "Looks kind of like a Version 7 system, but we'll see..."
3375 echo exit 0 >v7
3376fi
3377case "$eunicefix" in
3378*unixtovms*)
3379 $cat <<'EOI'
3380There is, however, a strange, musty smell in the air that reminds me of
3381something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3382EOI
3383 echo exit 0 >eunice
3384 d_eunice="$define"
3385: it so happens the Eunice I know will not run shell scripts in Unix format
3386 ;;
3387*)
3388 echo " "
3389 echo "Congratulations. You aren't running Eunice."
3390 d_eunice="$undef"
3391 ;;
3392esac
3393: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3394: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3395: semicolon as a patch separator
e5e20432
JH
3396case "$p_" in
3397:) ;;
3398*)
3399 $cat <<'EOI'
3400I have the feeling something is not exactly right, however...don't tell me...
3401lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3402(Or you may be running DOS with DJGPP.)
e5e20432
JH
3403EOI
3404 echo exit 0 >os2
3405 ;;
3406esac
3407if test -f /xenix; then
3408 echo "Actually, this looks more like a XENIX system..."
3409 echo exit 0 >xenix
3410 d_xenix="$define"
3411else
3412 echo " "
3413 echo "It's not Xenix..."
3414 d_xenix="$undef"
3415fi
3416chmod +x xenix
3417$eunicefix xenix
3418if test -f /venix; then
3419 echo "Actually, this looks more like a VENIX system..."
3420 echo exit 0 >venix
3421else
3422 echo " "
3423 if ./xenix; then
3424 : null
3425 else
3426 echo "Nor is it Venix..."
3427 fi
3428fi
3429chmod +x bsd usg v7 osf1 eunice xenix venix os2
3430$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3431$rm -f foo
3432
5869b1f1
JH
3433case "$cc" in
3434'') dflt=cc;;
3435*) dflt="$cc";;
3436esac
3437rp="Use which C compiler?"
3438. ./myread
3439cc="$ans"
e5e20432
JH
3440: Look for a hint-file generated 'call-back-unit'. Now that the
3441: user has specified the compiler, we may need to set or change some
3442: other defaults.
3443if $test -f cc.cbu; then
3444 . ./cc.cbu
3445fi
2573c5f9 3446. ./checkcc
8a27cf78 3447
e5e20432
JH
3448echo " "
3449echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3450$cat >try.c <<EOM
e5e20432
JH
3451#include <stdio.h>
3452int main() {
3453#ifdef __GNUC__
3454#ifdef __VERSION__
3455 printf("%s\n", __VERSION__);
3456#else
3457 printf("%s\n", "1");
3458#endif
3459#endif
3460 exit(0);
3461}
3462EOM
5440bc8e
JH
3463if $cc -o try $ccflags $ldflags try.c; then
3464 gccversion=`$run ./try`
e5e20432
JH
3465 case "$gccversion" in
3466 '') echo "You are not using GNU cc." ;;
fc68435e 3467 *) echo "You are using GNU cc $gccversion."
e723fc21 3468 ccname=gcc
fc68435e 3469 ;;
e5e20432
JH
3470 esac
3471else
3472 echo " "
3473 echo "*** WHOA THERE!!! ***" >&4
3474 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3475 case "$knowitall" in
3476 '')
3477 echo " You'd better start hunting for one and let me know about it." >&4
3478 exit 1
3479 ;;
3480 esac
3481fi
5440bc8e 3482$rm -f try try.*
e5e20432
JH
3483case "$gccversion" in
34841*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3485esac
5b463ca7
KS
3486case "$gccversion" in
3487'') gccosandvers='' ;;
10b4ebb5
JH
3488*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3489 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3490 gccshortvers=''
5b463ca7 3491 case "$gccosandvers" in
02903077
JH
3492 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3493 $osname$osvers) ;; # looking good
5b463ca7
KS
3494 $osname*) cat <<EOM >&4
3495
3496*** WHOA THERE!!! ***
3497
3498 Your gcc has not been compiled for the exact release of
3499 your operating system ($gccosandvers versus $osname$osvers).
3500
3501 In general it is a good idea to keep gcc synchronized with
3502 the operating system because otherwise serious problems
3503 may ensue when trying to compile software, like Perl.
3504
3505 I'm trying to be optimistic here, though, and will continue.
3506 If later during the configuration and build icky compilation
02903077
JH
3507 problems appear (headerfile conflicts being the most common
3508 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3509 your operating system release.
3510
3511EOM
3512 ;;
81575342 3513 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3514 esac
3515 ;;
3516esac
e723fc21
JH
3517case "$ccname" in
3518'') ccname="$cc" ;;
3519esac
e5e20432 3520
640374d0
JH
3521case "$gccversion" in
3522'') ;;
3523*) case "$ccflags" in
3524 *-Wall*) ;;
a126002e 3525 *) ccflags="$ccflags -Wall" ;;
640374d0
JH
3526 esac
3527 ;;
3528esac
3529
bd9b35c9
JH
3530: decide how portable to be. Allow command line overrides.
3531case "$d_portable" in
3532"$undef") ;;
3533*) d_portable="$define" ;;
104d25b7 3534esac
85ab1d1d 3535
bd9b35c9
JH
3536: set up shell script to do ~ expansion
3537cat >filexp <<EOSS
3538$startsh
3539: expand filename
3540case "\$1" in
3541 ~/*|~)
3542 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3543 ;;
3544 ~*)
3545 if $test -f /bin/csh; then
3546 /bin/csh -f -c "glob \$1"
3547 failed=\$?
3548 echo ""
3549 exit \$failed
e5e20432 3550 else
bd9b35c9
JH
3551 name=\`$expr x\$1 : '..\([^/]*\)'\`
3552 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3553 if $test ! -d "\$dir"; then
3554 me=\`basename \$0\`
3555 echo "\$me: can't locate home directory for: \$name" >&2
3556 exit 1
3557 fi
3558 case "\$1" in
3559 */*)
3560 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3561 ;;
3562 *)
3563 echo \$dir
e5e20432
JH
3564 ;;
3565 esac
3566 fi
b691c02f 3567 ;;
4633a7c4 3568*)
bd9b35c9 3569 echo \$1
2304df62
AD
3570 ;;
3571esac
4633a7c4
LW
3572EOSS
3573chmod +x filexp
3574$eunicefix filexp
2304df62
AD
3575
3576: now set up to get a file name
28757baa 3577cat <<EOS >getfile
3578$startsh
3579EOS
3580cat <<'EOSC' >>getfile
2304df62
AD
3581tilde=''
3582fullpath=''
3583already=''
3584skip=''
3585none_ok=''
3586exp_file=''
a0d0e21e 3587nopath_ok=''
2304df62
AD
3588orig_rp="$rp"
3589orig_dflt="$dflt"
b233458b
JH
3590case "$gfpth" in
3591'') gfpth='.' ;;
3592esac
2304df62
AD
3593
3594case "$fn" in
ecfc5424 3595*\(*)
381aa1ff 3596 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3597 fn=`echo $fn | sed 's/(.*)//'`
3598 ;;
3599esac
3600
3601case "$fn" in
a0d0e21e
LW
3602*:*)
3603 loc_file=`expr $fn : '.*:\(.*\)'`
3604 fn=`expr $fn : '\(.*\):.*'`
3605 ;;
3606esac
3607
3608case "$fn" in
2304df62
AD
3609*~*) tilde=true;;
3610esac
3611case "$fn" in
3612*/*) fullpath=true;;
3613esac
3614case "$fn" in
3615*+*) skip=true;;
3616esac
3617case "$fn" in
3618*n*) none_ok=true;;
3619esac
3620case "$fn" in
3621*e*) exp_file=true;;
3622esac
a0d0e21e
LW
3623case "$fn" in
3624*p*) nopath_ok=true;;
3625esac
2304df62
AD
3626
3627case "$fn" in
3628*f*) type='File';;
3629*d*) type='Directory';;
a0d0e21e 3630*l*) type='Locate';;
2304df62
AD
3631esac
3632
3633what="$type"
3634case "$what" in
3635Locate) what='File';;
3636esac
3637
3638case "$exp_file" in
3639'')
3640 case "$d_portable" in
3641 "$define") ;;
3642 *) exp_file=true;;
3643 esac
3644 ;;
3645esac
3646
3647cd ..
3648while test "$type"; do
3649 redo=''
3650 rp="$orig_rp"
3651 dflt="$orig_dflt"
3652 case "$tilde" in
3653 true) rp="$rp (~name ok)";;
3654 esac
3655 . UU/myread
ecfc5424
AD
3656 if test -f UU/getfile.ok && \
3657 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3658 then
3659 value="$ans"
3660 ansexp="$ans"
3661 break
3662 fi
2304df62
AD
3663 case "$ans" in
3664 none)
3665 value=''
3666 ansexp=''
3667 case "$none_ok" in
3668 true) type='';;
3669 esac
3670 ;;
3671 *)
3672 case "$tilde" in
3673 '') value="$ans"
3674 ansexp="$ans";;
3675 *)
3676 value=`UU/filexp $ans`
3677 case $? in
3678 0)
3679 if test "$ans" != "$value"; then
ecfc5424 3680 echo "(That expands to $value on this system.)"
2304df62
AD
3681 fi
3682 ;;
3683 *) value="$ans";;
3684 esac
3685 ansexp="$value"
3686 case "$exp_file" in
3687 '') value="$ans";;
3688 esac
3689 ;;
3690 esac
3691 case "$fullpath" in
3692 true)
3693 case "$ansexp" in
3694 /*) value="$ansexp" ;;
23da6c43 3695 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3696 *)
3697 redo=true
3698 case "$already" in
3699 true)
3700 echo "I shall only accept a full path name, as in /bin/ls." >&4
3701 echo "Use a ! shell escape if you wish to check pathnames." >&4
3702 ;;
3703 *)
3704 echo "Please give a full path name, starting with slash." >&4
3705 case "$tilde" in
3706 true)
3707 echo "Note that using ~name is ok provided it expands well." >&4
3708 already=true
3709 ;;
3710 esac
3711 esac
3712 ;;
3713 esac
3714 ;;
3715 esac
3716 case "$redo" in
3717 '')
3718 case "$type" in
3719 File)
b233458b
JH
3720 for fp in $gfpth; do
3721 if test "X$fp" = X.; then
3722 pf="$ansexp"
3723 else
3724 pf="$fp/$ansexp"
3725 fi
3726 if test -f "$pf"; then
3727 type=''
3728 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3729 then
3730 echo "($value is not a plain file, but that's ok.)"
3731 type=''
3732 fi
3733 if test X"$type" = X; then
3734 value="$pf"
3735 break
3736 fi
3737 done
2304df62
AD
3738 ;;
3739 Directory)
b233458b
JH
3740 for fp in $gfpth; do
3741 if test "X$fp" = X.; then
f78bfc9c
JH
3742 dir="$ans"
3743 direxp="$ansexp"
b233458b 3744 else
dd858076 3745 dir="$fp/$ansexp"
f78bfc9c 3746 direxp="$fp/$ansexp"
b233458b 3747 fi
f78bfc9c 3748 if test -d "$direxp"; then
b233458b 3749 type=''
f78bfc9c 3750 value="$dir"
b233458b
JH
3751 break
3752 fi
3753 done
2304df62
AD
3754 ;;
3755 Locate)
40000a8c 3756 if test -d "$ansexp"; then
a0d0e21e
LW
3757 echo "(Looking for $loc_file in directory $value.)"
3758 value="$value/$loc_file"
40000a8c 3759 ansexp="$ansexp/$loc_file"
2304df62 3760 fi
40000a8c 3761 if test -f "$ansexp"; then
2304df62
AD
3762 type=''
3763 fi
a0d0e21e
LW
3764 case "$nopath_ok" in
3765 true) case "$value" in
3766 */*) ;;
3767 *) echo "Assuming $value will be in people's path."
3768 type=''
3769 ;;
3770 esac
3771 ;;
3772 esac
2304df62
AD
3773 ;;
3774 esac
3775
3776 case "$skip" in
3777 true) type='';
3778 esac
3779
3780 case "$type" in
3781 '') ;;
3782 *)
3783 if test "$fastread" = yes; then
3784 dflt=y
3785 else
3786 dflt=n
3787 fi
3788 rp="$what $value doesn't exist. Use that name anyway?"
3789 . UU/myread
3790 dflt=''
3791 case "$ans" in
3792 y*) type='';;
3793 *) echo " ";;
3794 esac
3795 ;;
3796 esac
3797 ;;
3798 esac
3799 ;;
3800 esac
3801done
3802cd UU
3803ans="$value"
3804rp="$orig_rp"
3805dflt="$orig_dflt"
ecfc5424 3806rm -f getfile.ok
b233458b 3807test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3808EOSC
3809
bd9b35c9
JH
3810: What should the include directory be ?
3811echo " "
3812$echo $n "Hmm... $c"
3813dflt='/usr/include'
3814incpath=''
3815mips_type=''
3816if $test -f /bin/mips && /bin/mips; then
3817 echo "Looks like a MIPS system..."
3818 $cat >usr.c <<'EOCP'
3819#ifdef SYSTYPE_BSD43
3820/bsd43
3821#endif
3822EOCP
8a27cf78 3823 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3824 dflt='/bsd43/usr/include'
3825 incpath='/bsd43'
3826 mips_type='BSD 4.3'
3827 else
3828 mips_type='System V'
3829 fi
3830 $rm -f usr.c usr.out
3831 echo "and you're compiling with the $mips_type compiler and libraries."
3832 xxx_prompt=y
3833 echo "exit 0" >mips
3834else
3835 echo "Doesn't look like a MIPS system."
3836 xxx_prompt=n
3837 echo "exit 1" >mips
3838fi
3839chmod +x mips
3840$eunicefix mips
3841case "$usrinc" in
3842'') ;;
3843*) dflt="$usrinc";;
3844esac
3845case "$xxx_prompt" in
3846y) fn=d/
3847 echo " "
3848 rp='Where are the include files you want to use?'
3849 . ./getfile
3850 usrinc="$ans"
8e07c86e 3851 ;;
bd9b35c9 3852*) usrinc="$dflt"
8e07c86e
AD
3853 ;;
3854esac
2304df62 3855
96056487
JH
3856: see how we invoke the C preprocessor
3857echo " "
3858echo "Now, how can we feed standard input to your C preprocessor..." >&4
3859cat <<'EOT' >testcpp.c
3860#define ABC abc
3861#define XYZ xyz
3862ABC.XYZ
3863EOT
3864cd ..
3865if test ! -f cppstdin; then
3866 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3867 # AIX cc -E doesn't show the absolute headerfile
3868 # locations but we'll cheat by using the -M flag.
3869 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
3870 else
3871 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3872 fi
3873else
3874 echo "Keeping your $hint cppstdin wrapper."
3875fi
3876chmod 755 cppstdin
3877wrapper=`pwd`/cppstdin
3878ok='false'
3879cd UU
3880
3881if $test "X$cppstdin" != "X" && \
3882 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3883 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884then
3885 echo "You used to use $cppstdin $cppminus so we'll use that again."
3886 case "$cpprun" in
3887 '') echo "But let's see if we can live without a wrapper..." ;;
3888 *)
3889 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3890 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891 then
3892 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3893 ok='true'
3894 else
3895 echo "(However, $cpprun $cpplast does not work, let's see...)"
3896 fi
3897 ;;
3898 esac
3899else
3900 case "$cppstdin" in
3901 '') ;;
3902 *)
3903 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3904 ;;
3905 esac
3906fi
3907
3908if $ok; then
3909 : nothing
3910elif echo 'Maybe "'"$cc"' -E" will work...'; \
3911 $cc -E <testcpp.c >testcpp.out 2>&1; \
3912 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3913 echo "Yup, it does."
3914 x_cpp="$cc -E"
3915 x_minus='';
3916elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3917 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3918 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3919 echo "Yup, it does."
3920 x_cpp="$cc -E"
3921 x_minus='-';
3922elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3923 $cc -P <testcpp.c >testcpp.out 2>&1; \
3924 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925 echo "Yipee, that works!"
3926 x_cpp="$cc -P"
3927 x_minus='';
3928elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3929 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3930 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3931 echo "At long last!"
3932 x_cpp="$cc -P"
3933 x_minus='-';
3934elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3935 $cpp <testcpp.c >testcpp.out 2>&1; \
3936 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937 echo "It works!"
3938 x_cpp="$cpp"
3939 x_minus='';
3940elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3941 $cpp - <testcpp.c >testcpp.out 2>&1; \
3942 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943 echo "Hooray, it works! I was beginning to wonder."
3944 x_cpp="$cpp"
3945 x_minus='-';
3946elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3947 $wrapper <testcpp.c >testcpp.out 2>&1; \
3948 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949 x_cpp="$wrapper"
3950 x_minus=''
3951 echo "Eureka!"
3952else
3953 dflt=''
3954 rp="No dice. I can't find a C preprocessor. Name one:"
3955 . ./myread
3956 x_cpp="$ans"
3957 x_minus=''
3958 $x_cpp <testcpp.c >testcpp.out 2>&1
3959 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3960 echo "OK, that will do." >&4
3961 else
3962echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3963 exit 1
3964 fi
3965fi
3966
3967case "$ok" in
3968false)
3969 cppstdin="$x_cpp"
3970 cppminus="$x_minus"
3971 cpprun="$x_cpp"
3972 cpplast="$x_minus"
3973 set X $x_cpp
3974 shift
3975 case "$1" in
3976 "$cpp")
3977 echo "Perhaps can we force $cc -E using a wrapper..."
3978 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3979 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3980 then
3981 echo "Yup, we can."
3982 cppstdin="$wrapper"
3983 cppminus='';
3984 else
3985 echo "Nope, we'll have to live without it..."
3986 fi
3987 ;;
3988 esac
3989 case "$cpprun" in
3990 "$wrapper")
3991 cpprun=''
3992 cpplast=''
3993 ;;
3994 esac
3995 ;;
3996esac
3997
3998case "$cppstdin" in
3999"$wrapper"|'cppstdin') ;;
4000*) $rm -f $wrapper;;
4001esac
4002$rm -f testcpp.c testcpp.out
4003
bd9b35c9
JH
4004: Set private lib path
4005case "$plibpth" in
4006'') if ./mips; then
4007 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4008 fi;;
4009esac
4010case "$libpth" in
4011' ') dlist='';;
4012'') dlist="$loclibpth $plibpth $glibpth";;
4013*) dlist="$libpth";;
4014esac
4015
4016: Now check and see which directories actually exist, avoiding duplicates
4017libpth=''
4018for xxx in $dlist
4019do
4020 if $test -d $xxx; then
4021 case " $libpth " in
4022 *" $xxx "*) ;;
4023 *) libpth="$libpth $xxx";;
4024 esac
4025 fi
4026done
4027$cat <<'EOM'
4028
4029Some systems have incompatible or broken versions of libraries. Among
4030the directories listed in the question below, please remove any you
4031know not to be holding relevant libraries, and add any that are needed.
4032Say "none" for none.
8e07c86e
AD
4033
4034EOM
bd9b35c9
JH
4035case "$libpth" in
4036'') dflt='none';;
8e07c86e 4037*)
bd9b35c9
JH
4038 set X $libpth
4039 shift
4040 dflt=${1+"$@"}
8e07c86e 4041 ;;
a0d0e21e 4042esac
bd9b35c9
JH
4043rp="Directories to use for library searches?"
4044. ./myread
4045case "$ans" in
4046none) libpth=' ';;
4047*) libpth="$ans";;
4048esac
a0d0e21e 4049
bd9b35c9
JH
4050: compute shared library extension
4051case "$so" in
4052'')
4053 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4054 dflt='sl'
dd4e71fd 4055 else
bd9b35c9 4056 dflt='so'
dd4e71fd
JH
4057 fi
4058 ;;
bd9b35c9 4059*) dflt="$so";;
dd4e71fd 4060esac
dd4e71fd
JH
4061$cat <<EOM
4062
bd9b35c9 4063On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4064you want to suppress searching of shared libraries for the remainder
bd9b35c9 4065of this configuration.
dd4e71fd
JH
4066
4067EOM
bd9b35c9
JH
4068rp='What is the file extension used for shared libraries?'
4069. ./myread
4070so="$ans"
dd4e71fd 4071
bd9b35c9
JH
4072: Define several unixisms.
4073: Hints files or command line option can be used to override them.
4074: The convoluted testing is in case hints files set either the old
4075: or the new name.
4076case "$_exe" in
4077'') case "$exe_ext" in
4078 '') ;;
4079 *) _exe="$exe_ext" ;;
dd4e71fd 4080 esac
bd9b35c9 4081 ;;
bfb7748a 4082esac
bd9b35c9
JH
4083case "$_a" in
4084'') case "$lib_ext" in
4085 '') _a='.a';;
4086 *) _a="$lib_ext" ;;
dd4e71fd
JH
4087 esac
4088 ;;
dd4e71fd 4089esac
bd9b35c9
JH
4090case "$_o" in
4091'') case "$obj_ext" in
4092 '') _o='.o';;
4093 *) _o="$obj_ext";;
4094 esac
4095 ;;
4096esac
4097case "$p_" in
4098'') case "$path_sep" in
4099 '') p_=':';;
4100 *) p_="$path_sep";;
4101 esac
4102 ;;
4103esac
4104exe_ext=$_exe
4105lib_ext=$_a
4106obj_ext=$_o
4107path_sep=$p_
dd4e71fd 4108
b4eb6b3d
JH
4109: Which makefile gets called first. This is used by make depend.
4110case "$firstmakefile" in
4111'') firstmakefile='makefile';;
4633a7c4 4112esac
4633a7c4 4113
0f0995ae
JH
4114case "$usesocks" in
4115$define|true|[yY]*) dflt='y';;
4116*) dflt='n';;
4117esac
bd9b35c9 4118cat <<EOM
4633a7c4 4119
bd9b35c9 4120Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4121Configure must be run with -Dusesocks. If you use SOCKS you also need
4122to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4123
0f0995ae 4124If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4125EOM
bd9b35c9
JH
4126rp='Build Perl for SOCKS?'
4127. ./myread
4128case "$ans" in
4129y|Y) val="$define" ;;
4130*) val="$undef" ;;
4131esac
4132set usesocks
4133eval $setvar
4134
cf829ab0
JH
4135case "$usesocks" in
4136$define|true|[yY]*) useperlio="$define";;
4137esac
4138
bd9b35c9
JH
4139: Looking for optional libraries
4140echo " "
4141echo "Checking for optional libraries..." >&4
4142case "$libs" in
4143' '|'') dflt='';;
4144*) dflt="$libs";;
4145esac
4146case "$libswanted" in
4147'') libswanted='c_s';;
4148esac
4149case "$usesocks" in
923fc586 4150"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4151esac
68435ea7
JH
4152libsfound=''
4153libsfiles=''
4154libsdirs=''
13b3f787
JH
4155libspath=''
4156for thisdir in $libpth $xlibpth; do
4157 test -d $thisdir && libspath="$libspath $thisdir"
4158done
bd9b35c9 4159for thislib in $libswanted; do
13b3f787 4160 for thisdir in $libspath; do
f7dd4e7f
JH
4161 xxx=''
4162 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4163 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4164 $test -f "$xxx" && eval $libscheck
4165 $test -f "$xxx" && libstyle=shared
4166 fi
4167 if test ! -f "$xxx"; then
4168 xxx=$thisdir/lib$thislib.$so
4169 $test -f "$xxx" && eval $libscheck
4170 $test -f "$xxx" && libstyle=shared
4171 fi
4172 if test ! -f "$xxx"; then
4173 xxx=$thisdir/lib$thislib$_a
4174 $test -f "$xxx" && eval $libscheck
4175 $test -f "$xxx" && libstyle=static
4176 fi
4177 if test ! -f "$xxx"; then
4178 xxx=$thisdir/$thislib$_a
4179 $test -f "$xxx" && eval $libscheck
4180 $test -f "$xxx" && libstyle=static
4181 fi
4182 if test ! -f "$xxx"; then
4183 xxx=$thisdir/lib${thislib}_s$_a
4184 $test -f "$xxx" && eval $libscheck
4185 $test -f "$xxx" && libstyle=static
09ea5ba9 4186 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4187 fi
4188 if test ! -f "$xxx"; then
4189 xxx=$thisdir/Slib$thislib$_a
4190 $test -f "$xxx" && eval $libscheck
4191 $test -f "$xxx" && libstyle=static
4192 fi
4193 if $test -f "$xxx"; then
43999f95 4194 case "$libstyle" in
f7dd4e7f
JH
4195 shared) echo "Found -l$thislib (shared)." ;;
4196 static) echo "Found -l$thislib." ;;
4197 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4198 esac
bd9b35c9
JH
4199 case " $dflt " in
4200 *"-l$thislib "*);;
f7dd4e7f 4201 *) dflt="$dflt -l$thislib"
43999f95
JH
4202 libsfound="$libsfound $xxx"
4203 yyy=`basename $xxx`
4204 libsfiles="$libsfiles $yyy"
1e127011 4205 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4206 case " $libsdirs " in
4207 *" $yyy "*) ;;
4208 *) libsdirs="$libsdirs $yyy" ;;
4209 esac
4210 ;;
bd9b35c9 4211 esac
f7dd4e7f
JH
4212 break
4213 fi
4214 done
4215 if $test ! -f "$xxx"; then
4216 echo "No -l$thislib."
bd9b35c9
JH
4217 fi
4218done
4219set X $dflt
4220shift
4221dflt="$*"
4222case "$libs" in
4223'') dflt="$dflt";;
4224*) dflt="$libs";;
4225esac
4226case "$dflt" in
4227' '|'') dflt='none';;
4228esac
4633a7c4 4229
bd9b35c9 4230$cat <<EOM
4633a7c4 4231
bd9b35c9
JH
4232In order to compile $package on your machine, a number of libraries
4233are usually needed. Include any other special libraries here as well.
4234Say "none" for none. The default list is almost always right.
8e07c86e 4235EOM
8e07c86e 4236
bd9b35c9
JH
4237echo " "
4238rp="What libraries to use?"
4239. ./myread
4240case "$ans" in
4241none) libs=' ';;
4242*) libs="$ans";;
4243esac
d71b2b6b 4244
bd9b35c9
JH
4245: determine optimization, if desired, or use for debug flag also
4246case "$optimize" in
4247' '|$undef) dflt='none';;
4248'') dflt='-O';;
4249*) dflt="$optimize";;
4250esac
4251$cat <<EOH
d71b2b6b 4252
bd9b35c9
JH
4253By default, $package compiles with the -O flag to use the optimizer.
4254Alternately, you might want to use the symbolic debugger, which uses
4255the -g flag (on traditional Unix systems). Either flag can be
4256specified here. To use neither flag, specify the word "none".
d71b2b6b 4257
bd9b35c9
JH
4258EOH
4259rp="What optimizer/debugger flag should be used?"
4260. ./myread
4261optimize="$ans"
4262case "$optimize" in
4263'none') optimize=" ";;
4264esac
4265
4266dflt=''
4267: We will not override a previous value, but we might want to
4268: augment a hint file
4269case "$hint" in
4270default|recommended)
4271 case "$gccversion" in
4272 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4273 esac
bd9b35c9
JH
4274 case "$optimize" in
4275 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4276 esac
bd9b35c9
JH
4277 case "$gccversion" in
4278 2*) if test -d /etc/conf/kconfig.d &&
4279 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4280 then
4281 dflt="$dflt -posix"
4282 fi
f0d04425 4283 ;;
bd9b35c9
JH
4284 esac
4285 case "$gccversion" in
4286 1*) ;;
4287 2.[0-8]*) ;;
4288 ?*) echo " "
4289 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4290 echo 'int main(void) { return 0; }' > gcctest.c
4291 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4292 echo "Yes, it does." 2>&1
4293 case "$ccflags" in
4294 *strict-aliasing*)
4295 echo "Leaving current flags $ccflags alone." 2>&1
4296 ;;
4297 *) dflt="$dflt -fno-strict-aliasing" ;;
4298 esac
4299 else
4300 echo "Nope, it doesn't, but that's ok." 2>&1
4301 fi
f0d04425 4302 ;;
e5e20432
JH
4303 esac
4304 ;;
4305esac
4306
bd9b35c9
JH
4307case "$mips_type" in
4308*BSD*|'') inclwanted="$locincpth $usrinc";;
4309*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4310esac
4311for thisincl in $inclwanted; do
4312 if $test -d $thisincl; then
4313 if $test x$thisincl != x$usrinc; then
4314 case "$dflt" in
422af00a
LC
4315 *" -I$thisincl "*);;
4316 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4317 esac
4318 fi
4319 fi
4320done
40a7a20a 4321
bd9b35c9
JH
4322inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4323 xxx=true;
4324elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4325 xxx=true;
4326else
4327 xxx=false;
4328fi;
4329if $xxx; then
4330 case "$dflt" in
4331 *$2*);;
4332 *) dflt="$dflt -D$2";;
4333 esac;
4334fi'
40a7a20a 4335
bd9b35c9 4336set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4337
bd9b35c9
JH
4338case "$usesocks" in
4339$define)
4340 ccflags="$ccflags -DSOCKS"
4341 ;;
4342esac
40a7a20a 4343
bd9b35c9
JH
4344case "$hint" in
4345default|recommended) dflt="$ccflags $dflt" ;;
4346*) dflt="$ccflags";;
4347esac
40a7a20a 4348
bd9b35c9
JH
4349case "$dflt" in
4350''|' ') dflt=none;;
4351esac
422af00a 4352
bd9b35c9 4353$cat <<EOH
40a7a20a 4354
bd9b35c9
JH
4355Your C compiler may want other flags. For this question you should include
4356-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4357but you should NOT include libraries or ld flags like -lwhatever. If you
4358want $package to honor its debug switch, you should include -DDEBUGGING here.
4359Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4360
bd9b35c9 4361To use no flags, specify the word "none".
40a7a20a 4362
bd9b35c9
JH
4363EOH
4364set X $dflt
4365shift
4366dflt=${1+"$@"}
4367rp="Any additional cc flags?"
4368. ./myread
4369case "$ans" in
4370none) ccflags='';;
4371*) ccflags="$ans";;
4372esac
8e07c86e 4373
bd9b35c9 4374: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4375case "$cppflags" in
4376'') cppflags="$ccflags" ;;
4377*) cppflags="$cppflags $ccflags" ;;
4378esac
bd9b35c9
JH
4379case "$gccversion" in
43801*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4381esac
bd9b35c9
JH
4382case "$mips_type" in
4383'');;
4384*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4385esac
4386case "$cppflags" in
4387'');;
4388*)
4389 echo " "
4390 echo "Let me guess what the preprocessor flags are..." >&4
4391 set X $cppflags
4392 shift
4393 cppflags=''
4394 $cat >cpp.c <<'EOM'
4395#define BLURFL foo
8e07c86e 4396
bd9b35c9
JH
4397BLURFL xx LFRULB
4398EOM
4399 previous=''
4400 for flag in $*
4401 do
4402 case "$flag" in
4403 -*) ftry="$flag";;
4404 *) ftry="$previous $flag";;
4405 esac
4406 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4407 >cpp1.out 2>/dev/null && \
4408 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4409 >cpp2.out 2>/dev/null && \
4410 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4411 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4412 then
4413 cppflags="$cppflags $ftry"
4414 previous=''
4415 else
4416 previous="$flag"
4417 fi
4418 done
4419 set X $cppflags
4420 shift
4421 cppflags=${1+"$@"}
4422 case "$cppflags" in
4423 *-*) echo "They appear to be: $cppflags";;
4424 esac
4425 $rm -f cpp.c cpp?.out
2afac517 4426 ;;
4427esac
8e07c86e 4428
bd9b35c9
JH
4429: flags used in final linking phase
4430case "$ldflags" in
4431'') if ./venix; then
4432 dflt='-i -z'
10a23457 4433 else
bd9b35c9 4434 dflt=''
10a23457 4435 fi
bd9b35c9
JH
4436 case "$ccflags" in
4437 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4438 esac
bd9b35c9
JH
4439 ;;
4440*) dflt="$ldflags";;
4441esac
4442
4443: Try to guess additional flags to pick up local libraries.
4444for thislibdir in $libpth; do
4445 case " $loclibpth " in
4446 *" $thislibdir "*)
4447 case "$dflt " in
4448 *"-L$thislibdir "*) ;;
4449 *) dflt="$dflt -L$thislibdir" ;;
4450 esac
c4f23d77
AD
4451 ;;
4452 esac
bd9b35c9 4453done
c4f23d77 4454
bd9b35c9
JH
4455case "$dflt" in
4456'') dflt='none' ;;
4457esac
c4f23d77 4458
bd9b35c9
JH
4459$cat <<EOH
4460
4461Your C linker may need flags. For this question you should
4462include -L/whatever and any other flags used by the C linker, but you
4463should NOT include libraries like -lwhatever.
4464
4465Make sure you include the appropriate -L/path flags if your C linker
4466does not normally search all of the directories you specified above,
4467namely
4468 $libpth
4469To use no flags, specify the word "none".
4470
4471EOH
4472
4473rp="Any additional ld flags (NOT including libraries)?"
4474. ./myread
4475case "$ans" in
4476none) ldflags='';;
4477*) ldflags="$ans";;
4478esac
4479rmlist="$rmlist pdp11"
4480
4481: coherency check
4482echo " "
4483echo "Checking your choice of C compiler and flags for coherency..." >&4
4484$cat > try.c <<'EOF'
4485#include <stdio.h>
4486int main() { printf("Ok\n"); exit(0); }
4487EOF
7a282f6d 4488set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4489shift
4490$cat >try.msg <<'EOM'
4491I've tried to compile and run the following simple program:
4492
4493EOM
4494$cat try.c >> try.msg
4495
4496$cat >> try.msg <<EOM
4497
4498I used the command:
4499
4500 $*
5440bc8e 4501 $run ./try
bd9b35c9
JH
4502
4503and I got the following output:
4504
4505EOM
4506dflt=y
73614538 4507if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4508 if $sh -c "$run ./try" >>try.msg 2>&1; then
4509 xxx=`$run ./try`
bd9b35c9
JH
4510 case "$xxx" in
4511 "Ok") dflt=n ;;
4512 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4513 case " $libs " in
4514 *" -lsfio "*)
4515 cat >> try.msg <<'EOQS'
4516If $libs contains -lsfio, and sfio is mis-configured, then it
4517sometimes (apparently) runs and exits with a 0 status, but with no
4518output! It may have to do with sfio's use of _exit vs. exit.
4519
4520EOQS
4521 rp="You have a big problem. Shall I abort Configure"
4522 dflt=y
4523 ;;
4524 esac
4525 ;;
4526 esac
4527 else
4528 echo "The program compiled OK, but exited with status $?." >>try.msg
4529 rp="You have a problem. Shall I abort Configure"
4530 dflt=y
4531 fi
4532else
4533 echo "I can't compile the test program." >>try.msg
4534 rp="You have a BIG problem. Shall I abort Configure"
4535 dflt=y
4536fi
4537case "$dflt" in
4538y)
4539 $cat try.msg >&4
4540 case "$knowitall" in
4541 '')
4542 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4543 ;;
bd9b35c9 4544 *) dflt=n;;
c4f23d77 4545 esac
bd9b35c9
JH
4546 echo " "
4547 . ./myread
4548 case "$ans" in
4549 n*|N*) ;;
4550 *) echo "Ok. Stopping Configure." >&4
4551 exit 1
c4f23d77
AD
4552 ;;
4553 esac
4554 ;;
bd9b35c9 4555n) echo "OK, that should do.";;
c4f23d77 4556esac
bd9b35c9 4557$rm -f try try.* core
c4f23d77 4558
bd9b35c9
JH
4559: define a shorthand compile call
4560compile='
4561mc_file=$1;
4562shift;
08413ebc 4563$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4564: define a shorthand compile call for compilations that should be ok.
4565compile_ok='
4566mc_file=$1;
4567shift;
7a282f6d 4568$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4569
b4eb6b3d 4570: check for lengths of integral types
bd9b35c9 4571echo " "
b4eb6b3d
JH
4572case "$intsize" in
4573'')
4574 echo "Checking to see how big your integers are..." >&4
5440bc8e 4575 $cat >try.c <<'EOCP'
bd9b35c9
JH
4576#include <stdio.h>
4577int main()
4578{
b4eb6b3d
JH
4579 printf("intsize=%d;\n", (int)sizeof(int));
4580 printf("longsize=%d;\n", (int)sizeof(long));
4581 printf("shortsize=%d;\n", (int)sizeof(short));
4582 exit(0);
bd9b35c9 4583}
b4eb6b3d 4584EOCP
5440bc8e
JH
4585 set try
4586 if eval $compile_ok && $run ./try > /dev/null; then
4587 eval `$run ./try`
b4eb6b3d
JH
4588 echo "Your integers are $intsize bytes long."
4589 echo "Your long integers are $longsize bytes long."
4590 echo "Your short integers are $shortsize bytes long."
4591 else
4592 $cat >&4 <<EOM
4593!
4594Help! I can't compile and run the intsize test program: please enlighten me!
4595(This is probably a misconfiguration in your system or libraries, and
4596you really ought to fix it. Still, I'll try anyway.)
4597!
bd9b35c9 4598EOM
b4eb6b3d
JH
4599 dflt=4
4600 rp="What is the size of an integer (in bytes)?"
96056487
JH
4601 . ./myread
4602 intsize="$ans"
4603 dflt=$intsize
4604 rp="What is the size of a long integer (in bytes)?"
4605 . ./myread
4606 longsize="$ans"
4607 dflt=2
4608 rp="What is the size of a short integer (in bytes)?"
4609 . ./myread
4610 shortsize="$ans"
b4eb6b3d
JH
4611 fi
4612 ;;
4613esac
96056487 4614$rm -f try try.*
b4eb6b3d 4615
8dfa8df9
JH
4616: check for void type
4617echo " "
4618echo "Checking to see how well your C compiler groks the void type..." >&4
4619case "$voidflags" in
4620'')
4621 $cat >try.c <<'EOCP'
4622#if TRY & 1
4623void sub() {
4624#else
4625sub() {
4626#endif
4627 extern void moo(); /* function returning void */
4628 void (*goo)(); /* ptr to func returning void */
4629#if TRY & 8
4630 void *hue; /* generic ptr */
4631#endif
4632#if TRY & 2
4633 void (*foo[10])();
4634#endif
4635
4636#if TRY & 4
4637 if(goo == moo) {
4638 exit(0);
4639 }
4640#endif
4641 exit(0);
4642}
4643int main() { sub(); }
4644EOCP
4645 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4646 voidflags=$defvoidused
4647 echo "Good. It appears to support void to the level $package wants.">&4
4648 if $contains warning .out >/dev/null 2>&1; then
4649 echo "However, you might get some warnings that look like this:"
4650 $cat .out
4651 fi
4652 else
4653echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4654 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4655 echo "It supports 1..."
4656 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4657 echo "It also supports 2..."
4658 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4659 voidflags=7
4660 echo "And it supports 4 but not 8 definitely."
4661 else
4662 echo "It doesn't support 4..."
4663 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4664 voidflags=11
4665 echo "But it supports 8."
4666 else
4667 voidflags=3
4668 echo "Neither does it support 8."
4669 fi
4670 fi
4671 else
4672 echo "It does not support 2..."
4673 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4674 voidflags=13
4675 echo "But it supports 4 and 8."
4676 else
4677 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4678 voidflags=5
4679 echo "And it supports 4 but has not heard about 8."
4680 else
4681 echo "However it supports 8 but not 4."
4682 fi
4683 fi
4684 fi
4685 else
4686 echo "There is no support at all for void."
4687 voidflags=0
4688 fi
4689 fi
4690esac
4691case "$voidflags" in
4692"$defvoidused") ;;
4693*) $cat >&4 <<'EOM'
4694 Support flag bits are:
4695 1: basic void declarations.
4696 2: arrays of pointers to functions returning void.
4697 4: operations between pointers to and addresses of void functions.
4698 8: generic void pointers.
4699EOM
4700 dflt="$voidflags";
4701 rp="Your void support flags add up to what?"
4702 . ./myread
4703 voidflags="$ans"
4704 ;;
4705esac
4706$rm -f try.* .out
4707
4708: check for length of pointer
4709echo " "
4710case "$ptrsize" in
4711'')
4712 echo "Checking to see how big your pointers are..." >&4
4713 if test "$voidflags" -gt 7; then
4714 echo '#define VOID_PTR char *' > try.c
4715 else
4716 echo '#define VOID_PTR void *' > try.c
4717 fi
4718 $cat >>try.c <<'EOCP'
4719#include <stdio.h>
4720int main()
4721{
4722 printf("%d\n", (int)sizeof(VOID_PTR));
4723 exit(0);
4724}
4725EOCP
4726 set try
4727 if eval $compile_ok; then
5440bc8e 4728 ptrsize=`$run ./try`
8dfa8df9
JH
4729 echo "Your pointers are $ptrsize bytes long."
4730 else
4731 dflt='4'
4732 echo "(I can't seem to compile the test program. Guessing...)" >&4
4733 rp="What is the size of a pointer (in bytes)?"
4734 . ./myread
4735 ptrsize="$ans"
4736 fi
4737 ;;
4738esac
4739$rm -f try.c try
4740
4741: check for long long
4742echo " "
4743echo "Checking to see if you have long long..." >&4
4744echo 'int main() { long long x = 7; return 0; }' > try.c
4745set try
4746if eval $compile; then
4747 val="$define"
4748 echo "You have long long."
4749else
4750 val="$undef"
4751 echo "You do not have long long."
4752fi
4753$rm try.*
4754set d_longlong
4755eval $setvar
4756
4757: check for length of long long
4758case "${d_longlong}${longlongsize}" in
4759$define)
4760 echo " "
4761 echo "Checking to see how big your long longs are..." >&4
4762 $cat >try.c <<'EOCP'
4763#include <stdio.h>
4764int main()
4765{
4766 printf("%d\n", (int)sizeof(long long));
4767 return(0);
4768}
4769EOCP
4770 set try
4771 if eval $compile_ok; then
5440bc8e 4772 longlongsize=`$run ./try`
8dfa8df9
JH
4773 echo "Your long longs are $longlongsize bytes long."
4774 else
4775 dflt='8'
4776 echo " "
4777 echo "(I can't seem to compile the test program. Guessing...)"
4778 rp="What is the size of a long long (in bytes)?"
4779 . ./myread
4780 longlongsize="$ans"
4781 fi
4782 if $test "X$longsize" = "X$longlongsize"; then
4783 echo "(That isn't any different from an ordinary long.)"
4784 fi
4785 ;;
4786esac
4787$rm -f try.* try
4788
4789: determine filename position in cpp output
4790echo " "
4791echo "Computing filename position in cpp output for #include directives..." >&4
4792echo '#include <stdio.h>' > foo.c
4793$cat >fieldn <<EOF
4794$startsh
4795$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4796$grep '^[ ]*#.*stdio\.h' | \
4797while read cline; do
4798 pos=1
4799 set \$cline
4800 while $test \$# -gt 0; do
4801 if $test -r \`echo \$1 | $tr -d '"'\`; then
4802 echo "\$pos"
4803 exit 0
4804 fi
4805 shift
4806 pos=\`expr \$pos + 1\`
4807 done
4808done
4809EOF
4810chmod +x fieldn
4811fieldn=`./fieldn`
4812$rm -f foo.c fieldn
4813case $fieldn in
4814'') pos='???';;
48151) pos=first;;
48162) pos=second;;
48173) pos=third;;
4818*) pos="${fieldn}th";;
4819esac
4820echo "Your cpp writes the filename in the $pos field of the line."
4821
4822: locate header file
4823$cat >findhdr <<EOF
4824$startsh
4825wanted=\$1
4826name=''
4827for usrincdir in $usrinc
4828do
4829 if test -f \$usrincdir/\$wanted; then
4830 echo "\$usrincdir/\$wanted"
4831 exit 0
4832 fi
4833done
4834awkprg='{ print \$$fieldn }'
4835echo "#include <\$wanted>" > foo\$\$.c
4836$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4837$grep "^[ ]*#.*\$wanted" | \
4838while read cline; do
4839 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4840 case "\$name" in
4841 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4842 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4843 *) exit 2;;
4844 esac;
4845done;
4846#
4847# status = 0: grep returned 0 lines, case statement not executed
4848# status = 1: headerfile found
4849# status = 2: while loop executed, no headerfile found
4850#
4851status=\$?
4852$rm -f foo\$\$.c;
4853if test \$status -eq 1; then
4854 exit 0;
4855fi
4856exit 1
4857EOF
4858chmod +x findhdr
4859
4860: define an alternate in-header-list? function
4861inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4862cont=true; xxf="echo \"<\$1> found.\" >&4";
4863case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4864*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4865esac;
4866case $# in 4) instead=instead;; *) instead="at last";; esac;
4867while $test "$cont"; do
4868 xxx=`./findhdr $1`
4869 var=$2; eval "was=\$$2";
4870 if $test "$xxx" && $test -r "$xxx";
4871 then eval $xxf;
4872 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4873 cont="";
4874 else eval $xxnf;
4875 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4876 set $yyy; shift; shift; yyy=$@;
4877 case $# in 0) cont="";;
4878 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4879 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4880 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4881 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4882 esac;
4883done;
4884while $test "$yyy";
4885do set $yyy; var=$2; eval "was=\$$2";
4886 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4887 set $yyy; shift; shift; yyy=$@;
4888done'
4889
4890: see if inttypes.h is available
4891: we want a real compile instead of Inhdr because some systems
4892: have an inttypes.h which includes non-existent headers
4893echo " "
4894$cat >try.c <<EOCP
4895#include <inttypes.h>
4896int main() {
4897 static int32_t foo32 = 0x12345678;
4898}
4899EOCP
4900set try
4901if eval $compile; then
4902 echo "<inttypes.h> found." >&4
4903 val="$define"
4904else
4905 echo "<inttypes.h> NOT found." >&4
4906 val="$undef"
4907fi
4908$rm -f try.c try
4909set i_inttypes
4910eval $setvar
4911
4912: check for int64_t
4913echo " "
4914echo "Checking to see if you have int64_t..." >&4
4915$cat >try.c <<EOCP
4916#include <sys/types.h>
4917#$i_inttypes I_INTTYPES
4918#ifdef I_INTTYPES
4919#include <inttypes.h>
4920#endif
4921int main() { int64_t x = 7; }
4922EOCP
4923set try
4924if eval $compile; then
4925 val="$define"
4926 echo "You have int64_t."
4927else
4928 val="$undef"
4929 echo "You do not have int64_t."
4930fi
4931$rm -f try try.*
4932set d_int64_t
4933eval $setvar
4934
4935
4936echo " "
4937echo "Checking which 64-bit integer type we could use..." >&4
4938
4939case "$intsize" in
49408) val=int
4941 set quadtype
4942 eval $setvar
4943 val='"unsigned int"'
4944 set uquadtype
4945 eval $setvar
4946 quadkind=1
4947 ;;
4948*) case "$longsize" in
4949 8) val=long
4950 set quadtype
4951 eval $setvar
4952 val='"unsigned long"'
4953 set uquadtype
4954 eval $setvar
4955 quadkind=2
4956 ;;
4957 *) case "$d_longlong:$longlongsize" in
4958 define:8)
4959 val='"long long"'
4960 set quadtype
4961 eval $setvar
4962 val='"unsigned long long"'
4963 set uquadtype
4964 eval $setvar
4965 quadkind=3
4966 ;;
4967 *) case "$d_int64_t" in
4968 define)
4969 val=int64_t
4970 set quadtype
4971 eval $setvar
4972 val=uint64_t
4973 set uquadtype
4974 eval $setvar
4975 quadkind=4
4976 ;;
4977 esac
4978 ;;
4979 esac
4980 ;;
4981 esac
4982 ;;
4983esac
4984
4985case "$quadtype" in
4986'') echo "Alas, no 64-bit integer types in sight." >&4
4987 d_quad="$undef"
4988 ;;
4989*) echo "We could use '$quadtype' for 64-bit integers." >&4
4990 d_quad="$define"
4991 ;;
4992esac
4993
b4eb6b3d
JH
4994
4995case "$uselonglong" in
4996"$define"|true|[yY]*)
4997 cat <<EOM >&4
4998
4999*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5000EOM
5001 use64bitint="$define"
5002 ;;
5003esac
5004case "$use64bits" in
5005"$define"|true|[yY]*)
5006 cat <<EOM >&4
5007
5008*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5009EOM
5010 use64bitint="$define"
5011 ;;
5012esac
5013case "$use64bitints" in
5014"$define"|true|[yY]*)
5015 cat <<EOM >&4
5016
5017*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5018EOM
5019 use64bitint="$define"
5020 ;;
5021esac
5022case "$use64bitsint" in
5023"$define"|true|[yY]*)
5024 cat <<EOM >&4
5025
5026*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5027EOM
5028 use64bitint="$define"
5029 ;;
5030esac
5031case "$uselonglongs" in
5032"$define"|true|[yY]*)
5033 cat <<EOM >&4
5034
5035*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5036EOM
5037 use64bitint="$define"
5038 ;;
5039esac
5040case "$use64bitsall" in
5041"$define"|true|[yY]*)
5042 cat <<EOM >&4
5043
5044*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5045EOM
5046 use64bitall="$define"
5047 ;;
5048esac
5049
5050case "$ccflags" in
5051*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5052esac
5053case "$use64bitall" in
5054"$define"|true|[yY]*) use64bitint="$define" ;;
5055esac
5056
5057case "$longsize" in
50588) cat <<EOM
5059
5060You have natively 64-bit long integers.
5061EOM
5062 val="$define"
5063 ;;
5064*) case "$use64bitint" in
5065 "$define"|true|[yY]*) dflt='y';;
5066 *) dflt='n';;
5067 esac
8dfa8df9
JH
5068 case "$d_quad" in
5069 "$define") ;;
5070 *) dflt='n' ;;
5071 esac
b4eb6b3d
JH
5072 cat <<EOM
5073
5074Perl can be built to take advantage of 64-bit integer types
5075on some systems. To do so, Configure can be run with -Duse64bitint.
5076Choosing this option will most probably introduce binary incompatibilities.
5077
5078If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5079(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5080EOM
5081 rp='Try to use 64-bit integers, if available?'
5082 . ./myread
5083 case "$ans" in
5084 [yY]*) val="$define" ;;
5085 *) val="$undef" ;;
5086 esac
5087 ;;
5088esac
5089set use64bitint
5090eval $setvar
5091
5092case "$use64bitall" in
5093"$define"|true|[yY]*) dflt='y' ;;
5094*) case "$longsize" in
5095 8) dflt='y' ;;
5096 *) dflt='n' ;;
5097 esac
5098 ;;
5099esac
5100cat <<EOM
5101
5102You may also choose to try maximal 64-bitness. It means using as much
510364-bitness as possible on the platform. This in turn means even more
5104binary incompatibilities. On the other hand, your platform may not
5105have any more 64-bitness available than what you already have chosen.
5106
5107If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5108(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5109EOM
5110rp='Try to use maximal 64-bit support, if available?'
5111. ./myread
5112case "$ans" in
5113[yY]*) val="$define" ;;
5114*) val="$undef" ;;
5115esac
5116set use64bitall
5117eval $setvar
5118case "$use64bitall" in
5119"$define")
5120 case "$use64bitint" in
5121 "$undef")
5122 cat <<EOM
5123
5124Since you have chosen a maximally 64-bit build, I'm also turning on
5125the use of 64-bit integers.
5126EOM
5127 use64bitint="$define" ;;
5128 esac
5129 ;;
5130esac
5131
8dfa8df9
JH
5132case "$use64bitall" in
5133"$define"|true|[yY]*)
5134 case "$ptrsize" in
5135 4) cat <<EOM >&4
5136
5137*** You have chosen a maximally 64-bit build, but your pointers
5138*** are only 4 bytes wide, disabling maximal 64-bitness.
5139
5140EOM
5141 use64bitall="$undef"
5142 case "$use64bitint" in
5143 "$define"|true|[yY]*) ;;
5144 *) cat <<EOM >&4
5145
5146*** Downgrading from maximal 64-bitness to using 64-bit integers.
5147
5148EOM
5149 use64bitint="$define"
5150 ;;
5151 esac
5152 ;;
5153 esac
5154 ;;
5155esac
5156
b4eb6b3d
JH
5157case "$use64bitint" in
5158"$define"|true|[yY]*)
5159: Look for a hint-file generated 'call-back-unit'. If the
5160: user has specified that a 64-bit perl is to be built,
5161: we may need to set or change some other defaults.
5162 if $test -f use64bitint.cbu; then
5163 echo "Your platform has some specific hints for 64-bit integers, using them..."
5164 . ./use64bitint.cbu
5165 fi
5166 case "$longsize" in
5167 4) case "$archname64" in
5168 '') archname64=64int ;;
5169 esac
5170 ;;
5171 esac
5172 ;;
5173esac
5174
5175case "$use64bitall" in
5176"$define"|true|[yY]*)
5177: Look for a hint-file generated 'call-back-unit'. If the
5178: user has specified that a maximally 64-bit perl is to be built,
5179: we may need to set or change some other defaults.
5180 if $test -f use64bitall.cbu; then
5181 echo "Your platform has some specific hints for 64-bit builds, using them..."
5182 . ./use64bitall.cbu
5183 fi
5184 case "$longsize" in
5185 4) case "$archname64" in
5186 ''|64int) archname64=64all ;;
5187 esac
5188 ;;
5189 esac
5190 ;;
5191esac
5192
5193echo " "
5194echo "Checking for GNU C Library..." >&4
5440bc8e 5195cat >try.c <<EOM
b4eb6b3d
JH
5196#include <stdio.h>
5197int main()
5198{
5199#ifdef __GLIBC__
5200 exit(0);
5201#else
5202 exit(1);
5203#endif
5204}
5205EOM
5440bc8e
JH
5206set try
5207if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5208 val="$define"
5209 echo "You are using the GNU C Library"
5210else
5211 val="$undef"
5212 echo "You are not using the GNU C Library"
5213fi
5440bc8e 5214$rm -f try try.*
b4eb6b3d
JH
5215set d_gnulibc
5216eval $setvar
5217
5218: see if nm is to be used to determine whether a symbol is defined or not
5219case "$usenm" in
5220'')
5221 dflt=''
c1a7f87b
JH
5222 case "$d_gnulibc" in
5223 "$define")
5224 echo " "
5225 echo "nm probably won't work on the GNU C Library." >&4
5226 dflt=n
bd9b35c9 5227 ;;
c1a7f87b
JH
5228 esac
5229 case "$dflt" in
5230 '')
5231 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5232 echo " "
5233 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5234 echo "'nm' won't be sufficient on this sytem." >&4
5235 dflt=n
5236 fi
5237 ;;
5238 esac
5239 case "$dflt" in
5240 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5241 if $test $dflt -gt 20; then
5242 dflt=y
5243 else
5244 dflt=n
5245 fi
bd9b35c9
JH
5246 ;;
5247 esac
bd9b35c9
JH
5248 ;;
5249*)
c1a7f87b
JH
5250 case "$usenm" in
5251 true|$define) dflt=y;;
5252 *) dflt=n;;
5253 esac
bd9b35c9
JH
5254 ;;
5255esac
5256$cat <<EOM
5257
c1a7f87b
JH
5258I can use $nm to extract the symbols from your C libraries. This
5259is a time consuming task which may generate huge output on the disk (up
5260to 3 megabytes) but that should make the symbols extraction faster. The
5261alternative is to skip the 'nm' extraction part and to compile a small
5262test program instead to determine whether each symbol is present. If
5263you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5264this may be the best solution.
5265
5266You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5267
5268EOM
c1a7f87b
JH
5269rp="Shall I use $nm to extract C symbols from the libraries?"
5270. ./myread
5271case "$ans" in
5272[Nn]*) usenm=false;;
5273*) usenm=true;;
bd9b35c9 5274esac
bd9b35c9 5275
c1a7f87b
JH
5276runnm=$usenm
5277case "$reuseval" in
5278true) runnm=false;;
8e07c86e 5279esac
29209bc5 5280
c1a7f87b
JH
5281: nm options which may be necessary
5282case "$nm_opt" in
5283'') if $test -f /mach_boot; then
5284 nm_opt='' # Mach
5285 elif $test -d /usr/ccs/lib; then
5286 nm_opt='-p' # Solaris (and SunOS?)
5287 elif $test -f /dgux; then
5288 nm_opt='-p' # DG-UX
5289 elif $test -f /lib64/rld; then
5290 nm_opt='-p' # 64-bit Irix
5291 else
5292 nm_opt=''
5293 fi;;
5294esac
bd9b35c9 5295
c1a7f87b
JH
5296: nm options which may be necessary for shared libraries but illegal
5297: for archive libraries. Thank you, Linux.
5298case "$nm_so_opt" in
5299'') case "$myuname" in
5300 *linux*)
5301 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5302 nm_so_opt='--dynamic'
5303 fi
5304 ;;
bd9b35c9 5305 esac
c1a7f87b
JH
5306 ;;
5307esac
8e07c86e 5308
c1a7f87b
JH
5309case "$runnm" in
5310true)
5311: get list of predefined functions in a handy place
5312echo " "
5313case "$libc" in
5314'') libc=unknown
5315 case "$libs" in
5316 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5317 esac
ff935051
JH
5318 ;;
5319esac
c1a7f87b
JH
5320case "$libs" in
5321'') ;;
5322*) for thislib in $libs; do
5323 case "$thislib" in
5324 -lc|-lc_s)
5325 : Handle C library specially below.
5326 ;;
5327 -l*)
5328 thislib=`echo $thislib | $sed -e 's/^-l//'`
5329 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5330 :
5331 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5332 :
5333 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5334 :
5335 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5336 :
5337 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5338 :
5339 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5340 :
5341 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5342 :
5343 else
5344 try=''
5345 fi
5346 libnames="$libnames $try"
5347 ;;
5348 *) libnames="$libnames $thislib" ;;
34d1710f 5349 esac
c1a7f87b 5350 done
4633a7c4
LW
5351 ;;
5352esac
c1a7f87b
JH
5353xxx=normal
5354case "$libc" in
5355unknown)
5356 set /lib/libc.$so
5357 for xxx in $libpth; do
5358 $test -r $1 || set $xxx/libc.$so
5359 : The messy sed command sorts on library version numbers.
5360 $test -r $1 || \
5361 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5362 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5363 h
5364 s/[0-9][0-9]*/0000&/g
5365 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5366 G
5367 s/\n/ /' | \
381aa1ff 5368 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5369 eval set \$$#
5370 done
5371 $test -r $1 || set /usr/ccs/lib/libc.$so
5372 $test -r $1 || set /lib/libsys_s$_a
5373 ;;
5374*)
5375 set blurfl
5376 ;;
a4f3eea9 5377esac
c1a7f87b
JH
5378if $test -r "$1"; then
5379 echo "Your (shared) C library seems to be in $1."
5380 libc="$1"
5381elif $test -r /lib/libc && $test -r /lib/clib; then
5382 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5383 xxx=apollo
5384 libc='/lib/clib /lib/libc'
5385 if $test -r /lib/syslib; then
5386 echo "(Your math library is in /lib/syslib.)"
5387 libc="$libc /lib/syslib"
5388 fi
5389elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5390 echo "Your C library seems to be in $libc, as you said before."
5391elif $test -r $incpath/usr/lib/libc$_a; then
5392 libc=$incpath/usr/lib/libc$_a;
5393 echo "Your C library seems to be in $libc. That's fine."
5394elif $test -r /lib/libc$_a; then
5395 libc=/lib/libc$_a;
5396 echo "Your C library seems to be in $libc. You're normal."
5397else
5398 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5399 :
5400 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5401 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5402 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5403 :
5404 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405 :
5406 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5407 :
5408 else
5409 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5410 fi
5411 if $test -r "$tans"; then
5412 echo "Your C library seems to be in $tans, of all places."
5413 libc=$tans
5414 else
5415 libc='blurfl'
5416 fi
5417fi
5418if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5419 dflt="$libc"
5420 cat <<EOM
a4f3eea9 5421
c1a7f87b
JH
5422If the guess above is wrong (which it might be if you're using a strange
5423compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5424
5425EOM
a4f3eea9 5426else
c1a7f87b 5427 dflt=''
381aa1ff 5428 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5429 cat >&4 <<EOM
5430I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5431
c1a7f87b
JH
5432EOM
5433 $sed 's/^/ /' libpath
5434 cat <<EOM
29209bc5 5435
c1a7f87b 5436None of these seems to contain your C library. I need to get its name...
a4f3eea9 5437
bd9b35c9 5438EOM
bd9b35c9 5439fi
c1a7f87b
JH
5440fn=f
5441rp='Where is your C library?'
5442. ./getfile
5443libc="$ans"
a4f3eea9 5444
c1a7f87b 5445echo " "
381aa1ff 5446echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5447set X `cat libnames`
5448shift
5449xxx=files
5450case $# in 1) xxx=file; esac
5451echo "Extracting names from the following $xxx for later perusal:" >&4
5452echo " "
5453$sed 's/^/ /' libnames >&4
5454echo " "
5455$echo $n "This may take a while...$c" >&4
a4f3eea9 5456
c1a7f87b
JH
5457for file in $*; do
5458 case $file in
5459 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5460 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5461 esac
c1a7f87b 5462done >libc.tmp
a4f3eea9 5463
c1a7f87b
JH
5464$echo $n ".$c"
5465$grep fprintf libc.tmp > libc.ptf
5466xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5467xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5468xxx='[ADTSIW]'
5469if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5470 eval $xscan;\
5471 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5472 eval $xrun
5473elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5474 eval $xscan;\
5475 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5476 eval $xrun
5477elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5478 eval $xscan;\
5479 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480 eval $xrun
5481elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5482 eval $xscan;\
5483 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484 eval $xrun
5485elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5486 eval $xscan;\
5487 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488 eval $xrun
5489elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5490 eval $xscan;\
5491 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492 eval $xrun
5493elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5494 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5495 eval $xscan;\
5496 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5497 eval $xrun
5498elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5499 eval $xscan;\
5500 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501 eval $xrun
5502elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5503 eval $xscan;\
5504 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505 eval $xrun
5506elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5507 eval $xscan;\
5508 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509 eval $xrun
5510elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5511 eval $xscan;\
5512 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513 eval $xrun
5514elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5515 eval $xscan;\
5516 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517 eval $xrun
5518elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5519 eval $xscan;\
5520 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521 eval $xrun
5522elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5523 eval $xscan;\
5524 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525 eval $xrun
5526else
5527 $nm -p $* 2>/dev/null >libc.tmp
5528 $grep fprintf libc.tmp > libc.ptf
5529 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5530 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5531 then
5532 nm_opt='-p'
5533 eval $xrun
bd9b35c9 5534 else
c1a7f87b
JH
5535 echo " "
5536 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5537 com=''
5538 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5539 for thisname in $libnames $libc; do
5540 $ar t $thisname >>libc.tmp
5541 done
5542 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5543 echo "Ok." >&4
5544 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5545 # Repeat libc to extract forwarders to DLL entries too
5546 for thisname in $libnames $libc; do
5547 $ar tv $thisname >>libc.tmp
5548 # Revision 50 of EMX has bug in $ar.
5549 # it will not extract forwarders to DLL entries
5550 # Use emximp which will extract exactly them.
5551 emximp -o tmp.imp $thisname \
5552 2>/dev/null && \
5553 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5554 < tmp.imp >>libc.tmp
5555 $rm tmp.imp
5556 done
5557 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5558 echo "Ok." >&4
5559 else
5560 echo "$ar didn't seem to work right." >&4
5561 echo "Maybe this is a Cray...trying bld instead..." >&4
5562 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5563 then
5564 for thisname in $libnames; do
5565 bld t $libnames | \
5566 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5567 $ar t $thisname >>libc.tmp
5568 done
5569 echo "Ok." >&4
bd9b35c9 5570 else
c1a7f87b
JH
5571 echo "That didn't work either. Giving up." >&4
5572 exit 1
bd9b35c9 5573 fi
c1a7f87b 5574 fi
a4f3eea9 5575 fi
a4f3eea9 5576fi
c1a7f87b
JH
5577nm_extract="$com"
5578if $test -f /lib/syscalls.exp; then
5579 echo " "
5580 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
a8c676c6 5581 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
c1a7f87b
JH
5582fi
5583;;
5584esac
5585$rm -f libnames libpath
bd9b35c9 5586
c1a7f87b
JH
5587: is a C symbol defined?
5588csym='tlook=$1;
5589case "$3" in
5590-v) tf=libc.tmp; tc=""; tdc="";;
5591-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5592*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5593esac;
5594tx=yes;
5595case "$reuseval-$4" in
5596true-) ;;
5597true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5598esac;
5599case "$tx" in
5600yes)
5601 case "$runnm" in
5602 true)
5603 if $contains $tlook $tf >/dev/null 2>&1;
5604 then tval=true;
5605 else tval=false;
5606 fi;;
5607 *)
5608 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5609 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5610 then tval=true;
5611 else tval=false;
5612 fi;
5613 $rm -f t t.c;;
5614 esac;;
5615*)
5616 case "$tval" in
5617 $define) tval=true;;
5618 *) tval=false;;
5619 esac;;
5620esac;
5621eval "$2=$tval"'
bd9b35c9 5622
c1a7f87b
JH
5623: define an is-in-libc? function
5624inlibc='echo " "; td=$define; tu=$undef;
5625sym=$1; var=$2; eval "was=\$$2";
5626tx=yes;
5627case "$reuseval$was" in
5628true) ;;
5629true*) tx=no;;
5630esac;
5631case "$tx" in
5632yes)
5633 set $sym tres -f;
5634 eval $csym;
5635 case "$tres" in
5636 true)
5637 echo "$sym() found." >&4;
5638 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5639 *)
5640 echo "$sym() NOT found." >&4;
5641 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5642 esac;;
bd9b35c9 5643*)
c1a7f87b
JH
5644 case "$was" in
5645 $define) echo "$sym() found." >&4;;
5646 *) echo "$sym() NOT found." >&4;;
5647 esac;;
5648esac'
5649
b4eb6b3d
JH
5650: see if sqrtl exists
5651set sqrtl d_sqrtl
c1a7f87b
JH
5652eval $inlibc
5653
b4eb6b3d
JH
5654case "$ccflags" in
5655*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5656esac
b4eb6b3d
JH
5657
5658case "$uselongdouble" in
5659$define|true|[yY]*) dflt='y';;
5660*) dflt='n';;
5661esac
5662cat <<EOM
5663
5664Perl can be built to take advantage of long doubles which
5665(if available) may give more accuracy and range for floating point numbers.
5666
5667If this doesn't make any sense to you, just accept the default '$dflt'.
5668EOM
5669rp='Try to use long doubles if available?'
c1a7f87b
JH
5670. ./myread
5671case "$ans" in
b4eb6b3d
JH
5672y|Y) val="$define" ;;
5673*) val="$undef" ;;
5674esac
5675set uselongdouble
5676eval $setvar
bfb7748a 5677
b4eb6b3d
JH
5678case "$uselongdouble" in
5679true|[yY]*) uselongdouble="$define" ;;
5680esac
bfb7748a 5681
b4eb6b3d
JH
5682case "$uselongdouble" in
5683$define)
5684: Look for a hint-file generated 'call-back-unit'. If the
5685: user has specified that long doubles should be used,
5686: we may need to set or change some other defaults.
5687 if $test -f uselongdouble.cbu; then
5688 echo "Your platform has some specific hints for long doubles, using them..."
5689 . ./uselongdouble.cbu
5690 else
5691 $cat <<EOM
5692(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5693EOM
b4eb6b3d
JH
5694 fi
5695 ;;
5696esac
5697
5698case "$uselongdouble:$d_sqrtl" in
5699$define:$undef)
5700 $cat <<EOM >&4
5701
5702*** You requested the use of long doubles but you do not seem to have
5703*** the mathematic functions for long doubles. I'm disabling the use
5704*** of long doubles.
5705
5706EOM
5707 uselongdouble=$undef
5708 ;;
5709esac
5710
5711: check for length of double
5712echo " "
5713case "$doublesize" in
5714'')
5715 echo "Checking to see how big your double precision numbers are..." >&4
5716 $cat >try.c <<'EOCP'
5717#include <stdio.h>
5718int main()
5719{
5720 printf("%d\n", (int)sizeof(double));
5721 exit(0);
5722}
5723EOCP
5724 set try
5725 if eval $compile_ok; then
5440bc8e 5726 doublesize=`$run ./try`
b4eb6b3d
JH
5727 echo "Your double is $doublesize bytes long."
5728 else
5729 dflt='8'
5730 echo "(I can't seem to compile the test program. Guessing...)"
5731 rp="What is the size of a double precision number (in bytes)?"
5732 . ./myread
5733 doublesize="$ans"
5734 fi
5735 ;;
5736esac
5737$rm -f try.c try
5738
5739: check for long doubles
5740echo " "
5741echo "Checking to see if you have long double..." >&4
5742echo 'int main() { long double x = 7.0; }' > try.c
5743set try
5744if eval $compile; then
5745 val="$define"
5746 echo "You have long double."
5747else
5748 val="$undef"
5749 echo "You do not have long double."
5750fi
5751$rm try.*
5752set d_longdbl
5753eval $setvar
5754
5755: check for length of long double
5756case "${d_longdbl}${longdblsize}" in
5757$define)
5758 echo " "
5759 echo "Checking to see how big your long doubles are..." >&4
5760 $cat >try.c <<'EOCP'
5761#include <stdio.h>
5762int main()
5763{
5764 printf("%d\n", sizeof(long double));
5765}
5766EOCP
5767 set try
5768 set try
5769 if eval $compile; then
5440bc8e 5770 longdblsize=`$run ./try`
b4eb6b3d
JH
5771 echo "Your long doubles are $longdblsize bytes long."
5772 else
5773 dflt='8'
5774 echo " "
5775 echo "(I can't seem to compile the test program. Guessing...)" >&4
5776 rp="What is the size of a long double (in bytes)?"
5777 . ./myread
5778 longdblsize="$ans"
5779 fi
5780 if $test "X$doublesize" = "X$longdblsize"; then
5781 echo "(That isn't any different from an ordinary double.)"
5782 fi
5783 ;;
5784esac
5785$rm -f try.* try
5786
51de783f 5787case "$useperlio" in
5a3a8a02 5788$define|true|[yY]*|'') dflt='y';;
51de783f
JH
5789*) dflt='n';;
5790esac
5791cat <<EOM
5792
5793Previous version of $package used the standard IO mechanisms as
5a3a8a02 5794defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 5795alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
5796stdio mechanism is still available if needed. The abstraction layer
5797can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
5798Using PerlIO with sfio may cause problems with some extension modules.
5799
5800If this doesn't make any sense to you, just accept the default '$dflt'.
5801EOM
5a3a8a02 5802rp='Use the PerlIO abstraction layer?'
51de783f
JH
5803. ./myread
5804case "$ans" in
5805y|Y)
5806 val="$define"
5a3a8a02 5807 ;;
51de783f
JH
5808*)
5809 echo "Ok, doing things the stdio way."
5810 val="$undef"
5811 ;;
5812esac
5813set useperlio
5814eval $setvar
5815
5816case "$usesocks" in
5817$define|true|[yY]*)
5818 case "$useperlio" in
5819 $define|true|[yY]*) ;;
5820 *) cat >&4 <<EOM
5821
5822You are using the SOCKS proxy protocol library which means that you
5823should also use the PerlIO layer. You may be headed for trouble.
5824
5825EOM
5826 ;;
5827 esac
5828 ;;
5829esac
5830
5831
b4eb6b3d
JH
5832: determine the architecture name
5833echo " "
5834if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5835 tarch=`arch`"-$osname"
5836elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5837 if uname -m > tmparch 2>&1 ; then
5838 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5839 -e 's/$/'"-$osname/" tmparch`
5840 else
5841 tarch="$osname"
5842 fi
5843 $rm -f tmparch
5844else
5845 tarch="$osname"
5846fi
5847case "$myarchname" in
5848''|"$tarch") ;;
5849*)
5850 echo "(Your architecture name used to be $myarchname.)"
5851 archname=''
5852 ;;
5853esac
5440bc8e
JH
5854case "$targetarch" in
5855'') ;;
5856*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5857esac
b4eb6b3d
JH
5858myarchname="$tarch"
5859case "$archname" in
5860'') dflt="$tarch";;
5861*) dflt="$archname";;
5862esac
5863rp='What is your architecture name'
5864. ./myread
5865archname="$ans"
5866case "$usethreads" in
5867$define)
5868 echo "Threads selected." >&4
5869 case "$archname" in
5870 *-thread*) echo "...and architecture name already has -thread." >&4
5871 ;;
5872 *) archname="$archname-thread"
5873 echo "...setting architecture name to $archname." >&4
5874 ;;
5875 esac
5876 ;;
5877esac
5878case "$usemultiplicity" in
5879$define)
5880 echo "Multiplicity selected." >&4
5881 case "$archname" in
5882 *-multi*) echo "...and architecture name already has -multi." >&4
5883 ;;
5884 *) archname="$archname-multi"
5885 echo "...setting architecture name to $archname." >&4
5886 ;;
5887 esac
5888 ;;
5889esac
5890case "$use64bitint$use64bitall" in
5891*"$define"*)
5892 case "$archname64" in
5893 '')
5894 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5895 ;;
5896 *)
5897 case "$use64bitint" in
5898 "$define") echo "64 bit integers selected." >&4 ;;
5899 esac
5900 case "$use64bitall" in
5901 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5902 esac
5903 case "$archname" in
5904 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5905 ;;
5906 *) archname="$archname-$archname64"
5907 echo "...setting architecture name to $archname." >&4
5908 ;;
5909 esac
5910 ;;
5911 esac
5912esac
5913case "$uselongdouble" in
5914$define)
5915 echo "Long doubles selected." >&4
5916 case "$longdblsize" in
5917 $doublesize)
5918 "...but long doubles are equal to doubles, not changing architecture name." >&4
5919 ;;
5920 *)
5921 case "$archname" in
5922 *-ld*) echo "...and architecture name already has -ld." >&4
5923 ;;
5924 *) archname="$archname-ld"
5925 echo "...setting architecture name to $archname." >&4
5926 ;;
5927 esac
5928 ;;
5929 esac
5930 ;;
5931esac
51de783f
JH
5932case "$useperlio" in
5933$define)
5934 echo "Perlio selected." >&4
d46c9a2d
JH
5935 ;;
5936*)
5937 echo "Perlio not selected, using stdio." >&4
51de783f 5938 case "$archname" in
d46c9a2d 5939 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 5940 ;;
d46c9a2d 5941 *) archname="$archname-stdio"
51de783f
JH
5942 echo "...setting architecture name to $archname." >&4
5943 ;;
5944 esac
5945 ;;
5946esac
b4eb6b3d
JH
5947
5948: determine root of directory hierarchy where package will be installed.
5949case "$prefix" in
5950'')
5951 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5952 ;;
5953*)
5954 dflt="$prefix"
5955 ;;
5956esac
5957$cat <<EOM
5958
5959By default, $package will be installed in $dflt/bin, manual pages
5960under $dflt/man, etc..., i.e. with $dflt as prefix for all
5961installation directories. Typically this is something like /usr/local.
5962If you wish to have binaries under /usr/bin but other parts of the
5963installation under /usr/local, that's ok: you will be prompted
5964separately for each of the installation directories, the prefix being
5965only used to set the defaults.
5966
5967EOM
5968fn=d~
5969rp='Installation prefix to use?'
5970. ./getfile
5971oldprefix=''
5972case "$prefix" in
5973'') ;;
5974*)
5975 case "$ans" in
5976 "$prefix") ;;
5977 *) oldprefix="$prefix";;
5978 esac
5979 ;;
5980esac
5981prefix="$ans"
5982prefixexp="$ansexp"
5983
a6d26a0d
JH
5984case "$afsroot" in
5985'') afsroot=/afs ;;
5986*) afsroot=$afsroot ;;
5987esac
5988
b4eb6b3d
JH
5989: is AFS running?
5990echo " "
5991case "$afs" in
5992$define|true) afs=true ;;
5993$undef|false) afs=false ;;
a6d26a0d 5994*) if test -d $afsroot; then
b4eb6b3d
JH
5995 afs=true
5996 else
5997 afs=false
5998 fi
5999 ;;
6000esac
6001if $afs; then
6002 echo "AFS may be running... I'll be extra cautious then..." >&4
6003else
6004 echo "AFS does not seem to be running..." >&4
6005fi
6006
6007: determine installation prefix for where package is to be installed.
6008if $afs; then
6009$cat <<EOM
6010
6011Since you are running AFS, I need to distinguish the directory in which
6012files will reside from the directory in which they are installed (and from
6013which they are presumably copied to the former directory by occult means).
6014
6015EOM
6016 case "$installprefix" in
6017 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6018 *) dflt="$installprefix";;
6019 esac
6020else
6021$cat <<EOM
6022
6023In some special cases, particularly when building $package for distribution,
6024it is convenient to distinguish between the directory in which files should
6025be installed from the directory ($prefix) in which they
6026will eventually reside. For most users, these two directories are the same.
6027
6028EOM
6029 case "$installprefix" in
6030 '') dflt=$prefix ;;
6031 *) dflt=$installprefix;;
6032 esac
6033fi
6034fn=d~
6035rp='What installation prefix should I use for installing files?'
6036. ./getfile
6037installprefix="$ans"
6038installprefixexp="$ansexp"
6039
6040: set the prefixit variable, to compute a suitable default value
6041prefixit='case "$3" in
6042""|none)
6043 case "$oldprefix" in
6044 "") eval "$1=\"\$$2\"";;
6045 *)
6046 case "$3" in
6047 "") eval "$1=";;
6048 none)
6049 eval "tp=\"\$$2\"";
6050 case "$tp" in
6051 ""|" ") eval "$1=\"\$$2\"";;
6052 *) eval "$1=";;
6053 esac;;
6054 esac;;
6055 esac;;
6056*)
6057 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6058 case "$tp" in
6059 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6060 /*-$oldprefix/*|\~*-$oldprefix/*)
6061 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6062 *) eval "$1=\"\$$2\"";;
6063 esac;;
6064esac'
6065
b4eb6b3d
JH
6066: get the patchlevel
6067echo " "
6068echo "Getting the current patchlevel..." >&4
6069if $test -r $rsrc/patchlevel.h;then
6070 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6071 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6072 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6073 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6076 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6077else
6078 revision=0
6079 patchlevel=0
6080 subversion=0
6081 api_revision=0
6082 api_version=0
6083 api_subversion=0
151e6568
MB
6084 perl_patchlevel=0
6085 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6086fi
151e6568
MB
6087if $test -r $rsrc/.patch ; then
6088 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6089 perl_patchlevel=`cat $rsrc/.patch`
6090 fi
6091fi
861eb78d
AD
6092: Define a handy string here to avoid duplication in myconfig.SH and configpm.
6093version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 6094case "$perl_patchlevel" in
861eb78d
AD
60950|'') ;;
6096*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 6097esac
861eb78d
AD
6098
6099$echo "(You have $package $version_patchlevel_string.)"
6100
b4eb6b3d
JH
6101case "$osname" in
6102dos|vms)
6103 : XXX Should be a Configure test for double-dots in filenames.
6104 version=`echo $revision $patchlevel $subversion | \
6105 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6106 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6107 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6108 ;;
6109*)
6110 version=`echo $revision $patchlevel $subversion | \
6111 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6112 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6113 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6114 ;;
6115esac
6116: Special case the 5.005_xx maintenance series, which used 5.005
6117: without any subversion label as a subdirectory in $sitelib
6118if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6119 api_versionstring='5.005'
6120fi
6121
6122: determine installation style
6123: For now, try to deduce it from prefix unless it is already set.
6124: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6125case "$installstyle" in
6126'') case "$prefix" in
6127 *perl*) dflt='lib';;
6128 *) dflt='lib/perl5' ;;
6129 esac
6130 ;;
6131*) dflt="$installstyle" ;;
6132esac
6133: Probably not worth prompting for this since we prompt for all
6134: the directories individually, and the prompt would be too long and
6135: confusing anyway.
6136installstyle=$dflt
6137
6138: determine where private library files go
6139: Usual default is /usr/local/lib/perl5/$version.
6140: Also allow things like /opt/perl/lib/$version, since
6141: /opt/perl/lib/perl5... would be redundant.
6142: The default "style" setting is made in installstyle.U
6143case "$installstyle" in
6144*lib/perl5*) set dflt privlib lib/$package/$version ;;
6145*) set dflt privlib lib/$version ;;
6146esac
6147eval $prefixit
6148$cat <<EOM
6149
6150There are some auxiliary files for $package that need to be put into a
6151private library directory that is accessible by everyone.
6152
6153EOM
6154fn=d~+
6155rp='Pathname where the private library files will reside?'
6156. ./getfile
6157privlib="$ans"
6158privlibexp="$ansexp"
6159: Change installation prefix, if necessary.
6160if $test X"$prefix" != X"$installprefix"; then
6161 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6162else
6163 installprivlib="$privlibexp"
6164fi
6165
6166: set the prefixup variable, to restore leading tilda escape
6167prefixup='case "$prefixexp" in
6168"$prefix") ;;
6169*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6170esac'
6171
6172: determine where public architecture dependent libraries go
6173set archlib archlib
6174eval $prefixit
6175: privlib default is /usr/local/lib/$package/$version
6176: archlib default is /usr/local/lib/$package/$version/$archname
6177: privlib may have an optional trailing /share.
6178tdflt=`echo $privlib | $sed 's,/share$,,'`
6179tdflt=$tdflt/$archname
6180case "$archlib" in
6181'') dflt=$tdflt
6182 ;;
6183*) dflt="$archlib"
6184 ;;
6185esac
6186$cat <<EOM
6187
6188$spackage contains architecture-dependent library files. If you are
6189sharing libraries in a heterogeneous environment, you might store
6190these files in a separate location. Otherwise, you can just include
6191them with the rest of the public library files.
6192
6193EOM
6194fn=d+~
6195rp='Where do you want to put the public architecture-dependent libraries?'
6196. ./getfile
6197archlib="$ans"
6198archlibexp="$ansexp"
6199if $test X"$archlib" = X"$privlib"; then
6200 d_archlib="$undef"
6201else
6202 d_archlib="$define"
6203fi
6204: Change installation prefix, if necessary.
6205if $test X"$prefix" != X"$installprefix"; then
6206 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6207else
6208 installarchlib="$archlibexp"
6209fi
6210
6211
6212: Binary compatibility with 5.005 is not possible for builds
6213: with advanced features
6214case "$usethreads$usemultiplicity" in
6215*define*)
6216 bincompat5005="$undef"
6217 d_bincompat5005="$undef"
6218 ;;
6219*) $cat <<EOM
6220
6221This version of Perl can be compiled for binary compatibility with 5.005.
6222If you decide to do so, you will be able to continue using most of the
6223extensions that were compiled for Perl 5.005.
6224
6225EOM
6226 case "$bincompat5005$d_bincompat5005" in
6227 *"$undef"*) dflt=n ;;
6228 *) dflt=y ;;
6229 esac
6230 rp='Binary compatibility with Perl 5.005?'
6231 . ./myread
6232 case "$ans" in
6233 y*) val="$define" ;;
6234 *) val="$undef" ;;
6235 esac
6236 set d_bincompat5005
6237 eval $setvar
6238 case "$d_bincompat5005" in
6239 "$define")
6240 bincompat5005="$define"
6241 ;;
6242 *) bincompat5005="$undef"
6243 d_bincompat5005="$undef"
6244 ;;
6245 esac
6246 ;;
6247esac
6248
6249
6250: see if setuid scripts can be secure
6251$cat <<EOM
6252
6253Some kernels have a bug that prevents setuid #! scripts from being
6254secure. Some sites have disabled setuid #! scripts because of this.
6255
6256First let's decide if your kernel supports secure setuid #! scripts.
6257(If setuid #! scripts would be secure but have been disabled anyway,
6258don't say that they are secure if asked.)
6259
6260EOM
6261
6262val="$undef"
6263if $test -d /dev/fd; then
6264 echo "#!$ls" >reflect
6265 chmod +x,u+s reflect
6266 ./reflect >flect 2>&1
6267 if $contains "/dev/fd" flect >/dev/null; then
6268 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269 val="$define"
6270 else
6271 $cat <<EOM
6272If you are not sure if they are secure, I can check but I'll need a
6273username and password different from the one you are using right now.
6274If you don't have such a username or don't want me to test, simply
6275enter 'none'.
6276
6277EOM
6278 rp='Other username to test security of setuid scripts with?'
6279 dflt='none'
6280 . ./myread
6281 case "$ans" in
6282 n|none)
6283 case "$d_suidsafe" in
6284 '') echo "I'll assume setuid scripts are *not* secure." >&4
6285 dflt=n;;
6286 "$undef")
6287 echo "Well, the $hint value is *not* secure." >&4
6288 dflt=n;;
6289 *) echo "Well, the $hint value *is* secure." >&4
6290 dflt=y;;
6291 esac
c1a7f87b 6292 ;;
b4eb6b3d
JH
6293 *)
6294 $rm -f reflect flect
6295 echo "#!$ls" >reflect
6296 chmod +x,u+s reflect
6297 echo >flect
6298 chmod a+w flect
6299 echo '"su" will (probably) prompt you for '"$ans's password."
6300 su $ans -c './reflect >flect'
6301 if $contains "/dev/fd" flect >/dev/null; then
6302 echo "Okay, it looks like setuid scripts are secure." >&4
6303 dflt=y
6304 else
6305 echo "I don't think setuid scripts are secure." >&4
6306 dflt=n
6307 fi
6308 ;;
6309 esac
6310 rp='Does your kernel have *secure* setuid scripts?'
6311 . ./myread
6312 case "$ans" in
6313 [yY]*) val="$define";;
6314 *) val="$undef";;
6315 esac
6316 fi
6317else
6318 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319 echo "(That's for file descriptors, not floppy disks.)"
6320 val="$undef"
6321fi
6322set d_suidsafe
6323eval $setvar
6324
6325$rm -f reflect flect
6326
6327: now see if they want to do setuid emulation
6328echo " "
6329val="$undef"
6330case "$d_suidsafe" in
6331"$define")
6332 val="$undef"
6333 echo "No need to emulate SUID scripts since they are secure here." >& 4
6334 ;;
6335*)
6336 $cat <<EOM
6337Some systems have disabled setuid scripts, especially systems where
6338setuid scripts cannot be secure. On systems where setuid scripts have
6339been disabled, the setuid/setgid bits on scripts are currently
6340useless. It is possible for $package to detect those bits and emulate
6341setuid/setgid in a secure fashion. This emulation will only work if
6342setuid scripts have been disabled in your kernel.
6343
6344EOM
6345 case "$d_dosuid" in
6346 "$define") dflt=y ;;
6347 *) dflt=n ;;
6348 esac
6349 rp="Do you want to do setuid/setgid emulation?"
6350 . ./myread
6351 case "$ans" in
6352 [yY]*) val="$define";;
6353 *) val="$undef";;
6354 esac
6355 ;;
6356esac
6357set d_dosuid
6358eval $setvar
6359
b4eb6b3d
JH
6360: see if this is a malloc.h system
6361set malloc.h i_malloc
6362eval $inhdr
6363
6364: see if stdlib is available
6365set stdlib.h i_stdlib
6366eval $inhdr
6367
6368: determine which malloc to compile in
6369echo " "
6370case "$usemymalloc" in
c4163172
JH
6371[yY]*|true|$define) dflt='y' ;;
6372[nN]*|false|$undef) dflt='n' ;;
6373*) case "$ptrsize" in
6374 4) dflt='y' ;;
6375 *) dflt='n' ;;
6376 esac
6377 ;;
8dfa8df9 6378esac
b4eb6b3d
JH
6379rp="Do you wish to attempt to use the malloc that comes with $package?"
6380. ./myread
6381usemymalloc="$ans"
6382case "$ans" in
6383y*|true)
6384 usemymalloc='y'
6385 mallocsrc='malloc.c'
6386 mallocobj="malloc$_o"
6387 d_mymalloc="$define"
6388 case "$libs" in
6389 *-lmalloc*)
6390 : Remove malloc from list of libraries to use
6391 echo "Removing unneeded -lmalloc from library list" >&4
6392 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6393 shift
6394 libs="$*"
6395 echo "libs = $libs" >&4
6396 ;;
6397 esac
6398 ;;
6399*)
6400 usemymalloc='n'
6401 mallocsrc=''
6402 mallocobj=''
6403 d_mymalloc="$undef"
6404 ;;
6405esac
6406
6407: compute the return types of malloc and free
6408echo " "
6409$cat >malloc.c <<END
6410#$i_malloc I_MALLOC
6411#$i_stdlib I_STDLIB
6412#include <stdio.h>
6413#include <sys/types.h>
6414#ifdef I_MALLOC
6415#include <malloc.h>
6416#endif
6417#ifdef I_STDLIB
6418#include <stdlib.h>
6419#endif
6420#ifdef TRY_MALLOC
6421void *malloc();
6422#endif
6423#ifdef TRY_FREE
6424void free();
6425#endif
6426END
6427case "$malloctype" in
6428'')
6429 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6430 malloctype='void *'
6431 else
6432 malloctype='char *'
6433 fi
6434 ;;
6435esac
6436echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6437
6438case "$freetype" in
6439'')
6440 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6441 freetype='void'
6442 else
6443 freetype='int'
6444 fi
6445 ;;
6446esac
6447echo "Your system uses $freetype free(), it would seem." >&4
6448$rm -f malloc.[co]
6449$cat <<EOM
6450
6451After $package is installed, you may wish to install various
6452add-on modules and utilities. Typically, these add-ons will
6453be installed under $prefix with the rest
6454of this package. However, you may wish to install such add-ons
6455elsewhere under a different prefix.
6456
6457If you do not wish to put everything under a single prefix, that's
6458ok. You will be prompted for the individual locations; this siteprefix
6459is only used to suggest the defaults.
6460
6461The default should be fine for most people.
6462
6463EOM
6464fn=d~+
6465rp='Installation prefix to use for add-on modules and utilities?'
6466: XXX Here might be another good place for an installstyle setting.
6467case "$siteprefix" in
6468'') dflt=$prefix ;;
6469*) dflt=$siteprefix ;;
6470esac
6471. ./getfile
6472: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6473oldsiteprefix=''
6474case "$siteprefix" in
6475'') ;;
6476*) case "$ans" in
6477 "$prefix") ;;
6478 *) oldsiteprefix="$prefix";;
6479 esac
6480 ;;
6481esac
6482siteprefix="$ans"
6483siteprefixexp="$ansexp"
6484
6485: determine where site specific libraries go.
6486: Usual default is /usr/local/lib/perl5/site_perl/$version
6487: The default "style" setting is made in installstyle.U
6488: XXX No longer works with Prefixit stuff.
6489prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6490case "$sitelib" in
6491'') case "$installstyle" in
6492 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6493 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6494 esac
6495 ;;
6496*) dflt="$sitelib"
6497 ;;
6498esac
6499$cat <<EOM
6500
6501The installation process will create a directory for
6502site-specific extensions and modules. Most users find it convenient
6503to place all site-specific files in this directory rather than in the
6504main distribution directory.
6505
6506EOM
6507fn=d~+
6508rp='Pathname for the site-specific library files?'
6509. ./getfile
6510sitelib="$ans"
6511sitelibexp="$ansexp"
6512sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6513: Change installation prefix, if necessary.
6514if $test X"$prefix" != X"$installprefix"; then
6515 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6516else
6517 installsitelib="$sitelibexp"
6518fi
6519
6520: determine where site specific architecture-dependent libraries go.
6521: sitelib default is /usr/local/lib/perl5/site_perl/$version
6522: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6523: sitelib may have an optional trailing /share.
6524case "$sitearch" in
6525'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6526 dflt="$dflt/$archname"
6527 ;;
6528*) dflt="$sitearch"
6529 ;;
6530esac
6531set sitearch sitearch none
6532eval $prefixit
6533$cat <<EOM
6534
6535The installation process will also create a directory for
6536architecture-dependent site-specific extensions and modules.
6537
6538EOM
6539fn=d~+
6540rp='Pathname for the site-specific architecture-dependent library files?'
6541. ./getfile
6542sitearch="$ans"
6543sitearchexp="$ansexp"
6544: Change installation prefix, if necessary.
6545if $test X"$prefix" != X"$installprefix"; then
6546 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6547else
6548 installsitearch="$sitearchexp"
6549fi
6550
6551$cat <<EOM
6552
6553The installation process will also create a directory for
6554vendor-supplied add-ons. Vendors who supply perl with their system
6555may find it convenient to place all vendor-supplied files in this
6556directory rather than in the main distribution directory. This will
6557ease upgrades between binary-compatible maintenance versions of perl.
6558
6559Of course you may also use these directories in whatever way you see
6560fit. For example, you might use them to access modules shared over a
6561company-wide network.
6562
6563The default answer should be fine for most people.
6564This causes further questions about vendor add-ons to be skipped
6565and no vendor-specific directories will be configured for perl.
6566
6567EOM
6568rp='Do you want to configure vendor-specific add-on directories?'
6569case "$usevendorprefix" in
6570define|true|[yY]*) dflt=y ;;
6571*) : User may have set vendorprefix directly on Configure command line.
6572 case "$vendorprefix" in
6573 ''|' ') dflt=n ;;
6574 *) dflt=y ;;
6575 esac
6576 ;;
6577esac
6578. ./myread
6579case "$ans" in
6580[yY]*) fn=d~+
6581 rp='Installation prefix to use for vendor-supplied add-ons?'
6582 case "$vendorprefix" in
6583 '') dflt='' ;;
6584 *) dflt=$vendorprefix ;;
6585 esac
6586 . ./getfile
6587 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6588 oldvendorprefix=''
6589 case "$vendorprefix" in
6590 '') ;;
6591 *) case "$ans" in
6592 "$prefix") ;;
6593 *) oldvendorprefix="$prefix";;
6594 esac
6595 ;;
6596 esac
6597 usevendorprefix="$define"
6598 vendorprefix="$ans"
6599 vendorprefixexp="$ansexp"
6600 ;;
6601*) usevendorprefix="$undef"
6602 vendorprefix=''
6603 vendorprefixexp=''
6604 ;;
6605esac
6606
6607case "$vendorprefix" in
6608'') d_vendorlib="$undef"
6609 vendorlib=''
6610 vendorlibexp=''
6611 ;;
6612*) d_vendorlib="$define"
6613 : determine where vendor-supplied modules go.
6614 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6615 case "$vendorlib" in
6616 '')
6617 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6618 case "$installstyle" in
6619 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6620 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6621 esac
6622 ;;
6623 *) dflt="$vendorlib"
6624 ;;
6625 esac
6626 fn=d~+
6627 rp='Pathname for the vendor-supplied library files?'
6628 . ./getfile
6629 vendorlib="$ans"
6630 vendorlibexp="$ansexp"
6631 ;;
6632esac
6633vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6634: Change installation prefix, if necessary.
6635if $test X"$prefix" != X"$installprefix"; then
6636 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6637else
6638 installvendorlib="$vendorlibexp"
6639fi
6640
6641case "$vendorprefix" in
6642'') d_vendorarch="$undef"
6643 vendorarch=''
6644 vendorarchexp=''
6645 ;;
6646*) d_vendorarch="$define"
6647 : determine where vendor-supplied architecture-dependent libraries go.
6648 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6649 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6650 : vendorlib may have an optional trailing /share.
6651 case "$vendorarch" in
6652 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6653 dflt="$dflt/$archname"
6654 ;;
6655 *) dflt="$vendorarch" ;;
6656 esac
6657 fn=d~+
6658 rp='Pathname for vendor-supplied architecture-dependent files?'
6659 . ./getfile
6660 vendorarch="$ans"
6661 vendorarchexp="$ansexp"
6662 ;;
6663esac
6664: Change installation prefix, if necessary.
6665if $test X"$prefix" != X"$installprefix"; then
6666 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6667else
6668 installvendorarch="$vendorarchexp"
6669fi
6670
6671: Final catch-all directories to search
6672$cat <<EOM
6673
6674Lastly, you can have perl look in other directories for extensions and
6675modules in addition to those already specified.
6676These directories will be searched after
6677 $sitearch
6678 $sitelib
6679EOM
6680test X"$vendorlib" != "X" && echo ' ' $vendorlib
6681test X"$vendorarch" != "X" && echo ' ' $vendorarch
6682echo ' '
6683case "$otherlibdirs" in
6684''|' ') dflt='none' ;;
6685*) dflt="$otherlibdirs" ;;
6686esac
6687$cat <<EOM
6688Enter a colon-separated set of extra paths to include in perl's @INC
6689search path, or enter 'none' for no extra paths.
6690
6691EOM
6692
6693rp='Colon-separated list of additional directories for perl to search?'
6694. ./myread
6695case "$ans" in
6696' '|''|none) otherlibdirs=' ' ;;
6697*) otherlibdirs="$ans" ;;
6698esac
6699case "$otherlibdirs" in
6700' ') val=$undef ;;
6701*) val=$define ;;
6702esac
6703set d_perl_otherlibdirs
6704eval $setvar
6705
6706: Cruising for prototypes
6707echo " "
6708echo "Checking out function prototypes..." >&4
6709$cat >prototype.c <<'EOCP'
6710int main(int argc, char *argv[]) {
6711 exit(0);}
6712EOCP
6713if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6714 echo "Your C compiler appears to support function prototypes."
6715 val="$define"
6716else
6717 echo "Your C compiler doesn't seem to understand function prototypes."
6718 val="$undef"
6719fi
6720set prototype
6721eval $setvar
6722$rm -f prototype*
6723
6724case "$prototype" in
6725"$define") ;;
6726*) ansi2knr='ansi2knr'
6727 echo " "
6728 cat <<EOM >&4
6729
6730$me: FATAL ERROR:
6731This version of $package can only be compiled by a compiler that
6732understands function prototypes. Unfortunately, your C compiler
6733 $cc $ccflags
6734doesn't seem to understand them. Sorry about that.
6735
6736If GNU cc is available for your system, perhaps you could try that instead.
6737
6738Eventually, we hope to support building Perl with pre-ANSI compilers.
6739If you would like to help in that effort, please contact <perlbug@perl.org>.
6740
6741Aborting Configure now.
6742EOM
6743 exit 2
6744 ;;
6745esac
6746
6747: determine where public executables go
6748echo " "
6749set dflt bin bin
6750eval $prefixit
6751fn=d~
6752rp='Pathname where the public executables will reside?'
6753. ./getfile
6754if $test "X$ansexp" != "X$binexp"; then
6755 installbin=''
6756fi
6757bin="$ans"
6758binexp="$ansexp"
6759: Change installation prefix, if necessary.
6760: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6761if $test X"$prefix" != X"$installprefix"; then
6762 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6763else
6764 installbin="$binexp"
6765fi
6766
6767: Find perl5.005 or later.
6768echo "Looking for a previously installed perl5.005 or later... "
6769case "$perl5" in
a938a3bb 6770'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6771 : Check if this perl is recent and can load a simple module
a938a3bb 6772 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6773 perl5=$tdir/perl
6774 break;
a938a3bb
IZ
6775 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6776 perl5=$tdir/perl5
b4eb6b3d
JH
6777 break;
6778 fi
6779 done
6780 ;;
6781*) perl5="$perl5"
6782 ;;
6783esac
6784case "$perl5" in
6785'') echo "None found. That's ok.";;
6786*) echo "Using $perl5." ;;
6787esac
6788
6789: Determine list of previous versions to include in @INC
6790$cat > getverlist <<EOPL
6791#!$perl5 -w
6792use File::Basename;
6793\$api_versionstring = "$api_versionstring";
6794\$version = "$version";
6795\$stem = "$sitelib_stem";
6796\$archname = "$archname";
6797EOPL
6798 $cat >> getverlist <<'EOPL'
6799# Can't have leading @ because metaconfig interprets it as a command!
6800;@inc_version_list=();
6801# XXX Redo to do opendir/readdir?
6802if (-d $stem) {
6803 chdir($stem);
6804 ;@candidates = glob("5.*");
6805}
6806else {
6807 ;@candidates = ();
6808}
6809
6810# XXX ToDo: These comparisons must be reworked when two-digit
6811# subversions come along, so that 5.7.10 compares as greater than
6812# 5.7.3! By that time, hope that 5.6.x is sufficiently
6813# widespread that we can use the built-in version vectors rather
6814# than reinventing them here. For 5.6.0, however, we must
6815# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6816foreach $d (@candidates) {
6817 if ($d lt $version) {
6818 if ($d ge $api_versionstring) {
6819 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6820 }
6821 elsif ($d ge "5.005") {
6822 unshift(@inc_version_list, grep { -d } $d);
6823 }
6824 }
6825 else {
6826 # Skip newer version. I.e. don't look in
6827 # 5.7.0 if we're installing 5.6.1.
6828 }
6829}
6830
6831if (@inc_version_list) {
6832 print join(' ', @inc_version_list);
6833}
6834else {
6835 # Blank space to preserve value for next Configure run.
6836 print " ";
6837}
6838EOPL
6839chmod +x getverlist
6840case "$inc_version_list" in
a938a3bb 6841'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
6842 dflt=`$perl5 getverlist`
6843 else
6844 dflt='none'
6845 fi
6846 ;;
6847$undef) dflt='none' ;;
6d1a7737 6848*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
6849esac
6850case "$dflt" in
6851''|' ') dflt=none ;;
6852esac
6853case "$dflt" in
68545.005) case "$bincompat5005" in
6855 $define|true|[yY]*) ;;
6856 *) dflt=none ;;
6857 esac
6858 ;;
6859esac
6860$cat <<'EOM'
6861
6862In order to ease the process of upgrading, this version of perl
6863can be configured to use modules built and installed with earlier
6864versions of perl that were installed under $prefix. Specify here
6865the list of earlier versions that this version of perl should check.
6866If Configure detected no earlier versions of perl installed under
6867$prefix, then the list will be empty. Answer 'none' to tell perl
6868to not search earlier versions.
6869
6870The default should almost always be sensible, so if you're not sure,
6871just accept the default.
6872EOM
6873
6874rp='List of earlier versions to include in @INC?'
6875. ./myread
6876case "$ans" in
6877[Nn]one|''|' ') inc_version_list=' ' ;;
6878*) inc_version_list="$ans" ;;
6879esac
6880case "$inc_version_list" in
6881''|' ')
6882 inc_version_list_init='0';;
6883*) inc_version_list_init=`echo $inc_version_list |
6884 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6885 ;;
6886esac
6887$rm -f getverlist
6888
6889: determine whether to install perl also as /usr/bin/perl
6890
6891echo " "
6892if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6893 $cat <<EOM
6894Many scripts expect perl to be installed as /usr/bin/perl.
6895I can install the perl you are about to compile also as /usr/bin/perl
6896(in addition to $installbin/perl).
6897EOM
6898 case "$installusrbinperl" in
6899 "$undef"|[nN]*) dflt='n';;
6900 *) dflt='y';;
6901 esac
6902 rp="Do you want to install perl as /usr/bin/perl?"
6903 . ./myread
6904 case "$ans" in
6905 [yY]*) val="$define";;
6906 *) val="$undef" ;;
6907 esac
6908else
6909 val="$undef"
6910fi
6911set installusrbinperl
6912eval $setvar
6913
6914: see if dld is available
6915set dld.h i_dld
6916eval $inhdr
6917
6918: see if dlopen exists
6919xxx_runnm="$runnm"
6920runnm=false
6921set dlopen d_dlopen
6922eval $inlibc
6923runnm="$xxx_runnm"
6924
6925: determine which dynamic loading, if any, to compile in
6926echo " "
6927dldir="ext/DynaLoader"
6928case "$usedl" in
6929$define|y|true)
6930 dflt='y'
6931 usedl="$define"
6932 ;;
6933$undef|n|false)
6934 dflt='n'
6935 usedl="$undef"
6936 ;;
6937*)
6938 dflt='n'
6939 case "$d_dlopen" in
6940 $define) dflt='y' ;;
6941 esac
6942 case "$i_dld" in
6943 $define) dflt='y' ;;
6944 esac
6945 : Does a dl_xxx.xs file exist for this operating system
6946 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6947 ;;
6948esac
6949rp="Do you wish to use dynamic loading?"
6950. ./myread
6951usedl="$ans"
6952case "$ans" in
6953y*) usedl="$define"
6954 case "$dlsrc" in
6955 '')
6956 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6957 dflt="$dldir/dl_${osname}.xs"
6958 elif $test "$d_dlopen" = "$define" ; then
6959 dflt="$dldir/dl_dlopen.xs"
6960 elif $test "$i_dld" = "$define" ; then
6961 dflt="$dldir/dl_dld.xs"
6962 else
6963 dflt=''
6964 fi
6965 ;;
6966 *) dflt="$dldir/$dlsrc"
6967 ;;
6968 esac
6969 echo "The following dynamic loading files are available:"
6970 : Can not go over to $dldir because getfile has path hard-coded in.
6971 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6972 rp="Source file to use for dynamic loading"
6973 fn="fne"
6974 gfpth="$src"
6975 . ./getfile
6976 usedl="$define"
6977 : emulate basename
6978 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6979
6980 $cat << EOM
6981
6982Some systems may require passing special flags to $cc -c to
6983compile modules that will be used to create a shared library.
6984To use no flags, say "none".
6985
6986EOM
6987 case "$cccdlflags" in
6988 '') case "$gccversion" in
6989 '') case "$osname" in
6990 hpux) dflt='+z' ;;
6991 next) dflt='none' ;;
6992 irix*) dflt='-KPIC' ;;
48bcfe03 6993 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
6994 sunos) dflt='-pic' ;;
6995 *) dflt='none' ;;
6996 esac
6997 ;;
6998 *) case "$osname" in
48bcfe03 6999 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7000 *) dflt='-fpic' ;;
7001 esac ;;
7002 esac ;;
7003 ' ') dflt='none' ;;
7004 *) dflt="$cccdlflags" ;;
7005 esac
7006 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7007 . ./myread
7008 case "$ans" in
7009 none) cccdlflags=' ' ;;
7010 *) cccdlflags="$ans" ;;
7011 esac
7012
7013 cat << EOM
7014
7015Some systems use ld to create libraries that can be dynamically loaded,
7016while other systems (such as those using ELF) use $cc.
7017
7018EOM
7019 case "$ld" in
7020 '') $cat >try.c <<'EOM'
7021/* Test for whether ELF binaries are produced */
7022#include <fcntl.h>
7023#include <stdlib.h>
7024int main() {
7025 char b[4];
7026 int i = open("a.out",O_RDONLY);
7027 if(i == -1)
7028 exit(1); /* fail */
7029 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7030 exit(0); /* succeed (yes, it's ELF) */
7031 else
7032 exit(1); /* fail */
7033}
7034EOM
5440bc8e 7035 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7036 cat <<EOM
7037You appear to have ELF support. I'll use $cc to build dynamic libraries.
7038EOM
7039 dflt="$cc"
7040 else
7041 echo "I'll use ld to build dynamic libraries."
7042 dflt='ld'
7043 fi
7044 rm -f try.c a.out
7045 ;;
7046 *) dflt="$ld"
7047 ;;
7048 esac
7049
7050 rp="What command should be used to create dynamic libraries?"
7051 . ./myread
7052 ld="$ans"
7053
7054 cat << EOM
7055
7056Some systems may require passing special flags to $ld to create a
7057library that can be dynamically loaded. If your ld flags include
7058-L/other/path options to locate libraries outside your loader's normal
7059search path, you may need to specify those -L options here as well. To
7060use no flags, say "none".
7061
7062EOM
7063 case "$lddlflags" in
7064 '') case "$osname" in
7065 beos) dflt='-nostart' ;;
7066 hpux) dflt='-b';
7067 case "$gccversion" in
7068 '') dflt="$dflt +vnocompatwarnings" ;;
7069 esac
7070 ;;
7071 linux|irix*) dflt='-shared' ;;
7072 next) dflt='none' ;;
7073 solaris) dflt='-G' ;;
7074 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7075 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7076 *) dflt='none' ;;
7077 esac
7078 ;;
7079 *) dflt="$lddlflags" ;;
7080 esac
7081
7082 : Try to guess additional flags to pick up local libraries.
7083 : Be careful not to append to a plain 'none'
7084 case "$dflt" in
7085 none) dflt='' ;;
7086 esac
7087 for thisflag in $ldflags; do
7088 case "$thisflag" in
7089 -L*|-R*)
7090 case " $dflt " in
7091 *" $thisflag "*) ;;
7092 *) dflt="$dflt $thisflag" ;;
7093 esac
7094 ;;
7095 esac
7096 done
7097
7098 case "$dflt" in
7099 ''|' ') dflt='none' ;;
7100 esac
7101
7102 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7103 . ./myread
7104 case "$ans" in
7105 none) lddlflags=' ' ;;
7106 *) lddlflags="$ans" ;;
7107 esac
7108
7109 cat <<EOM
7110
7111Some systems may require passing special flags to $cc to indicate that
7112the resulting executable will use dynamic linking. To use no flags,
7113say "none".
7114
7115EOM
7116 case "$ccdlflags" in
7117 '') case "$osname" in
7118 hpux) dflt='-Wl,-E' ;;
7119 linux) dflt='-rdynamic' ;;
7120 next) dflt='none' ;;
7121 sunos) dflt='none' ;;
7122 *) dflt='none' ;;
7123 esac ;;
7124 ' ') dflt='none' ;;
7125 *) dflt="$ccdlflags" ;;
7126 esac
7127 rp="Any special flags to pass to $cc to use dynamic linking?"
7128 . ./myread
7129 case "$ans" in
7130 none) ccdlflags=' ' ;;
7131 *) ccdlflags="$ans" ;;
7132 esac
7133 ;;
7134*) usedl="$undef"
7135 ld='ld'
7136 dlsrc='dl_none.xs'
7137 lddlflags=''
7138 ccdlflags=''
7139 ;;
7140esac
7141
7142also=''
7143case "$usedl" in
7144$undef)
7145 # No dynamic loading being used, so don't bother even to prompt.
7146 useshrplib='false'
7147 ;;
7148*) case "$useshrplib" in
7149 '') case "$osname" in
48bcfe03 7150 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7151 dflt=y
7152 also='Building a shared libperl is required for dynamic loading to work on your system.'
7153 ;;
7154 next*)
7155 case "$osvers" in
7156 4*) dflt=y
7157 also='Building a shared libperl is needed for MAB support.'
7158 ;;
7159 *) dflt=n
7160 ;;
7161 esac
7162 ;;
7163 *) dflt=n
7164 ;;
7165 esac
7166 ;;
7167 $define|true|[Yy]*)
7168 dflt=y
7169 ;;
7170 *) dflt=n
7171 ;;
7172 esac
7173 $cat << EOM
7174
7175The perl executable is normally obtained by linking perlmain.c with
7176libperl${_a}, any static extensions (usually just DynaLoader), and
7177any other libraries needed on this system (such as -lm, etc.). Since
7178your system supports dynamic loading, it is probably possible to build
7179a shared libperl.$so. If you will have more than one executable linked
7180to libperl.$so, this will significantly reduce the size of each
7181executable, but it may have a noticeable affect on performance. The
7182default is probably sensible for your system.
7183$also
7184
7185EOM
7186 rp="Build a shared libperl.$so (y/n)"
7187 . ./myread
7188 case "$ans" in
7189 true|$define|[Yy]*)
7190 useshrplib='true' ;;
7191 *) useshrplib='false' ;;
7192 esac
7193 ;;
7194esac
7195
7196case "$useshrplib" in
7197true)
7198 case "$libperl" in
7199 '')
7200 # Figure out a good name for libperl.so. Since it gets stored in
7201 # a version-specific architecture-dependent library, the version
7202 # number isn't really that important, except for making cc/ld happy.
7203 #
7204 # A name such as libperl.so.3.1
7205 majmin="libperl.$so.$patchlevel.$subversion"
7206 # A name such as libperl.so.301
7207 majonly=`echo $patchlevel $subversion |
7208 $awk '{printf "%d%02d", $1, $2}'`
7209 majonly=libperl.$so.$majonly
7210 # I'd prefer to keep the os-specific stuff here to a minimum, and
7211 # rely on figuring it out from the naming of libc.
7212 case "${osname}${osvers}" in
7213 next4*)
7214 dflt=libperl.5.$so
7215 # XXX How handle the --version stuff for MAB?
7216 ;;
7217 linux*) # ld won't link with a bare -lperl otherwise.
7218 dflt=libperl.$so
7219 ;;
7220 cygwin*) # include version
7221 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7222 ;;
7223 *) # Try to guess based on whether libc has major.minor.
7224 case "$libc" in
7225 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7226 *libc.$so.[0-9]*) dflt=$majonly ;;
7227 *) dflt=libperl.$so ;;
7228 esac
7229 ;;
7230 esac
7231 ;;
7232 *) dflt=$libperl
7233 ;;
7234 esac
7235 cat << EOM
7236
7237I need to select a good name for the shared libperl. If your system uses
7238library names with major and minor numbers, then you might want something
7239like $majmin. Alternatively, if your system uses a single version
7240number for shared libraries, then you might want to use $majonly.
7241Or, your system might be quite happy with a simple libperl.$so.
7242
7243Since the shared libperl will get installed into a version-specific
7244architecture-dependent directory, the version number of the shared perl
7245library probably isn't important, so the default should be o.k.
7246
7247EOM
7248 rp='What name do you want to give to the shared libperl?'
7249 . ./myread
7250 libperl=$ans
7251 echo "Ok, I'll use $libperl"
7252 ;;
7253*)
7254 libperl="libperl${_a}"
7255 ;;
7256esac
7257
7258# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7259case "$shrpdir" in
7260'') ;;
7261*) $cat >&4 <<EOM
7262WARNING: Use of the shrpdir variable for the installation location of
7263the shared $libperl is not supported. It was never documented and
7264will not work in this version. Let me (perlbug@perl.org)
7265know of any problems this may cause.
7266
7267EOM
7268 case "$shrpdir" in
7269 "$archlibexp/CORE")
7270 $cat >&4 <<EOM
7271But your current setting of $shrpdir is
7272the default anyway, so it's harmless.
7273EOM
7274 ;;
7275 *)
7276 $cat >&4 <<EOM
7277Further, your current attempted setting of $shrpdir
7278conflicts with the value of $archlibexp/CORE
7279that installperl will use.
7280EOM
7281 ;;
7282 esac
7283 ;;
7284esac
7285
7286# How will the perl executable find the installed shared $libperl?
7287# Add $xxx to ccdlflags.
7288# If we can't figure out a command-line option, use $shrpenv to
7289# set env LD_RUN_PATH. The main perl makefile uses this.
7290shrpdir=$archlibexp/CORE
7291xxx=''
7292tmp_shrpenv=''
7293if "$useshrplib"; then
7294 case "$osname" in
7295 aix)
7296 # We'll set it in Makefile.SH...
7297 ;;
7298 solaris|netbsd)
7299 xxx="-R $shrpdir"
7300 ;;
7301 freebsd)
7302 xxx="-Wl,-R$shrpdir"
7303 ;;
7304 linux|irix*|dec_osf)
7305 xxx="-Wl,-rpath,$shrpdir"
7306 ;;
7307 next)
7308 # next doesn't like the default...
7309 ;;
7310 beos)
7311 # beos doesn't like the default, either.
7312 ;;
7313 hpux*)
7314 # hpux doesn't like the default, either.
7315 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7316 ;;
7317 *)
7318 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7319 ;;
7320 esac
7321 case "$xxx" in
7322 '') ;;
7323 *)
7324 # Only add $xxx if it isn't already in ccdlflags.
7325 case " $ccdlflags " in
7326 *" $xxx "*) ;;
7327 *) ccdlflags="$ccdlflags $xxx"
7328 cat <<EOM >&4
7329
7330Adding $xxx to the flags
7331passed to $ld so that the perl executable will find the
7332installed shared $libperl.
7333
7334EOM
7335 ;;
7336 esac
7337 ;;
7338 esac
7339fi
7340# Fix ccdlflags in AIX for building external extensions.
7341# (For building Perl itself bare -bE:perl.exp is needed,
7342# Makefile.SH takes care of this.)
7343case "$osname" in
7344aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7345esac
7346# Respect a hint or command-line value.
7347case "$shrpenv" in
7348'') shrpenv="$tmp_shrpenv" ;;
7349esac
7350case "$ldlibpthname" in
7351'') ldlibpthname=LD_LIBRARY_PATH ;;
7352none) ldlibpthname='' ;;
7353esac
7354
7355: determine where manual pages are on this system
7356echo " "
7357case "$sysman" in
7358'')
7359 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7360 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7361 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7362 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7363 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7364 sysman=`./loc . /usr/man/man1 $syspath`
7365 ;;
7366esac
7367if $test -d "$sysman"; then
7368 echo "System manual is in $sysman." >&4
7369else
7370 echo "Could not find manual pages in source form." >&4
7371fi
7372
7373: determine where manual pages go
7374set man1dir man1dir none
7375eval $prefixit
7376$cat <<EOM
7377
7378$spackage has manual pages available in source form.
7379EOM
7380case "$nroff" in
7381nroff)
7382 echo "However, you don't have nroff, so they're probably useless to you."
7383 case "$man1dir" in
7384 '') man1dir="none";;
7385 esac;;
7386esac
7387echo "If you don't want the manual sources installed, answer 'none'."
7388case "$man1dir" in
7389' ') dflt=none
7390 ;;
7391'')
7392 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7393 lookpath="$lookpath $prefixexp/man/p_man/man1"
7394 lookpath="$lookpath $prefixexp/man/u_man/man1"
7395 lookpath="$lookpath $prefixexp/man/man.1"
7396 case "$sysman" in
7397 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7398 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7399 esac
7400 set dflt
7401 eval $prefixup
7402 ;;
7403*) dflt="$man1dir"
7404 ;;
7405esac
7406echo " "
7407fn=dn+~
7408rp="Where do the main $spackage manual pages (source) go?"
7409. ./getfile
7410if $test "X$man1direxp" != "X$ansexp"; then
7411 installman1dir=''
7412fi
7413man1dir="$ans"
7414man1direxp="$ansexp"
7415case "$man1dir" in
7416'') man1dir=' '
7417 installman1dir='';;
7418esac
7419
7420: Change installation prefix, if necessary.
7421if $test X"$prefix" != X"$installprefix"; then
7422 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7423else
7424 installman1dir="$man1direxp"
7425fi
7426
7427: What suffix to use on installed man pages
7428
7429case "$man1dir" in
7430' ')
7431 man1ext='0'
7432 ;;
7433*)
7434 rp="What suffix should be used for the main $spackage man pages?"
7435 case "$man1ext" in
7436 '') case "$man1dir" in
7437 *1) dflt=1 ;;
7438 *1p) dflt=1p ;;
7439 *1pm) dflt=1pm ;;
7440 *l) dflt=l;;
7441 *n) dflt=n;;
7442 *o) dflt=o;;
7443 *p) dflt=p;;
7444 *C) dflt=C;;
7445 *L) dflt=L;;
7446 *L1) dflt=L1;;
7447 *) dflt=1;;
7448 esac
7449 ;;
7450 *) dflt="$man1ext";;
7451 esac
7452 . ./myread
7453 man1ext="$ans"
7454 ;;
7455esac
7456
7457: see if we can have long filenames
7458echo " "
7459first=123456789abcdef
7460$rm -f $first
7461if (echo hi >$first) 2>/dev/null; then
7462 if $test -f 123456789abcde; then
7463 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7464 val="$undef"
7465 else
7466 echo 'You can have filenames longer than 14 characters.'>&4
7467 val="$define"
7468 fi
7469else
7470 $cat <<'EOM'
7471You can't have filenames longer than 14 chars.
7472You can't even think about them!
7473EOM
7474 val="$undef"
7475fi
7476set d_flexfnam
7477eval $setvar
7478$rm -rf 123456789abcde*
7479
7480: determine where library module manual pages go
7481set man3dir man3dir none
7482eval $prefixit
7483$cat <<EOM
7484
7485$spackage has manual pages for many of the library modules.
7486EOM
7487
7488case "$nroff" in
7489nroff)
7490 $cat <<'EOM'
7491However, you don't have nroff, so they're probably useless to you.
7492EOM
7493 case "$man3dir" in
7494 '') man3dir="none";;
7495 esac;;
7496esac
7497
7498case "$d_flexfnam" in
7499undef)
7500 $cat <<'EOM'
7501However, your system can't handle the long file names like File::Basename.3.
7502EOM
7503 case "$man3dir" in
7504 '') man3dir="none";;
7505 esac;;
7506esac
7507
7508echo "If you don't want the manual sources installed, answer 'none'."
7509prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7510case "$man3dir" in
7511'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7512 if $test -d "$privlib/man/man3"; then
7513 cat <<EOM >&4
7514
7515WARNING: Previous versions of perl installed man3 pages into
7516$privlib/man/man3. This version will suggest a
7517new default of $dflt.
7518EOM
7519 tdflt=$dflt
7520 dflt='n'
7521 rp='Do you wish to preserve the old behavior?(y/n)'
7522 . ./myread
7523 case "$ans" in
7524 y*) dflt="$privlib/man/man3" ;;
7525 *) dflt=$tdflt ;;
7526 esac
7527 fi
7528 ;;
7529*) dflt="$man3dir" ;;
7530esac
7531case "$dflt" in
7532' ') dflt=none ;;
7533esac
7534echo " "
7535fn=dn+~
7536rp="Where do the $package library man pages (source) go?"
7537. ./getfile
7538man3dir="$ans"
7539man3direxp="$ansexp"
7540case "$man3dir" in
7541'') man3dir=' '
7542 installman3dir='';;
7543esac
7544
7545: Change installation prefix, if necessary.
7546if $test X"$prefix" != X"$installprefix"; then
7547 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7548else
7549 installman3dir="$man3direxp"
7550fi
7551
7552: What suffix to use on installed man pages
7553case "$man3dir" in
7554' ')
7555 man3ext='0'
7556 ;;
7557*)
7558 rp="What suffix should be used for the $package library man pages?"
7559 case "$man3ext" in
7560 '') case "$man3dir" in
7561 *3) dflt=3 ;;
7562 *3p) dflt=3p ;;
7563 *3pm) dflt=3pm ;;
7564 *l) dflt=l;;
7565 *n) dflt=n;;
7566 *o) dflt=o;;
7567 *p) dflt=p;;
7568 *C) dflt=C;;
7569 *L) dflt=L;;
7570 *L3) dflt=L3;;
7571 *) dflt=3;;
7572 esac
7573 ;;
7574 *) dflt="$man3ext";;
7575 esac
7576 . ./myread
7577 man3ext="$ans"
7578 ;;
7579esac
7580
7581: see if we have to deal with yellow pages, now NIS.
7582if $test -d /usr/etc/yp || $test -d /etc/yp; then
7583 if $test -f /usr/etc/nibindd; then
7584 echo " "
7585 echo "I'm fairly confident you're on a NeXT."
7586 echo " "
7587 rp='Do you get the hosts file via NetInfo?'
7588 dflt=y
7589 case "$hostcat" in
7590 nidump*) ;;
7591 '') ;;
7592 *) dflt=n;;
7593 esac
7594 . ./myread
7595 case "$ans" in
7596 y*) hostcat='nidump hosts .';;
7597 *) case "$hostcat" in
7598 nidump*) hostcat='';;
7599 esac
7600 ;;
7601 esac
7602 fi
7603 case "$hostcat" in
7604 nidump*) ;;
7605 *)
7606 case "$hostcat" in
7607 *ypcat*) dflt=y;;
7608 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7609 dflt=y
7610 else
7611 dflt=n
7612 fi;;
7613 *) dflt=n;;
7614 esac
7615 echo " "
7616 rp='Are you getting the hosts file via yellow pages?'
7617 . ./myread
7618 case "$ans" in
7619 y*) hostcat='ypcat hosts';;
7620 *) hostcat='cat /etc/hosts';;
7621 esac
7622 ;;
7623 esac
7624fi
7625case "$hostcat" in
7626'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7627esac
7628case "$groupcat" in
7629'') test -f /etc/group && groupcat='cat /etc/group';;
7630esac
7631case "$passcat" in
7632'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7633esac
7634
7635: now get the host name
7636echo " "
7637echo "Figuring out host name..." >&4
7638case "$myhostname" in
7639'') cont=true
7640 echo 'Maybe "hostname" will work...'
73614538 7641 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7642 myhostname=$tans
7643 phostname=hostname
7644 cont=''
7645 fi
7646 ;;
7647*) cont='';;
7648esac
7649if $test "$cont"; then
7650 if ./xenix; then
7651 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7652 if tans=`cat /etc/systemid 2>&1` ; then
7653 myhostname=$tans
7654 phostname='cat /etc/systemid'
7655 echo "Whadyaknow. Xenix always was a bit strange..."
7656 cont=''
7657 fi
7658 elif $test -r /etc/systemid; then
7659 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7660 fi
7661fi
7662if $test "$cont"; then
7663 echo 'No, maybe "uuname -l" will work...'
73614538 7664 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
7665 myhostname=$tans
7666 phostname='uuname -l'
7667 else
7668 echo 'Strange. Maybe "uname -n" will work...'
73614538 7669 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
7670 myhostname=$tans
7671 phostname='uname -n'
7672 else
7673 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 7674 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
7675 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7676 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7677 else
7678 case "$myhostname" in
7679 '') echo "Does this machine have an identity crisis or something?"
7680 phostname='';;
7681 *)
7682 echo "Well, you said $myhostname before..."
7683 phostname='echo $myhostname';;
7684 esac
7685 fi
7686 fi
7687 fi
7688fi
7689: you do not want to know about this
7690set $myhostname
7691myhostname=$1
7692
7693: verify guess
7694if $test "$myhostname" ; then
7695 dflt=y
7696 rp='Your host name appears to be "'$myhostname'".'" Right?"
7697 . ./myread
7698 case "$ans" in
7699 y*) ;;
7700 *) myhostname='';;
7701 esac
7702fi
7703
7704: bad guess or no guess
7705while $test "X$myhostname" = X ; do
7706 dflt=''
7707 rp="Please type the (one word) name of your host:"
7708 . ./myread
7709 myhostname="$ans"
7710done
7711
7712: translate upper to lower if necessary
7713case "$myhostname" in
7714*[A-Z]*)
7715 echo "(Normalizing case in your host name)"
7716 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7717 ;;
7718esac
7719
7720case "$myhostname" in
7721*.*)
7722 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7723 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7724 echo "(Trimming domain name from host name--host name is now $myhostname)"
7725 ;;
7726*) case "$mydomain" in
7727 '')
7728 {
7729 test "X$hostcat" = "Xypcat hosts" &&
7730 ypmatch "$myhostname" hosts 2>/dev/null |\
7731 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7732 $test -s hosts
7733 } || {
7734 test "X$hostcat" != "X" &&
7735 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7736 /[ ]$myhostname[ . ]/p" > hosts
7737 }
7738 tmp_re="[ . ]"
f08cbdd1
PP
7739 if $test -f hosts; then
7740 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7741 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7742 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7743 hosts | $sort | $uniq | \
7744 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7745 case `$echo X$dflt` in
7746 X*\ *) echo "(Several hosts in the database matched hostname)"
7747 dflt=.
7748 ;;
7749 X.) echo "(You do not have fully-qualified names in the hosts database)"
7750 ;;
7751 esac
7752 else
7753 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7754 dflt=.
f08cbdd1 7755 fi
b4eb6b3d
JH
7756 case "$dflt" in
7757 .)
7758 tans=`./loc resolv.conf X /etc /usr/etc`
7759 if $test -f "$tans"; then
7760 echo "(Attempting domain name extraction from $tans)"
7761 dflt=.`$sed -n -e 's/ / /g' \
7762 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7763 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7764 case "$dflt" in
7765 .) dflt=.`$sed -n -e 's/ / /g' \
7766 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7767 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7768 ;;
7769 esac
7770 fi
7771 ;;
7772 esac
7773 case "$dflt" in
7774 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 7775 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
7776 case "$dflt" in
7777 '') dflt='.';;
7778 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7779 esac
7780 ;;
7781 esac
59c9e5d6
PP
7782 case "$dflt$osname" in
7783 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 7784 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
7785 ;;
7786 esac
b4eb6b3d
JH
7787 case "$dflt" in
7788 .) echo "(Lost all hope -- silly guess then)"
7789 dflt='.uucp'
7790 ;;
7791 esac
7792 $rm -f hosts
7793 ;;
7794 *) dflt="$mydomain";;
7795 esac;;
7796esac
7797echo " "
7798rp="What is your domain name?"
7799. ./myread
7800tans="$ans"
7801case "$ans" in
7802'') ;;
7803.*) ;;
7804*) tans=".$tans";;
7805esac
7806mydomain="$tans"
7807
7808: translate upper to lower if necessary
7809case "$mydomain" in
7810*[A-Z]*)
7811 echo "(Normalizing case in your domain name)"
7812 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7813 ;;
7814esac
7815
7816: a little sanity check here
7817case "$phostname" in
7818'') ;;
7819*)
7820 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7821 $myhostname$mydomain|$myhostname) ;;
7822 *)
7823 case "$phostname" in
7824 sed*)
7825 echo "(That doesn't agree with your whoami.h file, by the way.)"
7826 ;;
7827 *)
7828 echo "(That doesn't agree with your $phostname command, by the way.)"
7829 ;;
7830 esac
7831 ;;
7832 esac
7833 ;;
7834esac
7835
7836$cat <<EOM
7837
7838I need to get your e-mail address in Internet format if possible, i.e.
7839something like user@host.domain. Please answer accurately since I have
7840no easy means to double check it. The default value provided below
7841is most probably close to reality but may not be valid from outside
7842your organization...
7843
7844EOM
7845cont=x
7846while test "$cont"; do
7847 case "$cf_email" in
7848 '') dflt="$cf_by@$myhostname$mydomain";;
7849 *) dflt="$cf_email";;
7850 esac
7851 rp='What is your e-mail address?'
7852 . ./myread
7853 cf_email="$ans"
7854 case "$cf_email" in
7855 *@*.*) cont='' ;;
7856 *)
7857 rp='Address does not look like an Internet one. Use it anyway?'
7858 case "$fastread" in
7859 yes) dflt=y ;;
7860 *) dflt=n ;;
7861 esac
7862 . ./myread
7863 case "$ans" in
7864 y*) cont='' ;;
7865 *) echo " " ;;
7866 esac
7867 ;;
7868 esac
7869done
7870
7871$cat <<EOM
7872
7873If you or somebody else will be maintaining perl at your site, please
7874fill in the correct e-mail address here so that they may be contacted
7875if necessary. Currently, the "perlbug" program included with perl
7876will send mail to this address in addition to perlbug@perl.org. You may
7877enter "none" for no administrator.
7878
7879EOM
7880case "$perladmin" in
7881'') dflt="$cf_email";;
7882*) dflt="$perladmin";;
7883esac
7884rp='Perl administrator e-mail address'
7885. ./myread
7886perladmin="$ans"
7887
674912d7
RB
7888: determine whether to only install version-specific parts.
7889echo " "
7890$cat <<EOM
7891Do you want to install only the version-specific parts of the perl
7892distribution? Usually you do *not* want to do this.
7893EOM
7894case "$versiononly" in
7895"$define"|[Yy]*|true) dflt='y' ;;
7896*) dflt='n';
7897esac
7898rp="Do you want to install only the version-specific parts of perl?"
7899. ./myread
7900case "$ans" in
7901[yY]*) val="$define";;
7902*) val="$undef" ;;
7903esac
7904set versiononly
7905eval $setvar
7906
b4eb6b3d
JH
7907: figure out how to guarantee perl startup
7908case "$startperl" in
7909'')
7910 case "$sharpbang" in
7911 *!)
7912 $cat <<EOH
7913
7914I can use the #! construct to start perl on your system. This will
7915make startup of perl scripts faster, but may cause problems if you
7916want to share those scripts and perl is not in a standard place
7917($binexp/perl) on all your platforms. The alternative is to force
7918a shell by starting the script with a single ':' character.
7919
7920EOH
674912d7
RB
7921 case "$versiononly" in
7922 "$define") dflt="$binexp/perl$version";;
7923 *) dflt="$binexp/perl";;
7924 esac
b4eb6b3d
JH
7925 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7926 . ./myread
7927 case "$ans" in
7928 none) startperl=": # use perl";;
7929 *) startperl="#!$ans"
7930 if $test 30 -lt `echo "$ans" | wc -c`; then
7931 $cat >&4 <<EOM
7932
7933WARNING: Some systems limit the #! command to 32 characters.
7934If you experience difficulty running Perl scripts with #!, try
7935installing Perl in a directory with a shorter pathname.
7936
7937EOM
7938 fi ;;
7939 esac
7940 ;;
7941 *) startperl=": # use perl"
7942 ;;
7943 esac
7944 ;;
7945esac
7946echo "I'll use $startperl to start perl scripts."
7947
7948: figure best path for perl in scripts
7949case "$perlpath" in
7950'')
7951 perlpath="$binexp/perl"
7952 case "$startperl" in
7953 *!*) ;;
7954 *)
7955 $cat <<EOH
7956
7957I will use the "eval 'exec'" idiom to start Perl on your system.
7958I can use the full path of your Perl binary for this purpose, but
7959doing so may cause problems if you want to share those scripts and
7960Perl is not always in a standard place ($binexp/perl).
7961
7962EOH
7963 dflt="$binexp/perl"
7964 rp="What path shall I use in \"eval 'exec'\"?"
7965 . ./myread
7966 perlpath="$ans"
7967 ;;
7968 esac
7969 ;;
7970esac
7971case "$startperl" in
7972*!*) ;;
7973*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7974esac
7975
7976: determine where public executable scripts go
7977set scriptdir scriptdir
7978eval $prefixit
7979case "$scriptdir" in
7980'')
7981 dflt="$bin"
7982 : guess some guesses
7983 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7984 $test -d /usr/share/bin && dflt=/usr/share/bin
7985 $test -d /usr/local/script && dflt=/usr/local/script
7986 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7987 $test -d $prefixexp/script && dflt=$prefixexp/script
7988 set dflt
7989 eval $prefixup
7990 ;;
7991*) dflt="$scriptdir"
7992 ;;
7993esac
7994$cat <<EOM
7995
7996Some installations have a separate directory just for executable scripts so
7997that they can mount it across multiple architectures but keep the scripts in
7998one spot. You might, for example, have a subdirectory of /usr/share for this.
7999Or you might just lump your scripts in with all your other executables.
8000
8001EOM
8002fn=d~
8003rp='Where do you keep publicly executable scripts?'
8004. ./getfile
8005if $test "X$ansexp" != "X$scriptdirexp"; then
8006 installscript=''
8007fi
8008scriptdir="$ans"
8009scriptdirexp="$ansexp"
8010: Change installation prefix, if necessary.
8011if $test X"$prefix" != X"$installprefix"; then
8012 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8013else
8014 installscript="$scriptdirexp"
8015fi
8016
8017: determine where add-on public executables go
8018case "$sitebin" in
8019'') dflt=$siteprefix/bin ;;
8020*) dflt=$sitebin ;;
8021esac
8022fn=d~
8023rp='Pathname where the add-on public executables should be installed?'
8024. ./getfile
8025sitebin="$ans"
8026sitebinexp="$ansexp"
8027: Change installation prefix, if necessary.
8028if $test X"$prefix" != X"$installprefix"; then
8029 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8030else
8031 installsitebin="$sitebinexp"
8032fi
8033
96056487
JH
8034: define an is-a-typedef? function
8035typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8036case "$inclist" in
8037"") inclist="sys/types.h";;
8038esac;
8039eval "varval=\$$var";
8040case "$varval" in
8041"")
8042 $rm -f temp.c;
8043 for inc in $inclist; do
8044 echo "#include <$inc>" >>temp.c;
8045 done;
8046 echo "#ifdef $type" >> temp.c;
8047 echo "printf(\"We have $type\");" >> temp.c;
8048 echo "#endif" >> temp.c;
8049 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8050 if $contains $type temp.E >/dev/null 2>&1; then
8051 eval "$var=\$type";
8052 else
8053 eval "$var=\$def";
8054 fi;
8055 $rm -f temp.?;;
8056*) eval "$var=\$varval";;
8057esac'
8058
8059: define an is-a-typedef? function that prompts if the type is not available.
8060typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8061case "$inclist" in
8062"") inclist="sys/types.h";;
8063esac;
8064eval "varval=\$$var";
8065case "$varval" in
8066"")
8067 $rm -f temp.c;
8068 for inc in $inclist; do
8069 echo "#include <$inc>" >>temp.c;
8070 done;
8071 echo "#ifdef $type" >> temp.c;
8072 echo "printf(\"We have $type\");" >> temp.c;
8073 echo "#endif" >> temp.c;
8074 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8075 echo " " ;
8076 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8077 if $contains $type temp.E >/dev/null 2>&1; then
8078 echo "$type found." >&4;
8079 eval "$var=\$type";
8080 else
8081 echo "$type NOT found." >&4;
8082 dflt="$def";
8083 . ./myread ;
8084 eval "$var=\$ans";
8085 fi;
8086 $rm -f temp.?;;
8087*) eval "$var=\$varval";;
8088esac'
8089
8090: see what type lseek is declared as in the kernel
8091rp="What is the type used for lseek's offset on this system?"
8092set off_t lseektype long stdio.h sys/types.h
8093eval $typedef_ask
8094
8095echo " "
8096echo "Checking to see how big your file offsets are..." >&4
8097$cat >try.c <<EOCP
8098#include <sys/types.h>
8099#include <stdio.h>
8100int main()
8101{
8102 printf("%d\n", (int)sizeof($lseektype));
8103 return(0);
8104}
8105EOCP
8106set try
8107if eval $compile_ok; then
8108 lseeksize=`$run ./try`
8109 echo "Your file offsets are $lseeksize bytes long."
8110else
8111 dflt=$longsize
8112 echo " "
8113 echo "(I can't seem to compile the test program. Guessing...)"
8114 rp="What is the size of your file offsets (in bytes)?"
8115 . ./myread
8116 lseeksize="$ans"
8117fi
8118$rm -f try.c try
8119
8120: see what type file positions are declared as in the library
8121rp="What is the type for file position used by fsetpos()?"
8122set fpos_t fpostype long stdio.h sys/types.h
8123eval $typedef_ask
8124
8125echo " "
8126case "$fpostype" in
8127*_t) zzz="$fpostype" ;;
8128*) zzz="fpos_t" ;;
8129esac
8130echo "Checking the size of $zzz..." >&4
8131cat > try.c <<EOCP
8132#include <sys/types.h>
8133#include <stdio.h>
8134int main() {
8135 printf("%d\n", (int)sizeof($fpostype));
8136 exit(0);
8137}
8138EOCP
8139set try
8140if eval $compile_ok; then
8141 yyy=`$run ./try`
8142 case "$yyy" in
8143 '') fpossize=4
8144 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8145 ;;
8146 *) fpossize=$yyy
8147 echo "Your $zzz is $fpossize bytes long."
8148 ;;
8149 esac
8150else
8151 dflt="$longsize"
8152 echo " " >&4
8153 echo "(I can't compile the test program. Guessing...)" >&4
8154 rp="What is the size of your file positions (in bytes)?"
8155 . ./myread
8156 fpossize="$ans"
8157fi
8158
8159
8160
8161# Backward compatibility (uselfs is deprecated).
8162case "$uselfs" in
8163"$define"|true|[yY]*)
8164 cat <<EOM >&4
8165
8166*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8167EOM
8168 uselargefiles="$define"
8169 ;;
8170esac
8171
8172case "$lseeksize:$fpossize" in
81738:8) cat <<EOM
8174
8175You can have files larger than 2 gigabytes.
8176EOM
8177 val="$define" ;;
8178*) case "$uselargefiles" in
8179 "$undef"|false|[nN]*) dflt='n' ;;
8180 *) dflt='y' ;;
8181 esac
8182 cat <<EOM
8183
8184Perl can be built to understand large files (files larger than 2 gigabytes)
8185on some systems. To do so, Configure can be run with -Duselargefiles.
8186
8187If this doesn't make any sense to you, just accept the default '$dflt'.
8188EOM
8189 rp='Try to understand large files, if available?'
8190 . ./myread
8191 case "$ans" in
8192 y|Y) val="$define" ;;
8193 *) val="$undef" ;;
8194 esac
8195 ;;
8196esac
8197set uselargefiles
8198eval $setvar
8199case "$uselargefiles" in
8200"$define")
8201: Look for a hint-file generated 'call-back-unit'. If the
8202: user has specified that a large files perl is to be built,
8203: we may need to set or change some other defaults.
8204 if $test -f uselargefiles.cbu; then
8205 echo "Your platform has some specific hints for large file builds, using them..."
8206 . ./uselargefiles.cbu
8207 echo " "
8208 echo "Rechecking to see how big your file offsets are..." >&4
8209 $cat >try.c <<EOCP
8210#include <sys/types.h>
8211#include <stdio.h>
8212int main()
8213{
8214 printf("%d\n", (int)sizeof($lseektype));
8215 return(0);
8216}
8217EOCP
8218 set try
8219 if eval $compile_ok; then
8220 lseeksize=`$run ./try`
8221 $echo "Your file offsets are now $lseeksize bytes long."
8222 else
8223 dflt="$lseeksize"
8224 echo " "
8225 echo "(I can't seem to compile the test program. Guessing...)"
8226 rp="What is the size of your file offsets (in bytes)?"
8227 . ./myread
8228 lseeksize="$ans"
8229 fi
8230 case "$fpostype" in
8231 *_t) zzz="$fpostype" ;;
8232 *) zzz="fpos_t" ;;
8233 esac
8234 $echo $n "Rechecking the size of $zzz...$c" >&4
8235 $cat > try.c <<EOCP
8236#include <sys/types.h>
8237#include <stdio.h>
8238int main() {
8239 printf("%d\n", (int)sizeof($fpostype));
8240 exit(0);
8241}
8242EOCP
8243 set try
8244 if eval $compile_ok; then
8245 yyy=`$run ./try`
8246 dflt="$lseeksize"
8247 case "$yyy" in
8248 '') echo " "
8249 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8250 ;;
8251 *) fpossize=$yyy
8252 echo " $fpossize bytes." >&4
8253 ;;
8254 esac
8255 else
8256 dflt="$fpossize"
8257 echo " "
8258 echo "(I can't compile the test program. Guessing...)" >&4
8259 rp="What is the size of your file positions (in bytes)?"
8260 . ./myread
8261 fpossize="$ans"
8262 fi
8263 $rm -f try.c try
8264 fi
8265 ;;
8266esac
8267
b4eb6b3d
JH
8268case "$vendorprefix" in
8269'') d_vendorbin="$undef"
8270 vendorbin=''
8271 vendorbinexp=''
8272 ;;
8273*) d_vendorbin="$define"
8274 : determine where vendor-supplied executables go.
8275 case "$vendorbin" in
8276 '') dflt=$vendorprefix/bin ;;
8277 *) dflt="$vendorbin" ;;
8278 esac
8279 fn=d~+
8280 rp='Pathname for the vendor-supplied executables directory?'
8281 . ./getfile
8282 vendorbin="$ans"
8283 vendorbinexp="$ansexp"
8284 ;;
8285esac
8286: Change installation prefix, if necessary.
8287if $test X"$prefix" != X"$installprefix"; then
8288 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8289else
8290 installvendorbin="$vendorbinexp"
8291fi
8292
8293: see if qgcvt exists
8294set qgcvt d_qgcvt
8295eval $inlibc
8296
8297echo " "
8298
8299if $test X"$d_longdbl" = X"$define"; then
8300
8301echo "Checking how to print long doubles..." >&4
8302
8303if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8304 $cat >try.c <<'EOCP'
8305#include <sys/types.h>
8306#include <stdio.h>
8307int main() {
8308 double d = 123.456;
8309 printf("%.3f\n", d);
8310}
8311EOCP
8312 set try
8313 if eval $compile; then
5440bc8e 8314 yyy=`$run ./try`
b4eb6b3d
JH
8315 case "$yyy" in
8316 123.456)
8317 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8318 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8319 echo "We will use %f."
8320 ;;
8321 esac
8322 fi
8323fi
8324
8325if $test X"$sPRIfldbl" = X; then
8326 $cat >try.c <<'EOCP'
8327#include <sys/types.h>
8328#include <stdio.h>
8329int main() {
8330 long double d = 123.456;
2ef53570 8331 printf("%.3Lf\n", d);
b4eb6b3d
JH
8332}
8333EOCP
8334 set try
8335 if eval $compile; then
5440bc8e 8336 yyy=`$run ./try`
b4eb6b3d
JH
8337 case "$yyy" in
8338 123.456)
2ef53570
JH
8339 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8340 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8341 echo "We will use %Lf."
b4eb6b3d
JH
8342 ;;
8343 esac
8344 fi
8345fi
8346
8347if $test X"$sPRIfldbl" = X; then
8348 $cat >try.c <<'EOCP'
8349#include <sys/types.h>
8350#include <stdio.h>
8351int main() {
8352 long double d = 123.456;
2ef53570 8353 printf("%.3llf\n", d);
b4eb6b3d
JH
8354}
8355EOCP
8356 set try
8357 if eval $compile; then
5440bc8e 8358 yyy=`$run ./try`
b4eb6b3d
JH
8359 case "$yyy" in
8360 123.456)
2ef53570
JH
8361 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8362 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8363 echo "We will use %llf."
b4eb6b3d
JH
8364 ;;
8365 esac
8366 fi
8367fi
8368
8369if $test X"$sPRIfldbl" = X; then
8370 $cat >try.c <<'EOCP'
8371#include <sys/types.h>
8372#include <stdio.h>
8373int main() {
8374 long double d = 123.456;
8375 printf("%.3lf\n", d);
8376}
8377EOCP
8378 set try
8379 if eval $compile; then
5440bc8e 8380 yyy=`$run ./try`
b4eb6b3d
JH
8381 case "$yyy" in
8382 123.456)
8383 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8384 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8385 echo "We will use %lf."
8386 ;;
8387 esac
8388 fi
8389fi
8390
8391if $test X"$sPRIfldbl" = X; then
8392 echo "Cannot figure out how to print long doubles." >&4
8393else
8394 sSCNfldbl=$sPRIfldbl # expect consistency
8395fi
8396
8397$rm -f try try.*
8398
8399fi # d_longdbl
8400
8401case "$sPRIfldbl" in
8402'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8403 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8404 d_SCNfldbl="$undef";
8405 ;;
8406*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8407 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8408 d_SCNfldbl="$define";
8409 ;;
8410esac
8411
8412: Check how to convert floats to strings.
8413echo " "
8414echo "Checking for an efficient way to convert floats to strings."
8415echo " " > try.c
8416case "$uselongdouble" in
8417"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8418esac
8419case "$d_longdbl" in
8420"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8421esac
8422case "$d_PRIgldbl" in
8423"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8424esac
8425$cat >>try.c <<EOP
8426#ifdef TRY_gconvert
8427#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8428char *myname = "gconvert";
8429#endif
8430#ifdef TRY_gcvt
8431#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8432char *myname = "gcvt";
8433#endif
8434#ifdef TRY_qgcvt
8435#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8436char *myname = "qgcvt";
8437#define DOUBLETYPE long double
8438#endif
8439#ifdef TRY_sprintf
8440#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8441#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8442#else
8443#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8444#endif
8445char *myname = "sprintf";
8446#endif
8447
8448#ifndef DOUBLETYPE
8449#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8450#define DOUBLETYPE long double
8451#else
8452#define DOUBLETYPE double
8453#endif
8454#endif
8455
8456#include <stdio.h>
8457
8458#define I_STDLIB $i_stdlib
8459#ifdef I_STDLIB
8460#include <stdlib.h>
8461#endif
8462
8463int
8464checkit(expect, got)
8465char *expect;
8466char *got;
8467{
8468 if (strcmp(expect, got)) {
8469 printf("%s oddity: Expected %s, got %s\n",
8470 myname, expect, got);
8471 exit(1);
8472 }
8473}
8474
8475int main()
8476{
8477 char buf[64];
8478 buf[63] = '\0';
8479
8480 /* This must be 1st test on (which?) platform */
8481 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8482 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8483 checkit("0.1", buf);
8484
8485 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8486 checkit("1", buf);
8487
8488 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8489 checkit("1.1", buf);
8490
8491 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8492 checkit("1.01", buf);
8493
8494 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8495 checkit("1.001", buf);
8496
8497 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8498 checkit("1.0001", buf);
8499
8500 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8501 checkit("1.00001", buf);
8502
8503 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8504 checkit("1.000001", buf);
8505
8506 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8507 checkit("0", buf);
8508
8509 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8510 checkit("-1", buf);
8511
8512 /* Some Linux gcvt's give 1.e+5 here. */
8513 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8514 checkit("100000", buf);
8515
8516 /* Some Linux gcvt's give -1.e+5 here. */
8517 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8518 checkit("-100000", buf);
8519
8520 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8521 checkit("123.456", buf);
8522
8e2a5ede
SB
8523 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8524 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8525 if (strlen(buf) > 5)
8526 checkit("1e+030", buf); /* for Microsoft */
8527 else
8528 checkit("1e+30", buf);
8529
b4eb6b3d
JH
8530 exit(0);
8531}
8532EOP
8533case "$d_Gconvert" in
8534gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8535gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8536sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8537*) xxx_list='gconvert gcvt sprintf' ;;
8538esac
8539
8540case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8541"$define$define$define")
8542 # for long doubles prefer first qgcvt, then sprintf
8543 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8544 xxx_list="sprintf $xxx_list"
8545 case "$d_qgcvt" in
8546 "$define") xxx_list="qgcvt $xxx_list" ;;
8547 esac
8548 ;;
8549esac
8550
8551for xxx_convert in $xxx_list; do
8552 echo "Trying $xxx_convert..."
8553 $rm -f try try$_o
8554 set try -DTRY_$xxx_convert
8555 if eval $compile; then
8556 echo "$xxx_convert() found." >&4
5440bc8e 8557 if $run ./try; then
b4eb6b3d
JH
8558 echo "I'll use $xxx_convert to convert floats into a string." >&4
8559 break;
8560 else
8561 echo "...But $xxx_convert didn't work as I expected."
8562 fi
8563 else
8564 echo "$xxx_convert NOT found." >&4
8565 fi
8566done
8567
8568case "$xxx_convert" in
8569gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8570gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8571qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8572*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8573 "$define$define$define")
8574 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8575 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8576 esac
8577 ;;
8578esac
8579
74cac757
JH
8580: see if _fwalk exists
8581set fwalk d__fwalk
8582eval $inlibc
8583
b4eb6b3d
JH
8584: Initialize h_fcntl
8585h_fcntl=false
8586
8587: Initialize h_sysfile
8588h_sysfile=false
8589
8590: access call always available on UNIX
8591set access d_access
8592eval $inlibc
8593
8594: locate the flags for 'access()'
8595case "$d_access" in
8596"$define")
8597 echo " "
8598 $cat >access.c <<'EOCP'
8599#include <sys/types.h>
8600#ifdef I_FCNTL
8601#include <fcntl.h>
8602#endif
8603#ifdef I_SYS_FILE
8604#include <sys/file.h>
8605#endif
8606#ifdef I_UNISTD
8607#include <unistd.h>
8608#endif
8609int main() {
8610 exit(R_OK);
8611}
8612EOCP
8613 : check sys/file.h first, no particular reason here
8614 if $test `./findhdr sys/file.h` && \
7a282f6d 8615 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8616 h_sysfile=true;
8617 echo "<sys/file.h> defines the *_OK access constants." >&4
8618 elif $test `./findhdr fcntl.h` && \
7a282f6d 8619 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8620 h_fcntl=true;
8621 echo "<fcntl.h> defines the *_OK access constants." >&4
8622 elif $test `./findhdr unistd.h` && \
7a282f6d 8623 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8624 echo "<unistd.h> defines the *_OK access constants." >&4
8625 else
8626 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8627 fi
8628 ;;
8629esac
8630$rm -f access*
8631
8632: see if accessx exists
8633set accessx d_accessx
8634eval $inlibc
8635
8636: see if alarm exists
8637set alarm d_alarm
8638eval $inlibc
8639
8640: see if atolf exists
8641set atolf d_atolf
8642eval $inlibc
8643
8644: see if atoll exists
8645set atoll d_atoll
8646eval $inlibc
8647
8648: Look for GNU-cc style attribute checking
8649echo " "
8650echo "Checking whether your compiler can handle __attribute__ ..." >&4
8651$cat >attrib.c <<'EOCP'
8652#include <stdio.h>
8653void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8654EOCP
8655if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8656 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8657 echo "Your C compiler doesn't fully support __attribute__."
8658 val="$undef"
8659 else
8660 echo "Your C compiler supports __attribute__."
8661 val="$define"
8662 fi
8663else
8664 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8665 val="$undef"
8666fi
8667set d_attribut
8668eval $setvar
8669$rm -f attrib*
8670
8671: see if bcmp exists
8672set bcmp d_bcmp
8673eval $inlibc
8674
8675: see if bcopy exists
8676set bcopy d_bcopy
8677eval $inlibc
8678
8679: see if this is a unistd.h system
8680set unistd.h i_unistd
8681eval $inhdr
8682
8683: see if getpgrp exists
8684set getpgrp d_getpgrp
8685eval $inlibc
8686
8687case "$d_getpgrp" in
8688"$define")
8689 echo " "
8690 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 8691 $cat >try.c <<EOP
b4eb6b3d
JH
8692#$i_unistd I_UNISTD
8693#include <sys/types.h>
8694#ifdef I_UNISTD
8695# include <unistd.h>
8696#endif
8697int main()
8698{
8699 if (getuid() == 0) {
8700 printf("(I see you are running Configure as super-user...)\n");
8701 setuid(1);
8702 }
8703#ifdef TRY_BSD_PGRP
8704 if (getpgrp(1) == 0)
8705 exit(0);
8706#else
8707 if (getpgrp() > 0)
8708 exit(0);
8709#endif
8710 exit(1);
8711}
8712EOP
5440bc8e 8713 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8714 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8715 val="$define"
5440bc8e 8716 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8717 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8718 val="$undef"
8719 else
8720 echo "I can't seem to compile and run the test program."
8721 if ./usg; then
8722 xxx="a USG one, i.e. you use getpgrp()."
8723 else
8724 # SVR4 systems can appear rather BSD-ish.
8725 case "$i_unistd" in
8726 $undef)
8727 xxx="a BSD one, i.e. you use getpgrp(pid)."
8728 val="$define"
8729 ;;
8730 $define)
8731 xxx="probably a USG one, i.e. you use getpgrp()."
8732 val="$undef"
8733 ;;
8734 esac
8735 fi
8736 echo "Assuming your getpgrp is $xxx" >&4
8737 fi
8738 ;;
8739*) val="$undef";;
8740esac
8741set d_bsdgetpgrp
8742eval $setvar
5440bc8e 8743$rm -f try try.*
b4eb6b3d
JH
8744
8745: see if setpgrp exists
8746set setpgrp d_setpgrp
8747eval $inlibc
8748
8749case "$d_setpgrp" in
8750"$define")
8751 echo " "
8752 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 8753 $cat >try.c <<EOP
b4eb6b3d
JH
8754#$i_unistd I_UNISTD
8755#include <sys/types.h>
8756#ifdef I_UNISTD
8757# include <unistd.h>
8758#endif
8759int main()
8760{
8761 if (getuid() == 0) {
8762 printf("(I see you are running Configure as super-user...)\n");
8763 setuid(1);
8764 }
8765#ifdef TRY_BSD_PGRP
8766 if (-1 == setpgrp(1, 1))
8767 exit(0);
8768#else
8769 if (setpgrp() != -1)
8770 exit(0);
8771#endif
8772 exit(1);
8773}
8774EOP
5440bc8e 8775 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8776 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8777 val="$define"
5440bc8e 8778 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8779 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8780 val="$undef"
8781 else
8782 echo "(I can't seem to compile and run the test program.)"
8783 if ./usg; then
8784 xxx="a USG one, i.e. you use setpgrp()."
8785 else
8786 # SVR4 systems can appear rather BSD-ish.
8787 case "$i_unistd" in
8788 $undef)
8789 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8790 val="$define"
8791 ;;
8792 $define)
8793 xxx="probably a USG one, i.e. you use setpgrp()."
8794 val="$undef"
8795 ;;
8796 esac
8797 fi
8798 echo "Assuming your setpgrp is $xxx" >&4
8799 fi
8800 ;;
8801*) val="$undef";;
8802esac
8803set d_bsdsetpgrp
8804eval $setvar
5440bc8e 8805$rm -f try try.*
b4eb6b3d
JH
8806: see if bzero exists
8807set bzero d_bzero
8808eval $inlibc
8809
8810: see if signal is declared as pointer to function returning int or void
8811echo " "
8812xxx=`./findhdr signal.h`
8813$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8814if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8815 echo "You have int (*signal())() instead of void." >&4
8816 val="$undef"
8817elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8818 echo "You have void (*signal())()." >&4
8819 val="$define"
8820elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8821 echo "You have int (*signal())() instead of void." >&4
8822 val="$undef"
8823elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8824 echo "You have void (*signal())()." >&4
8825 val="$define"
8826else
8827 case "$d_voidsig" in
8828 '')
8829 echo "I can't determine whether signal handler returns void or int..." >&4
8830 dflt=void
8831 rp="What type does your signal handler return?"
8832 . ./myread
8833 case "$ans" in
8834 v*) val="$define";;
8835 *) val="$undef";;
8836 esac;;
8837 "$define")
8838 echo "As you already told me, signal handler returns void." >&4
8839 val="$define"
8840 ;;
8841 *) echo "As you already told me, signal handler returns int." >&4
8842 val="$undef"
8843 ;;
8844 esac
8845fi
8846set d_voidsig
8847eval $setvar
8848case "$d_voidsig" in
8849"$define") signal_t="void";;
8850*) signal_t="int";;
8851esac
8852$rm -f $$.tmp
8853
8854: check for ability to cast large floats to 32-bit ints.
8855echo " "
8856echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8857if $test "$intsize" -ge 4; then
8858 xxx=int
8859else
8860 xxx=long
8861fi
8862$cat >try.c <<EOCP
8863#include <stdio.h>
8864#include <sys/types.h>
8865#include <signal.h>
8866$signal_t blech(s) int s; { exit(3); }
8867int main()
8868{
8869 $xxx i32;
8870 double f, g;
8871 int result = 0;
8872 char str[16];
8873 signal(SIGFPE, blech);
8874
8875 /* Don't let compiler optimize the test away. Store the number
8876 in a writable string for gcc to pass to sscanf under HP/UX.
8877 */
8878 sprintf(str, "2147483647");
8879 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8880 g = 10 * f;
8881 i32 = ($xxx) g;
8882
8883 /* x86 processors will probably give 0x8000 0000, which is a
8884 sign change. We don't want that. We want to mimic SPARC
8885 behavior here, which is to preserve the sign and give
8886 back 0x7fff ffff.
8887 */
8888 if (i32 != ($xxx) f)
8889 result |= 1;
8890 exit(result);
8891}
8892EOCP
8893set try
8894if eval $compile_ok; then
5440bc8e 8895 $run ./try
b4eb6b3d
JH
8896 yyy=$?
8897else
8898 echo "(I can't seem to compile the test program--assuming it can't)"
8899 yyy=1
8900fi
8901case "$yyy" in
89020) val="$define"
8903 echo "Yup, it can."
8904 ;;
8905*) val="$undef"
8906 echo "Nope, it can't."
8907 ;;
8908esac
8909set d_casti32
8910eval $setvar
8911$rm -f try try.*
8912
8913: check for ability to cast negative floats to unsigned
8914echo " "
8915echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8916$cat >try.c <<EOCP
8917#include <stdio.h>
8918#include <sys/types.h>
8919#include <signal.h>
8920$signal_t blech(s) int s; { exit(7); }
8921$signal_t blech_in_list(s) int s; { exit(4); }
8922unsigned long dummy_long(p) unsigned long p; { return p; }
8923unsigned int dummy_int(p) unsigned int p; { return p; }
8924unsigned short dummy_short(p) unsigned short p; { return p; }
8925int main()
8926{
8927 double f;
8928 unsigned long along;
8929 unsigned int aint;
8930 unsigned short ashort;
8931 int result = 0;
8932 char str[16];
8933
8934 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8935 a direct f = -123. assignment. gcc-2.8.0 reportedly
8936 optimized the whole file away
8937 */
8938 /* Store the number in a writable string for gcc to pass to
8939 sscanf under HP/UX.
8940 */
8941 sprintf(str, "-123");
8942 sscanf(str, "%lf", &f); /* f = -123.; */
8943
8944 signal(SIGFPE, blech);
8945 along = (unsigned long)f;
8946 aint = (unsigned int)f;
8947 ashort = (unsigned short)f;
8948 if (along != (unsigned long)-123)
8949 result |= 1;
8950 if (aint != (unsigned int)-123)
8951 result |= 1;
8952 if (ashort != (unsigned short)-123)
8953 result |= 1;
8954 sprintf(str, "1073741824.");
8955 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8956 f = f + f;
8957 along = 0;
8958 along = (unsigned long)f;
8959 if (along != 0x80000000)
8960 result |= 2;
8961 f -= 1.;
8962 along = 0;
8963 along = (unsigned long)f;
8964 if (along != 0x7fffffff)
8965 result |= 1;
8966 f += 2.;
8967 along = 0;
8968 along = (unsigned long)f;
8969 if (along != 0x80000001)
8970 result |= 2;
8971 if (result)
8972 exit(result);
8973 signal(SIGFPE, blech_in_list);
8974 sprintf(str, "123.");
8975 sscanf(str, "%lf", &f); /* f = 123.; */
8976 along = dummy_long((unsigned long)f);
8977 aint = dummy_int((unsigned int)f);
8978 ashort = dummy_short((unsigned short)f);
8979 if (along != (unsigned long)123)
8980 result |= 4;
8981 if (aint != (unsigned int)123)
8982 result |= 4;
8983 if (ashort != (unsigned short)123)
8984 result |= 4;
8985 exit(result);
8986
8987}
8988EOCP
8989set try
8990if eval $compile_ok; then
5440bc8e 8991 $run ./try
b4eb6b3d
JH
8992 castflags=$?
8993else
8994 echo "(I can't seem to compile the test program--assuming it can't)"
8995 castflags=7
8996fi
8997case "$castflags" in
89980) val="$define"
8999 echo "Yup, it can."
9000 ;;
9001*) val="$undef"
9002 echo "Nope, it can't."
9003 ;;
9004esac
9005set d_castneg
9006eval $setvar
9007$rm -f try.*
9008
9009: see if vprintf exists
9010echo " "
9011if set vprintf val -f d_vprintf; eval $csym; $val; then
9012 echo 'vprintf() found.' >&4
9013 val="$define"
5440bc8e 9014 $cat >try.c <<'EOF'
b4eb6b3d
JH
9015#include <varargs.h>
9016
9017int main() { xxx("foo"); }
9018
9019xxx(va_alist)
9020va_dcl
9021{
9022 va_list args;
9023 char buf[10];
9024
9025 va_start(args);
9026 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9027}
9028EOF
5440bc8e
JH
9029 set try
9030 if eval $compile && $run ./try; then
b4eb6b3d
JH
9031 echo "Your vsprintf() returns (int)." >&4
9032 val2="$undef"
9033 else
9034 echo "Your vsprintf() returns (char*)." >&4
9035 val2="$define"
9036 fi
9037else
9038 echo 'vprintf() NOT found.' >&4
9039 val="$undef"
9040 val2="$undef"
9041fi
5440bc8e 9042$rm -f try try.*
b4eb6b3d
JH
9043set d_vprintf
9044eval $setvar
9045val=$val2
9046set d_charvspr
9047eval $setvar
9048
9049: see if chown exists
9050set chown d_chown
9051eval $inlibc
9052
9053: see if chroot exists
9054set chroot d_chroot
9055eval $inlibc
9056
9057: see if chsize exists
9058set chsize d_chsize
9059eval $inlibc
9060
4e0554ec
JH
9061hasstruct='varname=$1; struct=$2; shift; shift;
9062while $test $# -ge 2; do
9063 case "$1" in
9064 $define) echo "#include <$2>";;
9065 esac ;
9066 shift 2;
9067done > try.c;
9068echo "int main () { struct $struct foo; }" >> try.c;
9069set try;
9070if eval $compile; then
9071 val="$define";
9072else
9073 val="$undef";
9074fi;
9075set $varname;
9076eval $setvar;
9077$rm -f try.c try.o'
9078
9079: see if sys/types.h has to be included
9080set sys/types.h i_systypes
9081eval $inhdr
9082
9083hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9084while $test $# -ge 2; do
9085 case "$1" in
9086 $define) echo "#include <$2>";;
9087 esac ;
9088 shift 2;
9089done > try.c;
9090echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9091set try;
9092if eval $compile; then
9093 val="$define";
9094else
9095 val="$undef";
9096fi;
9097set $varname;
9098eval $setvar;
9099$rm -f try.c try.o'
9100
9101socketlib=''
9102sockethdr=''
9103: see whether socket exists
9104echo " "
9105$echo $n "Hmm... $c" >&4
9106if set socket val -f d_socket; eval $csym; $val; then
9107 echo "Looks like you have Berkeley networking support." >&4
9108 d_socket="$define"
9109 if set setsockopt val -f; eval $csym; $val; then
9110 d_oldsock="$undef"
9111 else
9112 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9113 d_oldsock="$define"
9114 fi
9115else
9116 if $contains socklib libc.list >/dev/null 2>&1; then
9117 echo "Looks like you have Berkeley networking support." >&4
9118 d_socket="$define"
9119 : we will have to assume that it supports the 4.2 BSD interface
9120 d_oldsock="$undef"
9121 else
9122 echo "You don't have Berkeley networking in libc$_a..." >&4
9123 if test "X$d_socket" = "X$define"; then
9124 echo "...but you seem to believe that you have sockets." >&4
9125 else
9126 for net in net socket
9127 do
9128 if test -f /usr/lib/lib$net$_a; then
9129 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9130 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9131 if $contains socket libc.list >/dev/null 2>&1; then
9132 d_socket="$define"
9133 socketlib="-l$net"
9134 case "$net" in
9135 net)
9136 echo "...but the Wollongong group seems to have hacked it in." >&4
9137 sockethdr="-I/usr/netinclude"
9138 ;;
9139 esac
9140 echo "Found Berkeley sockets interface in lib$net." >& 4
9141 if $contains setsockopt libc.list >/dev/null 2>&1; then
9142 d_oldsock="$undef"
9143 else
9144 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9145 d_oldsock="$define"
9146 fi
9147 break
9148 fi
9149 fi
9150 done
9151 if test "X$d_socket" != "X$define"; then
9152 echo "or anywhere else I see." >&4
9153 d_socket="$undef"
9154 d_oldsock="$undef"
9155 fi
9156 fi
9157 fi
9158fi
9159
9160: see if socketpair exists
9161set socketpair d_sockpair
9162eval $inlibc
9163
9164
9165echo " "
9166echo "Checking the availability of certain socket constants..." >& 4
9167for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9168 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9169 $cat >try.c <<EOF
9170#include <sys/types.h>
9171#include <sys/socket.h>
9172int main() {
9173 int i = $ENUM;
9174}
9175EOF
9176 val="$undef"
9177 set try; if eval $compile; then
9178 val="$define"
9179 fi
9180 set d_${enum}; eval $setvar
9181 $rm -f try.c try
9182done
9183
9184: see if this is a sys/uio.h system
9185set sys/uio.h i_sysuio
9186eval $inhdr
9187
9188
9189echo " "
9190echo "Checking to see if your system supports struct cmsghdr..." >&4
9191set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9192eval $hasstruct
9193case "$d_cmsghdr_s" in
9194"$define") echo "Yes, it does." ;;
9195*) echo "No, it doesn't." ;;
9196esac
9197
9198
b4eb6b3d
JH
9199: check for const keyword
9200echo " "
9201echo 'Checking to see if your C compiler knows about "const"...' >&4
9202$cat >const.c <<'EOCP'
9203typedef struct spug { int drokk; } spug;
9204int main()
9205{
9206 const char *foo;
9207 const spug y;
9208}
9209EOCP
9210if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9211 val="$define"
9212 echo "Yup, it does."
9213else
9214 val="$undef"
9215 echo "Nope, it doesn't."
9216fi
9217set d_const
9218eval $setvar
9219
9220: see if crypt exists
9221echo " "
9222if set crypt val -f d_crypt; eval $csym; $val; then
9223 echo 'crypt() found.' >&4
9224 val="$define"
9225 cryptlib=''
9226else
9227 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9228 if $test -z "$cryptlib"; then
9229 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9230 else
9231 cryptlib=-lcrypt
9232 fi
9233 if $test -z "$cryptlib"; then
9234 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9235 else
9236 cryptlib=-lcrypt
9237 fi
9238 if $test -z "$cryptlib"; then
9239 cryptlib=`./loc libcrypt$_a "" $libpth`
9240 else
9241 cryptlib=-lcrypt
9242 fi
9243 if $test -z "$cryptlib"; then
9244 echo 'crypt() NOT found.' >&4
9245 val="$undef"
9246 else
9247 val="$define"
9248 fi
9249fi
9250set d_crypt
9251eval $setvar
9252
9253: get csh whereabouts
9254case "$csh" in
9255'csh') val="$undef" ;;
9256*) val="$define" ;;
9257esac
9258set d_csh
9259eval $setvar
9260: Respect a hint or command line value for full_csh.
9261case "$full_csh" in
9262'') full_csh=$csh ;;
9263esac
9264
9265: see if cuserid exists
9266set cuserid d_cuserid
9267eval $inlibc
9268
9269: see if this is a limits.h system
9270set limits.h i_limits
9271eval $inhdr
9272
9273: see if this is a float.h system
9274set float.h i_float
9275eval $inhdr
9276
9277: See if number of significant digits in a double precision number is known
9278echo " "
9279$cat >dbl_dig.c <<EOM
9280#$i_limits I_LIMITS
9281#$i_float I_FLOAT
9282#ifdef I_LIMITS
9283#include <limits.h>
9284#endif
9285#ifdef I_FLOAT
9286#include <float.h>
9287#endif
9288#ifdef DBL_DIG
9289printf("Contains DBL_DIG");
9290#endif
9291EOM
9292$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9293if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9294 echo "DBL_DIG found." >&4
9295 val="$define"
9296else
9297 echo "DBL_DIG NOT found." >&4
9298 val="$undef"
9299fi
9300$rm -f dbl_dig.?
9301set d_dbl_dig
9302eval $setvar
9303
2ef53570
JH
9304hasproto='varname=$1; func=$2; shift; shift;
9305while $test $# -ge 2; do
9306 case "$1" in
9307 $define) echo "#include <$2>";;
9308 esac ;
9309 shift 2;
9310done > try.c;
9311$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9312if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9313 echo "$func() prototype found.";
9314 val="$define";
9315else
9316 echo "$func() prototype NOT found.";
9317 val="$undef";
9318fi;
9319set $varname;
9320eval $setvar;
9321$rm -f try.c tryout.c'
9322
9323: see if dbm.h is available
9324: see if dbmclose exists
9325set dbmclose d_dbmclose
9326eval $inlibc
9327
9328case "$d_dbmclose" in
9329$define)
9330 set dbm.h i_dbm
9331 eval $inhdr
9332 case "$i_dbm" in
9333 $define)
9334 val="$undef"
9335 set i_rpcsvcdbm
9336 eval $setvar
9337 ;;
9338 *) set rpcsvc/dbm.h i_rpcsvcdbm
9339 eval $inhdr
9340 ;;
9341 esac
9342 ;;
9343*) echo "We won't be including <dbm.h>"
9344 val="$undef"
9345 set i_dbm
9346 eval $setvar
9347 val="$undef"
9348 set i_rpcsvcdbm
9349 eval $setvar
9350 ;;
9351esac
9352
9353: see if prototype for dbminit is available
9354echo " "
9355set d_dbminitproto dbminit $i_dbm dbm.h
9356eval $hasproto
9357
b4eb6b3d
JH
9358: see if difftime exists
9359set difftime d_difftime
9360eval $inlibc
9361
9362: see if this is a dirent system
9363echo " "
9364if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9365 val="$define"
9366 echo "<dirent.h> found." >&4
9367else
9368 val="$undef"
9369 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9370 echo "<sys/dir.h> found." >&4
9371 echo " "
9372 else
9373 xinc=`./findhdr sys/ndir.h`
9374 fi
9375 echo "<dirent.h> NOT found." >&4
9376fi
9377set i_dirent
9378eval $setvar
9379
9380: Look for type of directory structure.
9381echo " "
9382$cppstdin $cppflags $cppminus < "$xinc" > try.c
9383
9384case "$direntrytype" in
9385''|' ')
9386 case "$i_dirent" in
9387 $define) guess1='struct dirent' ;;
9388 *) guess1='struct direct' ;;
9389 esac
9390 ;;
9391*) guess1="$direntrytype"
9392 ;;
9393esac
9394
9395case "$guess1" in
9396'struct dirent') guess2='struct direct' ;;
9397*) guess2='struct dirent' ;;
9398esac
9399
9400if $contains "$guess1" try.c >/dev/null 2>&1; then
9401 direntrytype="$guess1"
9402 echo "Your directory entries are $direntrytype." >&4
9403elif $contains "$guess2" try.c >/dev/null 2>&1; then
9404 direntrytype="$guess2"
9405 echo "Your directory entries seem to be $direntrytype." >&4
9406else
9407 echo "I don't recognize your system's directory entries." >&4
9408 rp="What type is used for directory entries on this system?"
9409 dflt="$guess1"
9410 . ./myread
9411 direntrytype="$ans"
9412fi
9413$rm -f try.c
9414
9415
9416: see if the directory entry stores field length
9417echo " "
9418$cppstdin $cppflags $cppminus < "$xinc" > try.c
9419if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9420 echo "Good, your directory entry keeps length information in d_namlen." >&4
9421 val="$define"
9422else
9423 echo "Your directory entry does not know about the d_namlen field." >&4
9424 val="$undef"
9425fi
9426set d_dirnamlen
9427eval $setvar
9428$rm -f try.c
9429
9430: see if dlerror exists
9431xxx_runnm="$runnm"
9432runnm=false
9433set dlerror d_dlerror
9434eval $inlibc
9435runnm="$xxx_runnm"
9436
9437: see if dlfcn is available
9438set dlfcn.h i_dlfcn
9439eval $inhdr
9440
9441case "$usedl" in
9442$define|y|true)
9443 $cat << EOM
9444
9445On a few systems, the dynamically loaded modules that perl generates and uses
9446will need a different extension than shared libs. The default will probably
9447be appropriate.
9448
9449EOM
9450 case "$dlext" in
9451 '') dflt="$so" ;;
9452 *) dflt="$dlext" ;;
9453 esac
9454 rp='What is the extension of dynamically loaded modules'
9455 . ./myread
9456 dlext="$ans"
9457 ;;
9458*)
9459 dlext="none"
9460 ;;
9461esac
9462
9463: Check if dlsym need a leading underscore
9464echo " "
9465val="$undef"
9466
9467case "$dlsrc" in
9468dl_dlopen.xs)
9469 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9470 $cat >dyna.c <<'EOM'
9471fred () { }
9472EOM
9473
9474$cat >fred.c<<EOM
9475
9476#include <stdio.h>
9477#$i_dlfcn I_DLFCN
9478#ifdef I_DLFCN
5440bc8e 9479#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9480#else
9481#include <sys/types.h>
9482#include <nlist.h>
9483#include <link.h>
9484#endif
9485
9486extern int fred() ;
9487
9488int main()
9489{
9490 void * handle ;
9491 void * symbol ;
9492#ifndef RTLD_LAZY
9493 int mode = 1 ;
9494#else
9495 int mode = RTLD_LAZY ;
9496#endif
9497 handle = dlopen("./dyna.$dlext", mode) ;
9498 if (handle == NULL) {
9499 printf ("1\n") ;
9500 fflush (stdout) ;
9501 exit(0);
9502 }
9503 symbol = dlsym(handle, "fred") ;
9504 if (symbol == NULL) {
9505 /* try putting a leading underscore */
9506 symbol = dlsym(handle, "_fred") ;
9507 if (symbol == NULL) {
9508 printf ("2\n") ;
9509 fflush (stdout) ;
9510 exit(0);
9511 }
9512 printf ("3\n") ;
9513 }
9514 else
9515 printf ("4\n") ;
9516 fflush (stdout) ;
9517 exit(0);
9518}
9519EOM
9520 : Call the object file tmp-dyna.o in case dlext=o.
9521 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9522 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9523 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9524 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9525 xxx=`$run ./fred`
b4eb6b3d
JH
9526 case $xxx in
9527 1) echo "Test program failed using dlopen." >&4
9528 echo "Perhaps you should not use dynamic loading." >&4;;
9529 2) echo "Test program failed using dlsym." >&4
9530 echo "Perhaps you should not use dynamic loading." >&4;;
9531 3) echo "dlsym needs a leading underscore" >&4
9532 val="$define" ;;
9533 4) echo "dlsym doesn't need a leading underscore." >&4;;
9534 esac
9535 else
9536 echo "I can't compile and run the test program." >&4
9537 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9538 fi
9539 ;;
9540esac
9541
9542$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9543
9544set d_dlsymun
9545eval $setvar
9546
b4eb6b3d
JH
9547: see if prototype for drand48 is available
9548echo " "
9549set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9550eval $hasproto
9551
9552: see if dup2 exists
9553set dup2 d_dup2
9554eval $inlibc
9555
9556: see if eaccess exists
9557set eaccess d_eaccess
9558eval $inlibc
9559
9560: see if endgrent exists
9561set endgrent d_endgrent
9562eval $inlibc
9563
9564: see if endhostent exists
9565set endhostent d_endhent
9566eval $inlibc
9567
9568: see if endnetent exists
9569set endnetent d_endnent
9570eval $inlibc
9571
9572: see if endprotoent exists
9573set endprotoent d_endpent
9574eval $inlibc
9575
9576: see if endpwent exists
9577set endpwent d_endpwent
9578eval $inlibc
9579
9580: see if endservent exists
9581set endservent d_endsent
9582eval $inlibc
9583
9584: Locate the flags for 'open()'
9585echo " "
5440bc8e 9586$cat >try.c <<'EOCP'
b4eb6b3d
JH
9587#include <sys/types.h>
9588#ifdef I_FCNTL
9589#include <fcntl.h>
9590#endif
9591#ifdef I_SYS_FILE
9592#include <sys/file.h>
9593#endif
9594int main() {
9595 if(O_RDONLY);
9596#ifdef O_TRUNC
9597 exit(0);
9598#else
9599 exit(1);
9600#endif
9601}
9602EOCP
9603: check sys/file.h first to get FREAD on Sun
9604if $test `./findhdr sys/file.h` && \
5440bc8e 9605 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
9606 h_sysfile=true;
9607 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 9608 if $run ./try; then
b4eb6b3d
JH
9609 echo "and you have the 3 argument form of open()." >&4
9610 val="$define"
9611 else
9612 echo "but not the 3 argument form of open(). Oh, well." >&4
9613 val="$undef"
9614 fi
9615elif $test `./findhdr fcntl.h` && \
5440bc8e 9616 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
9617 h_fcntl=true;
9618 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 9619 if $run ./try; then
b4eb6b3d
JH
9620 echo "and you have the 3 argument form of open()." >&4
9621 val="$define"
9622 else
9623 echo "but not the 3 argument form of open(). Oh, well." >&4
9624 val="$undef"
9625 fi
9626else
9627 val="$undef"
9628 echo "I can't find the O_* constant definitions! You got problems." >&4
9629fi
9630set d_open3
9631eval $setvar
5440bc8e 9632$rm -f try try.*
b4eb6b3d
JH
9633
9634: see which of string.h or strings.h is needed
9635echo " "
9636strings=`./findhdr string.h`
9637if $test "$strings" && $test -r "$strings"; then
9638 echo "Using <string.h> instead of <strings.h>." >&4
9639 val="$define"
9640else
9641 val="$undef"
9642 strings=`./findhdr strings.h`
9643 if $test "$strings" && $test -r "$strings"; then
9644 echo "Using <strings.h> instead of <string.h>." >&4
9645 else
9646 echo "No string header found -- You'll surely have problems." >&4
9647 fi
9648fi
9649set i_string
9650eval $setvar
9651case "$i_string" in
9652"$undef") strings=`./findhdr strings.h`;;
9653*) strings=`./findhdr string.h`;;
9654esac
9655
9656: check for non-blocking I/O stuff
9657case "$h_sysfile" in
a0acbdc3
JH
9658true) echo "#include <sys/file.h>" > head.c;;
9659*)
9660 case "$h_fcntl" in
9661 true) echo "#include <fcntl.h>" > head.c;;
9662 *) echo "#include <sys/fcntl.h>" > head.c;;
9663 esac
9664 ;;
b4eb6b3d
JH
9665esac
9666echo " "
9667echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9668case "$o_nonblock" in
9669'')
9670 $cat head.c > try.c
9671 $cat >>try.c <<'EOCP'
9672#include <stdio.h>
80b3ef99 9673#include <stdlib.h>
b4eb6b3d
JH
9674int main() {
9675#ifdef O_NONBLOCK
9676 printf("O_NONBLOCK\n");
9677 exit(0);
9678#endif
9679#ifdef O_NDELAY
9680 printf("O_NDELAY\n");
9681 exit(0);
9682#endif
9683#ifdef FNDELAY
9684 printf("FNDELAY\n");
9685 exit(0);
9686#endif
9687 exit(0);
9688}
9689EOCP
9690 set try
9691 if eval $compile_ok; then
5440bc8e 9692 o_nonblock=`$run ./try`
b4eb6b3d
JH
9693 case "$o_nonblock" in
9694 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9695 *) echo "Seems like we can use $o_nonblock.";;
9696 esac
9697 else
9698 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9699 fi
9700 ;;
9701*) echo "Using $hint value $o_nonblock.";;
9702esac
9703$rm -f try try.* .out core
9704
9705echo " "
9706echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9707case "$eagain" in
9708'')
9709 $cat head.c > try.c
9710 $cat >>try.c <<EOCP
9711#include <errno.h>
9712#include <sys/types.h>
9713#include <signal.h>
9714#include <stdio.h>
80b3ef99 9715#include <stdlib.h>
b4eb6b3d
JH
9716#define MY_O_NONBLOCK $o_nonblock
9717#ifndef errno /* XXX need better Configure test */
9718extern int errno;
9719#endif
9720#$i_unistd I_UNISTD
9721#ifdef I_UNISTD
9722#include <unistd.h>
9723#endif
9724#$i_string I_STRING
9725#ifdef I_STRING
9726#include <string.h>
9727#else
9728#include <strings.h>
9729#endif
9730$signal_t blech(x) int x; { exit(3); }
9731EOCP
9732 $cat >> try.c <<'EOCP'
9733int main()
9734{
9735 int pd[2];
9736 int pu[2];
9737 char buf[1];
9738 char string[100];
9739
9740 pipe(pd); /* Down: child -> parent */
9741 pipe(pu); /* Up: parent -> child */
9742 if (0 != fork()) {
9743 int ret;
9744 close(pd[1]); /* Parent reads from pd[0] */
9745 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 9746#ifdef F_SETFL
b4eb6b3d
JH
9747 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9748 exit(1);
a0acbdc3
JH
9749#else
9750 exit(4);
9751#endif
b4eb6b3d
JH
9752 signal(SIGALRM, blech);
9753 alarm(5);
9754 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9755 exit(2);
9756 sprintf(string, "%d\n", ret);
9757 write(2, string, strlen(string));
9758 alarm(0);
9759#ifdef EAGAIN
9760 if (errno == EAGAIN) {
9761 printf("EAGAIN\n");
9762 goto ok;
9763 }
9764#endif
9765#ifdef EWOULDBLOCK
9766 if (errno == EWOULDBLOCK)
9767 printf("EWOULDBLOCK\n");
9768#endif
9769 ok:
9770 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9771 sleep(2); /* Give it time to close our pipe */
9772 alarm(5);
9773 ret = read(pd[0], buf, 1); /* Should read EOF */
9774 alarm(0);
9775 sprintf(string, "%d\n", ret);
9776 write(3, string, strlen(string));
9777 exit(0);
9778 }
9779
9780 close(pd[0]); /* We write to pd[1] */
9781 close(pu[1]); /* We read from pu[0] */
9782 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9783 close(pd[1]); /* Pipe pd is now fully closed! */
9784 exit(0); /* Bye bye, thank you for playing! */
9785}
9786EOCP
9787 set try
9788 if eval $compile_ok; then
9789 echo "$startsh" >mtry
5440bc8e 9790 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
b4eb6b3d
JH
9791 chmod +x mtry
9792 ./mtry >/dev/null 2>&1
9793 case $? in
9794 0) eagain=`$cat try.out`;;
9795 1) echo "Could not perform non-blocking setting!";;
9796 2) echo "I did a successful read() for something that was not there!";;
9797 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 9798 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
9799 *) echo "Something terribly wrong happened during testing.";;
9800 esac
9801 rd_nodata=`$cat try.ret`
9802 echo "A read() system call with no data present returns $rd_nodata."
9803 case "$rd_nodata" in
9804 0|-1) ;;
9805 *)
9806 echo "(That's peculiar, fixing that to be -1.)"
9807 rd_nodata=-1
9808 ;;
9809 esac
9810 case "$eagain" in
9811 '')
9812 echo "Forcing errno EAGAIN on read() with no data available."
9813 eagain=EAGAIN
9814 ;;
9815 *)
9816 echo "Your read() sets errno to $eagain when no data is available."
9817 ;;
9818 esac
9819 status=`$cat try.err`
9820 case "$status" in
9821 0) echo "And it correctly returns 0 to signal EOF.";;
9822 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9823 *) echo "However, your read() returns '$status' on EOF??";;
9824 esac
9825 val="$define"
9826 if test "$status" = "$rd_nodata"; then
9827 echo "WARNING: you can't distinguish between EOF and no data!"
9828 val="$undef"
9829 fi
9830 else
9831 echo "I can't compile the test program--assuming errno EAGAIN will do."
9832 eagain=EAGAIN
9833 fi
9834 set d_eofnblk
9835 eval $setvar
9836 ;;
9837*)
9838 echo "Using $hint value $eagain."
9839 echo "Your read() returns $rd_nodata when no data is present."
9840 case "$d_eofnblk" in
9841 "$define") echo "And you can see EOF because read() returns 0.";;
9842 "$undef") echo "But you can't see EOF status from read() returned value.";;
9843 *)
9844 echo "(Assuming you can't see EOF status from read anyway.)"
9845 d_eofnblk=$undef
9846 ;;
9847 esac
9848 ;;
9849esac
9850$rm -f try try.* .out core head.c mtry
9851
b363b713
JH
9852: see if fchdir exists
9853set fchdir d_fchdir
9854eval $inlibc
9855
b4eb6b3d
JH
9856: see if fchmod exists
9857set fchmod d_fchmod
9858eval $inlibc
9859
9860: see if fchown exists
9861set fchown d_fchown
9862eval $inlibc
9863
9864: see if this is an fcntl system
9865set fcntl d_fcntl
9866eval $inlibc
9867
9d9004a9
AD
9868echo " "
9869: See if fcntl-based locking works.
832492ee 9870$cat >try.c <<EOCP
9d9004a9
AD
9871#include <stdlib.h>
9872#include <unistd.h>
9873#include <fcntl.h>
832492ee 9874#include <signal.h>
832492ee 9875$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
9876int main() {
9877#if defined(F_SETLK) && defined(F_SETLKW)
9878 struct flock flock;
9879 int retval, fd;
9880 fd = open("try.c", O_RDONLY);
9881 flock.l_type = F_RDLCK;
9882 flock.l_whence = SEEK_SET;
9883 flock.l_start = flock.l_len = 0;
832492ee
JH
9884 signal(SIGALRM, blech);
9885 alarm(10);
9d9004a9
AD
9886 retval = fcntl(fd, F_SETLK, &flock);
9887 close(fd);
9888 (retval < 0 ? exit(2) : exit(0));
9889#else
9890 exit(2);
9891#endif
9892}
9893EOCP
9894echo "Checking if fcntl-based file locking works... "
9895case "$d_fcntl" in
9896"$define")
9897 set try
9898 if eval $compile_ok; then
5440bc8e 9899 if $run ./try; then
9d9004a9
AD
9900 echo "Yes, it seems to work."
9901 val="$define"
9902 else
9903 echo "Nope, it didn't work."
9904 val="$undef"
832492ee
JH
9905 case "$?" in
9906 3) $cat >&4 <<EOM
9907***
9908*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9909*** This is (almost) impossible.
9910*** If your NFS lock daemons are not feeling well, something like
9911*** this may happen, please investigate. Cannot continue, aborting.
9912***
9913EOM
9914 exit 1
9915 ;;
9916 esac
9d9004a9
AD
9917 fi
9918 else
9919 echo "I'm unable to compile the test program, so I'll assume not."
9920 val="$undef"
9921 fi
9922 ;;
9923*) val="$undef";
9924 echo "Nope, since you don't even have fcntl()."
9925 ;;
9926esac
9927set d_fcntl_can_lock
9928eval $setvar
9929$rm -f try*
9930
9931
b4eb6b3d
JH
9932: see if sys/select.h has to be included
9933set sys/select.h i_sysselct
9934eval $inhdr
9935
9936: see if we should include time.h, sys/time.h, or both
9937echo " "
9938if test "X$timeincl" = X; then
9939 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9940 $echo $n "I'm now running the test program...$c"
9941 $cat >try.c <<'EOCP'
9942#include <sys/types.h>
9943#ifdef I_TIME
9944#include <time.h>
9945#endif
9946#ifdef I_SYSTIME
9947#ifdef SYSTIMEKERNEL
9948#define KERNEL
9949#endif
9950#include <sys/time.h>
9951#endif
9952#ifdef I_SYSSELECT
9953#include <sys/select.h>
9954#endif
9955int main()
9956{
9957 struct tm foo;
9958#ifdef S_TIMEVAL
9959 struct timeval bar;
9960#endif
9961#ifdef S_TIMEZONE
9962 struct timezone tzp;
9963#endif
9964 if (foo.tm_sec == foo.tm_sec)
9965 exit(0);
9966#ifdef S_TIMEVAL
9967 if (bar.tv_sec == bar.tv_sec)
9968 exit(0);
9969#endif
9970 exit(1);
9971}
9972EOCP
9973 flags=''
9974 for s_timezone in '-DS_TIMEZONE' ''; do
9975 sysselect=''
9976 for s_timeval in '-DS_TIMEVAL' ''; do
9977 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9978 for i_time in '' '-DI_TIME'; do
9979 for i_systime in '-DI_SYSTIME' ''; do
9980 case "$flags" in
9981 '') $echo $n ".$c"
9982 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9983 if eval $compile; then
9984 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9985 shift
9986 flags="$*"
9987 echo " "
9988 $echo $n "Succeeded with $flags$c"
9989 fi
9990 ;;
9991 esac
9992 done
9993 done
9994 done
9995 done
9996 done
9997 timeincl=''
9998 echo " "
9999 case "$flags" in
10000 *SYSTIMEKERNEL*) i_systimek="$define"
10001 timeincl=`./findhdr sys/time.h`
10002 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10003 *) i_systimek="$undef";;
10004 esac
10005 case "$flags" in
10006 *I_TIME*) i_time="$define"
10007 timeincl=`./findhdr time.h`" $timeincl"
10008 echo "We'll include <time.h>." >&4;;
10009 *) i_time="$undef";;
10010 esac
10011 case "$flags" in
10012 *I_SYSTIME*) i_systime="$define"
10013 timeincl=`./findhdr sys/time.h`" $timeincl"
10014 echo "We'll include <sys/time.h>." >&4;;
10015 *) i_systime="$undef";;
10016 esac
10017 $rm -f try.c try
10018fi
10019
10020: check for fd_set items
10021$cat <<EOM
10022
10023Checking to see how well your C compiler handles fd_set and friends ...
10024EOM
5440bc8e 10025$cat >try.c <<EOCP
b4eb6b3d
JH
10026#$i_systime I_SYS_TIME
10027#$i_sysselct I_SYS_SELECT
10028#$d_socket HAS_SOCKET
10029#include <sys/types.h>
10030#ifdef HAS_SOCKET
10031#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10032#endif
10033#ifdef I_SYS_TIME
10034#include <sys/time.h>
10035#endif
10036#ifdef I_SYS_SELECT
10037#include <sys/select.h>
10038#endif
10039int main() {
10040 fd_set fds;
10041
10042#ifdef TRYBITS
10043 if(fds.fds_bits);
10044#endif
10045
10046#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10047 exit(0);
10048#else
10049 exit(1);
10050#endif
10051}
10052EOCP
5440bc8e 10053set try -DTRYBITS
b4eb6b3d
JH
10054if eval $compile; then
10055 d_fds_bits="$define"
10056 d_fd_set="$define"
10057 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10058 if $run ./try; then
b4eb6b3d
JH
10059 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10060 d_fd_macros="$define"
10061 else
10062 $cat >&4 <<'EOM'
10063but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10064EOM
10065 d_fd_macros="$undef"
10066 fi
10067else
10068 $cat <<'EOM'
10069Hmm, your compiler has some difficulty with fd_set. Checking further...
10070EOM
5440bc8e 10071 set try
b4eb6b3d
JH
10072 if eval $compile; then
10073 d_fds_bits="$undef"
10074 d_fd_set="$define"
10075 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10076 if $run ./try; then
b4eb6b3d
JH
10077 echo "and you have the normal fd_set macros." >&4
10078 d_fd_macros="$define"
10079 else
10080 $cat <<'EOM'
10081but not the normal fd_set macros! Gross! More work for me...
10082EOM
10083 d_fd_macros="$undef"
10084 fi
10085 else
10086 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10087 d_fd_set="$undef"
10088 d_fds_bits="$undef"
10089 d_fd_macros="$undef"
10090 fi
10091fi
5440bc8e 10092$rm -f try try.*
b4eb6b3d
JH
10093
10094: see if fgetpos exists
10095set fgetpos d_fgetpos
10096eval $inlibc
10097
10098: see if flock exists
10099set flock d_flock
10100eval $inlibc
10101
2ef53570
JH
10102: see if this is a sys/file.h system
10103val=''
10104set sys/file.h val
10105eval $inhdr
10106
10107: do we need to include sys/file.h ?
10108case "$val" in
10109"$define")
10110 echo " "
10111 if $h_sysfile; then
10112 val="$define"
10113 echo "We'll be including <sys/file.h>." >&4
10114 else
10115 val="$undef"
10116 echo "We won't be including <sys/file.h>." >&4
10117 fi
10118 ;;
10119*)
10120 h_sysfile=false
10121 ;;
10122esac
10123set i_sysfile
10124eval $setvar
10125
10126: see if prototype for flock is available
10127echo " "
10128set d_flockproto flock $i_sysfile sys/file.h
10129eval $hasproto
10130
b4eb6b3d
JH
10131: see if fork exists
10132set fork d_fork
10133eval $inlibc
10134
10135: see if pathconf exists
10136set pathconf d_pathconf
10137eval $inlibc
10138
10139: see if fpathconf exists
10140set fpathconf d_fpathconf
10141eval $inlibc
10142
10143
10144: check for fpos64_t
10145echo " "
10146echo "Checking to see if you have fpos64_t..." >&4
10147$cat >try.c <<EOCP
10148#include <stdio.h>
10149int main() { fpos64_t x = 7; }
10150EOCP
10151set try
10152if eval $compile; then
10153 val="$define"
10154 echo "You have fpos64_t."
10155else
10156 val="$undef"
10157 echo "You do not have fpos64_t."
10158 case "$fpossize" in
10159 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10160 esac
10161fi
10162$rm -f try.* try
10163set d_fpos64_t
10164eval $setvar
10165
10166: see if frexpl exists
10167set frexpl d_frexpl
10168eval $inlibc
10169
b4eb6b3d
JH
10170: see if this is a sys/param system
10171set sys/param.h i_sysparam
10172eval $inhdr
10173
10174: see if this is a sys/mount.h system
10175set sys/mount.h i_sysmount
10176eval $inhdr
10177
b4eb6b3d
JH
10178
10179echo " "
10180echo "Checking to see if your system supports struct fs_data..." >&4
10181set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10182eval $hasstruct
10183case "$d_fs_data_s" in
10184"$define") echo "Yes, it does." ;;
10185*) echo "No, it doesn't." ;;
10186esac
10187
10188: see if fseeko exists
10189set fseeko d_fseeko
10190eval $inlibc
10191case "$longsize" in
101928) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10193esac
10194
10195: see if fsetpos exists
10196set fsetpos d_fsetpos
10197eval $inlibc
10198
10199
10200: see if fstatfs exists
10201set fstatfs d_fstatfs
10202eval $inlibc
10203
10204
10205: see if statvfs exists
10206set statvfs d_statvfs
10207eval $inlibc
10208
10209: see if fstatvfs exists
10210set fstatvfs d_fstatvfs
10211eval $inlibc
10212
10213
411ab01c
JH
10214: see if fsync exists
10215set fsync d_fsync
10216eval $inlibc
10217
b4eb6b3d
JH
10218: see if ftello exists
10219set ftello d_ftello
10220eval $inlibc
10221case "$longsize" in
102228) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10223esac
10224
10225: see if getcwd exists
10226set getcwd d_getcwd
10227eval $inlibc
10228
10229: see if getespwnam exists
10230set getespwnam d_getespwnam
10231eval $inlibc
10232
10233
10234: see if getfsstat exists
10235set getfsstat d_getfsstat
10236eval $inlibc
10237
10238: see if getgrent exists
10239set getgrent d_getgrent
10240eval $inlibc
10241
10242: see if gethostbyaddr exists
10243set gethostbyaddr d_gethbyaddr
10244eval $inlibc
10245
10246: see if gethostbyname exists
10247set gethostbyname d_gethbyname
10248eval $inlibc
10249
10250: see if gethostent exists
10251set gethostent d_gethent
10252eval $inlibc
10253
10254: see how we will look up host name
10255echo " "
10256call=''
10257if set gethostname val -f d_gethname; eval $csym; $val; then
10258 echo 'gethostname() found.' >&4
10259 d_gethname="$define"
10260 call=gethostname
10261fi
10262if set uname val -f d_uname; eval $csym; $val; then
10263 if ./xenix; then
10264 $cat <<'EOM'
10265uname() was found, but you're running xenix, and older versions of xenix
10266have a broken uname(). If you don't really know whether your xenix is old
10267enough to have a broken system call, use the default answer.
10268
10269EOM
10270 dflt=y
10271 case "$d_uname" in
10272 "$define") dflt=n;;
10273 esac
10274 rp='Is your uname() broken?'
10275 . ./myread
10276 case "$ans" in
10277 n*) d_uname="$define"; call=uname;;
10278 esac
10279 else
10280 echo 'uname() found.' >&4
10281 d_uname="$define"
10282 case "$call" in
10283 '') call=uname ;;
10284 esac
10285 fi
10286fi
10287case "$d_gethname" in
10288'') d_gethname="$undef";;
10289esac
10290case "$d_uname" in
10291'') d_uname="$undef";;
10292esac
10293case "$d_uname$d_gethname" in
10294*define*)
10295 dflt=n
10296 cat <<EOM
10297
10298Every now and then someone has a $call() that lies about the hostname
10299but can't be fixed for political or economic reasons. If you wish, I can
10300pretend $call() isn't there and maybe compute hostname at run-time
10301thanks to the '$phostname' command.
10302
10303EOM
10304 rp="Shall I ignore $call() from now on?"
10305 . ./myread
10306 case "$ans" in
10307 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10308 esac;;
10309esac
10310case "$phostname" in
10311'') aphostname='';;
10312*) case "$aphostname" in
10313 /*) ;;
10314 *) set X $phostname
10315 shift
10316 file=$1
10317 shift
10318 file=`./loc $file $file $pth`
10319 aphostname=`echo $file $*`
10320 ;;
10321 esac
10322 ;;
10323esac
10324case "$d_uname$d_gethname" in
10325*define*) ;;
10326*)
10327 case "$phostname" in
10328 '')
10329 echo "There will be no way for $package to get your hostname." >&4;;
10330 *)
10331 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10332 ;;
10333 esac;;
10334esac
10335case "$d_phostname" in
10336'') d_phostname="$undef";;
10337esac
10338
10339: see if this is a netdb.h system
10340set netdb.h i_netdb
10341eval $inhdr
10342
10343: see if prototypes for various gethostxxx netdb.h functions are available
10344echo " "
10345set d_gethostprotos gethostent $i_netdb netdb.h
10346eval $hasproto
10347
4e0554ec
JH
10348: see if getitimer exists
10349set getitimer d_getitimer
10350eval $inlibc
10351
b4eb6b3d
JH
10352: see if getlogin exists
10353set getlogin d_getlogin
10354eval $inlibc
10355
10356: see if getmnt exists
10357set getmnt d_getmnt
10358eval $inlibc
10359
10360: see if getmntent exists
10361set getmntent d_getmntent
10362eval $inlibc
10363
10364: see if getnetbyaddr exists
10365set getnetbyaddr d_getnbyaddr
10366eval $inlibc
10367
10368: see if getnetbyname exists
10369set getnetbyname d_getnbyname
10370eval $inlibc
10371
10372: see if getnetent exists
10373set getnetent d_getnent
10374eval $inlibc
10375
10376: see if prototypes for various getnetxxx netdb.h functions are available
10377echo " "
10378set d_getnetprotos getnetent $i_netdb netdb.h
10379eval $hasproto
10380
0c0643d0
JH
10381: see if getpagesize exists
10382set getpagesize d_getpagsz
10383eval $inlibc
10384
b4eb6b3d
JH
10385
10386: see if getprotobyname exists
10387set getprotobyname d_getpbyname
10388eval $inlibc
10389
10390: see if getprotobynumber exists
10391set getprotobynumber d_getpbynumber
10392eval $inlibc
10393
10394: see if getprotoent exists
10395set getprotoent d_getpent
10396eval $inlibc
10397
10398: see if getpgid exists
10399set getpgid d_getpgid
10400eval $inlibc
10401
10402: see if getpgrp2 exists
10403set getpgrp2 d_getpgrp2
10404eval $inlibc
10405
10406: see if getppid exists
10407set getppid d_getppid
10408eval $inlibc
10409
10410: see if getpriority exists
10411set getpriority d_getprior
10412eval $inlibc
10413
10414: see if prototypes for various getprotoxxx netdb.h functions are available
10415echo " "
10416set d_getprotoprotos getprotoent $i_netdb netdb.h
10417eval $hasproto
10418
10419: see if getprpwnam exists
10420set getprpwnam d_getprpwnam
10421eval $inlibc
10422
10423: see if getpwent exists
10424set getpwent d_getpwent
10425eval $inlibc
10426
10427
10428: see if getservbyname exists
10429set getservbyname d_getsbyname
10430eval $inlibc
10431
10432: see if getservbyport exists
10433set getservbyport d_getsbyport
10434eval $inlibc
10435
10436: see if getservent exists
10437set getservent d_getsent
10438eval $inlibc
10439
10440: see if prototypes for various getservxxx netdb.h functions are available
10441echo " "
10442set d_getservprotos getservent $i_netdb netdb.h
10443eval $hasproto
10444
10445: see if getspnam exists
10446set getspnam d_getspnam
10447eval $inlibc
10448
10449: see if gettimeofday or ftime exists
10450set gettimeofday d_gettimeod
10451eval $inlibc
10452case "$d_gettimeod" in
10453"$undef")
10454 set ftime d_ftime
10455 eval $inlibc
10456 ;;
10457*)
10458 val="$undef"; set d_ftime; eval $setvar
10459 ;;
10460esac
10461case "$d_gettimeod$d_ftime" in
10462"$undef$undef")
10463 echo " "
10464 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10465 ;;
10466esac
10467
10468: see if this is an grp system
10469set grp.h i_grp
10470eval $inhdr
10471
10472case "$i_grp" in
10473$define)
10474 xxx=`./findhdr grp.h`
10475 $cppstdin $cppflags $cppminus < $xxx >$$.h
10476
10477 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10478 val="$define"
10479 else
10480 val="$undef"
10481 fi
10482 set d_grpasswd
10483 eval $setvar
10484
10485 $rm -f $$.h
10486 ;;
10487*)
10488 val="$undef";
10489 set d_grpasswd; eval $setvar
10490 ;;
10491esac
10492
10493: see if hasmntopt exists
10494set hasmntopt d_hasmntopt
10495eval $inlibc
10496
10497: see if this is a netinet/in.h or sys/in.h system
10498set netinet/in.h i_niin sys/in.h i_sysin
10499eval $inhdr
10500
10501: see if arpa/inet.h has to be included
10502set arpa/inet.h i_arpainet
10503eval $inhdr
10504
10505: see if htonl --and friends-- exists
10506val=''
10507set htonl val
10508eval $inlibc
10509
10510: Maybe they are macros.
10511case "$val" in
10512$undef)
10513 $cat >htonl.c <<EOM
10514#include <stdio.h>
10515#include <sys/types.h>
10516#$i_niin I_NETINET_IN
10517#$i_sysin I_SYS_IN
10518#$i_arpainet I_ARPA_INET
10519#ifdef I_NETINET_IN
10520#include <netinet/in.h>
10521#endif
10522#ifdef I_SYS_IN
10523#include <sys/in.h>
10524#endif
10525#ifdef I_ARPA_INET
10526#include <arpa/inet.h>
10527#endif
10528#ifdef htonl
10529printf("Defined as a macro.");
10530#endif
10531EOM
10532 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10533 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10534 val="$define"
10535 echo "But it seems to be defined as a macro." >&4
10536 fi
10537 $rm -f htonl.?
10538 ;;
10539esac
10540set d_htonl
10541eval $setvar
10542
10543: see if iconv exists
10544set iconv d_iconv
10545eval $inlibc
10546
10547: index or strchr
10548echo " "
10549if set index val -f; eval $csym; $val; then
10550 if set strchr val -f d_strchr; eval $csym; $val; then
10551 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10552 val="$define"
10553 vali="$undef"
10554 echo "strchr() found." >&4
10555 else
10556 val="$undef"
10557 vali="$define"
10558 echo "index() found." >&4
10559 fi
10560 else
10561 val="$undef"
10562 vali="$define"
8dfa8df9
JH
10563 echo "index() found." >&4
10564 fi
b4eb6b3d 10565else
8dfa8df9
JH
10566 if set strchr val -f d_strchr; eval $csym; $val; then
10567 val="$define"
10568 vali="$undef"
10569 echo "strchr() found." >&4
10570 else
10571 echo "No index() or strchr() found!" >&4
10572 val="$undef"
10573 vali="$undef"
10574 fi
b4eb6b3d 10575fi
8dfa8df9
JH
10576set d_strchr; eval $setvar
10577val="$vali"
10578set d_index; eval $setvar
10579
10580: check whether inet_aton exists
10581set inet_aton d_inetaton
10582eval $inlibc
b4eb6b3d
JH
10583
10584: Look for isascii
10585echo " "
10586$cat >isascii.c <<'EOCP'
10587#include <stdio.h>
10588#include <ctype.h>
10589int main() {
10590 int c = 'A';
10591 if (isascii(c))
10592 exit(0);
10593 else
10594 exit(1);
10595}
10596EOCP
10597set isascii
10598if eval $compile; then
10599 echo "isascii() found." >&4
10600 val="$define"
10601else
10602 echo "isascii() NOT found." >&4
10603 val="$undef"
10604fi
10605set d_isascii
10606eval $setvar
10607$rm -f isascii*
10608
10609: see if isnan exists
10610set isnan d_isnan
10611eval $inlibc
10612
10613: see if isnanl exists
10614set isnanl d_isnanl
10615eval $inlibc
10616
10617: see if killpg exists
10618set killpg d_killpg
10619eval $inlibc
10620
10621: see if lchown exists
10622echo " "
10623$cat > try.c <<'EOCP'
10624/* System header to define __stub macros and hopefully few prototypes,
10625 which can conflict with char lchown(); below. */
10626#include <assert.h>
10627/* Override any gcc2 internal prototype to avoid an error. */
10628/* We use char because int might match the return type of a gcc2
10629 builtin and then its argument prototype would still apply. */
10630char lchown();
10631int main() {
10632 /* The GNU C library defines this for functions which it implements
10633 to always fail with ENOSYS. Some functions are actually named
10634 something starting with __ and the normal name is an alias. */
10635#if defined (__stub_lchown) || defined (__stub___lchown)
10636choke me
10637#else
10638lchown();
10639#endif
10640; return 0; }
10641EOCP
10642set try
10643if eval $compile; then
10644 $echo "lchown() found." >&4
10645 val="$define"
10646else
10647 $echo "lchown() NOT found." >&4
10648 val="$undef"
10649fi
10650set d_lchown
10651eval $setvar
10652
10653: See if number of significant digits in a double precision number is known
10654echo " "
10655$cat >ldbl_dig.c <<EOM
10656#$i_limits I_LIMITS
10657#$i_float I_FLOAT
10658#ifdef I_LIMITS
10659#include <limits.h>
10660#endif
10661#ifdef I_FLOAT
10662#include <float.h>
10663#endif
10664#ifdef LDBL_DIG
10665printf("Contains LDBL_DIG");
10666#endif
10667EOM
10668$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10669if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10670 echo "LDBL_DIG found." >&4
10671 val="$define"
10672else
10673 echo "LDBL_DIG NOT found." >&4
10674 val="$undef"
10675fi
10676$rm -f ldbl_dig.?
10677set d_ldbl_dig
10678eval $setvar
10679
10680: see if link exists
10681set link d_link
10682eval $inlibc
10683
10684: see if localeconv exists
10685set localeconv d_locconv
10686eval $inlibc
10687
10688: see if lockf exists
10689set lockf d_lockf
10690eval $inlibc
10691
b4eb6b3d
JH
10692: see if prototype for lseek is available
10693echo " "
10694set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10695eval $hasproto
10696
10697: see if lstat exists
10698set lstat d_lstat
10699eval $inlibc
10700
10701: see if madvise exists
10702set madvise d_madvise
10703eval $inlibc
10704
10705: see if mblen exists
10706set mblen d_mblen
10707eval $inlibc
10708
10709: see if mbstowcs exists
10710set mbstowcs d_mbstowcs
10711eval $inlibc
10712
10713: see if mbtowc exists
10714set mbtowc d_mbtowc
10715eval $inlibc
10716
10717: see if memchr exists
10718set memchr d_memchr
10719eval $inlibc
10720
10721: see if memcmp exists
10722set memcmp d_memcmp
10723eval $inlibc
10724
10725: see if memcpy exists
10726set memcpy d_memcpy
10727eval $inlibc
10728
10729: see if memmove exists
10730set memmove d_memmove
10731eval $inlibc
10732
10733: see if memset exists
10734set memset d_memset
10735eval $inlibc
10736
10737: see if mkdir exists
10738set mkdir d_mkdir
10739eval $inlibc
10740
10741: see if mkdtemp exists
10742set mkdtemp d_mkdtemp
10743eval $inlibc
10744
10745: see if mkfifo exists
10746set mkfifo d_mkfifo
10747eval $inlibc
10748
10749: see if mkstemp exists
10750set mkstemp d_mkstemp
10751eval $inlibc
10752
10753: see if mkstemps exists
10754set mkstemps d_mkstemps
10755eval $inlibc
10756
10757: see if mktime exists
10758set mktime d_mktime
10759eval $inlibc
10760
10761: see if this is a sys/mman.h system
10762set sys/mman.h i_sysmman
10763eval $inhdr
10764
10765: see if mmap exists
10766set mmap d_mmap
10767eval $inlibc
10768: see what shmat returns
10769: default to something harmless
10770mmaptype='void *'
10771case "$i_sysmman$d_mmap" in
10772"$define$define")
10773 $cat >mmap.c <<'END'
10774#include <sys/mman.h>
10775void *mmap();
10776END
10777 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10778 mmaptype='void *'
10779 else
10780 mmaptype='caddr_t'
10781 fi
10782 echo "and it returns ($mmaptype)." >&4
10783 ;;
10784esac
10785
10786
10787
10788: see if modfl exists
10789set modfl d_modfl
10790eval $inlibc
10791
e67aeab1
JH
10792d_modfl_pow32_bug="$undef"
10793
2b2cdb4d
HS
10794case "$d_longdbl$d_modfl" in
10795$define$define)
10796 $cat <<EOM
10797Checking to see whether your modfl() is okay for large values...
10798EOM
10799$cat >try.c <<EOCP
10800#include <math.h>
10801#include <stdio.h>
10802int main() {
10803 long double nv = 4294967303.15;
10804 long double v, w;
10805 v = modfl(nv, &w);
10806#ifdef __GLIBC__
10807 printf("glibc");
10808#endif
10809 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10810 return 0;
10811}
10812EOCP
27f9615e
JH
10813 case "$osname:$gccversion" in
10814 aix:) saveccflags="$ccflags"
10815 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10816 esac
2b2cdb4d
HS
10817 set try
10818 if eval $compile; then
5440bc8e 10819 foo=`$run ./try`
2b2cdb4d
HS
10820 case "$foo" in
10821 *" 4294967303.150000 1.150000 4294967302.000000")
10822 echo >&4 "Your modfl() is broken for large values."
e67aeab1 10823 d_modfl_pow32_bug="$define"
2b2cdb4d
HS
10824 case "$foo" in
10825 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10826 ;;
10827 esac
10828 ;;
10829 *" 4294967303.150000 0.150000 4294967303.000000")
10830 echo >&4 "Your modfl() seems okay for large values."
10831 ;;
10832 *) echo >&4 "I don't understand your modfl() at all."
10833 d_modfl="$undef"
10834 ;;
10835 esac
10836 $rm -f try.* try core core.try.*
10837 else
10838 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10839 d_modfl="$undef"
10840 fi
27f9615e 10841 case "$osname:$gccversion" in
abcf653a 10842 aix:) ccflags="$saveccflags" ;; # restore
27f9615e 10843 esac
2b2cdb4d
HS
10844 ;;
10845esac
10846
b4eb6b3d
JH
10847: see if mprotect exists
10848set mprotect d_mprotect
10849eval $inlibc
10850
10851: see if msgctl exists
10852set msgctl d_msgctl
10853eval $inlibc
10854
10855: see if msgget exists
10856set msgget d_msgget
10857eval $inlibc
10858
10859: see if msgsnd exists
10860set msgsnd d_msgsnd
10861eval $inlibc
10862
10863: see if msgrcv exists
10864set msgrcv d_msgrcv
10865eval $inlibc
10866
10867: see how much of the 'msg*(2)' library is present.
10868h_msg=true
10869echo " "
10870case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10871*"$undef"*) h_msg=false;;
10872esac
10873case "$osname" in
10874freebsd)
10875 case "`ipcs 2>&1`" in
10876 "SVID messages"*"not configured"*)
10877 echo "Your $osname does not have the msg*(2) configured." >&4
10878 h_msg=false
10879 val="$undef"
10880 set msgctl d_msgctl
10881 eval $setvar
10882 set msgget d_msgget
10883 eval $setvar
10884 set msgsnd d_msgsnd
10885 eval $setvar
10886 set msgrcv d_msgrcv
10887 eval $setvar
10888 ;;
10889 esac
10890 ;;
10891esac
10892: we could also check for sys/ipc.h ...
10893if $h_msg && $test `./findhdr sys/msg.h`; then
10894 echo "You have the full msg*(2) library." >&4
10895 val="$define"
10896else
10897 echo "You don't have the full msg*(2) library." >&4
10898 val="$undef"
10899fi
10900set d_msg
10901eval $setvar
10902
4e0554ec
JH
10903
10904echo " "
10905echo "Checking to see if your system supports struct msghdr..." >&4
10906set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10907eval $hasstruct
10908case "$d_msghdr_s" in
10909"$define") echo "Yes, it does." ;;
10910*) echo "No, it doesn't." ;;
10911esac
10912
10913
b4eb6b3d
JH
10914: see if msync exists
10915set msync d_msync
10916eval $inlibc
10917
10918: see if munmap exists
10919set munmap d_munmap
10920eval $inlibc
10921
10922: see if nice exists
10923set nice d_nice
10924eval $inlibc
10925
2765b840
JH
10926: see if this is a langinfo.h system
10927set langinfo.h i_langinfo
10928eval $inhdr
10929
10930: see if nl_langinfo exists
10931set nl_langinfo d_nl_langinfo
10932eval $inlibc
10933
b4eb6b3d
JH
10934: check for length of character
10935echo " "
10936case "$charsize" in
10937'')
10938 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10939 $cat >try.c <<'EOCP'
10940#include <stdio.h>
10941int main()
10942{
10943 printf("%d\n", (int)sizeof(char));
10944 exit(0);
10945}
10946EOCP
10947 set try
10948 if eval $compile_ok; then
5440bc8e 10949 dflt=`$run ./try`
b4eb6b3d
JH
10950 else
10951 dflt='1'
10952 echo "(I can't seem to compile the test program. Guessing...)"
10953 fi
10954 ;;
10955*)
10956 dflt="$charsize"
10957 ;;
10958esac
10959rp="What is the size of a character (in bytes)?"
10960. ./myread
10961charsize="$ans"
10962$rm -f try.c try
10963
1d1be0dc
NC
10964: check for volatile keyword
10965echo " "
10966echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10967$cat >try.c <<'EOCP'
10968int main()
10969{
10970 typedef struct _goo_struct goo_struct;
10971 goo_struct * volatile goo = ((goo_struct *)0);
10972 struct _goo_struct {
10973 long long_int;
10974 int reg_int;
10975 char char_var;
10976 };
10977 typedef unsigned short foo_t;
10978 char *volatile foo;
10979 volatile int bar;
10980 volatile foo_t blech;
10981 foo = foo;
10982}
10983EOCP
10984if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10985 val="$define"
10986 echo "Yup, it does."
10987else
10988 val="$undef"
10989 echo "Nope, it doesn't."
10990fi
10991set d_volatile
10992eval $setvar
10993$rm -f try.*
10994
b4eb6b3d
JH
10995
10996echo " "
10997$echo "Choosing the C types to be used for Perl's internal types..." >&4
10998
10999case "$use64bitint:$d_quad:$quadtype" in
11000define:define:?*)
11001 ivtype="$quadtype"
11002 uvtype="$uquadtype"
11003 ivsize=8
11004 uvsize=8
11005 ;;
11006*) ivtype="long"
11007 uvtype="unsigned long"
11008 ivsize=$longsize
11009 uvsize=$longsize
11010 ;;
11011esac
11012
11013case "$uselongdouble:$d_longdbl" in
11014define:define)
11015 nvtype="long double"
11016 nvsize=$longdblsize
11017 ;;
11018*) nvtype=double
11019 nvsize=$doublesize
11020 ;;
11021esac
11022
11023$echo "(IV will be "$ivtype", $ivsize bytes)"
11024$echo "(UV will be "$uvtype", $uvsize bytes)"
11025$echo "(NV will be "$nvtype", $nvsize bytes)"
11026
11027$cat >try.c <<EOCP
11028#$i_inttypes I_INTTYPES
11029#ifdef I_INTTYPES
11030#include <inttypes.h>
11031#endif
11032#include <stdio.h>
11033int main() {
11034#ifdef INT8
11035 int8_t i = INT8_MAX;
11036 uint8_t u = UINT8_MAX;
11037 printf("int8_t\n");
11038#endif
11039#ifdef INT16
11040 int16_t i = INT16_MAX;
11041 uint16_t i = UINT16_MAX;
11042 printf("int16_t\n");
11043#endif
11044#ifdef INT32
11045 int32_t i = INT32_MAX;
11046 uint32_t u = UINT32_MAX;
11047 printf("int32_t\n");
11048#endif
11049}
11050EOCP
11051
11052case "$i8type" in
11053'') case "$charsize" in
11054 1) i8type=char
11055 u8type="unsigned char"
11056 i8size=$charsize
11057 u8size=$charsize
11058 ;;
11059 esac
11060 ;;
11061esac
11062case "$i8type" in
11063'') set try -DINT8
11064 if eval $compile; then
5440bc8e 11065 case "`$run ./try`" in
b4eb6b3d
JH
11066 int8_t) i8type=int8_t
11067 u8type=uint8_t
11068 i8size=1
11069 u8size=1
11070 ;;
11071 esac
11072 fi
11073 ;;
11074esac
11075case "$i8type" in
11076'') if $test $charsize -ge 1; then
11077 i8type=char
11078 u8type="unsigned char"
11079 i8size=$charsize
11080 u8size=$charsize
11081 fi
11082 ;;
11083esac
11084
11085case "$i16type" in
11086'') case "$shortsize" in
11087 2) i16type=short
11088 u16type="unsigned short"
11089 i16size=$shortsize
11090 u16size=$shortsize
11091 ;;
11092 esac
11093 ;;
11094esac
11095case "$i16type" in
11096'') set try -DINT16
11097 if eval $compile; then
5440bc8e 11098 case "`$run ./try`" in
b4eb6b3d
JH
11099 int16_t)
11100 i16type=int16_t
11101 u16type=uint16_t
11102 i16size=2
11103 u16size=2
11104 ;;
11105 esac
11106 fi
11107 ;;
11108esac
11109case "$i16type" in
11110'') if $test $shortsize -ge 2; then
11111 i16type=short
11112 u16type="unsigned short"
11113 i16size=$shortsize
11114 u16size=$shortsize
11115 fi
11116 ;;
11117esac
11118
11119case "$i32type" in
11120'') case "$longsize" in
11121 4) i32type=long
11122 u32type="unsigned long"
11123 i32size=$longsize
11124 u32size=$longsize
11125 ;;
11126 *) case "$intsize" in
11127 4) i32type=int
11128 u32type="unsigned int"
11129 i32size=$intsize
11130 u32size=$intsize
11131 ;;
11132 esac
11133 ;;
11134 esac
11135 ;;
11136esac
11137case "$i32type" in
11138'') set try -DINT32
11139 if eval $compile; then
5440bc8e 11140 case "`$run ./try`" in
b4eb6b3d
JH
11141 int32_t)
11142 i32type=int32_t
11143 u32type=uint32_t
11144 i32size=4
11145 u32size=4
11146 ;;
11147 esac
11148 fi
11149 ;;
11150esac
11151case "$i32type" in
11152'') if $test $intsize -ge 4; then
11153 i32type=int
11154 u32type="unsigned int"
11155 i32size=$intsize
11156 u32size=$intsize
11157 fi
11158 ;;
11159esac
11160
11161case "$i64type" in
11162'') case "$d_quad:$quadtype" in
11163 define:?*)
11164 i64type="$quadtype"
11165 u64type="$uquadtype"
11166 i64size=8
11167 u64size=8
11168 ;;
11169 esac
11170 ;;
11171esac
11172
1d1be0dc
NC
11173$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11174: volatile so that the compiler has to store it out to memory.
11175if test X"$d_volatile" = X"$define"; then
11176 volatile=volatile
11177fi
b4eb6b3d
JH
11178$cat <<EOP >try.c
11179#include <stdio.h>
1d1be0dc
NC
11180#include <sys/types.h>
11181#include <signal.h>
11182#ifdef SIGFPE
11183$volatile int bletched = 0;
11184$signal_t blech(s) int s; { bletched = 1; }
11185#endif
b4eb6b3d
JH
11186int main() {
11187 $uvtype u = 0;
1d1be0dc 11188 $nvtype d;
b4eb6b3d
JH
11189 int n = 8 * $uvsize;
11190 int i;
1d1be0dc
NC
11191#ifdef SIGFPE
11192 signal(SIGFPE, blech);
11193#endif
11194
b4eb6b3d
JH
11195 for (i = 0; i < n; i++) {
11196 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11197 d = ($nvtype)u;
11198 if (($uvtype)d != u)
b4eb6b3d 11199 break;
1d1be0dc
NC
11200 if (d <= 0)
11201 break;
11202 d = ($nvtype)(u - 1);
11203 if (($uvtype)d != (u - 1))
11204 break;
11205#ifdef SIGFPE
11206 if (bletched) {
11207 break;
11208#endif
11209 }
b4eb6b3d 11210 }
efd1522b 11211 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11212 exit(0);
11213}
11214EOP
1d1be0dc
NC
11215set try
11216
11217d_nv_preserves_uv="$undef"
11218if eval $compile; then
5440bc8e 11219 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11220fi
11221case "$d_nv_preserves_uv_bits" in
11222\-[1-9]*)
11223 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11224 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11225 d_nv_preserves_uv="$define"
b4eb6b3d 11226 ;;
1d1be0dc
NC
11227[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11228 d_nv_preserves_uv="$undef" ;;
11229*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11230 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11231esac
11232
1d1be0dc
NC
11233$rm -f try.* try
11234
b4eb6b3d
JH
11235
11236: check for off64_t
11237echo " "
11238echo "Checking to see if you have off64_t..." >&4
11239$cat >try.c <<EOCP
11240#include <sys/types.h>
11241#include <unistd.h>
11242int main() { off64_t x = 7; }
11243EOCP
11244set try
11245if eval $compile; then
11246 val="$define"
11247 echo "You have off64_t."
11248else
11249 val="$undef"
11250 echo "You do not have off64_t."
11251 case "$lseeksize" in
11252 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11253 esac
11254fi
11255$rm -f try.* try
11256set d_off64_t
11257eval $setvar
11258
11259: see if POSIX threads are available
11260set pthread.h i_pthread
11261eval $inhdr
11262
11263
11264
11265
11266: how to create joinable pthreads
11267if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11268 echo " "
11269 echo "Checking what constant to use for creating joinable pthreads..." >&4
11270 $cat >try.c <<'EOCP'
11271#include <pthread.h>
11272int main() {
11273 int detachstate = JOINABLE;
11274}
11275EOCP
11276 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11277 if eval $compile; then
11278 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11279 val="$undef" # Yes, undef.
11280 set d_old_pthread_create_joinable
11281 eval $setvar
11282 val=""
11283 set old_pthread_create_joinable
11284 eval $setvar
11285 else
11286 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11287 if eval $compile; then
11288 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11289 val="$define"
11290 set d_old_pthread_create_joinable
11291 eval $setvar
11292 val=PTHREAD_CREATE_UNDETACHED
11293 set old_pthread_create_joinable
11294 eval $setvar
11295 else
11296 set try -DJOINABLE=__UNDETACHED
11297 if eval $compile; then
11298 echo "You seem to use __UNDETACHED." >&4
11299 val="$define"
11300 set d_old_pthread_create_joinable
11301 eval $setvar
11302 val=__UNDETACHED
11303 set old_pthread_create_joinable
11304 eval $setvar
11305 else
11306 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11307 val="$define"
11308 set d_old_pthread_create_joinable
11309 eval $setvar
11310 val=0
11311 set old_pthread_create_joinable
11312 eval $setvar
11313 fi
11314 fi
11315 fi
11316 $rm -f try try.*
11317else
11318 d_old_pthread_create_joinable="$undef"
11319 old_pthread_create_joinable=""
11320fi
11321
11322: see if pause exists
11323set pause d_pause
11324eval $inlibc
11325
11326: see if pipe exists
11327set pipe d_pipe
11328eval $inlibc
11329
11330: see if poll exists
11331set poll d_poll
11332eval $inlibc
11333
d6483fcc
JH
11334: see if pthread_atfork exists
11335set pthread_atfork d_pthread_atfork
11336eval $inlibc
11337
b4eb6b3d
JH
11338
11339: see whether the various POSIXish _yields exist
11340$cat >try.c <<EOP
11341#include <pthread.h>
11342#include <stdio.h>
11343int main() {
11344#ifdef SCHED_YIELD
11345 sched_yield();
11346#else
11347#ifdef PTHREAD_YIELD
11348 pthread_yield();
11349#else
11350#ifdef PTHREAD_YIELD_NULL
11351 pthread_yield(NULL);
11352#endif
11353#endif
11354#endif
11355}
11356EOP
11357: see if sched_yield exists
11358set try -DSCHED_YIELD
11359if eval $compile; then
11360 val="$define"
11361 sched_yield='sched_yield()'
11362else
11363 val="$undef"
11364fi
11365case "$usethreads" in
11366$define)
11367 case "$val" in
11368 $define) echo 'sched_yield() found.' >&4 ;;
11369 *) echo 'sched_yield() NOT found.' >&4 ;;
11370 esac
11371esac
11372set d_sched_yield
11373eval $setvar
11374
11375: see if pthread_yield exists
11376set try -DPTHREAD_YIELD
11377if eval $compile; then
11378 val="$define"
11379 case "$sched_yield" in
11380 '') sched_yield='pthread_yield()' ;;
11381 esac
11382else
11383 set try -DPTHREAD_YIELD_NULL
11384 if eval $compile; then
11385 val="$define"
11386 case "$sched_yield" in
11387 '') sched_yield='pthread_yield(NULL)' ;;
11388 esac
11389 else
11390 val="$undef"
11391 fi
11392fi
11393case "$usethreads" in
11394$define)
11395 case "$val" in
11396 $define) echo 'pthread_yield() found.' >&4 ;;
11397 *) echo 'pthread_yield() NOT found.' >&4 ;;
11398 esac
11399 ;;
11400esac
11401set d_pthread_yield
11402eval $setvar
11403
11404case "$sched_yield" in
11405'') sched_yield=undef ;;
11406esac
11407
11408$rm -f try try.*
11409
11410: see if this is a pwd.h system
11411set pwd.h i_pwd
11412eval $inhdr
11413
11414case "$i_pwd" in
11415$define)
11416 xxx=`./findhdr pwd.h`
11417 $cppstdin $cppflags $cppminus < $xxx >$$.h
11418
11419 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11420 val="$define"
11421 else
11422 val="$undef"
11423 fi
11424 set d_pwquota
11425 eval $setvar
11426
11427 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11428 val="$define"
11429 else
11430 val="$undef"
11431 fi
11432 set d_pwage
11433 eval $setvar
11434
11435 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11436 val="$define"
11437 else
11438 val="$undef"
11439 fi
11440 set d_pwchange
11441 eval $setvar
11442
11443 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11444 val="$define"
11445 else
11446 val="$undef"
11447 fi
11448 set d_pwclass
11449 eval $setvar
11450
11451 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11452 val="$define"
11453 else
11454 val="$undef"
11455 fi
11456 set d_pwexpire
11457 eval $setvar
11458
11459 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11460 val="$define"
11461 else
11462 val="$undef"
11463 fi
11464 set d_pwcomment
11465 eval $setvar
11466
11467 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11468 val="$define"
11469 else
11470 val="$undef"
11471 fi
11472 set d_pwgecos
11473 eval $setvar
11474
11475 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11476 val="$define"
11477 else
11478 val="$undef"
11479 fi
11480 set d_pwpasswd
11481 eval $setvar
11482
11483 $rm -f $$.h
11484 ;;
11485*)
11486 val="$undef";
11487 set d_pwquota; eval $setvar
11488 set d_pwage; eval $setvar
11489 set d_pwchange; eval $setvar
11490 set d_pwclass; eval $setvar
11491 set d_pwexpire; eval $setvar
11492 set d_pwcomment; eval $setvar
11493 set d_pwgecos; eval $setvar
11494 set d_pwpasswd; eval $setvar
11495 ;;
11496esac
11497
11498: see if readdir and friends exist
11499set readdir d_readdir
11500eval $inlibc
11501set seekdir d_seekdir
11502eval $inlibc
11503set telldir d_telldir
11504eval $inlibc
11505set rewinddir d_rewinddir
11506eval $inlibc
11507
11508: see if readlink exists
11509set readlink d_readlink
11510eval $inlibc
11511
4e0554ec
JH
11512: see if readv exists
11513set readv d_readv
11514eval $inlibc
11515
11516: see if recvmsg exists
11517set recvmsg d_recvmsg
11518eval $inlibc
11519
b4eb6b3d
JH
11520: see if rename exists
11521set rename d_rename
11522eval $inlibc
11523
11524: see if rmdir exists
11525set rmdir d_rmdir
11526eval $inlibc
11527
11528: see if memory.h is available.
11529val=''
11530set memory.h val
11531eval $inhdr
11532
11533: See if it conflicts with string.h
11534case "$val" in
11535$define)
11536 case "$strings" in
11537 '') ;;
11538 *)
11539 $cppstdin $cppflags $cppminus < $strings > mem.h
11540 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11541 echo " "
11542 echo "We won't be including <memory.h>."
11543 val="$undef"
11544 fi
11545 $rm -f mem.h
11546 ;;
11547 esac
11548esac
11549set i_memory
11550eval $setvar
11551
11552: can bcopy handle overlapping blocks?
b6cc3bc4 11553echo " "
b4eb6b3d 11554val="$undef"
b6cc3bc4
AD
11555case "$d_memmove" in
11556"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11557*) case "$d_bcopy" in
11558 "$define")
11559 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11560 $cat >try.c <<EOCP
b4eb6b3d
JH
11561#$i_memory I_MEMORY
11562#$i_stdlib I_STDLIB
11563#$i_string I_STRING
11564#$i_unistd I_UNISTD
11565EOCP
11566 $cat >>try.c <<'EOCP'
11567#include <stdio.h>
11568#ifdef I_MEMORY
11569# include <memory.h>
11570#endif
11571#ifdef I_STDLIB
11572# include <stdlib.h>
11573#endif
11574#ifdef I_STRING
11575# include <string.h>
11576#else
11577# include <strings.h>
11578#endif
11579#ifdef I_UNISTD
11580# include <unistd.h> /* Needed for NetBSD */
11581#endif
11582int main()
11583{
11584char buf[128], abc[128];
11585char *b;
11586int len;
11587int off;
11588int align;
11589
b6cc3bc4
AD
11590/* Copy "abcde..." string to char abc[] so that gcc doesn't
11591 try to store the string in read-only memory. */
b4eb6b3d
JH
11592bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11593
11594for (align = 7; align >= 0; align--) {
11595 for (len = 36; len; len--) {
11596 b = buf+align;
11597 bcopy(abc, b, len);
11598 for (off = 1; off <= len; off++) {
11599 bcopy(b, b+off, len);
11600 bcopy(b+off, b, len);
11601 if (bcmp(b, abc, len))
11602 exit(1);
11603 }
11604 }
11605}
11606exit(0);
11607}
11608EOCP
b6cc3bc4
AD
11609 set try
11610 if eval $compile_ok; then
11611 if ./try 2>/dev/null; then
11612 echo "Yes, it can."
11613 val="$define"
11614 else
11615 echo "It can't, sorry."
11616 fi
b4eb6b3d 11617 else
b6cc3bc4 11618 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11619 fi
b6cc3bc4
AD
11620 ;;
11621 esac
11622 $rm -f try.* try core
b4eb6b3d
JH
11623 ;;
11624esac
b4eb6b3d
JH
11625set d_safebcpy
11626eval $setvar
11627
11628: can memcpy handle overlapping blocks?
b6cc3bc4 11629echo " "
b4eb6b3d 11630val="$undef"
b6cc3bc4
AD
11631case "$d_memmove" in
11632"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11633*) case "$d_memcpy" in
11634 "$define")
11635 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11636 $cat >try.c <<EOCP
b4eb6b3d
JH
11637#$i_memory I_MEMORY
11638#$i_stdlib I_STDLIB
11639#$i_string I_STRING
11640#$i_unistd I_UNISTD
11641EOCP
11642 $cat >>try.c <<'EOCP'
11643#include <stdio.h>
11644#ifdef I_MEMORY
11645# include <memory.h>
11646#endif
11647#ifdef I_STDLIB
11648# include <stdlib.h>
11649#endif
11650#ifdef I_STRING
11651# include <string.h>
11652#else
11653# include <strings.h>
11654#endif
11655#ifdef I_UNISTD
11656# include <unistd.h> /* Needed for NetBSD */
11657#endif
11658int main()
11659{
11660char buf[128], abc[128];
11661char *b;
11662int len;
11663int off;
11664int align;
11665
11666/* Copy "abcde..." string to char abc[] so that gcc doesn't
11667 try to store the string in read-only memory. */
11668memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11669
11670for (align = 7; align >= 0; align--) {
11671 for (len = 36; len; len--) {
11672 b = buf+align;
11673 memcpy(b, abc, len);
11674 for (off = 1; off <= len; off++) {
11675 memcpy(b+off, b, len);
11676 memcpy(b, b+off, len);
11677 if (memcmp(b, abc, len))
11678 exit(1);
11679 }
11680 }
11681}
11682exit(0);
11683}
11684EOCP
b6cc3bc4
AD
11685 set try
11686 if eval $compile_ok; then
11687 if ./try 2>/dev/null; then
11688 echo "Yes, it can."
11689 val="$define"
11690 else
11691 echo "It can't, sorry."
11692 fi
b4eb6b3d 11693 else
b6cc3bc4 11694 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11695 fi
b6cc3bc4
AD
11696 ;;
11697 esac
11698 $rm -f try.* try core
b4eb6b3d
JH
11699 ;;
11700esac
b4eb6b3d
JH
11701set d_safemcpy
11702eval $setvar
11703
11704: can memcmp be trusted to compare relative magnitude?
11705val="$undef"
11706case "$d_memcmp" in
11707"$define")
11708 echo " "
11709 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11710 $cat >try.c <<EOCP
11711#$i_memory I_MEMORY
11712#$i_stdlib I_STDLIB
11713#$i_string I_STRING
11714#$i_unistd I_UNISTD
11715EOCP
11716 $cat >>try.c <<'EOCP'
11717#include <stdio.h>
11718#ifdef I_MEMORY
11719# include <memory.h>
11720#endif
11721#ifdef I_STDLIB
11722# include <stdlib.h>
11723#endif
11724#ifdef I_STRING
11725# include <string.h>
11726#else
11727# include <strings.h>
11728#endif
11729#ifdef I_UNISTD
11730# include <unistd.h> /* Needed for NetBSD */
11731#endif
11732int main()
11733{
11734char a = -1;
11735char b = 0;
11736if ((a < b) && memcmp(&a, &b, 1) < 0)
11737 exit(1);
11738exit(0);
11739}
11740EOCP
11741 set try
11742 if eval $compile_ok; then
5440bc8e 11743 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11744 echo "Yes, it can."
11745 val="$define"
11746 else
11747 echo "No, it can't (it uses signed chars)."
11748 fi
11749 else
11750 echo "(I can't compile the test program, so we'll assume not...)"
11751 fi
11752 ;;
11753esac
11754$rm -f try.* try core
11755set d_sanemcmp
11756eval $setvar
11757
ef9f17be
JH
11758: see if prototype for sbrk is available
11759echo " "
11760set d_sbrkproto sbrk $i_unistd unistd.h
11761eval $hasproto
11762
b4eb6b3d
JH
11763: see if select exists
11764set select d_select
11765eval $inlibc
11766
11767: see if semctl exists
11768set semctl d_semctl
11769eval $inlibc
11770
11771: see if semget exists
11772set semget d_semget
11773eval $inlibc
11774
11775: see if semop exists
11776set semop d_semop
11777eval $inlibc
11778
11779: see how much of the 'sem*(2)' library is present.
11780h_sem=true
11781echo " "
11782case "$d_semctl$d_semget$d_semop" in
11783*"$undef"*) h_sem=false;;
11784esac
11785case "$osname" in
11786freebsd)
11787 case "`ipcs 2>&1`" in
11788 "SVID messages"*"not configured"*)
11789 echo "Your $osname does not have the sem*(2) configured." >&4
11790 h_sem=false
11791 val="$undef"
11792 set semctl d_semctl
11793 eval $setvar
11794 set semget d_semget
11795 eval $setvar
11796 set semop d_semop
11797 eval $setvar
11798 ;;
11799 esac
11800 ;;
11801esac
11802: we could also check for sys/ipc.h ...
11803if $h_sem && $test `./findhdr sys/sem.h`; then
11804 echo "You have the full sem*(2) library." >&4
11805 val="$define"
11806else
11807 echo "You don't have the full sem*(2) library." >&4
11808 val="$undef"
11809fi
11810set d_sem
11811eval $setvar
11812
11813: see whether sys/sem.h defines union semun
11814echo " "
11815$cat > try.c <<'END'
11816#include <sys/types.h>
11817#include <sys/ipc.h>
11818#include <sys/sem.h>
11819int main () { union semun semun; semun.buf = 0; }
11820END
11821set try
11822if eval $compile; then
11823 echo "You have union semun in <sys/sem.h>." >&4
11824 val="$define"
11825else
11826 echo "You do not have union semun in <sys/sem.h>." >&4
11827 val="$undef"
11828fi
11829$rm -f try try.c try.h
11830set d_union_semun
11831eval $setvar
11832
11833: see how to do semctl IPC_STAT
11834case "$d_sem" in
11835$define)
11836 : see whether semctl IPC_STAT can use union semun
11837 echo " "
11838 $cat > try.h <<END
11839#ifndef S_IRUSR
11840# ifdef S_IREAD
11841# define S_IRUSR S_IREAD
11842# define S_IWUSR S_IWRITE
11843# define S_IXUSR S_IEXEC
11844# else
11845# define S_IRUSR 0400
11846# define S_IWUSR 0200
11847# define S_IXUSR 0100
11848# endif
11849# define S_IRGRP (S_IRUSR>>3)
11850# define S_IWGRP (S_IWUSR>>3)
11851# define S_IXGRP (S_IXUSR>>3)
11852# define S_IROTH (S_IRUSR>>6)
11853# define S_IWOTH (S_IWUSR>>6)
11854# define S_IXOTH (S_IXUSR>>6)
11855#endif
11856#ifndef S_IRWXU
11857# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11858# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11859# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11860#endif
11861END
11862
11863 $cat > try.c <<END
11864#include <sys/types.h>
11865#include <sys/ipc.h>
11866#include <sys/sem.h>
11867#include <sys/stat.h>
11868#include <stdio.h>
11869#include <errno.h>
11870#include "try.h"
11871#ifndef errno
11872extern int errno;
11873#endif
11874#$d_union_semun HAS_UNION_SEMUN
11875int main() {
11876 union semun
11877#ifndef HAS_UNION_SEMUN
11878 {
11879 int val;
11880 struct semid_ds *buf;
11881 unsigned short *array;
11882 }
11883#endif
11884 arg;
11885 int sem, st;
11886
11887#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11888 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11889 if (sem > -1) {
11890 struct semid_ds argbuf;
11891 arg.buf = &argbuf;
11892# ifdef IPC_STAT
11893 st = semctl(sem, 0, IPC_STAT, arg);
11894 if (st == 0)
11895 printf("semun\n");
11896 else
11897# endif /* IPC_STAT */
11898 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11899# ifdef IPC_RMID
11900 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11901# endif /* IPC_RMID */
11902 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11903 } else
11904#endif /* IPC_PRIVATE && ... */
11905 printf("semget failed: errno = %d\n", errno);
11906 return 0;
11907}
11908END
11909 val="$undef"
11910 set try
11911 if eval $compile; then
5440bc8e 11912 xxx=`$run ./try`
b4eb6b3d
JH
11913 case "$xxx" in
11914 semun) val="$define" ;;
11915 esac
11916 fi
11917 $rm -f try try.c
11918 set d_semctl_semun
11919 eval $setvar
11920 case "$d_semctl_semun" in
11921 $define)
11922 echo "You can use union semun for semctl IPC_STAT." >&4
11923 also='also'
11924 ;;
11925 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11926 also=''
11927 ;;
11928 esac
11929
11930 : see whether semctl IPC_STAT can use struct semid_ds pointer
11931 $cat > try.c <<'END'
11932#include <sys/types.h>
11933#include <sys/ipc.h>
11934#include <sys/sem.h>
11935#include <sys/stat.h>
11936#include "try.h"
11937#include <stdio.h>
11938#include <errno.h>
11939#ifndef errno
11940extern int errno;
11941#endif
11942int main() {
11943 struct semid_ds arg;
11944 int sem, st;
11945
11946#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11947 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11948 if (sem > -1) {
11949# ifdef IPC_STAT
11950 st = semctl(sem, 0, IPC_STAT, &arg);
11951 if (st == 0)
11952 printf("semid_ds\n");
11953 else
11954# endif /* IPC_STAT */
11955 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11956# ifdef IPC_RMID
11957 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11958# endif /* IPC_RMID */
11959 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11960 } else
11961#endif /* IPC_PRIVATE && ... */
11962 printf("semget failed: errno = %d\n", errno);
11963
11964 return 0;
11965}
11966END
11967 val="$undef"
11968 set try
11969 if eval $compile; then
5440bc8e 11970 xxx=`$run ./try`
b4eb6b3d
JH
11971 case "$xxx" in
11972 semid_ds) val="$define" ;;
11973 esac
11974 fi
11975 $rm -f try try.c
11976 set d_semctl_semid_ds
11977 eval $setvar
11978 case "$d_semctl_semid_ds" in
11979 $define)
11980 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11981 ;;
11982 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11983 ;;
11984 esac
11985 $rm -f try.h
11986 ;;
11987*) val="$undef"
11988
11989 # We do not have the full sem*(2) library, so assume we can not
11990 # use either.
11991
11992 set d_semctl_semun
11993 eval $setvar
11994
11995 set d_semctl_semid_ds
11996 eval $setvar
11997 ;;
11998esac
11999
4e0554ec
JH
12000: see if sendmsg exists
12001set sendmsg d_sendmsg
12002eval $inlibc
12003
b4eb6b3d
JH
12004: see if setegid exists
12005set setegid d_setegid
12006eval $inlibc
12007
12008: see if seteuid exists
12009set seteuid d_seteuid
12010eval $inlibc
12011
12012: see if setgrent exists
12013set setgrent d_setgrent
12014eval $inlibc
12015
12016: see if sethostent exists
12017set sethostent d_sethent
12018eval $inlibc
12019
4e0554ec
JH
12020: see if setitimer exists
12021set setitimer d_setitimer
12022eval $inlibc
12023
b4eb6b3d
JH
12024: see if setlinebuf exists
12025set setlinebuf d_setlinebuf
12026eval $inlibc
12027
12028: see if setlocale exists
12029set setlocale d_setlocale
12030eval $inlibc
12031
12032: see if setnetent exists
12033set setnetent d_setnent
12034eval $inlibc
12035
12036: see if setprotoent exists
12037set setprotoent d_setpent
12038eval $inlibc
12039
12040: see if setpgid exists
12041set setpgid d_setpgid
12042eval $inlibc
12043
12044: see if setpgrp2 exists
12045set setpgrp2 d_setpgrp2
12046eval $inlibc
12047
12048: see if setpriority exists
12049set setpriority d_setprior
12050eval $inlibc
12051
12052: see if setproctitle exists
12053set setproctitle d_setproctitle
12054eval $inlibc
12055
12056: see if setpwent exists
12057set setpwent d_setpwent
12058eval $inlibc
12059
12060: see if setregid exists
12061set setregid d_setregid
12062eval $inlibc
12063set setresgid d_setresgid
12064eval $inlibc
12065
12066: see if setreuid exists
12067set setreuid d_setreuid
12068eval $inlibc
12069set setresuid d_setresuid
12070eval $inlibc
12071
12072: see if setrgid exists
12073set setrgid d_setrgid
12074eval $inlibc
12075
12076: see if setruid exists
12077set setruid d_setruid
12078eval $inlibc
12079
12080: see if setservent exists
12081set setservent d_setsent
12082eval $inlibc
12083
12084: see if setsid exists
12085set setsid d_setsid
12086eval $inlibc
12087
12088: see if setvbuf exists
12089set setvbuf d_setvbuf
12090eval $inlibc
12091
12092: see if sfio.h is available
12093set sfio.h i_sfio
12094eval $inhdr
12095
12096
12097: see if sfio library is available
12098case "$i_sfio" in
12099$define)
12100 val=''
12101 set sfreserve val
12102 eval $inlibc
12103 ;;
12104*)
12105 val="$undef"
12106 ;;
12107esac
12108: Ok, but do we want to use it.
12109case "$val" in
12110$define)
12111 case "$usesfio" in
12112 true|$define|[yY]*) dflt='y';;
12113 *) dflt='n';;
12114 esac
12115 echo "$package can use the sfio library, but it is experimental."
12116 case "$useperlio" in
12117 "$undef")
12118 echo "For sfio also the PerlIO abstraction layer is needed."
12119 echo "Earlier you said you wouldn't want that."
12120 ;;
12121 esac
12122 rp="You seem to have sfio available, do you want to try using it?"
12123 . ./myread
12124 case "$ans" in
12125 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12126 useperlio="$define"
12127 val="$define"
12128 ;;
12129 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12130 val="$undef"
b4eb6b3d
JH
12131 ;;
12132 esac
12133 ;;
12134*) case "$usesfio" in
12135 true|$define|[yY]*)
12136 echo "Sorry, cannot find sfio on this machine." >&4
12137 echo "Ignoring your setting of usesfio=$usesfio." >&4
12138 val="$undef"
12139 ;;
12140 esac
12141 ;;
12142esac
12143set d_sfio
12144eval $setvar
12145case "$d_sfio" in
12146$define) usesfio='true';;
12147*) usesfio='false';;
12148esac
3659ebf1
JH
12149case "$d_sfio" in
12150$define) ;;
12151*) : Remove sfio from list of libraries to use
7483f793
JH
12152 case "$libs" in
12153 *-lsfio*)
12154 echo "Removing unneeded -lsfio from library list" >&4
12155 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12156 shift
12157 libs="$*"
12158 echo "libs = $libs" >&4
12159 ;;
12160 esac
3659ebf1
JH
12161;;
12162esac
12163
b4eb6b3d
JH
12164
12165: see if shmctl exists
12166set shmctl d_shmctl
12167eval $inlibc
12168
12169: see if shmget exists
12170set shmget d_shmget
12171eval $inlibc
12172
12173: see if shmat exists
12174set shmat d_shmat
12175eval $inlibc
12176: see what shmat returns
12177case "$d_shmat" in
12178"$define")
12179 $cat >shmat.c <<'END'
12180#include <sys/shm.h>
12181void *shmat();
12182END
12183 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12184 shmattype='void *'
12185 else
12186 shmattype='char *'
12187 fi
12188 echo "and it returns ($shmattype)." >&4
12189 : see if a prototype for shmat is available
12190 xxx=`./findhdr sys/shm.h`
12191 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12192 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12193 val="$define"
12194 else
12195 val="$undef"
12196 fi
12197 $rm -f shmat.[co]
12198 ;;
12199*)
12200 val="$undef"
12201 ;;
12202esac
12203set d_shmatprototype
12204eval $setvar
12205
12206: see if shmdt exists
12207set shmdt d_shmdt
12208eval $inlibc
12209
12210: see how much of the 'shm*(2)' library is present.
12211h_shm=true
12212echo " "
12213case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12214*"$undef"*) h_shm=false;;
12215esac
12216case "$osname" in
12217freebsd)
12218 case "`ipcs 2>&1`" in
12219 "SVID shared memory"*"not configured"*)
12220 echo "Your $osname does not have the shm*(2) configured." >&4
12221 h_shm=false
12222 val="$undef"
12223 set shmctl d_shmctl
12224 evat $setvar
12225 set shmget d_shmget
12226 evat $setvar
12227 set shmat d_shmat
12228 evat $setvar
12229 set shmdt d_shmdt
12230 evat $setvar
12231 ;;
12232 esac
12233 ;;
12234esac
12235: we could also check for sys/ipc.h ...
12236if $h_shm && $test `./findhdr sys/shm.h`; then
12237 echo "You have the full shm*(2) library." >&4
12238 val="$define"
12239else
12240 echo "You don't have the full shm*(2) library." >&4
12241 val="$undef"
12242fi
12243set d_shm
12244eval $setvar
12245
12246echo " "
12247: see if we have sigaction
12248if set sigaction val -f d_sigaction; eval $csym; $val; then
12249 echo 'sigaction() found.' >&4
12250 $cat > try.c <<'EOP'
12251#include <stdio.h>
12252#include <sys/types.h>
12253#include <signal.h>
12254int main()
12255{
12256 struct sigaction act, oact;
12257 act.sa_flags = 0;
12258 oact.sa_handler = 0;
12259 /* so that act and oact are used */
12260 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12261}
12262EOP
12263 set try
12264 if eval $compile_ok; then
12265 val="$define"
12266 else
12267 echo "But you don't seem to have a useable struct sigaction." >&4
12268 val="$undef"
12269 fi
12270else
12271 echo 'sigaction NOT found.' >&4
12272 val="$undef"
12273fi
12274set d_sigaction; eval $setvar
12275$rm -f try try$_o try.c
12276
983dbef6
JH
12277: see if sigprocmask exists
12278set sigprocmask d_sigprocmask
12279eval $inlibc
12280
b4eb6b3d
JH
12281: see if sigsetjmp exists
12282echo " "
12283case "$d_sigsetjmp" in
12284'')
12285 $cat >try.c <<'EOP'
12286#include <setjmp.h>
12287sigjmp_buf env;
12288int set = 1;
12289int main()
12290{
12291 if (sigsetjmp(env,1))
12292 exit(set);
12293 set = 0;
12294 siglongjmp(env, 1);
12295 exit(1);
12296}
12297EOP
12298 set try
12299 if eval $compile; then
5440bc8e 12300 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12301 echo "POSIX sigsetjmp found." >&4
12302 val="$define"
12303 else
12304 $cat >&4 <<EOM
12305Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12306I'll ignore them.
12307EOM
12308 val="$undef"
12309 fi
12310 else
12311 echo "sigsetjmp not found." >&4
12312 val="$undef"
12313 fi
12314 ;;
12315*) val="$d_sigsetjmp"
12316 case "$d_sigsetjmp" in
12317 $define) echo "POSIX sigsetjmp found." >&4;;
12318 $undef) echo "sigsetjmp not found." >&4;;
12319 esac
12320 ;;
12321esac
12322set d_sigsetjmp
12323eval $setvar
12324$rm -f try.c try
12325
49a78c82
JH
12326: see if sockatmark exists
12327set sockatmark d_sockatmark
12328eval $inlibc
12329
2ef53570
JH
12330: see if prototype for sockatmark is available
12331echo " "
12332set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12333eval $hasproto
12334
b4eb6b3d
JH
12335: see if socks5_init exists
12336set socks5_init d_socks5_init
12337eval $inlibc
12338
eef837ea
JH
12339: see if prototype for setresgid is available
12340echo " "
12341set d_sresgproto setresgid $i_unistd unistd.h
12342eval $hasproto
12343
640374d0
JH
12344: see if prototype for setresuid is available
12345echo " "
12346set d_sresuproto setresuid $i_unistd unistd.h
12347eval $hasproto
12348
b4eb6b3d
JH
12349: see if sys/stat.h is available
12350set sys/stat.h i_sysstat
12351eval $inhdr
12352
12353
12354: see if stat knows about block sizes
12355echo " "
12356echo "Checking to see if your struct stat has st_blocks field..." >&4
12357set d_statblks stat st_blocks $i_sysstat sys/stat.h
12358eval $hasfield
12359
12360
12361: see if this is a sys/vfs.h system
12362set sys/vfs.h i_sysvfs
12363eval $inhdr
12364
12365
12366: see if this is a sys/statfs.h system
12367set sys/statfs.h i_sysstatfs
12368eval $inhdr
12369
12370
12371echo " "
12372echo "Checking to see if your system supports struct statfs..." >&4
12373set 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
12374eval $hasstruct
12375case "$d_statfs_s" in
12376"$define") echo "Yes, it does." ;;
12377*) echo "No, it doesn't." ;;
12378esac
12379
12380
12381
12382: see if struct statfs knows about f_flags
12383case "$d_statfs_s" in
12384define)
12385 echo " "
12386 echo "Checking to see if your struct statfs has f_flags field..." >&4
12387 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
12388 eval $hasfield
12389 ;;
12390*) val="$undef"
12391 set d_statfs_f_flags
12392 eval $setvar
12393 ;;
12394esac
12395case "$d_statfs_f_flags" in
12396"$define") echo "Yes, it does." ;;
12397*) echo "No, it doesn't." ;;
12398esac
12399
12400: see if _ptr and _cnt from stdio act std
12401echo " "
80f36755
NC
12402
12403if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12404 echo "(Looks like you have stdio.h from BSD.)"
12405 case "$stdio_ptr" in
12406 '') stdio_ptr='((fp)->_p)'
12407 ptr_lval=$define
12408 ;;
12409 *) ptr_lval=$d_stdio_ptr_lval;;
12410 esac
12411 case "$stdio_cnt" in
12412 '') stdio_cnt='((fp)->_r)'
12413 cnt_lval=$define
12414 ;;
12415 *) cnt_lval=$d_stdio_cnt_lval;;
12416 esac
12417 case "$stdio_base" in
12418 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12419 esac
12420 case "$stdio_bufsiz" in
12421 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12422 esac
12423elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12424 echo "(Looks like you have stdio.h from Linux.)"
12425 case "$stdio_ptr" in
12426 '') stdio_ptr='((fp)->_IO_read_ptr)'
12427 ptr_lval=$define
12428 ;;
12429 *) ptr_lval=$d_stdio_ptr_lval;;
12430 esac
12431 case "$stdio_cnt" in
12432 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12433 cnt_lval=$undef
12434 ;;
12435 *) cnt_lval=$d_stdio_cnt_lval;;
12436 esac
12437 case "$stdio_base" in
12438 '') stdio_base='((fp)->_IO_read_base)';;
12439 esac
12440 case "$stdio_bufsiz" in
12441 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12442 esac
12443else
12444 case "$stdio_ptr" in
12445 '') stdio_ptr='((fp)->_ptr)'
12446 ptr_lval=$define
12447 ;;
12448 *) ptr_lval=$d_stdio_ptr_lval;;
12449 esac
12450 case "$stdio_cnt" in
12451 '') stdio_cnt='((fp)->_cnt)'
12452 cnt_lval=$define
12453 ;;
12454 *) cnt_lval=$d_stdio_cnt_lval;;
12455 esac
12456 case "$stdio_base" in
12457 '') stdio_base='((fp)->_base)';;
12458 esac
12459 case "$stdio_bufsiz" in
12460 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12461 esac
12462fi
80f36755 12463
b4eb6b3d
JH
12464: test whether _ptr and _cnt really work
12465echo "Checking how std your stdio is..." >&4
12466$cat >try.c <<EOP
12467#include <stdio.h>
12468#define FILE_ptr(fp) $stdio_ptr
12469#define FILE_cnt(fp) $stdio_cnt
12470int main() {
12471 FILE *fp = fopen("try.c", "r");
12472 char c = getc(fp);
12473 if (
12474 18 <= FILE_cnt(fp) &&
12475 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12476 )
12477 exit(0);
12478 exit(1);
12479}
12480EOP
12481val="$undef"
12482set try
5440bc8e
JH
12483if eval $compile && $to try.c; then
12484 if $run ./try; then
b4eb6b3d
JH
12485 echo "Your stdio acts pretty std."
12486 val="$define"
12487 else
12488 echo "Your stdio isn't very std."
12489 fi
12490else
12491 echo "Your stdio doesn't appear very std."
12492fi
12493$rm -f try.c try
12494set d_stdstdio
12495eval $setvar
12496
12497: Can _ptr be used as an lvalue?
12498case "$d_stdstdio$ptr_lval" in
12499$define$define) val=$define ;;
12500*) val=$undef ;;
12501esac
12502set d_stdio_ptr_lval
12503eval $setvar
12504
12505: Can _cnt be used as an lvalue?
12506case "$d_stdstdio$cnt_lval" in
12507$define$define) val=$define ;;
12508*) val=$undef ;;
12509esac
12510set d_stdio_cnt_lval
12511eval $setvar
12512
a7ffa9b9
NC
12513
12514: test whether setting _ptr sets _cnt as a side effect
12515d_stdio_ptr_lval_sets_cnt="$undef"
12516d_stdio_ptr_lval_nochange_cnt="$undef"
12517case "$d_stdio_ptr_lval$d_stdstdio" in
12518$define$define)
12519 echo "Checking to see what happens if we set the stdio ptr..." >&4
12520$cat >try.c <<EOP
12521#include <stdio.h>
12522/* Can we scream? */
12523/* Eat dust sed :-) */
c1d9e6fa 12524/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12525#define FILE_ptr(fp) $stdio_ptr
12526#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12527#include <sys/types.h>
a7ffa9b9
NC
12528int main() {
12529 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12530 int c;
a7ffa9b9
NC
12531 char *ptr;
12532 size_t cnt;
c1d9e6fa
JH
12533 if (!fp) {
12534 puts("Fail even to read");
12535 exit(1);
12536 }
12537 c = getc(fp); /* Read away the first # */
12538 if (c == EOF) {
12539 puts("Fail even to read");
12540 exit(1);
12541 }
a7ffa9b9
NC
12542 if (!(
12543 18 <= FILE_cnt(fp) &&
12544 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12545 )) {
12546 puts("Fail even to read");
12547 exit (1);
12548 }
c1d9e6fa
JH
12549 ptr = (char*) FILE_ptr(fp);
12550 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12551
c1d9e6fa 12552 FILE_ptr(fp) += 42;
a7ffa9b9 12553
c1d9e6fa 12554 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12555 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12556 exit (1);
12557 }
12558 if (FILE_cnt(fp) <= 20) {
12559 printf ("Fail (<20 chars to test)");
12560 exit (1);
12561 }
12562 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12563 puts("Fail compare");
12564 exit (1);
12565 }
12566 if (cnt == FILE_cnt(fp)) {
12567 puts("Pass_unchanged");
12568 exit (0);
12569 }
12570 if (FILE_cnt(fp) == (cnt - 42)) {
12571 puts("Pass_changed");
12572 exit (0);
12573 }
12574 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12575 return 1;
12576
12577}
12578EOP
12579 set try
5440bc8e
JH
12580 if eval $compile && $to try.c; then
12581 case `$run ./try` in
a7ffa9b9 12582 Pass_changed)
2e32dcfe 12583 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12584 d_stdio_ptr_lval_sets_cnt="$define" ;;
12585 Pass_unchanged)
12586 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12587 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12588 Fail*)
12589 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12590 *)
12591 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12592 esac
12593 else
12594 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12595 fi
12596 $rm -f try.c try
12597 ;;
12598esac
12599
b4eb6b3d
JH
12600: see if _base is also standard
12601val="$undef"
12602case "$d_stdstdio" in
12603$define)
12604 $cat >try.c <<EOP
12605#include <stdio.h>
12606#define FILE_base(fp) $stdio_base
12607#define FILE_bufsiz(fp) $stdio_bufsiz
12608int main() {
12609 FILE *fp = fopen("try.c", "r");
12610 char c = getc(fp);
12611 if (
12612 19 <= FILE_bufsiz(fp) &&
12613 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12614 )
12615 exit(0);
12616 exit(1);
12617}
12618EOP
12619 set try
5440bc8e
JH
12620 if eval $compile && $to try.c; then
12621 if $run ./try; then
b4eb6b3d
JH
12622 echo "And its _base field acts std."
12623 val="$define"
12624 else
12625 echo "But its _base field isn't std."
12626 fi
12627 else
12628 echo "However, it seems to be lacking the _base field."
12629 fi
12630 $rm -f try.c try
12631 ;;
12632esac
12633set d_stdiobase
12634eval $setvar
12635
12636$cat >&4 <<EOM
12637Checking how to access stdio streams by file descriptor number...
12638EOM
12639case "$stdio_stream_array" in
12640'') $cat >try.c <<EOCP
12641#include <stdio.h>
12642int main() {
12643 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12644 printf("yes\n");
12645}
12646EOCP
12647 for s in _iob __iob __sF
12648 do
12649 set try -DSTDIO_STREAM_ARRAY=$s
12650 if eval $compile; then
5440bc8e 12651 case "`$run ./try`" in
b4eb6b3d
JH
12652 yes) stdio_stream_array=$s; break ;;
12653 esac
12654 fi
12655 done
12656 $rm -f try.* try$exe_ext
12657esac
12658case "$stdio_stream_array" in
12659'') $cat >&4 <<EOM
12660I can't figure out how to access stdio streams by file descriptor number.
12661EOM
12662 d_stdio_stream_array="$undef"
12663 ;;
12664*) $cat >&4 <<EOM
12665You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12666EOM
12667 d_stdio_stream_array="$define"
12668 ;;
12669esac
12670
12671: see if strcoll exists
12672set strcoll d_strcoll
12673eval $inlibc
12674
12675: check for structure copying
12676echo " "
12677echo "Checking to see if your C compiler can copy structs..." >&4
12678$cat >try.c <<'EOCP'
12679int main()
12680{
12681 struct blurfl {
12682 int dyick;
12683 } foo, bar;
12684
12685 foo = bar;
12686}
12687EOCP
12688if $cc -c try.c >/dev/null 2>&1 ; then
12689 val="$define"
12690 echo "Yup, it can."
12691else
12692 val="$undef"
12693 echo "Nope, it can't."
12694fi
12695set d_strctcpy
12696eval $setvar
12697$rm -f try.*
12698
12699: see if strerror and/or sys_errlist[] exist
12700echo " "
12701if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12702 if set strerror val -f d_strerror; eval $csym; $val; then
12703 echo 'strerror() found.' >&4
12704 d_strerror="$define"
12705 d_strerrm='strerror(e)'
12706 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12707 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12708 d_syserrlst="$define"
12709 else
12710 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12711 d_syserrlst="$undef"
12712 fi
12713 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12714 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12715 echo 'strerror() found in string header.' >&4
12716 d_strerror="$define"
12717 d_strerrm='strerror(e)'
12718 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12719 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12720 d_syserrlst="$define"
12721 else
12722 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12723 d_syserrlst="$undef"
12724 fi
12725 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12726 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12727 d_strerror="$undef"
12728 d_syserrlst="$define"
12729 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12730 else
12731 echo 'strerror() and sys_errlist[] NOT found.' >&4
12732 d_strerror="$undef"
12733 d_syserrlst="$undef"
12734 d_strerrm='"unknown"'
12735 fi
12736fi
12737
b3c85772
JH
12738: see if strftime exists
12739set strftime d_strftime
12740eval $inlibc
12741
b4eb6b3d
JH
12742: see if strtod exists
12743set strtod d_strtod
12744eval $inlibc
12745
12746: see if strtol exists
12747set strtol d_strtol
12748eval $inlibc
12749
12750: see if strtold exists
12751set strtold d_strtold
12752eval $inlibc
12753
12754: see if strtoll exists
12755set strtoll d_strtoll
12756eval $inlibc
12757
12758case "$d_longlong-$d_strtoll" in
12759"$define-$define")
12760 $cat <<EOM
12761Checking whether your strtoll() works okay...
12762EOM
12763 $cat >try.c <<'EOCP'
12764#include <errno.h>
12765#ifdef __hpux
12766#define strtoll __strtoll
12767#endif
e75931a7
YST
12768#ifdef __EMX__
12769#define strtoll _strtoll
12770#endif
b4eb6b3d
JH
12771#include <stdio.h>
12772extern long long int strtoll(char *s, char **, int);
12773static int bad = 0;
12774int check(char *s, long long ell, int een) {
12775 long long gll;
12776 errno = 0;
12777 gll = strtoll(s, 0, 10);
12778 if (!((gll == ell) && (errno == een)))
12779 bad++;
12780}
12781int main() {
12782 check(" 1", 1LL, 0);
12783 check(" 0", 0LL, 0);
12784 check("-1", -1LL, 0);
12785 check("-9223372036854775808", -9223372036854775808LL, 0);
12786 check("-9223372036854775808", -9223372036854775808LL, 0);
12787 check(" 9223372036854775807", 9223372036854775807LL, 0);
12788 check("-9223372036854775808", -9223372036854775808LL, 0);
12789 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12790 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12791 if (!bad)
12792 printf("ok\n");
12793}
12794EOCP
12795 set try
12796 if eval $compile; then
5440bc8e 12797 yyy=`$run ./try`
e75931a7 12798 case "$yyy" in
b4eb6b3d
JH
12799 ok) echo "Your strtoll() seems to be working okay." ;;
12800 *) cat <<EOM >&4
12801Your strtoll() doesn't seem to be working okay.
12802EOM
12803 d_strtoll="$undef"
12804 ;;
69eadf66 12805 esac
e75931a7
YST
12806 else
12807 echo "(I can't seem to compile the test program--assuming it doesn't)"
12808 d_strtoll="$undef"
b4eb6b3d
JH
12809 fi
12810 ;;
12811esac
12812
28e5dec8
JH
12813: see if strtoq exists
12814set strtoq d_strtoq
12815eval $inlibc
12816
b4eb6b3d
JH
12817: see if strtoul exists
12818set strtoul d_strtoul
12819eval $inlibc
12820
d0e6d399
NC
12821case "$d_strtoul" in
12822"$define")
12823 $cat <<EOM
12824Checking whether your strtoul() works okay...
12825EOM
12826 $cat >try.c <<'EOCP'
12827#include <errno.h>
12828#include <stdio.h>
12829extern unsigned long int strtoul(char *s, char **, int);
12830static int bad = 0;
12831void check(char *s, unsigned long eul, int een) {
12832 unsigned long gul;
12833 errno = 0;
12834 gul = strtoul(s, 0, 10);
12835 if (!((gul == eul) && (errno == een)))
12836 bad++;
12837}
12838int main() {
12839 check(" 1", 1L, 0);
12840 check(" 0", 0L, 0);
12841EOCP
12842 case "$longsize" in
12843 8)
12844 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12845 check("18446744073709551615", 18446744073709551615UL, 0);
12846 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12847#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12848 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12849 check("-18446744073709551614", 2, 0);
12850 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12851 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12852 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12853#endif
d0e6d399
NC
12854EOCP
12855 ;;
12856 4)
12857 $cat >>try.c <<'EOCP'
12858 check("4294967295", 4294967295UL, 0);
12859 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12860#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12861 check("-1", 4294967295UL, 0);
12862 check("-4294967294", 2, 0);
12863 check("-4294967295", 1, 0);
12864 check("-4294967296", 4294967295UL, ERANGE);
12865 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12866#endif
d0e6d399
NC
12867EOCP
12868 ;;
12869 *)
12870: Should we write these tests to be more portable by sprintf-ing
12871: ~0 and then manipulating that char string as input for strtol?
12872 ;;
12873 esac
12874 $cat >>try.c <<'EOCP'
12875 if (!bad)
12876 printf("ok\n");
12877 return 0;
12878}
12879EOCP
12880 set try
12881 if eval $compile; then
5440bc8e 12882 case "`$run ./try`" in
d0e6d399
NC
12883 ok) echo "Your strtoul() seems to be working okay." ;;
12884 *) cat <<EOM >&4
12885Your strtoul() doesn't seem to be working okay.
12886EOM
12887 d_strtoul="$undef"
12888 ;;
12889 esac
12890 fi
12891 ;;
12892esac
12893
b4eb6b3d
JH
12894: see if strtoull exists
12895set strtoull d_strtoull
12896eval $inlibc
12897
12898case "$d_longlong-$d_strtoull" in
12899"$define-$define")
12900 $cat <<EOM
12901Checking whether your strtoull() works okay...
12902EOM
12903 $cat >try.c <<'EOCP'
12904#include <errno.h>
12905#ifdef __hpux
12906#define strtoull __strtoull
12907#endif
12908#include <stdio.h>
12909extern unsigned long long int strtoull(char *s, char **, int);
12910static int bad = 0;
12911int check(char *s, long long eull, int een) {
12912 long long gull;
12913 errno = 0;
12914 gull = strtoull(s, 0, 10);
12915 if (!((gull == eull) && (errno == een)))
12916 bad++;
12917}
12918int main() {
d0e6d399
NC
12919 check(" 1", 1LL, 0);
12920 check(" 0", 0LL, 0);
12921 check("18446744073709551615", 18446744073709551615ULL, 0);
12922 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12923#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
12924 check("-1", 18446744073709551615ULL, 0);
12925 check("-18446744073709551614", 2LL, 0);
12926 check("-18446744073709551615", 1LL, 0);
12927 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12928 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12929#endif
b4eb6b3d
JH
12930 if (!bad)
12931 printf("ok\n");
12932}
12933EOCP
12934 set try
12935 if eval $compile; then
5440bc8e 12936 case "`$run ./try`" in
b4eb6b3d
JH
12937 ok) echo "Your strtoull() seems to be working okay." ;;
12938 *) cat <<EOM >&4
12939Your strtoull() doesn't seem to be working okay.
12940EOM
12941 d_strtoull="$undef"
12942 ;;
12943 esac
12944 fi
12945 ;;
12946esac
12947
12948: see if strtouq exists
12949set strtouq d_strtouq
12950eval $inlibc
12951
d0e6d399
NC
12952case "$d_strtouq" in
12953"$define")
12954 $cat <<EOM
12955Checking whether your strtouq() works okay...
12956EOM
12957 $cat >try.c <<'EOCP'
12958#include <errno.h>
12959#include <stdio.h>
12960extern unsigned long long int strtouq(char *s, char **, int);
12961static int bad = 0;
12962void check(char *s, unsigned long long eull, int een) {
12963 unsigned long long gull;
12964 errno = 0;
12965 gull = strtouq(s, 0, 10);
12966 if (!((gull == eull) && (errno == een)))
12967 bad++;
12968}
12969int main() {
12970 check(" 1", 1LL, 0);
12971 check(" 0", 0LL, 0);
12972 check("18446744073709551615", 18446744073709551615ULL, 0);
12973 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12974#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
12975 check("-1", 18446744073709551615ULL, 0);
12976 check("-18446744073709551614", 2LL, 0);
12977 check("-18446744073709551615", 1LL, 0);
12978 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12979 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12980#endif
d0e6d399
NC
12981 if (!bad)
12982 printf("ok\n");
12983 return 0;
12984}
12985EOCP
12986 set try
12987 if eval $compile; then
5440bc8e 12988 case "`$run ./try`" in
d0e6d399
NC
12989 ok) echo "Your strtouq() seems to be working okay." ;;
12990 *) cat <<EOM >&4
12991Your strtouq() doesn't seem to be working okay.
12992EOM
12993 d_strtouq="$undef"
12994 ;;
12995 esac
12996 fi
12997 ;;
12998esac
12999
b4eb6b3d
JH
13000: see if strxfrm exists
13001set strxfrm d_strxfrm
13002eval $inlibc
13003
13004: see if symlink exists
13005set symlink d_symlink
13006eval $inlibc
13007
13008: see if syscall exists
13009set syscall d_syscall
13010eval $inlibc
13011
2ef53570
JH
13012: see if prototype for syscall is available
13013echo " "
13014set d_syscallproto syscall $i_unistd unistd.h
13015eval $hasproto
13016
b4eb6b3d
JH
13017: see if sysconf exists
13018set sysconf d_sysconf
13019eval $inlibc
13020
13021: see if system exists
13022set system d_system
13023eval $inlibc
13024
13025: see if tcgetpgrp exists
13026set tcgetpgrp d_tcgetpgrp
13027eval $inlibc
13028
13029: see if tcsetpgrp exists
13030set tcsetpgrp d_tcsetpgrp
13031eval $inlibc
13032
13033: see if prototype for telldir is available
13034echo " "
13035set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13036eval $hasproto
13037
13038: see if this is a sys/times.h system
13039set sys/times.h i_systimes
13040eval $inhdr
13041
13042: see if times exists
13043echo " "
13044if set times val -f d_times; eval $csym; $val; then
13045 echo 'times() found.' >&4
13046 d_times="$define"
13047 inc=''
13048 case "$i_systimes" in
13049 "$define") inc='sys/times.h';;
13050 esac
13051 rp="What is the type returned by times() on this system?"
13052 set clock_t clocktype long stdio.h sys/types.h $inc
13053 eval $typedef_ask
13054else
13055 echo 'times() NOT found, hope that will do.' >&4
13056 d_times="$undef"
13057 clocktype='int'
13058fi
13059
13060: see if truncate exists
13061set truncate d_truncate
13062eval $inlibc
13063
13064: see if tzname[] exists
13065echo " "
13066if set tzname val -a d_tzname; eval $csym; $val; then
13067 val="$define"
13068 echo 'tzname[] found.' >&4
13069else
13070 val="$undef"
13071 echo 'tzname[] NOT found.' >&4
13072fi
13073set d_tzname
13074eval $setvar
13075
4e0554ec
JH
13076case "$osname" in
13077next|rhapsody|darwin) multiarch="$define" ;;
13078esac
13079case "$multiarch" in
13080''|[nN]*) multiarch="$undef" ;;
13081esac
13082
13083: check for ordering of bytes in a long
13084echo " "
5440bc8e 13085case "$usecrosscompile$multiarch" in
4e0554ec
JH
13086*$define*)
13087 $cat <<EOM
13088You seem to be either cross-compiling or doing a multiarchitecture build,
13089skipping the byteorder check.
13090
13091EOM
5440bc8e 13092 byteorder='ffff'
4e0554ec
JH
13093 ;;
13094*)
13095 case "$byteorder" in
13096 '')
13097 $cat <<'EOM'
13098In the following, larger digits indicate more significance. A big-endian
13099machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13100little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13101machines may have weird orders like 3412. A Cray will report 87654321,
13102an Alpha will report 12345678. If the test program works the default is
13103probably right.
13104I'm now running the test program...
13105EOM
13106 $cat >try.c <<'EOCP'
13107#include <stdio.h>
13108int main()
13109{
13110 int i;
13111 union {
13112 unsigned long l;
13113 char c[sizeof(long)];
13114 } u;
13115
13116 if (sizeof(long) > 4)
13117 u.l = (0x08070605L << 32) | 0x04030201L;
13118 else
13119 u.l = 0x04030201L;
13120 for (i = 0; i < sizeof(long); i++)
13121 printf("%c", u.c[i]+'0');
13122 printf("\n");
13123 exit(0);
13124}
13125EOCP
13126 xxx_prompt=y
13127 set try
13128 if eval $compile && ./try > /dev/null; then
5440bc8e 13129 dflt=`$run ./try`
4e0554ec
JH
13130 case "$dflt" in
13131 [1-4][1-4][1-4][1-4]|12345678|87654321)
13132 echo "(The test program ran ok.)"
13133 echo "byteorder=$dflt"
13134 xxx_prompt=n
13135 ;;
13136 ????|????????) echo "(The test program ran ok.)" ;;
13137 *) echo "(The test program didn't run right for some reason.)" ;;
13138 esac
13139 else
13140 dflt='4321'
13141 cat <<'EOM'
13142(I can't seem to compile the test program. Guessing big-endian...)
13143EOM
13144 fi
13145 case "$xxx_prompt" in
13146 y)
13147 rp="What is the order of bytes in a long?"
13148 . ./myread
13149 byteorder="$ans"
13150 ;;
13151 *) byteorder=$dflt
13152 ;;
13153 esac
13154 ;;
13155 esac
13156 $rm -f try.c try
13157 ;;
13158esac
13159
13160
13161$cat <<EOM
13162
13163Checking to see whether you can access character data unalignedly...
13164EOM
13165$cat >try.c <<EOCP
13166#include <stdio.h>
13167#define U32 $u32type
13168#define BYTEORDER $byteorder
13169int main() {
13170#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13171 U8 buf[] = "\0\0\0\1\0\0\0\0";
13172 U32 *up;
13173 int i;
13174
13175 if (sizeof(U32) != 4) {
13176 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13177 exit(1);
13178 }
13179
13180 fflush(stdout);
13181
13182 for (i = 0; i < 4; i++) {
13183 up = (U32*)(buf + i);
13184 if (! ((*up == 1 << (8*i)) || /* big-endian */
13185 (*up == 1 << (8*(3-i))) /* little-endian */
13186 )
13187 )
13188 {
13189 printf("read failed (%x)\n", *up);
13190 exit(2);
13191 }
13192 }
13193
13194 /* write test */
13195 for (i = 0; i < 4; i++) {
13196 up = (U32*)(buf + i);
13197 *up = 0xBeef;
13198 if (*up != 0xBeef) {
13199 printf("write failed (%x)\n", *up);
13200 exit(3);
13201 }
13202 }
13203
13204 exit(0);
13205#else
13206 printf("1\n");
13207 exit(1);
13208#endif
13209 return 0;
13210}
13211EOCP
13212set try
13213if eval $compile_ok; then
5440bc8e
JH
13214 echo "(Testing for character data alignment may dump core.)" >&4
13215 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13216 case "$?" in
13217 0) cat >&4 <<EOM
13218You can access character data pretty unalignedly.
13219EOM
13220 d_u32align="$undef"
13221 ;;
13222 *) cat >&4 <<EOM
13223It seems that you must access character data in an aligned manner.
13224EOM
13225 d_u32align="$define"
13226 ;;
13227 esac
13228 $rm -f core core.try.* try.core
13229else
13230 rp='Can you access character data at unaligned addresses?'
13231 dflt='n'
13232 . ./myread
13233 case "$ans" in
13234 [yY]*) d_u32align="$undef" ;;
13235 *) d_u32align="$define" ;;
13236 esac
13237fi
13238
13239: see if ualarm exists
13240set ualarm d_ualarm
13241eval $inlibc
13242
b4eb6b3d
JH
13243: see if umask exists
13244set umask d_umask
13245eval $inlibc
13246
4e0554ec
JH
13247: see if usleep exists
13248set usleep d_usleep
13249eval $inlibc
13250
2ef53570
JH
13251: see if prototype for usleep is available
13252echo " "
13253set d_usleepproto usleep $i_unistd unistd.h
13254eval $hasproto
13255
b4eb6b3d
JH
13256: see if ustat exists
13257set ustat d_ustat
13258eval $inlibc
13259
13260: backward compatibility for d_hvfork
13261if test X$d_hvfork != X; then
13262 d_vfork="$d_hvfork"
13263 d_hvfork=''
13264fi
13265: see if there is a vfork
13266val=''
13267set vfork val
13268eval $inlibc
13269
13270: Ok, but do we want to use it. vfork is reportedly unreliable in
13271: perl on Solaris 2.x, and probably elsewhere.
13272case "$val" in
13273$define)
13274 echo " "
13275 case "$usevfork" in
13276 false) dflt='n';;
13277 *) dflt='y';;
13278 esac
13279 cat <<'EOM'
13280
13281Perl can only use a vfork() that doesn't suffer from strict
13282restrictions on calling functions or modifying global data in
13283the child. For example, glibc-2.1 contains such a vfork()
13284that is unsuitable. If your system provides a proper fork()
13285call, chances are that you do NOT want perl to use vfork().
13286
13287EOM
13288 rp="Do you still want to use vfork()?"
13289 . ./myread
13290 case "$ans" in
13291 y|Y) ;;
13292 *)
13293 echo "Ok, we won't use vfork()."
13294 val="$undef"
13295 ;;
13296 esac
13297 ;;
13298esac
13299set d_vfork
13300eval $setvar
13301case "$d_vfork" in
13302$define) usevfork='true';;
13303*) usevfork='false';;
13304esac
13305
13306: see if this is an sysdir system
13307set sys/dir.h i_sysdir
13308eval $inhdr
13309
13310: see if this is an sysndir system
13311set sys/ndir.h i_sysndir
13312eval $inhdr
13313
13314: see if closedir exists
13315set closedir d_closedir
13316eval $inlibc
13317
13318case "$d_closedir" in
13319"$define")
13320 echo " "
13321 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13322 cat > try.c <<EOM
b4eb6b3d
JH
13323#$i_dirent I_DIRENT /**/
13324#$i_sysdir I_SYS_DIR /**/
13325#$i_sysndir I_SYS_NDIR /**/
13326#$i_systypes I_SYS_TYPES /**/
13327
13328#if defined(I_SYS_TYPES)
13329#include <sys/types.h>
13330#endif
13331#if defined(I_DIRENT)
13332#include <dirent.h>
13333#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13334#include <sys/dir.h>
13335#endif
13336#else
13337#ifdef I_SYS_NDIR
13338#include <sys/ndir.h>
13339#else
13340#ifdef I_SYS_DIR
13341#ifdef hp9000s500
13342#include <ndir.h> /* may be wrong in the future */
13343#else
13344#include <sys/dir.h>
13345#endif
13346#endif
13347#endif
13348#endif
13349int main() { return closedir(opendir(".")); }
13350EOM
5440bc8e 13351 set try
b4eb6b3d 13352 if eval $compile_ok; then
5440bc8e 13353 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13354 echo "Yes, it does."
13355 val="$undef"
13356 else
13357 echo "No, it doesn't."
13358 val="$define"
13359 fi
13360 else
13361 echo "(I can't seem to compile the test program--assuming it doesn't)"
13362 val="$define"
13363 fi
13364 ;;
13365*)
13366 val="$undef";
13367 ;;
13368esac
13369set d_void_closedir
13370eval $setvar
5440bc8e 13371$rm -f try try.*
b4eb6b3d
JH
13372: see if there is a wait4
13373set wait4 d_wait4
13374eval $inlibc
13375
13376: see if waitpid exists
13377set waitpid d_waitpid
13378eval $inlibc
13379
13380: see if wcstombs exists
13381set wcstombs d_wcstombs
13382eval $inlibc
13383
13384: see if wctomb exists
13385set wctomb d_wctomb
13386eval $inlibc
13387
4e0554ec
JH
13388: see if writev exists
13389set writev d_writev
13390eval $inlibc
13391
b4eb6b3d
JH
13392: preserve RCS keywords in files with variable substitution, grrr
13393Date='$Date'
13394Id='$Id'
13395Log='$Log'
13396RCSfile='$RCSfile'
13397Revision='$Revision'
13398
b4eb6b3d
JH
13399: check for alignment requirements
13400echo " "
5440bc8e 13401case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13402*$define*)
13403 $cat <<EOM
13404You seem to be either cross-compiling or doing a multiarchitecture build,
13405skipping the memory alignment check.
13406
13407EOM
13408 case "$alignbytes" in
13409 '') alignbytes=8 ;;
13410 esac
13411 ;;
13412*)
13413 case "$alignbytes" in
13414 '') echo "Checking alignment constraints..." >&4
13415 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13416 $cat >try.c <<'EOCP'
13417typedef long double NV;
13418EOCP
13419 else
13420 $cat >try.c <<'EOCP'
13421typedef double NV;
13422EOCP
13423 fi
13424 $cat >>try.c <<'EOCP'
13425#include <stdio.h>
13426struct foobar {
13427 char foo;
13428 NV bar;
13429} try_algn;
13430int main()
13431{
13432 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13433 return(0);
13434}
13435EOCP
13436 set try
13437 if eval $compile_ok; then
5440bc8e 13438 dflt=`$run ./try`
b4eb6b3d
JH
13439 else
13440 dflt='8'
13441 echo "(I can't seem to compile the test program...)"
13442 fi
13443 ;;
13444 *) dflt="$alignbytes"
13445 ;;
13446 esac
13447 rp="Doubles must be aligned on a how-many-byte boundary?"
13448 . ./myread
13449 alignbytes="$ans"
13450 $rm -f try.c try
13451 ;;
13452esac
13453
13454
13455: set the base revision
13456baserev=5.0
13457
b4eb6b3d
JH
13458: how do we catenate cpp tokens here?
13459echo " "
13460echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13461$cat >cpp_stuff.c <<'EOCP'
13462#define RCAT(a,b)a/**/b
13463#define ACAT(a,b)a ## b
13464RCAT(Rei,ser)
13465ACAT(Cir,cus)
13466EOCP
13467$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13468if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13469 echo "Oh! Smells like ANSI's been here." >&4
13470 echo "We can catify or stringify, separately or together!"
13471 cpp_stuff=42
13472elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13473 echo "Ah, yes! The good old days!" >&4
13474 echo "However, in the good old days we don't know how to stringify and"
13475 echo "catify at the same time."
13476 cpp_stuff=1
13477else
13478 $cat >&4 <<EOM
13479Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13480to have to edit the values of CAT[2-5] in config.h...
13481EOM
13482 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13483fi
13484$rm -f cpp_stuff.*
13485
13486: see if this is a db.h system
13487set db.h i_db
13488eval $inhdr
13489
13490case "$i_db" in
13491$define)
13492 : Check db version.
13493 echo " "
13494 echo "Checking Berkeley DB version ..." >&4
13495 $cat >try.c <<EOCP
13496#$d_const HASCONST
13497#ifndef HASCONST
13498#define const
13499#endif
13500#include <sys/types.h>
13501#include <stdio.h>
13502#include <db.h>
640374d0 13503int main(int argc, char *argv[])
b4eb6b3d
JH
13504{
13505#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13506 int Major, Minor, Patch ;
13507 unsigned long Version ;
13508 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13509 if (argc == 2) {
13510 printf("%d %d %d %d %d %d\n",
13511 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13512 Major, Minor, Patch);
13513 exit(0);
13514 }
13515 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13516
13517 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13518 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13519 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13520 Major, Minor, Patch) ;
13521
13522 /* check that db.h & libdb are compatible */
13523 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13524 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13525 exit(3);
13526 }
13527
640374d0 13528 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13529
13530 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13531 + DB_VERSION_PATCH ;
13532
13533 /* needs to be >= 2.3.4 */
13534 if (Version < 2003004) {
13535 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13536 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13537 exit(2);
13538 }
13539
13540 exit(0);
13541#else
13542#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13543 if (argc == 2) {
13544 printf("1 0 0\n");
13545 exit(0);
13546 }
13547 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13548 exit(0); /* DB version < 2: the coast is clear. */
13549#else
13550 exit(1); /* <db.h> not Berkeley DB? */
13551#endif
13552#endif
13553}
13554EOCP
13555 set try
5440bc8e 13556 if eval $compile_ok && $run ./try; then
b4eb6b3d 13557 echo 'Looks OK.' >&4
5440bc8e 13558 set `$run ./try 1`
640374d0
JH
13559 db_version_major=$1
13560 db_version_minor=$2
13561 db_version_patch=$3
b4eb6b3d
JH
13562 else
13563 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13564 i_db=$undef
13565 case " $libs " in
13566 *"-ldb "*)
13567 : Remove db from list of libraries to use
13568 echo "Removing unusable -ldb from library list" >&4
13569 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13570 shift
13571 libs="$*"
13572 echo "libs = $libs" >&4
13573 ;;
13574 esac
13575 fi
13576 $rm -f try.*
13577 ;;
13578esac
13579
13580case "$i_db" in
13581define)
13582 : Check the return type needed for hash
13583 echo " "
13584 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13585 $cat >try.c <<EOCP
13586#$d_const HASCONST
13587#ifndef HASCONST
13588#define const
13589#endif
13590#include <sys/types.h>
13591#include <db.h>
13592
13593#ifndef DB_VERSION_MAJOR
13594u_int32_t hash_cb (ptr, size)
13595const void *ptr;
13596size_t size;
13597{
13598}
13599HASHINFO info;
13600int main()
13601{
13602 info.hash = hash_cb;
13603}
13604#endif
13605EOCP
13606 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13607 if $contains warning try.out >>/dev/null 2>&1 ; then
13608 db_hashtype='int'
13609 else
13610 db_hashtype='u_int32_t'
13611 fi
13612 else
13613 : XXX Maybe we should just give up here.
13614 db_hashtype=u_int32_t
13615 $cat try.out >&4
13616 echo "Help: I can't seem to compile the db test program." >&4
13617 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13618 fi
13619 $rm -f try.*
13620 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13621 ;;
13622*) db_hashtype=u_int32_t
13623 ;;
13624esac
13625case "$i_db" in
13626define)
13627 : Check the return type needed for prefix
13628 echo " "
13629 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13630 cat >try.c <<EOCP
13631#$d_const HASCONST
13632#ifndef HASCONST
13633#define const
13634#endif
13635#include <sys/types.h>
13636#include <db.h>
13637
13638#ifndef DB_VERSION_MAJOR
13639size_t prefix_cb (key1, key2)
13640const DBT *key1;
13641const DBT *key2;
13642{
13643}
13644BTREEINFO info;
13645int main()
13646{
13647 info.prefix = prefix_cb;
13648}
13649#endif
13650EOCP
13651 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13652 if $contains warning try.out >>/dev/null 2>&1 ; then
13653 db_prefixtype='int'
13654 else
13655 db_prefixtype='size_t'
13656 fi
13657 else
13658 db_prefixtype='size_t'
13659 : XXX Maybe we should just give up here.
13660 $cat try.out >&4
13661 echo "Help: I can't seem to compile the db test program." >&4
13662 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13663 fi
13664 $rm -f try.*
13665 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13666 ;;
13667*) db_prefixtype='size_t'
13668 ;;
13669esac
13670
b4eb6b3d
JH
13671
13672: How can we generate normalized random numbers ?
13673echo " "
13674echo "Looking for a random number function..." >&4
13675case "$randfunc" in
13676'')
13677 if set drand48 val -f; eval $csym; $val; then
13678 dflt="drand48"
13679 echo "Good, found drand48()." >&4
13680 elif set random val -f; eval $csym; $val; then
13681 dflt="random"
13682 echo "OK, found random()." >&4
13683 else
13684 dflt="rand"
13685 echo "Yick, looks like I have to use rand()." >&4
13686 fi
13687 echo " "
13688 ;;
13689*)
13690 dflt="$randfunc"
13691 ;;
13692esac
13693cont=true
13694
13695case "$ccflags" in
13696*-Dmy_rand=*|*-Dmy_srand=*)
13697 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13698 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13699 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13700 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13701 ;;
13702esac
13703
13704while $test "$cont"; do
13705 rp="Use which function to generate random numbers?"
13706 . ./myread
13707 if $test "$ans" = "$dflt"; then
13708 : null
13709 else
13710 randbits=''
13711 fi
13712 randfunc="$ans"
13713 if set $ans val -f; eval $csym; $val; then
13714 cont=''
13715 else
13716 dflt=y
13717 rp="I cannot find function $ans. Use that name anyway?"
13718 . ./myread
13719 dflt=rand
13720 case "$ans" in
13721 [yY]*) cont='';;
13722 esac
13723 fi
13724 case "$cont" in
13725 '')
13726 case "$randfunc" in
13727 drand48)
13728 drand01="drand48()"
13729 seedfunc="srand48"
13730 randbits=48
13731 randseedtype=long
13732 ;;
13733 rand|random)
13734 case "$randbits" in
13735 '')
13736echo "Checking to see how many bits your $randfunc() function produces..." >&4
13737 $cat >try.c <<EOCP
13738#$i_unistd I_UNISTD
13739#$i_stdlib I_STDLIB
13740#include <stdio.h>
13741#ifdef I_UNISTD
13742# include <unistd.h>
13743#endif
13744#ifdef I_STDLIB
13745# include <stdlib.h>
13746#endif
13747int main()
13748{
13749 register int i;
13750 register unsigned long tmp;
13751 register unsigned long max = 0L;
13752
13753 for (i = 1000; i; i--) {
13754 tmp = (unsigned long) $randfunc();
13755 if (tmp > max) max = tmp;
13756 }
13757 for (i = 0; max; i++)
13758 max /= 2;
13759 printf("%d\n",i);
13760}
13761EOCP
13762 set try
13763 if eval $compile_ok; then
13764 dflt=`try`
13765 else
13766 dflt='?'
13767 echo "(I can't seem to compile the test program...)"
13768 fi
13769 ;;
13770 *)
13771 dflt="$randbits"
13772 ;;
13773 esac
13774 rp="How many bits does your $randfunc() function produce?"
13775 . ./myread
13776 randbits="$ans"
13777 $rm -f try.c try
13778 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13779 seedfunc="s$randfunc"
13780 randseedtype=unsigned
13781 ;;
13782 *)
13783 dflt="31"
13784 rp="How many bits does your $randfunc() function produce?"
13785 . ./myread
13786 randbits="$ans"
13787 seedfunc="s$randfunc"
13788 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13789 if set $seedfunc val -f; eval $csym; $val; then
13790 echo "(Using $seedfunc() to seed random generator)"
13791 else
13792 echo "(Warning: no $seedfunc() to seed random generator)"
13793 seedfunc=rand
13794 fi
13795 randseedtype=unsigned
13796 ;;
13797 esac
13798 ;;
13799 esac
13800done
13801
13802echo " "
13803echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 13804$cat >try.c <<'EOM'
b4eb6b3d
JH
13805int main()
13806{
13807 if ('M'==0xd4) return 0;
13808 return 1;
13809}
13810EOM
13811
13812val=$undef
5440bc8e 13813set try
b4eb6b3d 13814if eval $compile_ok; then
5440bc8e 13815 if $run ./try; then
b4eb6b3d
JH
13816 echo "You seem to speak EBCDIC." >&4
13817 val="$define"
13818 else
5440bc8e 13819 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
13820 fi
13821else
13822 echo "I'm unable to compile the test program." >&4
13823 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13824fi
5440bc8e 13825$rm -f try try.*
b4eb6b3d
JH
13826set ebcdic
13827eval $setvar
13828
13829echo " "
13830$cat >&4 <<EOM
13831Checking how to flush all pending stdio output...
13832EOM
13833# I only know how to find the first 32 possibly open files on SunOS.
13834# See also hints/sunos_4_1.sh and util.c --AD
13835case "$osname" in
13836sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13837esac
13838$cat >>try.c <<EOCP
13839#include <stdio.h>
13840#$i_unistd I_UNISTD
13841#ifdef I_UNISTD
13842# include <unistd.h>
13843#endif
13844#$d_sysconf HAS_SYSCONF
13845#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13846#ifdef HAS_STDIO_STREAM_ARRAY
13847# define STDIO_STREAM_ARRAY $stdio_stream_array
13848#endif
13849int main() {
5440bc8e
JH
13850 FILE* p;
13851 unlink("try.out");
13852 p = fopen("try.out", "w");
b4eb6b3d
JH
13853#ifdef TRY_FPUTC
13854 fputc('x', p);
13855#else
13856# ifdef TRY_FPRINTF
13857 fprintf(p, "x");
13858# endif
13859#endif
13860#ifdef TRY_FFLUSH_NULL
13861 fflush(NULL);
13862#endif
13863#ifdef TRY_FFLUSH_ALL
13864 {
13865 long open_max = -1;
13866# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13867 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13868# else
13869# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13870 open_max = sysconf(_SC_OPEN_MAX);
13871# else
13872# ifdef FOPEN_MAX
13873 open_max = FOPEN_MAX;
13874# else
13875# ifdef OPEN_MAX
13876 open_max = OPEN_MAX;
13877# else
13878# ifdef _NFILE
13879 open_max = _NFILE;
13880# endif
13881# endif
13882# endif
13883# endif
13884# endif
13885# ifdef HAS_STDIO_STREAM_ARRAY
13886 if (open_max > 0) {
13887 long i;
13888 for (i = 0; i < open_max; i++)
13889 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13890 STDIO_STREAM_ARRAY[i]._file < open_max &&
13891 STDIO_STREAM_ARRAY[i]._flag)
13892 fflush(&STDIO_STREAM_ARRAY[i]);
13893 }
13894 }
13895# endif
13896#endif
13897 _exit(42);
13898}
13899EOCP
13900: first we have to find out how _not_ to flush
5440bc8e 13901$to try.c
b4eb6b3d
JH
13902if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13903 output=''
13904 set try -DTRY_FPUTC
13905 if eval $compile; then
fbe73d74 13906 $run ./try 2>/dev/null
28f5ac64 13907 code="$?"
5440bc8e 13908 $from try.out
28f5ac64 13909 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13910 output=-DTRY_FPUTC
13911 fi
13912 fi
13913 case "$output" in
13914 '')
13915 set try -DTRY_FPRINTF
b4eb6b3d 13916 if eval $compile; then
fbe73d74 13917 $run ./try 2>/dev/null
28f5ac64 13918 code="$?"
5440bc8e 13919 $from try.out
28f5ac64 13920 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13921 output=-DTRY_FPRINTF
13922 fi
13923 fi
13924 ;;
13925 esac
13926fi
13927: check for fflush NULL behaviour
13928case "$fflushNULL" in
13929'') set try -DTRY_FFLUSH_NULL $output
13930 if eval $compile; then
5440bc8e 13931 $run ./try 2>/dev/null
b4eb6b3d 13932 code="$?"
5440bc8e 13933 $from try.out
b4eb6b3d
JH
13934 if $test -s try.out -a "X$code" = X42; then
13935 fflushNULL="`$cat try.out`"
13936 else
13937 if $test "X$code" != X42; then
13938 $cat >&4 <<EOM
13939(If this test failed, don't worry, we'll try another method shortly.)
13940EOM
13941 fi
13942 fi
13943 fi
13944 $rm -f core try.core core.try.*
13945 case "$fflushNULL" in
13946 x) $cat >&4 <<EOM
13947Your fflush(NULL) works okay for output streams.
13948Let's see if it clobbers input pipes...
13949EOM
13950# As of mid-March 2000 all versions of Solaris appear to have a stdio
13951# bug that improperly flushes the input end of pipes. So we avoid the
13952# autoflush on fork/system/exec support for now. :-(
13953$cat >tryp.c <<EOCP
13954#include <stdio.h>
13955int
13956main(int argc, char **argv)
13957{
13958 char buf[1024];
13959 int i;
13960 char *bp = buf;
13961 while (1) {
13962 while ((i = getc(stdin)) != -1
13963 && (*bp++ = i) != '\n'
13964 && bp < &buf[1024])
13965 /* DO NOTHING */ ;
13966 *bp = '\0';
13967 fprintf(stdout, "%s", buf);
13968 fflush(NULL);
13969 if (i == -1)
13970 return 0;
13971 bp = buf;
13972 }
13973}
13974EOCP
13975 fflushNULL="$define"
13976 set tryp
13977 if eval $compile; then
13978 $rm -f tryp.out
5440bc8e 13979 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
13980 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13981 $cat >&4 <<EOM
13982fflush(NULL) seems to behave okay with input streams.
13983EOM
13984 fflushNULL="$define"
13985 else
13986 $cat >&4 <<EOM
13987Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13988EOM
13989 fflushNULL="$undef"
13990 fi
13991 fi
13992 $rm -f core tryp.c tryp.core core.tryp.*
13993 ;;
13994 '') $cat >&4 <<EOM
13995Your fflush(NULL) isn't working (contrary to ANSI C).
13996EOM
13997 fflushNULL="$undef"
13998 ;;
13999 *) $cat >&4 <<EOM
14000Cannot figure out whether your fflush(NULL) works or not.
14001I'm assuming it doesn't (contrary to ANSI C).
14002EOM
14003 fflushNULL="$undef"
14004 ;;
14005 esac
14006 ;;
14007$define|true|[yY]*)
14008 fflushNULL="$define"
14009 ;;
14010*)
14011 fflushNULL="$undef"
14012 ;;
14013esac
14014: check explicit looping only if NULL did not work, and if the pipe
14015: bug does not show up on an explicit flush too
14016case "$fflushNULL" in
14017"$undef")
14018 $cat >tryp.c <<EOCP
14019#include <stdio.h>
14020int
14021main(int argc, char **argv)
14022{
14023 char buf[1024];
14024 int i;
14025 char *bp = buf;
14026 while (1) {
14027 while ((i = getc(stdin)) != -1
14028 && (*bp++ = i) != '\n'
14029 && bp < &buf[1024])
14030 /* DO NOTHING */ ;
14031 *bp = '\0';
14032 fprintf(stdout, "%s", buf);
14033 fflush(stdin);
14034 if (i == -1)
14035 return 0;
14036 bp = buf;
14037 }
14038}
14039EOCP
14040 set tryp
14041 if eval $compile; then
14042 $rm -f tryp.out
5440bc8e 14043 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14044 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14045 $cat >&4 <<EOM
14046Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14047EOM
14048 : now check for fflushall behaviour
14049 case "$fflushall" in
14050 '') set try -DTRY_FFLUSH_ALL $output
14051 if eval $compile; then
14052 $cat >&4 <<EOM
14053(Now testing the other method--but note that this also may fail.)
14054EOM
5440bc8e 14055 $run ./try 2>/dev/null
28f5ac64 14056 code=$?
fbe73d74 14057 $from try.out
28f5ac64 14058 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14059 fflushall="`$cat try.out`"
14060 fi
14061 fi
14062 $rm -f core try.core core.try.*
14063 case "$fflushall" in
14064 x) $cat >&4 <<EOM
14065Whew. Flushing explicitly all the stdio streams works.
14066EOM
14067 fflushall="$define"
14068 ;;
14069 '') $cat >&4 <<EOM
14070Sigh. Flushing explicitly all the stdio streams doesn't work.
14071EOM
14072 fflushall="$undef"
14073 ;;
14074 *) $cat >&4 <<EOM
14075Cannot figure out whether flushing stdio streams explicitly works or not.
14076I'm assuming it doesn't.
14077EOM
14078 fflushall="$undef"
14079 ;;
14080 esac
14081 ;;
14082 "$define"|true|[yY]*)
14083 fflushall="$define"
14084 ;;
14085 *)
14086 fflushall="$undef"
14087 ;;
14088 esac
14089 else
14090 $cat >&4 <<EOM
14091All is futile. Even fflush(stdin) clobbers input pipes!
14092EOM
14093 fflushall="$undef"
14094 fi
14095 else
14096 fflushall="$undef"
14097 fi
14098 $rm -f core tryp.c tryp.core core.tryp.*
14099 ;;
14100*) fflushall="$undef"
14101 ;;
14102esac
14103
14104case "$fflushNULL$fflushall" in
14105undefundef)
14106 $cat <<EOM
14107OK, I give up. I cannot figure out how to flush pending stdio output.
14108We won't be flushing handles at all before fork/exec/popen.
14109EOM
14110 ;;
14111esac
14112$rm -f try.* try$exe_ext
14113
14114: Store the full pathname to the ar program for use in the C program
14115: Respect a hint or command line value for full_ar.
14116case "$full_ar" in
14117'') full_ar=$ar ;;
14118esac
14119
14120: Store the full pathname to the sed program for use in the C program
14121full_sed=$sed
14122
14123: see what type gids are declared as in the kernel
14124echo " "
14125echo "Looking for the type for group ids returned by getgid()."
14126set gid_t gidtype xxx stdio.h sys/types.h
14127eval $typedef
14128case "$gidtype" in
14129xxx)
14130 xxx=`./findhdr sys/user.h`
14131 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14132 case $1 in
14133 unsigned) dflt="$1 $2" ;;
14134 *) dflt="$1" ;;
14135 esac
14136 ;;
14137*) dflt="$gidtype";;
14138esac
14139case "$gidtype" in
14140gid_t) echo "gid_t found." ;;
14141*) rp="What is the type for group ids returned by getgid()?"
14142 . ./myread
14143 gidtype="$ans"
14144 ;;
14145esac
14146
14147echo " "
14148case "$gidtype" in
14149*_t) zzz="$gidtype" ;;
14150*) zzz="gid" ;;
14151esac
14152echo "Checking the size of $zzz..." >&4
14153cat > try.c <<EOCP
14154#include <sys/types.h>
14155#include <stdio.h>
14156int main() {
14157 printf("%d\n", (int)sizeof($gidtype));
14158 exit(0);
14159}
14160EOCP
14161set try
14162if eval $compile_ok; then
5440bc8e 14163 yyy=`$run ./try`
b4eb6b3d
JH
14164 case "$yyy" in
14165 '') gidsize=4
14166 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14167 ;;
14168 *) gidsize=$yyy
14169 echo "Your $zzz is $gidsize bytes long."
14170 ;;
14171 esac
14172else
14173 gidsize=4
14174 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14175fi
14176
14177
14178echo " "
14179case "$gidtype" in
14180*_t) zzz="$gidtype" ;;
14181*) zzz="gid" ;;
14182esac
14183echo "Checking the sign of $zzz..." >&4
14184cat > try.c <<EOCP
14185#include <sys/types.h>
14186#include <stdio.h>
14187int main() {
14188 $gidtype foo = -1;
14189 if (foo < 0)
14190 printf("-1\n");
14191 else
14192 printf("1\n");
14193}
14194EOCP
14195set try
14196if eval $compile; then
5440bc8e 14197 yyy=`$run ./try`
b4eb6b3d
JH
14198 case "$yyy" in
14199 '') gidsign=1
14200 echo "(I can't execute the test program--guessing unsigned.)" >&4
14201 ;;
14202 *) gidsign=$yyy
14203 case "$gidsign" in
14204 1) echo "Your $zzz is unsigned." ;;
14205 -1) echo "Your $zzz is signed." ;;
14206 esac
14207 ;;
14208 esac
14209else
14210 gidsign=1
14211 echo "(I can't compile the test program--guessing unsigned.)" >&4
14212fi
14213
14214
14215echo " "
14216
14217if $test X"$quadtype" != X; then
14218
14219echo "Checking how to print 64-bit integers..." >&4
14220
14221if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14222 $cat >try.c <<'EOCP'
14223#include <sys/types.h>
14224#include <stdio.h>
14225int main() {
14226 int q = 12345678901;
14227 printf("%ld\n", q);
14228}
14229EOCP
14230 set try
14231 if eval $compile; then
5440bc8e 14232 yyy=`$run ./try`
b4eb6b3d
JH
14233 case "$yyy" in
14234 12345678901)
14235 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14236 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14237 echo "We will use %d."
14238 ;;
14239 esac
14240 fi
14241fi
14242
14243if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14244 $cat >try.c <<'EOCP'
14245#include <sys/types.h>
14246#include <stdio.h>
14247int main() {
14248 long q = 12345678901;
14249 printf("%ld\n", q);
14250}
14251EOCP
14252 set try
14253 if eval $compile; then
5440bc8e 14254 yyy=`$run ./try`
b4eb6b3d
JH
14255 case "$yyy" in
14256 12345678901)
14257 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14258 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14259 echo "We will use %ld."
14260 ;;
14261 esac
14262 fi
14263fi
14264
14265if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14266 $cat >try.c <<'EOCP'
14267#include <sys/types.h>
14268#include <inttypes.h>
14269#include <stdio.h>
14270int main() {
14271 int64_t q = 12345678901;
14272 printf("%" PRId64 "\n", q);
14273}
14274EOCP
14275 set try
14276 if eval $compile; then
5440bc8e 14277 yyy=`$run ./try`
b4eb6b3d
JH
14278 case "$yyy" in
14279 12345678901)
14280 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14281 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14282 echo "We will use the C9X style."
14283 ;;
14284 esac
14285 fi
14286fi
14287
2ef53570
JH
14288if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14289 $cat >try.c <<EOCP
b4eb6b3d
JH
14290#include <sys/types.h>
14291#include <stdio.h>
14292int main() {
2ef53570
JH
14293 $quadtype q = 12345678901;
14294 printf("%Ld\n", q);
b4eb6b3d
JH
14295}
14296EOCP
14297 set try
14298 if eval $compile; then
5440bc8e 14299 yyy=`$run ./try`
b4eb6b3d
JH
14300 case "$yyy" in
14301 12345678901)
2ef53570
JH
14302 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14303 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14304 echo "We will use %Ld."
b4eb6b3d
JH
14305 ;;
14306 esac
14307 fi
14308fi
14309
2ef53570
JH
14310if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14311 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14312#include <sys/types.h>
14313#include <stdio.h>
14314int main() {
2ef53570
JH
14315 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14316 printf("%lld\n", q);
b4eb6b3d
JH
14317}
14318EOCP
14319 set try
14320 if eval $compile; then
5440bc8e 14321 yyy=`$run ./try`
b4eb6b3d
JH
14322 case "$yyy" in
14323 12345678901)
2ef53570
JH
14324 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14325 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14326 echo "We will use the %lld style."
b4eb6b3d
JH
14327 ;;
14328 esac
14329 fi
14330fi
14331
14332if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14333 $cat >try.c <<EOCP
14334#include <sys/types.h>
14335#include <stdio.h>
14336int main() {
14337 $quadtype q = 12345678901;
14338 printf("%qd\n", q);
14339}
14340EOCP
14341 set try
14342 if eval $compile; then
5440bc8e 14343 yyy=`$run ./try`
b4eb6b3d
JH
14344 case "$yyy" in
14345 12345678901)
14346 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14347 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14348 echo "We will use %qd."
14349 ;;
14350 esac
14351 fi
14352fi
14353
14354if $test X"$sPRId64" = X; then
14355 echo "Cannot figure out how to print 64-bit integers." >&4
14356fi
14357
14358$rm -f try try.*
14359
14360fi
14361
14362case "$sPRId64" in
14363'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14364 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14365 ;;
14366*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14367 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14368 ;;
14369esac
14370
14371
14372echo " "
14373$echo "Checking the format strings to be used for Perl's internal types..." >&4
14374
14375if $test X"$ivsize" = X8; then
14376 ivdformat="$sPRId64"
14377 uvuformat="$sPRIu64"
14378 uvoformat="$sPRIo64"
14379 uvxformat="$sPRIx64"
14380 uvXUformat="$sPRIXU64"
14381else
14382 if $test X"$ivsize" = X"$longsize"; then
14383 ivdformat='"ld"'
14384 uvuformat='"lu"'
14385 uvoformat='"lo"'
14386 uvxformat='"lx"'
14387 uvXUformat='"lX"'
14388 else
14389 if $test X"$ivsize" = X"$intsize"; then
14390 ivdformat='"d"'
14391 uvuformat='"u"'
14392 uvoformat='"o"'
14393 uvxformat='"x"'
14394 uvXUformat='"X"'
14395 else
14396 : far out
14397 if $test X"$ivsize" = X"$shortsize"; then
14398 ivdformat='"hd"'
14399 uvuformat='"hu"'
14400 uvoformat='"ho"'
14401 uvxformat='"hx"'
14402 uvXUformat='"hX"'
14403 fi
14404 fi
14405 fi
14406fi
14407
14408if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14409 nveformat="$sPRIeldbl"
14410 nvfformat="$sPRIfldbl"
14411 nvgformat="$sPRIgldbl"
14412 nvEUformat="$sPRIEUldbl"
14413 nvFUformat="$sPRIFUldbl"
14414 nvGUformat="$sPRIGUldbl"
14415else
14416 nveformat='"e"'
14417 nvfformat='"f"'
14418 nvgformat='"g"'
14419 nvEUformat='"E"'
14420 nvFUformat='"F"'
14421 nvGUformat='"G"'
14422fi
14423
14424case "$ivdformat" in
14425'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14426 exit 1
14427 ;;
14428esac
14429
14430
14431echo " "
14432$echo "Checking the format string to be used for gids..." >&4
14433
14434case "$gidsign" in
14435-1) if $test X"$gidsize" = X"$ivsize"; then
14436 gidformat="$ivdformat"
14437 else
14438 if $test X"$gidsize" = X"$longsize"; then
14439 gidformat='"ld"'
14440 else
14441 if $test X"$gidsize" = X"$intsize"; then
14442 gidformat='"d"'
14443 else
14444 if $test X"$gidsize" = X"$shortsize"; then
14445 gidformat='"hd"'
14446 fi
14447 fi
14448 fi
14449 fi
14450 ;;
14451*) if $test X"$gidsize" = X"$uvsize"; then
14452 gidformat="$uvuformat"
14453 else
14454 if $test X"$gidsize" = X"$longsize"; then
14455 gidformat='"lu"'
14456 else
14457 if $test X"$gidsize" = X"$intsize"; then
14458 gidformat='"u"'
14459 else
14460 if $test X"$gidsize" = X"$shortsize"; then
14461 gidformat='"hu"'
14462 fi
14463 fi
14464 fi
14465 fi
14466 ;;
14467esac
14468
14469: see if getgroups exists
14470set getgroups d_getgrps
14471eval $inlibc
14472
14473: see if setgroups exists
14474set setgroups d_setgrps
14475eval $inlibc
14476
14477
14478: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14479echo " "
14480case "$d_getgrps$d_setgrps" in
14481*define*)
14482 case "$groupstype" in
14483 '') dflt="$gidtype" ;;
14484 *) dflt="$groupstype" ;;
14485 esac
14486 $cat <<EOM
14487What type of pointer is the second argument to getgroups() and setgroups()?
14488Usually this is the same as group ids, $gidtype, but not always.
14489
14490EOM
14491 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14492 . ./myread
14493 groupstype="$ans"
14494 ;;
14495*) groupstype="$gidtype";;
14496esac
14497
14498echo " "
14499echo "Checking if your $make program sets \$(MAKE)..." >&4
14500case "$make_set_make" in
14501'')
14502 $sed 's/^X //' > testmake.mak << 'EOF'
14503Xall:
14504X @echo 'maketemp="$(MAKE)"'
14505EOF
14506 case "`$make -f testmake.mak 2>/dev/null`" in
14507 *maketemp=*) make_set_make='#' ;;
14508 *) make_set_make="MAKE=$make" ;;
14509 esac
14510 $rm -f testmake.mak
14511 ;;
14512esac
14513case "$make_set_make" in
14514'#') echo "Yup, it does.";;
14515*) echo "Nope, it doesn't.";;
14516esac
14517
14518: see what type is used for mode_t
14519rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14520set mode_t modetype int stdio.h sys/types.h
14521eval $typedef_ask
14522
2cc61e15
DD
14523: see if stdarg is available
14524echo " "
14525if $test `./findhdr stdarg.h`; then
14526 echo "<stdarg.h> found." >&4
14527 valstd="$define"
14528else
14529 echo "<stdarg.h> NOT found." >&4
14530 valstd="$undef"
14531fi
14532
14533: see if varags is available
14534echo " "
14535if $test `./findhdr varargs.h`; then
14536 echo "<varargs.h> found." >&4
14537else
14538 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14539fi
14540
14541: set up the varargs testing programs
14542$cat > varargs.c <<EOP
14543#ifdef I_STDARG
14544#include <stdarg.h>
14545#endif
14546#ifdef I_VARARGS
14547#include <varargs.h>
14548#endif
14549
14550#ifdef I_STDARG
14551int f(char *p, ...)
14552#else
14553int f(va_alist)
14554va_dcl
14555#endif
14556{
14557 va_list ap;
14558#ifndef I_STDARG
14559 char *p;
14560#endif
14561#ifdef I_STDARG
14562 va_start(ap,p);
14563#else
14564 va_start(ap);
14565 p = va_arg(ap, char *);
14566#endif
14567 va_end(ap);
14568}
14569EOP
14570$cat > varargs <<EOP
14571$startsh
14572if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14573 echo "true"
14574else
14575 echo "false"
14576fi
14577$rm -f varargs$_o
14578EOP
14579chmod +x varargs
14580
14581: now check which varargs header should be included
14582echo " "
14583i_varhdr=''
14584case "$valstd" in
14585"$define")
14586 if `./varargs I_STDARG`; then
14587 val='stdarg.h'
14588 elif `./varargs I_VARARGS`; then
14589 val='varargs.h'
14590 fi
14591 ;;
14592*)
14593 if `./varargs I_VARARGS`; then
14594 val='varargs.h'
14595 fi
14596 ;;
14597esac
14598case "$val" in
14599'')
14600echo "I could not find the definition for va_dcl... You have problems..." >&4
14601 val="$undef"; set i_stdarg; eval $setvar
14602 val="$undef"; set i_varargs; eval $setvar
14603 ;;
14604*)
14605 set i_varhdr
14606 eval $setvar
14607 case "$i_varhdr" in
14608 stdarg.h)
14609 val="$define"; set i_stdarg; eval $setvar
14610 val="$undef"; set i_varargs; eval $setvar
14611 ;;
14612 varargs.h)
14613 val="$undef"; set i_stdarg; eval $setvar
14614 val="$define"; set i_varargs; eval $setvar
14615 ;;
14616 esac
14617 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14618esac
14619$rm -f varargs*
14620
14621: see if we need va_copy
14622echo " "
14623case "$i_stdarg" in
14624"$define")
14625 $cat >try.c <<EOCP
14626#include <stdarg.h>
14627#include <stdio.h>
85c8a686
DD
14628#$i_stdlib I_STDLIB
14629#ifdef I_STDLIB
14630#include <stdlib.h>
14631#endif
14632#include <signal.h>
2cc61e15
DD
14633
14634int
14635ivfprintf(FILE *f, const char *fmt, va_list *valp)
14636{
14637 return vfprintf(f, fmt, *valp);
14638}
14639
14640int
14641myvfprintf(FILE *f, const char *fmt, va_list val)
14642{
14643 return ivfprintf(f, fmt, &val);
14644}
14645
14646int
14647myprintf(char *fmt, ...)
14648{
14649 va_list val;
14650 va_start(val, fmt);
14651 return myvfprintf(stdout, fmt, val);
14652}
14653
14654int
14655main(int ac, char **av)
14656{
85c8a686
DD
14657 signal(SIGSEGV, exit);
14658
2cc61e15
DD
14659 myprintf("%s%cs all right, then\n", "that", '\'');
14660 exit(0);
14661}
14662EOCP
14663 set try
5440bc8e
JH
14664 if eval $compile && $run ./try 2>&1 >/dev/null; then
14665 case "`$run ./try`" in
2cc61e15
DD
14666 "that's all right, then")
14667 okay=yes
14668 ;;
14669 esac
14670 fi
14671 case "$okay" in
14672 yes) echo "It seems that you don't need va_copy()." >&4
14673 need_va_copy="$undef"
14674 ;;
14675 *) echo "It seems that va_copy() or similar will be needed." >&4
14676 need_va_copy="$define"
14677 ;;
14678 esac
14679 $rm -f try.* core core.* *.core *.core.*
14680 ;;
14681*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14682 ;;
14683esac
14684
b4eb6b3d
JH
14685: define a fucntion to check prototypes
14686$cat > protochk <<EOSH
14687$startsh
14688cc="$cc"
14689optimize="$optimize"
14690ccflags="$ccflags"
14691prototype="$prototype"
14692define="$define"
14693rm=$rm
14694EOSH
14695
14696$cat >> protochk <<'EOSH'
14697
14698$rm -f try.c
14699foo="$1"
14700shift
14701while test $# -ge 2; do
14702 case "$1" in
14703 $define) echo "#include <$2>" >> try.c ;;
14704 literal) echo "$2" >> try.c ;;
14705 esac
14706 shift 2
14707done
14708test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14709cat >> try.c <<'EOCP'
14710#ifdef CAN_PROTOTYPE
14711#define _(args) args
14712#else
14713#define _(args) ()
14714#endif
14715EOCP
14716echo "$foo" >> try.c
14717echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14718$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14719status=$?
14720$rm -f try.[co]
14721exit $status
14722EOSH
14723chmod +x protochk
14724$eunicefix protochk
14725
14726: see what type is used for size_t
14727rp="What is the type used for the length parameter for string functions?"
14728set size_t sizetype 'unsigned int' stdio.h sys/types.h
14729eval $typedef_ask
14730
14731: check for type of arguments to gethostbyaddr.
14732if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14733 case "$d_gethbyaddr" in
14734 $define)
14735 $cat <<EOM
14736
14737Checking to see what type of arguments are accepted by gethostbyaddr().
14738EOM
14739 hdrs="$define sys/types.h
14740 $d_socket sys/socket.h
14741 $i_niin netinet/in.h
14742 $i_netdb netdb.h
14743 $i_unistd unistd.h"
14744 : The first arg can 'char *' or 'void *'
14745 : The second arg is some of integral type
14746 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14747 for yyy in size_t long int; do
14748 case "$netdb_host_type" in
14749 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14750 if ./protochk "$try" $hdrs; then
14751 echo "Your system accepts $xxx for the first arg."
14752 echo "...and $yyy for the second arg."
14753 netdb_host_type="$xxx"
14754 netdb_hlen_type="$yyy"
14755 fi
14756 ;;
14757 esac
14758 done
14759 done
14760 : In case none of those worked, prompt the user.
14761 case "$netdb_host_type" in
14762 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14763 dflt='char *'
14764 . ./myread
14765 netdb_host_type=$ans
14766 rp='What is the type for the 2nd argument to gethostbyaddr?'
14767 dflt="$sizetype"
14768 . ./myread
14769 netdb_hlen_type=$ans
14770 ;;
14771 esac
14772 ;;
14773 *) : no gethostbyaddr, so pick harmless defaults
14774 netdb_host_type='char *'
14775 netdb_hlen_type="$sizetype"
14776 ;;
14777 esac
14778 # Remove the "const" if needed. -- but then we'll have a
14779 # prototype clash!
14780 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14781fi
14782
14783: check for type of argument to gethostbyname.
14784if test "X$netdb_name_type" = X ; then
14785 case "$d_gethbyname" in
14786 $define)
14787 $cat <<EOM
14788
14789Checking to see what type of argument is accepted by gethostbyname().
14790EOM
14791 hdrs="$define sys/types.h
14792 $d_socket sys/socket.h
14793 $i_niin netinet/in.h
14794 $i_netdb netdb.h
14795 $i_unistd unistd.h"
14796 for xxx in "const char *" "char *"; do
14797 case "$netdb_name_type" in
14798 '') try="extern struct hostent *gethostbyname($xxx);"
14799 if ./protochk "$try" $hdrs; then
14800 echo "Your system accepts $xxx."
14801 netdb_name_type="$xxx"
14802 fi
14803 ;;
14804 esac
14805 done
14806 : In case none of those worked, prompt the user.
14807 case "$netdb_name_type" in
14808 '') rp='What is the type for the 1st argument to gethostbyname?'
14809 dflt='char *'
14810 . ./myread
14811 netdb_name_type=$ans
14812 ;;
14813 esac
14814 ;;
14815 *) : no gethostbyname, so pick harmless default
14816 netdb_name_type='char *'
14817 ;;
14818 esac
14819fi
14820
14821: check for type of 1st argument to getnetbyaddr.
14822if test "X$netdb_net_type" = X ; then
14823 case "$d_getnbyaddr" in
14824 $define)
14825 $cat <<EOM
14826
14827Checking to see what type of 1st argument is accepted by getnetbyaddr().
14828EOM
14829 hdrs="$define sys/types.h
14830 $d_socket sys/socket.h
14831 $i_niin netinet/in.h
14832 $i_netdb netdb.h
14833 $i_unistd unistd.h"
14834 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14835 case "$netdb_net_type" in
14836 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14837 if ./protochk "$try" $hdrs; then
14838 echo "Your system accepts $xxx."
14839 netdb_net_type="$xxx"
14840 fi
14841 ;;
14842 esac
14843 done
14844 : In case none of those worked, prompt the user.
14845 case "$netdb_net_type" in
14846 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14847 dflt='long'
14848 . ./myread
14849 netdb_net_type=$ans
14850 ;;
14851 esac
14852 ;;
14853 *) : no getnetbyaddr, so pick harmless default
14854 netdb_net_type='long'
14855 ;;
14856 esac
14857fi
14858: locate the preferred pager for this system
14859case "$pager" in
14860'')
14861 dflt=''
14862 case "$pg" in
14863 /*) dflt=$pg;;
14864 [a-zA-Z]:/*) dflt=$pg;;
14865 esac
14866 case "$more" in
14867 /*) dflt=$more;;
14868 [a-zA-Z]:/*) dflt=$more;;
14869 esac
14870 case "$less" in
14871 /*) dflt=$less;;
14872 [a-zA-Z]:/*) dflt=$less;;
14873 esac
14874 case "$dflt" in
14875 '') dflt=/usr/ucb/more;;
14876 esac
14877 ;;
14878*) dflt="$pager";;
14879esac
14880echo " "
14881fn=f/
14882rp='What pager is used on your system?'
14883. ./getfile
14884pager="$ans"
14885
14886: see what type pids are declared as in the kernel
14887rp="What is the type of process ids on this system?"
14888set pid_t pidtype int stdio.h sys/types.h
14889eval $typedef_ask
14890
14891: Find earliest binary compatible site_perl subdirectory perl can use.
14892case "$bincompat5005" in
14893"$define") xs_apiversion='5.005' ;;
14894*) xs_apiversion=$version ;; # The current site_perl version.
14895esac
14896: Find earliest pure perl site_perl subdirectory perl can use.
14897: The versioned directories started at 5.005.
14898pm_apiversion='5.005'
14899
b4eb6b3d
JH
14900: see if ar generates random libraries by itself
14901echo " "
14902echo "Checking how to generate random libraries on your machine..." >&4
14903echo 'int bar1() { return bar2(); }' > bar1.c
14904echo 'int bar2() { return 2; }' > bar2.c
14905$cat > foo.c <<'EOP'
14906int main() { printf("%d\n", bar1()); exit(0); }
14907EOP
14908$cc $ccflags -c bar1.c >/dev/null 2>&1
14909$cc $ccflags -c bar2.c >/dev/null 2>&1
14910$cc $ccflags -c foo.c >/dev/null 2>&1
14911$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 14912if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14913 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14914 echo "$ar appears to generate random libraries itself."
14915 orderlib=false
14916 ranlib=":"
14917elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 14918 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14919 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14920 echo "a table of contents needs to be added with '$ar ts'."
14921 orderlib=false
14922 ranlib="$ar ts"
14923else
14924 case "$ranlib" in
14925 :) ranlib='';;
14926 '')
14927 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14928 $test -f $ranlib || ranlib=''
14929 ;;
14930 esac
14931 if $test -n "$ranlib"; then
14932 echo "your system has '$ranlib'; we'll use that."
14933 orderlib=false
14934 else
14935 echo "your system doesn't seem to support random libraries"
14936 echo "so we'll use lorder and tsort to order the libraries."
14937 orderlib=true
14938 ranlib=":"
14939 fi
14940fi
14941$rm -f foo* bar*
14942
14943: check for type of arguments to select.
14944case "$selecttype" in
14945'') case "$d_select" in
14946 $define)
14947 echo " "
14948 $cat <<EOM
14949Checking to see what type of arguments are accepted by select().
14950EOM
14951 hdrs="$define sys/types.h
14952 $i_systime sys/time.h
14953 $i_sysselct sys/select.h
14954 $d_socket sys/socket.h"
14955 : The first arg can be int, unsigned, or size_t
14956 : The last arg may or may not be 'const'
14957 val=''
14958 : void pointer has been seen but using that
14959 : breaks the selectminbits test
14960 for xxx in 'fd_set *' 'int *'; do
14961 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14962 for tmo in 'struct timeval *' 'const struct timeval *'; do
14963 case "$val" in
14964 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14965 if ./protochk "$try" $hdrs; then
14966 echo "Your system accepts $xxx."
14967 val="$xxx"
14968 fi
14969 ;;
14970 esac
14971 done
14972 done
14973 done
14974 case "$val" in
14975 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14976 case "$d_fd_set" in
14977 $define) dflt="fd_set *" ;;
14978 *) dflt="int *" ;;
14979 esac
14980 . ./myread
14981 val=$ans
14982 ;;
14983 esac
14984 selecttype="$val"
14985 ;;
14986 *) : no select, so pick a harmless default
14987 selecttype='int *'
14988 ;;
14989 esac
14990 ;;
14991esac
14992
14993: check for the select 'width'
14994case "$selectminbits" in
14995'') case "$d_select" in
14996 $define)
14997 $cat <<EOM
14998
14999Checking to see on how many bits at a time your select() operates...
15000EOM
15001 $cat >try.c <<EOCP
15002#include <sys/types.h>
15003#$i_time I_TIME
15004#$i_systime I_SYS_TIME
15005#$i_systimek I_SYS_TIME_KERNEL
15006#ifdef I_TIME
15007# include <time.h>
15008#endif
15009#ifdef I_SYS_TIME
15010# ifdef I_SYS_TIME_KERNEL
15011# define KERNEL
15012# endif
15013# include <sys/time.h>
15014# ifdef I_SYS_TIME_KERNEL
15015# undef KERNEL
15016# endif
15017#endif
15018#$i_sysselct I_SYS_SELECT
15019#ifdef I_SYS_SELECT
15020#include <sys/select.h>
15021#endif
15022#$d_socket HAS_SOCKET
15023#ifdef HAS_SOCKET
15024# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15025#endif
15026#include <stdio.h>
15027$selecttype b;
15028#define S sizeof(*(b))
15029#define MINBITS 64
15030#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15031#define NBITS (NBYTES * 8)
15032int main() {
15033 char s[NBYTES];
15034 struct timeval t;
15035 int i;
15036 FILE* fp;
15037 int fd;
15038
15039 fclose(stdin);
15040 fp = fopen("try.c", "r");
15041 if (fp == 0)
15042 exit(1);
15043 fd = fileno(fp);
15044 if (fd < 0)
15045 exit(2);
15046 b = ($selecttype)s;
15047 for (i = 0; i < NBITS; i++)
15048 FD_SET(i, b);
15049 t.tv_sec = 0;
15050 t.tv_usec = 0;
15051 select(fd + 1, b, 0, 0, &t);
15052 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15053 printf("%d\n", i + 1);
15054 return 0;
15055}
15056EOCP
15057 set try
15058 if eval $compile_ok; then
5440bc8e 15059 selectminbits=`$run ./try`
b4eb6b3d
JH
15060 case "$selectminbits" in
15061 '') cat >&4 <<EOM
15062Cannot figure out on how many bits at a time your select() operates.
15063I'll play safe and guess it is 32 bits.
15064EOM
15065 selectminbits=32
15066 bits="32 bits"
15067 ;;
15068 1) bits="1 bit" ;;
15069 *) bits="$selectminbits bits" ;;
15070 esac
15071 echo "Your select() operates on $bits at a time." >&4
15072 else
15073 rp='What is the minimum number of bits your select() operates on?'
15074 case "$byteorder" in
15075 1234|12345678) dflt=32 ;;
15076 *) dflt=1 ;;
15077 esac
15078 . ./myread
15079 val=$ans
15080 selectminbits="$val"
15081 fi
15082 $rm -f try.* try
15083 ;;
15084 *) : no select, so pick a harmless default
15085 selectminbits='32'
15086 ;;
15087 esac
15088 ;;
15089esac
15090
15091: Trace out the files included by signal.h, then look for SIGxxx names.
15092: Remove SIGARRAYSIZE used by HPUX.
15093: Remove SIGSTKSIZE used by Linux.
15094: Remove SIGSTKSZ used by Posix.
15095: Remove SIGTYP void lines used by OS2.
15096: Some cpps, like os390, dont give the file name anywhere
15097if [ "X$fieldn" = X ]; then
15098 : Just make some guesses. We check them later.
15099 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15100else
15101 xxx=`echo '#include <signal.h>' |
15102 $cppstdin $cppminus $cppflags 2>/dev/null |
15103 $grep '^[ ]*#.*include' |
a938a3bb 15104 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15105fi
15106: Check this list of files to be sure we have parsed the cpp output ok.
15107: This will also avoid potentially non-existent files, such
15108: as ../foo/bar.h
15109xxxfiles=''
15110for xx in $xxx /dev/null ; do
15111 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15112done
15113: If we have found no files, at least try signal.h
15114case "$xxxfiles" in
15115'') xxxfiles=`./findhdr signal.h` ;;
15116esac
15117xxx=`awk '
15118$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15119 print substr($2, 4, 20)
15120}
15121$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15122 print substr($3, 4, 20)
15123}' $xxxfiles`
15124: Append some common names just in case the awk scan failed.
15125xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15126xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15127xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15128xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15129xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15130
15131: generate a few handy files for later
15132$cat > signal.c <<'EOCP'
15133#include <sys/types.h>
15134#include <signal.h>
15135#include <stdio.h>
15136int main() {
15137
15138/* Strange style to avoid deeply-nested #if/#else/#endif */
15139#ifndef NSIG
15140# ifdef _NSIG
15141# define NSIG (_NSIG)
15142# endif
15143#endif
15144
15145#ifndef NSIG
15146# ifdef SIGMAX
15147# define NSIG (SIGMAX+1)
15148# endif
15149#endif
15150
15151#ifndef NSIG
15152# ifdef SIG_MAX
15153# define NSIG (SIG_MAX+1)
15154# endif
15155#endif
15156
15157#ifndef NSIG
15158# ifdef MAXSIG
15159# define NSIG (MAXSIG+1)
15160# endif
15161#endif
15162
15163#ifndef NSIG
15164# ifdef MAX_SIG
15165# define NSIG (MAX_SIG+1)
15166# endif
15167#endif
15168
15169#ifndef NSIG
15170# ifdef SIGARRAYSIZE
15171# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15172# endif
15173#endif
15174
15175#ifndef NSIG
15176# ifdef _sys_nsig
15177# define NSIG (_sys_nsig) /* Solaris 2.5 */
15178# endif
15179#endif
15180
15181/* Default to some arbitrary number that's big enough to get most
15182 of the common signals.
15183*/
15184#ifndef NSIG
15185# define NSIG 50
15186#endif
15187
15188printf("NSIG %d\n", NSIG);
15189
15190#ifndef JUST_NSIG
15191
15192EOCP
15193
15194echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15195{
15196 printf "#ifdef SIG"; printf $1; printf "\n"
15197 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15198 printf $1; printf ");\n"
15199 printf "#endif\n"
15200}
15201END {
15202 printf "#endif /* JUST_NSIG */\n";
15203 printf "exit(0);\n}\n";
15204}
15205' >>signal.c
15206$cat >signal.awk <<'EOP'
15207BEGIN { ndups = 0 }
15208$1 ~ /^NSIG$/ { nsig = $2 }
15209($1 !~ /^NSIG$/) && (NF == 2) {
15210 if ($2 > maxsig) { maxsig = $2 }
15211 if (sig_name[$2]) {
15212 dup_name[ndups] = $1
15213 dup_num[ndups] = $2
15214 ndups++
15215 }
15216 else {
15217 sig_name[$2] = $1
15218 sig_num[$2] = $2
15219 }
15220}
15221END {
15222 if (nsig == 0) {
15223 nsig = maxsig + 1
15224 }
15225 printf("NSIG %d\n", nsig);
15226 for (n = 1; n < nsig; n++) {
15227 if (sig_name[n]) {
15228 printf("%s %d\n", sig_name[n], sig_num[n])
15229 }
15230 else {
15231 printf("NUM%d %d\n", n, n)
15232 }
15233 }
15234 for (n = 0; n < ndups; n++) {
15235 printf("%s %d\n", dup_name[n], dup_num[n])
15236 }
15237}
15238EOP
15239$cat >signal_cmd <<EOS
15240$startsh
15241if $test -s signal.lst; then
15242 echo "Using your existing signal.lst file"
15243 exit 0
15244fi
15245xxx="$xxx"
15246EOS
15247$cat >>signal_cmd <<'EOS'
15248
15249set signal
15250if eval $compile_ok; then
5440bc8e 15251 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15252else
15253 echo "(I can't seem be able to compile the whole test program)" >&4
15254 echo "(I'll try it in little pieces.)" >&4
15255 set signal -DJUST_NSIG
15256 if eval $compile_ok; then
5440bc8e 15257 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15258 $cat signal.nsg
15259 else
15260 echo "I can't seem to figure out how many signals you have." >&4
15261 echo "Guessing 50." >&4
15262 echo 'NSIG 50' > signal.nsg
15263 fi
15264 : Now look at all the signal names, one at a time.
15265 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15266 $cat > signal.c <<EOCP
15267#include <sys/types.h>
15268#include <signal.h>
15269#include <stdio.h>
15270int main() {
15271printf("$xx %d\n", SIG${xx});
15272return 0;
15273}
15274EOCP
15275 set signal
15276 if eval $compile; then
15277 echo "SIG${xx} found."
5440bc8e 15278 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15279 else
15280 echo "SIG${xx} NOT found."
15281 fi
15282 done
15283 if $test -s signal.ls1; then
15284 $cat signal.nsg signal.ls1 |
15285 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15286 fi
15287
15288fi
15289if $test -s signal.lst; then
15290 :
15291else
15292 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15293 echo 'kill -l' >signal
15294 set X `csh -f <signal`
15295 $rm -f signal
15296 shift
15297 case $# in
15298 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15299 esac
15300 echo $@ | $tr ' ' $trnl | \
15301 $awk '{ printf "%s %d\n", $1, ++s; }
15302 END { printf "NSIG %d\n", ++s }' >signal.lst
15303fi
15304$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15305EOS
15306chmod a+x signal_cmd
15307$eunicefix signal_cmd
15308
15309: generate list of signal names
15310echo " "
15311case "$sig_name_init" in
15312'') doinit=yes ;;
15313*) case "$sig_num_init" in
15314 ''|*,*) doinit=yes ;;
15315 esac ;;
15316esac
15317case "$doinit" in
15318yes)
15319 echo "Generating a list of signal names and numbers..." >&4
15320 . ./signal_cmd
15321 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15322 sig_name=`$awk 'BEGIN { printf "ZERO " }
15323 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15324 sig_num=`$awk 'BEGIN { printf "0 " }
15325 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15326 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15327 !/^NSIG/ { printf "\"%s\", ", $1 }
15328 END { printf "0\n" }' signal.lst`
15329 sig_num_init=`$awk 'BEGIN { printf "0, " }
15330 !/^NSIG/ { printf "%d, ", $2}
15331 END { printf "0\n"}' signal.lst`
15332 ;;
15333esac
15334echo "The following $sig_count signals are available:"
15335echo " "
15336echo $sig_name | $awk \
15337'BEGIN { linelen = 0 }
15338{
15339 for (i = 1; i <= NF; i++) {
15340 name = "SIG" $i " "
15341 linelen = linelen + length(name)
15342 if (linelen > 70) {
15343 printf "\n"
15344 linelen = length(name)
15345 }
15346 printf "%s", name
15347 }
15348 printf "\n"
15349}'
76d3c696 15350sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15351$rm -f signal signal.c signal.awk signal.lst signal_cmd
15352
15353echo " "
15354case "$sizetype" in
15355*_t) zzz="$sizetype" ;;
15356*) zzz="filesize" ;;
15357esac
15358echo "Checking the size of $zzz..." >&4
15359cat > try.c <<EOCP
15360#include <sys/types.h>
15361#include <stdio.h>
15362int main() {
15363 printf("%d\n", (int)sizeof($sizetype));
15364 exit(0);
15365}
15366EOCP
15367set try
15368if eval $compile_ok; then
5440bc8e 15369 yyy=`$run ./try`
b4eb6b3d
JH
15370 case "$yyy" in
15371 '') sizesize=4
15372 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15373 ;;
15374 *) sizesize=$yyy
15375 echo "Your $zzz size is $sizesize bytes."
15376 ;;
15377 esac
15378else
15379 sizesize=4
15380 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15381fi
15382
15383
15384: check for socklen_t
15385echo " "
15386echo "Checking to see if you have socklen_t..." >&4
15387$cat >try.c <<EOCP
15388#include <sys/types.h>
15389#$d_socket HAS_SOCKET
15390#ifdef HAS_SOCKET
15391#include <sys/socket.h>
15392#endif
15393int main() { socklen_t x = 16; }
15394EOCP
15395set try
15396if eval $compile; then
15397 val="$define"
15398 echo "You have socklen_t."
15399else
15400 val="$undef"
15401 echo "You do not have socklen_t."
15402 case "$sizetype" in
15403 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15404 esac
15405fi
15406$rm -f try try.*
15407set d_socklen_t
15408eval $setvar
15409
a7710f8d
JH
15410: see if this is a socks.h system
15411set socks.h i_socks
15412eval $inhdr
15413
b4eb6b3d
JH
15414: check for type of the size argument to socket calls
15415case "$d_socket" in
15416"$define")
15417 $cat <<EOM
15418
15419Checking to see what type is the last argument of accept().
15420EOM
b4eb6b3d
JH
15421 yyy=''
15422 case "$d_socklen_t" in
15423 "$define") yyy="$yyy socklen_t"
15424 esac
15425 yyy="$yyy $sizetype int long unsigned"
15426 for xxx in $yyy; do
15427 case "$socksizetype" in
15428 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15429 case "$usesocks" in
15430 "$define")
15431 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15432 echo "Your system accepts '$xxx *' for the last argument of accept()."
15433 socksizetype="$xxx"
15434 fi
15435 ;;
15436 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15437 echo "Your system accepts '$xxx *' for the last argument of accept()."
15438 socksizetype="$xxx"
15439 fi
15440 ;;
15441 esac
b4eb6b3d
JH
15442 ;;
15443 esac
15444 done
15445: In case none of those worked, prompt the user.
15446 case "$socksizetype" in
15447 '') rp='What is the type for socket address structure sizes?'
15448 dflt='int'
15449 . ./myread
15450 socksizetype=$ans
15451 ;;
15452 esac
15453 ;;
15454*) : no sockets, so pick relatively harmless default
15455 socksizetype='int'
15456 ;;
15457esac
15458
15459: see what type is used for signed size_t
15460set ssize_t ssizetype int stdio.h sys/types.h
15461eval $typedef
15462dflt="$ssizetype"
5440bc8e 15463$cat > try.c <<EOM
b4eb6b3d
JH
15464#include <stdio.h>
15465#include <sys/types.h>
15466#define Size_t $sizetype
15467#define SSize_t $dflt
15468int main()
15469{
15470 if (sizeof(Size_t) == sizeof(SSize_t))
15471 printf("$dflt\n");
15472 else if (sizeof(Size_t) == sizeof(int))
15473 printf("int\n");
15474 else
15475 printf("long\n");
15476 exit(0);
15477}
15478EOM
15479echo " "
5440bc8e
JH
15480set try
15481if eval $compile_ok && $run ./try > /dev/null; then
15482 ssizetype=`$run ./try`
b4eb6b3d
JH
15483 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15484else
15485 $cat >&4 <<EOM
15486Help! I can't compile and run the ssize_t test program: please enlighten me!
15487(This is probably a misconfiguration in your system or libraries, and
15488you really ought to fix it. Still, I'll try anyway.)
15489
15490I need a type that is the same size as $sizetype, but is guaranteed to
15491be signed. Common values are ssize_t, int and long.
15492
15493EOM
15494 rp="What signed type is the same size as $sizetype?"
15495 . ./myread
15496 ssizetype="$ans"
15497fi
5440bc8e 15498$rm -f try try.*
b4eb6b3d
JH
15499
15500: see what type of char stdio uses.
15501echo " "
aa517f50
JH
15502echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15503if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15504 echo "Your stdio uses unsigned chars." >&4
15505 stdchar="unsigned char"
15506else
aa517f50
JH
15507 echo "Your stdio uses signed chars." >&4
15508 stdchar="char"
b4eb6b3d 15509fi
aa517f50
JH
15510$rm -f stdioh
15511
15512
b4eb6b3d
JH
15513
15514: see if time exists
15515echo " "
15516if test "X$d_time" = X -o X"$timetype" = X; then
15517 if set time val -f d_time; eval $csym; $val; then
15518 echo 'time() found.' >&4
15519 val="$define"
15520 rp="What is the type returned by time() on this system?"
15521 set time_t timetype long stdio.h sys/types.h
15522 eval $typedef_ask
15523 else
15524 echo 'time() not found, hope that will do.' >&4
15525 val="$undef"
15526 timetype='int';
15527 fi
15528 set d_time
15529 eval $setvar
15530fi
15531
15532: see what type uids are declared as in the kernel
15533echo " "
15534echo "Looking for the type for user ids returned by getuid()."
15535set uid_t uidtype xxx stdio.h sys/types.h
15536eval $typedef
15537case "$uidtype" in
15538xxx)
15539 xxx=`./findhdr sys/user.h`
15540 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15541 case $1 in
15542 unsigned) dflt="$1 $2" ;;
15543 *) dflt="$1" ;;
15544 esac
15545 ;;
15546*) dflt="$uidtype";;
15547esac
15548case "$uidtype" in
15549uid_t) echo "uid_t found." ;;
15550*) rp="What is the type for user ids returned by getuid()?"
15551 . ./myread
15552 uidtype="$ans"
15553 ;;
15554esac
15555
15556echo " "
15557case "$uidtype" in
15558*_t) zzz="$uidtype" ;;
15559*) zzz="uid" ;;
15560esac
15561echo "Checking the size of $zzz..." >&4
15562cat > try.c <<EOCP
15563#include <sys/types.h>
15564#include <stdio.h>
15565int main() {
15566 printf("%d\n", (int)sizeof($uidtype));
15567 exit(0);
15568}
15569EOCP
15570set try
15571if eval $compile_ok; then
5440bc8e 15572 yyy=`$run ./try`
b4eb6b3d
JH
15573 case "$yyy" in
15574 '') uidsize=4
15575 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15576 ;;
15577 *) uidsize=$yyy
15578 echo "Your $zzz is $uidsize bytes long."
15579 ;;
15580 esac
15581else
15582 uidsize=4
15583 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15584fi
15585
15586echo " "
15587case "$uidtype" in
15588*_t) zzz="$uidtype" ;;
15589*) zzz="uid" ;;
15590esac
15591echo "Checking the sign of $zzz..." >&4
15592cat > try.c <<EOCP
15593#include <sys/types.h>
15594#include <stdio.h>
15595int main() {
15596 $uidtype foo = -1;
15597 if (foo < 0)
15598 printf("-1\n");
15599 else
15600 printf("1\n");
15601}
15602EOCP
15603set try
15604if eval $compile; then
5440bc8e 15605 yyy=`$run ./try`
b4eb6b3d
JH
15606 case "$yyy" in
15607 '') uidsign=1
15608 echo "(I can't execute the test program--guessing unsigned.)" >&4
15609 ;;
15610 *) uidsign=$yyy
15611 case "$uidsign" in
15612 1) echo "Your $zzz is unsigned." ;;
15613 -1) echo "Your $zzz is signed." ;;
15614 esac
15615 ;;
15616 esac
15617else
15618 uidsign=1
15619 echo "(I can't compile the test program--guessing unsigned.)" >&4
15620fi
15621
15622
15623
15624echo " "
15625$echo "Checking the format string to be used for uids..." >&4
15626
15627case "$uidsign" in
15628-1) if $test X"$uidsize" = X"$ivsize"; then
15629 uidformat="$ivdformat"
15630 else
15631 if $test X"$uidsize" = X"$longsize"; then
15632 uidformat='"ld"'
15633 else
15634 if $test X"$uidsize" = X"$intsize"; then
15635 uidformat='"d"'
15636 else
15637 if $test X"$uidsize" = X"$shortsize"; then
15638 uidformat='"hd"'
15639 fi
15640 fi
15641 fi
15642 fi
15643 ;;
15644*) if $test X"$uidsize" = X"$uvsize"; then
15645 uidformat="$uvuformat"
15646 else
15647 if $test X"$uidsize" = X"$longsize"; then
15648 uidformat='"lu"'
15649 else
15650 if $test X"$uidsize" = X"$intsize"; then
15651 uidformat='"u"'
15652 else
15653 if $test X"$uidsize" = X"$shortsize"; then
15654 uidformat='"hu"'
15655 fi
15656 fi
15657 fi
15658 fi
15659 ;;
15660esac
15661
3659ebf1
JH
15662: determine compiler compiler
15663case "$yacc" in
15664'')
15665 dflt=yacc;;
15666*)
15667 dflt="$yacc";;
15668esac
15669echo " "
15670comp='yacc'
15671if $test -f "$byacc"; then
15672 dflt="$byacc"
15673 comp="byacc or $comp"
15674fi
15675if $test -f "$bison"; then
15676 comp="$comp or bison -y"
15677fi
15678rp="Which compiler compiler ($comp) shall I use?"
15679. ./myread
15680yacc="$ans"
15681case "$yacc" in
15682*bis*)
15683 case "$yacc" in
15684 *-y*) ;;
15685 *)
15686 yacc="$yacc -y"
15687 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15688 ;;
15689 esac
15690 ;;
15691esac
15692
b4eb6b3d
JH
15693: see if fcntl.h is there
15694val=''
15695set fcntl.h val
15696eval $inhdr
15697
15698: see if we can include fcntl.h
15699case "$val" in
15700"$define")
15701 echo " "
15702 if $h_fcntl; then
15703 val="$define"
15704 echo "We'll be including <fcntl.h>." >&4
15705 else
15706 val="$undef"
15707 if $h_sysfile; then
15708 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15709 else
15710 echo "We won't be including <fcntl.h>." >&4
15711 fi
15712 fi
15713 ;;
15714*)
15715 h_fcntl=false
15716 val="$undef"
15717 ;;
15718esac
15719set i_fcntl
15720eval $setvar
15721
15722: see if this is a iconv.h system
15723set iconv.h i_iconv
15724eval $inhdr
15725
15726: see if this is a ieeefp.h system
15727set ieeefp.h i_ieeefp
15728eval $inhdr
15729
15730: see if this is a libutil.h system
15731set libutil.h i_libutil
15732eval $inhdr
15733
15734: see if locale.h is available
15735set locale.h i_locale
15736eval $inhdr
15737
15738: see if mach cthreads are available
15739if test "X$usethreads" = "X$define"; then
15740 set mach/cthreads.h i_machcthr
15741 eval $inhdr
15742else
15743 i_machcthr="$undef"
15744fi
15745
15746
15747
15748: see if this is a math.h system
15749set math.h i_math
15750eval $inhdr
15751
15752: see if this is a mntent.h system
15753set mntent.h i_mntent
15754eval $inhdr
15755
15756: see if ndbm.h is available
15757set ndbm.h t_ndbm
15758eval $inhdr
15759case "$t_ndbm" in
15760$define)
15761 : see if dbm_open exists
15762 set dbm_open d_dbm_open
15763 eval $inlibc
15764 case "$d_dbm_open" in
15765 $undef)
15766 t_ndbm="$undef"
15767 echo "We won't be including <ndbm.h>"
15768 ;;
15769 esac
15770 ;;
15771esac
15772val="$t_ndbm"
15773set i_ndbm
15774eval $setvar
15775
15776: see if net/errno.h is available
15777val=''
15778set net/errno.h val
15779eval $inhdr
15780
15781: Unfortunately, it causes problems on some systems. Arrgh.
15782case "$val" in
15783$define)
15784 cat > try.c <<'EOM'
15785#include <stdio.h>
15786#include <errno.h>
15787#include <net/errno.h>
15788int func()
15789{
15790 return ENOTSOCK;
15791}
15792EOM
15793 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15794 echo "We'll be including <net/errno.h>." >&4
15795 else
15796 echo "We won't be including <net/errno.h>." >&4
15797 val="$undef"
15798 fi
15799 $rm -f try.* try
15800 ;;
15801esac
15802set i_neterrno
15803eval $setvar
15804
15805: see if netinet/tcp.h is available
15806set netinet/tcp.h i_netinettcp
15807eval $inhdr
15808
15809: see if this is a poll.h system
15810set poll.h i_poll
15811eval $inhdr
15812
15813: see if this is a prot.h system
15814set prot.h i_prot
15815eval $inhdr
15816
15817echo " "
15818$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15819$cat <<'EOSH' > Cppsym.know
15820a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15821AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
15822alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15823ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15824BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
15825BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15826bull c cadmus clipper CMU COFF COMPILER_VERSION
15827concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15828CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15829Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15830FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15831GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15832H3050R H3050RX hbullx20 hcx host_mips
15833hp200 hp300 hp700 HP700 hp800 hp9000
15834hp9000s200 hp9000s300 hp9000s400 hp9000s500
15835hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15836i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 15837IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
15838INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15839LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15840LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15841Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15842LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15843M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15844M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15845M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15846MATH_HAS_NO_SIDE_EFFECTS
15847mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15848mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15849mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15850MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15851mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15852NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15853news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15854ns32016 ns32332 ns32k nsc32000
15855OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15856pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15857pc532 pdp11 PGC PIC plexus PORTAR posix
15858POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15859POSIX_C_SOURCE POSIX_SOURCE POWER
15860PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 15861riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
15862SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15863sony sony_news sonyrisc sparc sparclite spectrum
15864stardent stdc STDC_EXT stratos sun sun3 sun386
15865Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15866SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15867SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15868sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 15869TM3200 TM5400 TM5600
b4eb6b3d
JH
15870tower tower32 tower32_200 tower32_600 tower32_700
15871tower32_800 tower32_850 tss
15872u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15873ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15874unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15875Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15876XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15877XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15878z8000
15879EOSH
15880# Maybe put other stuff here too.
15881cat <<EOSH >>Cppsym.know
15882$osname
15883EOSH
15884./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15885./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15886$cat Cppsym.know > Cppsym.c
381aa1ff 15887$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15888$rm -f Cppsym.a Cppsym.b Cppsym.c
15889cat <<EOSH > Cppsym
15890$startsh
15891if $test \$# -gt 0; then
15892 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15893 if $test -s Cppsym.got; then
15894 $rm -f Cppsym.got
15895 exit 0
15896 fi
15897 $rm -f Cppsym.got
15898 exit 1
15899else
15900 $tr " " "$trnl" | ./Cppsym.try
15901 exit 0
15902fi
15903EOSH
15904chmod +x Cppsym
15905$eunicefix Cppsym
15906cat <<EOSH > Cppsym.try
15907$startsh
15908cat <<'EOCP' > try.c
15909#include <stdio.h>
15910int main() {
15911EOCP
15912$awk \\
15913EOSH
15914cat <<'EOSH' >> Cppsym.try
15915'length($1) > 0 {
2ef53570
JH
15916 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15917 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15918 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15919 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
b4eb6b3d 15920}' >> try.c
2ef53570 15921echo 'return 0;}' >> try.c
b4eb6b3d
JH
15922EOSH
15923cat <<EOSH >> Cppsym.try
15924ccflags="$ccflags"
15925case "$osname-$gccversion" in
15926irix-) ccflags="\$ccflags -woff 1178" ;;
15927os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15928esac
5440bc8e 15929$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
15930EOSH
15931chmod +x Cppsym.try
15932$eunicefix Cppsym.try
15933./Cppsym < Cppsym.know > Cppsym.true
15934: now check the C compiler for additional symbols
15935postprocess_cc_v=''
15936case "$osname" in
15937aix) postprocess_cc_v="|$tr , ' '" ;;
15938esac
15939$cat >ccsym <<EOS
15940$startsh
15941$cat >tmp.c <<EOF
15942extern int foo;
15943EOF
15944for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15945do
15946 case "\$i" in
15947 -D*) echo "\$i" | $sed 's/^-D//';;
15948 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15949 esac
15950done
15951$rm -f try.c
15952EOS
15953postprocess_cc_v=''
15954chmod +x ccsym
15955$eunicefix ccsym
15956./ccsym > ccsym1.raw
15957if $test -s ccsym1.raw; then
15958 $sort ccsym1.raw | $uniq >ccsym.raw
15959else
15960 mv ccsym1.raw ccsym.raw
15961fi
15962
15963$awk '/\=/ { print $0; next }
15964 { print $0"=1" }' ccsym.raw >ccsym.list
15965$awk '/\=/ { print $0; next }
15966 { print $0"=1" }' Cppsym.true >ccsym.true
15967$comm -13 ccsym.true ccsym.list >ccsym.own
15968$comm -12 ccsym.true ccsym.list >ccsym.com
15969$comm -23 ccsym.true ccsym.list >ccsym.cpp
15970also=''
15971if $test -z ccsym.raw; then
15972 echo "Your C compiler doesn't seem to define any symbols!" >&4
15973 echo " "
15974 echo "However, your C preprocessor defines the following symbols:"
15975 $cat Cppsym.true
15976 ccsymbols=''
15977 cppsymbols=`$cat Cppsym.true`
15978 cppsymbols=`echo $cppsymbols`
15979 cppccsymbols="$cppsymbols"
15980else
15981 if $test -s ccsym.com; then
15982 echo "Your C compiler and pre-processor define these symbols:"
15983 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15984 also='also '
15985 symbols='ones'
15986 cppccsymbols=`$cat ccsym.com`
15987 cppccsymbols=`echo $cppccsymbols`
15988 $test "$silent" || sleep 1
15989 fi
15990 if $test -s ccsym.cpp; then
15991 $test "$also" && echo " "
15992 echo "Your C pre-processor ${also}defines the following symbols:"
15993 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15994 also='further '
15995 cppsymbols=`$cat ccsym.cpp`
15996 cppsymbols=`echo $cppsymbols`
15997 $test "$silent" || sleep 1
15998 fi
15999 if $test -s ccsym.own; then
16000 $test "$also" && echo " "
16001 echo "Your C compiler ${also}defines the following cpp symbols:"
16002 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16003 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16004 ccsymbols=`$cat ccsym.own`
16005 ccsymbols=`echo $ccsymbols`
16006 $test "$silent" || sleep 1
16007 fi
16008fi
b4eb6b3d
JH
16009
16010: see if this is a termio system
16011val="$undef"
16012val2="$undef"
16013val3="$undef"
16014if $test `./findhdr termios.h`; then
16015 set tcsetattr i_termios
16016 eval $inlibc
16017 val3="$i_termios"
16018fi
16019echo " "
16020case "$val3" in
16021"$define") echo "You have POSIX termios.h... good!" >&4;;
16022*) if ./Cppsym pyr; then
16023 case "`/bin/universe`" in
16024 ucb) if $test `./findhdr sgtty.h`; then
16025 val2="$define"
16026 echo "<sgtty.h> found." >&4
16027 else
16028 echo "System is pyramid with BSD universe."
16029 echo "<sgtty.h> not found--you could have problems." >&4
16030 fi;;
16031 *) if $test `./findhdr termio.h`; then
16032 val="$define"
16033 echo "<termio.h> found." >&4
16034 else
16035 echo "System is pyramid with USG universe."
16036 echo "<termio.h> not found--you could have problems." >&4
16037 fi;;
16038 esac
16039 elif ./usg; then
16040 if $test `./findhdr termio.h`; then
16041 echo "<termio.h> found." >&4
16042 val="$define"
16043 elif $test `./findhdr sgtty.h`; then
16044 echo "<sgtty.h> found." >&4
16045 val2="$define"
16046 else
16047echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16048 fi
16049 else
16050 if $test `./findhdr sgtty.h`; then
16051 echo "<sgtty.h> found." >&4
16052 val2="$define"
16053 elif $test `./findhdr termio.h`; then
16054 echo "<termio.h> found." >&4
16055 val="$define"
16056 else
16057echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16058 fi
16059 fi;;
16060esac
16061set i_termio; eval $setvar
16062val=$val2; set i_sgtty; eval $setvar
16063val=$val3; set i_termios; eval $setvar
16064
16065: see if this is a shadow.h system
16066set shadow.h i_shadow
16067eval $inhdr
16068
b4eb6b3d
JH
16069: see if stddef is available
16070set stddef.h i_stddef
16071eval $inhdr
923fc586 16072
b4eb6b3d
JH
16073: see if this is a sunmath.h system
16074set sunmath.h i_sunmath
16075eval $inhdr
5f80c64f 16076
b4eb6b3d
JH
16077: see if sys/access.h is available
16078set sys/access.h i_sysaccess
16079eval $inhdr
16080
16081: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16082set sys/filio.h i_sysfilio
16083eval $inhdr
16084echo " "
16085if $test `./findhdr sys/ioctl.h`; then
16086 val="$define"
16087 echo '<sys/ioctl.h> found.' >&4
16088else
16089 val="$undef"
16090 if $test $i_sysfilio = "$define"; then
16091 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16092 else
b4eb6b3d
JH
16093 $test $i_sgtty = "$define" && xxx="sgtty.h"
16094 $test $i_termio = "$define" && xxx="termio.h"
16095 $test $i_termios = "$define" && xxx="termios.h"
16096echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16097 fi
16098fi
16099set i_sysioctl
16100eval $setvar
16101
49a78c82
JH
16102: see if socket ioctl defs are in sys/sockio.h
16103echo " "
16104xxx=`./findhdr sys/sockio.h`
16105if $test "$xxx"; then
16106 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16107 val="$define"
16108 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16109 else
16110 val="$undef"
16111 echo "No socket ioctls found in <sys/sockio.h>." >&4
16112 fi
16113else
16114 val="$undef"
16115 $cat <<EOM
16116<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16117EOM
16118fi
16119set i_syssockio
16120eval $setvar
16121
b4eb6b3d
JH
16122
16123: see if this is a syslog.h system
16124set syslog.h i_syslog
16125eval $inhdr
16126
16127
16128: see if this is a sys/mode.h system
16129set sys/mode.h i_sysmode
16130eval $inhdr
16131
16132: see if sys/resource.h has to be included
16133set sys/resource.h i_sysresrc
16134eval $inhdr
16135
16136: see if sys/security.h is available
16137set sys/security.h i_syssecrt
16138eval $inhdr
16139
16140: see if this is a sys/statvfs.h system
16141set sys/statvfs.h i_sysstatvfs
16142eval $inhdr
16143
b4eb6b3d
JH
16144: see if this is a sys/un.h system
16145set sys/un.h i_sysun
16146eval $inhdr
16147
16148
16149: see if this is a sys/utsname.h system
16150set sys/utsname.h i_sysutsname
16151eval $inhdr
16152
16153: see if this is a syswait system
16154set sys/wait.h i_syswait
16155eval $inhdr
16156
16157: see if this is a ustat.h system
16158set ustat.h i_ustat
16159eval $inhdr
16160
16161: see if this is an utime system
16162set utime.h i_utime
16163eval $inhdr
16164
16165: see if this is a values.h system
16166set values.h i_values
16167eval $inhdr
16168
16169: see if this is a vfork system
16170case "$d_vfork" in
16171"$define")
16172 set vfork.h i_vfork
16173 eval $inhdr
16174 ;;
16175*)
16176 i_vfork="$undef"
16177 ;;
16178esac
16179
16180: see if gdbm.h is available
16181set gdbm.h t_gdbm
16182eval $inhdr
16183case "$t_gdbm" in
16184$define)
16185 : see if gdbm_open exists
16186 set gdbm_open d_gdbm_open
16187 eval $inlibc
16188 case "$d_gdbm_open" in
16189 $undef)
16190 t_gdbm="$undef"
16191 echo "We won't be including <gdbm.h>"
5f80c64f 16192 ;;
b4eb6b3d
JH
16193 esac
16194 ;;
16195esac
16196val="$t_gdbm"
16197set i_gdbm
16198eval $setvar
16199
16200echo " "
16201echo "Looking for extensions..." >&4
16202: If we are using the old config.sh, known_extensions may contain
16203: old or inaccurate or duplicate values.
16204known_extensions=''
16205nonxs_extensions=''
16206: We do not use find because it might not be available.
16207: We do not just use MANIFEST because the user may have dropped
16208: some additional extensions into the source tree and expect them
16209: to be built.
16210
16211: Function to recursively find available extensions, ignoring DynaLoader
16212: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16213find_extensions='
16214 for xxx in *; do
16215 case "$xxx" in
16216 DynaLoader|dynaload) ;;
16217 *)
16218 if $test -f $xxx/$xxx.xs; then
16219 known_extensions="$known_extensions $1$xxx";
16220 elif $test -f $xxx/Makefile.PL; then
16221 nonxs_extensions="$nonxs_extensions $1$xxx";
16222 else
16223 if $test -d $xxx -a $# -lt 10; then
16224 set $1$xxx/ $*;
16225 cd $xxx;
16226 eval $find_extensions;
16227 cd ..;
16228 shift;
16229 fi;
16230 fi
16231 ;;
16232 esac;
16233 done'
16234tdir=`pwd`
16235cd $rsrc/ext
16236set X
16237shift
16238eval $find_extensions
16239set X $nonxs_extensions
16240shift
16241nonxs_extensions="$*"
16242set X $known_extensions
16243shift
16244known_extensions="$*"
16245cd $tdir
16246
16247: Now see which are supported on this system.
16248avail_ext=''
16249for xxx in $known_extensions ; do
16250 case "$xxx" in
16251 DB_File|db_file)
16252 case "$i_db" in
16253 $define) avail_ext="$avail_ext $xxx" ;;
16254 esac
16255 ;;
16256 GDBM_File|gdbm_fil)
16257 case "$i_gdbm" in
16258 $define) avail_ext="$avail_ext $xxx" ;;
16259 esac
16260 ;;
1d59c593 16261 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
16262 case "$i_langinfo$d_nl_langinfo" in
16263 $define$define) avail_ext="$avail_ext $xxx" ;;
16264 esac
16265 ;;
b4eb6b3d
JH
16266 NDBM_File|ndbm_fil)
16267 case "$i_ndbm" in
16268 $define)
16269 case "$osname-$use64bitint" in
252f4fb1 16270 cygwin-*|hpux-define)
b4eb6b3d
JH
16271 case "$libs" in
16272 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16273 esac
16274 ;;
16275 *) avail_ext="$avail_ext $xxx" ;;
16276 esac
16277 ;;
16278 esac
16279 ;;
16280 ODBM_File|odbm_fil)
16281 case "${i_dbm}${i_rpcsvcdbm}" in
16282 *"${define}"*)
16283 case "$osname-$use64bitint" in
252f4fb1 16284 cygwin-*|hpux-define)
b4eb6b3d
JH
16285 case "$libs" in
16286 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16287 esac
16288 ;;
16289 *) avail_ext="$avail_ext $xxx" ;;
16290 esac
16291 ;;
16292 esac
16293 ;;
16294 POSIX|posix)
16295 case "$useposix" in
16296 true|define|y) avail_ext="$avail_ext $xxx" ;;
16297 esac
16298 ;;
16299 Opcode|opcode)
16300 case "$useopcode" in
16301 true|define|y) avail_ext="$avail_ext $xxx" ;;
16302 esac
16303 ;;
16304 Socket|socket)
16305 case "$d_socket" in
16306 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16307 esac
16308 ;;
16309 Sys/Syslog|sys/syslog)
16310 : XXX syslog requires socket
16311 case "$d_socket" in
16312 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16313 esac
16314 ;;
16315 Thread|thread)
b00ec89b
AB
16316 case "$usethreads" in
16317 true|$define|y)
16318 case "$useithreads" in
16319 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16320 esac
b4eb6b3d
JH
16321 esac
16322 ;;
16323 IPC/SysV|ipc/sysv)
16324 : XXX Do we need a useipcsysv variable here
16325 case "${d_msg}${d_sem}${d_shm}" in
16326 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16327 esac
16328 ;;
16329 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16330 ;;
16331 esac
b4eb6b3d 16332done
5f80c64f 16333
b4eb6b3d
JH
16334set X $avail_ext
16335shift
16336avail_ext="$*"
5f80c64f 16337
b4eb6b3d
JH
16338: Now see which nonxs extensions are supported on this system.
16339: For now assume all are.
16340nonxs_ext=''
16341for xxx in $nonxs_extensions ; do
16342 case "$xxx" in
16343 *) nonxs_ext="$nonxs_ext $xxx"
16344 ;;
16345 esac
16346done
5f80c64f 16347
b4eb6b3d
JH
16348set X $nonxs_ext
16349shift
16350nonxs_ext="$*"
16351
16352case $usedl in
16353$define)
16354 $cat <<EOM
16355A number of extensions are supplied with $package. You may choose to
16356compile these extensions for dynamic loading (the default), compile
16357them into the $package executable (static loading), or not include
16358them at all. Answer "none" to include no extensions.
16359Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16360
16361EOM
b4eb6b3d
JH
16362 case "$dynamic_ext" in
16363 '') dflt="$avail_ext" ;;
16364 *) dflt="$dynamic_ext"
16365 # Perhaps we are reusing an old out-of-date config.sh.
16366 case "$hint" in
16367 previous)
16368 if test X"$dynamic_ext" != X"$avail_ext"; then
16369 $cat <<EOM
16370NOTICE: Your previous config.sh list may be incorrect.
16371The extensions now available to you are
16372 ${avail_ext}
16373but the default list from your previous config.sh is
16374 ${dynamic_ext}
9c839522 16375
b4eb6b3d
JH
16376EOM
16377 fi
9c839522
PM
16378 ;;
16379 esac
b4eb6b3d
JH
16380 ;;
16381 esac
5f80c64f 16382 case "$dflt" in
b4eb6b3d
JH
16383 '') dflt=none;;
16384 esac
16385 rp="What extensions do you wish to load dynamically?"
16386 . ./myread
16387 case "$ans" in
16388 none) dynamic_ext=' ' ;;
16389 *) dynamic_ext="$ans" ;;
5f80c64f 16390 esac
5f80c64f 16391
b4eb6b3d
JH
16392 case "$static_ext" in
16393 '')
16394 : Exclude those already listed in dynamic linking
16395 dflt=''
16396 for xxx in $avail_ext; do
16397 case " $dynamic_ext " in
16398 *" $xxx "*) ;;
16399 *) dflt="$dflt $xxx" ;;
16400 esac
16401 done
16402 set X $dflt
16403 shift
16404 dflt="$*"
16405 ;;
16406 *) dflt="$static_ext"
16407 ;;
16408 esac
9c839522 16409
b4eb6b3d
JH
16410 case "$dflt" in
16411 '') dflt=none;;
16412 esac
16413 rp="What extensions do you wish to load statically?"
16414 . ./myread
16415 case "$ans" in
16416 none) static_ext=' ' ;;
16417 *) static_ext="$ans" ;;
16418 esac
16419 ;;
16420*)
16421 $cat <<EOM
16422A number of extensions are supplied with $package. Answer "none"
16423to include no extensions.
16424Note that DynaLoader is always built and need not be mentioned here.
9c839522 16425
b4eb6b3d
JH
16426EOM
16427 case "$static_ext" in
16428 '') dflt="$avail_ext" ;;
16429 *) dflt="$static_ext"
16430 # Perhaps we are reusing an old out-of-date config.sh.
16431 case "$hint" in
16432 previous)
16433 if test X"$static_ext" != X"$avail_ext"; then
16434 $cat <<EOM
16435NOTICE: Your previous config.sh list may be incorrect.
16436The extensions now available to you are
16437 ${avail_ext}
16438but the default list from your previous config.sh is
16439 ${static_ext}
5f80c64f
JH
16440
16441EOM
b4eb6b3d
JH
16442 fi
16443 ;;
16444 esac
16445 ;;
16446 esac
16447 : Exclude those that are not xs extensions
16448 case "$dflt" in
16449 '') dflt=none;;
16450 esac
16451 rp="What extensions do you wish to include?"
16452 . ./myread
16453 case "$ans" in
16454 none) static_ext=' ' ;;
16455 *) static_ext="$ans" ;;
16456 esac
16457 ;;
5f80c64f
JH
16458esac
16459
b4eb6b3d
JH
16460set X $dynamic_ext $static_ext $nonxs_ext
16461shift
16462extensions="$*"
16463
9c839522
PM
16464: Remove libraries needed only for extensions
16465: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16466: The exception is SunOS 4.x, which needs them.
16467case "${osname}X${osvers}" in
16468sunos*X4*)
16469 perllibs="$libs"
16470 ;;
16471*) case "$usedl" in
16472 $define|true|[yY]*)
16473 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16474 shift
16475 perllibs="$*"
16476 ;;
16477 *) perllibs="$libs"
16478 ;;
16479 esac
16480 ;;
9c839522 16481esac
5f80c64f
JH
16482
16483: Remove build directory name from cppstdin so it can be used from
16484: either the present location or the final installed location.
16485echo " "
16486: Get out of the UU directory to get correct path name.
16487cd ..
16488case "$cppstdin" in
16489`pwd`/cppstdin)
16490 echo "Stripping down cppstdin path name"
16491 cppstdin=cppstdin
16492 ;;
16493esac
16494cd UU
16495
16496: end of configuration questions
16497echo " "
16498echo "End of configuration questions."
16499echo " "
16500
16501: back to where it started
16502if test -d ../UU; then
16503 cd ..
16504fi
16505
16506: configuration may be patched via a 'config.over' file
16507if $test -f config.over; then
16508 echo " "
16509 dflt=y
16510 rp='I see a config.over file. Do you wish to load it?'
16511 . UU/myread
16512 case "$ans" in
16513 n*) echo "OK, I'll ignore it.";;
16514 *) . ./config.over
16515 echo "Configuration override changes have been loaded."
16516 ;;
16517 esac
16518fi
16519
16520: in case they want portability, strip down executable paths
16521case "$d_portable" in
16522"$define")
16523 echo " "
16524 echo "Stripping down executable paths..." >&4
16525 for file in $loclist $trylist; do
534ac15a
JH
16526 eval temp=\$$file
16527 eval $file=`basename $temp`
5f80c64f
JH
16528 done
16529 ;;
16530esac
16531
16532: create config.sh file
16533echo " "
16534echo "Creating config.sh..." >&4
16535$spitshell <<EOT >config.sh
16536$startsh
16537#
16538# This file was produced by running the Configure script. It holds all the
16539# definitions figured out by Configure. Should you modify one of these values,
16540# do not forget to propagate your changes by running "Configure -der". You may
16541# instead choose to run each of the .SH files by yourself, or "Configure -S".
16542#
16543
16544# Package name : $package
16545# Source directory : $src
16546# Configuration time: $cf_time
16547# Configured by : $cf_by
16548# Target system : $myuname
16549
16550Author='$Author'
16551Date='$Date'
16552Header='$Header'
16553Id='$Id'
16554Locker='$Locker'
16555Log='$Log'
16556Mcc='$Mcc'
16557RCSfile='$RCSfile'
16558Revision='$Revision'
16559Source='$Source'
16560State='$State'
16561_a='$_a'
16562_exe='$_exe'
16563_o='$_o'
b4eb6b3d 16564afs='$afs'
a6d26a0d 16565afsroot='$afsroot'
b4eb6b3d
JH
16566alignbytes='$alignbytes'
16567ansi2knr='$ansi2knr'
16568aphostname='$aphostname'
16569api_revision='$api_revision'
16570api_subversion='$api_subversion'
16571api_version='$api_version'
16572api_versionstring='$api_versionstring'
5f80c64f 16573ar='$ar'
b4eb6b3d
JH
16574archlib='$archlib'
16575archlibexp='$archlibexp'
16576archname64='$archname64'
16577archname='$archname'
5f80c64f
JH
16578archobjs='$archobjs'
16579awk='$awk'
b4eb6b3d 16580baserev='$baserev'
5f80c64f 16581bash='$bash'
b4eb6b3d
JH
16582bin='$bin'
16583bincompat5005='$bincompat5005'
16584binexp='$binexp'
5f80c64f
JH
16585bison='$bison'
16586byacc='$byacc'
b4eb6b3d 16587byteorder='$byteorder'
5f80c64f 16588c='$c'
b4eb6b3d 16589castflags='$castflags'
5f80c64f
JH
16590cat='$cat'
16591cc='$cc'
16592cccdlflags='$cccdlflags'
16593ccdlflags='$ccdlflags'
16594ccflags='$ccflags'
b4eb6b3d 16595ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16596ccname='$ccname'
b4eb6b3d 16597ccsymbols='$ccsymbols'
6b356c8e 16598ccversion='$ccversion'
5f80c64f 16599cf_by='$cf_by'
b4eb6b3d 16600cf_email='$cf_email'
5f80c64f 16601cf_time='$cf_time'
b4eb6b3d 16602charsize='$charsize'
5f80c64f
JH
16603chgrp='$chgrp'
16604chmod='$chmod'
16605chown='$chown'
b4eb6b3d 16606clocktype='$clocktype'
5f80c64f
JH
16607comm='$comm'
16608compress='$compress'
16609contains='$contains'
16610cp='$cp'
16611cpio='$cpio'
16612cpp='$cpp'
b4eb6b3d
JH
16613cpp_stuff='$cpp_stuff'
16614cppccsymbols='$cppccsymbols'
5f80c64f
JH
16615cppflags='$cppflags'
16616cpplast='$cpplast'
16617cppminus='$cppminus'
16618cpprun='$cpprun'
16619cppstdin='$cppstdin'
b4eb6b3d 16620cppsymbols='$cppsymbols'
b4eb6b3d 16621cryptlib='$cryptlib'
5f80c64f 16622csh='$csh'
b4eb6b3d
JH
16623d_Gconvert='$d_Gconvert'
16624d_PRIEUldbl='$d_PRIEUldbl'
16625d_PRIFUldbl='$d_PRIFUldbl'
16626d_PRIGUldbl='$d_PRIGUldbl'
16627d_PRIXU64='$d_PRIXU64'
16628d_PRId64='$d_PRId64'
16629d_PRIeldbl='$d_PRIeldbl'
16630d_PRIfldbl='$d_PRIfldbl'
16631d_PRIgldbl='$d_PRIgldbl'
16632d_PRIi64='$d_PRIi64'
16633d_PRIo64='$d_PRIo64'
16634d_PRIu64='$d_PRIu64'
16635d_PRIx64='$d_PRIx64'
16636d_SCNfldbl='$d_SCNfldbl'
74cac757 16637d__fwalk='$d__fwalk'
b4eb6b3d
JH
16638d_access='$d_access'
16639d_accessx='$d_accessx'
16640d_alarm='$d_alarm'
16641d_archlib='$d_archlib'
16642d_atolf='$d_atolf'
16643d_atoll='$d_atoll'
16644d_attribut='$d_attribut'
16645d_bcmp='$d_bcmp'
16646d_bcopy='$d_bcopy'
16647d_bincompat5005='$d_bincompat5005'
5f80c64f 16648d_bsd='$d_bsd'
b4eb6b3d
JH
16649d_bsdgetpgrp='$d_bsdgetpgrp'
16650d_bsdsetpgrp='$d_bsdsetpgrp'
16651d_bzero='$d_bzero'
16652d_casti32='$d_casti32'
16653d_castneg='$d_castneg'
16654d_charvspr='$d_charvspr'
16655d_chown='$d_chown'
16656d_chroot='$d_chroot'
16657d_chsize='$d_chsize'
16658d_closedir='$d_closedir'
4e0554ec 16659d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
16660d_const='$d_const'
16661d_crypt='$d_crypt'
16662d_csh='$d_csh'
16663d_cuserid='$d_cuserid'
16664d_dbl_dig='$d_dbl_dig'
2ef53570 16665d_dbminitproto='$d_dbminitproto'
b4eb6b3d
JH
16666d_difftime='$d_difftime'
16667d_dirnamlen='$d_dirnamlen'
16668d_dlerror='$d_dlerror'
5f80c64f 16669d_dlopen='$d_dlopen'
b4eb6b3d
JH
16670d_dlsymun='$d_dlsymun'
16671d_dosuid='$d_dosuid'
16672d_drand48proto='$d_drand48proto'
16673d_dup2='$d_dup2'
16674d_eaccess='$d_eaccess'
16675d_endgrent='$d_endgrent'
16676d_endhent='$d_endhent'
16677d_endnent='$d_endnent'
16678d_endpent='$d_endpent'
16679d_endpwent='$d_endpwent'
16680d_endsent='$d_endsent'
16681d_eofnblk='$d_eofnblk'
5f80c64f 16682d_eunice='$d_eunice'
b363b713 16683d_fchdir='$d_fchdir'
b4eb6b3d
JH
16684d_fchmod='$d_fchmod'
16685d_fchown='$d_fchown'
16686d_fcntl='$d_fcntl'
9d9004a9 16687d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
16688d_fd_macros='$d_fd_macros'
16689d_fd_set='$d_fd_set'
16690d_fds_bits='$d_fds_bits'
16691d_fgetpos='$d_fgetpos'
16692d_flexfnam='$d_flexfnam'
16693d_flock='$d_flock'
2ef53570 16694d_flockproto='$d_flockproto'
b4eb6b3d
JH
16695d_fork='$d_fork'
16696d_fpathconf='$d_fpathconf'
16697d_fpos64_t='$d_fpos64_t'
16698d_frexpl='$d_frexpl'
16699d_fs_data_s='$d_fs_data_s'
16700d_fseeko='$d_fseeko'
16701d_fsetpos='$d_fsetpos'
16702d_fstatfs='$d_fstatfs'
16703d_fstatvfs='$d_fstatvfs'
411ab01c 16704d_fsync='$d_fsync'
b4eb6b3d
JH
16705d_ftello='$d_ftello'
16706d_ftime='$d_ftime'
16707d_getcwd='$d_getcwd'
16708d_getespwnam='$d_getespwnam'
16709d_getfsstat='$d_getfsstat'
16710d_getgrent='$d_getgrent'
16711d_getgrps='$d_getgrps'
16712d_gethbyaddr='$d_gethbyaddr'
16713d_gethbyname='$d_gethbyname'
16714d_gethent='$d_gethent'
16715d_gethname='$d_gethname'
16716d_gethostprotos='$d_gethostprotos'
4e0554ec 16717d_getitimer='$d_getitimer'
b4eb6b3d
JH
16718d_getlogin='$d_getlogin'
16719d_getmnt='$d_getmnt'
16720d_getmntent='$d_getmntent'
16721d_getnbyaddr='$d_getnbyaddr'
16722d_getnbyname='$d_getnbyname'
16723d_getnent='$d_getnent'
16724d_getnetprotos='$d_getnetprotos'
0c0643d0 16725d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16726d_getpbyname='$d_getpbyname'
16727d_getpbynumber='$d_getpbynumber'
16728d_getpent='$d_getpent'
16729d_getpgid='$d_getpgid'
16730d_getpgrp2='$d_getpgrp2'
16731d_getpgrp='$d_getpgrp'
16732d_getppid='$d_getppid'
16733d_getprior='$d_getprior'
16734d_getprotoprotos='$d_getprotoprotos'
16735d_getprpwnam='$d_getprpwnam'
16736d_getpwent='$d_getpwent'
16737d_getsbyname='$d_getsbyname'
16738d_getsbyport='$d_getsbyport'
16739d_getsent='$d_getsent'
16740d_getservprotos='$d_getservprotos'
16741d_getspnam='$d_getspnam'
16742d_gettimeod='$d_gettimeod'
5f80c64f 16743d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16744d_grpasswd='$d_grpasswd'
16745d_hasmntopt='$d_hasmntopt'
16746d_htonl='$d_htonl'
16747d_iconv='$d_iconv'
16748d_index='$d_index'
16749d_inetaton='$d_inetaton'
16750d_int64_t='$d_int64_t'
16751d_isascii='$d_isascii'
16752d_isnan='$d_isnan'
16753d_isnanl='$d_isnanl'
16754d_killpg='$d_killpg'
16755d_lchown='$d_lchown'
16756d_ldbl_dig='$d_ldbl_dig'
16757d_link='$d_link'
16758d_locconv='$d_locconv'
16759d_lockf='$d_lockf'
16760d_longdbl='$d_longdbl'
16761d_longlong='$d_longlong'
16762d_lseekproto='$d_lseekproto'
16763d_lstat='$d_lstat'
16764d_madvise='$d_madvise'
16765d_mblen='$d_mblen'
16766d_mbstowcs='$d_mbstowcs'
16767d_mbtowc='$d_mbtowc'
16768d_memchr='$d_memchr'
16769d_memcmp='$d_memcmp'
16770d_memcpy='$d_memcpy'
16771d_memmove='$d_memmove'
16772d_memset='$d_memset'
16773d_mkdir='$d_mkdir'
16774d_mkdtemp='$d_mkdtemp'
16775d_mkfifo='$d_mkfifo'
16776d_mkstemp='$d_mkstemp'
16777d_mkstemps='$d_mkstemps'
16778d_mktime='$d_mktime'
16779d_mmap='$d_mmap'
16780d_modfl='$d_modfl'
e67aeab1 16781d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
16782d_mprotect='$d_mprotect'
16783d_msg='$d_msg'
16784d_msg_ctrunc='$d_msg_ctrunc'
16785d_msg_dontroute='$d_msg_dontroute'
16786d_msg_oob='$d_msg_oob'
16787d_msg_peek='$d_msg_peek'
16788d_msg_proxy='$d_msg_proxy'
16789d_msgctl='$d_msgctl'
16790d_msgget='$d_msgget'
4e0554ec 16791d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
16792d_msgrcv='$d_msgrcv'
16793d_msgsnd='$d_msgsnd'
16794d_msync='$d_msync'
16795d_munmap='$d_munmap'
16796d_mymalloc='$d_mymalloc'
16797d_nice='$d_nice'
2765b840 16798d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
16799d_nv_preserves_uv='$d_nv_preserves_uv'
16800d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16801d_off64_t='$d_off64_t'
16802d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16803d_oldpthreads='$d_oldpthreads'
16804d_oldsock='$d_oldsock'
16805d_open3='$d_open3'
16806d_pathconf='$d_pathconf'
16807d_pause='$d_pause'
16808d_perl_otherlibdirs='$d_perl_otherlibdirs'
16809d_phostname='$d_phostname'
16810d_pipe='$d_pipe'
16811d_poll='$d_poll'
5f80c64f 16812d_portable='$d_portable'
d6483fcc 16813d_pthread_atfork='$d_pthread_atfork'
b4eb6b3d
JH
16814d_pthread_yield='$d_pthread_yield'
16815d_pwage='$d_pwage'
16816d_pwchange='$d_pwchange'
16817d_pwclass='$d_pwclass'
16818d_pwcomment='$d_pwcomment'
16819d_pwexpire='$d_pwexpire'
16820d_pwgecos='$d_pwgecos'
16821d_pwpasswd='$d_pwpasswd'
16822d_pwquota='$d_pwquota'
16823d_qgcvt='$d_qgcvt'
16824d_quad='$d_quad'
16825d_readdir='$d_readdir'
16826d_readlink='$d_readlink'
4e0554ec
JH
16827d_readv='$d_readv'
16828d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
16829d_rename='$d_rename'
16830d_rewinddir='$d_rewinddir'
16831d_rmdir='$d_rmdir'
16832d_safebcpy='$d_safebcpy'
16833d_safemcpy='$d_safemcpy'
16834d_sanemcmp='$d_sanemcmp'
ef9f17be 16835d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16836d_sched_yield='$d_sched_yield'
16837d_scm_rights='$d_scm_rights'
16838d_seekdir='$d_seekdir'
16839d_select='$d_select'
16840d_sem='$d_sem'
16841d_semctl='$d_semctl'
16842d_semctl_semid_ds='$d_semctl_semid_ds'
16843d_semctl_semun='$d_semctl_semun'
16844d_semget='$d_semget'
16845d_semop='$d_semop'
4e0554ec 16846d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
16847d_setegid='$d_setegid'
16848d_seteuid='$d_seteuid'
16849d_setgrent='$d_setgrent'
16850d_setgrps='$d_setgrps'
16851d_sethent='$d_sethent'
4e0554ec 16852d_setitimer='$d_setitimer'
b4eb6b3d
JH
16853d_setlinebuf='$d_setlinebuf'
16854d_setlocale='$d_setlocale'
16855d_setnent='$d_setnent'
16856d_setpent='$d_setpent'
16857d_setpgid='$d_setpgid'
16858d_setpgrp2='$d_setpgrp2'
16859d_setpgrp='$d_setpgrp'
16860d_setprior='$d_setprior'
16861d_setproctitle='$d_setproctitle'
16862d_setpwent='$d_setpwent'
16863d_setregid='$d_setregid'
16864d_setresgid='$d_setresgid'
16865d_setresuid='$d_setresuid'
16866d_setreuid='$d_setreuid'
16867d_setrgid='$d_setrgid'
16868d_setruid='$d_setruid'
16869d_setsent='$d_setsent'
16870d_setsid='$d_setsid'
16871d_setvbuf='$d_setvbuf'
16872d_sfio='$d_sfio'
16873d_shm='$d_shm'
16874d_shmat='$d_shmat'
16875d_shmatprototype='$d_shmatprototype'
16876d_shmctl='$d_shmctl'
16877d_shmdt='$d_shmdt'
16878d_shmget='$d_shmget'
16879d_sigaction='$d_sigaction'
983dbef6 16880d_sigprocmask='$d_sigprocmask'
b4eb6b3d 16881d_sigsetjmp='$d_sigsetjmp'
49a78c82 16882d_sockatmark='$d_sockatmark'
2ef53570 16883d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
16884d_socket='$d_socket'
16885d_socklen_t='$d_socklen_t'
16886d_sockpair='$d_sockpair'
16887d_socks5_init='$d_socks5_init'
16888d_sqrtl='$d_sqrtl'
eef837ea 16889d_sresgproto='$d_sresgproto'
640374d0 16890d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
16891d_statblks='$d_statblks'
16892d_statfs_f_flags='$d_statfs_f_flags'
16893d_statfs_s='$d_statfs_s'
16894d_statvfs='$d_statvfs'
16895d_stdio_cnt_lval='$d_stdio_cnt_lval'
16896d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
16897d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16898d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
16899d_stdio_stream_array='$d_stdio_stream_array'
16900d_stdiobase='$d_stdiobase'
16901d_stdstdio='$d_stdstdio'
16902d_strchr='$d_strchr'
16903d_strcoll='$d_strcoll'
16904d_strctcpy='$d_strctcpy'
16905d_strerrm='$d_strerrm'
16906d_strerror='$d_strerror'
b3c85772 16907d_strftime='$d_strftime'
b4eb6b3d
JH
16908d_strtod='$d_strtod'
16909d_strtol='$d_strtol'
16910d_strtold='$d_strtold'
16911d_strtoll='$d_strtoll'
28e5dec8 16912d_strtoq='$d_strtoq'
b4eb6b3d
JH
16913d_strtoul='$d_strtoul'
16914d_strtoull='$d_strtoull'
16915d_strtouq='$d_strtouq'
16916d_strxfrm='$d_strxfrm'
16917d_suidsafe='$d_suidsafe'
16918d_symlink='$d_symlink'
16919d_syscall='$d_syscall'
2ef53570 16920d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
16921d_sysconf='$d_sysconf'
16922d_sysernlst='$d_sysernlst'
16923d_syserrlst='$d_syserrlst'
16924d_system='$d_system'
16925d_tcgetpgrp='$d_tcgetpgrp'
16926d_tcsetpgrp='$d_tcsetpgrp'
16927d_telldir='$d_telldir'
16928d_telldirproto='$d_telldirproto'
16929d_time='$d_time'
16930d_times='$d_times'
16931d_truncate='$d_truncate'
16932d_tzname='$d_tzname'
4e0554ec
JH
16933d_u32align='$d_u32align'
16934d_ualarm='$d_ualarm'
b4eb6b3d
JH
16935d_umask='$d_umask'
16936d_uname='$d_uname'
16937d_union_semun='$d_union_semun'
4e0554ec 16938d_usleep='$d_usleep'
2ef53570 16939d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
16940d_ustat='$d_ustat'
16941d_vendorarch='$d_vendorarch'
16942d_vendorbin='$d_vendorbin'
16943d_vendorlib='$d_vendorlib'
16944d_vfork='$d_vfork'
16945d_void_closedir='$d_void_closedir'
16946d_voidsig='$d_voidsig'
16947d_voidtty='$d_voidtty'
16948d_volatile='$d_volatile'
16949d_vprintf='$d_vprintf'
16950d_wait4='$d_wait4'
16951d_waitpid='$d_waitpid'
16952d_wcstombs='$d_wcstombs'
16953d_wctomb='$d_wctomb'
4e0554ec 16954d_writev='$d_writev'
5f80c64f
JH
16955d_xenix='$d_xenix'
16956date='$date'
b4eb6b3d
JH
16957db_hashtype='$db_hashtype'
16958db_prefixtype='$db_prefixtype'
640374d0
JH
16959db_version_major='$db_version_major'
16960db_version_minor='$db_version_minor'
16961db_version_patch='$db_version_patch'
b4eb6b3d
JH
16962defvoidused='$defvoidused'
16963direntrytype='$direntrytype'
16964dlext='$dlext'
5f80c64f 16965dlsrc='$dlsrc'
b4eb6b3d
JH
16966doublesize='$doublesize'
16967drand01='$drand01'
16968dynamic_ext='$dynamic_ext'
16969eagain='$eagain'
16970ebcdic='$ebcdic'
5f80c64f
JH
16971echo='$echo'
16972egrep='$egrep'
16973emacs='$emacs'
16974eunicefix='$eunicefix'
16975exe_ext='$exe_ext'
16976expr='$expr'
b4eb6b3d
JH
16977extensions='$extensions'
16978fflushNULL='$fflushNULL'
16979fflushall='$fflushall'
5f80c64f
JH
16980find='$find'
16981firstmakefile='$firstmakefile'
16982flex='$flex'
b4eb6b3d
JH
16983fpossize='$fpossize'
16984fpostype='$fpostype'
16985freetype='$freetype'
5440bc8e 16986from='$from'
b4eb6b3d
JH
16987full_ar='$full_ar'
16988full_csh='$full_csh'
16989full_sed='$full_sed'
5b463ca7 16990gccosandvers='$gccosandvers'
5f80c64f 16991gccversion='$gccversion'
b4eb6b3d
JH
16992gidformat='$gidformat'
16993gidsign='$gidsign'
16994gidsize='$gidsize'
16995gidtype='$gidtype'
5f80c64f
JH
16996glibpth='$glibpth'
16997grep='$grep'
b4eb6b3d
JH
16998groupcat='$groupcat'
16999groupstype='$groupstype'
5f80c64f 17000gzip='$gzip'
b4eb6b3d
JH
17001h_fcntl='$h_fcntl'
17002h_sysfile='$h_sysfile'
5f80c64f 17003hint='$hint'
b4eb6b3d
JH
17004hostcat='$hostcat'
17005i16size='$i16size'
17006i16type='$i16type'
17007i32size='$i32size'
17008i32type='$i32type'
17009i64size='$i64size'
17010i64type='$i64type'
17011i8size='$i8size'
17012i8type='$i8type'
17013i_arpainet='$i_arpainet'
17014i_bsdioctl='$i_bsdioctl'
17015i_db='$i_db'
17016i_dbm='$i_dbm'
17017i_dirent='$i_dirent'
5f80c64f 17018i_dld='$i_dld'
b4eb6b3d
JH
17019i_dlfcn='$i_dlfcn'
17020i_fcntl='$i_fcntl'
17021i_float='$i_float'
17022i_gdbm='$i_gdbm'
17023i_grp='$i_grp'
17024i_iconv='$i_iconv'
17025i_ieeefp='$i_ieeefp'
17026i_inttypes='$i_inttypes'
2765b840 17027i_langinfo='$i_langinfo'
b4eb6b3d
JH
17028i_libutil='$i_libutil'
17029i_limits='$i_limits'
17030i_locale='$i_locale'
17031i_machcthr='$i_machcthr'
17032i_malloc='$i_malloc'
17033i_math='$i_math'
17034i_memory='$i_memory'
17035i_mntent='$i_mntent'
17036i_ndbm='$i_ndbm'
17037i_netdb='$i_netdb'
17038i_neterrno='$i_neterrno'
17039i_netinettcp='$i_netinettcp'
17040i_niin='$i_niin'
17041i_poll='$i_poll'
17042i_prot='$i_prot'
17043i_pthread='$i_pthread'
17044i_pwd='$i_pwd'
17045i_rpcsvcdbm='$i_rpcsvcdbm'
17046i_sfio='$i_sfio'
17047i_sgtty='$i_sgtty'
17048i_shadow='$i_shadow'
17049i_socks='$i_socks'
17050i_stdarg='$i_stdarg'
17051i_stddef='$i_stddef'
17052i_stdlib='$i_stdlib'
17053i_string='$i_string'
17054i_sunmath='$i_sunmath'
17055i_sysaccess='$i_sysaccess'
17056i_sysdir='$i_sysdir'
17057i_sysfile='$i_sysfile'
17058i_sysfilio='$i_sysfilio'
17059i_sysin='$i_sysin'
17060i_sysioctl='$i_sysioctl'
17061i_syslog='$i_syslog'
17062i_sysmman='$i_sysmman'
17063i_sysmode='$i_sysmode'
17064i_sysmount='$i_sysmount'
17065i_sysndir='$i_sysndir'
17066i_sysparam='$i_sysparam'
17067i_sysresrc='$i_sysresrc'
17068i_syssecrt='$i_syssecrt'
17069i_sysselct='$i_sysselct'
17070i_syssockio='$i_syssockio'
17071i_sysstat='$i_sysstat'
17072i_sysstatfs='$i_sysstatfs'
17073i_sysstatvfs='$i_sysstatvfs'
17074i_systime='$i_systime'
17075i_systimek='$i_systimek'
17076i_systimes='$i_systimes'
17077i_systypes='$i_systypes'
17078i_sysuio='$i_sysuio'
17079i_sysun='$i_sysun'
17080i_sysutsname='$i_sysutsname'
17081i_sysvfs='$i_sysvfs'
17082i_syswait='$i_syswait'
17083i_termio='$i_termio'
17084i_termios='$i_termios'
17085i_time='$i_time'
17086i_unistd='$i_unistd'
17087i_ustat='$i_ustat'
17088i_utime='$i_utime'
17089i_values='$i_values'
17090i_varargs='$i_varargs'
17091i_varhdr='$i_varhdr'
17092i_vfork='$i_vfork'
5f80c64f 17093ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17094inc_version_list='$inc_version_list'
17095inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17096incpath='$incpath'
17097inews='$inews'
b4eb6b3d
JH
17098installarchlib='$installarchlib'
17099installbin='$installbin'
17100installman1dir='$installman1dir'
17101installman3dir='$installman3dir'
17102installprefix='$installprefix'
17103installprefixexp='$installprefixexp'
17104installprivlib='$installprivlib'
17105installscript='$installscript'
17106installsitearch='$installsitearch'
17107installsitebin='$installsitebin'
17108installsitelib='$installsitelib'
17109installstyle='$installstyle'
17110installusrbinperl='$installusrbinperl'
17111installvendorarch='$installvendorarch'
17112installvendorbin='$installvendorbin'
17113installvendorlib='$installvendorlib'
17114intsize='$intsize'
4b661809 17115issymlink='$issymlink'
b4eb6b3d
JH
17116ivdformat='$ivdformat'
17117ivsize='$ivsize'
17118ivtype='$ivtype'
17119known_extensions='$known_extensions'
5f80c64f 17120ksh='$ksh'
5f80c64f
JH
17121ld='$ld'
17122lddlflags='$lddlflags'
17123ldflags='$ldflags'
b4eb6b3d
JH
17124ldflags_uselargefiles='$ldflags_uselargefiles'
17125ldlibpthname='$ldlibpthname'
5f80c64f
JH
17126less='$less'
17127lib_ext='$lib_ext'
17128libc='$libc'
b4eb6b3d 17129libperl='$libperl'
5f80c64f
JH
17130libpth='$libpth'
17131libs='$libs'
43999f95
JH
17132libsdirs='$libsdirs'
17133libsfiles='$libsfiles'
17134libsfound='$libsfound'
13b3f787 17135libspath='$libspath'
5f80c64f 17136libswanted='$libswanted'
b4eb6b3d 17137libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17138line='$line'
17139lint='$lint'
17140lkflags='$lkflags'
17141ln='$ln'
17142lns='$lns'
17143locincpth='$locincpth'
17144loclibpth='$loclibpth'
b4eb6b3d
JH
17145longdblsize='$longdblsize'
17146longlongsize='$longlongsize'
17147longsize='$longsize'
5f80c64f
JH
17148lp='$lp'
17149lpr='$lpr'
17150ls='$ls'
b4eb6b3d
JH
17151lseeksize='$lseeksize'
17152lseektype='$lseektype'
5f80c64f
JH
17153mail='$mail'
17154mailx='$mailx'
17155make='$make'
17156make_set_make='$make_set_make'
b4eb6b3d
JH
17157mallocobj='$mallocobj'
17158mallocsrc='$mallocsrc'
17159malloctype='$malloctype'
17160man1dir='$man1dir'
17161man1direxp='$man1direxp'
17162man1ext='$man1ext'
17163man3dir='$man3dir'
17164man3direxp='$man3direxp'
17165man3ext='$man3ext'
5f80c64f
JH
17166mips_type='$mips_type'
17167mkdir='$mkdir'
b4eb6b3d
JH
17168mmaptype='$mmaptype'
17169modetype='$modetype'
5f80c64f 17170more='$more'
b4eb6b3d 17171multiarch='$multiarch'
5f80c64f 17172mv='$mv'
b4eb6b3d
JH
17173myarchname='$myarchname'
17174mydomain='$mydomain'
17175myhostname='$myhostname'
5f80c64f
JH
17176myuname='$myuname'
17177n='$n'
2cc61e15 17178need_va_copy='$need_va_copy'
b4eb6b3d
JH
17179netdb_hlen_type='$netdb_hlen_type'
17180netdb_host_type='$netdb_host_type'
17181netdb_name_type='$netdb_name_type'
17182netdb_net_type='$netdb_net_type'
5f80c64f
JH
17183nm='$nm'
17184nm_opt='$nm_opt'
17185nm_so_opt='$nm_so_opt'
b4eb6b3d 17186nonxs_ext='$nonxs_ext'
5f80c64f 17187nroff='$nroff'
b4eb6b3d
JH
17188nvEUformat='$nvEUformat'
17189nvFUformat='$nvFUformat'
17190nvGUformat='$nvGUformat'
17191nveformat='$nveformat'
17192nvfformat='$nvfformat'
17193nvgformat='$nvgformat'
17194nvsize='$nvsize'
17195nvtype='$nvtype'
17196o_nonblock='$o_nonblock'
5f80c64f 17197obj_ext='$obj_ext'
b4eb6b3d 17198old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17199optimize='$optimize'
b4eb6b3d 17200orderlib='$orderlib'
5f80c64f
JH
17201osname='$osname'
17202osvers='$osvers'
b4eb6b3d 17203otherlibdirs='$otherlibdirs'
5f80c64f 17204package='$package'
b4eb6b3d
JH
17205pager='$pager'
17206passcat='$passcat'
17207patchlevel='$patchlevel'
5f80c64f 17208path_sep='$path_sep'
b4eb6b3d 17209perl5='$perl5'
5f80c64f 17210perl='$perl'
151e6568 17211perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17212perladmin='$perladmin'
9c839522 17213perllibs='$perllibs'
b4eb6b3d 17214perlpath='$perlpath'
5f80c64f 17215pg='$pg'
b4eb6b3d
JH
17216phostname='$phostname'
17217pidtype='$pidtype'
5f80c64f 17218plibpth='$plibpth'
b4eb6b3d 17219pm_apiversion='$pm_apiversion'
5f80c64f
JH
17220pmake='$pmake'
17221pr='$pr'
b4eb6b3d
JH
17222prefix='$prefix'
17223prefixexp='$prefixexp'
17224privlib='$privlib'
17225privlibexp='$privlibexp'
17226prototype='$prototype'
17227ptrsize='$ptrsize'
17228quadkind='$quadkind'
17229quadtype='$quadtype'
17230randbits='$randbits'
17231randfunc='$randfunc'
17232randseedtype='$randseedtype'
17233ranlib='$ranlib'
17234rd_nodata='$rd_nodata'
17235revision='$revision'
5f80c64f
JH
17236rm='$rm'
17237rmail='$rmail'
5440bc8e 17238run='$run'
5f80c64f 17239runnm='$runnm'
b4eb6b3d
JH
17240sPRIEUldbl='$sPRIEUldbl'
17241sPRIFUldbl='$sPRIFUldbl'
17242sPRIGUldbl='$sPRIGUldbl'
17243sPRIXU64='$sPRIXU64'
17244sPRId64='$sPRId64'
17245sPRIeldbl='$sPRIeldbl'
17246sPRIfldbl='$sPRIfldbl'
17247sPRIgldbl='$sPRIgldbl'
17248sPRIi64='$sPRIi64'
17249sPRIo64='$sPRIo64'
17250sPRIu64='$sPRIu64'
17251sPRIx64='$sPRIx64'
17252sSCNfldbl='$sSCNfldbl'
17253sched_yield='$sched_yield'
17254scriptdir='$scriptdir'
17255scriptdirexp='$scriptdirexp'
5f80c64f 17256sed='$sed'
b4eb6b3d
JH
17257seedfunc='$seedfunc'
17258selectminbits='$selectminbits'
17259selecttype='$selecttype'
5f80c64f
JH
17260sendmail='$sendmail'
17261sh='$sh'
17262shar='$shar'
17263sharpbang='$sharpbang'
b4eb6b3d
JH
17264shmattype='$shmattype'
17265shortsize='$shortsize'
17266shrpenv='$shrpenv'
5f80c64f 17267shsharp='$shsharp'
b4eb6b3d
JH
17268sig_count='$sig_count'
17269sig_name='$sig_name'
17270sig_name_init='$sig_name_init'
17271sig_num='$sig_num'
17272sig_num_init='$sig_num_init'
76d3c696 17273sig_size='$sig_size'
b4eb6b3d
JH
17274signal_t='$signal_t'
17275sitearch='$sitearch'
17276sitearchexp='$sitearchexp'
17277sitebin='$sitebin'
17278sitebinexp='$sitebinexp'
17279sitelib='$sitelib'
17280sitelib_stem='$sitelib_stem'
17281sitelibexp='$sitelibexp'
17282siteprefix='$siteprefix'
17283siteprefixexp='$siteprefixexp'
17284sizesize='$sizesize'
17285sizetype='$sizetype'
5f80c64f
JH
17286sleep='$sleep'
17287smail='$smail'
5f80c64f 17288so='$so'
b4eb6b3d
JH
17289sockethdr='$sockethdr'
17290socketlib='$socketlib'
17291socksizetype='$socksizetype'
5f80c64f
JH
17292sort='$sort'
17293spackage='$spackage'
17294spitshell='$spitshell'
5f80c64f 17295src='$src'
b4eb6b3d
JH
17296ssizetype='$ssizetype'
17297startperl='$startperl'
5f80c64f 17298startsh='$startsh'
b4eb6b3d
JH
17299static_ext='$static_ext'
17300stdchar='$stdchar'
17301stdio_base='$stdio_base'
17302stdio_bufsiz='$stdio_bufsiz'
17303stdio_cnt='$stdio_cnt'
17304stdio_filbuf='$stdio_filbuf'
17305stdio_ptr='$stdio_ptr'
17306stdio_stream_array='$stdio_stream_array'
17307strings='$strings'
5f80c64f 17308submit='$submit'
b4eb6b3d
JH
17309subversion='$subversion'
17310sysman='$sysman'
5f80c64f
JH
17311tail='$tail'
17312tar='$tar'
5440bc8e 17313targetarch='$targetarch'
5f80c64f
JH
17314tbl='$tbl'
17315tee='$tee'
17316test='$test'
b4eb6b3d
JH
17317timeincl='$timeincl'
17318timetype='$timetype'
5440bc8e 17319to='$to'
5f80c64f
JH
17320touch='$touch'
17321tr='$tr'
17322trnl='$trnl'
17323troff='$troff'
b4eb6b3d
JH
17324u16size='$u16size'
17325u16type='$u16type'
17326u32size='$u32size'
17327u32type='$u32type'
17328u64size='$u64size'
17329u64type='$u64type'
17330u8size='$u8size'
17331u8type='$u8type'
17332uidformat='$uidformat'
17333uidsign='$uidsign'
17334uidsize='$uidsize'
17335uidtype='$uidtype'
5f80c64f
JH
17336uname='$uname'
17337uniq='$uniq'
b4eb6b3d
JH
17338uquadtype='$uquadtype'
17339use5005threads='$use5005threads'
17340use64bitall='$use64bitall'
17341use64bitint='$use64bitint'
5440bc8e 17342usecrosscompile='$usecrosscompile'
5f80c64f 17343usedl='$usedl'
b4eb6b3d
JH
17344useithreads='$useithreads'
17345uselargefiles='$uselargefiles'
17346uselongdouble='$uselongdouble'
17347usemorebits='$usemorebits'
17348usemultiplicity='$usemultiplicity'
17349usemymalloc='$usemymalloc'
5f80c64f 17350usenm='$usenm'
b4eb6b3d
JH
17351useopcode='$useopcode'
17352useperlio='$useperlio'
17353useposix='$useposix'
9514c62b 17354usereentrant='$usereentrant'
b4eb6b3d
JH
17355usesfio='$usesfio'
17356useshrplib='$useshrplib'
29209bc5 17357usesocks='$usesocks'
b4eb6b3d
JH
17358usethreads='$usethreads'
17359usevendorprefix='$usevendorprefix'
17360usevfork='$usevfork'
5f80c64f
JH
17361usrinc='$usrinc'
17362uuname='$uuname'
b4eb6b3d
JH
17363uvXUformat='$uvXUformat'
17364uvoformat='$uvoformat'
17365uvsize='$uvsize'
17366uvtype='$uvtype'
17367uvuformat='$uvuformat'
17368uvxformat='$uvxformat'
17369vendorarch='$vendorarch'
17370vendorarchexp='$vendorarchexp'
17371vendorbin='$vendorbin'
17372vendorbinexp='$vendorbinexp'
17373vendorlib='$vendorlib'
17374vendorlib_stem='$vendorlib_stem'
17375vendorlibexp='$vendorlibexp'
17376vendorprefix='$vendorprefix'
17377vendorprefixexp='$vendorprefixexp'
17378version='$version'
861eb78d 17379version_patchlevel_string='$version_patchlevel_string'
d56c5707 17380versiononly='$versiononly'
5f80c64f 17381vi='$vi'
b4eb6b3d 17382voidflags='$voidflags'
5f80c64f 17383xlibpth='$xlibpth'
b4eb6b3d 17384xs_apiversion='$xs_apiversion'
3659ebf1
JH
17385yacc='$yacc'
17386yaccflags='$yaccflags'
5f80c64f
JH
17387zcat='$zcat'
17388zip='$zip'
17389EOT
17390
17391: Add in command line options if available
17392$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17393
17394: add special variables
17395$test -f $src/patchlevel.h && \
d00b958f 17396awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17397echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17398echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17399
17400: propagate old symbols
17401if $test -f UU/config.sh; then
381aa1ff 17402 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17403 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17404 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17405 set X `cat UU/oldsyms`
17406 shift
17407 case $# in
17408 0) ;;
17409 *)
17410 cat <<EOM
17411Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17412EOM
17413 echo "# Variables propagated from previous config.sh file." >>config.sh
17414 for sym in `cat UU/oldsyms`; do
17415 echo " Propagating $hint variable "'$'"$sym..."
17416 eval 'tmp="$'"${sym}"'"'
17417 echo "$tmp" | \
17418 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17419 done
17420 ;;
17421 esac
17422fi
17423
17424: Finish up by extracting the .SH files
17425case "$alldone" in
17426exit)
17427 $rm -rf UU
24ccb310 17428 echo "Extraction done."
5f80c64f
JH
17429 exit 0
17430 ;;
17431cont)
17432 ;;
17433'')
17434 dflt=''
17435 nostick=true
17436 $cat <<EOM
17437
17438If you'd like to make any changes to the config.sh file before I begin
17439to configure things, do it as a shell escape now (e.g. !vi config.sh).
17440
17441EOM
17442 rp="Press return or use a shell escape to edit config.sh:"
17443 . UU/myread
17444 nostick=''
17445 case "$ans" in
17446 '') ;;
17447 *) : in case they cannot read
17448 sh 1>&4 -c "$ans";;
17449 esac
17450 ;;
17451esac
17452
17453: if this fails, just run all the .SH files by hand
17454. ./config.sh
17455
17456echo " "
17457exec 1>&4
a43e8593 17458pwd=`pwd`
5f80c64f 17459. ./UU/extract
a43e8593 17460cd $pwd
5f80c64f
JH
17461
17462if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17463 dflt=y
17464 case "$silent" in
17465 true) ;;
17466 *)
17467 $cat <<EOM
17468
17469Now you need to generate make dependencies by running "$make depend".
17470You might prefer to run it in background: "$make depend > makedepend.out &"
17471It can take a while, so you might not want to run it right now.
17472
17473EOM
17474 ;;
17475 esac
17476 rp="Run $make depend now?"
17477 . UU/myread
17478 case "$ans" in
17479 y*)
3d5d58b1 17480 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17481 ;;
17482 *)
17483 echo "You must run '$make depend' then '$make'."
17484 ;;
17485 esac
17486elif test -f [Mm]akefile; then
17487 echo " "
17488 echo "Now you must run a $make."
17489else
24ccb310 17490 echo "Configure done."
5f80c64f
JH
17491fi
17492
17493if $test -f Policy.sh; then
17494 $cat <<EOM
17495
17496If you compile $package on a different machine or from a different object
17497directory, copy the Policy.sh file from this object directory to the
17498new one before you run Configure -- this will help you with most of
17499the policy defaults.
17500
17501EOM
17502fi
17503if $test -f config.msg; then
17504 echo "Hmm. I also noted the following information while running:"
17505 echo " "
17506 $cat config.msg >&4
17507 $rm -f config.msg
17508fi
17509$rm -f kit*isdone ark*isdone
17510$rm -rf UU
17511
17512: End of Configure
17513