This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
configure.com: no threads/shared without ithreads
[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#
495e2cbe 23# Generated on Wed Oct 3 16:47:48 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
495e2cbe
MB
68 case "X${MACHTYPE:-nonesuchmach}" in
69 *cygwin) ;;
70 *) p_=\; ;;
71 esac
dfe9444c 72 fi
39e571d4 73fi
a0d0e21e
LW
74
75: Proper PATH setting
76paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 77paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 78paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 79paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
80paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
84
85for p in $paths
86do
8e07c86e
AD
87 case "$p_$PATH$p_" in
88 *$p_$p$p_*) ;;
89 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
90 esac
91done
92
8e07c86e 93PATH=.$p_$PATH
2304df62
AD
94export PATH
95
dfe9444c
AD
96: shall we be using ksh?
97inksh=''
98needksh=''
99avoidksh=''
100newsh=/bin/ksh
101changesh=''
ff0cee69 102if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
103 inksh=true
104fi
105if test -f /hp-ux -a -f /bin/ksh; then
106 needksh='to avoid sh bug in "here document" expansion'
107fi
108if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
109 if test X`/usr/bin/uname -v` = X4; then
110 avoidksh="to avoid AIX 4's /bin/sh"
111 newsh=/usr/bin/bsh
2304df62 112 fi
dfe9444c 113fi
cf04f91f
JH
114if test -f /osf_boot -a -f /usr/sbin/setld; then
115 if test X`/usr/bin/uname -s` = XOSF1; then
116 avoidksh="to avoid Digital UNIX' ksh"
117 newsh=/bin/sh
118 unset BIN_SH # if this is 'xpg4' sh will start up ksh
119 fi
120fi
dfe9444c
AD
121case "$inksh/$needksh" in
122/[a-z]*)
c4f23d77 123 ENV=''
dfe9444c
AD
124 changesh=true
125 reason="$needksh"
126 ;;
127esac
128case "$inksh/$avoidksh" in
129true/[a-z]*)
130 changesh=true
131 reason="$avoidksh"
132 ;;
133esac
134case "$inksh/$needksh-$avoidksh-" in
135true/--)
a0d0e21e
LW
136 cat <<EOM
137(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 138mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 139EOM
dfe9444c
AD
140 ;;
141esac
142case "$changesh" in
143true)
144 echo "(Feeding myself to $newsh $reason.)"
145 case "$0" in
146 Configure|*/Configure) exec $newsh $0 "$@";;
147 *) exec $newsh Configure "$@";;
148 esac
149 ;;
150esac
2304df62 151
bfb7748a
AD
152: if needed set CDPATH to a harmless value that is not chatty
153: avoid bash 2.02 problems with empty CDPATH.
154case "$CDPATH" in
155'') ;;
156*) case "$SHELL" in
157 *bash*) CDPATH='.' ;;
158 *) CDPATH='' ;;
159 esac
160 ;;
161esac
2304df62
AD
162: Configure runs within the UU subdirectory
163test -d UU || mkdir UU
8e07c86e 164cd UU && rm -f ./*
2304df62 165
6b356c8e
JH
166ccname=''
167ccversion=''
b4eb6b3d
JH
168ccsymbols=''
169cppccsymbols=''
170cppsymbols=''
5440bc8e
JH
171from=''
172run=''
173targetarch=''
174to=''
175usecrosscompile=''
9c839522 176perllibs=''
b4eb6b3d
JH
177dynamic_ext=''
178extensions=''
179known_extensions=''
180nonxs_ext=''
181static_ext=''
182useopcode=''
183useposix=''
6fcddf3b 184extras=''
ecfc5424 185d_bsd=''
40a7a20a 186d_eunice=''
2304df62
AD
187d_xenix=''
188eunicefix=''
189Mcc=''
dfe9444c 190ar=''
2304df62
AD
191awk=''
192bash=''
193bison=''
194byacc=''
195cat=''
196chgrp=''
197chmod=''
198chown=''
ecfc5424 199comm=''
2304df62
AD
200compress=''
201cp=''
202cpio=''
203cpp=''
204csh=''
205date=''
206echo=''
207egrep=''
208emacs=''
209expr=''
210find=''
211flex=''
2304df62 212grep=''
8ff267be 213gzip=''
2304df62
AD
214inews=''
215ksh=''
216less=''
217line=''
218lint=''
219ln=''
220lp=''
221lpr=''
222ls=''
223mail=''
224mailx=''
dfe9444c 225make=''
2304df62
AD
226mkdir=''
227more=''
228mv=''
693762b4 229nm=''
2304df62
AD
230nroff=''
231perl=''
232pg=''
233pmake=''
234pr=''
235rm=''
236rmail=''
237sed=''
238sendmail=''
2304df62
AD
239shar=''
240sleep=''
241smail=''
242sort=''
243submit=''
244tail=''
245tar=''
246tbl=''
693762b4 247tee=''
2304df62
AD
248test=''
249touch=''
250tr=''
251troff=''
252uname=''
253uniq=''
254uuname=''
255vi=''
256zcat=''
8ff267be 257zip=''
b4eb6b3d
JH
258full_ar=''
259full_sed=''
a0d0e21e 260libswanted=''
2304df62
AD
261hint=''
262myuname=''
85e6fe83
LW
263osname=''
264osvers=''
2304df62
AD
265Author=''
266Date=''
267Header=''
268Id=''
269Locker=''
270Log=''
271RCSfile=''
272Revision=''
273Source=''
274State=''
dfe9444c
AD
275_a=''
276_exe=''
277_o=''
4633a7c4
LW
278archobjs=''
279exe_ext=''
280firstmakefile=''
281lib_ext=''
282obj_ext=''
283path_sep=''
b4eb6b3d 284afs=''
a6d26a0d 285afsroot=''
b4eb6b3d
JH
286alignbytes=''
287ansi2knr=''
288archlib=''
289archlibexp=''
290d_archlib=''
291installarchlib=''
292archname=''
293myarchname=''
294d_atolf=''
295d_atoll=''
296baserev=''
297bin=''
298binexp=''
299installbin=''
300bincompat5005=''
301d_bincompat5005=''
302byteorder=''
2304df62 303cc=''
2304df62
AD
304ccflags=''
305cppflags=''
306ldflags=''
307lkflags=''
8e07c86e 308locincpth=''
2304df62 309optimize=''
b4eb6b3d 310cf_email=''
2304df62
AD
311cf_by=''
312cf_time=''
b4eb6b3d 313charsize=''
2304df62 314contains=''
b4eb6b3d 315cpp_stuff=''
2304df62
AD
316cpplast=''
317cppminus=''
318cpprun=''
319cppstdin=''
74cac757 320d__fwalk=''
b4eb6b3d
JH
321d_access=''
322d_accessx=''
323d_alarm=''
324d_attribut=''
325d_bcmp=''
326d_bcopy=''
327d_bzero=''
328d_casti32=''
329castflags=''
330d_castneg=''
331d_chown=''
332d_chroot=''
333d_chsize=''
758a5d79 334d_class=''
b4eb6b3d
JH
335d_closedir=''
336d_void_closedir=''
4e0554ec 337d_cmsghdr_s=''
b4eb6b3d
JH
338d_const=''
339cryptlib=''
340d_crypt=''
341d_csh=''
342full_csh=''
343d_cuserid=''
344d_dbl_dig=''
2ef53570 345d_dbminitproto=''
b4eb6b3d
JH
346d_difftime=''
347d_dlerror=''
a0d0e21e 348d_dlopen=''
b4eb6b3d
JH
349d_dlsymun=''
350d_dosuid=''
351d_suidsafe=''
352d_drand48proto=''
353d_dup2=''
354d_eaccess=''
355d_endgrent=''
356d_endhent=''
357d_endnent=''
358d_endpent=''
359d_endpwent=''
360d_endsent=''
b363b713 361d_fchdir=''
b4eb6b3d
JH
362d_fchmod=''
363d_fchown=''
364d_fcntl=''
9d9004a9 365d_fcntl_can_lock=''
b4eb6b3d
JH
366d_fd_macros=''
367d_fd_set=''
368d_fds_bits=''
369d_fgetpos=''
758a5d79
JH
370d_finite=''
371d_finitel=''
b4eb6b3d
JH
372d_flexfnam=''
373d_flock=''
2ef53570 374d_flockproto=''
b4eb6b3d 375d_fork=''
758a5d79
JH
376d_fp_class=''
377d_fpclass=''
378d_fpclassify=''
379d_fpclassl=''
b4eb6b3d
JH
380d_fpos64_t=''
381d_frexpl=''
382d_fs_data_s=''
383d_fseeko=''
384d_fsetpos=''
385d_fstatfs=''
411ab01c 386d_fsync=''
b4eb6b3d
JH
387d_ftello=''
388d_ftime=''
389d_gettimeod=''
390d_Gconvert=''
391d_getcwd=''
392d_getespwnam=''
393d_getfsstat=''
394d_getgrent=''
395d_getgrps=''
396d_gethbyaddr=''
397d_gethbyname=''
398d_gethent=''
399aphostname=''
400d_gethname=''
401d_phostname=''
402d_uname=''
403d_gethostprotos=''
4e0554ec 404d_getitimer=''
b4eb6b3d
JH
405d_getlogin=''
406d_getmnt=''
407d_getmntent=''
408d_getnbyaddr=''
409d_getnbyname=''
410d_getnent=''
411d_getnetprotos=''
0c0643d0 412d_getpagsz=''
b4eb6b3d
JH
413d_getpent=''
414d_getpgid=''
415d_getpgrp2=''
416d_bsdgetpgrp=''
417d_getpgrp=''
418d_getppid=''
419d_getprior=''
420d_getpbyname=''
421d_getpbynumber=''
422d_getprotoprotos=''
423d_getprpwnam=''
424d_getpwent=''
425d_getsent=''
426d_getservprotos=''
427d_getspnam=''
428d_getsbyname=''
429d_getsbyport=''
a4f3eea9 430d_gnulibc=''
b4eb6b3d
JH
431d_hasmntopt=''
432d_htonl=''
b4eb6b3d
JH
433d_inetaton=''
434d_int64_t=''
435d_isascii=''
758a5d79
JH
436d_isfinite=''
437d_isinf=''
b4eb6b3d
JH
438d_isnan=''
439d_isnanl=''
440d_killpg=''
441d_lchown=''
442d_ldbl_dig=''
443d_link=''
444d_locconv=''
445d_lockf=''
446d_longdbl=''
447longdblsize=''
448d_longlong=''
449longlongsize=''
450d_lseekproto=''
451d_lstat=''
452d_madvise=''
453d_mblen=''
454d_mbstowcs=''
455d_mbtowc=''
456d_memchr=''
457d_memcmp=''
458d_memcpy=''
459d_memmove=''
460d_memset=''
461d_mkdir=''
462d_mkdtemp=''
463d_mkfifo=''
464d_mkstemp=''
465d_mkstemps=''
466d_mktime=''
467d_mmap=''
468mmaptype=''
469d_modfl=''
e67aeab1 470d_modfl_pow32_bug=''
b4eb6b3d
JH
471d_mprotect=''
472d_msg=''
473d_msgctl=''
474d_msgget=''
4e0554ec 475d_msghdr_s=''
b4eb6b3d
JH
476d_msgrcv=''
477d_msgsnd=''
478d_msync=''
479d_munmap=''
480d_nice=''
2765b840 481d_nl_langinfo=''
b4eb6b3d
JH
482d_off64_t=''
483d_open3=''
484d_fpathconf=''
485d_pathconf=''
486d_pause=''
487d_pipe=''
488d_poll=''
2304df62 489d_portable=''
b4eb6b3d
JH
490d_old_pthread_create_joinable=''
491old_pthread_create_joinable=''
d6483fcc 492d_pthread_atfork=''
b4eb6b3d
JH
493d_pthread_yield=''
494d_sched_yield=''
495sched_yield=''
496d_qgcvt=''
497d_readdir=''
498d_rewinddir=''
499d_seekdir=''
500d_telldir=''
501d_readlink=''
4e0554ec
JH
502d_readv=''
503d_recvmsg=''
b4eb6b3d
JH
504d_rename=''
505d_rmdir=''
506d_safebcpy=''
507d_safemcpy=''
508d_sanemcmp=''
ef9f17be 509d_sbrkproto=''
b4eb6b3d
JH
510d_select=''
511d_sem=''
512d_semctl=''
513d_semget=''
514d_semop=''
4e0554ec 515d_sendmsg=''
b4eb6b3d
JH
516d_setegid=''
517d_seteuid=''
518d_setgrent=''
519d_setgrps=''
520d_sethent=''
4e0554ec 521d_setitimer=''
b4eb6b3d
JH
522d_setlinebuf=''
523d_setlocale=''
524d_setnent=''
525d_setpent=''
526d_setpgid=''
527d_setpgrp2=''
528d_bsdsetpgrp=''
529d_setpgrp=''
530d_setprior=''
531d_setproctitle=''
532d_setpwent=''
533d_setregid=''
534d_setresgid=''
535d_setresuid=''
536d_setreuid=''
537d_setrgid=''
538d_setruid=''
539d_setsent=''
540d_setsid=''
541d_setvbuf=''
542d_sfio=''
543usesfio=''
544d_shm=''
545d_shmat=''
546d_shmatprototype=''
547shmattype=''
548d_shmctl=''
549d_shmdt=''
550d_shmget=''
551d_sigaction=''
983dbef6 552d_sigprocmask=''
b4eb6b3d 553d_sigsetjmp=''
49a78c82 554d_sockatmark=''
2ef53570 555d_sockatmarkproto=''
b4eb6b3d
JH
556d_msg_ctrunc=''
557d_msg_dontroute=''
558d_msg_oob=''
559d_msg_peek=''
560d_msg_proxy=''
561d_oldsock=''
562d_scm_rights=''
563d_socket=''
564d_sockpair=''
565sockethdr=''
566socketlib=''
567d_socklen_t=''
568d_socks5_init=''
569d_sqrtl=''
eef837ea 570d_sresgproto=''
640374d0 571d_sresuproto=''
b4eb6b3d
JH
572d_statblks=''
573d_statfs_f_flags=''
574d_statfs_s=''
575d_fstatvfs=''
576d_statvfs=''
577d_stdio_cnt_lval=''
578d_stdio_ptr_lval=''
a7ffa9b9
NC
579d_stdio_ptr_lval_nochange_cnt=''
580d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
581d_stdiobase=''
582d_stdstdio=''
583stdio_base=''
584stdio_bufsiz=''
585stdio_cnt=''
586stdio_filbuf=''
587stdio_ptr=''
588d_index=''
589d_strchr=''
590d_strcoll=''
591d_strctcpy=''
592d_strerrm=''
593d_strerror=''
594d_sysernlst=''
595d_syserrlst=''
b3c85772 596d_strftime=''
b4eb6b3d
JH
597d_strtod=''
598d_strtol=''
599d_strtold=''
600d_strtoll=''
28e5dec8 601d_strtoq=''
b4eb6b3d
JH
602d_strtoul=''
603d_strtoull=''
604d_strtouq=''
605d_strxfrm=''
606d_symlink=''
607d_syscall=''
2ef53570 608d_syscallproto=''
b4eb6b3d
JH
609d_sysconf=''
610d_system=''
611d_tcgetpgrp=''
612d_tcsetpgrp=''
613d_telldirproto=''
614d_time=''
615timetype=''
616clocktype=''
617d_times=''
618d_truncate=''
619d_tzname=''
4e0554ec
JH
620d_u32align=''
621d_ualarm=''
b4eb6b3d
JH
622d_umask=''
623d_semctl_semid_ds=''
624d_semctl_semun=''
625d_union_semun=''
758a5d79 626d_unordered=''
4e0554ec 627d_usleep=''
2ef53570 628d_usleepproto=''
b4eb6b3d
JH
629d_ustat=''
630d_vfork=''
631usevfork=''
632d_voidsig=''
633signal_t=''
634d_volatile=''
635d_charvspr=''
636d_vprintf=''
637d_wait4=''
638d_waitpid=''
639d_wcstombs=''
640d_wctomb=''
4e0554ec 641d_writev=''
b4eb6b3d 642dlext=''
85e6fe83
LW
643cccdlflags=''
644ccdlflags=''
2304df62 645dlsrc=''
232e078e 646ld=''
85e6fe83 647lddlflags=''
2304df62 648usedl=''
b4eb6b3d
JH
649doublesize=''
650ebcdic=''
651fflushNULL=''
652fflushall=''
653fpossize=''
654fpostype=''
5b463ca7 655gccosandvers=''
8a27cf78 656gccversion=''
b4eb6b3d
JH
657gidformat=''
658gidsign=''
659gidsize=''
660gidtype=''
661groupstype=''
662h_fcntl=''
663h_sysfile=''
664i_arpainet=''
665db_hashtype=''
666db_prefixtype=''
640374d0
JH
667db_version_major=''
668db_version_minor=''
669db_version_patch=''
b4eb6b3d
JH
670i_db=''
671i_dbm=''
672i_rpcsvcdbm=''
673d_dirnamlen=''
674direntrytype=''
675i_dirent=''
a0d0e21e 676i_dld=''
b4eb6b3d
JH
677i_dlfcn=''
678i_fcntl=''
679i_float=''
758a5d79
JH
680i_fp=''
681i_fp_class=''
b4eb6b3d
JH
682i_gdbm=''
683d_grpasswd=''
684i_grp=''
b4eb6b3d
JH
685i_ieeefp=''
686i_inttypes=''
2765b840 687i_langinfo=''
b4eb6b3d
JH
688i_libutil=''
689i_limits=''
690i_locale=''
691i_machcthr=''
692i_malloc=''
693i_math=''
694i_memory=''
695i_mntent=''
696i_ndbm=''
697i_netdb=''
698i_neterrno=''
699i_netinettcp=''
700i_niin=''
701i_sysin=''
702i_poll=''
703i_prot=''
704i_pthread=''
705d_pwage=''
706d_pwchange=''
707d_pwclass=''
708d_pwcomment=''
709d_pwexpire=''
710d_pwgecos=''
711d_pwpasswd=''
712d_pwquota=''
713i_pwd=''
714i_sfio=''
715i_shadow=''
716i_socks=''
717i_stddef=''
718i_stdlib=''
719i_string=''
720strings=''
721i_sunmath=''
722i_sysaccess=''
723i_sysdir=''
724i_sysfile=''
725d_voidtty=''
726i_bsdioctl=''
727i_sysfilio=''
728i_sysioctl=''
729i_syssockio=''
730i_syslog=''
731i_sysmman=''
732i_sysmode=''
733i_sysmount=''
734i_sysndir=''
735i_sysparam=''
736i_sysresrc=''
737i_syssecrt=''
738i_sysselct=''
739i_sysstat=''
740i_sysstatfs=''
741i_sysstatvfs=''
742i_systimes=''
743i_systypes=''
744i_sysuio=''
745i_sysun=''
746i_sysutsname=''
747i_sysvfs=''
748i_syswait=''
749i_sgtty=''
750i_termio=''
751i_termios=''
752i_systime=''
753i_systimek=''
754i_time=''
755timeincl=''
756i_unistd=''
757i_ustat=''
758i_utime=''
759i_values=''
760i_stdarg=''
761i_varargs=''
762i_varhdr=''
763i_vfork=''
764inc_version_list=''
765inc_version_list_init=''
766installprefix=''
767installprefixexp=''
768installstyle=''
769installusrbinperl=''
770intsize=''
771longsize=''
772shortsize=''
4b661809 773issymlink=''
2304df62 774libc=''
b4eb6b3d
JH
775ldlibpthname=''
776libperl=''
777shrpenv=''
778useshrplib=''
a0d0e21e 779glibpth=''
2304df62 780libpth=''
8e07c86e 781loclibpth=''
2304df62
AD
782plibpth=''
783xlibpth=''
1cfa4ec7 784ignore_versioned_solibs=''
2304df62 785libs=''
43999f95
JH
786libsdirs=''
787libsfiles=''
788libsfound=''
13b3f787 789libspath=''
85e6fe83 790lns=''
b4eb6b3d
JH
791d_PRIEUldbl=''
792d_PRIFUldbl=''
793d_PRIGUldbl=''
794d_PRIeldbl=''
795d_PRIfldbl=''
796d_PRIgldbl=''
797d_SCNfldbl=''
798sPRIEUldbl=''
799sPRIFUldbl=''
800sPRIGUldbl=''
801sPRIeldbl=''
802sPRIfldbl=''
803sPRIgldbl=''
804sSCNfldbl=''
805lseeksize=''
806lseektype=''
8ff267be 807make_set_make=''
b4eb6b3d
JH
808d_mymalloc=''
809freetype=''
810mallocobj=''
811mallocsrc=''
812malloctype=''
813usemymalloc=''
814installman1dir=''
815man1dir=''
816man1direxp=''
817man1ext=''
818installman3dir=''
819man3dir=''
820man3direxp=''
821man3ext=''
822modetype=''
823multiarch=''
824mydomain=''
825myhostname=''
826phostname=''
2304df62
AD
827c=''
828n=''
b4eb6b3d
JH
829d_eofnblk=''
830eagain=''
831o_nonblock=''
832rd_nodata=''
2cc61e15 833need_va_copy=''
b4eb6b3d
JH
834netdb_hlen_type=''
835netdb_host_type=''
836netdb_name_type=''
837netdb_net_type=''
838groupcat=''
839hostcat=''
840passcat=''
841orderlib=''
842ranlib=''
843d_perl_otherlibdirs=''
844otherlibdirs=''
2304df62
AD
845package=''
846spackage=''
b4eb6b3d
JH
847pager=''
848api_revision=''
849api_subversion=''
850api_version=''
851api_versionstring=''
852patchlevel=''
151e6568 853perl_patchlevel=''
b4eb6b3d
JH
854revision=''
855subversion=''
856version=''
861eb78d 857version_patchlevel_string=''
b4eb6b3d
JH
858perl5=''
859perladmin=''
860perlpath=''
861d_nv_preserves_uv=''
862d_nv_preserves_uv_bits=''
863i16size=''
864i16type=''
865i32size=''
866i32type=''
867i64size=''
868i64type=''
869i8size=''
870i8type=''
871ivsize=''
872ivtype=''
873nvsize=''
874nvtype=''
875u16size=''
876u16type=''
877u32size=''
878u32type=''
879u64size=''
880u64type=''
881u8size=''
882u8type=''
883uvsize=''
884uvtype=''
885ivdformat=''
886nvEUformat=''
887nvFUformat=''
888nvGUformat=''
889nveformat=''
890nvfformat=''
891nvgformat=''
892uvXUformat=''
893uvoformat=''
894uvuformat=''
895uvxformat=''
896pidtype=''
897prefix=''
898prefixexp=''
899installprivlib=''
900privlib=''
901privlibexp=''
902prototype=''
903ptrsize=''
904d_PRIXU64=''
905d_PRId64=''
906d_PRIi64=''
907d_PRIo64=''
908d_PRIu64=''
909d_PRIx64=''
910sPRIXU64=''
911sPRId64=''
912sPRIi64=''
913sPRIo64=''
914sPRIu64=''
915sPRIx64=''
916d_quad=''
917quadkind=''
918quadtype=''
919uquadtype=''
920drand01=''
921randbits=''
922randfunc=''
923randseedtype=''
924seedfunc=''
925installscript=''
926scriptdir=''
927scriptdirexp=''
928selectminbits=''
929selecttype=''
8ff267be 930sh=''
b4eb6b3d
JH
931sig_count=''
932sig_name=''
933sig_name_init=''
934sig_num=''
935sig_num_init=''
76d3c696 936sig_size=''
b4eb6b3d
JH
937installsitearch=''
938sitearch=''
939sitearchexp=''
940installsitebin=''
941sitebin=''
942sitebinexp=''
943installsitelib=''
944sitelib=''
945sitelib_stem=''
946sitelibexp=''
947siteprefix=''
948siteprefixexp=''
949sizesize=''
950sizetype=''
a0d0e21e 951so=''
b4eb6b3d 952socksizetype=''
2304df62
AD
953sharpbang=''
954shsharp=''
955spitshell=''
dfe9444c 956src=''
b4eb6b3d
JH
957ssizetype=''
958startperl=''
2304df62 959startsh=''
b4eb6b3d
JH
960stdchar=''
961d_stdio_stream_array=''
962stdio_stream_array=''
963sysman=''
5ff3f7a4 964trnl=''
b4eb6b3d
JH
965uidformat=''
966uidsign=''
967uidsize=''
968uidtype=''
969archname64=''
970use64bitall=''
971use64bitint=''
972ccflags_uselargefiles=''
973ldflags_uselargefiles=''
974libswanted_uselargefiles=''
975uselargefiles=''
976uselongdouble=''
977usemorebits=''
978usemultiplicity=''
2304df62 979nm_opt=''
40a7a20a 980nm_so_opt=''
2304df62
AD
981runnm=''
982usenm=''
b4eb6b3d 983useperlio=''
29209bc5 984usesocks=''
b4eb6b3d
JH
985d_oldpthreads=''
986use5005threads=''
987useithreads=''
9514c62b 988usereentrant=''
b4eb6b3d 989usethreads=''
2304df62 990incpath=''
2304df62
AD
991mips_type=''
992usrinc=''
b4eb6b3d
JH
993d_vendorarch=''
994installvendorarch=''
995vendorarch=''
996vendorarchexp=''
997d_vendorbin=''
998installvendorbin=''
999vendorbin=''
1000vendorbinexp=''
1001d_vendorlib=''
1002installvendorlib=''
1003vendorlib=''
1004vendorlib_stem=''
1005vendorlibexp=''
1006usevendorprefix=''
1007vendorprefix=''
1008vendorprefixexp=''
d56c5707 1009versiononly=''
b4eb6b3d
JH
1010defvoidused=''
1011voidflags=''
1012pm_apiversion=''
1013xs_apiversion=''
3659ebf1
JH
1014yacc=''
1015yaccflags=''
2304df62
AD
1016CONFIG=''
1017
ecfc5424
AD
1018define='define'
1019undef='undef'
1020smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1021rmlist=''
1022
1023: We must find out about Eunice early
1024eunicefix=':'
1025if test -f /etc/unixtovms; then
1026 eunicefix=/etc/unixtovms
1027fi
1028if test -f /etc/unixtovms.exe; then
1029 eunicefix=/etc/unixtovms.exe
1030fi
1031
b4eb6b3d 1032i_whoami=''
6b356c8e
JH
1033ccname=''
1034ccversion=''
9c839522 1035perllibs=''
b4eb6b3d
JH
1036: set useposix=false in your hint file to disable the POSIX extension.
1037useposix=true
1038: set useopcode=false in your hint file to disable the Opcode extension.
1039useopcode=true
dfe9444c 1040: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 1041_exe=''
dfe9444c
AD
1042: Extra object files, if any, needed on this platform.
1043archobjs=''
b4eb6b3d 1044archname=''
ff935051
JH
1045: Possible local include directories to search.
1046: Set locincpth to "" in a hint file to defeat local include searches.
1047locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1048locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1049:
1050: no include file wanted by default
1051inclwanted=''
1052
b4eb6b3d 1053groupstype=''
64615a5e 1054libnames=''
732c9516
JH
1055: change the next line if compiling for Xenix/286 on Xenix/386
1056xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1057: Possible local library directories to search.
1058loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1059loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1060
1061: general looking path for locating libraries
5869b1f1 1062glibpth="/lib /usr/lib $xlibpth"
732c9516 1063glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1064test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1065test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1066
1067: Private path used by Configure to find libraries. Its value
1068: is prepended to libpth. This variable takes care of special
1069: machines, like the mips. Usually, it should be empty.
1070plibpth=''
1071
1cfa4ec7
GS
1072: default library list
1073libswanted=''
921b2963 1074: some systems want to use only the non-versioned libso:s
1cfa4ec7 1075ignore_versioned_solibs=''
b4eb6b3d
JH
1076archname64=''
1077ccflags_uselargefiles=''
1078ldflags_uselargefiles=''
1079libswanted_uselargefiles=''
1080: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1081: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1082: set usethreads on the Configure command line to enable threads.
cd040c5e 1083usereentrant='undef'
b4eb6b3d
JH
1084: full support for void wanted by default
1085defvoidused=15
1086
ecfc5424 1087: List of libraries we want.
693762b4 1088: If anyone needs -lnet, put it in a hint file.
997d70a2 1089libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1090libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1091libswanted="$libswanted ndir dir crypt sec"
e61ecf27 1092libswanted="$libswanted ucb bsd BSD PW x util"
1aef975c 1093: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1094: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1095glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1096glibpth="/usr/shlib $glibpth"
1097: Do not use vfork unless overridden by a hint file.
1098usevfork=false
1099
8ff267be 1100: Find the basic shell for Bourne shell scripts
1101case "$sh" in
1102'')
8ff267be 1103 case "$SYSTYPE" in
1104 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1105 *) xxx='/bin/sh';;
1106 esac
1107 if test -f "$xxx"; then
1108 sh="$xxx"
1109 else
1110 : Build up a list and do a single loop so we can 'break' out.
1111 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1112 for xxx in sh bash ksh pdksh ash; do
1113 for p in $pth; do
1114 try="$try ${p}/${xxx}"
1115 done
1116 done
1117 for xxx in $try; do
1118 if test -f "$xxx"; then
1119 sh="$xxx";
8ff267be 1120 break
1121 elif test -f "$xxx.exe"; then
1122 sh="$xxx";
8ff267be 1123 break
1124 fi
1125 done
1126 fi
1127 ;;
1128esac
1129
1130case "$sh" in
b99a9337 1131'') cat >&2 <<EOM
8ff267be 1132$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1133
8ff267be 1134Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1135Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1136we'll try to straighten this all out.
8ff267be 1137EOM
1138 exit 1
1139 ;;
1140esac
1141
760ac839 1142: see if sh knows # comments
73614538 1143if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1144 shsharp=true
1145 spitshell=cat
760ac839
LW
1146 xcat=/bin/cat
1147 test -f $xcat || xcat=/usr/bin/cat
5440bc8e
JH
1148 echo "#!$xcat" >sharp
1149 $eunicefix sharp
1150 chmod +x sharp
1151 ./sharp > today
760ac839 1152 if test -s today; then
760ac839
LW
1153 sharpbang='#!'
1154 else
5440bc8e
JH
1155 echo "#! $xcat" > sharp
1156 $eunicefix sharp
1157 chmod +x sharp
1158 ./sharp > today
760ac839 1159 if test -s today; then
760ac839
LW
1160 sharpbang='#! '
1161 else
760ac839
LW
1162 sharpbang=': use '
1163 fi
1164 fi
1165else
dfe9444c 1166 echo " "
8ff267be 1167 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1168 shsharp=false
1169 cd ..
1170 echo "exec grep -v '^[ ]*#'" >spitshell
1171 chmod +x spitshell
1172 $eunicefix spitshell
1173 spitshell=`pwd`/spitshell
1174 cd UU
1175 echo "I presume that if # doesn't work, #! won't work either!"
1176 sharpbang=': use '
1177fi
5440bc8e 1178rm -f sharp today
760ac839
LW
1179
1180: figure out how to guarantee sh startup
8ff267be 1181case "$startsh" in
1182'') startsh=${sharpbang}${sh} ;;
1183*)
760ac839 1184esac
5440bc8e 1185cat >sharp <<EOSS
760ac839
LW
1186$startsh
1187set abc
1188test "$?abc" != 1
1189EOSS
1190
5440bc8e
JH
1191chmod +x sharp
1192$eunicefix sharp
1193if ./sharp; then
8ff267be 1194 : echo "Yup, it does."
760ac839 1195else
dfe9444c
AD
1196 echo "Hmm... '$startsh' does not guarantee sh startup..."
1197 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1198fi
5440bc8e 1199rm -f sharp
760ac839 1200
aebf16e7
AD
1201
1202: Save command line options in file UU/cmdline.opt for later use in
1203: generating config.sh.
1204cat > cmdline.opt <<EOSH
1205# Configure command line arguments.
1206config_arg0='$0'
1207config_args='$*'
1208config_argc=$#
1209EOSH
1210argn=1
ee45ea83
IZ
1211args_exp=''
1212args_sep=''
aebf16e7
AD
1213for arg in "$@"; do
1214 cat >>cmdline.opt <<EOSH
1215config_arg$argn='$arg'
1216EOSH
ee45ea83
IZ
1217 # Extreme backslashitis: replace each ' by '"'"'
1218 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1219$arg
1220EOC
1221 arg_exp=`cat cmdl.opt`
1222 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1223 argn=`expr $argn + 1`
ee45ea83 1224 args_sep=' '
aebf16e7 1225done
ee45ea83
IZ
1226# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1227# used by ./hints/os2.sh
1228rm -f cmdl.opt
aebf16e7 1229
2304df62
AD
1230: produce awk script to parse command line options
1231cat >options.awk <<'EOF'
1232BEGIN {
02e93a22 1233 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1234
1235 len = length(optstr);
1236 for (i = 1; i <= len; i++) {
1237 c = substr(optstr, i, 1);
1238 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1239 if (a == ":") {
1240 arg[c] = 1;
1241 i++;
1242 }
1243 opt[c] = 1;
1244 }
1245}
1246{
1247 expect = 0;
1248 str = $0;
1249 if (substr(str, 1, 1) != "-") {
1250 printf("'%s'\n", str);
1251 next;
1252 }
1253 len = length($0);
1254 for (i = 2; i <= len; i++) {
1255 c = substr(str, i, 1);
1256 if (!opt[c]) {
1257 printf("-%s\n", substr(str, i));
1258 next;
1259 }
1260 printf("-%s\n", c);
1261 if (arg[c]) {
1262 if (i < len)
1263 printf("'%s'\n", substr(str, i + 1));
1264 else
1265 expect = 1;
1266 next;
1267 }
1268 }
1269}
1270END {
1271 if (expect)
1272 print "?";
1273}
1274EOF
1275
1276: process the command line options
4633a7c4
LW
1277set X `for arg in "$@"; do echo "X$arg"; done |
1278 sed -e s/X// | awk -f options.awk`
2304df62
AD
1279eval "set $*"
1280shift
1281rm -f options.awk
1282
1283: set up default values
1284fastread=''
1285reuseval=false
1286config_sh=''
1287alldone=''
1288error=''
1289silent=''
1290extractsh=''
ecfc5424 1291override=''
16d20bd9 1292knowitall=''
02e93a22 1293rm -f optdef.sh posthint.sh
28757baa 1294cat >optdef.sh <<EOS
1295$startsh
1296EOS
2304df62 1297
dfe9444c 1298
2304df62
AD
1299: option parsing
1300while test $# -gt 0; do
1301 case "$1" in
1302 -d) shift; fastread=yes;;
1303 -e) shift; alldone=cont;;
1304 -f)
1305 shift
1306 cd ..
1307 if test -r "$1"; then
1308 config_sh="$1"
1309 else
a0d0e21e 1310 echo "$me: cannot read config file $1." >&2
2304df62
AD
1311 error=true
1312 fi
1313 cd UU
1314 shift;;
1315 -h) shift; error=true;;
1316 -r) shift; reuseval=true;;
dfe9444c 1317 -s) shift; silent=true; realsilent=true;;
2304df62 1318 -E) shift; alldone=exit;;
16d20bd9 1319 -K) shift; knowitall=true;;
ecfc5424 1320 -O) shift; override=true;;
dfe9444c 1321 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1322 -D)
1323 shift
1324 case "$1" in
1325 *=)
1326 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1327 echo "$me: ignoring -D $1" >&2
1328 ;;
ecfc5424 1329 *=*) echo "$1" | \
1aef975c
AD
1330 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1331 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1332 esac
1333 shift
1334 ;;
1335 -U)
1336 shift
1337 case "$1" in
1aef975c 1338 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1339 *=*)
1340 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1341 echo "$me: ignoring -U $1" >&2
1342 ;;
1aef975c 1343 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1344 esac
1345 shift
1346 ;;
02e93a22
JH
1347 -A)
1348 shift
1349 xxx=''
1350 yyy="$1"
02e93a22 1351 zzz=''
5f83a3e9 1352 uuu=undef
02e93a22 1353 case "$yyy" in
5f83a3e9
JH
1354 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1355 case "$zzz" in
1356 *:*) zzz='' ;;
1357 *) xxx=append
1358 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1359 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1360 esac
1361 ;;
1362 esac
1363 case "$xxx" in
1364 '') case "$yyy" in
1365 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1366 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1367 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1368 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1369 *) xxx=`echo $yyy|sed 's!:.*!!'`
1370 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1371 esac
1372 ;;
1373 esac
02e93a22
JH
1374 case "$xxx" in
1375 append)
5f83a3e9 1376 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1377 clear)
5f83a3e9 1378 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1379 define)
1380 case "$zzz" in
1381 '') zzz=define ;;
1382 esac
5f83a3e9 1383 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1384 eval)
5f83a3e9 1385 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1386 prepend)
5f83a3e9 1387 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1388 undef)
1389 case "$zzz" in
1390 '') zzz="$uuu" ;;
1391 esac
5f83a3e9
JH
1392 echo "$yyy=$zzz" >> posthint.sh ;;
1393 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1394 esac
bde6b06b 1395 shift
02e93a22 1396 ;;
dfe9444c 1397 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1398 exit 0;;
2304df62 1399 --) break;;
a0d0e21e 1400 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1401 *) break;;
1402 esac
1403done
1404
1405case "$error" in
1406true)
1407 cat >&2 <<EOM
2afac517 1408Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1409 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1410 -d : use defaults for all answers.
1411 -e : go on without questioning past the production of config.sh.
1412 -f : specify an alternate default configuration file.
1413 -h : print this help message and exit (with an error status).
1414 -r : reuse C symbols value if possible (skips costly nm extraction).
1415 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1416 -D : define symbol to have some value:
1417 -D symbol symbol gets the value 'define'
1418 -D symbol=value symbol gets the value 'value'
2304df62 1419 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1420 -K : do not use unless you know what you are doing.
ecfc5424 1421 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1422 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1423 -U : undefine symbol:
1424 -U symbol symbol gets the value 'undef'
1425 -U symbol= symbol gets completely empty
02e93a22 1426 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1427 -A symbol=value append " "value to symbol
02e93a22
JH
1428 -A append:symbol=value append value to symbol
1429 -A define:symbol=value define symbol to have value
02e93a22
JH
1430 -A clear:symbol define symbol to be ''
1431 -A define:symbol define symbol to be 'define'
1432 -A eval:symbol=value define symbol to be eval of value
1433 -A prepend:symbol=value prepend value to symbol
1434 -A undef:symbol define symbol to be 'undef'
1435 -A undef:symbol= define symbol to be ''
2304df62
AD
1436 -V : print version number and exit (with a zero status).
1437EOM
1438 exit 1
1439 ;;
1440esac
1441
dfe9444c
AD
1442: Sanity checks
1443case "$fastread$alldone" in
1444yescont|yesexit) ;;
1445*)
aaeb8e51
GS
1446 case "$extractsh" in
1447 true) ;;
1448 *)
1449 if test ! -t 0; then
1450 echo "Say 'sh Configure', not 'sh <Configure'"
1451 exit 1
1452 fi
1453 ;;
1454 esac
dfe9444c
AD
1455 ;;
1456esac
1457
2304df62
AD
1458exec 4>&1
1459case "$silent" in
1460true) exec 1>/dev/null;;
1461esac
1462
ecfc5424 1463: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1464touch optdef.sh
1465. ./optdef.sh
02e93a22
JH
1466: create the posthint manipulation script and leave the file out there...
1467touch posthint.sh
a0d0e21e 1468
2304df62 1469: set package name
85e6fe83 1470package=perl5
b4eb6b3d
JH
1471first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1472last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1473case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1474ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1475*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1476esac
2304df62 1477
2304df62
AD
1478: Some greps do not return status, grrr.
1479echo "grimblepritz" >grimble
1480if grep blurfldyick grimble >/dev/null 2>&1 ; then
1481 contains=contains
1482elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1483 contains=grep
1484else
1485 contains=contains
1486fi
1487rm -f grimble
1488: the following should work in any shell
1489case "$contains" in
1490contains*)
1491 echo " "
1492 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1493 cat >contains <<'EOSS'
1494grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1495EOSS
1496chmod +x contains
1497esac
1498
dfe9444c
AD
1499: Find the path to the source tree
1500case "$src" in
1501'') case "$0" in
b233458b
JH
1502 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1503 case "$src" in
1504 /*) ;;
8504afb7 1505 .) ;;
b233458b
JH
1506 *) src=`cd ../$src && pwd` ;;
1507 esac
1508 ;;
dfe9444c
AD
1509 *) src='.';;
1510 esac;;
1511esac
1512case "$src" in
1513'') src=/
1514 rsrc=/
1515 ;;
1516/*) rsrc="$src";;
1517*) rsrc="../$src";;
1518esac
1519if test -f $rsrc/Configure && \
1520 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1521then
1522 : found it, so we are ok.
1523else
1524 rsrc=''
1525 for src in . .. ../.. ../../.. ../../../..; do
1526 if test -f ../$src/Configure && \
1527 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1528 then
1529 rsrc=../$src
1530 break
1531 fi
1532 done
1533fi
1534case "$rsrc" in
1535'')
1536 cat <<EOM >&4
1537
1538Sorry, I can't seem to locate the source dir for $package. Please start
1539Configure with an explicit path -- i.e. /some/path/Configure.
1540
1541EOM
1542 exit 1
1543 ;;
1544../.) rsrc='..';;
1545*)
1546 echo " "
1547 echo "Sources for $package found in \"$src\"." >&4
1548 ;;
1549esac
1550
1551: script used to extract .SH files with variable substitutions
1552cat >extract <<'EOS'
a02608de 1553PERL_CONFIG_SH=true
dfe9444c 1554echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1555if test -f MANIFEST; then
1556 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1557else
1558 echo "(Looking for .SH files under the source directory.)"
1559 set x `(cd $src; find . -name "*.SH" -print)`
1560fi
1561shift
1562case $# in
15630) set x `(cd $src; echo *.SH)`; shift;;
1564esac
1565if test ! -f $src/$1; then
1566 shift
1567fi
1568mkdir_p='
1569name=$1;
1570create="";
1571while test $name; do
1572 if test ! -d "$name"; then
1573 create="$name $create";
1574 name=`echo $name | sed -e "s|^[^/]*$||"`;
1575 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1576 else
1577 name="";
1578 fi;
1579done;
1580for file in $create; do
1581 mkdir $file;
1582done
1583'
1584for file in $*; do
1585 case "$src" in
1586 ".")
1587 case "$file" in
1588 */*)
1589 dir=`expr X$file : 'X\(.*\)/'`
1590 file=`expr X$file : 'X.*/\(.*\)'`
1591 (cd $dir && . ./$file)
1592 ;;
1593 *)
1594 . ./$file
1595 ;;
1596 esac
1597 ;;
1598 *)
1599 case "$file" in
1600 */*)
1601 dir=`expr X$file : 'X\(.*\)/'`
1602 file=`expr X$file : 'X.*/\(.*\)'`
1603 (set x $dir; shift; eval $mkdir_p)
1604 sh <$src/$dir/$file
1605 ;;
1606 *)
1607 sh <$src/$file
1608 ;;
1609 esac
1610 ;;
1611 esac
1612done
1613if test -f $src/config_h.SH; then
1614 if test ! -f config.h; then
1615 : oops, they left it out of MANIFEST, probably, so do it anyway.
1616 . $src/config_h.SH
1617 fi
1618fi
1619EOS
1620
1621: extract files and exit if asked to do so
1622case "$extractsh" in
1623true)
1624 case "$realsilent" in
1625 true) ;;
1626 *) exec 1>&4;;
1627 esac
1628 case "$config_sh" in
1629 '') config_sh='config.sh';;
1630 esac
1631 echo " "
1632 echo "Fetching answers from $config_sh..."
1633 cd ..
1634 . $config_sh
1635 test "$override" && . ./optdef.sh
1636 echo " "
1637 . UU/extract
1638 rm -rf UU
24ccb310 1639 echo "Extraction done."
dfe9444c
AD
1640 exit 0
1641 ;;
1642esac
1643
1644: Eunice requires " " instead of "", can you believe it
1645echo " "
1646: Here we go...
1647echo "Beginning of configuration questions for $package."
1648
1649trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1650
2304df62
AD
1651: first determine how to suppress newline on echo command
1652echo " "
1653echo "Checking echo to see how to suppress newlines..."
1654(echo "hi there\c" ; echo " ") >.echotmp
1655if $contains c .echotmp >/dev/null 2>&1 ; then
1656 echo "...using -n."
1657 n='-n'
1658 c=''
1659else
1660 cat <<'EOM'
1661...using \c
1662EOM
1663 n=''
1664 c='\c'
1665fi
1666echo $n "The star should be here-->$c"
1667echo '*'
1668rm -f .echotmp
1669
1670: Now test for existence of everything in MANIFEST
1671echo " "
dfe9444c 1672if test -f $rsrc/MANIFEST; then
2304df62 1673 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1674 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1675 rm -f missing
dfe9444c 1676 tmppwd=`pwd`
2304df62 1677 for filelist in x??; do
dfe9444c 1678 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1679 done
1680 if test -s missing; then
1681 cat missing >&4
1682 cat >&4 <<'EOM'
1683
1684THIS PACKAGE SEEMS TO BE INCOMPLETE.
1685
1686You have the option of continuing the configuration process, despite the
1687distinct possibility that your kit is damaged, by typing 'y'es. If you
1688do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1689and contact the author (perlbug@perl.org).
2304df62
AD
1690
1691EOM
1692 echo $n "Continue? [n] $c" >&4
1693 read ans
1694 case "$ans" in
1695 y*)
1696 echo "Continuing..." >&4
1697 rm -f missing
1698 ;;
1699 *)
1700 echo "ABORTING..." >&4
1701 kill $$
1702 ;;
1703 esac
1704 else
dfe9444c 1705 echo "Looks good..."
2304df62
AD
1706 fi
1707else
1708 echo "There is no MANIFEST file. I hope your kit is complete !"
1709fi
1710rm -f missing x??
1711
5ff3f7a4
GS
1712echo " "
1713: Find the appropriate value for a newline for tr
1714if test -n "$DJGPP"; then
1715 trnl='\012'
1716fi
1717if test X"$trnl" = X; then
1718 case "`echo foo|tr '\n' x 2>/dev/null`" in
1719 foox) trnl='\n' ;;
1720 esac
1721fi
1722if test X"$trnl" = X; then
1723 case "`echo foo|tr '\012' x 2>/dev/null`" in
1724 foox) trnl='\012' ;;
1725 esac
1726fi
1727if test X"$trnl" = X; then
1728 cat <<EOM >&2
1729
1730$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1731
1732EOM
1733 exit 1
1734fi
1735
2304df62
AD
1736: compute the number of columns on the terminal for proper question formatting
1737case "$COLUMNS" in
1738'') COLUMNS='80';;
1739esac
1740
1741: set up the echo used in my read
1742myecho="case \"\$xxxm\" in
1743'') echo $n \"\$rp $c\" >&4;;
1744*) case \"\$rp\" in
1745 '') echo $n \"[\$xxxm] $c\";;
1746 *)
1747 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1748 echo \"\$rp\" >&4
1749 echo $n \"[\$xxxm] $c\" >&4
1750 else
1751 echo $n \"\$rp [\$xxxm] $c\" >&4
1752 fi
1753 ;;
1754 esac;;
1755esac"
1756
1757: now set up to do reads with possible shell escape and default assignment
1758cat <<EOSC >myread
28757baa 1759$startsh
2304df62
AD
1760xxxm=\$dflt
1761$myecho
1762ans='!'
1763case "\$fastread" in
1764yes) case "\$dflt" in
1765 '') ;;
1766 *) ans='';
1767 case "\$silent-\$rp" in
1768 true-) ;;
1769 *) echo " " >&4;;
1770 esac;;
1771 esac;;
1772*) case "\$silent" in
1773 true) case "\$rp" in
1774 '') ans='';;
1775 esac;;
1776 esac;;
1777esac
1778while expr "X\$ans" : "X!" >/dev/null; do
1779 read answ
1780 set x \$xxxm
1781 shift
dfe9444c 1782 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1783 case "\$answ" in
dfe9444c
AD
1784 "!")
1785 sh 1>&4
1786 echo " "
1787 $myecho
1788 ;;
1789 !*)
1790 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1791 shift
1792 sh 1>&4 -c "\$*"
1793 echo " "
1794 $myecho
1795 ;;
2304df62
AD
1796 "\$ans")
1797 case "\$ans" in
ecfc5424
AD
1798 \\&*)
1799 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1800 shift
1801 case "\$1" in
1802 -d)
1803 fastread=yes
40a7a20a 1804 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1805 ;;
1806 -*)
40a7a20a 1807 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1808 ;;
1809 esac
1810 $myecho
1811 ans=!
1812 ;;
2304df62
AD
1813 esac;;
1814 *)
1815 case "\$aok" in
1816 y)
1817 echo "*** Substitution done -- please confirm."
1818 xxxm="\$ans"
c9795ab7 1819 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1820 xxxm="\$ans"
1821 ans=!
1822 ;;
1823 *)
1824 echo "*** Error -- try again."
1825 ans=!
1826 ;;
1827 esac
1828 $myecho
1829 ;;
1830 esac
1831 case "\$ans\$xxxm\$nostick" in
1832 '')
1833 ans=!
1834 $myecho
1835 ;;
1836 esac
1837done
1838case "\$ans" in
1839'') ans="\$xxxm";;
1840esac
1841EOSC
1842
1843: create .config dir to save info across Configure sessions
1844test -d ../.config || mkdir ../.config
1845cat >../.config/README <<EOF
1846This directory created by Configure to save information that should
dfe9444c 1847persist across sessions for $package.
2304df62
AD
1848
1849You may safely delete it if you wish.
1850EOF
1851
9507cadf 1852xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1853case "$usedevel" in
0107c034 1854$define|true|[yY]*) ;;
9507cadf 1855*) case "$xversion" in
0107c034
JH
1856 *[13579])
1857 cat >&4 <<EOH
1858*** WHOA THERE!!! ***
1859
1860 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1861 The version of this $package distribution is $xversion, that is, odd,
1862 (as opposed to even) and that signifies a development release.
3d5d58b1 1863 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1864
1865 Do ***NOT*** install this into production use.
1866 Data corruption and crashes are possible.
1867
1868 It is most seriously suggested that you do not continue any further
1869 unless you want to help in developing and debugging Perl.
1870
6adc6a45
JH
1871 If you *still* want to build perl, you can answer 'y' now,
1872 or pass -Dusedevel to Configure.
1873
0107c034
JH
1874EOH
1875 rp='Do you really want to continue?'
1876 dflt='n'
1877 . ./myread
1878 case "$ans" in
8feeef0e
JH
1879 [yY]) echo >&4 "Okay, continuing."
1880 usedevel="$define" ;;
0107c034
JH
1881 *) echo >&4 "Okay, bye."
1882 exit 1
1883 ;;
1884 esac
1885 ;;
1886 esac
1887 ;;
1888esac
8feeef0e
JH
1889case "$usedevel" in
1890$define|true|[yY]*)
1891 case "$versiononly" in
1892 '') versiononly="$define" ;;
1893 esac
1894 case "$installusrbinperl" in
1895 '') installusrbinperl="$undef" ;;
1896 esac
1897 ;;
1898esac
0107c034 1899
2304df62
AD
1900: general instructions
1901needman=true
1902firsttime=true
760ac839 1903user=`(logname) 2>/dev/null`
dfe9444c
AD
1904case "$user" in
1905'') user=`whoami 2>&1`;;
760ac839 1906esac
2304df62
AD
1907if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1908 firsttime=false
1909 echo " "
1910 rp='Would you like to see the instructions?'
1911 dflt=n
1912 . ./myread
1913 case "$ans" in
1914 [yY]*) ;;
1915 *) needman=false;;
1916 esac
1917fi
1918if $needman; then
1919 cat <<EOH
4e2a5f63 1920
2304df62 1921This installation shell script will examine your system and ask you questions
a0d0e21e 1922to determine how the perl5 package should be installed. If you get
2304df62
AD
1923stuck on a question, you may use a ! shell escape to start a subshell or
1924execute a command. Many of the questions will have default answers in square
1925brackets; typing carriage return will give you the default.
1926
1927On some of the questions which ask for file or directory names you are allowed
1928to use the ~name construct to specify the login directory belonging to "name",
1929even if you don't have a shell which knows about that. Questions where this is
1930allowed will be marked "(~name ok)".
1931
1932EOH
1933 rp=''
1934 dflt='Type carriage return to continue'
1935 . ./myread
1936 cat <<'EOH'
1937
1938The prompter used in this script allows you to use shell variables and
1939backticks in your answers. You may use $1, $2, etc... to refer to the words
1940in the default answer, as if the default line was a set of arguments given to a
1941script shell. This means you may also use $* to repeat the whole default line,
1942so you do not have to re-type everything to add something to the default.
1943
1944Everytime there is a substitution, you will have to confirm. If there is an
1945error (e.g. an unmatched backtick), the default answer will remain unchanged
1946and you will be prompted again.
1947
1948If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1949the questions and use the computed defaults (or the previous answers if there
1950was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1951You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1952on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1953
1954EOH
1955 . ./myread
1956 cat <<EOH
1957
1958Much effort has been expended to ensure that this shell script will run on any
1959Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1960Configure and run it again. If you can't run Configure for some reason,
1961you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1962have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1963
1964This installation script affects things in two ways:
1965
19661) it may do direct variable substitutions on some of the files included
1967 in this kit.
19682) it builds a config.h file for inclusion in C programs. You may edit
1969 any of these files as the need arises after running this script.
1970
1971If you make a mistake on a question, there is no easy way to back up to it
1972currently. The easiest thing to do is to edit config.sh and rerun all the SH
1973files. Configure will offer to let you do this before it runs the SH files.
1974
1975EOH
1976 dflt='Type carriage return to continue'
1977 . ./myread
1978 case "$firsttime" in
1979 true) echo $user >>../.config/instruct;;
1980 esac
1981fi
1982
2304df62
AD
1983: find out where common programs are
1984echo " "
1985echo "Locating common programs..." >&4
1986cat <<EOSC >loc
1987$startsh
1988case \$# in
19890) exit 1;;
1990esac
1991thing=\$1
1992shift
1993dflt=\$1
1994shift
1995for dir in \$*; do
1996 case "\$thing" in
1997 .)
1998 if test -d \$dir/\$thing; then
1999 echo \$dir
2000 exit 0
2001 fi
2002 ;;
2003 *)
a0d0e21e 2004 for thisthing in \$dir/\$thing; do
ecfc5424 2005 : just loop through to pick last item
a0d0e21e 2006 done
25f94b33 2007 if test -f \$thisthing; then
a0d0e21e 2008 echo \$thisthing
2304df62
AD
2009 exit 0
2010 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2011 if test -n "$DJGPP"; then
2012 echo \$dir/\$thing.exe
2013 else
2014 : on Eunice apparently
2015 echo \$dir/\$thing
2016 fi
2304df62
AD
2017 exit 0
2018 fi
2019 ;;
2020 esac
2021done
2022echo \$dflt
2023exit 1
2024EOSC
2025chmod +x loc
2026$eunicefix loc
2027loclist="
2028awk
2029cat
f8006fac 2030chmod
b4eb6b3d
JH
2031comm
2032cp
2304df62
AD
2033echo
2034expr
2035grep
a0d0e21e 2036ls
dfe9444c 2037make
b4eb6b3d 2038mkdir
2304df62
AD
2039rm
2040sed
b4eb6b3d 2041sort
85e6fe83 2042touch
2304df62 2043tr
b4eb6b3d 2044uniq
2304df62
AD
2045"
2046trylist="
2047Mcc
dfe9444c 2048ar
3659ebf1 2049bison
b4eb6b3d 2050byacc
2304df62 2051cpp
b4eb6b3d 2052csh
2304df62
AD
2053date
2054egrep
8ff267be 2055gzip
b4eb6b3d 2056less
8ff267be 2057ln
b4eb6b3d 2058more
693762b4 2059nm
b4eb6b3d
JH
2060nroff
2061pg
2304df62
AD
2062test
2063uname
8ff267be 2064zip
2304df62 2065"
8e07c86e 2066pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2067pth="$pth /lib /usr/lib"
2068for file in $loclist; do
dfe9444c
AD
2069 eval xxx=\$$file
2070 case "$xxx" in
2071 /*|?:[\\/]*)
2072 if test -f "$xxx"; then
2073 : ok
2074 else
2075 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2076 xxx=`./loc $file $file $pth`
2077 fi
2078 ;;
2079 '') xxx=`./loc $file $file $pth`;;
2080 *) xxx=`./loc $xxx $xxx $pth`;;
2081 esac
2304df62
AD
2082 eval $file=$xxx
2083 eval _$file=$xxx
2084 case "$xxx" in
2085 /*)
2086 echo $file is in $xxx.
2087 ;;
8e07c86e
AD
2088 ?:[\\/]*)
2089 echo $file is in $xxx.
2090 ;;
2304df62 2091 *)
25f94b33
AD
2092 echo "I don't know where '$file' is, and my life depends on it." >&4
2093 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2094 exit 1
2304df62
AD
2095 ;;
2096 esac
2097done
2098echo " "
2099echo "Don't worry if any of the following aren't found..."
2100say=offhand
2101for file in $trylist; do
dfe9444c
AD
2102 eval xxx=\$$file
2103 case "$xxx" in
2104 /*|?:[\\/]*)
2105 if test -f "$xxx"; then
2106 : ok
2107 else
2108 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2109 xxx=`./loc $file $file $pth`
2110 fi
2111 ;;
2112 '') xxx=`./loc $file $file $pth`;;
2113 *) xxx=`./loc $xxx $xxx $pth`;;
2114 esac
2304df62
AD
2115 eval $file=$xxx
2116 eval _$file=$xxx
2117 case "$xxx" in
2118 /*)
2119 echo $file is in $xxx.
2120 ;;
8e07c86e
AD
2121 ?:[\\/]*)
2122 echo $file is in $xxx.
2123 ;;
2304df62
AD
2124 *)
2125 echo "I don't see $file out there, $say."
2126 say=either
2127 ;;
2128 esac
2129done
2130case "$egrep" in
2131egrep)
2132 echo "Substituting grep for egrep."
2133 egrep=$grep
2134 ;;
2135esac
8ff267be 2136case "$ln" in
2137ln)
2138 echo "Substituting cp for ln."
2139 ln=$cp
2140 ;;
2141esac
2304df62
AD
2142case "$test" in
2143test)
2144 echo "Hopefully test is built into your sh."
2145 ;;
2146*)
73614538 2147 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2148 echo "Using the test built into your sh."
2304df62
AD
2149 test=test
2150 _test=test
2151 fi
2152 ;;
2153esac
2154case "$echo" in
2155echo)
2156 echo "Hopefully echo is built into your sh."
2157 ;;
2158'') ;;
2159*)
2160 echo " "
2161echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2162 $echo $n "hi there$c" >foo1
2163 echo $n "hi there$c" >foo2
2164 if cmp foo1 foo2 >/dev/null 2>&1; then
2165 echo "They are compatible. In fact, they may be identical."
2166 else
2167 case "$n" in
2168 '-n') n='' c='\c';;
2169 *) n='-n' c='';;
2170 esac
2171 cat <<FOO
2172They are not compatible! You are probably running ksh on a non-USG system.
2173I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2174have echo built in and we may have to run some Bourne shell scripts. That
2175means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2176
2177FOO
2178 $echo $n "The star should be here-->$c"
2179 $echo "*"
2180 fi
2181 $rm -f foo1 foo2
2182 ;;
2183esac
2184
2573c5f9
JH
2185cat <<EOS >checkcc
2186$startsh
2187EOS
2188cat <<'EOSC' >>checkcc
2189case "$cc" in
2190'') ;;
2191*) $rm -f try try.*
2192 $cat >try.c <<EOM
2193int main(int argc, char *argv[]) {
2194 return 0;
2195}
2196EOM
e4778687 2197 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2198 :
2199 else
2200 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2201 despair=yes
2202 trygcc=yes
2203 case "$cc" in
2204 *gcc*) trygcc=no ;;
2205 esac
2206 case "`$cc -v -c try.c 2>&1`" in
2207 *gcc*) trygcc=no ;;
2208 esac
2209 if $test X"$trygcc" = Xyes; then
2210 if gcc -o try -c try.c; then
2211 echo " "
2212 echo "You seem to have a working gcc, though." >&4
2213 rp="Would you like to use it?"
2214 dflt=y
2215 if $test -f myread; then
2216 . ./myread
2217 else
2218 if $test -f UU/myread; then
2219 . ./UU/myread
2220 else
2221 echo "Cannot find myread, sorry. Aborting." >&2
2222 exit 1
2223 fi
2224 fi
2225 case "$ans" in
e723fc21 2226 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2227 esac
2228 fi
2229 fi
2230 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2231 $cat >&4 <<EOM
2232You need to find a working C compiler.
2233Either (purchase and) install the C compiler supplied by your OS vendor,
2234or for a free C compiler try http://gcc.gnu.org/
2235I cannot continue any further, aborting.
2236EOM
2573c5f9
JH
2237 exit 1
2238 fi
2239 fi
2240 $rm -f try try.*
2241 ;;
2242esac
2243EOSC
2244
a0d0e21e
LW
2245: determine whether symbolic links are supported
2246echo " "
2247$touch blurfl
2248if $ln -s blurfl sym > /dev/null 2>&1 ; then
2249 echo "Symbolic links are supported." >&4
2250 lns="$ln -s"
2251else
2252 echo "Symbolic links are NOT supported." >&4
2253 lns="$ln"
2254fi
2255$rm -f blurfl sym
2256
dafca956
JH
2257: determine whether symbolic links are supported
2258echo " "
2259case "$lns" in
2260*"ln -s")
2261 echo "Checking how to test for symbolic links..." >&4
2262 $lns blurfl sym
4b661809 2263 if $test "X$issymlink" = X; then
73614538 2264 sh -c "PATH= test -h sym" >/dev/null 2>&1
5d644a95
MB
2265 if test $? = 0; then
2266 issymlink="test -h"
2267 fi
2268 fi
2269 if $test "X$issymlink" = X; then
73614538 2270 if $test -h >/dev/null 2>&1; then
5d644a95
MB
2271 issymlink="$test -h"
2272 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2273 fi
dafca956 2274 fi
4b661809 2275 if $test "X$issymlink" = X; then
dafca956 2276 if $test -L sym 2>/dev/null; then
5d644a95 2277 issymlink="$test -L"
dafca956
JH
2278 fi
2279 fi
4b661809 2280 if $test "X$issymlink" != X; then
5d644a95 2281 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2282 else
2283 echo "I do not know how you can test for symbolic links." >&4
2284 fi
2285 $rm -f blurfl sym
2286 ;;
2287*) echo "No symbolic links, so not testing for their testing..." >&4
2288 ;;
2289esac
2290echo " "
2291
2292
2293case "$mksymlinks" in
2294$define|true|[yY]*)
2295 case "$src" in
2296 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2297 exit 1
2298 ;;
4b661809 2299 *) case "$lns:$issymlink" in
7a800fca 2300 *"ln -s:"*"test -"?)
dafca956
JH
2301 echo "Creating the symbolic links..." >&4
2302 echo "(First creating the subdirectories...)" >&4
2303 cd ..
2304 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2305 read directory
2306 test -z "$directory" && break
2307 mkdir -p $directory
2308 done
2309 # Sanity check 1.
2310 if test ! -d t/base; then
2311 echo "Failed to create the subdirectories. Aborting." >&4
2312 exit 1
2313 fi
2314 echo "(Then creating the symlinks...)" >&4
2315 awk '{print $1}' $src/MANIFEST | while true; do
2316 read filename
2317 test -z "$filename" && break
2318 if test -f $filename; then
5d644a95 2319 if $issymlink $filename; then
dafca956
JH
2320 rm -f $filename
2321 fi
2322 fi
2323 if test -f $filename; then
2324 echo "$filename already exists, not symlinking."
2325 else
2326 ln -s $src/$filename $filename
2327 fi
2328 done
2329 # Sanity check 2.
a0d24b8a
JH
2330 if test ! -f t/base/lex.t; then
2331 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2332 exit 1
2333 fi
2334 cd UU
2335 ;;
2336 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2337 ;;
2338 esac
2339 ;;
2340 esac
2341 ;;
2342esac
2343
5440bc8e
JH
2344
2345case "$usecrosscompile" in
2346$define|true|[yY]*)
93bc48fa 2347 $echo "Cross-compiling..."
5440bc8e
JH
2348 croak=''
2349 case "$cc" in
2350 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2351 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2352 ar=$targetarch-ar
2353 # leave out ld, choosing it is more complex
2354 nm=$targetarch-nm
2355 ranlib=$targetarch-ranlib
93bc48fa 2356 $echo 'extern int foo;' > try.c
f8006fac 2357 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2358 shift
2359 if $test $# -gt 0; then
2360 incpth="$incpth $*"
f8006fac
JH
2361 incpth="`$echo $incpth|$sed 's/^ //'`"
2362 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2363 for i in $*; do
f8006fac 2364 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2365 if $test -d $j; then
2366 libpth="$libpth $j"
2367 fi
2368 done
f8006fac
JH
2369 libpth="`$echo $libpth|$sed 's/^ //'`"
2370 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2371 fi
2372 $rm -f try.c
5440bc8e
JH
2373 ;;
2374 esac
2375 case "$targetarch" in
93bc48fa
JH
2376 '') echo "Targetarch not defined." >&4; croak=y ;;
2377 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2378 esac
2379 case "$incpth" in
93bc48fa 2380 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2381 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2382 esac
2383 case "$libpth" in
93bc48fa 2384 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2385 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2386 esac
93bc48fa
JH
2387 case "$usrinc" in
2388 '') for i in $incpth; do
2389 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2390 usrinc=$i
2391 echo "Guessing usrinc $usrinc." >&4
2392 break
2393 fi
2394 done
2395 case "$usrinc" in
2396 '') echo "Usrinc not defined." >&4; croak=y ;;
2397 esac
2398 ;;
2399 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2400 esac
93bc48fa
JH
2401 case "$targethost" in
2402 '') echo "Targethost not defined." >&4; croak=y ;;
2403 *) echo "Using targethost $targethost." >&4
5440bc8e 2404 esac
93bc48fa
JH
2405 locincpth=' '
2406 loclibpth=' '
5440bc8e 2407 case "$croak" in
93bc48fa 2408 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2409 esac
2410 case "$src" in
2411 /*) run=$src/Cross/run
93c0359c 2412 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2413 to=$src/Cross/to
2414 from=$src/Cross/from
2415 ;;
93bc48fa 2416 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2417 run=$pwd/Cross/run
f8006fac 2418 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2419 to=$pwd/Cross/to
2420 from=$pwd/Cross/from
2421 ;;
2422 esac
2423 case "$targetrun" in
2424 '') targetrun=ssh ;;
2425 esac
2426 case "$targetto" in
2427 '') targetto=scp ;;
2428 esac
2429 case "$targetfrom" in
2430 '') targetfrom=scp ;;
2431 esac
2432 run=$run-$targetrun
2433 to=$to-$targetto
2434 from=$from-$targetfrom
93bc48fa
JH
2435 case "$targetdir" in
2436 '') targetdir=/tmp
2437 echo "Guessing targetdir $targetdir." >&4
2438 ;;
2439 esac
5440bc8e 2440 case "$targetuser" in
93bc48fa
JH
2441 '') targetuser=root
2442 echo "Guessing targetuser $targetuser." >&4
2443 ;;
5440bc8e
JH
2444 esac
2445 case "$targetfrom" in
2446 scp) q=-q ;;
2447 *) q='' ;;
2448 esac
2449 case "$targetrun" in
2450 ssh|rsh)
2451 cat >$run <<EOF
2452#!/bin/sh
93c0359c
JH
2453case "\$1" in
2454-cwd)
2455 shift
2456 cwd=\$1
2457 shift
2458 ;;
2459esac
2460case "\$cwd" in
2461'') cwd=$targetdir ;;
2462esac
5440bc8e
JH
2463exe=\$1
2464shift
93c0359c
JH
2465if $test ! -f \$exe.xok; then
2466 $to \$exe
2467 $touch \$exe.xok
2468fi
2469$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2470EOF
2471 ;;
93bc48fa 2472 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2473 exit 1
2474 ;;
2475 esac
93c0359c
JH
2476 case "$targetmkdir" in
2477 */Cross/mkdir)
2478 cat >$targetmkdir <<EOF
2479#!/bin/sh
2480$targetrun -l $targetuser $targethost "mkdir -p \$@"
2481EOF
f8006fac 2482 $chmod a+rx $targetmkdir
93c0359c
JH
2483 ;;
2484 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2485 exit 1
2486 ;;
2487 esac
5440bc8e
JH
2488 case "$targetto" in
2489 scp|rcp)
2490 cat >$to <<EOF
2491#!/bin/sh
2492for f in \$@
2493do
93c0359c
JH
2494 case "\$f" in
2495 /*)
2496 $targetmkdir \`dirname \$f\`
2497 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2498 ;;
2499 *)
2500 $targetmkdir $targetdir/\`dirname \$f\`
2501 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2502 ;;
2503 esac
5440bc8e
JH
2504done
2505exit 0
2506EOF
2507 ;;
2508 cp) cat >$to <<EOF
2509#!/bin/sh
93c0359c
JH
2510for f in \$@
2511do
2512 case "\$f" in
2513 /*)
2514 $mkdir -p $targetdir/\`dirname \$f\`
2515 $cp \$f $targetdir/\$f || exit 1
2516 ;;
2517 *)
2518 $targetmkdir $targetdir/\`dirname \$f\`
2519 $cp \$f $targetdir/\$f || exit 1
2520 ;;
2521 esac
2522done
2523exit 0
5440bc8e
JH
2524EOF
2525 ;;
93bc48fa 2526 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2527 exit 1
2528 ;;
2529 esac
2530 case "$targetfrom" in
2531 scp|rcp)
2532 cat >$from <<EOF
2533#!/bin/sh
2534for f in \$@
2535do
93c0359c 2536 $rm -f \$f
5440bc8e
JH
2537 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2538done
2539exit 0
2540EOF
2541 ;;
2542 cp) cat >$from <<EOF
2543#!/bin/sh
2544for f in \$@
2545do
93c0359c 2546 $rm -f \$f
5440bc8e
JH
2547 cp $targetdir/\$f . || exit 1
2548done
2549exit 0
2550EOF
2551 ;;
93bc48fa 2552 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2553 exit 1
2554 ;;
2555 esac
93bc48fa
JH
2556 if $test ! -f $run; then
2557 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2558 else
f8006fac 2559 $chmod a+rx $run
5440bc8e 2560 fi
93bc48fa
JH
2561 if $test ! -f $to; then
2562 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2563 else
f8006fac 2564 $chmod a+rx $to
5440bc8e 2565 fi
93bc48fa
JH
2566 if $test ! -f $from; then
2567 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2568 else
f8006fac 2569 $chmod a+rx $from
5440bc8e 2570 fi
93bc48fa 2571 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2572 exit 1
2573 fi
2574 cat >&4 <<EOF
f8006fac
JH
2575Using '$run' for remote execution,
2576and '$from' and '$to'
93bc48fa 2577for remote file transfer.
5440bc8e
JH
2578EOF
2579 ;;
2580*) run=''
2581 to=:
2582 from=:
2583 usecrosscompile='undef'
2584 targetarch=''
2585 ;;
2586esac
2587
ecfc5424
AD
2588: see whether [:lower:] and [:upper:] are supported character classes
2589echo " "
ecfc5424
AD
2590case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2591ABYZ)
2592 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2593 up='[:upper:]'
2594 low='[:lower:]'
2595 ;;
28e8609d
JH
2596*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2597 # (0xc9 and 0xd1), therefore that is a nice testing point.
2598 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2599 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2600 ij) up='[A-Z]'
2601 low='[a-z]'
2602 ;;
2603 esac
2604 fi
2605 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2606 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2607 ij) up='A-Z'
2608 low='a-z'
2609 ;;
2610 esac
2611 fi
2612 if test "X$up" = X -o "X$low" = X; then
2613 case "`echo IJ | od -x 2>/dev/null`" in
2614 *C9D1*|*c9d1*)
2615 echo "Hey, this might be EBCDIC." >&4
2616 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2617 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2618 ij) up='[A-IJ-RS-Z]'
2619 low='[a-ij-rs-z]'
2620 ;;
2621 esac
2622 fi
2623 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2624 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2625 ij) up='A-IJ-RS-Z'
2626 low='a-ij-rs-z'
2627 ;;
2628 esac
2629 fi
2630 ;;
2631 esac
2632 fi
2633esac
3eaeeeae 2634case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2635ij)
2636 echo "Using $up and $low to convert case." >&4
2637 ;;
ecfc5424 2638*)
28e8609d
JH
2639 echo "I don't know how to translate letters from upper to lower case." >&4
2640 echo "Your tr is not acting any way I know of." >&4
2641 exit 1
2642 ;;
ecfc5424
AD
2643esac
2644: set up the translation script tr, must be called with ./tr of course
2645cat >tr <<EOSC
2646$startsh
2647case "\$1\$2" in
2648'[A-Z][a-z]') exec $tr '$up' '$low';;
2649'[a-z][A-Z]') exec $tr '$low' '$up';;
2650esac
2651exec $tr "\$@"
2652EOSC
2653chmod +x tr
2654$eunicefix tr
2655
2304df62
AD
2656: Try to determine whether config.sh was made on this system
2657case "$config_sh" in
2658'')
43999f95
JH
2659myuname=`$uname -a 2>/dev/null`
2660$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2661# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2662# because the A-Z/a-z are not consecutive.
a0d0e21e 2663myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2664 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2665newmyuname="$myuname"
2304df62 2666dflt=n
16d20bd9
AD
2667case "$knowitall" in
2668'')
2669 if test -f ../config.sh; then
2670 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2671 eval "`grep myuname= ../config.sh`"
2672 fi
2673 if test "X$myuname" = "X$newmyuname"; then
2674 dflt=y
2675 fi
2304df62 2676 fi
16d20bd9
AD
2677 ;;
2678*) dflt=y;;
2679esac
2304df62
AD
2680
2681: Get old answers from old config file if Configure was run on the
2682: same system, otherwise use the hints.
2683hint=default
2684cd ..
2685if test -f config.sh; then
16d20bd9
AD
2686 echo " "
2687 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2688 . UU/myread
2689 case "$ans" in
f83701cd
AD
2690 n*|N*) echo "OK, I'll ignore it."
2691 mv config.sh config.sh.old
2692 myuname="$newmyuname"
2693 ;;
2304df62 2694 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2695 tmp_n="$n"
2696 tmp_c="$c"
85cad39c 2697 tmp_sh="$sh"
2304df62
AD
2698 . ./config.sh
2699 cp config.sh UU
ecfc5424
AD
2700 n="$tmp_n"
2701 c="$tmp_c"
85cad39c 2702 : Older versions did not always set $sh. Catch re-use of such
2703 : an old config.sh.
2704 case "$sh" in
2705 '') sh="$tmp_sh" ;;
2706 esac
2304df62
AD
2707 hint=previous
2708 ;;
2709 esac
2710fi
2573c5f9 2711. ./UU/checkcc
2304df62
AD
2712if test ! -f config.sh; then
2713 $cat <<EOM
2714
4e2a5f63
AD
2715First time through, eh? I have some defaults handy for some systems
2716that need some extra help getting the Configure answers right:
2304df62
AD
2717
2718EOM
dfe9444c 2719 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2720 dflt=''
2721 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2722 : tests or hints, please send them to perlbug@perl.org
2304df62 2723 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2724 $test -f /irix && osname=irix
85e6fe83
LW
2725 $test -f /xenix && osname=sco_xenix
2726 $test -f /dynix && osname=dynix
2727 $test -f /dnix && osname=dnix
5f05dabc 2728 $test -f /lynx.os && osname=lynxos
2729 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2730 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2731 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2732 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2733 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2734 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2735 $test -d /usr/apollo/bin && osname=apollo
2736 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2737 $test -d /usr/include/minix && osname=minix
e060872b 2738 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2739 osname=machten
4633a7c4 2740 if $test -x /sbin/version; then
dfe9444c 2741 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2742 $sed -e 's/[A-Za-z]$//'`
2743 elif $test -x /usr/etc/version; then
dfe9444c 2744 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2745 $sed -e 's/[A-Za-z]$//'`
2746 else
2747 osvers="$2.$3"
2748 fi
2749 fi
aaacdc8b
GS
2750
2751 $test -f /sys/posix.dll &&
2752 $test -f /usr/bin/what &&
2753 set X `/usr/bin/what /sys/posix.dll` &&
2754 $test "$3" = UWIN &&
2755 osname=uwin &&
2756 osvers="$5"
2757
2304df62
AD
2758 if $test -f $uname; then
2759 set X $myuname
2760 shift
2761
2304df62 2762 case "$5" in
85e6fe83 2763 fps*) osname=fps ;;
2304df62
AD
2764 mips*)
2765 case "$4" in
85e6fe83
LW
2766 umips) osname=umips ;;
2767 *) osname=mips ;;
2304df62 2768 esac;;
85e6fe83
LW
2769 [23]100) osname=mips ;;
2770 next*) osname=next ;;
ecfc5424 2771 i386*)
c6912327
JH
2772 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2773 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2774 osname='sco'
2775 osvers=$tmp
2776 elif $test -f /etc/kconfig; then
ecfc5424 2777 osname=isc
bd628c73 2778 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2779 osvers=4
2780 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2781 osvers=3
2304df62 2782 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2783 osvers=2
ecfc5424
AD
2784 fi
2785 fi
2000072c 2786 tmp=''
ecfc5424 2787 ;;
c4f23d77
AD
2788 pc*)
2789 if test -n "$DJGPP"; then
2790 osname=dos
2791 osvers=djgpp
2792 fi
2793 ;;
2304df62
AD
2794 esac
2795
2796 case "$1" in
a0d0e21e
LW
2797 aix) osname=aix
2798 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2799 case "$tmp" in
1aef975c 2800 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2801 '<3240'|'<>3240') osvers=3.2.0 ;;
2802 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2803 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2804 *) osvers=$tmp;;
a0d0e21e
LW
2805 esac
2806 ;;
aaacdc8b
GS
2807 bsd386) osname=bsd386
2808 osvers=`$uname -r`
2809 ;;
2810 cygwin*) osname=cygwin
2811 osvers="$3"
2812 ;;
23f87696
SZ
2813 *dc.osx) osname=dcosx
2814 osvers="$3"
2815 ;;
a0d0e21e
LW
2816 dnix) osname=dnix
2817 osvers="$3"
2818 ;;
2819 domainos) osname=apollo
2820 osvers="$3"
2821 ;;
2822 dgux) osname=dgux
2823 osvers="$3"
2824 ;;
760ac839 2825 dynixptx*) osname=dynixptx
e58e581d 2826 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2827 ;;
a0d0e21e
LW
2828 freebsd) osname=freebsd
2829 osvers="$3" ;;
2830 genix) osname=genix ;;
2831 hp*) osname=hpux
bfb7748a 2832 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2833 ;;
a78b0d02 2834 irix*) osname=irix
a0d0e21e
LW
2835 case "$3" in
2836 4*) osvers=4 ;;
2837 5*) osvers=5 ;;
ecfc5424 2838 *) osvers="$3" ;;
a0d0e21e
LW
2839 esac
2840 ;;
2841 linux) osname=linux
2842 case "$3" in
a0d0e21e
LW
2843 *) osvers="$3" ;;
2844 esac
2845 ;;
28e8609d
JH
2846 MiNT) osname=mint
2847 ;;
2848 netbsd*) osname=netbsd
ecfc5424
AD
2849 osvers="$3"
2850 ;;
4e81affe
MM
2851 news-os) osvers="$3"
2852 case "$3" in
2853 4*) osname=newsos4 ;;
2854 *) osname=newsos ;;
2855 esac
2856 ;;
aaacdc8b 2857 next*) osname=next ;;
28bb1e2c 2858 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2859 POSIX-BC | posix-bc ) osname=posix-bc
2860 osvers="$3"
a0d0e21e 2861 ;;
ae3afa4e
TH
2862 powerux | power_ux | powermax_os | powermaxos | \
2863 powerunix | power_unix) osname=powerux
2864 osvers="$3"
2865 ;;
aaacdc8b
GS
2866 qnx) osname=qnx
2867 osvers="$4"
2868 ;;
a0d0e21e
LW
2869 solaris) osname=solaris
2870 case "$3" in
2871 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2872 *) osvers="$3" ;;
a0d0e21e
LW
2873 esac
2874 ;;
85e6fe83
LW
2875 sunos) osname=sunos
2876 case "$3" in
85e6fe83
LW
2877 5*) osname=solaris
2878 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2879 *) osvers="$3" ;;
2304df62
AD
2880 esac
2881 ;;
a0d0e21e 2882 titanos) osname=titanos
85e6fe83 2883 case "$3" in
a0d0e21e
LW
2884 1*) osvers=1 ;;
2885 2*) osvers=2 ;;
2886 3*) osvers=3 ;;
2887 4*) osvers=4 ;;
ecfc5424 2888 *) osvers="$3" ;;
2304df62
AD
2889 esac
2890 ;;
85e6fe83 2891 ultrix) osname=ultrix
ecfc5424 2892 osvers="$3"
2304df62 2893 ;;
28757baa 2894 osf1|mls+) case "$5" in
fed7345c
AD
2895 alpha)
2896 osname=dec_osf
2aa76180
JH
2897 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2898 case "$osvers" in
2899 [1-9].[0-9]*) ;;
2900 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2901 esac
ecfc5424
AD
2902 ;;
2903 hp*) osname=hp_osf1 ;;
2904 mips) osname=mips_osf1 ;;
85e6fe83
LW
2905 esac
2906 ;;
0337d152
BG
2907 unixware) osname=svr5
2908 osvers="$4"
2909 ;;
2910 uts) osname=uts
a0d0e21e
LW
2911 osvers="$3"
2912 ;;
85e6fe83 2913 $2) case "$osname" in
2304df62 2914 *isc*) ;;
a0d0e21e 2915 *freebsd*) ;;
5f05dabc 2916 svr*)
a0d0e21e
LW
2917 : svr4.x or possibly later
2918 case "svr$3" in
2919 ${osname}*)
2920 osname=svr$3
2921 osvers=$4
2922 ;;
2923 esac
2924 case "$osname" in
2925 svr4.0)
2926 : Check for ESIX
2927 if test -f /stand/boot ; then
2928 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2929 if test -n "$INITPROG" -a -f "$INITPROG"; then
2930 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2931 if test -n "$isesix"; then
a0d0e21e
LW
2932 osname=esix4
2933 fi
2934 fi
2935 fi
2936 ;;
2937 esac
2938 ;;
2304df62 2939 *) if test -f /etc/systemid; then
a0d0e21e
LW
2940 osname=sco
2941 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2942 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2943 osvers=$1.$2.$3
c4f23d77 2944 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2945 osvers=$1.$2
c4f23d77 2946 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2947 osvers=$1
2304df62 2948 fi
a0d0e21e
LW
2949 else
2950 case "$osname" in
2951 '') : Still unknown. Probably a generic Sys V.
2952 osname="sysv"
2953 osvers="$3"
2954 ;;
2955 esac
2304df62
AD
2956 fi
2957 ;;
2958 esac
2959 ;;
a0d0e21e
LW
2960 *) case "$osname" in
2961 '') : Still unknown. Probably a generic BSD.
2962 osname="$1"
2963 osvers="$3"
2964 ;;
2965 esac
2966 ;;
2304df62
AD
2967 esac
2968 else
dfe9444c
AD
2969 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2970 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2971 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2972 osname=news_os
2304df62 2973 fi
dfe9444c 2974 $rm -f UU/kernel.what
8e07c86e
AD
2975 elif test -d c:/.; then
2976 set X $myuname
2977 osname=os2
2978 osvers="$5"
2304df62
AD
2979 fi
2980 fi
85e6fe83 2981
5440bc8e
JH
2982 case "$targetarch" in
2983 '') ;;
2984 *) hostarch=$osname
2985 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2986 osvers=''
2987 ;;
2988 esac
2989
a0d0e21e
LW
2990 : Now look for a hint file osname_osvers, unless one has been
2991 : specified already.
2992 case "$hintfile" in
2993 ''|' ')
1e127011 2994 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2995 : Also try without trailing minor version numbers.
1e127011
DD
2996 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2997 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2998 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2999 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3000 case "$file" in
3001 '') dflt=none ;;
3002 *) case "$osvers" in
3003 '') dflt=$file
3004 ;;
dfe9444c 3005 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3006 dflt=$file
dfe9444c 3007 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3008 dflt=$xfile
dfe9444c 3009 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3010 dflt=$xxfile
dfe9444c 3011 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3012 dflt=$xxxfile
dfe9444c 3013 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3014 dflt=$xxxxfile
dfe9444c 3015 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3016 dflt="${osname}"
3017 else
3018 dflt=none
3019 fi
3020 ;;
3021 esac
85e6fe83
LW
3022 ;;
3023 esac
4e2a5f63
AD
3024 if $test -f Policy.sh ; then
3025 case "$dflt" in
3026 *Policy*) ;;
3027 none) dflt="Policy" ;;
3028 *) dflt="Policy $dflt" ;;
3029 esac
3030 fi
85e6fe83 3031 ;;
a0d0e21e 3032 *)
ecfc5424 3033 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3034 ;;
2304df62 3035 esac
1aef975c 3036
4e2a5f63
AD
3037 if $test -f Policy.sh ; then
3038 $cat <<EOM
3039
3040There's also a Policy hint file available, which should make the
3041site-specific (policy) questions easier to answer.
3042EOM
3043
3044 fi
3045
2304df62
AD
3046 $cat <<EOM
3047
3048You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3049A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3050is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3051
3052EOM
4e2a5f63 3053
2304df62 3054 rp="Which of these apply, if any?"
dfe9444c 3055 . UU/myread
85e6fe83
LW
3056 tans=$ans
3057 for file in $tans; do
4e2a5f63
AD
3058 if $test X$file = XPolicy -a -f Policy.sh; then
3059 . Policy.sh
3060 $cat Policy.sh >> UU/config.sh
3061 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3062 . $src/hints/$file.sh
3063 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3064 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3065 : nothing
3066 else
85e6fe83
LW
3067 : Give one chance to correct a possible typo.
3068 echo "$file.sh does not exist"
3069 dflt=$file
3070 rp="hint to use instead?"
dfe9444c 3071 . UU/myread
85e6fe83 3072 for file in $ans; do
dfe9444c
AD
3073 if $test -f "$src/hints/$file.sh"; then
3074 . $src/hints/$file.sh
3075 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3076 elif $test X$ans = X -o X$ans = Xnone ; then
3077 : nothing
3078 else
3079 echo "$file.sh does not exist -- ignored."
3080 fi
3081 done
2304df62
AD
3082 fi
3083 done
85e6fe83 3084
2304df62 3085 hint=recommended
85e6fe83 3086 : Remember our hint file for later.
dfe9444c 3087 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3088 hintfile="$file"
85e6fe83 3089 else
a0d0e21e 3090 hintfile=''
85e6fe83 3091 fi
2304df62
AD
3092fi
3093cd UU
3094;;
3095*)
3096 echo " "
3097 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3098 tmp_n="$n"
3099 tmp_c="$c"
2304df62
AD
3100 cd ..
3101 cp $config_sh config.sh 2>/dev/null
a78b0d02 3102 chmod +w config.sh
2304df62
AD
3103 . ./config.sh
3104 cd UU
3105 cp ../config.sh .
ecfc5424
AD
3106 n="$tmp_n"
3107 c="$tmp_c"
2304df62
AD
3108 hint=previous
3109 ;;
3110esac
1aef975c 3111test "$override" && . ./optdef.sh
2304df62
AD
3112
3113: Restore computed paths
3114for file in $loclist $trylist; do
3115 eval $file="\$_$file"
3116done
3117
85e6fe83 3118cat << EOM
a0d0e21e 3119
85e6fe83 3120Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3121The default value is probably right if the name rings a bell. Otherwise,
3122since spelling matters for me, either accept the default or answer "none"
3123to leave it blank.
a0d0e21e 3124
85e6fe83 3125EOM
85e6fe83 3126case "$osname" in
a0d0e21e 3127 ''|' ')
85e6fe83 3128 case "$hintfile" in
a0d0e21e 3129 ''|' '|none) dflt=none ;;
ecfc5424 3130 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3131 esac
3132 ;;
3133 *) dflt="$osname" ;;
3134esac
3135rp="Operating system name?"
3136. ./myread
3137case "$ans" in
ecfc5424
AD
3138none) osname='' ;;
3139*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3140esac
8ff267be 3141echo " "
3142case "$osvers" in
3143 ''|' ')
3144 case "$hintfile" in
3145 ''|' '|none) dflt=none ;;
3146 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3147 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3148 case "$dflt" in
3149 ''|' ') dflt=none ;;
3150 esac
3151 ;;
3152 esac
3153 ;;
3154 *) dflt="$osvers" ;;
3155esac
3156rp="Operating system version?"
3157. ./myread
3158case "$ans" in
3159none) osvers='' ;;
3160*) osvers="$ans" ;;
3161esac
3162
02e93a22
JH
3163
3164. ./posthint.sh
3165
2304df62 3166: who configured the system
59b83a6f 3167cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3168cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3169case "$cf_by" in
3170"")
8ff267be 3171 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3172 case "$cf_by" in
3173 "") cf_by=unknown ;;
8ff267be 3174 esac ;;
3175esac
2304df62 3176
b4eb6b3d
JH
3177: set up the script used to warn in case of inconsistency
3178cat <<EOS >whoa
3179$startsh
3180EOS
3181cat <<'EOSC' >>whoa
3182dflt=y
3183echo " "
3184echo "*** WHOA THERE!!! ***" >&4
3185echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3186rp=" Keep the $hint value?"
3187. ./myread
3188case "$ans" in
3189y) td=$was; tu=$was;;
3190esac
3191EOSC
3192
3193: function used to set $1 to $val
3194setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3195case "$val$was" in
3196$define$undef) . ./whoa; eval "$var=\$td";;
3197$undef$define) . ./whoa; eval "$var=\$tu";;
3198*) eval "$var=$val";;
3199esac'
3200
3201case "$usethreads" in
3202$define|true|[yY]*) dflt='y';;
3203*) dflt='n';;
3204esac
3205cat <<EOM
3206
3207Perl can be built to take advantage of threads on some systems.
3208To do so, Configure can be run with -Dusethreads.
3209
3210Note that threading is a highly experimental feature, and
3211some known race conditions still remain. If you choose to try
3212it, be very sure to not actually deploy it for production
3213purposes. README.threads has more details, and is required
3214reading if you enable threads.
3215
3216If this doesn't make any sense to you, just accept the default '$dflt'.
3217EOM
3218rp='Build a threading Perl?'
3219. ./myread
3220case "$ans" in
3221y|Y) val="$define" ;;
3222*) val="$undef" ;;
3223esac
3224set usethreads
3225eval $setvar
3226
3227case "$usethreads" in
3228$define)
3229 $cat <<EOM
3230
3231As of 5.5.640, Perl has two different internal threading implementations,
3232the 5.005 version (5005threads) and an interpreter-based version
3233(ithreads) that has one interpreter per thread. Both are very
3234experimental. This arrangement exists to help developers work out
3235which one is better.
3236
3237If you're a casual user, you probably don't want interpreter-threads
3238at this time. There doesn't yet exist a way to create threads from
3239within Perl in this model, i.e., "use Thread;" will NOT work.
3240EOM
3241 : Default to ithreads unless overridden on command line or with
3242 : old config.sh
3243 dflt='y'
3244 case "$use5005threads" in
3245 $define|true|[yY]*) dflt='n';;
3246 esac
3247 case "$useithreads" in
3248 $undef|false|[nN]*) dflt='n';;
3249 esac
3250 rp='Use interpreter-based ithreads?'
3251 . ./myread
3252 case "$ans" in
3253 y|Y) val="$define" ;;
3254 *) val="$undef" ;;
3255 esac
3256 set useithreads
3257 eval $setvar
3258 : Now set use5005threads to the opposite value.
3259 case "$useithreads" in
3260 $define) val="$undef" ;;
3261 *) val="$define" ;;
3262 esac
3263 set use5005threads
3264 eval $setvar
3265 ;;
3266*)
3267 useithreads="$undef"
3268 use5005threads="$undef"
3269 ;;
3270esac
3271
c915ce7f
JH
3272case "$useithreads$use5005threads" in
3273"$define$define")
3274 $cat >&4 <<EOM
3275
3276You cannot have both the ithreads and the 5.005 threads enabled
3277at the same time. Disabling the 5.005 threads since they are
3278much less stable than the ithreads.
3279
3280EOM
3281 use5005threads="$undef"
3282 ;;
3283esac
3284
b4eb6b3d
JH
3285case "$d_oldpthreads" in
3286'') : Configure tests would be welcome here. For now, assume undef.
3287 val="$undef" ;;
3288*) val="$d_oldpthreads" ;;
3289esac
3290set d_oldpthreads
3291eval $setvar
3292
3293
3294case "$usethreads" in
3295"$define"|true|[yY]*)
3296: Look for a hint-file generated 'call-back-unit'. If the
3297: user has specified that a threading perl is to be built,
3298: we may need to set or change some other defaults.
3299 if $test -f usethreads.cbu; then
3300 echo "Your platform has some specific hints for threaded builds, using them..."
3301 . ./usethreads.cbu
3302 else
3303 $cat <<EOM
3304(Your platform doesn't have any specific hints for threaded builds.
3305 Assuming POSIX threads, then.)
3306EOM
3307 fi
3308 ;;
3309esac
3310
3311cat <<EOM
3312
3313Perl can be built so that multiple Perl interpreters can coexist
3314within the same Perl executable.
3315EOM
3316
3317case "$useithreads" in
3318$define)
3319 cat <<EOM
3320This multiple interpreter support is required for interpreter-based threads.
3321EOM
3322 val="$define"
3323 ;;
3324*) case "$usemultiplicity" in
3325 $define|true|[yY]*) dflt='y';;
3326 *) dflt='n';;
3327 esac
3328 echo " "
3329 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3330 rp='Build Perl for multiplicity?'
3331 . ./myread
3332 case "$ans" in
3333 y|Y) val="$define" ;;
3334 *) val="$undef" ;;
3335 esac
3336 ;;
3337esac
3338set usemultiplicity
3339eval $setvar
3340
96056487
JH
3341
3342case "$usemorebits" in
3343"$define"|true|[yY]*)
3344 use64bitint="$define"
3345 uselongdouble="$define"
3346 usemorebits="$define"
3347 ;;
3348*) usemorebits="$undef"
3349 ;;
3350esac
3351
e5e20432
JH
3352: make some quick guesses about what we are up against
3353echo " "
3354$echo $n "Hmm... $c"
3355echo exit 1 >bsd
3356echo exit 1 >usg
3357echo exit 1 >v7
3358echo exit 1 >osf1
3359echo exit 1 >eunice
3360echo exit 1 >xenix
3361echo exit 1 >venix
3362echo exit 1 >os2
3363d_bsd="$undef"
3364$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3365if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3366then
3367 echo "Looks kind of like an OSF/1 system, but we'll see..."
3368 echo exit 0 >osf1
381aa1ff 3369elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3370 xxx=`./loc addbib blurfl $pth`
3371 if $test -f $xxx; then
3372 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3373 echo exit 0 >bsd
3374 echo exit 0 >usg
3375 else
3376 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3377 echo "Looks kind of like an extended USG system, but we'll see..."
3378 else
3379 echo "Looks kind of like a USG system, but we'll see..."
3380 fi
3381 echo exit 0 >usg
3382 fi
3383elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3384 echo "Looks kind of like a BSD system, but we'll see..."
3385 d_bsd="$define"
3386 echo exit 0 >bsd
3387else
3388 echo "Looks kind of like a Version 7 system, but we'll see..."
3389 echo exit 0 >v7
3390fi
3391case "$eunicefix" in
3392*unixtovms*)
3393 $cat <<'EOI'
3394There is, however, a strange, musty smell in the air that reminds me of
3395something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3396EOI
3397 echo exit 0 >eunice
3398 d_eunice="$define"
3399: it so happens the Eunice I know will not run shell scripts in Unix format
3400 ;;
3401*)
3402 echo " "
3403 echo "Congratulations. You aren't running Eunice."
3404 d_eunice="$undef"
3405 ;;
3406esac
3407: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3408: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3409: semicolon as a patch separator
e5e20432
JH
3410case "$p_" in
3411:) ;;
3412*)
3413 $cat <<'EOI'
3414I have the feeling something is not exactly right, however...don't tell me...
3415lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3416(Or you may be running DOS with DJGPP.)
e5e20432
JH
3417EOI
3418 echo exit 0 >os2
3419 ;;
3420esac
3421if test -f /xenix; then
3422 echo "Actually, this looks more like a XENIX system..."
3423 echo exit 0 >xenix
3424 d_xenix="$define"
3425else
3426 echo " "
3427 echo "It's not Xenix..."
3428 d_xenix="$undef"
3429fi
3430chmod +x xenix
3431$eunicefix xenix
3432if test -f /venix; then
3433 echo "Actually, this looks more like a VENIX system..."
3434 echo exit 0 >venix
3435else
3436 echo " "
3437 if ./xenix; then
3438 : null
3439 else
3440 echo "Nor is it Venix..."
3441 fi
3442fi
3443chmod +x bsd usg v7 osf1 eunice xenix venix os2
3444$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3445$rm -f foo
3446
5869b1f1
JH
3447case "$cc" in
3448'') dflt=cc;;
3449*) dflt="$cc";;
3450esac
3451rp="Use which C compiler?"
3452. ./myread
3453cc="$ans"
e5e20432
JH
3454: Look for a hint-file generated 'call-back-unit'. Now that the
3455: user has specified the compiler, we may need to set or change some
3456: other defaults.
3457if $test -f cc.cbu; then
3458 . ./cc.cbu
3459fi
2573c5f9 3460. ./checkcc
8a27cf78 3461
e5e20432
JH
3462echo " "
3463echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3464$cat >try.c <<EOM
e5e20432
JH
3465#include <stdio.h>
3466int main() {
3467#ifdef __GNUC__
3468#ifdef __VERSION__
3469 printf("%s\n", __VERSION__);
3470#else
3471 printf("%s\n", "1");
3472#endif
3473#endif
3474 exit(0);
3475}
3476EOM
5440bc8e
JH
3477if $cc -o try $ccflags $ldflags try.c; then
3478 gccversion=`$run ./try`
e5e20432
JH
3479 case "$gccversion" in
3480 '') echo "You are not using GNU cc." ;;
fc68435e 3481 *) echo "You are using GNU cc $gccversion."
e723fc21 3482 ccname=gcc
fc68435e 3483 ;;
e5e20432
JH
3484 esac
3485else
3486 echo " "
3487 echo "*** WHOA THERE!!! ***" >&4
3488 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3489 case "$knowitall" in
3490 '')
3491 echo " You'd better start hunting for one and let me know about it." >&4
3492 exit 1
3493 ;;
3494 esac
3495fi
5440bc8e 3496$rm -f try try.*
e5e20432
JH
3497case "$gccversion" in
34981*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3499esac
5b463ca7
KS
3500case "$gccversion" in
3501'') gccosandvers='' ;;
10b4ebb5
JH
3502*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3503 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3504 gccshortvers=''
5b463ca7 3505 case "$gccosandvers" in
02903077
JH
3506 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3507 $osname$osvers) ;; # looking good
5b463ca7
KS
3508 $osname*) cat <<EOM >&4
3509
3510*** WHOA THERE!!! ***
3511
3512 Your gcc has not been compiled for the exact release of
3513 your operating system ($gccosandvers versus $osname$osvers).
3514
3515 In general it is a good idea to keep gcc synchronized with
3516 the operating system because otherwise serious problems
3517 may ensue when trying to compile software, like Perl.
3518
3519 I'm trying to be optimistic here, though, and will continue.
3520 If later during the configuration and build icky compilation
02903077
JH
3521 problems appear (headerfile conflicts being the most common
3522 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3523 your operating system release.
3524
3525EOM
3526 ;;
81575342 3527 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3528 esac
3529 ;;
3530esac
e723fc21
JH
3531case "$ccname" in
3532'') ccname="$cc" ;;
3533esac
e5e20432 3534
640374d0 3535
bd9b35c9
JH
3536: decide how portable to be. Allow command line overrides.
3537case "$d_portable" in
3538"$undef") ;;
3539*) d_portable="$define" ;;
104d25b7 3540esac
85ab1d1d 3541
bd9b35c9
JH
3542: set up shell script to do ~ expansion
3543cat >filexp <<EOSS
3544$startsh
3545: expand filename
3546case "\$1" in
3547 ~/*|~)
3548 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3549 ;;
3550 ~*)
3551 if $test -f /bin/csh; then
3552 /bin/csh -f -c "glob \$1"
3553 failed=\$?
3554 echo ""
3555 exit \$failed
e5e20432 3556 else
bd9b35c9
JH
3557 name=\`$expr x\$1 : '..\([^/]*\)'\`
3558 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3559 if $test ! -d "\$dir"; then
3560 me=\`basename \$0\`
3561 echo "\$me: can't locate home directory for: \$name" >&2
3562 exit 1
3563 fi
3564 case "\$1" in
3565 */*)
3566 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3567 ;;
3568 *)
3569 echo \$dir
e5e20432
JH
3570 ;;
3571 esac
3572 fi
b691c02f 3573 ;;
4633a7c4 3574*)
bd9b35c9 3575 echo \$1
2304df62
AD
3576 ;;
3577esac
4633a7c4
LW
3578EOSS
3579chmod +x filexp
3580$eunicefix filexp
2304df62
AD
3581
3582: now set up to get a file name
28757baa 3583cat <<EOS >getfile
3584$startsh
3585EOS
3586cat <<'EOSC' >>getfile
2304df62
AD
3587tilde=''
3588fullpath=''
3589already=''
3590skip=''
3591none_ok=''
3592exp_file=''
a0d0e21e 3593nopath_ok=''
2304df62
AD
3594orig_rp="$rp"
3595orig_dflt="$dflt"
b233458b
JH
3596case "$gfpth" in
3597'') gfpth='.' ;;
3598esac
2304df62
AD
3599
3600case "$fn" in
ecfc5424 3601*\(*)
381aa1ff 3602 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3603 fn=`echo $fn | sed 's/(.*)//'`
3604 ;;
3605esac
3606
3607case "$fn" in
a0d0e21e
LW
3608*:*)
3609 loc_file=`expr $fn : '.*:\(.*\)'`
3610 fn=`expr $fn : '\(.*\):.*'`
3611 ;;
3612esac
3613
3614case "$fn" in
2304df62
AD
3615*~*) tilde=true;;
3616esac
3617case "$fn" in
3618*/*) fullpath=true;;
3619esac
3620case "$fn" in
3621*+*) skip=true;;
3622esac
3623case "$fn" in
3624*n*) none_ok=true;;
3625esac
3626case "$fn" in
3627*e*) exp_file=true;;
3628esac
a0d0e21e
LW
3629case "$fn" in
3630*p*) nopath_ok=true;;
3631esac
2304df62
AD
3632
3633case "$fn" in
3634*f*) type='File';;
3635*d*) type='Directory';;
a0d0e21e 3636*l*) type='Locate';;
2304df62
AD
3637esac
3638
3639what="$type"
3640case "$what" in
3641Locate) what='File';;
3642esac
3643
3644case "$exp_file" in
3645'')
3646 case "$d_portable" in
3647 "$define") ;;
3648 *) exp_file=true;;
3649 esac
3650 ;;
3651esac
3652
3653cd ..
3654while test "$type"; do
3655 redo=''
3656 rp="$orig_rp"
3657 dflt="$orig_dflt"
3658 case "$tilde" in
3659 true) rp="$rp (~name ok)";;
3660 esac
3661 . UU/myread
ecfc5424
AD
3662 if test -f UU/getfile.ok && \
3663 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3664 then
3665 value="$ans"
3666 ansexp="$ans"
3667 break
3668 fi
2304df62
AD
3669 case "$ans" in
3670 none)
3671 value=''
3672 ansexp=''
3673 case "$none_ok" in
3674 true) type='';;
3675 esac
3676 ;;
3677 *)
3678 case "$tilde" in
3679 '') value="$ans"
3680 ansexp="$ans";;
3681 *)
3682 value=`UU/filexp $ans`
3683 case $? in
3684 0)
3685 if test "$ans" != "$value"; then
ecfc5424 3686 echo "(That expands to $value on this system.)"
2304df62
AD
3687 fi
3688 ;;
3689 *) value="$ans";;
3690 esac
3691 ansexp="$value"
3692 case "$exp_file" in
3693 '') value="$ans";;
3694 esac
3695 ;;
3696 esac
3697 case "$fullpath" in
3698 true)
3699 case "$ansexp" in
3700 /*) value="$ansexp" ;;
23da6c43 3701 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3702 *)
3703 redo=true
3704 case "$already" in
3705 true)
3706 echo "I shall only accept a full path name, as in /bin/ls." >&4
3707 echo "Use a ! shell escape if you wish to check pathnames." >&4
3708 ;;
3709 *)
3710 echo "Please give a full path name, starting with slash." >&4
3711 case "$tilde" in
3712 true)
3713 echo "Note that using ~name is ok provided it expands well." >&4
3714 already=true
3715 ;;
3716 esac
3717 esac
3718 ;;
3719 esac
3720 ;;
3721 esac
3722 case "$redo" in
3723 '')
3724 case "$type" in
3725 File)
b233458b
JH
3726 for fp in $gfpth; do
3727 if test "X$fp" = X.; then
3728 pf="$ansexp"
3729 else
3730 pf="$fp/$ansexp"
3731 fi
3732 if test -f "$pf"; then
3733 type=''
3734 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3735 then
3736 echo "($value is not a plain file, but that's ok.)"
3737 type=''
3738 fi
3739 if test X"$type" = X; then
3740 value="$pf"
3741 break
3742 fi
3743 done
2304df62
AD
3744 ;;
3745 Directory)
b233458b
JH
3746 for fp in $gfpth; do
3747 if test "X$fp" = X.; then
f78bfc9c
JH
3748 dir="$ans"
3749 direxp="$ansexp"
b233458b 3750 else
dd858076 3751 dir="$fp/$ansexp"
f78bfc9c 3752 direxp="$fp/$ansexp"
b233458b 3753 fi
f78bfc9c 3754 if test -d "$direxp"; then
b233458b 3755 type=''
f78bfc9c 3756 value="$dir"
b233458b
JH
3757 break
3758 fi
3759 done
2304df62
AD
3760 ;;
3761 Locate)
40000a8c 3762 if test -d "$ansexp"; then
a0d0e21e
LW
3763 echo "(Looking for $loc_file in directory $value.)"
3764 value="$value/$loc_file"
40000a8c 3765 ansexp="$ansexp/$loc_file"
2304df62 3766 fi
40000a8c 3767 if test -f "$ansexp"; then
2304df62
AD
3768 type=''
3769 fi
a0d0e21e
LW
3770 case "$nopath_ok" in
3771 true) case "$value" in
3772 */*) ;;
3773 *) echo "Assuming $value will be in people's path."
3774 type=''
3775 ;;
3776 esac
3777 ;;
3778 esac
2304df62
AD
3779 ;;
3780 esac
3781
3782 case "$skip" in
3783 true) type='';
3784 esac
3785
3786 case "$type" in
3787 '') ;;
3788 *)
3789 if test "$fastread" = yes; then
3790 dflt=y
3791 else
3792 dflt=n
3793 fi
3794 rp="$what $value doesn't exist. Use that name anyway?"
3795 . UU/myread
3796 dflt=''
3797 case "$ans" in
3798 y*) type='';;
3799 *) echo " ";;
3800 esac
3801 ;;
3802 esac
3803 ;;
3804 esac
3805 ;;
3806 esac
3807done
3808cd UU
3809ans="$value"
3810rp="$orig_rp"
3811dflt="$orig_dflt"
ecfc5424 3812rm -f getfile.ok
b233458b 3813test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3814EOSC
3815
bd9b35c9
JH
3816: What should the include directory be ?
3817echo " "
3818$echo $n "Hmm... $c"
3819dflt='/usr/include'
3820incpath=''
3821mips_type=''
3822if $test -f /bin/mips && /bin/mips; then
3823 echo "Looks like a MIPS system..."
3824 $cat >usr.c <<'EOCP'
3825#ifdef SYSTYPE_BSD43
3826/bsd43
3827#endif
3828EOCP
8a27cf78 3829 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3830 dflt='/bsd43/usr/include'
3831 incpath='/bsd43'
3832 mips_type='BSD 4.3'
3833 else
3834 mips_type='System V'
3835 fi
3836 $rm -f usr.c usr.out
3837 echo "and you're compiling with the $mips_type compiler and libraries."
3838 xxx_prompt=y
3839 echo "exit 0" >mips
3840else
3841 echo "Doesn't look like a MIPS system."
3842 xxx_prompt=n
3843 echo "exit 1" >mips
3844fi
3845chmod +x mips
3846$eunicefix mips
3847case "$usrinc" in
3848'') ;;
3849*) dflt="$usrinc";;
3850esac
3851case "$xxx_prompt" in
3852y) fn=d/
3853 echo " "
3854 rp='Where are the include files you want to use?'
3855 . ./getfile
3856 usrinc="$ans"
8e07c86e 3857 ;;
bd9b35c9 3858*) usrinc="$dflt"
8e07c86e
AD
3859 ;;
3860esac
2304df62 3861
96056487
JH
3862: see how we invoke the C preprocessor
3863echo " "
3864echo "Now, how can we feed standard input to your C preprocessor..." >&4
3865cat <<'EOT' >testcpp.c
3866#define ABC abc
3867#define XYZ xyz
3868ABC.XYZ
3869EOT
3870cd ..
3871if test ! -f cppstdin; then
3872 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3873 # AIX cc -E doesn't show the absolute headerfile
3874 # locations but we'll cheat by using the -M flag.
3875 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
3876 else
3877 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3878 fi
3879else
3880 echo "Keeping your $hint cppstdin wrapper."
3881fi
3882chmod 755 cppstdin
3883wrapper=`pwd`/cppstdin
3884ok='false'
3885cd UU
3886
3887if $test "X$cppstdin" != "X" && \
3888 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3889 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3890then
3891 echo "You used to use $cppstdin $cppminus so we'll use that again."
3892 case "$cpprun" in
3893 '') echo "But let's see if we can live without a wrapper..." ;;
3894 *)
3895 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3896 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3897 then
3898 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3899 ok='true'
3900 else
3901 echo "(However, $cpprun $cpplast does not work, let's see...)"
3902 fi
3903 ;;
3904 esac
3905else
3906 case "$cppstdin" in
3907 '') ;;
3908 *)
3909 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3910 ;;
3911 esac
3912fi
3913
3914if $ok; then
3915 : nothing
3916elif echo '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"' -E -" will work...'; \
3923 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3924 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925 echo "Yup, it does."
3926 x_cpp="$cc -E"
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 "Yipee, that works!"
3932 x_cpp="$cc -P"
3933 x_minus='';
3934elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3935 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3936 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937 echo "At long last!"
3938 x_cpp="$cc -P"
3939 x_minus='-';
3940elif echo 'No such luck, 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 "It works!"
3944 x_cpp="$cpp"
3945 x_minus='';
3946elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3947 $cpp - <testcpp.c >testcpp.out 2>&1; \
3948 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949 echo "Hooray, it works! I was beginning to wonder."
3950 x_cpp="$cpp"
3951 x_minus='-';
3952elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3953 $wrapper <testcpp.c >testcpp.out 2>&1; \
3954 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955 x_cpp="$wrapper"
3956 x_minus=''
3957 echo "Eureka!"
3958else
3959 dflt=''
3960 rp="No dice. I can't find a C preprocessor. Name one:"
3961 . ./myread
3962 x_cpp="$ans"
3963 x_minus=''
3964 $x_cpp <testcpp.c >testcpp.out 2>&1
3965 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3966 echo "OK, that will do." >&4
3967 else
3968echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3969 exit 1
3970 fi
3971fi
3972
3973case "$ok" in
3974false)
3975 cppstdin="$x_cpp"
3976 cppminus="$x_minus"
3977 cpprun="$x_cpp"
3978 cpplast="$x_minus"
3979 set X $x_cpp
3980 shift
3981 case "$1" in
3982 "$cpp")
3983 echo "Perhaps can we force $cc -E using a wrapper..."
3984 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3985 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3986 then
3987 echo "Yup, we can."
3988 cppstdin="$wrapper"
3989 cppminus='';
3990 else
3991 echo "Nope, we'll have to live without it..."
3992 fi
3993 ;;
3994 esac
3995 case "$cpprun" in
3996 "$wrapper")
3997 cpprun=''
3998 cpplast=''
3999 ;;
4000 esac
4001 ;;
4002esac
4003
4004case "$cppstdin" in
4005"$wrapper"|'cppstdin') ;;
4006*) $rm -f $wrapper;;
4007esac
4008$rm -f testcpp.c testcpp.out
4009
bd9b35c9
JH
4010: Set private lib path
4011case "$plibpth" in
4012'') if ./mips; then
4013 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4014 fi;;
4015esac
4016case "$libpth" in
4017' ') dlist='';;
4018'') dlist="$loclibpth $plibpth $glibpth";;
4019*) dlist="$libpth";;
4020esac
4021
4022: Now check and see which directories actually exist, avoiding duplicates
4023libpth=''
4024for xxx in $dlist
4025do
4026 if $test -d $xxx; then
4027 case " $libpth " in
4028 *" $xxx "*) ;;
4029 *) libpth="$libpth $xxx";;
4030 esac
4031 fi
4032done
4033$cat <<'EOM'
4034
4035Some systems have incompatible or broken versions of libraries. Among
4036the directories listed in the question below, please remove any you
4037know not to be holding relevant libraries, and add any that are needed.
4038Say "none" for none.
8e07c86e
AD
4039
4040EOM
bd9b35c9
JH
4041case "$libpth" in
4042'') dflt='none';;
8e07c86e 4043*)
bd9b35c9
JH
4044 set X $libpth
4045 shift
4046 dflt=${1+"$@"}
8e07c86e 4047 ;;
a0d0e21e 4048esac
bd9b35c9
JH
4049rp="Directories to use for library searches?"
4050. ./myread
4051case "$ans" in
4052none) libpth=' ';;
4053*) libpth="$ans";;
4054esac
a0d0e21e 4055
bd9b35c9
JH
4056: compute shared library extension
4057case "$so" in
4058'')
4059 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4060 dflt='sl'
dd4e71fd 4061 else
bd9b35c9 4062 dflt='so'
dd4e71fd
JH
4063 fi
4064 ;;
bd9b35c9 4065*) dflt="$so";;
dd4e71fd 4066esac
dd4e71fd
JH
4067$cat <<EOM
4068
bd9b35c9 4069On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4070you want to suppress searching of shared libraries for the remainder
bd9b35c9 4071of this configuration.
dd4e71fd
JH
4072
4073EOM
bd9b35c9
JH
4074rp='What is the file extension used for shared libraries?'
4075. ./myread
4076so="$ans"
dd4e71fd 4077
bd9b35c9
JH
4078: Define several unixisms.
4079: Hints files or command line option can be used to override them.
4080: The convoluted testing is in case hints files set either the old
4081: or the new name.
4082case "$_exe" in
4083'') case "$exe_ext" in
4084 '') ;;
4085 *) _exe="$exe_ext" ;;
dd4e71fd 4086 esac
bd9b35c9 4087 ;;
bfb7748a 4088esac
bd9b35c9
JH
4089case "$_a" in
4090'') case "$lib_ext" in
4091 '') _a='.a';;
4092 *) _a="$lib_ext" ;;
dd4e71fd
JH
4093 esac
4094 ;;
dd4e71fd 4095esac
bd9b35c9
JH
4096case "$_o" in
4097'') case "$obj_ext" in
4098 '') _o='.o';;
4099 *) _o="$obj_ext";;
4100 esac
4101 ;;
4102esac
4103case "$p_" in
4104'') case "$path_sep" in
4105 '') p_=':';;
4106 *) p_="$path_sep";;
4107 esac
4108 ;;
4109esac
4110exe_ext=$_exe
4111lib_ext=$_a
4112obj_ext=$_o
4113path_sep=$p_
dd4e71fd 4114
b4eb6b3d
JH
4115: Which makefile gets called first. This is used by make depend.
4116case "$firstmakefile" in
4117'') firstmakefile='makefile';;
4633a7c4 4118esac
4633a7c4 4119
0f0995ae
JH
4120case "$usesocks" in
4121$define|true|[yY]*) dflt='y';;
4122*) dflt='n';;
4123esac
bd9b35c9 4124cat <<EOM
4633a7c4 4125
bd9b35c9 4126Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4127Configure must be run with -Dusesocks. If you use SOCKS you also need
4128to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4129
0f0995ae 4130If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4131EOM
bd9b35c9
JH
4132rp='Build Perl for SOCKS?'
4133. ./myread
4134case "$ans" in
4135y|Y) val="$define" ;;
4136*) val="$undef" ;;
4137esac
4138set usesocks
4139eval $setvar
4140
cf829ab0
JH
4141case "$usesocks" in
4142$define|true|[yY]*) useperlio="$define";;
4143esac
4144
bd9b35c9
JH
4145: Looking for optional libraries
4146echo " "
4147echo "Checking for optional libraries..." >&4
4148case "$libs" in
4149' '|'') dflt='';;
4150*) dflt="$libs";;
4151esac
4152case "$libswanted" in
4153'') libswanted='c_s';;
4154esac
4155case "$usesocks" in
923fc586 4156"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4157esac
68435ea7
JH
4158libsfound=''
4159libsfiles=''
4160libsdirs=''
13b3f787
JH
4161libspath=''
4162for thisdir in $libpth $xlibpth; do
4163 test -d $thisdir && libspath="$libspath $thisdir"
4164done
bd9b35c9 4165for thislib in $libswanted; do
13b3f787 4166 for thisdir in $libspath; do
f7dd4e7f
JH
4167 xxx=''
4168 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4169 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4170 $test -f "$xxx" && eval $libscheck
4171 $test -f "$xxx" && libstyle=shared
4172 fi
4173 if test ! -f "$xxx"; then
4174 xxx=$thisdir/lib$thislib.$so
4175 $test -f "$xxx" && eval $libscheck
4176 $test -f "$xxx" && libstyle=shared
4177 fi
4178 if test ! -f "$xxx"; then
4179 xxx=$thisdir/lib$thislib$_a
4180 $test -f "$xxx" && eval $libscheck
4181 $test -f "$xxx" && libstyle=static
4182 fi
4183 if test ! -f "$xxx"; then
4184 xxx=$thisdir/$thislib$_a
4185 $test -f "$xxx" && eval $libscheck
4186 $test -f "$xxx" && libstyle=static
4187 fi
4188 if test ! -f "$xxx"; then
4189 xxx=$thisdir/lib${thislib}_s$_a
4190 $test -f "$xxx" && eval $libscheck
4191 $test -f "$xxx" && libstyle=static
09ea5ba9 4192 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4193 fi
4194 if test ! -f "$xxx"; then
4195 xxx=$thisdir/Slib$thislib$_a
4196 $test -f "$xxx" && eval $libscheck
4197 $test -f "$xxx" && libstyle=static
4198 fi
4199 if $test -f "$xxx"; then
43999f95 4200 case "$libstyle" in
f7dd4e7f
JH
4201 shared) echo "Found -l$thislib (shared)." ;;
4202 static) echo "Found -l$thislib." ;;
4203 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4204 esac
bd9b35c9
JH
4205 case " $dflt " in
4206 *"-l$thislib "*);;
f7dd4e7f 4207 *) dflt="$dflt -l$thislib"
43999f95
JH
4208 libsfound="$libsfound $xxx"
4209 yyy=`basename $xxx`
4210 libsfiles="$libsfiles $yyy"
1e127011 4211 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4212 case " $libsdirs " in
4213 *" $yyy "*) ;;
4214 *) libsdirs="$libsdirs $yyy" ;;
4215 esac
4216 ;;
bd9b35c9 4217 esac
f7dd4e7f
JH
4218 break
4219 fi
4220 done
4221 if $test ! -f "$xxx"; then
4222 echo "No -l$thislib."
bd9b35c9
JH
4223 fi
4224done
4225set X $dflt
4226shift
4227dflt="$*"
4228case "$libs" in
4229'') dflt="$dflt";;
4230*) dflt="$libs";;
4231esac
4232case "$dflt" in
4233' '|'') dflt='none';;
4234esac
4633a7c4 4235
bd9b35c9 4236$cat <<EOM
4633a7c4 4237
bd9b35c9
JH
4238In order to compile $package on your machine, a number of libraries
4239are usually needed. Include any other special libraries here as well.
4240Say "none" for none. The default list is almost always right.
8e07c86e 4241EOM
8e07c86e 4242
bd9b35c9
JH
4243echo " "
4244rp="What libraries to use?"
4245. ./myread
4246case "$ans" in
4247none) libs=' ';;
4248*) libs="$ans";;
4249esac
d71b2b6b 4250
bd9b35c9
JH
4251: determine optimization, if desired, or use for debug flag also
4252case "$optimize" in
4253' '|$undef) dflt='none';;
4254'') dflt='-O';;
4255*) dflt="$optimize";;
4256esac
4257$cat <<EOH
d71b2b6b 4258
bd9b35c9
JH
4259By default, $package compiles with the -O flag to use the optimizer.
4260Alternately, you might want to use the symbolic debugger, which uses
4261the -g flag (on traditional Unix systems). Either flag can be
4262specified here. To use neither flag, specify the word "none".
d71b2b6b 4263
bd9b35c9
JH
4264EOH
4265rp="What optimizer/debugger flag should be used?"
4266. ./myread
4267optimize="$ans"
4268case "$optimize" in
4269'none') optimize=" ";;
4270esac
4271
4272dflt=''
4273: We will not override a previous value, but we might want to
4274: augment a hint file
4275case "$hint" in
4276default|recommended)
4277 case "$gccversion" in
4278 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4279 esac
bd9b35c9
JH
4280 case "$optimize" in
4281 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4282 esac
bd9b35c9
JH
4283 case "$gccversion" in
4284 2*) if test -d /etc/conf/kconfig.d &&
4285 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4286 then
4287 dflt="$dflt -posix"
4288 fi
f0d04425 4289 ;;
bd9b35c9
JH
4290 esac
4291 case "$gccversion" in
4292 1*) ;;
4293 2.[0-8]*) ;;
4294 ?*) echo " "
4295 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4296 echo 'int main(void) { return 0; }' > gcctest.c
4297 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4298 echo "Yes, it does." 2>&1
4299 case "$ccflags" in
4300 *strict-aliasing*)
4301 echo "Leaving current flags $ccflags alone." 2>&1
4302 ;;
4303 *) dflt="$dflt -fno-strict-aliasing" ;;
4304 esac
4305 else
4306 echo "Nope, it doesn't, but that's ok." 2>&1
4307 fi
f0d04425 4308 ;;
e5e20432
JH
4309 esac
4310 ;;
4311esac
4312
bd9b35c9
JH
4313case "$mips_type" in
4314*BSD*|'') inclwanted="$locincpth $usrinc";;
4315*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4316esac
4317for thisincl in $inclwanted; do
4318 if $test -d $thisincl; then
4319 if $test x$thisincl != x$usrinc; then
4320 case "$dflt" in
422af00a
LC
4321 *" -I$thisincl "*);;
4322 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4323 esac
4324 fi
4325 fi
4326done
40a7a20a 4327
bd9b35c9
JH
4328inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4329 xxx=true;
4330elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4331 xxx=true;
4332else
4333 xxx=false;
4334fi;
4335if $xxx; then
4336 case "$dflt" in
4337 *$2*);;
4338 *) dflt="$dflt -D$2";;
4339 esac;
4340fi'
40a7a20a 4341
bd9b35c9 4342set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4343
bd9b35c9
JH
4344case "$usesocks" in
4345$define)
4346 ccflags="$ccflags -DSOCKS"
4347 ;;
4348esac
40a7a20a 4349
bd9b35c9
JH
4350case "$hint" in
4351default|recommended) dflt="$ccflags $dflt" ;;
4352*) dflt="$ccflags";;
4353esac
40a7a20a 4354
bd9b35c9
JH
4355case "$dflt" in
4356''|' ') dflt=none;;
4357esac
422af00a 4358
bd9b35c9 4359$cat <<EOH
40a7a20a 4360
bd9b35c9
JH
4361Your C compiler may want other flags. For this question you should include
4362-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4363but you should NOT include libraries or ld flags like -lwhatever. If you
4364want $package to honor its debug switch, you should include -DDEBUGGING here.
4365Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4366
bd9b35c9 4367To use no flags, specify the word "none".
40a7a20a 4368
bd9b35c9
JH
4369EOH
4370set X $dflt
4371shift
4372dflt=${1+"$@"}
4373rp="Any additional cc flags?"
4374. ./myread
4375case "$ans" in
4376none) ccflags='';;
4377*) ccflags="$ans";;
4378esac
8e07c86e 4379
bd9b35c9 4380: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4381case "$cppflags" in
4382'') cppflags="$ccflags" ;;
4383*) cppflags="$cppflags $ccflags" ;;
4384esac
bd9b35c9
JH
4385case "$gccversion" in
43861*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4387esac
bd9b35c9
JH
4388case "$mips_type" in
4389'');;
4390*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4391esac
4392case "$cppflags" in
4393'');;
4394*)
4395 echo " "
4396 echo "Let me guess what the preprocessor flags are..." >&4
4397 set X $cppflags
4398 shift
4399 cppflags=''
4400 $cat >cpp.c <<'EOM'
4401#define BLURFL foo
8e07c86e 4402
bd9b35c9
JH
4403BLURFL xx LFRULB
4404EOM
4405 previous=''
4406 for flag in $*
4407 do
4408 case "$flag" in
4409 -*) ftry="$flag";;
4410 *) ftry="$previous $flag";;
4411 esac
4412 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4413 >cpp1.out 2>/dev/null && \
4414 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4415 >cpp2.out 2>/dev/null && \
4416 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4417 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4418 then
4419 cppflags="$cppflags $ftry"
4420 previous=''
4421 else
4422 previous="$flag"
4423 fi
4424 done
4425 set X $cppflags
4426 shift
4427 cppflags=${1+"$@"}
4428 case "$cppflags" in
4429 *-*) echo "They appear to be: $cppflags";;
4430 esac
4431 $rm -f cpp.c cpp?.out
2afac517 4432 ;;
4433esac
8e07c86e 4434
bd9b35c9
JH
4435: flags used in final linking phase
4436case "$ldflags" in
4437'') if ./venix; then
4438 dflt='-i -z'
10a23457 4439 else
bd9b35c9 4440 dflt=''
10a23457 4441 fi
bd9b35c9
JH
4442 case "$ccflags" in
4443 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4444 esac
bd9b35c9
JH
4445 ;;
4446*) dflt="$ldflags";;
4447esac
4448
4449: Try to guess additional flags to pick up local libraries.
4450for thislibdir in $libpth; do
4451 case " $loclibpth " in
4452 *" $thislibdir "*)
4453 case "$dflt " in
4454 *"-L$thislibdir "*) ;;
4455 *) dflt="$dflt -L$thislibdir" ;;
4456 esac
c4f23d77
AD
4457 ;;
4458 esac
bd9b35c9 4459done
c4f23d77 4460
bd9b35c9
JH
4461case "$dflt" in
4462'') dflt='none' ;;
4463esac
c4f23d77 4464
bd9b35c9
JH
4465$cat <<EOH
4466
4467Your C linker may need flags. For this question you should
4468include -L/whatever and any other flags used by the C linker, but you
4469should NOT include libraries like -lwhatever.
4470
4471Make sure you include the appropriate -L/path flags if your C linker
4472does not normally search all of the directories you specified above,
4473namely
4474 $libpth
4475To use no flags, specify the word "none".
4476
4477EOH
4478
4479rp="Any additional ld flags (NOT including libraries)?"
4480. ./myread
4481case "$ans" in
4482none) ldflags='';;
4483*) ldflags="$ans";;
4484esac
4485rmlist="$rmlist pdp11"
4486
4487: coherency check
4488echo " "
4489echo "Checking your choice of C compiler and flags for coherency..." >&4
4490$cat > try.c <<'EOF'
4491#include <stdio.h>
4492int main() { printf("Ok\n"); exit(0); }
4493EOF
7a282f6d 4494set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4495shift
4496$cat >try.msg <<'EOM'
4497I've tried to compile and run the following simple program:
4498
4499EOM
4500$cat try.c >> try.msg
4501
4502$cat >> try.msg <<EOM
4503
4504I used the command:
4505
4506 $*
5440bc8e 4507 $run ./try
bd9b35c9
JH
4508
4509and I got the following output:
4510
4511EOM
4512dflt=y
73614538 4513if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4514 if $sh -c "$run ./try" >>try.msg 2>&1; then
4515 xxx=`$run ./try`
bd9b35c9
JH
4516 case "$xxx" in
4517 "Ok") dflt=n ;;
4518 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4519 case " $libs " in
4520 *" -lsfio "*)
4521 cat >> try.msg <<'EOQS'
4522If $libs contains -lsfio, and sfio is mis-configured, then it
4523sometimes (apparently) runs and exits with a 0 status, but with no
4524output! It may have to do with sfio's use of _exit vs. exit.
4525
4526EOQS
4527 rp="You have a big problem. Shall I abort Configure"
4528 dflt=y
4529 ;;
4530 esac
4531 ;;
4532 esac
4533 else
4534 echo "The program compiled OK, but exited with status $?." >>try.msg
4535 rp="You have a problem. Shall I abort Configure"
4536 dflt=y
4537 fi
4538else
4539 echo "I can't compile the test program." >>try.msg
4540 rp="You have a BIG problem. Shall I abort Configure"
4541 dflt=y
4542fi
4543case "$dflt" in
4544y)
4545 $cat try.msg >&4
4546 case "$knowitall" in
4547 '')
4548 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4549 ;;
bd9b35c9 4550 *) dflt=n;;
c4f23d77 4551 esac
bd9b35c9
JH
4552 echo " "
4553 . ./myread
4554 case "$ans" in
4555 n*|N*) ;;
4556 *) echo "Ok. Stopping Configure." >&4
4557 exit 1
c4f23d77
AD
4558 ;;
4559 esac
4560 ;;
bd9b35c9 4561n) echo "OK, that should do.";;
c4f23d77 4562esac
bd9b35c9 4563$rm -f try try.* core
c4f23d77 4564
bd9b35c9
JH
4565: define a shorthand compile call
4566compile='
4567mc_file=$1;
4568shift;
08413ebc 4569$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4570: define a shorthand compile call for compilations that should be ok.
4571compile_ok='
4572mc_file=$1;
4573shift;
7a282f6d 4574$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4575
b4eb6b3d 4576: check for lengths of integral types
bd9b35c9 4577echo " "
b4eb6b3d
JH
4578case "$intsize" in
4579'')
4580 echo "Checking to see how big your integers are..." >&4
5440bc8e 4581 $cat >try.c <<'EOCP'
bd9b35c9
JH
4582#include <stdio.h>
4583int main()
4584{
b4eb6b3d
JH
4585 printf("intsize=%d;\n", (int)sizeof(int));
4586 printf("longsize=%d;\n", (int)sizeof(long));
4587 printf("shortsize=%d;\n", (int)sizeof(short));
4588 exit(0);
bd9b35c9 4589}
b4eb6b3d 4590EOCP
5440bc8e
JH
4591 set try
4592 if eval $compile_ok && $run ./try > /dev/null; then
4593 eval `$run ./try`
b4eb6b3d
JH
4594 echo "Your integers are $intsize bytes long."
4595 echo "Your long integers are $longsize bytes long."
4596 echo "Your short integers are $shortsize bytes long."
4597 else
4598 $cat >&4 <<EOM
4599!
4600Help! I can't compile and run the intsize test program: please enlighten me!
4601(This is probably a misconfiguration in your system or libraries, and
4602you really ought to fix it. Still, I'll try anyway.)
4603!
bd9b35c9 4604EOM
b4eb6b3d
JH
4605 dflt=4
4606 rp="What is the size of an integer (in bytes)?"
96056487
JH
4607 . ./myread
4608 intsize="$ans"
4609 dflt=$intsize
4610 rp="What is the size of a long integer (in bytes)?"
4611 . ./myread
4612 longsize="$ans"
4613 dflt=2
4614 rp="What is the size of a short integer (in bytes)?"
4615 . ./myread
4616 shortsize="$ans"
b4eb6b3d
JH
4617 fi
4618 ;;
4619esac
96056487 4620$rm -f try try.*
b4eb6b3d 4621
8dfa8df9
JH
4622: check for void type
4623echo " "
4624echo "Checking to see how well your C compiler groks the void type..." >&4
4625case "$voidflags" in
4626'')
4627 $cat >try.c <<'EOCP'
4628#if TRY & 1
4629void sub() {
4630#else
4631sub() {
4632#endif
4633 extern void moo(); /* function returning void */
4634 void (*goo)(); /* ptr to func returning void */
4635#if TRY & 8
4636 void *hue; /* generic ptr */
4637#endif
4638#if TRY & 2
4639 void (*foo[10])();
4640#endif
4641
4642#if TRY & 4
4643 if(goo == moo) {
4644 exit(0);
4645 }
4646#endif
4647 exit(0);
4648}
4649int main() { sub(); }
4650EOCP
4651 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4652 voidflags=$defvoidused
4653 echo "Good. It appears to support void to the level $package wants.">&4
4654 if $contains warning .out >/dev/null 2>&1; then
4655 echo "However, you might get some warnings that look like this:"
4656 $cat .out
4657 fi
4658 else
4659echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4660 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4661 echo "It supports 1..."
4662 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4663 echo "It also supports 2..."
4664 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4665 voidflags=7
4666 echo "And it supports 4 but not 8 definitely."
4667 else
4668 echo "It doesn't support 4..."
4669 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4670 voidflags=11
4671 echo "But it supports 8."
4672 else
4673 voidflags=3
4674 echo "Neither does it support 8."
4675 fi
4676 fi
4677 else
4678 echo "It does not support 2..."
4679 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4680 voidflags=13
4681 echo "But it supports 4 and 8."
4682 else
4683 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4684 voidflags=5
4685 echo "And it supports 4 but has not heard about 8."
4686 else
4687 echo "However it supports 8 but not 4."
4688 fi
4689 fi
4690 fi
4691 else
4692 echo "There is no support at all for void."
4693 voidflags=0
4694 fi
4695 fi
4696esac
4697case "$voidflags" in
4698"$defvoidused") ;;
4699*) $cat >&4 <<'EOM'
4700 Support flag bits are:
4701 1: basic void declarations.
4702 2: arrays of pointers to functions returning void.
4703 4: operations between pointers to and addresses of void functions.
4704 8: generic void pointers.
4705EOM
4706 dflt="$voidflags";
4707 rp="Your void support flags add up to what?"
4708 . ./myread
4709 voidflags="$ans"
4710 ;;
4711esac
4712$rm -f try.* .out
4713
4714: check for length of pointer
4715echo " "
4716case "$ptrsize" in
4717'')
4718 echo "Checking to see how big your pointers are..." >&4
4719 if test "$voidflags" -gt 7; then
4720 echo '#define VOID_PTR char *' > try.c
4721 else
4722 echo '#define VOID_PTR void *' > try.c
4723 fi
4724 $cat >>try.c <<'EOCP'
4725#include <stdio.h>
4726int main()
4727{
4728 printf("%d\n", (int)sizeof(VOID_PTR));
4729 exit(0);
4730}
4731EOCP
4732 set try
4733 if eval $compile_ok; then
5440bc8e 4734 ptrsize=`$run ./try`
8dfa8df9
JH
4735 echo "Your pointers are $ptrsize bytes long."
4736 else
4737 dflt='4'
4738 echo "(I can't seem to compile the test program. Guessing...)" >&4
4739 rp="What is the size of a pointer (in bytes)?"
4740 . ./myread
4741 ptrsize="$ans"
4742 fi
4743 ;;
4744esac
4745$rm -f try.c try
4746
4747: check for long long
4748echo " "
4749echo "Checking to see if you have long long..." >&4
4750echo 'int main() { long long x = 7; return 0; }' > try.c
4751set try
4752if eval $compile; then
4753 val="$define"
4754 echo "You have long long."
4755else
4756 val="$undef"
4757 echo "You do not have long long."
4758fi
4759$rm try.*
4760set d_longlong
4761eval $setvar
4762
4763: check for length of long long
4764case "${d_longlong}${longlongsize}" in
4765$define)
4766 echo " "
4767 echo "Checking to see how big your long longs are..." >&4
4768 $cat >try.c <<'EOCP'
4769#include <stdio.h>
4770int main()
4771{
4772 printf("%d\n", (int)sizeof(long long));
4773 return(0);
4774}
4775EOCP
4776 set try
4777 if eval $compile_ok; then
5440bc8e 4778 longlongsize=`$run ./try`
8dfa8df9
JH
4779 echo "Your long longs are $longlongsize bytes long."
4780 else
4781 dflt='8'
4782 echo " "
4783 echo "(I can't seem to compile the test program. Guessing...)"
4784 rp="What is the size of a long long (in bytes)?"
4785 . ./myread
4786 longlongsize="$ans"
4787 fi
4788 if $test "X$longsize" = "X$longlongsize"; then
4789 echo "(That isn't any different from an ordinary long.)"
4790 fi
4791 ;;
4792esac
4793$rm -f try.* try
4794
4795: determine filename position in cpp output
4796echo " "
4797echo "Computing filename position in cpp output for #include directives..." >&4
4798echo '#include <stdio.h>' > foo.c
4799$cat >fieldn <<EOF
4800$startsh
4801$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4802$grep '^[ ]*#.*stdio\.h' | \
4803while read cline; do
4804 pos=1
4805 set \$cline
4806 while $test \$# -gt 0; do
4807 if $test -r \`echo \$1 | $tr -d '"'\`; then
4808 echo "\$pos"
4809 exit 0
4810 fi
4811 shift
4812 pos=\`expr \$pos + 1\`
4813 done
4814done
4815EOF
4816chmod +x fieldn
4817fieldn=`./fieldn`
4818$rm -f foo.c fieldn
4819case $fieldn in
4820'') pos='???';;
48211) pos=first;;
48222) pos=second;;
48233) pos=third;;
4824*) pos="${fieldn}th";;
4825esac
4826echo "Your cpp writes the filename in the $pos field of the line."
4827
4828: locate header file
4829$cat >findhdr <<EOF
4830$startsh
4831wanted=\$1
4832name=''
4833for usrincdir in $usrinc
4834do
4835 if test -f \$usrincdir/\$wanted; then
4836 echo "\$usrincdir/\$wanted"
4837 exit 0
4838 fi
4839done
4840awkprg='{ print \$$fieldn }'
4841echo "#include <\$wanted>" > foo\$\$.c
4842$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4843$grep "^[ ]*#.*\$wanted" | \
4844while read cline; do
4845 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4846 case "\$name" in
4847 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4848 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4849 *) exit 2;;
4850 esac;
4851done;
4852#
4853# status = 0: grep returned 0 lines, case statement not executed
4854# status = 1: headerfile found
4855# status = 2: while loop executed, no headerfile found
4856#
4857status=\$?
4858$rm -f foo\$\$.c;
4859if test \$status -eq 1; then
4860 exit 0;
4861fi
4862exit 1
4863EOF
4864chmod +x findhdr
4865
4866: define an alternate in-header-list? function
4867inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4868cont=true; xxf="echo \"<\$1> found.\" >&4";
4869case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4870*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4871esac;
4872case $# in 4) instead=instead;; *) instead="at last";; esac;
4873while $test "$cont"; do
4874 xxx=`./findhdr $1`
4875 var=$2; eval "was=\$$2";
4876 if $test "$xxx" && $test -r "$xxx";
4877 then eval $xxf;
4878 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4879 cont="";
4880 else eval $xxnf;
4881 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4882 set $yyy; shift; shift; yyy=$@;
4883 case $# in 0) cont="";;
4884 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4885 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4886 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4887 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4888 esac;
4889done;
4890while $test "$yyy";
4891do set $yyy; var=$2; eval "was=\$$2";
4892 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4893 set $yyy; shift; shift; yyy=$@;
4894done'
4895
4896: see if inttypes.h is available
4897: we want a real compile instead of Inhdr because some systems
4898: have an inttypes.h which includes non-existent headers
4899echo " "
4900$cat >try.c <<EOCP
4901#include <inttypes.h>
4902int main() {
4903 static int32_t foo32 = 0x12345678;
4904}
4905EOCP
4906set try
4907if eval $compile; then
4908 echo "<inttypes.h> found." >&4
4909 val="$define"
4910else
4911 echo "<inttypes.h> NOT found." >&4
4912 val="$undef"
4913fi
4914$rm -f try.c try
4915set i_inttypes
4916eval $setvar
4917
4918: check for int64_t
4919echo " "
4920echo "Checking to see if you have int64_t..." >&4
4921$cat >try.c <<EOCP
4922#include <sys/types.h>
4923#$i_inttypes I_INTTYPES
4924#ifdef I_INTTYPES
4925#include <inttypes.h>
4926#endif
4927int main() { int64_t x = 7; }
4928EOCP
4929set try
4930if eval $compile; then
4931 val="$define"
4932 echo "You have int64_t."
4933else
4934 val="$undef"
4935 echo "You do not have int64_t."
4936fi
4937$rm -f try try.*
4938set d_int64_t
4939eval $setvar
4940
4941
4942echo " "
4943echo "Checking which 64-bit integer type we could use..." >&4
4944
4945case "$intsize" in
49468) val=int
4947 set quadtype
4948 eval $setvar
4949 val='"unsigned int"'
4950 set uquadtype
4951 eval $setvar
4952 quadkind=1
4953 ;;
4954*) case "$longsize" in
4955 8) val=long
4956 set quadtype
4957 eval $setvar
4958 val='"unsigned long"'
4959 set uquadtype
4960 eval $setvar
4961 quadkind=2
4962 ;;
4963 *) case "$d_longlong:$longlongsize" in
4964 define:8)
4965 val='"long long"'
4966 set quadtype
4967 eval $setvar
4968 val='"unsigned long long"'
4969 set uquadtype
4970 eval $setvar
4971 quadkind=3
4972 ;;
4973 *) case "$d_int64_t" in
4974 define)
4975 val=int64_t
4976 set quadtype
4977 eval $setvar
4978 val=uint64_t
4979 set uquadtype
4980 eval $setvar
4981 quadkind=4
4982 ;;
4983 esac
4984 ;;
4985 esac
4986 ;;
4987 esac
4988 ;;
4989esac
4990
4991case "$quadtype" in
4992'') echo "Alas, no 64-bit integer types in sight." >&4
4993 d_quad="$undef"
4994 ;;
4995*) echo "We could use '$quadtype' for 64-bit integers." >&4
4996 d_quad="$define"
4997 ;;
4998esac
4999
b4eb6b3d
JH
5000
5001case "$uselonglong" in
5002"$define"|true|[yY]*)
5003 cat <<EOM >&4
5004
5005*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5006EOM
5007 use64bitint="$define"
5008 ;;
5009esac
5010case "$use64bits" in
5011"$define"|true|[yY]*)
5012 cat <<EOM >&4
5013
5014*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5015EOM
5016 use64bitint="$define"
5017 ;;
5018esac
5019case "$use64bitints" in
5020"$define"|true|[yY]*)
5021 cat <<EOM >&4
5022
5023*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5024EOM
5025 use64bitint="$define"
5026 ;;
5027esac
5028case "$use64bitsint" in
5029"$define"|true|[yY]*)
5030 cat <<EOM >&4
5031
5032*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5033EOM
5034 use64bitint="$define"
5035 ;;
5036esac
5037case "$uselonglongs" in
5038"$define"|true|[yY]*)
5039 cat <<EOM >&4
5040
5041*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5042EOM
5043 use64bitint="$define"
5044 ;;
5045esac
5046case "$use64bitsall" in
5047"$define"|true|[yY]*)
5048 cat <<EOM >&4
5049
5050*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5051EOM
5052 use64bitall="$define"
5053 ;;
5054esac
5055
5056case "$ccflags" in
5057*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5058esac
5059case "$use64bitall" in
5060"$define"|true|[yY]*) use64bitint="$define" ;;
5061esac
5062
5063case "$longsize" in
50648) cat <<EOM
5065
5066You have natively 64-bit long integers.
5067EOM
5068 val="$define"
5069 ;;
5070*) case "$use64bitint" in
5071 "$define"|true|[yY]*) dflt='y';;
5072 *) dflt='n';;
5073 esac
8dfa8df9
JH
5074 case "$d_quad" in
5075 "$define") ;;
5076 *) dflt='n' ;;
5077 esac
b4eb6b3d
JH
5078 cat <<EOM
5079
5080Perl can be built to take advantage of 64-bit integer types
5081on some systems. To do so, Configure can be run with -Duse64bitint.
5082Choosing this option will most probably introduce binary incompatibilities.
5083
5084If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5085(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5086EOM
5087 rp='Try to use 64-bit integers, if available?'
5088 . ./myread
5089 case "$ans" in
5090 [yY]*) val="$define" ;;
5091 *) val="$undef" ;;
5092 esac
5093 ;;
5094esac
5095set use64bitint
5096eval $setvar
5097
5098case "$use64bitall" in
5099"$define"|true|[yY]*) dflt='y' ;;
5100*) case "$longsize" in
5101 8) dflt='y' ;;
5102 *) dflt='n' ;;
5103 esac
5104 ;;
5105esac
5106cat <<EOM
5107
5108You may also choose to try maximal 64-bitness. It means using as much
510964-bitness as possible on the platform. This in turn means even more
5110binary incompatibilities. On the other hand, your platform may not
5111have any more 64-bitness available than what you already have chosen.
5112
5113If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5114(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5115EOM
5116rp='Try to use maximal 64-bit support, if available?'
5117. ./myread
5118case "$ans" in
5119[yY]*) val="$define" ;;
5120*) val="$undef" ;;
5121esac
5122set use64bitall
5123eval $setvar
5124case "$use64bitall" in
5125"$define")
5126 case "$use64bitint" in
5127 "$undef")
5128 cat <<EOM
5129
5130Since you have chosen a maximally 64-bit build, I'm also turning on
5131the use of 64-bit integers.
5132EOM
5133 use64bitint="$define" ;;
5134 esac
5135 ;;
5136esac
5137
8dfa8df9
JH
5138case "$use64bitall" in
5139"$define"|true|[yY]*)
5140 case "$ptrsize" in
5141 4) cat <<EOM >&4
5142
5143*** You have chosen a maximally 64-bit build, but your pointers
5144*** are only 4 bytes wide, disabling maximal 64-bitness.
5145
5146EOM
5147 use64bitall="$undef"
5148 case "$use64bitint" in
5149 "$define"|true|[yY]*) ;;
5150 *) cat <<EOM >&4
5151
5152*** Downgrading from maximal 64-bitness to using 64-bit integers.
5153
5154EOM
5155 use64bitint="$define"
5156 ;;
5157 esac
5158 ;;
5159 esac
5160 ;;
5161esac
5162
b4eb6b3d
JH
5163case "$use64bitint" in
5164"$define"|true|[yY]*)
5165: Look for a hint-file generated 'call-back-unit'. If the
5166: user has specified that a 64-bit perl is to be built,
5167: we may need to set or change some other defaults.
5168 if $test -f use64bitint.cbu; then
5169 echo "Your platform has some specific hints for 64-bit integers, using them..."
5170 . ./use64bitint.cbu
5171 fi
5172 case "$longsize" in
5173 4) case "$archname64" in
5174 '') archname64=64int ;;
5175 esac
5176 ;;
5177 esac
5178 ;;
5179esac
5180
5181case "$use64bitall" in
5182"$define"|true|[yY]*)
5183: Look for a hint-file generated 'call-back-unit'. If the
5184: user has specified that a maximally 64-bit perl is to be built,
5185: we may need to set or change some other defaults.
5186 if $test -f use64bitall.cbu; then
5187 echo "Your platform has some specific hints for 64-bit builds, using them..."
5188 . ./use64bitall.cbu
5189 fi
5190 case "$longsize" in
5191 4) case "$archname64" in
5192 ''|64int) archname64=64all ;;
5193 esac
5194 ;;
5195 esac
5196 ;;
5197esac
5198
5199echo " "
5200echo "Checking for GNU C Library..." >&4
5440bc8e 5201cat >try.c <<EOM
b4eb6b3d
JH
5202#include <stdio.h>
5203int main()
5204{
5205#ifdef __GLIBC__
5206 exit(0);
5207#else
5208 exit(1);
5209#endif
5210}
5211EOM
5440bc8e
JH
5212set try
5213if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5214 val="$define"
5215 echo "You are using the GNU C Library"
5216else
5217 val="$undef"
5218 echo "You are not using the GNU C Library"
5219fi
5440bc8e 5220$rm -f try try.*
b4eb6b3d
JH
5221set d_gnulibc
5222eval $setvar
5223
5224: see if nm is to be used to determine whether a symbol is defined or not
5225case "$usenm" in
5226'')
5227 dflt=''
c1a7f87b
JH
5228 case "$d_gnulibc" in
5229 "$define")
5230 echo " "
5231 echo "nm probably won't work on the GNU C Library." >&4
5232 dflt=n
bd9b35c9 5233 ;;
c1a7f87b
JH
5234 esac
5235 case "$dflt" in
5236 '')
5237 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5238 echo " "
5239 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5240 echo "'nm' won't be sufficient on this sytem." >&4
5241 dflt=n
5242 fi
5243 ;;
5244 esac
5245 case "$dflt" in
5246 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5247 if $test $dflt -gt 20; then
5248 dflt=y
5249 else
5250 dflt=n
5251 fi
bd9b35c9
JH
5252 ;;
5253 esac
bd9b35c9
JH
5254 ;;
5255*)
c1a7f87b
JH
5256 case "$usenm" in
5257 true|$define) dflt=y;;
5258 *) dflt=n;;
5259 esac
bd9b35c9
JH
5260 ;;
5261esac
5262$cat <<EOM
5263
c1a7f87b
JH
5264I can use $nm to extract the symbols from your C libraries. This
5265is a time consuming task which may generate huge output on the disk (up
5266to 3 megabytes) but that should make the symbols extraction faster. The
5267alternative is to skip the 'nm' extraction part and to compile a small
5268test program instead to determine whether each symbol is present. If
5269you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5270this may be the best solution.
5271
5272You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5273
5274EOM
c1a7f87b
JH
5275rp="Shall I use $nm to extract C symbols from the libraries?"
5276. ./myread
5277case "$ans" in
5278[Nn]*) usenm=false;;
5279*) usenm=true;;
bd9b35c9 5280esac
bd9b35c9 5281
c1a7f87b
JH
5282runnm=$usenm
5283case "$reuseval" in
5284true) runnm=false;;
8e07c86e 5285esac
29209bc5 5286
c1a7f87b
JH
5287: nm options which may be necessary
5288case "$nm_opt" in
5289'') if $test -f /mach_boot; then
5290 nm_opt='' # Mach
5291 elif $test -d /usr/ccs/lib; then
5292 nm_opt='-p' # Solaris (and SunOS?)
5293 elif $test -f /dgux; then
5294 nm_opt='-p' # DG-UX
5295 elif $test -f /lib64/rld; then
5296 nm_opt='-p' # 64-bit Irix
5297 else
5298 nm_opt=''
5299 fi;;
5300esac
bd9b35c9 5301
c1a7f87b
JH
5302: nm options which may be necessary for shared libraries but illegal
5303: for archive libraries. Thank you, Linux.
5304case "$nm_so_opt" in
5305'') case "$myuname" in
5306 *linux*)
5307 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5308 nm_so_opt='--dynamic'
5309 fi
5310 ;;
bd9b35c9 5311 esac
c1a7f87b
JH
5312 ;;
5313esac
8e07c86e 5314
c1a7f87b
JH
5315case "$runnm" in
5316true)
5317: get list of predefined functions in a handy place
5318echo " "
5319case "$libc" in
5320'') libc=unknown
5321 case "$libs" in
5322 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5323 esac
ff935051
JH
5324 ;;
5325esac
c1a7f87b
JH
5326case "$libs" in
5327'') ;;
5328*) for thislib in $libs; do
5329 case "$thislib" in
5330 -lc|-lc_s)
5331 : Handle C library specially below.
5332 ;;
5333 -l*)
5334 thislib=`echo $thislib | $sed -e 's/^-l//'`
5335 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5336 :
5337 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5338 :
5339 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5340 :
5341 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5342 :
5343 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5344 :
5345 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5346 :
5347 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5348 :
5349 else
5350 try=''
5351 fi
5352 libnames="$libnames $try"
5353 ;;
5354 *) libnames="$libnames $thislib" ;;
34d1710f 5355 esac
c1a7f87b 5356 done
4633a7c4
LW
5357 ;;
5358esac
c1a7f87b
JH
5359xxx=normal
5360case "$libc" in
5361unknown)
5362 set /lib/libc.$so
5363 for xxx in $libpth; do
5364 $test -r $1 || set $xxx/libc.$so
5365 : The messy sed command sorts on library version numbers.
5366 $test -r $1 || \
5367 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5368 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5369 h
5370 s/[0-9][0-9]*/0000&/g
5371 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5372 G
5373 s/\n/ /' | \
381aa1ff 5374 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5375 eval set \$$#
5376 done
5377 $test -r $1 || set /usr/ccs/lib/libc.$so
5378 $test -r $1 || set /lib/libsys_s$_a
5379 ;;
5380*)
5381 set blurfl
5382 ;;
a4f3eea9 5383esac
c1a7f87b
JH
5384if $test -r "$1"; then
5385 echo "Your (shared) C library seems to be in $1."
5386 libc="$1"
5387elif $test -r /lib/libc && $test -r /lib/clib; then
5388 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5389 xxx=apollo
5390 libc='/lib/clib /lib/libc'
5391 if $test -r /lib/syslib; then
5392 echo "(Your math library is in /lib/syslib.)"
5393 libc="$libc /lib/syslib"
5394 fi
5395elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5396 echo "Your C library seems to be in $libc, as you said before."
5397elif $test -r $incpath/usr/lib/libc$_a; then
5398 libc=$incpath/usr/lib/libc$_a;
5399 echo "Your C library seems to be in $libc. That's fine."
5400elif $test -r /lib/libc$_a; then
5401 libc=/lib/libc$_a;
5402 echo "Your C library seems to be in $libc. You're normal."
5403else
5404 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5405 :
5406 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5407 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5408 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5409 :
5410 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5411 :
5412 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5413 :
5414 else
5415 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5416 fi
5417 if $test -r "$tans"; then
5418 echo "Your C library seems to be in $tans, of all places."
5419 libc=$tans
5420 else
5421 libc='blurfl'
5422 fi
5423fi
5424if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5425 dflt="$libc"
5426 cat <<EOM
a4f3eea9 5427
c1a7f87b
JH
5428If the guess above is wrong (which it might be if you're using a strange
5429compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5430
5431EOM
a4f3eea9 5432else
c1a7f87b 5433 dflt=''
381aa1ff 5434 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5435 cat >&4 <<EOM
5436I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5437
c1a7f87b
JH
5438EOM
5439 $sed 's/^/ /' libpath
5440 cat <<EOM
29209bc5 5441
c1a7f87b 5442None of these seems to contain your C library. I need to get its name...
a4f3eea9 5443
bd9b35c9 5444EOM
bd9b35c9 5445fi
c1a7f87b
JH
5446fn=f
5447rp='Where is your C library?'
5448. ./getfile
5449libc="$ans"
a4f3eea9 5450
c1a7f87b 5451echo " "
381aa1ff 5452echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5453set X `cat libnames`
5454shift
5455xxx=files
5456case $# in 1) xxx=file; esac
5457echo "Extracting names from the following $xxx for later perusal:" >&4
5458echo " "
5459$sed 's/^/ /' libnames >&4
5460echo " "
5461$echo $n "This may take a while...$c" >&4
a4f3eea9 5462
c1a7f87b
JH
5463for file in $*; do
5464 case $file in
5465 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5466 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5467 esac
c1a7f87b 5468done >libc.tmp
a4f3eea9 5469
c1a7f87b
JH
5470$echo $n ".$c"
5471$grep fprintf libc.tmp > libc.ptf
5472xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5473xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5474xxx='[ADTSIW]'
5475if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5476 eval $xscan;\
5477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478 eval $xrun
5479elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5480 eval $xscan;\
5481 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482 eval $xrun
5483elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5484 eval $xscan;\
5485 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486 eval $xrun
5487elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5488 eval $xscan;\
5489 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490 eval $xrun
5491elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5492 eval $xscan;\
5493 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5494 eval $xrun
5495elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5496 eval $xscan;\
5497 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498 eval $xrun
5499elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5500 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5501 eval $xscan;\
5502 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503 eval $xrun
5504elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5505 eval $xscan;\
5506 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507 eval $xrun
5508elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5509 eval $xscan;\
5510 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511 eval $xrun
5512elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5513 eval $xscan;\
5514 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515 eval $xrun
5516elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5517 eval $xscan;\
5518 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519 eval $xrun
5520elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5521 eval $xscan;\
5522 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523 eval $xrun
5524elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5525 eval $xscan;\
5526 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5527 eval $xrun
5528elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5529 eval $xscan;\
5530 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5531 eval $xrun
5532else
5533 $nm -p $* 2>/dev/null >libc.tmp
5534 $grep fprintf libc.tmp > libc.ptf
5535 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5536 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5537 then
5538 nm_opt='-p'
5539 eval $xrun
bd9b35c9 5540 else
c1a7f87b
JH
5541 echo " "
5542 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5543 com=''
5544 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5545 for thisname in $libnames $libc; do
5546 $ar t $thisname >>libc.tmp
5547 done
5548 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5549 echo "Ok." >&4
5550 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5551 # Repeat libc to extract forwarders to DLL entries too
5552 for thisname in $libnames $libc; do
5553 $ar tv $thisname >>libc.tmp
5554 # Revision 50 of EMX has bug in $ar.
5555 # it will not extract forwarders to DLL entries
5556 # Use emximp which will extract exactly them.
5557 emximp -o tmp.imp $thisname \
5558 2>/dev/null && \
5559 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5560 < tmp.imp >>libc.tmp
5561 $rm tmp.imp
5562 done
5563 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5564 echo "Ok." >&4
5565 else
5566 echo "$ar didn't seem to work right." >&4
5567 echo "Maybe this is a Cray...trying bld instead..." >&4
5568 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5569 then
5570 for thisname in $libnames; do
5571 bld t $libnames | \
5572 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5573 $ar t $thisname >>libc.tmp
5574 done
5575 echo "Ok." >&4
bd9b35c9 5576 else
c1a7f87b
JH
5577 echo "That didn't work either. Giving up." >&4
5578 exit 1
bd9b35c9 5579 fi
c1a7f87b 5580 fi
a4f3eea9 5581 fi
a4f3eea9 5582fi
c1a7f87b
JH
5583nm_extract="$com"
5584if $test -f /lib/syscalls.exp; then
5585 echo " "
5586 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
a8c676c6 5587 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
c1a7f87b
JH
5588fi
5589;;
5590esac
5591$rm -f libnames libpath
bd9b35c9 5592
c1a7f87b
JH
5593: is a C symbol defined?
5594csym='tlook=$1;
5595case "$3" in
5596-v) tf=libc.tmp; tc=""; tdc="";;
5597-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5598*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5599esac;
5600tx=yes;
5601case "$reuseval-$4" in
5602true-) ;;
5603true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5604esac;
5605case "$tx" in
5606yes)
5607 case "$runnm" in
5608 true)
5609 if $contains $tlook $tf >/dev/null 2>&1;
5610 then tval=true;
5611 else tval=false;
5612 fi;;
5613 *)
5614 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5615 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5616 then tval=true;
5617 else tval=false;
5618 fi;
5619 $rm -f t t.c;;
5620 esac;;
5621*)
5622 case "$tval" in
5623 $define) tval=true;;
5624 *) tval=false;;
5625 esac;;
5626esac;
5627eval "$2=$tval"'
bd9b35c9 5628
c1a7f87b
JH
5629: define an is-in-libc? function
5630inlibc='echo " "; td=$define; tu=$undef;
5631sym=$1; var=$2; eval "was=\$$2";
5632tx=yes;
5633case "$reuseval$was" in
5634true) ;;
5635true*) tx=no;;
5636esac;
5637case "$tx" in
5638yes)
5639 set $sym tres -f;
5640 eval $csym;
5641 case "$tres" in
5642 true)
5643 echo "$sym() found." >&4;
5644 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5645 *)
5646 echo "$sym() NOT found." >&4;
5647 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5648 esac;;
bd9b35c9 5649*)
c1a7f87b
JH
5650 case "$was" in
5651 $define) echo "$sym() found." >&4;;
5652 *) echo "$sym() NOT found." >&4;;
5653 esac;;
5654esac'
5655
b4eb6b3d
JH
5656: see if sqrtl exists
5657set sqrtl d_sqrtl
c1a7f87b
JH
5658eval $inlibc
5659
b4eb6b3d
JH
5660case "$ccflags" in
5661*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5662esac
b4eb6b3d
JH
5663
5664case "$uselongdouble" in
5665$define|true|[yY]*) dflt='y';;
5666*) dflt='n';;
5667esac
5668cat <<EOM
5669
5670Perl can be built to take advantage of long doubles which
5671(if available) may give more accuracy and range for floating point numbers.
5672
5673If this doesn't make any sense to you, just accept the default '$dflt'.
5674EOM
5675rp='Try to use long doubles if available?'
c1a7f87b
JH
5676. ./myread
5677case "$ans" in
b4eb6b3d
JH
5678y|Y) val="$define" ;;
5679*) val="$undef" ;;
5680esac
5681set uselongdouble
5682eval $setvar
bfb7748a 5683
b4eb6b3d
JH
5684case "$uselongdouble" in
5685true|[yY]*) uselongdouble="$define" ;;
5686esac
bfb7748a 5687
b4eb6b3d
JH
5688case "$uselongdouble" in
5689$define)
5690: Look for a hint-file generated 'call-back-unit'. If the
5691: user has specified that long doubles should be used,
5692: we may need to set or change some other defaults.
5693 if $test -f uselongdouble.cbu; then
5694 echo "Your platform has some specific hints for long doubles, using them..."
5695 . ./uselongdouble.cbu
5696 else
5697 $cat <<EOM
5698(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5699EOM
b4eb6b3d
JH
5700 fi
5701 ;;
5702esac
5703
5704case "$uselongdouble:$d_sqrtl" in
5705$define:$undef)
5706 $cat <<EOM >&4
5707
5708*** You requested the use of long doubles but you do not seem to have
5709*** the mathematic functions for long doubles. I'm disabling the use
5710*** of long doubles.
5711
5712EOM
5713 uselongdouble=$undef
5714 ;;
5715esac
5716
5717: check for length of double
5718echo " "
5719case "$doublesize" in
5720'')
5721 echo "Checking to see how big your double precision numbers are..." >&4
5722 $cat >try.c <<'EOCP'
5723#include <stdio.h>
5724int main()
5725{
5726 printf("%d\n", (int)sizeof(double));
5727 exit(0);
5728}
5729EOCP
5730 set try
5731 if eval $compile_ok; then
5440bc8e 5732 doublesize=`$run ./try`
b4eb6b3d
JH
5733 echo "Your double is $doublesize bytes long."
5734 else
5735 dflt='8'
5736 echo "(I can't seem to compile the test program. Guessing...)"
5737 rp="What is the size of a double precision number (in bytes)?"
5738 . ./myread
5739 doublesize="$ans"
5740 fi
5741 ;;
5742esac
5743$rm -f try.c try
5744
5745: check for long doubles
5746echo " "
5747echo "Checking to see if you have long double..." >&4
5748echo 'int main() { long double x = 7.0; }' > try.c
5749set try
5750if eval $compile; then
5751 val="$define"
5752 echo "You have long double."
5753else
5754 val="$undef"
5755 echo "You do not have long double."
5756fi
5757$rm try.*
5758set d_longdbl
5759eval $setvar
5760
5761: check for length of long double
5762case "${d_longdbl}${longdblsize}" in
5763$define)
5764 echo " "
5765 echo "Checking to see how big your long doubles are..." >&4
5766 $cat >try.c <<'EOCP'
5767#include <stdio.h>
5768int main()
5769{
5770 printf("%d\n", sizeof(long double));
5771}
5772EOCP
5773 set try
5774 set try
5775 if eval $compile; then
5440bc8e 5776 longdblsize=`$run ./try`
b4eb6b3d
JH
5777 echo "Your long doubles are $longdblsize bytes long."
5778 else
5779 dflt='8'
5780 echo " "
5781 echo "(I can't seem to compile the test program. Guessing...)" >&4
5782 rp="What is the size of a long double (in bytes)?"
5783 . ./myread
5784 longdblsize="$ans"
5785 fi
5786 if $test "X$doublesize" = "X$longdblsize"; then
5787 echo "(That isn't any different from an ordinary double.)"
5788 fi
5789 ;;
5790esac
5791$rm -f try.* try
5792
51de783f 5793case "$useperlio" in
5a3a8a02 5794$define|true|[yY]*|'') dflt='y';;
51de783f
JH
5795*) dflt='n';;
5796esac
5797cat <<EOM
5798
5799Previous version of $package used the standard IO mechanisms as
5a3a8a02 5800defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 5801alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
5802stdio mechanism is still available if needed. The abstraction layer
5803can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
5804Using PerlIO with sfio may cause problems with some extension modules.
5805
5806If this doesn't make any sense to you, just accept the default '$dflt'.
5807EOM
5a3a8a02 5808rp='Use the PerlIO abstraction layer?'
51de783f
JH
5809. ./myread
5810case "$ans" in
5811y|Y)
5812 val="$define"
5a3a8a02 5813 ;;
51de783f
JH
5814*)
5815 echo "Ok, doing things the stdio way."
5816 val="$undef"
5817 ;;
5818esac
5819set useperlio
5820eval $setvar
5821
5822case "$usesocks" in
5823$define|true|[yY]*)
5824 case "$useperlio" in
5825 $define|true|[yY]*) ;;
5826 *) cat >&4 <<EOM
5827
5828You are using the SOCKS proxy protocol library which means that you
5829should also use the PerlIO layer. You may be headed for trouble.
5830
5831EOM
5832 ;;
5833 esac
5834 ;;
5835esac
5836
5837
b4eb6b3d
JH
5838: determine the architecture name
5839echo " "
5840if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5841 tarch=`arch`"-$osname"
5842elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5843 if uname -m > tmparch 2>&1 ; then
5844 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5845 -e 's/$/'"-$osname/" tmparch`
5846 else
5847 tarch="$osname"
5848 fi
5849 $rm -f tmparch
5850else
5851 tarch="$osname"
5852fi
5853case "$myarchname" in
5854''|"$tarch") ;;
5855*)
5856 echo "(Your architecture name used to be $myarchname.)"
5857 archname=''
5858 ;;
5859esac
5440bc8e
JH
5860case "$targetarch" in
5861'') ;;
5862*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5863esac
b4eb6b3d
JH
5864myarchname="$tarch"
5865case "$archname" in
5866'') dflt="$tarch";;
5867*) dflt="$archname";;
5868esac
5869rp='What is your architecture name'
5870. ./myread
5871archname="$ans"
5872case "$usethreads" in
5873$define)
5874 echo "Threads selected." >&4
5875 case "$archname" in
5876 *-thread*) echo "...and architecture name already has -thread." >&4
5877 ;;
5878 *) archname="$archname-thread"
5879 echo "...setting architecture name to $archname." >&4
5880 ;;
5881 esac
5882 ;;
5883esac
5884case "$usemultiplicity" in
5885$define)
5886 echo "Multiplicity selected." >&4
5887 case "$archname" in
5888 *-multi*) echo "...and architecture name already has -multi." >&4
5889 ;;
5890 *) archname="$archname-multi"
5891 echo "...setting architecture name to $archname." >&4
5892 ;;
5893 esac
5894 ;;
5895esac
5896case "$use64bitint$use64bitall" in
5897*"$define"*)
5898 case "$archname64" in
5899 '')
5900 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5901 ;;
5902 *)
5903 case "$use64bitint" in
5904 "$define") echo "64 bit integers selected." >&4 ;;
5905 esac
5906 case "$use64bitall" in
5907 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5908 esac
5909 case "$archname" in
5910 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5911 ;;
5912 *) archname="$archname-$archname64"
5913 echo "...setting architecture name to $archname." >&4
5914 ;;
5915 esac
5916 ;;
5917 esac
5918esac
5919case "$uselongdouble" in
5920$define)
5921 echo "Long doubles selected." >&4
5922 case "$longdblsize" in
5923 $doublesize)
262495b9 5924 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
b4eb6b3d
JH
5925 ;;
5926 *)
5927 case "$archname" in
5928 *-ld*) echo "...and architecture name already has -ld." >&4
5929 ;;
5930 *) archname="$archname-ld"
5931 echo "...setting architecture name to $archname." >&4
5932 ;;
5933 esac
5934 ;;
5935 esac
5936 ;;
5937esac
51de783f
JH
5938case "$useperlio" in
5939$define)
5940 echo "Perlio selected." >&4
d46c9a2d
JH
5941 ;;
5942*)
5943 echo "Perlio not selected, using stdio." >&4
51de783f 5944 case "$archname" in
d46c9a2d 5945 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 5946 ;;
d46c9a2d 5947 *) archname="$archname-stdio"
51de783f
JH
5948 echo "...setting architecture name to $archname." >&4
5949 ;;
5950 esac
5951 ;;
5952esac
b4eb6b3d
JH
5953
5954: determine root of directory hierarchy where package will be installed.
5955case "$prefix" in
5956'')
5957 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5958 ;;
5959*)
5960 dflt="$prefix"
5961 ;;
5962esac
5963$cat <<EOM
5964
5965By default, $package will be installed in $dflt/bin, manual pages
5966under $dflt/man, etc..., i.e. with $dflt as prefix for all
5967installation directories. Typically this is something like /usr/local.
5968If you wish to have binaries under /usr/bin but other parts of the
5969installation under /usr/local, that's ok: you will be prompted
5970separately for each of the installation directories, the prefix being
5971only used to set the defaults.
5972
5973EOM
5974fn=d~
5975rp='Installation prefix to use?'
5976. ./getfile
5977oldprefix=''
5978case "$prefix" in
5979'') ;;
5980*)
5981 case "$ans" in
5982 "$prefix") ;;
5983 *) oldprefix="$prefix";;
5984 esac
5985 ;;
5986esac
5987prefix="$ans"
5988prefixexp="$ansexp"
5989
a6d26a0d
JH
5990case "$afsroot" in
5991'') afsroot=/afs ;;
5992*) afsroot=$afsroot ;;
5993esac
5994
b4eb6b3d
JH
5995: is AFS running?
5996echo " "
5997case "$afs" in
5998$define|true) afs=true ;;
5999$undef|false) afs=false ;;
a6d26a0d 6000*) if test -d $afsroot; then
b4eb6b3d
JH
6001 afs=true
6002 else
6003 afs=false
6004 fi
6005 ;;
6006esac
6007if $afs; then
6008 echo "AFS may be running... I'll be extra cautious then..." >&4
6009else
6010 echo "AFS does not seem to be running..." >&4
6011fi
6012
6013: determine installation prefix for where package is to be installed.
6014if $afs; then
6015$cat <<EOM
6016
6017Since you are running AFS, I need to distinguish the directory in which
6018files will reside from the directory in which they are installed (and from
6019which they are presumably copied to the former directory by occult means).
6020
6021EOM
6022 case "$installprefix" in
6023 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6024 *) dflt="$installprefix";;
6025 esac
6026else
6027$cat <<EOM
6028
6029In some special cases, particularly when building $package for distribution,
6030it is convenient to distinguish between the directory in which files should
6031be installed from the directory ($prefix) in which they
6032will eventually reside. For most users, these two directories are the same.
6033
6034EOM
6035 case "$installprefix" in
6036 '') dflt=$prefix ;;
6037 *) dflt=$installprefix;;
6038 esac
6039fi
6040fn=d~
6041rp='What installation prefix should I use for installing files?'
6042. ./getfile
6043installprefix="$ans"
6044installprefixexp="$ansexp"
6045
6046: set the prefixit variable, to compute a suitable default value
6047prefixit='case "$3" in
6048""|none)
6049 case "$oldprefix" in
6050 "") eval "$1=\"\$$2\"";;
6051 *)
6052 case "$3" in
6053 "") eval "$1=";;
6054 none)
6055 eval "tp=\"\$$2\"";
6056 case "$tp" in
6057 ""|" ") eval "$1=\"\$$2\"";;
6058 *) eval "$1=";;
6059 esac;;
6060 esac;;
6061 esac;;
6062*)
6063 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6064 case "$tp" in
6065 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6066 /*-$oldprefix/*|\~*-$oldprefix/*)
6067 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6068 *) eval "$1=\"\$$2\"";;
6069 esac;;
6070esac'
6071
b4eb6b3d
JH
6072: get the patchlevel
6073echo " "
6074echo "Getting the current patchlevel..." >&4
6075if $test -r $rsrc/patchlevel.h;then
6076 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6077 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6078 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6079 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6080 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6081 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6082 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6083else
6084 revision=0
6085 patchlevel=0
6086 subversion=0
6087 api_revision=0
6088 api_version=0
6089 api_subversion=0
151e6568
MB
6090 perl_patchlevel=0
6091 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6092fi
151e6568
MB
6093if $test -r $rsrc/.patch ; then
6094 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6095 perl_patchlevel=`cat $rsrc/.patch`
6096 fi
6097fi
861eb78d
AD
6098: Define a handy string here to avoid duplication in myconfig.SH and configpm.
6099version_patchlevel_string="version $patchlevel subversion $subversion"
151e6568 6100case "$perl_patchlevel" in
861eb78d
AD
61010|'') ;;
6102*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
151e6568 6103esac
861eb78d
AD
6104
6105$echo "(You have $package $version_patchlevel_string.)"
6106
b4eb6b3d
JH
6107case "$osname" in
6108dos|vms)
6109 : XXX Should be a Configure test for double-dots in filenames.
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 ;;
6115*)
6116 version=`echo $revision $patchlevel $subversion | \
6117 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6118 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6119 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6120 ;;
6121esac
6122: Special case the 5.005_xx maintenance series, which used 5.005
6123: without any subversion label as a subdirectory in $sitelib
6124if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6125 api_versionstring='5.005'
6126fi
6127
6128: determine installation style
6129: For now, try to deduce it from prefix unless it is already set.
6130: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6131case "$installstyle" in
6132'') case "$prefix" in
6133 *perl*) dflt='lib';;
6134 *) dflt='lib/perl5' ;;
6135 esac
6136 ;;
6137*) dflt="$installstyle" ;;
6138esac
6139: Probably not worth prompting for this since we prompt for all
6140: the directories individually, and the prompt would be too long and
6141: confusing anyway.
6142installstyle=$dflt
6143
6144: determine where private library files go
6145: Usual default is /usr/local/lib/perl5/$version.
6146: Also allow things like /opt/perl/lib/$version, since
6147: /opt/perl/lib/perl5... would be redundant.
6148: The default "style" setting is made in installstyle.U
6149case "$installstyle" in
6150*lib/perl5*) set dflt privlib lib/$package/$version ;;
6151*) set dflt privlib lib/$version ;;
6152esac
6153eval $prefixit
6154$cat <<EOM
6155
6156There are some auxiliary files for $package that need to be put into a
6157private library directory that is accessible by everyone.
6158
6159EOM
6160fn=d~+
6161rp='Pathname where the private library files will reside?'
6162. ./getfile
6163privlib="$ans"
6164privlibexp="$ansexp"
6165: Change installation prefix, if necessary.
6166if $test X"$prefix" != X"$installprefix"; then
6167 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6168else
6169 installprivlib="$privlibexp"
6170fi
6171
6172: set the prefixup variable, to restore leading tilda escape
6173prefixup='case "$prefixexp" in
6174"$prefix") ;;
6175*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6176esac'
6177
6178: determine where public architecture dependent libraries go
6179set archlib archlib
6180eval $prefixit
6181: privlib default is /usr/local/lib/$package/$version
6182: archlib default is /usr/local/lib/$package/$version/$archname
6183: privlib may have an optional trailing /share.
6184tdflt=`echo $privlib | $sed 's,/share$,,'`
6185tdflt=$tdflt/$archname
6186case "$archlib" in
6187'') dflt=$tdflt
6188 ;;
6189*) dflt="$archlib"
6190 ;;
6191esac
6192$cat <<EOM
6193
6194$spackage contains architecture-dependent library files. If you are
6195sharing libraries in a heterogeneous environment, you might store
6196these files in a separate location. Otherwise, you can just include
6197them with the rest of the public library files.
6198
6199EOM
6200fn=d+~
6201rp='Where do you want to put the public architecture-dependent libraries?'
6202. ./getfile
6203archlib="$ans"
6204archlibexp="$ansexp"
6205if $test X"$archlib" = X"$privlib"; then
6206 d_archlib="$undef"
6207else
6208 d_archlib="$define"
6209fi
6210: Change installation prefix, if necessary.
6211if $test X"$prefix" != X"$installprefix"; then
6212 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6213else
6214 installarchlib="$archlibexp"
6215fi
6216
6217
6218: Binary compatibility with 5.005 is not possible for builds
6219: with advanced features
6220case "$usethreads$usemultiplicity" in
6221*define*)
6222 bincompat5005="$undef"
6223 d_bincompat5005="$undef"
6224 ;;
6225*) $cat <<EOM
6226
6227This version of Perl can be compiled for binary compatibility with 5.005.
6228If you decide to do so, you will be able to continue using most of the
6229extensions that were compiled for Perl 5.005.
6230
6231EOM
6232 case "$bincompat5005$d_bincompat5005" in
6233 *"$undef"*) dflt=n ;;
6234 *) dflt=y ;;
6235 esac
6236 rp='Binary compatibility with Perl 5.005?'
6237 . ./myread
6238 case "$ans" in
6239 y*) val="$define" ;;
6240 *) val="$undef" ;;
6241 esac
6242 set d_bincompat5005
6243 eval $setvar
6244 case "$d_bincompat5005" in
6245 "$define")
6246 bincompat5005="$define"
6247 ;;
6248 *) bincompat5005="$undef"
6249 d_bincompat5005="$undef"
6250 ;;
6251 esac
6252 ;;
6253esac
6254
6255
6256: see if setuid scripts can be secure
6257$cat <<EOM
6258
6259Some kernels have a bug that prevents setuid #! scripts from being
6260secure. Some sites have disabled setuid #! scripts because of this.
6261
6262First let's decide if your kernel supports secure setuid #! scripts.
6263(If setuid #! scripts would be secure but have been disabled anyway,
6264don't say that they are secure if asked.)
6265
6266EOM
6267
6268val="$undef"
6269if $test -d /dev/fd; then
6270 echo "#!$ls" >reflect
6271 chmod +x,u+s reflect
6272 ./reflect >flect 2>&1
6273 if $contains "/dev/fd" flect >/dev/null; then
6274 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6275 val="$define"
6276 else
6277 $cat <<EOM
6278If you are not sure if they are secure, I can check but I'll need a
6279username and password different from the one you are using right now.
6280If you don't have such a username or don't want me to test, simply
6281enter 'none'.
6282
6283EOM
6284 rp='Other username to test security of setuid scripts with?'
6285 dflt='none'
6286 . ./myread
6287 case "$ans" in
6288 n|none)
6289 case "$d_suidsafe" in
6290 '') echo "I'll assume setuid scripts are *not* secure." >&4
6291 dflt=n;;
6292 "$undef")
6293 echo "Well, the $hint value is *not* secure." >&4
6294 dflt=n;;
6295 *) echo "Well, the $hint value *is* secure." >&4
6296 dflt=y;;
6297 esac
c1a7f87b 6298 ;;
b4eb6b3d
JH
6299 *)
6300 $rm -f reflect flect
6301 echo "#!$ls" >reflect
6302 chmod +x,u+s reflect
6303 echo >flect
6304 chmod a+w flect
6305 echo '"su" will (probably) prompt you for '"$ans's password."
6306 su $ans -c './reflect >flect'
6307 if $contains "/dev/fd" flect >/dev/null; then
6308 echo "Okay, it looks like setuid scripts are secure." >&4
6309 dflt=y
6310 else
6311 echo "I don't think setuid scripts are secure." >&4
6312 dflt=n
6313 fi
6314 ;;
6315 esac
6316 rp='Does your kernel have *secure* setuid scripts?'
6317 . ./myread
6318 case "$ans" in
6319 [yY]*) val="$define";;
6320 *) val="$undef";;
6321 esac
6322 fi
6323else
6324 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6325 echo "(That's for file descriptors, not floppy disks.)"
6326 val="$undef"
6327fi
6328set d_suidsafe
6329eval $setvar
6330
6331$rm -f reflect flect
6332
6333: now see if they want to do setuid emulation
6334echo " "
6335val="$undef"
6336case "$d_suidsafe" in
6337"$define")
6338 val="$undef"
6339 echo "No need to emulate SUID scripts since they are secure here." >& 4
6340 ;;
6341*)
6342 $cat <<EOM
6343Some systems have disabled setuid scripts, especially systems where
6344setuid scripts cannot be secure. On systems where setuid scripts have
6345been disabled, the setuid/setgid bits on scripts are currently
6346useless. It is possible for $package to detect those bits and emulate
6347setuid/setgid in a secure fashion. This emulation will only work if
6348setuid scripts have been disabled in your kernel.
6349
6350EOM
6351 case "$d_dosuid" in
6352 "$define") dflt=y ;;
6353 *) dflt=n ;;
6354 esac
6355 rp="Do you want to do setuid/setgid emulation?"
6356 . ./myread
6357 case "$ans" in
6358 [yY]*) val="$define";;
6359 *) val="$undef";;
6360 esac
6361 ;;
6362esac
6363set d_dosuid
6364eval $setvar
6365
b4eb6b3d
JH
6366: see if this is a malloc.h system
6367set malloc.h i_malloc
6368eval $inhdr
6369
6370: see if stdlib is available
6371set stdlib.h i_stdlib
6372eval $inhdr
6373
6374: determine which malloc to compile in
6375echo " "
6376case "$usemymalloc" in
c4163172
JH
6377[yY]*|true|$define) dflt='y' ;;
6378[nN]*|false|$undef) dflt='n' ;;
6379*) case "$ptrsize" in
6380 4) dflt='y' ;;
6381 *) dflt='n' ;;
6382 esac
6383 ;;
8dfa8df9 6384esac
b4eb6b3d
JH
6385rp="Do you wish to attempt to use the malloc that comes with $package?"
6386. ./myread
6387usemymalloc="$ans"
6388case "$ans" in
6389y*|true)
6390 usemymalloc='y'
6391 mallocsrc='malloc.c'
6392 mallocobj="malloc$_o"
6393 d_mymalloc="$define"
6394 case "$libs" in
6395 *-lmalloc*)
6396 : Remove malloc from list of libraries to use
6397 echo "Removing unneeded -lmalloc from library list" >&4
6398 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6399 shift
6400 libs="$*"
6401 echo "libs = $libs" >&4
6402 ;;
6403 esac
6404 ;;
6405*)
6406 usemymalloc='n'
6407 mallocsrc=''
6408 mallocobj=''
6409 d_mymalloc="$undef"
6410 ;;
6411esac
6412
6413: compute the return types of malloc and free
6414echo " "
6415$cat >malloc.c <<END
6416#$i_malloc I_MALLOC
6417#$i_stdlib I_STDLIB
6418#include <stdio.h>
6419#include <sys/types.h>
6420#ifdef I_MALLOC
6421#include <malloc.h>
6422#endif
6423#ifdef I_STDLIB
6424#include <stdlib.h>
6425#endif
6426#ifdef TRY_MALLOC
6427void *malloc();
6428#endif
6429#ifdef TRY_FREE
6430void free();
6431#endif
6432END
6433case "$malloctype" in
6434'')
6435 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6436 malloctype='void *'
6437 else
6438 malloctype='char *'
6439 fi
6440 ;;
6441esac
6442echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6443
6444case "$freetype" in
6445'')
6446 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6447 freetype='void'
6448 else
6449 freetype='int'
6450 fi
6451 ;;
6452esac
6453echo "Your system uses $freetype free(), it would seem." >&4
6454$rm -f malloc.[co]
6455$cat <<EOM
6456
6457After $package is installed, you may wish to install various
6458add-on modules and utilities. Typically, these add-ons will
6459be installed under $prefix with the rest
6460of this package. However, you may wish to install such add-ons
6461elsewhere under a different prefix.
6462
6463If you do not wish to put everything under a single prefix, that's
6464ok. You will be prompted for the individual locations; this siteprefix
6465is only used to suggest the defaults.
6466
6467The default should be fine for most people.
6468
6469EOM
6470fn=d~+
6471rp='Installation prefix to use for add-on modules and utilities?'
6472: XXX Here might be another good place for an installstyle setting.
6473case "$siteprefix" in
6474'') dflt=$prefix ;;
6475*) dflt=$siteprefix ;;
6476esac
6477. ./getfile
6478: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6479oldsiteprefix=''
6480case "$siteprefix" in
6481'') ;;
6482*) case "$ans" in
6483 "$prefix") ;;
6484 *) oldsiteprefix="$prefix";;
6485 esac
6486 ;;
6487esac
6488siteprefix="$ans"
6489siteprefixexp="$ansexp"
6490
6491: determine where site specific libraries go.
6492: Usual default is /usr/local/lib/perl5/site_perl/$version
6493: The default "style" setting is made in installstyle.U
6494: XXX No longer works with Prefixit stuff.
6495prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6496case "$sitelib" in
6497'') case "$installstyle" in
6498 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6499 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6500 esac
6501 ;;
6502*) dflt="$sitelib"
6503 ;;
6504esac
6505$cat <<EOM
6506
6507The installation process will create a directory for
6508site-specific extensions and modules. Most users find it convenient
6509to place all site-specific files in this directory rather than in the
6510main distribution directory.
6511
6512EOM
6513fn=d~+
6514rp='Pathname for the site-specific library files?'
6515. ./getfile
6516sitelib="$ans"
6517sitelibexp="$ansexp"
6518sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6519: Change installation prefix, if necessary.
6520if $test X"$prefix" != X"$installprefix"; then
6521 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6522else
6523 installsitelib="$sitelibexp"
6524fi
6525
6526: determine where site specific architecture-dependent libraries go.
6527: sitelib default is /usr/local/lib/perl5/site_perl/$version
6528: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6529: sitelib may have an optional trailing /share.
6530case "$sitearch" in
6531'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6532 dflt="$dflt/$archname"
6533 ;;
6534*) dflt="$sitearch"
6535 ;;
6536esac
6537set sitearch sitearch none
6538eval $prefixit
6539$cat <<EOM
6540
6541The installation process will also create a directory for
6542architecture-dependent site-specific extensions and modules.
6543
6544EOM
6545fn=d~+
6546rp='Pathname for the site-specific architecture-dependent library files?'
6547. ./getfile
6548sitearch="$ans"
6549sitearchexp="$ansexp"
6550: Change installation prefix, if necessary.
6551if $test X"$prefix" != X"$installprefix"; then
6552 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6553else
6554 installsitearch="$sitearchexp"
6555fi
6556
6557$cat <<EOM
6558
6559The installation process will also create a directory for
6560vendor-supplied add-ons. Vendors who supply perl with their system
6561may find it convenient to place all vendor-supplied files in this
6562directory rather than in the main distribution directory. This will
6563ease upgrades between binary-compatible maintenance versions of perl.
6564
6565Of course you may also use these directories in whatever way you see
6566fit. For example, you might use them to access modules shared over a
6567company-wide network.
6568
6569The default answer should be fine for most people.
6570This causes further questions about vendor add-ons to be skipped
6571and no vendor-specific directories will be configured for perl.
6572
6573EOM
6574rp='Do you want to configure vendor-specific add-on directories?'
6575case "$usevendorprefix" in
6576define|true|[yY]*) dflt=y ;;
6577*) : User may have set vendorprefix directly on Configure command line.
6578 case "$vendorprefix" in
6579 ''|' ') dflt=n ;;
6580 *) dflt=y ;;
6581 esac
6582 ;;
6583esac
6584. ./myread
6585case "$ans" in
6586[yY]*) fn=d~+
6587 rp='Installation prefix to use for vendor-supplied add-ons?'
6588 case "$vendorprefix" in
6589 '') dflt='' ;;
6590 *) dflt=$vendorprefix ;;
6591 esac
6592 . ./getfile
6593 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6594 oldvendorprefix=''
6595 case "$vendorprefix" in
6596 '') ;;
6597 *) case "$ans" in
6598 "$prefix") ;;
6599 *) oldvendorprefix="$prefix";;
6600 esac
6601 ;;
6602 esac
6603 usevendorprefix="$define"
6604 vendorprefix="$ans"
6605 vendorprefixexp="$ansexp"
6606 ;;
6607*) usevendorprefix="$undef"
6608 vendorprefix=''
6609 vendorprefixexp=''
6610 ;;
6611esac
6612
6613case "$vendorprefix" in
6614'') d_vendorlib="$undef"
6615 vendorlib=''
6616 vendorlibexp=''
6617 ;;
6618*) d_vendorlib="$define"
6619 : determine where vendor-supplied modules go.
6620 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6621 case "$vendorlib" in
6622 '')
6623 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6624 case "$installstyle" in
6625 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6626 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6627 esac
6628 ;;
6629 *) dflt="$vendorlib"
6630 ;;
6631 esac
6632 fn=d~+
6633 rp='Pathname for the vendor-supplied library files?'
6634 . ./getfile
6635 vendorlib="$ans"
6636 vendorlibexp="$ansexp"
6637 ;;
6638esac
6639vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6640: Change installation prefix, if necessary.
6641if $test X"$prefix" != X"$installprefix"; then
6642 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6643else
6644 installvendorlib="$vendorlibexp"
6645fi
6646
6647case "$vendorprefix" in
6648'') d_vendorarch="$undef"
6649 vendorarch=''
6650 vendorarchexp=''
6651 ;;
6652*) d_vendorarch="$define"
6653 : determine where vendor-supplied architecture-dependent libraries go.
6654 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6655 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6656 : vendorlib may have an optional trailing /share.
6657 case "$vendorarch" in
6658 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6659 dflt="$dflt/$archname"
6660 ;;
6661 *) dflt="$vendorarch" ;;
6662 esac
6663 fn=d~+
6664 rp='Pathname for vendor-supplied architecture-dependent files?'
6665 . ./getfile
6666 vendorarch="$ans"
6667 vendorarchexp="$ansexp"
6668 ;;
6669esac
6670: Change installation prefix, if necessary.
6671if $test X"$prefix" != X"$installprefix"; then
6672 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6673else
6674 installvendorarch="$vendorarchexp"
6675fi
6676
6677: Final catch-all directories to search
6678$cat <<EOM
6679
6680Lastly, you can have perl look in other directories for extensions and
6681modules in addition to those already specified.
6682These directories will be searched after
6683 $sitearch
6684 $sitelib
6685EOM
6686test X"$vendorlib" != "X" && echo ' ' $vendorlib
6687test X"$vendorarch" != "X" && echo ' ' $vendorarch
6688echo ' '
6689case "$otherlibdirs" in
6690''|' ') dflt='none' ;;
6691*) dflt="$otherlibdirs" ;;
6692esac
6693$cat <<EOM
6694Enter a colon-separated set of extra paths to include in perl's @INC
6695search path, or enter 'none' for no extra paths.
6696
6697EOM
6698
6699rp='Colon-separated list of additional directories for perl to search?'
6700. ./myread
6701case "$ans" in
6702' '|''|none) otherlibdirs=' ' ;;
6703*) otherlibdirs="$ans" ;;
6704esac
6705case "$otherlibdirs" in
6706' ') val=$undef ;;
6707*) val=$define ;;
6708esac
6709set d_perl_otherlibdirs
6710eval $setvar
6711
6712: Cruising for prototypes
6713echo " "
6714echo "Checking out function prototypes..." >&4
6715$cat >prototype.c <<'EOCP'
6716int main(int argc, char *argv[]) {
6717 exit(0);}
6718EOCP
6719if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6720 echo "Your C compiler appears to support function prototypes."
6721 val="$define"
6722else
6723 echo "Your C compiler doesn't seem to understand function prototypes."
6724 val="$undef"
6725fi
6726set prototype
6727eval $setvar
6728$rm -f prototype*
6729
6730case "$prototype" in
6731"$define") ;;
6732*) ansi2knr='ansi2knr'
6733 echo " "
6734 cat <<EOM >&4
6735
6736$me: FATAL ERROR:
6737This version of $package can only be compiled by a compiler that
6738understands function prototypes. Unfortunately, your C compiler
6739 $cc $ccflags
6740doesn't seem to understand them. Sorry about that.
6741
6742If GNU cc is available for your system, perhaps you could try that instead.
6743
6744Eventually, we hope to support building Perl with pre-ANSI compilers.
6745If you would like to help in that effort, please contact <perlbug@perl.org>.
6746
6747Aborting Configure now.
6748EOM
6749 exit 2
6750 ;;
6751esac
6752
6753: determine where public executables go
6754echo " "
6755set dflt bin bin
6756eval $prefixit
6757fn=d~
6758rp='Pathname where the public executables will reside?'
6759. ./getfile
6760if $test "X$ansexp" != "X$binexp"; then
6761 installbin=''
6762fi
6763bin="$ans"
6764binexp="$ansexp"
6765: Change installation prefix, if necessary.
6766: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6767if $test X"$prefix" != X"$installprefix"; then
6768 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6769else
6770 installbin="$binexp"
6771fi
6772
6fcddf3b 6773echo " "
6fcddf3b 6774case "$extras" in
bf35c3f6
JH
6775'') dflt='n';;
6776*) dflt='y';;
6fcddf3b
JH
6777esac
6778cat <<EOM
6779Perl can be built with extra modules or bundles of modules which
6780will be fetched from the CPAN and installed alongside Perl.
6781
6782Notice that you will need access to the CPAN; either via the Internet,
6783or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6784be asked later to configure the CPAN.pm module which will in turn do
6785the installation of the rest of the extra modules or bundles.)
6786
6787Notice also that if the modules require any external software such as
dd2de242
JH
6788libraries and headers (the libz library and the zlib.h header for the
6789Compress::Zlib module, for example) you MUST have any such software
6790already installed, this configuration process will NOT install such
6791things for you.
6fcddf3b
JH
6792
6793If this doesn't make any sense to you, just accept the default '$dflt'.
6794EOM
dd2de242 6795rp='Install any extra modules (y or n)?'
6fcddf3b
JH
6796. ./myread
6797case "$ans" in
6798y|Y)
6799 cat <<EOM
6800
6801Please list any extra modules or bundles to be installed from CPAN,
6802with spaces between the names. The names can be in any format the
dd2de242
JH
6803'install' command of CPAN.pm will understand. (Answer 'none',
6804without the quotes, to install no extra modules or bundles.)
6fcddf3b
JH
6805EOM
6806 rp='Extras?'
6807 dflt="$extras"
6808 . ./myread
6809 extras="$ans"
6810esac
6811case "$extras" in
6812''|'none')
6813 val=''
6814 $rm -f ../extras.lst
6815 ;;
6816*) echo "(Saving the list of extras for later...)"
dd2de242
JH
6817 echo "$extras" > ../extras.lst
6818 val="'$extras'"
6fcddf3b
JH
6819 ;;
6820esac
6821set extras
6822eval $setvar
6823echo " "
6824
b4eb6b3d
JH
6825: Find perl5.005 or later.
6826echo "Looking for a previously installed perl5.005 or later... "
6827case "$perl5" in
a938a3bb 6828'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6829 : Check if this perl is recent and can load a simple module
a938a3bb 6830 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6831 perl5=$tdir/perl
6832 break;
a938a3bb
IZ
6833 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6834 perl5=$tdir/perl5
b4eb6b3d
JH
6835 break;
6836 fi
6837 done
6838 ;;
6839*) perl5="$perl5"
6840 ;;
6841esac
6842case "$perl5" in
6843'') echo "None found. That's ok.";;
6844*) echo "Using $perl5." ;;
6845esac
6846
6847: Determine list of previous versions to include in @INC
6848$cat > getverlist <<EOPL
6849#!$perl5 -w
6850use File::Basename;
6851\$api_versionstring = "$api_versionstring";
6852\$version = "$version";
6853\$stem = "$sitelib_stem";
6854\$archname = "$archname";
6855EOPL
6856 $cat >> getverlist <<'EOPL'
6857# Can't have leading @ because metaconfig interprets it as a command!
6858;@inc_version_list=();
6859# XXX Redo to do opendir/readdir?
6860if (-d $stem) {
6861 chdir($stem);
6862 ;@candidates = glob("5.*");
6863}
6864else {
6865 ;@candidates = ();
6866}
6867
6868# XXX ToDo: These comparisons must be reworked when two-digit
6869# subversions come along, so that 5.7.10 compares as greater than
6870# 5.7.3! By that time, hope that 5.6.x is sufficiently
6871# widespread that we can use the built-in version vectors rather
6872# than reinventing them here. For 5.6.0, however, we must
6873# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6874foreach $d (@candidates) {
6875 if ($d lt $version) {
6876 if ($d ge $api_versionstring) {
6877 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6878 }
6879 elsif ($d ge "5.005") {
6880 unshift(@inc_version_list, grep { -d } $d);
6881 }
6882 }
6883 else {
6884 # Skip newer version. I.e. don't look in
6885 # 5.7.0 if we're installing 5.6.1.
6886 }
6887}
6888
6889if (@inc_version_list) {
6890 print join(' ', @inc_version_list);
6891}
6892else {
6893 # Blank space to preserve value for next Configure run.
6894 print " ";
6895}
6896EOPL
6897chmod +x getverlist
6898case "$inc_version_list" in
a938a3bb 6899'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
6900 dflt=`$perl5 getverlist`
6901 else
6902 dflt='none'
6903 fi
6904 ;;
6905$undef) dflt='none' ;;
6d1a7737 6906*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
6907esac
6908case "$dflt" in
6909''|' ') dflt=none ;;
6910esac
6911case "$dflt" in
69125.005) case "$bincompat5005" in
6913 $define|true|[yY]*) ;;
6914 *) dflt=none ;;
6915 esac
6916 ;;
6917esac
6918$cat <<'EOM'
6919
6920In order to ease the process of upgrading, this version of perl
6921can be configured to use modules built and installed with earlier
6922versions of perl that were installed under $prefix. Specify here
6923the list of earlier versions that this version of perl should check.
6924If Configure detected no earlier versions of perl installed under
6925$prefix, then the list will be empty. Answer 'none' to tell perl
6926to not search earlier versions.
6927
6928The default should almost always be sensible, so if you're not sure,
6929just accept the default.
6930EOM
6931
6932rp='List of earlier versions to include in @INC?'
6933. ./myread
6934case "$ans" in
6935[Nn]one|''|' ') inc_version_list=' ' ;;
6936*) inc_version_list="$ans" ;;
6937esac
6938case "$inc_version_list" in
6939''|' ')
6940 inc_version_list_init='0';;
6941*) inc_version_list_init=`echo $inc_version_list |
6942 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6943 ;;
6944esac
6945$rm -f getverlist
6946
6947: determine whether to install perl also as /usr/bin/perl
6948
6949echo " "
6950if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6951 $cat <<EOM
6952Many scripts expect perl to be installed as /usr/bin/perl.
6953I can install the perl you are about to compile also as /usr/bin/perl
6954(in addition to $installbin/perl).
6955EOM
6956 case "$installusrbinperl" in
6957 "$undef"|[nN]*) dflt='n';;
6958 *) dflt='y';;
6959 esac
6960 rp="Do you want to install perl as /usr/bin/perl?"
6961 . ./myread
6962 case "$ans" in
6963 [yY]*) val="$define";;
6964 *) val="$undef" ;;
6965 esac
6966else
6967 val="$undef"
6968fi
6969set installusrbinperl
6970eval $setvar
6971
6972: see if dld is available
6973set dld.h i_dld
6974eval $inhdr
6975
6976: see if dlopen exists
6977xxx_runnm="$runnm"
6978runnm=false
6979set dlopen d_dlopen
6980eval $inlibc
6981runnm="$xxx_runnm"
6982
6983: determine which dynamic loading, if any, to compile in
6984echo " "
6985dldir="ext/DynaLoader"
6986case "$usedl" in
6987$define|y|true)
6988 dflt='y'
6989 usedl="$define"
6990 ;;
6991$undef|n|false)
6992 dflt='n'
6993 usedl="$undef"
6994 ;;
6995*)
6996 dflt='n'
6997 case "$d_dlopen" in
6998 $define) dflt='y' ;;
6999 esac
7000 case "$i_dld" in
7001 $define) dflt='y' ;;
7002 esac
7003 : Does a dl_xxx.xs file exist for this operating system
7004 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7005 ;;
7006esac
7007rp="Do you wish to use dynamic loading?"
7008. ./myread
7009usedl="$ans"
7010case "$ans" in
7011y*) usedl="$define"
7012 case "$dlsrc" in
7013 '')
7014 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7015 dflt="$dldir/dl_${osname}.xs"
7016 elif $test "$d_dlopen" = "$define" ; then
7017 dflt="$dldir/dl_dlopen.xs"
7018 elif $test "$i_dld" = "$define" ; then
7019 dflt="$dldir/dl_dld.xs"
7020 else
7021 dflt=''
7022 fi
7023 ;;
7024 *) dflt="$dldir/$dlsrc"
7025 ;;
7026 esac
7027 echo "The following dynamic loading files are available:"
7028 : Can not go over to $dldir because getfile has path hard-coded in.
7029 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7030 rp="Source file to use for dynamic loading"
7031 fn="fne"
7032 gfpth="$src"
7033 . ./getfile
7034 usedl="$define"
7035 : emulate basename
7036 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7037
7038 $cat << EOM
7039
7040Some systems may require passing special flags to $cc -c to
7041compile modules that will be used to create a shared library.
7042To use no flags, say "none".
7043
7044EOM
7045 case "$cccdlflags" in
7046 '') case "$gccversion" in
7047 '') case "$osname" in
7048 hpux) dflt='+z' ;;
7049 next) dflt='none' ;;
7050 irix*) dflt='-KPIC' ;;
48bcfe03 7051 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7052 sunos) dflt='-pic' ;;
7053 *) dflt='none' ;;
7054 esac
7055 ;;
7056 *) case "$osname" in
b6cc0f4c 7057 darwin) dflt='none' ;;
48bcfe03 7058 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7059 *) dflt='-fpic' ;;
7060 esac ;;
7061 esac ;;
7062 ' ') dflt='none' ;;
7063 *) dflt="$cccdlflags" ;;
7064 esac
7065 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7066 . ./myread
7067 case "$ans" in
7068 none) cccdlflags=' ' ;;
7069 *) cccdlflags="$ans" ;;
7070 esac
7071
7072 cat << EOM
7073
7074Some systems use ld to create libraries that can be dynamically loaded,
7075while other systems (such as those using ELF) use $cc.
7076
7077EOM
7078 case "$ld" in
7079 '') $cat >try.c <<'EOM'
7080/* Test for whether ELF binaries are produced */
7081#include <fcntl.h>
7082#include <stdlib.h>
7083int main() {
7084 char b[4];
7085 int i = open("a.out",O_RDONLY);
7086 if(i == -1)
7087 exit(1); /* fail */
7088 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7089 exit(0); /* succeed (yes, it's ELF) */
7090 else
7091 exit(1); /* fail */
7092}
7093EOM
5440bc8e 7094 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7095 cat <<EOM
7096You appear to have ELF support. I'll use $cc to build dynamic libraries.
7097EOM
7098 dflt="$cc"
7099 else
7100 echo "I'll use ld to build dynamic libraries."
7101 dflt='ld'
7102 fi
7103 rm -f try.c a.out
7104 ;;
7105 *) dflt="$ld"
7106 ;;
7107 esac
7108
7109 rp="What command should be used to create dynamic libraries?"
7110 . ./myread
7111 ld="$ans"
7112
7113 cat << EOM
7114
7115Some systems may require passing special flags to $ld to create a
7116library that can be dynamically loaded. If your ld flags include
7117-L/other/path options to locate libraries outside your loader's normal
7118search path, you may need to specify those -L options here as well. To
7119use no flags, say "none".
7120
7121EOM
7122 case "$lddlflags" in
7123 '') case "$osname" in
7124 beos) dflt='-nostart' ;;
7125 hpux) dflt='-b';
7126 case "$gccversion" in
7127 '') dflt="$dflt +vnocompatwarnings" ;;
7128 esac
7129 ;;
7130 linux|irix*) dflt='-shared' ;;
7131 next) dflt='none' ;;
7132 solaris) dflt='-G' ;;
7133 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7134 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7135 *) dflt='none' ;;
7136 esac
7137 ;;
7138 *) dflt="$lddlflags" ;;
7139 esac
7140
7141 : Try to guess additional flags to pick up local libraries.
7142 : Be careful not to append to a plain 'none'
7143 case "$dflt" in
7144 none) dflt='' ;;
7145 esac
7146 for thisflag in $ldflags; do
7147 case "$thisflag" in
7148 -L*|-R*)
7149 case " $dflt " in
7150 *" $thisflag "*) ;;
7151 *) dflt="$dflt $thisflag" ;;
7152 esac
7153 ;;
7154 esac
7155 done
7156
7157 case "$dflt" in
7158 ''|' ') dflt='none' ;;
7159 esac
7160
7161 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7162 . ./myread
7163 case "$ans" in
7164 none) lddlflags=' ' ;;
7165 *) lddlflags="$ans" ;;
7166 esac
7167
7168 cat <<EOM
7169
7170Some systems may require passing special flags to $cc to indicate that
7171the resulting executable will use dynamic linking. To use no flags,
7172say "none".
7173
7174EOM
7175 case "$ccdlflags" in
7176 '') case "$osname" in
7177 hpux) dflt='-Wl,-E' ;;
7178 linux) dflt='-rdynamic' ;;
7179 next) dflt='none' ;;
7180 sunos) dflt='none' ;;
7181 *) dflt='none' ;;
7182 esac ;;
7183 ' ') dflt='none' ;;
7184 *) dflt="$ccdlflags" ;;
7185 esac
7186 rp="Any special flags to pass to $cc to use dynamic linking?"
7187 . ./myread
7188 case "$ans" in
7189 none) ccdlflags=' ' ;;
7190 *) ccdlflags="$ans" ;;
7191 esac
7192 ;;
7193*) usedl="$undef"
7194 ld='ld'
7195 dlsrc='dl_none.xs'
7196 lddlflags=''
7197 ccdlflags=''
7198 ;;
7199esac
7200
7201also=''
7202case "$usedl" in
7203$undef)
7204 # No dynamic loading being used, so don't bother even to prompt.
7205 useshrplib='false'
7206 ;;
7207*) case "$useshrplib" in
7208 '') case "$osname" in
48bcfe03 7209 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7210 dflt=y
7211 also='Building a shared libperl is required for dynamic loading to work on your system.'
7212 ;;
7213 next*)
7214 case "$osvers" in
7215 4*) dflt=y
7216 also='Building a shared libperl is needed for MAB support.'
7217 ;;
7218 *) dflt=n
7219 ;;
7220 esac
7221 ;;
7222 *) dflt=n
7223 ;;
7224 esac
7225 ;;
7226 $define|true|[Yy]*)
7227 dflt=y
7228 ;;
7229 *) dflt=n
7230 ;;
7231 esac
7232 $cat << EOM
7233
7234The perl executable is normally obtained by linking perlmain.c with
7235libperl${_a}, any static extensions (usually just DynaLoader), and
7236any other libraries needed on this system (such as -lm, etc.). Since
7237your system supports dynamic loading, it is probably possible to build
7238a shared libperl.$so. If you will have more than one executable linked
7239to libperl.$so, this will significantly reduce the size of each
7240executable, but it may have a noticeable affect on performance. The
7241default is probably sensible for your system.
7242$also
7243
7244EOM
7245 rp="Build a shared libperl.$so (y/n)"
7246 . ./myread
7247 case "$ans" in
7248 true|$define|[Yy]*)
7249 useshrplib='true' ;;
7250 *) useshrplib='false' ;;
7251 esac
7252 ;;
7253esac
7254
7255case "$useshrplib" in
7256true)
7257 case "$libperl" in
7258 '')
7259 # Figure out a good name for libperl.so. Since it gets stored in
7260 # a version-specific architecture-dependent library, the version
7261 # number isn't really that important, except for making cc/ld happy.
7262 #
7263 # A name such as libperl.so.3.1
7264 majmin="libperl.$so.$patchlevel.$subversion"
7265 # A name such as libperl.so.301
7266 majonly=`echo $patchlevel $subversion |
7267 $awk '{printf "%d%02d", $1, $2}'`
7268 majonly=libperl.$so.$majonly
7269 # I'd prefer to keep the os-specific stuff here to a minimum, and
7270 # rely on figuring it out from the naming of libc.
7271 case "${osname}${osvers}" in
7272 next4*)
7273 dflt=libperl.5.$so
7274 # XXX How handle the --version stuff for MAB?
7275 ;;
7276 linux*) # ld won't link with a bare -lperl otherwise.
7277 dflt=libperl.$so
7278 ;;
7279 cygwin*) # include version
7280 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7281 ;;
7282 *) # Try to guess based on whether libc has major.minor.
7283 case "$libc" in
7284 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7285 *libc.$so.[0-9]*) dflt=$majonly ;;
7286 *) dflt=libperl.$so ;;
7287 esac
7288 ;;
7289 esac
7290 ;;
7291 *) dflt=$libperl
7292 ;;
7293 esac
7294 cat << EOM
7295
7296I need to select a good name for the shared libperl. If your system uses
7297library names with major and minor numbers, then you might want something
7298like $majmin. Alternatively, if your system uses a single version
7299number for shared libraries, then you might want to use $majonly.
7300Or, your system might be quite happy with a simple libperl.$so.
7301
7302Since the shared libperl will get installed into a version-specific
7303architecture-dependent directory, the version number of the shared perl
7304library probably isn't important, so the default should be o.k.
7305
7306EOM
7307 rp='What name do you want to give to the shared libperl?'
7308 . ./myread
7309 libperl=$ans
7310 echo "Ok, I'll use $libperl"
7311 ;;
7312*)
7313 libperl="libperl${_a}"
7314 ;;
7315esac
7316
7317# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7318case "$shrpdir" in
7319'') ;;
7320*) $cat >&4 <<EOM
7321WARNING: Use of the shrpdir variable for the installation location of
7322the shared $libperl is not supported. It was never documented and
7323will not work in this version. Let me (perlbug@perl.org)
7324know of any problems this may cause.
7325
7326EOM
7327 case "$shrpdir" in
7328 "$archlibexp/CORE")
7329 $cat >&4 <<EOM
7330But your current setting of $shrpdir is
7331the default anyway, so it's harmless.
7332EOM
7333 ;;
7334 *)
7335 $cat >&4 <<EOM
7336Further, your current attempted setting of $shrpdir
7337conflicts with the value of $archlibexp/CORE
7338that installperl will use.
7339EOM
7340 ;;
7341 esac
7342 ;;
7343esac
7344
7345# How will the perl executable find the installed shared $libperl?
7346# Add $xxx to ccdlflags.
7347# If we can't figure out a command-line option, use $shrpenv to
7348# set env LD_RUN_PATH. The main perl makefile uses this.
7349shrpdir=$archlibexp/CORE
7350xxx=''
7351tmp_shrpenv=''
7352if "$useshrplib"; then
7353 case "$osname" in
7354 aix)
7355 # We'll set it in Makefile.SH...
7356 ;;
7357 solaris|netbsd)
7358 xxx="-R $shrpdir"
7359 ;;
7360 freebsd)
7361 xxx="-Wl,-R$shrpdir"
7362 ;;
7363 linux|irix*|dec_osf)
7364 xxx="-Wl,-rpath,$shrpdir"
7365 ;;
7366 next)
7367 # next doesn't like the default...
7368 ;;
7369 beos)
7370 # beos doesn't like the default, either.
7371 ;;
7372 hpux*)
7373 # hpux doesn't like the default, either.
7374 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7375 ;;
7376 *)
7377 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7378 ;;
7379 esac
7380 case "$xxx" in
7381 '') ;;
7382 *)
7383 # Only add $xxx if it isn't already in ccdlflags.
7384 case " $ccdlflags " in
7385 *" $xxx "*) ;;
7386 *) ccdlflags="$ccdlflags $xxx"
7387 cat <<EOM >&4
7388
7389Adding $xxx to the flags
7390passed to $ld so that the perl executable will find the
7391installed shared $libperl.
7392
7393EOM
7394 ;;
7395 esac
7396 ;;
7397 esac
7398fi
7399# Fix ccdlflags in AIX for building external extensions.
7400# (For building Perl itself bare -bE:perl.exp is needed,
7401# Makefile.SH takes care of this.)
7402case "$osname" in
7403aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7404esac
7405# Respect a hint or command-line value.
7406case "$shrpenv" in
7407'') shrpenv="$tmp_shrpenv" ;;
7408esac
7409case "$ldlibpthname" in
7410'') ldlibpthname=LD_LIBRARY_PATH ;;
7411none) ldlibpthname='' ;;
7412esac
7413
7414: determine where manual pages are on this system
7415echo " "
7416case "$sysman" in
7417'')
4a0a3829
SD
7418 syspath='/usr/share/man/man1 /usr/man/man1'
7419 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7420 syspath="$syspath /usr/man/u_man/man1"
b4eb6b3d
JH
7421 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7422 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7423 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7424 sysman=`./loc . /usr/man/man1 $syspath`
7425 ;;
7426esac
7427if $test -d "$sysman"; then
7428 echo "System manual is in $sysman." >&4
7429else
7430 echo "Could not find manual pages in source form." >&4
7431fi
7432
7433: determine where manual pages go
7434set man1dir man1dir none
7435eval $prefixit
7436$cat <<EOM
7437
7438$spackage has manual pages available in source form.
7439EOM
7440case "$nroff" in
7441nroff)
7442 echo "However, you don't have nroff, so they're probably useless to you."
7443 case "$man1dir" in
7444 '') man1dir="none";;
7445 esac;;
7446esac
7447echo "If you don't want the manual sources installed, answer 'none'."
7448case "$man1dir" in
7449' ') dflt=none
7450 ;;
7451'')
4a0a3829
SD
7452 lookpath="$prefixexp/share/man/man1"
7453 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
b4eb6b3d
JH
7454 lookpath="$lookpath $prefixexp/man/p_man/man1"
7455 lookpath="$lookpath $prefixexp/man/u_man/man1"
7456 lookpath="$lookpath $prefixexp/man/man.1"
7457 case "$sysman" in
7458 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7459 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7460 esac
7461 set dflt
7462 eval $prefixup
7463 ;;
7464*) dflt="$man1dir"
7465 ;;
7466esac
7467echo " "
7468fn=dn+~
7469rp="Where do the main $spackage manual pages (source) go?"
7470. ./getfile
7471if $test "X$man1direxp" != "X$ansexp"; then
7472 installman1dir=''
7473fi
7474man1dir="$ans"
7475man1direxp="$ansexp"
7476case "$man1dir" in
7477'') man1dir=' '
7478 installman1dir='';;
7479esac
7480
7481: Change installation prefix, if necessary.
7482if $test X"$prefix" != X"$installprefix"; then
7483 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7484else
7485 installman1dir="$man1direxp"
7486fi
7487
7488: What suffix to use on installed man pages
7489
7490case "$man1dir" in
7491' ')
7492 man1ext='0'
7493 ;;
7494*)
7495 rp="What suffix should be used for the main $spackage man pages?"
7496 case "$man1ext" in
7497 '') case "$man1dir" in
7498 *1) dflt=1 ;;
7499 *1p) dflt=1p ;;
7500 *1pm) dflt=1pm ;;
7501 *l) dflt=l;;
7502 *n) dflt=n;;
7503 *o) dflt=o;;
7504 *p) dflt=p;;
7505 *C) dflt=C;;
7506 *L) dflt=L;;
7507 *L1) dflt=L1;;
7508 *) dflt=1;;
7509 esac
7510 ;;
7511 *) dflt="$man1ext";;
7512 esac
7513 . ./myread
7514 man1ext="$ans"
7515 ;;
7516esac
7517
7518: see if we can have long filenames
7519echo " "
7520first=123456789abcdef
7521$rm -f $first
7522if (echo hi >$first) 2>/dev/null; then
7523 if $test -f 123456789abcde; then
7524 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7525 val="$undef"
7526 else
7527 echo 'You can have filenames longer than 14 characters.'>&4
7528 val="$define"
7529 fi
7530else
7531 $cat <<'EOM'
7532You can't have filenames longer than 14 chars.
7533You can't even think about them!
7534EOM
7535 val="$undef"
7536fi
7537set d_flexfnam
7538eval $setvar
7539$rm -rf 123456789abcde*
7540
7541: determine where library module manual pages go
7542set man3dir man3dir none
7543eval $prefixit
7544$cat <<EOM
7545
7546$spackage has manual pages for many of the library modules.
7547EOM
7548
7549case "$nroff" in
7550nroff)
7551 $cat <<'EOM'
7552However, you don't have nroff, so they're probably useless to you.
7553EOM
7554 case "$man3dir" in
7555 '') man3dir="none";;
7556 esac;;
7557esac
7558
7559case "$d_flexfnam" in
7560undef)
7561 $cat <<'EOM'
7562However, your system can't handle the long file names like File::Basename.3.
7563EOM
7564 case "$man3dir" in
7565 '') man3dir="none";;
7566 esac;;
7567esac
7568
7569echo "If you don't want the manual sources installed, answer 'none'."
7570prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7571case "$man3dir" in
7572'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7573 if $test -d "$privlib/man/man3"; then
7574 cat <<EOM >&4
7575
7576WARNING: Previous versions of perl installed man3 pages into
7577$privlib/man/man3. This version will suggest a
7578new default of $dflt.
7579EOM
7580 tdflt=$dflt
7581 dflt='n'
7582 rp='Do you wish to preserve the old behavior?(y/n)'
7583 . ./myread
7584 case "$ans" in
7585 y*) dflt="$privlib/man/man3" ;;
7586 *) dflt=$tdflt ;;
7587 esac
7588 fi
7589 ;;
7590*) dflt="$man3dir" ;;
7591esac
7592case "$dflt" in
7593' ') dflt=none ;;
7594esac
7595echo " "
7596fn=dn+~
7597rp="Where do the $package library man pages (source) go?"
7598. ./getfile
7599man3dir="$ans"
7600man3direxp="$ansexp"
7601case "$man3dir" in
7602'') man3dir=' '
7603 installman3dir='';;
7604esac
7605
7606: Change installation prefix, if necessary.
7607if $test X"$prefix" != X"$installprefix"; then
7608 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7609else
7610 installman3dir="$man3direxp"
7611fi
7612
7613: What suffix to use on installed man pages
7614case "$man3dir" in
7615' ')
7616 man3ext='0'
7617 ;;
7618*)
7619 rp="What suffix should be used for the $package library man pages?"
7620 case "$man3ext" in
7621 '') case "$man3dir" in
7622 *3) dflt=3 ;;
7623 *3p) dflt=3p ;;
7624 *3pm) dflt=3pm ;;
7625 *l) dflt=l;;
7626 *n) dflt=n;;
7627 *o) dflt=o;;
7628 *p) dflt=p;;
7629 *C) dflt=C;;
7630 *L) dflt=L;;
7631 *L3) dflt=L3;;
7632 *) dflt=3;;
7633 esac
7634 ;;
7635 *) dflt="$man3ext";;
7636 esac
7637 . ./myread
7638 man3ext="$ans"
7639 ;;
7640esac
7641
7642: see if we have to deal with yellow pages, now NIS.
7643if $test -d /usr/etc/yp || $test -d /etc/yp; then
7644 if $test -f /usr/etc/nibindd; then
7645 echo " "
7646 echo "I'm fairly confident you're on a NeXT."
7647 echo " "
7648 rp='Do you get the hosts file via NetInfo?'
7649 dflt=y
7650 case "$hostcat" in
7651 nidump*) ;;
7652 '') ;;
7653 *) dflt=n;;
7654 esac
7655 . ./myread
7656 case "$ans" in
7657 y*) hostcat='nidump hosts .';;
7658 *) case "$hostcat" in
7659 nidump*) hostcat='';;
7660 esac
7661 ;;
7662 esac
7663 fi
7664 case "$hostcat" in
7665 nidump*) ;;
7666 *)
7667 case "$hostcat" in
7668 *ypcat*) dflt=y;;
7669 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7670 dflt=y
7671 else
7672 dflt=n
7673 fi;;
7674 *) dflt=n;;
7675 esac
7676 echo " "
7677 rp='Are you getting the hosts file via yellow pages?'
7678 . ./myread
7679 case "$ans" in
7680 y*) hostcat='ypcat hosts';;
7681 *) hostcat='cat /etc/hosts';;
7682 esac
7683 ;;
7684 esac
7685fi
7686case "$hostcat" in
7687'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7688esac
7689case "$groupcat" in
7690'') test -f /etc/group && groupcat='cat /etc/group';;
7691esac
7692case "$passcat" in
7693'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7694esac
7695
7696: now get the host name
7697echo " "
7698echo "Figuring out host name..." >&4
7699case "$myhostname" in
7700'') cont=true
7701 echo 'Maybe "hostname" will work...'
73614538 7702 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7703 myhostname=$tans
7704 phostname=hostname
7705 cont=''
7706 fi
7707 ;;
7708*) cont='';;
7709esac
7710if $test "$cont"; then
7711 if ./xenix; then
7712 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7713 if tans=`cat /etc/systemid 2>&1` ; then
7714 myhostname=$tans
7715 phostname='cat /etc/systemid'
7716 echo "Whadyaknow. Xenix always was a bit strange..."
7717 cont=''
7718 fi
7719 elif $test -r /etc/systemid; then
7720 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7721 fi
7722fi
7723if $test "$cont"; then
7724 echo 'No, maybe "uuname -l" will work...'
73614538 7725 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
7726 myhostname=$tans
7727 phostname='uuname -l'
7728 else
7729 echo 'Strange. Maybe "uname -n" will work...'
73614538 7730 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
7731 myhostname=$tans
7732 phostname='uname -n'
7733 else
7734 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 7735 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
7736 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7737 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7738 else
7739 case "$myhostname" in
7740 '') echo "Does this machine have an identity crisis or something?"
7741 phostname='';;
7742 *)
7743 echo "Well, you said $myhostname before..."
7744 phostname='echo $myhostname';;
7745 esac
7746 fi
7747 fi
7748 fi
7749fi
7750: you do not want to know about this
7751set $myhostname
7752myhostname=$1
7753
7754: verify guess
7755if $test "$myhostname" ; then
7756 dflt=y
7757 rp='Your host name appears to be "'$myhostname'".'" Right?"
7758 . ./myread
7759 case "$ans" in
7760 y*) ;;
7761 *) myhostname='';;
7762 esac
7763fi
7764
7765: bad guess or no guess
7766while $test "X$myhostname" = X ; do
7767 dflt=''
7768 rp="Please type the (one word) name of your host:"
7769 . ./myread
7770 myhostname="$ans"
7771done
7772
7773: translate upper to lower if necessary
7774case "$myhostname" in
7775*[A-Z]*)
7776 echo "(Normalizing case in your host name)"
7777 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7778 ;;
7779esac
7780
7781case "$myhostname" in
7782*.*)
7783 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7784 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7785 echo "(Trimming domain name from host name--host name is now $myhostname)"
7786 ;;
7787*) case "$mydomain" in
7788 '')
7789 {
7790 test "X$hostcat" = "Xypcat hosts" &&
7791 ypmatch "$myhostname" hosts 2>/dev/null |\
7792 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7793 $test -s hosts
7794 } || {
7795 test "X$hostcat" != "X" &&
7796 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7797 /[ ]$myhostname[ . ]/p" > hosts
7798 }
7799 tmp_re="[ . ]"
f08cbdd1
PP
7800 if $test -f hosts; then
7801 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7802 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7803 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7804 hosts | $sort | $uniq | \
7805 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7806 case `$echo X$dflt` in
7807 X*\ *) echo "(Several hosts in the database matched hostname)"
7808 dflt=.
7809 ;;
7810 X.) echo "(You do not have fully-qualified names in the hosts database)"
7811 ;;
7812 esac
7813 else
7814 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7815 dflt=.
f08cbdd1 7816 fi
b4eb6b3d
JH
7817 case "$dflt" in
7818 .)
7819 tans=`./loc resolv.conf X /etc /usr/etc`
7820 if $test -f "$tans"; then
7821 echo "(Attempting domain name extraction from $tans)"
7822 dflt=.`$sed -n -e 's/ / /g' \
7823 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7824 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7825 case "$dflt" in
7826 .) dflt=.`$sed -n -e 's/ / /g' \
7827 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7828 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7829 ;;
7830 esac
7831 fi
7832 ;;
7833 esac
7834 case "$dflt" in
7835 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 7836 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
7837 case "$dflt" in
7838 '') dflt='.';;
7839 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7840 esac
7841 ;;
7842 esac
59c9e5d6
PP
7843 case "$dflt$osname" in
7844 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 7845 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
7846 ;;
7847 esac
b4eb6b3d
JH
7848 case "$dflt" in
7849 .) echo "(Lost all hope -- silly guess then)"
7850 dflt='.uucp'
7851 ;;
7852 esac
7853 $rm -f hosts
7854 ;;
7855 *) dflt="$mydomain";;
7856 esac;;
7857esac
7858echo " "
7859rp="What is your domain name?"
7860. ./myread
7861tans="$ans"
7862case "$ans" in
7863'') ;;
7864.*) ;;
7865*) tans=".$tans";;
7866esac
7867mydomain="$tans"
7868
7869: translate upper to lower if necessary
7870case "$mydomain" in
7871*[A-Z]*)
7872 echo "(Normalizing case in your domain name)"
7873 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7874 ;;
7875esac
7876
7877: a little sanity check here
7878case "$phostname" in
7879'') ;;
7880*)
7881 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7882 $myhostname$mydomain|$myhostname) ;;
7883 *)
7884 case "$phostname" in
7885 sed*)
7886 echo "(That doesn't agree with your whoami.h file, by the way.)"
7887 ;;
7888 *)
7889 echo "(That doesn't agree with your $phostname command, by the way.)"
7890 ;;
7891 esac
7892 ;;
7893 esac
7894 ;;
7895esac
7896
7897$cat <<EOM
7898
7899I need to get your e-mail address in Internet format if possible, i.e.
7900something like user@host.domain. Please answer accurately since I have
7901no easy means to double check it. The default value provided below
7902is most probably close to reality but may not be valid from outside
7903your organization...
7904
7905EOM
7906cont=x
7907while test "$cont"; do
7908 case "$cf_email" in
7909 '') dflt="$cf_by@$myhostname$mydomain";;
7910 *) dflt="$cf_email";;
7911 esac
7912 rp='What is your e-mail address?'
7913 . ./myread
7914 cf_email="$ans"
7915 case "$cf_email" in
7916 *@*.*) cont='' ;;
7917 *)
7918 rp='Address does not look like an Internet one. Use it anyway?'
7919 case "$fastread" in
7920 yes) dflt=y ;;
7921 *) dflt=n ;;
7922 esac
7923 . ./myread
7924 case "$ans" in
7925 y*) cont='' ;;
7926 *) echo " " ;;
7927 esac
7928 ;;
7929 esac
7930done
7931
7932$cat <<EOM
7933
7934If you or somebody else will be maintaining perl at your site, please
7935fill in the correct e-mail address here so that they may be contacted
7936if necessary. Currently, the "perlbug" program included with perl
7937will send mail to this address in addition to perlbug@perl.org. You may
7938enter "none" for no administrator.
7939
7940EOM
7941case "$perladmin" in
7942'') dflt="$cf_email";;
7943*) dflt="$perladmin";;
7944esac
7945rp='Perl administrator e-mail address'
7946. ./myread
7947perladmin="$ans"
7948
674912d7
RB
7949: determine whether to only install version-specific parts.
7950echo " "
7951$cat <<EOM
7952Do you want to install only the version-specific parts of the perl
7953distribution? Usually you do *not* want to do this.
7954EOM
7955case "$versiononly" in
7956"$define"|[Yy]*|true) dflt='y' ;;
7957*) dflt='n';
7958esac
7959rp="Do you want to install only the version-specific parts of perl?"
7960. ./myread
7961case "$ans" in
7962[yY]*) val="$define";;
7963*) val="$undef" ;;
7964esac
7965set versiononly
7966eval $setvar
7967
b4eb6b3d
JH
7968: figure out how to guarantee perl startup
7969case "$startperl" in
7970'')
7971 case "$sharpbang" in
7972 *!)
7973 $cat <<EOH
7974
7975I can use the #! construct to start perl on your system. This will
7976make startup of perl scripts faster, but may cause problems if you
7977want to share those scripts and perl is not in a standard place
7978($binexp/perl) on all your platforms. The alternative is to force
7979a shell by starting the script with a single ':' character.
7980
7981EOH
674912d7
RB
7982 case "$versiononly" in
7983 "$define") dflt="$binexp/perl$version";;
7984 *) dflt="$binexp/perl";;
7985 esac
b4eb6b3d
JH
7986 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7987 . ./myread
7988 case "$ans" in
7989 none) startperl=": # use perl";;
7990 *) startperl="#!$ans"
7991 if $test 30 -lt `echo "$ans" | wc -c`; then
7992 $cat >&4 <<EOM
7993
7994WARNING: Some systems limit the #! command to 32 characters.
7995If you experience difficulty running Perl scripts with #!, try
7996installing Perl in a directory with a shorter pathname.
7997
7998EOM
7999 fi ;;
8000 esac
8001 ;;
8002 *) startperl=": # use perl"
8003 ;;
8004 esac
8005 ;;
8006esac
8007echo "I'll use $startperl to start perl scripts."
8008
8009: figure best path for perl in scripts
8010case "$perlpath" in
8011'')
8012 perlpath="$binexp/perl"
8013 case "$startperl" in
8014 *!*) ;;
8015 *)
8016 $cat <<EOH
8017
8018I will use the "eval 'exec'" idiom to start Perl on your system.
8019I can use the full path of your Perl binary for this purpose, but
8020doing so may cause problems if you want to share those scripts and
8021Perl is not always in a standard place ($binexp/perl).
8022
8023EOH
8024 dflt="$binexp/perl"
8025 rp="What path shall I use in \"eval 'exec'\"?"
8026 . ./myread
8027 perlpath="$ans"
8028 ;;
8029 esac
8030 ;;
8031esac
8032case "$startperl" in
8033*!*) ;;
8034*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8035esac
8036
8037: determine where public executable scripts go
8038set scriptdir scriptdir
8039eval $prefixit
8040case "$scriptdir" in
8041'')
8042 dflt="$bin"
8043 : guess some guesses
8044 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8045 $test -d /usr/share/bin && dflt=/usr/share/bin
8046 $test -d /usr/local/script && dflt=/usr/local/script
8047 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8048 $test -d $prefixexp/script && dflt=$prefixexp/script
8049 set dflt
8050 eval $prefixup
8051 ;;
8052*) dflt="$scriptdir"
8053 ;;
8054esac
8055$cat <<EOM
8056
8057Some installations have a separate directory just for executable scripts so
8058that they can mount it across multiple architectures but keep the scripts in
8059one spot. You might, for example, have a subdirectory of /usr/share for this.
8060Or you might just lump your scripts in with all your other executables.
8061
8062EOM
8063fn=d~
8064rp='Where do you keep publicly executable scripts?'
8065. ./getfile
8066if $test "X$ansexp" != "X$scriptdirexp"; then
8067 installscript=''
8068fi
8069scriptdir="$ans"
8070scriptdirexp="$ansexp"
8071: Change installation prefix, if necessary.
8072if $test X"$prefix" != X"$installprefix"; then
8073 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8074else
8075 installscript="$scriptdirexp"
8076fi
8077
8078: determine where add-on public executables go
8079case "$sitebin" in
8080'') dflt=$siteprefix/bin ;;
8081*) dflt=$sitebin ;;
8082esac
8083fn=d~
8084rp='Pathname where the add-on public executables should be installed?'
8085. ./getfile
8086sitebin="$ans"
8087sitebinexp="$ansexp"
8088: Change installation prefix, if necessary.
8089if $test X"$prefix" != X"$installprefix"; then
8090 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8091else
8092 installsitebin="$sitebinexp"
8093fi
8094
96056487
JH
8095: define an is-a-typedef? function
8096typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8097case "$inclist" in
8098"") inclist="sys/types.h";;
8099esac;
8100eval "varval=\$$var";
8101case "$varval" in
8102"")
8103 $rm -f temp.c;
8104 for inc in $inclist; do
8105 echo "#include <$inc>" >>temp.c;
8106 done;
8107 echo "#ifdef $type" >> temp.c;
8108 echo "printf(\"We have $type\");" >> temp.c;
8109 echo "#endif" >> temp.c;
8110 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8111 if $contains $type temp.E >/dev/null 2>&1; then
8112 eval "$var=\$type";
8113 else
8114 eval "$var=\$def";
8115 fi;
8116 $rm -f temp.?;;
8117*) eval "$var=\$varval";;
8118esac'
8119
8120: define an is-a-typedef? function that prompts if the type is not available.
8121typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8122case "$inclist" in
8123"") inclist="sys/types.h";;
8124esac;
8125eval "varval=\$$var";
8126case "$varval" in
8127"")
8128 $rm -f temp.c;
8129 for inc in $inclist; do
8130 echo "#include <$inc>" >>temp.c;
8131 done;
8132 echo "#ifdef $type" >> temp.c;
8133 echo "printf(\"We have $type\");" >> temp.c;
8134 echo "#endif" >> temp.c;
8135 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8136 echo " " ;
8137 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8138 if $contains $type temp.E >/dev/null 2>&1; then
8139 echo "$type found." >&4;
8140 eval "$var=\$type";
8141 else
8142 echo "$type NOT found." >&4;
8143 dflt="$def";
8144 . ./myread ;
8145 eval "$var=\$ans";
8146 fi;
8147 $rm -f temp.?;;
8148*) eval "$var=\$varval";;
8149esac'
8150
8151: see what type lseek is declared as in the kernel
8152rp="What is the type used for lseek's offset on this system?"
8153set off_t lseektype long stdio.h sys/types.h
8154eval $typedef_ask
8155
8156echo " "
8157echo "Checking to see how big your file offsets are..." >&4
8158$cat >try.c <<EOCP
8159#include <sys/types.h>
8160#include <stdio.h>
8161int main()
8162{
8163 printf("%d\n", (int)sizeof($lseektype));
8164 return(0);
8165}
8166EOCP
8167set try
8168if eval $compile_ok; then
8169 lseeksize=`$run ./try`
8170 echo "Your file offsets are $lseeksize bytes long."
8171else
8172 dflt=$longsize
8173 echo " "
8174 echo "(I can't seem to compile the test program. Guessing...)"
8175 rp="What is the size of your file offsets (in bytes)?"
8176 . ./myread
8177 lseeksize="$ans"
8178fi
8179$rm -f try.c try
8180
8181: see what type file positions are declared as in the library
8182rp="What is the type for file position used by fsetpos()?"
8183set fpos_t fpostype long stdio.h sys/types.h
8184eval $typedef_ask
8185
8186echo " "
8187case "$fpostype" in
8188*_t) zzz="$fpostype" ;;
8189*) zzz="fpos_t" ;;
8190esac
8191echo "Checking the size of $zzz..." >&4
8192cat > try.c <<EOCP
8193#include <sys/types.h>
8194#include <stdio.h>
8195int main() {
8196 printf("%d\n", (int)sizeof($fpostype));
8197 exit(0);
8198}
8199EOCP
8200set try
8201if eval $compile_ok; then
8202 yyy=`$run ./try`
8203 case "$yyy" in
8204 '') fpossize=4
8205 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8206 ;;
8207 *) fpossize=$yyy
8208 echo "Your $zzz is $fpossize bytes long."
8209 ;;
8210 esac
8211else
8212 dflt="$longsize"
8213 echo " " >&4
8214 echo "(I can't compile the test program. Guessing...)" >&4
8215 rp="What is the size of your file positions (in bytes)?"
8216 . ./myread
8217 fpossize="$ans"
8218fi
8219
8220
8221
8222# Backward compatibility (uselfs is deprecated).
8223case "$uselfs" in
8224"$define"|true|[yY]*)
8225 cat <<EOM >&4
8226
8227*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8228EOM
8229 uselargefiles="$define"
8230 ;;
8231esac
8232
8233case "$lseeksize:$fpossize" in
82348:8) cat <<EOM
8235
8236You can have files larger than 2 gigabytes.
8237EOM
8238 val="$define" ;;
8239*) case "$uselargefiles" in
8240 "$undef"|false|[nN]*) dflt='n' ;;
8241 *) dflt='y' ;;
8242 esac
8243 cat <<EOM
8244
8245Perl can be built to understand large files (files larger than 2 gigabytes)
8246on some systems. To do so, Configure can be run with -Duselargefiles.
8247
8248If this doesn't make any sense to you, just accept the default '$dflt'.
8249EOM
8250 rp='Try to understand large files, if available?'
8251 . ./myread
8252 case "$ans" in
8253 y|Y) val="$define" ;;
8254 *) val="$undef" ;;
8255 esac
8256 ;;
8257esac
8258set uselargefiles
8259eval $setvar
8260case "$uselargefiles" in
8261"$define")
8262: Look for a hint-file generated 'call-back-unit'. If the
8263: user has specified that a large files perl is to be built,
8264: we may need to set or change some other defaults.
8265 if $test -f uselargefiles.cbu; then
8266 echo "Your platform has some specific hints for large file builds, using them..."
8267 . ./uselargefiles.cbu
8268 echo " "
8269 echo "Rechecking to see how big your file offsets are..." >&4
8270 $cat >try.c <<EOCP
8271#include <sys/types.h>
8272#include <stdio.h>
8273int main()
8274{
8275 printf("%d\n", (int)sizeof($lseektype));
8276 return(0);
8277}
8278EOCP
8279 set try
8280 if eval $compile_ok; then
8281 lseeksize=`$run ./try`
8282 $echo "Your file offsets are now $lseeksize bytes long."
8283 else
8284 dflt="$lseeksize"
8285 echo " "
8286 echo "(I can't seem to compile the test program. Guessing...)"
8287 rp="What is the size of your file offsets (in bytes)?"
8288 . ./myread
8289 lseeksize="$ans"
8290 fi
8291 case "$fpostype" in
8292 *_t) zzz="$fpostype" ;;
8293 *) zzz="fpos_t" ;;
8294 esac
8295 $echo $n "Rechecking the size of $zzz...$c" >&4
8296 $cat > try.c <<EOCP
8297#include <sys/types.h>
8298#include <stdio.h>
8299int main() {
8300 printf("%d\n", (int)sizeof($fpostype));
8301 exit(0);
8302}
8303EOCP
8304 set try
8305 if eval $compile_ok; then
8306 yyy=`$run ./try`
8307 dflt="$lseeksize"
8308 case "$yyy" in
8309 '') echo " "
8310 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8311 ;;
8312 *) fpossize=$yyy
8313 echo " $fpossize bytes." >&4
8314 ;;
8315 esac
8316 else
8317 dflt="$fpossize"
8318 echo " "
8319 echo "(I can't compile the test program. Guessing...)" >&4
8320 rp="What is the size of your file positions (in bytes)?"
8321 . ./myread
8322 fpossize="$ans"
8323 fi
8324 $rm -f try.c try
8325 fi
8326 ;;
8327esac
8328
b4eb6b3d
JH
8329case "$vendorprefix" in
8330'') d_vendorbin="$undef"
8331 vendorbin=''
8332 vendorbinexp=''
8333 ;;
8334*) d_vendorbin="$define"
8335 : determine where vendor-supplied executables go.
8336 case "$vendorbin" in
8337 '') dflt=$vendorprefix/bin ;;
8338 *) dflt="$vendorbin" ;;
8339 esac
8340 fn=d~+
8341 rp='Pathname for the vendor-supplied executables directory?'
8342 . ./getfile
8343 vendorbin="$ans"
8344 vendorbinexp="$ansexp"
8345 ;;
8346esac
8347: Change installation prefix, if necessary.
8348if $test X"$prefix" != X"$installprefix"; then
8349 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8350else
8351 installvendorbin="$vendorbinexp"
8352fi
8353
8354: see if qgcvt exists
8355set qgcvt d_qgcvt
8356eval $inlibc
8357
8358echo " "
8359
8360if $test X"$d_longdbl" = X"$define"; then
8361
8362echo "Checking how to print long doubles..." >&4
8363
8364if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8365 $cat >try.c <<'EOCP'
8366#include <sys/types.h>
8367#include <stdio.h>
8368int main() {
8369 double d = 123.456;
8370 printf("%.3f\n", d);
8371}
8372EOCP
8373 set try
8374 if eval $compile; then
5440bc8e 8375 yyy=`$run ./try`
b4eb6b3d
JH
8376 case "$yyy" in
8377 123.456)
8378 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8379 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8380 echo "We will use %f."
8381 ;;
8382 esac
8383 fi
8384fi
8385
8386if $test X"$sPRIfldbl" = X; then
8387 $cat >try.c <<'EOCP'
8388#include <sys/types.h>
8389#include <stdio.h>
8390int main() {
8391 long double d = 123.456;
2ef53570 8392 printf("%.3Lf\n", d);
b4eb6b3d
JH
8393}
8394EOCP
8395 set try
8396 if eval $compile; then
5440bc8e 8397 yyy=`$run ./try`
b4eb6b3d
JH
8398 case "$yyy" in
8399 123.456)
2ef53570
JH
8400 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8401 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8402 echo "We will use %Lf."
b4eb6b3d
JH
8403 ;;
8404 esac
8405 fi
8406fi
8407
8408if $test X"$sPRIfldbl" = X; then
8409 $cat >try.c <<'EOCP'
8410#include <sys/types.h>
8411#include <stdio.h>
8412int main() {
8413 long double d = 123.456;
2ef53570 8414 printf("%.3llf\n", d);
b4eb6b3d
JH
8415}
8416EOCP
8417 set try
8418 if eval $compile; then
5440bc8e 8419 yyy=`$run ./try`
b4eb6b3d
JH
8420 case "$yyy" in
8421 123.456)
2ef53570
JH
8422 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8423 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8424 echo "We will use %llf."
b4eb6b3d
JH
8425 ;;
8426 esac
8427 fi
8428fi
8429
8430if $test X"$sPRIfldbl" = X; then
8431 $cat >try.c <<'EOCP'
8432#include <sys/types.h>
8433#include <stdio.h>
8434int main() {
8435 long double d = 123.456;
8436 printf("%.3lf\n", d);
8437}
8438EOCP
8439 set try
8440 if eval $compile; then
5440bc8e 8441 yyy=`$run ./try`
b4eb6b3d
JH
8442 case "$yyy" in
8443 123.456)
8444 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8445 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8446 echo "We will use %lf."
8447 ;;
8448 esac
8449 fi
8450fi
8451
8452if $test X"$sPRIfldbl" = X; then
8453 echo "Cannot figure out how to print long doubles." >&4
8454else
8455 sSCNfldbl=$sPRIfldbl # expect consistency
8456fi
8457
8458$rm -f try try.*
8459
8460fi # d_longdbl
8461
8462case "$sPRIfldbl" in
8463'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8464 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8465 d_SCNfldbl="$undef";
8466 ;;
8467*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8468 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8469 d_SCNfldbl="$define";
8470 ;;
8471esac
8472
8473: Check how to convert floats to strings.
8474echo " "
8475echo "Checking for an efficient way to convert floats to strings."
8476echo " " > try.c
8477case "$uselongdouble" in
8478"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8479esac
8480case "$d_longdbl" in
8481"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8482esac
8483case "$d_PRIgldbl" in
8484"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8485esac
8486$cat >>try.c <<EOP
8487#ifdef TRY_gconvert
8488#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8489char *myname = "gconvert";
8490#endif
8491#ifdef TRY_gcvt
8492#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8493char *myname = "gcvt";
8494#endif
8495#ifdef TRY_qgcvt
8496#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8497char *myname = "qgcvt";
8498#define DOUBLETYPE long double
8499#endif
8500#ifdef TRY_sprintf
8501#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8502#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8503#else
8504#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8505#endif
8506char *myname = "sprintf";
8507#endif
8508
8509#ifndef DOUBLETYPE
8510#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8511#define DOUBLETYPE long double
8512#else
8513#define DOUBLETYPE double
8514#endif
8515#endif
8516
8517#include <stdio.h>
8518
8519#define I_STDLIB $i_stdlib
8520#ifdef I_STDLIB
8521#include <stdlib.h>
8522#endif
8523
8524int
8525checkit(expect, got)
8526char *expect;
8527char *got;
8528{
8529 if (strcmp(expect, got)) {
8530 printf("%s oddity: Expected %s, got %s\n",
8531 myname, expect, got);
8532 exit(1);
8533 }
8534}
8535
8536int main()
8537{
8538 char buf[64];
8539 buf[63] = '\0';
8540
8541 /* This must be 1st test on (which?) platform */
8542 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8543 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8544 checkit("0.1", buf);
8545
8546 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8547 checkit("1", buf);
8548
8549 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8550 checkit("1.1", buf);
8551
8552 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8553 checkit("1.01", buf);
8554
8555 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8556 checkit("1.001", buf);
8557
8558 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8559 checkit("1.0001", buf);
8560
8561 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8562 checkit("1.00001", buf);
8563
8564 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8565 checkit("1.000001", buf);
8566
8567 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8568 checkit("0", buf);
8569
8570 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8571 checkit("-1", buf);
8572
8573 /* Some Linux gcvt's give 1.e+5 here. */
8574 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8575 checkit("100000", buf);
8576
8577 /* Some Linux gcvt's give -1.e+5 here. */
8578 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8579 checkit("-100000", buf);
8580
8581 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8582 checkit("123.456", buf);
8583
8e2a5ede
SB
8584 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8585 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8586 if (strlen(buf) > 5)
8587 checkit("1e+030", buf); /* for Microsoft */
8588 else
8589 checkit("1e+30", buf);
8590
b4eb6b3d
JH
8591 exit(0);
8592}
8593EOP
8594case "$d_Gconvert" in
8595gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8596gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8597sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8598*) xxx_list='gconvert gcvt sprintf' ;;
8599esac
8600
8601case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8602"$define$define$define")
8603 # for long doubles prefer first qgcvt, then sprintf
8604 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8605 xxx_list="sprintf $xxx_list"
8606 case "$d_qgcvt" in
8607 "$define") xxx_list="qgcvt $xxx_list" ;;
8608 esac
8609 ;;
8610esac
8611
8612for xxx_convert in $xxx_list; do
8613 echo "Trying $xxx_convert..."
8614 $rm -f try try$_o
8615 set try -DTRY_$xxx_convert
8616 if eval $compile; then
8617 echo "$xxx_convert() found." >&4
5440bc8e 8618 if $run ./try; then
b4eb6b3d
JH
8619 echo "I'll use $xxx_convert to convert floats into a string." >&4
8620 break;
8621 else
8622 echo "...But $xxx_convert didn't work as I expected."
8623 fi
8624 else
8625 echo "$xxx_convert NOT found." >&4
8626 fi
8627done
8628
8629case "$xxx_convert" in
8630gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8631gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8632qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8633*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8634 "$define$define$define")
8635 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8636 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8637 esac
8638 ;;
8639esac
8640
74cac757
JH
8641: see if _fwalk exists
8642set fwalk d__fwalk
8643eval $inlibc
8644
b4eb6b3d
JH
8645: Initialize h_fcntl
8646h_fcntl=false
8647
8648: Initialize h_sysfile
8649h_sysfile=false
8650
8651: access call always available on UNIX
8652set access d_access
8653eval $inlibc
8654
8655: locate the flags for 'access()'
8656case "$d_access" in
8657"$define")
8658 echo " "
8659 $cat >access.c <<'EOCP'
8660#include <sys/types.h>
8661#ifdef I_FCNTL
8662#include <fcntl.h>
8663#endif
8664#ifdef I_SYS_FILE
8665#include <sys/file.h>
8666#endif
8667#ifdef I_UNISTD
8668#include <unistd.h>
8669#endif
8670int main() {
8671 exit(R_OK);
8672}
8673EOCP
8674 : check sys/file.h first, no particular reason here
8675 if $test `./findhdr sys/file.h` && \
7a282f6d 8676 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8677 h_sysfile=true;
8678 echo "<sys/file.h> defines the *_OK access constants." >&4
8679 elif $test `./findhdr fcntl.h` && \
7a282f6d 8680 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8681 h_fcntl=true;
8682 echo "<fcntl.h> defines the *_OK access constants." >&4
8683 elif $test `./findhdr unistd.h` && \
7a282f6d 8684 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8685 echo "<unistd.h> defines the *_OK access constants." >&4
8686 else
8687 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8688 fi
8689 ;;
8690esac
8691$rm -f access*
8692
8693: see if accessx exists
8694set accessx d_accessx
8695eval $inlibc
8696
8697: see if alarm exists
8698set alarm d_alarm
8699eval $inlibc
8700
8701: see if atolf exists
8702set atolf d_atolf
8703eval $inlibc
8704
8705: see if atoll exists
8706set atoll d_atoll
8707eval $inlibc
8708
8709: Look for GNU-cc style attribute checking
8710echo " "
8711echo "Checking whether your compiler can handle __attribute__ ..." >&4
8712$cat >attrib.c <<'EOCP'
8713#include <stdio.h>
8714void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8715EOCP
8716if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8717 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8718 echo "Your C compiler doesn't fully support __attribute__."
8719 val="$undef"
8720 else
8721 echo "Your C compiler supports __attribute__."
8722 val="$define"
8723 fi
8724else
8725 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8726 val="$undef"
8727fi
8728set d_attribut
8729eval $setvar
8730$rm -f attrib*
8731
8732: see if bcmp exists
8733set bcmp d_bcmp
8734eval $inlibc
8735
8736: see if bcopy exists
8737set bcopy d_bcopy
8738eval $inlibc
8739
8740: see if this is a unistd.h system
8741set unistd.h i_unistd
8742eval $inhdr
8743
8744: see if getpgrp exists
8745set getpgrp d_getpgrp
8746eval $inlibc
8747
8748case "$d_getpgrp" in
8749"$define")
8750 echo " "
8751 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 8752 $cat >try.c <<EOP
b4eb6b3d
JH
8753#$i_unistd I_UNISTD
8754#include <sys/types.h>
8755#ifdef I_UNISTD
8756# include <unistd.h>
8757#endif
8758int main()
8759{
8760 if (getuid() == 0) {
8761 printf("(I see you are running Configure as super-user...)\n");
8762 setuid(1);
8763 }
8764#ifdef TRY_BSD_PGRP
8765 if (getpgrp(1) == 0)
8766 exit(0);
8767#else
8768 if (getpgrp() > 0)
8769 exit(0);
8770#endif
8771 exit(1);
8772}
8773EOP
5440bc8e 8774 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8775 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8776 val="$define"
5440bc8e 8777 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8778 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8779 val="$undef"
8780 else
8781 echo "I can't seem to compile and run the test program."
8782 if ./usg; then
8783 xxx="a USG one, i.e. you use getpgrp()."
8784 else
8785 # SVR4 systems can appear rather BSD-ish.
8786 case "$i_unistd" in
8787 $undef)
8788 xxx="a BSD one, i.e. you use getpgrp(pid)."
8789 val="$define"
8790 ;;
8791 $define)
8792 xxx="probably a USG one, i.e. you use getpgrp()."
8793 val="$undef"
8794 ;;
8795 esac
8796 fi
8797 echo "Assuming your getpgrp is $xxx" >&4
8798 fi
8799 ;;
8800*) val="$undef";;
8801esac
8802set d_bsdgetpgrp
8803eval $setvar
5440bc8e 8804$rm -f try try.*
b4eb6b3d
JH
8805
8806: see if setpgrp exists
8807set setpgrp d_setpgrp
8808eval $inlibc
8809
8810case "$d_setpgrp" in
8811"$define")
8812 echo " "
8813 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 8814 $cat >try.c <<EOP
b4eb6b3d
JH
8815#$i_unistd I_UNISTD
8816#include <sys/types.h>
8817#ifdef I_UNISTD
8818# include <unistd.h>
8819#endif
8820int main()
8821{
8822 if (getuid() == 0) {
8823 printf("(I see you are running Configure as super-user...)\n");
8824 setuid(1);
8825 }
8826#ifdef TRY_BSD_PGRP
8827 if (-1 == setpgrp(1, 1))
8828 exit(0);
8829#else
8830 if (setpgrp() != -1)
8831 exit(0);
8832#endif
8833 exit(1);
8834}
8835EOP
5440bc8e 8836 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8837 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8838 val="$define"
5440bc8e 8839 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8840 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8841 val="$undef"
8842 else
8843 echo "(I can't seem to compile and run the test program.)"
8844 if ./usg; then
8845 xxx="a USG one, i.e. you use setpgrp()."
8846 else
8847 # SVR4 systems can appear rather BSD-ish.
8848 case "$i_unistd" in
8849 $undef)
8850 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8851 val="$define"
8852 ;;
8853 $define)
8854 xxx="probably a USG one, i.e. you use setpgrp()."
8855 val="$undef"
8856 ;;
8857 esac
8858 fi
8859 echo "Assuming your setpgrp is $xxx" >&4
8860 fi
8861 ;;
8862*) val="$undef";;
8863esac
8864set d_bsdsetpgrp
8865eval $setvar
5440bc8e 8866$rm -f try try.*
b4eb6b3d
JH
8867: see if bzero exists
8868set bzero d_bzero
8869eval $inlibc
8870
8871: see if signal is declared as pointer to function returning int or void
8872echo " "
8873xxx=`./findhdr signal.h`
8874$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8875if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8876 echo "You have int (*signal())() instead of void." >&4
8877 val="$undef"
8878elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8879 echo "You have void (*signal())()." >&4
8880 val="$define"
8881elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8882 echo "You have int (*signal())() instead of void." >&4
8883 val="$undef"
8884elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8885 echo "You have void (*signal())()." >&4
8886 val="$define"
8887else
8888 case "$d_voidsig" in
8889 '')
8890 echo "I can't determine whether signal handler returns void or int..." >&4
8891 dflt=void
8892 rp="What type does your signal handler return?"
8893 . ./myread
8894 case "$ans" in
8895 v*) val="$define";;
8896 *) val="$undef";;
8897 esac;;
8898 "$define")
8899 echo "As you already told me, signal handler returns void." >&4
8900 val="$define"
8901 ;;
8902 *) echo "As you already told me, signal handler returns int." >&4
8903 val="$undef"
8904 ;;
8905 esac
8906fi
8907set d_voidsig
8908eval $setvar
8909case "$d_voidsig" in
8910"$define") signal_t="void";;
8911*) signal_t="int";;
8912esac
8913$rm -f $$.tmp
8914
8915: check for ability to cast large floats to 32-bit ints.
8916echo " "
8917echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8918if $test "$intsize" -ge 4; then
8919 xxx=int
8920else
8921 xxx=long
8922fi
8923$cat >try.c <<EOCP
8924#include <stdio.h>
8925#include <sys/types.h>
8926#include <signal.h>
8927$signal_t blech(s) int s; { exit(3); }
8928int main()
8929{
8930 $xxx i32;
8931 double f, g;
8932 int result = 0;
8933 char str[16];
8934 signal(SIGFPE, blech);
8935
8936 /* Don't let compiler optimize the test away. Store the number
8937 in a writable string for gcc to pass to sscanf under HP/UX.
8938 */
8939 sprintf(str, "2147483647");
8940 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8941 g = 10 * f;
8942 i32 = ($xxx) g;
8943
8944 /* x86 processors will probably give 0x8000 0000, which is a
8945 sign change. We don't want that. We want to mimic SPARC
8946 behavior here, which is to preserve the sign and give
8947 back 0x7fff ffff.
8948 */
8949 if (i32 != ($xxx) f)
8950 result |= 1;
8951 exit(result);
8952}
8953EOCP
8954set try
8955if eval $compile_ok; then
5440bc8e 8956 $run ./try
b4eb6b3d
JH
8957 yyy=$?
8958else
8959 echo "(I can't seem to compile the test program--assuming it can't)"
8960 yyy=1
8961fi
8962case "$yyy" in
89630) val="$define"
8964 echo "Yup, it can."
8965 ;;
8966*) val="$undef"
8967 echo "Nope, it can't."
8968 ;;
8969esac
8970set d_casti32
8971eval $setvar
8972$rm -f try try.*
8973
8974: check for ability to cast negative floats to unsigned
8975echo " "
8976echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8977$cat >try.c <<EOCP
8978#include <stdio.h>
8979#include <sys/types.h>
8980#include <signal.h>
8981$signal_t blech(s) int s; { exit(7); }
8982$signal_t blech_in_list(s) int s; { exit(4); }
8983unsigned long dummy_long(p) unsigned long p; { return p; }
8984unsigned int dummy_int(p) unsigned int p; { return p; }
8985unsigned short dummy_short(p) unsigned short p; { return p; }
8986int main()
8987{
8988 double f;
8989 unsigned long along;
8990 unsigned int aint;
8991 unsigned short ashort;
8992 int result = 0;
8993 char str[16];
8994
8995 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8996 a direct f = -123. assignment. gcc-2.8.0 reportedly
8997 optimized the whole file away
8998 */
8999 /* Store the number in a writable string for gcc to pass to
9000 sscanf under HP/UX.
9001 */
9002 sprintf(str, "-123");
9003 sscanf(str, "%lf", &f); /* f = -123.; */
9004
9005 signal(SIGFPE, blech);
9006 along = (unsigned long)f;
9007 aint = (unsigned int)f;
9008 ashort = (unsigned short)f;
9009 if (along != (unsigned long)-123)
9010 result |= 1;
9011 if (aint != (unsigned int)-123)
9012 result |= 1;
9013 if (ashort != (unsigned short)-123)
9014 result |= 1;
9015 sprintf(str, "1073741824.");
9016 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9017 f = f + f;
9018 along = 0;
9019 along = (unsigned long)f;
9020 if (along != 0x80000000)
9021 result |= 2;
9022 f -= 1.;
9023 along = 0;
9024 along = (unsigned long)f;
9025 if (along != 0x7fffffff)
9026 result |= 1;
9027 f += 2.;
9028 along = 0;
9029 along = (unsigned long)f;
9030 if (along != 0x80000001)
9031 result |= 2;
9032 if (result)
9033 exit(result);
9034 signal(SIGFPE, blech_in_list);
9035 sprintf(str, "123.");
9036 sscanf(str, "%lf", &f); /* f = 123.; */
9037 along = dummy_long((unsigned long)f);
9038 aint = dummy_int((unsigned int)f);
9039 ashort = dummy_short((unsigned short)f);
9040 if (along != (unsigned long)123)
9041 result |= 4;
9042 if (aint != (unsigned int)123)
9043 result |= 4;
9044 if (ashort != (unsigned short)123)
9045 result |= 4;
9046 exit(result);
9047
9048}
9049EOCP
9050set try
9051if eval $compile_ok; then
5440bc8e 9052 $run ./try
b4eb6b3d
JH
9053 castflags=$?
9054else
9055 echo "(I can't seem to compile the test program--assuming it can't)"
9056 castflags=7
9057fi
9058case "$castflags" in
90590) val="$define"
9060 echo "Yup, it can."
9061 ;;
9062*) val="$undef"
9063 echo "Nope, it can't."
9064 ;;
9065esac
9066set d_castneg
9067eval $setvar
9068$rm -f try.*
9069
9070: see if vprintf exists
9071echo " "
9072if set vprintf val -f d_vprintf; eval $csym; $val; then
9073 echo 'vprintf() found.' >&4
9074 val="$define"
5440bc8e 9075 $cat >try.c <<'EOF'
b4eb6b3d
JH
9076#include <varargs.h>
9077
9078int main() { xxx("foo"); }
9079
9080xxx(va_alist)
9081va_dcl
9082{
9083 va_list args;
9084 char buf[10];
9085
9086 va_start(args);
9087 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9088}
9089EOF
5440bc8e
JH
9090 set try
9091 if eval $compile && $run ./try; then
b4eb6b3d
JH
9092 echo "Your vsprintf() returns (int)." >&4
9093 val2="$undef"
9094 else
9095 echo "Your vsprintf() returns (char*)." >&4
9096 val2="$define"
9097 fi
9098else
9099 echo 'vprintf() NOT found.' >&4
9100 val="$undef"
9101 val2="$undef"
9102fi
5440bc8e 9103$rm -f try try.*
b4eb6b3d
JH
9104set d_vprintf
9105eval $setvar
9106val=$val2
9107set d_charvspr
9108eval $setvar
9109
9110: see if chown exists
9111set chown d_chown
9112eval $inlibc
9113
9114: see if chroot exists
9115set chroot d_chroot
9116eval $inlibc
9117
9118: see if chsize exists
9119set chsize d_chsize
9120eval $inlibc
9121
758a5d79
JH
9122: see if class exists
9123set class d_class
9124eval $inlibc
9125
4e0554ec
JH
9126hasstruct='varname=$1; struct=$2; shift; shift;
9127while $test $# -ge 2; do
9128 case "$1" in
9129 $define) echo "#include <$2>";;
9130 esac ;
9131 shift 2;
9132done > try.c;
9133echo "int main () { struct $struct foo; }" >> try.c;
9134set try;
9135if eval $compile; then
9136 val="$define";
9137else
9138 val="$undef";
9139fi;
9140set $varname;
9141eval $setvar;
9142$rm -f try.c try.o'
9143
9144: see if sys/types.h has to be included
9145set sys/types.h i_systypes
9146eval $inhdr
9147
9148hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9149while $test $# -ge 2; do
9150 case "$1" in
9151 $define) echo "#include <$2>";;
9152 esac ;
9153 shift 2;
9154done > try.c;
9155echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9156set try;
9157if eval $compile; then
9158 val="$define";
9159else
9160 val="$undef";
9161fi;
9162set $varname;
9163eval $setvar;
9164$rm -f try.c try.o'
9165
9166socketlib=''
9167sockethdr=''
9168: see whether socket exists
9169echo " "
9170$echo $n "Hmm... $c" >&4
9171if set socket val -f d_socket; eval $csym; $val; then
9172 echo "Looks like you have Berkeley networking support." >&4
9173 d_socket="$define"
9174 if set setsockopt val -f; eval $csym; $val; then
9175 d_oldsock="$undef"
9176 else
9177 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9178 d_oldsock="$define"
9179 fi
9180else
9181 if $contains socklib libc.list >/dev/null 2>&1; then
9182 echo "Looks like you have Berkeley networking support." >&4
9183 d_socket="$define"
9184 : we will have to assume that it supports the 4.2 BSD interface
9185 d_oldsock="$undef"
9186 else
9187 echo "You don't have Berkeley networking in libc$_a..." >&4
9188 if test "X$d_socket" = "X$define"; then
9189 echo "...but you seem to believe that you have sockets." >&4
9190 else
9191 for net in net socket
9192 do
9193 if test -f /usr/lib/lib$net$_a; then
9194 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9195 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9196 if $contains socket libc.list >/dev/null 2>&1; then
9197 d_socket="$define"
9198 socketlib="-l$net"
9199 case "$net" in
9200 net)
9201 echo "...but the Wollongong group seems to have hacked it in." >&4
9202 sockethdr="-I/usr/netinclude"
9203 ;;
9204 esac
9205 echo "Found Berkeley sockets interface in lib$net." >& 4
9206 if $contains setsockopt libc.list >/dev/null 2>&1; then
9207 d_oldsock="$undef"
9208 else
9209 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9210 d_oldsock="$define"
9211 fi
9212 break
9213 fi
9214 fi
9215 done
9216 if test "X$d_socket" != "X$define"; then
9217 echo "or anywhere else I see." >&4
9218 d_socket="$undef"
9219 d_oldsock="$undef"
9220 fi
9221 fi
9222 fi
9223fi
9224
9225: see if socketpair exists
9226set socketpair d_sockpair
9227eval $inlibc
9228
9229
9230echo " "
9231echo "Checking the availability of certain socket constants..." >& 4
9232for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9233 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9234 $cat >try.c <<EOF
9235#include <sys/types.h>
9236#include <sys/socket.h>
9237int main() {
9238 int i = $ENUM;
9239}
9240EOF
9241 val="$undef"
9242 set try; if eval $compile; then
9243 val="$define"
9244 fi
9245 set d_${enum}; eval $setvar
9246 $rm -f try.c try
9247done
9248
9249: see if this is a sys/uio.h system
9250set sys/uio.h i_sysuio
9251eval $inhdr
9252
9253
9254echo " "
9255echo "Checking to see if your system supports struct cmsghdr..." >&4
9256set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9257eval $hasstruct
9258case "$d_cmsghdr_s" in
9259"$define") echo "Yes, it does." ;;
9260*) echo "No, it doesn't." ;;
9261esac
9262
9263
b4eb6b3d
JH
9264: check for const keyword
9265echo " "
9266echo 'Checking to see if your C compiler knows about "const"...' >&4
9267$cat >const.c <<'EOCP'
9268typedef struct spug { int drokk; } spug;
9269int main()
9270{
9271 const char *foo;
9272 const spug y;
9273}
9274EOCP
9275if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9276 val="$define"
9277 echo "Yup, it does."
9278else
9279 val="$undef"
9280 echo "Nope, it doesn't."
9281fi
9282set d_const
9283eval $setvar
9284
9285: see if crypt exists
9286echo " "
9287if set crypt val -f d_crypt; eval $csym; $val; then
9288 echo 'crypt() found.' >&4
9289 val="$define"
9290 cryptlib=''
9291else
9292 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9293 if $test -z "$cryptlib"; then
9294 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9295 else
9296 cryptlib=-lcrypt
9297 fi
9298 if $test -z "$cryptlib"; then
9299 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9300 else
9301 cryptlib=-lcrypt
9302 fi
9303 if $test -z "$cryptlib"; then
9304 cryptlib=`./loc libcrypt$_a "" $libpth`
9305 else
9306 cryptlib=-lcrypt
9307 fi
9308 if $test -z "$cryptlib"; then
9309 echo 'crypt() NOT found.' >&4
9310 val="$undef"
9311 else
9312 val="$define"
9313 fi
9314fi
9315set d_crypt
9316eval $setvar
9317
9318: get csh whereabouts
9319case "$csh" in
9320'csh') val="$undef" ;;
9321*) val="$define" ;;
9322esac
9323set d_csh
9324eval $setvar
9325: Respect a hint or command line value for full_csh.
9326case "$full_csh" in
9327'') full_csh=$csh ;;
9328esac
9329
9330: see if cuserid exists
9331set cuserid d_cuserid
9332eval $inlibc
9333
9334: see if this is a limits.h system
9335set limits.h i_limits
9336eval $inhdr
9337
9338: see if this is a float.h system
9339set float.h i_float
9340eval $inhdr
9341
9342: See if number of significant digits in a double precision number is known
9343echo " "
9344$cat >dbl_dig.c <<EOM
9345#$i_limits I_LIMITS
9346#$i_float I_FLOAT
9347#ifdef I_LIMITS
9348#include <limits.h>
9349#endif
9350#ifdef I_FLOAT
9351#include <float.h>
9352#endif
9353#ifdef DBL_DIG
9354printf("Contains DBL_DIG");
9355#endif
9356EOM
9357$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9358if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9359 echo "DBL_DIG found." >&4
9360 val="$define"
9361else
9362 echo "DBL_DIG NOT found." >&4
9363 val="$undef"
9364fi
9365$rm -f dbl_dig.?
9366set d_dbl_dig
9367eval $setvar
9368
2ef53570
JH
9369hasproto='varname=$1; func=$2; shift; shift;
9370while $test $# -ge 2; do
9371 case "$1" in
9372 $define) echo "#include <$2>";;
9373 esac ;
9374 shift 2;
9375done > try.c;
9376$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9377if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9378 echo "$func() prototype found.";
9379 val="$define";
9380else
9381 echo "$func() prototype NOT found.";
9382 val="$undef";
9383fi;
9384set $varname;
9385eval $setvar;
9386$rm -f try.c tryout.c'
9387
9388: see if dbm.h is available
9389: see if dbmclose exists
9390set dbmclose d_dbmclose
9391eval $inlibc
9392
9393case "$d_dbmclose" in
9394$define)
9395 set dbm.h i_dbm
9396 eval $inhdr
9397 case "$i_dbm" in
9398 $define)
9399 val="$undef"
9400 set i_rpcsvcdbm
9401 eval $setvar
9402 ;;
9403 *) set rpcsvc/dbm.h i_rpcsvcdbm
9404 eval $inhdr
9405 ;;
9406 esac
9407 ;;
9408*) echo "We won't be including <dbm.h>"
9409 val="$undef"
9410 set i_dbm
9411 eval $setvar
9412 val="$undef"
9413 set i_rpcsvcdbm
9414 eval $setvar
9415 ;;
9416esac
9417
9418: see if prototype for dbminit is available
9419echo " "
9420set d_dbminitproto dbminit $i_dbm dbm.h
9421eval $hasproto
9422
b4eb6b3d
JH
9423: see if difftime exists
9424set difftime d_difftime
9425eval $inlibc
9426
9427: see if this is a dirent system
9428echo " "
9429if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9430 val="$define"
9431 echo "<dirent.h> found." >&4
9432else
9433 val="$undef"
9434 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9435 echo "<sys/dir.h> found." >&4
9436 echo " "
9437 else
9438 xinc=`./findhdr sys/ndir.h`
9439 fi
9440 echo "<dirent.h> NOT found." >&4
9441fi
9442set i_dirent
9443eval $setvar
9444
9445: Look for type of directory structure.
9446echo " "
9447$cppstdin $cppflags $cppminus < "$xinc" > try.c
9448
9449case "$direntrytype" in
9450''|' ')
9451 case "$i_dirent" in
9452 $define) guess1='struct dirent' ;;
9453 *) guess1='struct direct' ;;
9454 esac
9455 ;;
9456*) guess1="$direntrytype"
9457 ;;
9458esac
9459
9460case "$guess1" in
9461'struct dirent') guess2='struct direct' ;;
9462*) guess2='struct dirent' ;;
9463esac
9464
9465if $contains "$guess1" try.c >/dev/null 2>&1; then
9466 direntrytype="$guess1"
9467 echo "Your directory entries are $direntrytype." >&4
9468elif $contains "$guess2" try.c >/dev/null 2>&1; then
9469 direntrytype="$guess2"
9470 echo "Your directory entries seem to be $direntrytype." >&4
9471else
9472 echo "I don't recognize your system's directory entries." >&4
9473 rp="What type is used for directory entries on this system?"
9474 dflt="$guess1"
9475 . ./myread
9476 direntrytype="$ans"
9477fi
9478$rm -f try.c
9479
9480
9481: see if the directory entry stores field length
9482echo " "
9483$cppstdin $cppflags $cppminus < "$xinc" > try.c
9484if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9485 echo "Good, your directory entry keeps length information in d_namlen." >&4
9486 val="$define"
9487else
9488 echo "Your directory entry does not know about the d_namlen field." >&4
9489 val="$undef"
9490fi
9491set d_dirnamlen
9492eval $setvar
9493$rm -f try.c
9494
9495: see if dlerror exists
9496xxx_runnm="$runnm"
9497runnm=false
9498set dlerror d_dlerror
9499eval $inlibc
9500runnm="$xxx_runnm"
9501
9502: see if dlfcn is available
9503set dlfcn.h i_dlfcn
9504eval $inhdr
9505
9506case "$usedl" in
9507$define|y|true)
9508 $cat << EOM
9509
9510On a few systems, the dynamically loaded modules that perl generates and uses
9511will need a different extension than shared libs. The default will probably
9512be appropriate.
9513
9514EOM
9515 case "$dlext" in
9516 '') dflt="$so" ;;
9517 *) dflt="$dlext" ;;
9518 esac
9519 rp='What is the extension of dynamically loaded modules'
9520 . ./myread
9521 dlext="$ans"
9522 ;;
9523*)
9524 dlext="none"
9525 ;;
9526esac
9527
9528: Check if dlsym need a leading underscore
9529echo " "
9530val="$undef"
9531
9532case "$dlsrc" in
9533dl_dlopen.xs)
9534 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9535 $cat >dyna.c <<'EOM'
9536fred () { }
9537EOM
9538
9539$cat >fred.c<<EOM
9540
9541#include <stdio.h>
9542#$i_dlfcn I_DLFCN
9543#ifdef I_DLFCN
5440bc8e 9544#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9545#else
9546#include <sys/types.h>
9547#include <nlist.h>
9548#include <link.h>
9549#endif
9550
9551extern int fred() ;
9552
9553int main()
9554{
9555 void * handle ;
9556 void * symbol ;
9557#ifndef RTLD_LAZY
9558 int mode = 1 ;
9559#else
9560 int mode = RTLD_LAZY ;
9561#endif
9562 handle = dlopen("./dyna.$dlext", mode) ;
9563 if (handle == NULL) {
9564 printf ("1\n") ;
9565 fflush (stdout) ;
9566 exit(0);
9567 }
9568 symbol = dlsym(handle, "fred") ;
9569 if (symbol == NULL) {
9570 /* try putting a leading underscore */
9571 symbol = dlsym(handle, "_fred") ;
9572 if (symbol == NULL) {
9573 printf ("2\n") ;
9574 fflush (stdout) ;
9575 exit(0);
9576 }
9577 printf ("3\n") ;
9578 }
9579 else
9580 printf ("4\n") ;
9581 fflush (stdout) ;
9582 exit(0);
9583}
9584EOM
9585 : Call the object file tmp-dyna.o in case dlext=o.
9586 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9587 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9588 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9589 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9590 xxx=`$run ./fred`
b4eb6b3d
JH
9591 case $xxx in
9592 1) echo "Test program failed using dlopen." >&4
9593 echo "Perhaps you should not use dynamic loading." >&4;;
9594 2) echo "Test program failed using dlsym." >&4
9595 echo "Perhaps you should not use dynamic loading." >&4;;
9596 3) echo "dlsym needs a leading underscore" >&4
9597 val="$define" ;;
9598 4) echo "dlsym doesn't need a leading underscore." >&4;;
9599 esac
9600 else
9601 echo "I can't compile and run the test program." >&4
9602 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9603 fi
9604 ;;
9605esac
9606
9607$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9608
9609set d_dlsymun
9610eval $setvar
9611
b4eb6b3d
JH
9612: see if prototype for drand48 is available
9613echo " "
9614set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9615eval $hasproto
9616
9617: see if dup2 exists
9618set dup2 d_dup2
9619eval $inlibc
9620
9621: see if eaccess exists
9622set eaccess d_eaccess
9623eval $inlibc
9624
9625: see if endgrent exists
9626set endgrent d_endgrent
9627eval $inlibc
9628
9629: see if endhostent exists
9630set endhostent d_endhent
9631eval $inlibc
9632
9633: see if endnetent exists
9634set endnetent d_endnent
9635eval $inlibc
9636
9637: see if endprotoent exists
9638set endprotoent d_endpent
9639eval $inlibc
9640
9641: see if endpwent exists
9642set endpwent d_endpwent
9643eval $inlibc
9644
9645: see if endservent exists
9646set endservent d_endsent
9647eval $inlibc
9648
9649: Locate the flags for 'open()'
9650echo " "
5440bc8e 9651$cat >try.c <<'EOCP'
b4eb6b3d
JH
9652#include <sys/types.h>
9653#ifdef I_FCNTL
9654#include <fcntl.h>
9655#endif
9656#ifdef I_SYS_FILE
9657#include <sys/file.h>
9658#endif
9659int main() {
9660 if(O_RDONLY);
9661#ifdef O_TRUNC
9662 exit(0);
9663#else
9664 exit(1);
9665#endif
9666}
9667EOCP
9668: check sys/file.h first to get FREAD on Sun
9669if $test `./findhdr sys/file.h` && \
5440bc8e 9670 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
9671 h_sysfile=true;
9672 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 9673 if $run ./try; then
b4eb6b3d
JH
9674 echo "and you have the 3 argument form of open()." >&4
9675 val="$define"
9676 else
9677 echo "but not the 3 argument form of open(). Oh, well." >&4
9678 val="$undef"
9679 fi
9680elif $test `./findhdr fcntl.h` && \
5440bc8e 9681 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
9682 h_fcntl=true;
9683 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 9684 if $run ./try; then
b4eb6b3d
JH
9685 echo "and you have the 3 argument form of open()." >&4
9686 val="$define"
9687 else
9688 echo "but not the 3 argument form of open(). Oh, well." >&4
9689 val="$undef"
9690 fi
9691else
9692 val="$undef"
9693 echo "I can't find the O_* constant definitions! You got problems." >&4
9694fi
9695set d_open3
9696eval $setvar
5440bc8e 9697$rm -f try try.*
b4eb6b3d
JH
9698
9699: see which of string.h or strings.h is needed
9700echo " "
9701strings=`./findhdr string.h`
9702if $test "$strings" && $test -r "$strings"; then
9703 echo "Using <string.h> instead of <strings.h>." >&4
9704 val="$define"
9705else
9706 val="$undef"
9707 strings=`./findhdr strings.h`
9708 if $test "$strings" && $test -r "$strings"; then
9709 echo "Using <strings.h> instead of <string.h>." >&4
9710 else
9711 echo "No string header found -- You'll surely have problems." >&4
9712 fi
9713fi
9714set i_string
9715eval $setvar
9716case "$i_string" in
9717"$undef") strings=`./findhdr strings.h`;;
9718*) strings=`./findhdr string.h`;;
9719esac
9720
9721: check for non-blocking I/O stuff
9722case "$h_sysfile" in
a0acbdc3
JH
9723true) echo "#include <sys/file.h>" > head.c;;
9724*)
9725 case "$h_fcntl" in
9726 true) echo "#include <fcntl.h>" > head.c;;
9727 *) echo "#include <sys/fcntl.h>" > head.c;;
9728 esac
9729 ;;
b4eb6b3d
JH
9730esac
9731echo " "
9732echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9733case "$o_nonblock" in
9734'')
9735 $cat head.c > try.c
9736 $cat >>try.c <<'EOCP'
9737#include <stdio.h>
80b3ef99 9738#include <stdlib.h>
b4eb6b3d
JH
9739int main() {
9740#ifdef O_NONBLOCK
9741 printf("O_NONBLOCK\n");
9742 exit(0);
9743#endif
9744#ifdef O_NDELAY
9745 printf("O_NDELAY\n");
9746 exit(0);
9747#endif
9748#ifdef FNDELAY
9749 printf("FNDELAY\n");
9750 exit(0);
9751#endif
9752 exit(0);
9753}
9754EOCP
9755 set try
9756 if eval $compile_ok; then
5440bc8e 9757 o_nonblock=`$run ./try`
b4eb6b3d
JH
9758 case "$o_nonblock" in
9759 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9760 *) echo "Seems like we can use $o_nonblock.";;
9761 esac
9762 else
9763 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9764 fi
9765 ;;
9766*) echo "Using $hint value $o_nonblock.";;
9767esac
9768$rm -f try try.* .out core
9769
9770echo " "
9771echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9772case "$eagain" in
9773'')
9774 $cat head.c > try.c
9775 $cat >>try.c <<EOCP
9776#include <errno.h>
9777#include <sys/types.h>
9778#include <signal.h>
9779#include <stdio.h>
80b3ef99 9780#include <stdlib.h>
b4eb6b3d
JH
9781#define MY_O_NONBLOCK $o_nonblock
9782#ifndef errno /* XXX need better Configure test */
9783extern int errno;
9784#endif
9785#$i_unistd I_UNISTD
9786#ifdef I_UNISTD
9787#include <unistd.h>
9788#endif
9789#$i_string I_STRING
9790#ifdef I_STRING
9791#include <string.h>
9792#else
9793#include <strings.h>
9794#endif
9795$signal_t blech(x) int x; { exit(3); }
9796EOCP
9797 $cat >> try.c <<'EOCP'
9798int main()
9799{
9800 int pd[2];
9801 int pu[2];
9802 char buf[1];
9803 char string[100];
9804
9805 pipe(pd); /* Down: child -> parent */
9806 pipe(pu); /* Up: parent -> child */
9807 if (0 != fork()) {
9808 int ret;
9809 close(pd[1]); /* Parent reads from pd[0] */
9810 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 9811#ifdef F_SETFL
b4eb6b3d
JH
9812 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9813 exit(1);
a0acbdc3
JH
9814#else
9815 exit(4);
9816#endif
b4eb6b3d
JH
9817 signal(SIGALRM, blech);
9818 alarm(5);
9819 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9820 exit(2);
9821 sprintf(string, "%d\n", ret);
9822 write(2, string, strlen(string));
9823 alarm(0);
9824#ifdef EAGAIN
9825 if (errno == EAGAIN) {
9826 printf("EAGAIN\n");
9827 goto ok;
9828 }
9829#endif
9830#ifdef EWOULDBLOCK
9831 if (errno == EWOULDBLOCK)
9832 printf("EWOULDBLOCK\n");
9833#endif
9834 ok:
9835 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9836 sleep(2); /* Give it time to close our pipe */
9837 alarm(5);
9838 ret = read(pd[0], buf, 1); /* Should read EOF */
9839 alarm(0);
9840 sprintf(string, "%d\n", ret);
9841 write(3, string, strlen(string));
9842 exit(0);
9843 }
9844
9845 close(pd[0]); /* We write to pd[1] */
9846 close(pu[1]); /* We read from pu[0] */
9847 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9848 close(pd[1]); /* Pipe pd is now fully closed! */
9849 exit(0); /* Bye bye, thank you for playing! */
9850}
9851EOCP
9852 set try
9853 if eval $compile_ok; then
9854 echo "$startsh" >mtry
5440bc8e 9855 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
b4eb6b3d
JH
9856 chmod +x mtry
9857 ./mtry >/dev/null 2>&1
9858 case $? in
9859 0) eagain=`$cat try.out`;;
9860 1) echo "Could not perform non-blocking setting!";;
9861 2) echo "I did a successful read() for something that was not there!";;
9862 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 9863 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
9864 *) echo "Something terribly wrong happened during testing.";;
9865 esac
9866 rd_nodata=`$cat try.ret`
9867 echo "A read() system call with no data present returns $rd_nodata."
9868 case "$rd_nodata" in
9869 0|-1) ;;
9870 *)
9871 echo "(That's peculiar, fixing that to be -1.)"
9872 rd_nodata=-1
9873 ;;
9874 esac
9875 case "$eagain" in
9876 '')
9877 echo "Forcing errno EAGAIN on read() with no data available."
9878 eagain=EAGAIN
9879 ;;
9880 *)
9881 echo "Your read() sets errno to $eagain when no data is available."
9882 ;;
9883 esac
9884 status=`$cat try.err`
9885 case "$status" in
9886 0) echo "And it correctly returns 0 to signal EOF.";;
9887 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9888 *) echo "However, your read() returns '$status' on EOF??";;
9889 esac
9890 val="$define"
9891 if test "$status" = "$rd_nodata"; then
9892 echo "WARNING: you can't distinguish between EOF and no data!"
9893 val="$undef"
9894 fi
9895 else
9896 echo "I can't compile the test program--assuming errno EAGAIN will do."
9897 eagain=EAGAIN
9898 fi
9899 set d_eofnblk
9900 eval $setvar
9901 ;;
9902*)
9903 echo "Using $hint value $eagain."
9904 echo "Your read() returns $rd_nodata when no data is present."
9905 case "$d_eofnblk" in
9906 "$define") echo "And you can see EOF because read() returns 0.";;
9907 "$undef") echo "But you can't see EOF status from read() returned value.";;
9908 *)
9909 echo "(Assuming you can't see EOF status from read anyway.)"
9910 d_eofnblk=$undef
9911 ;;
9912 esac
9913 ;;
9914esac
9915$rm -f try try.* .out core head.c mtry
9916
b363b713
JH
9917: see if fchdir exists
9918set fchdir d_fchdir
9919eval $inlibc
9920
b4eb6b3d
JH
9921: see if fchmod exists
9922set fchmod d_fchmod
9923eval $inlibc
9924
9925: see if fchown exists
9926set fchown d_fchown
9927eval $inlibc
9928
9929: see if this is an fcntl system
9930set fcntl d_fcntl
9931eval $inlibc
9932
9d9004a9
AD
9933echo " "
9934: See if fcntl-based locking works.
832492ee 9935$cat >try.c <<EOCP
9d9004a9
AD
9936#include <stdlib.h>
9937#include <unistd.h>
9938#include <fcntl.h>
832492ee 9939#include <signal.h>
832492ee 9940$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
9941int main() {
9942#if defined(F_SETLK) && defined(F_SETLKW)
9943 struct flock flock;
9944 int retval, fd;
9945 fd = open("try.c", O_RDONLY);
9946 flock.l_type = F_RDLCK;
9947 flock.l_whence = SEEK_SET;
9948 flock.l_start = flock.l_len = 0;
832492ee
JH
9949 signal(SIGALRM, blech);
9950 alarm(10);
9d9004a9
AD
9951 retval = fcntl(fd, F_SETLK, &flock);
9952 close(fd);
9953 (retval < 0 ? exit(2) : exit(0));
9954#else
9955 exit(2);
9956#endif
9957}
9958EOCP
9959echo "Checking if fcntl-based file locking works... "
9960case "$d_fcntl" in
9961"$define")
9962 set try
9963 if eval $compile_ok; then
5440bc8e 9964 if $run ./try; then
9d9004a9
AD
9965 echo "Yes, it seems to work."
9966 val="$define"
9967 else
9968 echo "Nope, it didn't work."
9969 val="$undef"
832492ee
JH
9970 case "$?" in
9971 3) $cat >&4 <<EOM
9972***
9973*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9974*** This is (almost) impossible.
9975*** If your NFS lock daemons are not feeling well, something like
9976*** this may happen, please investigate. Cannot continue, aborting.
9977***
9978EOM
9979 exit 1
9980 ;;
9981 esac
9d9004a9
AD
9982 fi
9983 else
9984 echo "I'm unable to compile the test program, so I'll assume not."
9985 val="$undef"
9986 fi
9987 ;;
9988*) val="$undef";
9989 echo "Nope, since you don't even have fcntl()."
9990 ;;
9991esac
9992set d_fcntl_can_lock
9993eval $setvar
9994$rm -f try*
9995
9996
b4eb6b3d
JH
9997: see if sys/select.h has to be included
9998set sys/select.h i_sysselct
9999eval $inhdr
10000
10001: see if we should include time.h, sys/time.h, or both
10002echo " "
10003if test "X$timeincl" = X; then
10004 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10005 $echo $n "I'm now running the test program...$c"
10006 $cat >try.c <<'EOCP'
10007#include <sys/types.h>
10008#ifdef I_TIME
10009#include <time.h>
10010#endif
10011#ifdef I_SYSTIME
10012#ifdef SYSTIMEKERNEL
10013#define KERNEL
10014#endif
10015#include <sys/time.h>
10016#endif
10017#ifdef I_SYSSELECT
10018#include <sys/select.h>
10019#endif
10020int main()
10021{
10022 struct tm foo;
10023#ifdef S_TIMEVAL
10024 struct timeval bar;
10025#endif
10026#ifdef S_TIMEZONE
10027 struct timezone tzp;
10028#endif
10029 if (foo.tm_sec == foo.tm_sec)
10030 exit(0);
10031#ifdef S_TIMEVAL
10032 if (bar.tv_sec == bar.tv_sec)
10033 exit(0);
10034#endif
10035 exit(1);
10036}
10037EOCP
10038 flags=''
10039 for s_timezone in '-DS_TIMEZONE' ''; do
10040 sysselect=''
10041 for s_timeval in '-DS_TIMEVAL' ''; do
10042 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10043 for i_time in '' '-DI_TIME'; do
10044 for i_systime in '-DI_SYSTIME' ''; do
10045 case "$flags" in
10046 '') $echo $n ".$c"
10047 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10048 if eval $compile; then
10049 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10050 shift
10051 flags="$*"
10052 echo " "
10053 $echo $n "Succeeded with $flags$c"
10054 fi
10055 ;;
10056 esac
10057 done
10058 done
10059 done
10060 done
10061 done
10062 timeincl=''
10063 echo " "
10064 case "$flags" in
10065 *SYSTIMEKERNEL*) i_systimek="$define"
10066 timeincl=`./findhdr sys/time.h`
10067 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10068 *) i_systimek="$undef";;
10069 esac
10070 case "$flags" in
10071 *I_TIME*) i_time="$define"
10072 timeincl=`./findhdr time.h`" $timeincl"
10073 echo "We'll include <time.h>." >&4;;
10074 *) i_time="$undef";;
10075 esac
10076 case "$flags" in
10077 *I_SYSTIME*) i_systime="$define"
10078 timeincl=`./findhdr sys/time.h`" $timeincl"
10079 echo "We'll include <sys/time.h>." >&4;;
10080 *) i_systime="$undef";;
10081 esac
10082 $rm -f try.c try
10083fi
10084
10085: check for fd_set items
10086$cat <<EOM
10087
10088Checking to see how well your C compiler handles fd_set and friends ...
10089EOM
5440bc8e 10090$cat >try.c <<EOCP
b4eb6b3d
JH
10091#$i_systime I_SYS_TIME
10092#$i_sysselct I_SYS_SELECT
10093#$d_socket HAS_SOCKET
10094#include <sys/types.h>
10095#ifdef HAS_SOCKET
10096#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10097#endif
10098#ifdef I_SYS_TIME
10099#include <sys/time.h>
10100#endif
10101#ifdef I_SYS_SELECT
10102#include <sys/select.h>
10103#endif
10104int main() {
10105 fd_set fds;
10106
10107#ifdef TRYBITS
10108 if(fds.fds_bits);
10109#endif
10110
10111#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10112 exit(0);
10113#else
10114 exit(1);
10115#endif
10116}
10117EOCP
5440bc8e 10118set try -DTRYBITS
b4eb6b3d
JH
10119if eval $compile; then
10120 d_fds_bits="$define"
10121 d_fd_set="$define"
10122 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10123 if $run ./try; then
b4eb6b3d
JH
10124 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10125 d_fd_macros="$define"
10126 else
10127 $cat >&4 <<'EOM'
10128but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10129EOM
10130 d_fd_macros="$undef"
10131 fi
10132else
10133 $cat <<'EOM'
10134Hmm, your compiler has some difficulty with fd_set. Checking further...
10135EOM
5440bc8e 10136 set try
b4eb6b3d
JH
10137 if eval $compile; then
10138 d_fds_bits="$undef"
10139 d_fd_set="$define"
10140 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10141 if $run ./try; then
b4eb6b3d
JH
10142 echo "and you have the normal fd_set macros." >&4
10143 d_fd_macros="$define"
10144 else
10145 $cat <<'EOM'
10146but not the normal fd_set macros! Gross! More work for me...
10147EOM
10148 d_fd_macros="$undef"
10149 fi
10150 else
10151 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10152 d_fd_set="$undef"
10153 d_fds_bits="$undef"
10154 d_fd_macros="$undef"
10155 fi
10156fi
5440bc8e 10157$rm -f try try.*
b4eb6b3d
JH
10158
10159: see if fgetpos exists
10160set fgetpos d_fgetpos
10161eval $inlibc
10162
758a5d79
JH
10163: see if finite exists
10164set finite d_finite
10165eval $inlibc
10166
10167: see if finitel exists
10168set finitel d_finitel
10169eval $inlibc
10170
b4eb6b3d
JH
10171: see if flock exists
10172set flock d_flock
10173eval $inlibc
10174
2ef53570
JH
10175: see if this is a sys/file.h system
10176val=''
10177set sys/file.h val
10178eval $inhdr
10179
10180: do we need to include sys/file.h ?
10181case "$val" in
10182"$define")
10183 echo " "
10184 if $h_sysfile; then
10185 val="$define"
10186 echo "We'll be including <sys/file.h>." >&4
10187 else
10188 val="$undef"
10189 echo "We won't be including <sys/file.h>." >&4
10190 fi
10191 ;;
10192*)
10193 h_sysfile=false
10194 ;;
10195esac
10196set i_sysfile
10197eval $setvar
10198
10199: see if prototype for flock is available
10200echo " "
10201set d_flockproto flock $i_sysfile sys/file.h
10202eval $hasproto
10203
b4eb6b3d
JH
10204: see if fork exists
10205set fork d_fork
10206eval $inlibc
10207
758a5d79
JH
10208: see if fp_class exists
10209set fp_class d_fp_class
10210eval $inlibc
10211
b4eb6b3d
JH
10212: see if pathconf exists
10213set pathconf d_pathconf
10214eval $inlibc
10215
10216: see if fpathconf exists
10217set fpathconf d_fpathconf
10218eval $inlibc
10219
758a5d79
JH
10220: see if fpclass exists
10221set fpclass d_fpclass
10222eval $inlibc
10223
10224: see if fpclassify exists
10225set fpclassify d_fpclassify
10226eval $inlibc
10227
10228: see if fpclassl exists
10229set fpclassl d_fpclassl
10230eval $inlibc
10231
b4eb6b3d
JH
10232
10233: check for fpos64_t
10234echo " "
10235echo "Checking to see if you have fpos64_t..." >&4
10236$cat >try.c <<EOCP
10237#include <stdio.h>
10238int main() { fpos64_t x = 7; }
10239EOCP
10240set try
10241if eval $compile; then
10242 val="$define"
10243 echo "You have fpos64_t."
10244else
10245 val="$undef"
10246 echo "You do not have fpos64_t."
10247 case "$fpossize" in
10248 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10249 esac
10250fi
10251$rm -f try.* try
10252set d_fpos64_t
10253eval $setvar
10254
10255: see if frexpl exists
10256set frexpl d_frexpl
10257eval $inlibc
10258
b4eb6b3d
JH
10259: see if this is a sys/param system
10260set sys/param.h i_sysparam
10261eval $inhdr
10262
10263: see if this is a sys/mount.h system
10264set sys/mount.h i_sysmount
10265eval $inhdr
10266
b4eb6b3d
JH
10267
10268echo " "
10269echo "Checking to see if your system supports struct fs_data..." >&4
10270set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10271eval $hasstruct
10272case "$d_fs_data_s" in
10273"$define") echo "Yes, it does." ;;
10274*) echo "No, it doesn't." ;;
10275esac
10276
10277: see if fseeko exists
10278set fseeko d_fseeko
10279eval $inlibc
10280case "$longsize" in
102818) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10282esac
10283
10284: see if fsetpos exists
10285set fsetpos d_fsetpos
10286eval $inlibc
10287
10288
10289: see if fstatfs exists
10290set fstatfs d_fstatfs
10291eval $inlibc
10292
10293
10294: see if statvfs exists
10295set statvfs d_statvfs
10296eval $inlibc
10297
10298: see if fstatvfs exists
10299set fstatvfs d_fstatvfs
10300eval $inlibc
10301
10302
411ab01c
JH
10303: see if fsync exists
10304set fsync d_fsync
10305eval $inlibc
10306
b4eb6b3d
JH
10307: see if ftello exists
10308set ftello d_ftello
10309eval $inlibc
10310case "$longsize" in
103118) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10312esac
10313
10314: see if getcwd exists
10315set getcwd d_getcwd
10316eval $inlibc
10317
10318: see if getespwnam exists
10319set getespwnam d_getespwnam
10320eval $inlibc
10321
10322
10323: see if getfsstat exists
10324set getfsstat d_getfsstat
10325eval $inlibc
10326
10327: see if getgrent exists
10328set getgrent d_getgrent
10329eval $inlibc
10330
10331: see if gethostbyaddr exists
10332set gethostbyaddr d_gethbyaddr
10333eval $inlibc
10334
10335: see if gethostbyname exists
10336set gethostbyname d_gethbyname
10337eval $inlibc
10338
10339: see if gethostent exists
10340set gethostent d_gethent
10341eval $inlibc
10342
10343: see how we will look up host name
10344echo " "
10345call=''
10346if set gethostname val -f d_gethname; eval $csym; $val; then
10347 echo 'gethostname() found.' >&4
10348 d_gethname="$define"
10349 call=gethostname
10350fi
10351if set uname val -f d_uname; eval $csym; $val; then
10352 if ./xenix; then
10353 $cat <<'EOM'
10354uname() was found, but you're running xenix, and older versions of xenix
10355have a broken uname(). If you don't really know whether your xenix is old
10356enough to have a broken system call, use the default answer.
10357
10358EOM
10359 dflt=y
10360 case "$d_uname" in
10361 "$define") dflt=n;;
10362 esac
10363 rp='Is your uname() broken?'
10364 . ./myread
10365 case "$ans" in
10366 n*) d_uname="$define"; call=uname;;
10367 esac
10368 else
10369 echo 'uname() found.' >&4
10370 d_uname="$define"
10371 case "$call" in
10372 '') call=uname ;;
10373 esac
10374 fi
10375fi
10376case "$d_gethname" in
10377'') d_gethname="$undef";;
10378esac
10379case "$d_uname" in
10380'') d_uname="$undef";;
10381esac
10382case "$d_uname$d_gethname" in
10383*define*)
10384 dflt=n
10385 cat <<EOM
10386
10387Every now and then someone has a $call() that lies about the hostname
10388but can't be fixed for political or economic reasons. If you wish, I can
10389pretend $call() isn't there and maybe compute hostname at run-time
10390thanks to the '$phostname' command.
10391
10392EOM
10393 rp="Shall I ignore $call() from now on?"
10394 . ./myread
10395 case "$ans" in
10396 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10397 esac;;
10398esac
10399case "$phostname" in
10400'') aphostname='';;
10401*) case "$aphostname" in
10402 /*) ;;
10403 *) set X $phostname
10404 shift
10405 file=$1
10406 shift
10407 file=`./loc $file $file $pth`
10408 aphostname=`echo $file $*`
10409 ;;
10410 esac
10411 ;;
10412esac
10413case "$d_uname$d_gethname" in
10414*define*) ;;
10415*)
10416 case "$phostname" in
10417 '')
10418 echo "There will be no way for $package to get your hostname." >&4;;
10419 *)
10420 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10421 ;;
10422 esac;;
10423esac
10424case "$d_phostname" in
10425'') d_phostname="$undef";;
10426esac
10427
10428: see if this is a netdb.h system
10429set netdb.h i_netdb
10430eval $inhdr
10431
10432: see if prototypes for various gethostxxx netdb.h functions are available
10433echo " "
10434set d_gethostprotos gethostent $i_netdb netdb.h
10435eval $hasproto
10436
4e0554ec
JH
10437: see if getitimer exists
10438set getitimer d_getitimer
10439eval $inlibc
10440
b4eb6b3d
JH
10441: see if getlogin exists
10442set getlogin d_getlogin
10443eval $inlibc
10444
10445: see if getmnt exists
10446set getmnt d_getmnt
10447eval $inlibc
10448
10449: see if getmntent exists
10450set getmntent d_getmntent
10451eval $inlibc
10452
10453: see if getnetbyaddr exists
10454set getnetbyaddr d_getnbyaddr
10455eval $inlibc
10456
10457: see if getnetbyname exists
10458set getnetbyname d_getnbyname
10459eval $inlibc
10460
10461: see if getnetent exists
10462set getnetent d_getnent
10463eval $inlibc
10464
10465: see if prototypes for various getnetxxx netdb.h functions are available
10466echo " "
10467set d_getnetprotos getnetent $i_netdb netdb.h
10468eval $hasproto
10469
0c0643d0
JH
10470: see if getpagesize exists
10471set getpagesize d_getpagsz
10472eval $inlibc
10473
b4eb6b3d
JH
10474
10475: see if getprotobyname exists
10476set getprotobyname d_getpbyname
10477eval $inlibc
10478
10479: see if getprotobynumber exists
10480set getprotobynumber d_getpbynumber
10481eval $inlibc
10482
10483: see if getprotoent exists
10484set getprotoent d_getpent
10485eval $inlibc
10486
10487: see if getpgid exists
10488set getpgid d_getpgid
10489eval $inlibc
10490
10491: see if getpgrp2 exists
10492set getpgrp2 d_getpgrp2
10493eval $inlibc
10494
10495: see if getppid exists
10496set getppid d_getppid
10497eval $inlibc
10498
10499: see if getpriority exists
10500set getpriority d_getprior
10501eval $inlibc
10502
10503: see if prototypes for various getprotoxxx netdb.h functions are available
10504echo " "
10505set d_getprotoprotos getprotoent $i_netdb netdb.h
10506eval $hasproto
10507
10508: see if getprpwnam exists
10509set getprpwnam d_getprpwnam
10510eval $inlibc
10511
10512: see if getpwent exists
10513set getpwent d_getpwent
10514eval $inlibc
10515
10516
10517: see if getservbyname exists
10518set getservbyname d_getsbyname
10519eval $inlibc
10520
10521: see if getservbyport exists
10522set getservbyport d_getsbyport
10523eval $inlibc
10524
10525: see if getservent exists
10526set getservent d_getsent
10527eval $inlibc
10528
10529: see if prototypes for various getservxxx netdb.h functions are available
10530echo " "
10531set d_getservprotos getservent $i_netdb netdb.h
10532eval $hasproto
10533
10534: see if getspnam exists
10535set getspnam d_getspnam
10536eval $inlibc
10537
10538: see if gettimeofday or ftime exists
10539set gettimeofday d_gettimeod
10540eval $inlibc
10541case "$d_gettimeod" in
10542"$undef")
10543 set ftime d_ftime
10544 eval $inlibc
10545 ;;
10546*)
10547 val="$undef"; set d_ftime; eval $setvar
10548 ;;
10549esac
10550case "$d_gettimeod$d_ftime" in
10551"$undef$undef")
10552 echo " "
10553 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10554 ;;
10555esac
10556
10557: see if this is an grp system
10558set grp.h i_grp
10559eval $inhdr
10560
10561case "$i_grp" in
10562$define)
10563 xxx=`./findhdr grp.h`
10564 $cppstdin $cppflags $cppminus < $xxx >$$.h
10565
10566 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10567 val="$define"
10568 else
10569 val="$undef"
10570 fi
10571 set d_grpasswd
10572 eval $setvar
10573
10574 $rm -f $$.h
10575 ;;
10576*)
10577 val="$undef";
10578 set d_grpasswd; eval $setvar
10579 ;;
10580esac
10581
10582: see if hasmntopt exists
10583set hasmntopt d_hasmntopt
10584eval $inlibc
10585
10586: see if this is a netinet/in.h or sys/in.h system
10587set netinet/in.h i_niin sys/in.h i_sysin
10588eval $inhdr
10589
10590: see if arpa/inet.h has to be included
10591set arpa/inet.h i_arpainet
10592eval $inhdr
10593
10594: see if htonl --and friends-- exists
10595val=''
10596set htonl val
10597eval $inlibc
10598
10599: Maybe they are macros.
10600case "$val" in
10601$undef)
10602 $cat >htonl.c <<EOM
10603#include <stdio.h>
10604#include <sys/types.h>
10605#$i_niin I_NETINET_IN
10606#$i_sysin I_SYS_IN
10607#$i_arpainet I_ARPA_INET
10608#ifdef I_NETINET_IN
10609#include <netinet/in.h>
10610#endif
10611#ifdef I_SYS_IN
10612#include <sys/in.h>
10613#endif
10614#ifdef I_ARPA_INET
10615#include <arpa/inet.h>
10616#endif
10617#ifdef htonl
10618printf("Defined as a macro.");
10619#endif
10620EOM
10621 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10622 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10623 val="$define"
10624 echo "But it seems to be defined as a macro." >&4
10625 fi
10626 $rm -f htonl.?
10627 ;;
10628esac
10629set d_htonl
10630eval $setvar
10631
b4eb6b3d
JH
10632: index or strchr
10633echo " "
10634if set index val -f; eval $csym; $val; then
10635 if set strchr val -f d_strchr; eval $csym; $val; then
10636 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10637 val="$define"
10638 vali="$undef"
10639 echo "strchr() found." >&4
10640 else
10641 val="$undef"
10642 vali="$define"
10643 echo "index() found." >&4
10644 fi
10645 else
10646 val="$undef"
10647 vali="$define"
8dfa8df9
JH
10648 echo "index() found." >&4
10649 fi
b4eb6b3d 10650else
8dfa8df9
JH
10651 if set strchr val -f d_strchr; eval $csym; $val; then
10652 val="$define"
10653 vali="$undef"
10654 echo "strchr() found." >&4
10655 else
10656 echo "No index() or strchr() found!" >&4
10657 val="$undef"
10658 vali="$undef"
10659 fi
b4eb6b3d 10660fi
8dfa8df9
JH
10661set d_strchr; eval $setvar
10662val="$vali"
10663set d_index; eval $setvar
10664
10665: check whether inet_aton exists
10666set inet_aton d_inetaton
10667eval $inlibc
b4eb6b3d
JH
10668
10669: Look for isascii
10670echo " "
10671$cat >isascii.c <<'EOCP'
10672#include <stdio.h>
10673#include <ctype.h>
10674int main() {
10675 int c = 'A';
10676 if (isascii(c))
10677 exit(0);
10678 else
10679 exit(1);
10680}
10681EOCP
10682set isascii
10683if eval $compile; then
10684 echo "isascii() found." >&4
10685 val="$define"
10686else
10687 echo "isascii() NOT found." >&4
10688 val="$undef"
10689fi
10690set d_isascii
10691eval $setvar
10692$rm -f isascii*
10693
758a5d79
JH
10694: see if isfinite exists
10695set isfinite d_isfinite
10696eval $inlibc
10697
10698: see if isinf exists
10699set isinf d_isinf
10700eval $inlibc
10701
b4eb6b3d
JH
10702: see if isnan exists
10703set isnan d_isnan
10704eval $inlibc
10705
10706: see if isnanl exists
10707set isnanl d_isnanl
10708eval $inlibc
10709
10710: see if killpg exists
10711set killpg d_killpg
10712eval $inlibc
10713
10714: see if lchown exists
10715echo " "
10716$cat > try.c <<'EOCP'
10717/* System header to define __stub macros and hopefully few prototypes,
10718 which can conflict with char lchown(); below. */
10719#include <assert.h>
10720/* Override any gcc2 internal prototype to avoid an error. */
10721/* We use char because int might match the return type of a gcc2
10722 builtin and then its argument prototype would still apply. */
10723char lchown();
10724int main() {
10725 /* The GNU C library defines this for functions which it implements
10726 to always fail with ENOSYS. Some functions are actually named
10727 something starting with __ and the normal name is an alias. */
10728#if defined (__stub_lchown) || defined (__stub___lchown)
10729choke me
10730#else
10731lchown();
10732#endif
10733; return 0; }
10734EOCP
10735set try
10736if eval $compile; then
10737 $echo "lchown() found." >&4
10738 val="$define"
10739else
10740 $echo "lchown() NOT found." >&4
10741 val="$undef"
10742fi
10743set d_lchown
10744eval $setvar
10745
10746: See if number of significant digits in a double precision number is known
10747echo " "
10748$cat >ldbl_dig.c <<EOM
10749#$i_limits I_LIMITS
10750#$i_float I_FLOAT
10751#ifdef I_LIMITS
10752#include <limits.h>
10753#endif
10754#ifdef I_FLOAT
10755#include <float.h>
10756#endif
10757#ifdef LDBL_DIG
10758printf("Contains LDBL_DIG");
10759#endif
10760EOM
10761$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10762if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10763 echo "LDBL_DIG found." >&4
10764 val="$define"
10765else
10766 echo "LDBL_DIG NOT found." >&4
10767 val="$undef"
10768fi
10769$rm -f ldbl_dig.?
10770set d_ldbl_dig
10771eval $setvar
10772
10773: see if link exists
10774set link d_link
10775eval $inlibc
10776
10777: see if localeconv exists
10778set localeconv d_locconv
10779eval $inlibc
10780
10781: see if lockf exists
10782set lockf d_lockf
10783eval $inlibc
10784
b4eb6b3d
JH
10785: see if prototype for lseek is available
10786echo " "
4786929f 10787set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
b4eb6b3d
JH
10788eval $hasproto
10789
10790: see if lstat exists
10791set lstat d_lstat
10792eval $inlibc
10793
10794: see if madvise exists
10795set madvise d_madvise
10796eval $inlibc
10797
10798: see if mblen exists
10799set mblen d_mblen
10800eval $inlibc
10801
10802: see if mbstowcs exists
10803set mbstowcs d_mbstowcs
10804eval $inlibc
10805
10806: see if mbtowc exists
10807set mbtowc d_mbtowc
10808eval $inlibc
10809
10810: see if memchr exists
10811set memchr d_memchr
10812eval $inlibc
10813
10814: see if memcmp exists
10815set memcmp d_memcmp
10816eval $inlibc
10817
10818: see if memcpy exists
10819set memcpy d_memcpy
10820eval $inlibc
10821
10822: see if memmove exists
10823set memmove d_memmove
10824eval $inlibc
10825
10826: see if memset exists
10827set memset d_memset
10828eval $inlibc
10829
10830: see if mkdir exists
10831set mkdir d_mkdir
10832eval $inlibc
10833
10834: see if mkdtemp exists
10835set mkdtemp d_mkdtemp
10836eval $inlibc
10837
10838: see if mkfifo exists
10839set mkfifo d_mkfifo
10840eval $inlibc
10841
10842: see if mkstemp exists
10843set mkstemp d_mkstemp
10844eval $inlibc
10845
10846: see if mkstemps exists
10847set mkstemps d_mkstemps
10848eval $inlibc
10849
10850: see if mktime exists
10851set mktime d_mktime
10852eval $inlibc
10853
10854: see if this is a sys/mman.h system
10855set sys/mman.h i_sysmman
10856eval $inhdr
10857
10858: see if mmap exists
10859set mmap d_mmap
10860eval $inlibc
10861: see what shmat returns
10862: default to something harmless
10863mmaptype='void *'
10864case "$i_sysmman$d_mmap" in
10865"$define$define")
10866 $cat >mmap.c <<'END'
10867#include <sys/mman.h>
10868void *mmap();
10869END
10870 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10871 mmaptype='void *'
10872 else
10873 mmaptype='caddr_t'
10874 fi
10875 echo "and it returns ($mmaptype)." >&4
10876 ;;
10877esac
10878
10879
10880
10881: see if modfl exists
10882set modfl d_modfl
10883eval $inlibc
10884
e67aeab1
JH
10885d_modfl_pow32_bug="$undef"
10886
2b2cdb4d
HS
10887case "$d_longdbl$d_modfl" in
10888$define$define)
10889 $cat <<EOM
10890Checking to see whether your modfl() is okay for large values...
10891EOM
10892$cat >try.c <<EOCP
10893#include <math.h>
10894#include <stdio.h>
10895int main() {
10896 long double nv = 4294967303.15;
10897 long double v, w;
10898 v = modfl(nv, &w);
10899#ifdef __GLIBC__
10900 printf("glibc");
10901#endif
10902 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10903 return 0;
10904}
10905EOCP
27f9615e
JH
10906 case "$osname:$gccversion" in
10907 aix:) saveccflags="$ccflags"
10908 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10909 esac
2b2cdb4d
HS
10910 set try
10911 if eval $compile; then
5440bc8e 10912 foo=`$run ./try`
2b2cdb4d
HS
10913 case "$foo" in
10914 *" 4294967303.150000 1.150000 4294967302.000000")
10915 echo >&4 "Your modfl() is broken for large values."
e67aeab1 10916 d_modfl_pow32_bug="$define"
2b2cdb4d
HS
10917 case "$foo" in
10918 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10919 ;;
10920 esac
10921 ;;
10922 *" 4294967303.150000 0.150000 4294967303.000000")
10923 echo >&4 "Your modfl() seems okay for large values."
10924 ;;
10925 *) echo >&4 "I don't understand your modfl() at all."
10926 d_modfl="$undef"
10927 ;;
10928 esac
10929 $rm -f try.* try core core.try.*
10930 else
10931 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10932 d_modfl="$undef"
10933 fi
27f9615e 10934 case "$osname:$gccversion" in
abcf653a 10935 aix:) ccflags="$saveccflags" ;; # restore
27f9615e 10936 esac
2b2cdb4d
HS
10937 ;;
10938esac
10939
b4eb6b3d
JH
10940: see if mprotect exists
10941set mprotect d_mprotect
10942eval $inlibc
10943
10944: see if msgctl exists
10945set msgctl d_msgctl
10946eval $inlibc
10947
10948: see if msgget exists
10949set msgget d_msgget
10950eval $inlibc
10951
10952: see if msgsnd exists
10953set msgsnd d_msgsnd
10954eval $inlibc
10955
10956: see if msgrcv exists
10957set msgrcv d_msgrcv
10958eval $inlibc
10959
10960: see how much of the 'msg*(2)' library is present.
10961h_msg=true
10962echo " "
10963case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10964*"$undef"*) h_msg=false;;
10965esac
10966case "$osname" in
10967freebsd)
10968 case "`ipcs 2>&1`" in
10969 "SVID messages"*"not configured"*)
10970 echo "Your $osname does not have the msg*(2) configured." >&4
10971 h_msg=false
10972 val="$undef"
10973 set msgctl d_msgctl
10974 eval $setvar
10975 set msgget d_msgget
10976 eval $setvar
10977 set msgsnd d_msgsnd
10978 eval $setvar
10979 set msgrcv d_msgrcv
10980 eval $setvar
10981 ;;
10982 esac
10983 ;;
10984esac
10985: we could also check for sys/ipc.h ...
10986if $h_msg && $test `./findhdr sys/msg.h`; then
10987 echo "You have the full msg*(2) library." >&4
10988 val="$define"
10989else
10990 echo "You don't have the full msg*(2) library." >&4
10991 val="$undef"
10992fi
10993set d_msg
10994eval $setvar
10995
4e0554ec
JH
10996
10997echo " "
10998echo "Checking to see if your system supports struct msghdr..." >&4
10999set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11000eval $hasstruct
11001case "$d_msghdr_s" in
11002"$define") echo "Yes, it does." ;;
11003*) echo "No, it doesn't." ;;
11004esac
11005
11006
b4eb6b3d
JH
11007: see if msync exists
11008set msync d_msync
11009eval $inlibc
11010
11011: see if munmap exists
11012set munmap d_munmap
11013eval $inlibc
11014
11015: see if nice exists
11016set nice d_nice
11017eval $inlibc
11018
2765b840
JH
11019: see if this is a langinfo.h system
11020set langinfo.h i_langinfo
11021eval $inhdr
11022
11023: see if nl_langinfo exists
11024set nl_langinfo d_nl_langinfo
11025eval $inlibc
11026
b4eb6b3d
JH
11027: check for length of character
11028echo " "
11029case "$charsize" in
11030'')
11031 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11032 $cat >try.c <<'EOCP'
11033#include <stdio.h>
11034int main()
11035{
11036 printf("%d\n", (int)sizeof(char));
11037 exit(0);
11038}
11039EOCP
11040 set try
11041 if eval $compile_ok; then
5440bc8e 11042 dflt=`$run ./try`
b4eb6b3d
JH
11043 else
11044 dflt='1'
11045 echo "(I can't seem to compile the test program. Guessing...)"
11046 fi
11047 ;;
11048*)
11049 dflt="$charsize"
11050 ;;
11051esac
11052rp="What is the size of a character (in bytes)?"
11053. ./myread
11054charsize="$ans"
11055$rm -f try.c try
11056
1d1be0dc
NC
11057: check for volatile keyword
11058echo " "
11059echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11060$cat >try.c <<'EOCP'
11061int main()
11062{
11063 typedef struct _goo_struct goo_struct;
11064 goo_struct * volatile goo = ((goo_struct *)0);
11065 struct _goo_struct {
11066 long long_int;
11067 int reg_int;
11068 char char_var;
11069 };
11070 typedef unsigned short foo_t;
11071 char *volatile foo;
11072 volatile int bar;
11073 volatile foo_t blech;
11074 foo = foo;
11075}
11076EOCP
11077if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11078 val="$define"
11079 echo "Yup, it does."
11080else
11081 val="$undef"
11082 echo "Nope, it doesn't."
11083fi
11084set d_volatile
11085eval $setvar
11086$rm -f try.*
11087
b4eb6b3d
JH
11088
11089echo " "
11090$echo "Choosing the C types to be used for Perl's internal types..." >&4
11091
11092case "$use64bitint:$d_quad:$quadtype" in
11093define:define:?*)
11094 ivtype="$quadtype"
11095 uvtype="$uquadtype"
11096 ivsize=8
11097 uvsize=8
11098 ;;
11099*) ivtype="long"
11100 uvtype="unsigned long"
11101 ivsize=$longsize
11102 uvsize=$longsize
11103 ;;
11104esac
11105
11106case "$uselongdouble:$d_longdbl" in
11107define:define)
11108 nvtype="long double"
11109 nvsize=$longdblsize
11110 ;;
11111*) nvtype=double
11112 nvsize=$doublesize
11113 ;;
11114esac
11115
11116$echo "(IV will be "$ivtype", $ivsize bytes)"
11117$echo "(UV will be "$uvtype", $uvsize bytes)"
11118$echo "(NV will be "$nvtype", $nvsize bytes)"
11119
11120$cat >try.c <<EOCP
11121#$i_inttypes I_INTTYPES
11122#ifdef I_INTTYPES
11123#include <inttypes.h>
11124#endif
11125#include <stdio.h>
11126int main() {
11127#ifdef INT8
11128 int8_t i = INT8_MAX;
11129 uint8_t u = UINT8_MAX;
11130 printf("int8_t\n");
11131#endif
11132#ifdef INT16
11133 int16_t i = INT16_MAX;
11134 uint16_t i = UINT16_MAX;
11135 printf("int16_t\n");
11136#endif
11137#ifdef INT32
11138 int32_t i = INT32_MAX;
11139 uint32_t u = UINT32_MAX;
11140 printf("int32_t\n");
11141#endif
11142}
11143EOCP
11144
11145case "$i8type" in
11146'') case "$charsize" in
11147 1) i8type=char
11148 u8type="unsigned char"
11149 i8size=$charsize
11150 u8size=$charsize
11151 ;;
11152 esac
11153 ;;
11154esac
11155case "$i8type" in
11156'') set try -DINT8
11157 if eval $compile; then
5440bc8e 11158 case "`$run ./try`" in
b4eb6b3d
JH
11159 int8_t) i8type=int8_t
11160 u8type=uint8_t
11161 i8size=1
11162 u8size=1
11163 ;;
11164 esac
11165 fi
11166 ;;
11167esac
11168case "$i8type" in
11169'') if $test $charsize -ge 1; then
11170 i8type=char
11171 u8type="unsigned char"
11172 i8size=$charsize
11173 u8size=$charsize
11174 fi
11175 ;;
11176esac
11177
11178case "$i16type" in
11179'') case "$shortsize" in
11180 2) i16type=short
11181 u16type="unsigned short"
11182 i16size=$shortsize
11183 u16size=$shortsize
11184 ;;
11185 esac
11186 ;;
11187esac
11188case "$i16type" in
11189'') set try -DINT16
11190 if eval $compile; then
5440bc8e 11191 case "`$run ./try`" in
b4eb6b3d
JH
11192 int16_t)
11193 i16type=int16_t
11194 u16type=uint16_t
11195 i16size=2
11196 u16size=2
11197 ;;
11198 esac
11199 fi
11200 ;;
11201esac
11202case "$i16type" in
11203'') if $test $shortsize -ge 2; then
11204 i16type=short
11205 u16type="unsigned short"
11206 i16size=$shortsize
11207 u16size=$shortsize
11208 fi
11209 ;;
11210esac
11211
11212case "$i32type" in
11213'') case "$longsize" in
11214 4) i32type=long
11215 u32type="unsigned long"
11216 i32size=$longsize
11217 u32size=$longsize
11218 ;;
11219 *) case "$intsize" in
11220 4) i32type=int
11221 u32type="unsigned int"
11222 i32size=$intsize
11223 u32size=$intsize
11224 ;;
11225 esac
11226 ;;
11227 esac
11228 ;;
11229esac
11230case "$i32type" in
11231'') set try -DINT32
11232 if eval $compile; then
5440bc8e 11233 case "`$run ./try`" in
b4eb6b3d
JH
11234 int32_t)
11235 i32type=int32_t
11236 u32type=uint32_t
11237 i32size=4
11238 u32size=4
11239 ;;
11240 esac
11241 fi
11242 ;;
11243esac
11244case "$i32type" in
11245'') if $test $intsize -ge 4; then
11246 i32type=int
11247 u32type="unsigned int"
11248 i32size=$intsize
11249 u32size=$intsize
11250 fi
11251 ;;
11252esac
11253
11254case "$i64type" in
11255'') case "$d_quad:$quadtype" in
11256 define:?*)
11257 i64type="$quadtype"
11258 u64type="$uquadtype"
11259 i64size=8
11260 u64size=8
11261 ;;
11262 esac
11263 ;;
11264esac
11265
1d1be0dc
NC
11266$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11267: volatile so that the compiler has to store it out to memory.
11268if test X"$d_volatile" = X"$define"; then
11269 volatile=volatile
11270fi
b4eb6b3d
JH
11271$cat <<EOP >try.c
11272#include <stdio.h>
1d1be0dc
NC
11273#include <sys/types.h>
11274#include <signal.h>
11275#ifdef SIGFPE
11276$volatile int bletched = 0;
11277$signal_t blech(s) int s; { bletched = 1; }
11278#endif
b4eb6b3d
JH
11279int main() {
11280 $uvtype u = 0;
1d1be0dc 11281 $nvtype d;
b4eb6b3d
JH
11282 int n = 8 * $uvsize;
11283 int i;
1d1be0dc
NC
11284#ifdef SIGFPE
11285 signal(SIGFPE, blech);
11286#endif
11287
b4eb6b3d
JH
11288 for (i = 0; i < n; i++) {
11289 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11290 d = ($nvtype)u;
11291 if (($uvtype)d != u)
b4eb6b3d 11292 break;
1d1be0dc
NC
11293 if (d <= 0)
11294 break;
11295 d = ($nvtype)(u - 1);
11296 if (($uvtype)d != (u - 1))
11297 break;
11298#ifdef SIGFPE
11299 if (bletched) {
11300 break;
11301#endif
11302 }
b4eb6b3d 11303 }
efd1522b 11304 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11305 exit(0);
11306}
11307EOP
1d1be0dc
NC
11308set try
11309
11310d_nv_preserves_uv="$undef"
11311if eval $compile; then
5440bc8e 11312 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11313fi
11314case "$d_nv_preserves_uv_bits" in
11315\-[1-9]*)
11316 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11317 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11318 d_nv_preserves_uv="$define"
b4eb6b3d 11319 ;;
1d1be0dc
NC
11320[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11321 d_nv_preserves_uv="$undef" ;;
11322*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11323 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11324esac
11325
1d1be0dc
NC
11326$rm -f try.* try
11327
b4eb6b3d
JH
11328
11329: check for off64_t
11330echo " "
11331echo "Checking to see if you have off64_t..." >&4
11332$cat >try.c <<EOCP
11333#include <sys/types.h>
11334#include <unistd.h>
11335int main() { off64_t x = 7; }
11336EOCP
11337set try
11338if eval $compile; then
11339 val="$define"
11340 echo "You have off64_t."
11341else
11342 val="$undef"
11343 echo "You do not have off64_t."
11344 case "$lseeksize" in
11345 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11346 esac
11347fi
11348$rm -f try.* try
11349set d_off64_t
11350eval $setvar
11351
11352: see if POSIX threads are available
11353set pthread.h i_pthread
11354eval $inhdr
11355
11356
11357
11358
11359: how to create joinable pthreads
11360if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11361 echo " "
11362 echo "Checking what constant to use for creating joinable pthreads..." >&4
11363 $cat >try.c <<'EOCP'
11364#include <pthread.h>
11365int main() {
11366 int detachstate = JOINABLE;
11367}
11368EOCP
11369 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11370 if eval $compile; then
11371 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11372 val="$undef" # Yes, undef.
11373 set d_old_pthread_create_joinable
11374 eval $setvar
11375 val=""
11376 set old_pthread_create_joinable
11377 eval $setvar
11378 else
11379 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11380 if eval $compile; then
11381 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11382 val="$define"
11383 set d_old_pthread_create_joinable
11384 eval $setvar
11385 val=PTHREAD_CREATE_UNDETACHED
11386 set old_pthread_create_joinable
11387 eval $setvar
11388 else
11389 set try -DJOINABLE=__UNDETACHED
11390 if eval $compile; then
11391 echo "You seem to use __UNDETACHED." >&4
11392 val="$define"
11393 set d_old_pthread_create_joinable
11394 eval $setvar
11395 val=__UNDETACHED
11396 set old_pthread_create_joinable
11397 eval $setvar
11398 else
11399 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11400 val="$define"
11401 set d_old_pthread_create_joinable
11402 eval $setvar
11403 val=0
11404 set old_pthread_create_joinable
11405 eval $setvar
11406 fi
11407 fi
11408 fi
11409 $rm -f try try.*
11410else
11411 d_old_pthread_create_joinable="$undef"
11412 old_pthread_create_joinable=""
11413fi
11414
11415: see if pause exists
11416set pause d_pause
11417eval $inlibc
11418
11419: see if pipe exists
11420set pipe d_pipe
11421eval $inlibc
11422
11423: see if poll exists
11424set poll d_poll
11425eval $inlibc
11426
d6483fcc
JH
11427: see if pthread_atfork exists
11428set pthread_atfork d_pthread_atfork
11429eval $inlibc
11430
b4eb6b3d
JH
11431
11432: see whether the various POSIXish _yields exist
11433$cat >try.c <<EOP
11434#include <pthread.h>
11435#include <stdio.h>
11436int main() {
11437#ifdef SCHED_YIELD
11438 sched_yield();
11439#else
11440#ifdef PTHREAD_YIELD
11441 pthread_yield();
11442#else
11443#ifdef PTHREAD_YIELD_NULL
11444 pthread_yield(NULL);
11445#endif
11446#endif
11447#endif
11448}
11449EOP
11450: see if sched_yield exists
11451set try -DSCHED_YIELD
11452if eval $compile; then
11453 val="$define"
11454 sched_yield='sched_yield()'
11455else
11456 val="$undef"
11457fi
11458case "$usethreads" in
11459$define)
11460 case "$val" in
11461 $define) echo 'sched_yield() found.' >&4 ;;
11462 *) echo 'sched_yield() NOT found.' >&4 ;;
11463 esac
11464esac
11465set d_sched_yield
11466eval $setvar
11467
11468: see if pthread_yield exists
11469set try -DPTHREAD_YIELD
11470if eval $compile; then
11471 val="$define"
11472 case "$sched_yield" in
11473 '') sched_yield='pthread_yield()' ;;
11474 esac
11475else
11476 set try -DPTHREAD_YIELD_NULL
11477 if eval $compile; then
11478 val="$define"
11479 case "$sched_yield" in
11480 '') sched_yield='pthread_yield(NULL)' ;;
11481 esac
11482 else
11483 val="$undef"
11484 fi
11485fi
11486case "$usethreads" in
11487$define)
11488 case "$val" in
11489 $define) echo 'pthread_yield() found.' >&4 ;;
11490 *) echo 'pthread_yield() NOT found.' >&4 ;;
11491 esac
11492 ;;
11493esac
11494set d_pthread_yield
11495eval $setvar
11496
11497case "$sched_yield" in
11498'') sched_yield=undef ;;
11499esac
11500
11501$rm -f try try.*
11502
11503: see if this is a pwd.h system
11504set pwd.h i_pwd
11505eval $inhdr
11506
11507case "$i_pwd" in
11508$define)
11509 xxx=`./findhdr pwd.h`
11510 $cppstdin $cppflags $cppminus < $xxx >$$.h
11511
11512 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11513 val="$define"
11514 else
11515 val="$undef"
11516 fi
11517 set d_pwquota
11518 eval $setvar
11519
11520 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11521 val="$define"
11522 else
11523 val="$undef"
11524 fi
11525 set d_pwage
11526 eval $setvar
11527
11528 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11529 val="$define"
11530 else
11531 val="$undef"
11532 fi
11533 set d_pwchange
11534 eval $setvar
11535
11536 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11537 val="$define"
11538 else
11539 val="$undef"
11540 fi
11541 set d_pwclass
11542 eval $setvar
11543
11544 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11545 val="$define"
11546 else
11547 val="$undef"
11548 fi
11549 set d_pwexpire
11550 eval $setvar
11551
11552 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11553 val="$define"
11554 else
11555 val="$undef"
11556 fi
11557 set d_pwcomment
11558 eval $setvar
11559
11560 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11561 val="$define"
11562 else
11563 val="$undef"
11564 fi
11565 set d_pwgecos
11566 eval $setvar
11567
11568 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11569 val="$define"
11570 else
11571 val="$undef"
11572 fi
11573 set d_pwpasswd
11574 eval $setvar
11575
11576 $rm -f $$.h
11577 ;;
11578*)
11579 val="$undef";
11580 set d_pwquota; eval $setvar
11581 set d_pwage; eval $setvar
11582 set d_pwchange; eval $setvar
11583 set d_pwclass; eval $setvar
11584 set d_pwexpire; eval $setvar
11585 set d_pwcomment; eval $setvar
11586 set d_pwgecos; eval $setvar
11587 set d_pwpasswd; eval $setvar
11588 ;;
11589esac
11590
11591: see if readdir and friends exist
11592set readdir d_readdir
11593eval $inlibc
11594set seekdir d_seekdir
11595eval $inlibc
11596set telldir d_telldir
11597eval $inlibc
11598set rewinddir d_rewinddir
11599eval $inlibc
11600
11601: see if readlink exists
11602set readlink d_readlink
11603eval $inlibc
11604
4e0554ec
JH
11605: see if readv exists
11606set readv d_readv
11607eval $inlibc
11608
11609: see if recvmsg exists
11610set recvmsg d_recvmsg
11611eval $inlibc
11612
b4eb6b3d
JH
11613: see if rename exists
11614set rename d_rename
11615eval $inlibc
11616
11617: see if rmdir exists
11618set rmdir d_rmdir
11619eval $inlibc
11620
11621: see if memory.h is available.
11622val=''
11623set memory.h val
11624eval $inhdr
11625
11626: See if it conflicts with string.h
11627case "$val" in
11628$define)
11629 case "$strings" in
11630 '') ;;
11631 *)
11632 $cppstdin $cppflags $cppminus < $strings > mem.h
11633 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11634 echo " "
11635 echo "We won't be including <memory.h>."
11636 val="$undef"
11637 fi
11638 $rm -f mem.h
11639 ;;
11640 esac
11641esac
11642set i_memory
11643eval $setvar
11644
11645: can bcopy handle overlapping blocks?
b6cc3bc4 11646echo " "
b4eb6b3d 11647val="$undef"
b6cc3bc4
AD
11648case "$d_memmove" in
11649"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11650*) case "$d_bcopy" in
11651 "$define")
11652 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11653 $cat >try.c <<EOCP
b4eb6b3d
JH
11654#$i_memory I_MEMORY
11655#$i_stdlib I_STDLIB
11656#$i_string I_STRING
11657#$i_unistd I_UNISTD
11658EOCP
11659 $cat >>try.c <<'EOCP'
11660#include <stdio.h>
11661#ifdef I_MEMORY
11662# include <memory.h>
11663#endif
11664#ifdef I_STDLIB
11665# include <stdlib.h>
11666#endif
11667#ifdef I_STRING
11668# include <string.h>
11669#else
11670# include <strings.h>
11671#endif
11672#ifdef I_UNISTD
11673# include <unistd.h> /* Needed for NetBSD */
11674#endif
11675int main()
11676{
11677char buf[128], abc[128];
11678char *b;
11679int len;
11680int off;
11681int align;
11682
b6cc3bc4
AD
11683/* Copy "abcde..." string to char abc[] so that gcc doesn't
11684 try to store the string in read-only memory. */
b4eb6b3d
JH
11685bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11686
11687for (align = 7; align >= 0; align--) {
11688 for (len = 36; len; len--) {
11689 b = buf+align;
11690 bcopy(abc, b, len);
11691 for (off = 1; off <= len; off++) {
11692 bcopy(b, b+off, len);
11693 bcopy(b+off, b, len);
11694 if (bcmp(b, abc, len))
11695 exit(1);
11696 }
11697 }
11698}
11699exit(0);
11700}
11701EOCP
b6cc3bc4
AD
11702 set try
11703 if eval $compile_ok; then
11704 if ./try 2>/dev/null; then
11705 echo "Yes, it can."
11706 val="$define"
11707 else
11708 echo "It can't, sorry."
11709 fi
b4eb6b3d 11710 else
b6cc3bc4 11711 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11712 fi
b6cc3bc4
AD
11713 ;;
11714 esac
11715 $rm -f try.* try core
b4eb6b3d
JH
11716 ;;
11717esac
b4eb6b3d
JH
11718set d_safebcpy
11719eval $setvar
11720
11721: can memcpy handle overlapping blocks?
b6cc3bc4 11722echo " "
b4eb6b3d 11723val="$undef"
b6cc3bc4
AD
11724case "$d_memmove" in
11725"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11726*) case "$d_memcpy" in
11727 "$define")
11728 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11729 $cat >try.c <<EOCP
b4eb6b3d
JH
11730#$i_memory I_MEMORY
11731#$i_stdlib I_STDLIB
11732#$i_string I_STRING
11733#$i_unistd I_UNISTD
11734EOCP
11735 $cat >>try.c <<'EOCP'
11736#include <stdio.h>
11737#ifdef I_MEMORY
11738# include <memory.h>
11739#endif
11740#ifdef I_STDLIB
11741# include <stdlib.h>
11742#endif
11743#ifdef I_STRING
11744# include <string.h>
11745#else
11746# include <strings.h>
11747#endif
11748#ifdef I_UNISTD
11749# include <unistd.h> /* Needed for NetBSD */
11750#endif
11751int main()
11752{
11753char buf[128], abc[128];
11754char *b;
11755int len;
11756int off;
11757int align;
11758
11759/* Copy "abcde..." string to char abc[] so that gcc doesn't
11760 try to store the string in read-only memory. */
11761memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11762
11763for (align = 7; align >= 0; align--) {
11764 for (len = 36; len; len--) {
11765 b = buf+align;
11766 memcpy(b, abc, len);
11767 for (off = 1; off <= len; off++) {
11768 memcpy(b+off, b, len);
11769 memcpy(b, b+off, len);
11770 if (memcmp(b, abc, len))
11771 exit(1);
11772 }
11773 }
11774}
11775exit(0);
11776}
11777EOCP
b6cc3bc4
AD
11778 set try
11779 if eval $compile_ok; then
11780 if ./try 2>/dev/null; then
11781 echo "Yes, it can."
11782 val="$define"
11783 else
11784 echo "It can't, sorry."
11785 fi
b4eb6b3d 11786 else
b6cc3bc4 11787 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11788 fi
b6cc3bc4
AD
11789 ;;
11790 esac
11791 $rm -f try.* try core
b4eb6b3d
JH
11792 ;;
11793esac
b4eb6b3d
JH
11794set d_safemcpy
11795eval $setvar
11796
11797: can memcmp be trusted to compare relative magnitude?
11798val="$undef"
11799case "$d_memcmp" in
11800"$define")
11801 echo " "
11802 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11803 $cat >try.c <<EOCP
11804#$i_memory I_MEMORY
11805#$i_stdlib I_STDLIB
11806#$i_string I_STRING
11807#$i_unistd I_UNISTD
11808EOCP
11809 $cat >>try.c <<'EOCP'
11810#include <stdio.h>
11811#ifdef I_MEMORY
11812# include <memory.h>
11813#endif
11814#ifdef I_STDLIB
11815# include <stdlib.h>
11816#endif
11817#ifdef I_STRING
11818# include <string.h>
11819#else
11820# include <strings.h>
11821#endif
11822#ifdef I_UNISTD
11823# include <unistd.h> /* Needed for NetBSD */
11824#endif
11825int main()
11826{
11827char a = -1;
11828char b = 0;
11829if ((a < b) && memcmp(&a, &b, 1) < 0)
11830 exit(1);
11831exit(0);
11832}
11833EOCP
11834 set try
11835 if eval $compile_ok; then
5440bc8e 11836 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11837 echo "Yes, it can."
11838 val="$define"
11839 else
11840 echo "No, it can't (it uses signed chars)."
11841 fi
11842 else
11843 echo "(I can't compile the test program, so we'll assume not...)"
11844 fi
11845 ;;
11846esac
11847$rm -f try.* try core
11848set d_sanemcmp
11849eval $setvar
11850
ef9f17be
JH
11851: see if prototype for sbrk is available
11852echo " "
11853set d_sbrkproto sbrk $i_unistd unistd.h
11854eval $hasproto
11855
b4eb6b3d
JH
11856: see if select exists
11857set select d_select
11858eval $inlibc
11859
11860: see if semctl exists
11861set semctl d_semctl
11862eval $inlibc
11863
11864: see if semget exists
11865set semget d_semget
11866eval $inlibc
11867
11868: see if semop exists
11869set semop d_semop
11870eval $inlibc
11871
11872: see how much of the 'sem*(2)' library is present.
11873h_sem=true
11874echo " "
11875case "$d_semctl$d_semget$d_semop" in
11876*"$undef"*) h_sem=false;;
11877esac
11878case "$osname" in
11879freebsd)
11880 case "`ipcs 2>&1`" in
11881 "SVID messages"*"not configured"*)
11882 echo "Your $osname does not have the sem*(2) configured." >&4
11883 h_sem=false
11884 val="$undef"
11885 set semctl d_semctl
11886 eval $setvar
11887 set semget d_semget
11888 eval $setvar
11889 set semop d_semop
11890 eval $setvar
11891 ;;
11892 esac
11893 ;;
11894esac
11895: we could also check for sys/ipc.h ...
11896if $h_sem && $test `./findhdr sys/sem.h`; then
11897 echo "You have the full sem*(2) library." >&4
11898 val="$define"
11899else
11900 echo "You don't have the full sem*(2) library." >&4
11901 val="$undef"
11902fi
11903set d_sem
11904eval $setvar
11905
11906: see whether sys/sem.h defines union semun
11907echo " "
11908$cat > try.c <<'END'
11909#include <sys/types.h>
11910#include <sys/ipc.h>
11911#include <sys/sem.h>
11912int main () { union semun semun; semun.buf = 0; }
11913END
11914set try
11915if eval $compile; then
11916 echo "You have union semun in <sys/sem.h>." >&4
11917 val="$define"
11918else
11919 echo "You do not have union semun in <sys/sem.h>." >&4
11920 val="$undef"
11921fi
11922$rm -f try try.c try.h
11923set d_union_semun
11924eval $setvar
11925
11926: see how to do semctl IPC_STAT
11927case "$d_sem" in
11928$define)
11929 : see whether semctl IPC_STAT can use union semun
11930 echo " "
11931 $cat > try.h <<END
11932#ifndef S_IRUSR
11933# ifdef S_IREAD
11934# define S_IRUSR S_IREAD
11935# define S_IWUSR S_IWRITE
11936# define S_IXUSR S_IEXEC
11937# else
11938# define S_IRUSR 0400
11939# define S_IWUSR 0200
11940# define S_IXUSR 0100
11941# endif
11942# define S_IRGRP (S_IRUSR>>3)
11943# define S_IWGRP (S_IWUSR>>3)
11944# define S_IXGRP (S_IXUSR>>3)
11945# define S_IROTH (S_IRUSR>>6)
11946# define S_IWOTH (S_IWUSR>>6)
11947# define S_IXOTH (S_IXUSR>>6)
11948#endif
11949#ifndef S_IRWXU
11950# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11951# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11952# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11953#endif
11954END
11955
11956 $cat > try.c <<END
11957#include <sys/types.h>
11958#include <sys/ipc.h>
11959#include <sys/sem.h>
11960#include <sys/stat.h>
11961#include <stdio.h>
11962#include <errno.h>
11963#include "try.h"
11964#ifndef errno
11965extern int errno;
11966#endif
11967#$d_union_semun HAS_UNION_SEMUN
11968int main() {
11969 union semun
11970#ifndef HAS_UNION_SEMUN
11971 {
11972 int val;
11973 struct semid_ds *buf;
11974 unsigned short *array;
11975 }
11976#endif
11977 arg;
11978 int sem, st;
11979
11980#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11981 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11982 if (sem > -1) {
11983 struct semid_ds argbuf;
11984 arg.buf = &argbuf;
11985# ifdef IPC_STAT
11986 st = semctl(sem, 0, IPC_STAT, arg);
11987 if (st == 0)
11988 printf("semun\n");
11989 else
11990# endif /* IPC_STAT */
11991 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11992# ifdef IPC_RMID
11993 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11994# endif /* IPC_RMID */
11995 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11996 } else
11997#endif /* IPC_PRIVATE && ... */
11998 printf("semget failed: errno = %d\n", errno);
11999 return 0;
12000}
12001END
12002 val="$undef"
12003 set try
12004 if eval $compile; then
5440bc8e 12005 xxx=`$run ./try`
b4eb6b3d
JH
12006 case "$xxx" in
12007 semun) val="$define" ;;
12008 esac
12009 fi
12010 $rm -f try try.c
12011 set d_semctl_semun
12012 eval $setvar
12013 case "$d_semctl_semun" in
12014 $define)
12015 echo "You can use union semun for semctl IPC_STAT." >&4
12016 also='also'
12017 ;;
12018 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12019 also=''
12020 ;;
12021 esac
12022
12023 : see whether semctl IPC_STAT can use struct semid_ds pointer
12024 $cat > try.c <<'END'
12025#include <sys/types.h>
12026#include <sys/ipc.h>
12027#include <sys/sem.h>
12028#include <sys/stat.h>
12029#include "try.h"
12030#include <stdio.h>
12031#include <errno.h>
12032#ifndef errno
12033extern int errno;
12034#endif
12035int main() {
12036 struct semid_ds arg;
12037 int sem, st;
12038
12039#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12040 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12041 if (sem > -1) {
12042# ifdef IPC_STAT
12043 st = semctl(sem, 0, IPC_STAT, &arg);
12044 if (st == 0)
12045 printf("semid_ds\n");
12046 else
12047# endif /* IPC_STAT */
12048 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12049# ifdef IPC_RMID
12050 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12051# endif /* IPC_RMID */
12052 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12053 } else
12054#endif /* IPC_PRIVATE && ... */
12055 printf("semget failed: errno = %d\n", errno);
12056
12057 return 0;
12058}
12059END
12060 val="$undef"
12061 set try
12062 if eval $compile; then
5440bc8e 12063 xxx=`$run ./try`
b4eb6b3d
JH
12064 case "$xxx" in
12065 semid_ds) val="$define" ;;
12066 esac
12067 fi
12068 $rm -f try try.c
12069 set d_semctl_semid_ds
12070 eval $setvar
12071 case "$d_semctl_semid_ds" in
12072 $define)
12073 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12074 ;;
12075 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12076 ;;
12077 esac
12078 $rm -f try.h
12079 ;;
12080*) val="$undef"
12081
12082 # We do not have the full sem*(2) library, so assume we can not
12083 # use either.
12084
12085 set d_semctl_semun
12086 eval $setvar
12087
12088 set d_semctl_semid_ds
12089 eval $setvar
12090 ;;
12091esac
12092
4e0554ec
JH
12093: see if sendmsg exists
12094set sendmsg d_sendmsg
12095eval $inlibc
12096
b4eb6b3d
JH
12097: see if setegid exists
12098set setegid d_setegid
12099eval $inlibc
12100
12101: see if seteuid exists
12102set seteuid d_seteuid
12103eval $inlibc
12104
12105: see if setgrent exists
12106set setgrent d_setgrent
12107eval $inlibc
12108
12109: see if sethostent exists
12110set sethostent d_sethent
12111eval $inlibc
12112
4e0554ec
JH
12113: see if setitimer exists
12114set setitimer d_setitimer
12115eval $inlibc
12116
b4eb6b3d
JH
12117: see if setlinebuf exists
12118set setlinebuf d_setlinebuf
12119eval $inlibc
12120
12121: see if setlocale exists
12122set setlocale d_setlocale
12123eval $inlibc
12124
12125: see if setnetent exists
12126set setnetent d_setnent
12127eval $inlibc
12128
12129: see if setprotoent exists
12130set setprotoent d_setpent
12131eval $inlibc
12132
12133: see if setpgid exists
12134set setpgid d_setpgid
12135eval $inlibc
12136
12137: see if setpgrp2 exists
12138set setpgrp2 d_setpgrp2
12139eval $inlibc
12140
12141: see if setpriority exists
12142set setpriority d_setprior
12143eval $inlibc
12144
12145: see if setproctitle exists
12146set setproctitle d_setproctitle
12147eval $inlibc
12148
12149: see if setpwent exists
12150set setpwent d_setpwent
12151eval $inlibc
12152
12153: see if setregid exists
12154set setregid d_setregid
12155eval $inlibc
12156set setresgid d_setresgid
12157eval $inlibc
12158
12159: see if setreuid exists
12160set setreuid d_setreuid
12161eval $inlibc
12162set setresuid d_setresuid
12163eval $inlibc
12164
12165: see if setrgid exists
12166set setrgid d_setrgid
12167eval $inlibc
12168
12169: see if setruid exists
12170set setruid d_setruid
12171eval $inlibc
12172
12173: see if setservent exists
12174set setservent d_setsent
12175eval $inlibc
12176
12177: see if setsid exists
12178set setsid d_setsid
12179eval $inlibc
12180
12181: see if setvbuf exists
12182set setvbuf d_setvbuf
12183eval $inlibc
12184
12185: see if sfio.h is available
12186set sfio.h i_sfio
12187eval $inhdr
12188
12189
12190: see if sfio library is available
12191case "$i_sfio" in
12192$define)
12193 val=''
12194 set sfreserve val
12195 eval $inlibc
12196 ;;
12197*)
12198 val="$undef"
12199 ;;
12200esac
12201: Ok, but do we want to use it.
12202case "$val" in
12203$define)
12204 case "$usesfio" in
12205 true|$define|[yY]*) dflt='y';;
12206 *) dflt='n';;
12207 esac
12208 echo "$package can use the sfio library, but it is experimental."
12209 case "$useperlio" in
12210 "$undef")
12211 echo "For sfio also the PerlIO abstraction layer is needed."
12212 echo "Earlier you said you wouldn't want that."
12213 ;;
12214 esac
12215 rp="You seem to have sfio available, do you want to try using it?"
12216 . ./myread
12217 case "$ans" in
12218 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12219 useperlio="$define"
12220 val="$define"
12221 ;;
12222 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12223 val="$undef"
b4eb6b3d
JH
12224 ;;
12225 esac
12226 ;;
12227*) case "$usesfio" in
12228 true|$define|[yY]*)
12229 echo "Sorry, cannot find sfio on this machine." >&4
12230 echo "Ignoring your setting of usesfio=$usesfio." >&4
12231 val="$undef"
12232 ;;
12233 esac
12234 ;;
12235esac
12236set d_sfio
12237eval $setvar
12238case "$d_sfio" in
12239$define) usesfio='true';;
12240*) usesfio='false';;
12241esac
3659ebf1
JH
12242case "$d_sfio" in
12243$define) ;;
12244*) : Remove sfio from list of libraries to use
7483f793
JH
12245 case "$libs" in
12246 *-lsfio*)
12247 echo "Removing unneeded -lsfio from library list" >&4
12248 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12249 shift
12250 libs="$*"
12251 echo "libs = $libs" >&4
12252 ;;
12253 esac
3659ebf1
JH
12254;;
12255esac
12256
b4eb6b3d
JH
12257
12258: see if shmctl exists
12259set shmctl d_shmctl
12260eval $inlibc
12261
12262: see if shmget exists
12263set shmget d_shmget
12264eval $inlibc
12265
12266: see if shmat exists
12267set shmat d_shmat
12268eval $inlibc
12269: see what shmat returns
12270case "$d_shmat" in
12271"$define")
12272 $cat >shmat.c <<'END'
12273#include <sys/shm.h>
12274void *shmat();
12275END
12276 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12277 shmattype='void *'
12278 else
12279 shmattype='char *'
12280 fi
12281 echo "and it returns ($shmattype)." >&4
12282 : see if a prototype for shmat is available
12283 xxx=`./findhdr sys/shm.h`
12284 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12285 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12286 val="$define"
12287 else
12288 val="$undef"
12289 fi
12290 $rm -f shmat.[co]
12291 ;;
12292*)
12293 val="$undef"
12294 ;;
12295esac
12296set d_shmatprototype
12297eval $setvar
12298
12299: see if shmdt exists
12300set shmdt d_shmdt
12301eval $inlibc
12302
12303: see how much of the 'shm*(2)' library is present.
12304h_shm=true
12305echo " "
12306case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12307*"$undef"*) h_shm=false;;
12308esac
12309case "$osname" in
12310freebsd)
12311 case "`ipcs 2>&1`" in
12312 "SVID shared memory"*"not configured"*)
12313 echo "Your $osname does not have the shm*(2) configured." >&4
12314 h_shm=false
12315 val="$undef"
12316 set shmctl d_shmctl
12317 evat $setvar
12318 set shmget d_shmget
12319 evat $setvar
12320 set shmat d_shmat
12321 evat $setvar
12322 set shmdt d_shmdt
12323 evat $setvar
12324 ;;
12325 esac
12326 ;;
12327esac
12328: we could also check for sys/ipc.h ...
12329if $h_shm && $test `./findhdr sys/shm.h`; then
12330 echo "You have the full shm*(2) library." >&4
12331 val="$define"
12332else
12333 echo "You don't have the full shm*(2) library." >&4
12334 val="$undef"
12335fi
12336set d_shm
12337eval $setvar
12338
12339echo " "
12340: see if we have sigaction
12341if set sigaction val -f d_sigaction; eval $csym; $val; then
12342 echo 'sigaction() found.' >&4
12343 $cat > try.c <<'EOP'
12344#include <stdio.h>
12345#include <sys/types.h>
12346#include <signal.h>
12347int main()
12348{
12349 struct sigaction act, oact;
12350 act.sa_flags = 0;
12351 oact.sa_handler = 0;
12352 /* so that act and oact are used */
12353 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12354}
12355EOP
12356 set try
12357 if eval $compile_ok; then
12358 val="$define"
12359 else
12360 echo "But you don't seem to have a useable struct sigaction." >&4
12361 val="$undef"
12362 fi
12363else
12364 echo 'sigaction NOT found.' >&4
12365 val="$undef"
12366fi
12367set d_sigaction; eval $setvar
12368$rm -f try try$_o try.c
12369
983dbef6
JH
12370: see if sigprocmask exists
12371set sigprocmask d_sigprocmask
12372eval $inlibc
12373
b4eb6b3d
JH
12374: see if sigsetjmp exists
12375echo " "
12376case "$d_sigsetjmp" in
12377'')
12378 $cat >try.c <<'EOP'
12379#include <setjmp.h>
12380sigjmp_buf env;
12381int set = 1;
12382int main()
12383{
12384 if (sigsetjmp(env,1))
12385 exit(set);
12386 set = 0;
12387 siglongjmp(env, 1);
12388 exit(1);
12389}
12390EOP
12391 set try
12392 if eval $compile; then
5440bc8e 12393 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12394 echo "POSIX sigsetjmp found." >&4
12395 val="$define"
12396 else
12397 $cat >&4 <<EOM
12398Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12399I'll ignore them.
12400EOM
12401 val="$undef"
12402 fi
12403 else
12404 echo "sigsetjmp not found." >&4
12405 val="$undef"
12406 fi
12407 ;;
12408*) val="$d_sigsetjmp"
12409 case "$d_sigsetjmp" in
12410 $define) echo "POSIX sigsetjmp found." >&4;;
12411 $undef) echo "sigsetjmp not found." >&4;;
12412 esac
12413 ;;
12414esac
12415set d_sigsetjmp
12416eval $setvar
12417$rm -f try.c try
12418
49a78c82
JH
12419: see if sockatmark exists
12420set sockatmark d_sockatmark
12421eval $inlibc
12422
2ef53570
JH
12423: see if prototype for sockatmark is available
12424echo " "
12425set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12426eval $hasproto
12427
b4eb6b3d
JH
12428: see if socks5_init exists
12429set socks5_init d_socks5_init
12430eval $inlibc
12431
eef837ea
JH
12432: see if prototype for setresgid is available
12433echo " "
12434set d_sresgproto setresgid $i_unistd unistd.h
12435eval $hasproto
12436
640374d0
JH
12437: see if prototype for setresuid is available
12438echo " "
12439set d_sresuproto setresuid $i_unistd unistd.h
12440eval $hasproto
12441
b4eb6b3d
JH
12442: see if sys/stat.h is available
12443set sys/stat.h i_sysstat
12444eval $inhdr
12445
12446
12447: see if stat knows about block sizes
12448echo " "
12449echo "Checking to see if your struct stat has st_blocks field..." >&4
12450set d_statblks stat st_blocks $i_sysstat sys/stat.h
12451eval $hasfield
12452
12453
12454: see if this is a sys/vfs.h system
12455set sys/vfs.h i_sysvfs
12456eval $inhdr
12457
12458
12459: see if this is a sys/statfs.h system
12460set sys/statfs.h i_sysstatfs
12461eval $inhdr
12462
12463
12464echo " "
12465echo "Checking to see if your system supports struct statfs..." >&4
12466set 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
12467eval $hasstruct
12468case "$d_statfs_s" in
12469"$define") echo "Yes, it does." ;;
12470*) echo "No, it doesn't." ;;
12471esac
12472
12473
12474
12475: see if struct statfs knows about f_flags
12476case "$d_statfs_s" in
12477define)
12478 echo " "
12479 echo "Checking to see if your struct statfs has f_flags field..." >&4
12480 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
12481 eval $hasfield
12482 ;;
12483*) val="$undef"
12484 set d_statfs_f_flags
12485 eval $setvar
12486 ;;
12487esac
12488case "$d_statfs_f_flags" in
12489"$define") echo "Yes, it does." ;;
12490*) echo "No, it doesn't." ;;
12491esac
12492
12493: see if _ptr and _cnt from stdio act std
12494echo " "
80f36755
NC
12495
12496if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12497 echo "(Looks like you have stdio.h from BSD.)"
12498 case "$stdio_ptr" in
12499 '') stdio_ptr='((fp)->_p)'
12500 ptr_lval=$define
12501 ;;
12502 *) ptr_lval=$d_stdio_ptr_lval;;
12503 esac
12504 case "$stdio_cnt" in
12505 '') stdio_cnt='((fp)->_r)'
12506 cnt_lval=$define
12507 ;;
12508 *) cnt_lval=$d_stdio_cnt_lval;;
12509 esac
12510 case "$stdio_base" in
12511 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12512 esac
12513 case "$stdio_bufsiz" in
12514 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12515 esac
12516elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12517 echo "(Looks like you have stdio.h from Linux.)"
12518 case "$stdio_ptr" in
12519 '') stdio_ptr='((fp)->_IO_read_ptr)'
12520 ptr_lval=$define
12521 ;;
12522 *) ptr_lval=$d_stdio_ptr_lval;;
12523 esac
12524 case "$stdio_cnt" in
12525 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12526 cnt_lval=$undef
12527 ;;
12528 *) cnt_lval=$d_stdio_cnt_lval;;
12529 esac
12530 case "$stdio_base" in
12531 '') stdio_base='((fp)->_IO_read_base)';;
12532 esac
12533 case "$stdio_bufsiz" in
12534 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12535 esac
12536else
12537 case "$stdio_ptr" in
12538 '') stdio_ptr='((fp)->_ptr)'
12539 ptr_lval=$define
12540 ;;
12541 *) ptr_lval=$d_stdio_ptr_lval;;
12542 esac
12543 case "$stdio_cnt" in
12544 '') stdio_cnt='((fp)->_cnt)'
12545 cnt_lval=$define
12546 ;;
12547 *) cnt_lval=$d_stdio_cnt_lval;;
12548 esac
12549 case "$stdio_base" in
12550 '') stdio_base='((fp)->_base)';;
12551 esac
12552 case "$stdio_bufsiz" in
12553 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12554 esac
12555fi
80f36755 12556
b4eb6b3d
JH
12557: test whether _ptr and _cnt really work
12558echo "Checking how std your stdio is..." >&4
12559$cat >try.c <<EOP
12560#include <stdio.h>
12561#define FILE_ptr(fp) $stdio_ptr
12562#define FILE_cnt(fp) $stdio_cnt
12563int main() {
12564 FILE *fp = fopen("try.c", "r");
12565 char c = getc(fp);
12566 if (
12567 18 <= FILE_cnt(fp) &&
12568 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12569 )
12570 exit(0);
12571 exit(1);
12572}
12573EOP
12574val="$undef"
12575set try
5440bc8e
JH
12576if eval $compile && $to try.c; then
12577 if $run ./try; then
b4eb6b3d
JH
12578 echo "Your stdio acts pretty std."
12579 val="$define"
12580 else
12581 echo "Your stdio isn't very std."
12582 fi
12583else
12584 echo "Your stdio doesn't appear very std."
12585fi
12586$rm -f try.c try
12587set d_stdstdio
12588eval $setvar
12589
12590: Can _ptr be used as an lvalue?
12591case "$d_stdstdio$ptr_lval" in
12592$define$define) val=$define ;;
12593*) val=$undef ;;
12594esac
12595set d_stdio_ptr_lval
12596eval $setvar
12597
12598: Can _cnt be used as an lvalue?
12599case "$d_stdstdio$cnt_lval" in
12600$define$define) val=$define ;;
12601*) val=$undef ;;
12602esac
12603set d_stdio_cnt_lval
12604eval $setvar
12605
a7ffa9b9
NC
12606
12607: test whether setting _ptr sets _cnt as a side effect
12608d_stdio_ptr_lval_sets_cnt="$undef"
12609d_stdio_ptr_lval_nochange_cnt="$undef"
12610case "$d_stdio_ptr_lval$d_stdstdio" in
12611$define$define)
12612 echo "Checking to see what happens if we set the stdio ptr..." >&4
12613$cat >try.c <<EOP
12614#include <stdio.h>
12615/* Can we scream? */
12616/* Eat dust sed :-) */
c1d9e6fa 12617/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12618#define FILE_ptr(fp) $stdio_ptr
12619#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12620#include <sys/types.h>
a7ffa9b9
NC
12621int main() {
12622 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12623 int c;
a7ffa9b9
NC
12624 char *ptr;
12625 size_t cnt;
c1d9e6fa
JH
12626 if (!fp) {
12627 puts("Fail even to read");
12628 exit(1);
12629 }
12630 c = getc(fp); /* Read away the first # */
12631 if (c == EOF) {
12632 puts("Fail even to read");
12633 exit(1);
12634 }
a7ffa9b9
NC
12635 if (!(
12636 18 <= FILE_cnt(fp) &&
12637 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12638 )) {
12639 puts("Fail even to read");
12640 exit (1);
12641 }
c1d9e6fa
JH
12642 ptr = (char*) FILE_ptr(fp);
12643 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12644
c1d9e6fa 12645 FILE_ptr(fp) += 42;
a7ffa9b9 12646
c1d9e6fa 12647 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12648 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12649 exit (1);
12650 }
12651 if (FILE_cnt(fp) <= 20) {
12652 printf ("Fail (<20 chars to test)");
12653 exit (1);
12654 }
12655 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12656 puts("Fail compare");
12657 exit (1);
12658 }
12659 if (cnt == FILE_cnt(fp)) {
12660 puts("Pass_unchanged");
12661 exit (0);
12662 }
12663 if (FILE_cnt(fp) == (cnt - 42)) {
12664 puts("Pass_changed");
12665 exit (0);
12666 }
12667 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12668 return 1;
12669
12670}
12671EOP
12672 set try
5440bc8e
JH
12673 if eval $compile && $to try.c; then
12674 case `$run ./try` in
a7ffa9b9 12675 Pass_changed)
2e32dcfe 12676 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12677 d_stdio_ptr_lval_sets_cnt="$define" ;;
12678 Pass_unchanged)
12679 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12680 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12681 Fail*)
12682 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12683 *)
12684 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12685 esac
12686 else
12687 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12688 fi
12689 $rm -f try.c try
12690 ;;
12691esac
12692
b4eb6b3d
JH
12693: see if _base is also standard
12694val="$undef"
12695case "$d_stdstdio" in
12696$define)
12697 $cat >try.c <<EOP
12698#include <stdio.h>
12699#define FILE_base(fp) $stdio_base
12700#define FILE_bufsiz(fp) $stdio_bufsiz
12701int main() {
12702 FILE *fp = fopen("try.c", "r");
12703 char c = getc(fp);
12704 if (
12705 19 <= FILE_bufsiz(fp) &&
12706 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12707 )
12708 exit(0);
12709 exit(1);
12710}
12711EOP
12712 set try
5440bc8e
JH
12713 if eval $compile && $to try.c; then
12714 if $run ./try; then
b4eb6b3d
JH
12715 echo "And its _base field acts std."
12716 val="$define"
12717 else
12718 echo "But its _base field isn't std."
12719 fi
12720 else
12721 echo "However, it seems to be lacking the _base field."
12722 fi
12723 $rm -f try.c try
12724 ;;
12725esac
12726set d_stdiobase
12727eval $setvar
12728
12729$cat >&4 <<EOM
12730Checking how to access stdio streams by file descriptor number...
12731EOM
12732case "$stdio_stream_array" in
12733'') $cat >try.c <<EOCP
12734#include <stdio.h>
12735int main() {
12736 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12737 printf("yes\n");
12738}
12739EOCP
12740 for s in _iob __iob __sF
12741 do
12742 set try -DSTDIO_STREAM_ARRAY=$s
12743 if eval $compile; then
5440bc8e 12744 case "`$run ./try`" in
b4eb6b3d
JH
12745 yes) stdio_stream_array=$s; break ;;
12746 esac
12747 fi
12748 done
12749 $rm -f try.* try$exe_ext
12750esac
12751case "$stdio_stream_array" in
12752'') $cat >&4 <<EOM
12753I can't figure out how to access stdio streams by file descriptor number.
12754EOM
12755 d_stdio_stream_array="$undef"
12756 ;;
12757*) $cat >&4 <<EOM
12758You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12759EOM
12760 d_stdio_stream_array="$define"
12761 ;;
12762esac
12763
12764: see if strcoll exists
12765set strcoll d_strcoll
12766eval $inlibc
12767
12768: check for structure copying
12769echo " "
12770echo "Checking to see if your C compiler can copy structs..." >&4
12771$cat >try.c <<'EOCP'
12772int main()
12773{
12774 struct blurfl {
12775 int dyick;
12776 } foo, bar;
12777
12778 foo = bar;
12779}
12780EOCP
12781if $cc -c try.c >/dev/null 2>&1 ; then
12782 val="$define"
12783 echo "Yup, it can."
12784else
12785 val="$undef"
12786 echo "Nope, it can't."
12787fi
12788set d_strctcpy
12789eval $setvar
12790$rm -f try.*
12791
12792: see if strerror and/or sys_errlist[] exist
12793echo " "
12794if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12795 if set strerror val -f d_strerror; eval $csym; $val; then
12796 echo 'strerror() found.' >&4
12797 d_strerror="$define"
12798 d_strerrm='strerror(e)'
12799 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12800 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12801 d_syserrlst="$define"
12802 else
12803 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12804 d_syserrlst="$undef"
12805 fi
12806 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12807 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12808 echo 'strerror() found in string header.' >&4
12809 d_strerror="$define"
12810 d_strerrm='strerror(e)'
12811 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12812 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12813 d_syserrlst="$define"
12814 else
12815 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12816 d_syserrlst="$undef"
12817 fi
12818 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12819 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12820 d_strerror="$undef"
12821 d_syserrlst="$define"
12822 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12823 else
12824 echo 'strerror() and sys_errlist[] NOT found.' >&4
12825 d_strerror="$undef"
12826 d_syserrlst="$undef"
12827 d_strerrm='"unknown"'
12828 fi
12829fi
12830
b3c85772
JH
12831: see if strftime exists
12832set strftime d_strftime
12833eval $inlibc
12834
b4eb6b3d
JH
12835: see if strtod exists
12836set strtod d_strtod
12837eval $inlibc
12838
12839: see if strtol exists
12840set strtol d_strtol
12841eval $inlibc
12842
12843: see if strtold exists
12844set strtold d_strtold
12845eval $inlibc
12846
12847: see if strtoll exists
12848set strtoll d_strtoll
12849eval $inlibc
12850
12851case "$d_longlong-$d_strtoll" in
12852"$define-$define")
12853 $cat <<EOM
12854Checking whether your strtoll() works okay...
12855EOM
12856 $cat >try.c <<'EOCP'
12857#include <errno.h>
12858#ifdef __hpux
12859#define strtoll __strtoll
12860#endif
e75931a7
YST
12861#ifdef __EMX__
12862#define strtoll _strtoll
12863#endif
b4eb6b3d
JH
12864#include <stdio.h>
12865extern long long int strtoll(char *s, char **, int);
12866static int bad = 0;
12867int check(char *s, long long ell, int een) {
12868 long long gll;
12869 errno = 0;
12870 gll = strtoll(s, 0, 10);
12871 if (!((gll == ell) && (errno == een)))
12872 bad++;
12873}
12874int main() {
12875 check(" 1", 1LL, 0);
12876 check(" 0", 0LL, 0);
12877 check("-1", -1LL, 0);
12878 check("-9223372036854775808", -9223372036854775808LL, 0);
12879 check("-9223372036854775808", -9223372036854775808LL, 0);
12880 check(" 9223372036854775807", 9223372036854775807LL, 0);
12881 check("-9223372036854775808", -9223372036854775808LL, 0);
12882 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12883 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12884 if (!bad)
12885 printf("ok\n");
12886}
12887EOCP
12888 set try
12889 if eval $compile; then
5440bc8e 12890 yyy=`$run ./try`
e75931a7 12891 case "$yyy" in
b4eb6b3d
JH
12892 ok) echo "Your strtoll() seems to be working okay." ;;
12893 *) cat <<EOM >&4
12894Your strtoll() doesn't seem to be working okay.
12895EOM
12896 d_strtoll="$undef"
12897 ;;
69eadf66 12898 esac
e75931a7
YST
12899 else
12900 echo "(I can't seem to compile the test program--assuming it doesn't)"
12901 d_strtoll="$undef"
b4eb6b3d
JH
12902 fi
12903 ;;
12904esac
12905
28e5dec8
JH
12906: see if strtoq exists
12907set strtoq d_strtoq
12908eval $inlibc
12909
b4eb6b3d
JH
12910: see if strtoul exists
12911set strtoul d_strtoul
12912eval $inlibc
12913
d0e6d399
NC
12914case "$d_strtoul" in
12915"$define")
12916 $cat <<EOM
12917Checking whether your strtoul() works okay...
12918EOM
12919 $cat >try.c <<'EOCP'
12920#include <errno.h>
12921#include <stdio.h>
12922extern unsigned long int strtoul(char *s, char **, int);
12923static int bad = 0;
12924void check(char *s, unsigned long eul, int een) {
12925 unsigned long gul;
12926 errno = 0;
12927 gul = strtoul(s, 0, 10);
12928 if (!((gul == eul) && (errno == een)))
12929 bad++;
12930}
12931int main() {
12932 check(" 1", 1L, 0);
12933 check(" 0", 0L, 0);
12934EOCP
12935 case "$longsize" in
12936 8)
12937 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12938 check("18446744073709551615", 18446744073709551615UL, 0);
12939 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12940#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12941 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12942 check("-18446744073709551614", 2, 0);
12943 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12944 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12945 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12946#endif
d0e6d399
NC
12947EOCP
12948 ;;
12949 4)
12950 $cat >>try.c <<'EOCP'
12951 check("4294967295", 4294967295UL, 0);
12952 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12953#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12954 check("-1", 4294967295UL, 0);
12955 check("-4294967294", 2, 0);
12956 check("-4294967295", 1, 0);
12957 check("-4294967296", 4294967295UL, ERANGE);
12958 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12959#endif
d0e6d399
NC
12960EOCP
12961 ;;
12962 *)
12963: Should we write these tests to be more portable by sprintf-ing
12964: ~0 and then manipulating that char string as input for strtol?
12965 ;;
12966 esac
12967 $cat >>try.c <<'EOCP'
12968 if (!bad)
12969 printf("ok\n");
12970 return 0;
12971}
12972EOCP
12973 set try
12974 if eval $compile; then
5440bc8e 12975 case "`$run ./try`" in
d0e6d399
NC
12976 ok) echo "Your strtoul() seems to be working okay." ;;
12977 *) cat <<EOM >&4
12978Your strtoul() doesn't seem to be working okay.
12979EOM
12980 d_strtoul="$undef"
12981 ;;
12982 esac
12983 fi
12984 ;;
12985esac
12986
b4eb6b3d
JH
12987: see if strtoull exists
12988set strtoull d_strtoull
12989eval $inlibc
12990
12991case "$d_longlong-$d_strtoull" in
12992"$define-$define")
12993 $cat <<EOM
12994Checking whether your strtoull() works okay...
12995EOM
12996 $cat >try.c <<'EOCP'
12997#include <errno.h>
12998#ifdef __hpux
12999#define strtoull __strtoull
13000#endif
13001#include <stdio.h>
13002extern unsigned long long int strtoull(char *s, char **, int);
13003static int bad = 0;
13004int check(char *s, long long eull, int een) {
13005 long long gull;
13006 errno = 0;
13007 gull = strtoull(s, 0, 10);
13008 if (!((gull == eull) && (errno == een)))
13009 bad++;
13010}
13011int main() {
d0e6d399
NC
13012 check(" 1", 1LL, 0);
13013 check(" 0", 0LL, 0);
13014 check("18446744073709551615", 18446744073709551615ULL, 0);
13015 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13016#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
13017 check("-1", 18446744073709551615ULL, 0);
13018 check("-18446744073709551614", 2LL, 0);
13019 check("-18446744073709551615", 1LL, 0);
13020 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13021 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13022#endif
b4eb6b3d
JH
13023 if (!bad)
13024 printf("ok\n");
13025}
13026EOCP
13027 set try
13028 if eval $compile; then
5440bc8e 13029 case "`$run ./try`" in
b4eb6b3d
JH
13030 ok) echo "Your strtoull() seems to be working okay." ;;
13031 *) cat <<EOM >&4
13032Your strtoull() doesn't seem to be working okay.
13033EOM
13034 d_strtoull="$undef"
13035 ;;
13036 esac
13037 fi
13038 ;;
13039esac
13040
13041: see if strtouq exists
13042set strtouq d_strtouq
13043eval $inlibc
13044
d0e6d399
NC
13045case "$d_strtouq" in
13046"$define")
13047 $cat <<EOM
13048Checking whether your strtouq() works okay...
13049EOM
13050 $cat >try.c <<'EOCP'
13051#include <errno.h>
13052#include <stdio.h>
13053extern unsigned long long int strtouq(char *s, char **, int);
13054static int bad = 0;
13055void check(char *s, unsigned long long eull, int een) {
13056 unsigned long long gull;
13057 errno = 0;
13058 gull = strtouq(s, 0, 10);
13059 if (!((gull == eull) && (errno == een)))
13060 bad++;
13061}
13062int main() {
13063 check(" 1", 1LL, 0);
13064 check(" 0", 0LL, 0);
13065 check("18446744073709551615", 18446744073709551615ULL, 0);
13066 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 13067#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
13068 check("-1", 18446744073709551615ULL, 0);
13069 check("-18446744073709551614", 2LL, 0);
13070 check("-18446744073709551615", 1LL, 0);
13071 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13072 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 13073#endif
d0e6d399
NC
13074 if (!bad)
13075 printf("ok\n");
13076 return 0;
13077}
13078EOCP
13079 set try
13080 if eval $compile; then
5440bc8e 13081 case "`$run ./try`" in
d0e6d399
NC
13082 ok) echo "Your strtouq() seems to be working okay." ;;
13083 *) cat <<EOM >&4
13084Your strtouq() doesn't seem to be working okay.
13085EOM
13086 d_strtouq="$undef"
13087 ;;
13088 esac
13089 fi
13090 ;;
13091esac
13092
b4eb6b3d
JH
13093: see if strxfrm exists
13094set strxfrm d_strxfrm
13095eval $inlibc
13096
13097: see if symlink exists
13098set symlink d_symlink
13099eval $inlibc
13100
13101: see if syscall exists
13102set syscall d_syscall
13103eval $inlibc
13104
2ef53570
JH
13105: see if prototype for syscall is available
13106echo " "
13107set d_syscallproto syscall $i_unistd unistd.h
13108eval $hasproto
13109
b4eb6b3d
JH
13110: see if sysconf exists
13111set sysconf d_sysconf
13112eval $inlibc
13113
13114: see if system exists
13115set system d_system
13116eval $inlibc
13117
13118: see if tcgetpgrp exists
13119set tcgetpgrp d_tcgetpgrp
13120eval $inlibc
13121
13122: see if tcsetpgrp exists
13123set tcsetpgrp d_tcsetpgrp
13124eval $inlibc
13125
13126: see if prototype for telldir is available
13127echo " "
13128set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13129eval $hasproto
13130
13131: see if this is a sys/times.h system
13132set sys/times.h i_systimes
13133eval $inhdr
13134
13135: see if times exists
13136echo " "
13137if set times val -f d_times; eval $csym; $val; then
13138 echo 'times() found.' >&4
13139 d_times="$define"
13140 inc=''
13141 case "$i_systimes" in
13142 "$define") inc='sys/times.h';;
13143 esac
13144 rp="What is the type returned by times() on this system?"
13145 set clock_t clocktype long stdio.h sys/types.h $inc
13146 eval $typedef_ask
13147else
13148 echo 'times() NOT found, hope that will do.' >&4
13149 d_times="$undef"
13150 clocktype='int'
13151fi
13152
13153: see if truncate exists
13154set truncate d_truncate
13155eval $inlibc
13156
13157: see if tzname[] exists
13158echo " "
13159if set tzname val -a d_tzname; eval $csym; $val; then
13160 val="$define"
13161 echo 'tzname[] found.' >&4
13162else
13163 val="$undef"
13164 echo 'tzname[] NOT found.' >&4
13165fi
13166set d_tzname
13167eval $setvar
13168
4e0554ec
JH
13169case "$osname" in
13170next|rhapsody|darwin) multiarch="$define" ;;
13171esac
13172case "$multiarch" in
13173''|[nN]*) multiarch="$undef" ;;
13174esac
13175
13176: check for ordering of bytes in a long
13177echo " "
5440bc8e 13178case "$usecrosscompile$multiarch" in
4e0554ec
JH
13179*$define*)
13180 $cat <<EOM
13181You seem to be either cross-compiling or doing a multiarchitecture build,
13182skipping the byteorder check.
13183
13184EOM
5440bc8e 13185 byteorder='ffff'
4e0554ec
JH
13186 ;;
13187*)
13188 case "$byteorder" in
13189 '')
13190 $cat <<'EOM'
13191In the following, larger digits indicate more significance. A big-endian
13192machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13193little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13194machines may have weird orders like 3412. A Cray will report 87654321,
13195an Alpha will report 12345678. If the test program works the default is
13196probably right.
13197I'm now running the test program...
13198EOM
13199 $cat >try.c <<'EOCP'
13200#include <stdio.h>
13201int main()
13202{
13203 int i;
13204 union {
13205 unsigned long l;
13206 char c[sizeof(long)];
13207 } u;
13208
13209 if (sizeof(long) > 4)
13210 u.l = (0x08070605L << 32) | 0x04030201L;
13211 else
13212 u.l = 0x04030201L;
13213 for (i = 0; i < sizeof(long); i++)
13214 printf("%c", u.c[i]+'0');
13215 printf("\n");
13216 exit(0);
13217}
13218EOCP
13219 xxx_prompt=y
13220 set try
13221 if eval $compile && ./try > /dev/null; then
5440bc8e 13222 dflt=`$run ./try`
4e0554ec
JH
13223 case "$dflt" in
13224 [1-4][1-4][1-4][1-4]|12345678|87654321)
13225 echo "(The test program ran ok.)"
13226 echo "byteorder=$dflt"
13227 xxx_prompt=n
13228 ;;
13229 ????|????????) echo "(The test program ran ok.)" ;;
13230 *) echo "(The test program didn't run right for some reason.)" ;;
13231 esac
13232 else
13233 dflt='4321'
13234 cat <<'EOM'
13235(I can't seem to compile the test program. Guessing big-endian...)
13236EOM
13237 fi
13238 case "$xxx_prompt" in
13239 y)
13240 rp="What is the order of bytes in a long?"
13241 . ./myread
13242 byteorder="$ans"
13243 ;;
13244 *) byteorder=$dflt
13245 ;;
13246 esac
13247 ;;
13248 esac
13249 $rm -f try.c try
13250 ;;
13251esac
13252
13253
13254$cat <<EOM
13255
13256Checking to see whether you can access character data unalignedly...
13257EOM
13258$cat >try.c <<EOCP
13259#include <stdio.h>
13260#define U32 $u32type
13261#define BYTEORDER $byteorder
13262int main() {
13263#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13264 U8 buf[] = "\0\0\0\1\0\0\0\0";
13265 U32 *up;
13266 int i;
13267
13268 if (sizeof(U32) != 4) {
13269 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13270 exit(1);
13271 }
13272
13273 fflush(stdout);
13274
13275 for (i = 0; i < 4; i++) {
13276 up = (U32*)(buf + i);
13277 if (! ((*up == 1 << (8*i)) || /* big-endian */
13278 (*up == 1 << (8*(3-i))) /* little-endian */
13279 )
13280 )
13281 {
13282 printf("read failed (%x)\n", *up);
13283 exit(2);
13284 }
13285 }
13286
13287 /* write test */
13288 for (i = 0; i < 4; i++) {
13289 up = (U32*)(buf + i);
13290 *up = 0xBeef;
13291 if (*up != 0xBeef) {
13292 printf("write failed (%x)\n", *up);
13293 exit(3);
13294 }
13295 }
13296
13297 exit(0);
13298#else
13299 printf("1\n");
13300 exit(1);
13301#endif
13302 return 0;
13303}
13304EOCP
13305set try
13306if eval $compile_ok; then
5440bc8e
JH
13307 echo "(Testing for character data alignment may dump core.)" >&4
13308 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13309 case "$?" in
13310 0) cat >&4 <<EOM
13311You can access character data pretty unalignedly.
13312EOM
13313 d_u32align="$undef"
13314 ;;
13315 *) cat >&4 <<EOM
13316It seems that you must access character data in an aligned manner.
13317EOM
13318 d_u32align="$define"
13319 ;;
13320 esac
13321 $rm -f core core.try.* try.core
13322else
13323 rp='Can you access character data at unaligned addresses?'
13324 dflt='n'
13325 . ./myread
13326 case "$ans" in
13327 [yY]*) d_u32align="$undef" ;;
13328 *) d_u32align="$define" ;;
13329 esac
13330fi
13331
13332: see if ualarm exists
13333set ualarm d_ualarm
13334eval $inlibc
13335
b4eb6b3d
JH
13336: see if umask exists
13337set umask d_umask
13338eval $inlibc
13339
758a5d79
JH
13340: see if unordered exists
13341set unordered d_unordered
13342eval $inlibc
13343
4e0554ec
JH
13344: see if usleep exists
13345set usleep d_usleep
13346eval $inlibc
13347
2ef53570
JH
13348: see if prototype for usleep is available
13349echo " "
13350set d_usleepproto usleep $i_unistd unistd.h
13351eval $hasproto
13352
b4eb6b3d
JH
13353: see if ustat exists
13354set ustat d_ustat
13355eval $inlibc
13356
13357: backward compatibility for d_hvfork
13358if test X$d_hvfork != X; then
13359 d_vfork="$d_hvfork"
13360 d_hvfork=''
13361fi
13362: see if there is a vfork
13363val=''
13364set vfork val
13365eval $inlibc
13366
13367: Ok, but do we want to use it. vfork is reportedly unreliable in
13368: perl on Solaris 2.x, and probably elsewhere.
13369case "$val" in
13370$define)
13371 echo " "
13372 case "$usevfork" in
13373 false) dflt='n';;
13374 *) dflt='y';;
13375 esac
13376 cat <<'EOM'
13377
13378Perl can only use a vfork() that doesn't suffer from strict
13379restrictions on calling functions or modifying global data in
13380the child. For example, glibc-2.1 contains such a vfork()
13381that is unsuitable. If your system provides a proper fork()
13382call, chances are that you do NOT want perl to use vfork().
13383
13384EOM
13385 rp="Do you still want to use vfork()?"
13386 . ./myread
13387 case "$ans" in
13388 y|Y) ;;
13389 *)
13390 echo "Ok, we won't use vfork()."
13391 val="$undef"
13392 ;;
13393 esac
13394 ;;
13395esac
13396set d_vfork
13397eval $setvar
13398case "$d_vfork" in
13399$define) usevfork='true';;
13400*) usevfork='false';;
13401esac
13402
13403: see if this is an sysdir system
13404set sys/dir.h i_sysdir
13405eval $inhdr
13406
13407: see if this is an sysndir system
13408set sys/ndir.h i_sysndir
13409eval $inhdr
13410
13411: see if closedir exists
13412set closedir d_closedir
13413eval $inlibc
13414
13415case "$d_closedir" in
13416"$define")
13417 echo " "
13418 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13419 cat > try.c <<EOM
b4eb6b3d
JH
13420#$i_dirent I_DIRENT /**/
13421#$i_sysdir I_SYS_DIR /**/
13422#$i_sysndir I_SYS_NDIR /**/
13423#$i_systypes I_SYS_TYPES /**/
13424
13425#if defined(I_SYS_TYPES)
13426#include <sys/types.h>
13427#endif
13428#if defined(I_DIRENT)
13429#include <dirent.h>
13430#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13431#include <sys/dir.h>
13432#endif
13433#else
13434#ifdef I_SYS_NDIR
13435#include <sys/ndir.h>
13436#else
13437#ifdef I_SYS_DIR
13438#ifdef hp9000s500
13439#include <ndir.h> /* may be wrong in the future */
13440#else
13441#include <sys/dir.h>
13442#endif
13443#endif
13444#endif
13445#endif
13446int main() { return closedir(opendir(".")); }
13447EOM
5440bc8e 13448 set try
b4eb6b3d 13449 if eval $compile_ok; then
5440bc8e 13450 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13451 echo "Yes, it does."
13452 val="$undef"
13453 else
13454 echo "No, it doesn't."
13455 val="$define"
13456 fi
13457 else
13458 echo "(I can't seem to compile the test program--assuming it doesn't)"
13459 val="$define"
13460 fi
13461 ;;
13462*)
13463 val="$undef";
13464 ;;
13465esac
13466set d_void_closedir
13467eval $setvar
5440bc8e 13468$rm -f try try.*
b4eb6b3d
JH
13469: see if there is a wait4
13470set wait4 d_wait4
13471eval $inlibc
13472
13473: see if waitpid exists
13474set waitpid d_waitpid
13475eval $inlibc
13476
13477: see if wcstombs exists
13478set wcstombs d_wcstombs
13479eval $inlibc
13480
13481: see if wctomb exists
13482set wctomb d_wctomb
13483eval $inlibc
13484
4e0554ec
JH
13485: see if writev exists
13486set writev d_writev
13487eval $inlibc
13488
b4eb6b3d
JH
13489: preserve RCS keywords in files with variable substitution, grrr
13490Date='$Date'
13491Id='$Id'
13492Log='$Log'
13493RCSfile='$RCSfile'
13494Revision='$Revision'
13495
b4eb6b3d
JH
13496: check for alignment requirements
13497echo " "
5440bc8e 13498case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13499*$define*)
13500 $cat <<EOM
13501You seem to be either cross-compiling or doing a multiarchitecture build,
13502skipping the memory alignment check.
13503
13504EOM
13505 case "$alignbytes" in
13506 '') alignbytes=8 ;;
13507 esac
13508 ;;
13509*)
13510 case "$alignbytes" in
13511 '') echo "Checking alignment constraints..." >&4
13512 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13513 $cat >try.c <<'EOCP'
13514typedef long double NV;
13515EOCP
13516 else
13517 $cat >try.c <<'EOCP'
13518typedef double NV;
13519EOCP
13520 fi
13521 $cat >>try.c <<'EOCP'
13522#include <stdio.h>
13523struct foobar {
13524 char foo;
13525 NV bar;
13526} try_algn;
13527int main()
13528{
13529 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13530 return(0);
13531}
13532EOCP
13533 set try
13534 if eval $compile_ok; then
5440bc8e 13535 dflt=`$run ./try`
b4eb6b3d
JH
13536 else
13537 dflt='8'
13538 echo "(I can't seem to compile the test program...)"
13539 fi
13540 ;;
13541 *) dflt="$alignbytes"
13542 ;;
13543 esac
13544 rp="Doubles must be aligned on a how-many-byte boundary?"
13545 . ./myread
13546 alignbytes="$ans"
13547 $rm -f try.c try
13548 ;;
13549esac
13550
13551
13552: set the base revision
13553baserev=5.0
13554
b4eb6b3d
JH
13555: how do we catenate cpp tokens here?
13556echo " "
13557echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13558$cat >cpp_stuff.c <<'EOCP'
13559#define RCAT(a,b)a/**/b
13560#define ACAT(a,b)a ## b
13561RCAT(Rei,ser)
13562ACAT(Cir,cus)
13563EOCP
13564$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13565if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13566 echo "Oh! Smells like ANSI's been here." >&4
13567 echo "We can catify or stringify, separately or together!"
13568 cpp_stuff=42
13569elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13570 echo "Ah, yes! The good old days!" >&4
13571 echo "However, in the good old days we don't know how to stringify and"
13572 echo "catify at the same time."
13573 cpp_stuff=1
13574else
13575 $cat >&4 <<EOM
13576Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13577to have to edit the values of CAT[2-5] in config.h...
13578EOM
13579 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13580fi
13581$rm -f cpp_stuff.*
13582
13583: see if this is a db.h system
13584set db.h i_db
13585eval $inhdr
13586
13587case "$i_db" in
13588$define)
13589 : Check db version.
13590 echo " "
13591 echo "Checking Berkeley DB version ..." >&4
13592 $cat >try.c <<EOCP
13593#$d_const HASCONST
13594#ifndef HASCONST
13595#define const
13596#endif
13597#include <sys/types.h>
13598#include <stdio.h>
13599#include <db.h>
640374d0 13600int main(int argc, char *argv[])
b4eb6b3d
JH
13601{
13602#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13603 int Major, Minor, Patch ;
13604 unsigned long Version ;
13605 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13606 if (argc == 2) {
13607 printf("%d %d %d %d %d %d\n",
13608 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13609 Major, Minor, Patch);
13610 exit(0);
13611 }
13612 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13613
13614 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13615 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13616 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13617 Major, Minor, Patch) ;
13618
13619 /* check that db.h & libdb are compatible */
13620 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13621 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13622 exit(3);
13623 }
13624
640374d0 13625 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13626
13627 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13628 + DB_VERSION_PATCH ;
13629
13630 /* needs to be >= 2.3.4 */
13631 if (Version < 2003004) {
13632 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13633 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13634 exit(2);
13635 }
13636
13637 exit(0);
13638#else
13639#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13640 if (argc == 2) {
13641 printf("1 0 0\n");
13642 exit(0);
13643 }
13644 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13645 exit(0); /* DB version < 2: the coast is clear. */
13646#else
13647 exit(1); /* <db.h> not Berkeley DB? */
13648#endif
13649#endif
13650}
13651EOCP
13652 set try
5440bc8e 13653 if eval $compile_ok && $run ./try; then
b4eb6b3d 13654 echo 'Looks OK.' >&4
5440bc8e 13655 set `$run ./try 1`
640374d0
JH
13656 db_version_major=$1
13657 db_version_minor=$2
13658 db_version_patch=$3
b4eb6b3d
JH
13659 else
13660 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13661 i_db=$undef
13662 case " $libs " in
13663 *"-ldb "*)
13664 : Remove db from list of libraries to use
13665 echo "Removing unusable -ldb from library list" >&4
13666 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13667 shift
13668 libs="$*"
13669 echo "libs = $libs" >&4
13670 ;;
13671 esac
13672 fi
13673 $rm -f try.*
13674 ;;
13675esac
13676
13677case "$i_db" in
13678define)
13679 : Check the return type needed for hash
13680 echo " "
13681 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13682 $cat >try.c <<EOCP
13683#$d_const HASCONST
13684#ifndef HASCONST
13685#define const
13686#endif
13687#include <sys/types.h>
13688#include <db.h>
13689
13690#ifndef DB_VERSION_MAJOR
13691u_int32_t hash_cb (ptr, size)
13692const void *ptr;
13693size_t size;
13694{
13695}
13696HASHINFO info;
13697int main()
13698{
13699 info.hash = hash_cb;
13700}
13701#endif
13702EOCP
13703 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13704 if $contains warning try.out >>/dev/null 2>&1 ; then
13705 db_hashtype='int'
13706 else
13707 db_hashtype='u_int32_t'
13708 fi
13709 else
13710 : XXX Maybe we should just give up here.
13711 db_hashtype=u_int32_t
13712 $cat try.out >&4
13713 echo "Help: I can't seem to compile the db test program." >&4
13714 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13715 fi
13716 $rm -f try.*
13717 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13718 ;;
13719*) db_hashtype=u_int32_t
13720 ;;
13721esac
13722case "$i_db" in
13723define)
13724 : Check the return type needed for prefix
13725 echo " "
13726 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13727 cat >try.c <<EOCP
13728#$d_const HASCONST
13729#ifndef HASCONST
13730#define const
13731#endif
13732#include <sys/types.h>
13733#include <db.h>
13734
13735#ifndef DB_VERSION_MAJOR
13736size_t prefix_cb (key1, key2)
13737const DBT *key1;
13738const DBT *key2;
13739{
13740}
13741BTREEINFO info;
13742int main()
13743{
13744 info.prefix = prefix_cb;
13745}
13746#endif
13747EOCP
13748 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13749 if $contains warning try.out >>/dev/null 2>&1 ; then
13750 db_prefixtype='int'
13751 else
13752 db_prefixtype='size_t'
13753 fi
13754 else
13755 db_prefixtype='size_t'
13756 : XXX Maybe we should just give up here.
13757 $cat try.out >&4
13758 echo "Help: I can't seem to compile the db test program." >&4
13759 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13760 fi
13761 $rm -f try.*
13762 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13763 ;;
13764*) db_prefixtype='size_t'
13765 ;;
13766esac
13767
b4eb6b3d
JH
13768
13769: How can we generate normalized random numbers ?
13770echo " "
13771echo "Looking for a random number function..." >&4
13772case "$randfunc" in
13773'')
13774 if set drand48 val -f; eval $csym; $val; then
13775 dflt="drand48"
13776 echo "Good, found drand48()." >&4
13777 elif set random val -f; eval $csym; $val; then
13778 dflt="random"
13779 echo "OK, found random()." >&4
13780 else
13781 dflt="rand"
13782 echo "Yick, looks like I have to use rand()." >&4
13783 fi
13784 echo " "
13785 ;;
13786*)
13787 dflt="$randfunc"
13788 ;;
13789esac
13790cont=true
13791
13792case "$ccflags" in
13793*-Dmy_rand=*|*-Dmy_srand=*)
13794 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13795 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13796 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13797 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13798 ;;
13799esac
13800
13801while $test "$cont"; do
13802 rp="Use which function to generate random numbers?"
13803 . ./myread
13804 if $test "$ans" = "$dflt"; then
13805 : null
13806 else
13807 randbits=''
13808 fi
13809 randfunc="$ans"
13810 if set $ans val -f; eval $csym; $val; then
13811 cont=''
13812 else
13813 dflt=y
13814 rp="I cannot find function $ans. Use that name anyway?"
13815 . ./myread
13816 dflt=rand
13817 case "$ans" in
13818 [yY]*) cont='';;
13819 esac
13820 fi
13821 case "$cont" in
13822 '')
13823 case "$randfunc" in
13824 drand48)
13825 drand01="drand48()"
13826 seedfunc="srand48"
13827 randbits=48
13828 randseedtype=long
13829 ;;
13830 rand|random)
13831 case "$randbits" in
13832 '')
13833echo "Checking to see how many bits your $randfunc() function produces..." >&4
13834 $cat >try.c <<EOCP
13835#$i_unistd I_UNISTD
13836#$i_stdlib I_STDLIB
13837#include <stdio.h>
13838#ifdef I_UNISTD
13839# include <unistd.h>
13840#endif
13841#ifdef I_STDLIB
13842# include <stdlib.h>
13843#endif
13844int main()
13845{
13846 register int i;
13847 register unsigned long tmp;
13848 register unsigned long max = 0L;
13849
13850 for (i = 1000; i; i--) {
13851 tmp = (unsigned long) $randfunc();
13852 if (tmp > max) max = tmp;
13853 }
13854 for (i = 0; max; i++)
13855 max /= 2;
13856 printf("%d\n",i);
13857}
13858EOCP
13859 set try
13860 if eval $compile_ok; then
13861 dflt=`try`
13862 else
13863 dflt='?'
13864 echo "(I can't seem to compile the test program...)"
13865 fi
13866 ;;
13867 *)
13868 dflt="$randbits"
13869 ;;
13870 esac
13871 rp="How many bits does your $randfunc() function produce?"
13872 . ./myread
13873 randbits="$ans"
13874 $rm -f try.c try
13875 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13876 seedfunc="s$randfunc"
13877 randseedtype=unsigned
13878 ;;
13879 *)
13880 dflt="31"
13881 rp="How many bits does your $randfunc() function produce?"
13882 . ./myread
13883 randbits="$ans"
13884 seedfunc="s$randfunc"
13885 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13886 if set $seedfunc val -f; eval $csym; $val; then
13887 echo "(Using $seedfunc() to seed random generator)"
13888 else
13889 echo "(Warning: no $seedfunc() to seed random generator)"
13890 seedfunc=rand
13891 fi
13892 randseedtype=unsigned
13893 ;;
13894 esac
13895 ;;
13896 esac
13897done
13898
13899echo " "
13900echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 13901$cat >try.c <<'EOM'
b4eb6b3d
JH
13902int main()
13903{
13904 if ('M'==0xd4) return 0;
13905 return 1;
13906}
13907EOM
13908
13909val=$undef
5440bc8e 13910set try
b4eb6b3d 13911if eval $compile_ok; then
5440bc8e 13912 if $run ./try; then
b4eb6b3d
JH
13913 echo "You seem to speak EBCDIC." >&4
13914 val="$define"
13915 else
5440bc8e 13916 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
13917 fi
13918else
13919 echo "I'm unable to compile the test program." >&4
13920 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13921fi
5440bc8e 13922$rm -f try try.*
b4eb6b3d
JH
13923set ebcdic
13924eval $setvar
13925
13926echo " "
13927$cat >&4 <<EOM
13928Checking how to flush all pending stdio output...
13929EOM
13930# I only know how to find the first 32 possibly open files on SunOS.
13931# See also hints/sunos_4_1.sh and util.c --AD
13932case "$osname" in
13933sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13934esac
13935$cat >>try.c <<EOCP
13936#include <stdio.h>
13937#$i_unistd I_UNISTD
13938#ifdef I_UNISTD
13939# include <unistd.h>
13940#endif
13941#$d_sysconf HAS_SYSCONF
13942#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13943#ifdef HAS_STDIO_STREAM_ARRAY
13944# define STDIO_STREAM_ARRAY $stdio_stream_array
13945#endif
13946int main() {
5440bc8e
JH
13947 FILE* p;
13948 unlink("try.out");
13949 p = fopen("try.out", "w");
b4eb6b3d
JH
13950#ifdef TRY_FPUTC
13951 fputc('x', p);
13952#else
13953# ifdef TRY_FPRINTF
13954 fprintf(p, "x");
13955# endif
13956#endif
13957#ifdef TRY_FFLUSH_NULL
13958 fflush(NULL);
13959#endif
13960#ifdef TRY_FFLUSH_ALL
13961 {
13962 long open_max = -1;
13963# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13964 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13965# else
13966# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13967 open_max = sysconf(_SC_OPEN_MAX);
13968# else
13969# ifdef FOPEN_MAX
13970 open_max = FOPEN_MAX;
13971# else
13972# ifdef OPEN_MAX
13973 open_max = OPEN_MAX;
13974# else
13975# ifdef _NFILE
13976 open_max = _NFILE;
13977# endif
13978# endif
13979# endif
13980# endif
13981# endif
13982# ifdef HAS_STDIO_STREAM_ARRAY
13983 if (open_max > 0) {
13984 long i;
13985 for (i = 0; i < open_max; i++)
13986 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13987 STDIO_STREAM_ARRAY[i]._file < open_max &&
13988 STDIO_STREAM_ARRAY[i]._flag)
13989 fflush(&STDIO_STREAM_ARRAY[i]);
13990 }
13991 }
13992# endif
13993#endif
13994 _exit(42);
13995}
13996EOCP
13997: first we have to find out how _not_ to flush
5440bc8e 13998$to try.c
b4eb6b3d
JH
13999if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14000 output=''
14001 set try -DTRY_FPUTC
14002 if eval $compile; then
fbe73d74 14003 $run ./try 2>/dev/null
28f5ac64 14004 code="$?"
5440bc8e 14005 $from try.out
28f5ac64 14006 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14007 output=-DTRY_FPUTC
14008 fi
14009 fi
14010 case "$output" in
14011 '')
14012 set try -DTRY_FPRINTF
b4eb6b3d 14013 if eval $compile; then
fbe73d74 14014 $run ./try 2>/dev/null
28f5ac64 14015 code="$?"
5440bc8e 14016 $from try.out
28f5ac64 14017 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14018 output=-DTRY_FPRINTF
14019 fi
14020 fi
14021 ;;
14022 esac
14023fi
14024: check for fflush NULL behaviour
14025case "$fflushNULL" in
14026'') set try -DTRY_FFLUSH_NULL $output
14027 if eval $compile; then
5440bc8e 14028 $run ./try 2>/dev/null
b4eb6b3d 14029 code="$?"
5440bc8e 14030 $from try.out
b4eb6b3d
JH
14031 if $test -s try.out -a "X$code" = X42; then
14032 fflushNULL="`$cat try.out`"
14033 else
14034 if $test "X$code" != X42; then
14035 $cat >&4 <<EOM
14036(If this test failed, don't worry, we'll try another method shortly.)
14037EOM
14038 fi
14039 fi
14040 fi
14041 $rm -f core try.core core.try.*
14042 case "$fflushNULL" in
14043 x) $cat >&4 <<EOM
14044Your fflush(NULL) works okay for output streams.
14045Let's see if it clobbers input pipes...
14046EOM
14047# As of mid-March 2000 all versions of Solaris appear to have a stdio
14048# bug that improperly flushes the input end of pipes. So we avoid the
14049# autoflush on fork/system/exec support for now. :-(
14050$cat >tryp.c <<EOCP
14051#include <stdio.h>
14052int
14053main(int argc, char **argv)
14054{
14055 char buf[1024];
14056 int i;
14057 char *bp = buf;
14058 while (1) {
14059 while ((i = getc(stdin)) != -1
14060 && (*bp++ = i) != '\n'
14061 && bp < &buf[1024])
14062 /* DO NOTHING */ ;
14063 *bp = '\0';
14064 fprintf(stdout, "%s", buf);
14065 fflush(NULL);
14066 if (i == -1)
14067 return 0;
14068 bp = buf;
14069 }
14070}
14071EOCP
14072 fflushNULL="$define"
14073 set tryp
14074 if eval $compile; then
14075 $rm -f tryp.out
5440bc8e 14076 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14077 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14078 $cat >&4 <<EOM
14079fflush(NULL) seems to behave okay with input streams.
14080EOM
14081 fflushNULL="$define"
14082 else
14083 $cat >&4 <<EOM
14084Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14085EOM
14086 fflushNULL="$undef"
14087 fi
14088 fi
14089 $rm -f core tryp.c tryp.core core.tryp.*
14090 ;;
14091 '') $cat >&4 <<EOM
14092Your fflush(NULL) isn't working (contrary to ANSI C).
14093EOM
14094 fflushNULL="$undef"
14095 ;;
14096 *) $cat >&4 <<EOM
14097Cannot figure out whether your fflush(NULL) works or not.
14098I'm assuming it doesn't (contrary to ANSI C).
14099EOM
14100 fflushNULL="$undef"
14101 ;;
14102 esac
14103 ;;
14104$define|true|[yY]*)
14105 fflushNULL="$define"
14106 ;;
14107*)
14108 fflushNULL="$undef"
14109 ;;
14110esac
14111: check explicit looping only if NULL did not work, and if the pipe
14112: bug does not show up on an explicit flush too
14113case "$fflushNULL" in
14114"$undef")
14115 $cat >tryp.c <<EOCP
14116#include <stdio.h>
14117int
14118main(int argc, char **argv)
14119{
14120 char buf[1024];
14121 int i;
14122 char *bp = buf;
14123 while (1) {
14124 while ((i = getc(stdin)) != -1
14125 && (*bp++ = i) != '\n'
14126 && bp < &buf[1024])
14127 /* DO NOTHING */ ;
14128 *bp = '\0';
14129 fprintf(stdout, "%s", buf);
14130 fflush(stdin);
14131 if (i == -1)
14132 return 0;
14133 bp = buf;
14134 }
14135}
14136EOCP
14137 set tryp
14138 if eval $compile; then
14139 $rm -f tryp.out
5440bc8e 14140 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14141 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14142 $cat >&4 <<EOM
14143Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14144EOM
14145 : now check for fflushall behaviour
14146 case "$fflushall" in
14147 '') set try -DTRY_FFLUSH_ALL $output
14148 if eval $compile; then
14149 $cat >&4 <<EOM
14150(Now testing the other method--but note that this also may fail.)
14151EOM
5440bc8e 14152 $run ./try 2>/dev/null
28f5ac64 14153 code=$?
fbe73d74 14154 $from try.out
28f5ac64 14155 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14156 fflushall="`$cat try.out`"
14157 fi
14158 fi
14159 $rm -f core try.core core.try.*
14160 case "$fflushall" in
14161 x) $cat >&4 <<EOM
14162Whew. Flushing explicitly all the stdio streams works.
14163EOM
14164 fflushall="$define"
14165 ;;
14166 '') $cat >&4 <<EOM
14167Sigh. Flushing explicitly all the stdio streams doesn't work.
14168EOM
14169 fflushall="$undef"
14170 ;;
14171 *) $cat >&4 <<EOM
14172Cannot figure out whether flushing stdio streams explicitly works or not.
14173I'm assuming it doesn't.
14174EOM
14175 fflushall="$undef"
14176 ;;
14177 esac
14178 ;;
14179 "$define"|true|[yY]*)
14180 fflushall="$define"
14181 ;;
14182 *)
14183 fflushall="$undef"
14184 ;;
14185 esac
14186 else
14187 $cat >&4 <<EOM
14188All is futile. Even fflush(stdin) clobbers input pipes!
14189EOM
14190 fflushall="$undef"
14191 fi
14192 else
14193 fflushall="$undef"
14194 fi
14195 $rm -f core tryp.c tryp.core core.tryp.*
14196 ;;
14197*) fflushall="$undef"
14198 ;;
14199esac
14200
14201case "$fflushNULL$fflushall" in
14202undefundef)
14203 $cat <<EOM
14204OK, I give up. I cannot figure out how to flush pending stdio output.
14205We won't be flushing handles at all before fork/exec/popen.
14206EOM
14207 ;;
14208esac
14209$rm -f try.* try$exe_ext
14210
14211: Store the full pathname to the ar program for use in the C program
14212: Respect a hint or command line value for full_ar.
14213case "$full_ar" in
14214'') full_ar=$ar ;;
14215esac
14216
14217: Store the full pathname to the sed program for use in the C program
14218full_sed=$sed
14219
14220: see what type gids are declared as in the kernel
14221echo " "
14222echo "Looking for the type for group ids returned by getgid()."
14223set gid_t gidtype xxx stdio.h sys/types.h
14224eval $typedef
14225case "$gidtype" in
14226xxx)
14227 xxx=`./findhdr sys/user.h`
14228 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14229 case $1 in
14230 unsigned) dflt="$1 $2" ;;
14231 *) dflt="$1" ;;
14232 esac
14233 ;;
14234*) dflt="$gidtype";;
14235esac
14236case "$gidtype" in
14237gid_t) echo "gid_t found." ;;
14238*) rp="What is the type for group ids returned by getgid()?"
14239 . ./myread
14240 gidtype="$ans"
14241 ;;
14242esac
14243
14244echo " "
14245case "$gidtype" in
14246*_t) zzz="$gidtype" ;;
14247*) zzz="gid" ;;
14248esac
14249echo "Checking the size of $zzz..." >&4
14250cat > try.c <<EOCP
14251#include <sys/types.h>
14252#include <stdio.h>
14253int main() {
14254 printf("%d\n", (int)sizeof($gidtype));
14255 exit(0);
14256}
14257EOCP
14258set try
14259if eval $compile_ok; then
5440bc8e 14260 yyy=`$run ./try`
b4eb6b3d
JH
14261 case "$yyy" in
14262 '') gidsize=4
14263 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14264 ;;
14265 *) gidsize=$yyy
14266 echo "Your $zzz is $gidsize bytes long."
14267 ;;
14268 esac
14269else
14270 gidsize=4
14271 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14272fi
14273
14274
14275echo " "
14276case "$gidtype" in
14277*_t) zzz="$gidtype" ;;
14278*) zzz="gid" ;;
14279esac
14280echo "Checking the sign of $zzz..." >&4
14281cat > try.c <<EOCP
14282#include <sys/types.h>
14283#include <stdio.h>
14284int main() {
14285 $gidtype foo = -1;
14286 if (foo < 0)
14287 printf("-1\n");
14288 else
14289 printf("1\n");
14290}
14291EOCP
14292set try
14293if eval $compile; then
5440bc8e 14294 yyy=`$run ./try`
b4eb6b3d
JH
14295 case "$yyy" in
14296 '') gidsign=1
14297 echo "(I can't execute the test program--guessing unsigned.)" >&4
14298 ;;
14299 *) gidsign=$yyy
14300 case "$gidsign" in
14301 1) echo "Your $zzz is unsigned." ;;
14302 -1) echo "Your $zzz is signed." ;;
14303 esac
14304 ;;
14305 esac
14306else
14307 gidsign=1
14308 echo "(I can't compile the test program--guessing unsigned.)" >&4
14309fi
14310
14311
14312echo " "
14313
14314if $test X"$quadtype" != X; then
14315
14316echo "Checking how to print 64-bit integers..." >&4
14317
14318if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14319 $cat >try.c <<'EOCP'
14320#include <sys/types.h>
14321#include <stdio.h>
14322int main() {
14323 int q = 12345678901;
14324 printf("%ld\n", q);
14325}
14326EOCP
14327 set try
14328 if eval $compile; then
5440bc8e 14329 yyy=`$run ./try`
b4eb6b3d
JH
14330 case "$yyy" in
14331 12345678901)
14332 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14333 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14334 echo "We will use %d."
14335 ;;
14336 esac
14337 fi
14338fi
14339
14340if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14341 $cat >try.c <<'EOCP'
14342#include <sys/types.h>
14343#include <stdio.h>
14344int main() {
14345 long q = 12345678901;
14346 printf("%ld\n", q);
14347}
14348EOCP
14349 set try
14350 if eval $compile; then
5440bc8e 14351 yyy=`$run ./try`
b4eb6b3d
JH
14352 case "$yyy" in
14353 12345678901)
14354 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14355 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14356 echo "We will use %ld."
14357 ;;
14358 esac
14359 fi
14360fi
14361
14362if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14363 $cat >try.c <<'EOCP'
14364#include <sys/types.h>
14365#include <inttypes.h>
14366#include <stdio.h>
14367int main() {
14368 int64_t q = 12345678901;
14369 printf("%" PRId64 "\n", q);
14370}
14371EOCP
14372 set try
14373 if eval $compile; then
5440bc8e 14374 yyy=`$run ./try`
b4eb6b3d
JH
14375 case "$yyy" in
14376 12345678901)
14377 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14378 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14379 echo "We will use the C9X style."
14380 ;;
14381 esac
14382 fi
14383fi
14384
2ef53570
JH
14385if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14386 $cat >try.c <<EOCP
b4eb6b3d
JH
14387#include <sys/types.h>
14388#include <stdio.h>
14389int main() {
2ef53570
JH
14390 $quadtype q = 12345678901;
14391 printf("%Ld\n", q);
b4eb6b3d
JH
14392}
14393EOCP
14394 set try
14395 if eval $compile; then
5440bc8e 14396 yyy=`$run ./try`
b4eb6b3d
JH
14397 case "$yyy" in
14398 12345678901)
2ef53570
JH
14399 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14400 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14401 echo "We will use %Ld."
b4eb6b3d
JH
14402 ;;
14403 esac
14404 fi
14405fi
14406
2ef53570
JH
14407if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14408 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14409#include <sys/types.h>
14410#include <stdio.h>
14411int main() {
2ef53570
JH
14412 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14413 printf("%lld\n", q);
b4eb6b3d
JH
14414}
14415EOCP
14416 set try
14417 if eval $compile; then
5440bc8e 14418 yyy=`$run ./try`
b4eb6b3d
JH
14419 case "$yyy" in
14420 12345678901)
2ef53570
JH
14421 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14422 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14423 echo "We will use the %lld style."
b4eb6b3d
JH
14424 ;;
14425 esac
14426 fi
14427fi
14428
14429if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14430 $cat >try.c <<EOCP
14431#include <sys/types.h>
14432#include <stdio.h>
14433int main() {
14434 $quadtype q = 12345678901;
14435 printf("%qd\n", q);
14436}
14437EOCP
14438 set try
14439 if eval $compile; then
5440bc8e 14440 yyy=`$run ./try`
b4eb6b3d
JH
14441 case "$yyy" in
14442 12345678901)
14443 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14444 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14445 echo "We will use %qd."
14446 ;;
14447 esac
14448 fi
14449fi
14450
14451if $test X"$sPRId64" = X; then
14452 echo "Cannot figure out how to print 64-bit integers." >&4
14453fi
14454
14455$rm -f try try.*
14456
14457fi
14458
14459case "$sPRId64" in
14460'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14461 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14462 ;;
14463*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14464 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14465 ;;
14466esac
14467
14468
14469echo " "
14470$echo "Checking the format strings to be used for Perl's internal types..." >&4
14471
14472if $test X"$ivsize" = X8; then
14473 ivdformat="$sPRId64"
14474 uvuformat="$sPRIu64"
14475 uvoformat="$sPRIo64"
14476 uvxformat="$sPRIx64"
14477 uvXUformat="$sPRIXU64"
14478else
14479 if $test X"$ivsize" = X"$longsize"; then
14480 ivdformat='"ld"'
14481 uvuformat='"lu"'
14482 uvoformat='"lo"'
14483 uvxformat='"lx"'
14484 uvXUformat='"lX"'
14485 else
14486 if $test X"$ivsize" = X"$intsize"; then
14487 ivdformat='"d"'
14488 uvuformat='"u"'
14489 uvoformat='"o"'
14490 uvxformat='"x"'
14491 uvXUformat='"X"'
14492 else
14493 : far out
14494 if $test X"$ivsize" = X"$shortsize"; then
14495 ivdformat='"hd"'
14496 uvuformat='"hu"'
14497 uvoformat='"ho"'
14498 uvxformat='"hx"'
14499 uvXUformat='"hX"'
14500 fi
14501 fi
14502 fi
14503fi
14504
14505if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14506 nveformat="$sPRIeldbl"
14507 nvfformat="$sPRIfldbl"
14508 nvgformat="$sPRIgldbl"
14509 nvEUformat="$sPRIEUldbl"
14510 nvFUformat="$sPRIFUldbl"
14511 nvGUformat="$sPRIGUldbl"
14512else
14513 nveformat='"e"'
14514 nvfformat='"f"'
14515 nvgformat='"g"'
14516 nvEUformat='"E"'
14517 nvFUformat='"F"'
14518 nvGUformat='"G"'
14519fi
14520
14521case "$ivdformat" in
14522'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14523 exit 1
14524 ;;
14525esac
14526
14527
14528echo " "
14529$echo "Checking the format string to be used for gids..." >&4
14530
14531case "$gidsign" in
14532-1) if $test X"$gidsize" = X"$ivsize"; then
14533 gidformat="$ivdformat"
14534 else
14535 if $test X"$gidsize" = X"$longsize"; then
14536 gidformat='"ld"'
14537 else
14538 if $test X"$gidsize" = X"$intsize"; then
14539 gidformat='"d"'
14540 else
14541 if $test X"$gidsize" = X"$shortsize"; then
14542 gidformat='"hd"'
14543 fi
14544 fi
14545 fi
14546 fi
14547 ;;
14548*) if $test X"$gidsize" = X"$uvsize"; then
14549 gidformat="$uvuformat"
14550 else
14551 if $test X"$gidsize" = X"$longsize"; then
14552 gidformat='"lu"'
14553 else
14554 if $test X"$gidsize" = X"$intsize"; then
14555 gidformat='"u"'
14556 else
14557 if $test X"$gidsize" = X"$shortsize"; then
14558 gidformat='"hu"'
14559 fi
14560 fi
14561 fi
14562 fi
14563 ;;
14564esac
14565
14566: see if getgroups exists
14567set getgroups d_getgrps
14568eval $inlibc
14569
14570: see if setgroups exists
14571set setgroups d_setgrps
14572eval $inlibc
14573
14574
14575: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14576echo " "
14577case "$d_getgrps$d_setgrps" in
14578*define*)
14579 case "$groupstype" in
14580 '') dflt="$gidtype" ;;
14581 *) dflt="$groupstype" ;;
14582 esac
14583 $cat <<EOM
14584What type of pointer is the second argument to getgroups() and setgroups()?
14585Usually this is the same as group ids, $gidtype, but not always.
14586
14587EOM
14588 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14589 . ./myread
14590 groupstype="$ans"
14591 ;;
14592*) groupstype="$gidtype";;
14593esac
14594
14595echo " "
14596echo "Checking if your $make program sets \$(MAKE)..." >&4
14597case "$make_set_make" in
14598'')
14599 $sed 's/^X //' > testmake.mak << 'EOF'
14600Xall:
14601X @echo 'maketemp="$(MAKE)"'
14602EOF
14603 case "`$make -f testmake.mak 2>/dev/null`" in
14604 *maketemp=*) make_set_make='#' ;;
14605 *) make_set_make="MAKE=$make" ;;
14606 esac
14607 $rm -f testmake.mak
14608 ;;
14609esac
14610case "$make_set_make" in
14611'#') echo "Yup, it does.";;
14612*) echo "Nope, it doesn't.";;
14613esac
14614
14615: see what type is used for mode_t
14616rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14617set mode_t modetype int stdio.h sys/types.h
14618eval $typedef_ask
14619
2cc61e15
DD
14620: see if stdarg is available
14621echo " "
14622if $test `./findhdr stdarg.h`; then
14623 echo "<stdarg.h> found." >&4
14624 valstd="$define"
14625else
14626 echo "<stdarg.h> NOT found." >&4
14627 valstd="$undef"
14628fi
14629
14630: see if varags is available
14631echo " "
14632if $test `./findhdr varargs.h`; then
14633 echo "<varargs.h> found." >&4
14634else
14635 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14636fi
14637
14638: set up the varargs testing programs
14639$cat > varargs.c <<EOP
14640#ifdef I_STDARG
14641#include <stdarg.h>
14642#endif
14643#ifdef I_VARARGS
14644#include <varargs.h>
14645#endif
14646
14647#ifdef I_STDARG
14648int f(char *p, ...)
14649#else
14650int f(va_alist)
14651va_dcl
14652#endif
14653{
14654 va_list ap;
14655#ifndef I_STDARG
14656 char *p;
14657#endif
14658#ifdef I_STDARG
14659 va_start(ap,p);
14660#else
14661 va_start(ap);
14662 p = va_arg(ap, char *);
14663#endif
14664 va_end(ap);
14665}
14666EOP
14667$cat > varargs <<EOP
14668$startsh
14669if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14670 echo "true"
14671else
14672 echo "false"
14673fi
14674$rm -f varargs$_o
14675EOP
14676chmod +x varargs
14677
14678: now check which varargs header should be included
14679echo " "
14680i_varhdr=''
14681case "$valstd" in
14682"$define")
14683 if `./varargs I_STDARG`; then
14684 val='stdarg.h'
14685 elif `./varargs I_VARARGS`; then
14686 val='varargs.h'
14687 fi
14688 ;;
14689*)
14690 if `./varargs I_VARARGS`; then
14691 val='varargs.h'
14692 fi
14693 ;;
14694esac
14695case "$val" in
14696'')
14697echo "I could not find the definition for va_dcl... You have problems..." >&4
14698 val="$undef"; set i_stdarg; eval $setvar
14699 val="$undef"; set i_varargs; eval $setvar
14700 ;;
14701*)
14702 set i_varhdr
14703 eval $setvar
14704 case "$i_varhdr" in
14705 stdarg.h)
14706 val="$define"; set i_stdarg; eval $setvar
14707 val="$undef"; set i_varargs; eval $setvar
14708 ;;
14709 varargs.h)
14710 val="$undef"; set i_stdarg; eval $setvar
14711 val="$define"; set i_varargs; eval $setvar
14712 ;;
14713 esac
14714 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14715esac
14716$rm -f varargs*
14717
14718: see if we need va_copy
14719echo " "
14720case "$i_stdarg" in
14721"$define")
14722 $cat >try.c <<EOCP
14723#include <stdarg.h>
14724#include <stdio.h>
85c8a686
DD
14725#$i_stdlib I_STDLIB
14726#ifdef I_STDLIB
14727#include <stdlib.h>
14728#endif
14729#include <signal.h>
2cc61e15
DD
14730
14731int
14732ivfprintf(FILE *f, const char *fmt, va_list *valp)
14733{
14734 return vfprintf(f, fmt, *valp);
14735}
14736
14737int
14738myvfprintf(FILE *f, const char *fmt, va_list val)
14739{
14740 return ivfprintf(f, fmt, &val);
14741}
14742
14743int
14744myprintf(char *fmt, ...)
14745{
14746 va_list val;
14747 va_start(val, fmt);
14748 return myvfprintf(stdout, fmt, val);
14749}
14750
14751int
14752main(int ac, char **av)
14753{
85c8a686
DD
14754 signal(SIGSEGV, exit);
14755
2cc61e15
DD
14756 myprintf("%s%cs all right, then\n", "that", '\'');
14757 exit(0);
14758}
14759EOCP
14760 set try
5440bc8e
JH
14761 if eval $compile && $run ./try 2>&1 >/dev/null; then
14762 case "`$run ./try`" in
2cc61e15
DD
14763 "that's all right, then")
14764 okay=yes
14765 ;;
14766 esac
14767 fi
14768 case "$okay" in
14769 yes) echo "It seems that you don't need va_copy()." >&4
14770 need_va_copy="$undef"
14771 ;;
14772 *) echo "It seems that va_copy() or similar will be needed." >&4
14773 need_va_copy="$define"
14774 ;;
14775 esac
14776 $rm -f try.* core core.* *.core *.core.*
14777 ;;
14778*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14779 ;;
14780esac
14781
b4eb6b3d
JH
14782: define a fucntion to check prototypes
14783$cat > protochk <<EOSH
14784$startsh
14785cc="$cc"
14786optimize="$optimize"
14787ccflags="$ccflags"
14788prototype="$prototype"
14789define="$define"
14790rm=$rm
14791EOSH
14792
14793$cat >> protochk <<'EOSH'
14794
14795$rm -f try.c
14796foo="$1"
14797shift
14798while test $# -ge 2; do
14799 case "$1" in
14800 $define) echo "#include <$2>" >> try.c ;;
14801 literal) echo "$2" >> try.c ;;
14802 esac
14803 shift 2
14804done
14805test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14806cat >> try.c <<'EOCP'
14807#ifdef CAN_PROTOTYPE
14808#define _(args) args
14809#else
14810#define _(args) ()
14811#endif
14812EOCP
14813echo "$foo" >> try.c
14814echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14815$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14816status=$?
14817$rm -f try.[co]
14818exit $status
14819EOSH
14820chmod +x protochk
14821$eunicefix protochk
14822
14823: see what type is used for size_t
14824rp="What is the type used for the length parameter for string functions?"
14825set size_t sizetype 'unsigned int' stdio.h sys/types.h
14826eval $typedef_ask
14827
14828: check for type of arguments to gethostbyaddr.
14829if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14830 case "$d_gethbyaddr" in
14831 $define)
14832 $cat <<EOM
14833
14834Checking to see what type of arguments are accepted by gethostbyaddr().
14835EOM
14836 hdrs="$define sys/types.h
14837 $d_socket sys/socket.h
14838 $i_niin netinet/in.h
14839 $i_netdb netdb.h
14840 $i_unistd unistd.h"
14841 : The first arg can 'char *' or 'void *'
14842 : The second arg is some of integral type
14843 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14844 for yyy in size_t long int; do
14845 case "$netdb_host_type" in
14846 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14847 if ./protochk "$try" $hdrs; then
14848 echo "Your system accepts $xxx for the first arg."
14849 echo "...and $yyy for the second arg."
14850 netdb_host_type="$xxx"
14851 netdb_hlen_type="$yyy"
14852 fi
14853 ;;
14854 esac
14855 done
14856 done
14857 : In case none of those worked, prompt the user.
14858 case "$netdb_host_type" in
14859 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14860 dflt='char *'
14861 . ./myread
14862 netdb_host_type=$ans
14863 rp='What is the type for the 2nd argument to gethostbyaddr?'
14864 dflt="$sizetype"
14865 . ./myread
14866 netdb_hlen_type=$ans
14867 ;;
14868 esac
14869 ;;
14870 *) : no gethostbyaddr, so pick harmless defaults
14871 netdb_host_type='char *'
14872 netdb_hlen_type="$sizetype"
14873 ;;
14874 esac
14875 # Remove the "const" if needed. -- but then we'll have a
14876 # prototype clash!
14877 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14878fi
14879
14880: check for type of argument to gethostbyname.
14881if test "X$netdb_name_type" = X ; then
14882 case "$d_gethbyname" in
14883 $define)
14884 $cat <<EOM
14885
14886Checking to see what type of argument is accepted by gethostbyname().
14887EOM
14888 hdrs="$define sys/types.h
14889 $d_socket sys/socket.h
14890 $i_niin netinet/in.h
14891 $i_netdb netdb.h
14892 $i_unistd unistd.h"
14893 for xxx in "const char *" "char *"; do
14894 case "$netdb_name_type" in
14895 '') try="extern struct hostent *gethostbyname($xxx);"
14896 if ./protochk "$try" $hdrs; then
14897 echo "Your system accepts $xxx."
14898 netdb_name_type="$xxx"
14899 fi
14900 ;;
14901 esac
14902 done
14903 : In case none of those worked, prompt the user.
14904 case "$netdb_name_type" in
14905 '') rp='What is the type for the 1st argument to gethostbyname?'
14906 dflt='char *'
14907 . ./myread
14908 netdb_name_type=$ans
14909 ;;
14910 esac
14911 ;;
14912 *) : no gethostbyname, so pick harmless default
14913 netdb_name_type='char *'
14914 ;;
14915 esac
14916fi
14917
14918: check for type of 1st argument to getnetbyaddr.
14919if test "X$netdb_net_type" = X ; then
14920 case "$d_getnbyaddr" in
14921 $define)
14922 $cat <<EOM
14923
14924Checking to see what type of 1st argument is accepted by getnetbyaddr().
14925EOM
14926 hdrs="$define sys/types.h
14927 $d_socket sys/socket.h
14928 $i_niin netinet/in.h
14929 $i_netdb netdb.h
14930 $i_unistd unistd.h"
14931 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14932 case "$netdb_net_type" in
14933 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14934 if ./protochk "$try" $hdrs; then
14935 echo "Your system accepts $xxx."
14936 netdb_net_type="$xxx"
14937 fi
14938 ;;
14939 esac
14940 done
14941 : In case none of those worked, prompt the user.
14942 case "$netdb_net_type" in
14943 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14944 dflt='long'
14945 . ./myread
14946 netdb_net_type=$ans
14947 ;;
14948 esac
14949 ;;
14950 *) : no getnetbyaddr, so pick harmless default
14951 netdb_net_type='long'
14952 ;;
14953 esac
14954fi
14955: locate the preferred pager for this system
14956case "$pager" in
14957'')
14958 dflt=''
14959 case "$pg" in
14960 /*) dflt=$pg;;
14961 [a-zA-Z]:/*) dflt=$pg;;
14962 esac
14963 case "$more" in
14964 /*) dflt=$more;;
14965 [a-zA-Z]:/*) dflt=$more;;
14966 esac
14967 case "$less" in
14968 /*) dflt=$less;;
14969 [a-zA-Z]:/*) dflt=$less;;
14970 esac
14971 case "$dflt" in
14972 '') dflt=/usr/ucb/more;;
14973 esac
14974 ;;
14975*) dflt="$pager";;
14976esac
14977echo " "
14978fn=f/
14979rp='What pager is used on your system?'
14980. ./getfile
14981pager="$ans"
14982
14983: see what type pids are declared as in the kernel
14984rp="What is the type of process ids on this system?"
14985set pid_t pidtype int stdio.h sys/types.h
14986eval $typedef_ask
14987
14988: Find earliest binary compatible site_perl subdirectory perl can use.
14989case "$bincompat5005" in
14990"$define") xs_apiversion='5.005' ;;
14991*) xs_apiversion=$version ;; # The current site_perl version.
14992esac
14993: Find earliest pure perl site_perl subdirectory perl can use.
14994: The versioned directories started at 5.005.
14995pm_apiversion='5.005'
14996
b4eb6b3d
JH
14997: see if ar generates random libraries by itself
14998echo " "
14999echo "Checking how to generate random libraries on your machine..." >&4
15000echo 'int bar1() { return bar2(); }' > bar1.c
15001echo 'int bar2() { return 2; }' > bar2.c
15002$cat > foo.c <<'EOP'
15003int main() { printf("%d\n", bar1()); exit(0); }
15004EOP
15005$cc $ccflags -c bar1.c >/dev/null 2>&1
15006$cc $ccflags -c bar2.c >/dev/null 2>&1
15007$cc $ccflags -c foo.c >/dev/null 2>&1
15008$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 15009if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15010 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15011 echo "$ar appears to generate random libraries itself."
15012 orderlib=false
15013 ranlib=":"
15014elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 15015 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 15016 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
15017 echo "a table of contents needs to be added with '$ar ts'."
15018 orderlib=false
15019 ranlib="$ar ts"
15020else
15021 case "$ranlib" in
15022 :) ranlib='';;
15023 '')
15024 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15025 $test -f $ranlib || ranlib=''
15026 ;;
15027 esac
15028 if $test -n "$ranlib"; then
15029 echo "your system has '$ranlib'; we'll use that."
15030 orderlib=false
15031 else
15032 echo "your system doesn't seem to support random libraries"
15033 echo "so we'll use lorder and tsort to order the libraries."
15034 orderlib=true
15035 ranlib=":"
15036 fi
15037fi
15038$rm -f foo* bar*
15039
15040: check for type of arguments to select.
15041case "$selecttype" in
15042'') case "$d_select" in
15043 $define)
15044 echo " "
15045 $cat <<EOM
15046Checking to see what type of arguments are accepted by select().
15047EOM
15048 hdrs="$define sys/types.h
15049 $i_systime sys/time.h
15050 $i_sysselct sys/select.h
15051 $d_socket sys/socket.h"
15052 : The first arg can be int, unsigned, or size_t
15053 : The last arg may or may not be 'const'
15054 val=''
15055 : void pointer has been seen but using that
15056 : breaks the selectminbits test
15057 for xxx in 'fd_set *' 'int *'; do
15058 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15059 for tmo in 'struct timeval *' 'const struct timeval *'; do
15060 case "$val" in
15061 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15062 if ./protochk "$try" $hdrs; then
15063 echo "Your system accepts $xxx."
15064 val="$xxx"
15065 fi
15066 ;;
15067 esac
15068 done
15069 done
15070 done
15071 case "$val" in
15072 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15073 case "$d_fd_set" in
15074 $define) dflt="fd_set *" ;;
15075 *) dflt="int *" ;;
15076 esac
15077 . ./myread
15078 val=$ans
15079 ;;
15080 esac
15081 selecttype="$val"
15082 ;;
15083 *) : no select, so pick a harmless default
15084 selecttype='int *'
15085 ;;
15086 esac
15087 ;;
15088esac
15089
15090: check for the select 'width'
15091case "$selectminbits" in
15092'') case "$d_select" in
15093 $define)
15094 $cat <<EOM
15095
15096Checking to see on how many bits at a time your select() operates...
15097EOM
15098 $cat >try.c <<EOCP
15099#include <sys/types.h>
15100#$i_time I_TIME
15101#$i_systime I_SYS_TIME
15102#$i_systimek I_SYS_TIME_KERNEL
15103#ifdef I_TIME
15104# include <time.h>
15105#endif
15106#ifdef I_SYS_TIME
15107# ifdef I_SYS_TIME_KERNEL
15108# define KERNEL
15109# endif
15110# include <sys/time.h>
15111# ifdef I_SYS_TIME_KERNEL
15112# undef KERNEL
15113# endif
15114#endif
15115#$i_sysselct I_SYS_SELECT
15116#ifdef I_SYS_SELECT
15117#include <sys/select.h>
15118#endif
15119#$d_socket HAS_SOCKET
15120#ifdef HAS_SOCKET
15121# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15122#endif
15123#include <stdio.h>
15124$selecttype b;
15125#define S sizeof(*(b))
15126#define MINBITS 64
15127#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15128#define NBITS (NBYTES * 8)
15129int main() {
15130 char s[NBYTES];
15131 struct timeval t;
15132 int i;
15133 FILE* fp;
15134 int fd;
15135
15136 fclose(stdin);
15137 fp = fopen("try.c", "r");
15138 if (fp == 0)
15139 exit(1);
15140 fd = fileno(fp);
15141 if (fd < 0)
15142 exit(2);
15143 b = ($selecttype)s;
15144 for (i = 0; i < NBITS; i++)
15145 FD_SET(i, b);
15146 t.tv_sec = 0;
15147 t.tv_usec = 0;
15148 select(fd + 1, b, 0, 0, &t);
15149 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15150 printf("%d\n", i + 1);
15151 return 0;
15152}
15153EOCP
15154 set try
15155 if eval $compile_ok; then
5440bc8e 15156 selectminbits=`$run ./try`
b4eb6b3d
JH
15157 case "$selectminbits" in
15158 '') cat >&4 <<EOM
15159Cannot figure out on how many bits at a time your select() operates.
15160I'll play safe and guess it is 32 bits.
15161EOM
15162 selectminbits=32
15163 bits="32 bits"
15164 ;;
15165 1) bits="1 bit" ;;
15166 *) bits="$selectminbits bits" ;;
15167 esac
15168 echo "Your select() operates on $bits at a time." >&4
15169 else
15170 rp='What is the minimum number of bits your select() operates on?'
15171 case "$byteorder" in
15172 1234|12345678) dflt=32 ;;
15173 *) dflt=1 ;;
15174 esac
15175 . ./myread
15176 val=$ans
15177 selectminbits="$val"
15178 fi
15179 $rm -f try.* try
15180 ;;
15181 *) : no select, so pick a harmless default
15182 selectminbits='32'
15183 ;;
15184 esac
15185 ;;
15186esac
15187
15188: Trace out the files included by signal.h, then look for SIGxxx names.
15189: Remove SIGARRAYSIZE used by HPUX.
15190: Remove SIGSTKSIZE used by Linux.
15191: Remove SIGSTKSZ used by Posix.
15192: Remove SIGTYP void lines used by OS2.
15193: Some cpps, like os390, dont give the file name anywhere
15194if [ "X$fieldn" = X ]; then
15195 : Just make some guesses. We check them later.
15196 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15197else
15198 xxx=`echo '#include <signal.h>' |
15199 $cppstdin $cppminus $cppflags 2>/dev/null |
15200 $grep '^[ ]*#.*include' |
a938a3bb 15201 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15202fi
15203: Check this list of files to be sure we have parsed the cpp output ok.
15204: This will also avoid potentially non-existent files, such
15205: as ../foo/bar.h
15206xxxfiles=''
15207for xx in $xxx /dev/null ; do
15208 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15209done
15210: If we have found no files, at least try signal.h
15211case "$xxxfiles" in
15212'') xxxfiles=`./findhdr signal.h` ;;
15213esac
15214xxx=`awk '
15215$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15216 print substr($2, 4, 20)
15217}
15218$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15219 print substr($3, 4, 20)
15220}' $xxxfiles`
15221: Append some common names just in case the awk scan failed.
15222xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15223xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15224xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15225xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15226xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15227
15228: generate a few handy files for later
15229$cat > signal.c <<'EOCP'
15230#include <sys/types.h>
15231#include <signal.h>
15232#include <stdio.h>
15233int main() {
15234
15235/* Strange style to avoid deeply-nested #if/#else/#endif */
15236#ifndef NSIG
15237# ifdef _NSIG
15238# define NSIG (_NSIG)
15239# endif
15240#endif
15241
15242#ifndef NSIG
15243# ifdef SIGMAX
15244# define NSIG (SIGMAX+1)
15245# endif
15246#endif
15247
15248#ifndef NSIG
15249# ifdef SIG_MAX
15250# define NSIG (SIG_MAX+1)
15251# endif
15252#endif
15253
15254#ifndef NSIG
15255# ifdef MAXSIG
15256# define NSIG (MAXSIG+1)
15257# endif
15258#endif
15259
15260#ifndef NSIG
15261# ifdef MAX_SIG
15262# define NSIG (MAX_SIG+1)
15263# endif
15264#endif
15265
15266#ifndef NSIG
15267# ifdef SIGARRAYSIZE
15268# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15269# endif
15270#endif
15271
15272#ifndef NSIG
15273# ifdef _sys_nsig
15274# define NSIG (_sys_nsig) /* Solaris 2.5 */
15275# endif
15276#endif
15277
15278/* Default to some arbitrary number that's big enough to get most
15279 of the common signals.
15280*/
15281#ifndef NSIG
15282# define NSIG 50
15283#endif
15284
15285printf("NSIG %d\n", NSIG);
15286
15287#ifndef JUST_NSIG
15288
15289EOCP
15290
15291echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15292{
15293 printf "#ifdef SIG"; printf $1; printf "\n"
15294 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15295 printf $1; printf ");\n"
15296 printf "#endif\n"
15297}
15298END {
15299 printf "#endif /* JUST_NSIG */\n";
15300 printf "exit(0);\n}\n";
15301}
15302' >>signal.c
15303$cat >signal.awk <<'EOP'
15304BEGIN { ndups = 0 }
15305$1 ~ /^NSIG$/ { nsig = $2 }
15306($1 !~ /^NSIG$/) && (NF == 2) {
15307 if ($2 > maxsig) { maxsig = $2 }
15308 if (sig_name[$2]) {
15309 dup_name[ndups] = $1
15310 dup_num[ndups] = $2
15311 ndups++
15312 }
15313 else {
15314 sig_name[$2] = $1
15315 sig_num[$2] = $2
15316 }
15317}
15318END {
15319 if (nsig == 0) {
15320 nsig = maxsig + 1
15321 }
15322 printf("NSIG %d\n", nsig);
15323 for (n = 1; n < nsig; n++) {
15324 if (sig_name[n]) {
15325 printf("%s %d\n", sig_name[n], sig_num[n])
15326 }
15327 else {
15328 printf("NUM%d %d\n", n, n)
15329 }
15330 }
15331 for (n = 0; n < ndups; n++) {
15332 printf("%s %d\n", dup_name[n], dup_num[n])
15333 }
15334}
15335EOP
15336$cat >signal_cmd <<EOS
15337$startsh
15338if $test -s signal.lst; then
15339 echo "Using your existing signal.lst file"
15340 exit 0
15341fi
15342xxx="$xxx"
15343EOS
15344$cat >>signal_cmd <<'EOS'
15345
15346set signal
15347if eval $compile_ok; then
5440bc8e 15348 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15349else
15350 echo "(I can't seem be able to compile the whole test program)" >&4
15351 echo "(I'll try it in little pieces.)" >&4
15352 set signal -DJUST_NSIG
15353 if eval $compile_ok; then
5440bc8e 15354 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15355 $cat signal.nsg
15356 else
15357 echo "I can't seem to figure out how many signals you have." >&4
15358 echo "Guessing 50." >&4
15359 echo 'NSIG 50' > signal.nsg
15360 fi
15361 : Now look at all the signal names, one at a time.
15362 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15363 $cat > signal.c <<EOCP
15364#include <sys/types.h>
15365#include <signal.h>
15366#include <stdio.h>
15367int main() {
15368printf("$xx %d\n", SIG${xx});
15369return 0;
15370}
15371EOCP
15372 set signal
15373 if eval $compile; then
15374 echo "SIG${xx} found."
5440bc8e 15375 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15376 else
15377 echo "SIG${xx} NOT found."
15378 fi
15379 done
15380 if $test -s signal.ls1; then
15381 $cat signal.nsg signal.ls1 |
15382 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15383 fi
15384
15385fi
15386if $test -s signal.lst; then
15387 :
15388else
15389 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15390 echo 'kill -l' >signal
15391 set X `csh -f <signal`
15392 $rm -f signal
15393 shift
15394 case $# in
15395 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15396 esac
15397 echo $@ | $tr ' ' $trnl | \
15398 $awk '{ printf "%s %d\n", $1, ++s; }
15399 END { printf "NSIG %d\n", ++s }' >signal.lst
15400fi
15401$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15402EOS
15403chmod a+x signal_cmd
15404$eunicefix signal_cmd
15405
15406: generate list of signal names
15407echo " "
15408case "$sig_name_init" in
15409'') doinit=yes ;;
15410*) case "$sig_num_init" in
15411 ''|*,*) doinit=yes ;;
15412 esac ;;
15413esac
15414case "$doinit" in
15415yes)
15416 echo "Generating a list of signal names and numbers..." >&4
15417 . ./signal_cmd
15418 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15419 sig_name=`$awk 'BEGIN { printf "ZERO " }
15420 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15421 sig_num=`$awk 'BEGIN { printf "0 " }
15422 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15423 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15424 !/^NSIG/ { printf "\"%s\", ", $1 }
15425 END { printf "0\n" }' signal.lst`
15426 sig_num_init=`$awk 'BEGIN { printf "0, " }
15427 !/^NSIG/ { printf "%d, ", $2}
15428 END { printf "0\n"}' signal.lst`
15429 ;;
15430esac
15431echo "The following $sig_count signals are available:"
15432echo " "
15433echo $sig_name | $awk \
15434'BEGIN { linelen = 0 }
15435{
15436 for (i = 1; i <= NF; i++) {
15437 name = "SIG" $i " "
15438 linelen = linelen + length(name)
15439 if (linelen > 70) {
15440 printf "\n"
15441 linelen = length(name)
15442 }
15443 printf "%s", name
15444 }
15445 printf "\n"
15446}'
76d3c696 15447sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15448$rm -f signal signal.c signal.awk signal.lst signal_cmd
15449
15450echo " "
15451case "$sizetype" in
15452*_t) zzz="$sizetype" ;;
15453*) zzz="filesize" ;;
15454esac
15455echo "Checking the size of $zzz..." >&4
15456cat > try.c <<EOCP
15457#include <sys/types.h>
15458#include <stdio.h>
15459int main() {
15460 printf("%d\n", (int)sizeof($sizetype));
15461 exit(0);
15462}
15463EOCP
15464set try
15465if eval $compile_ok; then
5440bc8e 15466 yyy=`$run ./try`
b4eb6b3d
JH
15467 case "$yyy" in
15468 '') sizesize=4
15469 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15470 ;;
15471 *) sizesize=$yyy
15472 echo "Your $zzz size is $sizesize bytes."
15473 ;;
15474 esac
15475else
15476 sizesize=4
15477 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15478fi
15479
15480
15481: check for socklen_t
15482echo " "
15483echo "Checking to see if you have socklen_t..." >&4
15484$cat >try.c <<EOCP
15485#include <sys/types.h>
15486#$d_socket HAS_SOCKET
15487#ifdef HAS_SOCKET
15488#include <sys/socket.h>
15489#endif
15490int main() { socklen_t x = 16; }
15491EOCP
15492set try
15493if eval $compile; then
15494 val="$define"
15495 echo "You have socklen_t."
15496else
15497 val="$undef"
15498 echo "You do not have socklen_t."
15499 case "$sizetype" in
15500 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15501 esac
15502fi
15503$rm -f try try.*
15504set d_socklen_t
15505eval $setvar
15506
a7710f8d
JH
15507: see if this is a socks.h system
15508set socks.h i_socks
15509eval $inhdr
15510
b4eb6b3d
JH
15511: check for type of the size argument to socket calls
15512case "$d_socket" in
15513"$define")
15514 $cat <<EOM
15515
15516Checking to see what type is the last argument of accept().
15517EOM
b4eb6b3d
JH
15518 yyy=''
15519 case "$d_socklen_t" in
15520 "$define") yyy="$yyy socklen_t"
15521 esac
15522 yyy="$yyy $sizetype int long unsigned"
15523 for xxx in $yyy; do
15524 case "$socksizetype" in
15525 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15526 case "$usesocks" in
15527 "$define")
15528 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15529 echo "Your system accepts '$xxx *' for the last argument of accept()."
15530 socksizetype="$xxx"
15531 fi
15532 ;;
15533 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15534 echo "Your system accepts '$xxx *' for the last argument of accept()."
15535 socksizetype="$xxx"
15536 fi
15537 ;;
15538 esac
b4eb6b3d
JH
15539 ;;
15540 esac
15541 done
15542: In case none of those worked, prompt the user.
15543 case "$socksizetype" in
15544 '') rp='What is the type for socket address structure sizes?'
15545 dflt='int'
15546 . ./myread
15547 socksizetype=$ans
15548 ;;
15549 esac
15550 ;;
15551*) : no sockets, so pick relatively harmless default
15552 socksizetype='int'
15553 ;;
15554esac
15555
15556: see what type is used for signed size_t
15557set ssize_t ssizetype int stdio.h sys/types.h
15558eval $typedef
15559dflt="$ssizetype"
5440bc8e 15560$cat > try.c <<EOM
b4eb6b3d
JH
15561#include <stdio.h>
15562#include <sys/types.h>
15563#define Size_t $sizetype
15564#define SSize_t $dflt
15565int main()
15566{
15567 if (sizeof(Size_t) == sizeof(SSize_t))
15568 printf("$dflt\n");
15569 else if (sizeof(Size_t) == sizeof(int))
15570 printf("int\n");
15571 else
15572 printf("long\n");
15573 exit(0);
15574}
15575EOM
15576echo " "
5440bc8e
JH
15577set try
15578if eval $compile_ok && $run ./try > /dev/null; then
15579 ssizetype=`$run ./try`
b4eb6b3d
JH
15580 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15581else
15582 $cat >&4 <<EOM
15583Help! I can't compile and run the ssize_t test program: please enlighten me!
15584(This is probably a misconfiguration in your system or libraries, and
15585you really ought to fix it. Still, I'll try anyway.)
15586
15587I need a type that is the same size as $sizetype, but is guaranteed to
15588be signed. Common values are ssize_t, int and long.
15589
15590EOM
15591 rp="What signed type is the same size as $sizetype?"
15592 . ./myread
15593 ssizetype="$ans"
15594fi
5440bc8e 15595$rm -f try try.*
b4eb6b3d
JH
15596
15597: see what type of char stdio uses.
15598echo " "
aa517f50
JH
15599echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15600if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15601 echo "Your stdio uses unsigned chars." >&4
15602 stdchar="unsigned char"
15603else
aa517f50
JH
15604 echo "Your stdio uses signed chars." >&4
15605 stdchar="char"
b4eb6b3d 15606fi
aa517f50
JH
15607$rm -f stdioh
15608
15609
b4eb6b3d
JH
15610
15611: see if time exists
15612echo " "
15613if test "X$d_time" = X -o X"$timetype" = X; then
15614 if set time val -f d_time; eval $csym; $val; then
15615 echo 'time() found.' >&4
15616 val="$define"
15617 rp="What is the type returned by time() on this system?"
15618 set time_t timetype long stdio.h sys/types.h
15619 eval $typedef_ask
15620 else
15621 echo 'time() not found, hope that will do.' >&4
15622 val="$undef"
15623 timetype='int';
15624 fi
15625 set d_time
15626 eval $setvar
15627fi
15628
15629: see what type uids are declared as in the kernel
15630echo " "
15631echo "Looking for the type for user ids returned by getuid()."
15632set uid_t uidtype xxx stdio.h sys/types.h
15633eval $typedef
15634case "$uidtype" in
15635xxx)
15636 xxx=`./findhdr sys/user.h`
15637 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15638 case $1 in
15639 unsigned) dflt="$1 $2" ;;
15640 *) dflt="$1" ;;
15641 esac
15642 ;;
15643*) dflt="$uidtype";;
15644esac
15645case "$uidtype" in
15646uid_t) echo "uid_t found." ;;
15647*) rp="What is the type for user ids returned by getuid()?"
15648 . ./myread
15649 uidtype="$ans"
15650 ;;
15651esac
15652
15653echo " "
15654case "$uidtype" in
15655*_t) zzz="$uidtype" ;;
15656*) zzz="uid" ;;
15657esac
15658echo "Checking the size of $zzz..." >&4
15659cat > try.c <<EOCP
15660#include <sys/types.h>
15661#include <stdio.h>
15662int main() {
15663 printf("%d\n", (int)sizeof($uidtype));
15664 exit(0);
15665}
15666EOCP
15667set try
15668if eval $compile_ok; then
5440bc8e 15669 yyy=`$run ./try`
b4eb6b3d
JH
15670 case "$yyy" in
15671 '') uidsize=4
15672 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15673 ;;
15674 *) uidsize=$yyy
15675 echo "Your $zzz is $uidsize bytes long."
15676 ;;
15677 esac
15678else
15679 uidsize=4
15680 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15681fi
15682
15683echo " "
15684case "$uidtype" in
15685*_t) zzz="$uidtype" ;;
15686*) zzz="uid" ;;
15687esac
15688echo "Checking the sign of $zzz..." >&4
15689cat > try.c <<EOCP
15690#include <sys/types.h>
15691#include <stdio.h>
15692int main() {
15693 $uidtype foo = -1;
15694 if (foo < 0)
15695 printf("-1\n");
15696 else
15697 printf("1\n");
15698}
15699EOCP
15700set try
15701if eval $compile; then
5440bc8e 15702 yyy=`$run ./try`
b4eb6b3d
JH
15703 case "$yyy" in
15704 '') uidsign=1
15705 echo "(I can't execute the test program--guessing unsigned.)" >&4
15706 ;;
15707 *) uidsign=$yyy
15708 case "$uidsign" in
15709 1) echo "Your $zzz is unsigned." ;;
15710 -1) echo "Your $zzz is signed." ;;
15711 esac
15712 ;;
15713 esac
15714else
15715 uidsign=1
15716 echo "(I can't compile the test program--guessing unsigned.)" >&4
15717fi
15718
15719
15720
15721echo " "
15722$echo "Checking the format string to be used for uids..." >&4
15723
15724case "$uidsign" in
15725-1) if $test X"$uidsize" = X"$ivsize"; then
15726 uidformat="$ivdformat"
15727 else
15728 if $test X"$uidsize" = X"$longsize"; then
15729 uidformat='"ld"'
15730 else
15731 if $test X"$uidsize" = X"$intsize"; then
15732 uidformat='"d"'
15733 else
15734 if $test X"$uidsize" = X"$shortsize"; then
15735 uidformat='"hd"'
15736 fi
15737 fi
15738 fi
15739 fi
15740 ;;
15741*) if $test X"$uidsize" = X"$uvsize"; then
15742 uidformat="$uvuformat"
15743 else
15744 if $test X"$uidsize" = X"$longsize"; then
15745 uidformat='"lu"'
15746 else
15747 if $test X"$uidsize" = X"$intsize"; then
15748 uidformat='"u"'
15749 else
15750 if $test X"$uidsize" = X"$shortsize"; then
15751 uidformat='"hu"'
15752 fi
15753 fi
15754 fi
15755 fi
15756 ;;
15757esac
15758
3659ebf1
JH
15759: determine compiler compiler
15760case "$yacc" in
15761'')
15762 dflt=yacc;;
15763*)
15764 dflt="$yacc";;
15765esac
15766echo " "
15767comp='yacc'
15768if $test -f "$byacc"; then
15769 dflt="$byacc"
15770 comp="byacc or $comp"
15771fi
15772if $test -f "$bison"; then
15773 comp="$comp or bison -y"
15774fi
15775rp="Which compiler compiler ($comp) shall I use?"
15776. ./myread
15777yacc="$ans"
15778case "$yacc" in
15779*bis*)
15780 case "$yacc" in
15781 *-y*) ;;
15782 *)
15783 yacc="$yacc -y"
15784 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15785 ;;
15786 esac
15787 ;;
15788esac
15789
b4eb6b3d
JH
15790: see if fcntl.h is there
15791val=''
15792set fcntl.h val
15793eval $inhdr
15794
15795: see if we can include fcntl.h
15796case "$val" in
15797"$define")
15798 echo " "
15799 if $h_fcntl; then
15800 val="$define"
15801 echo "We'll be including <fcntl.h>." >&4
15802 else
15803 val="$undef"
15804 if $h_sysfile; then
15805 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15806 else
15807 echo "We won't be including <fcntl.h>." >&4
15808 fi
15809 fi
15810 ;;
15811*)
15812 h_fcntl=false
15813 val="$undef"
15814 ;;
15815esac
15816set i_fcntl
15817eval $setvar
15818
758a5d79
JH
15819: see if this is a fp.h system
15820set fp.h i_fp
15821eval $inhdr
15822
15823: see if this is a fp_class.h system
15824set fp_class.h i_fp_class
15825eval $inhdr
15826
b4eb6b3d
JH
15827: see if this is a ieeefp.h system
15828set ieeefp.h i_ieeefp
15829eval $inhdr
15830
15831: see if this is a libutil.h system
15832set libutil.h i_libutil
15833eval $inhdr
15834
15835: see if locale.h is available
15836set locale.h i_locale
15837eval $inhdr
15838
15839: see if mach cthreads are available
15840if test "X$usethreads" = "X$define"; then
15841 set mach/cthreads.h i_machcthr
15842 eval $inhdr
15843else
15844 i_machcthr="$undef"
15845fi
15846
15847
15848
15849: see if this is a math.h system
15850set math.h i_math
15851eval $inhdr
15852
15853: see if this is a mntent.h system
15854set mntent.h i_mntent
15855eval $inhdr
15856
15857: see if ndbm.h is available
15858set ndbm.h t_ndbm
15859eval $inhdr
15860case "$t_ndbm" in
15861$define)
15862 : see if dbm_open exists
15863 set dbm_open d_dbm_open
15864 eval $inlibc
15865 case "$d_dbm_open" in
15866 $undef)
15867 t_ndbm="$undef"
15868 echo "We won't be including <ndbm.h>"
15869 ;;
15870 esac
15871 ;;
15872esac
15873val="$t_ndbm"
15874set i_ndbm
15875eval $setvar
15876
15877: see if net/errno.h is available
15878val=''
15879set net/errno.h val
15880eval $inhdr
15881
15882: Unfortunately, it causes problems on some systems. Arrgh.
15883case "$val" in
15884$define)
15885 cat > try.c <<'EOM'
15886#include <stdio.h>
15887#include <errno.h>
15888#include <net/errno.h>
15889int func()
15890{
15891 return ENOTSOCK;
15892}
15893EOM
15894 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15895 echo "We'll be including <net/errno.h>." >&4
15896 else
15897 echo "We won't be including <net/errno.h>." >&4
15898 val="$undef"
15899 fi
15900 $rm -f try.* try
15901 ;;
15902esac
15903set i_neterrno
15904eval $setvar
15905
15906: see if netinet/tcp.h is available
15907set netinet/tcp.h i_netinettcp
15908eval $inhdr
15909
15910: see if this is a poll.h system
15911set poll.h i_poll
15912eval $inhdr
15913
15914: see if this is a prot.h system
15915set prot.h i_prot
15916eval $inhdr
15917
15918echo " "
15919$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15920$cat <<'EOSH' > Cppsym.know
15921a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15922AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
15923alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15924ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15925BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
15926BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15927bull c cadmus clipper CMU COFF COMPILER_VERSION
15928concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15929CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
4f17444b
JH
15930Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15931FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15932GLIBC GLIBC_MINOR
15933GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
b4eb6b3d
JH
15934H3050R H3050RX hbullx20 hcx host_mips
15935hp200 hp300 hp700 HP700 hp800 hp9000
15936hp9000s200 hp9000s300 hp9000s400 hp9000s500
15937hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15938i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 15939IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
15940INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15941LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15942LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15943Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15944LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15945M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15946M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15947M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15948MATH_HAS_NO_SIDE_EFFECTS
15949mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15950mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15951mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15952MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15953mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15954NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15955news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15956ns32016 ns32332 ns32k nsc32000
15957OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15958pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15959pc532 pdp11 PGC PIC plexus PORTAR posix
15960POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15961POSIX_C_SOURCE POSIX_SOURCE POWER
15962PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 15963riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
15964SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15965sony sony_news sonyrisc sparc sparclite spectrum
15966stardent stdc STDC_EXT stratos sun sun3 sun386
15967Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15968SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15969SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15970sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 15971TM3200 TM5400 TM5600
b4eb6b3d
JH
15972tower tower32 tower32_200 tower32_600 tower32_700
15973tower32_800 tower32_850 tss
15974u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15975ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
4f17444b
JH
15976unix UNIX95 UNIX99 unixpc unos
15977USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15978USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15979USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15980USGr4 USGr4_2
b4eb6b3d
JH
15981Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15982XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15983XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15984z8000
15985EOSH
15986# Maybe put other stuff here too.
15987cat <<EOSH >>Cppsym.know
15988$osname
15989EOSH
15990./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15991./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15992$cat Cppsym.know > Cppsym.c
381aa1ff 15993$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15994$rm -f Cppsym.a Cppsym.b Cppsym.c
15995cat <<EOSH > Cppsym
15996$startsh
15997if $test \$# -gt 0; then
15998 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15999 if $test -s Cppsym.got; then
16000 $rm -f Cppsym.got
16001 exit 0
16002 fi
16003 $rm -f Cppsym.got
16004 exit 1
16005else
16006 $tr " " "$trnl" | ./Cppsym.try
16007 exit 0
16008fi
16009EOSH
16010chmod +x Cppsym
16011$eunicefix Cppsym
16012cat <<EOSH > Cppsym.try
16013$startsh
16014cat <<'EOCP' > try.c
16015#include <stdio.h>
16016int main() {
16017EOCP
16018$awk \\
16019EOSH
16020cat <<'EOSH' >> Cppsym.try
16021'length($1) > 0 {
2ef53570
JH
16022 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
16023 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
16024 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
16025 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 16026}' >> try.c
2ef53570 16027echo 'return 0;}' >> try.c
b4eb6b3d
JH
16028EOSH
16029cat <<EOSH >> Cppsym.try
16030ccflags="$ccflags"
16031case "$osname-$gccversion" in
16032irix-) ccflags="\$ccflags -woff 1178" ;;
16033os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16034esac
5440bc8e 16035$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
16036EOSH
16037chmod +x Cppsym.try
16038$eunicefix Cppsym.try
16039./Cppsym < Cppsym.know > Cppsym.true
16040: now check the C compiler for additional symbols
16041postprocess_cc_v=''
16042case "$osname" in
16043aix) postprocess_cc_v="|$tr , ' '" ;;
16044esac
16045$cat >ccsym <<EOS
16046$startsh
16047$cat >tmp.c <<EOF
16048extern int foo;
16049EOF
16050for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16051do
16052 case "\$i" in
16053 -D*) echo "\$i" | $sed 's/^-D//';;
16054 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16055 esac
16056done
16057$rm -f try.c
16058EOS
16059postprocess_cc_v=''
16060chmod +x ccsym
16061$eunicefix ccsym
16062./ccsym > ccsym1.raw
16063if $test -s ccsym1.raw; then
16064 $sort ccsym1.raw | $uniq >ccsym.raw
16065else
16066 mv ccsym1.raw ccsym.raw
16067fi
16068
16069$awk '/\=/ { print $0; next }
16070 { print $0"=1" }' ccsym.raw >ccsym.list
16071$awk '/\=/ { print $0; next }
16072 { print $0"=1" }' Cppsym.true >ccsym.true
16073$comm -13 ccsym.true ccsym.list >ccsym.own
16074$comm -12 ccsym.true ccsym.list >ccsym.com
16075$comm -23 ccsym.true ccsym.list >ccsym.cpp
16076also=''
16077if $test -z ccsym.raw; then
16078 echo "Your C compiler doesn't seem to define any symbols!" >&4
16079 echo " "
16080 echo "However, your C preprocessor defines the following symbols:"
16081 $cat Cppsym.true
16082 ccsymbols=''
16083 cppsymbols=`$cat Cppsym.true`
16084 cppsymbols=`echo $cppsymbols`
16085 cppccsymbols="$cppsymbols"
16086else
16087 if $test -s ccsym.com; then
16088 echo "Your C compiler and pre-processor define these symbols:"
16089 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16090 also='also '
16091 symbols='ones'
16092 cppccsymbols=`$cat ccsym.com`
16093 cppccsymbols=`echo $cppccsymbols`
16094 $test "$silent" || sleep 1
16095 fi
16096 if $test -s ccsym.cpp; then
16097 $test "$also" && echo " "
16098 echo "Your C pre-processor ${also}defines the following symbols:"
16099 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16100 also='further '
16101 cppsymbols=`$cat ccsym.cpp`
16102 cppsymbols=`echo $cppsymbols`
16103 $test "$silent" || sleep 1
16104 fi
16105 if $test -s ccsym.own; then
16106 $test "$also" && echo " "
16107 echo "Your C compiler ${also}defines the following cpp symbols:"
16108 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16109 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16110 ccsymbols=`$cat ccsym.own`
16111 ccsymbols=`echo $ccsymbols`
16112 $test "$silent" || sleep 1
16113 fi
16114fi
b4eb6b3d
JH
16115
16116: see if this is a termio system
16117val="$undef"
16118val2="$undef"
16119val3="$undef"
16120if $test `./findhdr termios.h`; then
16121 set tcsetattr i_termios
16122 eval $inlibc
16123 val3="$i_termios"
16124fi
16125echo " "
16126case "$val3" in
16127"$define") echo "You have POSIX termios.h... good!" >&4;;
16128*) if ./Cppsym pyr; then
16129 case "`/bin/universe`" in
16130 ucb) if $test `./findhdr sgtty.h`; then
16131 val2="$define"
16132 echo "<sgtty.h> found." >&4
16133 else
16134 echo "System is pyramid with BSD universe."
16135 echo "<sgtty.h> not found--you could have problems." >&4
16136 fi;;
16137 *) if $test `./findhdr termio.h`; then
16138 val="$define"
16139 echo "<termio.h> found." >&4
16140 else
16141 echo "System is pyramid with USG universe."
16142 echo "<termio.h> not found--you could have problems." >&4
16143 fi;;
16144 esac
16145 elif ./usg; then
16146 if $test `./findhdr termio.h`; then
16147 echo "<termio.h> found." >&4
16148 val="$define"
16149 elif $test `./findhdr sgtty.h`; then
16150 echo "<sgtty.h> found." >&4
16151 val2="$define"
16152 else
16153echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16154 fi
16155 else
16156 if $test `./findhdr sgtty.h`; then
16157 echo "<sgtty.h> found." >&4
16158 val2="$define"
16159 elif $test `./findhdr termio.h`; then
16160 echo "<termio.h> found." >&4
16161 val="$define"
16162 else
16163echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16164 fi
16165 fi;;
16166esac
16167set i_termio; eval $setvar
16168val=$val2; set i_sgtty; eval $setvar
16169val=$val3; set i_termios; eval $setvar
16170
16171: see if this is a shadow.h system
16172set shadow.h i_shadow
16173eval $inhdr
16174
b4eb6b3d
JH
16175: see if stddef is available
16176set stddef.h i_stddef
16177eval $inhdr
923fc586 16178
b4eb6b3d
JH
16179: see if this is a sunmath.h system
16180set sunmath.h i_sunmath
16181eval $inhdr
5f80c64f 16182
b4eb6b3d
JH
16183: see if sys/access.h is available
16184set sys/access.h i_sysaccess
16185eval $inhdr
16186
16187: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16188set sys/filio.h i_sysfilio
16189eval $inhdr
16190echo " "
16191if $test `./findhdr sys/ioctl.h`; then
16192 val="$define"
16193 echo '<sys/ioctl.h> found.' >&4
16194else
16195 val="$undef"
16196 if $test $i_sysfilio = "$define"; then
16197 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16198 else
b4eb6b3d
JH
16199 $test $i_sgtty = "$define" && xxx="sgtty.h"
16200 $test $i_termio = "$define" && xxx="termio.h"
16201 $test $i_termios = "$define" && xxx="termios.h"
16202echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16203 fi
16204fi
16205set i_sysioctl
16206eval $setvar
16207
49a78c82
JH
16208: see if socket ioctl defs are in sys/sockio.h
16209echo " "
16210xxx=`./findhdr sys/sockio.h`
16211if $test "$xxx"; then
16212 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16213 val="$define"
16214 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16215 else
16216 val="$undef"
16217 echo "No socket ioctls found in <sys/sockio.h>." >&4
16218 fi
16219else
16220 val="$undef"
16221 $cat <<EOM
16222<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16223EOM
16224fi
16225set i_syssockio
16226eval $setvar
16227
b4eb6b3d
JH
16228
16229: see if this is a syslog.h system
16230set syslog.h i_syslog
16231eval $inhdr
16232
16233
16234: see if this is a sys/mode.h system
16235set sys/mode.h i_sysmode
16236eval $inhdr
16237
16238: see if sys/resource.h has to be included
16239set sys/resource.h i_sysresrc
16240eval $inhdr
16241
16242: see if sys/security.h is available
16243set sys/security.h i_syssecrt
16244eval $inhdr
16245
16246: see if this is a sys/statvfs.h system
16247set sys/statvfs.h i_sysstatvfs
16248eval $inhdr
16249
b4eb6b3d
JH
16250: see if this is a sys/un.h system
16251set sys/un.h i_sysun
16252eval $inhdr
16253
16254
16255: see if this is a sys/utsname.h system
16256set sys/utsname.h i_sysutsname
16257eval $inhdr
16258
16259: see if this is a syswait system
16260set sys/wait.h i_syswait
16261eval $inhdr
16262
16263: see if this is a ustat.h system
16264set ustat.h i_ustat
16265eval $inhdr
16266
16267: see if this is an utime system
16268set utime.h i_utime
16269eval $inhdr
16270
16271: see if this is a values.h system
16272set values.h i_values
16273eval $inhdr
16274
16275: see if this is a vfork system
16276case "$d_vfork" in
16277"$define")
16278 set vfork.h i_vfork
16279 eval $inhdr
16280 ;;
16281*)
16282 i_vfork="$undef"
16283 ;;
16284esac
16285
16286: see if gdbm.h is available
16287set gdbm.h t_gdbm
16288eval $inhdr
16289case "$t_gdbm" in
16290$define)
16291 : see if gdbm_open exists
16292 set gdbm_open d_gdbm_open
16293 eval $inlibc
16294 case "$d_gdbm_open" in
16295 $undef)
16296 t_gdbm="$undef"
16297 echo "We won't be including <gdbm.h>"
5f80c64f 16298 ;;
b4eb6b3d
JH
16299 esac
16300 ;;
16301esac
16302val="$t_gdbm"
16303set i_gdbm
16304eval $setvar
16305
16306echo " "
16307echo "Looking for extensions..." >&4
16308: If we are using the old config.sh, known_extensions may contain
16309: old or inaccurate or duplicate values.
16310known_extensions=''
16311nonxs_extensions=''
16312: We do not use find because it might not be available.
16313: We do not just use MANIFEST because the user may have dropped
16314: some additional extensions into the source tree and expect them
16315: to be built.
16316
16317: Function to recursively find available extensions, ignoring DynaLoader
16318: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16319find_extensions='
16320 for xxx in *; do
16321 case "$xxx" in
16322 DynaLoader|dynaload) ;;
16323 *)
16324 if $test -f $xxx/$xxx.xs; then
16325 known_extensions="$known_extensions $1$xxx";
16326 elif $test -f $xxx/Makefile.PL; then
16327 nonxs_extensions="$nonxs_extensions $1$xxx";
16328 else
16329 if $test -d $xxx -a $# -lt 10; then
16330 set $1$xxx/ $*;
16331 cd $xxx;
16332 eval $find_extensions;
16333 cd ..;
16334 shift;
16335 fi;
16336 fi
16337 ;;
16338 esac;
16339 done'
16340tdir=`pwd`
16341cd $rsrc/ext
16342set X
16343shift
16344eval $find_extensions
16345set X $nonxs_extensions
16346shift
16347nonxs_extensions="$*"
16348set X $known_extensions
16349shift
16350known_extensions="$*"
16351cd $tdir
16352
16353: Now see which are supported on this system.
16354avail_ext=''
16355for xxx in $known_extensions ; do
16356 case "$xxx" in
16357 DB_File|db_file)
16358 case "$i_db" in
16359 $define) avail_ext="$avail_ext $xxx" ;;
16360 esac
16361 ;;
16362 GDBM_File|gdbm_fil)
16363 case "$i_gdbm" in
16364 $define) avail_ext="$avail_ext $xxx" ;;
16365 esac
16366 ;;
1d59c593 16367 I18N/Langinfo|i18n_lan)
4bbcc6e8
JH
16368 case "$i_langinfo$d_nl_langinfo" in
16369 $define$define) avail_ext="$avail_ext $xxx" ;;
16370 esac
16371 ;;
b4eb6b3d
JH
16372 NDBM_File|ndbm_fil)
16373 case "$i_ndbm" in
16374 $define)
16375 case "$osname-$use64bitint" in
252f4fb1 16376 cygwin-*|hpux-define)
b4eb6b3d
JH
16377 case "$libs" in
16378 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16379 esac
16380 ;;
16381 *) avail_ext="$avail_ext $xxx" ;;
16382 esac
16383 ;;
16384 esac
16385 ;;
16386 ODBM_File|odbm_fil)
16387 case "${i_dbm}${i_rpcsvcdbm}" in
16388 *"${define}"*)
16389 case "$osname-$use64bitint" in
252f4fb1 16390 cygwin-*|hpux-define)
b4eb6b3d
JH
16391 case "$libs" in
16392 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16393 esac
16394 ;;
16395 *) avail_ext="$avail_ext $xxx" ;;
16396 esac
16397 ;;
16398 esac
16399 ;;
16400 POSIX|posix)
16401 case "$useposix" in
16402 true|define|y) avail_ext="$avail_ext $xxx" ;;
16403 esac
16404 ;;
16405 Opcode|opcode)
16406 case "$useopcode" in
16407 true|define|y) avail_ext="$avail_ext $xxx" ;;
16408 esac
16409 ;;
16410 Socket|socket)
16411 case "$d_socket" in
16412 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16413 esac
16414 ;;
16415 Sys/Syslog|sys/syslog)
16416 : XXX syslog requires socket
16417 case "$d_socket" in
16418 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16419 esac
16420 ;;
16421 Thread|thread)
b00ec89b
AB
16422 case "$usethreads" in
16423 true|$define|y)
16424 case "$useithreads" in
16425 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16426 esac
b4eb6b3d
JH
16427 esac
16428 ;;
1dca008a
JH
16429 threads)
16430 case "$usethreads" in
16431 true|$define|y)
16432 case "$useithreads" in
16433 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16434 esac
16435 esac
16436 ;;
b4eb6b3d
JH
16437 IPC/SysV|ipc/sysv)
16438 : XXX Do we need a useipcsysv variable here
16439 case "${d_msg}${d_sem}${d_shm}" in
16440 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16441 esac
16442 ;;
16443 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16444 ;;
16445 esac
b4eb6b3d 16446done
5f80c64f 16447
b4eb6b3d
JH
16448set X $avail_ext
16449shift
16450avail_ext="$*"
5f80c64f 16451
b4eb6b3d
JH
16452: Now see which nonxs extensions are supported on this system.
16453: For now assume all are.
16454nonxs_ext=''
16455for xxx in $nonxs_extensions ; do
16456 case "$xxx" in
16457 *) nonxs_ext="$nonxs_ext $xxx"
16458 ;;
16459 esac
16460done
5f80c64f 16461
b4eb6b3d
JH
16462set X $nonxs_ext
16463shift
16464nonxs_ext="$*"
16465
16466case $usedl in
16467$define)
16468 $cat <<EOM
16469A number of extensions are supplied with $package. You may choose to
16470compile these extensions for dynamic loading (the default), compile
16471them into the $package executable (static loading), or not include
16472them at all. Answer "none" to include no extensions.
16473Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16474
16475EOM
b4eb6b3d
JH
16476 case "$dynamic_ext" in
16477 '') dflt="$avail_ext" ;;
16478 *) dflt="$dynamic_ext"
16479 # Perhaps we are reusing an old out-of-date config.sh.
16480 case "$hint" in
16481 previous)
16482 if test X"$dynamic_ext" != X"$avail_ext"; then
16483 $cat <<EOM
16484NOTICE: Your previous config.sh list may be incorrect.
16485The extensions now available to you are
16486 ${avail_ext}
16487but the default list from your previous config.sh is
16488 ${dynamic_ext}
9c839522 16489
b4eb6b3d
JH
16490EOM
16491 fi
9c839522
PM
16492 ;;
16493 esac
b4eb6b3d
JH
16494 ;;
16495 esac
5f80c64f 16496 case "$dflt" in
b4eb6b3d
JH
16497 '') dflt=none;;
16498 esac
16499 rp="What extensions do you wish to load dynamically?"
16500 . ./myread
16501 case "$ans" in
16502 none) dynamic_ext=' ' ;;
16503 *) dynamic_ext="$ans" ;;
5f80c64f 16504 esac
5f80c64f 16505
b4eb6b3d
JH
16506 case "$static_ext" in
16507 '')
16508 : Exclude those already listed in dynamic linking
16509 dflt=''
16510 for xxx in $avail_ext; do
16511 case " $dynamic_ext " in
16512 *" $xxx "*) ;;
16513 *) dflt="$dflt $xxx" ;;
16514 esac
16515 done
16516 set X $dflt
16517 shift
16518 dflt="$*"
16519 ;;
16520 *) dflt="$static_ext"
16521 ;;
16522 esac
9c839522 16523
b4eb6b3d
JH
16524 case "$dflt" in
16525 '') dflt=none;;
16526 esac
16527 rp="What extensions do you wish to load statically?"
16528 . ./myread
16529 case "$ans" in
16530 none) static_ext=' ' ;;
16531 *) static_ext="$ans" ;;
16532 esac
16533 ;;
16534*)
16535 $cat <<EOM
16536A number of extensions are supplied with $package. Answer "none"
16537to include no extensions.
16538Note that DynaLoader is always built and need not be mentioned here.
9c839522 16539
b4eb6b3d
JH
16540EOM
16541 case "$static_ext" in
16542 '') dflt="$avail_ext" ;;
16543 *) dflt="$static_ext"
16544 # Perhaps we are reusing an old out-of-date config.sh.
16545 case "$hint" in
16546 previous)
16547 if test X"$static_ext" != X"$avail_ext"; then
16548 $cat <<EOM
16549NOTICE: Your previous config.sh list may be incorrect.
16550The extensions now available to you are
16551 ${avail_ext}
16552but the default list from your previous config.sh is
16553 ${static_ext}
5f80c64f
JH
16554
16555EOM
b4eb6b3d
JH
16556 fi
16557 ;;
16558 esac
16559 ;;
16560 esac
16561 : Exclude those that are not xs extensions
16562 case "$dflt" in
16563 '') dflt=none;;
16564 esac
16565 rp="What extensions do you wish to include?"
16566 . ./myread
16567 case "$ans" in
16568 none) static_ext=' ' ;;
16569 *) static_ext="$ans" ;;
16570 esac
16571 ;;
5f80c64f
JH
16572esac
16573
b4eb6b3d
JH
16574set X $dynamic_ext $static_ext $nonxs_ext
16575shift
16576extensions="$*"
16577
9c839522
PM
16578: Remove libraries needed only for extensions
16579: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16580: The exception is SunOS 4.x, which needs them.
16581case "${osname}X${osvers}" in
16582sunos*X4*)
16583 perllibs="$libs"
16584 ;;
16585*) case "$usedl" in
16586 $define|true|[yY]*)
16587 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16588 shift
16589 perllibs="$*"
16590 ;;
16591 *) perllibs="$libs"
16592 ;;
16593 esac
16594 ;;
9c839522 16595esac
5f80c64f
JH
16596
16597: Remove build directory name from cppstdin so it can be used from
16598: either the present location or the final installed location.
16599echo " "
16600: Get out of the UU directory to get correct path name.
16601cd ..
16602case "$cppstdin" in
16603`pwd`/cppstdin)
16604 echo "Stripping down cppstdin path name"
16605 cppstdin=cppstdin
16606 ;;
16607esac
16608cd UU
16609
16610: end of configuration questions
16611echo " "
16612echo "End of configuration questions."
16613echo " "
16614
16615: back to where it started
16616if test -d ../UU; then
16617 cd ..
16618fi
16619
16620: configuration may be patched via a 'config.over' file
16621if $test -f config.over; then
16622 echo " "
16623 dflt=y
16624 rp='I see a config.over file. Do you wish to load it?'
16625 . UU/myread
16626 case "$ans" in
16627 n*) echo "OK, I'll ignore it.";;
16628 *) . ./config.over
16629 echo "Configuration override changes have been loaded."
16630 ;;
16631 esac
16632fi
16633
16634: in case they want portability, strip down executable paths
16635case "$d_portable" in
16636"$define")
16637 echo " "
16638 echo "Stripping down executable paths..." >&4
16639 for file in $loclist $trylist; do
534ac15a
JH
16640 eval temp=\$$file
16641 eval $file=`basename $temp`
5f80c64f
JH
16642 done
16643 ;;
16644esac
16645
16646: create config.sh file
16647echo " "
16648echo "Creating config.sh..." >&4
16649$spitshell <<EOT >config.sh
16650$startsh
16651#
16652# This file was produced by running the Configure script. It holds all the
16653# definitions figured out by Configure. Should you modify one of these values,
16654# do not forget to propagate your changes by running "Configure -der". You may
16655# instead choose to run each of the .SH files by yourself, or "Configure -S".
16656#
16657
16658# Package name : $package
16659# Source directory : $src
16660# Configuration time: $cf_time
16661# Configured by : $cf_by
16662# Target system : $myuname
16663
16664Author='$Author'
16665Date='$Date'
16666Header='$Header'
16667Id='$Id'
16668Locker='$Locker'
16669Log='$Log'
16670Mcc='$Mcc'
16671RCSfile='$RCSfile'
16672Revision='$Revision'
16673Source='$Source'
16674State='$State'
16675_a='$_a'
16676_exe='$_exe'
16677_o='$_o'
b4eb6b3d 16678afs='$afs'
a6d26a0d 16679afsroot='$afsroot'
b4eb6b3d
JH
16680alignbytes='$alignbytes'
16681ansi2knr='$ansi2knr'
16682aphostname='$aphostname'
16683api_revision='$api_revision'
16684api_subversion='$api_subversion'
16685api_version='$api_version'
16686api_versionstring='$api_versionstring'
5f80c64f 16687ar='$ar'
b4eb6b3d
JH
16688archlib='$archlib'
16689archlibexp='$archlibexp'
16690archname64='$archname64'
16691archname='$archname'
5f80c64f
JH
16692archobjs='$archobjs'
16693awk='$awk'
b4eb6b3d 16694baserev='$baserev'
5f80c64f 16695bash='$bash'
b4eb6b3d
JH
16696bin='$bin'
16697bincompat5005='$bincompat5005'
16698binexp='$binexp'
5f80c64f
JH
16699bison='$bison'
16700byacc='$byacc'
b4eb6b3d 16701byteorder='$byteorder'
5f80c64f 16702c='$c'
b4eb6b3d 16703castflags='$castflags'
5f80c64f
JH
16704cat='$cat'
16705cc='$cc'
16706cccdlflags='$cccdlflags'
16707ccdlflags='$ccdlflags'
16708ccflags='$ccflags'
b4eb6b3d 16709ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16710ccname='$ccname'
b4eb6b3d 16711ccsymbols='$ccsymbols'
6b356c8e 16712ccversion='$ccversion'
5f80c64f 16713cf_by='$cf_by'
b4eb6b3d 16714cf_email='$cf_email'
5f80c64f 16715cf_time='$cf_time'
b4eb6b3d 16716charsize='$charsize'
5f80c64f
JH
16717chgrp='$chgrp'
16718chmod='$chmod'
16719chown='$chown'
b4eb6b3d 16720clocktype='$clocktype'
5f80c64f
JH
16721comm='$comm'
16722compress='$compress'
16723contains='$contains'
16724cp='$cp'
16725cpio='$cpio'
16726cpp='$cpp'
b4eb6b3d
JH
16727cpp_stuff='$cpp_stuff'
16728cppccsymbols='$cppccsymbols'
5f80c64f
JH
16729cppflags='$cppflags'
16730cpplast='$cpplast'
16731cppminus='$cppminus'
16732cpprun='$cpprun'
16733cppstdin='$cppstdin'
b4eb6b3d 16734cppsymbols='$cppsymbols'
b4eb6b3d 16735cryptlib='$cryptlib'
5f80c64f 16736csh='$csh'
b4eb6b3d
JH
16737d_Gconvert='$d_Gconvert'
16738d_PRIEUldbl='$d_PRIEUldbl'
16739d_PRIFUldbl='$d_PRIFUldbl'
16740d_PRIGUldbl='$d_PRIGUldbl'
16741d_PRIXU64='$d_PRIXU64'
16742d_PRId64='$d_PRId64'
16743d_PRIeldbl='$d_PRIeldbl'
16744d_PRIfldbl='$d_PRIfldbl'
16745d_PRIgldbl='$d_PRIgldbl'
16746d_PRIi64='$d_PRIi64'
16747d_PRIo64='$d_PRIo64'
16748d_PRIu64='$d_PRIu64'
16749d_PRIx64='$d_PRIx64'
16750d_SCNfldbl='$d_SCNfldbl'
74cac757 16751d__fwalk='$d__fwalk'
b4eb6b3d
JH
16752d_access='$d_access'
16753d_accessx='$d_accessx'
16754d_alarm='$d_alarm'
16755d_archlib='$d_archlib'
16756d_atolf='$d_atolf'
16757d_atoll='$d_atoll'
16758d_attribut='$d_attribut'
16759d_bcmp='$d_bcmp'
16760d_bcopy='$d_bcopy'
16761d_bincompat5005='$d_bincompat5005'
5f80c64f 16762d_bsd='$d_bsd'
b4eb6b3d
JH
16763d_bsdgetpgrp='$d_bsdgetpgrp'
16764d_bsdsetpgrp='$d_bsdsetpgrp'
16765d_bzero='$d_bzero'
16766d_casti32='$d_casti32'
16767d_castneg='$d_castneg'
16768d_charvspr='$d_charvspr'
16769d_chown='$d_chown'
16770d_chroot='$d_chroot'
16771d_chsize='$d_chsize'
758a5d79 16772d_class='$d_class'
b4eb6b3d 16773d_closedir='$d_closedir'
4e0554ec 16774d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
16775d_const='$d_const'
16776d_crypt='$d_crypt'
16777d_csh='$d_csh'
16778d_cuserid='$d_cuserid'
16779d_dbl_dig='$d_dbl_dig'
2ef53570 16780d_dbminitproto='$d_dbminitproto'
b4eb6b3d
JH
16781d_difftime='$d_difftime'
16782d_dirnamlen='$d_dirnamlen'
16783d_dlerror='$d_dlerror'
5f80c64f 16784d_dlopen='$d_dlopen'
b4eb6b3d
JH
16785d_dlsymun='$d_dlsymun'
16786d_dosuid='$d_dosuid'
16787d_drand48proto='$d_drand48proto'
16788d_dup2='$d_dup2'
16789d_eaccess='$d_eaccess'
16790d_endgrent='$d_endgrent'
16791d_endhent='$d_endhent'
16792d_endnent='$d_endnent'
16793d_endpent='$d_endpent'
16794d_endpwent='$d_endpwent'
16795d_endsent='$d_endsent'
16796d_eofnblk='$d_eofnblk'
5f80c64f 16797d_eunice='$d_eunice'
b363b713 16798d_fchdir='$d_fchdir'
b4eb6b3d
JH
16799d_fchmod='$d_fchmod'
16800d_fchown='$d_fchown'
16801d_fcntl='$d_fcntl'
9d9004a9 16802d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
16803d_fd_macros='$d_fd_macros'
16804d_fd_set='$d_fd_set'
16805d_fds_bits='$d_fds_bits'
16806d_fgetpos='$d_fgetpos'
758a5d79
JH
16807d_finite='$d_finite'
16808d_finitel='$d_finitel'
b4eb6b3d
JH
16809d_flexfnam='$d_flexfnam'
16810d_flock='$d_flock'
2ef53570 16811d_flockproto='$d_flockproto'
b4eb6b3d 16812d_fork='$d_fork'
758a5d79 16813d_fp_class='$d_fp_class'
b4eb6b3d 16814d_fpathconf='$d_fpathconf'
758a5d79
JH
16815d_fpclass='$d_fpclass'
16816d_fpclassify='$d_fpclassify'
16817d_fpclassl='$d_fpclassl'
b4eb6b3d
JH
16818d_fpos64_t='$d_fpos64_t'
16819d_frexpl='$d_frexpl'
16820d_fs_data_s='$d_fs_data_s'
16821d_fseeko='$d_fseeko'
16822d_fsetpos='$d_fsetpos'
16823d_fstatfs='$d_fstatfs'
16824d_fstatvfs='$d_fstatvfs'
411ab01c 16825d_fsync='$d_fsync'
b4eb6b3d
JH
16826d_ftello='$d_ftello'
16827d_ftime='$d_ftime'
16828d_getcwd='$d_getcwd'
16829d_getespwnam='$d_getespwnam'
16830d_getfsstat='$d_getfsstat'
16831d_getgrent='$d_getgrent'
16832d_getgrps='$d_getgrps'
16833d_gethbyaddr='$d_gethbyaddr'
16834d_gethbyname='$d_gethbyname'
16835d_gethent='$d_gethent'
16836d_gethname='$d_gethname'
16837d_gethostprotos='$d_gethostprotos'
4e0554ec 16838d_getitimer='$d_getitimer'
b4eb6b3d
JH
16839d_getlogin='$d_getlogin'
16840d_getmnt='$d_getmnt'
16841d_getmntent='$d_getmntent'
16842d_getnbyaddr='$d_getnbyaddr'
16843d_getnbyname='$d_getnbyname'
16844d_getnent='$d_getnent'
16845d_getnetprotos='$d_getnetprotos'
0c0643d0 16846d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16847d_getpbyname='$d_getpbyname'
16848d_getpbynumber='$d_getpbynumber'
16849d_getpent='$d_getpent'
16850d_getpgid='$d_getpgid'
16851d_getpgrp2='$d_getpgrp2'
16852d_getpgrp='$d_getpgrp'
16853d_getppid='$d_getppid'
16854d_getprior='$d_getprior'
16855d_getprotoprotos='$d_getprotoprotos'
16856d_getprpwnam='$d_getprpwnam'
16857d_getpwent='$d_getpwent'
16858d_getsbyname='$d_getsbyname'
16859d_getsbyport='$d_getsbyport'
16860d_getsent='$d_getsent'
16861d_getservprotos='$d_getservprotos'
16862d_getspnam='$d_getspnam'
16863d_gettimeod='$d_gettimeod'
5f80c64f 16864d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16865d_grpasswd='$d_grpasswd'
16866d_hasmntopt='$d_hasmntopt'
16867d_htonl='$d_htonl'
b4eb6b3d
JH
16868d_index='$d_index'
16869d_inetaton='$d_inetaton'
16870d_int64_t='$d_int64_t'
16871d_isascii='$d_isascii'
758a5d79
JH
16872d_isfinite='$d_isfinite'
16873d_isinf='$d_isinf'
b4eb6b3d
JH
16874d_isnan='$d_isnan'
16875d_isnanl='$d_isnanl'
16876d_killpg='$d_killpg'
16877d_lchown='$d_lchown'
16878d_ldbl_dig='$d_ldbl_dig'
16879d_link='$d_link'
16880d_locconv='$d_locconv'
16881d_lockf='$d_lockf'
16882d_longdbl='$d_longdbl'
16883d_longlong='$d_longlong'
16884d_lseekproto='$d_lseekproto'
16885d_lstat='$d_lstat'
16886d_madvise='$d_madvise'
16887d_mblen='$d_mblen'
16888d_mbstowcs='$d_mbstowcs'
16889d_mbtowc='$d_mbtowc'
16890d_memchr='$d_memchr'
16891d_memcmp='$d_memcmp'
16892d_memcpy='$d_memcpy'
16893d_memmove='$d_memmove'
16894d_memset='$d_memset'
16895d_mkdir='$d_mkdir'
16896d_mkdtemp='$d_mkdtemp'
16897d_mkfifo='$d_mkfifo'
16898d_mkstemp='$d_mkstemp'
16899d_mkstemps='$d_mkstemps'
16900d_mktime='$d_mktime'
16901d_mmap='$d_mmap'
16902d_modfl='$d_modfl'
e67aeab1 16903d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
16904d_mprotect='$d_mprotect'
16905d_msg='$d_msg'
16906d_msg_ctrunc='$d_msg_ctrunc'
16907d_msg_dontroute='$d_msg_dontroute'
16908d_msg_oob='$d_msg_oob'
16909d_msg_peek='$d_msg_peek'
16910d_msg_proxy='$d_msg_proxy'
16911d_msgctl='$d_msgctl'
16912d_msgget='$d_msgget'
4e0554ec 16913d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
16914d_msgrcv='$d_msgrcv'
16915d_msgsnd='$d_msgsnd'
16916d_msync='$d_msync'
16917d_munmap='$d_munmap'
16918d_mymalloc='$d_mymalloc'
16919d_nice='$d_nice'
2765b840 16920d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
16921d_nv_preserves_uv='$d_nv_preserves_uv'
16922d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16923d_off64_t='$d_off64_t'
16924d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16925d_oldpthreads='$d_oldpthreads'
16926d_oldsock='$d_oldsock'
16927d_open3='$d_open3'
16928d_pathconf='$d_pathconf'
16929d_pause='$d_pause'
16930d_perl_otherlibdirs='$d_perl_otherlibdirs'
16931d_phostname='$d_phostname'
16932d_pipe='$d_pipe'
16933d_poll='$d_poll'
5f80c64f 16934d_portable='$d_portable'
d6483fcc 16935d_pthread_atfork='$d_pthread_atfork'
b4eb6b3d
JH
16936d_pthread_yield='$d_pthread_yield'
16937d_pwage='$d_pwage'
16938d_pwchange='$d_pwchange'
16939d_pwclass='$d_pwclass'
16940d_pwcomment='$d_pwcomment'
16941d_pwexpire='$d_pwexpire'
16942d_pwgecos='$d_pwgecos'
16943d_pwpasswd='$d_pwpasswd'
16944d_pwquota='$d_pwquota'
16945d_qgcvt='$d_qgcvt'
16946d_quad='$d_quad'
16947d_readdir='$d_readdir'
16948d_readlink='$d_readlink'
4e0554ec
JH
16949d_readv='$d_readv'
16950d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
16951d_rename='$d_rename'
16952d_rewinddir='$d_rewinddir'
16953d_rmdir='$d_rmdir'
16954d_safebcpy='$d_safebcpy'
16955d_safemcpy='$d_safemcpy'
16956d_sanemcmp='$d_sanemcmp'
ef9f17be 16957d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16958d_sched_yield='$d_sched_yield'
16959d_scm_rights='$d_scm_rights'
16960d_seekdir='$d_seekdir'
16961d_select='$d_select'
16962d_sem='$d_sem'
16963d_semctl='$d_semctl'
16964d_semctl_semid_ds='$d_semctl_semid_ds'
16965d_semctl_semun='$d_semctl_semun'
16966d_semget='$d_semget'
16967d_semop='$d_semop'
4e0554ec 16968d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
16969d_setegid='$d_setegid'
16970d_seteuid='$d_seteuid'
16971d_setgrent='$d_setgrent'
16972d_setgrps='$d_setgrps'
16973d_sethent='$d_sethent'
4e0554ec 16974d_setitimer='$d_setitimer'
b4eb6b3d
JH
16975d_setlinebuf='$d_setlinebuf'
16976d_setlocale='$d_setlocale'
16977d_setnent='$d_setnent'
16978d_setpent='$d_setpent'
16979d_setpgid='$d_setpgid'
16980d_setpgrp2='$d_setpgrp2'
16981d_setpgrp='$d_setpgrp'
16982d_setprior='$d_setprior'
16983d_setproctitle='$d_setproctitle'
16984d_setpwent='$d_setpwent'
16985d_setregid='$d_setregid'
16986d_setresgid='$d_setresgid'
16987d_setresuid='$d_setresuid'
16988d_setreuid='$d_setreuid'
16989d_setrgid='$d_setrgid'
16990d_setruid='$d_setruid'
16991d_setsent='$d_setsent'
16992d_setsid='$d_setsid'
16993d_setvbuf='$d_setvbuf'
16994d_sfio='$d_sfio'
16995d_shm='$d_shm'
16996d_shmat='$d_shmat'
16997d_shmatprototype='$d_shmatprototype'
16998d_shmctl='$d_shmctl'
16999d_shmdt='$d_shmdt'
17000d_shmget='$d_shmget'
17001d_sigaction='$d_sigaction'
983dbef6 17002d_sigprocmask='$d_sigprocmask'
b4eb6b3d 17003d_sigsetjmp='$d_sigsetjmp'
49a78c82 17004d_sockatmark='$d_sockatmark'
2ef53570 17005d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
17006d_socket='$d_socket'
17007d_socklen_t='$d_socklen_t'
17008d_sockpair='$d_sockpair'
17009d_socks5_init='$d_socks5_init'
17010d_sqrtl='$d_sqrtl'
eef837ea 17011d_sresgproto='$d_sresgproto'
640374d0 17012d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
17013d_statblks='$d_statblks'
17014d_statfs_f_flags='$d_statfs_f_flags'
17015d_statfs_s='$d_statfs_s'
17016d_statvfs='$d_statvfs'
17017d_stdio_cnt_lval='$d_stdio_cnt_lval'
17018d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
17019d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17020d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
17021d_stdio_stream_array='$d_stdio_stream_array'
17022d_stdiobase='$d_stdiobase'
17023d_stdstdio='$d_stdstdio'
17024d_strchr='$d_strchr'
17025d_strcoll='$d_strcoll'
17026d_strctcpy='$d_strctcpy'
17027d_strerrm='$d_strerrm'
17028d_strerror='$d_strerror'
b3c85772 17029d_strftime='$d_strftime'
b4eb6b3d
JH
17030d_strtod='$d_strtod'
17031d_strtol='$d_strtol'
17032d_strtold='$d_strtold'
17033d_strtoll='$d_strtoll'
28e5dec8 17034d_strtoq='$d_strtoq'
b4eb6b3d
JH
17035d_strtoul='$d_strtoul'
17036d_strtoull='$d_strtoull'
17037d_strtouq='$d_strtouq'
17038d_strxfrm='$d_strxfrm'
17039d_suidsafe='$d_suidsafe'
17040d_symlink='$d_symlink'
17041d_syscall='$d_syscall'
2ef53570 17042d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
17043d_sysconf='$d_sysconf'
17044d_sysernlst='$d_sysernlst'
17045d_syserrlst='$d_syserrlst'
17046d_system='$d_system'
17047d_tcgetpgrp='$d_tcgetpgrp'
17048d_tcsetpgrp='$d_tcsetpgrp'
17049d_telldir='$d_telldir'
17050d_telldirproto='$d_telldirproto'
17051d_time='$d_time'
17052d_times='$d_times'
17053d_truncate='$d_truncate'
17054d_tzname='$d_tzname'
4e0554ec
JH
17055d_u32align='$d_u32align'
17056d_ualarm='$d_ualarm'
b4eb6b3d
JH
17057d_umask='$d_umask'
17058d_uname='$d_uname'
17059d_union_semun='$d_union_semun'
758a5d79 17060d_unordered='$d_unordered'
4e0554ec 17061d_usleep='$d_usleep'
2ef53570 17062d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
17063d_ustat='$d_ustat'
17064d_vendorarch='$d_vendorarch'
17065d_vendorbin='$d_vendorbin'
17066d_vendorlib='$d_vendorlib'
17067d_vfork='$d_vfork'
17068d_void_closedir='$d_void_closedir'
17069d_voidsig='$d_voidsig'
17070d_voidtty='$d_voidtty'
17071d_volatile='$d_volatile'
17072d_vprintf='$d_vprintf'
17073d_wait4='$d_wait4'
17074d_waitpid='$d_waitpid'
17075d_wcstombs='$d_wcstombs'
17076d_wctomb='$d_wctomb'
4e0554ec 17077d_writev='$d_writev'
5f80c64f
JH
17078d_xenix='$d_xenix'
17079date='$date'
b4eb6b3d
JH
17080db_hashtype='$db_hashtype'
17081db_prefixtype='$db_prefixtype'
640374d0
JH
17082db_version_major='$db_version_major'
17083db_version_minor='$db_version_minor'
17084db_version_patch='$db_version_patch'
b4eb6b3d
JH
17085defvoidused='$defvoidused'
17086direntrytype='$direntrytype'
17087dlext='$dlext'
5f80c64f 17088dlsrc='$dlsrc'
b4eb6b3d
JH
17089doublesize='$doublesize'
17090drand01='$drand01'
17091dynamic_ext='$dynamic_ext'
17092eagain='$eagain'
17093ebcdic='$ebcdic'
5f80c64f
JH
17094echo='$echo'
17095egrep='$egrep'
17096emacs='$emacs'
17097eunicefix='$eunicefix'
17098exe_ext='$exe_ext'
17099expr='$expr'
b4eb6b3d 17100extensions='$extensions'
6fcddf3b 17101extras='$extras'
b4eb6b3d
JH
17102fflushNULL='$fflushNULL'
17103fflushall='$fflushall'
5f80c64f
JH
17104find='$find'
17105firstmakefile='$firstmakefile'
17106flex='$flex'
b4eb6b3d
JH
17107fpossize='$fpossize'
17108fpostype='$fpostype'
17109freetype='$freetype'
5440bc8e 17110from='$from'
b4eb6b3d
JH
17111full_ar='$full_ar'
17112full_csh='$full_csh'
17113full_sed='$full_sed'
5b463ca7 17114gccosandvers='$gccosandvers'
5f80c64f 17115gccversion='$gccversion'
b4eb6b3d
JH
17116gidformat='$gidformat'
17117gidsign='$gidsign'
17118gidsize='$gidsize'
17119gidtype='$gidtype'
5f80c64f
JH
17120glibpth='$glibpth'
17121grep='$grep'
b4eb6b3d
JH
17122groupcat='$groupcat'
17123groupstype='$groupstype'
5f80c64f 17124gzip='$gzip'
b4eb6b3d
JH
17125h_fcntl='$h_fcntl'
17126h_sysfile='$h_sysfile'
5f80c64f 17127hint='$hint'
b4eb6b3d
JH
17128hostcat='$hostcat'
17129i16size='$i16size'
17130i16type='$i16type'
17131i32size='$i32size'
17132i32type='$i32type'
17133i64size='$i64size'
17134i64type='$i64type'
17135i8size='$i8size'
17136i8type='$i8type'
17137i_arpainet='$i_arpainet'
17138i_bsdioctl='$i_bsdioctl'
17139i_db='$i_db'
17140i_dbm='$i_dbm'
17141i_dirent='$i_dirent'
5f80c64f 17142i_dld='$i_dld'
b4eb6b3d
JH
17143i_dlfcn='$i_dlfcn'
17144i_fcntl='$i_fcntl'
17145i_float='$i_float'
758a5d79
JH
17146i_fp='$i_fp'
17147i_fp_class='$i_fp_class'
b4eb6b3d
JH
17148i_gdbm='$i_gdbm'
17149i_grp='$i_grp'
b4eb6b3d
JH
17150i_ieeefp='$i_ieeefp'
17151i_inttypes='$i_inttypes'
2765b840 17152i_langinfo='$i_langinfo'
b4eb6b3d
JH
17153i_libutil='$i_libutil'
17154i_limits='$i_limits'
17155i_locale='$i_locale'
17156i_machcthr='$i_machcthr'
17157i_malloc='$i_malloc'
17158i_math='$i_math'
17159i_memory='$i_memory'
17160i_mntent='$i_mntent'
17161i_ndbm='$i_ndbm'
17162i_netdb='$i_netdb'
17163i_neterrno='$i_neterrno'
17164i_netinettcp='$i_netinettcp'
17165i_niin='$i_niin'
17166i_poll='$i_poll'
17167i_prot='$i_prot'
17168i_pthread='$i_pthread'
17169i_pwd='$i_pwd'
17170i_rpcsvcdbm='$i_rpcsvcdbm'
17171i_sfio='$i_sfio'
17172i_sgtty='$i_sgtty'
17173i_shadow='$i_shadow'
17174i_socks='$i_socks'
17175i_stdarg='$i_stdarg'
17176i_stddef='$i_stddef'
17177i_stdlib='$i_stdlib'
17178i_string='$i_string'
17179i_sunmath='$i_sunmath'
17180i_sysaccess='$i_sysaccess'
17181i_sysdir='$i_sysdir'
17182i_sysfile='$i_sysfile'
17183i_sysfilio='$i_sysfilio'
17184i_sysin='$i_sysin'
17185i_sysioctl='$i_sysioctl'
17186i_syslog='$i_syslog'
17187i_sysmman='$i_sysmman'
17188i_sysmode='$i_sysmode'
17189i_sysmount='$i_sysmount'
17190i_sysndir='$i_sysndir'
17191i_sysparam='$i_sysparam'
17192i_sysresrc='$i_sysresrc'
17193i_syssecrt='$i_syssecrt'
17194i_sysselct='$i_sysselct'
17195i_syssockio='$i_syssockio'
17196i_sysstat='$i_sysstat'
17197i_sysstatfs='$i_sysstatfs'
17198i_sysstatvfs='$i_sysstatvfs'
17199i_systime='$i_systime'
17200i_systimek='$i_systimek'
17201i_systimes='$i_systimes'
17202i_systypes='$i_systypes'
17203i_sysuio='$i_sysuio'
17204i_sysun='$i_sysun'
17205i_sysutsname='$i_sysutsname'
17206i_sysvfs='$i_sysvfs'
17207i_syswait='$i_syswait'
17208i_termio='$i_termio'
17209i_termios='$i_termios'
17210i_time='$i_time'
17211i_unistd='$i_unistd'
17212i_ustat='$i_ustat'
17213i_utime='$i_utime'
17214i_values='$i_values'
17215i_varargs='$i_varargs'
17216i_varhdr='$i_varhdr'
17217i_vfork='$i_vfork'
5f80c64f 17218ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17219inc_version_list='$inc_version_list'
17220inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17221incpath='$incpath'
17222inews='$inews'
b4eb6b3d
JH
17223installarchlib='$installarchlib'
17224installbin='$installbin'
17225installman1dir='$installman1dir'
17226installman3dir='$installman3dir'
17227installprefix='$installprefix'
17228installprefixexp='$installprefixexp'
17229installprivlib='$installprivlib'
17230installscript='$installscript'
17231installsitearch='$installsitearch'
17232installsitebin='$installsitebin'
17233installsitelib='$installsitelib'
17234installstyle='$installstyle'
17235installusrbinperl='$installusrbinperl'
17236installvendorarch='$installvendorarch'
17237installvendorbin='$installvendorbin'
17238installvendorlib='$installvendorlib'
17239intsize='$intsize'
4b661809 17240issymlink='$issymlink'
b4eb6b3d
JH
17241ivdformat='$ivdformat'
17242ivsize='$ivsize'
17243ivtype='$ivtype'
17244known_extensions='$known_extensions'
5f80c64f 17245ksh='$ksh'
5f80c64f
JH
17246ld='$ld'
17247lddlflags='$lddlflags'
17248ldflags='$ldflags'
b4eb6b3d
JH
17249ldflags_uselargefiles='$ldflags_uselargefiles'
17250ldlibpthname='$ldlibpthname'
5f80c64f
JH
17251less='$less'
17252lib_ext='$lib_ext'
17253libc='$libc'
b4eb6b3d 17254libperl='$libperl'
5f80c64f
JH
17255libpth='$libpth'
17256libs='$libs'
43999f95
JH
17257libsdirs='$libsdirs'
17258libsfiles='$libsfiles'
17259libsfound='$libsfound'
13b3f787 17260libspath='$libspath'
5f80c64f 17261libswanted='$libswanted'
b4eb6b3d 17262libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17263line='$line'
17264lint='$lint'
17265lkflags='$lkflags'
17266ln='$ln'
17267lns='$lns'
17268locincpth='$locincpth'
17269loclibpth='$loclibpth'
b4eb6b3d
JH
17270longdblsize='$longdblsize'
17271longlongsize='$longlongsize'
17272longsize='$longsize'
5f80c64f
JH
17273lp='$lp'
17274lpr='$lpr'
17275ls='$ls'
b4eb6b3d
JH
17276lseeksize='$lseeksize'
17277lseektype='$lseektype'
5f80c64f
JH
17278mail='$mail'
17279mailx='$mailx'
17280make='$make'
17281make_set_make='$make_set_make'
b4eb6b3d
JH
17282mallocobj='$mallocobj'
17283mallocsrc='$mallocsrc'
17284malloctype='$malloctype'
17285man1dir='$man1dir'
17286man1direxp='$man1direxp'
17287man1ext='$man1ext'
17288man3dir='$man3dir'
17289man3direxp='$man3direxp'
17290man3ext='$man3ext'
5f80c64f
JH
17291mips_type='$mips_type'
17292mkdir='$mkdir'
b4eb6b3d
JH
17293mmaptype='$mmaptype'
17294modetype='$modetype'
5f80c64f 17295more='$more'
b4eb6b3d 17296multiarch='$multiarch'
5f80c64f 17297mv='$mv'
b4eb6b3d
JH
17298myarchname='$myarchname'
17299mydomain='$mydomain'
17300myhostname='$myhostname'
5f80c64f
JH
17301myuname='$myuname'
17302n='$n'
2cc61e15 17303need_va_copy='$need_va_copy'
b4eb6b3d
JH
17304netdb_hlen_type='$netdb_hlen_type'
17305netdb_host_type='$netdb_host_type'
17306netdb_name_type='$netdb_name_type'
17307netdb_net_type='$netdb_net_type'
5f80c64f
JH
17308nm='$nm'
17309nm_opt='$nm_opt'
17310nm_so_opt='$nm_so_opt'
b4eb6b3d 17311nonxs_ext='$nonxs_ext'
5f80c64f 17312nroff='$nroff'
b4eb6b3d
JH
17313nvEUformat='$nvEUformat'
17314nvFUformat='$nvFUformat'
17315nvGUformat='$nvGUformat'
17316nveformat='$nveformat'
17317nvfformat='$nvfformat'
17318nvgformat='$nvgformat'
17319nvsize='$nvsize'
17320nvtype='$nvtype'
17321o_nonblock='$o_nonblock'
5f80c64f 17322obj_ext='$obj_ext'
b4eb6b3d 17323old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17324optimize='$optimize'
b4eb6b3d 17325orderlib='$orderlib'
5f80c64f
JH
17326osname='$osname'
17327osvers='$osvers'
b4eb6b3d 17328otherlibdirs='$otherlibdirs'
5f80c64f 17329package='$package'
b4eb6b3d
JH
17330pager='$pager'
17331passcat='$passcat'
17332patchlevel='$patchlevel'
5f80c64f 17333path_sep='$path_sep'
b4eb6b3d 17334perl5='$perl5'
5f80c64f 17335perl='$perl'
151e6568 17336perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17337perladmin='$perladmin'
9c839522 17338perllibs='$perllibs'
b4eb6b3d 17339perlpath='$perlpath'
5f80c64f 17340pg='$pg'
b4eb6b3d
JH
17341phostname='$phostname'
17342pidtype='$pidtype'
5f80c64f 17343plibpth='$plibpth'
b4eb6b3d 17344pm_apiversion='$pm_apiversion'
5f80c64f
JH
17345pmake='$pmake'
17346pr='$pr'
b4eb6b3d
JH
17347prefix='$prefix'
17348prefixexp='$prefixexp'
17349privlib='$privlib'
17350privlibexp='$privlibexp'
17351prototype='$prototype'
17352ptrsize='$ptrsize'
17353quadkind='$quadkind'
17354quadtype='$quadtype'
17355randbits='$randbits'
17356randfunc='$randfunc'
17357randseedtype='$randseedtype'
17358ranlib='$ranlib'
17359rd_nodata='$rd_nodata'
17360revision='$revision'
5f80c64f
JH
17361rm='$rm'
17362rmail='$rmail'
5440bc8e 17363run='$run'
5f80c64f 17364runnm='$runnm'
b4eb6b3d
JH
17365sPRIEUldbl='$sPRIEUldbl'
17366sPRIFUldbl='$sPRIFUldbl'
17367sPRIGUldbl='$sPRIGUldbl'
17368sPRIXU64='$sPRIXU64'
17369sPRId64='$sPRId64'
17370sPRIeldbl='$sPRIeldbl'
17371sPRIfldbl='$sPRIfldbl'
17372sPRIgldbl='$sPRIgldbl'
17373sPRIi64='$sPRIi64'
17374sPRIo64='$sPRIo64'
17375sPRIu64='$sPRIu64'
17376sPRIx64='$sPRIx64'
17377sSCNfldbl='$sSCNfldbl'
17378sched_yield='$sched_yield'
17379scriptdir='$scriptdir'
17380scriptdirexp='$scriptdirexp'
5f80c64f 17381sed='$sed'
b4eb6b3d
JH
17382seedfunc='$seedfunc'
17383selectminbits='$selectminbits'
17384selecttype='$selecttype'
5f80c64f
JH
17385sendmail='$sendmail'
17386sh='$sh'
17387shar='$shar'
17388sharpbang='$sharpbang'
b4eb6b3d
JH
17389shmattype='$shmattype'
17390shortsize='$shortsize'
17391shrpenv='$shrpenv'
5f80c64f 17392shsharp='$shsharp'
b4eb6b3d
JH
17393sig_count='$sig_count'
17394sig_name='$sig_name'
17395sig_name_init='$sig_name_init'
17396sig_num='$sig_num'
17397sig_num_init='$sig_num_init'
76d3c696 17398sig_size='$sig_size'
b4eb6b3d
JH
17399signal_t='$signal_t'
17400sitearch='$sitearch'
17401sitearchexp='$sitearchexp'
17402sitebin='$sitebin'
17403sitebinexp='$sitebinexp'
17404sitelib='$sitelib'
17405sitelib_stem='$sitelib_stem'
17406sitelibexp='$sitelibexp'
17407siteprefix='$siteprefix'
17408siteprefixexp='$siteprefixexp'
17409sizesize='$sizesize'
17410sizetype='$sizetype'
5f80c64f
JH
17411sleep='$sleep'
17412smail='$smail'
5f80c64f 17413so='$so'
b4eb6b3d
JH
17414sockethdr='$sockethdr'
17415socketlib='$socketlib'
17416socksizetype='$socksizetype'
5f80c64f
JH
17417sort='$sort'
17418spackage='$spackage'
17419spitshell='$spitshell'
5f80c64f 17420src='$src'
b4eb6b3d
JH
17421ssizetype='$ssizetype'
17422startperl='$startperl'
5f80c64f 17423startsh='$startsh'
b4eb6b3d
JH
17424static_ext='$static_ext'
17425stdchar='$stdchar'
17426stdio_base='$stdio_base'
17427stdio_bufsiz='$stdio_bufsiz'
17428stdio_cnt='$stdio_cnt'
17429stdio_filbuf='$stdio_filbuf'
17430stdio_ptr='$stdio_ptr'
17431stdio_stream_array='$stdio_stream_array'
17432strings='$strings'
5f80c64f 17433submit='$submit'
b4eb6b3d
JH
17434subversion='$subversion'
17435sysman='$sysman'
5f80c64f
JH
17436tail='$tail'
17437tar='$tar'
5440bc8e 17438targetarch='$targetarch'
5f80c64f
JH
17439tbl='$tbl'
17440tee='$tee'
17441test='$test'
b4eb6b3d
JH
17442timeincl='$timeincl'
17443timetype='$timetype'
5440bc8e 17444to='$to'
5f80c64f
JH
17445touch='$touch'
17446tr='$tr'
17447trnl='$trnl'
17448troff='$troff'
b4eb6b3d
JH
17449u16size='$u16size'
17450u16type='$u16type'
17451u32size='$u32size'
17452u32type='$u32type'
17453u64size='$u64size'
17454u64type='$u64type'
17455u8size='$u8size'
17456u8type='$u8type'
17457uidformat='$uidformat'
17458uidsign='$uidsign'
17459uidsize='$uidsize'
17460uidtype='$uidtype'
5f80c64f
JH
17461uname='$uname'
17462uniq='$uniq'
b4eb6b3d
JH
17463uquadtype='$uquadtype'
17464use5005threads='$use5005threads'
17465use64bitall='$use64bitall'
17466use64bitint='$use64bitint'
5440bc8e 17467usecrosscompile='$usecrosscompile'
5f80c64f 17468usedl='$usedl'
b4eb6b3d
JH
17469useithreads='$useithreads'
17470uselargefiles='$uselargefiles'
17471uselongdouble='$uselongdouble'
17472usemorebits='$usemorebits'
17473usemultiplicity='$usemultiplicity'
17474usemymalloc='$usemymalloc'
5f80c64f 17475usenm='$usenm'
b4eb6b3d
JH
17476useopcode='$useopcode'
17477useperlio='$useperlio'
17478useposix='$useposix'
9514c62b 17479usereentrant='$usereentrant'
b4eb6b3d
JH
17480usesfio='$usesfio'
17481useshrplib='$useshrplib'
29209bc5 17482usesocks='$usesocks'
b4eb6b3d
JH
17483usethreads='$usethreads'
17484usevendorprefix='$usevendorprefix'
17485usevfork='$usevfork'
5f80c64f
JH
17486usrinc='$usrinc'
17487uuname='$uuname'
b4eb6b3d
JH
17488uvXUformat='$uvXUformat'
17489uvoformat='$uvoformat'
17490uvsize='$uvsize'
17491uvtype='$uvtype'
17492uvuformat='$uvuformat'
17493uvxformat='$uvxformat'
17494vendorarch='$vendorarch'
17495vendorarchexp='$vendorarchexp'
17496vendorbin='$vendorbin'
17497vendorbinexp='$vendorbinexp'
17498vendorlib='$vendorlib'
17499vendorlib_stem='$vendorlib_stem'
17500vendorlibexp='$vendorlibexp'
17501vendorprefix='$vendorprefix'
17502vendorprefixexp='$vendorprefixexp'
17503version='$version'
861eb78d 17504version_patchlevel_string='$version_patchlevel_string'
d56c5707 17505versiononly='$versiononly'
5f80c64f 17506vi='$vi'
b4eb6b3d 17507voidflags='$voidflags'
5f80c64f 17508xlibpth='$xlibpth'
b4eb6b3d 17509xs_apiversion='$xs_apiversion'
3659ebf1
JH
17510yacc='$yacc'
17511yaccflags='$yaccflags'
5f80c64f
JH
17512zcat='$zcat'
17513zip='$zip'
17514EOT
17515
17516: Add in command line options if available
17517$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17518
17519: add special variables
17520$test -f $src/patchlevel.h && \
d00b958f 17521awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17522echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17523echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17524
17525: propagate old symbols
17526if $test -f UU/config.sh; then
381aa1ff 17527 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17528 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17529 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17530 set X `cat UU/oldsyms`
17531 shift
17532 case $# in
17533 0) ;;
17534 *)
17535 cat <<EOM
17536Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17537EOM
17538 echo "# Variables propagated from previous config.sh file." >>config.sh
17539 for sym in `cat UU/oldsyms`; do
17540 echo " Propagating $hint variable "'$'"$sym..."
17541 eval 'tmp="$'"${sym}"'"'
17542 echo "$tmp" | \
17543 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17544 done
17545 ;;
17546 esac
17547fi
17548
17549: Finish up by extracting the .SH files
17550case "$alldone" in
17551exit)
17552 $rm -rf UU
24ccb310 17553 echo "Extraction done."
5f80c64f
JH
17554 exit 0
17555 ;;
17556cont)
17557 ;;
17558'')
17559 dflt=''
17560 nostick=true
17561 $cat <<EOM
17562
17563If you'd like to make any changes to the config.sh file before I begin
17564to configure things, do it as a shell escape now (e.g. !vi config.sh).
17565
17566EOM
17567 rp="Press return or use a shell escape to edit config.sh:"
17568 . UU/myread
17569 nostick=''
17570 case "$ans" in
17571 '') ;;
17572 *) : in case they cannot read
17573 sh 1>&4 -c "$ans";;
17574 esac
17575 ;;
17576esac
17577
17578: if this fails, just run all the .SH files by hand
17579. ./config.sh
17580
17581echo " "
17582exec 1>&4
a43e8593 17583pwd=`pwd`
5f80c64f 17584. ./UU/extract
a43e8593 17585cd $pwd
5f80c64f
JH
17586
17587if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17588 dflt=y
17589 case "$silent" in
17590 true) ;;
17591 *)
17592 $cat <<EOM
17593
17594Now you need to generate make dependencies by running "$make depend".
17595You might prefer to run it in background: "$make depend > makedepend.out &"
17596It can take a while, so you might not want to run it right now.
17597
17598EOM
17599 ;;
17600 esac
17601 rp="Run $make depend now?"
17602 . UU/myread
17603 case "$ans" in
17604 y*)
3d5d58b1 17605 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17606 ;;
17607 *)
17608 echo "You must run '$make depend' then '$make'."
17609 ;;
17610 esac
17611elif test -f [Mm]akefile; then
17612 echo " "
17613 echo "Now you must run a $make."
17614else
24ccb310 17615 echo "Configure done."
5f80c64f
JH
17616fi
17617
17618if $test -f Policy.sh; then
17619 $cat <<EOM
17620
17621If you compile $package on a different machine or from a different object
17622directory, copy the Policy.sh file from this object directory to the
17623new one before you run Configure -- this will help you with most of
17624the policy defaults.
17625
17626EOM
17627fi
17628if $test -f config.msg; then
17629 echo "Hmm. I also noted the following information while running:"
17630 echo " "
17631 $cat config.msg >&4
17632 $rm -f config.msg
17633fi
17634$rm -f kit*isdone ark*isdone
17635$rm -rf UU
17636
17637: End of Configure
17638